{"version":3,"file":"static/js/main.8020df91.js","mappings":";8NAgBaA,GAA6CC,EAAAA,EAAAA,aAAwC,WAG/FC,GACF,IAHGC,EAAO,EAAPA,QACGC,GAAS,YAGZ,GAAmCC,EAAAA,EAAAA,MAA3BC,EAAU,EAAVA,WAAYC,EAAU,EAAVA,WACdC,GAAaC,EAAAA,EAAAA,MAEbC,EAAQ,yCAAG,WAAOC,GAAgC,sEAOzC,GALXL,IACAE,GAAW,GAAM,cAIbL,GAAO,qCAAUA,EAAQQ,GAAG,KAAD,EAKd,OALc,SAI3BH,GAAW,GACXD,IAAa,yEAEpB,gBAda,sCAgBd,OACI,SAACK,GAAW,QAACV,IAAKA,EAAKC,QAASO,GAAcN,GAEtD,IAEAJ,EAAOa,YAAc,SAErB,IAAMD,GAAkDX,EAAAA,EAAAA,aAAwC,WAI7FC,GACF,IAAD,IAJIY,KAAAA,OAAI,MAAG,SAAQ,MACfX,QAAAA,OAAO,MAAG,WAAO,EAAC,EACfC,GAAS,YAGNW,GAAYC,EAAAA,EAAAA,QAAoB,OAEtCC,EAAAA,EAAAA,qBAAoBf,GAAK,0BAAgC,QAAhC,EAAuB,QAAvB,EAAMa,EAAUG,eAAO,aAAjB,EAAmBC,eAAO,aAAIC,CAAS,IAEtE,IAAMV,EAAQ,yCAAG,WAAOC,GAAgC,kFAIS,OAJT,SAI/B,QAAjB,EAAAI,EAAUG,eAAO,OAAS,QAAT,EAAjB,EAAmBC,eAAO,OAA1B,EAA4BE,aAAa,WAAY,IAAI,SAEnDlB,EAAQQ,GAAG,KAAD,EAIwC,OAJxC,SAIC,QAAjB,EAAAI,EAAUG,eAAO,OAAS,QAAT,EAAjB,EAAmBC,eAAO,OAA1B,EAA4BG,gBAAgB,YAAY,uEAE/D,gBAZa,sCAcd,OACI,SAACtB,EAAA,GAAW,kBAAKI,GAAS,IAAEU,KAAMA,EAAMX,QAASO,EAAUR,IAAKa,EAAU,SACpEX,EAAUmB,WAGxB,IAEAX,EAAYC,YAAc,kTCpDbW,EAA0C,SAAH,GAInD,IAHGC,EAAM,EAANA,OACGrB,GAAS,YAKNsB,OAAqBN,IAAXK,GAA8BA,EAAOE,YAErD,OACI,8BACKD,IACG,SAACE,EAAAC,EAAqB,WAClB,SAACC,EAAA,GAAc,WACX,SAACC,EAAA,GAAe,WACZ,SAACC,GAAW,QAACP,OAAQA,GAAYrB,WAO7D,EAEM4B,EAA+C,SAAH,GAYjD,IAAD,IAXIC,UAAAA,OAAS,MAAG,GAAE,EACdC,EAAK,EAALA,MAAM,EAAD,EACLC,MAAAA,OAAK,MAAG,SAAQ,MAChBC,OAAAA,OAAM,MAAG,SAAQ,EACjBC,EAAO,EAAPA,QACAC,EAAM,EAANA,OACAC,EAAO,EAAPA,QACAhB,EAAQ,EAARA,SACAE,EAAM,EAANA,OAAO,EAAD,EACNe,SAAAA,OAAQ,MAAG,KAAI,EAGTC,GAAcC,EAAAA,EAAAA,MAEdC,EAAiBR,EAAK,UAAgB,WAAVA,EAAqB,KAAkB,UAAVA,EAAoB,KAAO,KAAK,KAAM,KAC/FS,EAAkBR,EAAM,UAAiB,WAAXA,EAAsB,KAAmB,UAAXA,EAAqB,KAAO,KAAK,KAAM,KAEnGS,EAAaC,MAAMC,QAAQxB,GAE3BA,EADF,CAACA,GAGCyB,GAAYC,EAAAA,EAAAA,MACZC,GAAcC,EAAAA,EAAAA,MAIdC,GAAmBC,EAAAA,EAAAA,KACnBC,GAASjD,EAAAA,EAAAA,MACTG,GAAaC,EAAAA,EAAAA,MAEZ,OAANgB,QAAM,IAANA,GAAAA,EAAqC8B,UAAU,CAC5CH,iBAAAA,EACAE,OAAAA,EACA9C,WAAAA,KAKJgD,EAAAA,EAAAA,IAAO,WAEG,OAANlB,QAAM,IAANA,GAAAA,GACJ,IAEA,IAAMmB,EAAkBlB,GACnB,UAACmB,EAAA,EAAgB,CAAOC,OAAST,EAAc,YAAc,MAAM,UAC9DX,GACF,gBAAKN,UAAS,4BAAwBe,EAAqB,GAAT,cAEnD,gBAAKf,UAAS,kBAAce,EAAqB,GAAT,UAE/C,OACI,UAACxB,EAAA,EAAW,CAACS,UAAS,qBAAgBA,EAAS,YAAIU,GAAkC,GAAE,YAAIC,GAAoC,IAC3HV,OAAO0B,EAAAA,EAAAA,UAAS1B,IACZ,iCACI,iBAAMD,UAAU,QAAO,SAAEC,KACzB,SAAC,IAAa,KACd,SAAC2B,EAAa,OAEhB3B,EACNG,QAAS,WAEC,OAANZ,QAAM,IAANA,GAAAA,EAAQqC,OACD,OAAPzB,QAAO,IAAPA,GAAAA,GACJ,EACA0B,YAAW1B,EACXG,SAAUA,GAAYC,EAAY,UAChCI,EACDY,IAGb,EAEAjC,EAAOX,YAAc,SAEd,IAAMmD,EAA4D,SAAH,GACrE,IAAD,IAD4EC,GAAAA,OAAE,MAAG,0BAAyB,EAEtG,OACI,gBAAKA,GAAIA,GAEjB,EAEAD,EAAoBnD,YAAc,sBAK3B,IAAMgD,EAAuC,WAEhD,IAAMK,GAAYC,EAAAA,EAAAA,MAClB,OAAQ,iCAAMlC,UAAU,qBAAyBiC,GAAa,CAAEE,MAAO,CAAEC,QAAS,UAAU,cACxF,SAACC,EAAA,EAAM,CAACxD,KAAK,qBAAqByD,KAAK,YAE/C,EAEAV,EAAchD,YAAc,maC5Hf2D,EAAuB,SAACC,GAAqB,OAAK,SAAMC,GAA2B,OAAK,SAACC,GAElG,IAAMC,GAAqBC,EAAAA,EAAAA,GAAsBJ,GACjD,GAA0DK,EAAAA,EAAAA,UAAyD,CAC/GC,MAAM,EACNC,QAAQ,EACRC,iCAAkC,GAClCC,+BAA+B,EAC/BC,QAAQ,IACV,eANKC,EAAqB,KAAEC,EAAwB,KAuBtD,OAfA7B,EAAAA,EAAAA,GAAM,yCAAC,WAAO8B,GAAK,4FAEcV,EAAmBW,gBAAgB,KAAD,EAK9D,OALKC,EAAc,OAEhBF,EAAMpE,SAENmE,GAAyB,kBAAKG,GAAc,IAAEL,QAAQ,KACzD,mBAEM,WAEH,IACH,2CACJ,mDAbK,KAgBF,SAAC,KAA6B,kBAAKC,GAAqB,aAClDA,EAAsBD,SAAU,SAACT,GAAS,UAAKC,MAG7D,CAAE,CAAD,EAwEYc,EAAkB,WAC9B,IAD+BC,EAAa,wDAEzC,GAA8BZ,EAAAA,EAAAA,UAASY,GAAK,eAArChE,EAAO,KAAEiE,EAAU,KAEpBC,GAAsB5E,EAAAA,EAAAA,UACtB6E,GAAY7E,EAAAA,EAAAA,UACZ8E,GAAgB9E,EAAAA,EAAAA,UAEhB+E,EAAwB,CAC1BC,KAAM,WAEFL,GAAW,EACf,EACA7B,KAAM,WAEF6B,GAAW,EACf,EACAhE,UAAW,kBAAMD,CAAO,EACxBpB,WAAY,wBAAuB,QAAvB,EAAMuF,EAAU3E,eAAO,aAAjB,EAAmBZ,YAAY,EACjDC,WAAY,wBAAuB,QAAvB,EAAMsF,EAAU3E,eAAO,aAAjB,EAAmBX,YAAY,EACjDC,WAAY,SAACyF,GACZ,IAAD,EACyB,QAArB,EAAAH,EAAc5E,eAAO,OAArB,OAAA4E,EAAwBG,EAC5B,EACA7C,iBAAkB,SAACuB,GAClB,IAAD,EAC+B,QAA3B,EAAAiB,EAAoB1E,eAAO,OAA3B,OAAA0E,EAA8BjB,EAClC,EACApB,UAAW,SAACoB,GAERiB,EAAoB1E,QAAUyD,EAAMvB,iBACpCyC,EAAU3E,QAAUyD,EAAMrB,MAC9B,GAGJ,OAAOyC,CACX,EAyBaG,EAAuB,WACnC,IADoCvB,EAA8B,uDAAG,CAAC,EAAGV,EAAE,uDAAG,qBAE3E,GAAqBkC,EAAAA,EAAAA,GAAe,WAAY,CAAEC,aAAa,IAAvDC,EAAC,EAADA,EAAGC,EAAK,EAALA,MAKX,OAAO,SAACC,GAEJ,IAAMC,EAAUC,SAASC,eAAezC,GAExC,GAAIuC,GAAWF,EACf,CACI,IAAMK,EAAqB,WAEvB,IAAMlF,EAASgE,GAAgB,GAEzBmB,GAAU,gBACZC,KAAM,GACNpF,OAAQA,GACLkD,GACA4B,GAGP,OACI,SAAC,KAAa,kBAAKK,GAAU,IACzBrE,SACI,+BACI,SAAC,IAAM,CAACuE,WAAW,UAAU3G,QAAS,WACrC,IAAD,EACIsB,EAAOqC,OACW,QAAlB,EAAA8C,EAAWvE,eAAO,OAAlB,OAAAuE,EACJ,EAAG9F,KAAK,SAAQ,SACVuF,EAAE,oCAGhBQ,KAAMD,EAAWC,OAE7B,GAEAE,EAAAA,EAAAA,SAAO,SAACJ,EAAkB,IAAKH,EACnC,MAGQQ,CAKZ,CACJ,EAMaC,EAAkC,WAE3C,IAAQZ,GAAMF,EAAAA,EAAAA,GAAe,YAArBE,EAEFa,EAAoBhB,EAAqB,CAC3ChE,MAAO,MACPC,MAAO,QACPC,OAAQ,QACRyE,KAAM,CAACR,EAAE,gCAAiCA,EAAE,mCAGhD,OAAO,kBAAMa,EAAkB,CAAC,EAAG,CACvC,EA8CaC,EAA4B,WACxC,IADyCxC,EAAmC,uDAAG,CAAC,EAAGV,EAAE,uDAAG,0BAErF,GAAqBkC,EAAAA,EAAAA,GAAe,WAAY,CAAEC,aAAa,IAAvDC,EAAC,EAADA,EAAGC,EAAK,EAALA,MAEX,OAAO,SAACC,GAEJ,IAAMC,EAAUC,SAASC,eAAezC,GAExC,GAAIuC,GAAWF,EACf,CACI,IAAMtE,EAAc,WAEhB,IAAMP,EAASgE,GAAgB,GAE/B,qBAQSd,GAAU4B,GAAW,IAP1BrE,MAAAA,OAAK,MAAG,MAAK,EACb2E,EAAI,EAAJA,KAAK,EAAD,EACJ/F,KAAAA,OAAI,MAAG,SAAQ,MACfsG,mBAAAA,OAAkB,MAAG,UAAS,EAC9BC,EAAS,EAATA,UACAC,EAAQ,EAARA,SACGC,GAAc,YAGfC,EAAU,yCAAG,mFAEN,GAFM,KAEfH,GAAS,qCAAUA,IAAY,KAAD,EAE9B5F,EAAOqC,OAAO,2CACjB,kBALe,mCAOV2D,EAAS,yCAAG,mFAEN,GAFM,KAEdH,GAAQ,qCAAUA,IAAW,KAAD,EAE5B7F,EAAOqC,OAAO,2CACjB,kBALc,mCAOT4D,EAAY5E,MAAMC,QAAQ8D,GAC5BA,EACY,KAATA,EACC,CAACA,GACC,GAEJc,EACFtB,EAD6B,kBAATvF,EAClB,+BACE,6BAEF8G,EACFvB,EAD4B,kBAATvF,EACjB,+BACE,4BAEF+G,EAA+B,CAAEC,SAAU,QAEjD,OACI,SAAC,MAAM,gBACH5F,MAAOA,EACPC,MAAO,QACPC,OAAQsF,EAAUK,OAAS,EAAI,SAAW,QAC1CtG,OAAQA,GACJ8F,GAAc,IAClBhF,SACI,iCACI,SAAC,KAAM,0BACwB,YAAvB6E,GAAoC,CAAEN,WAAY,YAC3B,WAAvBM,GAAmC,CAAEN,WAAY,UAAS,IAC9D1C,MAAOyD,EACP1H,QAASqH,EAAW,SACnBG,MAEL,SAAC,IAAM,CACHvD,MAAOyD,EACP1H,QAASsH,EAAU,SAClBG,OAGZ,SAEGF,EAAUM,KAAI,SAAC7G,EAAS8G,GAAK,OACzB,uBACK9G,GADG8G,EAEJ,MAKxB,GAEAlB,EAAAA,EAAAA,SAAO,SAAC/E,EAAW,IAAKwE,EAC5B,MAGQQ,CAKZ,CACJ,kIChYakB,EAAwD,SAAH,GAUjE,IATG3F,EAAO,EAAPA,QACAN,EAAS,EAATA,UACA4E,EAAI,EAAJA,KAAK,EAAD,EACJ3E,MAAAA,OAAK,MAAG,MAAK,MACbpB,KAAAA,OAAI,MAAG,WAAU,EACjBW,EAAM,EAANA,OACAU,EAAK,EAALA,MACAC,EAAM,EAANA,OAGMsF,EAAY5E,MAAMC,QAAQ8D,GAC5BA,EACY,KAATA,EACC,CAACA,GACC,GAEJsB,EAAc,OAALhG,QAAK,IAALA,EAAAA,EAAUW,MAAMC,QAAQ8D,IAASa,EAAUK,OAAS,EAAI,SAAW,QAC5EK,EAAgB,OAANhG,QAAM,IAANA,EAAAA,EAAWU,MAAMC,QAAQ8D,IAASa,EAAUK,OAAS,EAAI,SAAW,QAEpF,OACI,SAAC,KAAM,CACH7F,OAAO,gCACO,YAATpB,IAAsB,cAAGmB,UAAWoG,EAAAA,EAAAA,sBAC3B,UAATvH,IAAoB,cAAGmB,UAAWoG,EAAAA,EAAAA,cAClCnG,KAELT,OAAQA,EACRQ,UAAS,kBAAaA,GAAwB,GAAE,YAAc,aAATnB,EAAuBA,EAAO,IACnFyB,QAASA,EACTJ,MAAOgG,EACP/F,OAAQgG,EAAQ,SAEZV,EAAUM,KAAI,SAAC7G,EAAS8G,GAAK,OACzB,uBACK9G,GADG8G,EAEJ,KAKxB,EAOaK,EAA0D,SAAH,GACnE,IAAD,IAD0ErE,GAAAA,OAAE,MAAG,qBAAoB,EAE/F,OAAO,gBAAKA,GAAIA,GACpB,yPCtDasE,EAAwC,WAEjD,IACMC,EAA+C,QADvBC,EAAAA,EAAAA,KACOC,YAErC,OACI,iCACMF,IACE,gBAAKvG,UAAU,iBAAgB,UAC3B,SAACqC,EAAA,EAAM,CAACxD,KAAK,yBAGpB0H,IACG,gBAAKvG,UAAU,UAAS,UACpB,iBAAKA,UAAU,UAAS,WACpB,6BACI,SAAC0G,EAAiB,OAEtB,6BACI,SAACC,EAAkB,KACnB,SAACC,EAAW,cAOxC,EAEAN,EAAe1H,YAAc,iBAEtB,IAAMgI,EAAqE,SAAH,WAC3E5G,UAAAA,OAAS,MAAG,GAAE,EACX7B,GAAS,mBAEZ,kCAASA,GAAS,IAAE6B,UAAS,mBAAcA,GAAY,UACnD,gBAAKA,UAAU,aAAY,UACvB,SAACqC,EAAA,EAAM,CAACxD,KAAK,qBAAqByD,KAAK,cAEzC,EAGVsE,EAAYhI,YAAc,cAEnB,IAAM8H,EAA2C,WAEpD,IAAMzF,GAAcC,EAAAA,EAAAA,MAEpB,OACI,iBAAKlB,UAAS,gCAA2BiB,EAAc,SAAW,IAAMe,GAAG,YAAW,WAClF,gBAAKhC,UAAS,sCAAkCiB,EAA0C,GAA5B,2BAAiC,UAC3F,SAAC4F,EAAA,EAAQ,CAACC,UAAW,CAAEjI,KAAM,QAAUsD,MAAO,CAAEjC,MAAO,SAAUC,OAAQ,WAAY4G,WAAY,iBAGrG,gBAAK/G,UAAU,+BAA8B,UACzC,gBAAK,aAAW,aAAY,UACxB,eAAIA,UAAU,aAAamC,MAAO,CAAE6E,OAAQ,GAAI,UAC5C,eAAIhH,UAAU,oCAAmC,UAC7C,SAAC6G,EAAA,EAAQ,CAACC,UAAW,CAAEjI,KAAM,QAAUsD,MAAO,CAAEjC,MAAO,sBAMvE,iBAAMF,UAAU,6CAEhB,gBAAKA,UAAU,6BAEf,gBAAKA,UAAU,2CAA0C,UACrD,SAAC,IAAM,CAACiH,SAAS,OAAO3E,KAAM,KAC1BtC,UAAU,gBAAe,UACzB,iBAAMA,UAAU,kBAIxB,gBAAKA,UAAU,mBAAkB,UAC7B,gBAAKA,UAAU,SAAQ,UACnB,SAAC6G,EAAA,EAAQ,CAACK,MAAM,SAASJ,UAAW,CAAEjI,KAAM,QAAUsD,MAAO,CAAEjC,MAAO,OAAQC,OAAQ,gBAK1G,EAEAuG,EAAkB9H,YAAc,oBAEzB,IAAM+H,EAA4C,WAAH,OAClD,gBAAK3E,GAAG,aAAahC,UAAU,WAAU,UACrC,qBACE,EAGV2G,EAAmB/H,YAAc,wGCtF1B,SAASuI,EAAe1D,GAE3B,IAAMxF,GAAMc,EAAAA,EAAAA,UAKZ,OAJKd,EAAIgB,UAELhB,EAAIgB,QAAU,CAAEmI,EAAG3D,MAEhBxF,EAAIgB,QAAQmI,CACvB,qFCfa7F,EAAS,SAAC8F,GACtB,IAD8HC,EAAoB,uDAAG,IAElJC,EAAAA,EAAAA,YAAU,WAEN,IAAMlE,EAAmC,CAAEpE,SAAS,GAE9CuI,EAAiBH,EAAahE,GAEpC,OAAO,WAECmE,GAEAC,QAAQC,QAAQF,GACXG,MAAK,SAACC,GAECA,GAEAA,GAER,IAGRvE,EAAMpE,SAAU,CACpB,CAEJ,GAAGqI,EACP,4ICLaO,EAAsD,SAAH,GAK/D,IAJG5H,EAAK,EAALA,MACAuC,EAAa,EAAbA,cACAtE,EAAO,EAAPA,QAGM4J,GAAWC,EAAAA,EAAAA,KAEXtJ,EAAkB,OAAPP,QAAO,IAAPA,EAAAA,EAAY,SAAC8J,GAE1B,IAAMC,EAAG,WAAOzF,EAAa,KAEzBwF,EAAME,QAENC,OAAOC,KAAKH,GAIZH,EAASG,EAEjB,EAEMI,EAAc7F,EAAc8F,OAAO,GAEzC,OACI,UAACC,EAAA,GAAI,gBAACvI,UAAU,aACZC,MAAOA,EACP/B,QAASO,GACL4J,GAAe,CAAE,IAAOA,IAAa,eACzC,gBAAKrI,UAAU,kBAAiB,SAC3BC,KAEL,gBAAKD,UAAU,gBAAe,UAC1B,0BAAOwC,SAIvB,EAEAqF,EAAWjJ,YAAc,aAOlB,IAAM4J,EAA8C,SAAH,OAAMxI,EAAS,EAATA,UAAWV,EAAQ,EAARA,SAAQ,OAC5E,gBAAKU,UAAS,sBAAiBA,GAAY,SACtCV,GACA,EAEVkJ,EAAS5J,YAAc,qKC/EV6J,GAAuBC,EAAAA,EAAAA,gBAAiD,WAAO,IAC/EC,GAAuBD,EAAAA,EAAAA,gBAAuB,GAE9C5I,EAAqC,SAAH,GAC9C,IADoDR,EAAQ,EAARA,SAEjD,GAA8BuD,EAAAA,EAAAA,WAAkB,GAAM,eAA/CmB,EAAO,KAAEzF,EAAU,KAE1B,OAKI,SAACkK,EAAqBG,SAAQ,CAACC,MAAOtK,EAAW,UAC7C,SAACoK,EAAqBC,SAAQ,CAACC,MAAO7E,EAAQ,SACzC1E,KAIjB,EAEAQ,EAAgBlB,YAAc,yNCXjBkK,GAA4C9K,EAAAA,EAAAA,aAAsC,SAAC0E,EAAkBzE,GAAG,OACjH,SAAC8K,GAAY,kBAAKrG,GAAK,IAAEzE,IAAKA,EAAKY,KAAK,QAAQ,IAEpDiK,EAAOlK,YAAc,SAQd,IAAMoK,GAA+ChL,EAAAA,EAAAA,aAAsC,SAAC0E,EAAkBzE,GAAG,OACpH,SAAC8K,GAAY,kBAAKrG,GAAK,IAAEzE,IAAKA,EAAKY,KAAK,WAAW,IAEvDmK,EAAUpK,YAAc,YAIxB,IAAMmK,GAAwD/K,EAAAA,EAAAA,aAA6C,WAQtFC,GACpB,IARGY,EAAI,EAAJA,KAAK,EAAD,EACJmB,UAAAA,OAAS,MAAG,GAAE,EACdE,EAAK,EAALA,MACA2F,EAAQ,EAARA,SACA1D,EAAK,EAALA,MACA7C,EAAQ,EAARA,SACGnB,GAAS,YAGN8K,EAAmC,OAAL9G,QAAK,IAALA,EAAAA,EAAS,CAAC,EAY9C,OAVIjC,IAAU+I,EAAa/I,QAEvB+I,EAAa/I,MAAQA,GAGrB2F,IAAaoD,EAAapD,WAE1BoD,EAAapD,SAAWA,IAIxB,kCAAS1H,GAAS,IACdF,IAAKA,EACL+B,UAAS,UAAKnB,EAAI,YAAImB,GACtBmC,MAAO8G,EAAa,SAClB3J,IAGd,IAEAyJ,EAAanK,YAAc,qQCjDd6B,EAAiB,WAI1B,OAFoB0G,EAAAA,EAAAA,IAAY,kBAAM3C,SAASC,eAAe,aAAeD,SAAS0E,IAAI,GAG9F,EAMO,SAASC,EAAiBC,IAE7B7B,EAAAA,EAAAA,YAAU,WAEN,IAAI8B,EAAgB,IAEhB1H,EAAAA,EAAAA,UAASyH,GAETC,EAAa,UAAMD,EAAkB,QAIJ,KAA7BA,EAAmBnJ,QAEnBoJ,GAAa,UAAOD,EAAmBnJ,MAAK,QAGlB,KAA1BmJ,EAAmBpH,KAEnBqH,GAAa,UAAOD,EAAmBpH,GAAE,SAIjDwC,SAASvE,MAAK,UAAMoJ,EAAa,MACrC,GAAG,CAACD,GACR,CAUO,IAAMlI,EAAiB,WAE1B,IAAMoI,EAAc,sCAEpB,GAAsCzG,EAAAA,EAAAA,UAASsF,OAAOoB,WAAWD,GAAaE,SAAQ,eAA/EvI,EAAW,KAAEwI,EAAc,KAmBlC,OAjBAlC,EAAAA,EAAAA,YAAU,WAEN,IAAMmC,EAAavB,OAAOoB,WAAWD,GAE/BK,EAAmB,SAACC,GAEtBH,EAAeG,EAAGJ,QACtB,EAIA,OAFAE,EAAWG,iBAAiB,SAAUF,GAE/B,WAEHD,EAAWI,oBAAoB,SAAUH,EAC7C,CACJ,GAAG,IAEI1I,CACX,EASa8I,EAAyB,SAACzH,GAEnC,IAAMgH,EAAmB,sBAA2B,OAAThH,EACvC,SACY,OAATA,EACC,SACY,OAATA,EACC,SACY,OAATA,EACC,UACE,IAAO,OAEzB,GAAoCO,EAAAA,EAAAA,UAAkBsF,OAAOoB,WAAWD,GAAaE,SAAQ,eAAtFQ,EAAU,KAAEC,EAAa,KAmBhC,OAjBA1C,EAAAA,EAAAA,YAAU,WAEN,IAAMmC,EAAavB,OAAOoB,WAAWD,GAE/BY,EAAqB,SAAClC,GAExBiC,EAAcjC,EAAMwB,QACxB,EAIA,OAFAE,EAAWG,iBAAiB,SAAUK,GAE/B,WAEHR,EAAWI,oBAAoB,SAAUI,EAC7C,CACJ,GAAG,CAACZ,IAEGU,CACX,EAUahJ,EAAa,WAEtB,OAAOmJ,EAAAA,EAAAA,YAAWxB,EAAAA,GACtB,EAManK,EAAmB,WAE5B,OAAO2L,EAAAA,EAAAA,YAAW1B,EAAAA,GACtB,qHCzIa2B,EAAqB,WAG9B,OADuBD,EAAAA,EAAAA,YAAWE,EAAAA,GAA1BC,UAEZ,EAMaC,EAA2B,WAGpC,OAD0BJ,EAAAA,EAAAA,YAAWE,EAAAA,GAA7BG,aAEZ,kIClBaH,GAAyB3B,EAAAA,EAAAA,eAAuC,CACzE4B,WAAY,GACZE,cAAe,SAACF,GAAgB,IAGvBG,EAA0B,SAAC/H,GAEpC,OAAoCG,EAAAA,EAAAA,UAAiC,IAAG,eAElE6H,EAAe,CACjBJ,WAHa,KAIbE,cAJ4B,MAOhC,OACI,SAACH,EAAuBzB,SAAQ,CAACC,MAAO6B,EAAa,SAC/ChI,EAAMpD,UAGpB,4PCPaqL,EAAuB,WAAH,OAASR,EAAAA,EAAAA,YAAWS,EAAAA,EAAoB,EAO5DC,EAAiB,SAACrI,GAAqB,OAAK,SAAeC,GAA2B,OAAK,SAACC,GAErG,IAAMC,GAAqBC,EAAAA,EAAAA,GAAsBJ,GAEjD,GAA0DK,EAAAA,EAAAA,UAAmC,CACzFC,MAAM,EACNC,QAAQ,EACRC,iCAAiC,GACjCC,+BAA+B,IACjC,eALKE,EAAqB,KAAEC,EAAwB,KAOhD/B,GAASjD,EAAAA,EAAAA,MACf,GAA8ByE,EAAAA,EAAAA,WAAkB,GAAK,eAA9CiI,EAAO,KAAEC,EAAU,KAkB1B,OAhBAxJ,EAAAA,EAAAA,GAAM,yCAAC,WAAO8B,GAAK,4EAEK,OAApBhC,EAAOhD,aAAa,SACSsE,EAAmBW,gBAAgB,KAAD,EAM3C,OANdC,EAAc,OAChBF,EAAMpE,UAENmE,EAAyBG,GACzBwH,GAAW,IAEf1J,EAAO/C,aAAa,mBACb,WAEH,IACH,2CACJ,mDAdK,KAiBF,SAAC,KAA6B,kBAAK6E,GAAqB,cAClD2H,IACF,iCACM3H,EAAsBL,MAAQK,EAAsBJ,UAClD,SAACN,GAAS,UAAKC,KAEhBS,EAAsBL,OAASK,EAAsBJ,SACpD,SAAC,KAAQ,CAACiI,GAAG,kBAMjC,CAAE,CAAD,EAKYC,EAA2B,WAEpC,IAAIC,GAAaf,EAAAA,EAAAA,YAAWgB,EAAAA,GAY5B,OATmB,OAAfD,IAEAA,EAAa,CACTpI,MAAM,EACNC,QAAQ,EACRC,iCAAkC,GAClCC,+BAA+B,IAGhCiI,CACX,kKChFaE,EAAa,0CAEtB,WAAY1I,GACX,IAAD,EAGkE,OAHlE,gBACI,cAAMA,IACD2I,MAAQ,CAAEC,MAAO,KAAMC,UAAW,MACvC,EAAKC,mBAAqB,EAAKA,mBAAmBC,MAAK,WAAO,CAClE,CAiEC,OAjEA,yCAED,WAEItD,OAAO0B,iBAAiB,qBAAsB6B,KAAKF,oBACnDrD,OAAO0B,iBAAiB,QAAS6B,KAAKF,mBAC1C,GAAC,kCAED,WAEIrD,OAAO2B,oBAAoB,qBAAsB4B,KAAKF,oBACtDrD,OAAO2B,oBAAoB,QAAS4B,KAAKF,mBAC7C,GAAC,+BAED,SAAkBF,EAAcC,GAG5BG,KAAKC,SAAS,CACVL,MAAOA,EACPC,UAAWA,GAEnB,GAAC,gCAED,SAAmBvD,GAEf4D,QAAQN,MAAM,uBAAwBtD,GAClCA,aAAiB6D,sBAEjBH,KAAKC,SAAS,CACVL,MAAO,IAAIQ,MAAM9D,EAAM+D,QACvBR,UAAWvD,EAAM+D,SAKrBL,KAAKC,SAAS,CACVL,MAAO,IAAIQ,MAAM,iBACjBP,UAAW,MAGvB,GAAC,oBAED,WAEI,OAAIG,KAAKL,MAAME,WAIP,iBAAKvL,UAAU,YAAW,WACtB,wDACA,eAAIA,UAAWoG,EAAAA,EAAAA,OAEf,cAAGpG,UAAU,MAAK,oIAGlB,qBAASmC,MAAO,CAAE6J,WAAY,YAAa,UACtCN,KAAKL,MAAMC,OAASI,KAAKL,MAAMC,MAAMW,YACtC,kBACCP,KAAKL,MAAME,UAAUW,qBAM/BR,KAAKhJ,MAAMpD,QACtB,KAAC,EAxEqB,CAASmD,EAAAA,oBCStB0J,EAAoD,SAAH,GAO7D,IANGlM,EAAK,EAALA,MACA+B,EAAE,EAAFA,GACAhC,EAAS,EAATA,UAAU,EAAD,EACToM,SAAAA,OAAQ,OAAO,EACf9M,EAAQ,EAARA,SAIQ+M,GAAyB1B,EAAAA,EAAAA,MAAzB0B,qBAQR,OALA9E,EAAAA,EAAAA,YAAU,WAEN8E,EAAqB,CAAEpM,MAAAA,EAAO+B,GAAAA,GAClC,GAAG,CAAC/B,EAAO+B,EAAIqK,KAGX,SAACjB,EAAa,WACV,gBAAKpJ,GAAIA,EAAIhC,UAAS,+BAA0BoM,EAAW,WAAa,GAAE,YAAIpM,GAAwB,IAAK,SACtGV,KAIjB,EAEA6M,EAAYvN,YAAc,mICtCbuM,GAA+BzC,EAAAA,EAAAA,eAA+C,MAE9E4D,EAAgC,SAAH,GAOzC,IANGxJ,EAAI,EAAJA,KACAC,EAAM,EAANA,OACAC,EAAgC,EAAhCA,iCACAC,EAA6B,EAA7BA,8BACA3D,EAAQ,EAARA,SAGA,OAAO,SAAC6L,EAA6BvC,SAAQ,CAACC,MAAO,CAAE/F,KAAAA,EAAMC,OAAAA,EAAQC,iCAAAA,EAAkCC,8BAAAA,GAAgC,SACjI3D,GAEV,wJCVasL,GAAqBlC,EAAAA,EAAAA,eAAmC,CACjE6D,kBAAmB,CACfvK,GAAG,GACH/B,MAAO,OAEXoM,qBAAsB,SAACG,GAAiH,IAG/HC,EAAyC,SAAH,GAClD,IADwDnN,EAAQ,EAARA,SAE7C8E,GAAMF,EAAAA,EAAAA,KAANE,EAER,GAAkDvB,EAAAA,EAAAA,UAAmC,CACjFb,GAAI,GACJ/B,MAAOmE,EAAE,aACX,eAHKmI,EAAiB,KAAEF,EAAoB,KAO9C,OAFAlD,EAAAA,EAAAA,IAAiBoD,IAGb,SAAC3B,EAAmBhC,SAAQ,CAACC,MAAO,CAAE0D,kBAAAA,EAAmBF,qBAAAA,GAAuB,SAC1E/M,GAGd,EAEAmN,EAAoB7N,YAAc,qKCxBrBsD,EAAa,WAEtB,OAAOiI,EAAAA,EAAAA,YAAWuC,EAAAA,GACtB,EAQatO,EAAY,WAErB,OAAO+L,EAAAA,EAAAA,YAAWwC,EAAAA,GACtB,EA8BaC,EAAoB,SAACC,GAE9B,YAAwC1N,IAAhC0N,EAAcC,MAAM7N,OAChC,gMChDa0N,GAAsBjE,EAAAA,EAAAA,eAAuB,CAAErK,WAAY,WAAO,EAAGC,WAAY,WAAO,IACxFoO,GAAsBhE,EAAAA,EAAAA,gBAAuB,GAa7C7I,EAAgE,SAAH,GAIzE,IAHGL,EAAM,EAANA,OACAF,EAAQ,EAARA,SAGA,GAAIE,KAAWoN,EAAAA,EAAAA,IAAkBpN,GAE7B,MAAM,IAAIsM,MAAM,wGAEpB,OAAO,SAACiB,EAAiB,CAAC9O,IAAW,OAANuB,QAAM,IAANA,OAAM,EAANA,EAAQsN,MAAM,SAAGxN,GACpD,EAEMyN,GAAoB/O,EAAAA,EAAAA,aAAkD,SAAC0E,EAAOzE,GAEhF,IAAM+O,GAAajO,EAAAA,EAAAA,QAAe,GAClC,GAAgC8D,EAAAA,EAAAA,WAAkB,GAAM,eAAjDZ,EAAS,KAAE8I,EAAU,KAEtBkC,ECpBH,WAEH,IAAMA,GAAYlO,EAAAA,EAAAA,SAAO,GAYzB,OAVAwI,EAAAA,EAAAA,YAAU,WAIN,OAFA0F,EAAUhO,SAAU,EAEb,WAEHgO,EAAUhO,SAAU,CACxB,CACJ,GAAG,KAEIiO,EAAAA,EAAAA,cAAY,kBAAMD,EAAUhO,OAAO,GAAE,GAChD,CDKsBkO,GAEZC,GAAejG,EAAAA,EAAAA,IAAY,WAE7B,MAAO,CACH9I,WAAY,WAER2O,EAAW/N,SAAW,EACtB8L,GAAW,EACf,EACAzM,WAAY,WAGR0O,EAAW/N,SAAW,EACK,IAAvB+N,EAAW/N,SAAiBgO,KAE5BlC,GAAW,EAEnB,EAER,IAUA,OARA/L,EAAAA,EAAAA,qBAAoBf,GAAK,WAErB,OAAO,kBACAmP,GAAY,IACfnL,UAAAA,GAER,KAOI,SAAC0K,EAAoB/D,SAAQ,CAACC,MAAOuE,EAAa,UAC9C,SAACV,EAAoB9D,SAAQ,CAACC,MAAO5G,EAAU,SACzCS,EAAMpD,YAIxB,4GE5Ea+N,EAAiE,SAAC3K,GAAK,OAAM,SAAC,MAAW,UAAKA,GAAS,EAEpH2K,EAAQzO,YAAc,uLCcTwC,EAAkB,WAE3B,IAAQgD,GAAMF,EAAAA,EAAAA,KAANE,EACFkJ,GAAkBnD,EAAAA,EAAAA,YAAWoD,EAAAA,GAMnC,OAAOL,EAAAA,EAAAA,cAAY,WAGlB,IAHmBxK,EAA6B,uDAAG,CAChD8K,QAASpJ,EAAE,uBAGHoJ,EAA0B9K,EAA1B8K,QAAYrP,GAAS,OAAKuE,EAAK,GACjC6B,EAAUC,SAASC,eAAe6I,GAEpC/I,IAEAO,EAAAA,EAAAA,SACI,SAAC,KAAY,kBAAK3G,GAAS,IAAEsP,SAAU,kBAAMC,EAAAA,EAAAA,wBAAuBnJ,EAAQ,EAAC,SACxEiJ,KAELjJ,EASZ,GAAG,CAAC+I,EAAiBlJ,GACzB,2LCpDA,SAASuJ,EAAiBC,EAAWC,GACnC,OAAOD,EAAUE,QAAQ,IAAIC,OAAO,UAAYF,EAAgB,YAAa,KAAM,MAAMC,QAAQ,OAAQ,KAAKA,QAAQ,aAAc,GACtI,gBCFA,GACY,ECAZ,EAAeE,EAAAA,cAAoB,MCOxBC,EAAY,YACZC,EAAS,SACTC,EAAW,WACXC,EAAU,UACVC,EAAU,UA6FjBC,EAA0B,SAAUC,GAGtC,SAASD,EAAW5L,EAAO8L,GACzB,IAAIC,EAEJA,EAAQF,EAAiBG,KAAKhD,KAAMhJ,EAAO8L,IAAY9C,KACvD,IAGIiD,EADAC,EAFcJ,MAEuBK,WAAanM,EAAMoM,MAAQpM,EAAMkM,OAuB1E,OArBAH,EAAMM,aAAe,KAEjBrM,EAAMsM,GACJJ,GACFD,EAAgBT,EAChBO,EAAMM,aAAeZ,GAErBQ,EAAgBP,EAIhBO,EADEjM,EAAMuM,eAAiBvM,EAAMwM,aACfjB,EAEAC,EAIpBO,EAAMpD,MAAQ,CACZ8D,OAAQR,GAEVF,EAAMW,aAAe,KACdX,CACT,EAhCAY,EAAAA,EAAAA,GAAef,EAAYC,GAkC3BD,EAAWgB,yBAA2B,SAAkCC,EAAMC,GAG5E,OAFaD,EAAKP,IAEJQ,EAAUL,SAAWlB,EAC1B,CACLkB,OAAQjB,GAIL,IACT,EAkBA,IAAIuB,EAASnB,EAAWoB,UA0OxB,OAxOAD,EAAOE,kBAAoB,WACzBjE,KAAKkE,cAAa,EAAMlE,KAAKqD,aAC/B,EAEAU,EAAOI,mBAAqB,SAA4BC,GACtD,IAAIC,EAAa,KAEjB,GAAID,IAAcpE,KAAKhJ,MAAO,CAC5B,IAAIyM,EAASzD,KAAKL,MAAM8D,OAEpBzD,KAAKhJ,MAAMsM,GACTG,IAAWhB,GAAYgB,IAAWf,IACpC2B,EAAa5B,GAGXgB,IAAWhB,GAAYgB,IAAWf,IACpC2B,EAAa1B,EAGnB,CAEA3C,KAAKkE,cAAa,EAAOG,EAC3B,EAEAN,EAAOO,qBAAuB,WAC5BtE,KAAKuE,oBACP,EAEAR,EAAOS,YAAc,WACnB,IACIC,EAAMrB,EAAOF,EADbwB,EAAU1E,KAAKhJ,MAAM0N,QAWzB,OATAD,EAAOrB,EAAQF,EAASwB,EAET,MAAXA,GAAsC,kBAAZA,IAC5BD,EAAOC,EAAQD,KACfrB,EAAQsB,EAAQtB,MAEhBF,OAA4BzP,IAAnBiR,EAAQxB,OAAuBwB,EAAQxB,OAASE,GAGpD,CACLqB,KAAMA,EACNrB,MAAOA,EACPF,OAAQA,EAEZ,EAEAa,EAAOG,aAAe,SAAsBS,EAAUN,QACnC,IAAbM,IACFA,GAAW,GAGM,OAAfN,GAEFrE,KAAKuE,qBAEDF,IAAe5B,EACjBzC,KAAK4E,aAAaD,GAElB3E,KAAK6E,eAEE7E,KAAKhJ,MAAMuM,eAAiBvD,KAAKL,MAAM8D,SAAWjB,GAC3DxC,KAAKC,SAAS,CACZwD,OAAQlB,GAGd,EAEAwB,EAAOa,aAAe,SAAsBD,GAC1C,IAAIG,EAAS9E,KAEToD,EAAQpD,KAAKhJ,MAAMoM,MACnB2B,EAAY/E,KAAK8C,QAAU9C,KAAK8C,QAAQK,WAAawB,EAErDK,EAAQhF,KAAKhJ,MAAMiO,QAAU,CAACF,GAAa,CAACG,EAAAA,YAAqBlF,MAAO+E,GACxEI,EAAYH,EAAM,GAClBI,EAAiBJ,EAAM,GAEvBK,EAAWrF,KAAKwE,cAChBc,EAAeP,EAAYM,EAASnC,OAASmC,EAASjC,OAGrDuB,IAAavB,GAASmC,EACzBvF,KAAKwF,aAAa,CAChB/B,OAAQf,IACP,WACDoC,EAAO9N,MAAMyO,UAAUN,EACzB,KAIFnF,KAAKhJ,MAAM0O,QAAQP,EAAWC,GAC9BpF,KAAKwF,aAAa,CAChB/B,OAAQhB,IACP,WACDqC,EAAO9N,MAAM2O,WAAWR,EAAWC,GAEnCN,EAAOc,gBAAgBN,GAAc,WACnCR,EAAOU,aAAa,CAClB/B,OAAQf,IACP,WACDoC,EAAO9N,MAAMyO,UAAUN,EAAWC,EACpC,GACF,GACF,IACF,EAEArB,EAAOc,YAAc,WACnB,IAAIgB,EAAS7F,KAETyE,EAAOzE,KAAKhJ,MAAMyN,KAClBY,EAAWrF,KAAKwE,cAChBW,EAAYnF,KAAKhJ,MAAMiO,aAAUxR,EAAYyR,EAAAA,YAAqBlF,MAEjEyE,IAAQc,GASbvF,KAAKhJ,MAAM8O,OAAOX,GAClBnF,KAAKwF,aAAa,CAChB/B,OAAQd,IACP,WACDkD,EAAO7O,MAAM+O,UAAUZ,GAEvBU,EAAOD,gBAAgBP,EAASZ,MAAM,WACpCoB,EAAOL,aAAa,CAClB/B,OAAQjB,IACP,WACDqD,EAAO7O,MAAM+K,SAASoD,EACxB,GACF,GACF,KArBEnF,KAAKwF,aAAa,CAChB/B,OAAQjB,IACP,WACDqD,EAAO7O,MAAM+K,SAASoD,EACxB,GAkBJ,EAEApB,EAAOQ,mBAAqB,WACA,OAAtBvE,KAAK0D,eACP1D,KAAK0D,aAAasC,SAClBhG,KAAK0D,aAAe,KAExB,EAEAK,EAAOyB,aAAe,SAAsBS,EAAWC,GAIrDA,EAAWlG,KAAKmG,gBAAgBD,GAChClG,KAAKC,SAASgG,EAAWC,EAC3B,EAEAnC,EAAOoC,gBAAkB,SAAyBD,GAChD,IAAIE,EAASpG,KAETqG,GAAS,EAcb,OAZArG,KAAK0D,aAAe,SAAUpH,GACxB+J,IACFA,GAAS,EACTD,EAAO1C,aAAe,KACtBwC,EAAS5J,GAEb,EAEA0D,KAAK0D,aAAasC,OAAS,WACzBK,GAAS,CACX,EAEOrG,KAAK0D,YACd,EAEAK,EAAO6B,gBAAkB,SAAyBlB,EAAS4B,GACzDtG,KAAKmG,gBAAgBG,GACrB,IAAIC,EAAOvG,KAAKhJ,MAAMiO,QAAUjF,KAAKhJ,MAAMiO,QAAQ1R,QAAU2R,EAAAA,YAAqBlF,MAC9EwG,EAA0C,MAAX9B,IAAoB1E,KAAKhJ,MAAMyP,eAElE,GAAKF,IAAQC,EAAb,CAKA,GAAIxG,KAAKhJ,MAAMyP,eAAgB,CAC7B,IAAIC,EAAQ1G,KAAKhJ,MAAMiO,QAAU,CAACjF,KAAK0D,cAAgB,CAAC6C,EAAMvG,KAAK0D,cAC/DyB,EAAYuB,EAAM,GAClBC,EAAoBD,EAAM,GAE9B1G,KAAKhJ,MAAMyP,eAAetB,EAAWwB,EACvC,CAEe,MAAXjC,GACFkC,WAAW5G,KAAK0D,aAAcgB,EAXhC,MAFEkC,WAAW5G,KAAK0D,aAAc,EAelC,EAEAK,EAAO3K,OAAS,WACd,IAAIqK,EAASzD,KAAKL,MAAM8D,OAExB,GAAIA,IAAWlB,EACb,OAAO,KAGT,IAAIsE,EAAc7G,KAAKhJ,MACnBpD,EAAWiT,EAAYjT,SAgBvBkT,GAfMD,EAAYvD,GACFuD,EAAYrD,aACXqD,EAAYtD,cACnBsD,EAAY3D,OACb2D,EAAYzD,MACbyD,EAAYpC,KACToC,EAAYnC,QACLmC,EAAYJ,eACnBI,EAAYnB,QACTmB,EAAYlB,WACbkB,EAAYpB,UACfoB,EAAYf,OACTe,EAAYd,UACbc,EAAY9E,SACb8E,EAAY5B,SACV8B,EAAAA,EAAAA,GAA8BF,EAAa,CAAC,WAAY,KAAM,eAAgB,gBAAiB,SAAU,QAAS,OAAQ,UAAW,iBAAkB,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,aAEjP,OAGEvE,EAAAA,cAAoB0E,EAAuB9J,SAAU,CACnDC,MAAO,MACc,oBAAbvJ,EAA0BA,EAAS6P,EAAQqD,GAAcxE,EAAAA,aAAmBA,EAAAA,SAAAA,KAAoB1O,GAAWkT,GAEzH,EAEOlE,CACT,CA1S8B,CA0S5BN,EAAAA,WA+LF,SAAS2E,IAAQ,CA7LjBrE,EAAWsE,YAAcF,EACzBpE,EAAWuE,UA0LP,CAAC,EAILvE,EAAWwE,aAAe,CACxB9D,IAAI,EACJE,cAAc,EACdD,eAAe,EACfL,QAAQ,EACRE,OAAO,EACPqB,MAAM,EACNiB,QAASuB,EACTtB,WAAYsB,EACZxB,UAAWwB,EACXnB,OAAQmB,EACRlB,UAAWkB,EACXlF,SAAUkF,GAEZrE,EAAWL,UAAYA,EACvBK,EAAWJ,OAASA,EACpBI,EAAWH,SAAWA,EACtBG,EAAWF,QAAUA,EACrBE,EAAWD,QAAUA,EACrB,QCvlBI0E,EAAc,SAAqBd,EAAMe,GAC3C,OAAOf,GAAQe,GAAWA,EAAQC,MAAM,KAAKC,SAAQ,SAAUC,GAC7D,OJPyCnT,EIObmT,QJPIjU,EIOV+S,GJNZmB,UACVlU,EAAQkU,UAAUC,OAAOrT,GACa,kBAAtBd,EAAQc,UACxBd,EAAQc,UAAY2N,EAAiBzO,EAAQc,UAAWA,GAExDd,EAAQE,aAAa,QAASuO,EAAiBzO,EAAQc,WAAad,EAAQc,UAAUsT,SAAW,GAAItT,KAN1F,IAAqBd,EAASc,CIQ3C,GACF,EAwEIuT,EAA6B,SAAUhF,GAGzC,SAASgF,IAGP,IAFA,IAAI9E,EAEK+E,EAAOC,UAAU3N,OAAQ4N,EAAO,IAAI7S,MAAM2S,GAAOG,EAAO,EAAGA,EAAOH,EAAMG,IAC/ED,EAAKC,GAAQF,UAAUE,GAgHzB,OA7GAlF,EAAQF,EAAiBG,KAAKkF,MAAMrF,EAAkB,CAAC7C,MAAMmI,OAAOH,KAAUhI,MACxEoI,eAAiB,CACrBlF,OAAQ,CAAC,EACTE,MAAO,CAAC,EACRqB,KAAM,CAAC,GAGT1B,EAAM2C,QAAU,SAAUP,EAAWC,GACnC,IAAIiD,EAAwBtF,EAAMuF,iBAAiBnD,EAAWC,GAC1DmB,EAAO8B,EAAsB,GAC7BtD,EAAYsD,EAAsB,GAEtCtF,EAAMwF,cAAchC,EAAM,QAE1BxD,EAAMyF,SAASjC,EAAMxB,EAAY,SAAW,QAAS,QAEjDhC,EAAM/L,MAAM0O,SACd3C,EAAM/L,MAAM0O,QAAQP,EAAWC,EAEnC,EAEArC,EAAM4C,WAAa,SAAUR,EAAWC,GACtC,IAAIqD,EAAyB1F,EAAMuF,iBAAiBnD,EAAWC,GAC3DmB,EAAOkC,EAAuB,GAG9BtV,EAFYsV,EAAuB,GAEhB,SAAW,QAElC1F,EAAMyF,SAASjC,EAAMpT,EAAM,UAEvB4P,EAAM/L,MAAM2O,YACd5C,EAAM/L,MAAM2O,WAAWR,EAAWC,EAEtC,EAEArC,EAAM0C,UAAY,SAAUN,EAAWC,GACrC,IAAIsD,EAAyB3F,EAAMuF,iBAAiBnD,EAAWC,GAC3DmB,EAAOmC,EAAuB,GAG9BvV,EAFYuV,EAAuB,GAEhB,SAAW,QAElC3F,EAAMwF,cAAchC,EAAMpT,GAE1B4P,EAAMyF,SAASjC,EAAMpT,EAAM,QAEvB4P,EAAM/L,MAAMyO,WACd1C,EAAM/L,MAAMyO,UAAUN,EAAWC,EAErC,EAEArC,EAAM+C,OAAS,SAAUX,GACvB,IACIoB,EADyBxD,EAAMuF,iBAAiBnD,GAClB,GAElCpC,EAAMwF,cAAchC,EAAM,UAE1BxD,EAAMwF,cAAchC,EAAM,SAE1BxD,EAAMyF,SAASjC,EAAM,OAAQ,QAEzBxD,EAAM/L,MAAM8O,QACd/C,EAAM/L,MAAM8O,OAAOX,EAEvB,EAEApC,EAAMgD,UAAY,SAAUZ,GAC1B,IACIoB,EADyBxD,EAAMuF,iBAAiBnD,GAClB,GAElCpC,EAAMyF,SAASjC,EAAM,OAAQ,UAEzBxD,EAAM/L,MAAM+O,WACdhD,EAAM/L,MAAM+O,UAAUZ,EAE1B,EAEApC,EAAMhB,SAAW,SAAUoD,GACzB,IACIoB,EADyBxD,EAAMuF,iBAAiBnD,GAClB,GAElCpC,EAAMwF,cAAchC,EAAM,QAE1BxD,EAAMyF,SAASjC,EAAM,OAAQ,QAEzBxD,EAAM/L,MAAM+K,UACdgB,EAAM/L,MAAM+K,SAASoD,EAEzB,EAEApC,EAAMuF,iBAAmB,SAAUnD,EAAWC,GAC5C,OAAOrC,EAAM/L,MAAMiO,QAAU,CAAClC,EAAM/L,MAAMiO,QAAQ1R,QAAS4R,GACzD,CAACA,EAAWC,EAChB,EAEArC,EAAM4F,cAAgB,SAAUxV,GAC9B,IAAIyV,EAAa7F,EAAM/L,MAAM4R,WACzBC,EAA2C,kBAAfD,EAE5BE,EAAgBD,EAAqB,IAD5BA,GAAsBD,EAAaA,EAAa,IAAM,IACZzV,EAAOyV,EAAWzV,GAGzE,MAAO,CACL2V,cAAeA,EACfC,gBAJoBF,EAAqBC,EAAgB,UAAYF,EAAWzV,EAAO,UAKvF6V,cAJkBH,EAAqBC,EAAgB,QAAUF,EAAWzV,EAAO,QAMvF,EAEO4P,CACT,EAvHAY,EAAAA,EAAAA,GAAekE,EAAehF,GAyH9B,IAAIkB,EAAS8D,EAAc7D,UA6D3B,OA3DAD,EAAOyE,SAAW,SAAkBjC,EAAMpT,EAAM8V,GAC9C,IAAI3U,EAAY0L,KAAK2I,cAAcxV,GAAM8V,EAAQ,aAG7CD,EADsBhJ,KAAK2I,cAAc,SACLK,cAE3B,WAAT7V,GAA+B,SAAV8V,GAAoBD,IAC3C1U,GAAa,IAAM0U,GAKP,WAAVC,GAEF1C,GAAQA,EAAK2C,UAGX5U,IACF0L,KAAKoI,eAAejV,GAAM8V,GAAS3U,EAhOzB,SAAkBiS,EAAMe,GAC/Bf,GAAQe,GAAWA,EAAQC,MAAM,KAAKC,SAAQ,SAAUC,GAC7D,OCJsCnT,EDIbmT,QCJIjU,EDIV+S,GCHTmB,UAAWlU,EAAQkU,UAAUyB,IAAI7U,GCHhC,SAAkBd,EAASc,GACxC,OAAId,EAAQkU,YAAoBpT,GAAad,EAAQkU,UAAU0B,SAAS9U,IACkC,KAAlG,KAAOd,EAAQc,UAAUsT,SAAWpU,EAAQc,WAAa,KAAK+U,QAAQ,IAAM/U,EAAY,IAClG,CDAoEgV,CAAS9V,EAASc,KAA6C,kBAAtBd,EAAQc,UAAwBd,EAAQc,UAAYd,EAAQc,UAAY,IAAMA,EAAed,EAAQE,aAAa,SAAUF,EAAQc,WAAad,EAAQc,UAAUsT,SAAW,IAAM,IAAMtT,KADxR,IAAkBd,EAASc,CDKxC,GACF,CA8NMiV,CAAUhD,EAAMjS,GAEpB,EAEAyP,EAAOwE,cAAgB,SAAuBhC,EAAMpT,GAClD,IAAIqW,EAAwBxJ,KAAKoI,eAAejV,GAC5C2V,EAAgBU,EAAsBC,KACtCV,EAAkBS,EAAsBnD,OACxC2C,EAAgBQ,EAAsBE,KAC1C1J,KAAKoI,eAAejV,GAAQ,CAAC,EAEzB2V,GACFzB,EAAYd,EAAMuC,GAGhBC,GACF1B,EAAYd,EAAMwC,GAGhBC,GACF3B,EAAYd,EAAMyC,EAEtB,EAEAjF,EAAO3K,OAAS,WACd,IAAIyN,EAAc7G,KAAKhJ,MAEnBA,GADI6P,EAAY+B,YACR7B,EAAAA,EAAAA,GAA8BF,EAAa,CAAC,gBAExD,OAAoBvE,EAAAA,cAAoBM,GAAY+G,EAAAA,EAAAA,GAAS,CAAC,EAAG3S,EAAO,CACtE0O,QAAS1F,KAAK0F,QACdD,UAAWzF,KAAKyF,UAChBE,WAAY3F,KAAK2F,WACjBG,OAAQ9F,KAAK8F,OACbC,UAAW/F,KAAK+F,UAChBhE,SAAU/B,KAAK+B,WAEnB,EAEO8F,CACT,CAxLiC,CAwL/BvF,EAAAA,WAEFuF,EAAcT,aAAe,CAC3BwB,WAAY,IAEdf,EAAcV,UAiIT,CAAC,EACN,QGlRA,EALgB,CACZyC,YAlIc,SAAUpW,GACxB,IAAKA,IAAYA,EAAQqW,cAAcC,YACnC,OAAO,EAEX,IACIC,EADMvW,EAAQqW,cAAcC,YACPE,iBAAiBxW,GACtCyW,EAAYC,WAAWH,EAAeE,WACtCE,EAAeD,WAAWH,EAAeI,cAC7C,OAAO3W,EAAQ4W,aAAeH,EAAYE,CAC9C,EA0HIE,WAtHa,SAAU7W,GACvB,IAAKA,IAAYA,EAAQqW,cAAcC,YACnC,OAAO,EAEX,IACIC,EADMvW,EAAQqW,cAAcC,YACPE,iBAAiBxW,GACtC6H,EAAa6O,WAAWH,EAAe1O,YACvCiP,EAAcJ,WAAWH,EAAeO,aAC5C,OAAO9W,EAAQ+W,YAAclP,EAAaiP,CAC9C,EA8GIE,OA1GS,CACT,sBAAuB,wBACvB,+BAAgC,iCAChC,4BAA6B,8BAC7B,mBAAoB,qBACpB,oBAAqB,sBACrB,0BAA2B,4BAC3B,2BAA4B,6BAC5B,kBAAmB,oBACnB,yBAA0B,2BAC1B,kBAAmB,oBACnB,mBAAoB,qBACpB,yBAA0B,2BAC1B,0BAA2B,4BAC3B,iBAAkB,mBAClB,wBAAyB,0BACzB,kBAAmB,oBACnB,mBAAoB,qBACpB,yBAA0B,2BAC1B,0BAA2B,4BAC3B,iBAAkB,mBAClB,wBAAyB,0BACzB,gBAAiB,kBACjB,iBAAkB,mBAClB,uBAAwB,yBACxB,wBAAyB,0BACzB,eAAgB,iBAChB,sBAAuB,wBACvB,OAAU,WACV,wBAAyB,0BACzB,yBAA0B,2BAC1B,+BAAgC,iCAChC,gCAAiC,kCACjC,uBAAwB,yBACxB,8BAA+B,gCAC/B,0BAA2B,4BAC3B,2BAA4B,6BAC5B,iCAAkC,mCAClC,kCAAmC,oCACnC,yBAA0B,2BAC1B,gCAAiC,kCACjC,4BAA6B,8BAC7B,aAAc,eACd,cAAe,gBACf,oBAAqB,sBACrB,qBAAsB,uBACtB,YAAa,cACb,mBAAoB,qBACpB,gBAAiB,kBACjB,iBAAkB,mBAClB,uBAAwB,yBACxB,wBAAyB,0BACzB,eAAgB,iBAChB,sBAAuB,wBACvB,iBAAkB,mBAClB,kBAAmB,oBACnB,wBAAyB,0BACzB,yBAA0B,2BAC1B,gBAAiB,kBACjB,uBAAwB,yBACxB,kBAAmB,oBACnB,SAAY,aACZ,yBAA0B,2BAC1B,mBAAoB,qBACpB,oBAAqB,sBACrB,0BAA2B,4BAC3B,2BAA4B,6BAC5B,kBAAmB,oBACnB,yBAA0B,2BAC1B,iBAAkB,mBAClB,kBAAmB,oBACnB,wBAAyB,0BACzB,yBAA0B,2BAC1B,gBAAiB,kBACjB,uBAAwB,yBACxB,oBAAqB,sBACrB,qBAAsB,uBACtB,2BAA4B,6BAC5B,4BAA6B,8BAC7B,mBAAoB,qBACpB,0BAA2B,4BAC3B,mBAAoB,qBACpB,oBAAqB,sBACrB,0BAA2B,4BAC3B,2BAA4B,6BAC5B,kBAAmB,oBACnB,yBAA0B,2BAC1B,wBAAyB,0BACzB,yBAA0B,2BAC1B,+BAAgC,iCAChC,gCAAiC,kCACjC,uBAAwB,yBACxB,8BAA+B,gCAC/B,0BAA2B,4BAC3B,2BAA4B,6BAC5B,iCAAkC,mCAClC,kCAAmC,oCACnC,yBAA0B,2BAC1B,gCAAiC,oCC/HjCC,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,EAAsC,WAStC,OARAA,EAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,EAASrD,MAAMlI,KAAM+H,UAChC,EACI6D,EAAkC,SAAUH,EAAGzY,GAC/C,IAAI0F,EAAI,CAAC,EACT,IAAK,IAAIsS,KAAKS,EAAOZ,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,IAAMhY,EAAEqW,QAAQ2B,GAAK,IAC9EtS,EAAEsS,GAAKS,EAAET,IACb,GAAS,MAALS,GAAqD,oBAAjCZ,OAAOgB,sBACtB,KAAIH,EAAI,EAAb,IAAgBV,EAAIH,OAAOgB,sBAAsBJ,GAAIC,EAAIV,EAAE5Q,OAAQsR,IAC3D1Y,EAAEqW,QAAQ2B,EAAEU,IAAM,GAAKb,OAAO7G,UAAU8H,qBAAqB9I,KAAKyI,EAAGT,EAAEU,MACvEhT,EAAEsS,EAAEU,IAAMD,EAAET,EAAEU,IAF4B,CAItD,OAAOhT,CACX,EAMI8R,EAASuB,EAAKvB,OACdwB,EAAgC,SAAUC,GAE1C,SAASD,IACL,IAAIjJ,EAAmB,OAAXkJ,GAAmBA,EAAO/D,MAAMlI,KAAM+H,YAAc/H,KAEhE,OADA+C,EAAMmJ,WAAa5J,EAAAA,YACZS,CACX,CA2HA,OAhIA0H,EAAUuB,EAAgBC,GAM1BpB,OAAOsB,eAAeH,EAAehI,UAAW,UAAW,CAIvDoI,IAAK,WACD,OAAOpM,KAAKkM,WAAW3Y,OAC3B,EACA8Y,YAAY,EACZC,cAAc,IAKlBN,EAAehI,UAAU5K,OAAS,WAC9B,IAAI2J,EAAQ/C,KACRuM,EAAKvM,KAAKhJ,MAAOpD,EAAW2Y,EAAG3Y,SAAU6C,EAAQ8V,EAAG9V,MAAOyM,EAASqJ,EAAGrJ,OAAQE,EAAQmJ,EAAGnJ,MAAOqB,EAAO8H,EAAG9H,KAAM+H,EAAiBD,EAAGC,eAAgBC,EAA0BF,EAAGE,wBAAyBC,EAAyBH,EAAGG,uBAAwBpY,EAAYiY,EAAGjY,UAAWoR,EAAU6G,EAAG7G,QAASC,EAAa4G,EAAG5G,WAAYF,EAAY8G,EAAG9G,UAAWK,EAASyG,EAAGzG,OAAQC,EAAYwG,EAAGxG,UAAWhE,EAAWwK,EAAGxK,SAAU4K,EAAgBJ,EAAGI,cAAenJ,EAAe+I,EAAG/I,aAAcD,EAAgBgJ,EAAGhJ,cAAeqJ,EAAyBL,EAAGK,uBAAwBC,EAAwBN,EAAGM,sBAAuBC,EAAwBP,EAAGO,sBAAuBC,EAAuBR,EAAGQ,qBAAsBC,EAAQpB,EAAOW,EAAI,CAAC,WAAY,QAAS,SAAU,QAAS,OAAQ,iBAAkB,0BAA2B,yBAA0B,YAAa,UAAW,aAAc,YAAa,SAAU,YAAa,WAAY,gBAAiB,eAAgB,gBAAiB,yBAA0B,wBAAyB,wBAAyB,yBACtjCU,GAAoCrE,EAAAA,EAAAA,GAAWtU,EAAWkW,EAAO,8BACjE0C,EAAe3B,EAAS,CAAE4B,gBAAiB,OAAS1W,GACpD2W,EAAiB,CACjBC,SAAU9B,EAAS,CAAE+B,mBAAoB,GAAGnF,OAAOsE,EAAyB,OAASG,GACrFW,QAAShC,EAAS,CAAC,EAAGsB,GACtBW,QAASjC,EAAS,CAAE+B,mBAAoB,GAAGnF,OAAOuE,EAAwB,OAASI,GACnFW,OAAQlC,EAAS,CAAC,EAAGwB,IAErBW,EAAkB,CAClBpK,GAAItD,KAAKhJ,MAAMsM,GACfJ,OAAQA,EACRE,MAAOA,EACPqB,KAAMA,EACNjB,aAAcA,EACdD,cAAeA,EACfmB,QAAS,CACLtB,MAAOqJ,EACPhI,KAAMiI,GAEVhH,QAAU,WACFA,GACAA,EAAQ1C,UAAKvP,EAAW,CAAEka,gBAAiB5K,EAAMvP,QAASoa,OAAQ7K,GAE1E,EACA4C,WAAa,WACLA,GACAA,EAAW3C,UAAKvP,EAAW,CAAEka,gBAAiB5K,EAAMvP,QAASoa,OAAQ7K,GAE7E,EACA0C,UAAY,WACJA,GACAA,EAAUzC,UAAKvP,EAAW,CAAEka,gBAAiB5K,EAAMvP,QAASoa,OAAQ7K,GAE5E,EACA+C,OAAS,WACDA,GACAA,EAAO9C,UAAKvP,EAAW,CAAEka,gBAAiB5K,EAAMvP,QAASoa,OAAQ7K,GAEzE,EACAgD,UAAY,WACJA,GACAA,EAAU/C,UAAKvP,EAAW,CAAEka,gBAAiB5K,EAAMvP,QAASoa,OAAQ7K,GAE5E,EACAhB,SAAW,WACH4K,GACAA,EAAc3J,UAAKvP,EAAW,CAAEka,gBAAiB5K,EAAMvP,QAASoa,OAAQ7K,IAExEhB,GACAA,EAASiB,UAAKvP,EAAW,CAAEka,gBAAiB5K,EAAMvP,QAASoa,OAAQ7K,GAE3E,EACA6F,WAAY,CACR1F,OAAQsH,EAAO,GAAGrC,OAAOqE,EAAgB,aAAe,GAAGrE,OAAOqE,EAAgB,WAClFqB,aAAcrD,EAAO,GAAGrC,OAAOqE,EAAgB,oBAAsB,GAAGrE,OAAOqE,EAAgB,kBAC/FpJ,MAAOoH,EAAO,GAAGrC,OAAOqE,EAAgB,YAAc,GAAGrE,OAAOqE,EAAgB,UAChFsB,YAAatD,EAAO,GAAGrC,OAAOqE,EAAgB,mBAAqB,GAAGrE,OAAOqE,EAAgB,iBAC7F/H,KAAM+F,EAAO,GAAGrC,OAAOqE,EAAgB,WAAa,GAAGrE,OAAOqE,EAAgB,SAC9EuB,WAAYvD,EAAO,GAAGrC,OAAOqE,EAAgB,kBAAoB,GAAGrE,OAAOqE,EAAgB,kBAGnG,OAAQlK,EAAAA,cAAoBuF,EAAe0D,EAAS,CAAC,EAAGmC,EAAiBV,EAAO,CAAE/H,QAASjF,KAAKkM,cAAe,SAAUzI,GACrH,OAAQnB,EAAAA,cAAoB,MAAO,CAAE7L,MAAO8U,EAASA,EAAS,CAAC,EAAG2B,GAAeE,EAAe3J,IAAUnP,UAAW2Y,EAAmC1a,IAAKwQ,EAAMmJ,YAActY,EACrL,GACJ,EAIAoY,EAAe7E,UAAY,CACvB7D,GAAI0K,EAAAA,KACJpa,SAAUoa,EAAAA,UAAoB,CAC1BA,EAAAA,QAAkBA,EAAAA,MAClBA,EAAAA,OAEJxB,eAAgBwB,EAAAA,OAAAA,WAChB1Z,UAAW0Z,EAAAA,OACX9K,OAAQ8K,EAAAA,KACR5K,MAAO4K,EAAAA,KACPvJ,KAAMuJ,EAAAA,KACNvB,wBAAyBuB,EAAAA,OAAAA,WACzBtB,uBAAwBsB,EAAAA,OAAAA,WACxBxK,aAAcwK,EAAAA,KACdzK,cAAeyK,EAAAA,KACfpB,uBAAwBoB,EAAAA,OACxBnB,sBAAuBmB,EAAAA,OACvBlB,sBAAuBkB,EAAAA,OACvBjB,qBAAsBiB,EAAAA,QAK1BhC,EAAe5E,aAAe,CAC1B5D,cAAc,EACdD,eAAe,EACfmC,QAASuB,EAAAA,EACTtB,WAAYsB,EAAAA,EACZxB,UAAWwB,EAAAA,EACXnB,OAAQmB,EAAAA,EACRlB,UAAWkB,EAAAA,EACXlF,SAAUkF,EAAAA,EACV0F,cAAe1F,EAAAA,EACf2F,uBAAwB,CAAC,EACzBC,sBAAuB,CAAC,EACxBC,sBAAuB,CAAC,EACxBC,qBAAsB,CAAC,GAEpBf,CACX,CAlIoC,CAkIlC1J,EAAAA,sBCrKK,SAAS2L,EAAgBra,EAAUsa,GACxC,IAII9V,EAASyS,OAAOS,OAAO,MAO3B,OANI1X,GAAUua,EAAAA,SAAAA,IAAava,GAAU,SAAU6T,GAC7C,OAAOA,CACT,IAAGD,SAAQ,SAAU4G,GAEnBhW,EAAOgW,EAAMC,KATF,SAAgBD,GAC3B,OAAOF,IAASI,EAAAA,EAAAA,gBAAeF,GAASF,EAAME,GAASA,CACzD,CAOsBG,CAAOH,EAC7B,IACOhW,CACT,CAiEA,SAASoW,EAAQJ,EAAOK,EAAMzX,GAC5B,OAAsB,MAAfA,EAAMyX,GAAgBzX,EAAMyX,GAAQL,EAAMpX,MAAMyX,EACzD,CAaO,SAASC,EAAoBC,EAAWC,EAAkB7M,GAC/D,IAAI8M,EAAmBZ,EAAgBU,EAAU/a,UAC7CA,EA/DC,SAA4Bkb,EAAMC,GAIvC,SAASC,EAAeX,GACtB,OAAOA,KAAOU,EAAOA,EAAKV,GAAOS,EAAKT,EACxC,CALAS,EAAOA,GAAQ,CAAC,EAChBC,EAAOA,GAAQ,CAAC,EAQhB,IAcIrD,EAdAuD,EAAkBpE,OAAOS,OAAO,MAChC4D,EAAc,GAElB,IAAK,IAAIC,KAAWL,EACdK,KAAWJ,EACTG,EAAY9U,SACd6U,EAAgBE,GAAWD,EAC3BA,EAAc,IAGhBA,EAAYE,KAAKD,GAKrB,IAAIE,EAAe,CAAC,EAEpB,IAAK,IAAIC,KAAWP,EAAM,CACxB,GAAIE,EAAgBK,GAClB,IAAK5D,EAAI,EAAGA,EAAIuD,EAAgBK,GAASlV,OAAQsR,IAAK,CACpD,IAAI6D,EAAiBN,EAAgBK,GAAS5D,GAC9C2D,EAAaJ,EAAgBK,GAAS5D,IAAMsD,EAAeO,EAC7D,CAGFF,EAAaC,GAAWN,EAAeM,EACzC,CAGA,IAAK5D,EAAI,EAAGA,EAAIwD,EAAY9U,OAAQsR,IAClC2D,EAAaH,EAAYxD,IAAMsD,EAAeE,EAAYxD,IAG5D,OAAO2D,CACT,CAmBiBG,CAAmBZ,EAAkBC,GAmCpD,OAlCAhE,OAAO4E,KAAK7b,GAAU4T,SAAQ,SAAU6G,GACtC,IAAID,EAAQxa,EAASya,GACrB,IAAKC,EAAAA,EAAAA,gBAAeF,GAApB,CACA,IAAIsB,EAAWrB,KAAOO,EAClBe,EAAWtB,KAAOQ,EAClBe,EAAYhB,EAAiBP,GAC7BwB,GAAYvB,EAAAA,EAAAA,gBAAesB,KAAeA,EAAU5Y,MAAMsM,IAE1DqM,GAAaD,IAAWG,EAQhBF,IAAWD,GAAYG,EAMxBF,GAAWD,IAAWpB,EAAAA,EAAAA,gBAAesB,KAI9Chc,EAASya,IAAOyB,EAAAA,EAAAA,cAAa1B,EAAO,CAClCrM,SAAUA,EAAShC,KAAK,KAAMqO,GAC9B9K,GAAIsM,EAAU5Y,MAAMsM,GACpBmB,KAAM+J,EAAQJ,EAAO,OAAQO,GAC7BvL,MAAOoL,EAAQJ,EAAO,QAASO,MAXjC/a,EAASya,IAAOyB,EAAAA,EAAAA,cAAa1B,EAAO,CAClC9K,IAAI,IAVN1P,EAASya,IAAOyB,EAAAA,EAAAA,cAAa1B,EAAO,CAClCrM,SAAUA,EAAShC,KAAK,KAAMqO,GAC9B9K,IAAI,EACJmB,KAAM+J,EAAQJ,EAAO,OAAQO,GAC7BvL,MAAOoL,EAAQJ,EAAO,QAASO,IAZD,CA+BpC,IACO/a,CACT,CClIA,IAAImc,EAASlF,OAAOkF,QAAU,SAAUC,GACtC,OAAOnF,OAAO4E,KAAKO,GAAK3V,KAAI,SAAU4V,GACpC,OAAOD,EAAIC,EACb,GACF,EAuBIC,EAA+B,SAAUrN,GAG3C,SAASqN,EAAgBlZ,EAAO8L,GAC9B,IAAIC,EAIAoN,GAFJpN,EAAQF,EAAiBG,KAAKhD,KAAMhJ,EAAO8L,IAAY9C,MAE9BmQ,aAAapQ,MAAKqQ,EAAAA,EAAAA,GAAuBrN,IAUlE,OAPAA,EAAMpD,MAAQ,CACZX,aAAc,CACZmE,YAAY,GAEdgN,aAAcA,EACdE,aAAa,GAERtN,CACT,EAlBAY,EAAAA,EAAAA,GAAeuM,EAAiBrN,GAoBhC,IAAIkB,EAASmM,EAAgBlM,UAqE7B,OAnEAD,EAAOE,kBAAoB,WACzBjE,KAAKsQ,SAAU,EACftQ,KAAKC,SAAS,CACZjB,aAAc,CACZmE,YAAY,IAGlB,EAEAY,EAAOO,qBAAuB,WAC5BtE,KAAKsQ,SAAU,CACjB,EAEAJ,EAAgBtM,yBAA2B,SAAkC+K,EAAW9K,GACtF,IDiBmC7M,EAAO+K,ECjBtC6M,EAAmB/K,EAAKjQ,SACxBuc,EAAetM,EAAKsM,aAExB,MAAO,CACLvc,SAFgBiQ,EAAKwM,aDeYrZ,ECbc2X,EDaP5M,ECbkBoO,EDcvDlC,EAAgBjX,EAAMpD,UAAU,SAAUwa,GAC/C,OAAO0B,EAAAA,EAAAA,cAAa1B,EAAO,CACzBrM,SAAUA,EAAShC,KAAK,KAAMqO,GAC9B9K,IAAI,EACJJ,OAAQsL,EAAQJ,EAAO,SAAUpX,GACjCoM,MAAOoL,EAAQJ,EAAO,QAASpX,GAC/ByN,KAAM+J,EAAQJ,EAAO,OAAQpX,IAEjC,KCtB8E0X,EAAoBC,EAAWC,EAAkBuB,GAC3HE,aAAa,EAEjB,EAGAtM,EAAOoM,aAAe,SAAsB/B,EAAO7H,GACjD,IAAIgK,EAAsBtC,EAAgBjO,KAAKhJ,MAAMpD,UACjDwa,EAAMC,OAAOkC,IAEbnC,EAAMpX,MAAM+K,UACdqM,EAAMpX,MAAM+K,SAASwE,GAGnBvG,KAAKsQ,SACPtQ,KAAKC,UAAS,SAAUN,GACtB,IAAI/L,GAAW+V,EAAAA,EAAAA,GAAS,CAAC,EAAGhK,EAAM/L,UAGlC,cADOA,EAASwa,EAAMC,KACf,CACLza,SAAUA,EAEd,IAEJ,EAEAmQ,EAAO3K,OAAS,WACd,IAAIyN,EAAc7G,KAAKhJ,MACnBD,EAAY8P,EAAY2J,UACxBC,EAAe5J,EAAY4J,aAC3BzZ,GAAQ+P,EAAAA,EAAAA,GAA8BF,EAAa,CAAC,YAAa,iBAEjE7H,EAAegB,KAAKL,MAAMX,aAC1BpL,EAAWmc,EAAO/P,KAAKL,MAAM/L,UAAUyG,IAAIoW,GAK/C,cAJOzZ,EAAMkM,cACNlM,EAAMoM,aACNpM,EAAMyN,KAEK,OAAd1N,EACkBuL,EAAAA,cAAoB0E,EAAuB9J,SAAU,CACvEC,MAAO6B,GACNpL,GAGe0O,EAAAA,cAAoB0E,EAAuB9J,SAAU,CACvEC,MAAO6B,GACOsD,EAAAA,cAAoBvL,EAAWC,EAAOpD,GACxD,EAEOsc,CACT,CA3FmC,CA2FjC5N,EAAAA,WAEF4N,EAAgB/I,UAyDZ,CAAC,EACL+I,EAAgB9I,aA5KG,CACjBoJ,UAAW,MACXC,aAAc,SAAsBrC,GAClC,OAAOA,CACT,GAyKF,mBCzLWsC,EAAkB,CACzBC,KAAM,kCACNC,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbC,QAAS,GACTC,iBAAkB,yJCTlBvG,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,EAAsC,WAStC,OARAA,EAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,EAASrD,MAAMlI,KAAM+H,UAChC,EACI6D,EAAkC,SAAUH,EAAGzY,GAC/C,IAAI0F,EAAI,CAAC,EACT,IAAK,IAAIsS,KAAKS,EAAOZ,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,IAAMhY,EAAEqW,QAAQ2B,GAAK,IAC9EtS,EAAEsS,GAAKS,EAAET,IACb,GAAS,MAALS,GAAqD,oBAAjCZ,OAAOgB,sBACtB,KAAIH,EAAI,EAAb,IAAgBV,EAAIH,OAAOgB,sBAAsBJ,GAAIC,EAAIV,EAAE5Q,OAAQsR,IAC3D1Y,EAAEqW,QAAQ2B,EAAEU,IAAM,GAAKb,OAAO7G,UAAU8H,qBAAqB9I,KAAKyI,EAAGT,EAAEU,MACvEhT,EAAEsS,EAAEU,IAAMD,EAAET,EAAEU,IAF4B,CAItD,OAAOhT,CACX,EASI8R,EAASuB,EAAKvB,OAEdyG,EAA2B,SAAUhF,GAErC,SAASgF,EAAUja,GACf,IAAI+L,EAAQkJ,EAAOjJ,KAAKhD,KAAMhJ,IAAUgJ,KAExC,OADAkR,EAAAA,EAAAA,GAAgBR,GACT3N,CACX,CA0CA,OA/CA0H,EAAUwG,EAAWhF,GASrBgF,EAAUjN,UAAU5K,OAAS,WACzB,IAAImT,EAAKvM,KAAKhJ,MAAOV,EAAKiW,EAAGjW,GAAIG,EAAQ8V,EAAG9V,MAAO7C,EAAW2Y,EAAG3Y,SAAU4c,EAAYjE,EAAGiE,UAAWlc,EAAYiY,EAAGjY,UAAWmc,EAAelE,EAAGkE,aAAgDU,GAAlB5E,EAAG6E,cAAqC7E,EAAG4E,qBAAqBE,EAA0B9E,EAAG8E,wBAAyBrE,EAAQpB,EAAOW,EAAI,CAAC,KAAM,QAAS,WAAY,YAAa,YAAa,eAAgB,gBAAiB,sBAAuB,4BAClamB,EAAkB,CAClBpX,GAAIA,EACJG,MAAOA,EACP+Z,UAAWA,EACXC,aAAcA,EACdnc,WAAWsU,EAAAA,EAAAA,GAAW4B,EAAO,uBAAwBA,EAAO,gCAAiClW,IAE7FwN,EAAUQ,EAAAA,SAAAA,IAAmB1O,GAAY,MAAM,SAAUwa,GAAS,OAAQ9L,EAAAA,cAAoB0J,EAAgBT,EAAS,CAAC,EAAGyB,EAAO,CAAEvW,MAAO0a,EAAqB7c,UAAW+c,IAA4BjD,EAAS,IACpN,OAAQ9L,EAAAA,cAAoB4N,EAAiB3E,EAAS,CAAC,EAAGmC,GAAkB5L,EAChF,EAIAmP,EAAU9J,UAAY,CAClBvT,SAAUoa,EAAAA,UAAoB,CAC1BA,EAAAA,QAAkBA,EAAAA,MAClBA,EAAAA,OAEJyC,aAAczC,EAAAA,IACd1Z,UAAW0Z,EAAAA,OACXwC,UAAWxC,EAAAA,OACX1X,GAAI0X,EAAAA,OACJvX,MAAOuX,EAAAA,IACPxB,eAAgBwB,EAAAA,OAAAA,WAChB9K,OAAQ8K,EAAAA,KAAAA,WACR5K,MAAO4K,EAAAA,KAAAA,WACPvJ,KAAMuJ,EAAAA,KAAAA,WACNvB,wBAAyBuB,EAAAA,OAAAA,WACzBtB,uBAAwBsB,EAAAA,OAAAA,YAK5BiD,EAAU7J,aAAe,CACrBoJ,UAAW,OAERS,CACX,CAjD+B,CAiD7B3O,EAAAA,WChGEmI,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,EAAsC,WAStC,OARAA,EAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,EAASrD,MAAMlI,KAAM+H,UAChC,EACI6D,EAAkC,SAAUH,EAAGzY,GAC/C,IAAI0F,EAAI,CAAC,EACT,IAAK,IAAIsS,KAAKS,EAAOZ,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,IAAMhY,EAAEqW,QAAQ2B,GAAK,IAC9EtS,EAAEsS,GAAKS,EAAET,IACb,GAAS,MAALS,GAAqD,oBAAjCZ,OAAOgB,sBACtB,KAAIH,EAAI,EAAb,IAAgBV,EAAIH,OAAOgB,sBAAsBJ,GAAIC,EAAIV,EAAE5Q,OAAQsR,IAC3D1Y,EAAEqW,QAAQ2B,EAAEU,IAAM,GAAKb,OAAO7G,UAAU8H,qBAAqB9I,KAAKyI,EAAGT,EAAEU,MACvEhT,EAAEsS,EAAEU,IAAMD,EAAET,EAAEU,IAF4B,CAItD,OAAOhT,CACX,EAKI4Y,EAAsB,SAAUrF,GAEhC,SAASqF,IACL,OAAkB,OAAXrF,GAAmBA,EAAO/D,MAAMlI,KAAM+H,YAAc/H,IAC/D,CAmCA,OAtCAyK,EAAU6G,EAAMrF,GAOhBqF,EAAKtN,UAAU5K,OAAS,WACpB,IAAImT,EAAKvM,KAAKhJ,MAAOpD,EAAW2Y,EAAG3Y,SAAUoZ,EAAQpB,EAAOW,EAAI,CAAC,aAIjE,OAAQjK,EAAAA,cAAoB2O,EAAW1F,EAAS,CAAC,EAH5B,CACjBiB,eAAgB,QAEgDQ,GAAQpZ,EAChF,EAIA0d,EAAKnK,UAAY,CACbvT,SAAUoa,EAAAA,UAAoB,CAC1BA,EAAAA,QAAkBA,EAAAA,MAClBA,EAAAA,OAEJyC,aAAczC,EAAAA,IACd1Z,UAAW0Z,EAAAA,OACXwC,UAAWxC,EAAAA,OACX1X,GAAI0X,EAAAA,OACJvX,MAAOuX,EAAAA,KAKXsD,EAAKlK,aAAe,CAChBlE,QAAQ,EACRE,OAAO,EACPqB,MAAM,EACNgI,wBAAyB,IACzBC,uBAAwB,KAErB4E,CACX,CAxC0B,CAwCxBhP,EAAAA,sBC9ESoO,EAAkB,CACzBC,KAAM,qCACNC,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbC,QAAS,GACTC,iBAAkB,yJCTlBvG,EAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,EAAsC,WAStC,OARAA,EAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,EAASrD,MAAMlI,KAAM+H,UAChC,EASIwJ,GAA8B,SAAUtF,GAExC,SAASsF,EAAava,GAClB,IAAI+L,EAAQkJ,EAAOjJ,KAAKhD,KAAMhJ,IAAUgJ,KACxC,GAAyB,qBAAdwR,EACPA,EAAAA,gBAA0Bd,OAEzB,CACD,IAAIe,EAAU,iCAAiCtJ,OAAOuI,EAAAA,KAAsB,MAC5Ee,GAAW,wDACXA,GAAW,OAAOtJ,OAAOuI,EAAAA,iBAAkC,4BAC3DxQ,QAAQwR,KAAKD,EACjB,CACA,OAAO1O,CACX,CAiDA,OA9DA0H,EAAU8G,EAActF,GAiBxBsF,EAAavN,UAAU5K,OAAS,WAC5B,IAAI2J,EAAQ/C,KACRuM,EAAKvM,KAAKhJ,MAAOtC,EAAU6X,EAAG7X,QAASJ,EAAYiY,EAAGjY,UAAWqd,EAAKpF,EAAGqF,SAAUA,OAAkB,IAAPD,EAAgBJ,EAAanK,aAAawK,SAAWD,EAAIE,EAAKtF,EAAGpZ,KAAMA,OAAc,IAAP0e,EAAgBN,EAAanK,aAAajU,KAAO0e,EACjO,OAAQvP,EAAAA,cAAoB,MAAO,CAAEwP,IAAK9R,KAAKhJ,MAAM8a,IAAKxd,UAAW,4BACjEgO,EAAAA,cAAoB,MAAO,CAAEhO,UAAW,2BAC/BA,EAAY,IAAI6T,OAAO7T,GAAa,KACrB,SAAfnB,EAAKsD,MAAmB,GAAK,mBAAmB0R,OAAOhV,EAAKsD,SAC5Dmb,EAAW,2BAA6B,IAAKnb,MAAOuJ,KAAKhJ,MAAMP,OACpE6L,EAAAA,cAAoB,MAAO,CAAEhO,UAAW,uBACpCnB,EAAK4e,MAAQzP,EAAAA,cAAoB,OAAQ,CAAEhO,UAAW,cAAc6T,OAAOhV,EAAKsD,SAChF6L,EAAAA,cAAoB,MAAO,CAAEhO,UAAW,0BAA4B0L,KAAKhJ,MAAMpD,UAC/Ege,GAAatP,EAAAA,cAAoB,IAAKiJ,EAAS,CAAEjX,UAAW,mBAAoBC,MAjClF,QAiCsG/B,QAAS,SAAU8J,GAC3G5H,GACAA,EAAQsO,UAAKvP,EAAW,CACpBma,OAAQ7K,EACRiP,eAAgB1V,EAChB2V,YAAa3V,EAAM2V,aAG/B,GAA0B,mBAAbL,EAAyBA,EAAW,CAAC,MACtE,EAIAL,EAAapK,UAAY,CACrB7S,UAAW0Z,EAAAA,OACX4D,SAAU5D,EAAAA,UAAoB,CAACA,EAAAA,KAAgBA,EAAAA,SAC/C8D,IAAK9D,EAAAA,OACLvX,MAAOuX,EAAAA,OACP7a,KAAM6a,EAAAA,MAAgB,CAClBvX,MAAOuX,EAAAA,MAAgB,CAAC,OAAQ,UAAW,QAAS,UAAW,SAC/D+D,KAAM/D,EAAAA,OAEVtZ,QAASsZ,EAAAA,MAKbuD,EAAanK,aAAe,CACxBwK,UAAU,EACVze,KAAM,CACFsD,MAAO,OACPsb,MAAM,IAGPR,CACX,CAhEkC,CAgEhCjP,EAAAA,WClGEmI,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EAMImK,GAAmC,SAAUjG,GAE7C,SAASiG,IACL,OAAkB,OAAXjG,GAAmBA,EAAO/D,MAAMlI,KAAM+H,YAAc/H,IAC/D,CAeA,OAlBAyK,GAAUyH,EAAmBjG,GAO7BiG,EAAkBlO,UAAU5K,OAAS,WACjC,IAAImT,EAAKvM,KAAKhJ,MAAO2a,EAAKpF,EAAG9V,MAAOA,OAAe,IAAPkb,EAAgB,CAAC,EAAIA,EAAIrd,EAAYiY,EAAGjY,UACpF,OAAQgO,EAAAA,cAAoB,MAAO,CAAEhO,UAAW,wBAA0BA,EAAY,IAAI6T,OAAO7T,GAAa,IAAKmC,MAAO8U,GAAS,CAAE4G,WAAY,SAAUC,SAAU,QAAU3b,IAAUuJ,KAAKhJ,MAAMpD,SACxM,EAIAse,EAAkB/K,UAAY,CAC1B7S,UAAW0Z,EAAAA,OACXvX,MAAOuX,EAAAA,QAEJkE,CACX,CApBuC,CAoBrC5P,EAAAA,mCCnCK,SAAS+P,KAEZ,IAAMC,GAAiB7T,EAAAA,EAAAA,YAAWoD,GAAAA,GAClC,OACI,iBAAKvL,GAAIgc,GAEjB,CAMO,SAASf,GAAa,GAO5B,IANGjd,EAAS,EAATA,UACAmC,EAAK,EAALA,MAAM,EAAD,EACLtD,KAAAA,OAAI,MAAG,CAAEsD,MAAO,UAAWsb,MAAM,GAAM,MACvChQ,SAAAA,OAAQ,MAAG,WAAO,EAAC,EACnBnO,EAAQ,EAARA,SAGA,GAAwBuD,EAAAA,EAAAA,WAAkB,GAAK,eAAxCkB,EAAI,KAAEka,EAAO,KAEdrd,EAAYmD,GACd,UAACkZ,GAAiB,CACRjd,UAAAA,EAAWmC,MAAAA,EAAOtD,KAAAA,EAAI,SAC3BS,IAEL,KAiBJ,OAbAiI,EAAAA,EAAAA,YAAU,WAEN,IAAM2W,EAAY5L,YAAW,WAEzB2L,GAAQ,EACZ,GAAG,MAEH,OAAO,WAEHE,aAAaD,EACjB,CACJ,GAAG,KAGC,UAACN,GAAiB,CACd5d,UAAS,4BAAgCb,IAAbG,GAA2B,aAAc,UACrE,UAAC0d,EAAI,CAACpO,QAAM,EAACK,eAAa,EAACkJ,wBAAyB,IAAKC,uBAAwB,IAAK3K,SAlB5E,SAACzF,GAAqCyF,EAASzF,EAAQ,EAkByC,SACrGpH,KAIjB,2IC/Da2M,GAAuB7E,EAAAA,EAAAA,eAAsB,oBAE7C/I,EAA2C,SAAH,GACpD,IAD0DL,EAAQ,EAARA,SAEjDgO,GAAkBnG,EAAAA,EAAAA,IAAY,yCAAsBiX,EAAAA,EAAAA,YAAU,IAEpE,OACI,SAAC7Q,EAAqB3E,SAAQ,CAACC,MAAOyE,EAAgB,SAChDhO,GAGd,8HCRayI,EAAc,WAEvB,IAAMsW,GAAUC,EAAAA,EAAAA,MAChB,OAAO,SAACC,EAA2BC,GAE3BC,IAAAA,SAAWF,GAEPA,EAAW,EAEXF,EAAQK,SAIRL,EAAQM,YAKJ,OAAJH,QAAI,IAAJA,GAAAA,EAAM1Q,QAENuQ,EAAQvQ,QAAQyQ,GAIhBF,EAAQvD,KAAKyD,EAGzB,CACJ,EAOaK,EAAoB,WAG7B,OADmBN,EAAAA,EAAAA,MAAXO,MAEZ,4GCxCarY,EAA2B,WAEpC,OAAOsY,EAAAA,EAAAA,IAAWC,EAAAA,GAAAA,uBACtB,EAKaC,EAAiB,WAE1B,IAAMC,EAAwBzY,MAEzByY,EAAsBC,YACpBD,EAAsBE,yBACtBF,EAAsBG,kBACtBH,EAAsBI,iBAEzBJ,EAAsBK,SACtBC,WAAWhB,SAASiB,UAGxB,IAAM/Y,EAAcwY,EAAsBxY,YAE1C,GAAIA,EAEA,OAAOA,EAIP,MAAM,IAAIqF,MAAM,kFAExB,gGC3Ba2T,EAAwB,SAACjd,GAElC,IAAMkd,GAAqBZ,EAAAA,EAAAA,IAAWC,EAAAA,GAAAA,4BACtC,OAAO5X,EAAAA,EAAAA,IAAY,kBAAMuY,EAAmB5H,IAAItV,EAAc,GAClE,gGCJaI,EAAwB,SAACJ,GAElC,IAAMmd,GAA4Bb,EAAAA,EAAAA,IAAWC,EAAAA,GAAAA,4BAC7C,OAAO5X,EAAAA,EAAAA,IAAY,kBAAMwY,EAA0B7H,IAAItV,EAAc,GACzE,8LCRA,SAASod,EAAsBzC,GAC3BzR,KAAKyR,QAAUA,CAAAA,CAGnByC,EAAsBlQ,UAAY,IAAI5D,MACtC8T,EAAsBlQ,UAAU2M,KAAO,wBA6BvC,MAAkC,oBAAXlU,QACnBA,OAAO0X,MACP1X,OAAO0X,KAAKpU,KAAKtD,SA7BrB,SAAkB2X,GACd,IAAIC,EAAMlJ,OAAOiJ,GAAOhS,QAAQ,MAAO,IACvC,GAAIiS,EAAIja,OAAS,GAAK,EAClB,MAAM,IAAI8Z,EACN,qEAGR,IAEI,IAAYI,EAAIC,EAAZC,EAAK,EAAeC,EAAM,EAAGC,EAAS,GAEzCH,EAASF,EAAIzX,OAAO6X,MAEpBF,IACCD,EAAKE,EAAK,EAAS,GAALF,EAAUC,EAASA,EAG/BC,IAAO,GACVE,GAAUvJ,OAAOwJ,aAAa,IAAOL,KAAS,EAAIE,EAAM,IACzD,EAGAD,EA/BI,oEA+BWlL,QAAQkL,GAE3B,OAAOG,CAAAA,ECxBI,WAASL,GACpB,IAAIK,EAASL,EAAIjS,QAAQ,KAAM,KAAKA,QAAQ,KAAM,KAClD,OAAQsS,EAAOta,OAAS,GACpB,KAAK,EACD,MACJ,KAAK,EACDsa,GAAU,KACV,MACJ,KAAK,EACDA,GAAU,IACV,MACJ,QACI,KAAM,4BAGd,IACI,OA5BR,SAA0BL,GACtB,OAAOO,mBACHT,EAAKE,GAAKjS,QAAQ,QAAQ,SAASyS,EAAG7J,GAClC,IAAI8J,EAAO9J,EAAE+J,WAAW,GAAGxU,SAAS,IAAIyU,cAIxC,OAHIF,EAAK1a,OAAS,IACd0a,EAAO,IAAMA,GAEV,IAAMA,CAAAA,IAAAA,CAPzB,CA4BgCJ,EAEZA,CADd,MAAOO,GACL,OAAOd,EAAKO,EAAAA,CAAAA,CC5Bb,SAASQ,EAAkBzD,GAC9BzR,KAAKyR,QAAUA,CAAAA,CAGnByD,EAAkBlR,UAAY,IAAI5D,MAClC8U,EAAkBlR,UAAU2M,KAAO,wBCiDvBwE,EAYAC,ED7DuB,EAEpB,SAASC,EAAOC,GAC3B,GAAqB,iBAAVD,EACP,MAAM,IAAIH,EAAkB,2BAIhC,IAAIK,GAAAA,KADJD,EAAUA,GAAW,CAAC,GACJE,OAAkB,EAAI,EACxC,IACI,OAAOC,KAAKC,MAAMC,EAAkBN,EAAM9N,MAAM,KAAKgO,IAEO9D,CAD9D,MAAOze,GACL,MAAM,IAAIkiB,EAAkB,4BAA8BliB,EAAEye,QAAAA,CAAAA,GCyCnE,SAJW0D,GAAAA,EAAAA,EAAkB,qBAAlBA,EAAAA,EAAkB,iBAI7B,CAJWA,IAAAA,EAAkB,KAiB7B,SALWC,GAAAA,EAAAA,EAAiB,mBAAjBA,EAAAA,EAAiB,eAAjBA,EAAAA,EAAiB,mBAAjBA,EAAAA,EAAiB,mBAK5B,CALWA,IAAAA,EAAiB,KChE7B,IAAMQ,EAAUvc,+BAEHwc,EAAqB,WAQ9B,cACC,oBAPOC,aAAgC,KAAK,KAErCC,mBAA6B,cAAc,KAE3CC,YAAsB,OAI1B,IAAMX,EAAQY,aAAaC,QAAQ,GAAD,OAAIlW,KAAKgW,YAAW,YAAIC,aAAaC,QAAQlW,KAAK+V,sBAIhF/V,KAAK8V,aAFI,MAATT,EAEoBI,KAAKC,MAAML,GAIX,IAE5B,CAoOC,OApOA,iCAED,WAAqC,OAAOrV,KAAK8V,YAAc,GAAC,4DAEhE,WAAYK,EAAkBC,GAAgB,kFAUzC,OAPKC,EAAuBJ,aAAaC,QAAQ,GAAD,OAAIlW,KAAKgW,YAAW,YAAIG,IACnEG,EAA8D,MAAxBD,EAA+BZ,KAAKC,MAAMW,GAAwB,KAExGE,EAAiB,CACnBC,OAAQ,OACRC,QAAS,CAAE,eAAgB,mBAAoB,cAAgB,UAAD,OAA+B,OAAnBH,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqBjB,QAC/F7X,KAAMiY,KAAKiB,UAAU,CAAEP,SAAAA,EAAUC,SAAAA,KACnC,EAAD,OAEsBO,MAAM,GAAD,OAAIf,EAAO,iBAAiBW,GAAgB,KAAD,EAAzD,OAARK,EAAQ,gBAED5W,KAAK6W,mBAAmBD,GAAU,KAAD,mFACjD,qDAjB+D,IAiB/D,8DAED,WAAcE,GAAc,kFAUvB,OAPKT,EAAuBJ,aAAaC,QAAQ,GAAD,OAAIlW,KAAKgW,YAAW,YAAIc,IACnER,EAA8D,MAAxBD,EAA+BZ,KAAKC,MAAMW,GAAwB,KAExGE,EAAiB,CACnBC,OAAQ,OACRC,QAAS,CAAE,eAAgB,mBAAoB,cAAgB,UAAD,OAA+B,OAAnBH,QAAmB,IAAnBA,OAAmB,EAAnBA,EAAqBjB,QAC/F7X,KAAMiY,KAAKiB,UAAU,CAAEK,UAAWD,KACpC,EAAD,OAEsBH,MAAM,GAAD,OAAIf,EAAO,iBAAiBW,GAAgB,KAAD,EAAzD,OAARK,EAAQ,gBAED5W,KAAK6W,mBAAmBD,GAAU,KAAD,mFACjD,mDAjBA,IAmBD,yEAMA,WAAiCA,GAAkB,8FAE5BA,EAASI,OAAM,OAAxB,IAAJA,EAAI,QAEDvT,SAAW0R,EAAmB/U,MAAK,sBAElC,IAAIA,MAAgB,QAAX,EAAC4W,EAAKpX,aAAK,aAAV,EAAY6R,SAAS,KAAD,EAOvC,OAJIuF,EAAKC,KAAKC,WAGXlX,KAAKmX,iBAAiBH,EAAKC,MAC9B,kBAEMD,EAAKC,MAAI,gDACnB,mDAtBD,IAsBC,gEAED,WAAgBG,EAAa/B,GAAa,kFAMrC,OAJKkB,EAAiB,CACnBC,OAAQ,OACRC,QAAS,CAAE,eAAgB,mBAAoB,cAAgB,UAAD,OAAYpB,IAC1E7X,KAAMiY,KAAKiB,UAAU,CAAEU,IAAAA,KACzB,EAAD,OAEsBT,MAAM,GAAD,OAAIf,EAAO,eAAeW,GAAgB,KAAD,EAAvD,OAARK,EAAQ,gBACMA,EAASI,OAAM,OAAzB,IAAJA,EAAI,QAEDvT,SAAW0R,EAAmB/U,MAAK,sBAElC,IAAIA,MAAgB,QAAX,EAAC4W,EAAKpX,aAAK,aAAV,EAAY6R,SAAS,KAAD,EAIP,OAAjCzR,KAAKmX,iBAAiBH,EAAKC,MAAM,kBAE1BD,EAAKC,MAAI,iDACnB,qDAtBA,IAsBA,qEAED,WAAqBb,EAAkBiB,GAAwB,oFAM1D,OAJKd,EAAiB,CACnBC,OAAQ,OACRC,QAAS,CAAE,eAAgB,mBAAoB,cAAgB,UAAD,OAA4B,QAA5B,EAAYzW,KAAKjF,mBAAW,aAAhB,EAAkBsa,QAC5F7X,KAAMiY,KAAKiB,UAAU,CAAEN,SAAAA,EAAUiB,iBAAAA,KACnC,EAAD,OAEsBV,MAAM,GAAD,OAAIf,EAAO,0BAA0BW,GAAgB,KAAD,EAAlE,OAARK,EAAQ,gBACMA,EAASI,OAAM,OAAzB,IAAJA,EAAI,QAEDvT,SAAW0R,EAAmB/U,MAAK,sBAElC,IAAIA,MAAgB,QAAX,EAAC4W,EAAKpX,aAAK,aAAV,EAAY6R,SAAS,KAAD,EAIP,OAAjCzR,KAAKmX,iBAAiBH,EAAKC,MAAM,kBAE1BD,EAAKC,MAAI,iDACnB,qDAtBA,IAsBA,mEAED,oGAESjX,KAAKwT,WAAW,CAAD,qBAEV,IAAIpT,MAAM,uEAAuE,KAAD,MAGtFJ,KAAKyT,wBAAwB,CAAD,qBAEtB,IAAIrT,MAAM,oHAAoH,KAAD,EAMtI,OAHKmW,EAAiB,CACnBC,OAAQ,OACRC,QAAS,CAAE,eAAgB,mBAAoB,cAAgB,UAAD,OAA4B,QAA5B,EAAYzW,KAAKjF,mBAAW,aAAhB,EAAkBsa,SAC9F,EAAD,OAEsBsB,MAAM,GAAD,OAAIf,EAAO,sBAAsBW,GAAgB,KAAD,EAA9D,OAARK,EAAQ,iBACMA,EAASI,OAAM,QAAzB,IAAJA,EAAI,QAEDvT,SAAW0R,EAAmB/U,MAAK,uBAElC,IAAIA,MAAgB,QAAX,EAAC4W,EAAKpX,aAAK,aAAV,EAAY6R,SAAS,KAAD,GAGP,OAAjCzR,KAAKmX,iBAAiBH,EAAKC,MAAM,kBAE1BD,EAAKC,MAAI,iDACnB,kDA9BA,IA8BA,sBAED,WAEI,OAA2B,MAApBjX,KAAKjF,WAChB,GAAC,4BAED,WACC,IAAD,EACI,OAAuB,QAAhB,EAAAiF,KAAKjF,mBAAW,aAAhB,EAAkB2Y,kBAAkB,CAC/C,GAAC,yBAED,WACC,IAAD,EACI,OAAuB,QAAhB,EAAA1T,KAAKjF,mBAAW,aAAhB,EAAkBmc,aAAa,CAC1C,GAEA,mCAKA,WAEI,IAAM7B,EAAQrV,KAAKsX,iBACnB,OAAOtX,KAAKuX,eAAelC,EAC/B,GAEA,4BAKA,SAAeA,GAEX,GAAIA,EACJ,CACI,IAAMmC,EAAO,IAAIC,KAAK,GAEtB,OADAD,EAAKE,cAAcrC,EAAMsC,KAClBH,EAAO,IAAIC,IACtB,CAEA,OAAO,CACX,GAAC,4BAED,WACC,IAAD,EACI,OAAOzX,KAAK4X,SAAyB,QAAjB,EAAC5X,KAAKjF,mBAAW,aAAhB,EAAkBsa,MAC3C,GAAC,sBAED,SAASA,GAEL,OAAIA,EAEOwC,EAAqBxC,GAIrB,IAEf,GAAC,2BAED,WAEI,OAAIrV,KAAKjF,aAAeiF,KAAKjF,YAAYsa,MAE9B,CAAEyC,cAAc,UAAD,OAAY9X,KAAKjF,YAAYsa,QAI5C,CAAC,CAEhB,GAAC,oBAED,WAE6B,OAArBrV,KAAKjF,cAELiF,KAAK8V,aAAe,KACpBG,aAAa8B,WAAW/X,KAAK+V,oBAGrC,GAEA,8BAKA,SAAyBiC,GAErB/B,aAAagC,QAAQ,GAAD,OAAIjY,KAAKgW,YAAW,YAAIgC,EAAK7B,UAAYV,KAAKiB,UAAUsB,IAC5E/B,aAAagC,QAAQ,GAAD,OAAIjY,KAAK+V,oBAAsBiC,EAAK7B,UACxDnW,KAAK8V,aAAekC,CACxB,KAAC,EAxP6B,GCRnB,SAASE,EAAuBC,EAAUC,GACvD,IAAKvN,OAAO7G,UAAUiH,eAAejI,KAAKmV,EAAUC,GAClD,MAAM,IAAIlN,UAAU,kDAEtB,OAAOiN,CACT,CCLA,IAAI7hB,EAAK,EACM,SAAS+hB,EAAsB1H,GAC5C,MAAO,aAAera,IAAO,IAAMqa,CACrC,KCsBY0C,aClBNuC,EAAUvc,+BAAmC,6CAEtCif,EAAyB,WAKlC,WAAYC,EAAuCC,IAClD,iIACG,EAAAxY,KAAI,MAAuBuY,EAC3B,EAAAvY,KAAI,MAAgBwY,CACxB,CAKC,OALA,2BAED,SAAI1hB,GAEA,OAAO,IAAI2hB,EAAuB3hB,EAAc,EAACkJ,KAAI,QAAsBA,KAAI,MACnF,KAAC,EAdiC,GAerC,4DAEKyY,EAAsB,WAMxB,WAAY3hB,EAAuB4hB,EAAiCF,IACnE,0LACG,EAAAxY,KAAI,MAAkBlJ,EACtB,EAAAkJ,KAAI,MAAiB0Y,EACrB,EAAA1Y,KAAI,MAAgBwY,CACxB,CAwDC,OAxDA,yEAED,WAAkBjc,EAAaiB,EAA4Bmb,GAAyB,4FAE3D,EAAA3Y,KAAI,MAAc4Y,KAAI,YAAoB5Y,KAAI,kBAAmBzD,GAAOiB,EAAMmb,GAAa,KAAD,EAAnG,OAANvgB,EAAM,yBACLA,EAAO6e,MAAI,gDACrB,uDANA,IAMA,iEAED,WAAiB1a,EAAaiB,EAA4Bmb,GAAyB,kFAGlC,OADvCE,EAAW7Y,KAAK8Y,OAAOvc,EAAKoc,GAC5BI,EAAc/Y,KAAKgZ,eAAexb,GAAM,EAAD,OAEtB,EAAAwC,KAAI,MAAe2W,MAAMkC,EAAUE,GAAa,KAAD,EAAxD,OAARnC,EAAQ,gBACKA,EAASqC,OAAO,KAAD,EAAxB,OAAJA,EAAI,0BACFxc,OAAOyc,KAAOzc,OAAO0c,WAAWC,gBAAgBH,IAAK,gDAChE,uDAVA,IAUA,mEAED,WAAmB1c,EAAaiB,EAA4Bmb,GAAyB,8EAGpC,OADvCE,EAAW7Y,KAAK8Y,OAAOvc,EAAKoc,GAC5BI,EAAc/Y,KAAKgZ,eAAexb,GAAM,EAAD,OAEhC,EAAAwC,KAAI,MAAeqZ,SAASR,EAAUE,GAAa,KAAD,mFAClE,uDARA,IAQA,+DAED,WAAexc,EAAaiB,EAA4Bmb,GAAyB,8EAGhC,OADvCE,EAAW7Y,KAAK8Y,OAAOvc,EAAKoc,GAC5BI,EAAc/Y,KAAKgZ,eAAexb,GAAM,EAAD,OAEhC,EAAAwC,KAAI,MAAetD,KAAKmc,EAAUE,GAAa,KAAD,mFAC9D,uDARA,IAQA,oBAED,SAAexc,EAAaoc,GAExB,OAAIA,GAEOW,EAAAA,EAAAA,IAAkB,GAAD,OAAI1D,GAAO,SAAG5V,KAAI,kBAAmBzD,GAAOoc,GAI9D,GAAN,OAAU/C,GAAO,SAAG5V,KAAI,kBAAmBzD,EAEnD,GAAC,4BAED,SAAuBiB,GAEnB,OAAIA,IAAQ+b,EAAAA,EAAAA,IAAW/b,GAEZ,CAAEgZ,OAAQ,OAAQhZ,KAAAA,GAIlB,CAAEgZ,OAAQ,OAAQhZ,KAAMA,EAAOiY,KAAKiB,UAAUlZ,QAAQ/J,EAAWgjB,QAAS,CAAE,OAAU,mBAAoB,eAAgB,oBAEzI,KAAC,EAnEuB,0ECXf+C,EAAsB,SAAC7Z,GAA8B,OAC9D8Z,EAAAA,EAAAA,IAAyBC,EAAY/Z,GAAQ,EA8C3C+Z,EAAc,SAAdA,EAAeC,GAEjB,IAAIC,EAAAA,EAAAA,QAAOD,GAGP,OArBYnC,EAqBMmC,EApBtB,IAAIlC,KACAD,EAAKqC,iBACLrC,EAAKsC,cACLtC,EAAKuC,aACLvC,EAAKwC,cACLxC,EAAKyC,gBACLzC,EAAK0C,gBACL1C,EAAK2C,sBARM,IAAC3C,EAwBhB,IAAKmC,KAAYA,aAAkB9O,QAE/B,OAAO8O,EAGX,IAAMS,GAAYhlB,EAAAA,EAAAA,SAAQukB,IAAO,OAAOA,IAAM,UAASA,GAEvD,IAAK,IAAMtL,KAAO+L,EAClB,CACI,IAAMjd,EAAQid,EAAU/L,GAExB+L,EAAU/L,GAAOqL,EAAYvc,EACjC,CAEA,OAAOid,CACX,ECxEaC,EAAqB,SAArBA,EAAiC7mB,GAE1C,IAAM4E,EAAS2a,IAAAA,UAAYvf,GACrB8mB,EAAsD,GAC5D,IAAK,IAAMjM,KAAOjW,EAClB,CACI,IAAM+E,EAAQ/E,EAAOiW,GAChBkM,EAAcpd,KAEf/E,EAAOiW,GAAOgM,EAAmBld,IAErC,IAAMqd,EAAgBC,EAAqBpM,GAC3CiM,EAA+BlL,KAAKoL,EACxC,CACA,OAAO,kBACApiB,GAAM,IACTkiB,+BAAAA,GAER,EAOMG,EAAuB,SAAmBpG,GAE5C,OAAKA,EAIEA,EAAIzX,OAAO,GAAGoY,cAAgBX,EAAIqG,MAAM,GAFpCrG,CAGf,EAOMkG,EAAgB,SAACpd,GAEnB,QAAIA,aAAiB0N,SAAW1V,MAAMC,QAAQ+H,KAAW4V,IAAAA,OAAS5V,GAKtE,ECpDwE,mBAO3Dwd,EAAyB,WAIlC,WAAYnC,IACX,wEACG,EAAAxY,KAAI,MAAgBwY,CACxB,CAKC,OALA,2BAED,SAAI1hB,GAEA,OAAO,IAAI8jB,EAAuB9jB,EAAc,EAACkJ,KAAI,MACzD,KAAC,EAZiC,GAarC,wCAEY4a,EAAsB,WAK/B,WAAY9jB,EAAuB0hB,IAClC,iIACG,EAAAxY,KAAI,MAAkBlJ,EACtB,EAAAkJ,KAAI,MAAgBwY,CACxB,CA6HA,OA7HC,2BAMD,SAAOjc,EAAase,EAA2DC,GAE3E,OAAIC,EAAAA,EAAAA,UAASF,KAAW5kB,EAAAA,EAAAA,UAAS4kB,GAEtB7a,KAAKgb,WAAcze,EAAKse,EAAQC,QAEvBrnB,IAAXonB,IAAwBI,EAAAA,EAAAA,IAAkBJ,GAExC7a,KAAKkb,KAAQ3e,EAAKse,QAETpnB,IAAXqnB,IAAwBG,EAAAA,EAAAA,IAAkBH,GAExC9a,KAAKkb,KAAQ3e,EAAKue,EAAQD,QAEjBpnB,IAAXonB,QAAmCpnB,IAAXqnB,EAEtB9a,KAAKmb,KAAQ5e,GAIbyD,KAAKmb,KAAQ5e,EAAKse,EAEjC,GAEA,2DAEA,WAAsBte,EAAa6e,GAAoB,8FAE5B,EAAApb,KAAI,MAAcoM,IAAG,YAAwBpM,KAAI,kBAAmBzD,GAAO6e,GAAQ,KAAD,EAA7F,OAA6F,SAAjGnE,EAAI,EAAJA,KAAI,kBAELA,GAAI,gDACd,qDAPD,IAOC,iEAED,WAA4B1a,EAAa8e,EAAyBD,GAAoB,8FAE3D,EAAApb,KAAI,MAAcoM,IAAG,YAAwBpM,KAAI,kBAAmBzD,IAAG,QAAMuY,KAAMuG,GAAWD,IAAU,KAAD,EAAlH,OAAkH,SAAtHnE,EAAI,EAAJA,KAAI,kBAELA,GAAI,gDACd,uDAPA,IAOA,2DAED,WAAsB1a,EAAa+e,EAAiC3C,GAAyB,gFAEiC,OAApH4C,EAAgBD,GAAiB/e,EAAI8M,QAAQ,KAAO,EAAI,IAAM,MFxDlC1J,EEwDmE2b,GFvDzGE,EAAAA,EAAAA,IAA+B9B,EAAY/Z,KEuD+E,GAAI,SAE3F,EAAAK,KAAI,MAAcoM,IAAG,YAA4CpM,KAAI,kBAAmBzD,GAAG,OAAGgf,GAAiB5C,GAAa,KAAD,EAA9I,GAA8I,WAA5IvgB,EAAM,EAAZ6e,MAEGwE,OAAO,CAAD,qBAEP,IAAIrb,MAAMhI,EAAOqjB,QAAQ,KAAD,2BAG3BrjB,GAAM,iCFjEoB,IAACuH,CEiErB,eAChB,uDAdA,IAcA,6DAED,WAA0DpD,EAAa0a,GAAoB,gFAKlE,OAHf4B,EAAQ,YAAM7Y,KAAI,kBAAmBzD,UAErCmf,GAAK,UAAQzE,IACNoE,OAAQ,SAEF,EAAArb,KAAI,MAAc4Y,KAAsDC,EAAUwB,EAAmBqB,IAAQ,KAAD,EAArH,IAAJ1E,EAAI,QAED5e,SAAWujB,EAAAA,EAAAA,GAAyB,sBAEnC,IAAIvb,MAAM4W,EAAK4E,kBAAkB,KAAD,2BAGnC5E,GAAI,gDACd,qDAjBA,IAiBA,6DAED,WAA2Dza,EAAa0a,GAAqB,gGAE9C,EAAAjX,KAAI,MAAc6b,IAAG,YAAuD7b,KAAI,kBAAmBzD,GAAO8d,EAAmBpD,IAAO,KAAD,EAA9I,GAA8I,SAAtK7e,EAAM,EAANA,OAAQwjB,EAAgB,EAAhBA,iBAEZxjB,IAAWujB,EAAAA,EAAAA,GAAyB,sBAE9B,IAAIvb,MAAMwb,GAAkB,KAAD,2CAExC,qDAVA,IAUA,2DAGD,WAAcrf,EAAaiB,GAAiB,8FAEjB,EAAAwC,KAAI,MAAc4Y,KAAI,YAAwB5Y,KAAI,kBAAmBzD,GAAOiB,GAAM,KAAD,EAA5F,OAA4F,SAAhGyZ,EAAI,EAAJA,KAAI,kBAELA,GAAI,gDACd,qDARA,IAQA,0DAED,WAAa1a,EAAaiB,GAAiB,8FAEhB,EAAAwC,KAAI,MAAc6b,IAAG,YAAwB7b,KAAI,kBAAmBzD,GAAO8d,EAAmB7c,IAAO,KAAD,EAA/G,OAA+G,SAAnHyZ,EAAI,EAAJA,KAAI,kBAELA,GAAI,gDACd,qDAPA,IAOA,6DAID,WAAgB1a,EAAase,EAAmDC,GAAgC,mFAExGC,EAAAA,EAAAA,UAASF,MAAW5kB,EAAAA,EAAAA,UAAS4kB,GAAO,yCAE7B7a,KAAK8b,cAAsDvf,EAAKse,EAAQC,IAAO,uBAI/D,EAAA9a,KAAI,MAAc+b,OAAM,YAAoB/b,KAAI,kBAAmBzD,GAAOse,GAAQ,KAAD,EAA5F,OAA4F,SAAhG5D,EAAI,EAAJA,KAAI,kBAELA,GAAI,gDAElB,uDAhBA,IAgBA,oEAED,WAAkE1a,EAAa8e,EAAyB1C,GAAyB,sFAEvH,EAAA3Y,KAAI,MAAc+b,OAAM,YAAkD/b,KAAI,kBAAmBzD,IAAG,QAAMuY,KAAMuG,GAAW1C,IAAe,KAAD,4EAGlJ,uDAPA,MASD,EAtI+B,GC3BtBqD,EAAwB,WAIjC,WAAYC,IACX,oBAHMA,wBAAkB,EAIrBjc,KAAKic,mBAAqBA,CAC9B,CAKC,OALA,kCAED,SAAoBC,GAEhB,OAAO,IAAIF,EAAyBE,EAAQ7hB,KAAI,SAAA8hB,GAAC,MAAK,CAAE9N,IAAK8N,EAAE9N,IAAK+N,cAAeD,EAAEC,cAAc/hB,KAAI,SAAAgiB,GAAC,MAAK,CAAEhO,IAAKgO,EAAEhO,IAAK,IAAK,IACpI,KAAC,EAZgC,GCcc,2CAEtCiO,EAAyB,WAKlC,WAAY9D,EAA2B+D,IACtC,iIACG,EAAAvc,KAAI,MAAgBwY,EACpB,EAAAxY,KAAI,MAAqBuc,CAC7B,CAKC,OALA,2BAED,SAAIzlB,GAEA,OAAO,IAAI0lB,GAAuB1lB,EAAc,EAACkJ,KAAI,QAAeA,KAAI,MAC5E,KAAC,EAdiC,GAerC,iEAEKwc,GAAsB,WAMxB,WAAY1lB,EAAuB0hB,EAA2B+D,IAC7D,2LACG,EAAAvc,KAAI,MAAkBlJ,EACtB,EAAAkJ,KAAI,MAAgBwY,EACpB,EAAAxY,KAAI,QAAqBuc,CAC7B,CAoIA,OApIC,oEAED,WAAaE,EAAsDC,GAAsE,2FAEjIzmB,EAAAA,EAAAA,UAASwmB,GAAoB,CAAD,gBAGkB,OADxClgB,EAAMkgB,EACN9D,EAAc+D,EAA0B,SAEvB,EAAA1c,KAAI,MAAcoM,IAAG,YAAoBpM,KAAI,kBAAmBzD,GAAOoc,GAAa,KAAD,EAA9F,OAA8F,SAAlG1B,EAAI,EAAJA,KAAI,kBAELA,GAAI,QAKqC,GAA1CmF,EAAgBM,EAED,OAHfpB,EAAgBmB,GAGG,0CAEdzc,KAAK2c,UAAUrB,EAAec,IAAc,iCAI5Cpc,KAAK4c,eAAa,iDAGpC,qDA3BA,IA2BA,kEAED,oGAWK,OAXkBrX,EAAM,EAANA,OAAQ0W,EAAkB,EAAlBA,mBAAoBhF,EAAI,EAAJA,KAAM4F,EAAU,EAAVA,WAE/CC,EAAWC,KAAKC,iBAAiBC,kBAAkBH,SACnDtf,EAAiB,CACnB+H,QAAO,kBACAA,GAAM,IACTuX,SAAAA,IAEJ7F,KAAAA,EACA4F,WAAYrD,EAAoBqD,GAChCZ,mBAAoBA,EAAqBD,EAAyBkB,MAAMjB,GAAsB,MAChG,EAAD,OAEKjc,KAAKqZ,SAAS,cAAe7b,GAAM,KAAD,2CAC3C,mDAhBA,IAgBA,+DAED,WAAejB,EAAaiB,GAAe,4EAMtC,OAJKub,EAA4B,CAC9BvC,OAAQ,OACRhZ,KAAMA,EAAOiY,KAAKiB,UAAUlZ,QAAQ/J,EACpCgjB,QAAS,CAAE,OAAU,mBAAoB,eAAgB,qBAC3D,EAAD,OACK,EAAAzW,KAAI,QAAmBqZ,SAAS,GAAD,OAlF7BhgB,gCAkFwC,SAAG2G,KAAI,kBAAmBzD,GAAOwc,GAAa,KAAD,2CAChG,qDAVA,IAYD,kEACA,6FAE4B,OAAlBoE,EAAQ,YAAMnd,KAAI,uBACK,EAAAA,KAAI,MAAc4Y,KAAI,UAAsCuE,IAAY,KAAD,EAAxF,OAAwF,SAAtFnG,EAAI,EAAVC,KAAI,kBAEL,CACHA,KAAMD,EAAKC,KACXmG,MAAOpG,EAAKoG,QACf,gDACJ,kDAVD,IAUC,gEAED,WAA2B9B,EAAuCc,GAA2C,4FAMpD,OAJ/CiB,EAAY/B,EAAcgC,OAAShC,EAAcgC,MAAMljB,OACvD+iB,EAAQ,YAAMnd,KAAI,kBAClBic,EAAqBG,EAAgBJ,EAAyBkB,MAAMd,GAAiB,KAErFS,EAAarD,EAAoB8B,GAAe,EAAD,OAExB,EAAAtb,KAAI,MAAc4Y,KAC3CuE,EACA,CACIN,WAAAA,EACAZ,mBAAAA,IACD,KAAD,EALM,GAKN,WALQjF,EAAI,EAAVC,MAOCwE,OAAO,CAAD,sBAEL,IAAIrb,MAAM4W,EAAKyE,QAAQ,KAAD,GAOuE,GAFjGxE,EAAOoG,GAAaE,EAAAA,EAAAA,IAAgCvG,EAAKC,MAAgCD,EAAKC,KAC9FmG,EAAQpG,EAAKoG,QACbI,EAAYxG,EAAKyG,kBAAmBC,EAAAA,EAAAA,IAA0B1G,EAAKyG,uBAAoBhqB,MAE5EkqB,EAAAA,EAAAA,IAAmB1G,GAAK,0CAE9B,CACHA,KAAAA,EACAmG,MAAAA,EACAI,UAAAA,IACH,iCAIM,CACHvG,KAAAA,EACAmG,MAAAA,IACH,iDAER,qDA3CA,IA8CD,2DAEA,WAAc7gB,EAAa0a,EAAiB0B,GAAyB,8FAElC,EAAA3Y,KAAI,MAAc4Y,KAAI,YAAoB5Y,KAAI,kBAAmBzD,GAAO0a,EAAM0B,GAAa,KAAD,EAA7G,OAA6G,SAA3GvgB,EAAM,EAAZ6e,KAAI,kBACL7e,GAAM,gDAChB,uDAND,IAMC,0DAED,WAAamE,EAAa0a,EAAiB0B,GAAyB,8FAEjC,EAAA3Y,KAAI,MAAc6b,IAAG,YAAoB7b,KAAI,kBAAmBzD,GAAO8d,EAAmBpD,GAAO0B,GAAa,KAAD,EAAhI,OAAgI,SAA9HvgB,EAAM,EAAZ6e,KAAI,kBAEL7e,GAAM,gDAChB,uDAPA,IAOA,6DAED,WAAgBmE,EAAaoc,GAAyB,8FAE3B,EAAA3Y,KAAI,MAAc+b,OAAM,YAAoB/b,KAAI,kBAAmBzD,GAAOoc,GAAa,KAAD,EAAjG,OAAiG,SAArG1B,EAAI,EAAJA,KAAI,kBAELA,GAAI,gDACd,qDAPA,MAQD,EA/IwB,GChCkD,oBAKjE2G,GAA2B,WAIpC,WAAYpF,IACX,yEACG,EAAAxY,KAAI,QAAgBwY,CACxB,CAKC,OALA,2BAED,SAAI1hB,GAEA,OAAO,IAAI+mB,GAAyB/mB,EAAc,EAACkJ,KAAI,QAC3D,KAAC,EAZmC,GAavC,0CAEK6d,GAAwB,WAK1B,WAAY/mB,EAAuB0hB,IAClC,mIACG,EAAAxY,KAAI,QAAkBlJ,EACtB,EAAAkJ,KAAI,QAAgBwY,CACxB,CAqGC,OArGA,qFAED,+GAEqD,EAAAxY,KAAI,QAAcoM,IAAG,YAAuCpM,KAAI,kCAAwC,KAAD,EAAlH,GAAkH,SAAhJyD,EAAM,EAANA,OAAQwT,EAAI,EAAJA,KAAM2E,EAAgB,EAAhBA,iBAEP,IAAXnY,EAAY,sBAEN,IAAIrD,MAAMwb,GAAkB,KAAD,2BAG9B3E,GAAI,gDACd,kDAZA,IAYA,0EAED,WACI6G,EACA1B,GAA0C,gFAEgD,OAApF2B,EAAoB3B,GAAiBJ,EAAyBkB,MAAMd,GAAgB,SAEnE,EAAApc,KAAI,QAAcoM,IAAG,YAA0DpM,KAAI,gCACtG,CACI8d,MAAAA,EACAE,yBAA0BC,KAAKxI,KAAKiB,UAAUqH,MAC/C,KAAD,EAJM,OAIN,SAJE9G,EAAI,EAAJA,KAAI,kBAMLA,GAAI,gDACd,qDAfA,IAeA,gEAED,WAAgBnC,GAAY,kGAEyB,EAAA9U,KAAI,QAAcoM,IAAG,YAA6CpM,KAAI,sBAA6B,CAAE8U,KAAAA,IAAQ,KAAD,EAAvH,GAAuH,SAArJ1c,EAAM,EAANA,OAAQwjB,EAAgB,EAAhBA,iBAAkB3E,EAAI,EAAJA,KAE9B7e,IAAWujB,EAAAA,EAAAA,GAAyB,sBAE9B,IAAIvb,MAAMwb,GAAkB,KAAD,2BAG9B3E,GAAI,gDACd,mDAZA,IAYA,mEAED,WAAmBA,GAA4B,4FAEtB,EAAAjX,KAAI,QAAc4Y,KAAI,YAAmC5Y,KAAI,yBAAgCiX,GAAM,KAAD,EAA3G,IAAN7e,EAAM,QAEDA,SAAWujB,EAAAA,EAAAA,GAAyB,sBAErC,IAAIvb,MAAMhI,EAAOwjB,kBAAkB,KAAD,2BAGrCxjB,EAAO0c,MAAI,gDACrB,mDAZA,IAYA,mEAED,WAAmBmC,GAA4B,4FAEtB,EAAAjX,KAAI,QAAc6b,IAAG,YAAmC7b,KAAI,yBAAgCiX,GAAM,KAAD,EAA1G,IAAN7e,EAAM,QAEDA,SAAWujB,EAAAA,EAAAA,GAAyB,sBAErC,IAAIvb,MAAMhI,EAAOwjB,kBAAkB,KAAD,2CAE/C,mDAVA,IAUA,mEAED,WAAmB9G,GAAY,4FAEN,EAAA9U,KAAI,QAAc+b,OAAM,YAAmC/b,KAAI,yBAAgC,CAAE8U,KAAAA,IAAQ,KAAD,EAAjH,IAAN1c,EAAM,QAEDA,SAAWujB,EAAAA,EAAAA,GAAyB,sBAErC,IAAIvb,MAAMhI,EAAOwjB,kBAAkB,KAAD,2CAE/C,mDAVA,IAUA,2EAED,WAA2B9G,GAAY,4FAEd,EAAA9U,KAAI,QAAc4Y,KAAI,YAAmC5Y,KAAI,iCAAwC,CAAE8U,KAAAA,IAAQ,KAAD,EAAvH,IAAN1c,EAAM,QAEDA,SAAWujB,EAAAA,EAAAA,GAAyB,sBAErC,IAAIvb,MAAMhI,EAAOwjB,kBAAkB,KAAD,2CAE/C,mDAVA,IAUA,2EAED,WAA2B9G,GAAY,4FAEd,EAAA9U,KAAI,QAAc+b,OAAM,YAAmC/b,KAAI,iCAAwC,CAAE8U,KAAAA,IAAQ,KAAD,EAAzH,IAAN1c,EAAM,QAEDA,SAAWujB,EAAAA,EAAAA,GAAyB,sBAErC,IAAIvb,MAAMhI,EAAOwjB,kBAAkB,KAAD,2CAE/C,mDAVA,IAUA,0EAED,WAA0BsC,GAAoE,4FAErE,EAAAle,KAAI,QAAc6b,IAAG,YAAmC7b,KAAI,gCAAwCke,GAAQ,KAAD,EAApH,IAAN9lB,EAAM,QAEDA,SAAWujB,EAAAA,EAAAA,GAAyB,sBAErC,IAAIvb,MAAMhI,EAAOwjB,kBAAkB,KAAD,2CAE/C,mDAVA,MAUA,EA9GyB,0BChBxBuC,GAAmB9kB,qCAA6C,yBAEzD+kB,GAAwB,WAIjC,WAAY7B,IACX,yEACG,EAAAvc,KAAI,QAAqBuc,CAC7B,CAyBC,OAzBA,2EAED,WAAiBhgB,EAAaiB,GAA6B,8FAEvD,IAAW6Q,KAF8CgL,EAAiB,gCAExD7b,EAAK6gB,gBAEnB7gB,EAAK6gB,gBAAgBhQ,GAAOiQ,KAAAA,OAAc7I,KAAKiB,UAAUlZ,EAAK6gB,gBAAgBhQ,KAShF,GANIwK,EAAQ,UAAMsF,IAAgB,OAAG5hB,EAAG,cAEpCwc,EAA2B,CAC7BvC,OAAQ,OACRhZ,KAAMA,EAAOiY,KAAKiB,UAAUlZ,QAAQ/J,EACpCgjB,QAAS,CAAE,eAAgB,mBAAoB,2BAA8B,UAG7E4C,EAAS,CAAD,gCAEK,EAAArZ,KAAI,QAAmBqZ,SAASR,EAAUE,GAAa,KAAD,EAIH,KAAD,oCAJI,yBAItD,EAAA/Y,KAAI,QAAmBtD,KAAKmc,EAAUE,GAAY,iDAEtE,qDAzBA,MAyBA,EAhCgC,eCTkC,oBAU1DwF,GAA6B,WAItC,WAAY/F,IACX,yEACG,EAAAxY,KAAI,QAAgBwY,CACxB,CAKC,OALA,2BAED,SAAI1hB,GAEA,OAAO,IAAI0nB,GAA2B1nB,EAAc,EAACkJ,KAAI,QAC7D,KAAC,EAZqC,GAazC,0CAEKwe,GAA0B,WAK5B,WAAY1nB,EAAuB0hB,IAClC,mIACG,EAAAxY,KAAI,QAAkBlJ,EACtB,EAAAkJ,KAAI,QAAgBwY,CACxB,CAuCA,OArCA,oEAGA,WAAkDjc,EAAakiB,EAAuDC,GAA2C,sFAUzC,OAR9GpD,EAAgBoD,GAEhBD,EAEA9F,EAAc+F,EAAwB,WACpC7T,OAAO8T,QAAQF,GAAsCG,QAAO,SAAC9P,EAAK,GAAD,oBAAGT,EAAG,KAAElR,EAAK,qBAAS2R,GAAI,OAAGT,EAAG,YAAIlR,EAAK,OAAK,KACjH,GAEAoe,GAAiB5C,GAAepc,EAAI8M,QAAQ,KAAO,EAAI,IAAM,MAAOwV,EAAAA,EAAAA,IAA0BvD,GAAgB,SAErF,EAAAtb,KAAI,QAAcoM,IAAG,YAAyDpM,KAAI,oBAAmBzD,GAAG,OAAGoc,GAAW,OAAG4C,IAAiB,KAAD,EAA5J,GAA4J,WAA1JnjB,EAAM,EAAZ6e,MAEGwE,OAAO,CAAD,qBAEP,IAAIrb,MAAMhI,EAAOqjB,QAAQ,KAAD,EAW/B,OAPGxE,EAAO7e,EAAO6e,KAAK5c,KAAoB,SAAArH,GAEzC,OAAO,kBACAA,GAAC,IAEJ8rB,aAAuBrrB,IAAdT,EAAE8rB,SAAwB9rB,EAAE8rB,SAE7C,IAAE,qCAGK1mB,GAAM,IACT6e,KAAAA,KAAI,iDAEX,uDApCD,MAqCA,EAhD4B,iCCpBnB8H,GAAgB,WAIzB,WAAYxL,IACX,yEACG,EAAAvT,KAAI,QAA0BuT,CAClC,CAmKC,OAhKD,yEACA,WAAehX,EAAkBxE,GAA6B,sGAEnCiI,KAAK2W,MAAMpa,EAAKxE,GAAM,KAAD,EAA9B,OAAR6e,EAAQ,gBACKA,EAASqC,OAAO,KAAD,EAA5BA,EAAI,OACJ+F,GAAWviB,OAAOyc,KAAOzc,OAAO0c,WAAWC,gBAAgBH,IAE3DgG,EAAenmB,SAASomB,cAAc,MAC/BzoB,MAAMC,QAAU,OAC7BuoB,EAAaE,KAAOH,GAEdI,EAAqBxI,EAASH,QAAQrK,IAAI,0BAItCiT,EADgB,yCACoBC,KAAKF,MAI3CH,EAAa5F,SAAWkG,UAAUF,EAAoB,GAAGjd,QAAQ,QAAS,MAIlFtJ,SAAS0E,KAAKgiB,YAAYP,GAC1BA,EAAaQ,QACb3mB,SAAS0E,KAAKkiB,YAAYT,IAEzBxiB,OAAOyc,KAAOzc,OAAO0c,WAAWwG,gBAAgBX,GAAS,iDAC7D,qDA5BD,IA+BA,2DACA,WAAWziB,EAAkBxE,GAA6B,kGAE/BiI,KAAK2W,MAAMpa,EAAKxE,GAAM,KAAD,EAA9B,OAAR6e,EAAQ,gBACKA,EAASqC,OAAO,KAAD,EAA5BA,EAAI,OACJ+F,GAAWviB,OAAOyc,KAAOzc,OAAO0c,WAAWC,gBAAgBH,IAE3D2G,EAAYnjB,OAAOC,KAAK,GAAI,aAG9BkjB,EAAU/M,SAASsM,KAAOH,EAC1BY,EAAUC,QAAU,kBAAOpjB,OAAOyc,KAAOzc,OAAO0c,WAAWwG,gBAAgBX,EAAS,GACvF,gDACJ,qDAbD,IAaC,4KAED,WAAYziB,EAAkBxE,GAA6B,sFAKvD,OAHMghB,EAA+B,OAAJhhB,QAAI,IAAJA,EAAAA,EAAQ,CAAC,GAC9B0e,SAAO,kBAAQsC,EAAYtC,SAAY,EAAAzW,KAAI,QAAwB8f,iBAE/E,SAC2B/jB,QAAQgkB,IAAI,CAACpJ,MAAMpa,EAAKwc,GAAc/Y,KAAKggB,iBAAiB,KAAD,EAAvE,GAAuE,0BAA/EpJ,EAAQ,MAEDqJ,GAAG,CAAD,oBAG4B,IAApC,CAAC,KAAK5W,QAAQuN,EAASnT,QAAc,iBAGvB,OAAdzD,KAAK4T,SAAS,kBAEP,IAAI7X,SAAkB,SAACC,GAE1B4K,YAAW,kBAAM5K,EAAQ4a,EAAS,GAAE,IACxC,KAAE,YAGuC,IAApC,CAAC,KAAKvN,QAAQuN,EAASnT,QAAc,iBAGH,OAAvCoQ,WAAWhB,SAASzQ,QAAQ,WAAW,kBAEhC,IAAIrG,SAAkB,SAACC,GAE1B4K,YAAW,kBAAM5K,EAAQ4a,EAAS,GAAE,IACxC,KAAE,yBAKmCA,EAASI,OAAO,KAAD,GAAxB,MAAtB/B,EAAsB,OACtB,IAAI7U,OAAe,QAAT,EAAA6U,EAAIrV,aAAK,aAAT,EAAW6R,UAAWwD,EAAI2G,kBAAoBhF,EAASsJ,YAAY,KAAD,4BAGnFtJ,GAAQ,iDAClB,qDA1CA,KA4CD,mEAUA,6FAGkD,GADxCuJ,EAAcngB,KAAKogB,qBACnBC,EAAcrgB,KAAKsgB,qBACpBH,GAAgBE,EAAW,gBAG5B,MADArgB,KAAK4T,SAEC,IAAIxT,MAAM,kBAAkB,KAAD,EAGrC,GADMmgB,EAAMC,GAAYL,EAAaE,KAEjCG,GAAYL,EAAa,IAAI1I,OAAW8I,EAAM,GAAK,GAAK,KAAG,2CAIjD,EAAAvgB,KAAI,QAAwBggB,eAAe,KAAD,2BAKhD,MALgD,0BAIhDhgB,KAAK4T,SAEC,IAAIxT,MAAM,EAAD,IAAM,KAAD,qDAG/B,kDAnCD,IAmCC,oBAED,WAGI,EAAAJ,KAAI,QAAwB4T,SAC5BC,WAAWhB,SAASiB,QACxB,GAAC,gCAED,WAEI,IAAMuB,EAAQ,EAAArV,KAAI,QAAwBsX,iBAC1C,GAAIjC,EACJ,CACI,IAAMmC,EAAO,IAAIC,KAAK,GAEtB,OADAD,EAAKE,cAAcrC,EAAMsC,KAClBH,CACX,CAGI,OAAO,IAEf,GAAC,gCAED,WAEI,IAAMnC,EAAQ,EAAArV,KAAI,QAAwBsX,iBAC1C,GAAIjC,EACJ,CACI,IAAMmC,EAAO,IAAIC,KAAK,GAEtB,OADAD,EAAKE,cAAcrC,EAAMoL,KAClBjJ,CACX,CAGI,OAAO,IAEf,KAAC,EA1KwB,GA6KvBgJ,GAAc,SAACE,EAAWC,GAE5B,IAAIC,GAAQF,EAAIG,UAAYF,EAAIE,WAAa,IAE7C,OADAD,GAAQ,GACDE,KAAKC,IAAID,KAAKE,MAAMJ,GAC/B,cC5KaK,GAAU,6CAQXC,UAAY,IAAI7e,OAAO,uFAAwF,CA6BtH,OA7BqH,8BAEtH,SAAiBsX,GAEb,GAAKA,GAAYA,aAAkB9O,OAKnC,IAAK,IAAMwD,KAAOsL,EAClB,CACI,IAAMxc,EAAQwc,EAAOtL,GACjBlR,aAAiB0N,QAEjB7K,KAAKmhB,OAAOhkB,GAGK,kBAAVA,GAAsB6C,KAAKkhB,UAAUE,KAAKjkB,KAE7CA,EAAMkkB,SAAS,eAAiBlkB,EAAMkkB,SAAS,kBAE/C1H,EAAOtL,GAAO,IAAIiT,GAAAA,EAASnkB,GAI3Bwc,EAAOtL,GAAO,IAAIkT,GAAAA,EAASpkB,GAGvC,CACJ,KAAC,EArCkB,GAwCVqkB,GAAa,6CAEdC,WAAuB,CAAC,IAAIR,GAAc,CAejD,OAfgD,8BASjD,SAAiBhK,GAEbjX,KAAKyhB,WAAWja,SAAQ,SAAAkE,GAEpBA,EAAEyV,OAAOlK,EACb,GACJ,KAAC,EAjBqB,GC5CpBrB,GAAUvc,+BAEHqoB,GAAe,WAKxB,WAAYnF,IACX,oBAJOoF,cAAgB,IAAIH,GAAgB,KACpCjF,sBAAgB,EAIpBvc,KAAKuc,iBAAmBA,CAC5B,CAqGA,OArGC,oEAED,WAA6ChgB,EAAaoc,GAAyB,oFAIQ,OAFjFiJ,GAAWtI,EAAAA,EAAAA,IAAkB,GAAD,OAAK1D,IAAO,OAAGrZ,GAAOoc,GAElD5gB,EAAqB,CAAEye,OAAQ,MAAOC,QAAS,CAAE,OAAU,qBAAuB,EAAD,OAEhEzW,KAAKuc,iBAAiB5F,MAAMiL,EAAU7pB,GAAM,KAAD,EAApD,OAAR6e,EAAQ,gBACKA,EAASI,OAAM,OAAxB,IAAJA,EAAI,QAEDvT,SAAW0R,EAAmB/U,MAAK,uBAElC,IAAIA,MAAgB,QAAX,EAAC4W,EAAKpX,aAAK,aAAV,EAAY6R,SAAS,KAAD,OAGpCuF,EAAKpX,MAAM,CAAD,sBAEJ,IAAIQ,MAAM4W,EAAKpX,MAAM6R,SAAS,KAAD,GAGF,OAArCzR,KAAK2hB,cAAcR,OAAOnK,EAAKC,MAAM,kBAE9BD,GAAI,iDACd,qDAxBA,IAwBA,2DAGD,WAA8Cza,EAAaiB,EAAiBmb,GAAyB,oFAgBhG,OAXGnb,IAAQ+b,EAAAA,EAAAA,IAAW/b,IAEnBokB,EAAQ,UAAMhM,IAAO,OAAGrZ,GAExBxE,EAAO,CAAEye,OAAQ,OAAQhZ,KAAMA,KAI/BokB,GAAWtI,EAAAA,EAAAA,IAAkB,GAAD,OAAI1D,IAAO,OAAGrZ,GAAOoc,GAEjD5gB,EAAO,CAAEye,OAAQ,OAAQhZ,KAAMA,EAAOiY,KAAKiB,UAAUlZ,QAAQ/J,EAAWgjB,QAAS,CAAE,OAAU,mBAAoB,eAAgB,sBACpI,SAEsBzW,KAAKuc,iBAAiB5F,MAAMiL,EAAU7pB,GAAM,KAAD,EAApD,OAAR6e,EAAQ,gBACKA,EAASI,OAAO,KAAD,EAAxB,IAAJA,EAAI,QAEDvT,SAAW0R,EAAmB/U,MAAK,sBAElC,IAAIA,MAAgB,QAAX,EAAC4W,EAAKpX,aAAK,aAAV,EAAY6R,SAAS,KAAD,EAGH,OAArCzR,KAAK2hB,cAAcR,OAAOnK,EAAKC,MAAM,kBAE9BD,GAAI,iDACd,uDAhCA,IAgCA,0DAED,WAA6Cza,EAAaiB,EAAiBmb,GAAyB,oFAI0E,OAFpKiJ,GAAWtI,EAAAA,EAAAA,IAAkB,GAAD,OAAK1D,IAAO,OAAGrZ,GAAOoc,GAElD5gB,EAAqB,CAAEye,OAAQ,MAAOhZ,KAAMA,EAAOiY,KAAKiB,UAAUlZ,QAAQ/J,EAAWgjB,QAAS,CAAE,OAAU,mBAAoB,eAAgB,qBAAuB,EAAD,OAEnJzW,KAAKuc,iBAAiB5F,MAAMiL,EAAU7pB,GAAM,KAAD,EAApD,OAAR6e,EAAQ,gBACKA,EAASI,OAAM,OAAxB,IAAJA,EAAI,QAEDvT,SAAW0R,EAAmB/U,MAAK,uBAElC,IAAIA,MAAgB,QAAX,EAAC4W,EAAKpX,aAAK,aAAV,EAAY6R,SAAS,KAAD,GAGH,OAArCzR,KAAK2hB,cAAcR,OAAOnK,EAAKC,MAAM,kBAE9BD,GAAI,iDACd,uDAnBA,IAmBA,6DAED,WAAgDza,EAAaoc,GAAyB,oFAIQ,OAFpFiJ,GAAWtI,EAAAA,EAAAA,IAAkB,GAAD,OAAK1D,IAAO,OAAGrZ,GAAOoc,GAElD5gB,EAAqB,CAAEye,OAAQ,SAAUC,QAAS,CAAE,OAAU,qBAAuB,EAAD,OAEnEzW,KAAKuc,iBAAiB5F,MAAMiL,EAAU7pB,GAAM,KAAD,EAApD,OAAR6e,EAAQ,gBACKA,EAASI,OAAM,OAAxB,IAAJA,EAAI,QAEDvT,SAAW0R,EAAmB/U,MAAK,uBAElC,IAAIA,MAAgB,QAAX,EAAC4W,EAAKpX,aAAK,aAAV,EAAY6R,SAAS,KAAD,OAGpCuF,EAAKpX,MAAM,CAAD,sBAEJ,IAAIQ,MAAM4W,EAAKpX,MAAM6R,SAAS,KAAD,GAGF,OAArCzR,KAAK2hB,cAAcR,OAAOnK,EAAKC,MAAM,kBAE9BD,GAAI,iDACd,qDAxBA,MA0BD,EA7GwB,uBCJf6K,GAAyB,WAIlC,WAAYrJ,IACX,yEACG,EAAAxY,KAAI,QAAgBwY,CACxB,CAKC,OALA,2BAED,SAAIliB,GAEA,OAAO,IAAIwrB,GAAuBxrB,EAAG,EAAC0J,KAAI,QAC9C,KAAC,EAZiC,GAarC,+BAEK8hB,GAAsB,WAKxB,WAAYxrB,EAAYkiB,IACvB,mIACG,EAAAxY,KAAI,QAAO1J,EACX,EAAA0J,KAAI,QAAgBwY,CACxB,CAiBC,OAjBA,6BAED,WAEI,OAAO,EAAAxY,KAAI,OACf,GAAC,oEAED,6GAE2B,EAAAA,KAAI,QAAcoM,IAAG,YACrCpM,KAAI,wCACP,CAAE+hB,eAAe,EAAA/hB,KAAI,UAAQ,KAAD,EAFpB,OAEoB,SAFxBiX,EAAI,EAAJA,KAAI,qCAKLA,GAAI,IACP3f,iCAAuE,QAAvC,EAAE2f,EAAK3f,wCAAgC,QAAI,MAAE,gDAEpF,kDAZA,MAYA,EA1BuB,4BbiB3B,SAZW+b,GAAAA,EAAa,gDAAbA,EAAa,sCAAbA,EAAa,4BAAbA,EAAa,wDAAbA,EAAa,wDAAbA,EAAa,4DAAbA,EAAa,wDAAbA,EAAa,gEAAbA,EAAa,8CAAbA,EAAa,wDAYxB,CAZWA,IAAAA,EAAa,KA4BlB,IAAM2O,GAAkB1f,EAAAA,cAAqC,MAUvD2f,GAAsB,SAAH,GAC/B,IADqCruB,EAAQ,EAARA,SAE5BsuB,GAAYzmB,EAAAA,GAAAA,IAAY,WAC7B,IAAD,EAEU0mB,EAAc,IAAItM,EAClB0G,EAAmB,IAAIwC,GAAiBoD,GACxC3J,EAAc,IAAIkJ,GAAgBnF,GAClC6F,EAA4B,IAAIzH,EAA0BnC,GAC1D6J,EAA4B,IAAI/F,EAA0B9D,EAAa+D,GACvEtI,EAA4B,IAAI4N,GAA0BrJ,GAC1D8J,EAA8B,IAAI1E,GAA4BpF,GAC9D+J,EAAgC,IAAIhE,GAA8B/F,GAClEgK,EAAuB,IAAIpE,GAAyB7B,GACpDkG,EAA4B,IAAInK,EAA0BiE,EAAkB/D,GAElF,OAAO,EAAP,aACKnF,EAAcqP,uBAAyBP,IAAW,SAClD9O,EAAcsP,kBAAoBpG,IAAgB,SAClDlJ,EAAcuP,aAAepK,IAAW,SACxCnF,EAAcwP,2BAA6BT,IAAyB,SACpE/O,EAAcyP,2BAA6BT,IAAyB,SACpEhP,EAAc0P,6BAA+BT,IAA2B,SACxEjP,EAAc2P,2BAA6B/O,IAAyB,SACpEZ,EAAc4P,+BAAiCV,IAA6B,SAC5ElP,EAAc6P,sBAAwBV,IAAoB,SAC1DnP,EAAc8P,2BAA6BV,GAAyB,CAE7E,IAEA,OAAO,UAACT,GAAgB9kB,SAAQ,CAACC,MAAO+kB,EAAU,SAC5CtuB,GAEV,EAOawf,GAAa,SAA0BjgB,GAEhD,IAAMiwB,GAAkB3kB,EAAAA,EAAAA,YAAWujB,IAEnC,GAAwB,OAApBoB,EAEA,MAAM,IAAIhjB,MAAM,wCAGpB,IAAMhI,EAASgrB,EAAgBjwB,GAE/B,GAAIiF,EAEA,OAAOA,EAGX,MAAM,IAAIgI,MAAM,yBAAD,OAA0BjN,EAAI,sBACjD,6+CcxHWkwB,EAAM,MAENC,EAAQ,OACRC,EAAS,SACTC,EAAS,SACTC,EAAS,SAETC,EAAQ,QACRC,EAAO,OACPC,EAAe,kBAEfC,EAAoB,GAGpBC,EAAe,UACfC,EAAS,SAETC,EAAS,SACTC,EAAO,OACPC,EAAYC,OAAOD,UACnBE,GAAaD,OAAOD,UACpBG,EAAO,OAIPC,EAAS,SACTC,EAAU,UACVC,EAAQ,QACRC,EAAe,cAEfC,EAAS,SACTC,EAAM,MAENC,EAAQ,QACRC,EAAQ,OACRC,EAAQ,QACRC,EAAI,IACJC,EAAI,ICrCA,SAAS5vB,EAAQ+H,GAC5B,OAAOhI,MAAMC,QAAQ+H,EACzB,CCAe,SAASqL,EAAShV,EAAS8T,GAGtC,IAFA,IAAI2d,EAAa7vB,EAAQkS,GAAWA,EAAU,CAAEA,GAEvCmN,EAAM,EAAGA,EAAMwQ,EAAW7qB,OAAQqa,IAAO,CAC9C,IAAIngB,EAAY2wB,EAAWxQ,IACmB,IAA1CjhB,EAAQc,UAAU+U,QAAQ/U,KAC1Bd,EAAQc,WAAa,IAAMA,EAEnC,CACJ,CCXA,IAAI4wB,EAAc,OCEH,SAASC,EAAQhoB,GAC5B,MAHY,qBAGEA,CAClB,CCFe,SAASioB,EAAiBC,GACrC,IAAIC,EAAS,GACTD,EAAK/P,QAAQiQ,QAAUC,EAAqBH,EAAK/P,QAAQiQ,OAAO/wB,QAC5D6wB,EAAK/P,QAAQiQ,OAAO/wB,MAAQ,IAAM,IAClC8wB,EAAS,GAIjB,IAAK,IAAI5Z,EAAI,EAAGA,EAAI2Z,EAAKI,SAASrrB,OAAQsR,IACtC2Z,EAAKI,SAAS/Z,GAAGga,SAAS1E,MAAM,GAAG2E,UAAUL,EAAQA,GAGzD,OAAOD,CACX,CCfe,SAASO,EAAUC,EAAQC,GAItC,OAAQD,EAAOE,EAAID,EAAOE,EAAIH,EAAOG,EAAIF,EAAOC,EAAI,CACxD,CCLe,SAAShL,GAAS5d,GAC7B,MAAwB,kBAAVA,IAAuB8oB,MAAM9oB,EAC/C,CCAe,SAASlH,GAASkH,GAC7B,cAAcA,IAAUunB,CAC5B,CCDe,SAASwB,GAAoB/oB,GACxC,OAAO4d,GAAS5d,IAAWlH,GAASkH,IAAUgpB,SAAShpB,EAC3D,CCLe,SAASipB,GAAWC,GAC/B,MAAqB,oBAAPA,CAClB,CCAA,IAAI/B,GAAS,SAGb,SAASgC,GAAcC,EAAaC,GAEhC,IAAK,IAAIC,KAAYD,EAAQ,CACzB,IAAIE,EAAYF,EAAOC,GACnBE,SAAkBD,EAElBE,OAAY,EAOhB,IALIA,EADAD,IAAarC,IAAwB,OAAdoC,EACZA,EAAUrb,YAEV,OAGCub,IAAazxB,MAEzB,GAAIuxB,aAAqBjP,KACrB8O,EAAYE,GAAY,IAAIhP,KAAKiP,EAAU7F,gBACxC,GAAIuF,GAAWM,EAAUG,OAC5BN,EAAYE,GAAYC,EAAUG,YAC/B,CACH,IAAIC,EAAWP,EAAYE,GAEvBF,EAAYE,UADJK,IAAcxC,IACEwC,GAEA,CAAC,EAE7BR,GAAcC,EAAYE,GAAWC,EACzC,KA7BI,cA8BGC,IACPJ,EAAYE,GAAYC,EAEhC,CAEA,OAAOH,CACX,CAEe,SAASQ,GAAWR,GAK/B,IAJA,IAAIS,EAAcjf,UAEd3N,EAAS2N,UAAU3N,OAEdsR,EAAI,EAAGA,EAAItR,EAAQsR,IACxB4a,GAAcC,EAAaS,EAAYtb,IAG3C,OAAO6a,CACX,CCnDe,SAASU,GAAS9pB,GAC7B,MAAwB,kBAAVA,CAClB,CCAe,SAAS+pB,GAAW/pB,GAC/B,OAAI4d,GAAS5d,GACFA,EAAQ,KAEZA,CACX,CCFA,IAAIgqB,GAAoB,sCAExB,SAASC,GAAYtJ,GACjB,OAAOqJ,GAAkB/F,KAAKtD,EAClC,CAEe,SAASuJ,GAAc7zB,EAASgX,GAC3C,IAAI8c,EAAcrxB,GAASuU,GAAU,CAAEA,GAAWA,EAElD,GAAIpV,EAAQkyB,GAAc,CAItB,IAHA,IAAIlvB,EAAS,CAAC,EACV3B,EAAQgG,OAAOuN,iBAAiBxW,GAE3BihB,EAAM,EAAGA,EAAM6S,EAAYltB,OAAQqa,IAAO,CAC/C,IAAIqJ,EAAQwJ,EAAY7S,GACxBrc,EAAO0lB,GAASsJ,GAAYtJ,GAAS5T,WAAWzT,EAAMqnB,IAAUrnB,EAAMqnB,EAC1E,CAEA,OAAO1lB,CACX,CAAO,GAAI6uB,GAASzc,GAChB,IAAK,IAAI+c,KAAW/c,EAChBhX,EAAQiD,MAAM8wB,GAAWL,GAAW1c,EAAO+c,GAGvD,CC3Be,SAASC,GAAWrqB,EAAOsqB,QACd,IAAnBA,IAA4BA,EAAiB,GAElD,IAAIC,EAAU,CAAEC,IAAK,EAAGC,MAAO,EAAGC,OAAQ,EAAGC,KAAM,GAWnD,MATsB,kBAAX3qB,EACPuqB,EAAW,IAAIA,EAAa,MAAIA,EAAc,OAAIA,EAAY,KAAIvqB,GAElEuqB,EAAW,IAAIvqB,EAAS,KAAKsqB,EAC7BC,EAAa,MAAIvqB,EAAW,OAAKsqB,EACjCC,EAAc,OAAIvqB,EAAY,QAAKsqB,EACnCC,EAAY,KAAIvqB,EAAU,MAAKsqB,GAG5BC,CACX,CCjBA,IAAIn0B,GAAU,CACVw0B,QAAS,SAASC,GACd,OAAOA,CACX,GAGAC,GAAkB,WAA6B,EAEnDA,GAAgBC,SAAW,SAAmBC,GAC1C50B,GAAU40B,CACd,EAEAF,GAAgBF,QAAU,SAAkBC,GACxC,OAAOz0B,GAAQw0B,QAAQC,EAC3B,EAEA,UCbe,SAASI,GAAY9S,GAGhC,IAAI0S,EAOJ,YATiB,IAAZ1S,IAAqBA,EAAU,CAAC,GAGjCA,EAAQ0S,SACR1S,EAAQ0S,SAAWA,EAAWC,GAAAA,QAAwB3S,EAAQ0S,UACvD5B,GAAW9Q,EAAQxT,WAC1BkmB,EAAW1S,EAAQxT,SAGhBkmB,CACX,CCZA,IAAIK,GAAc,sDACdC,GAAc,CAAC,EAMJ,SAASC,GAAOzK,GAC3B,GAAIwK,GAAYxK,GACZ,OAAOwK,GAAYxK,GAGvB,IAAI0K,EAAS,GAcb,OAbA1K,EAAM1b,QAAQimB,IAAa,SAASI,EAAOnuB,EAAOouB,EAAe5K,GAC7D0K,EAAOpZ,KAAKoW,EAAqBlrB,GAASA,EAASouB,GAAiB5K,EACxE,IAEAwK,GAAYxK,GAAS,SAAS9N,GAE1B,IADA,IAAI5X,EAAS4X,EACJyE,EAAM,EAAGA,EAAM+T,EAAOpuB,QAAUhC,EAAQqc,IAC7Crc,EAASA,EAAOowB,EAAO/T,IAG3B,OAAOrc,CACX,EAEOkwB,GAAYxK,EACvB,CC7Be,SAAS6K,GAAKC,EAAO1iB,GAGhC,IAFA,IAAI9L,EAASwuB,EAAMxuB,OACfhC,EAAS,GACJqc,EAAM,EAAGA,EAAMra,EAAQqa,IACxBvO,EAAS0iB,EAAMnU,KACfrc,EAAQgX,KAAKwZ,EAAMnU,IAI3B,OAAOrc,CACX,CCVe,SAASywB,GAAWr1B,EAASoV,GACxC,GAAIpV,EAAQc,UAER,IADA,IAAIw0B,EAAQlgB,EAAWrB,MAAM,KACpBkN,EAAM,EAAGA,EAAMqU,EAAM1uB,OAAQqa,IAClC,IAA+C,IAA3CjhB,EAAQc,UAAU+U,QAAQyf,EAAMrU,IAChC,OAAO,CAIvB,CFJA6T,QAAY,GAAe,SAAStY,GAChC,OAAOA,CACX,EGNA,IAAI+Y,GAAU,WACV/oB,KAAKgpB,KAAO,CAAC,CACjB,EAEAD,GAAQ/kB,UAAUoI,IAAM,SAAcuE,GAClC,OAAO3Q,KAAKgpB,KAAKhpB,KAAKiI,KAAK0I,GAC/B,EAEAoY,GAAQ/kB,UAAUilB,IAAM,SAActY,EAAMxT,GACxC6C,KAAKgpB,KAAKhpB,KAAKiI,KAAK0I,IAASxT,CACjC,EAEA4rB,GAAQ/kB,UAAUiE,KAAO,SAAe0I,GACpC,OAAOA,aAAgB8G,KAAO9G,EAAKkQ,UAAYlQ,CACnD,EAEA,UCjBe,SAASuY,GAAQ/rB,EAAOyrB,GACnC,GAAIA,EACA,OAAiC,IAA1BA,EAAMvf,QAAQlM,EAE7B,CCIe,SAAS6jB,GAAM7jB,EAAOgsB,GACjC,IATSne,EASLoe,GATKpe,EASOme,GAPLrI,KAAKuI,IAAI,GAAIre,GAGjB,EAKP,OAAO8V,KAAKE,MAAM7jB,EAAQisB,GAASA,CACvC,CCRe,SAASE,GAAiBC,EAAOC,EAAKC,GACjD,OAAOjE,GAAmB+D,GAASC,EAAMD,GAASE,ExBEzB,EwBD7B,CCHA,IAAIC,GAAU,UAEVC,GAAmB,SAA0BC,EAAUC,GACvD7pB,KAAK4pB,SAAWA,EAChB5pB,KAAK8pB,WAAa/C,GAAW,CAAC,EAAG/mB,KAAK8pB,WAAYD,EACtD,EAEAF,GAAiB3lB,UAAU+lB,QAAU,SAAkBpZ,EAAM3I,GACzD,IAGIgiB,EAFIJ,EADE5pB,KACa4pB,SACfE,EAFE9pB,KAEe8pB,WAQzB,OANIA,EAAWnZ,GACXqZ,EAAqBhqB,KAAKiqB,aAAaH,EAAWnZ,GAAO3I,GAClD4hB,EAAgB,UACvBI,EAAqBhqB,KAAKiqB,aAAaP,GAAS/Y,EAAM3I,IAGnDgiB,CACX,EAEAL,GAAiB3lB,UAAUimB,aAAe,SAAuBC,GAEzD,IADA,IAAIliB,EAAO,GAAImiB,EAAMpiB,UAAU3N,OAAS,EAChC+vB,KAAQ,GAAIniB,EAAMmiB,GAAQpiB,UAAWoiB,EAAM,GAEvD,OAAOnqB,KAAK4pB,SAASM,GAAQhiB,MAAMlI,KAAK4pB,SAAU5hB,EACtD,EAEA2hB,GAAiB3lB,UAAUomB,iBAAmB,SAA2BtB,GAGrE,GAAI9oB,KAAK4pB,SAASQ,iBACd,OAAOpqB,KAAK4pB,SAASQ,iBAAiBtB,GAG1C,IAAK,IAAIrU,EAAM,EAAGA,EAAMqU,EAAM1uB,OAAQqa,IAClC,GAPazU,KAOF8pB,WAAWhB,EAAMrU,IACxB,OAAO,CAGnB,EAEA,UC1Ce,SAASpa,GAAIuuB,EAAO1iB,GAG/B,IAFA,IAAI9L,EAASwuB,EAAMxuB,OACfhC,EAAS,GACJqc,EAAM,EAAGA,EAAMra,EAAQqa,IAAO,CACnC,IAAItX,EAAQ+I,EAAS0iB,EAAMnU,IACvB+Q,EAAqBroB,IACrB/E,EAAOgX,KAAKjS,EAEpB,CACA,OAAO/E,CACX,CCgBA,IAAIiyB,GAAU,KAad,GAXc,CACNA,cACA,MAAsB,qBAAX5tB,QAA0B4tB,GAC1BA,GAGXA,GApCR,SAAwBC,GACpB,IAAIC,EAAa,CACbC,KAAM,uBACNC,OAAQ,yBACRC,OAAQ,yBACRC,MAAO,sCACPC,KAAM,mCACNC,QAAS,iCAGTR,EAAU,CAAC,EAEf,IAAK,IAAIS,KAASP,EACd,GAAIA,EAAWtf,eAAe6f,GAAQ,CAClC,IAAIrC,EAAQ6B,EAAU7B,MAAM8B,EAAWO,IACvC,GAAIrC,EAAO,CACP4B,EAAQS,IAAS,EACjBT,EAAQ5B,EAAM,GAAGsC,cAAcxjB,MAAM,KAAK,GAAGA,MAAM,KAAK,KAAM,EAC9D8iB,EAAQtZ,QAAUia,SAASlyB,SAASmyB,cAAgBxC,EAAM,GAAI,IAE9D,KACJ,CACJ,CAGJ,OAAO4B,CACX,CAUkBa,CAAezuB,OAAO0uB,UAAUb,UAE9C,GCpCAD,GAAUe,GAAAA,SAAmB,CAAC,EAEnB,SAASC,GAAgBr4B,GACpC,IAAIs4B,EAAQ,EAkBZ,OAhBIt4B,EAAEu4B,YACFD,GAASt4B,EAAEu4B,WAAa,IAEpBlB,GAAQI,SAKRa,GAAiB,EAAIxK,KAAK0K,IAAI/uB,OAAOgvB,iBAAkB,QAEpDz4B,EAAE04B,SACTJ,EAAQt4B,EAAE04B,OAAS,GAGvBJ,EAAQA,EAAQ,EAAIxK,KAAK6K,KAAKL,GAASxK,KAAK8K,MAAMN,EAGtD,CCxBe,SAASO,GAAOC,EAAOC,GAElC,OADAD,EAAM1c,KAAKlH,MAAM4jB,EAAOC,GACjBD,CACX,CCDA,IAAIE,GAAW,CACX,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,IAAW,GAAO,IAAW,IAAO,IAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,EAAO,MAAW,GAAO,MAAW,IAAO,MAC3C,EAAO,OAAW,GAAO,OAAW,IAAO,OAC3C,EAAO,KAAW,GAAO,KAAW,IAAO,KAC3C,IAAO,KAGI,SAASC,GAActgB,GAOlC,IANA,IAAIoE,EAAS,CAAE,IACA,IAAM,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IAAK,IACzC,GAAM,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GAAK,GACzC,EAAM,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,EAAK,GAEpDmc,EAAQ,GACLvgB,EAAI,GACHA,EAAIoE,EAAO,GACXA,EAAOoc,SAEPD,GAASF,GAASjc,EAAO,IACzBpE,GAAKoE,EAAO,IAGpB,OAAOmc,CACX,CC/Be,SAASE,KACpB,IAAIC,EAAWC,EACXC,EAAU,IAAIxwB,SAAQ,SAAUC,EAASwwB,GACzCH,EAAY,SAAUpV,GAGlB,OAFAsV,EAAQE,OAAS,WACjBzwB,EAAQib,GACDsV,CACX,EACAD,EAAW,SAAUrV,GAIjB,OAHAsV,EAAQE,OAAS,WACjBD,EAAOvV,GAEAsV,CACX,CACJ,IAMA,OALAA,EAAQE,OAAS,UACjBF,EAAQvwB,QAAUqwB,EAClBE,EAAQC,OAASF,EACjBC,EAAQ5sB,MAAQ,WAAc,OAAO4sB,EAAQE,MAAQ,EAE9CF,CACX,CCrBA,IAAIG,GAAQ,EAEG,SAASC,KACpB,MAAO,OAASD,IACpB,CCJA,IAAIE,GAAa9L,KAAK+L,GAAK,IACvBC,GAAU3I,OAAOD,UACjB6I,IAAW5I,OAAOD,UCAP,SAAS8I,GAAIC,GACxB,OAAOA,EAAUL,EACrB,CCJA,IAAIjY,GAAexJ,OAAOwJ,aCE1B,IAAIuY,GAAU,oEAEC,SAASC,GAAa/Y,GAMjC,IALA,IAAIM,EAAS,GACThJ,EAAI,EAEJ0hB,EDHD,SAAoBhZ,GAGvB,IAFA,IAAIM,EAAS,GAEJhJ,EAAI,EAAGA,EAAI0I,EAAMha,OAAQsR,IAAK,CACnC,IAAIoJ,EAAOV,EAAMW,WAAWrJ,GAE5B,GAAI,OAAUoJ,GAAQA,GAAQ,MAAQ,CAClC,IAAIuY,EAAKvY,EACLwY,EAAMlZ,EAAMW,aAAarJ,GAExBua,MAAMqH,KAGPxY,EAAuB,MAAfuY,EAAK,QACLC,EAAM,OAAU,MAEhC,CAEIxY,EAAO,IAEPJ,GAAUC,GAAaG,GAChBA,EAAO,MAEdJ,GAAUC,GAAa,IAAQG,IAAS,GACxCJ,GAAUC,GAAa,IAAe,GAAPG,IACxBA,EAAO,OAEdJ,GAAUC,GAAa,IAAQG,IAAS,IACxCJ,GAAUC,GAAa,IAAQG,IAAS,EAAI,IAC5CJ,GAAUC,GAAa,IAAe,GAAPG,IACxBA,EAAO,UAEdJ,GAAUC,GAAa,IAAQG,IAAS,IACxCJ,GAAUC,GAAa,IAAQG,IAAS,GAAK,IAC7CJ,GAAUC,GAAa,IAAQG,IAAS,EAAI,IAC5CJ,GAAUC,GAAa,IAAe,GAAPG,GAEvC,CAEA,OAAOJ,CACX,CCrCmB6Y,CAAWnZ,GAEnB1I,EAAI0hB,EAAShzB,QAAQ,CACxB,IAAIozB,EAAOJ,EAASrY,WAAWrJ,KAC3B+hB,EAAOL,EAASrY,WAAWrJ,KAC3BgiB,EAAON,EAASrY,WAAWrJ,KAE3BiiB,EAAOH,GAAQ,EACfI,GAAgB,EAAPJ,IAAa,EAAMC,GAAQ,EACpCI,GAAgB,GAAPJ,IAAc,EAAMC,GAAQ,EACrCI,EAAc,GAAPJ,EAEPzH,MAAMwH,GACNI,EAAOC,EAAO,GACP7H,MAAMyH,KACbI,EAAO,IAGXpZ,EAASA,EACLwY,GAAQtwB,OAAO+wB,GAAQT,GAAQtwB,OAAOgxB,GACtCV,GAAQtwB,OAAOixB,GAAQX,GAAQtwB,OAAOkxB,EAC9C,CAEA,OAAOpZ,CACX,CC9Be,SAASqZ,GAAiB/6B,GACrC,OAAImyB,GAASnyB,EAAE+yB,GAAK,CAAC,GAAGlT,UACb,CACHkT,EAAG/yB,EAAE+yB,EAAElT,SACPmT,EAAGhzB,EAAEgzB,EAAEnT,UAIR,CACHkT,EAAG/yB,EAAEg7B,OAASh7B,EAAEi7B,SAAW,EAC3BjI,EAAGhzB,EAAEk7B,OAASl7B,EAAEm7B,SAAW,EAEnC,CCde,SAASC,GAAap7B,GAGjC,YAFW,IAANA,IAAeA,EAAI,CAAC,GAElBA,EAAEq7B,MAAQr7B,EAAEq7B,MAAMC,aAAet7B,EAAE4a,MAC9C,CCFe,SAAS2gB,GAAcC,GAClC,MAAiB,KAAVA,GAA0B,OAAVA,GAA4B,SAAVA,GAA8B,gBAAVA,IAA4BrJ,EAAQqJ,EACrG,CCJe,SAASC,GAAK7F,GACzB,GAAIA,EACA,OAAOA,EAAMA,EAAMxuB,OAAS,EAEpC,CCJe,SAASs0B,GAAWvxB,EAAOwxB,EAAKnD,GAC3C,OAAO1K,KAAK0K,IAAI1K,KAAK6N,IAAIxxB,EAAOquB,GAAMmD,EAC1C,CCIe,SAASC,GAAUC,EAAGC,GACjC,GAAID,EAAEz0B,OAAS,EACX,OAAOy0B,EAAEnU,QAmBb,OAAQ,SAASqU,EAAKF,GAClB,GAAIA,EAAEz0B,QAAU,EACZ,OAAOy0B,EAEX,IAAIha,EAAIiM,KAAK8K,MAAMiD,EAAEz0B,OAAS,GAC1B0tB,EAAO+G,EAAEnU,MAAM,EAAG7F,GAClB+S,EAAQiH,EAAEnU,MAAM7F,GAGpB,OA1BJ,SAAega,EAAGjkB,GAEd,IADA,IAAIokB,EAAI,GAAIC,EAAK,EAAGC,EAAK,EAAGxjB,EAAI,EACzBujB,EAAKJ,EAAEz0B,QAAU80B,EAAKtkB,EAAExQ,QACvB00B,EAAID,EAAEI,GAAKrkB,EAAEskB,KAAQ,EACrBF,EAAEtjB,KAAOmjB,EAAEI,KAEXD,EAAEtjB,KAAOd,EAAEskB,KASnB,OANID,EAAKJ,EAAEz0B,QACP40B,EAAE5f,KAAKlH,MAAM8mB,EAAGH,EAAEnU,MAAMuU,IAExBC,EAAKtkB,EAAExQ,QACP40B,EAAE5f,KAAKlH,MAAM8mB,EAAGpkB,EAAE8P,MAAMwU,IAErBF,CACX,CAUWG,CAFPrH,EAAOiH,EAAKjH,GACZF,EAAQmH,EAAKnH,GAEjB,CAVQ,CAULiH,EACP,CCtCA,IAIA,GAJUpX,KAAK2X,KAAO,WAClB,OAAO,IAAI3X,MAAOoJ,SACtB,ECFe,SAASwO,GAAWC,GAC/B,OAAOvzB,QAAQgkB,IAAIuP,EACvB,CCAe,SAASC,GAAIC,GACxB,OAAOA,EAAU5C,EACrB,CCFe,SAAS6C,GAAetyB,EAAOuyB,GAC1C,OAAOvK,EAAQhoB,GAASA,EAAQuyB,CACpC,CCJe,SAASC,GAAWn8B,EAASo8B,GACxC,IAAK,IAAIC,KAAaD,EAElB,IADA,IAAIE,EAAaD,EAAUE,OAAOxoB,MAAM,KAC/BkN,EAAM,EAAGA,EAAMqb,EAAW11B,OAAQqa,IACvCjhB,EAAQ2K,iBAAiB2xB,EAAWrb,GAAMmb,EAAOC,IAAY,EAGzE,CCPe,SAASG,GAAcx8B,GAClC,IAAIy8B,EAAMz8B,EAAQ08B,wBAEdC,EAAkBr3B,SAASq3B,gBAE/B,MAAO,CACHxI,IAAKsI,EAAItI,KAAOlrB,OAAO2zB,aAAeD,EAAgBjnB,YAAcinB,EAAgBE,WAAa,GACjGvI,KAAMmI,EAAInI,MAAQrrB,OAAO6zB,aAAeH,EAAgBI,aAAeJ,EAAgBK,YAAc,GAE7G,CCTe,SAASnJ,GAAc7zB,EAASgX,GAK3C,IAJA,IAAIpS,EAAS,CAAC,EACV3B,EAAQgG,OAAOuN,iBAAiBxW,IAAY,CAAC,EAC7C8zB,EAAcnyB,MAAMC,QAAQoV,GAAUA,EAAS,CAAEA,GAE5CiK,EAAM,EAAGA,EAAM6S,EAAYltB,OAAQqa,IAAO,CAC/C,IAAIqJ,EAAQwJ,EAAY7S,GACxBrc,EAAO0lB,GAASrnB,EAAMqnB,EAC1B,CAEA,OAAO1lB,CACX,CCRA,SAASq4B,GAAUtzB,GACf,OAAI8oB,MAAM9oB,GACCA,EAEJA,EAAQ,IACnB,CAEe,SAASuzB,GAAYl9B,EAASoD,GACzC,IAAIA,EAYG,CACH,IAAI+5B,EAAStJ,GAAc7zB,EAAS,CAAE,QAAS,WAE/C,MAAO,CACHgB,MAAOw2B,SAAS2F,EAAOn8B,MAAO,IAC9BC,OAAQu2B,SAAS2F,EAAOl8B,OAAQ,IAExC,CAlBI,IAAID,EAAQoC,EAAKpC,MACbC,EAASmC,EAAKnC,OAEd0wB,EAAQ3wB,KACRhB,EAAQiD,MAAMjC,MAAQi8B,GAAUj8B,IAGhC2wB,EAAQ1wB,KACRjB,EAAQiD,MAAMhC,OAASg8B,GAAUh8B,GAW7C,CC/Be,SAASm8B,GAAap9B,EAASo8B,GAG1C,IAAK,IAAIjf,UAFO,IAAXif,IAAoBA,EAAS,CAAC,GAElBA,EAEb,IADA,IAAIE,EAAanf,EAAKof,OAAOxoB,MAAM,KAC1BkN,EAAM,EAAGA,EAAMqb,EAAW11B,OAAQqa,IACvCjhB,EAAQ4K,oBAAoB0xB,EAAWrb,GAAMmb,EAAOjf,IAAO,EAGvE,CCPe,SAASkgB,GAAer9B,GACnC,IAAIjB,EAAM80B,GAAc7zB,EAAS,CAAE,cAAe,eAC9Cs9B,EAAcv+B,EAAIu+B,YAClBC,EAAax+B,EAAIw+B,WACrB,MAAO,CACHpJ,IAAKzd,WAAW6mB,GAChBjJ,KAAM5d,WAAW4mB,GAEzB,CCVA,IAEA,GAFY,WAAmB,ECK3BE,GAAU,SAAUC,GACpB,SAASD,EAAOnC,EAAGjkB,EAAGnD,EAAGkD,EAAG3X,EAAGqpB,QAChB,IAANwS,IAAeA,EAAI,QACb,IAANjkB,IAAeA,EAAI,QACb,IAANnD,IAAeA,EAAI,QACb,IAANkD,IAAeA,EAAI,QACb,IAAN3X,IAAeA,EAAI,QACb,IAANqpB,IAAeA,EAAI,GAExB4U,EAAMjuB,KAAKhD,MAEXA,KAAK6uB,EAAIA,EACT7uB,KAAK4K,EAAIA,EACT5K,KAAKyH,EAAIA,EACTzH,KAAK2K,EAAIA,EACT3K,KAAKhN,EAAIA,EACTgN,KAAKqc,EAAIA,CACb,CAsGA,OApGK4U,IAAQD,EAAOjmB,UAAYkmB,GAChCD,EAAOhtB,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACjDgtB,EAAOhtB,UAAUqH,YAAc2lB,EAE/BA,EAAOhtB,UAAUktB,aAAe,SAAuBC,GACnD,OAAO,IAAIH,EACPhxB,KAAK6uB,EAAIsC,EAAOtC,EAAI7uB,KAAKyH,EAAI0pB,EAAOvmB,EACpC5K,KAAK4K,EAAIumB,EAAOtC,EAAI7uB,KAAK2K,EAAIwmB,EAAOvmB,EACpC5K,KAAK6uB,EAAIsC,EAAO1pB,EAAIzH,KAAKyH,EAAI0pB,EAAOxmB,EACpC3K,KAAK4K,EAAIumB,EAAO1pB,EAAIzH,KAAK2K,EAAIwmB,EAAOxmB,EACpC3K,KAAK6uB,EAAIsC,EAAOn+B,EAAIgN,KAAKyH,EAAI0pB,EAAO9U,EAAIrc,KAAKhN,EAC7CgN,KAAK4K,EAAIumB,EAAOn+B,EAAIgN,KAAK2K,EAAIwmB,EAAO9U,EAAIrc,KAAKqc,EAErD,EAEA2U,EAAOhtB,UAAUotB,OAAS,WACtB,IAAI7+B,EAAMyN,KACN6uB,EAAIt8B,EAAIs8B,EACRjkB,EAAIrY,EAAIqY,EACRD,EAAIpY,EAAIkV,EACRzU,EAAIT,EAAIoY,EACRwR,EAAI5pB,EAAIS,EACRq+B,EAAI9+B,EAAI8pB,EACRiV,EAAMzC,EAAI77B,EAAI4X,EAAID,EAEtB,OAAY,IAAR2mB,EACO,KAGJ,IAAIN,EAAOh+B,EAAIs+B,GAAM1mB,EAAI0mB,GAAM3mB,EAAI2mB,EAAKzC,EAAIyC,GAChC3mB,EAAI0mB,EAAIr+B,EAAImpB,GAAKmV,GAAM1mB,EAAIuR,EAAI0S,EAAIwC,GAAKC,EAC/D,EAEAN,EAAOhtB,UAAU6iB,MAAQ,WACrB,OAAO,IAAImK,EAAOhxB,KAAK6uB,EAAG7uB,KAAK4K,EAAG5K,KAAKyH,EAAGzH,KAAK2K,EAAG3K,KAAKhN,EAAGgN,KAAKqc,EACnE,EAEA2U,EAAOhtB,UAAUutB,OAAS,SAAiBvkB,GACvC,QAAKA,IAIEhN,KAAK6uB,IAAM7hB,EAAM6hB,GAAK7uB,KAAK4K,IAAMoC,EAAMpC,GACvC5K,KAAKyH,IAAMuF,EAAMvF,GAAKzH,KAAK2K,IAAMqC,EAAMrC,GACvC3K,KAAKhN,IAAMga,EAAMha,GAAKgN,KAAKqc,IAAMrP,EAAMqP,EAClD,EAEA2U,EAAOhtB,UAAUgd,MAAQ,SAAkBmI,GAQvC,OAPAnpB,KAAK6uB,EAAI7N,GAAMhhB,KAAK6uB,EAAG1F,GACvBnpB,KAAK4K,EAAIoW,GAAMhhB,KAAK4K,EAAGue,GACvBnpB,KAAKyH,EAAIuZ,GAAMhhB,KAAKyH,EAAG0hB,GACvBnpB,KAAK2K,EAAIqW,GAAMhhB,KAAK2K,EAAGwe,GACvBnpB,KAAKhN,EAAIguB,GAAMhhB,KAAKhN,EAAGm2B,GACvBnpB,KAAKqc,EAAI2E,GAAMhhB,KAAKqc,EAAG8M,GAEhBnpB,IACX,EAEAgxB,EAAOhtB,UAAUwtB,QAAU,SAAkBrI,GACzC,IAAI/wB,EAAS,CAAE4H,KAAK6uB,EAAG7uB,KAAK4K,EAAG5K,KAAKyH,EAAGzH,KAAK2K,EAAG3K,KAAKhN,EAAGgN,KAAKqc,GAE5D,GAAI8I,EAAQgE,GACR,IAAK,IAAIzd,EAAI,EAAGA,EAAItT,EAAOgC,OAAQsR,IAC/BtT,EAAOsT,GAAKsV,GAAM5oB,EAAOsT,GAAIyd,GAIrC,OAAO/wB,CACX,EAEA44B,EAAOhtB,UAAUzD,SAAW,SAAmB4oB,EAAWsI,GAGtD,YAFmB,IAAdA,IAAuBA,EAAY,KAEjCzxB,KAAKwxB,QAAQrI,GAAWuI,KAAKD,EACxC,EAEAT,EAAOrL,UAAY,SAAoBI,EAAGC,GACtC,OAAO,IAAIgL,EAAO,EAAG,EAAG,EAAG,EAAGjL,EAAGC,EACrC,EAEAgL,EAAOW,KAAO,WACV,OAAO,IAAIX,EAAO,EAAG,EAAG,EAAG,EAAG,EAAG,EACrC,EAEAA,EAAOY,OAAS,SAAiBC,EAAO9L,EAAGC,GACvC,IAAImL,EAAS,IAAIH,EAQjB,OAPAG,EAAOtC,EAAI/N,KAAKgR,IAAIvC,GAAIsC,IACxBV,EAAOvmB,EAAIkW,KAAKiR,IAAIxC,GAAIsC,IACxBV,EAAO1pB,GAAK0pB,EAAOvmB,EACnBumB,EAAOxmB,EAAIwmB,EAAOtC,EAClBsC,EAAOn+B,EAAK+yB,EAAIA,EAAIoL,EAAOtC,EAAI7I,EAAImL,EAAOvmB,GAAM,EAChDumB,EAAO9U,EAAK2J,EAAIA,EAAImL,EAAOtC,EAAI9I,EAAIoL,EAAOvmB,GAAM,EAEzCumB,CACX,EAEAH,EAAOgB,MAAQ,SAAgBC,EAAQC,GACnC,OAAO,IAAIlB,EAAOiB,EAAQ,EAAG,EAAGC,EAAQ,EAAG,EAC/C,EAEOlB,CACX,CAxHc,CAwHZC,IAEFD,GAAOmB,SAAWnB,GAAOW,OAEzB,UC/HIS,GAAe,iBAYnB,SAASC,GAAgB7+B,GACrB,IAAI8+B,EAAYtoB,iBAAiBxW,GAAS8+B,UAE1C,MAAkB,SAAdA,EACOtB,GAAAA,OAdf,SAAqBuB,GACjB,IAAI9J,EAAQ8J,EAAa9J,MAAM2J,IAC/B,GAAc,OAAV3J,GAAmC,IAAjBA,EAAMruB,OACxB,OAAO42B,GAAAA,OAGX,IAAIwB,EAAU/J,EAAM,GAAGlhB,MAAM,KAAKlN,KAAI,SAAU0rB,GAAK,OAAO7b,WAAW6b,EAAI,IAC3E,OAAO,IAAK0M,SAASzuB,UAAUjE,KAAKmI,MAAO8oB,GAAQ,CAAE,MAAO7oB,OAAQqqB,IACxE,CASWE,CAAYJ,EACvB,CAEe,SAASK,GAAan/B,GACjC,IAAKA,EACD,OAAOw9B,GAAAA,OAKX,IAFA,IAAIG,EAASkB,GAAgB7+B,GACzBo/B,EAASp/B,EAAQq/B,cACdD,GAAQ,CACX,IAAIE,EAAeT,GAAgBO,GACnCzB,EAASA,EAAOD,aAAa4B,GAC7BF,EAASA,EAAOC,aACpB,CAGA,OADA1B,EAAOvmB,EAAIumB,EAAO1pB,EAAI0pB,EAAOn+B,EAAIm+B,EAAO9U,EAAI,EACrC8U,CACX,CCrCA,IAAI4B,GAAY,SAAU9B,GACtB,SAAS8B,EAASn8B,GACdq6B,EAAMjuB,KAAKhD,MAEXA,KAAKgzB,MAAQp8B,EACboJ,KAAKizB,QAAU,EACfjzB,KAAKgpB,KAAO,CAAC,CACjB,CAuDA,OArDKiI,IAAQ8B,EAAShoB,UAAYkmB,GAClC8B,EAAS/uB,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnD+uB,EAAS/uB,UAAUqH,YAAc0nB,EAEjCA,EAAS/uB,UAAU6X,IAAM,SAAcxN,EAAKlR,GACxC,IAAI9C,EAAM2F,KAAKgpB,KACXkK,EAAQ,CAAE7kB,IAAKA,EAAKlR,MAAOA,GAE/B9C,EAAIgU,GAAO6kB,EAENlzB,KAAKmzB,OAGNnzB,KAAKozB,MAAMC,MAAQH,EACnBA,EAAMI,MAAQtzB,KAAKozB,MACnBpzB,KAAKozB,MAAQF,GAJblzB,KAAKmzB,MAAQnzB,KAAKozB,MAAQF,EAO1BlzB,KAAKizB,SAAWjzB,KAAKgzB,OACrB34B,EAAI2F,KAAKmzB,MAAM9kB,KAAO,KACtBrO,KAAKmzB,MAAQnzB,KAAKmzB,MAAME,MACxBrzB,KAAKmzB,MAAMG,MAAQ,MAEnBtzB,KAAKizB,SAEb,EAEAF,EAAS/uB,UAAUoI,IAAM,SAAciC,GACnC,IAAI6kB,EAAQlzB,KAAKgpB,KAAK3a,GAEtB,GAAI6kB,EAmBA,OAlBIA,IAAUlzB,KAAKmzB,OAASD,IAAUlzB,KAAKozB,QACvCpzB,KAAKmzB,MAAQD,EAAMG,MACnBrzB,KAAKmzB,MAAMG,MAAQ,MAGnBJ,IAAUlzB,KAAKozB,QACXF,EAAMI,QACNJ,EAAMI,MAAMD,MAAQH,EAAMG,MAC1BH,EAAMG,MAAMC,MAAQJ,EAAMI,OAG9BJ,EAAMI,MAAQtzB,KAAKozB,MACnBF,EAAMG,MAAQ,KAEdrzB,KAAKozB,MAAMC,MAAQH,EACnBlzB,KAAKozB,MAAQF,GAGVA,EAAM/1B,KAErB,EAEO41B,CACX,CA/DgB,CA+Dd9B,IAEF,MCnEIsC,GAAgB,eAGpB,SAASC,GAAct6B,GACnB,OAAOiS,OAAOjS,GAAMkJ,QAAQmxB,GAHpB,IAIZ,CAEA,SAASE,GAAU9Z,GACf,IAAI+Z,EAAQ,GACZ,IAAK,IAAIrlB,KAAOsL,EACZ+Z,EAAMtkB,KAAKf,EAAMsL,EAAOtL,IAG5B,OAAOqlB,EAAM3E,OAAO2C,KAAK,GAC7B,CAIA,SAASiC,GAAQtf,GAKb,IAFA,IAAIuf,EAAO,WAEFloB,EAAI,EAAGA,EAAI2I,EAAIja,SAAUsR,EAC9BkoB,IAASA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IAAMA,GAAQ,IACzEA,GAAQvf,EAAIU,WAAWrJ,GAG3B,OAAOkoB,IAAS,CACpB,CCrBA,IAIIC,GAJAC,GAAkB,CAClBC,mBAAoB,GAKA,qBAAbj7B,YACP+6B,GAAoB/6B,SAASomB,cAAc,QACzBzoB,MAAMu9B,QAAU,wQAKtC,IAAIC,GAAe,SAAUhD,GACzB,SAASgD,EAAY3e,GACjB2b,EAAMjuB,KAAKhD,MAEXA,KAAKk0B,OAAS,IAAInB,GAAS,KAC3B/yB,KAAKsV,QAAUzK,OAAOW,OAAO,CAAC,EAAGsoB,GAAiBxe,EACtD,CA6DA,OA3DK2b,IAAQgD,EAAYlpB,UAAYkmB,GACrCgD,EAAYjwB,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACtDiwB,EAAYjwB,UAAUqH,YAAc4oB,EAEpCA,EAAYjwB,UAAUmwB,QAAU,SAAkBj7B,EAAMzC,EAAO6e,GAG3D,QAFiB,IAAZA,IAAqBA,EAAU,CAAC,GAEjB,qBAATpc,GAAiC,OAATA,EAC/B,MAhCD,CAAE1E,MAAO,EAAGC,OAAQ,EAAG2/B,SAAU,GAmCpC,IACIC,EAAWV,GAAQz6B,EADRu6B,GAAUh9B,IAErB69B,EAAet0B,KAAKk0B,OAAO9nB,IAAIioB,GAEnC,GAAIC,EACA,OAAOA,EAGX,IAAI19B,EA3CD,CAAEpC,MAAO,EAAGC,OAAQ,EAAG2/B,SAAU,GA4ChCG,EAAajf,EAAQ2a,KAAO4D,GAC5BW,EAAiBx0B,KAAKy0B,kBAAkBC,WAAU,GAEtD,IAAK,IAAIrmB,KAAO5X,EAAO,CACnB,IAAI0G,EAAQ1G,EAAM4X,GACG,qBAAVlR,IACPo3B,EAAW99B,MAAM4X,GAAOlR,EAEhC,CAEA,IAAIw3B,GAAoC,IAA1Brf,EAAQke,cAA0BA,GAAct6B,GAAQiS,OAAOjS,GAkB7E,OAhBAq7B,EAAWK,YAAcD,EACzBJ,EAAW/U,YAAYgV,GACvB17B,SAAS0E,KAAKgiB,YAAY+U,GAEtBI,EAAQv6B,SACRxD,EAAKpC,MAAQ+/B,EAAWhqB,YAAcvK,KAAKsV,QAAQye,mBACnDn9B,EAAKnC,OAAS8/B,EAAWnqB,aACzBxT,EAAKw9B,SAAWI,EAAeK,UAAY70B,KAAKsV,QAAQye,oBAGxDn9B,EAAKpC,MAAQ,GAAKoC,EAAKnC,OAAS,GAChCuL,KAAKk0B,OAAOrY,IAAIwY,EAAUz9B,GAG9B29B,EAAWO,WAAWpV,YAAY6U,GAE3B39B,CACX,EAEAq9B,EAAYjwB,UAAUywB,gBAAkB,WACpC,IAAIM,EAASj8B,SAASomB,cAAc,OAIpC,OAHA6V,EAAOt+B,MAAMu9B,QAAU,0DACnBh0B,KAAKsV,QAAQye,mBAAqB,eAAiB/zB,KAAKsV,QAAQye,mBAAqB,uBAElFgB,CACX,EAEOd,CACX,CApEmB,CAoEjBhD,IAEFgD,GAAY1gC,QAAU,IAAI0gC,GAE1B,UC3Fe,SAASe,GAAY97B,EAAMzC,EAAO89B,GAC7C,OAAON,GAAAA,QAAAA,QAA4B/6B,EAAMzC,EAAO89B,EACpD,CCFe,SAASU,GAAaxjB,GACjC,IAAIvR,EAAUzD,OAAOyD,QAEE,oBAAZA,GAA2BA,EAAQg1B,KAC1Ch1B,EAAQg1B,IAAIzjB,EAEpB,CCFA,IACIoa,GADMrG,EACOqG,OACb8D,GAFMnK,EAEWmK,WACjBxK,GAHMK,EAGQL,QACd6H,GAJMxH,EAIIwH,IACVgD,GALMxK,EAKcwK,cACpBU,GANMlL,EAMYkL,YAClB3C,GAPMvI,EAOiBuI,iBACvBK,GARM5I,EAQa4I,aACnBuF,GATMnO,EASQmO,QACdlF,GAVMjJ,EAUKiJ,KACXC,GAXMlJ,EAWWkJ,WACjB+E,GAZMjO,EAYUiO,UAChBlE,GAbM/J,EAaI+J,IACVvO,GAdMwE,EAcMxE,MACZ4P,GAfMpL,EAeaoL,aACnBnB,GAhBMjK,EAgBeiK,eCpBrB0F,GAAa,WAAwB,EAEzCA,GAAWC,WAAa,SAAqB9f,EAAS+f,EAAO11B,QACtC,IAAVA,IAAmBA,EAAQ,CAAE21B,MAAO,KAIxChgB,GAAW3V,EAAM21B,MAFN,IAE4Bx8B,SAASu8B,OAIrDxqB,OAAO4E,KAAK6F,GAAS9N,SAAQ,SAAS6G,GAClC,IAAIlR,EAAQmY,EAAQjH,GACR,eAARA,GAAmC,MAAXA,EAAI,IAAelR,IAInC,SAARkR,EACAgnB,EAAMjmB,KAAKjS,GACa,kBAAVA,IACdwC,EAAM21B,QACNH,GAAWC,WAAWj4B,EAAOk4B,EAAO11B,GACpCA,EAAM21B,SAEd,GACJ,EAEAH,GAAWI,UAAY,SAAoBF,EAAOnvB,GAC9C,IAAIopB,EAAW,GAEf,GAAI+F,EAAMj7B,OAAS,GAAKtB,SAASu8B,MAAO,CACpC,IACI/F,EAAW+F,EAAMh7B,KAAI,SAASm7B,GAC1B,OAAO18B,SAASu8B,MAAMI,KAAKD,EAC/B,GAIJ,CAHE,MAAOxiC,GAELiiC,GAAajiC,EACjB,CAEA+I,QAAQgkB,IAAIuP,GAAUrzB,KAAKiK,EAAUA,EACzC,MACIA,GAER,EAEAivB,GAAWO,aAAe,SAAuBpgB,EAASpP,GACtD,IAAImvB,EAAQ,GACZF,GAAWC,WAAW9f,EAAS+f,GAE/BF,GAAWI,UAAUF,EAAOnvB,EAChC,EAEA,UCrDe,SAASyvB,GAAkBxiC,EAAMmiB,GAC5C,IAAIsgB,EAAQziC,EAAK6Q,UACb4xB,EAAMtgB,QACNsgB,EAAMtgB,QAAUyR,GAAW,CAAC,EAAG6O,EAAMtgB,QAASA,GAE9CsgB,EAAMtgB,QAAUA,CAExB,CCPe,SAASugB,GAAkBC,GAItC,IAHA,IAAInH,EAAMzK,EACNsH,EAAMpH,EAED3P,EAAM,EAAGra,EAAS07B,EAAI17B,OAAQqa,EAAMra,EAAQqa,IAAO,CACxD,IAAItX,EAAQ24B,EAAIrhB,GACF,OAAVtX,GAAkBgpB,SAAShpB,KAC3BwxB,EAAM7N,KAAK6N,IAAIA,EAAKxxB,GACpBquB,EAAM1K,KAAK0K,IAAIA,EAAKruB,GAE5B,CAEA,MAAO,CACHwxB,IAAKA,IAAQzK,OAAYzwB,EAAYk7B,EACrCnD,IAAKA,IAAQpH,OAAY3wB,EAAY+3B,EAE7C,CClBe,SAASuK,GAAKnN,EAAOoN,GAChC,IAAK,IAAItqB,EAAI,EAAGA,EAAIkd,EAAMxuB,OAAQsR,IAAK,CACnC,IAAIuqB,EAAOrN,EAAMld,GACjB,GAAIsqB,EAAUC,EAAMvqB,EAAGkd,GACnB,OAAOqN,CAEf,CACJ,CCLA,IAAIjF,GAASkF,GACT9D,GAAe,iBAYnB,SAASC,GAAgB7+B,GACrB,IAAI8+B,EAAYtoB,iBAAiBxW,GAAS8+B,UAE1C,MAAkB,SAAdA,EACOtB,GAAOW,OAdtB,SAAqBY,GACjB,IAAI9J,EAAQ8J,EAAa9J,MAAM2J,IAC/B,GAAc,OAAV3J,GAAmC,IAAjBA,EAAMruB,OACxB,OAAO42B,GAAOW,OAGlB,IAAIa,EAAU/J,EAAM,GAAGlhB,MAAM,KAAKlN,KAAI,SAAU0rB,GAAK,OAAO7b,WAAW6b,EAAI,IAC3E,OAAO,IAAK0M,SAASzuB,UAAUjE,KAAKmI,MAAO8oB,GAAQ,CAAE,MAAO7oB,OAAQqqB,IACxE,CASWE,CAAYJ,EACvB,CCvBA,IAoDA,GApDkB,CACd6D,UAAW,SAAUC,aAAc,SAAUC,KAAM,SACnDC,WAAY,SAAUC,MAAO,SAAUC,MAAO,SAC9CC,OAAQ,SAAUC,MAAO,SAAUC,eAAgB,SACnDC,KAAM,SAAUC,WAAY,SAAUC,MAAO,SAC7CC,UAAW,SAAUC,UAAW,SAAUC,WAAY,SACtDC,UAAW,SAAUC,MAAO,SAAUC,eAAgB,SACtDC,SAAU,SAAUC,QAAS,SAAUC,KAAM,SAC7CC,SAAU,SAAUC,SAAU,SAAUC,cAAe,SACvDC,SAAU,SAAUC,SAAU,SAAUC,UAAW,SACnDC,UAAW,SAAUC,YAAa,SAAUC,eAAgB,SAC5DC,WAAY,SAAUC,WAAY,SAAUC,QAAS,SACrDC,WAAY,SAAUC,aAAc,SAAUC,cAAe,SAC7DC,cAAe,SAAUC,cAAe,SAAUC,cAAe,SACjEC,WAAY,SAAUC,SAAU,SAAUC,YAAa,SACvDC,QAAS,SAAUC,QAAS,SAAUC,WAAY,SAClDC,UAAW,SAAUC,YAAa,SAAUC,YAAa,SACzDC,QAAS,SAAUC,UAAW,SAAUC,WAAY,SACpDC,KAAM,SAAUC,UAAW,SAAUC,KAAM,SAC3CC,KAAM,SAAUC,MAAO,SAAUC,YAAa,SAC9CC,SAAU,SAAUC,QAAS,SAAUC,UAAW,SAClDC,OAAQ,SAAUC,MAAO,SAAUC,MAAO,SAC1CC,SAAU,SAAUC,cAAe,SAAUC,UAAW,SACxDC,aAAc,SAAUC,UAAW,SAAUC,WAAY,SACzDC,UAAW,SAAUC,qBAAsB,SAAUC,UAAW,SAChEC,UAAW,SAAUC,WAAY,SAAUC,UAAW,SACtDC,YAAa,SAAUC,cAAe,SAAUC,aAAc,SAC9DC,eAAgB,SAAUC,eAAgB,SAAUC,eAAgB,SACpEC,YAAa,SAAUC,KAAM,SAAUC,UAAW,SAClDC,MAAO,SAAUC,QAAS,SAAUC,OAAQ,SAC5CC,iBAAkB,SAAUC,WAAY,SAAUC,aAAc,SAChEC,aAAc,SAAUC,eAAgB,SAAUC,gBAAiB,SACnEC,kBAAmB,SAAUC,gBAAiB,SAAUC,gBAAiB,SACzEC,aAAc,SAAUC,UAAW,SAAUC,UAAW,SACxDC,SAAU,SAAUC,YAAa,SAAUC,KAAM,SACjDC,QAAS,SAAUC,MAAO,SAAUC,UAAW,SAC/CC,OAAQ,SAAUC,UAAW,SAAUC,OAAQ,SAC/CC,cAAe,SAAUC,UAAW,SAAUC,cAAe,SAC7DC,cAAe,SAAUC,WAAY,SAAUC,UAAW,SAC1DC,KAAM,SAAUC,KAAM,SAAUC,KAAM,SACtCC,WAAY,SAAUC,OAAQ,SAAUC,IAAK,SAC7CC,UAAW,SAAUC,UAAW,SAAUC,YAAa,SACvDC,OAAQ,SAAUC,WAAY,SAAUC,SAAU,SAClDC,SAAU,SAAUC,OAAQ,SAAUC,OAAQ,SAC9CC,QAAS,SAAUC,UAAW,SAAUC,UAAW,SACnDC,UAAW,SAAUC,KAAM,SAAUC,YAAa,SAClDC,UAAW,SAAUC,IAAK,SAAUC,KAAM,SAC1CC,QAAS,SAAUC,OAAQ,SAAUC,UAAW,SAChDC,OAAQ,SAAUC,MAAO,SAAUC,MAAO,SAC1CC,WAAY,SAAUC,OAAQ,SAAUC,YAAa,UC7CrDhV,GAAUe,GAAAA,QAEVkU,GAAkB,SAAU9Q,GAC5B,IAAI+Q,EAAa10B,OAAO4E,KAAK+vB,IAC7BD,EAAWnwB,KAAK,eAEhB,IAAIqwB,EAAS,IAAIp9B,OAAO,KAAOk9B,EAAW7N,KAAK,KAAO,WAAY,KAGlE,OAFA4N,GAAkB,SAAU9Q,GAAS,OAAOiR,EAAOngB,KAAKkP,EAAQ,EAEzDiR,EAAOngB,KAAKkP,EACvB,EAEIkR,GAAa,SAAUzO,GACvB,SAASyO,IAAczO,EAAMjuB,KAAKhD,KAAO,CAqDzC,OAnDKixB,IAAQyO,EAAU30B,UAAYkmB,GACnCyO,EAAU17B,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpD07B,EAAU17B,UAAUqH,YAAcq0B,EAClCA,EAAU17B,UAAU27B,MAAQ,WAAoB,OAAO3/B,IAAM,EAE7D0/B,EAAU17B,UAAU47B,MAAQ,WAAoB,OAAO5/B,IAAM,EAE7D0/B,EAAU17B,UAAU67B,MAAQ,SAAgBvqB,GAAW,OAAOtV,KAAK8/B,UAAUD,MAAMvqB,EAAU,EAE7FoqB,EAAU17B,UAAU87B,QAAU,WAAsB,OAAO9/B,IAAM,EAEjE0/B,EAAU17B,UAAU+7B,MAAQ,SAAgBzqB,GAAW,MAAO,IAAMtV,KAAK6/B,MAAMvqB,EAAU,EAEzFoqB,EAAU17B,UAAUg8B,UAAY,WAC5B,IAAIC,EAAMjgC,KAAK8/B,UACf,MAAQ,QAAWG,EAAIjR,EAAK,KAAQiR,EAAI9jB,EAAK,KAAQ8jB,EAAIr1B,EAAK,KAAQV,WAAYia,OAAOnkB,KAAK6uB,GAAIqR,QAAQ,IAAO,GACrH,EAEAR,EAAU17B,UAAUm8B,UAAY,WAC5B,OAAI9V,GAAQO,MAAQP,GAAQtZ,QAAU,EAC3B/Q,KAAK+/B,QAET//B,KAAKggC,WAChB,EAEAN,EAAU17B,UAAUutB,OAAS,SAAiB9pB,GAC1C,OAAOA,IAAMzH,MAAgB,OAANyH,QAAoBhU,IAANgU,GAAoBzH,KAAKggC,cAAgBI,GAAW34B,GAAGu4B,WAChG,EAEAN,EAAU17B,UAAU4c,KAAO,SAAe5T,GACtC,GAAc,OAAVA,EACA,OAAOqzB,IAGX,IAAIC,EAAKtgC,KAAK8/B,UACVS,EAAKvzB,EAAM8yB,UAEf,OAAOhf,KAAK0f,KAAK1f,KAAKuI,IAAoB,IAAfiX,EAAGtR,EAAIuR,EAAGvR,GAAW,GAC/BlO,KAAKuI,IAAoB,KAAfiX,EAAGnkB,EAAIokB,EAAGpkB,GAAW,GAC/B2E,KAAKuI,IAAoB,KAAfiX,EAAG11B,EAAI21B,EAAG31B,GAAW,GACpD,EAEA80B,EAAU17B,UAAU6iB,MAAQ,WACxB,IAAIpf,EAAIzH,KAAK8/B,UAKb,OAJIr4B,IAAMzH,OACNyH,EAAI,IAAIg5B,GAAMh5B,EAAEunB,EAAGvnB,EAAE0U,EAAG1U,EAAEmD,EAAGnD,EAAEonB,IAG5BpnB,CACX,EAEOi4B,CACX,CAvDiB,CAuDfzO,IAEEyP,GAAO,SAAUhB,GACjB,SAASgB,EAAI1R,EAAG7S,EAAGvR,EAAGikB,GAClB6Q,EAAU18B,KAAKhD,MAEfA,KAAKgvB,EAAIA,EACThvB,KAAKmc,EAAIA,EACTnc,KAAK4K,EAAIA,EACT5K,KAAK6uB,EAAIA,CACb,CAwEA,OAtEK6Q,IAAYgB,EAAI31B,UAAY20B,GACjCgB,EAAI18B,UAAY6G,OAAOS,OAAQo0B,GAAaA,EAAU17B,WACtD08B,EAAI18B,UAAUqH,YAAcq1B,EAE5BA,EAAI18B,UAAU27B,MAAQ,WAClB,IAQItO,EAAG5lB,EARHlZ,EAAMyN,KACNgvB,EAAIz8B,EAAIy8B,EACR7S,EAAI5pB,EAAI4pB,EACRvR,EAAIrY,EAAIqY,EACR+jB,EAAM7N,KAAK6N,IAAIK,EAAG7S,EAAGvR,GACrB4gB,EAAM1K,KAAK0K,IAAIwD,EAAG7S,EAAGvR,GACrB0gB,EAAQE,EAAMmD,EACdjzB,EAAI8vB,EAGR,OAAc,IAAVF,EACO,IAAIqV,GAAI,EAAG,EAAGjlC,EAAGsE,KAAK6uB,IAGrB,IAARrD,GACA/f,EAAI6f,EAAQE,EAER6F,EADArC,IAAMxD,GACDrP,EAAIvR,GAAK0gB,EACPnP,IAAMqP,EACT,GAAK5gB,EAAIokB,GAAK1D,EAEd,GAAK0D,EAAI7S,GAAKmP,GAGtB+F,GAAK,IACG,IACJA,GAAK,OAGT5lB,EAAI,EACJ4lB,GAAK,GAGF,IAAIsP,GAAItP,EAAG5lB,EAAG/P,EAAGsE,KAAK6uB,GACjC,EAEA6R,EAAI18B,UAAU48B,MAAQ,WAClB,IAMIvP,EAAG5lB,EANHlZ,EAAMyN,KACNgvB,EAAIz8B,EAAIy8B,EACR7S,EAAI5pB,EAAI4pB,EACRvR,EAAIrY,EAAIqY,EACR4gB,EAAM1K,KAAK0K,IAAIwD,EAAG7S,EAAGvR,GACrB+jB,EAAM7N,KAAK6N,IAAIK,EAAG7S,EAAGvR,GACfi2B,GAAKrV,EAAMmD,GAAO,EAE5B,GAAInD,IAAQmD,EACR0C,EAAI5lB,EAAI,MACL,CACH,IAAId,EAAI6gB,EAAMmD,EAEd,OADAljB,EAAIo1B,EAAI,GAAMl2B,GAAK,EAAI6gB,EAAMmD,GAAOhkB,GAAK6gB,EAAMmD,GACvCnD,GACJ,KAAKwD,EAAGqC,GAAKlV,EAAIvR,GAAKD,GAAKwR,EAAIvR,EAAI,EAAI,GAAI,MAC3C,KAAKuR,EAAGkV,GAAKzmB,EAAIokB,GAAKrkB,EAAI,EAAG,MAC7B,KAAKC,EAAGymB,GAAKrC,EAAI7S,GAAKxR,EAAI,EAGlC,CAEA,OAAO,IAAIm2B,GAAQ,GAAJzP,EAAY,IAAJ5lB,EAAa,IAAJo1B,EAAS7gC,KAAK6uB,EAClD,EAEA6R,EAAI18B,UAAU87B,QAAU,WACpB,OAAO,IAAIW,GAAe,IAATzgC,KAAKgvB,EAAkB,IAAThvB,KAAKmc,EAAkB,IAATnc,KAAK4K,EAAS5K,KAAK6uB,EACpE,EAEO6R,CACX,CAjFW,CAiFThB,IAEEe,GAAS,SAAUC,GACnB,SAASD,EAAMzR,EAAG7S,EAAGvR,EAAGikB,GACpB6R,EAAI19B,KAAKhD,KAAM8gB,KAAKE,MAAMgO,GAAIlO,KAAKE,MAAM7E,GAAI2E,KAAKE,MAAMpW,GAAIikB,EAChE,CAgCA,OA9BK6R,IAAMD,EAAM11B,UAAY21B,GAC7BD,EAAMz8B,UAAY6G,OAAOS,OAAQo1B,GAAOA,EAAI18B,WAC5Cy8B,EAAMz8B,UAAUqH,YAAco1B,EAE9BA,EAAMz8B,UAAU47B,MAAQ,WACpB,OAAO,IAAIc,EAAI1gC,KAAKgvB,EAAI,IAAKhvB,KAAKmc,EAAI,IAAKnc,KAAK4K,EAAI,IAAK5K,KAAK6uB,EAClE,EAEA4R,EAAMz8B,UAAU27B,MAAQ,WACpB,OAAO3/B,KAAK4/B,QAAQD,OACxB,EAEAc,EAAMz8B,UAAU48B,MAAQ,WACpB,OAAO5gC,KAAK4/B,QAAQgB,OACxB,EAEAH,EAAMz8B,UAAU67B,MAAQ,SAAgBvqB,GACpC,IAAInY,EAAQ4jC,GAAI/gC,KAAKgvB,EAAG,GAAK+R,GAAI/gC,KAAKmc,EAAG,GAAK4kB,GAAI/gC,KAAK4K,EAAG,GAM1D,OAJI0K,GAAWA,EAAQ0rB,QACnB7jC,GAAS4jC,GAAIjgB,KAAKE,MAAe,IAAThhB,KAAK6uB,GAAU,IAGpC1xB,CACX,EAEAsjC,EAAMz8B,UAAU87B,QAAU,WACtB,OAAO9/B,IACX,EAEOygC,CACX,CApCa,CAoCXC,IAEF,SAASK,GAAIp1B,EAAGnX,EAAOysC,QACN,IAARA,IAAiBA,EAAM,KAG5B,IADA,IAAI7oC,EAASuT,EAAEpL,SAAS,IACjB/L,EAAQ4D,EAAOgC,QAClBhC,EAAS6oC,EAAM7oC,EAGnB,OAAOA,CACX,CAEA,IAAIuoC,GAAO,SAAUjB,GACjB,SAASiB,EAAItP,EAAG5lB,EAAG/P,EAAGmzB,GAClB6Q,EAAU18B,KAAKhD,MAEfA,KAAKqxB,EAAIA,EACTrxB,KAAKyL,EAAIA,EACTzL,KAAKtE,EAAIA,EACTsE,KAAK6uB,EAAIA,CACb,CA6CA,OA3CK6Q,IAAYiB,EAAI51B,UAAY20B,GACjCiB,EAAI38B,UAAY6G,OAAOS,OAAQo0B,GAAaA,EAAU17B,WACtD28B,EAAI38B,UAAUqH,YAAcs1B,EAE5BA,EAAI38B,UAAU47B,MAAQ,WAClB,IAII5Q,EAAG7S,EAAGvR,EAJNrY,EAAMyN,KACNqxB,EAAI9+B,EAAI8+B,EACR5lB,EAAIlZ,EAAIkZ,EACR/P,EAAInJ,EAAImJ,EAGZ,GAAU,IAAN+P,EACAujB,EAAI7S,EAAIvR,EAAIlP,MACT,CACH21B,GAAK,GAEL,IAAI3lB,EAAIoV,KAAK8K,MAAMyF,GACfhV,EAAIgV,EAAI3lB,EACRV,EAAItP,GAAK,EAAI+P,GACby1B,EAAIxlC,GAAK,EAAI+P,EAAI4Q,GACjB3jB,EAAIgD,GAAK,EAAI+P,GAAK,EAAI4Q,IAE1B,OAAQ3Q,GACJ,KAAK,EAAGsjB,EAAItzB,EAAGygB,EAAIzjB,EAAGkS,EAAII,EAAG,MAC7B,KAAK,EAAGgkB,EAAIkS,EAAG/kB,EAAIzgB,EAAGkP,EAAII,EAAG,MAC7B,KAAK,EAAGgkB,EAAIhkB,EAAGmR,EAAIzgB,EAAGkP,EAAIlS,EAAG,MAC7B,KAAK,EAAGs2B,EAAIhkB,EAAGmR,EAAI+kB,EAAGt2B,EAAIlP,EAAG,MAC7B,KAAK,EAAGszB,EAAIt2B,EAAGyjB,EAAInR,EAAGJ,EAAIlP,EAAG,MAC7B,QAASszB,EAAItzB,EAAGygB,EAAInR,EAAGJ,EAAIs2B,EAEnC,CAEA,OAAO,IAAIR,GAAI1R,EAAG7S,EAAGvR,EAAG5K,KAAK6uB,EACjC,EAEA8R,EAAI38B,UAAU48B,MAAQ,WAClB,OAAO5gC,KAAK4/B,QAAQgB,OACxB,EAEAD,EAAI38B,UAAU87B,QAAU,WACpB,OAAO9/B,KAAK4/B,QAAQE,SACxB,EAEOa,CACX,CAtDW,CAsDTjB,IAEEoB,GAAO,SAAUpB,GACjB,SAASoB,EAAIzP,EAAG5lB,EAAGo1B,EAAGhS,GAClB6Q,EAAU18B,KAAKhD,MAEfA,KAAKqxB,EAAIA,EACTrxB,KAAKyL,EAAIA,EACTzL,KAAK6gC,EAAIA,EACT7gC,KAAK6uB,EAAIA,CACb,CAiCA,OA/BK6Q,IAAYoB,EAAI/1B,UAAY20B,GACjCoB,EAAI98B,UAAY6G,OAAOS,OAAQo0B,GAAaA,EAAU17B,WACtD88B,EAAI98B,UAAUqH,YAAcy1B,EAE5BA,EAAI98B,UAAU47B,MAAQ,WAClB,IAGI5Q,EAAG7S,EAAGvR,EAHNymB,EAAIrxB,KAAKqxB,EAAI,IACb5lB,EAAIzL,KAAKyL,EAAI,IACbo1B,EAAI7gC,KAAK6gC,EAAI,IAGjB,GAAU,IAANp1B,EACAujB,EAAI7S,EAAIvR,EAAIi2B,MACT,CACH,IAAIK,EAAIL,EAAI,GAAMA,GAAK,EAAIp1B,GAAKo1B,EAAIp1B,EAAIo1B,EAAIp1B,EACxCT,EAAI,EAAI61B,EAAIK,EAChBlS,EAAImS,GAAQn2B,EAAGk2B,EAAG7P,EAAI,EAAI,GAC1BlV,EAAIglB,GAAQn2B,EAAGk2B,EAAG7P,GAClBzmB,EAAIu2B,GAAQn2B,EAAGk2B,EAAG7P,EAAI,EAAI,EAC9B,CAEA,OAAO,IAAIqP,GAAI1R,EAAG7S,EAAGvR,EAAG5K,KAAK6uB,EACjC,EAEAiS,EAAI98B,UAAU27B,MAAQ,WAClB,OAAO3/B,KAAK4/B,QAAQD,OACxB,EAEAmB,EAAI98B,UAAU87B,QAAU,WACpB,OAAO9/B,KAAK4/B,QAAQE,SACxB,EAEOgB,CACX,CA1CW,CA0CTpB,IAEF,SAASyB,GAAQn2B,EAAGk2B,EAAGz1B,GACnB,IAAI/S,EAAI+S,EAUR,OARI/S,EAAI,IACJA,GAAK,GAGLA,EAAI,IACJA,GAAK,GAGLA,EAAI,EAAI,EACDsS,EAAc,GAATk2B,EAAIl2B,GAAStS,EAGzBA,EAAI,GACGwoC,EAGPxoC,EAAI,EAAI,EACDsS,GAAKk2B,EAAIl2B,IAAM,EAAI,EAAItS,GAAK,EAGhCsS,CACX,CAEA,SAASo2B,GAAavS,GAClB,OAAO3kB,WAAWA,WAAW8gB,SAAS6D,EAAG,IAAM,KAAMqR,QAAQ,GACjE,CAIe,SAASE,GAAWjjC,EAAOkkC,GACtC,IAAIxsB,EAAGysB,EAEP,GAAa,MAATnkC,GAA2B,SAAVA,EACjB,OAAO,KAGX,GAAIA,aAAiBuiC,GACjB,OAAOviC,EAGX,IAAIqxB,EAAQrxB,EAAM4tB,cAClB,GAAKlW,EAAIyqB,GAAgB9Q,GAOrB,OALIA,EADS,gBAAT3Z,EAAE,GACM,IAAI6rB,GAAI,EAAG,EAAG,EAAG,GAEjBN,GAAWZ,GAAY3qB,EAAE,IAAKwsB,IAEpC5Y,MAAQ,CAAE5T,EAAE,IACX2Z,EAsCX,IApCK3Z,EAAI,gDAAgDyK,KAAKkP,IAC1D8S,EAAM,IAAIb,GAAMzV,SAASnW,EAAE,GAAI,IACfmW,SAASnW,EAAE,GAAI,IACfmW,SAASnW,EAAE,GAAI,IAAK,IAC5BA,EAAI,uCAAuCyK,KAAKkP,IACxD8S,EAAM,IAAIb,GAAMzV,SAASnW,EAAE,GAAKA,EAAE,GAAI,IACtBmW,SAASnW,EAAE,GAAKA,EAAE,GAAI,IACtBmW,SAASnW,EAAE,GAAKA,EAAE,GAAI,IAAK,IACnCA,EAAI,iDAAiDyK,KAAKkP,IAClE8S,EAAM,IAAIb,GAAMzV,SAASnW,EAAE,GAAKA,EAAE,GAAI,IACtBmW,SAASnW,EAAE,GAAKA,EAAE,GAAI,IACtBmW,SAASnW,EAAE,GAAKA,EAAE,GAAI,IACtBusB,GAAavsB,EAAE,GAAKA,EAAE,MAC9BA,EAAI,6DAA6DyK,KAAKkP,IAC9E8S,EAAM,IAAIb,GAAMzV,SAASnW,EAAE,GAAI,IACfmW,SAASnW,EAAE,GAAI,IACfmW,SAASnW,EAAE,GAAI,IACfusB,GAAavsB,EAAE,MACvBA,EAAI,uDAAuDyK,KAAKkP,IACxE8S,EAAM,IAAIb,GAAMzV,SAASnW,EAAE,GAAI,IACfmW,SAASnW,EAAE,GAAI,IACfmW,SAASnW,EAAE,GAAI,IAAK,IAC5BA,EAAI,wEAAwEyK,KAAKkP,IACzF8S,EAAM,IAAIb,GAAMzV,SAASnW,EAAE,GAAI,IACfmW,SAASnW,EAAE,GAAI,IACfmW,SAASnW,EAAE,GAAI,IAAK3K,WAAW2K,EAAE,MACzCA,EAAI,qFAAqFyK,KAAKkP,IACtG8S,EAAM,IAAIZ,GAAIx2B,WAAW2K,EAAE,IAAM,IACnB3K,WAAW2K,EAAE,IAAM,IACnB3K,WAAW2K,EAAE,IAAM,IAAK,IAC9BA,EAAI,sGAAsGyK,KAAKkP,MACvH8S,EAAM,IAAIZ,GAAIx2B,WAAW2K,EAAE,IAAM,IACnB3K,WAAW2K,EAAE,IAAM,IACnB3K,WAAW2K,EAAE,IAAM,IAAK3K,WAAW2K,EAAE,MAGnDysB,EACAA,EAAI7Y,MAAQ5T,OACT,IAAKwsB,EACR,MAAM,IAAIjhC,MAAM,uBAAyBouB,GAG7C,OAAO8S,CACX,CC7YA,IAEIC,GAAS,SAAUtQ,GACnB,SAASsQ,EAAMpkC,GACX,IAAIqkC,EAASxhC,KAIb,GAFAixB,EAAMjuB,KAAKhD,MAEc,IAArB+H,UAAU3N,OAIV,IAHA,IAAIqnC,EAAUF,EAAME,QAChBC,EAAgB1hC,KAAK2hC,aAAaxkC,GAE7BsX,EAAM,EAAGA,EAAMgtB,EAAQrnC,OAAQqa,IAAO,CAC3C,IAAImtB,EAAcH,EAAQhtB,GAAKotB,GAC3BC,EAAYL,EAAQhtB,GAAKpb,QACzBq6B,EAAQkO,EAAYtiB,KAAKoiB,GAE7B,GAAIhO,EAAO,CACP,IAAIqO,EAAWD,EAAUpO,GACzB8N,EAAOxS,EAAI+S,EAAS,GACpBP,EAAOrlB,EAAI4lB,EAAS,GACpBP,EAAO52B,EAAIm3B,EAAS,EACxB,CACJ,MAEA/hC,KAAKgvB,EAAIjnB,UAAU,GACnB/H,KAAKmc,EAAIpU,UAAU,GACnB/H,KAAK4K,EAAI7C,UAAU,GAGvB/H,KAAKgvB,EAAIhvB,KAAKgiC,cAAchiC,KAAKgvB,GACjChvB,KAAKmc,EAAInc,KAAKgiC,cAAchiC,KAAKmc,GACjCnc,KAAK4K,EAAI5K,KAAKgiC,cAAchiC,KAAK4K,EACrC,CA2EA,OAzEKqmB,IAAQsQ,EAAMx2B,UAAYkmB,GAC/BsQ,EAAMv9B,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAChDu9B,EAAMv9B,UAAUqH,YAAck2B,EAE9BA,EAAMv9B,UAAU67B,MAAQ,WACpB,IAAIoB,EAAMjhC,KAAKiiC,SACXjT,EAAIhvB,KAAKgvB,EAAEzuB,SAAS,IACpB4b,EAAInc,KAAKmc,EAAE5b,SAAS,IACpBqK,EAAI5K,KAAK4K,EAAErK,SAAS,IAExB,MAAO,IAAM0gC,EAAIjS,GAAKiS,EAAI9kB,GAAK8kB,EAAIr2B,EACvC,EAEA22B,EAAMv9B,UAAU29B,aAAe,SAAuBxkC,GAClD,IAAIqxB,EAAQrxB,GAAS,QAUrB,MARwB,MAApBqxB,EAAM5xB,OAAO,KACb4xB,EAAQA,EAAM0T,OAAO,EAAG,IAI5B1T,GADAA,EAAQA,EAAMpsB,QAAQ,KAAM,KACd2oB,cACdyD,EAAQ+S,EAAM/B,YAAYhR,IAAUA,CAGxC,EAEA+S,EAAMv9B,UAAUg+B,cAAgB,SAAwB7kC,GACpD,OAAIA,EAAQ,GAAK8oB,MAAM9oB,GACZ,EAGJA,EAAQ,IAAM,IAAMA,CAC/B,EAEAokC,EAAMv9B,UAAUi+B,SAAW,SAAmB9kC,GAC1C,OAAyB,IAAjBA,EAAM/C,OAAgB,IAAM+C,EAAQA,CAChD,EAEAokC,EAAMv9B,UAAUm+B,WAAa,SAAqBhlC,GAC9C,IAAI6jB,EAAQF,KAAKE,MAMjB,OAJAhhB,KAAKgvB,EAAIhO,EAAMhhB,KAAKgiC,cAAchiC,KAAKgvB,EAAI7xB,IAC3C6C,KAAKmc,EAAI6E,EAAMhhB,KAAKgiC,cAAchiC,KAAKmc,EAAIhf,IAC3C6C,KAAK4K,EAAIoW,EAAMhhB,KAAKgiC,cAAchiC,KAAK4K,EAAIzN,IAEpC6C,IACX,EAEAuhC,EAAMv9B,UAAUo+B,eAAiB,WAC7B,OAAOthB,KAAK0f,KAAK,KAAQxgC,KAAKgvB,EAAIhvB,KAAKgvB,EAAI,KAAQhvB,KAAKmc,EAAInc,KAAKmc,EAAI,KAAQnc,KAAK4K,EAAI5K,KAAK4K,EAC/F,EAEA22B,EAAMv9B,UAAUq+B,OAAS,WACrB,OAAOriC,KAAKoiC,iBAzFA,GA0FhB,EAEAb,EAAMe,UAAY,SAAoBtT,EAAG7S,EAAGvR,EAAGikB,GAC3C,OAAO,IAAI4R,GAAMzR,EAAG7S,EAAGvR,EAAQ,MAALikB,EAAYA,EAAI,EAC9C,EAEA0S,EAAMgB,QAAU,SAAkBvT,EAAG7S,EAAGvR,EAAGikB,GACvC,OAAO,IAAI6R,GAAI1R,EAAG7S,EAAGvR,EAAQ,MAALikB,EAAYA,EAAI,EAC5C,EAEA0S,EAAMiB,QAAU,SAAkBnR,EAAG5lB,EAAG/P,EAAGmzB,GACvC,OAAO,IAAI8R,GAAItP,EAAG5lB,EAAG/P,EAAQ,MAALmzB,EAAYA,EAAI,EAC5C,EAEA0S,EAAMkB,QAAU,SAAkBpR,EAAG5lB,EAAGo1B,EAAGhS,GACvC,OAAO,IAAIiS,GAAIzP,EAAG5lB,EAAGo1B,EAAQ,MAALhS,EAAYA,EAAI,EAC5C,EAEO0S,CACX,CA3Ga,CA2GXtQ,IAEFsQ,GAAME,QAAU,CAAE,CACdI,GAAI,+CACJxoC,QAAS,SAASq6B,GACd,MAAO,CACH1I,SAAS0I,EAAM,GAAI,IAAK1I,SAAS0I,EAAM,GAAI,IAAK1I,SAAS0I,EAAM,GAAI,IAE3E,GACD,CACCmO,GAAI,0BACJxoC,QAAS,SAASq6B,GACd,MAAO,CACH1I,SAAS0I,EAAM,GAAI,IAAK1I,SAAS0I,EAAM,GAAI,IAAK1I,SAAS0I,EAAM,GAAI,IAE3E,GACD,CACCmO,GAAI,0BACJxoC,QAAS,SAASq6B,GACd,MAAO,CACH1I,SAAS0I,EAAM,GAAKA,EAAM,GAAI,IAC9B1I,SAAS0I,EAAM,GAAKA,EAAM,GAAI,IAC9B1I,SAAS0I,EAAM,GAAKA,EAAM,GAAI,IAEtC,IAGJ6N,GAAM/B,YAAcA,GAEpB,UClIA,OATA,SAAuBhR,GAEnB,OADa,IAAI+S,GAAM/S,GAAO6T,SAEnBxd,EAGJvB,CACX,ECVIof,GAAU,CAAC,EAEXC,GAAY,SAAmB5yB,GAG/B/P,KAAK4iC,OAAS,CAAC,EACf5iC,KAAK6iC,QAAU9yB,EAASA,EAAO2K,MAAM,GAAK,GAE1C,IAAK,IAAIhP,EAAI,EAAGA,EAAI1L,KAAK6iC,QAAQzoC,OAAQsR,IAL5B1L,KAMF4iC,OANE5iC,KAMY6iC,QAAQn3B,IAAMA,CAE3C,EAEIo3B,GAAqB,CAAElsC,KAAM,CAAE0V,cAAc,IAEjDq2B,GAAU3+B,UAAU+L,OAAS,WACzB,OAAO/P,KAAK6iC,QAAQE,QAAO,SAAU9M,GAAQ,OAAOA,IAASyM,EAAS,GAC1E,EAEAC,GAAU3+B,UAAUg/B,IAAM,SAAc7lC,GACpC,YAA8B1J,IAAvBuM,KAAK4iC,OAAOzlC,EACvB,EAEAwlC,GAAU3+B,UAAUmF,IAAM,SAAchM,GAC/B6C,KAAKgjC,IAAI7lC,KACV6C,KAAK4iC,OAAOzlC,GAAS6C,KAAK6iC,QAAQzoC,OAClC4F,KAAK6iC,QAAQzzB,KAAKjS,GAE1B,EAEAwlC,GAAU3+B,UAAU+X,OAAS,SAAmB5e,GAC5C,IAAI7C,EAAQ0F,KAAK4iC,OAAOzlC,QACV1J,IAAV6G,IACA0F,KAAK6iC,QAAQvoC,GAASooC,UACf1iC,KAAK4iC,OAAOzlC,GAE3B,EAEAwlC,GAAU3+B,UAAUi/B,MAAQ,WACxBjjC,KAAK4iC,OAAS,CAAC,EACf5iC,KAAK6iC,QAAU,EACnB,EAEAC,GAAmBlsC,KAAKwV,IAAM,WAC1B,OAAOpM,KAAK6iC,QAAQzoC,MACxB,EAEAyQ,OAAOq4B,iBAAkBP,GAAU3+B,UAAW8+B,IAE9C,IAAIK,GAAa,SAAoBpzB,GACjC/P,KAAKojC,KAAO,IAAIC,IAAItzB,EACxB,EAEIuzB,GAAuB,CAAE1sC,KAAM,CAAE0V,cAAc,IAEnD62B,GAAWn/B,UAAU+L,OAAS,WAC1B,OAAO5a,MAAMouC,KAAKvjC,KAAKojC,KAC3B,EAEAD,GAAWn/B,UAAUg/B,IAAM,SAAc7lC,GACrC,OAAO6C,KAAKojC,KAAKJ,IAAI7lC,EACzB,EAEAgmC,GAAWn/B,UAAUmF,IAAM,SAAchM,GACrC6C,KAAKojC,KAAKj6B,IAAIhM,EAClB,EAEAgmC,GAAWn/B,UAAU+X,OAAS,SAAmB5e,GAC7C6C,KAAKojC,KAAKrnB,OAAO5e,EACrB,EAEAgmC,GAAWn/B,UAAUi/B,MAAQ,WACzBjjC,KAAKojC,KAAKH,OACd,EAEAK,GAAqB1sC,KAAKwV,IAAM,WAC5B,OAAOpM,KAAKojC,KAAKxsC,IACrB,EAEAiU,OAAOq4B,iBAAkBC,GAAWn/B,UAAWs/B,IAchC,SAASE,GAAczzB,GAClC,OAZc,WACd,IAAI0zB,GAAY,EAOhB,MALmB,oBAARJ,MAEPI,EADU,IAAIJ,IAAI,CAAC,IACHL,IAAI,IAGjBS,CACX,CAGQC,GACO,IAAIP,GAAWpzB,GAGnB,IAAI4yB,GAAU5yB,EACzB,CCnGe,SAAS4zB,GAAoB/jC,GACxC,MAAMA,CACV,CCFA,IAwBA,GAxBW,CACPgkC,OAAQ,GACRC,OAAQ,GACRC,UAAW,EACXC,IAAK,EACLC,MAAO,GACPC,IAAK,GACLhgB,KAAM,GACNigB,GAAI,GACJ1f,MAAO,GACP2f,KAAM,GACNC,IAAK,GACLC,KAAM,GACNC,SAAU,GACVC,OAAQ,GACRC,SAAU,GACVC,GAAI,IACJC,IAAK,IACLC,IAAK,IACLC,YAAa,IACbC,aAAc,IACdC,WAAY,KClBD,SAASC,GAAcpW,EAAKnD,GACvC,IAAI5K,EAAOI,GAAMwK,EAAMmD,EAAK9K,GAE5B,GAAa,IAATjD,EAAY,CACZ,GAAY,IAAR4K,EACA,MAAO,GAGX5K,EAAOE,KAAKC,IAAIyK,EACpB,CAEA,IAAIwG,EAAQlR,KAAKuI,IAAI,GAAIvI,KAAK8K,MAAM9K,KAAKoU,IAAItU,GAAQE,KAAKoU,IAAI,MAC1D8P,EAAgBhkB,GAAOJ,EAAOoR,EAAQnO,GAa1C,OAAO7C,GAAMgR,GAVTgT,EAAgB,SACE,GACXA,EAAgB,SACL,GACXA,EAAgB,SACL,EAEA,GAGgBnhB,EAC1C,CC1BA,IAAIohB,GAAS,SAAUhU,GACnB,SAASgU,EAAMlf,EAAGC,GACdiL,EAAMjuB,KAAKhD,MAEXA,KAAK+lB,EAAIA,GAAK,EACd/lB,KAAKgmB,EAAIA,GAAK,CAClB,CA6DA,OA3DKiL,IAAQgU,EAAMl6B,UAAYkmB,GAC/BgU,EAAMjhC,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAChDihC,EAAMjhC,UAAUqH,YAAc45B,EAE9BA,EAAMjhC,UAAU6iB,MAAQ,WACpB,OAAO,IAAIoe,EAAMjlC,KAAK+lB,EAAG/lB,KAAKgmB,EAClC,EAEAif,EAAMjhC,UAAUutB,OAAS,SAAiB2T,GACtC,OAAOA,GAASllC,KAAK+lB,IAAMmf,EAAMnf,GAAK/lB,KAAKgmB,IAAMkf,EAAMlf,CAC3D,EAEAif,EAAMjhC,UAAU4tB,OAAS,SAAiBuT,EAAQ3V,GAC9C,IAAI4V,EAAQ7V,GAAIC,GACZ6V,EAAOvkB,KAAKgR,IAAIsT,GAChBE,EAAOxkB,KAAKiR,IAAIqT,GAChBG,EAAKJ,EAAOpf,EACZyf,EAAKL,EAAOnf,EAEZD,EADM/lB,KACE+lB,EACRC,EAFMhmB,KAEEgmB,EAYZ,OAVAhmB,KAAK+lB,EAAI/E,GACLukB,GAAMxf,EAAIwf,GAAMF,GAAQrf,EAAIwf,GAAMF,E3E5BjB,G2EgCrBtlC,KAAKgmB,EAAIhF,GACLwkB,GAAMxf,EAAIwf,GAAMH,GAAQtf,EAAIwf,GAAMD,E3EjCjB,G2EqCdtlC,IACX,EAEAilC,EAAMjhC,UAAUyhC,SAAW,SAAmB5W,GAK1C,OAHA7uB,KAAK+lB,GAAK8I,EACV7uB,KAAKgmB,GAAK6I,EAEH7uB,IACX,EAEAilC,EAAMjhC,UAAU0hC,WAAa,SAAqBR,GAC9C,IAAIS,EAAK3lC,KAAK+lB,EAAImf,EAAMnf,EACpB6f,EAAK5lC,KAAKgmB,EAAIkf,EAAMlf,EAExB,OAAOlF,KAAK0f,KAAKmF,EAAKA,EAAKC,EAAKA,EACpC,EAEAX,EAAMY,SAAW,SAAmBV,EAAQtT,EAAOiU,GAC/C,IAAI7Y,EAAUsC,GAAIsC,GAElB,OAAO,IAAIoT,EACPE,EAAOpf,EAAI+f,EAAShlB,KAAKgR,IAAI7E,GAC7BkY,EAAOnf,EAAI8f,EAAShlB,KAAKiR,IAAI9E,GAErC,EAEOgY,CACX,CApEa,CAoEXhU,IAGF,MCxEI8U,GAAgB,SAAU9U,GAC1B,SAAS8U,IACL9U,EAAM/oB,MAAMlI,KAAM+H,UACtB,CA0EA,OAxEKkpB,IAAQ8U,EAAah7B,UAAYkmB,GACtC8U,EAAa/hC,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACvD+hC,EAAa/hC,UAAUqH,YAAc06B,EAErCA,EAAa/hC,UAAUgiC,UAAY,WAE/B,OADAhmC,KAAKimC,WAAajmC,KAAKimC,YAAc,GAC9BjmC,KAAKimC,UAChB,EAEAF,EAAa/hC,UAAUkiC,YAAc,SAAsB1yC,GAMvD,OALKwM,KAAKimC,WAGNjmC,KAAKimC,WAAW72B,KAAK5b,GAFrBwM,KAAKimC,WAAa,CAAEzyC,GAIjBwM,IACX,EAEA+lC,EAAa/hC,UAAUmiC,eAAiB,SAAyB3yC,GAC7D,IAAIwyC,EAAYhmC,KAAKgmC,YACjB1rC,EAAQ0rC,EAAU38B,QAAQ7V,GAI9B,OAHe,IAAX8G,GACA0rC,EAAUI,OAAO9rC,EAAO,GAErB0F,IACX,EAEA+lC,EAAa/hC,UAAU+lB,QAAU,SAAkBsc,EAAY/pC,GAC3D,IAAI0pC,EAAYhmC,KAAKimC,WAErB,GAAID,IAAchmC,KAAKsmC,WACnB,IAAK,IAAI7xB,EAAM,EAAGA,EAAMuxB,EAAU5rC,OAAQqa,IAAO,CAC7C,IAAImV,EAAWoc,EAAUvxB,GACrBmV,EAASyc,IACTzc,EAASyc,GAAY/pC,EAE7B,CAEJ,OAAO0D,IACX,EAEA+lC,EAAa/hC,UAAUuiC,cAAgB,SAAwBvzC,QAChD,IAANA,IAAeA,EAAI,CAAC,GAEzBA,EAAEQ,QAAUwM,KACZA,KAAK+pB,QAAQ,gBAAiB/2B,EAClC,EAEA+yC,EAAa/hC,UAAUwiC,eAAiB,WACpCxmC,KAAK+pB,QAAQ,iBAAkB,CAC3Bv2B,QAASwM,MAEjB,EAEA+lC,EAAa/hC,UAAUyiC,QAAU,WAE7B,OADAzmC,KAAKsmC,YAActmC,KAAKsmC,YAAc,GAAK,EACpCtmC,IACX,EAEA+lC,EAAa/hC,UAAU0iC,OAAS,WAE5B,OADA1mC,KAAKsmC,WAAaxlB,KAAK0K,KAAKxrB,KAAKsmC,YAAc,GAAK,EAAG,GAChDtmC,IACX,EAEA+lC,EAAa/hC,UAAU2iC,eAAiB,SAAyB7oB,EAAO3gB,GAChE6C,KAAK8d,IACL9d,KAAK8d,GAAOqoB,eAAenmC,MAE/BA,KAAK8d,GAAS3gB,EACdA,EAAM+oC,YAAYlmC,KACtB,EAEO+lC,CACX,CA9EoB,CA8ElB9U,IAEF,MClFA,SAAS2V,GAAY9oB,GACjB,OAAO,SAAS3gB,GAMZ,OALI6C,KAAK8d,KAAW3gB,IAChB6C,KAAK8d,GAAS3gB,EACd6C,KAAKwmC,kBAGFxmC,IACX,CACJ,CAEA,SAAS6mC,GAAY/oB,GACjB,OAAO,WACH,OAAO9d,KAAK8d,EAChB,CACJ,CAaA,IAiBA,GAjBoB,SAAUgpB,EAAOhe,GACjC,IAAI1wB,EAAU,SAAU0uC,GACpB,SAAS1uC,IACL0uC,EAAM5+B,MAAMlI,KAAM+H,UACtB,CAMA,OANM++B,IAAQ1uC,EAAO2S,UAAY+7B,GACjC1uC,EAAO4L,UAAY6G,OAAOS,OAAQw7B,GAASA,EAAM9iC,WACjD5L,EAAO4L,UAAUqH,YAAcjT,EAIxBA,CACX,CAVc,CAUZ0uC,GAGF,OAzBJ,SAAyBzgB,EAAImC,GACzB,IAAK,IAAI9c,EAAI,EAAGA,EAAI8c,EAAOpuB,OAAQsR,IAAK,CACpC,IAAIiF,EAAO6X,EAAO9c,GACdq7B,EAAcp2B,EAAK/T,OAAO,GAAGoY,cACfrE,EAAKq2B,UAAU,EAAGr2B,EAAKvW,QAEzCisB,EAAG,MAAQ0gB,GAAeH,GAAYj2B,GACtC0V,EAAG,MAAQ0gB,GAAeF,GAAYl2B,EAC1C,CACJ,CAcIs2B,CAAgB7uC,EAAO4L,UAAW8kB,GAE3B1wB,CACX,EC3Ce,SAAS8uC,GAASC,GAC7B,OAAIA,GAAmD,oBAA1BA,EAAehW,OACjCgW,EAAehW,SAGnBgW,CACX,CCCA,IAAIlC,GAAS,SAAUmC,GACnB,SAASnC,EAAMlf,EAAGC,GACdohB,EAAWpkC,KAAKhD,MAEhBA,KAAK+lB,EAAIA,GAAK,EACd/lB,KAAKgmB,EAAIA,GAAK,CAClB,CAEKohB,IAAanC,EAAMl6B,UAAYq8B,GACpCnC,EAAMjhC,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC1DihC,EAAMjhC,UAAUqH,YAAc45B,EAE9B,IAAIoC,EAAkB,CAAEC,KAAM,CAAEh7B,cAAc,IAwK9C,OAtKA24B,EAAMjhC,UAAUutB,OAAS,SAAiBvkB,GACtC,OAAOA,GAASA,EAAM+Y,IAAM/lB,KAAK+lB,GAAK/Y,EAAMgZ,IAAMhmB,KAAKgmB,CAC3D,EAEAif,EAAMjhC,UAAU6iB,MAAQ,WACpB,OAAO,IAAIoe,EAAMjlC,KAAK+lB,EAAG/lB,KAAKgmB,EAClC,EAEAif,EAAMjhC,UAAU4tB,OAAS,SAAiBC,EAAO0V,GAC7C,IAAIC,EAAcvC,EAAM35B,OAAOi8B,IAAWtC,EAAMqC,KAEhD,OAAOtnC,KAAKsyB,UAAUtB,GAAAA,OAAca,EAAO2V,EAAYzhB,EAAGyhB,EAAYxhB,GAC1E,EAEAif,EAAMjhC,UAAU2hB,UAAY,SAAoBI,EAAGC,GAM/C,OALAhmB,KAAK+lB,GAAKA,EACV/lB,KAAKgmB,GAAKA,EAEVhmB,KAAKwmC,iBAEExmC,IACX,EAEAilC,EAAMjhC,UAAUyjC,cAAgB,SAAwBvC,GACpD,OAAOllC,KAAK2lB,UAAUuf,EAAMnf,EAAGmf,EAAMlf,EACzC,EAEAif,EAAMjhC,UAAU0jC,KAAO,SAAe3hB,EAAGC,GAErC,OADAhmB,KAAK+lB,EAAI/lB,KAAKgmB,EAAI,EACXhmB,KAAK2lB,UAAUI,EAAGC,EAC7B,EAEAif,EAAMjhC,UAAUguB,MAAQ,SAAgBC,EAAQC,GAQ5C,YAPgB,IAAXA,IAAoBA,EAASD,GAElCjyB,KAAK+lB,GAAKkM,EACVjyB,KAAKgmB,GAAKkM,EAEVlyB,KAAKwmC,iBAEExmC,IACX,EAEAilC,EAAMjhC,UAAU2jC,UAAY,SAAoB1V,EAAQC,GACpD,OAAOlyB,KAAK6mB,QAAQmL,MAAMC,EAAQC,EACtC,EAEA+S,EAAMjhC,UAAUsuB,UAAY,SAAoB6U,GAC5C,IAAIhW,EAAS+V,GAASC,GAElBphB,EADM/lB,KACE+lB,EACRC,EAFMhmB,KAEEgmB,EAOZ,OALAhmB,KAAK+lB,EAAIoL,EAAOtC,EAAI9I,EAAIoL,EAAO1pB,EAAIue,EAAImL,EAAOn+B,EAC9CgN,KAAKgmB,EAAImL,EAAOvmB,EAAImb,EAAIoL,EAAOxmB,EAAIqb,EAAImL,EAAO9U,EAE9Crc,KAAKwmC,iBAEExmC,IACX,EAEAilC,EAAMjhC,UAAU4jC,cAAgB,SAAwBT,GACpD,IAAIjC,EAAQllC,KAAK6mB,QAMjB,OAJIsgB,GACAjC,EAAM5S,UAAU6U,GAGbjC,CACX,EAEAD,EAAMjhC,UAAU0hC,WAAa,SAAqBR,GAC9C,IAAIS,EAAK3lC,KAAK+lB,EAAImf,EAAMnf,EACpB6f,EAAK5lC,KAAKgmB,EAAIkf,EAAMlf,EAExB,OAAOlF,KAAK0f,KAAKmF,EAAKA,EAAKC,EAAKA,EACpC,EAEAX,EAAMjhC,UAAUgd,MAAQ,SAAkB6mB,GAMtC,OALA7nC,KAAK+lB,EAAI/E,GAAMhhB,KAAK+lB,EAAG8hB,GACvB7nC,KAAKgmB,EAAIhF,GAAMhhB,KAAKgmB,EAAG6hB,GAEvB7nC,KAAKwmC,iBAEExmC,IACX,EAEAilC,EAAMjhC,UAAUwtB,QAAU,SAAkBqW,GACxC,IAAIC,EAAU3iB,EAAQ0iB,GAItB,MAAO,CAHCC,EAAU9mB,GAAMhhB,KAAK+lB,EAAG8hB,GAAU7nC,KAAK+lB,EACvC+hB,EAAU9mB,GAAMhhB,KAAKgmB,EAAG6hB,GAAU7nC,KAAKgmB,EAGnD,EAEAif,EAAMjhC,UAAUzD,SAAW,SAAmBsnC,EAAQpW,QAC/B,IAAdA,IAAuBA,EAAY,KAExC,IACI1L,EADM/lB,KACE+lB,EACRC,EAFMhmB,KAEEgmB,EAOZ,OALIb,EAAQ0iB,KACR9hB,EAAI/E,GAAM+E,EAAG8hB,GACb7hB,EAAIhF,GAAMgF,EAAG6hB,IAGV9hB,EAAI0L,EAAYzL,CAC3B,EAEAif,EAAM35B,OAAS,SAAiBy8B,EAAMC,GAClC,GAAI7iB,EAAQ4iB,GACR,OAAIA,aAAgB9C,EACT8C,EACqB,IAArBhgC,UAAU3N,QAAgC,IAAhB2tC,EAAK3tC,OAC/B,IAAI6qC,EAAM8C,EAAK,GAAIA,EAAK,IAG5B,IAAI9C,EAAM8C,EAAMC,EAE/B,EAEA/C,EAAMtW,IAAM,WAMR,IALA,IAAI3H,EAAcjf,UAEdkgC,EAAOnb,GACPob,EAAOpb,GAEFphB,EAAI,EAAGA,EAAI3D,UAAU3N,OAAQsR,IAAK,CACvC,IAAIw5B,EAAQle,EAAYtb,GACxBu8B,EAAOnnB,KAAK6N,IAAIuW,EAAMnf,EAAGkiB,GACzBC,EAAOpnB,KAAK6N,IAAIuW,EAAMlf,EAAGkiB,EAC7B,CAEA,OAAO,IAAIjD,EAAMgD,EAAMC,EAC3B,EAEAjD,EAAMzZ,IAAM,WAMR,IALA,IAAIxE,EAAcjf,UAEdogC,EAAOpb,GACPqb,EAAOrb,GAEFrhB,EAAI,EAAGA,EAAI3D,UAAU3N,OAAQsR,IAAK,CACvC,IAAIw5B,EAAQle,EAAYtb,GACxBy8B,EAAOrnB,KAAK0K,IAAI0Z,EAAMnf,EAAGoiB,GACzBC,EAAOtnB,KAAK0K,IAAI0Z,EAAMlf,EAAGoiB,EAC7B,CAEA,OAAO,IAAInD,EAAMkD,EAAMC,EAC3B,EAEAnD,EAAMoD,SAAW,WACb,OAAO,IAAIpD,EAAMlY,GAASA,GAC9B,EAEAkY,EAAMqD,SAAW,WACb,OAAO,IAAIrD,EAAMnY,GAASA,GAC9B,EAEAua,EAAgBC,KAAKl7B,IAAM,WACvB,OAAO,IAAI64B,EAAM,EAAG,EACxB,EAEAp6B,OAAOq4B,iBAAkB+B,EAAOoC,GAEzBpC,CACX,CArLa,CAqLXsD,GAAcxC,GAAc,CAAE,IAAK,OAErC,MCzLIyC,GAAQ,SAAUpB,GAClB,SAASoB,EAAKh0C,EAAOC,GACjB2yC,EAAWpkC,KAAKhD,MAEhBA,KAAKxL,MAAQA,GAAS,EACtBwL,KAAKvL,OAASA,GAAU,CAC5B,CAEK2yC,IAAaoB,EAAKz9B,UAAYq8B,GACnCoB,EAAKxkC,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACzDwkC,EAAKxkC,UAAUqH,YAAcm9B,EAE7B,IAAInB,EAAkB,CAAEC,KAAM,CAAEh7B,cAAc,IAoC9C,OAlCAk8B,EAAKxkC,UAAUutB,OAAS,SAAiBvkB,GACrC,OAAOA,GAASA,EAAMxY,QAAUwL,KAAKxL,OAASwY,EAAMvY,SAAWuL,KAAKvL,MACxE,EAEA+zC,EAAKxkC,UAAU6iB,MAAQ,WACnB,OAAO,IAAI2hB,EAAKxoC,KAAKxL,MAAOwL,KAAKvL,OACrC,EAEA+zC,EAAKxkC,UAAUwtB,QAAU,SAAkBqW,GACvC,IAAIC,EAAU3iB,EAAQ0iB,GAItB,MAAO,CAHKC,EAAU9mB,GAAMhhB,KAAKxL,MAAOqzC,GAAU7nC,KAAKxL,MAC1CszC,EAAU9mB,GAAMhhB,KAAKvL,OAAQozC,GAAU7nC,KAAKvL,OAG7D,EAEA+zC,EAAKl9B,OAAS,SAAiBy8B,EAAMC,GACjC,GAAI7iB,EAAQ4iB,GACR,OAAIA,aAAgBS,EACTT,EACqB,IAArBhgC,UAAU3N,QAAgC,IAAhB2tC,EAAK3tC,OAC/B,IAAIouC,EAAKT,EAAK,GAAIA,EAAK,IAG3B,IAAIS,EAAKT,EAAMC,EAE9B,EAEAX,EAAgBC,KAAKl7B,IAAM,WACvB,OAAO,IAAIo8B,EAAK,EAAG,EACvB,EAEA39B,OAAOq4B,iBAAkBsF,EAAMnB,GAExBmB,CACX,CAjDY,CAiDVD,GAAcxC,GAAc,CAAE,QAAS,YAEzC,MCpDI0C,GAAQ,SAAU1C,GAClB,SAAS0C,EAAKlB,EAAQ3wC,EAAM8xC,QACR,IAAXnB,IAAoBA,EAAS,IAAItC,SACxB,IAATruC,IAAkBA,EAAO,IAAI4xC,SACZ,IAAjBE,IAA0BA,EAAe,GAE9C3C,EAAa/iC,KAAKhD,MAElBA,KAAK2oC,UAAUpB,GACfvnC,KAAK4oC,QAAQhyC,GACboJ,KAAK6oC,gBAAgBH,EACzB,CAuKA,OArKK3C,IAAe0C,EAAK19B,UAAYg7B,GACrC0C,EAAKzkC,UAAY6G,OAAOS,OAAQy6B,GAAgBA,EAAa/hC,WAC7DykC,EAAKzkC,UAAUqH,YAAco9B,EAE7BA,EAAKzkC,UAAU6iB,MAAQ,WACnB,OAAO,IAAI4hB,EACPzoC,KAAKunC,OAAO1gB,QACZ7mB,KAAKpJ,KAAKiwB,QAElB,EAEA4hB,EAAKzkC,UAAUutB,OAAS,SAAiBvkB,GACrC,OAAOA,GACAA,EAAMu6B,OAAOhW,OAAOvxB,KAAKunC,SACzBv6B,EAAMpW,KAAK26B,OAAOvxB,KAAKpJ,KAClC,EAEA6xC,EAAKzkC,UAAU2kC,UAAY,SAAoBxrC,GAG3C,OAFA6C,KAAK2mC,eAAe,SAAU1B,GAAAA,OAAa9nC,IAC3C6C,KAAKwmC,iBACExmC,IACX,EAEAyoC,EAAKzkC,UAAU8kC,UAAY,WACvB,OAAO9oC,KAAKunC,MAChB,EAEAkB,EAAKzkC,UAAU6kC,gBAAkB,SAA0B/C,GAIvD,OAHA9lC,KAAK0oC,aAAevzC,MAAMC,QAAQ0wC,GAAUA,EAAS,CAAEA,EAAQA,GAE/D9lC,KAAKwmC,iBACExmC,IACX,EAEAyoC,EAAKzkC,UAAU+kC,gBAAkB,WAC7B,OAAO/oC,KAAK0oC,YAChB,EAEAD,EAAKzkC,UAAU4kC,QAAU,SAAkBzrC,GAGvC,OAFA6C,KAAK2mC,eAAe,OAAQ6B,GAAAA,OAAYrrC,IACxC6C,KAAKwmC,iBACExmC,IACX,EAEAyoC,EAAKzkC,UAAUglC,QAAU,WACrB,OAAOhpC,KAAKpJ,IAChB,EAEA6xC,EAAKzkC,UAAUxP,MAAQ,WACnB,OAAOwL,KAAKpJ,KAAKpC,KACrB,EAEAi0C,EAAKzkC,UAAUvP,OAAS,WACpB,OAAOuL,KAAKpJ,KAAKnC,MACrB,EAEAg0C,EAAKzkC,UAAUilC,QAAU,WACrB,OAAOjpC,KAAKunC,OAAO1gB,OACvB,EAEA4hB,EAAKzkC,UAAUklC,YAAc,WACzB,OAAOlpC,KAAKunC,OAAO1gB,QAAQlB,UAAU3lB,KAAKxL,QAASwL,KAAKvL,SAC5D,EAEAg0C,EAAKzkC,UAAUmlC,SAAW,WACtB,OAAOnpC,KAAKunC,OAAO1gB,QAAQlB,UAAU3lB,KAAKxL,QAAS,EACvD,EAEAi0C,EAAKzkC,UAAUolC,WAAa,WACxB,OAAOppC,KAAKunC,OAAO1gB,QAAQlB,UAAU,EAAG3lB,KAAKvL,SACjD,EAEAg0C,EAAKzkC,UAAUmhC,OAAS,WACpB,OAAOnlC,KAAKunC,OAAO1gB,QAAQlB,UAAU3lB,KAAKxL,QAAU,EAAGwL,KAAKvL,SAAW,EAC3E,EAEAg0C,EAAKzkC,UAAUqlC,KAAO,SAAelY,GACjC,IAAImY,EAAKtpC,KAAKipC,UAAUrB,cAAczW,GAClCoY,EAAKvpC,KAAKmpC,WAAWvB,cAAczW,GACnCqY,EAAKxpC,KAAKkpC,cAActB,cAAczW,GACtCsY,EAAKzpC,KAAKopC,aAAaxB,cAAczW,GAEzC,OAAOsX,EAAKiB,WAAWJ,EAAIC,EAAIC,EAAIC,EACvC,EAEAhB,EAAKzkC,UAAU4jC,cAAgB,SAAwB/yB,GACnD,OAAO4zB,EAAKiB,WACR1pC,KAAKipC,UAAU3W,UAAUzd,GACzB7U,KAAKkpC,cAAc5W,UAAUzd,GAErC,EAEA4zB,EAAKzkC,UAAU2lC,OAAS,SAAiB5jB,EAAGC,GASxC,YARW,IAANA,IAAeA,EAAID,GAGxB/lB,KAAKpJ,KAAKpC,OAAS,EAAIuxB,EACvB/lB,KAAKpJ,KAAKnC,QAAU,EAAIuxB,EAExBhmB,KAAKunC,OAAO5hB,WAAWI,GAAIC,GAEpBhmB,IACX,EAEAyoC,EAAKzkC,UAAU4lC,WAAa,SAAqB7jB,EAAGC,GAChD,OAAOhmB,KAAK6mB,QAAQ8iB,OAAO5jB,EAAGC,EAClC,EAEAyiB,EAAKzkC,UAAU6lC,cAAgB,SAAwB3E,GACnD,IAAIqC,EAASvnC,KAAKunC,OACd2B,EAAclpC,KAAKkpC,cACvB,QAAShE,EAAMnf,EAAIwhB,EAAOxhB,GAAKmf,EAAMlf,EAAIuhB,EAAOvhB,GAAKkjB,EAAYnjB,EAAImf,EAAMnf,GAAKmjB,EAAYljB,EAAIkf,EAAMlf,EAC1G,EAEAyiB,EAAKzkC,UAAU8lC,UAAY,SAAoB5E,EAAO1wC,GAClD,IAAIu1C,EAAY/pC,KAAK4pC,WAAWp1C,EAAOA,GACnCw1C,EAAYhqC,KAAK4pC,YAAYp1C,GAAQA,GAEzC,OAAOu1C,EAAUF,cAAc3E,KAAW8E,EAAUH,cAAc3E,EACtE,EAEAuD,EAAKiB,WAAa,WACd,IAAIT,EAAUhE,GAAAA,IAAAA,MAAgB,KAAMl9B,WAChCmhC,EAAcjE,GAAAA,IAAAA,MAAgB,KAAMl9B,WACpCnR,EAAO,IAAI4xC,GACXU,EAAYnjB,EAAIkjB,EAAQljB,EACxBmjB,EAAYljB,EAAIijB,EAAQjjB,GAG5B,OAAO,IAAIyiB,EAAKQ,EAASryC,EAC7B,EAEA6xC,EAAKwB,MAAQ,SAAgBpb,EAAGjkB,GAC5B,OAAO69B,EAAKiB,WACRzE,GAAAA,IAAUpW,EAAEoa,UAAWr+B,EAAEq+B,WACzBhE,GAAAA,IAAUpW,EAAEqa,cAAet+B,EAAEs+B,eAErC,EAEAT,EAAKyB,UAAY,SAAoBrb,EAAGjkB,GACpC,IAAIu/B,EAAQ,CACRriB,KAAM+G,EAAEoa,UAAUljB,EAClB4B,IAAKkH,EAAEoa,UAAUjjB,EACjB4B,MAAOiH,EAAEqa,cAAcnjB,EACvB8B,OAAQgH,EAAEqa,cAAcljB,GAGxBokB,EAAQ,CACRtiB,KAAMld,EAAEq+B,UAAUljB,EAClB4B,IAAK/c,EAAEq+B,UAAUjjB,EACjB4B,MAAOhd,EAAEs+B,cAAcnjB,EACvB8B,OAAQjd,EAAEs+B,cAAcljB,GAG5B,GAAImkB,EAAMriB,MAAQsiB,EAAMxiB,OACpBwiB,EAAMtiB,MAAQqiB,EAAMviB,OACpBuiB,EAAMxiB,KAAOyiB,EAAMviB,QACnBuiB,EAAMziB,KAAOwiB,EAAMtiB,OACnB,OAAO4gB,EAAKiB,WACR,IAAIzE,GAAMnkB,KAAK0K,IAAI2e,EAAMriB,KAAMsiB,EAAMtiB,MAAOhH,KAAK0K,IAAI2e,EAAMxiB,IAAKyiB,EAAMziB,MACtE,IAAIsd,GAAMnkB,KAAK6N,IAAIwb,EAAMviB,MAAOwiB,EAAMxiB,OAAQ9G,KAAK6N,IAAIwb,EAAMtiB,OAAQuiB,EAAMviB,SAGvF,EAEO4gB,CACX,CAnLY,CAmLV1C,IAEF,MClLIsE,GAAO,SAAUpZ,GACjB,SAASoZ,EAAIC,EAAIC,EAAIC,EAAIC,GACrBxZ,EAAMjuB,KAAKhD,MAEXA,KAAKsqC,GAAKA,GAAM,EAChBtqC,KAAKuqC,GAAKA,GAAM,EAChBvqC,KAAKwqC,GAAKA,GAAM,EAChBxqC,KAAKyqC,GAAKA,GAAM,CACpB,CA0NA,OAxNKxZ,IAAQoZ,EAAIt/B,UAAYkmB,GAC7BoZ,EAAIrmC,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC9CqmC,EAAIrmC,UAAUqH,YAAcg/B,EAE5BA,EAAIrmC,UAAUutB,OAAS,SAAiBtB,GACpC,OAAOjwB,KAAKsqC,KAAOra,EAAIqa,IAAMtqC,KAAKwqC,KAAOva,EAAIua,IACzCxqC,KAAKuqC,KAAOta,EAAIsa,IAAMvqC,KAAKyqC,KAAOxa,EAAIwa,EAC9C,EAEAJ,EAAIrmC,UAAUxP,MAAQ,WAClB,OAAOwL,KAAKwqC,GAAKxqC,KAAKsqC,EAC1B,EAEAD,EAAIrmC,UAAUvP,OAAS,WACnB,OAAOuL,KAAKyqC,GAAKzqC,KAAKuqC,EAC1B,EAEAF,EAAIrmC,UAAU2hB,UAAY,SAAoBggB,EAAIC,GAM9C,OALA5lC,KAAKsqC,IAAM3E,EACX3lC,KAAKwqC,IAAM7E,EACX3lC,KAAKuqC,IAAM3E,EACX5lC,KAAKyqC,IAAM7E,EAEJ5lC,IACX,EAEAqqC,EAAIrmC,UAAU0jC,KAAO,SAAe3hB,EAAGC,GACnC,IAAIvxB,EAASuL,KAAKvL,SACdD,EAAQwL,KAAKxL,QAYjB,OAVI2wB,GAAQY,KACR/lB,KAAKsqC,GAAKvkB,EACV/lB,KAAKwqC,GAAKxqC,KAAKsqC,GAAK91C,GAGpB2wB,GAAQa,KACRhmB,KAAKuqC,GAAKvkB,EACVhmB,KAAKyqC,GAAKzqC,KAAKuqC,GAAK91C,GAGjBuL,IACX,EAEAqqC,EAAIrmC,UAAU0mC,KAAO,SAAeC,GAMhC,OALA3qC,KAAKsqC,GAAKxpB,KAAK6N,IAAI3uB,KAAKsqC,GAAIK,EAAUL,IACtCtqC,KAAKuqC,GAAKzpB,KAAK6N,IAAI3uB,KAAKuqC,GAAII,EAAUJ,IACtCvqC,KAAKwqC,GAAK1pB,KAAK0K,IAAIxrB,KAAKwqC,GAAIG,EAAUH,IACtCxqC,KAAKyqC,GAAK3pB,KAAK0K,IAAIxrB,KAAKyqC,GAAIE,EAAUF,IAE/BzqC,IACX,EAEAqqC,EAAIrmC,UAAU4mC,UAAY,SAAoB1F,GAC1C,IAAI2F,EAAaz1C,EAAQ8vC,GACrBnf,EAAI8kB,EAAa3F,EAAM,GAAKA,EAAMnf,EAClCC,EAAI6kB,EAAa3F,EAAM,GAAKA,EAAMlf,EAGtC,OAFAhmB,KAAK0qC,KAAK,IAAIL,EAAItkB,EAAGC,EAAGD,EAAGC,IAEpBhmB,IACX,EAEAqqC,EAAIrmC,UAAU8mC,OAAS,SAAiBH,EAAWI,GAY/C,OAVIA,IAAShmB,GAAMgmB,IACf/qC,KAAKsqC,GAAKK,EAAUL,GACpBtqC,KAAKwqC,GAAKG,EAAUH,IAGpBO,IAAS/lB,GAAM+lB,IACf/qC,KAAKuqC,GAAKI,EAAUJ,GACpBvqC,KAAKyqC,GAAKE,EAAUF,IAGjBzqC,IACX,EAEAqqC,EAAIrmC,UAAUgnC,QAAU,SAAkBL,EAAWjlB,GACjD,IAAIjxB,EAASuL,KAAKvL,SACdD,EAAQwL,KAAKxL,QACbu2C,EAAOrlB,IAAWf,GAAOe,IAAWnC,EAASyB,EAAID,EACjDO,EAASylB,IAAS/lB,EAAIvwB,EAASD,EAEnC,GAAIkxB,IAAWlC,EAAQ,CACnB,IAAIynB,EAAeN,EAAUxF,SACzBA,EAASnlC,KAAKmlC,SAElBnlC,KAAKsqC,IAAMW,EAAallB,EAAIof,EAAOpf,EACnC/lB,KAAKuqC,IAAMU,EAAajlB,EAAImf,EAAOnf,CACvC,MACIhmB,KAAK+qC,EAAO,GADLrlB,IAAWf,GAAOe,IAAWzB,EACnB0mB,EAAUI,EAAO,GAAKzlB,EAEtBqlB,EAAUI,EAAO,GAMtC,OAHA/qC,KAAKwqC,GAAKxqC,KAAKsqC,GAAK91C,EACpBwL,KAAKyqC,GAAKzqC,KAAKuqC,GAAK91C,EAEbuL,IACX,EAEAqqC,EAAIrmC,UAAUknC,OAAS,SAAiBC,EAAIC,GAKxC,OAHAprC,KAAKwqC,IAAMW,EACXnrC,KAAKyqC,IAAMW,EAEJprC,IACX,EAEAqqC,EAAIrmC,UAAU2lC,OAAS,SAAiBwB,EAAIC,GAExC,OADAprC,KAAKkrC,QAAQC,GAAKC,GACXprC,IACX,EAEAqqC,EAAIrmC,UAAUi9B,IAAM,SAAcoK,GAC9B,IAAI3jB,EAAUF,GAAW6jB,GAOzB,OALArrC,KAAKsqC,IAAM5iB,EAAQI,KACnB9nB,KAAKwqC,IAAM9iB,EAAQE,MACnB5nB,KAAKuqC,IAAM7iB,EAAQC,IACnB3nB,KAAKyqC,IAAM/iB,EAAQG,OAEZ7nB,IACX,EAEAqqC,EAAIrmC,UAAUsnC,MAAQ,SAAgBD,GAClC,IAAI3jB,EAAUF,GAAW6jB,GAOzB,OALA3jB,EAAQI,MAAQJ,EAAQI,KACxBJ,EAAQC,KAAOD,EAAQC,IACvBD,EAAQE,OAASF,EAAQE,MACzBF,EAAQG,QAAUH,EAAQG,OAEnB7nB,KAAKihC,IAAIvZ,EACpB,EAEA2iB,EAAIrmC,UAAU6iB,MAAQ,WAClB,OAAO,IAAIwjB,EAAIrqC,KAAKsqC,GAAItqC,KAAKuqC,GAAIvqC,KAAKwqC,GAAIxqC,KAAKyqC,GACnD,EAEAJ,EAAIrmC,UAAUmhC,OAAS,WACnB,OAAO,IAAIF,GACPjlC,KAAKsqC,GAAKtqC,KAAKxL,QAAU,EACzBwL,KAAKuqC,GAAKvqC,KAAKvL,SAAW,EAElC,EAEA41C,EAAIrmC,UAAU6lC,cAAgB,SAAwB3E,GAElD,OAAOA,EAAMnf,GAAK/lB,KAAKsqC,IAAMpF,EAAMnf,GAAK/lB,KAAKwqC,IACtCtF,EAAMlf,GAAKhmB,KAAKuqC,IAAMrF,EAAMlf,GAAKhmB,KAAKyqC,EACjD,EAEAJ,EAAIrmC,UAAUunC,OAAS,WACnB,MAAO,CACH,IAAItG,GAAMjlC,KAAKsqC,GAAItqC,KAAKuqC,IACxB,IAAItF,GAAMjlC,KAAKwqC,GAAIxqC,KAAKuqC,IACxB,IAAItF,GAAMjlC,KAAKwqC,GAAIxqC,KAAKyqC,IACxB,IAAIxF,GAAMjlC,KAAKsqC,GAAItqC,KAAKyqC,IAEhC,EAEAJ,EAAIrmC,UAAUwnC,QAAU,WACpB,MAAO,CAAExrC,KAAKsqC,GAAItqC,KAAKuqC,GAAIvqC,KAAKwqC,GAAIxqC,KAAKyqC,IAAK/Y,KAAK,IACvD,EAEA2Y,EAAIrmC,UAAUynC,SAAW,SAAmBxb,GACxC,QAASA,EAAIwa,GAAKzqC,KAAKuqC,IAAMvqC,KAAKyqC,GAAKxa,EAAIsa,IAAMta,EAAIua,GAAKxqC,KAAKsqC,IAAMtqC,KAAKwqC,GAAKva,EAAIqa,GACvF,EAEAD,EAAIrmC,UAAU4tB,OAAS,SAAiB8Z,GACpC,IAAIl3C,EAAQwL,KAAKxL,QACbC,EAASuL,KAAKvL,SACdlC,EAAMyN,KAAKmlC,SACXI,EAAKhzC,EAAIwzB,EACTyf,EAAKjzC,EAAIyzB,EAET2lB,EAAKC,GAAY,EAAG,EAAGrG,EAAIC,EAAIkG,GAC/BG,EAAKD,GAAYp3C,EAAO,EAAG+wC,EAAIC,EAAIkG,GACnCI,EAAKF,GAAYp3C,EAAOC,EAAQ8wC,EAAIC,EAAIkG,GACxCK,EAAKH,GAAY,EAAGn3C,EAAQ8wC,EAAIC,EAAIkG,GAQxC,OANAl3C,EAAQssB,KAAK0K,IAAImgB,EAAG5lB,EAAG8lB,EAAG9lB,EAAG+lB,EAAG/lB,EAAGgmB,EAAGhmB,GAAKjF,KAAK6N,IAAIgd,EAAG5lB,EAAG8lB,EAAG9lB,EAAG+lB,EAAG/lB,EAAGgmB,EAAGhmB,GACzEtxB,EAASqsB,KAAK0K,IAAImgB,EAAG3lB,EAAG6lB,EAAG7lB,EAAG8lB,EAAG9lB,EAAG+lB,EAAG/lB,GAAKlF,KAAK6N,IAAIgd,EAAG3lB,EAAG6lB,EAAG7lB,EAAG8lB,EAAG9lB,EAAG+lB,EAAG/lB,GAE1EhmB,KAAKwqC,GAAKxqC,KAAKsqC,GAAK91C,EACpBwL,KAAKyqC,GAAKzqC,KAAKuqC,GAAK91C,EAEbuL,IACX,EAEAqqC,EAAIrmC,UAAUgoC,OAAS,WACnB,OAAO,IAAIC,GAAU,CAAEjsC,KAAKsqC,GAAItqC,KAAKuqC,IAAM,CAAEvqC,KAAKxL,QAASwL,KAAKvL,UACpE,EAEA41C,EAAIrmC,UAAUkoC,QAAU,WACpB,OAAwB,IAAjBlsC,KAAKxL,SAAmC,IAAlBwL,KAAKvL,QACtC,EAEA41C,EAAIrmC,UAAUmoC,MAAQ,SAAgBxB,EAAWI,EAAMqB,GACnD,IAAI9L,EAAKyK,EAAO,EACZxK,EAAKwK,EAAO,EACZsB,EAAWtB,IAAShmB,EAAID,EAAQf,EAChCntB,EAAOoJ,KAAKqsC,KAEZnjB,GAAQkjB,EAAW,CAAEnoB,EAAMU,KAC3B3kB,KAAKsgC,GAAMqK,EAAUrK,GACrBtgC,KAAKugC,GAAMvgC,KAAKsgC,GAAM1pC,GACfsyB,GAAQkjB,EAAW,CAAE5nB,EAAOjB,KACnCvjB,KAAKugC,GAAMoK,EAAUpK,GACrBvgC,KAAKsgC,GAAMtgC,KAAKugC,GAAM3pC,GACfw1C,IAAc5oB,IACrBxjB,KAAKsgC,GAAMqK,EAAUrK,IAAOqK,EAAU0B,KAAcz1C,GAAQ,EAC5DoJ,KAAKugC,GAAMvgC,KAAKsgC,GAAM1pC,EAE9B,EAEOyzC,CACX,CAnOW,CAmOTpZ,IAEF,SAAS2a,GAAY7lB,EAAGC,EAAGuf,EAAIC,EAAI3T,GAC/B,IAAIuT,EAAQ7V,GAAIsC,GAEhB,OAAO,IAAIoT,GACPM,GAAMxf,EAAIwf,GAAMzkB,KAAKgR,IAAIsT,IAAUpf,EAAIwf,GAAM1kB,KAAKiR,IAAIqT,GACtDI,GAAMzf,EAAIwf,GAAMzkB,KAAKiR,IAAIqT,IAAUpf,EAAIwf,GAAM1kB,KAAKgR,IAAIsT,GAE9D,CAEA,UChPIkH,GAAQ,SAAUrb,GAClB,SAASqb,EAAKnH,EAAQoH,EAAazG,EAAQ0G,EAAY3a,GACnDZ,EAAMjuB,KAAKhD,MAEXA,KAAKmlC,OAASA,EACdnlC,KAAKusC,YAAcA,EACnBvsC,KAAK8lC,OAASA,EACd9lC,KAAKwsC,WAAaA,EAClBxsC,KAAK6xB,MAAQA,CACjB,CAyHA,OAvHKZ,IAAQqb,EAAKvhC,UAAYkmB,GAC9Bqb,EAAKtoC,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC/CsoC,EAAKtoC,UAAUqH,YAAcihC,EAE7BA,EAAKtoC,UAAU6iB,MAAQ,WACnB,OAAO,IAAIylB,EAAKtsC,KAAKmlC,OAAQnlC,KAAKusC,YAAavsC,KAAK8lC,OAAQ9lC,KAAKwsC,WAAYxsC,KAAK6xB,MACtF,EAEAya,EAAKtoC,UAAUyoC,OAAS,WACpB,OAAOzsC,KAAKwsC,WAAaxsC,KAAK6xB,MAAQ,CAC1C,EAEAya,EAAKtoC,UAAU0oC,UAAY,SAAoBC,EAAWJ,GAOtD,OANIA,EACAvsC,KAAKusC,YAAcI,EAEnB3sC,KAAK8lC,OAAS6G,EAGX3sC,IACX,EAGAssC,EAAKtoC,UAAUkhC,MAAQ,SAAgBrT,EAAO0a,GAC1C,IAAIK,EAAcrd,GAAIsC,GAClBgb,EAAK/rB,KAAKgR,IAAI8a,GACdE,EAAKhsB,KAAKiR,IAAI6a,GACd9G,EAASyG,EAAcvsC,KAAKusC,YAAcvsC,KAAK8lC,OAC/C/f,EAAI/E,GAAMhhB,KAAKmlC,OAAOpf,EAAK8mB,EAAK/G,EnFtCf,GmFuCjB9f,EAAIhF,GAAMhhB,KAAKmlC,OAAOnf,EAAK8mB,EAAKhH,EnFvCf,GmFyCrB,OAAO,IAAIb,GAAMlf,EAAGC,EACxB,EAEAsmB,EAAKtoC,UAAU+oC,YAAc,SAAsBC,EAAUx4C,EAAOC,GAChE,IAAIw4C,EAASjtC,KAAK6mB,QAAQ8iB,OAAOqD,GAC7BE,EAAWD,EAAOR,SAClBU,EAAWF,EAAO/H,MAAMgI,GACxBE,EAAK54C,EAAQ,EACb64C,EAAK54C,EAAS,EACd64C,EAAKxsB,KAAKiR,IAAIxC,GAAI2d,IAClBK,EAAKzsB,KAAKgR,IAAIvC,GAAI2d,IAClBnnB,EAAIonB,EAASpnB,EAAIqnB,EACjBpnB,EAAImnB,EAASnnB,EAAIqnB,EAUrB,OARIvsB,KAAKC,IAAIusB,GAAM,KACfvnB,GAAKqnB,GAAMG,EAAKzsB,KAAKC,IAAIwsB,IAGzBzsB,KAAKC,IAAIwsB,GAAM,KACfvnB,GAAKqnB,GAAMC,EAAKxsB,KAAKC,IAAIusB,IAGtB,IAAIjD,GAAItkB,EAAGC,EAAGD,EAAIvxB,EAAOwxB,EAAIvxB,EACxC,EAEA63C,EAAKtoC,UAAU6lC,cAAgB,SAAwB7+B,GACnD,IAAIm6B,EAASnlC,KAAKmlC,OACdoH,EAAcvsC,KAAKusC,YACnBzG,EAAS9lC,KAAK8lC,OACd0G,EAAaxsC,KAAKwsC,WAClBgB,EAAWxtC,KAAKwsC,WAAaxsC,KAAK6xB,MAClC8T,EAAK36B,EAAE+a,EAAIof,EAAOpf,EAClB6f,EAAK56B,EAAEgb,EAAImf,EAAOnf,EAClBynB,EAAS,IAAIxI,GAAMU,EAAIC,GACvB8H,EAAa1tC,KAAKklC,MAAMsH,GACxBmB,EAAc,IAAI1I,GAAMyI,EAAW3nB,EAAIof,EAAOpf,EAAG2nB,EAAW1nB,EAAImf,EAAOnf,GACvE4nB,EAAW5tC,KAAKklC,MAAMsI,GACtBK,EAAY,IAAI5I,GAAM2I,EAAS7nB,EAAIof,EAAOpf,EAAG6nB,EAAS5nB,EAAImf,EAAOnf,GACjE8nB,EAAO9sB,GAAM2kB,EAAKA,EAAKC,EAAKA,EnF/EX,GmFiFrB,OAAQ+H,EAAYpc,OAAOkc,IAAW7nB,EAAU+nB,EAAaF,MACrD7nB,EAAUioB,EAAWJ,IACtBK,GAAQvB,EAAcA,GAAeuB,GAAQhI,EAASA,CACjE,EAEAwG,EAAKtoC,UAAU+pC,QAAU,WACrB,IASIC,EAPA/d,EAAM,IAAIoa,GAAInmB,EAAWA,EAAWE,EAAWA,GAC/CooB,EAAaxrB,GAAMhhB,KAAKwsC,WAAa,KACrCgB,EAAWxsB,IAAOwrB,EAAaxsC,KAAK6xB,OAAS,KAC7C0a,EAAcvsC,KAAKusC,YACnB0B,EAAY,CAAE,EAAG,GAAI,IAAK,IAAKzB,EAAYgB,GAAWze,KAAKmf,IAC3DC,EAAkBF,EAAU5kC,QAAQmjC,GACpC4B,EAAgBH,EAAU5kC,QAAQmkC,GAIlCQ,EADAxB,IAAegB,EACNS,EAELE,EAAkBC,EACTH,EAAUvzB,MAAMyzB,EAAiBC,EAAgB,GAEjD,GAAGjmC,OACR8lC,EAAUvzB,MAAM,EAAG0zB,EAAgB,GACnCH,EAAUvzB,MAAMyzB,EAAiBF,EAAU7zC,SAKvD,IAAK,IAAIsR,EAAI,EAAGA,EAAIsiC,EAAO5zC,OAAQsR,IAAK,CACpC,IAAIw5B,EAzBKllC,KAyBUklC,MAAM8I,EAAOtiC,IAChCukB,EAAI2a,UAAU1F,GACdjV,EAAI2a,UAAU1F,EAAOqH,EACzB,CAMA,OAJKA,GACDtc,EAAI2a,UAAU5qC,KAAKmlC,QAGhBlV,CACX,EAEAqc,EAAKtoC,UAAU2lC,OAAS,SAAiBxsC,GAErC,OADA6C,KAAK8lC,QAAU3oC,EACR6C,IACX,EAEOssC,CACX,CAnIY,CAmIVrb,IAEF,SAASid,GAAgBrf,EAAGjkB,GACxB,OAAOikB,EAAIjkB,CACf,CAEA,UC9IIyjC,ICEU,SAAU/B,GACpB,SAASgC,EAAOnJ,EAAQW,EAAQ0G,EAAY3a,GACxCya,EAAKtpC,KAAKhD,KAAMmlC,EAAQ,EAAGW,EAAQ0G,EAAY3a,EACnD,CAEKya,IAAOgC,EAAOvjC,UAAYuhC,GAC/BgC,EAAOtqC,UAAY6G,OAAOS,OAAQghC,GAAQA,EAAKtoC,WAC/CsqC,EAAOtqC,UAAUqH,YAAcijC,EAE/BA,EAAOtqC,UAAU2lC,OAAS,SAAiBxsC,GACvC,OAAOmvC,EAAKtoC,UAAU2lC,OAAO3mC,KAAKhD,KAAM7C,EAC5C,EAEAmxC,EAAOtqC,UAAU6iB,MAAQ,WACrB,OAAO,IAAIynB,EAAOtuC,KAAKmlC,OAAQnlC,KAAK8lC,OAAQ9lC,KAAKwsC,WAAYxsC,KAAK6xB,MACtE,EAEAyc,EAAOtqC,UAAU0oC,UAAY,SAAoBC,GAG7C,OAFA3sC,KAAK8lC,OAAS6G,EAEP3sC,IACX,CAGJ,CAxBc,CAwBZssC,ID1Bc,IEID,SAASiC,GAAM1f,EAAGjkB,EAAG4jC,GAGhC,YAFmB,IAAdA,IAAuBA,EAAYH,IAEK,IAAtCrtB,GAAMF,KAAKC,IAAI8N,EAAIjkB,GAAI4jC,EAClC,CCNe,SAASC,GAAY5f,EAAGjkB,EAAG4jC,GACtC,OAAO3f,EAAIjkB,GAAK2jC,GAAM1f,EAAGjkB,EAAG4jC,EAChC,CCJe,SAASE,GAAqBvJ,EAAQwJ,EAAIC,EAAIzd,GACzD,IAAI0d,EAAW,EACXC,EAAW,EASf,OAPI3d,IACA0d,EAAW/tB,KAAKiuB,MAAM5d,EAAO1pB,EAAImnC,EAAIzd,EAAOtC,EAAI8f,GAC/B,IAAbxd,EAAOvmB,IACPkkC,EAAWhuB,KAAKiuB,MAAM5d,EAAOxmB,EAAIikC,EAAIzd,EAAOvmB,EAAI+jC,KAIjD,CACH5oB,EAAG8oB,EACH7oB,EAAG8oB,EAEX,CCVA,IAAIE,GAAkB,SAAUjJ,GAC5B,SAASiJ,EAAe7d,QACJ,IAAXA,IAAoBA,EAASH,GAAAA,QAElC+U,EAAa/iC,KAAKhD,MAElBA,KAAKivC,QAAU9d,CACnB,CAgFA,OA9EK4U,IAAeiJ,EAAejkC,UAAYg7B,GAC/CiJ,EAAehrC,UAAY6G,OAAOS,OAAQy6B,GAAgBA,EAAa/hC,WACvEgrC,EAAehrC,UAAUqH,YAAc2jC,EAEvCA,EAAehrC,UAAU6iB,MAAQ,WAC7B,OAAO,IAAImoB,EACPhvC,KAAKivC,QAAQpoB,QAErB,EAEAmoB,EAAehrC,UAAUutB,OAAS,SAAiBvkB,GAC/C,OAAOA,GACAA,EAAMiiC,QAAQ1d,OAAOvxB,KAAKivC,QACrC,EAEAD,EAAehrC,UAAU2hB,UAAY,SAAoBI,EAAGC,GAIxD,OAHAhmB,KAAKivC,QAAUjvC,KAAKivC,QAAQ/d,aAAaF,GAAAA,UAAiBjL,EAAGC,IAE7DhmB,KAAKkvC,iBACElvC,IACX,EAEAgvC,EAAehrC,UAAUguB,MAAQ,SAAgBC,EAAQC,EAAQqV,QAC7C,IAAXrV,IAAoBA,EAASD,QAClB,IAAXsV,IAAoBA,EAAS,MAElC,IAAIC,EAAcD,EAclB,OAZIC,IACAA,EAAcvC,GAAAA,OAAauC,GAC3BxnC,KAAKivC,QAAUjvC,KAAKivC,QAAQ/d,aAAaF,GAAAA,UAAiBwW,EAAYzhB,EAAGyhB,EAAYxhB,KAGzFhmB,KAAKivC,QAAUjvC,KAAKivC,QAAQ/d,aAAaF,GAAAA,MAAaiB,EAAQC,IAE1DsV,IACAxnC,KAAKivC,QAAUjvC,KAAKivC,QAAQ/d,aAAaF,GAAAA,WAAkBwW,EAAYzhB,GAAIyhB,EAAYxhB,KAG3FhmB,KAAKkvC,iBACElvC,IACX,EAEAgvC,EAAehrC,UAAU4tB,OAAS,SAAiBC,EAAO0V,GACtD,IAAIC,EAAcvC,GAAAA,OAAasC,IAAWtC,GAAAA,KAK1C,OAHAjlC,KAAKivC,QAAUjvC,KAAKivC,QAAQ/d,aAAaF,GAAAA,OAAca,EAAO2V,EAAYzhB,EAAGyhB,EAAYxhB,IAEzFhmB,KAAKkvC,iBACElvC,IACX,EAEAgvC,EAAehrC,UAAUyhC,SAAW,SAAmB0B,GACnD,IAAIhW,EAAS+V,GAASC,GAKtB,OAHAnnC,KAAKivC,QAAUjvC,KAAKivC,QAAQ/d,aAAaC,GAEzCnxB,KAAKkvC,iBACElvC,IACX,EAEAgvC,EAAehrC,UAAUmtB,OAAS,SAAiBh0B,GAC/C,OAAIA,GACA6C,KAAKivC,QAAU9xC,EACf6C,KAAKkvC,iBACElvC,MAGJA,KAAKivC,OAChB,EAEAD,EAAehrC,UAAUkrC,eAAiB,WACtClvC,KAAKumC,cAAc,CACfzoB,MAAO,YACP3gB,MAAO6C,MAEf,EAEOgvC,CACX,CAxFsB,CAwFpBjJ,IAEF,MC7Fe,SAASzT,GAAUnB,GAC9B,OAAe,OAAXA,EACO,KAGPA,aAAkB6d,GACX7d,EAGJ,IAAI6d,GAAe7d,EAC9B,CCEA,IACI9H,GAAMvI,KAAKuI,IAGX8lB,GAAO,SAAU/H,GACjB,SAAS+H,EAAIhK,EAAQ7vB,QACD,IAAX6vB,IAAoBA,EAAS,IAAIF,SACrB,IAAZ3vB,IAAqBA,EAAU,CAAC,GAErC8xB,EAAWpkC,KAAKhD,MAEhBA,KAAKovC,UAAUjK,GAEfnlC,KAAKqvC,QAAU/5B,EAAQ+5B,QACvBrvC,KAAKsvC,QAAUh6B,EAAQg6B,SAAWh6B,EAAQ+5B,QAC1CrvC,KAAKwsC,WAAal3B,EAAQk3B,WAC1BxsC,KAAKwtC,SAAWl4B,EAAQk4B,SACxBxtC,KAAKuvC,cAAgBj6B,EAAQi6B,gBAAiB,EAC9CvvC,KAAKwvC,UAAYl6B,EAAQk6B,SAC7B,CAyNA,OAvNKpI,IAAa+H,EAAIpkC,UAAYq8B,GAClC+H,EAAInrC,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACxDmrC,EAAInrC,UAAUqH,YAAc8jC,EAE5BA,EAAInrC,UAAU6iB,MAAQ,WAClB,OAAO,IAAIsoB,EAAInvC,KAAKmlC,OAAQ,CACxBkK,QAASrvC,KAAKqvC,QACdC,QAAStvC,KAAKsvC,QACd9C,WAAYxsC,KAAKwsC,WACjBgB,SAAUxtC,KAAKwtC,SACf+B,cAAevvC,KAAKuvC,eAE5B,EAEAJ,EAAInrC,UAAUorC,UAAY,SAAoBjyC,GAG1C,OAFA6C,KAAK2mC,eAAe,SAAU1B,GAAAA,OAAa9nC,IAC3C6C,KAAKwmC,iBACExmC,IACX,EAEAmvC,EAAInrC,UAAUyrC,UAAY,WACtB,OAAOzvC,KAAKmlC,MAChB,EAEAgK,EAAInrC,UAAU0rC,QAAU,SAAkB7d,GACtC,IAAIsT,EAASnlC,KAAKmlC,OACdwK,EAASpgB,GAAIsC,GAEjB,OAAO,IAAIoT,GACPE,EAAOpf,EAAI/lB,KAAKqvC,QAAUvuB,KAAKgR,IAAI6d,GACnCxK,EAAOnf,EAAIhmB,KAAKsvC,QAAUxuB,KAAKiR,IAAI4d,GAE3C,EAEAR,EAAInrC,UAAU4rC,YAAc,WACxB,IAUIzI,EARAqF,EAAaxsC,KAAKwsC,WAClB16B,EAAM9R,KAAKuvC,eAAiB,EAAI,EAChCK,EAAc,CAAE5vC,KAAK0vC,QAAQlD,IAC7BqD,EAAW7vC,KAAK8vC,eAChBC,EAAgBF,EAASrC,SAAWqC,EAASrD,WAC7CwD,EAAoBlvB,KAAK6K,KAAKokB,EA/DvB,IAgEPE,EAAmBF,EAAgBC,EACnCE,EAAe1D,EAEfxsC,KAAKwvC,YACLrI,EAAiB7U,KAAYV,OAAO5xB,KAAKwvC,UAAWxvC,KAAKmlC,SAG7D,IAAK,IAAIz5B,EAAI,EAAGA,GAAKskC,EAAmBtkC,IAAK,CACzC,IAAIykC,EAAYD,EAAep+B,EAAMm+B,EACjC1E,EAjBKvrC,KAiBWowC,qBAAqBF,EAAcC,EAAWhJ,GAElEyI,EAAYxgC,KAAKm8B,EAAO8E,IAAK9E,EAAO+E,IAAK/E,EAAOgF,IAChDL,EAAeC,CACnB,CAEA,OAAOP,CACX,EAEAT,EAAInrC,UAAUqlC,KAAO,SAAelY,GAgBhC,IAfA,IAEI0e,EAAW7vC,KAAK8vC,eAChBtD,EAAaqD,EAASrD,WACtBgB,EAAWqC,EAASrC,SACpBgD,EAAgB9B,GAAqB1uC,KAAKmlC,OAAQnlC,KAAKqvC,QAASrvC,KAAKsvC,QAASne,GAC9E0d,EAAW7hB,GAAIwjB,EAAczqB,GAC7B+oB,EAAW9hB,GAAIwjB,EAAcxqB,GAC7B4nB,EAAW5tC,KAAK0vC,QAAQlC,GAAU5F,cAAczW,GAChDsf,EAAgBC,GAAe7B,EAAUrC,GACzCmE,EAAgBD,GAAe5B,EAAUtC,GACzCoE,EAAe5wC,KAAK0vC,QAAQlD,GAAY5E,cAAczW,GACtDkX,EAAWpD,GAAAA,IAAU2L,EAAchD,GACnCtF,EAAWrD,GAAAA,IAAU2L,EAAchD,GAEhC6C,EAAgBjD,GAAYmD,EAAgBnD,GAAU,CACzD,IAAIqD,OAAiB,EACjBJ,EAAgBjD,IAChBqD,EAlBK7wC,KAkBkB0vC,QAAQe,GAAe7I,cAAczW,GAC5Dsf,GAAiB,IAGrB,IAAIK,OAAiB,EACjBH,EAAgBnD,IAChBsD,EAxBK9wC,KAwBkB0vC,QAAQiB,GAAe/I,cAAczW,GAC5Dwf,GAAiB,IAGrBC,EAAe,IAAI3L,GAAM4L,EAAc9qB,EAAG+qB,EAAc9qB,GACxDqiB,EAAWpD,GAAAA,IAAUoD,EAAUuI,GAC/BtI,EAAWrD,GAAAA,IAAUqD,EAAUsI,EACnC,CAEA,OAAOnI,GAAAA,WAAgBJ,EAAUC,EACrC,EAEA6G,EAAInrC,UAAU8rC,aAAe,WACzB,IAAIv9C,EAAMyN,KACNwsC,EAAaj6C,EAAIi6C,WACjBgB,EAAWj7C,EAAIi7C,SACf+B,EAAgBh9C,EAAIg9C,cAExB,GAAIA,EAAe,CACf,IAAIwB,EAAWvE,EACfA,EAAagB,EACbA,EAAWuD,CACf,CAMA,OAJIvE,EAAagB,GAAa+B,GAAiB/C,IAAegB,KAC1DA,GAAY,KAGT,CACHhB,WAAYA,EACZgB,SAAUA,EAElB,EAEA2B,EAAInrC,UAAUosC,qBAAuB,SAA+B5D,EAAYgB,EAAUrG,GACtF,IAAI6J,EAAKhxC,KAAK0vC,QAAQlD,GAClB+D,EAAKvwC,KAAK0vC,QAAQlC,GAClByD,EAAejxC,KAAKkxC,cAAc1E,GAClC2E,EAAenxC,KAAKkxC,cAAc1D,GAClC90C,GAAK62B,GAAIie,GAAYje,GAAIid,IAAe,EACxC6D,EAAM,IAAIpL,GAAM+L,EAAGjrB,EAAIrtB,EAAIu4C,EAAalrB,EAAGirB,EAAGhrB,EAAIttB,EAAIu4C,EAAajrB,GACnEsqB,EAAM,IAAIrL,GAAMsL,EAAGxqB,EAAIrtB,EAAIy4C,EAAaprB,EAAGwqB,EAAGvqB,EAAIttB,EAAIy4C,EAAanrB,GAQvE,OAPImhB,IACA6J,EAAG1e,UAAU6U,GACboJ,EAAGje,UAAU6U,GACbkJ,EAAI/d,UAAU6U,GACdmJ,EAAIhe,UAAU6U,IAGX,CACH6J,GAAIA,EACJX,IAAKA,EACLC,IAAKA,EACLC,GAAIA,EAEZ,EAEApB,EAAInrC,UAAUktC,cAAgB,SAAwBrf,GAClD,IAAI8d,EAASpgB,GAAIsC,GAEjB,OAAO,IAAIoT,IAAOjlC,KAAKqvC,QAAUvuB,KAAKiR,IAAI4d,GAAS3vC,KAAKsvC,QAAUxuB,KAAKgR,IAAI6d,GAC/E,EAEAR,EAAInrC,UAAU6lC,cAAgB,SAAwB3E,GAClD,IAaI2E,EAbAgG,EAAW7vC,KAAK8vC,eAChBC,EAAgBF,EAASrC,SAAWqC,EAASrD,WAC7Cj6C,EAAMyN,KACNmlC,EAAS5yC,EAAI4yC,OACbkK,EAAU98C,EAAI88C,QACdC,EAAU/8C,EAAI+8C,QACdtC,EAAW7H,EAAOO,WAAWR,GAC7BkM,EAAWtwB,KAAKiuB,MAAM7J,EAAMlf,EAAImf,EAAOnf,EAAGkf,EAAMnf,EAAIof,EAAOpf,GAC3DsrB,EAAehC,EAAUC,EACzBxuB,KAAK0f,KAAKnX,GAAIgmB,EAAS,GAAKhmB,GAAIvI,KAAKiR,IAAIqf,GAAW,GAAK/nB,GAAIimB,EAAS,GAAKjmB,GAAIvI,KAAKgR,IAAIsf,GAAW,IACnG1D,EAAa1tC,KAAK0vC,QAAQ1vC,KAAKwsC,YAAYxrB,MAAMqtB,IACjDT,EAAW5tC,KAAK0vC,QAAQ1vC,KAAKwtC,UAAUxsB,MAAMqtB,IAC7CiD,ECnMG,SAA0BC,EAAIP,EAAIT,EAAIiB,GACjD,IAAIC,EAAMT,EAAGjrB,EAAIwrB,EAAGxrB,EAChB2rB,EAAMF,EAAGzrB,EAAIwqB,EAAGxqB,EAChB4rB,EAAMX,EAAGhrB,EAAIurB,EAAGvrB,EAChB4rB,EAAMJ,EAAGxrB,EAAIuqB,EAAGvqB,EAChB6rB,EAAKN,EAAGxrB,EAAIwqB,EAAGxqB,EACf+rB,EAAKP,EAAGvrB,EAAIuqB,EAAGvqB,EACfrb,EAAI8mC,EAAMG,EAAMF,EAAMC,EACtBlmC,GAAKgmC,EAAMK,EAAKH,EAAME,GAAMlnC,EAC5BjS,GAAKg5C,EAAMI,EAAKF,EAAMC,GAAMlnC,EAEhC,GAAIc,GAAK,GAAKA,GAAK,GAAK/S,GAAK,GAAKA,GAAK,EACnC,OAAO,IAAIusC,GAAMsM,EAAGxrB,EAAIrtB,EAAI+4C,EAAKF,EAAGvrB,EAAIttB,EAAIi5C,EAEpD,CDqL2BI,CAAiB5M,EAAQD,EAAMlkB,MAAMqtB,IAAYX,EAAYE,GAGhF,GAAImC,EAAgB,IAChBlG,EAAgByH,GAAgB7C,GAAYtJ,EAAOO,WAAW4L,GAAetE,IAAayB,GAAYzB,EAAUqE,OAC7G,CACH,IAAIxf,EAAQmgB,GAAe7M,EAAOpf,EAAGof,EAAOnf,EAAGqpB,EAASC,EAASpK,EAAMnf,EAAGmf,EAAMlf,GAClE,MAAV6L,IACAA,GAAS,IAAMA,GAAS,KAG5B,IAAIogB,EAAepC,EAASrD,YAAc3a,GAASA,GAASge,EAASrC,SACrE3D,EAAiBoI,GAAgBxD,GAAYzB,EAAUqE,KAAmBY,KAAkBX,GAAgBA,EAAa/f,OAAO2T,GACpI,CACA,OAAO2E,CACX,EAEAsF,EAAInrC,UAAU8lC,UAAY,SAAoB5E,EAAO1wC,GACjD,IAAIq7C,EAAW7vC,KAAK8vC,eAChB3K,EAASnlC,KAAKmlC,OACdtT,EAAQmgB,GAAe7M,EAAOpf,EAAGof,EAAOnf,EAAGhmB,KAAKqvC,QAASrvC,KAAKsvC,QAASpK,EAAMnf,EAAGmf,EAAMlf,GAO1F,OANc,MAAV6L,IACAA,GAAS,IAAMA,GAAS,KAGTge,EAASrD,YAAc3a,GAASA,GAASge,EAASrC,UAE9CxtC,KAAK0vC,QAAQ7d,GAAO6T,WAAWR,IAAU1wC,CACpE,EAEA26C,EAAIzF,WAAa,SAAqBngB,EAAOC,EAAKmlB,EAAIC,EAAIsD,EAAUC,EAAOzG,GACvE,IAAI0G,EAgCZ,SAAgCC,GAC5B,IAAI/H,EAAK+H,EAAW/H,GAChBC,EAAK8H,EAAW9H,GAChBC,EAAK6H,EAAW7H,GAChBC,EAAK4H,EAAW5H,GAChBkE,EAAK0D,EAAW1D,GAChBC,EAAKyD,EAAWzD,GAChBsD,EAAWG,EAAWH,SACtBC,EAAQE,EAAWF,MACnBzG,EAAW2G,EAAW3G,cAA4B,IAAbA,IAAsBA,EAAW,GAE1E,IAAIze,EAAUsC,GAAImc,GACd4G,EAASxxB,KAAKgR,IAAI7E,GAClBslB,EAAOzxB,KAAKiR,IAAI9E,GAEhBulB,EAAKF,GAAUhI,EAAKE,GAAM,EAAI+H,GAAQhI,EAAKE,GAAM,EACjDgI,GAAMF,GAAQjI,EAAKE,GAAM,EAAI8H,GAAU/H,EAAKE,GAAM,EAElDiI,EAAOR,IAAaC,EAAQ,GAAK,EAEjCQ,EAAM7xB,KAAKuI,IAAImpB,EAAI,GACnBI,EAAM9xB,KAAKuI,IAAIopB,EAAI,GACnBI,EAAM/xB,KAAKuI,IAAIslB,EAAI,GACnBmE,EAAMhyB,KAAKuI,IAAIulB,EAAI,GAEnBtjB,EAAQqnB,EAAME,EAAMD,EAAME,EAE1BxnB,EAAQ,IAERqjB,GADArjB,EAAQxK,KAAK0f,KAAKmS,EAAME,EAAMD,EAAME,GAEpCD,EAAM/xB,KAAKuI,IAAIslB,EAAI,GAEnBC,GAAKtjB,EACLwnB,EAAMhyB,KAAKuI,IAAIulB,EAAI,IAGvB,IAAImE,EAASL,EAAO5xB,KAAK0f,MAAMqS,EAAMC,EAAMD,EAAMD,EAAME,EAAMH,IAAQE,EAAMD,EAAME,EAAMH,IAEnF1sB,MAAM8sB,KACNA,EAAS,GAGb,IAAIC,EAAMD,GAAUpE,EAAK8D,GAAM7D,EAC3BqE,EAAkBrE,EAAK4D,GAAfO,EAAqBpE,EAE7BpJ,EAAK+M,EAASU,EAAMT,EAAOU,GAAO3I,EAAKE,GAAM,EAC7ChF,EAAK+M,EAAOS,EAAMV,EAASW,GAAO1I,EAAKE,GAAM,EAG7CyI,GAAMV,EAAKQ,GAAOrE,EAClBwE,GAAMV,EAAKQ,GAAOrE,EAClBwE,IAAOZ,EAAKQ,GAAOrE,EACnB0E,IAAOZ,EAAKQ,GAAOrE,EAEnBpC,GAAc2G,GAAM,EAAI,GAAK,GAAKnmB,GAAIlM,KAAKwyB,KAAKJ,EAAKpyB,KAAK0f,KAAK0S,EAAKA,EAAKC,EAAKA,KAE9EI,EAAcvyB,IAAOkyB,EAAKE,EAAKD,EAAKE,IAAOvyB,KAAK0f,KAAK0S,EAAKA,EAAKC,EAAKA,GAAMryB,KAAK0f,KAAK4S,EAAKA,EAAKC,EAAKA,IAAM,IACzGxhB,GAASqhB,EAAKG,EAAKF,EAAKC,GAAM,EAAI,GAAK,GAAKpmB,GAAIlM,KAAKwyB,KAAKC,KAEzDpB,GAAStgB,EAAQ,IAClBA,GAAS,KAGTsgB,GAAStgB,EAAQ,IACjBA,GAAS,KAEb,IAAI2b,EAAWhB,EAAa3a,EACxB2hB,EAAehG,GAAY,EAAI,GAAK,EAGxC,OAFAA,EAAY1sB,KAAKC,IAAIysB,GAAY,IAAOgG,EAEjC,CACHrO,OAAQ,IAAIF,GAAMM,EAAIC,GACtBgH,WAAYA,EACZgB,SAAUA,EACV6B,QAASV,EACTW,QAASV,EACTY,UAAW9D,EAEnB,CA9G4B+H,CAAuB,CACvCnJ,GAAI/gB,EAAMxD,EACVwkB,GAAIhhB,EAAMvD,EACVwkB,GAAIhhB,EAAIzD,EACR0kB,GAAIjhB,EAAIxD,EACR2oB,GAAIA,EACJC,GAAIA,EACJsD,SAAUA,EACVC,MAAOA,EACPzG,SAAUA,IAGd,OAAO,IAAIyD,EAAIiD,EAAcjN,OAAQ,CACjCqH,WAAY4F,EAAc5F,WAC1BgB,SAAU4E,EAAc5E,SACxB6B,QAAS+C,EAAc/C,QACvBC,QAAS8C,EAAc9C,QACvBE,UAAW4C,EAAc5C,UACzBD,cAAyB,IAAV4C,GAEvB,EAEOhD,CACX,CAzOW,CAyOT5G,GAAcxC,GA3OA,CAAE,UAAW,UAAW,aAAc,WAAY,mBA6OlE,SAASiM,GAAezM,EAAIC,EAAImJ,EAAIC,EAAI7oB,EAAGC,GACvC,IAAI8L,EAAM9Q,IAAO+E,EAAIwf,GAAMoJ,EAAI,GAC3B5c,EAAM/Q,IAAOgF,EAAIwf,GAAMoJ,EAAI,GAE/B,OAAO5tB,GAAMgM,GAAIlM,KAAKiuB,MAAMhd,EAAKD,IACrC,CAkFA,SAAS4e,GAAe7e,EAAOtI,GAG3B,IAFA,IAAIijB,EAAa3a,EAEV2a,EAAajjB,GAChBijB,GAAc,GAGlB,OAAOA,CACX,CAEA,UE5VIp9B,GAAO,GAAGA,KACVskC,GAAM,GAAGA,IACTtN,GAAS,GAAGA,OACZja,GAAQ,GAAGA,MACXzR,GAAQ,GAAGA,MACXi5B,GAAU,GAAGA,QAEbC,GAAiB,SAAU7N,GAC3B,SAAS6N,EAAchrB,QACJ,IAAVA,IAAmBA,EAAQ,IAEhCmd,EAAa/iC,KAAKhD,MAElBA,KAAK5F,OAAS,EACd4F,KAAK6zC,QAAQ,EAAGjrB,EAAMxuB,OAAQwuB,EAClC,CAwHA,OAtHKmd,IAAe6N,EAAc7oC,UAAYg7B,GAC9C6N,EAAc5vC,UAAY6G,OAAOS,OAAQy6B,GAAgBA,EAAa/hC,WACtE4vC,EAAc5vC,UAAUqH,YAAcuoC,EAEtCA,EAAc5vC,UAAU8vC,SAAW,SAAmB32C,GAClD,OAAIA,GACA6C,KAAK6zC,QAAQ,EAAG7zC,KAAK5F,OAAQ+C,GAE7B6C,KAAK+zC,UACE/zC,MAGJA,KAAK0a,MAAM,EACtB,EAEAk5B,EAAc5vC,UAAUoL,KAAO,WAC3B,IAAI0kC,EAAW/rC,UACX3P,EAASgX,GAAKlH,MAAMlI,KAAM8zC,GAI9B,OAFA9zC,KAAKg0C,KAAKF,GAEH17C,CACX,EAEAw7C,EAAc5vC,UAAU0W,MAAQ,WAC5B,OAAOA,GAAM1X,KAAKhD,KACtB,EAEA4zC,EAAc5vC,UAAU0vC,IAAM,WAC1B,IAAIt5C,EAAS4F,KAAK5F,OACdhC,EAASs7C,GAAIxrC,MAAMlI,MAMvB,OAJI5F,GACA4F,KAAKi0C,QAAQ,CAAE77C,IAGZA,CACX,EAEAw7C,EAAc5vC,UAAUoiC,OAAS,SAAiB9rC,EAAO45C,GACrD,IAAIJ,EAAWp5B,GAAM1X,KAAK+E,UAAW,GACjC3P,EAAS4H,KAAK6zC,QAAQv5C,EAAO45C,EAASJ,GAI1C,OAFA9zC,KAAK+zC,UAEE37C,CACX,EAEAw7C,EAAc5vC,UAAUmoB,MAAQ,WAC5B,IAAI/xB,EAAS4F,KAAK5F,OACdhC,EAAS+zB,GAAMjkB,MAAMlI,MAMzB,OAJI5F,GACA4F,KAAKi0C,QAAQ,CAAE77C,IAGZA,CACX,EAEAw7C,EAAc5vC,UAAU2vC,QAAU,WAC9B,IAAIG,EAAW/rC,UACX3P,EAASu7C,GAAQzrC,MAAMlI,KAAM8zC,GAIjC,OAFA9zC,KAAKg0C,KAAKF,GAEH17C,CACX,EAEAw7C,EAAc5vC,UAAUqF,QAAU,SAAkB7V,GAKhD,IAJA,IAEI4G,EAAS4F,KAAK5F,OAETqa,EAAM,EAAGA,EAAMra,EAAQqa,IAC5B,GALSzU,KAKEyU,KAASjhB,EAChB,OAAOihB,EAGf,OAAQ,CACZ,EAEAm/B,EAAc5vC,UAAU6vC,QAAU,SAAkBv5C,EAAO45C,EAASJ,GAChE,IAAI17C,EAASguC,GAAOl+B,MAAMlI,KAAM,CAAE1F,EAAO45C,GAAU/rC,OAAO2rC,IAK1D,OAHA9zC,KAAKm0C,eAAe/7C,GACpB4H,KAAKo0C,aAAaN,GAEX17C,CACX,EAEAw7C,EAAc5vC,UAAUgwC,KAAO,SAAeF,GAC1C9zC,KAAKo0C,aAAaN,GAClB9zC,KAAK+zC,SACT,EAEAH,EAAc5vC,UAAUiwC,QAAU,SAAkBH,GAChD9zC,KAAKm0C,eAAeL,GACpB9zC,KAAK+zC,SACT,EAEAH,EAAc5vC,UAAUowC,aAAe,SAAuBN,GAG1D,IAFA,IAESr/B,EAAM,EAAGA,EAAMq/B,EAAS15C,OAAQqa,IACrCq/B,EAASr/B,GAAKyxB,YAHLlmC,KAKjB,EAEA4zC,EAAc5vC,UAAUmwC,eAAiB,SAAyBL,GAG9D,IAFA,IAESr/B,EAAM,EAAGA,EAAMq/B,EAAS15C,OAAQqa,IACrCq/B,EAASr/B,GAAK0xB,eAHLnmC,KAKjB,EAEA4zC,EAAc5vC,UAAU+vC,QAAU,WAAqB,EAEhDH,CACX,CAjIqB,CAiInB7N,IAEF,MC1IIsO,GAAyB,SAAUT,GACnC,SAASS,IACLT,EAAc1rC,MAAMlI,KAAM+H,UAC9B,CAUA,OARK6rC,IAAgBS,EAAsBtpC,UAAY6oC,GACvDS,EAAsBrwC,UAAY6G,OAAOS,OAAQsoC,GAAiBA,EAAc5vC,WAChFqwC,EAAsBrwC,UAAUqH,YAAcgpC,EAE9CA,EAAsBrwC,UAAU+vC,QAAU,WACtC/zC,KAAKwmC,gBACT,EAEO6N,CACX,CAd6B,CAc3BT,IAEF,MCbIrzC,GAAW,CAAC,EAAEA,SAEd+zC,GAAgB,SAAUvO,GAC1B,SAASuO,EAAah/B,EAASi/B,GAQ3B,IAAK,IAAIz2B,UANO,IAAXy2B,IAAoBA,EAAS,IAElCxO,EAAa/iC,KAAKhD,MAElBA,KAAKu0C,OAASA,EAEIj/B,EAAS,CACvB,IAAIk/B,EAASl/B,EAAQwI,GACrB02B,EATSx0C,KASOy0C,MAAMD,EAAQ12B,GATrB9d,KAUF8d,GAAS02B,CACpB,CACJ,CAmFA,OAjFKzO,IAAeuO,EAAavpC,UAAYg7B,GAC7CuO,EAAatwC,UAAY6G,OAAOS,OAAQy6B,GAAgBA,EAAa/hC,WACrEswC,EAAatwC,UAAUqH,YAAcipC,EAErCA,EAAatwC,UAAUoI,IAAM,SAAc0R,GAIvC,IAHA,IAAI4V,EAAQ5V,EAAMvW,MAAM,KACpBnP,EAAS4H,KAEN0zB,EAAMt5B,QAAUhC,GAAQ,CAE3BA,EAASA,EADEs7B,EAAMvH,QAErB,CAEA,OAAO/zB,CACX,EAEAk8C,EAAatwC,UAAUilB,IAAM,SAAcnL,EAAO3gB,GAChC6C,KAAKoM,IAAI0R,KAEP3gB,IACZ6C,KAAKojC,KAAKtlB,EAAO9d,KAAKy0C,MAAMt3C,EAAO2gB,IACnC9d,KAAKumC,cAAc,CACfzoB,MAAO9d,KAAKu0C,OAASz2B,EACrB3gB,MAAOA,IAGnB,EAEAm3C,EAAatwC,UAAUo/B,KAAO,SAAetlB,EAAO3gB,GAChD,IAEIu3C,EAAY52B,EAAMzU,QAAQ,MAAQ,EAClCsrC,EAAY30C,KACZ40C,EAAY92B,EAEhB,GAAI42B,EAAW,CAIX,IAHA,IAAIhhB,EAAQkhB,EAAUrtC,MAAM,KACxBgtC,EAASv0C,KAAKu0C,OAEX7gB,EAAMt5B,OAAS,GAAG,CAErBm6C,IADAK,EAAYlhB,EAAMvH,SACI,IAEtB,IAAInc,EAAM2kC,EAAUC,GAEf5kC,KACDA,EAAM,IAAIskC,EAAa,CAAC,EAAGC,IACvBrO,YAlBHlmC,MAmBD20C,EAAUC,GAAa5kC,GAE3B2kC,EAAY3kC,CAChB,CACA4kC,EAAYlhB,EAAM,EACtB,CAEAihB,EAAUE,OAAOD,GACjBD,EAAUC,GAAaz3C,CAC3B,EAEAm3C,EAAatwC,UAAU6wC,OAAS,SAAiB/2B,GAC7C,IAAIvqB,EAAUyM,KAAK8d,GACfvqB,GAAWA,EAAQ4yC,gBACnB5yC,EAAQ4yC,eAAenmC,KAE/B,EAEAs0C,EAAatwC,UAAUywC,MAAQ,SAAgB96B,EAAQmE,GACnD,IAAI3qB,EAAOoN,GAASyC,KAAK2W,GACrBm7B,EAAUn7B,EAUd,OARgB,OAAZm7B,GAAoB3vB,EAAQ2vB,IAAqB,oBAAT3hD,IAClCwmB,aAAkB26B,GAAmB36B,aAAkBsX,KACzD6jB,EAAU,IAAIR,EAAaQ,EAAS90C,KAAKu0C,OAASz2B,EAAQ,MAG9Dg3B,EAAQ5O,YAAYlmC,OAGjB80C,CACX,EAEOR,CACX,CAlGoB,CAkGlBvO,IAEF,MCnGIgP,GAAW,SAAUhP,GACrB,SAASgP,EAAQz/B,GACbywB,EAAa/iC,KAAKhD,MAElBA,KAAKg1C,aAAa1/B,EACtB,CAEKywB,IAAegP,EAAQhqC,UAAYg7B,GACxCgP,EAAQ/wC,UAAY6G,OAAOS,OAAQy6B,GAAgBA,EAAa/hC,WAChE+wC,EAAQ/wC,UAAUqH,YAAc0pC,EAEhC,IAAIjS,EAAqB,CAAEmS,SAAU,CAAE3oC,cAAc,IAwIrD,OAtIAw2B,EAAmBmS,SAAS7oC,IAAM,WAC9B,MAAO,MACX,EAEA2oC,EAAQ/wC,UAAUgxC,aAAe,SAAuB1/B,QACnC,IAAZA,IAAqBA,EAAU,CAAC,GAErC,IAAI4/B,EAAO5/B,EAAQ4/B,KACf5iB,EAAYhd,EAAQgd,UAEpBA,IACAhd,EAAQgd,UAAY6iB,GAAgB7iB,IAGpC4iB,IAASA,EAAK5+C,KACd4+C,EAAK5+C,GAAKq2B,MAGd3sB,KAAKsV,QAAU,IAAIg/B,GAAah/B,GAChCtV,KAAKsV,QAAQ4wB,YAAYlmC,KAC7B,EAEA+0C,EAAQ/wC,UAAUsuB,UAAY,SAAoBn1B,GAC9C,IAAIgoB,EAAQhoB,GAGR,OAAO6C,KAAKsV,QAAQlJ,IAAI,aAFxBpM,KAAKsV,QAAQ2T,IAAI,YAAaksB,GAAgBh4C,GAItD,EAEA43C,EAAQ/wC,UAAUoxC,gBAAkB,WAIhC,IAHA,IACItiB,EADAt/B,EAAUwM,KAGPxM,EAAQo/B,QAAQ,CAEnB,IAAIuU,GADJ3zC,EAAUA,EAAQo/B,QACWN,YACzB6U,IACArU,EAAeqU,EAAehW,SAASD,aAAa4B,GAAgB9B,GAAAA,QAE5E,CAEA,GAAI8B,EACA,OAAOqiB,GAAgBriB,EAE/B,EAEAiiB,EAAQ/wC,UAAUqxC,iBAAmB,SAA2BD,QACnC,IAApBA,IAA6BA,EAAkBp1C,KAAKo1C,mBAEzD,IAIIE,EAHAC,EAAgBrO,GADGlnC,KAAKsyB,aAGxBQ,EAAeoU,GAASkO,GAS5B,GALIE,EADAC,GAAiBziB,EACAA,EAAa5B,aAAaqkB,GAE1BA,GAAiBziB,EAIlC,OAAOqiB,GAAgBG,EAE/B,EAEAP,EAAQ/wC,UAAUjQ,QAAU,SAAkBoJ,GAC1C,OAAIgoB,EAAQhoB,IACR6C,KAAKsV,QAAQ2T,IAAI,UAAW9rB,GACrB6C,OAG4B,IAAhCA,KAAKsV,QAAQlJ,IAAI,UAC5B,EAEA2oC,EAAQ/wC,UAAUkxC,KAAO,SAAe/3C,GACpC,IAAImY,EAAUtV,KAAKsV,QACnB,OAAI6P,EAAQhoB,IACJA,IAAUA,EAAM7G,KAChB6G,EAAM7G,GAAKq2B,MAEfrX,EAAQ2T,IAAI,OAAQ9rB,GACb6C,MAGJsV,EAAQlJ,IAAI,OACvB,EAEA2oC,EAAQ/wC,UAAUwxC,QAAU,SAAkBr4C,GAC1C,OAAIgoB,EAAQhoB,IACR6C,KAAKsV,QAAQ2T,IAAI,UAAW9rB,GACrB6C,MAGJyvB,GAAezvB,KAAKsV,QAAQlJ,IAAI,WAAY,EACvD,EAEA2oC,EAAQ/wC,UAAUyxC,YAAc,SAAsBtO,GAClD,IAAIkC,EAAOrpC,KAAK01C,aAAavO,GAC7B,GAAIkC,EAAM,CACN,IAAI6L,EAAOl1C,KAAKk1C,OAChB,OAAOA,EAAOzM,GAAAA,UAAeY,EAAM6L,EAAK7L,KAAKlC,IAAmBkC,CACpE,CACJ,EAEA0L,EAAQ/wC,UAAU6lC,cAAgB,SAAwB3E,EAAOkQ,GAC7D,GAAIp1C,KAAKjM,UAAW,CAChB,IAAIu+B,EAAYtyB,KAAKq1C,iBAAiBD,GAClCO,EAAmBzQ,EAIvB,OAHI5S,IACAqjB,EAAmBzQ,EAAM0C,cAActV,EAAUnB,SAASC,WAEtDpxB,KAAK41C,YAAc51C,KAAK61C,eAAeF,IAAuB31C,KAAK8pC,WAAa9pC,KAAK81C,cAAgB91C,KAAK8pC,UAAU6L,EAChI,CACA,OAAO,CACX,EAEAZ,EAAQ/wC,UAAU4xC,SAAW,WACzB,IAAIG,EAAO/1C,KAAKsV,QAAQygC,KACxB,OAAOA,IAASxnB,GAAcwnB,EAAKvnB,MACvC,EAEAumB,EAAQ/wC,UAAU8xC,WAAa,WAC3B,IAAIvwB,EAASvlB,KAAKsV,QAAQiQ,OAC1B,OAAOA,GAAUA,EAAO/wB,MAAQ,IAAM+5B,GAAchJ,EAAOiJ,MAC/D,EAEAumB,EAAQ/wC,UAAU0xC,aAAe,SAAuBvO,GACpD,OAAOnnC,KAAKqpC,KAAKlC,EACrB,EAEAt8B,OAAOq4B,iBAAkB6R,EAAQ/wC,UAAW8+B,GAErCiS,CACX,CApJe,CAoJbhP,IAEF,MC3Je,SAASiQ,GAAgBpI,EAAUqI,EAAc/Q,GAC5D,IAAIrT,EAAQ7E,GAAIlM,KAAKiuB,MAAMkH,EAAajwB,EAAI4nB,EAAS5nB,EAAGiwB,EAAalwB,EAAI6nB,EAAS7nB,IAGlF,OAFmBmf,EAAM0C,cAActV,KAAYV,QAAQC,EAAO+b,IAE9C7nB,EAAI6nB,EAAS7nB,CACrC,CCRe,SAASmwB,GAAiBx9C,EAAGolB,EAAOytB,GAC/C,IAAI4K,EAAK,EAAIz9C,EACb,OAAOooB,KAAKuI,IAAI8sB,EAAI,GAAK5K,EAAO,GAAGztB,GAC/B,EAAIgD,KAAKuI,IAAI8sB,EAAI,GAAKz9C,EAAI6yC,EAAO,GAAGztB,GACpC,EAAIgD,KAAKuI,IAAI3wB,EAAG,GAAKy9C,EAAK5K,EAAO,GAAGztB,GACpCgD,KAAKuI,IAAI3wB,EAAG,GAAK6yC,EAAO,GAAGztB,EACnC,CCNe,SAASs4B,GAAkB7K,EAAQztB,GAC9C,MAAO,EAAGytB,EAAO,GAAGztB,GAAS,EAAIytB,EAAO,GAAGztB,GAAS,EAAIytB,EAAO,GAAGztB,GAASytB,EAAO,GAAGztB,GACjF,GAAKytB,EAAO,GAAGztB,GAAS,EAAIytB,EAAO,GAAGztB,GAASytB,EAAO,GAAGztB,IACzD,IAAMytB,EAAO,GAAGztB,GAASytB,EAAO,GAAGztB,IACnCytB,EAAO,GAAGztB,GAElB,CCFA,IAAIu4B,GAAiB,SAAUplB,GAC3B,SAASolB,EAAcC,EAAMC,QACX,IAATD,IAAkBA,EAAO,QACjB,IAARC,IAAiBA,EAAM,GAE5BtlB,EAAMjuB,KAAKhD,MAEXA,KAAKs2C,KAAOA,EACZt2C,KAAKu2C,IAAMA,CACf,CA2CA,OAzCKtlB,IAAQolB,EAActrC,UAAYkmB,GACvColB,EAAcryC,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACxDqyC,EAAcryC,UAAUqH,YAAcgrC,EAEtCA,EAAcryC,UAAUmF,IAAM,SAAcqtC,GACxC,OAAO,IAAIH,EAAcr1B,GAAMhhB,KAAKs2C,KAAOE,EAAQF,KAAMjI,IAAYrtB,GAAMhhB,KAAKu2C,IAAMC,EAAQD,IAAKlI,IACvG,EAEAgI,EAAcryC,UAAUyyC,YAAc,SAAsBt5C,GACxD,OAAO,IAAIk5C,EAAcr2C,KAAKs2C,KAAOn5C,EAAO6C,KAAKu2C,IACrD,EAEAF,EAAcryC,UAAU0yC,OAAS,WAC7B,OAAO,IAAIL,GAAer2C,KAAKs2C,MAAOt2C,KAAKu2C,IAC/C,EAEAF,EAAcryC,UAAUyhC,SAAW,SAAmB+Q,GAClD,OAAO,IAAIH,EAAcr2C,KAAKs2C,KAAOE,EAAQF,KAAOt2C,KAAKu2C,IAAMC,EAAQD,IACnEv2C,KAAKs2C,KAAOE,EAAQD,IAAMv2C,KAAKu2C,IAAMC,EAAQF,KACrD,EAEAD,EAAcryC,UAAU2yC,iBAAmB,SAA2Bx5C,GAClE,OAAO,IAAIk5C,EAAcr2C,KAAKs2C,KAAOn5C,EAAO6C,KAAKu2C,IAAMp5C,EAC3D,EAEAk5C,EAAcryC,UAAU4yC,QAAU,SAAkBjrC,GAChD,IAAI4jB,EAAMzO,KAAKiuB,MAAM/uC,KAAKu2C,IAAKv2C,KAAKs2C,MAChCtnB,EAAIlO,KAAK0f,KAAK1f,KAAKuI,IAAIrpB,KAAKu2C,IAAK,GAAKz1B,KAAKuI,IAAIrpB,KAAKs2C,KAAM,IAC1DO,EAAO/1B,KAAKuI,IAAI2F,EAAG,EAAIrjB,GAE3B,OAAO,IAAI0qC,EAAcQ,EAAO/1B,KAAKgR,IAAIvC,EAAM5jB,GAAIkrC,EAAO/1B,KAAKiR,IAAIxC,EAAM5jB,GAC7E,EAEA0qC,EAAcryC,UAAUutB,OAAS,SAAiBilB,GAC9C,OAAOx2C,KAAKs2C,OAASE,EAAQF,MAAQt2C,KAAKu2C,MAAQC,EAAQD,GAC9D,EAEAF,EAAcryC,UAAU8yC,OAAS,WAC7B,OAAoB,IAAb92C,KAAKu2C,GAChB,EAEOF,CACX,CArDqB,CAqDnBplB,IAEF,MCvDA,SAAS8lB,GAAWhxB,GAChB,OAAOA,EAAI,GAAK,EAAI,CACxB,CAWe,SAASixB,GAAmBnoB,EAAGjkB,EAAGnD,EAAGkD,GAChD,GAAU,IAANkkB,EACA,OAXR,SAAgCA,EAAGjkB,EAAGnD,GAClC,IAAIwvC,EAAan2B,KAAK0f,KAAK1f,KAAKuI,IAAIze,EAAG,GAAK,EAAIikB,EAAIpnB,GACpD,MAAO,GACDmD,EAAIqsC,IAAe,EAAIpoB,KACvBjkB,EAAIqsC,IAAe,EAAIpoB,GAEjC,CAKeqoB,CAAuBtsC,EAAGnD,EAAGkD,GAGxC,IAKI2/B,EAAIE,EAAID,EAAIE,EAAI0M,EAAIC,EAAIC,EALxBrsC,GAAK,EAAI6jB,EAAIpnB,EAAIqZ,KAAKuI,IAAIze,EAAG,KAAO,EAAIkW,KAAKuI,IAAIwF,EAAG,IACpDqS,GAAK,EAAIpgB,KAAKuI,IAAIze,EAAG,GAAK,EAAIikB,EAAIjkB,EAAInD,EAAI,GAAKqZ,KAAKuI,IAAIwF,EAAG,GAAKlkB,IAAM,GAAKmW,KAAKuI,IAAIwF,EAAG,IACvFyoB,EAAIx2B,KAAKuI,IAAIre,EAAI,EAAG,GAAK8V,KAAKuI,IAAI6X,EAAI,EAAG,GACzCx1B,EAAI,IAAI2qC,GAAc,EAAE,GACxBkB,GAAO3sC,GAAK,EAAIikB,GAGhByoB,EAAI,GACJhN,EAAK,IAAI+L,IAAenV,EAAI,EAAGpgB,KAAK0f,MAAM8W,IAAIV,QAAQ,GACtDpM,EAAK,IAAI6L,IAAenV,EAAI,GAAKpgB,KAAK0f,MAAM8W,IAAIV,QAAQ,KAExDtM,GAAMpJ,EAAI,EAAIpgB,KAAK0f,KAAK8W,GACxBhN,EAAK,IAAI+L,GAAcU,GAAWzM,GAAMxpB,KAAKuI,IAAIvI,KAAKC,IAAIupB,GAAK,EAAI,IACnEE,GAAMtJ,EAAI,EAAIpgB,KAAK0f,KAAK8W,GACxB9M,EAAK,IAAI6L,GAAcU,GAAWvM,GAAM1pB,KAAKuI,IAAIvI,KAAKC,IAAIypB,GAAK,EAAI,KAGvED,EAAKD,EAAGnhC,IAAIqhC,GAEZ4M,EAAK9M,EAAGnhC,IAAIqhC,GAAImM,kBAAiB,IACjCU,EAAK/M,EAAGnhC,IAAIqhC,EAAGkM,UAAUC,iBAAiB71B,KAAK0f,KAAK,GAAK,GAEzDiK,EAAK2M,EAAGjuC,IAAIuC,EAAE+5B,SAAS4R,IACvBF,EAAKC,EAAGjuC,IAAIuC,EAAEgrC,SAASjR,SAAS4R,IAEhC,IAAIj/C,EAAS,GAYb,OAVImyC,EAAGuM,UACH1+C,EAAOgX,KAAK4R,GAAMupB,EAAG+L,KAAOiB,EAAKlJ,KAEjC5D,EAAGqM,UACH1+C,EAAOgX,KAAK4R,GAAMypB,EAAG6L,KAAOiB,EAAKlJ,KAEjC8I,EAAGL,UACH1+C,EAAOgX,KAAK4R,GAAMm2B,EAAGb,KAAOiB,EAAKlJ,KAG9Bj2C,CACX,CCxDe,SAASo/C,GAAgBjM,EAAQrG,EAAOpnB,EAAO25B,EAAWC,GAKrE,IAJA,IAEIpG,EAFAqG,EAAavB,GAAkB7K,EAAQkM,GACvCG,EAAQZ,GAAmBW,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAKzS,EAAMuS,IAGzFhjC,EAAM,EAAGA,EAAMmjC,EAAMx9C,OAAQqa,IAClC,GAAI,GAAKmjC,EAAMnjC,IAAQmjC,EAAMnjC,IAAQ,IACjC68B,EAAe4E,GAAiB0B,EAAMnjC,GAAMqJ,EAAOytB,GAC/CzqB,KAAKC,IAAIuwB,EAAepM,EAAMpnB,KAAW45B,GACzC,OAAO,CAIvB,CCjBe,SAASG,GAAuBhpB,EAAGjkB,EAAGs6B,GACjD,IAAI4S,EACJ,GAAIjpB,EAAE9I,IAAMnb,EAAEmb,EAAG,CACb,IAAIkiB,EAAOnnB,KAAK6N,IAAIE,EAAE9I,EAAGnb,EAAEmb,GACvBoiB,EAAOrnB,KAAK0K,IAAIqD,EAAE9I,EAAGnb,EAAEmb,GACvBmiB,EAAOpnB,KAAK6N,IAAIE,EAAE7I,EAAGpb,EAAEob,GACvBoiB,EAAOtnB,KAAK0K,IAAIqD,EAAE7I,EAAGpb,EAAEob,GACvB+xB,EAAU9P,GAAQ/C,EAAMnf,GAAKmf,EAAMnf,EAAIoiB,EAGvC2P,EADA5P,IAASE,EACIlD,EAAMlf,GAAKkiB,GAAQ6P,EAEnBA,IAAc3P,EAAOF,KAAUrZ,EAAE9I,EAAInb,EAAEmb,IAAM8I,EAAE7I,EAAIpb,EAAEob,GAAK,EAAIkf,EAAMnf,EAAIkiB,EAAOE,EAAOjD,EAAMnf,IAAOoiB,EAAOF,GAAQC,EAAOhD,EAAMlf,GAAM,CAE1J,CAEA,OAAO8xB,EAAa,EAAI,CAC5B,CCdA,SAASE,GAAcrnC,GACnB,IAAIikC,EAAY,IAAMjkC,EACtB,OAAO,SAASxT,GACZ,OAAIgoB,EAAQhoB,IACR6C,KAAK2mC,eAAeiO,EAAW3P,GAAAA,OAAa9nC,IAC5C6C,KAAKwmC,iBACExmC,MAGJA,KAAK40C,EAChB,CACJ,CAQA,IAiBA,GAjBiB,SAAU9N,EAAOhe,GAC9B,IAAI1wB,EAAU,SAAU0uC,GACpB,SAAS1uC,IACL0uC,EAAM5+B,MAAMlI,KAAM+H,UACtB,CAMA,OANM++B,IAAQ1uC,EAAO2S,UAAY+7B,GACjC1uC,EAAO4L,UAAY6G,OAAOS,OAAQw7B,GAASA,EAAM9iC,WACjD5L,EAAO4L,UAAUqH,YAAcjT,EAIxBA,CACX,CAVc,CAUZ0uC,GAGF,OApBJ,SAA8BzgB,EAAIyC,GAC9B,IAAK,IAAIpd,EAAI,EAAGA,EAAIod,EAAM1uB,OAAQsR,IAC9B2a,EAAGyC,EAAMpd,IAAMssC,GAAclvB,EAAMpd,GAE3C,CAcIusC,CAAqB7/C,EAAO4L,UAAW8kB,GAEhC1wB,CACX,ECtBI8/C,GAAW,SAAU9Q,GACrB,SAAS8Q,EAAQxyB,EAAQyyB,EAAWC,GAChChR,EAAWpkC,KAAKhD,MAEhBA,KAAK0lB,OAAOA,GAAU,IAAIuf,IAC1BjlC,KAAKm4C,UAAUA,GACfn4C,KAAKo4C,WAAWA,EACpB,CAuIA,OArIKhR,IAAa8Q,EAAQntC,UAAYq8B,GACtC8Q,EAAQl0C,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC5Dk0C,EAAQl0C,UAAUqH,YAAc6sC,EAEhCA,EAAQl0C,UAAUq0C,OAAS,SAAiBC,EAAWnnB,GACnD,IAAIonB,EAAgBv4C,KAAK0lB,SAASkiB,cAAczW,GAC5CqnB,EAAkBF,EAAU5yB,SAASkiB,cAAczW,GAYvD,OATInxB,KAAKo4C,cAAgBE,EAAUH,YACxBn4C,KAAKy4C,kBACRF,EAAev4C,KAAKo4C,aAAaxQ,cAAczW,GAC/CmnB,EAAUH,YAAYvQ,cAAczW,GAASqnB,GAG1Cx4C,KAAK04C,iBAAiBH,EAAeC,EAIpD,EAEAN,EAAQl0C,UAAU00C,iBAAmB,SAA2B1H,EAAIT,GAChE,OAAO9H,GAAAA,WAAgBuI,EAAIT,EAC/B,EAEA2H,EAAQl0C,UAAUy0C,kBAAoB,SAA4BzH,EAAIX,EAAKC,EAAKC,GAC5E,IAAIhF,EAAS,CAAEyF,EAAIX,EAAKC,EAAKC,GACzBoI,EAAY34C,KAAK44C,kBAAkBrN,EAAQ,KAC3CsN,EAAY74C,KAAK44C,kBAAkBrN,EAAQ,KAC3CuN,EAAUC,GAAY,CAAEJ,EAAUhqB,IAAKgqB,EAAUntB,IAAKwlB,EAAGjrB,EAAGwqB,EAAGxqB,IAC/DizB,EAAUD,GAAY,CAAEF,EAAUlqB,IAAKkqB,EAAUrtB,IAAKwlB,EAAGhrB,EAAGuqB,EAAGvqB,IAEnE,OAAOyiB,GAAAA,WAAgB,IAAIxD,GAAM6T,EAAQnqB,IAAKqqB,EAAQrqB,KAAM,IAAIsW,GAAM6T,EAAQttB,IAAKwtB,EAAQxtB,KAC/F,EAEA0sB,EAAQl0C,UAAU40C,kBAAoB,SAA4BrN,EAAQztB,GACtE,IAAIm7B,EAAWj5C,KAAKk5C,eAChB3N,EAAO,GAAGztB,GAAQytB,EAAO,GAAGztB,GAC5BytB,EAAO,GAAGztB,GAAQytB,EAAO,GAAGztB,IAGhC,MAAO,CACH6Q,IAAKunB,GAAiB+C,EAAStqB,IAAK7Q,EAAOytB,GAC3C/f,IAAK0qB,GAAiB+C,EAASztB,IAAK1N,EAAOytB,GAEnD,EAEA2M,EAAQl0C,UAAUk1C,eAAiB,SAAyB5O,EAAIE,EAAI2O,EAAIC,GACpE,IAAIvqB,EAAIyb,EAAK,EAAIE,EAAK,EAAI2O,EAAKC,EAC3BxuC,GAAM,GAAK0/B,EAAK,EAAIE,EAAK2O,GACzB1xC,EAAI6iC,EAAKE,EACThK,EAAO1f,KAAK0f,KAAK51B,EAAIA,EAAI,EAAIikB,EAAIpnB,GACjC0uC,EAAK,EACLkD,EAAK,EAEC,IAANxqB,EACU,IAANjkB,IACAurC,EAAKkD,GAAM5xC,EAAImD,GAEXqb,MAAMua,KACd2V,IAAQvrC,EAAI41B,IAAS,EAAI3R,GACzBwqB,IAAQzuC,EAAI41B,IAAS,EAAI3R,IAG7B,IAAIF,EAAM7N,KAAK0K,IAAI1K,KAAK6N,IAAIwnB,EAAIkD,GAAK,IACjC1qB,EAAM,GAAKA,EAAM,KACjBA,EAAM,GAGV,IAAInD,EAAM1K,KAAK6N,IAAI7N,KAAK0K,IAAI2qB,EAAIkD,GAAK,GAKrC,OAJI7tB,EAAM,GAAKA,EAAM,KACjBA,EAAM,GAGH,CACHmD,IAAKA,EACLnD,IAAKA,EAEb,EAEA0sB,EAAQl0C,UAAUs1C,iBAAmB,SAA2BC,EAASrU,GACrE,IAAIsU,EAMJ,OAJIA,EADAx5C,KAAKo4C,cAAgBmB,EAAQpB,YCrG1B,SAAiC5M,EAAQrG,EAAOmE,GAK3D,IAJA,IAEIoQ,EAFA9B,EAAavB,GAAkB7K,EAAQ,KACvCqM,EAAQZ,GAAmBW,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAIA,EAAW,GAAKzS,EAAMnf,GAE9F2zB,EAAQ,EACHhuC,EAAI,EAAGA,EAAIksC,EAAMx9C,OAAQsR,KAEd6iC,GADhBkL,EAAkBvD,GAAiB0B,EAAMlsC,GAAI,IAAK6/B,GACXrG,EAAMlf,IAAMyzB,EAAkBvU,EAAMlf,MACtC,IAAb4xB,EAAMlsC,IAAyB,IAAbksC,EAAMlsC,KAAa29B,EAAKH,cAAcnjB,EAAImf,EAAMnf,GAAO,EAAI6xB,EAAMlsC,IAAMksC,EAAMlsC,GAAK,IACxHguC,IAIR,OAAOA,CACX,CDwFiCC,CAAwB,CAAE35C,KAAK0lB,SAAU1lB,KAAKo4C,aAAcmB,EAAQpB,YAAaoB,EAAQ7zB,UAAYwf,EAAOllC,KAAKq4C,OAAOkB,IAExH1B,GAAuB73C,KAAK0lB,SAAU6zB,EAAQ7zB,SAAUwf,GAE1EsU,CACX,EAEAtB,EAAQl0C,UAAU41C,aAAe,SAAuBL,EAASrU,EAAO1wC,EAAOqlD,GAE3E,GADW75C,KAAKq4C,OAAOkB,GAAS5P,OAAOn1C,EAAOA,GACrCq1C,cAAc3E,GAAQ,CAC3B,IAAI8L,EAAKhxC,KAAK0lB,SACV6qB,EAAKvwC,KAAKo4C,aACV5G,EAAK+H,EAAQpB,YACb2B,EAAKP,EAAQ7zB,SAEjB,GAAmB,UAAfm0B,GAA0B7I,EAAGtL,WAAWR,IAAU1wC,EAClD,OAAQwhD,GAAgBhF,EAAIT,EAAIrL,GAC7B,GAAmB,QAAf2U,GAAwBC,EAAGpU,WAAWR,IAAU1wC,EACvD,OAAQwhD,GAAgB8D,EAAItI,EAAItM,GAIpC,IAAIqG,EAAS,CAAEyF,EAAIT,EAAIiB,EAAIsI,GAC3B,GAAItC,GAAgBjM,EAAQrG,EAAO,IAAK,IAAK1wC,IAAUgjD,GAAgBjM,EAAQrG,EAAO,IAAK,IAAK1wC,GAC5F,OAAO,EAEX,IAAIk3C,EAAWpZ,KAAYV,OAAO,GAAIsT,GAClC6U,EAAgB,CAAE/I,EAAGpJ,cAAc8D,GAAW6E,EAAG3I,cAAc8D,GAAW8F,EAAG5J,cAAc8D,GAAWoO,EAAGlS,cAAc8D,IAC3H,OAAO8L,GAAgBuC,EAAe7U,EAAO,IAAK,IAAK1wC,IAAUgjD,GAAgBuC,EAAe7U,EAAO,IAAK,IAAK1wC,EACrH,CACJ,EAEA0jD,EAAQl0C,UAAUg2C,YAAc,SAAsBT,EAASrU,EAAO1wC,GAClE,IAAIw8C,EAAKhxC,KAAK0lB,SACV6qB,EAAKgJ,EAAQ7zB,SACbmM,EAAQ7E,GAAIlM,KAAKiuB,MAAMwB,EAAGvqB,EAAIgrB,EAAGhrB,EAAGuqB,EAAGxqB,EAAIirB,EAAGjrB,IAElD,OADW,IAAI0iB,GAAK,CAAEuI,EAAGjrB,EAAGirB,EAAGhrB,EAAIxxB,EAAQ,GAAK,CAAEw8C,EAAGtL,WAAW6K,GAAK/7C,IACzDq1C,cAAc3E,EAAM0C,cAActV,KAAYV,QAAQC,EAAOmf,IAC7E,EAEAkH,EAAQl0C,UAAUi2C,YAAc,SAAsBV,EAASrU,EAAO1wC,EAAOqlD,GAOzE,OALI75C,KAAKo4C,cAAgBmB,EAAQpB,YAClBn4C,KAAK45C,aAAaL,EAASrU,EAAO1wC,EAAQ,EAAGqlD,GAE7C75C,KAAKg6C,YAAYT,EAASrU,EAAO1wC,EAGpD,EAEO0jD,CACX,CA/Ie,CA+IbgC,GAAWnU,GAjJA,CAAE,SAAU,YAAa,gBAmJtC,SAASgT,GAAYjjB,GAKjB,IAJA,IAAI17B,EAAS07B,EAAI17B,OACbu0B,EAAM7B,GACNtB,EAAMuB,GAEDrhB,EAAI,EAAGA,EAAItR,EAAQsR,IACxB8f,EAAM1K,KAAK0K,IAAIA,EAAKsK,EAAIpqB,IACxBijB,EAAM7N,KAAK6N,IAAIA,EAAKmH,EAAIpqB,IAG5B,MAAO,CACHijB,IAAKA,EACLnD,IAAKA,EAEb,CAEA,UE3KIzG,GAAI,IACJC,GAAI,IAED,SAASm1B,GAAcC,EAAUC,GACpC,IAAI9O,EAAS6O,EAAS1/B,MAAM,GACxB+K,EAAW,GACXrrB,EAASmxC,EAAOnxC,OAOpB,GALIA,EAAS,IACTkgD,GAAiB,EAAG/O,GACpBnxC,EAASmxC,EAAOnxC,QAGhBA,EAAS,GAAiB,IAAXA,GAAgBmxC,EAAO,GAAGha,OAAOga,EAAO,IACvD,OAAO9lB,EAGX,IA2BI80B,EAAqBC,EA3BrBjJ,EAAKhG,EAAO,GACZyF,EAAKzF,EAAO,GACZgF,EAAKhF,EAAO,GAIhB,IAFA9lB,EAASrW,KAAK,IAAI8oC,GAAQ3G,IAEnBA,EAAGhgB,OAAOga,EAAOnxC,EAAS,KAC7BigD,GAAS,EACT9O,EAAOmI,MACPt5C,IAGJ,GAAe,IAAXA,EAAc,CACd,IAAIqgD,EAAUC,GAAWnJ,EAAGP,EAAIjsB,GAAGC,IAWnC,OATAyJ,GAAKhJ,GAAU2yB,WACXuC,GAAkBF,EAASlJ,EAAIP,EAAIjsB,GAAGC,KAG1CS,EAASrW,KAAK,IAAI8oC,GACdlH,EACA4J,GAAmBH,EAASlJ,EAAIP,EAAIjsB,GAAGC,MAGpCS,CACX,CAIA,GAAI40B,EAAQ,CAER,IAAIQ,EAAgBC,GADpBvJ,EAAKhG,EAAOnxC,EAAS,GAAI42C,EAAKzF,EAAO,GAAIgF,EAAKhF,EAAO,IAErDgP,EAAsBM,EAAc,GACpCL,EAAmBK,EAAc,EACrC,KAAO,CAEHN,EAAsBI,GADND,GAAWnJ,EAAIP,EAAIjsB,GAAEC,IACcusB,EAAIP,EAAIjsB,GAAGC,GAClE,CAGA,IADA,IAAI+1B,EAAMR,EACD9lC,EAAM,EAAGA,GAAOra,EAAS,EAAGqa,IAGjC,GAFA6lC,GAAiB7lC,EAAK82B,GAElB92B,EAAM,IADVra,EAASmxC,EAAOnxC,QACO,CAEnB,IAAI4gD,EAAkBF,GADtBvJ,EAAKhG,EAAO92B,GAAMu8B,EAAKzF,EAAO92B,EAAM,GAAI87B,EAAKhF,EAAO92B,EAAM,IAG1Dga,GAAKhJ,GAAU2yB,WAAW2C,GAC1BA,EAAMC,EAAgB,GAEtB,IAAI3K,EAAM2K,EAAgB,GAC1Bv1B,EAASrW,KAAK,IAAI8oC,GAAQlH,EAAIX,GAClC,CAGJ,GAAIgK,EAAQ,CAER,IAAIY,EAAkBH,GADtBvJ,EAAKhG,EAAOnxC,EAAS,GAAI42C,EAAKzF,EAAOnxC,EAAS,GAAIm2C,EAAKhF,EAAO,IAG9D9c,GAAKhJ,GAAU2yB,WAAW2C,GAC1Bt1B,EAASrW,KAAK,IAAI8oC,GACdlH,EACAiK,EAAgB,KAGpBxsB,GAAKhJ,GAAU2yB,WAAW6C,EAAgB,IAC1Cx1B,EAASrW,KAAK,IAAI8oC,GACd3H,EACAiK,GAER,KAAO,CACH,IAAIU,EAAYR,GAAW1J,EAAIT,EAAIxrB,GAAGC,IAEtCyJ,GAAKhJ,GAAU2yB,WAAW2C,GAC1Bt1B,EAASrW,KAAK,IAAI8oC,GACd3H,EACAqK,GAAmBM,EAAWlK,EAAIT,EAAIxrB,GAAGC,KAEjD,CAEA,OAAOS,CACX,CAMO,SAAS60B,GAAiB7lC,EAAK82B,GAClC,KAAOA,EAAO92B,EAAM,KAAO82B,EAAO92B,GAAK8c,OAAOga,EAAO92B,EAAM,KAAO82B,EAAO92B,EAAM,GAAG8c,OAAOga,EAAO92B,EAAM,MAClG82B,EAAOnF,OAAO3xB,EAAM,EAAG,EAE/B,CA8BO,SAAS0mC,GAAanK,EAAIT,GAC7B,IAAI1hB,GAAK0hB,EAAGvqB,EAAIgrB,EAAGhrB,IAAMuqB,EAAGxqB,EAAIirB,EAAGjrB,GAGnC,MAAO,CAFCirB,EAAGhrB,EAAI6I,EAAImiB,EAAGjrB,EAEV8I,EAChB,CAEO,SAASisB,GAAiBvJ,EAAIP,EAAIT,GACrC,IAIIkK,EAJAW,EAASr2B,GACTs2B,EAASr2B,GACTs2B,GAAW,EACXC,GAAoB,EAGxB,GArBG,SAAgBhK,EAAIP,EAAIT,GAC3B,IACI9F,EAAK+Q,GADAL,GAAa5J,EAAIP,GACKT,EAAGxqB,GAElC,OAAQwrB,EAAGxrB,IAAMirB,EAAGjrB,GAAKirB,EAAGjrB,IAAMwqB,EAAGxqB,GAAM/E,GAAMypB,EAAI,KAAOzpB,GAAMuvB,EAAGvqB,EAAG,EAC5E,CAgBQy1B,CAAOlK,EAAIP,EAAIT,GACfkK,EAAUC,GAAWnJ,EAAIP,EAAIjsB,GAAGC,QAC7B,CACH,IAAI02B,EAAY,CACZ31B,EAAG41B,GAAmBpK,EAAIP,EAAIT,EAAIxrB,IAClCiB,EAAG21B,GAAmBpK,EAAIP,EAAIT,EAAIvrB,KAGtC,GAAI02B,EAAU31B,GAAK21B,EAAU11B,EACzBy0B,EAAUC,GAAWnJ,EAAIhB,EAAIxrB,GAAGC,IAChCs2B,GAAW,OAOX,GA3DL,SAAoB/J,EAAIP,EAAIT,GAC/B,IAAIqL,GAAa,EAEjB,GAAIrK,EAAGxrB,IAAMirB,EAAGjrB,EACZ61B,GAAa,OACV,GAAI5K,EAAGjrB,IAAMwqB,EAAGxqB,GACdirB,EAAGhrB,EAAIuqB,EAAGvqB,GAAKurB,EAAGvrB,GAAKgrB,EAAGhrB,GAAOuqB,EAAGvqB,EAAIgrB,EAAGhrB,GAAKgrB,EAAGhrB,GAAKurB,EAAGvrB,KAC5D41B,GAAa,OAEd,CACH,IACInR,EAAK+Q,GADAL,GAAa5J,EAAGP,GACMT,EAAGxqB,GAC5BwrB,EAAGvrB,GAAKgrB,EAAGhrB,GAAKuqB,EAAGvqB,GAAKykB,GACxBuG,EAAGhrB,GAAKurB,EAAGvrB,GAAKuqB,EAAGvqB,GAAKykB,IAC1BmR,GAAa,EAErB,CAEA,OAAOA,CACX,CAmCgBA,CAAWrK,EAAIP,EAAIT,KACnB6K,EAASp2B,GACTq2B,EAASt2B,IAGT22B,EAAUN,GACVX,EAAU,OAUVA,EArLiB,KA8KZlK,EAAG8K,GAAU9J,EAAG8J,IAAW9J,EAAG8J,IAAWrK,EAAGqK,IAC5C9J,EAAG8J,GAAU9K,EAAG8K,IAAWrK,EAAGqK,IAAW9J,EAAG8J,GACtCtE,IAAYxG,EAAG8K,GAAU9J,EAAG8J,KAAYrK,EAAGoK,GAAU7J,EAAG6J,MAEvDrE,IAAYxG,EAAG6K,GAAU7J,EAAG6J,KAAYpK,EAAGqK,GAAU9J,EAAG8J,MAIpEE,GAAoB,CAGhC,CAEA,IAAIM,EAAWjB,GAAmBH,EAASlJ,EAAIP,EAAIoK,EAAQC,GAE3D,GAAIE,EAAmB,CACnB,IAAIO,EAAYV,EAChBA,EAASC,EACTA,EAASS,CACb,CAEA,IAAIC,EAAUpB,GAAkBF,EAASzJ,EAAIT,EAAI6K,EAAQC,GAOzD,OALIC,IACAU,GAAqBzK,EAAIP,EAAI6K,EAAUpB,GACvCuB,GAAqBhL,EAAIT,EAAIwL,EAAStB,IAGnC,CAAEoB,EAAUE,EACvB,CAEO,SAASC,GAAqBhL,EAAIT,EAAI0L,EAAIxB,GACzCzJ,EAAGhrB,EAAIuqB,EAAGvqB,EACNuqB,EAAGvqB,EAAIi2B,EAAGj2B,GACVi2B,EAAGl2B,EAAIirB,EAAGjrB,GAAKwqB,EAAGvqB,EAAIgrB,EAAGhrB,GAAKy0B,EAC9BwB,EAAGj2B,EAAIuqB,EAAGvqB,GACHi2B,EAAGj2B,EAAIgrB,EAAGhrB,IACjBi2B,EAAGl2B,EAAIwqB,EAAGxqB,GAAKwqB,EAAGvqB,EAAIgrB,EAAGhrB,GAAKy0B,EAC9BwB,EAAGj2B,EAAIgrB,EAAGhrB,GAGVi2B,EAAGj2B,EAAIuqB,EAAGvqB,GACVi2B,EAAGl2B,EAAIirB,EAAGjrB,GAAKirB,EAAGhrB,EAAIuqB,EAAGvqB,GAAKy0B,EAC9BwB,EAAGj2B,EAAIuqB,EAAGvqB,GACHgrB,EAAGhrB,EAAIi2B,EAAGj2B,IACjBi2B,EAAGl2B,EAAIwqB,EAAGxqB,GAAKirB,EAAGhrB,EAAIuqB,EAAGvqB,GAAKy0B,EAC9BwB,EAAGj2B,EAAIgrB,EAAGhrB,EAGtB,CAEO,SAAS00B,GAAWnJ,EAAIP,EAAIoK,EAAQC,GACvC,IAAIt1B,EAAIirB,EAAGoK,GAAU7J,EAAG6J,GACpBp1B,EAAIgrB,EAAGqK,GAAU9J,EAAG8J,GASxB,OANU,IAANt1B,EACU,EAEAC,EAAID,CAItB,CAEO,SAAS41B,GAAmBpK,EAAIP,EAAIT,EAAIzyB,GAC3C,OAAQyyB,EAAGzyB,GAASkzB,EAAGlzB,IAAUkzB,EAAGlzB,GAASyzB,EAAGzzB,IACnCyyB,EAAGzyB,GAASkzB,EAAGlzB,IAAUkzB,EAAGlzB,GAASyzB,EAAGzzB,EACzD,CAEO,SAAS68B,GAAkBF,EAASlJ,EAAIC,EAAI4J,EAAQC,GACvD,IAAIlF,EAAK5E,EAAG6J,GAERpO,EAxPK,MAuPAwE,EAAG4J,GACSjF,GAErB,OAAOjR,GAAMiR,EAAKnJ,EAAUuE,EAAG8J,GAAUrO,EAAWyN,EAASW,EAAQC,EACzE,CAEO,SAAST,GAAmBH,EAASlJ,EAAIC,EAAI4J,EAAQC,GACxD,IAAIlF,EAAK5E,EAAG6J,GACR/B,EAAK7H,EAAG4J,GACRpO,EAhQK,MAgQOqM,EAAKlD,GAErB,OAAOjR,GAAMmU,EAAKrM,EAAUwE,EAAG6J,GAAUrO,EAAWyN,EAASW,EAAQC,EACzE,CAEO,SAASnW,GAAMgX,EAAQC,EAAQf,EAAQC,GAC1C,IAAIpF,EAAe,IAAIhR,GAIvB,OAHAgR,EAAamF,GAAUc,EACvBjG,EAAaoF,GAAUc,EAEhBlG,CACX,CAEO,SAASuF,GAAkBn1B,EAAIN,GAIlC,IAHA,IAAI3rB,EAASisB,EAAGjsB,OACZhC,EAAS,EAEJsT,EAAI,EAAGA,EAAItR,EAAQsR,IACxBtT,GAAU0oB,KAAKuI,IAAItD,EAAEra,GAAK2a,EAAG3a,GAEjC,OAAOtT,CACX,CAEO,SAAS2+C,GAAW55C,GACvB,OAAOA,GAAS,GAAK,EAAI,CAC7B,CC1RA,IAwDA,GAtDgB,SAAU2pC,GAAS,OAC9B,SAAUA,GACP,SAASsV,IACLtV,EAAM5+B,MAAMlI,KAAM+H,UACtB,CA8CA,OA5CK++B,IAAQsV,EAAUrxC,UAAY+7B,GACnCsV,EAAUp4C,UAAY6G,OAAOS,OAAQw7B,GAASA,EAAM9iC,WACpDo4C,EAAUp4C,UAAUqH,YAAc+wC,EAElCA,EAAUp4C,UAAU+xC,KAAO,SAAevnB,EAAOgnB,GAC7C,IAAIlgC,EAAUtV,KAAKsV,QAEnB,GAAI6P,EAAQqJ,GAAQ,CAChB,GAAIA,GAhBL,aAgBcA,EAAMymB,SAAuB,CACtC,IAAIoH,EAAU,CACV7tB,MAAOA,GAEPrJ,EAAQqwB,KACR6G,EAAQ7G,QAAUA,GAEtBlgC,EAAQ2T,IAAI,OAAQozB,EACxB,MACI/mC,EAAQ2T,IAAI,OAAQuF,GAGxB,OAAOxuB,IACX,CAEA,OAAOsV,EAAQlJ,IAAI,OACvB,EAEAgwC,EAAUp4C,UAAUuhB,OAAS,SAAiBiJ,EAAOh6B,EAAOghD,GACxD,OAAIrwB,EAAQqJ,IACRxuB,KAAKsV,QAAQ2T,IAAI,eAAgBuF,GAE7BrJ,EAAQ3wB,IACRwL,KAAKsV,QAAQ2T,IAAI,eAAgBz0B,GAGjC2wB,EAAQqwB,IACRx1C,KAAKsV,QAAQ2T,IAAI,iBAAkBusB,GAGhCx1C,MAGJA,KAAKsV,QAAQlJ,IAAI,SAC5B,EAEOgwC,CACX,CAlDC,CAkDCtV,EACH,ECrDCwV,GAAuBtrB,GAAAA,SAAAA,WA4C3B,GA1CiB,SAAU8V,GAAS,OAC/B,SAAUA,GACP,SAASsV,IACLtV,EAAM5+B,MAAMlI,KAAM+H,UACtB,CAkCA,OAhCK++B,IAAQsV,EAAUrxC,UAAY+7B,GACnCsV,EAAUp4C,UAAY6G,OAAOS,OAAQw7B,GAASA,EAAM9iC,WACpDo4C,EAAUp4C,UAAUqH,YAAc+wC,EAElCA,EAAUp4C,UAAUqlC,KAAO,SAAelC,GACtC,IAEIkC,EAFAiM,EAAiBpO,GAASlnC,KAAKq1C,iBAAiBlO,IAChDoV,EAAajH,EAAiBA,EAAe/0C,WAAa+7C,GAG1Dt8C,KAAKw8C,YAAcx8C,KAAKy8C,cAAgBF,EACxClT,EAAOrpC,KAAKw8C,WAAW31B,SAEvBwiB,EAAOrpC,KAAK08C,MAAMpH,GAClBt1C,KAAKw8C,WAAanT,EAAOA,EAAKxiB,QAAU,KACxC7mB,KAAKy8C,YAAcF,GAGvB,IAAII,EAAc38C,KAAKsV,QAAQlJ,IAAI,gBAKnC,OAJIuwC,GAAetT,GACfA,EAAKM,OAAOgT,EAAc,GAGvBtT,CACX,EAEA+S,EAAUp4C,UAAUwiC,eAAiB,kBAC1BxmC,KAAKw8C,WACZx8C,KAAK+pB,QAAQ,iBAAkB,CAC3Bv2B,QAASwM,MAEjB,EAEOo8C,CACX,CAtCC,CAsCCtV,EACH,EC1CC8V,GAAW,CACX/b,EAAG,SAASxb,EAAM/P,GAId,IAHA,IAAI+8B,EAAa/8B,EAAQ+8B,WACrBwK,EAAWvnC,EAAQunC,SAEdnxC,EAAI,EAAGA,EAAI2mC,EAAWj4C,OAAQsR,GAAK,EAAG,CAC3C,IAAIw5B,EAAQ,IAAID,GAAMoN,EAAW3mC,GAAI2mC,EAAW3mC,EAAI,IAEhD4J,EAAQwnC,YACR5X,EAAMuC,cAAcoV,GAGxBx3B,EAAK03B,OAAO7X,EAAMnf,EAAGmf,EAAMlf,GAE3B62B,EAAS92B,EAAImf,EAAMnf,EACnB82B,EAAS72B,EAAIkf,EAAMlf,CACvB,CACJ,EAEAve,EAAG,SAAS4d,EAAM/P,GAId,IAHA,IAAI+8B,EAAa/8B,EAAQ+8B,WACrBwK,EAAWvnC,EAAQunC,SAEdnxC,EAAI,EAAGA,EAAI2mC,EAAWj4C,OAAQsR,GAAK,EAAG,CAC3C,IAAI0sC,EAAa,IAAInT,GAAMoN,EAAW3mC,GAAI2mC,EAAW3mC,EAAI,IACrDysC,EAAY,IAAIlT,GAAMoN,EAAW3mC,EAAI,GAAI2mC,EAAW3mC,EAAI,IACxDw5B,EAAQ,IAAID,GAAMoN,EAAW3mC,EAAI,GAAI2mC,EAAW3mC,EAAI,IACpD4J,EAAQwnC,aACR3E,EAAU1Q,cAAcoV,GACxBzE,EAAW3Q,cAAcoV,GACzB3X,EAAMuC,cAAcoV,IAGxBx3B,EAAK23B,QAAQ5E,EAAYD,EAAWjT,GAEpC2X,EAAS92B,EAAImf,EAAMnf,EACnB82B,EAAS72B,EAAIkf,EAAMlf,CACvB,CACJ,EAEAtqB,EAAG,SAAS2pB,EAAM/P,GACd,IAAInY,EAAQmY,EAAQwnC,WAAa,EAAIxnC,EAAQunC,SAAS92B,EAEtDk3B,GAAiB3nC,EAAQ+8B,YAAY,EAAMl1C,GAC3C6C,KAAK6gC,EAAExb,EAAM/P,EACjB,EAEA+b,EAAG,SAAShM,EAAM/P,GACd,IAAInY,EAAQmY,EAAQwnC,WAAa,EAAIxnC,EAAQunC,SAAS72B,EAEtDi3B,GAAiB3nC,EAAQ+8B,YAAY,EAAOl1C,GAC5C6C,KAAK6gC,EAAExb,EAAM/P,EACjB,EAEAuZ,EAAG,SAASxJ,EAAM/P,GAId,IAHA,IAAI+8B,EAAa/8B,EAAQ+8B,WACrBwK,EAAWvnC,EAAQunC,SAEdnxC,EAAI,EAAGA,EAAI2mC,EAAWj4C,OAAQsR,GAAK,EAAG,CAC3C,IAAI2jC,EAAUgD,EAAW3mC,GACrB4jC,EAAU+C,EAAW3mC,EAAI,GACzBggC,EAAW2G,EAAW3mC,EAAI,GAC1BwmC,EAAWG,EAAW3mC,EAAI,GAC1BymC,EAAQE,EAAW3mC,EAAI,GACvBkiC,EAAW,IAAI3I,GAAMoN,EAAW3mC,EAAI,GAAI2mC,EAAW3mC,EAAI,IAEvD4J,EAAQwnC,YACRlP,EAASnG,cAAcoV,GAEvBA,EAAS92B,IAAM6nB,EAAS7nB,GAAK82B,EAAS72B,IAAM4nB,EAAS5nB,IACrDX,EAAK63B,MAAMtP,EAAUyB,EAASC,EAAS4C,EAAUC,EAAOzG,GAExDmR,EAAS92B,EAAI6nB,EAAS7nB,EACtB82B,EAAS72B,EAAI4nB,EAAS5nB,EAE9B,CACJ,EAEAva,EAAG,SAAS4Z,EAAM/P,GACd,IAGI6nC,EAHA9K,EAAa/8B,EAAQ+8B,WACrBwK,EAAWvnC,EAAQunC,SACnBO,EAAkB9nC,EAAQ8nC,gBAGN,MAApBA,GAA+C,MAApBA,IAC3BD,EAAgB1uB,GAAKA,GAAKpJ,EAAKg4B,OAAO53B,UAAU0yB,aAGpD,IAAK,IAAIzsC,EAAI,EAAGA,EAAI2mC,EAAWj4C,OAAQsR,GAAK,EAAG,CAC3C,IAAIysC,EAAY,IAAIlT,GAAMoN,EAAW3mC,GAAI2mC,EAAW3mC,EAAI,IACpDkiC,EAAW,IAAI3I,GAAMoN,EAAW3mC,EAAI,GAAI2mC,EAAW3mC,EAAI,IACvD0sC,OAAc,EAEd9iC,EAAQwnC,aACR3E,EAAU1Q,cAAcoV,GACxBjP,EAASnG,cAAcoV,IAIvBzE,EADA+E,EACaG,GAAgBH,EAAeN,GAE/BA,EAASh2B,QAG1Bs2B,EAAgBhF,EAEhB9yB,EAAK23B,QAAQ5E,EAAYD,EAAWvK,GAEpCiP,EAAS92B,EAAI6nB,EAAS7nB,EACtB82B,EAAS72B,EAAI4nB,EAAS5nB,CAC1B,CACJ,EAEAkb,EAAG,SAAS7b,EAAM/P,GAId,IAHA,IAAI+8B,EAAa/8B,EAAQ+8B,WACrBwK,EAAWvnC,EAAQunC,SAEdnxC,EAAI,EAAGA,EAAI2mC,EAAWj4C,OAAQsR,GAAK,EAAG,CAC3C,IAAIuqC,EAAe,IAAIhR,GAAMoN,EAAW3mC,GAAI2mC,EAAW3mC,EAAI,IACvDkiC,EAAW,IAAI3I,GAAMoN,EAAW3mC,EAAI,GAAI2mC,EAAW3mC,EAAI,IAEvD4J,EAAQwnC,aACR7G,EAAaxO,cAAcoV,GAC3BjP,EAASnG,cAAcoV,IAG3B,IAAIU,EAAqBC,GAA8BX,EAAU5G,EAAcrI,GAE/EvoB,EAAK23B,QAAQO,EAAmBnF,WAAYmF,EAAmBpF,UAAWvK,GAE1EiP,EAAS92B,EAAI6nB,EAAS7nB,EACtB82B,EAAS72B,EAAI4nB,EAAS5nB,CAC1B,CACJ,EAEAttB,EAAG,SAAS2sB,EAAM/P,GACd,IAGI2gC,EAHA5D,EAAa/8B,EAAQ+8B,WACrBwK,EAAWvnC,EAAQunC,SACnBO,EAAkB9nC,EAAQ8nC,gBAGN,MAApBA,GAA+C,MAApBA,IAE3BnH,EADkBxnB,GAAKA,GAAKpJ,EAAKg4B,OAAO53B,UACb0yB,YAAYtxB,QAClC4gB,cAAcoV,EAASlV,WAAW,EAAI,IACtC3V,MAAM,MAGf,IAAK,IAAItmB,EAAI,EAAGA,EAAI2mC,EAAWj4C,OAAQsR,GAAK,EAAG,CAC3C,IAAIkiC,EAAW,IAAI3I,GAAMoN,EAAW3mC,GAAI2mC,EAAW3mC,EAAI,IACnD4J,EAAQwnC,YACRlP,EAASnG,cAAcoV,GAIvB5G,EADAA,EACeqH,GAAgBrH,EAAc4G,GAE9BA,EAASh2B,QAG5B,IAAI02B,EAAqBC,GAA8BX,EAAU5G,EAAcrI,GAE/EvoB,EAAK23B,QAAQO,EAAmBnF,WAAYmF,EAAmBpF,UAAWvK,GAE1EiP,EAAS92B,EAAI6nB,EAAS7nB,EACtB82B,EAAS72B,EAAI4nB,EAAS5nB,CAC1B,CACJ,GAGJ,SAASi3B,GAAiB5K,EAAYoL,EAAYtgD,GAG9C,IAFA,IAAIugD,EAAiBD,EAAa,EAAI,EAE7B/xC,EAAI,EAAGA,EAAI2mC,EAAWj4C,OAAQsR,GAAK,EACxC2mC,EAAWjM,OAAO16B,EAAIgyC,EAAgB,EAAGvgD,EAEjD,CAEA,SAASmgD,GAAgBpY,EAAOC,GAC5B,GAAID,GAASC,EACT,OAAOA,EAAOwC,UAAU,GAAGhiB,WAAWuf,EAAMnf,GAAImf,EAAMlf,EAE9D,CAEA,IAAI23B,GAAQ,EAAI,EAEhB,SAASH,GAA8BX,EAAU5G,EAAcrI,GAC3D,IAAIgQ,EAAc3H,EAAapvB,QAAQmL,MAAM,EAAI,GACjD,MAAO,CACHomB,WAAYwF,EAAY/2B,QAAQ4gB,cAAcoV,EAASlV,UAAUgW,KACjExF,UAAWyF,EAAYnW,cAAcmG,EAASjG,UAAUgW,KAEhE,CAEA,UClMIE,GAAgB,kCAChBC,GAAc,oDA6DlB,OAjDA,SAAmBC,EAAc1pC,GAC7B,IACI+oC,EADAP,EAAW,IAAI5X,GA6CnB,OA1CA5wB,EAAIjS,QAAQy7C,IAAe,SAAUp1B,EAAOj1B,EAAS4nB,EAAQ4iC,GACzD,IAAIC,EAAUzqD,EAAQu3B,cAClB+xB,EAAamB,IAAYzqD,EACzB6+C,EAfZ,SAAyBh+B,GACrB,IAAIg+B,EAAa,GAIjB,OAHAh+B,EAAIjS,QAAQ07C,IAAa,SAASr1B,EAAOy1B,GACrC7L,EAAWjjC,KAAKlF,WAAWg0C,GAC/B,IACO7L,CACX,CASyB8L,CAAgB/iC,EAAO2U,QAmBxC,GArCG,MAoBCkuB,IACInB,GACAD,EAAS92B,GAAKssB,EAAW,GACzBwK,EAAS72B,GAAKqsB,EAAW,KAEzBwK,EAAS92B,EAAIssB,EAAW,GACxBwK,EAAS72B,EAAIqsB,EAAW,IAG5B0L,EAAaK,OAAOvB,EAAS92B,EAAG82B,EAAS72B,GAErCqsB,EAAWj4C,OAAS,IACpB6jD,EAAU,IACV5L,EAAWjM,OAAO,EAAG,KAIzBwW,GAASqB,GACTrB,GAASqB,GACLF,EAAc,CACV1L,WAAYA,EACZwK,SAAUA,EACVC,WAAYA,EACZM,gBAAiBA,IAIrBY,GA9CJ,MA8CiBA,EAAUjzB,eACvBgzB,EAAaxP,aAEd,GAlDJ,MAkDQ0P,EACP,MAAM,IAAI79C,MAAM,sDAAwD69C,GAG5Eb,EAAkBa,CACtB,IAEOF,CACX,EC7De,SAASM,GAAoBvK,EAAUwK,EAAgBnX,GAGlE,IAFA,IAAIoX,EAEK7yC,EAAI,EAAGA,EAAIooC,EAAS15C,OAAQsR,IAAK,CACtC,IAAIlY,EAAUsgD,EAASpoC,GACvB,GAAIlY,EAAQO,UAAW,CACnB,IAAIyqD,EAAqBF,EAAiB9qD,EAAQ61C,KAAKlC,GAAkB3zC,EAAQirD,UAC7ED,IAEID,EADAA,EACc9V,GAAAA,MAAW8V,EAAaC,GAExBA,EAG1B,CACJ,CAEA,OAAOD,CACX,CClBe,SAASG,GAA2B5K,EAAU3M,GAGzD,IAFA,IAAIoX,EAEK7yC,EAAI,EAAGA,EAAIooC,EAAS15C,OAAQsR,IAAK,CACtC,IAAIlY,EAAUsgD,EAASpoC,GACvB,GAAIlY,EAAQO,UAAW,CACnB,IAAIyqD,EAAqBhrD,EAAQiiD,YAAYtO,GACzCqX,IAEID,EADAA,EACc9V,GAAAA,MAAW8V,EAAaC,GAExBA,EAG1B,CACJ,CAEA,OAAOD,CACX,CCHA,IAAII,GAAQ,IASDC,GAAQ,SAAUxX,GACzB,SAASwX,EAAKtpC,GACV8xB,EAAWpkC,KAAKhD,KAAMsV,GACtBtV,KAAKylB,SAAW,IAAI4uB,GACpBr0C,KAAKylB,SAASygB,YAAYlmC,MAErBmlB,EAAQnlB,KAAKsV,QAAQiQ,UACtBvlB,KAAKulB,OAAO,QAEPJ,EAAQnlB,KAAKsV,QAAQiQ,OAAOs5B,WAC7B7+C,KAAKsV,QAAQ2T,IAAI,kBAAmB,SAGhD,CAEKme,IAAawX,EAAK7zC,UAAYq8B,GACnCwX,EAAK56C,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACzD46C,EAAK56C,UAAUqH,YAAcuzC,EAE7B,IAAI9b,EAAqB,CAAEmS,SAAU,CAAE3oC,cAAc,IAmRrD,OAjRAw2B,EAAmBmS,SAAS7oC,IAAM,WAC9B,MAAO,MACX,EAEAwyC,EAAK56C,UAAUo6C,OAAS,SAAiBr4B,EAAGC,GAOxC,OANAhmB,KAAKymC,UACLzmC,KAAKylB,SAASquB,SAAS,IACvB9zC,KAAK0mC,SAEL1mC,KAAK+8C,OAAOh3B,EAAGC,GAERhmB,IACX,EAEA4+C,EAAK56C,UAAU+4C,OAAS,SAAiBh3B,EAAGC,GACxC,IAAIkf,EAAQ/f,EAAQa,GAAK,IAAIif,GAAMlf,EAAGC,GAAKD,EACvCwzB,EAAU,IAAIrB,GAAQhT,GAI1B,OAFAllC,KAAKylB,SAASrW,KAAKmqC,GAEZv5C,IACX,EAEA4+C,EAAK56C,UAAUg5C,QAAU,SAAkB5E,EAAYD,EAAWjT,GAC9D,GAAIllC,KAAKylB,SAASrrB,OAAS,EAAG,CAC1B,IAAI0kD,EAAcrwB,GAAKzuB,KAAKylB,UACxB8zB,EAAU,IAAIrB,GAAQhT,EAAOiT,GACjCn4C,KAAKymC,UACLqY,EAAY1G,WAAWA,GACvBp4C,KAAK0mC,SAEL1mC,KAAKylB,SAASrW,KAAKmqC,EACvB,CAEA,OAAOv5C,IACX,EAEA4+C,EAAK56C,UAAU+6C,IAAM,SAAcvS,EAAYgB,EAAU6B,EAASC,EAASC,GACvE,GAAIvvC,KAAKylB,SAASrrB,OAAS,EAAG,CAC1B,IACIsrB,EADc+I,GAAKzuB,KAAKylB,UACHC,SACrB6D,EAAQgG,GAAIid,GACZrH,EAAS,IAAIF,GAAMvf,EAAOK,EAAIspB,EAAUvuB,KAAKgR,IAAIvI,GACjD7D,EAAOM,EAAIspB,EAAUxuB,KAAKiR,IAAIxI,IAC9Bw1B,EAAM,IAAI5P,GAAIhK,EAAQ,CACtBqH,WAAYA,EACZgB,SAAUA,EACV6B,QAASA,EACTC,QAASA,EACTC,cAAeA,IAGnBvvC,KAAKg/C,gBAAgBD,EACzB,CAEA,OAAO/+C,IACX,EAEA4+C,EAAK56C,UAAUk5C,MAAQ,SAAgB1zB,EAAKmlB,EAAIC,EAAIsD,EAAUC,EAAOzG,GACjE,GAAI1rC,KAAKylB,SAASrrB,OAAS,EAAG,CAC1B,IACIsrB,EADc+I,GAAKzuB,KAAKylB,UACHC,SACrBq5B,EAAM5P,GAAAA,WAAezpB,EAAQuf,GAAAA,OAAazb,GAAMmlB,EAAIC,EAAIsD,EAAUC,EAAOzG,GAE7E1rC,KAAKg/C,gBAAgBD,EACzB,CACA,OAAO/+C,IACX,EAEA4+C,EAAK56C,UAAUg7C,gBAAkB,SAA0BD,GAGvD/+C,KAAKymC,UAIL,IAFA,IAAImJ,EAAcmP,EAAInP,cAEblkC,EAAI,EAAGA,EAAIkkC,EAAYx1C,OAAQsR,GAAK,EANhC1L,KAOFg9C,QAAQpN,EAAYlkC,GAAIkkC,EAAYlkC,EAAI,GAAIkkC,EAAYlkC,EAAI,IAGvE1L,KAAK0mC,SACL1mC,KAAKwmC,gBACT,EAEAoY,EAAK56C,UAAUuqC,MAAQ,WAInB,OAHAvuC,KAAKsV,QAAQ+kC,QAAS,EACtBr6C,KAAKwmC,iBAEExmC,IACX,EAEA4+C,EAAK56C,UAAUy6C,QAAU,WACrB,OAAOz+C,KAAK08C,OAChB,EAEAkC,EAAK56C,UAAUzD,SAAW,SAAmBsnC,GACzC,IAvHoBoX,EAAcC,EANd/1B,EA6HhBzU,EAAS,GAET+Q,EAAWzlB,KAAKylB,SAChBrrB,EAASqrB,EAASrrB,OACtB,GAAIA,EAAS,EAAG,CAKZ,IAJA,IAEI+kD,EAFAzrB,EAAQ,GACR0rB,GAnIYj2B,EAmIQ0e,EAnIY,WAE5C,IADA,IAAI0D,EAAS,GAAIphB,EAAMpiB,UAAU3N,OACzB+vB,KAAQohB,EAAQphB,GAAQpiB,UAAWoiB,GAE3C,OAAOohB,EAAOlxC,KAAI,SAAU2Q,GAAK,OAAOA,EAAEzK,SAAS4oB,EAAY,IAAGuI,KAAKitB,GACzE,GAiImBjzC,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIvY,GAjIQ8rD,EAiIWx5B,EAAS/Z,EAAI,GAjIVwzC,EAiIcz5B,EAAS/Z,GAjIFuzC,EAAa7G,cAAgB8G,EAAW/G,YAAc,IAAM,KAkIvGhlD,IAASgsD,IACTA,EAAchsD,EACdugC,EAAMtkB,KAAKjc,IAGF,MAATA,EACAugC,EAAMtkB,KAAKgwC,EAAM35B,EAAS/Z,GAAGga,WAE7BgO,EAAMtkB,KAAKgwC,EACP35B,EAAS/Z,EAAI,GAAG0sC,aAAc3yB,EAAS/Z,GAAGysC,YAAa1yB,EAAS/Z,GAAGga,UAG/E,CAEAhR,EAAS,IAAM0qC,EAAM35B,EAAS,GAAGC,UAAYi5B,GAAQjrB,EAAMhC,KAAKitB,IAC5D3+C,KAAKsV,QAAQ+kC,SACb3lC,GAAU,IAElB,CAEA,OAAOA,CACX,EAEAkqC,EAAK56C,UAAU6xC,eAAiB,SAAyB3Q,GAMrD,IALA,IAGIma,EAAU9rD,EAHVkyB,EAAWzlB,KAAKylB,SAChBrrB,EAASqrB,EAASrrB,OAClBo/C,EAAqB,EAGhB/kC,EAAM,EAAGA,EAAMra,EAAQqa,IAC5B4qC,EAAW55B,EAAShR,EAAM,GAC1BlhB,EAAUkyB,EAAShR,GACnB+kC,GAAsB6F,EAAS/F,iBAAiB/lD,EAAS2xC,GAO7D,OAJIllC,KAAKsV,QAAQ+kC,QAAW50B,EAAS,GAAGC,SAAS6L,OAAO9L,EAASrrB,EAAS,GAAGsrB,YACzE8zB,GAAsB3B,GAAuBpyB,EAAS,GAAGC,SAAUD,EAASrrB,EAAS,GAAGsrB,SAAUwf,IAG/FsU,EAAqB,IAAM,CACtC,EAEAoF,EAAK56C,UAAU8lC,UAAY,SAAoB5E,EAAO1wC,GAClD,IAAIixB,EAAWzlB,KAAKylB,SAChBrrB,EAASqrB,EAASrrB,OAClBklD,EAAY9qD,GAASwL,KAAKsV,QAAQiQ,OAAO/wB,MAE7C,GAAI4F,EAAS,EAAG,CACZ,GAAIqrB,EAAS,GAAGw0B,YAAYx0B,EAAS,GAAIyf,EAAOoa,EAAW,SACvD,OAAO,EAGX,IAAK,IAAI7qC,EAAM,EAAGA,GAAOra,EAAS,EAAGqa,IACjC,GAAIgR,EAAShR,EAAM,GAAGwlC,YAAYx0B,EAAShR,GAAMywB,EAAOoa,GACpD,OAAO,EAIf,GAAI75B,EAASrrB,EAAS,GAAG6/C,YAAYx0B,EAASrrB,EAAS,GAAI8qC,EAAOoa,EAAW,OACzE,OAAO,CAEf,CACA,OAAO,CACX,EAEAV,EAAK56C,UAAU04C,MAAQ,SAAgBvrB,GACnC,IAEIotB,EAFA94B,EAAWzlB,KAAKylB,SAChBrrB,EAASqrB,EAASrrB,OAGtB,GAAe,IAAXA,EAAc,CACd,IAAIsrB,EAASD,EAAS,GAAGC,SAASkiB,cAAczW,GAChDotB,EAAc,IAAI9V,GAAK/iB,EAAQ8iB,GAAAA,KACnC,MAAO,GAAIpuC,EAAS,EAChB,IAAK,IAAIsR,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAI6zC,EAAa95B,EAAS/Z,EAAI,GAAG2sC,OAAO5yB,EAAS/Z,GAAIylB,GAEjDotB,EADAA,EACc9V,GAAAA,MAAW8V,EAAagB,GAExBA,CAEtB,CAGJ,OAAOhB,CACX,EAEAK,EAAKlpC,MAAQ,SAAgBrB,EAAKiB,GAC9B,OAAOkqC,GAAU9pC,MAAMrB,EAAKiB,EAChC,EAEAspC,EAAKa,SAAW,SAAmBC,EAAMpqC,GACrC,IAAI+P,EAAO,IAAIu5B,EAAKtpC,GAChB/iB,EAAMmtD,EAAKhX,aACXiG,EAAKp8C,EAAI,GACTq8C,EAAKr8C,EAAI,GAEb,GAAW,IAAPo8C,GAAmB,IAAPC,EACZvpB,EAAK+4B,OAAOsB,EAAKzW,WACZ8T,OAAO2C,EAAKvW,YACZ4T,OAAO2C,EAAKxW,eACZ6T,OAAO2C,EAAKtW,cACZmF,YACF,CACH,IAAIhH,EAASmY,EAAKnY,OACdxhB,EAAIwhB,EAAOxhB,EACXC,EAAIuhB,EAAOvhB,EACXxxB,EAAQkrD,EAAKlrD,QACbC,EAASirD,EAAKjrD,SAClBk6C,EAAKjgB,GAAWigB,EAAI,EAAGn6C,EAAQ,GAC/Bo6C,EAAKlgB,GAAWkgB,EAAI,EAAGn6C,EAAS,GAEhC4wB,EAAK+4B,OAAOr4B,EAAI4oB,EAAI3oB,GACf+2B,OAAOh3B,EAAIvxB,EAAQm6C,EAAI3oB,GACvBk3B,MAAM,CAAEn3B,EAAIvxB,EAAOwxB,EAAI4oB,GAAMD,EAAIC,GAAI,GACrCmO,OAAOh3B,EAAIvxB,EAAOwxB,EAAIvxB,EAASm6C,GAC/BsO,MAAM,CAAEn3B,EAAIvxB,EAAQm6C,EAAI3oB,EAAIvxB,GAAUk6C,EAAIC,GAAI,GAC9CmO,OAAOh3B,EAAI4oB,EAAI3oB,EAAIvxB,GACnByoD,MAAM,CAAEn3B,EAAGC,EAAIvxB,EAASm6C,GAAMD,EAAIC,GAAI,GACtCmO,OAAOh3B,EAAGC,EAAI4oB,GACdsO,MAAM,CAAEn3B,EAAI4oB,EAAI3oB,GAAK2oB,EAAIC,GAAI,EACtC,CAEA,OAAOvpB,CACX,EAEAu5B,EAAKlV,WAAa,SAAqB6B,EAAQj2B,GAC3C,GAAIi2B,EAAQ,CAGR,IAFA,IAAIlmB,EAAO,IAAIu5B,EAAKtpC,GAEX5J,EAAI,EAAGA,EAAI6/B,EAAOnxC,OAAQsR,IAAK,CACpC,IAAIw5B,EAAQD,GAAAA,OAAasG,EAAO7/B,IAC5Bw5B,IACU,IAANx5B,EACA2Z,EAAK+4B,OAAOlZ,GAEZ7f,EAAK03B,OAAO7X,GAGxB,CAEA,OAAO7f,CACX,CACJ,EAEAu5B,EAAKe,gBAAkB,SAA0BpU,EAAQj2B,GACrD,GAAIi2B,EAAQ,CACR,IAAI9lB,EAAW00B,GAAc5O,GACzBlmB,EAAO,IAAIu5B,EAAKtpC,GAGpB,OAFA+P,EAAKI,SAASrW,KAAKlH,MAAMmd,EAAKI,SAAUA,GAEjCJ,CACX,CACJ,EAEAu5B,EAAKgB,QAAU,SAAkBb,EAAKzpC,GAClC,IAAI+P,EAAO,IAAIu5B,EAAKtpC,GAChBk3B,EAAauS,EAAIvS,WACjBjjB,EAAQw1B,EAAIrP,QAAQlD,GAGxB,OAFAnnB,EAAK+4B,OAAO70B,EAAMxD,EAAGwD,EAAMvD,GAC3BX,EAAK05B,IAAIvS,EAAYuS,EAAIvR,SAAUuR,EAAI1P,QAAS0P,EAAIzP,QAASyP,EAAIxP,eAC1DlqB,CACX,EAEAxa,OAAOq4B,iBAAkB0b,EAAK56C,UAAW8+B,GAElC8b,CACX,CAvSmB,CAuSjBiB,GAAUC,GAAW/K,MAEZyK,GAAa,SAAUpY,GAC9B,SAASoY,EAAUlqC,GACf8xB,EAAWpkC,KAAKhD,KAAMsV,GACtBtV,KAAKq9C,MAAQ,IAAIhJ,GACjBr0C,KAAKq9C,MAAMnX,YAAYlmC,MAElBmlB,EAAQnlB,KAAKsV,QAAQiQ,SACtBvlB,KAAKulB,OAAO,OAEpB,CAEK6hB,IAAaoY,EAAUz0C,UAAYq8B,GACxCoY,EAAUx7C,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC9Dw7C,EAAUx7C,UAAUqH,YAAcm0C,EAElC,IAAIlc,EAAuB,CAAE2R,SAAU,CAAE3oC,cAAc,IAkHvD,OAhHAkzC,EAAU9pC,MAAQ,SAAgBrB,EAAKiB,GACnC,IAAIyqC,EAAW,IAAIP,EAAUlqC,GAC7B,OAAO0qC,GAAUD,EAAU1rC,EAC/B,EAEAmrC,EAAUx7C,UAAUzD,SAAW,SAAmBsnC,GAC9C,IAAIwV,EAAQr9C,KAAKq9C,MACb3oC,EAAS,GAEb,GAAI2oC,EAAMjjD,OAAS,EAAG,CAGlB,IAFA,IAAIhC,EAAS,GAEJsT,EAAI,EAAGA,EAAI2xC,EAAMjjD,OAAQsR,IAC9BtT,EAAOgX,KAAKiuC,EAAM3xC,GAAGnL,SAASsnC,IAGlCnzB,EAAStc,EAAOs5B,KAAKitB,GACzB,CAEA,OAAOjqC,CACX,EAEA4uB,EAAqB2R,SAAS7oC,IAAM,WAChC,MAAO,WACX,EAEAozC,EAAUx7C,UAAUo6C,OAAS,SAAiBr4B,EAAGC,GAC7C,IAAIX,EAAO,IAAIu5B,GAKf,OAJAv5B,EAAK+4B,OAAOr4B,EAAGC,GAEfhmB,KAAKq9C,MAAMjuC,KAAKiW,GAETrlB,IACX,EAEAw/C,EAAUx7C,UAAU+4C,OAAS,SAAiBh3B,EAAGC,GAK7C,OAJIhmB,KAAKq9C,MAAMjjD,OAAS,GACpBq0B,GAAKzuB,KAAKq9C,OAAON,OAAOh3B,EAAGC,GAGxBhmB,IACX,EAEAw/C,EAAUx7C,UAAUg5C,QAAU,SAAkB5E,EAAYD,EAAWjT,GAKnE,OAJIllC,KAAKq9C,MAAMjjD,OAAS,GACpBq0B,GAAKzuB,KAAKq9C,OAAOL,QAAQ5E,EAAYD,EAAWjT,GAG7CllC,IACX,EAEAw/C,EAAUx7C,UAAU+6C,IAAM,SAAcvS,EAAYgB,EAAU6B,EAASC,EAASC,GAK5E,OAJIvvC,KAAKq9C,MAAMjjD,OAAS,GACpBq0B,GAAKzuB,KAAKq9C,OAAO0B,IAAIvS,EAAYgB,EAAU6B,EAASC,EAASC,GAG1DvvC,IACX,EAEAw/C,EAAUx7C,UAAUk5C,MAAQ,SAAgB1zB,EAAKmlB,EAAIC,EAAIsD,EAAUC,EAAOzG,GAKtE,OAJI1rC,KAAKq9C,MAAMjjD,OAAS,GACpBq0B,GAAKzuB,KAAKq9C,OAAOH,MAAM1zB,EAAKmlB,EAAIC,EAAIsD,EAAUC,EAAOzG,GAGlD1rC,IACX,EAEAw/C,EAAUx7C,UAAUuqC,MAAQ,WAKxB,OAJIvuC,KAAKq9C,MAAMjjD,OAAS,GACpBq0B,GAAKzuB,KAAKq9C,OAAO9O,QAGdvuC,IACX,EAEAw/C,EAAUx7C,UAAU04C,MAAQ,SAAgBvrB,GACxC,OAAOktB,GAAoBr+C,KAAKq9C,OAAO,EAAMlsB,EACjD,EAEAquB,EAAUx7C,UAAUy6C,QAAU,WAC1B,OAAOJ,GAAoBr+C,KAAKq9C,OAAO,EAC3C,EAEAmC,EAAUx7C,UAAU6xC,eAAiB,SAAyB3Q,GAG1D,IAFA,IAAImY,EAAQr9C,KAAKq9C,MAER5oC,EAAM,EAAGA,EAAM4oC,EAAMjjD,OAAQqa,IAClC,GAAI4oC,EAAM5oC,GAAKohC,eAAe3Q,GAC1B,OAAO,EAGf,OAAO,CACX,EAEAsa,EAAUx7C,UAAU8lC,UAAY,SAAoB5E,GAIhD,IAHA,IAAImY,EAAQr9C,KAAKq9C,MACb7oD,EAAQwL,KAAKsV,QAAQiQ,OAAO/wB,MAEvBigB,EAAM,EAAGA,EAAM4oC,EAAMjjD,OAAQqa,IAClC,GAAI4oC,EAAM5oC,GAAKq1B,UAAU5E,EAAO1wC,GAC5B,OAAO,EAGf,OAAO,CACX,EAEAgrD,EAAUx7C,UAAU0xC,aAAe,SAAuBvO,GACtD,OAAOuX,GAA2B1+C,KAAKq9C,MAAOr9C,KAAKq1C,iBAAiBlO,GACxE,EAEAt8B,OAAOq4B,iBAAkBsc,EAAUx7C,UAAWs/B,GAEvCkc,CACX,CAlIwB,CAkItBK,GAAUC,GAAW/K,MChcnBkL,GAAgB,SAAUhvB,GAC1B,SAASgvB,IACLhvB,EAAM/oB,MAAMlI,KAAM+H,UACtB,CAsCA,OApCKkpB,IAAQgvB,EAAal1C,UAAYkmB,GACtCgvB,EAAaj8C,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACvDi8C,EAAaj8C,UAAUqH,YAAc40C,EAErCA,EAAaj8C,UAAUk8C,WAAa,SAAqBjT,EAAQ33B,GAC7D,IAAIk3B,EAAaS,EAAOT,WAAa,IACjCgB,EAAWP,EAAOpb,MAAQ2a,EAG1BS,EAAOpb,MAAQ,GAAK2a,IAAegB,IACnCA,GAjBU,MAoBd,IAAIrI,EAAS,IAAI8G,GAAWgB,EAAO9H,OAAOpf,EAAGknB,EAAO9H,OAAOnf,GACvD8f,EAAShlB,KAAK0K,IAAIyhB,EAAOnH,OAAQ,GACjCyG,EAAczrB,KAAK0K,IAAIyhB,EAAOV,YAAa,GAC3CwS,EAAM,IAAI9S,GAAS9G,EAAQ,CAC3BqH,WAAYA,EACZgB,SAAUA,EACV6B,QAASvJ,EACTwJ,QAASxJ,IAETzgB,EAAO86B,GAAAA,QAAkBpB,EAAKzpC,GAASi5B,QAE3C,GAAIhC,EAAa,CACbwS,EAAI1P,QAAU0P,EAAIzP,QAAU/C,EAC5B,IAAI6T,EAAWrB,EAAIrP,QAAQlC,GAC3BnoB,EAAK03B,OAAOqD,EAASr6B,EAAGq6B,EAASp6B,GACjCX,EAAK05B,IAAIvR,EAAUhB,EAAYD,EAAaA,GAAa,EAC7D,MACIlnB,EAAK03B,OAAO5X,EAAOpf,EAAGof,EAAOnf,GAGjC,OAAOX,CACX,EAEO46B,CACX,CA1CoB,CA0ClBhvB,IAEFgvB,GAAa1sD,QAAU,IAAI0sD,GAE3B,UC3CII,GAAWv/B,KAAK+L,GAAK,EAErByzB,GAAU,SAAUlZ,GACpB,SAASkZ,EAAOnb,EAAQW,QACJ,IAAXX,IAAoBA,EAAS,IAAIF,SACtB,IAAXa,IAAoBA,EAAS,GAElCsB,EAAWpkC,KAAKhD,MAEhBA,KAAKovC,UAAUjK,GACfnlC,KAAK0sC,UAAU5G,EACnB,CA8EA,OA5EKsB,IAAakZ,EAAOv1C,UAAYq8B,GACrCkZ,EAAOt8C,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC3Ds8C,EAAOt8C,UAAUqH,YAAci1C,EAE/BA,EAAOt8C,UAAUorC,UAAY,SAAoBjyC,GAG7C,OAFA6C,KAAK2mC,eAAe,SAAU1B,GAAAA,OAAa9nC,IAC3C6C,KAAKwmC,iBACExmC,IACX,EAEAsgD,EAAOt8C,UAAUyrC,UAAY,WACzB,OAAOzvC,KAAKmlC,MAChB,EAEAmb,EAAOt8C,UAAUutB,OAAS,SAAiBvkB,GACvC,OAAOA,GACAA,EAAMm4B,OAAO5T,OAAOvxB,KAAKmlC,SACzBn4B,EAAM84B,SAAW9lC,KAAK8lC,MACjC,EAEAwa,EAAOt8C,UAAU6iB,MAAQ,WACrB,OAAO,IAAIy5B,EAAOtgD,KAAKmlC,OAAOte,QAAS7mB,KAAK8lC,OAChD,EAEAwa,EAAOt8C,UAAU0rC,QAAU,SAAkB7d,GACzC,OAAO7xB,KAAKugD,SAAShxB,GAAIsC,GAC7B,EAEAyuB,EAAOt8C,UAAUqlC,KAAO,SAAelY,GAOnC,IANA,IAEIqf,EAAgB9B,GAAqB1uC,KAAKmlC,OAAQnlC,KAAK8lC,OAAQ9lC,KAAK8lC,OAAQ3U,GAC5EkX,EAAWpD,GAAAA,WACXqD,EAAWrD,GAAAA,WAENv5B,EAAI,EAAGA,EAAI,EAAGA,IAAK,CACxB,IAAImlC,EAPK7wC,KAOkBugD,SAAS/P,EAAczqB,EAAIra,EAAI20C,IAAUzY,cAAczW,GAC9E2f,EARK9wC,KAQkBugD,SAAS/P,EAAcxqB,EAAIta,EAAI20C,IAAUzY,cAAczW,GAC9Eyf,EAAe,IAAI3L,GAAM4L,EAAc9qB,EAAG+qB,EAAc9qB,GAE5DqiB,EAAWpD,GAAAA,IAAUoD,EAAUuI,GAC/BtI,EAAWrD,GAAAA,IAAUqD,EAAUsI,EACnC,CAEA,OAAOnI,GAAAA,WAAgBJ,EAAUC,EACrC,EAEAgY,EAAOt8C,UAAUu8C,SAAW,SAAmB1uB,GAC3C,IACIsT,EADMnlC,KACOmlC,OACbW,EAFM9lC,KAEO8lC,OAEjB,OAAO,IAAIb,GACPE,EAAOpf,EAAI+f,EAAShlB,KAAKgR,IAAID,GAC7BsT,EAAOnf,EAAI8f,EAAShlB,KAAKiR,IAAIF,GAErC,EAEAyuB,EAAOt8C,UAAU6lC,cAAgB,SAAwB3E,GACrD,IACIC,EADMnlC,KACOmlC,OACbW,EAFM9lC,KAEO8lC,OAGjB,OAFehlB,KAAKuI,IAAI6b,EAAMnf,EAAIof,EAAOpf,EAAG,GACxCjF,KAAKuI,IAAI6b,EAAMlf,EAAImf,EAAOnf,EAAG,IAAMlF,KAAKuI,IAAIyc,EAAQ,EAE5D,EAEAwa,EAAOt8C,UAAU8lC,UAAY,SAAoB5E,EAAO1wC,GACpD,IACI2wC,EADMnlC,KACOmlC,OACbW,EAFM9lC,KAEO8lC,OACb0a,EAAgBrb,EAAOO,WAAWR,GAEtC,OAAOY,EAAStxC,GAASgsD,GAAiBA,GAAiB1a,EAAStxC,CACxE,EAEO8rD,CACX,CAxFc,CAwFZ/X,GAAcxC,GAAc,CAAE,YAEhC,MClGA,SAAS0a,GAAiB9vC,GACtB,IAAIikC,EAAY,IAAMjkC,EACtB,OAAO,SAASxT,GACZ,OAAIgoB,EAAQhoB,IACR6C,KAAK2mC,eAAeiO,EAAWz3C,GAC/B6C,KAAKwmC,iBACExmC,MAGJA,KAAK40C,EAChB,CACJ,CAQA,IAmBA,GAnBmB,SAAU9N,EAAOhe,QACjB,IAAVA,IAAmBA,EAAQ,CAAE,aAElC,IAAI1wB,EAAU,SAAU0uC,GACpB,SAAS1uC,IACL0uC,EAAM5+B,MAAMlI,KAAM+H,UACtB,CAMA,OANM++B,IAAQ1uC,EAAO2S,UAAY+7B,GACjC1uC,EAAO4L,UAAY6G,OAAOS,OAAQw7B,GAASA,EAAM9iC,WACjD5L,EAAO4L,UAAUqH,YAAcjT,EAIxBA,CACX,CAVc,CAUZ0uC,GAGF,OAtBJ,SAAiCzgB,EAAIyC,GACjC,IAAK,IAAIpd,EAAI,EAAGA,EAAIod,EAAM1uB,OAAQsR,IAC9B2a,EAAGyC,EAAMpd,IAAM+0C,GAAiB33B,EAAMpd,GAE9C,CAgBIg1C,CAAwBtoD,EAAO4L,UAAW8kB,GAEnC1wB,CACX,EC7BIkoD,GAAU,SAAUlZ,GACpB,SAASkZ,EAAOpqB,EAAU5gB,QACJ,IAAb4gB,IAAsBA,EAAW,IAAIyqB,SACzB,IAAZrrC,IAAqBA,EAAU,CAAC,GAErC8xB,EAAWpkC,KAAKhD,KAAMsV,GAEtBtV,KAAKk2B,SAASA,GAET/Q,EAAQnlB,KAAKsV,QAAQiQ,SACtBvlB,KAAKulB,OAZI,OAcjB,CAEK6hB,IAAakZ,EAAOv1C,UAAYq8B,GACrCkZ,EAAOt8C,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC3Ds8C,EAAOt8C,UAAUqH,YAAci1C,EAE/B,IAAIxd,EAAqB,CAAEmS,SAAU,CAAE3oC,cAAc,IAwBrD,OAtBAw2B,EAAmBmS,SAAS7oC,IAAM,WAC9B,MAAO,QACX,EAEAk0C,EAAOt8C,UAAUy6C,QAAU,WACvB,OAAOz+C,KAAK4gD,UAAUvX,MAC1B,EAEAiX,EAAOt8C,UAAU04C,MAAQ,SAAgBvrB,GACrC,OAAOnxB,KAAK4gD,UAAUvX,KAAKlY,EAC/B,EAEAmvB,EAAOt8C,UAAU6xC,eAAiB,SAAyB3Q,GACvD,OAAOllC,KAAKk2B,WAAW2T,cAAc3E,EACzC,EAEAob,EAAOt8C,UAAU8lC,UAAY,SAAoB5E,GAC7C,OAAOllC,KAAKk2B,WAAW4T,UAAU5E,EAAOllC,KAAKsV,QAAQiQ,OAAO/wB,MAAQ,EACxE,EAEAqW,OAAOq4B,iBAAkBod,EAAOt8C,UAAW8+B,GAEpCwd,CACX,CA3Cc,CA2CZT,GAAUC,GAAWe,GAAa9L,OAEpC,MCxBA,GA9BkB,SAAUjO,EAAOga,GAAiB,OAC/C,SAAUha,GACP,SAASsV,IACLtV,EAAM5+B,MAAMlI,KAAM+H,UACtB,CAsBA,OApBK++B,IAAQsV,EAAUrxC,UAAY+7B,GACnCsV,EAAUp4C,UAAY6G,OAAOS,OAAQw7B,GAASA,EAAM9iC,WACpDo4C,EAAUp4C,UAAUqH,YAAc+wC,EAElCA,EAAUp4C,UAAU+8C,SAAW,SAAmB76C,GAG9C,IAFA,IAAItS,EAAWoM,KAAK8gD,GAEXp1C,EAAI,EAAGA,EAAI9X,EAASwG,OAAQsR,IAAK,CACtC,IAAI0C,EAAQxa,EAAS8X,GAEjB0C,EAAM2yC,SACN3yC,EAAM2yC,SAAS76C,GAEfA,EAASkI,EAEjB,CAEA,OAAOpO,IACX,EAEOo8C,CACX,CA1BC,CA0BCtV,EACH,ECrBCka,GAAS,SAAU5Z,GACnB,SAAS4Z,EAAM1rC,GACX8xB,EAAWpkC,KAAKhD,KAAMsV,GACtBtV,KAAKpM,SAAW,EACpB,CAEKwzC,IAAa4Z,EAAMj2C,UAAYq8B,GACpC4Z,EAAMh9C,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC1Dg9C,EAAMh9C,UAAUqH,YAAc21C,EAE9B,IAAIle,EAAqB,CAAEmS,SAAU,CAAE3oC,cAAc,IAiHrD,OA/GAw2B,EAAmBmS,SAAS7oC,IAAM,WAC9B,MAAO,OACX,EAEA40C,EAAMh9C,UAAUi9C,eAAiB,SAAyB9tC,EAAQ+tC,EAAO5mD,GACrE0F,KAAK+pB,QAAQ,iBAAiB,CAC1B5W,OAAQA,EACR+tC,MAAOA,EACP5mD,MAAOA,GAEf,EAEA0mD,EAAMh9C,UAAU6nB,OAAS,WAMrB,OALAA,GAAO7rB,KAAKpM,SAAUmU,WACtB/H,KAAKmhD,UAAUp5C,UAAW/H,MAE1BA,KAAKihD,eAAe,MAAOl5C,WAEpB/H,IACX,EAEAghD,EAAMh9C,UAAUo9C,OAAS,SAAiB9mD,EAAO9G,GAM7C,OALAwM,KAAKpM,SAASwyC,OAAO9rC,EAAO,EAAG9G,GAC/BA,EAAQo/B,OAAS5yB,KAEjBA,KAAKihD,eAAe,MAAO,CAAEztD,GAAW8G,GAEjC0F,IACX,EAEAghD,EAAMh9C,UAAUq9C,SAAW,SAAmB7tD,EAAS8G,GACnD,OAAO0F,KAAKohD,OAAO9mD,EAAO9G,EAC9B,EAEAwtD,EAAMh9C,UAAU2D,OAAS,SAAiBnU,GACtC,IAAI8G,EAAQ0F,KAAKpM,SAASyV,QAAQ7V,GAOlC,OANI8G,GAAS,IACT0F,KAAKpM,SAASwyC,OAAO9rC,EAAO,GAC5B9G,EAAQo/B,OAAS,KACjB5yB,KAAKihD,eAAe,SAAU,CAAEztD,GAAW8G,IAGxC0F,IACX,EAEAghD,EAAMh9C,UAAUs9C,SAAW,SAAmBhnD,GAC1C,GAAI,GAAKA,GAASA,EAAQ0F,KAAKpM,SAASwG,OAAQ,CAC5C,IAAI5G,EAAUwM,KAAKpM,SAAS0G,GAC5B0F,KAAKpM,SAASwyC,OAAO9rC,EAAO,GAC5B9G,EAAQo/B,OAAS,KACjB5yB,KAAKihD,eAAe,SAAU,CAAEztD,GAAW8G,EAC/C,CAEA,OAAO0F,IACX,EAEAghD,EAAMh9C,UAAUi/B,MAAQ,WACpB,IAAIie,EAAQlhD,KAAKpM,SAMjB,OALAoM,KAAKpM,SAAW,GAChBoM,KAAKmhD,UAAUD,EAAO,MAEtBlhD,KAAKihD,eAAe,SAAUC,EAAO,GAE9BlhD,IACX,EAEAghD,EAAMh9C,UAAUqlC,KAAO,SAAelC,GAClC,OAAOkX,GAAoBr+C,KAAKpM,UAAU,EAAMoM,KAAKq1C,iBAAiBlO,GAC1E,EAEA6Z,EAAMh9C,UAAUy6C,QAAU,WACtB,OAAOJ,GAAoBr+C,KAAKpM,UAAU,EAC9C,EAEAotD,EAAMh9C,UAAU0xC,aAAe,SAAuBvO,GAClD,OAAOuX,GAA2B1+C,KAAKpM,SAAUoM,KAAKq1C,iBAAiBlO,GAC3E,EAEA6Z,EAAMh9C,UAAUqxC,iBAAmB,SAA2BlO,GAC1D,OAAO4N,GAAAA,UAAAA,iBAAAA,KAAwC/0C,KAAMmnC,IAAmB,IAC5E,EAEA6Z,EAAMh9C,UAAU6lC,cAAgB,SAAwB3E,EAAOkQ,GAC3D,GAAIp1C,KAAKjM,UAGL,IAFA,IAAIH,EAAWoM,KAAKpM,SAChB0+B,EAAYtyB,KAAKq1C,iBAAiBD,GAC7B3gC,EAAM,EAAGA,EAAM7gB,EAASwG,OAAQqa,IACrC,GAAI7gB,EAAS6gB,GAAKo1B,cAAc3E,EAAO5S,GACnC,OAAO,EAInB,OAAO,CACX,EAEA0uB,EAAMh9C,UAAUm9C,UAAY,SAAoBrN,EAAUyN,GAGtD,IAFA,IAES71C,EAAI,EAAGA,EAAIooC,EAAS15C,OAAQsR,IAAK,CACtC,IAAI0C,EAAQ0lC,EAASpoC,GACjBknB,EAASxkB,EAAMwkB,OACfA,GAAUA,IALL5yB,MAK0B4yB,EAAOjrB,QACtCirB,EAAOjrB,OAAOyG,GAGlBA,EAAMwkB,OAAS2uB,CACnB,CACJ,EAEA12C,OAAOq4B,iBAAkB8d,EAAMh9C,UAAW8+B,GAEnCke,CACX,CA5Ha,CA4HXQ,GAAYzM,GAAS,aAEvB,MCrIO,SAAS0M,GAAM5E,GAClB,MAAO,GAAM/7B,KAAKgR,IAAI+qB,EAAW/7B,KAAK+L,IAAM,CAChD,CAEO,SAAS60B,GAAO7E,GACnB,OAAOA,CACX,CAEO,SAAS8E,GAAe9E,EAAU+E,EAAMr4B,EAAO3I,GAClD,IAAInV,EAAI,QACJT,EAAI,EACJ6jB,EAAIjO,EAER,OAAiB,IAAbi8B,EACOtzB,EAGM,IAAbszB,EACOtzB,EAAQ3I,GAGd5V,IACDA,EAAI,IAGJ6jB,EAAI/N,KAAKC,IAAIH,IACbiO,EAAIjO,EACJnV,EAAIT,EAAI,GAERS,EAAIT,GAAK,EAAI8V,KAAK+L,IAAM/L,KAAK+gC,KAAKjhC,EAAOiO,GAGtCA,EAAI/N,KAAKuI,IAAI,GAAI,GAAKwzB,GACtB/7B,KAAKiR,KAAK5N,OAAO04B,GAAYpxC,IAAM,IAAMqV,KAAK+L,IAAM7hB,GAAK4V,EAAO2I,EAC3E,CClCA,ICEIw2B,GDFA+B,GAAsB,SAAU57C,GAChC,IAAI67C,EAAwB,qBAAXtlD,OAAyBA,OAAS,CAAC,EAChDulD,EAAiBD,EAAIE,uBACLF,EAAIG,6BACJH,EAAII,0BACJJ,EAAIK,wBACJL,EAAIM,yBACJ,SAASn8C,GAAYU,WAAWV,EAAU,IAAO,GAAK,EAE1E47C,GAAsB,SAAU57C,GAAY,OAAO87C,EAAeh/C,KAAK++C,EAAK77C,EAAW,EACvF47C,GAAoB57C,EACxB,EAEA,MCTIo8C,GAAoB,SAAUrxB,GAC9B,SAASqxB,IACLrxB,EAAMjuB,KAAKhD,MAEXA,KAAKuiD,OAAS,EAClB,CAEKtxB,IAAQqxB,EAAiBv3C,UAAYkmB,GAC1CqxB,EAAiBt+C,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC3Ds+C,EAAiBt+C,UAAUqH,YAAci3C,EAEzC,IAAIjb,EAAkB,CAAE9zC,QAAS,CAAE+Y,cAAc,IAsCjD,OApCA+6B,EAAgB9zC,QAAQ6Y,IAAM,WAK1B,OAJK2zC,KACDA,GAAW,IAAIuC,GAGZvC,EACX,EAEAuC,EAAiBt+C,UAAUkkB,SAAW,SAAmBvX,EAAMxd,GAC3D6M,KAAKuiD,OAAOnzC,KAAK,CACbuB,KAAMA,EACNxd,KAAMA,GAEd,EAEAmvD,EAAiBt+C,UAAUsH,OAAS,SAAiB9X,EAAS8hB,GAC1D,IACImT,EADAy4B,EAAQlhD,KAAKuiD,OAGjB,GAAIjtC,GAAWA,EAAQniB,KAEnB,IADA,IAAIA,EAAOmiB,EAAQniB,KAAK43B,cACfrf,EAAI,EAAGA,EAAIw1C,EAAM9mD,OAAQsR,IAC9B,GAAIw1C,EAAMx1C,GAAGiF,KAAKoa,gBAAkB53B,EAAM,CACtCs1B,EAAQy4B,EAAMx1C,GACd,KACJ,CAIR,GAAI+c,EACA,OAAO,IAAIA,EAAMt1B,KAAKK,EAAS8hB,EAEvC,EAEAzK,OAAOq4B,iBAAkBof,EAAkBjb,GAEpCib,CACX,CAlDwB,CAkDtBrxB,IAEF,MCnDIhgB,GAAa,SAAUggB,GACvB,SAAShgB,EAAUzd,EAAS8hB,GACxB2b,EAAMjuB,KAAKhD,MAEXA,KAAKsV,QAAUzK,OAAOW,OAAO,CAAC,EAAGxL,KAAKsV,QAASA,GAC/CtV,KAAKxM,QAAUA,CACnB,CAEKy9B,IAAQhgB,EAAUlG,UAAYkmB,GACnChgB,EAAUjN,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpDiN,EAAUjN,UAAUqH,YAAc4F,EAElC,IAAI6xB,EAAqB,CAAExtB,QAAS,CAAEhJ,cAAc,IAsEpD,OApEA2E,EAAU3F,OAAS,SAAiBnY,EAAMK,EAAS8hB,GAC/C,OAAOgtC,GAAAA,QAAAA,OAAgCnvD,EAAMK,EAAS8hB,EAC1D,EAEAwtB,EAAmBxtB,QAAQlJ,IAAM,WAC7B,OAAOpM,KAAKwiD,UAAY,CACpBC,SAAU,IACVC,OAAQ,QAEhB,EAEA5f,EAAmBxtB,QAAQ2T,IAAM,SAAU9rB,GACvC6C,KAAKwiD,SAAWrlD,CACpB,EAEA8T,EAAUjN,UAAU2+C,MAAQ,WAAmB,EAC/C1xC,EAAUjN,UAAU4+C,KAAO,WAAkB,EAE7C3xC,EAAUjN,UAAU6+C,KAAO,WACvB,IAAIrhB,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACfmtC,EAAWntC,EAAQmtC,SACnBK,EAAQxtC,EAAQwtC,WAAsB,IAAVA,IAAmBA,EAAQ,GAC3D,IAAIJ,EAASK,EAAgBztC,EAAQotC,QACjCn5B,EAAQ6F,KAAQ0zB,EAChBE,EAASz5B,EAAQk5B,EAEJ,IAAbA,GACAziD,KAAK4iD,KAAK,GACV5iD,KAAKijD,SAELr8C,YAAW,YACI,SAAPs8C,IACA,IAAI1hB,EAAO2hB,SAAX,CAIA,IAAIC,EAAWh0B,KAEXwyB,EAAOlzB,GAAW00B,EAAW75B,EAAO,EAAGk5B,GAEvCY,EAAiBX,EADNd,EAAOa,EACgBb,EAAM,EAAG,EAAGa,GAElDjhB,EAAOohB,KAAKS,GAERD,EAAWJ,EACXhB,GAAekB,GAEf1hB,EAAOyhB,OAbX,CAeJ,CAEAC,EACJ,GAAGJ,EAEX,EAEA7xC,EAAUjN,UAAUi/C,MAAQ,WACxBjjD,KAAKmjD,UAAW,CACpB,EAEAlyC,EAAUjN,UAAUs/C,QAAU,WAC1BtjD,KAAKijD,OACT,EAEAp4C,OAAOq4B,iBAAkBjyB,EAAUjN,UAAW8+B,GAEvC7xB,CACX,CAnFiB,CAmFfggB,IAEF,MCrFIsyB,GAAgB,SAAUtyB,GAC1B,SAASsyB,EAAajuC,GAClB2b,EAAMjuB,KAAKhD,MAEXA,KAAKpM,SAAW,GAEhBoM,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAAStV,KAAKwjD,gBAAgBluC,GACrE,CAsSA,OApSK2b,IAAQsyB,EAAax4C,UAAYkmB,GACtCsyB,EAAav/C,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACvDu/C,EAAav/C,UAAUqH,YAAck4C,EAErCA,EAAav/C,UAAUw/C,gBAAkB,SAA0BluC,GAC/D,OAAOA,CACX,EAEAiuC,EAAav/C,UAAUy/C,OAAS,SAAiB9Y,GAI7C,IAHA,IACI1a,EADAr8B,EAAWoM,KAAKpM,SAGX8X,EAAI,EAAGA,EAAI9X,EAASwG,OAAQsR,IAAK,CACtC,IAAIg4C,EAAe9vD,EAAS8X,GAC5Bg4C,EAAaD,OAAO9Y,GAEpB1a,EAAMA,EAAMA,EAAIya,KAAKgZ,EAAazzB,KAAOyzB,EAAazzB,IAAIpJ,OAC9D,CAEA7mB,KAAKiwB,IAAMA,GAAO0a,CACtB,EAEA4Y,EAAav/C,UAAUs/C,QAAU,WAC7B,IAAI1vD,EAAWoM,KAAKpM,SAEhBoM,KAAK5E,WACL4E,KAAK5E,UAAUkoD,UAGnB,IAAK,IAAI53C,EAAI,EAAGA,EAAI9X,EAASwG,OAAQsR,IACjC9X,EAAS8X,GAAG43C,SAEpB,EAEAC,EAAav/C,UAAU2/C,QAAU,WAC7B,IAAI/wB,EAAS5yB,KAAK4yB,OAElB,OAAOA,EAASA,EAAO+wB,UAAY,IACvC,EAEAJ,EAAav/C,UAAU4/C,UAAY,WAC/B,IAAIC,EAAU7jD,KAAK8jD,aACnB,GAAID,EACA,OAAOA,EAAQE,MAEvB,EAEAR,EAAav/C,UAAU8/C,WAAa,WAEhC,IADA,IAAItwD,EAAUwM,KACPxM,GAAS,CACZ,GAAIA,EAAQwwD,aACR,OAAOxwD,EAAQwwD,aAEnBxwD,EAAUA,EAAQo/B,MACtB,CACJ,EAEA2wB,EAAav/C,UAAUigD,kBAAoB,SAA4Bte,EAAIC,GAIvE,IAHA,IAAIhyC,EAAWoM,KAAKpM,SAChBswD,EAAgBtwD,EAASwG,OAEpBsR,EAAI,EAAGA,EAAIw4C,EAAex4C,IAC/B9X,EAAS8X,GAAGukB,IAAItK,UAAUggB,EAAIC,EAEtC,EAEA2d,EAAav/C,UAAU6nB,OAAS,WAI5B,IAHA,IAAI7E,EAAcjf,UACdy5B,EAASxhC,KAEJ0L,EAAI,EAAGA,EAAI3D,UAAU3N,OAAQsR,IAAK,CACvC,IAAIuqB,EAAOjP,EAAYtb,GACvB81B,EAAO5tC,SAASwb,KAAK6mB,GACrBA,EAAKrD,OAAS4O,CAClB,CACJ,EAEA+hB,EAAav/C,UAAUmgD,aAAe,YACL,IAAzBnkD,KAAKsV,QAAQvhB,UAIjBiM,KAAKokD,eAELpkD,KAAKqkD,YAELrkD,KAAKskD,iBAELtkD,KAAKukD,kBACLvkD,KAAKwkD,iBACT,EAEAjB,EAAav/C,UAAUqgD,UAAY,WAC3BrkD,KAAKykD,SACLzkD,KAAKykD,OAAOC,aAAe1kD,KAEvBA,KAAK4yB,QACL5yB,KAAK4yB,OAAO+xB,aAAa3kD,KAAKykD,QAG1C,EAEAlB,EAAav/C,UAAUsgD,eAAiB,WAGpC,IAFA,IAAI1wD,EAAWoM,KAAKpM,SAChBwG,EAASxG,EAASwG,OACbsR,EAAI,EAAGA,EAAItR,EAAQsR,IACxB9X,EAAS8X,GAAGy4C,cAEpB,EAEAZ,EAAav/C,UAAUogD,aAAe,WAClCpkD,KAAKykD,OAAS,IAAItE,GAAW,CACzByE,OAAQ5kD,KAAKsV,QAAQsvC,OACrB7wD,QAAS07B,GAAezvB,KAAKsV,QAAQvhB,SAAS,IAEtD,EAEAwvD,EAAav/C,UAAUugD,gBAAkB,WACjCvkD,KAAKykD,QAAUzkD,KAAKsV,QAAQla,YAC5B4E,KAAK5E,UAAY+kD,GAAAA,OACbngD,KAAKykD,OAAQzkD,KAAKsV,QAAQla,WAGtC,EAEAmoD,EAAav/C,UAAU2gD,aAAe,SAAuBE,GACpDA,EAAYH,eACbG,EAAYH,aAAe1kD,MAG3B6kD,EAAYvvC,QAAQwvC,OACpB9kD,KAAK+kD,WAAWN,OAAO54B,OAAOg5B,GACvB1/B,GAAQ0/B,EAAYvvC,QAAQsvC,QACnC5kD,KAAKglD,YAAYC,YAAYJ,GACtB7kD,KAAKklD,YACZllD,KAAKilD,YAAYJ,GACV7kD,KAAKykD,OACZzkD,KAAKykD,OAAO54B,OAAOg5B,GAInB7kD,KAAK4yB,OAAO+xB,aAAaE,EAEjC,EAEAtB,EAAav/C,UAAU+gD,SAAW,WAC9B,OAAI/kD,KAAK4yB,OACE5yB,KAAK4yB,OAAOmyB,WAGhB/kD,IACX,EAEAujD,EAAav/C,UAAUghD,UAAY,WAC/B,OAAIhlD,KAAK4yB,OACE5yB,KAAK4yB,OAAOoyB,YAGhBhlD,IACX,EAEAujD,EAAav/C,UAAUihD,YAAc,SAAsBJ,GACvD,IAGItvC,EAHAqvC,EAASC,EAAYvvC,QAAQsvC,QAAU,EACvCO,EAAUnlD,KAAKykD,OAAO7wD,SACtBwG,EAAS+qD,EAAQ/qD,OAGrB,IAAKmb,EAAM,EAAGA,EAAMnb,EAAQmb,IAAO,CAC/B,IAAI6vC,EAAUD,EAAQ5vC,GAEtB,GADWka,GAAe21B,EAAQ9vC,QAAQsvC,OAAQ,GACvCA,EACP,KAER,CAEA5kD,KAAKykD,OAAOrD,OAAO7rC,EAAKsvC,EAC5B,EAEAtB,EAAav/C,UAAU+8C,SAAW,SAAmB76C,GAIjD,IAHA,IAAItS,EAAWoM,KAAKpM,SAChBwG,EAASxG,EAASwG,OAEbsR,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAI0C,EAAQxa,EAAS8X,GAErBxF,EAASkI,GACLA,EAAM2yC,UACN3yC,EAAM2yC,SAAS76C,EAEvB,CACJ,EAEAq9C,EAAav/C,UAAUqhD,QAAU,SAAkB58B,GAI/C,IAHA,IAAIj1B,EAAUwM,KACVslD,GAAU,EAEP9xD,IAAY8xD,IACfA,EAAU78B,EAAMj1B,MAGZA,EAAUA,EAAQo/B,QAI1B,GAAI0yB,EACA,OAAO9xD,CAEf,EAEA+vD,EAAav/C,UAAUwgD,eAAiB,WAA4B,EAEpEjB,EAAav/C,UAAUuhD,aAAe,WAClC,IAAIjwC,GAAWtV,KAAKsV,SAAW,CAAC,GAAGkwC,UACnC,SAAUxlD,KAAKylD,iBAAoBnwC,IAA+B,IAApBA,EAAQvhB,QAC1D,EAEAwvD,EAAav/C,UAAU0hD,gBAAkB,SAA0BrtD,EAAMm9C,GACrE,IAAIhU,EAASxhC,KAETsV,GAAWtV,KAAKsV,SAAW,CAAC,GAAGkwC,WAAa,CAAC,EAC7CG,EAAerwC,EAAQmvC,OACvBe,EAAYxlD,KAAK4lD,WAErB,IAAKJ,EAAW,CACZ,IAAIK,EAAmB,CACnB9P,KAAM,CACFvnB,MAAO3J,EACP2wB,QAASA,GAAW,IAExBjwB,OAAQ,CACJiJ,MAAO3J,EACPrwB,MAAO,EACPghD,QAASA,GAAW,KAI5B,GAAImQ,GAeA,KAdAH,EAAYxlD,KAAK4lD,WAAaD,EAC1B96C,OAAOW,OAAOxL,KAAK8lD,sBAAuB,CACtC1B,aAAc,WAAc,OAAO5iB,EAAOikB,gBAAgBI,EAAmB,EAC7E9B,OAAQ/jD,KAAK4jD,YACbmC,OAAQ/lD,KAAK+lD,OACbC,SAAUhmD,KAAKgmD,SACfC,SAAUjmD,KAAKimD,SACf9oD,MAAO6C,KAAK7C,MACZ+oD,WAAYlmD,KAAKkmD,WACjBC,aAAcnmD,KAAKmmD,aACnB/oC,MAAOpd,KAAKod,UAKhB,YAGJooC,EAAYxlD,KAAK4lD,WAAa5lD,KAAKylD,gBAAgBI,GAGlD1gC,GAAQqgC,EAAUlwC,QAAQsvC,UAC3BY,EAAUlwC,QAAQsvC,OAASn1B,GAAena,EAAQsvC,OAAQ5kD,KAAKsV,QAAQsvC,SAG3E5kD,KAAK2kD,aAAaa,EACtB,CAEAA,EAAUzxD,QAAQsE,EACtB,EAEAkrD,EAAav/C,UAAUoiD,sBAAwB,SAAgC5yD,EAAS8hB,EAAS+wC,GAC7F,IAAIC,EAAU,IAAInG,GAAUt1C,OAAOW,OAAO,CACtC+Z,OAAQ,CACJiJ,MAAO,QAEXunB,KAAM/1C,KAAKumD,eAAeF,GAC1BhM,OAAQ7mD,EAAQ8hB,QAAQ+kC,QACzB/kC,IAIH,OAFAgxC,EAAQ7gC,SAASquB,SAAStgD,EAAQiyB,SAASquB,YAEpCwS,CACX,EAEA/C,EAAav/C,UAAUuiD,eAAiB,SAAyBjxC,GAC7D,GAAItV,KAAK4yB,OACL,OAAO5yB,KAAK4yB,OAAO2zB,eAAejxC,EAE1C,EAEAiuC,EAAav/C,UAAUwiD,6BAA+B,WAClD,OAAO,CACX,EAEOjD,CACX,CA9SoB,CA8SlBtyB,IAEFsyB,GAAav/C,UAAUsR,QAAU,CAAE,EAEnC,UC/SImxC,GAAc,SAAUlD,GACxB,SAASkD,EAAWnxC,GAChBiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKsV,QAAQha,OAASksB,GAAWxnB,KAAKsV,QAAQha,QAC9C0E,KAAKsV,QAAQ+1B,QAAU7jB,GAAWxnB,KAAKsV,QAAQ+1B,QACnD,CAwGA,OAtGKkY,IAAekD,EAAW17C,UAAYw4C,GAC3CkD,EAAWziD,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACnEyiD,EAAWziD,UAAUqH,YAAco7C,EAEnCA,EAAWziD,UAAUy/C,OAAS,SAAiB9Y,GAC3C,IAUI1a,EAVAuR,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACf9gB,EAAQ8gB,EAAQ9gB,MAChBC,EAAS6gB,EAAQ7gB,OACjBiyD,EAAcpxC,EAAQoxC,YACtBC,EAAanyD,GAASC,EACtB6G,EAASga,EAAQha,OACjB+vC,EAAU/1B,EAAQ+1B,QAClBub,EAActxC,EAAQuxC,OAAOryD,MAG7BsyD,EAAmB,WACnBtlB,EAAO2K,MAAMxB,EAAW5lB,EAAGzP,EAAQ62B,OACnC3K,EAAO2K,MAAMxB,EAAW3lB,EAAG1P,EAAQyxC,QACnCvlB,EAAOwlB,WAAa/2B,EAAIpJ,QAAQykB,MAAMhwC,GAAQgwC,MAAMsb,EACxD,EAEIK,EAAatc,EAAU9jB,QACvB8/B,IACAM,EAAWzc,GAAKyc,EAAW3c,GAAK91C,EAChCyyD,EAAWxc,GAAKwc,EAAW1c,GAAK91C,GAGhCiyD,GACAO,EAAW3b,MAAMhwC,GAAQgwC,MAAMsb,GAAatb,MAAMD,GAGtDkY,EAAav/C,UAAUy/C,OAAOzgD,KAAKhD,KAAMinD,GAGrCh3B,EADA02B,EACM3mD,KAAKiwB,IAAM,IAAIoa,GAAI,EAAG,EAAG71C,EAAOC,GAEhCuL,KAAKiwB,IAGXy2B,GAAeC,GACfG,IACAG,EAAajnD,KAAKinD,WAAajnD,KAAKgnD,WAAWngC,QAAQykB,MAAMD,KAE7D4b,EAAajnD,KAAKinD,WAAah3B,EAAIpJ,QACnCoJ,EAAIgR,IAAIoK,GAASpK,IAAI2lB,GAAa3lB,IAAI3lC,GACtCwrD,KAGJ9mD,KAAKikD,kBACDh0B,EAAIqa,GAAK2c,EAAW3c,GAAKhvC,EAAOwsB,KAAO8+B,EAAcvb,EAAQvjB,KAC7DmI,EAAIsa,GAAK0c,EAAW1c,GAAKjvC,EAAOqsB,IAAMi/B,EAAcvb,EAAQ1jB,KAIhE,IADA,IAAI/zB,EAAWoM,KAAKpM,SACX8X,EAAI,EAAGA,EAAI9X,EAASwG,OAAQsR,IAAK,CACtC,IAAIuqB,EAAOriC,EAAS8X,GACpBuqB,EAAKwtB,OAAOxtB,EAAKhG,IACrB,CACJ,EAEAw2B,EAAWziD,UAAUmoC,MAAQ,SAAgBxB,EAAWI,EAAMqB,GAC1DpsC,KAAKiwB,IAAIkc,MAAMxB,EAAWI,EAAMqB,EACpC,EAEAqa,EAAWziD,UAAUkjD,OAAS,WAC1B,IAAI5xC,EAAUtV,KAAKsV,QACnB,OAAOA,EAAQuxC,OAAOryD,OAAS8gB,EAAQ6xC,UAC3C,EAEAV,EAAWziD,UAAUogD,aAAe,WAChCb,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAE3BA,KAAKsV,QACPvhB,SAAWiM,KAAKknD,UACxBlnD,KAAKykD,OAAO54B,OAAOs0B,GAAAA,SACfngD,KAAKgnD,WAAWhb,SAChBhsC,KAAKonD,eAGjB,EAEAX,EAAWziD,UAAUojD,YAAc,WAC/B,IAAI9xC,EAAUtV,KAAKsV,QACfuxC,EAASvxC,EAAQuxC,QAAU,CAAC,EAEhC,MAAO,CACHthC,OAAQ,CACJ/wB,MAAOqyD,EAAOryD,MACdg6B,MAAOq4B,EAAOr4B,MACdgnB,QAAS/lB,GAAeo3B,EAAOrR,QAASlgC,EAAQkgC,SAChD6R,SAAUR,EAAOQ,UAErBtR,KAAM,CACFvnB,MAAOlZ,EAAQ6xC,WACf3R,QAASlgC,EAAQkgC,SAErB8R,OAAQhyC,EAAQgyC,OAExB,EAEOb,CACX,CA/GkB,CA+GhBlD,IAEF5tB,GAAkB8wB,GAAY,CAC1Bta,MAAOloB,EACP8iC,OAAQpiC,EACRrpB,OAAQ,CAAC,EACT+vC,QAAS,CAAC,EACVwb,OAAQ,CACJr4B,MAAOlL,EACP9uB,MAAO,GAEX2yD,WAAY,GACZT,aAAa,EACblyD,MAAO,EACPC,OAAQ,EACRV,SAAS,IAGb,UCnIIwzD,GAAgB,SAAUd,GAC1B,SAASc,EAAajyC,EAASkyC,GAC3Bf,EAAWzjD,KAAKhD,KAAMsV,GAEtBtV,KAAKwnD,UAAYA,CACrB,CAyGA,OAvGKf,IAAac,EAAax8C,UAAY07C,GAC3Cc,EAAavjD,UAAY6G,OAAOS,OAAQm7C,GAAcA,EAAWziD,WACjEujD,EAAavjD,UAAUqH,YAAck8C,EAErCA,EAAavjD,UAAUyjD,WAAa,WAChC,IACInyC,EADMtV,KACQsV,QACd2a,EAFMjwB,KAEIgnD,WACV7zD,EAAOmiB,EAAQniB,KACfu4C,EAAWp2B,EAAQo2B,SACnBvG,EAASlV,EAAIkV,SACbuiB,EAAYz3B,EAAIz7B,QAAU,EAC1BmzD,EAAa13B,EAAIx7B,SAAW,EAEhC,IAAK6gB,EAAQvhB,UAAYiM,KAAKknD,SAC1B,OAAO,KAGX,IACI1zD,EADAiD,EAAQuJ,KAAKonD,cAGjB,GAAIj0D,IAASswB,EACTjwB,EAAU,IAAI2sD,GACV,IAAIlU,GAAY,CACZjrB,GAAMiP,EAAIqa,GAAKod,E/H/BN,G+HgCT1mC,GAAMiP,EAAIsa,GAAKod,E/HhCN,I+HiCV7mC,KAAK6N,IAAI+4B,EAAWC,IACvBlxD,QAED,G/HVO,a+HUHtD,EACPK,EAAU2sD,GAAAA,WAAqB,CAC3B,CAAElwB,EAAIqa,GAAKod,EAAWz3B,EAAIsa,IAC1B,CAAEta,EAAIqa,GAAIra,EAAIwa,IACd,CAAExa,EAAIua,GAAIva,EAAIwa,KACfh0C,GAAO83C,aACP,GAAIp7C,IAASuwB,GAChBlwB,EAAU,IAAI2sD,GAAe1pD,IAErB2nD,OAAOnuB,EAAIqa,GAAIra,EAAIsa,IAAIwS,OAAO9sB,EAAIua,GAAIva,EAAIwa,IAClDj3C,EAAQ4qD,OAAOnuB,EAAIqa,GAAIra,EAAIwa,IAAIsS,OAAO9sB,EAAIua,GAAIva,EAAIsa,QAC/C,CACH,IAAImV,EAAOzvB,EAAI+b,SACf,GAAI74C,IAASsxB,EAAc,CACvB,IAAImjC,EAAen4B,GAAena,EAAQsyC,aAAclI,EAAKlrD,QAAU,GACvEkrD,EAAK7W,gBAAgB+e,EACzB,CAEAp0D,EAAU2sD,GAAAA,SAAmBT,EAAMjpD,EACvC,CAUA,OARIi1C,GACAl4C,EAAQ8+B,UAAU2Z,KACbra,QAAQ8Z,EAAU,CAAEvG,EAAOpf,EAAGof,EAAOnf,KAI9CxyB,EAAQ8hB,QAAQsvC,OAAStvC,EAAQsvC,OAE1BpxD,CACX,EAEA+zD,EAAavjD,UAAUkb,cAAgB,WACnC,IAAIsiB,EAASxhC,KAET2lD,EAAe3lD,KAAKsV,QAAQmvC,OAC5B+C,EAAYxnD,KAAKwnD,WAAa,CAAC,EAkBnC,OAfI7B,EACSA,EAAa,CAClBxoD,MAAOqqD,EAAUrqD,MACjB6oD,SAAUwB,EAAUxB,SACpBjC,OAAQ/jD,KAAK4jD,YACbmC,OAAQyB,EAAUzB,OAClBE,SAAUuB,EAAUvB,SACpBvG,KAAM1/C,KAAKgnD,WAAWhb,SACtB12B,QAAStV,KAAK6nD,gBACdzD,aAAc,WAAc,OAAO5iB,EAAOimB,YAAc,IAGnDznD,KAAKynD,YAItB,EAEAF,EAAavjD,UAAU6jD,cAAgB,WACnC,IAAIvyC,EAAUtV,KAAKsV,QACnB,MAAO,CACH6xC,WAAY7xC,EAAQ6xC,WACpBN,OAAQvxC,EAAQuxC,OAChBvrD,OAAQga,EAAQha,OAChB+vC,QAAS/1B,EAAQ+1B,QACjBl4C,KAAMmiB,EAAQniB,KACdyD,KAAM0e,EAAQ9gB,MACdT,QAASuhB,EAAQvhB,QAEzB,EAEAwzD,EAAavjD,UAAUogD,aAAe,WAClCpkD,KAAKykD,OAASzkD,KAAKkf,eACvB,EAEOqoC,CACX,CA/GoB,CA+GlBd,IAEF9wB,GAAkB4xB,GAAc,CAC5Bp0D,KAAMswB,EACN0oB,MAAO3oB,EACPujC,OAAQvjC,IAGZ,UC3HIskC,GAAc,SAAUlU,GACxB,SAASkU,IACLlU,EAAc1rC,MAAMlI,KAAM+H,UAC9B,CAYA,OAVK6rC,IAAgBkU,EAAW/8C,UAAY6oC,GAC5CkU,EAAW9jD,UAAY6G,OAAOS,OAAQsoC,GAAiBA,EAAc5vC,WACrE8jD,EAAW9jD,UAAUqH,YAAcy8C,EAEnCA,EAAW9jD,UAAU+vC,QAAU,WAC3B/zC,KAAKumC,cAAc,CACfzoB,MAAO,SAEf,EAEOgqC,CACX,CAhBkB,CAgBhBlU,IAEF,MClBA,SAASmU,GAAgBp3C,GACrB,OAAO,SAASxT,GACZ,OAAIgoB,EAAQhoB,IACR6C,KAAKsV,QAAQ2T,IAAItY,EAAMxT,GAChB6C,MAGJA,KAAKsV,QAAQlJ,IAAIuE,EAC5B,CACJ,CAQA,IAiBA,GAjBkB,SAAUm2B,EAAOhe,GAC/B,IAAI1wB,EAAU,SAAU0uC,GACpB,SAAS1uC,IACL0uC,EAAM5+B,MAAMlI,KAAM+H,UACtB,CAMA,OANM++B,IAAQ1uC,EAAO2S,UAAY+7B,GACjC1uC,EAAO4L,UAAY6G,OAAOS,OAAQw7B,GAASA,EAAM9iC,WACjD5L,EAAO4L,UAAUqH,YAAcjT,EAIxBA,CACX,CAVc,CAUZ0uC,GAGF,OApBJ,SAAgCzgB,EAAIyC,GAChC,IAAK,IAAIpd,EAAI,EAAGA,EAAIod,EAAM1uB,OAAQsR,IAC9B2a,EAAGyC,EAAMpd,IAAMq8C,GAAgBj/B,EAAMpd,GAE7C,CAcIs8C,CAAuB5vD,EAAO4L,UAAW8kB,GAElC1wB,CACX,ECSA,GAnCoB,SAAUgvC,GAC1B,SAAS6gB,EAAa3iC,EAAQkJ,EAAOgnB,GACjCpO,EAAWpkC,KAAKhD,MAEhBA,KAAKsV,QAAU,IAAIg/B,GAAa,CAC5BhvB,OAAQA,EACRkJ,MAAOA,EACPgnB,QAASrwB,EAAQqwB,GAAWA,EAAU,IAG1Cx1C,KAAKsV,QAAQ4wB,YAAYlmC,KAC7B,CAqBA,OAnBKonC,IAAa6gB,EAAal9C,UAAYq8B,GAC3C6gB,EAAajkD,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACjEikD,EAAajkD,UAAUqH,YAAc48C,EAErCA,EAAa38C,OAAS,SAAiB48C,GACnC,GAAI/iC,EAAQ+iC,GAUR,OARIA,aAAeD,EACRC,EACAA,EAAI9tD,OAAS,EACb,IAAI6tD,EAAaC,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAErC,IAAID,EAAaC,EAAI5iC,OAAQ4iC,EAAI15B,MAAO05B,EAAI1S,QAK/D,EAEOyS,CACX,CAjCoB,CAiClBE,GAAYpiB,GAnCA,CAAE,SAAU,QAAS,aCD/BqiB,GAAY,SAAUriB,GACtB,SAASqiB,EAAS9yC,QACG,IAAZA,IAAqBA,EAAU,CAAC,GAErCywB,EAAa/iC,KAAKhD,MAElBA,KAAKqoD,MAAQ,IAAIP,GAAW9nD,KAAKsoD,aAAahzC,EAAQ+yC,QACtDroD,KAAKqoD,MAAMniB,YAAYlmC,MACvBA,KAAKuoD,WAAajzC,EAAQkzC,UAC1BxoD,KAAK1J,GAAKq2B,IACd,CAEKoZ,IAAeqiB,EAASr9C,UAAYg7B,GACzCqiB,EAASpkD,UAAY6G,OAAOS,OAAQy6B,GAAgBA,EAAa/hC,WACjEokD,EAASpkD,UAAUqH,YAAc+8C,EAEjC,IAAItlB,EAAqB,CAAEmS,SAAU,CAAE3oC,cAAc,IAmDrD,OAjDAw2B,EAAmBmS,SAAS7oC,IAAM,WAC9B,MAAO,UACX,EAEAg8C,EAASpkD,UAAUwkD,UAAY,SAAoBrrD,GAC/C,OAAIgoB,EAAQhoB,IACR6C,KAAKuoD,WAAaprD,EAClB6C,KAAKumC,gBACEvmC,MAGJA,KAAKuoD,UAChB,EAEAH,EAASpkD,UAAUskD,aAAe,SAAuBD,QACtC,IAAVA,IAAmBA,EAAQ,IAGhC,IADA,IAAIjwD,EAAS,GACJqc,EAAM,EAAGA,EAAM4zC,EAAMjuD,OAAQqa,IAClCrc,EAAOgX,KAAK64C,GAAAA,OAAoBI,EAAM5zC,KAG1C,OAAOrc,CACX,EAEAgwD,EAASpkD,UAAUykD,QAAU,SAAkBnjC,EAAQkJ,EAAOgnB,GAC1Dx1C,KAAKqoD,MAAMj5C,KAAK,IAAI64C,GAAa3iC,EAAQkJ,EAAOgnB,GACpD,EAEA4S,EAASpkD,UAAU0kD,WAAa,SAAqBC,GACjD,IAAIruD,EAAQ0F,KAAKqoD,MAAMh/C,QAAQs/C,GAC3BruD,GAAS,GACT0F,KAAKqoD,MAAMjiB,OAAO9rC,EAAO,EAEjC,EAEA8tD,EAASpkD,UAAUuiC,cAAgB,SAAwBvzC,GACvDgN,KAAK+pB,QAAQ,gBAAiB,CAC1BjM,MAAO,YAAc9qB,EAAI,IAAMA,EAAE8qB,MAAQ,IACzC3gB,MAAO6C,MAEf,EAEAooD,EAASpkD,UAAUwiC,eAAiB,WAChCxmC,KAAKumC,eACT,EAEA17B,OAAOq4B,iBAAkBklB,EAASpkD,UAAW8+B,GAEtCslB,CACX,CApEgB,CAoEdriB,IAEF,MCpEI6iB,GAAkB,SAAUxhB,GAC5B,SAASwhB,EAAetzC,QACH,IAAZA,IAAqBA,EAAU,CAAC,GAErC8xB,EAAWpkC,KAAKhD,KAAMsV,GAEtBtV,KAAKupB,MAAMjU,EAAQiU,OAAS,IAAI0b,IAChCjlC,KAAKwpB,IAAIlU,EAAQkU,KAAO,IAAIyb,GAAM,EAAG,GACzC,CAMA,OAJKmC,IAAawhB,EAAe79C,UAAYq8B,GAC7CwhB,EAAe5kD,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACnE4kD,EAAe5kD,UAAUqH,YAAcu9C,EAEhCA,CACX,CAfsB,CAepB1O,GAAWkO,GAjBA,CAAE,QAAS,SAmBxB,MClBIS,GAAkB,SAAUzhB,GAC5B,SAASyhB,EAAevzC,QACH,IAAZA,IAAqBA,EAAU,CAAC,GAErC8xB,EAAWpkC,KAAKhD,KAAMsV,GAEtBtV,KAAKmlC,OAAO7vB,EAAQ6vB,QAAU,IAAIF,IAClCjlC,KAAK8oD,QAAU3jC,EAAQ7P,EAAQwwB,QAAUxwB,EAAQwwB,OAAS,EAC1D9lC,KAAK+oD,cAAgBzzC,EAAQ0zC,YACjC,CA0BA,OAxBK5hB,IAAayhB,EAAe99C,UAAYq8B,GAC7CyhB,EAAe7kD,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACnE6kD,EAAe7kD,UAAUqH,YAAcw9C,EAEvCA,EAAe7kD,UAAU8hC,OAAS,SAAiB3oC,GAC/C,OAAIgoB,EAAQhoB,IACR6C,KAAK8oD,QAAU3rD,EACf6C,KAAKwmC,iBACExmC,MAGJA,KAAK8oD,OAChB,EAEAD,EAAe7kD,UAAUglD,aAAe,SAAuB7rD,GAC3D,OAAIgoB,EAAQhoB,IACR6C,KAAK+oD,cAAgB5rD,EACrB6C,KAAKumC,gBACEvmC,MAGJA,KAAK+oD,aAChB,EAEOF,CACX,CApCsB,CAoCpB3O,GAAWkO,GAAU,CAAE,YAEzB,MCzCIa,GAAS,SAyGb,GAvGgB,CACZC,MAAO,CACH/1D,KALK,SAMLu4C,SAAU,EACV2c,MAAO,CAAE,CACL/iC,OAAQ,EACRkJ,MAAO3J,EACP2wB,QAAS,GACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,IACV,CACClwB,OAAQ,EACRkJ,MAAO3J,EACP2wB,QAAS,KAGjB2T,WAAY,CACRh2D,KAAM81D,GACNZ,MAAO,CAAE,CACL/iC,OAAQ,EACRkJ,MAAO3J,EACP2wB,QAAS,KACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,GACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,OAGjB4T,aAAc,CACVj2D,KAAM81D,GACNZ,MAAO,CAAE,CACL/iC,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,KACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,IACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,KAGjB6T,aAAc,CACVl2D,KAAM81D,GACNK,YAAY,EACZjB,MAAO,CAAE,CACL/iC,OAAQ,EACRkJ,MAAO3J,EACP2wB,QAAS,GACV,CACClwB,OAAQ,GACRkJ,MAAO3J,EACP2wB,QAAS,IACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,KAGjB+T,WAAY,CACRp2D,KAAM81D,GACNK,YAAY,EACZjB,MAAO,CAAE,CACL/iC,OAAQ,EACRkJ,MAAO3J,EACP2wB,QAAS,IACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,KACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,KACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,KACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,KACV,CACClwB,OAAQ,IACRkJ,MAAO3J,EACP2wB,QAAS,KAGjBgU,aAAc,CACVr2D,KAAM81D,GACN9jB,OAAQ,CAAE,GAAK,IACfW,OAAQ,KCrGD,SAAS2jB,GAAQz6B,EAAGvjB,GAC/B,GAAIujB,EAAEsb,KAAO7+B,EAAE6+B,IAAMtb,EAAEub,KAAO9+B,EAAE8+B,IAAMvb,EAAEwb,KAAO/+B,EAAE++B,IAAMxb,EAAEyb,KAAOh/B,EAAEg/B,GAC9D,OAAOh/B,EAGX,IAAIojB,EAAI/N,KAAK6N,IAAIK,EAAEsb,GAAI7+B,EAAE6+B,IACrB1/B,EAAIkW,KAAK0K,IAAIwD,EAAEsb,GAAI7+B,EAAE6+B,IACrB7iC,EAAIqZ,KAAK6N,IAAIK,EAAEwb,GAAI/+B,EAAE++B,IACrB7/B,EAAImW,KAAK0K,IAAIwD,EAAEwb,GAAI/+B,EAAE++B,IACrBx3C,EAAI8tB,KAAK6N,IAAIK,EAAEub,GAAI9+B,EAAE8+B,IACrBluB,EAAIyE,KAAK0K,IAAIwD,EAAEub,GAAI9+B,EAAE8+B,IACrBpuB,EAAI2E,KAAK6N,IAAIK,EAAEyb,GAAIh/B,EAAEg/B,IACrBpZ,EAAIvQ,KAAK0K,IAAIwD,EAAEyb,GAAIh/B,EAAEg/B,IACrBif,EAAQ,GA2BZ,OAdAA,EAAM,GAAK,IAAIrf,GAAIz/B,EAAG5X,EAAGyU,EAAG4U,GAC5BqtC,EAAM,GAAK,IAAIrf,GAAIxb,EAAGxS,EAAGzR,EAAGuR,GAC5ButC,EAAM,GAAK,IAAIrf,GAAI5iC,EAAG4U,EAAG1R,EAAGwR,GAC5ButC,EAAM,GAAK,IAAIrf,GAAIz/B,EAAGuR,EAAG1U,EAAG4pB,GAGxBrC,EAAEsb,KAAOzb,GAAKG,EAAEub,KAAOv3C,GAAKyY,EAAE6+B,KAAOzb,GAAKpjB,EAAE8+B,KAAOv3C,GACnD02D,EAAM,GAAK,IAAIrf,GAAIxb,EAAG77B,EAAG4X,EAAGyR,GAC5BqtC,EAAM,GAAK,IAAIrf,GAAI5iC,EAAG0U,EAAGxR,EAAG0mB,KAE5Bq4B,EAAM,GAAK,IAAIrf,GAAI5iC,EAAGzU,EAAG2X,EAAG0R,GAC5BqtC,EAAM,GAAK,IAAIrf,GAAIxb,EAAG1S,EAAGvR,EAAGymB,IAGzB1I,GAAK+gC,GAAO,SAASz5B,GACxB,OAAOA,EAAIx7B,SAAW,GAAKw7B,EAAIz7B,QAAU,CAC7C,IAAG,EACP,CCnCA,IAAIm1D,GAAe,SAAUpG,GACzB,SAASoG,EAAYr0C,GACjBiuC,EAAavgD,KAAKhD,KAAMsV,GAExB,IAAIs0C,EAAc5pD,KAAKsV,QACvBs0C,EAAYp1D,MAAQw2B,SAAS4+B,EAAYp1D,MAAO,IAChDo1D,EAAYn1D,OAASu2B,SAAS4+B,EAAYn1D,OAAQ,IAElDuL,KAAK6pD,UAAY,CAAC,CACtB,CAuFA,OArFKtG,IAAeoG,EAAY5+C,UAAYw4C,GAC5CoG,EAAY3lD,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACpE2lD,EAAY3lD,UAAUqH,YAAcs+C,EAEpCA,EAAY3lD,UAAUy/C,OAAS,WAC3B,IACInuC,EADMtV,KACQsV,QACd1hB,EAFMoM,KAESpM,SACfk2D,EAAa,IAAIzf,GAAI,EAAG,EAAG/0B,EAAQ9gB,MAAO8gB,EAAQ7gB,QAEtDuL,KAAKiwB,IAAM65B,EAAWxe,MAAMh2B,EAAQha,QAEpC,IAAK,IAAIoQ,EAAI,EAAGA,EAAI9X,EAASwG,OAAQsR,IACjC9X,EAAS8X,GAAG+3C,OAAOqG,GACnBA,EAAaL,GAAQK,EAAYl2D,EAAS8X,GAAGukB,MAAQ,IAAIoa,EAEjE,EAEAsf,EAAY3lD,UAAUogD,aAAe,WACjCpkD,KAAKykD,OAAS,IAAItE,GAClBngD,KAAK+pD,kBACT,EAEAJ,EAAY3lD,UAAU+lD,iBAAmB,WACrC,IAAIz0C,EAAUtV,KAAKsV,QACfuxC,EAASvxC,EAAQuxC,QAAU,CAAC,EAC5B52B,EAAMjwB,KAAKiwB,IAAIpJ,QAAQoa,IAAI3rB,EAAQha,QAAQgwC,MAAMub,EAAOryD,OAExD2yD,EAAahH,GAAAA,SAAmBlwB,EAAI+b,SAAU,CAC9CzmB,OAAQ,CACJiJ,MAAOq4B,EAAOryD,MAAQqyD,EAAOr4B,MAAQ,GACrCh6B,MAAOqyD,EAAOryD,MACd6yD,SAAUR,EAAOQ,UAErBtR,KAAM,CACFvnB,MAAOlZ,EAAQ6xC,WACf3R,QAASlgC,EAAQkgC,SAErBoP,QAAS,KAGb5kD,KAAKykD,OAAO54B,OAAOs7B,EACvB,EAEAwC,EAAY3lD,UAAU2/C,QAAU,WAC5B,OAAO3jD,IACX,EAEA2pD,EAAY3lD,UAAUuiD,eAAiB,SAAyBjxC,GAC5D,IAGI00C,EAHAH,EAAY7pD,KAAK6pD,UACjBI,EAAWx2B,GAAUne,GACrB40C,EAAWC,GAAU70C,EAAQ40C,UAGjC,GAAIL,EAAUI,GACVD,EAAkBH,EAAUI,OACzB,CACH,IAAI5D,EAAkBx7C,OAAOW,OAAO,CAAC,EAAG0+C,EAAU50C,GAC5B,WAAlB40C,EAAS/2D,KACT62D,EAAkB,IAAI7J,GAAoBkG,IAEtC/wC,EAAQi3B,cACR8Z,EAAgBgC,MAsCpC,SAA0B/yC,GAMtB,IALA,IAAI+yC,EAAQ/yC,EAAQ+yC,MAChB+B,EAAc90C,EAAQi3B,YAAcj3B,EAAQwwB,OAAU,IACtD1rC,EAASiuD,EAAMjuD,OACfiwD,EAAe,GAEV3+C,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAI4+C,EAAcz/C,OAAOW,OAAO,CAAC,EAAG68C,EAAM38C,IAC1C4+C,EAAYhlC,QAAUglC,EAAYhlC,QAAU,IAAM8kC,GAAaA,GAAa,IAC5EC,EAAaj7C,KAAKk7C,EACtB,CAEA,OAAOD,CACX,CAnD4CE,CAAiBlE,KAE7C2D,EAAkB,IAAI7J,GAAoBkG,IAC1BiD,YAAqC,IAAxBY,EAASZ,YAE1CO,EAAUI,GAAYD,CAC1B,CAEA,OAAOA,CACX,EAEAL,EAAY3lD,UAAUwmD,eAAiB,WACnC,IAAIX,EAAY7pD,KAAK6pD,UACrB,IAAK,IAAII,KAAYJ,EACjBA,EAAUI,GAAUhkB,WAAa,EAEzC,EAEA0jB,EAAY3lD,UAAUpN,KAAO,WACzB,IAAI0e,EAAUtV,KAAKsV,QACnB,OAAO,IAAI+0B,GAAI,EAAG,EAAG/0B,EAAQ9gB,MAAO8gB,EAAQ7gB,OAChD,EAEOk1D,CACX,CAjGmB,CAiGjBpG,IAEF5tB,GAAkBg0B,GAAa,CAC3Bn1D,MxInGuB,IwIoGvBC,OxItGwB,IwIuGxB0yD,WAAYtiC,EACZgiC,OAAQ,CACJr4B,MAAOlL,EACP9uB,MAAO,GAEX8G,OAAQksB,GAAW,GACnBo9B,QAAS,IAkBb,UCnII6F,GAAgB,SAAUlH,GAC1B,SAASkH,EAAan1C,GAClBiuC,EAAavgD,KAAKhD,KAAMsV,GACxBtV,KAAK0qD,gBACT,CAgKA,OA9JKnH,IAAekH,EAAa1/C,UAAYw4C,GAC7CkH,EAAazmD,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACrEymD,EAAazmD,UAAUqH,YAAco/C,EAErCA,EAAazmD,UAAU0mD,eAAiB,WACpC,IAAIp1C,EAAUtV,KAAKsV,QACfA,EAAQq1C,UACR3qD,KAAK4qD,UAAY7lC,EACjB/kB,KAAK6qD,YAAc7lC,EACnBhlB,KAAK8qD,eAAiBhmC,EACtB9kB,KAAK+qD,iBAAmBhnC,EACxB/jB,KAAKgrD,aAAe11C,EAAQoS,QAC5B1nB,KAAKirD,eAAiB31C,EAAQ41C,WAE9BlrD,KAAK4qD,UAAY5lC,EACjBhlB,KAAK6qD,YAAc9lC,EACnB/kB,KAAK8qD,eAAiB/mC,EACtB/jB,KAAK+qD,iBAAmBjmC,EACxB9kB,KAAKgrD,aAAe11C,EAAQ41C,SAC5BlrD,KAAKirD,eAAiB31C,EAAQoS,QAEtC,EAEA+iC,EAAazmD,UAAUy/C,OAAS,SAAiB9Y,GAC7C3qC,KAAKiwB,IAAM0a,EAAU9jB,QACrB7mB,KAAKmrD,gBACT,EAEAV,EAAazmD,UAAUmnD,eAAiB,WACpC,IAAI3pB,EAASxhC,KAETzN,EAAMyN,KACNiwB,EAAM19B,EAAI09B,IACV46B,EAAct4D,EAAIs4D,YAClBD,EAAYr4D,EAAIq4D,UAChBG,EAAmBx4D,EAAIw4D,iBACvBD,EAAiBv4D,EAAIu4D,eACrBM,EAAQprD,KAAKqrD,eACbC,EAASF,EAAME,OACfC,EAAaH,EAAMG,WACnBC,EAAuBJ,EAAMI,qBAC7BC,EAAcH,EAAOlxD,OACrBsxD,EAAcz7B,EAAI26B,EAAY,GAAK5qD,KAAK2rD,WAAWJ,EAAYt7B,EAAI66B,MAEvE,GAAIW,EAAa,CAGb,IAFA,IAAIG,EAAaF,EAERG,EAAW,EAAGA,EAAWJ,EAAaI,IAAY,CAMvD,IALA,IAAIvuC,EAAQguC,EAAOO,GACfC,EAAgBxuC,EAAMwuC,cACtBC,EAAe97B,EAAI46B,EAAc,GACjCmB,EAAqBF,EAAc1xD,OAE9Bqa,EAAM,EAAGA,EAAMu3C,EAAoBv3C,IAAO,CAC/C,IAAIjhB,EAAUs4D,EAAcr3C,GACxBic,EAAc8Q,EAAO9Q,YAAYl9B,GACjCy4D,EAAoBL,EAAapqB,EAAOmqB,WAAWj7B,EAAYo6B,GAAiBxtC,EAAM4uC,WAEtFC,EAAa,IAAI9hB,GACrB8hB,EAAWvB,EAAY,GAAKqB,EAC5BE,EAAWvB,EAAY,GAAKqB,EAAoBv7B,EAAYo6B,GAC5DqB,EAAWtB,EAAc,GAAKkB,EAC9BI,EAAWtB,EAAc,GAAKkB,EAAer7B,EAAYq6B,GAEzDv3D,EAAQiwD,OAAO0I,GAEfJ,GAAgBr7B,EAAYq6B,GAAoBvpB,EAAOypB,cAC3D,CACAW,GAActuC,EAAM4uC,UAAY1qB,EAAOwpB,YAC3C,CACA/6B,EAAI26B,EAAY,GAAKc,EACrBz7B,EAAI26B,EAAY,GAAKc,EAAcH,EACnCt7B,EAAI46B,EAAc,GAAK56B,EAAI46B,EAAc,GAAKW,CAClD,CACJ,EAEAf,EAAazmD,UAAU2nD,WAAa,SAAqB/0D,EAAMw1D,GAC3D,IAAI7iC,EAAQ,EACR4iB,EAAQnsC,KAAKsV,QAAQ62B,MAMzB,OALIA,IAAU3nB,GAAS2nB,IAAU5oB,EAC7BgG,EAAQ6iC,EAAUx1D,EACXu1C,IAAU3oB,IACjB+F,GAAS6iC,EAAUx1D,GAAQ,GAExB2yB,CACX,EAEAkhC,EAAazmD,UAAUqnD,aAAe,WAoBlC,IAnBA,IAEI94D,EAAMyN,KACNiwB,EAAM19B,EAAI09B,IACVr8B,EAAWrB,EAAIqB,SACfm3D,EAAmBx4D,EAAIw4D,iBACvBD,EAAiBv4D,EAAIu4D,eACrBG,EAAiB14D,EAAI04D,eACrBD,EAAez4D,EAAIy4D,aACnBoB,EAAUprC,GAAMiP,EAAI86B,MACpB7G,EAAgBtwD,EAASwG,OACzBkxD,EAAS,GAETY,EAAY,EACZG,EAAoB,EACpBd,EAAa,EACbC,EAAuB,EACvBM,EAAgB,GAEXr3C,EAAM,EAAGA,EAAMyvC,EAAezvC,IAAO,CAC1C,IAAIjhB,EAAUI,EAAS6gB,GAClBjhB,EAAQy8B,KACTz8B,EAAQiwD,OAAOxzB,GAGnB,IAAIS,EAzBK1wB,KAyBgB0wB,YAAYl9B,GAzB5BwM,KA0BEsV,QAAQo1B,MAAQ1pB,GAAMqrC,EAAoBpB,EAAiBv6B,EAAYq6B,IAAqBqB,IACnGd,EAAOl8C,KAAK,CACR08C,cAAeA,EACfI,UAAWA,EACXG,kBAAmBA,IAEvBb,EAAuB1qC,KAAK0K,IAAIggC,EAAsBa,GACtDd,GAAcP,EAAekB,EAC7BA,EAAY,EACZG,EAAoB,EACpBP,EAAgB,IAEpBI,EAAYprC,KAAK0K,IAAI0gC,EAAWx7B,EAAYo6B,IACxCuB,EAAoB,IACpBA,GAAqBpB,GAEzBoB,GAAqB37B,EAAYq6B,GACjCe,EAAc18C,KAAK5b,EACvB,CAUA,OARA83D,EAAOl8C,KAAK,CACR08C,cAAeA,EACfI,UAAWA,EACXG,kBAAmBA,IAKhB,CACHf,OAAQA,EACRC,WAJJA,GAAcW,EAKVV,qBANJA,EAAuB1qC,KAAK0K,IAAIggC,EAAsBa,GAQ1D,EAEA5B,EAAazmD,UAAU0sB,YAAc,SAAsBl9B,GACvD,MAAO,CACHgB,MAAOhB,EAAQy8B,IAAIz7B,QACnBC,OAAQjB,EAAQy8B,IAAIx7B,SAE5B,EAEAg2D,EAAazmD,UAAUogD,aAAe,WAA0B,EAEzDqG,CACX,CArKoB,CAqKlBlH,IAEF5tB,GAAkB80B,GAAc,CAC5BE,UAAU,EACVjgB,MAAM,EACNwgB,SAAU,EACVxjC,QAAS,IAGb,UCxKI4kC,GAAQ,SAAUllB,GAClB,SAASklB,EAAKxqD,EAAS+6C,EAAUvnC,QACX,IAAbunC,IAAsBA,EAAW,IAAI5X,SACzB,IAAZ3vB,IAAqBA,EAAU,CAAC,GAErC8xB,EAAWpkC,KAAKhD,KAAMsV,GAEtBtV,KAAK8B,QAAQA,GACb9B,KAAK68C,SAASA,GAET78C,KAAKsV,QAAQkgB,OACdx1B,KAAKsV,QAAQkgB,KAdN,mBAiBNrQ,EAAQnlB,KAAKsV,QAAQygC,OACtB/1C,KAAK+1C,KAjBE,OAmBf,CAEK3O,IAAaklB,EAAKvhD,UAAYq8B,GACnCklB,EAAKtoD,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACzDsoD,EAAKtoD,UAAUqH,YAAcihD,EAE7B,IAAIxpB,EAAqB,CAAEmS,SAAU,CAAE3oC,cAAc,IA4CrD,OA1CAw2B,EAAmBmS,SAAS7oC,IAAM,WAC9B,MAAO,MACX,EAEAkgD,EAAKtoD,UAAUlC,QAAU,SAAkB3E,GACvC,OAAIgoB,EAAQhoB,IACR6C,KAAKsV,QAAQ2T,IAAI,UAAW9rB,GACrB6C,MAGJA,KAAKsV,QAAQlJ,IAAI,UAC5B,EAEAkgD,EAAKtoD,UAAUmwB,QAAU,WAKrB,OAJca,GAAYh1B,KAAK8B,UAAW,CACtC0zB,KAAMx1B,KAAKsV,QAAQlJ,IAAI,SAI/B,EAEAkgD,EAAKtoD,UAAU07C,KAAO,WAClB,IAAI9oD,EAAOoJ,KAAKm0B,UACZ5e,EAAMvV,KAAK68C,WAAWh2B,QAC1B,OAAO,IAAI4hB,GAAKlzB,EAAK,CAAE3e,EAAKpC,MAAOoC,EAAKnC,QAC5C,EAEA63D,EAAKtoD,UAAUqlC,KAAO,SAAelC,GACjC,IAAImO,EAAiBpO,GAASlnC,KAAKq1C,iBAAiBlO,IACpD,OAAOnnC,KAAK0/C,OAAOrW,KAAKiM,EAC5B,EAEAgX,EAAKtoD,UAAUy6C,QAAU,WACrB,OAAOz+C,KAAK0/C,OAAOrW,MACvB,EAEAijB,EAAKtoD,UAAU6xC,eAAiB,SAAyB3Q,GACrD,OAAOllC,KAAK0/C,OAAO7V,cAAc3E,EACrC,EAEAr6B,OAAOq4B,iBAAkBopB,EAAKtoD,UAAW8+B,GAElCwpB,CACX,CApEY,CAoEVzM,GAAU3F,GAAWnF,GAAS,CAAE,eAElC,MC1EIwX,GAAcpM,GAEdmM,GAAQ,SAAU/I,GAClB,SAAS+I,EAAKxqD,EAASwT,GACnBiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAK8B,QAAUA,EAGf9B,KAAKyjD,OAAO,IAAIpZ,GACpB,CA8BA,OA5BKkZ,IAAe+I,EAAKvhD,UAAYw4C,GACrC+I,EAAKtoD,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAC7DsoD,EAAKtoD,UAAUqH,YAAcihD,EAE7BA,EAAKtoD,UAAUy/C,OAAS,SAAiB9Y,GACrC,IAAIr1B,EAAUtV,KAAKsV,QACf1e,EAAO0e,EAAQ1e,KAAOupD,GAAsBngD,KAAK8B,QAAS,CAAE0zB,KAAMlgB,EAAQkgB,OAE9Ex1B,KAAKo0B,SAAWx9B,EAAKw9B,SAErBp0B,KAAKiwB,IAAM,IAAIoa,GAAIM,EAAUL,GAAIK,EAAUJ,GACnCI,EAAUL,GAAK1zC,EAAKpC,MAAOm2C,EAAUJ,GAAK3zC,EAAKnC,OAC3D,EAEA63D,EAAKtoD,UAAUogD,aAAe,WAC1B,IAAI7xD,EAAMyN,KAAKsV,QACXkgB,EAAOjjC,EAAIijC,KACXhH,EAAQj8B,EAAIi8B,MACZgnB,EAAUjjD,EAAIijD,QACd8R,EAAS/0D,EAAI+0D,OAEjBtnD,KAAKykD,OAAS,IAAI8H,GAAYvsD,KAAK8B,QAAS9B,KAAKiwB,IAAI+b,SAAS/C,UAAW,CACrEzT,KAAMA,EACNugB,KAAM,CAAEvnB,MAAOA,EAAOgnB,QAASA,GAC/B8R,OAAQA,GAEhB,EAEOgF,CACX,CAvCY,CAuCV/I,IAEF5tB,GAAkB22B,GAAM,CACpB92B,KAAM5R,EACN4K,MAAOlL,IAGX,UCtDe,SAASkpC,GAAU9M,GAC9B,IAAInY,EAASmY,EAAKnY,OACd2B,EAAcwW,EAAKxW,cAEvB,OAAO,IAAImB,GAAI9C,EAAOxhB,EAAGwhB,EAAOvhB,EAAGkjB,EAAYnjB,EAAGmjB,EAAYljB,EAClE,CCKA,IAAIymC,GAAmB,MAEnBC,GAAW,SAAUjG,GACrB,SAASiG,EAAQ5qD,EAASwT,EAAS2B,GAC/BwvC,EAAWzjD,KAAKhD,KAAMsV,GACtBtV,KAAK8B,QAAUA,EACf9B,KAAKiX,KAAOA,EAEZjX,KAAK2sD,kBAC4B,IAA7B3sD,KAAKsV,QAAQs3C,aACb5sD,KAAKyjD,OAAO,IAAIpZ,GAExB,CAqJA,OAnJKoc,IAAaiG,EAAQ3hD,UAAY07C,GACtCiG,EAAQ1oD,UAAY6G,OAAOS,OAAQm7C,GAAcA,EAAWziD,WAC5D0oD,EAAQ1oD,UAAUqH,YAAcqhD,EAEhCA,EAAQ1oD,UAAU2oD,eAAiB,WAC/B,IAAIr3C,EAAUtV,KAAKsV,QACfu3C,EAAO1hD,OAAOnL,KAAK8B,SAASyF,MAAMklD,IAClCK,EAAe,IAAIrC,GAAa,CAAEE,UAAU,EAAMxe,MAAO72B,EAAQ62B,MAAOzB,MAAM,IAC9EqiB,EAAchmC,GAAW,CAAE,EAAGzR,EAAS,CAAEkgC,QAAS,EAAGp6C,UAAW,OAEpE4E,KAAKkiB,UAAY4qC,EACjB9sD,KAAK6rB,OAAOihC,GAEZ,IAAK,IAAIE,EAAS,EAAGA,EAASH,EAAKzyD,OAAQ4yD,IAAU,CACjD,IAAI9zD,EAAO,IAAIozD,GAAKO,EAAKG,GAAQj9B,OAAQg9B,GACzCD,EAAajhC,OAAO3yB,EACxB,CACJ,EAEAwzD,EAAQ1oD,UAAUy/C,OAAS,SAAiB9Y,GACxC,IAAIr1B,EAAUtV,KAAKsV,QACf23C,EAAW33C,EAAQmvC,OAGvB,GAFAzkD,KAAKkiB,UAAU5M,QAAQ62B,MAAQ72B,EAAQ62B,MAEnC8gB,IAAajtD,KAAKktD,WAAY,CAC9B,IAAIC,EAAYxiB,EACXwiB,EAAUjhB,YACXlsC,KAAKktD,YAAa,EAClBltD,KAAKyjD,OAAO0J,GACZntD,KAAKktD,YAAa,EAClBC,EAAYntD,KAAKiwB,KAErB,IAAIw0B,EAASzkD,KAAKykD,OAASwI,EAASjtD,KAAKotD,cAAcD,IAEnD1I,IACA0I,EAAYX,GAAU/H,EAAOhP,eAAiB,IAAIxJ,IAElDwY,EAAOnvC,QAAQsvC,OAAStvC,EAAQsvC,QAGpC5kD,KAAKiwB,IAAMjwB,KAAKinD,WAAajnD,KAAKgnD,WAAamG,CACnD,MAGI,GAFA1G,EAAWziD,UAAUy/C,OAAOzgD,KAAKhD,KAAM2qC,GAEnCr1B,EAAQo2B,SAAU,CAClB,IAAIpwC,EAASksB,GAAWlS,EAAQha,QAC5B20B,EAAMjwB,KAAKiwB,IAAIqb,MAAMhwC,GAEzB0E,KAAK2qC,UAAYA,EACjB3qC,KAAKqtD,UAAYp9B,EAAIpJ,SAErBoJ,EAAMjwB,KAAK4xB,UACPjM,UAAUrqB,EAAOwsB,KAAOxsB,EAAOssB,MAAOtsB,EAAOqsB,IAAMrsB,EAAOusB,QAE9D7nB,KAAKstD,WAAar9B,EAAIpJ,QAEtBoJ,EAAIgR,IAAI3lC,EACZ,CAER,EAEAoxD,EAAQ1oD,UAAUogD,aAAe,WAC7B,IAAI9uC,EAAUtV,KAAKsV,QAQnB,GANAtV,KAAKykD,OAAS,IAAItE,GAAW,CACzB7tB,UAAWtyB,KAAKutD,oBAChB3I,OAAQtvC,EAAQsvC,OAChBE,OAAQxvC,EAAQwvC,SAGhB9kD,KAAKknD,SAAU,CACf,IAAIj3B,EAAMkwB,GAAAA,SAAmBngD,KAAKgnD,WAAWhb,SAAUhsC,KAAKonD,eAC5DpnD,KAAKykD,OAAO54B,OAAOoE,EACvB,CACJ,EAEAy8B,EAAQ1oD,UAAUmgD,aAAe,WAC7B,GAAKnkD,KAAKsV,QAAQvhB,QAIlB,GAAIiM,KAAKsV,QAAQmvC,OAAQ,CACrB,IAAIA,EAASzkD,KAAKykD,OACdA,IAAWt/B,GAAQs/B,EAAOnvC,QAAQwvC,UAClCL,EAAOnvC,QAAQwvC,OAAS9kD,KAAKsV,QAAQwvC,QAEzC9kD,KAAKqkD,YACLrkD,KAAKukD,iBACT,MACIkC,EAAWziD,UAAUmgD,aAAanhD,KAAKhD,KAE/C,EAEA0sD,EAAQ1oD,UAAUopD,cAAgB,SAAwBziB,GACtD,IAAInJ,EAASxhC,KAET8C,EAAU,CACV5J,KAAM8G,KAAK8B,QACX49C,KAAM/U,EAAUqB,SAChB+X,OAAQ/jD,KAAK4jD,YACbtuC,QAAStV,KAAKsV,QACd8uC,aAAc,WAIV,OAHA5iB,EAAO0rB,YAAa,EACpB1rB,EAAOiiB,OAAO9Y,GACdnJ,EAAO0rB,YAAa,EACb1rB,EAAOgsB,kBAClB,GAMJ,OAJIxtD,KAAKiX,MACLpM,OAAOW,OAAO1I,EAAS9C,KAAKiX,MAGzBnU,CACX,EAEA4pD,EAAQ1oD,UAAUwpD,iBAAmB,WACjCxtD,KAAKokD,eACLpkD,KAAKskD,iBACL,IAAIG,EAASzkD,KAAKykD,OAElB,cADOzkD,KAAKykD,OACLA,CACX,EAEAiI,EAAQ1oD,UAAU4tB,OAAS,WACvB,IAAItc,EAAUtV,KAAKsV,QAInB,OAHAtV,KAAKiwB,IAAI2B,OAAOtc,EAAQo2B,UACxB1rC,KAAKmsC,MAAMnsC,KAAK2qC,UAAW5lB,EAAGzP,EAAQ62B,OACtCnsC,KAAKmsC,MAAMnsC,KAAK2qC,UAAW3lB,EAAG1P,EAAQyxC,QAC/B/mD,KAAKiwB,GAChB,EAEAy8B,EAAQ1oD,UAAUupD,kBAAoB,WAClC,IAAI7hB,EAAW1rC,KAAKsV,QAAQo2B,SAC5B,IAAKA,EACD,OAAO,KAGX,IAAIn5C,EAAMyN,KAAKqtD,UAAUloB,SACrBI,EAAKhzC,EAAIwzB,EACTyf,EAAKjzC,EAAIyzB,EACTynC,EAAYztD,KAAKstD,WAAWnoB,SAEhC,OAAO8G,KACKtmB,UAAU8nC,EAAU1nC,EAAIwf,EAAIkoB,EAAUznC,EAAIwf,GAC1C5T,OAAO8Z,EAAU,CAAEnG,EAAIC,GACvC,EAEOknB,CACX,CAhKe,CAgKbjG,IAEF,MC1KIiH,GAAS,SAAUnK,GACnB,SAASmK,EAAMp4C,GACXiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAK2tD,SAAW,IAAIjB,GAAQ1sD,KAAKsV,QAAQpc,KAAM2R,OAAOW,OAAO,CAAC,EAAGxL,KAAKsV,QAAS,CAC3EyxC,OAAQ/mD,KAAKsV,QAAQunC,YAGzB78C,KAAK6rB,OAAO7rB,KAAK2tD,SACrB,CAwCA,OAtCKpK,IAAemK,EAAM3iD,UAAYw4C,GACtCmK,EAAM1pD,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAC9D0pD,EAAM1pD,UAAUqH,YAAcqiD,EAE9BA,EAAM1pD,UAAUy/C,OAAS,SAAiB9Y,GACtC4Y,EAAav/C,UAAUy/C,OAAOzgD,KAAKhD,KAAM2qC,GACzC3qC,KAAKiwB,IAAI6a,OAAOH,EAAW5lB,EAC/B,EAEA2oC,EAAME,WAAa,SAAqBt4C,EAASu4C,GAC7C,IAQIt5D,EARAu5D,EAAex4C,EAanB,MAXuB,kBAAZA,IACPw4C,EAAe,CAAE50D,KAAMoc,KAG3Bw4C,EAAejjD,OAAOW,OAAO,CAAEzX,SAAS,GAAQ85D,EAAgBC,KAG5CA,EAAa/5D,SAAW+5D,EAAa50D,OACrD3E,EAAQ,IAAIm5D,EAAMI,IAGfv5D,CACX,EAEAm5D,EAAMK,YAAc,SAAsBC,GACtC,IAAI9M,EAAQ,GAAG/4C,OAAO6lD,GAClBrmC,EAAMu5B,EAAMne,QAAO,SAAU9M,GAAQ,OAAOA,GAAQA,EAAK3gB,QAAQunC,WAAat5B,CAAQ,IACtFsE,EAASq5B,EAAMne,QAAO,SAAU9M,GAAQ,OAAOA,GAAQA,EAAK3gB,QAAQunC,WAAat5B,CAAQ,IAM7F,OAJA0qC,GAAwBtmC,GACxBsmC,GAAwBpmC,GAExBA,EAAOqmC,UACAvmC,EAAIxf,OAAO0f,EACtB,EAEO6lC,CACX,CAlDa,CAkDXnK,IAEF,SAAS0K,GAAwB/M,GAC7B,IAAK,IAAIx1C,EAAI,EAAGA,EAAIw1C,EAAM9mD,OAAQsR,IAAK,CACnC,IAAIukB,EAAMixB,EAAMx1C,GAAGiiD,SACfQ,EAAUjN,EAAMx1C,EAAI,GAAGiiD,SAC3BQ,EAAQ74C,QAAQha,OAASuP,OAAOW,OAAOgc,GAAW2mC,EAAQ74C,QAAQha,QAAS,CAAEusB,OAAQ,IACrFoI,EAAI3a,QAAQha,OAASuP,OAAOW,OAAOgc,GAAWyI,EAAI3a,QAAQha,QAAS,CAAEqsB,IAAK,GAC9E,CACJ,CAEAgO,GAAkB+3B,GAAO,CACrBl/B,MAAOlL,EACPu5B,SAAUl4B,EACVwnB,MAAO3oB,EACPloB,OAAQksB,GAAW,GACnB6jB,QAAS7jB,GAAW,KAGxB,UChEI4mC,GAAa,SAAU1B,GACvB,SAAS0B,EAAUjxD,EAAOjE,EAAMoB,EAAO0rD,EAAU1wC,GAC7Co3C,EAAQ1pD,KAAKhD,KAAM9G,EAAMoc,GAEzBtV,KAAK9G,KAAOA,EACZ8G,KAAK7C,MAAQA,EACb6C,KAAK1F,MAAQA,EACb0F,KAAKgmD,SAAWA,EAChBhmD,KAAKyjD,OAAO,IAAIpZ,GACpB,CA+FA,OA7FKqiB,IAAU0B,EAAUrjD,UAAY2hD,GACrC0B,EAAUpqD,UAAY6G,OAAOS,OAAQohD,GAAWA,EAAQ1oD,WACxDoqD,EAAUpqD,UAAUqH,YAAc+iD,EAElCA,EAAUpqD,UAAUopD,cAAgB,SAAwBziB,GACxD,IAAI7nC,EAAU4pD,EAAQ1oD,UAAUopD,cAAcpqD,KAAKhD,KAAM2qC,GAOzD,OALA7nC,EAAQ3F,MAAQ6C,KAAK7C,MACrB2F,EAAQkjD,SAAWhmD,KAAKgmD,SACxBljD,EAAQqe,OAASnhB,KAAKsV,QAAQ6L,OAC9Bre,EAAQurD,QAAUruD,KAAKsV,QAAQ+4C,QAExBvrD,CACX,EAEAsrD,EAAUpqD,UAAUyb,MAAQ,SAAgB6uC,EAAQt7D,GAEhDs7D,EAAOvkC,Q/ItCe,iB+IsCW,CAC7Bv2B,QAAS46B,GAAap7B,GACtBmK,MAAO6C,KAAK7C,MACZjE,KAAM8G,KAAK9G,KACXoB,MAAO0F,KAAK1F,MACZ0rD,SAAUhmD,KAAKgmD,SACfjb,KAAM/qC,KAAK4yB,OAAOtd,SAE1B,EAEA84C,EAAUpqD,UAAU4tB,OAAS,WACzB,GAAI5xB,KAAKsV,QAAQi5C,gBAAkB/qC,EAAQ,CACvC,IAAIyM,EAAMjwB,KAAKqtD,UAAUrhB,SACrB1Z,EAAYtyB,KAAKutD,oBAErBvtD,KAAKiwB,IAAMu8B,GAAUv8B,EAAIoZ,KAAK/W,EAAUnB,UAC5C,MACIu7B,EAAQ1oD,UAAU4tB,OAAO5uB,KAAKhD,MAGlC,OAAOA,KAAKiwB,GAChB,EAEAm+B,EAAUpqD,UAAUupD,kBAAoB,WACpC,IAAIj4C,EAAUtV,KAAKsV,QACfo2B,EAAWp2B,EAAQo2B,SACvB,IAAKA,EACD,OAAO,KAGX,GAAIp2B,EAAQi5C,gBAAkB/qC,EAC1B,OAAOkpC,EAAQ1oD,UAAUupD,kBAAkBvqD,KAAKhD,MAGpD,IAAIwuD,EAAiBviB,KAAiBra,OAAO8Z,GAAUva,SACnDlB,EAAMjwB,KAAKqtD,UAAUrhB,SACrB0T,EAAO1/C,KAAK2qC,UAAUqB,SAEtByiB,EAAiBn5C,EAAQm5C,gBAAkB9pC,EAC3C+pC,EAAYD,IAAmB9pC,GAAO8pC,IAAmBlrC,EAASwB,EAAIC,EACtE2pC,EAAeF,IAAmB9pC,GAAO8pC,IAAmBlrC,EAASyB,EAAID,EACzE6pC,EAAaH,IAAmB9pC,GAAO8pC,IAAmBxqC,EAAOy7B,EAAKnY,OAASmY,EAAKxW,cAEpFD,EAAUhZ,EAAIgZ,UAAUrB,cAAc4mB,GACtCrlB,EAAWlZ,EAAIkZ,WAAWvB,cAAc4mB,GACxCtlB,EAAcjZ,EAAIiZ,cAActB,cAAc4mB,GAC9CplB,EAAanZ,EAAImZ,aAAaxB,cAAc4mB,GAC5ClB,EAAarhB,GAAAA,WAAqBhD,EAASE,EAAUD,EAAaE,GAElEzjB,EAAY,CAAC,EACjBA,EAAUgpC,GAAgBjP,EAAKnY,OAAOonB,GAAgBrB,EAAW/lB,OAAOonB,GAExE,IAGIhD,EAAYkD,EAHZC,EAAehuC,KAAKC,IAAIkoB,EAAQ0lB,GAAgBhpC,EAAUgpC,GAAgBC,EAAWD,IACrFI,EAAgBjuC,KAAKC,IAAIooB,EAASwlB,GAAgBhpC,EAAUgpC,GAAgBC,EAAWD,IAIvF3tC,GAAM8tC,EAAcjrC,KAAuB7C,GAAM+tC,EAAelrC,IAChE8nC,EAAa1iB,EACb4lB,EAAW1lB,GACJ4lB,EAAgBD,GACvBnD,EAAaxiB,EACb0lB,EAAW3lB,IAEXyiB,EAAa1iB,EACb4lB,EAAWzlB,GAGf,IAAI4lB,EAAcrD,EAAW+C,IAAcG,EAASH,GAAa/C,EAAW+C,IAAc,EAG1F,OAFA/oC,EAAU+oC,GAAahP,EAAKva,SAASupB,GAAaM,EAE3C/iB,KACFtmB,UAAUA,EAAUI,EAAGJ,EAAUK,GACjC4L,OAAO8Z,EAChB,EAEO0iB,CACX,CAzGiB,CAyGf1B,IAEF/2B,GAAkBy4B,GAAW,CACzBxB,aAAa,IAGjB,UC7GIqC,GAAQ,SAAUxI,GAClB,SAASwI,EAAKzmC,EAAQlT,EAAS0uC,GAC3ByC,EAAWzjD,KAAKhD,KAAMsV,GAEtBtV,KAAKwoB,OAASA,EACdxoB,KAAKgkD,aAAeA,EAEpBhkD,KAAK5G,QACT,CAsPA,OApPKqtD,IAAawI,EAAKlkD,UAAY07C,GACnCwI,EAAKjrD,UAAY6G,OAAOS,OAAQm7C,GAAcA,EAAWziD,WACzDirD,EAAKjrD,UAAUqH,YAAc4jD,EAE7BA,EAAKjrD,UAAU7N,KAAO,WAClB6J,KAAKsV,QAAQvhB,SAAU,CAC3B,EAEAk7D,EAAKjrD,UAAU3L,KAAO,WAClB2H,KAAKsV,QAAQvhB,SAAU,CAC3B,EAEAk7D,EAAKjrD,UAAU5K,OAAS,WACpB,IAAIooC,EAASxhC,KAETsV,EAAUtV,KAAKsV,QAEnB,GAAIA,EAAQvhB,QAAS,CACjB,IAMIS,EAAOC,EANPy6D,EAAQ55C,EAAQ45C,MAChBn9C,EAAOuD,EAAQvD,KACfke,EAAM,IAAIoa,GACV8kB,EAAa,WAAc,OAAO3tB,CAAQ,EAC1C5qC,EAAOmb,EAAKnb,KACZsC,EAAO8G,KAAKwoB,OAAOtvB,KAGvB,GAAIisB,GAAQ+pC,IAAUA,EAAMn7D,QAAS,CACjC,IAAIq7D,EAAehnC,GAAY8mC,GAC3BE,EACAl2D,EAAOk2D,EAAapvD,KAAKwoB,QAClB0mC,EAAM/tC,SACbjoB,EAAO8G,KAAKgkD,aAAa7iC,OAAOkuC,KAAKH,EAAM/tC,OAAQjoB,IAGlDg2D,EAAM1gC,QACP0gC,EAAM1gC,MAAQ0gC,EAAMrS,WAAa74B,EA/C3B,OA+C0DjS,EAAKo1C,YAGzEnnD,KAAKkvD,MAAQ,IAAIxC,GAAQxzD,EAAM6tB,GAAW,CAAC,EAAGmoC,IAC9ClvD,KAAKkvD,MAAMI,SAAWH,EAElBD,EAAMrS,WAAa74B,GAAWmB,GAAQvuB,KAClCmb,EAAK5e,OAASswB,EACd7sB,EAAOkqB,KAAK0K,IAAIxrB,KAAKkvD,MAAMj/B,IAAIz7B,QAASwL,KAAKkvD,MAAMj/B,IAAIx7B,WAEvDD,EAAQwL,KAAKkvD,MAAMj/B,IAAIz7B,QACvBC,EAASuL,KAAKkvD,MAAMj/B,IAAIx7B,UAE5Bw7B,EAAIya,KAAK1qC,KAAKkvD,MAAMj/B,KAE5B,CAEAle,EAAKvd,MAAQA,GAASoC,GAjEV,EAkEZmb,EAAKtd,OAASA,GAAUmC,GAlEZ,EAoEZ,IAAIm+B,EAAS,IAAIwyB,GAAaxgC,GAAW,CAAC,EAAGhV,IAC7CgjB,EAAOu6B,SAAWH,EAElBnvD,KAAK+0B,OAASA,EACd/0B,KAAK6rB,OAAOkJ,GAER/0B,KAAKkvD,OACLlvD,KAAK6rB,OAAO7rB,KAAKkvD,OAGrBn6B,EAAO0uB,OAAO,IAAIpZ,IAClBrqC,KAAKuvD,WAAat/B,EAAIya,KAAK3V,EAAO9E,IACtC,CACJ,EAEAg/B,EAAKjrD,UAAUy/C,OAAS,SAAiB9Y,GACrC,IAWQ6kB,EAAWv/B,EAAKg3B,EAXpB10D,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACd45C,EAAQ38D,EAAI28D,MACZn6B,EAASxiC,EAAIwiC,OACbw6B,EAAah9D,EAAIg9D,WACjBpqB,EAASwF,EAAUxF,SACnB/qC,EAASkb,EAAQm6C,KAAKr1D,OACtByiD,EAAWvnC,EAAQunC,SAGnBvnC,EAAQvhB,UAGJm1B,GAAQ2zB,EAAU,CAAE54B,EAAMO,IACtBq4B,IAAa54B,GACbgjC,EAAasI,EAAWvkB,QAAQL,EAAWkS,GAAUl3B,WAAWvrB,EAAQuwC,EAAUxF,SAASnf,EAAIupC,EAAWpqB,SAASnf,GAE/G1Q,EAAQm6C,KAAK17D,UACby7D,EAAY,CAAE7kB,EAAUL,GAAInF,EAAOnf,GACnChmB,KAAK0vD,WAAa,CACdF,EACA,CAAEvI,EAAWzc,GAAIrF,EAAOnf,IAE5BiK,EAAMg3B,EAAWpgC,QAAQ+jB,UAAU4kB,MAGvCvI,EAAasI,EAAWvkB,QAAQL,EAAWkS,GAAUl3B,UAAUvrB,EAAQuwC,EAAUxF,SAASnf,EAAIupC,EAAWpqB,SAASnf,GAE9G1Q,EAAQm6C,KAAK17D,UACby7D,EAAY,CAAE7kB,EAAUH,GAAIrF,EAAOnf,GACnChmB,KAAK0vD,WAAa,CACdF,EACA,CAAEvI,EAAW3c,GAAInF,EAAOnf,IAE5BiK,EAAMg3B,EAAWpgC,QAAQ+jB,UAAU4kB,KAIvC3S,IAAat5B,GACb0jC,EAAasI,EAAWvkB,QAAQL,EAAWkS,GAAUl3B,UAAUglB,EAAUxF,SAASpf,EAAIwpC,EAAWpqB,SAASpf,EAAG3rB,GAEzGkb,EAAQm6C,KAAK17D,UACby7D,EAAY,CAAErqB,EAAOpf,EAAG4kB,EAAUF,IAClCzqC,KAAK0vD,WAAa,CACdF,EACA,CAAErqB,EAAOpf,EAAGkhC,EAAW1c,KAE3Bta,EAAMg3B,EAAWpgC,QAAQ+jB,UAAU4kB,MAGvCvI,EAAasI,EAAWvkB,QAAQL,EAAWkS,GAAUl3B,UAAUglB,EAAUxF,SAASpf,EAAIwpC,EAAWpqB,SAASpf,GAAI3rB,GAE1Gkb,EAAQm6C,KAAK17D,UACby7D,EAAY,CAAErqB,EAAOpf,EAAG4kB,EAAUJ,IAClCvqC,KAAK0vD,WAAa,CACdF,EACA,CAAErqB,EAAOpf,EAAGkhC,EAAWxc,KAE3Bxa,EAAMg3B,EAAWpgC,QAAQ+jB,UAAU4kB,KAK3Cz6B,GACAA,EAAO0uB,OAAOwD,GAGdiI,IACAA,EAAMzL,OAAOwD,GACTlyB,IACIzf,EAAQ45C,MAAMrS,WAAat4B,GAC3B2qC,EAAMj/B,IAAI+a,QAAQjW,EAAO9E,IAAK4sB,GAElCqS,EAAMzL,OAAOyL,EAAMj/B,OAI3BjwB,KAAKinD,WAAaA,EAClBjnD,KAAK2qC,UAAYA,EACjB3qC,KAAKiwB,IAAMA,GAAOg3B,EAE1B,EAEAgI,EAAKjrD,UAAUogD,aAAe,WAC1BqC,EAAWziD,UAAUogD,aAAaphD,KAAKhD,MACvCA,KAAKykD,OAAOnvC,QAAQwvC,OAAS9kD,KAAKsV,QAAQwvC,OAEtC9kD,KAAKsV,QAAQvhB,SACbiM,KAAK2vD,YAEb,EAEAV,EAAKjrD,UAAUmgD,aAAe,WAC1B,IAAI3iB,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACfqwC,EAAerwC,EAAQmvC,OACvBnvC,EAAQvhB,SAAW4xD,GACnB3lD,KAAKykD,OAASkB,EAAa96C,OAAOW,OAAOxL,KAAKwoB,OAAQ,CAClDu7B,OAAQ/jD,KAAK4jD,YACblE,KAAM1/C,KAAK2qC,UAAUqB,SACrB12B,QAAS,CACL6xC,WAAY7xC,EAAQ6xC,WACpBN,OAAQvxC,EAAQ6xC,WAChBp1C,KAAMuD,EAAQvD,KACdm9C,MAAO55C,EAAQ45C,MACfO,KAAMn6C,EAAQm6C,KACd5S,SAAUvnC,EAAQunC,SAClB9oD,QAASuhB,EAAQvhB,SAErBqwD,aAAc,WACV5iB,EAAO4iB,eACP5iB,EAAO8iB,iBACP,IAAIsL,EAAgBpuB,EAAOijB,OAE3B,cADOjjB,EAAOijB,OACPmL,CACX,KAEJ5vD,KAAKqkD,aAELoC,EAAWziD,UAAUmgD,aAAanhD,KAAKhD,KAE/C,EAEAivD,EAAKjrD,UAAU2rD,WAAa,WACxB,IAAIr6C,EAAUtV,KAAKsV,QAAQm6C,KAE3B,GAAIzvD,KAAK0vD,WAAY,CACjB,IAAIrqC,EAAO86B,GAAAA,WAAqBngD,KAAK0vD,WAAY,CAC7CnqC,OAAQ,CACJiJ,MAAOlZ,EAAQkZ,MACfh6B,MAAO8gB,EAAQ9gB,MACf6yD,SAAU/xC,EAAQ+xC,YAI1BjiC,EAAiBC,GACjBrlB,KAAKykD,OAAO54B,OAAOxG,EACvB,CACJ,EAEA4pC,EAAKjrD,UAAUyb,MAAQ,SAAgB6uC,EAAQt7D,GAC3C,IAAIgV,EAAOhI,KAAK6vD,UAAU78D,GAErBs7D,EAAOvkC,QhJxNI,YgJwNgB/hB,IAC5BhV,EAAE88D,gBAEV,EAEAb,EAAKjrD,UAAU+rD,KAAO,SAAezB,EAAQt7D,GACzC,IAAIgV,EAAOhI,KAAK6vD,UAAU78D,GAErBs7D,EAAOvkC,QhJ/NI,YgJ+NgB/hB,IAC5BhV,EAAE88D,gBAEV,EAEAb,EAAKjrD,UAAUgsD,IAAM,SAAc1B,EAAQt7D,GACvC,IAAIgV,EAAOhI,KAAK6vD,UAAU78D,GAE1Bs7D,EAAOvkC,QhJtOS,YgJsOW/hB,EAC/B,EAEAinD,EAAKjrD,UAAU6rD,UAAY,SAAoB78D,GAC3C,IAAIsiB,EAAUtV,KAAKsV,QAEnB,OAAOzK,OAAOW,OAAOxL,KAAKwoB,OAAQ,CAC9Bh1B,QAAS46B,GAAap7B,GACtBkG,KAAMisB,GAAQ7P,EAAQ45C,OAAS55C,EAAQ45C,MAAMh2D,KAAO,GACpDurD,OAAQzkD,KAAKykD,QAErB,EAEOwK,CACX,CA/PY,CA+PVxI,IAEF9wB,GAAkBs5B,GAAM,CACpBl9C,KAAM,CACFhe,SAAS,EACTZ,KAAMswB,GAEVyrC,MAAO,CACHrS,SAAU74B,EACVjwB,SAAS,EACTo4C,MAAO3oB,EACPujC,OAAQvjC,GAEZisC,KAAM,CACF17D,SAAS,GAEbA,SAAS,EACT8oD,SAAUl4B,EACVigC,OAAQ,IAGZ,UCvRIrxD,GAVwB,CACxB4tB,OAAQ,SAAUA,EAAQhkB,GAAS,OAAOA,CAAO,EAEjDoD,SAAU,SAAUpD,GAAS,OAAOA,CAAO,EAE3C8yD,UAAW,SAAU9yD,GAAS,OAAO,IAAIsa,KAAKta,EAAQ,EAEtD+yD,SAAU,WAAc,OAAO,CAAG,GAKlCC,GAAc,WAAyB,EAEvC9oB,GAAkB,CAAE+oB,eAAgB,CAAE9jD,cAAc,IAExD6jD,GAAYjoC,SAAW,SAAmBC,GACtC50B,GAAU40B,CACd,EAEAkf,GAAgB+oB,eAAehkD,IAAM,WACjC,OAAO7Y,EACX,EAEAsX,OAAOq4B,iBAAkBitB,GAAa9oB,IAEtC,UCtBIgpB,GAAuB,uBAEvBC,GAAgB,SAAuBC,GACvCvwD,KAAKwwD,aAAeD,CACxB,EAEIztB,GAAqB,CAAE2tB,KAAM,CAAEnkD,cAAc,IAEjDw2B,GAAmB2tB,KAAKrkD,IAAM,WAC1B,OAAOpM,KAAKwwD,cAAgBL,GAAAA,cAChC,EAEArtB,GAAmB2tB,KAAKxnC,IAAM,SAAU9rB,GACpC6C,KAAKwwD,aAAerzD,CACxB,EAEAmzD,GAActsD,UAAUqrD,KAAO,SAAeqB,GAEtC,IADA,IAAI3gD,EAAS,GAAIoa,EAAMpiB,UAAU3N,OAAS,EAClC+vB,KAAQ,GAAIpa,EAAQoa,GAAQpiB,UAAWoiB,EAAM,GAEzD,IAAIsmC,EAAOzwD,KAAKywD,KAEhB,OAAIx6D,GAASy6D,IAAiBA,EAAajoC,MAAM3E,GACtC2sC,EAAKtvC,OAAOjZ,MAAMuoD,EAAM,CAAEC,GAAevoD,OAAQ4H,IAGrD0gD,EAAKlwD,SAASwP,EAAO,GAAI2gD,EACpC,EAEAJ,GAActsD,UAAU2sD,WAAa,SAAqBD,EAAc3gD,EAAQ6gD,GAC5E,IAAIH,EAAOzwD,KAAKywD,KAahB,OAVIx6D,GAASy6D,IAAiBA,EAAajoC,MAAM3E,GACpC4sC,EAAatuD,QAAQiuD,IAAsB,SAAS5nC,EAAOnuB,EAAOu2D,GACvE,IAAI1zD,EAAQ4S,EAAOib,SAAS1wB,EAAO,KAEnC,OAAOm2D,EAAKlwD,SAASpD,EAAO0zD,EAAoBA,EAAkB7pB,UAAU,GAAK,GAAI4pB,EACzF,IAESH,EAAKlwD,SAASwP,EAAO,GAAI2gD,EAAcE,EAIxD,EAEA/lD,OAAOq4B,iBAAkBotB,GAActsD,UAAW8+B,IAElD,UCjDIguB,GAAe,SAAsBC,EAAOjuD,QAC3B,IAAZA,IAAqBA,EAAU,CAAC,GAErC9C,KAAKwwD,aAAe1tD,EAAQytD,YAC5BvwD,KAAK+jD,OAASjhD,EAAQihD,QAAUgN,EAChC/wD,KAAKmhB,OAAS,IAAImvC,GAAcxtD,EAAQytD,aACxCvwD,KAAK+wD,MAAQA,EACb/wD,KAAKgxD,IAAMC,QAAQnuD,EAAQkuD,IAC/B,EAEIluB,GAAqB,CAAE2tB,KAAM,CAAEnkD,cAAc,IAEjDw2B,GAAmB2tB,KAAKrkD,IAAM,WAC1B,OAAOpM,KAAKwwD,cAAgBL,GAAAA,cAChC,EAEArtB,GAAmB2tB,KAAKxnC,IAAM,SAAU9rB,GACpC6C,KAAKwwD,aAAerzD,EACpB6C,KAAKmhB,OAAOsvC,KAAOtzD,CACvB,EAEA2zD,GAAa9sD,UAAUktD,OAAS,SAAiBvgD,EAAM3I,GAC/ChI,KAAK+wD,OACL/wD,KAAK+wD,MAAMhnC,QAAQpZ,EAAM3I,EAEjC,EAEA8oD,GAAa9sD,UAAUmtD,WAAa,SAAqBpmB,GACrD,IAAIqmB,IAAapxD,KAAK+wD,OAAS,CAAC,GAAGz7C,SAAW,CAAC,GAAG87C,SAClD,OAAOA,GAAYA,EAASC,OAAStmB,CACzC,EAEAlgC,OAAOq4B,iBAAkB4tB,GAAa9sD,UAAW8+B,IAEjD,ICrCIvvC,GDqCJ,MCnCI+9D,GAAmB,WAA8B,EAErDA,GAAiBppC,SAAW,SAAmBC,GAC3C50B,GAAU40B,CACd,EAEAmpC,GAAiBhmD,OAAS,SAAiB9X,EAASo8B,GAChD,GAAIr8B,GACA,OAAOA,GAAQ+X,OAAO9X,EAASo8B,EAEvC,EAEA,UCVe,SAAS2hC,GAAej8C,EAASk8C,GAC5C,IAAIC,EAAQn8C,EAAQm8C,MAChBC,EAAQp8C,EAAQo8C,MAChB7U,EAAWvnC,EAAQunC,SAEnB8U,EAAO,IAAIxR,GAAU,CACrB56B,OAAQ,CACJ/wB,MAAOg9D,EAAYh9D,MACnBg6B,MAAOgjC,EAAYhjC,SAc3B,OAVIlZ,EAAQq1C,SACRgH,EAAKvT,OAAOqT,EAAO5U,GACdE,OAAO0U,EAAQD,EAAY56D,KAAMimD,GAEtC8U,EAAKvT,OAAOvB,EAAU6U,GACjB3U,OAAOF,EAAU6U,EAAQF,EAAY56D,MAG9CwuB,EAAiBusC,GAEVA,CACX,CCvBe,SAASC,GAAmBt8C,EAASu8C,GAChD,IAAIrC,EAAYl6C,EAAQk6C,UACpBsC,EAAUx8C,EAAQw8C,QAClBjV,EAAWvnC,EAAQunC,SAEnB4S,EAAO,IAAItP,GAAU,CACrB56B,OAAQ,CACJ/wB,MAAOq9D,EAASr9D,MAChBg6B,MAAOqjC,EAASrjC,MAChB64B,SAAUwK,EAASxK,YAc3B,OAVI/xC,EAAQq1C,SACR8E,EAAKrR,OAAOoR,EAAW3S,GAClBE,OAAO+U,EAASjV,GAErB4S,EAAKrR,OAAOvB,EAAU2S,GACjBzS,OAAOF,EAAUiV,GAG1B1sC,EAAiBqqC,GAEVA,CACX,CCbA,IAAIsC,GAAQ,SAAUxO,GAClB,SAASwO,EAAKz8C,EAAS0uC,QACG,IAAjBA,IAA0BA,EAAe,IAAI8M,IAElDvN,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKgkD,aAAeA,EAEfhkD,KAAKsV,QAAQvhB,UACdiM,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAAS,CACxC08C,OAAQ,CACJj+D,SAAS,GAEb07D,KAAM,CACF17D,SAAS,GAEbuH,OAAQ,EACR22D,cAAe,EACfC,cAAe,KAIvBlyD,KAAKsV,QAAQ68C,WAAaprC,GAAW,CAAC,EAAG,CACrCyH,MAAOxuB,KAAKsV,QAAQm6C,KAAKjhC,MACzBh6B,MAAOwL,KAAKsV,QAAQm6C,KAAKj7D,MACzBT,QAASiM,KAAKsV,QAAQ88C,gBAAkB/tC,GACzCrkB,KAAKsV,QAAQ68C,WAAY,CACxBv7D,KAAMoJ,KAAKsV,QAAQ48C,cACnB/lB,MAAOnsC,KAAKsV,QAAQ88C,gBAGxBpyD,KAAKsV,QAAQ+8C,WAAatrC,GAAW,CAAC,EAAG,CACrCyH,MAAOxuB,KAAKsV,QAAQm6C,KAAKjhC,MACzBh6B,MAAOwL,KAAKsV,QAAQm6C,KAAKj7D,MACzBT,QAASiM,KAAKsV,QAAQg9C,gBAAkBjuC,GACzCrkB,KAAKsV,QAAQ+8C,WAAY,CACxBz7D,KAAMoJ,KAAKsV,QAAQ28C,cACnB9lB,MAAOnsC,KAAKsV,QAAQg9C,gBAGxBtyD,KAAKuyD,aAEAvyD,KAAKsV,QAAQk9C,cACdxyD,KAAKyyD,eAGTzyD,KAAK0yD,cACL1yD,KAAK2yD,aACT,CA02BA,OAx2BKpP,IAAewO,EAAKhnD,UAAYw4C,GACrCwO,EAAK/tD,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAC7D+tD,EAAK/tD,UAAUqH,YAAc0mD,EAE7BA,EAAK/tD,UAAUuuD,WAAa,WAC5B,EAKAR,EAAK/tD,UAAU4uD,YAAc,WACzB,MAAO,CACHjkC,IAAK3uB,KAAKsV,QAAQ08C,OAAOa,KACzBrnC,IAAKxrB,KAAK8yD,cAElB,EAEAf,EAAK/tD,UAAU+uD,uBAAyB,SAAiCC,GACrE,IAAItnB,EAAWsnB,EAAatnB,SAExBzkB,GAASykB,KACTsnB,EAAazE,cAAgB7iB,EAASS,MACtC6mB,EAAatnB,SAAWA,EAAS7Z,MAEzC,EAEAkgC,EAAK/tD,UAAUyuD,aAAe,WAC1B,IAAIjxB,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACf62B,EAAQ72B,EAAQq1C,SAAWnmC,EAAQhB,EACnCwvC,EAAejsC,GAAW,CAAE,EAAGzR,EAAQ08C,OAAQ,CAC/C7lB,MAAOA,EACPyY,OAAQtvC,EAAQsvC,SAEhBhC,EAAO9hC,KAAK0K,IAAI,EAAGwnC,EAAapQ,MAIpC,GAFA5iD,KAAKizD,cAEDD,EAAaj/D,QAAS,CACtBiM,KAAK+yD,uBAAuBC,GACE,SAA1BA,EAAatnB,WACbsnB,EAAatnB,SAAW,EACxBp2B,EAAQ49C,kBAAmB,GAI/B,IADA,IAAIxb,EAAQ13C,KAAK4yD,cACRn+C,EAAMijC,EAAM/oB,IAAKla,EAAMijC,EAAMlsB,IAAK/W,GAAOmuC,EAAM,CACpD,IAAIuQ,EAAe,CAAE74D,MAAOma,EAAKilC,MAAOhC,EAAMlsB,KAC1C0jC,EAAQ1tB,EAAO4xB,gBAAgB3+C,EAAKu+C,EAAcG,GAClDjE,IACA1tB,EAAO3V,OAAOqjC,GACd1tB,EAAOwwB,OAAO5iD,KAAK8/C,GAE3B,CACJ,CACJ,EAEA6C,EAAK/tD,UAAUivD,YAAc,WACzBjzD,KAAKpM,SAAW+0B,GAAK3oB,KAAKpM,UAAU,SAAUwa,GAAS,QAASA,aAAiBggD,GAAY,IAC7FpuD,KAAKgyD,OAAS,EAClB,EAEAD,EAAK/tD,UAAUqvD,WAAa,WACxB,IAAI7xB,EAASxhC,KAETA,KAAKzL,QACLyL,KAAKpM,SAAW+0B,GAAK3oB,KAAKpM,UAAU,SAAUwa,GAAS,OAAOA,IAAUozB,EAAOjtC,KAAO,IACtFyL,KAAKzL,WAAQd,EAErB,EAEAs+D,EAAK/tD,UAAUi/B,MAAQ,WACnBjjC,KAAKizD,cACLjzD,KAAKqzD,YACT,EAEAtB,EAAK/tD,UAAUsvD,QAAU,WACrB,IACIh+C,EADMtV,KACQsV,QACd2a,EAFMjwB,KAEIiwB,IACV06B,EAAWr1C,EAAQq1C,SACnB4I,EAASj+C,EAAQ08C,OAAOuB,OACxBC,EAAQD,EAAStjC,EAAIqa,GAAKra,EAAIua,GAC9BipB,EAAQF,EAAStjC,EAAIwa,GAAKxa,EAAIsa,GAC9BmpB,EAAYp+C,EAAQm6C,KAAKj7D,OAAS,EAEtC,OAAOm2D,EACH,IAAItgB,GAAImpB,EAAOvjC,EAAIsa,GAAIipB,EAAOvjC,EAAIwa,GAAKipB,GACvC,IAAIrpB,GAAIpa,EAAIqa,GAAImpB,EAAOxjC,EAAIua,GAAKkpB,EAAWD,EACnD,EAEA1B,EAAK/tD,UAAU0uD,YAAc,WACzB,IAAIp9C,EAAUtV,KAAKsV,QACfw4C,EAAe/mC,GAAW,CAC1B2kB,SAAUp2B,EAAQq1C,UAAY,GAAK,EACnCzxD,KAAM,GACN0rD,OAAQ,EACR+O,YAAY,GACbr+C,EAAQ/gB,OAEX,GAAIu5D,EAAa/5D,SAAW+5D,EAAa50D,KAAM,CAC3C,IAAI3E,EAAQ,IAAIm4D,GAAQoB,EAAa50D,KAAM40D,GAC3C9tD,KAAK6rB,OAAOt3B,GACZyL,KAAKzL,MAAQA,CACjB,CACJ,EAEAw9D,EAAK/tD,UAAU2uD,YAAc,WACzB,IAAInxB,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACfs+C,EAAQt+C,EAAQs+C,MAChB1S,EAAQ0S,EAAM38C,MAAQ,GAE1BjX,KAAK4zD,MAAQ,GAEb,IAAK,IAAIloD,EAAI,EAAGA,EAAIw1C,EAAM9mD,OAAQsR,IAAK,CACnC,IAAIuqB,EAAOlP,GAAW,CAAC,EAAG6sC,EAAO1S,EAAMx1C,IACvCuqB,EAAK94B,MAAQqkC,EAAOqyB,eAAe59B,EAAK94B,OAExC,IAAI22D,EAAO,IAAI7E,GAAK,CAChB9xD,MAAO84B,EAAK94B,MACZjE,KAAM+8B,EAAKi5B,MAAMh2D,KACjB8sD,SAAU/vB,GACXA,EAAMuL,EAAOwiB,cAEZ8P,EAAKx+C,QAAQvhB,UACToxB,GAAQ2uC,EAAKx+C,QAAQunC,UACjBvnC,EAAQq1C,WAAazhC,GAAQ4qC,EAAKx+C,QAAQunC,SAAU,CAAE54B,EAAMO,IAC5DsvC,EAAKx+C,QAAQunC,SAAWvnC,EAAQ44C,QAAUjqC,EAAOO,EACzClP,EAAQq1C,UAAazhC,GAAQ4qC,EAAKx+C,QAAQunC,SAAU,CAAEl4B,EAAKpB,MACnEuwC,EAAKx+C,QAAQunC,SAAWvnC,EAAQ44C,QAAU3qC,EAASoB,GAGnDrP,EAAQq1C,SACRmJ,EAAKx+C,QAAQunC,SAAWvnC,EAAQ44C,QAAUjqC,EAAOO,EAEjDsvC,EAAKx+C,QAAQunC,SAAWvnC,EAAQ44C,QAAU3qC,EAASoB,EAG3D6c,EAAO3V,OAAOioC,GACdtyB,EAAOoyB,MAAMxkD,KAAK0kD,GAE1B,CACJ,EAEA/B,EAAK/tD,UAAU6vD,eAAiB,SAAyB12D,GACrD,OAAOA,CACX,EAEA40D,EAAK/tD,UAAUmgD,aAAe,WAC1BZ,EAAav/C,UAAUmgD,aAAanhD,KAAKhD,MAEzCA,KAAK+zD,iBACT,EAEAhC,EAAK/tD,UAAUogD,aAAe,WAC1Bb,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAEzCA,KAAK+pD,mBACL/pD,KAAK2vD,YACT,EAEAoC,EAAK/tD,UAAUgwD,gBAAkB,WAC7B,IAAIC,EAAYj0D,KAAKk0D,WAQrB,OAPKD,IACDA,EAAYj0D,KAAKk0D,WAAa,IAAI/T,GAAW,CACzCyE,QAAS,IAEb5kD,KAAK2kD,aAAa3kD,KAAKk0D,aAGpBD,CACX,EAEAlC,EAAK/tD,UAAUmwD,YAAc,SAAsBC,GAC/C,IAAI9+C,EAAUtV,KAAKsV,QACfg+C,EAAUtzD,KAAKszD,UACfC,EAASj+C,EAAQ08C,OAAOuB,OACxBc,EAAY/+C,EAAQ+8C,WAAWt+D,QAAUuhB,EAAQ++C,UAAY,EAC7DC,EAAkB,CAGlB3J,SAAUr1C,EAAQq1C,UAGtB,SAASvxD,EAAOm7D,EAAe/C,EAAagD,GACxC,IAAI9a,EAAQ6a,EAAcn6D,OACtBwoD,EAAO9hC,KAAK0K,IAAI,EAAGgmC,EAAY5O,MAEnC,GAAI4O,EAAYz9D,QACZ,IAAK,IAAI2X,EAAI8lD,EAAYqB,KAAMnnD,EAAIguC,EAAOhuC,GAAKk3C,EACvCz9B,GAAQqvC,IAAc9oD,EAAI8oD,IAAa,IAI3CF,EAAgB7C,MAAQ8B,EAASD,EAAQ9oB,GAAK8oB,EAAQ9oB,GAAKgnB,EAAY56D,KACvE09D,EAAgB5C,MAAQ6B,EAASD,EAAQ/oB,GAAKinB,EAAY56D,KAAO08D,EAAQ/oB,GACzE+pB,EAAgBzX,SAAW0X,EAAc7oD,GAEzC0oD,EAAUvoC,OAAO0lC,GAAe+C,EAAiB9C,IAG7D,CAEAp4D,EAAO4G,KAAKy0D,wBAAyBn/C,EAAQ+8C,YAC7Cj5D,EAAO4G,KAAK00D,wBAAyBp/C,EAAQ68C,WAAYkC,EAAY/+C,EAAQq/C,UACjF,EAEA5C,EAAK/tD,UAAU2rD,WAAa,WACxB,IAAIr6C,EAAUtV,KAAKsV,QACfm6C,EAAOn6C,EAAQm6C,KACf6D,EAAUtzD,KAAKszD,UAEnB,GAAI7D,EAAKj7D,MAAQ,GAAKi7D,EAAK17D,QAAS,CAChC,IAAIsxB,EAAO,IAAI86B,GAAU,CACrB56B,OAAQ,CACJ/wB,MAAOi7D,EAAKj7D,MACZg6B,MAAOihC,EAAKjhC,MACZ64B,SAAUoI,EAAKpI,YAQvBhiC,EAAK+4B,OAAOkV,EAAQhpB,GAAIgpB,EAAQ/oB,IAC3BwS,OAAOuW,EAAQ9oB,GAAI8oB,EAAQ7oB,IAE5Bn1B,EAAQs/C,aACRxvC,EAAiBC,GAGrB,IAAI/H,EAAQtd,KAAK60D,WAAa,IAAI1U,GAClC7iC,EAAMuO,OAAOxG,GAEbrlB,KAAKykD,OAAO54B,OAAOvO,GACnBtd,KAAKm0D,YAAY72C,EACrB,CACJ,EAEAy0C,EAAK/tD,UAAU8wD,kBAAoB,WAC/B,IAAIx/C,EAAUtV,KAAKsV,QACfy/C,EAAW,EAUf,OARIz/C,EAAQ+8C,WAAWt+D,SAAWuhB,EAAQ68C,WAAWp+D,QACjDghE,EAAWj0C,KAAK0K,IAAIlW,EAAQ+8C,WAAWz7D,KAAM0e,EAAQ68C,WAAWv7D,MACzD0e,EAAQ+8C,WAAWt+D,QAC1BghE,EAAWz/C,EAAQ+8C,WAAWz7D,KACvB0e,EAAQ68C,WAAWp+D,UAC1BghE,EAAWz/C,EAAQ68C,WAAWv7D,MAG3Bm+D,CACX,EAEAhD,EAAK/tD,UAAU+lD,iBAAmB,WAC9B,IACIz0C,EADMtV,KACQsV,QACd2a,EAFMjwB,KAEIiwB,IACVk3B,EAAa7xC,EAAQ6xC,WAErBA,IACAnnD,KAAKg1D,gBAAkB7U,GAAAA,SAAmBlwB,EAAI+b,SAAU,CACpD+J,KAAM,CACFvnB,MAAO24B,GAEX5hC,OAAQ,OAGZvlB,KAAKykD,OAAO54B,OAAO7rB,KAAKg1D,iBAEhC,EAEAjD,EAAK/tD,UAAU+vD,gBAAkB,WAC7B,IAAIvyB,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACf2/C,EAAY3/C,EAAQ2/C,WAAa,GACjCtK,EAAWr1C,EAAQq1C,SACnBuK,EAAWl1D,KAAKk1D,SAEpB,GAAyB,IAArBD,EAAU76D,OAAd,CAUA,IANA,IAAIkjB,EAAQtd,KAAKm1D,eAAiB,IAAIhV,GAAW,CAC7CyE,QAAS,IAGTwQ,EAAUzsC,GAAK3oB,KAAKq1D,KAAKC,MAAM,SAAUvqB,GAAQ,OAAOA,EAAKz1B,QAAQq1C,WAAanpB,EAAOlsB,QAAQq1C,QAAU,IAAG,GAEzGl2C,EAAM,EAAGA,EAAMwgD,EAAU76D,OAAQqa,IAAO,CAC7C,IAAIwhB,EAAOg/B,EAAUxgD,GACjB8gD,OAAS,EAASC,OAAS,EAC3BxC,EAAe/8B,EAAKi5B,MACpBA,OAAS,EAyBb,GAvBIvE,GACA4K,GAASH,GAAWF,EAAS1B,OAAOF,UACpCkC,EAAQh0B,EAAOi0B,QAAQx/B,EAAKsN,KAAMtN,EAAK32B,IAAI,KAE3Ci2D,EAAQ/zB,EAAOi0B,QAAQx/B,EAAKsN,KAAMtN,EAAK32B,IAAI,GAC3Ck2D,GAASJ,GAAWF,EAASzB,OAAOH,WAGpCN,IACAA,EAAajM,OAASiM,EAAanW,UAAY54B,EAC/CirC,EAAQ1tB,EAAOk0B,oBACX1C,EACA/8B,EACA,IAAIoU,GACAkrB,EAAMjrB,GACNkrB,EAAMjrB,GACNgrB,EAAM/qB,GACNgrB,EAAM/qB,MAMI,IAAlB8qB,EAAM/gE,SAAoC,IAAnBghE,EAAM/gE,SAAgB,CAC7C,IAAIkhE,EAAW,IAAI1pB,GACf,CAAEspB,EAAMjrB,GAAIkrB,EAAMjrB,IAClB,CAAEgrB,EAAM/gE,QAASghE,EAAM/gE,WAGvB4wB,EAAO86B,GAAAA,SAAmBwV,EAAU,CACpC5f,KAAM,CACFvnB,MAAOyH,EAAKzH,MACZgnB,QAASvf,EAAKuf,SAElBjwB,OAAQ,OAGZjI,EAAMuO,OAAOxG,GACT6pC,GACA5xC,EAAMuO,OAAOqjC,EAErB,CACJ,CAEAlvD,KAAK2kD,aAAarnC,EA1DlB,CA2DJ,EAEAy0C,EAAK/tD,UAAU0xD,oBAAsB,SAA8BxG,EAAOj5B,EAAMhG,GAE5E,IAAsB,IAAlBi/B,EAAMn7D,QACN,OAAO,KAGX,IACI6hE,EADA18D,EAAOg2D,EAAMh2D,KAGjB,GAAIisB,GAAQ+pC,IAAUA,EAAMn7D,QAAS,CACjC,IAAI8hE,EAAgBztC,GAAY8mC,GAC5B2G,EACA38D,EAAO28D,EAAc,CAAE38D,KAAMA,EAAM+8B,KAAMA,IAClCi5B,EAAM/tC,SACbjoB,EAAO8G,KAAKgkD,aAAa7iC,OAAOkuC,KAAKH,EAAM/tC,OAAQjoB,IAGlDg2D,EAAM1gC,QACP0gC,EAAM1gC,MAAQxuB,KAAKsV,QAAQ08C,OAAOxjC,MAE1C,CAMA,OAJAonC,EAAU,IAAIlJ,GAAQxzD,EAAMg2D,IACpBzL,OAAOxzB,GACf2lC,EAAQzR,eAEDyR,EAAQnR,MACnB,EAEAsN,EAAK/tD,UAAU8xD,gBAAkB,SAA0BV,GACvD,IAAI9/C,EAAUtV,KAAKsV,QACfygD,EAAiBzgD,EAAQygD,eACzBC,EAAiB1gD,EAAQ0gD,eACzBrB,EAAYr/C,EAAQq/C,UACpBhK,EAAWr1C,EAAQq1C,SACnBsL,EAAkBb,EAAQ9/C,QAAQm6C,KAAK17D,QACvCsgE,EAAY2B,EAAejiE,QAAUuhB,EAAQ++C,UAAY,EACzDf,EAAU8B,EAAQ9B,UAClB4C,EAAU5C,EAAQ3I,EAAW,KAAO,MACpCwL,EAAc,CACd3G,UAAW8D,EAAQ3I,EAAW,KAAO,MACrCmH,QAASwB,EAAQ3I,EAAW,KAAO,MACnCA,SAAUA,GAEV0H,EAAa,GAEbnwC,EAAYliB,KAAKg0D,kBAErB,SAAS56D,EAAOm7D,EAAe1C,EAAU2C,GACrC,IAAI9a,EAAQ6a,EAAcn6D,OACtBwoD,EAAO9hC,KAAK0K,IAAI,EAAGqmC,EAASjP,MAEhC,GAAIiP,EAAS99D,QACT,IAAK,IAAI2X,EAAImmD,EAASgB,KAAMnnD,EAAIguC,EAAOhuC,GAAKk3C,EAAM,CAC9C,IAAIrtC,EAAMyL,GAAMuzC,EAAc7oD,IACzBwd,GAAQ3T,EAAK88C,IACV3mD,EAAI8oD,IAAa,GAAOyB,GAAmBC,IAAY3gD,IACvD4gD,EAAYtZ,SAAWtnC,EACvB2M,EAAU2J,OAAO+lC,GAAmBuE,EAAatE,IAEjDQ,EAAWjjD,KAAKmG,GAG5B,CAER,CAKA,OAHAnc,EAAO4G,KAAKy0D,wBAAyBuB,GACrC58D,EAAO4G,KAAK00D,wBAAyBqB,EAAgB1B,EAAYM,GAE1DzyC,EAAUtuB,QACrB,EAEAm+D,EAAK/tD,UAAUy/C,OAAS,SAAiBxzB,GAcrC,IAbA,IAAI19B,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACd08C,EAASz/D,EAAIy/D,OACbz9D,EAAQhC,EAAIgC,MACZo2D,EAAWr1C,EAAQq1C,SACnBjR,EAAQsY,EAAO53D,OACfg8D,EAASzL,EAAW7lC,EAAQf,EAC5BsyC,EAAY9hE,EAAQA,EAAM07B,IAAImmC,KAAY,EAC1CE,EAAQt2D,KAAK80D,oBAAsBx/C,EAAQha,OAAS+6D,EAEpDE,IADWv2D,KAAK2jD,WAAa,CAAC,GAAG1zB,KAAOA,GACtBmmC,KAClBI,EAAe,EAEV9qD,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAI+qD,EAAYzE,EAAOtmD,GAAGukB,IAAImmC,KAC1BK,EAAYH,GAASC,IACrBC,EAAe11C,KAAK0K,IAAIgrC,EAAcC,GAE9C,CAGIz2D,KAAKiwB,IADL06B,EACW,IAAItgB,GACXpa,EAAIqa,GAAIra,EAAIsa,GACZta,EAAIqa,GAAKksB,EAAeF,EAAOrmC,EAAIwa,IAG5B,IAAIJ,GACXpa,EAAIqa,GAAIra,EAAIsa,GACZta,EAAIua,GAAIva,EAAIsa,GAAKisB,EAAeF,GAIxCt2D,KAAK02D,eACL12D,KAAK22D,gBACL32D,KAAK42D,cACT,EAEA7E,EAAK/tD,UAAU6yD,uBAAyB,WACpC,OAAO72D,KAAKy0D,uBAChB,EAEA1C,EAAK/tD,UAAU8yD,eAAiB,SAAyB5H,GACrD,OAAOA,EAAM50D,KACjB,EAEAy3D,EAAK/tD,UAAU2yD,cAAgB,WAW3B,IAVA,IAGIrhD,EADMtV,KACQsV,QACd08C,EAFMhyD,KAEOgyD,OACb+E,EAAqB/2D,KAAK+2D,qBAC1BpM,EAAWr1C,EAAQq1C,SACnB4I,EAASj+C,EAAQ08C,OAAOuB,OACxBgB,EAAgBv0D,KAAK62D,yBAEhBpiD,EAAM,EAAGA,EAAMu9C,EAAO53D,OAAQqa,IAAO,CAC1C,IAAIy6C,EAAQ8C,EAAOv9C,GACfuiD,EAZKh3D,KAYW82D,eAAe5H,GAC/BuH,EAAY9L,EAAWuE,EAAMj/B,IAAIx7B,SAAWy6D,EAAMj/B,IAAIz7B,QACtDyiE,EAAoB1C,EAAcyC,GAClCE,EAAmB3C,EAAcyC,EAAS,GAC1CG,OAAiB,EAASC,OAAe,EAE7C,GAAIzM,EAAU,CACV,GAAIoM,EAEAI,EADaF,GAAqBC,EAAmBD,GAAqB,EAChDR,EAAY,OAEtCU,EAAgBF,EAAqBR,EAAY,EAGrDW,EAAcD,CAClB,MACQJ,GACAI,EAAgBF,EAChBG,EAAcF,GAGdE,GADAD,EAAgBF,EAAqBR,EAAY,GACnBA,EAjC7Bz2D,KAqCFq3D,cAAcnI,EAAOqE,EAAQ4D,EAAeC,EACvD,CACJ,EAEArF,EAAK/tD,UAAUqzD,cAAgB,SAAwBnI,EAAOqE,EAAQ4D,EAAeC,QAC5D,IAAhBA,IAAyBA,EAAcD,GAE5C,IAIIG,EAJAhiD,EAAUtV,KAAKsV,QACfq1C,EAAWr1C,EAAQq1C,SACnB2I,EAAUtzD,KAAKszD,UACfiE,EAAcv3D,KAAK80D,oBAAsBx/C,EAAQha,OAGrD,GAAIqvD,EAAU,CACV,IAAI6M,EAASlE,EAAQ9oB,GAEjB+oB,GACAiE,GAAUD,EACVrI,EAAM55C,QAAQm5C,eAAiBxqC,IAE/BuzC,GAAUD,EAAcrI,EAAMj/B,IAAIz7B,QAClC06D,EAAM55C,QAAQm5C,eAAiBjqC,GAGnC8yC,EAAWpI,EAAMj/B,IAAIyX,KAAK8vB,EAAQL,EACtC,KAAO,CACH,IAAIM,EAASnE,EAAQ/oB,GAEjBgpB,GACAkE,GAAUF,EAAcrI,EAAMj/B,IAAIx7B,SAClCy6D,EAAM55C,QAAQm5C,eAAiBlrC,IAE/Bk0C,GAAUF,EACVrI,EAAM55C,QAAQm5C,eAAiB9pC,GAGnC2yC,EAAW,IAAIjtB,GACX8sB,EAAeM,EACfL,EAAaK,EAASvI,EAAMj/B,IAAIx7B,SAExC,CAEAy6D,EAAMzL,OAAO6T,EACjB,EAEAvF,EAAK/tD,UAAU0zD,qBAAuB,SAA+BJ,EAAUK,GAC3E,OAAIL,EAAS9iE,QAAUmjE,EACZ,EAGPL,EAAS7iE,SAAWkjE,GACZ,IAGJ,EACZ,EAEA5F,EAAK/tD,UAAUkvD,iBAAmB,WAG9B,IAAKlzD,KAAKsV,QAAQ49C,kBAAoBlzD,KAAKsV,QAAQq1C,SAC/C,OAAO,EAQX,IALA,IAAI4J,EAAgBv0D,KAAKy0D,wBACrBzC,EAAShyD,KAAKgyD,OACd4F,EAAQ92C,KAAK6N,IAAIqjC,EAAO53D,OAAQm6D,EAAcn6D,OAAS,GACvDy3B,EAAQ,EAEHpd,EAAM,EAAGA,EAAMmjD,EAAOnjD,IAAO,CAClC,IAAIjgB,EAAQssB,KAAKC,IAAIwzC,EAAc9/C,EAAM,GAAK8/C,EAAc9/C,IACxD6iD,EAAWtF,EAAOv9C,GAAKwb,IACvB4nC,EAdK73D,KAce03D,qBAAqBJ,EAAU9iE,GAMvD,GAJmB,IAAfqjE,IACAhmC,EAAQgmC,IAGG,KAAXhmC,EACA,KAER,CAEA,GAAc,IAAVA,EAAa,CACb,IAAK,IAAIimC,EAAQ,EAAGA,EAAQ9F,EAAO53D,OAAQ09D,IACvC9F,EAAO8F,GAAOxiD,QAAQo2B,SAAW7Z,EACjCmgC,EAAO8F,GAAOrU,OAAO,IAAIpZ,IAG7B,OAAO,CACX,CACJ,EAEA0nB,EAAK/tD,UAAU0yD,aAAe,WAC1B,IACIphD,EADMtV,KACQsV,QACd/gB,EAFMyL,KAEMzL,MACZg/D,EAASj+C,EAAQ08C,OAAOuB,OACxB5I,EAAWr1C,EAAQq1C,SAEnBp2D,IACIo2D,GACAp2D,EAAM+gB,QAAQ62B,MAAQonB,EAAS/uC,EAAQP,EACvC1vB,EAAM+gB,QAAQyxC,OAASxyD,EAAM+gB,QAAQunC,WAErCtoD,EAAM+gB,QAAQ62B,MAAQ53C,EAAM+gB,QAAQunC,SACpCtoD,EAAM+gB,QAAQyxC,OAASwM,EAAS5uC,EAAMpB,GAG1ChvB,EAAMkvD,OAAOzjD,KAAKiwB,KAE1B,EAEA8hC,EAAK/tD,UAAU4yD,aAAe,WAG1B,IAFA,IAAIp1B,EAASxhC,KAEJyU,EAAM,EAAGA,EAAMzU,KAAK4zD,MAAMx5D,OAAQqa,IAAO,CAC9C,IAAIwhB,EAAOuL,EAAOoyB,MAAMn/C,GACpBtX,EAAQ84B,EAAK3gB,QAAQnY,MACrB46D,OAAQ,EAER5yC,GAAQhoB,IACJqkC,EAAOw2B,iBAAiB76D,GACxB84B,EAAK59B,OAEL49B,EAAK9/B,OAGT4hE,EAAOv2B,EAAOy2B,SAAS96D,IAEvB84B,EAAK9/B,OAGT8/B,EAAKwtB,OAAOsU,GAAQv2B,EAAO8xB,UAC/B,CACJ,EAEAvB,EAAK/tD,UAAUi0D,SAAW,SAAmB96D,GACzC,OAAO6C,KAAKy1D,QAAQt4D,EACxB,EAEA40D,EAAK/tD,UAAUgnC,QAAU,SAAkBktB,GACvC,IAAI5E,EAAU4E,EAAW5E,UACrB3I,EAAW3qD,KAAKsV,QAAQq1C,SACxBp1C,EAAMo1C,EAAW3lC,EAAID,EAEzB/kB,KAAKiwB,IAAI6a,OAAOwoB,EAAS/9C,GACrBo1C,EACA3qD,KAAKiwB,IAAIib,OAAO,EAAGlrC,KAAKszD,UAAU7+D,SAAW6+D,EAAQ7+D,UAErDuL,KAAKiwB,IAAIib,OAAOlrC,KAAKszD,UAAU9+D,QAAU8+D,EAAQ9+D,QAAS,GAE9DwL,KAAKiwB,IAAI1a,EAAM,IAAMvV,KAAKszD,UAAU/9C,EAAM,GAAK+9C,EAAQ/9C,EAAM,GAC7DvV,KAAKiwB,IAAI1a,EAAM,IAAMvV,KAAKszD,UAAU/9C,EAAM,GAAK+9C,EAAQ/9C,EAAM,EACjE,EAEAw8C,EAAK/tD,UAAUm0D,cAAgB,SAAwBh7D,EAAOmY,EAASxS,GACnE,IAEI5J,EAFAsoC,EAASxhC,KAGTo4D,EAAOhwC,GAAY9S,GACnB+iD,EAAc,WACd,OAAK/iD,EAAQ6L,OAINqgB,EAAOwiB,aAAa7iC,OAAOwvC,WAC9Br7C,EAAQ6L,OAAQ,CAAEhkB,GAASmY,EAAQ+4C,SAJ5BlxD,CAMf,EAEIi7D,EAQAl/D,EAAOk/D,EAPevtD,OAAOW,OAAO,CAAC,EAAG1I,EAAS,CACzC5J,WAAS,OAAOm/D,GAAe,EACnCl7D,MAAOA,EACPgkB,OAAQ7L,EAAQ6L,OAChBktC,QAAS/4C,EAAQ+4C,WAKrBn1D,EAAOm/D,IAGX,OAAOn/D,CACX,EAEA64D,EAAK/tD,UAAU+zD,KAAO,SAAex0B,EAAOjkC,EAAIs4D,GAC5C,IAAIG,EAAO/3D,KAAKy1D,QAAQlyB,EAAMjkC,EAAIs4D,GAClC,GAAIG,EACA,OAAOA,EAAK/rB,QAEpB,EAEA+lB,EAAK/tD,UAAUijD,WAAa,WACxB,IAAIh3B,EAAMjwB,KAAKiwB,IAAIpJ,QACfmrC,EAAShyD,KAAKgyD,OAClB,GAAIA,EAAO53D,OAAQ,CACf,IAAI2wC,EAAO/qC,KAAKsV,QAAQq1C,SAAW3lC,EAAID,EACvC,GAAI/kB,KAAKgkD,aAAamN,WAAWpmB,GAAO,CACpC,IAAIzlB,EAAStlB,KAAKs4D,iBAClBroC,EAAI8a,EAAO,IAAMzlB,EAAOiE,MACxB0G,EAAI8a,EAAO,IAAMzlB,EAAOkE,GAC5B,KAAO,CACCwoC,EAAO,GAAG18C,QAAQvhB,SAClBk8B,EAAIya,KAAKsnB,EAAO,GAAG/hC,KAEvB,IAAIsoC,EAAYvG,EAAOA,EAAO53D,OAAS,GACnCm+D,EAAUjjD,QAAQvhB,SAClBk8B,EAAIya,KAAK6tB,EAAUtoC,IAE3B,CACJ,CAEA,OAAOA,CACX,EAEA8hC,EAAK/tD,UAAUs0D,eAAiB,WAe5B,IAdA,IAEI/lE,EAAMyN,KAAKsV,QACXq1C,EAAWp4D,EAAIo4D,SACfuD,EAAU37D,EAAI27D,QACd6I,EAAqB/2D,KAAK+2D,qBAC1BxC,EAAgBv0D,KAAK62D,yBACrB2B,EAAc7N,EAAW3lC,EAAID,EAC7BitC,EAAShyD,KAAKgyD,OACdyG,EAAgBvK,EAAU,EAAI,EAC9BwK,EAAcxK,EAAU,EAAI,EAC5ByK,EAAiB,EACjBC,EAAe,EAEVnkD,EAAM,EAAGA,EAAMu9C,EAAO53D,OAAQqa,IAAO,CAC1C,IAAIy6C,EAAQ8C,EAAOv9C,GACfuiD,EAhBKh3D,KAgBW82D,eAAe5H,GAC/B2J,OAAa,EAASC,OAAW,EAEjC/B,GACA8B,EAAYtE,EAAcyC,EAASyB,GACnCK,EAAUvE,EAAcyC,EAAS0B,IAEjCG,EAAYC,EAAUvE,EAAcyC,GAGxC2B,EAAiB73C,KAAK0K,IAAImtC,EAAgBE,EAAY3J,EAAMj/B,IAAIuoC,EAAc,IAC9EI,EAAe93C,KAAK0K,IAAIotC,EAAc1J,EAAMj/B,IAAIuoC,EAAc,GAAKM,EACvE,CAEA,MAAO,CACHvvC,MAAOovC,EACPnvC,IAAKovC,EAEb,EAEA7G,EAAK/tD,UAAU+0D,WAAa,SAAqBx1B,EAAMjkC,EAAIqvB,EAAKnD,EAAKlG,GACjE,IAAIhQ,EAAUtV,KAAKsV,QAEnB,GAAKiuB,EAAO5U,GAAOrJ,EAAS,KAAOH,GAAQ7P,EAAQqZ,MAAQrZ,EAAQqZ,KAAOA,IAAUnD,EAAMlsB,GAAMgmB,EAAS,KAAOH,GAAQ7P,EAAQkW,MAAQA,GAAOlW,EAAQkW,KACnJ,OAAO,KAGX,GAAKlsB,EAAKqvB,GAAOrJ,EAAS,GAAOkG,EAAM+X,GAAQje,EAAS,EACpD,MAAO,CACHqJ,IAAK4U,EACL/X,IAAKlsB,GAIb,IAAI05D,EAAY15D,EAAKikC,EACjB01B,EAAW11B,EACX21B,EAAW55D,EAUf,OARIikC,EAAO5U,GAAOrJ,EAAS,GACvB2zC,EAAWvqC,GAAW6U,EAAM5U,EAAKnD,GACjC0tC,EAAWxqC,GAAW6U,EAAOy1B,EAAWrqC,EAAMqqC,EAAWxtC,IAClDlsB,EAAKksB,GAAOlG,EAAS,IAC5B4zC,EAAWxqC,GAAWpvB,EAAIqvB,EAAKnD,GAC/BytC,EAAWvqC,GAAWpvB,EAAK05D,EAAWrqC,EAAKnD,EAAMwtC,IAG9C,CACHrqC,IAAKsqC,EACLztC,IAAK0tC,EAEb,EAEAnH,EAAK/tD,UAAUm1D,WAAa,WACxB,MAAO,CACHxqC,IAAK3uB,KAAKo5D,UACV5tC,IAAKxrB,KAAKq5D,UAElB,EAEAtH,EAAK/tD,UAAUs1D,QAAU,WAOrB,IAAI/mE,EAAMyN,KAAKsV,QAGf,OAFe/iB,EAAIo4D,UAEC,EAAI,IADVp4D,EAAI27D,SACuB,EAAI,EACjD,EAEA6D,EAAK/tD,UAAUu1D,SAAW,WACtB,IACI5O,EADM3qD,KAAKsV,QACIq1C,SACf2I,EAAUtzD,KAAKszD,UACfkG,EAAW7O,EAAW2I,EAAQ7+D,SAAW6+D,EAAQ9+D,QACjDu2C,EAAO4f,EAAW3lC,EAAID,EACtB00C,EAAUz5D,KAAKs5D,UAEfI,EAAa3uB,GADW,IAAZ0uB,EAAgB,EAAI,GACFl5D,WAGlC,MAAO,CACHwqC,KAAMA,EACN2uB,WAAYA,EACZD,QAASA,EACTnG,QAASA,EACTkG,SAAUA,EACVhK,UARY8D,EAAQoG,GAU5B,EAEA3H,EAAK/tD,UAAU21D,YAAc,SAAsBz0B,GAC/C,IAAI3yC,EAAMyN,KAAKu5D,WACXxuB,EAAOx4C,EAAIw4C,KACX0uB,EAAUlnE,EAAIknE,QACdC,EAAannE,EAAImnE,WACjBpG,EAAU/gE,EAAI+gE,QACdkG,EAAWjnE,EAAIinE,SAInB,OAHeC,EAAU,EAAIv0B,EAAM6F,GAAQuoB,EAAQoG,GAAcpG,EAAQoG,GAAcx0B,EAAM6F,IACrEyuB,CAG5B,EAMAzH,EAAK/tD,UAAU41D,aAAe,SAAuBC,EAAUniB,GAG3D,IACI1lB,EAAQtD,GAAWmrC,GADP,WAUhB,OANI7nC,EAAQ,EACA0lB,EAAQ52B,KAAK6N,IAAI,EAAGqD,GAEpB0lB,EAASA,GAAS,EAAI1lB,EAItC,EAEA+/B,EAAK/tD,UAAU+yD,mBAAqB,WAChC,OAAQ/2D,KAAKsV,QAAQwkD,SACzB,EAGA/H,EAAK/tD,UAAU+1D,mBAAqB,WACpC,EAEOhI,CACX,CA35BY,CA25BVxO,IAEF5tB,GAAkBo8B,GAAM,CACpBC,OAAQ,CACJj+D,SAAS,EACT23C,SAAU,EACV6nB,QAAQ,EACR3Q,KAAM,EACNiQ,KAAM,GAEVpD,KAAM,CACFj7D,MAAO,EACPg6B,MAAOlL,EACPvvB,SAAS,GAEbQ,MAAO,CACHR,SAAS,EACT8oD,SAAUr5B,GAEd6uC,WAAY,CACRlmB,MAAO5nB,EACP3tB,KAAM,EACNi8D,KAAM,EACNjQ,KAAM,GAEVuP,WAAY,CACRhmB,MAAO5nB,EACP3tB,KAAM,EACNi8D,KAAM,EACNjQ,KAAM,GAEVoX,kBAAmB,EACnB1H,cAAe/tC,EACf6tC,cAAe/tC,EACf2xC,eAAgB,CACZnD,KAAM,EACNjQ,KAAM,GAEVmT,eAAgB,CACZhiE,SAAS,EACTS,MAAO,EACPg6B,MAAOlL,EACPuvC,KAAM,EACNjQ,KAAM,GAGVtnD,OAAQ,EACRvH,SAAS,EACTm6D,SAAS,EACT4L,WAAW,EACXlG,MAAO,CACH1E,MAAO,CACHh2D,KAAM,KAId07D,aAAa,EACbpC,cAAc,IAGlB,UCt+BWyH,GAAe,eACfC,GAAU,UACVC,GAAU,UACVC,GAAQ,QACRC,GAAO,OACPC,GAAQ,QACRC,GAAS,SACTC,GAAQ,QAGRC,GAAkB,IAClBC,GAAkB,IAClBC,GAAgB,KAChBC,GAAe,MACfC,GAAgB,OAChBC,GAAiB,QACjBC,GAAgB,QAChBC,GAAgB,CACvB,MAASD,GACT,OAAUD,GACV,MAASD,GACT,KAAQD,GACR,MAASD,GACT,QAAWD,GACX,QAAWD,GACX,aAhB8B,GCPnB,SAASQ,GAAiBpsC,EAAGjkB,GAIxC,OAHWikB,EAAEhO,UAAYjW,GACRikB,EAAEqsC,oBAAsBtwD,EAAEswD,qBAEfR,EAChC,CCPe,SAASS,GAAS3jD,EAAM4jD,GACnC,OAAO,IAAI3jD,KAAKD,EAAKqJ,UAAYu6C,EACrC,CCFe,SAASC,GAAOl+D,GAC3B,IAAI/E,EAQJ,OANI+E,aAAiBsa,KACjBrf,EAAS+E,EACFA,IACP/E,EAAS,IAAIqf,KAAKta,IAGf/E,CACX,CCJA,SAASkjE,GAAU9jD,EAAM+jD,GACrB,OAAc,IAAVA,GAAmC,KAApB/jD,EAAKgkD,aACpBhkD,EAAKikD,SAASjkD,EAAKgkD,WAAa,IACzB,EAIf,CAYe,SAASE,GAAYC,EAAWx+D,EAAOw0B,EAAMiqC,GACxD,IAAIxjE,EAASujE,EAEb,GAAIA,EAAW,CACX,IAAInkD,EAAO6jD,GAAOM,GACdJ,EAAQ/jD,EAAKgkD,WAEb7pC,IAAS6oC,GAETc,GADAljE,EAAS,IAAIqf,KAAKD,EAAKqkD,cAAgB1+D,EAAO,EAAG,GAC/B,GACXw0B,IAAS4oC,GAEhBe,GADAljE,EAAS,IAAIqf,KAAKD,EAAKqkD,cAAerkD,EAAKskD,WAAa3+D,EAAO,GAC7Co+D,GACX5pC,IAAS2oC,IAChBliE,EAASsjE,GCpCN,SAAqBlkD,EAAMokD,QAChB,IAAjBA,IAA0BA,EAAe,GAE9C,IAAIG,EAAiB,EACjBC,EAAMxkD,EAAKykD,SAEf,IAAKh2C,MAAM+1C,GACP,KAAOA,IAAQJ,GACC,IAARI,EACAA,EAAM,EAENA,IAGJD,IAIR,OAAOZ,GAAS3jD,GAAOukD,EAAiBnB,GAC5C,CDiBiCsB,CAAY1kD,EAAMokD,GAAuB,EAARz+D,EAAWk9D,IACjEiB,GAAUljE,EAAQmjE,IACX5pC,IAAS0oC,GAEhBiB,GADAljE,EAAS,IAAIqf,KAAKD,EAAKqkD,cAAerkD,EAAKskD,WAAYtkD,EAAK2kD,UAAYh/D,GACtDo+D,GACX5pC,IAASyoC,GAChBhiE,EA9BZ,SAAkBof,EAAM+jD,GACpB,IAAIa,EAAc,IAAI3kD,KAAKD,GAE3B4kD,EAAYC,WAAW,EAAG,EAAG,GAE7B,IAAIC,GAAU9kD,EAAK0jD,oBAAsBkB,EAAYlB,qBAAuBR,GAE5E,OAAOS,GAASiB,EAAaE,EAASf,EAAQZ,GAClD,CAsBqB4B,CAAS/kD,EAAMra,GACjBw0B,IAASwoC,IAChB/hE,EAAS+iE,GAAS3jD,EAAMra,EAAQu9D,KAErB8B,aAAe,GACtBpkE,EAAOqkE,WAAW,GAEf9qC,IAASuoC,GAChB9hE,EAAS+iE,GAAS3jD,EAAMra,EAAQs9D,IACzB9oC,IAASsoC,KAChB7hE,EAAS+iE,GAAS3jD,EAAMra,IAGxBw0B,IAASsoC,IAAgB7hE,EAAOskE,kBAAoB,GACpDtkE,EAAOukE,gBAAgB,EAE/B,CAEA,OAAOvkE,CACX,CE7De,SAASwkE,GAAUplD,EAAMma,EAAMiqC,GAC1C,OAAOF,GAAYL,GAAO7jD,GAAO,EAAGma,EAAMiqC,EAC9C,CCDe,SAASiB,GAASlB,EAAWhqC,EAAMiqC,GAC9C,IAAIpkD,EAAO6jD,GAAOM,GAElB,OAAInkD,GAAQolD,GAAUplD,EAAMma,EAAMiqC,GAAc/6C,YAAcrJ,EAAKqJ,UACxDrJ,EAGJkkD,GAAYlkD,EAAM,EAAGma,EAAMiqC,EACtC,CCZe,SAASkB,GAAajuC,EAAGjkB,GACpC,OAAIikB,GAAKjkB,EACEikB,EAAEhO,UAAYjW,EAAEiW,WAGnB,CACZ,CCNe,SAASk8C,GAASluC,EAAGjkB,GAChC,OAAOikB,EAAEhO,UAAYjW,CACzB,CCCe,SAASoyD,GAAO7/D,GAC3B,GAAI/H,EAAQ+H,GAAQ,CAEhB,IADA,IAAI/E,EAAS,GACJqc,EAAM,EAAGA,EAAMtX,EAAM/C,OAAQqa,IAClCrc,EAAOgX,KAAK4tD,GAAO7/D,EAAMsX,KAG7B,OAAOrc,CACX,CAAO,GAAI+E,EACP,OAAOk+D,GAAOl+D,GAAO0jB,SAE7B,CCZe,SAASo8C,GAAWpuC,EAAGjkB,GAClC,OAAIikB,GAAKjkB,EACEoyD,GAAOnuC,KAAOmuC,GAAOpyD,GAGzBikB,IAAMjkB,CACjB,CCHA,SAASsyD,GAAU1lD,EAAM+R,EAAO4zC,GAC5B,OAAOlC,GAAiBzjD,EAAM+R,GAASyxC,GAAcmC,EACzD,CAEe,SAASC,GAAUjgE,EAAOosB,EAAO4zC,EAAUE,GACtD,IAAI7lD,EAAO6jD,GAAOl+D,GACdmgE,EAAYjC,GAAO9xC,GAcvB,OAXI4zC,IAAa5C,GACJ/iD,EAAKskD,WAAawB,EAAUxB,WAA8D,IAAhDtkD,EAAKqkD,cAAgByB,EAAUzB,eAC9EqB,GAAU1lD,EAAM,IAAIC,KAAKD,EAAKqkD,cAAerkD,EAAKskD,YAAazB,IAAQ,IAAI5iD,KAAKD,EAAKqkD,cAAerkD,EAAKskD,WAAa,EAAG,GAAGK,UACzHgB,IAAa3C,GACZhjD,EAAKqkD,cAAgByB,EAAUzB,cAAgBuB,GAAU5lD,EAAM,IAAIC,KAAKD,EAAKqkD,cAAe,GAAItB,GAAQ,GAAK,GAC9G4C,IAAa9C,IAAQ8C,IAAa7C,GACjC4C,GAAU1lD,EAAM8lD,EAAWH,GAE3BJ,GAASvlD,EAAM+R,GAASyxC,GAAcmC,IAGnCE,CACnB,CCvBe,SAAS5a,GAAS5zB,EAAGjkB,EAAG+mB,GAanC,OAVIA,IAAS6oC,GACF5vD,EAAEixD,cAAgBhtC,EAAEgtC,cACpBlqC,IAAS4oC,GACe,GAAxB9X,GAAS5zB,EAAGjkB,EAAG4vD,IAAc5vD,EAAEkxD,WAAajtC,EAAEitC,WAC9CnqC,IAAS0oC,GACTv5C,KAAK8K,MAAMmxC,GAASnyD,EAAGikB,GAAK+rC,IAE5B95C,KAAK8K,MAAMmxC,GAASnyD,EAAGikB,GAAKmsC,GAAcrpC,GAIzD,CCde,SAASs+B,GAAUM,EAAa/4C,GAO3C,OALIvhB,GAASuhB,IACA+4C,EAAYN,UAAUz4C,IAEtB6jD,GAAO7jD,EAGxB,CCPe,SAAS+lD,GAAWhN,EAAaiN,GAC5C,GAAIpoE,EAAQooE,GAAQ,CAEhB,IADA,IAAIplE,EAAS,GACJqc,EAAM,EAAGA,EAAM+oD,EAAMpjE,OAAQqa,IAClCrc,EAAOgX,KAAK6gD,GAAUM,EAAaiN,EAAM/oD,KAG7C,OAAOrc,CACX,CAEA,OAAO63D,GAAUM,EAAaiN,EAClC,CCbe,SAAStN,GAAS56C,EAASi7C,GACtC,OAAIx1C,GAASzF,EAAQsmD,cACVtmD,EAAQsmD,aAGfrL,GAAeA,EAAYL,SACpBK,EAAYL,WAGhB,CACX,CCaA,IAAIuN,GAAgB,SAAU1L,GAC1B,SAAS0L,IACL1L,EAAK7pD,MAAMlI,KAAM+H,UACrB,CAymBA,OAvmBKgqD,IAAO0L,EAAa1yD,UAAYgnD,GACrC0L,EAAaz5D,UAAY6G,OAAOS,OAAQymD,GAAQA,EAAK/tD,WACrDy5D,EAAaz5D,UAAUqH,YAAcoyD,EAErCA,EAAaz5D,UAAUuuD,WAAa,WAChCvyD,KAAK09D,OAAS,CAAC,CACnB,EAEAD,EAAaz5D,UAAU25D,eAAiB,WACpC,MAAO,EACX,EAEAF,EAAaz5D,UAAU6iB,MAAQ,WAC3B,IAAI+2C,EAAO,IAAIH,EAAa5yD,OAAOW,OAAO,CAAC,EAAGxL,KAAKsV,QAAS,CACxDuoD,WAAY79D,KAAKsV,QAAQwoD,gBACzB99D,KAAKgkD,cAGT,OAFA4Z,EAAKnL,eAEEmL,CACX,EAEAH,EAAaz5D,UAAUw/C,gBAAkB,SAA0BluC,GAC/D,IAAIuoD,EAAavoD,EAAQuoD,YAAc,GACnCE,EAAa54C,GAAQ7P,EAAQqZ,KAC7BqvC,EAAa74C,GAAQ7P,EAAQkW,KAGjC,GAFAlW,EAAQwoD,cAAgBxoD,EAAQuoD,WAAaA,GAExCE,GAAcC,IAAeH,EAAWzjE,OAAQ,CACjD,IACIoxB,EADAmD,EAAMovC,EAAaj9C,KAAK8K,MAAMtW,EAAQqZ,KAAO,EAI7CnD,EADAwyC,EACM1oD,EAAQwkD,UAAYh5C,KAAK8K,MAAMtW,EAAQkW,KAAO,EAAI1K,KAAK6K,KAAKrW,EAAQkW,KAEpEqyC,EAAWzjE,OAGrBkb,EAAQuoD,WAAavoD,EAAQuoD,WAAWnjD,MAAMiU,EAAKnD,EACvD,CAEA,OAAOlW,CACX,EAEAmoD,EAAaz5D,UAAUi6D,aAAe,WAClC,IAAI3oD,EAAUtV,KAAKsV,QACflb,EAASkb,EAAQuoD,WAAWzjE,QAAU,EAU1C,MAAO,CACHu0B,IAVM5T,GAASzF,EAAQqZ,KAAOrZ,EAAQqZ,IAAM,EAAI,EAWhDnD,IARAzQ,GAASzF,EAAQkW,MAAQlW,EAAQkW,IAAM,IAAM,GAAKlW,EAAQkW,IAAMxrB,KAAKk+D,aAAa1yC,IAC5EpxB,GAAU,EAAIkb,EAAQkW,IAAM,GAE5BpxB,GAAUkb,EAAQwkD,UAAY,EAAI,GAOhD,EAEA2D,EAAaz5D,UAAUm6D,kBAAoB,SAA4BvG,GACnE,IAEIpsC,EAFAlW,EAAUtV,KAAKsV,QACfqZ,EAAM5T,GAASzF,EAAQqZ,KAAOrZ,EAAQqZ,IAAM,EAWhD,GAPInD,EADAzQ,GAASzF,EAAQkW,KACXlW,EAAQkW,IACPzQ,GAASzF,EAAQqZ,KAClBA,EAAMrZ,EAAQuoD,WAAWzjE,OAEzB4F,KAAKk+D,aAAa1yC,KAAO,EAG/BosC,EAAO,CACP,IAAIsG,EAAal+D,KAAKk+D,aACtBvvC,EAAMD,GAAWC,EAAK,EAAGuvC,EAAW1yC,KACpCA,EAAMkD,GAAWlD,EAAK,EAAG0yC,EAAW1yC,IACxC,CAEA,MAAO,CACHmD,IAAKA,EACLnD,IAAKA,EAEb,EAEAiyC,EAAaz5D,UAAU0zC,MAAQ,WAC3B,IAAIpiC,EAAUtV,KAAKsV,QAInB,MAAO,CACHqZ,IAJM5T,GAASzF,EAAQqZ,KAAOrZ,EAAQqZ,IAAM,EAK5CnD,IAJMzQ,GAASzF,EAAQkW,KAAOlW,EAAQkW,IAAMxrB,KAAKk+D,aAAa1yC,IAMtE,EAEAiyC,EAAaz5D,UAAUo6D,aAAe,WAClC,OAAOp+D,KAAK03C,OAChB,EAEA+lB,EAAaz5D,UAAUk6D,WAAa,WAChC,IAAI5oD,EAAUtV,KAAKsV,QACnB,MAAO,CAAEqZ,IAAK,EAAGnD,IAAK1K,KAAK0K,IAAIxrB,KAAKq+D,YAAc,EAAG/oD,EAAQwoD,cAAc1jE,SAAWkb,EAAQwkD,UAAY,EAAI,GAClH,EAEA2D,EAAaz5D,UAAUs6D,aAAe,WAClC,IAAI/rE,EAAMyN,KAAKi+D,eACXtvC,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IACV8nC,EAAUtzD,KAAKszD,UAInB,MAAO,CACHthC,OAJOhyB,KAAKsV,QAAQq1C,SAAW2I,EAAQ7+D,SAAW6+D,EAAQ9+D,UACzCg3B,EAAMmD,GAAQ,IAGf3uB,KAAKsV,QAAQ44C,SAAW,EAAI,GAC5Cj+B,IAAKqjC,EACL3kC,IAAKA,EACLnD,IAAKA,EAEb,EAEAiyC,EAAaz5D,UAAU2yD,cAAgB,WACnC5E,EAAK/tD,UAAU2yD,cAAc3zD,KAAKhD,MAClCA,KAAKu+D,sBACT,EAEAd,EAAaz5D,UAAUu6D,qBAAuB,WAC1C,IACItuC,EADMjwB,KACIiwB,IACV+hC,EAFMhyD,KAEOgyD,OAEjB,GAAIA,EAAO53D,OAAS,EAAG,CACnB,IAAIokE,EAAYx+D,KAAKsV,QAAQq1C,SAAW3lC,EAAID,EACxCwE,EAAQ0G,EAAIuuC,EAAY,GACxBh1C,EAAMyG,EAAIuuC,EAAY,GACtBC,EAAazM,EAAO,GACpBuG,EAAY9pC,GAAKujC,IAEjByM,EAAWxuC,IAAIuuC,EAAY,GAAKh1C,GAAOi1C,EAAWxuC,IAAIuuC,EAAY,GAAKj1C,KACvEk1C,EAAWnpD,QAAQvhB,SAAU,IAE7BwkE,EAAUtoC,IAAIuuC,EAAY,GAAKh1C,GAAO+uC,EAAUtoC,IAAIuuC,EAAY,GAAKj1C,KACrEgvC,EAAUjjD,QAAQvhB,SAAU,EAEpC,CACJ,EAEA0pE,EAAaz5D,UAAUywD,sBAAwB,WAC3C,OAAOz0D,KAAK0+D,WAAWrM,UAC3B,EAEAoL,EAAaz5D,UAAU0wD,sBAAwB,WAC3C,OAAO10D,KAAK0+D,WAAWvM,UAC3B,EAEAsL,EAAaz5D,UAAU6yD,uBAAyB,WAC5C,OAAO72D,KAAK0+D,WAAWC,UAC3B,EAEAlB,EAAaz5D,UAAU46D,YAAc,SAAsBC,GAQvD,IAPA,IAAItsE,EAAMyN,KAAKi+D,eACXtvC,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IACVosC,EAAQ92C,KAAK6K,KAAKH,GAClBj4B,EAAUutB,KAAK8K,MAAM+C,GACrBmwC,EAAU,GAEPvrE,GAAWqkE,GACdkH,EAAQ1vD,KAAK7b,GACbA,GAAWsrE,EAGf,OAAOC,CACX,EAEArB,EAAaz5D,UAAU+6D,iBAAmB,SAA2BF,GAYjE,IAXA,IAAItsE,EAAMyN,KAAKsV,QACXq1C,EAAWp4D,EAAIo4D,SACfuD,EAAU37D,EAAI27D,QACd9C,EAAQprD,KAAKs+D,eACbtsC,EAAQo5B,EAAMp5B,MACd/B,EAAMm7B,EAAMn7B,IACZtB,EAAMy8B,EAAMz8B,IACZpZ,EAAM0a,GAAK06B,EAAW3lC,EAAID,IAAMmpC,EAAU,EAAI,IAC9C4Q,EAAU9+D,KAAK4+D,YAAYC,GAC3BG,EAAY,GAEPvqD,EAAM,EAAGA,EAAMqqD,EAAQ1kE,OAAQqa,IACpCuqD,EAAU5vD,KAAKmG,EAAMyL,GAAMgR,GAAS8sC,EAAQrqD,GAAOka,GzKrNlC,IyKwNrB,OAAOqwC,CACX,EAEAvB,EAAaz5D,UAAU06D,SAAW,WAC9B,IAAIppD,EAAUtV,KAAKsV,QACf2pD,EAAQj/D,KAAK09D,OACbhmB,EAAQ13C,KAAKi+D,eACb3K,EAAUtzD,KAAKszD,UACf1/B,EAAO0/B,EAAQ9nB,UAAYkM,EAAM/oB,IAAM,IAAM+oB,EAAMlsB,IAAMlW,EAAQ44C,QAAU54C,EAAQwkD,UAEvF,GAAImF,EAAMC,QAAUtrC,EAAM,CACtB,IAAIurC,EAAW7pD,EAAQ68C,WAAWp+D,SAAWuhB,EAAQygD,eAAehiE,QACpEkrE,EAAMC,MAAQtrC,EACdqrC,EAAMN,WAAa3+D,KAAK++D,iBAAiB,GACzCE,EAAM5M,WAAaryD,KAAKo/D,0BAA0BH,EAAMN,WAAYrL,GACpE2L,EAAM9M,WAAagN,EAAWn/D,KAAKo/D,0BAA0Bp/D,KAAK++D,iBAAiB,IAAMzL,GAAW,EACxG,CAEA,OAAO2L,CACX,EAEAxB,EAAaz5D,UAAUo7D,0BAA4B,SAAoCJ,EAAW1L,GAC9F,IAAK0L,EAAU5kE,OACX,OAAO4kE,EAQX,IALA,IAAIj0B,EAAO/qC,KAAKsV,QAAQq1C,SAAW3lC,EAAID,EACnCgzB,EAAU,SAAU8E,GAAY,OAAOyW,EAAQvoB,EAAO,IAAM8R,GAAYA,GAAYyW,EAAQvoB,EAAO,EAAI,EAEvGvhB,EAAMw1C,EAAU5kE,OAAS,EACzBilE,EAAa,GACTtnB,EAAQinB,EAAUK,KAAgBA,GAAc71C,GACpD61C,IAKJ,IAFA,IAAIC,EAAW91C,GAEPuuB,EAAQinB,EAAUM,KAAcA,GAAY,GAChDA,IAGJ,OAAON,EAAUtkD,MAAM2kD,EAAYC,EAAW,EAClD,EAEA7B,EAAaz5D,UAAUu1D,SAAW,WAC9B,IAAIhnE,EAAMyN,KAAKsV,QACXq1C,EAAWp4D,EAAIo4D,SACfuD,EAAU37D,EAAI27D,QACdoF,EAAUtzD,KAAKszD,UACfkG,EAAW7O,EAAW2I,EAAQ7+D,SAAW6+D,EAAQ9+D,QACjDu2C,EAAO4f,EAAW3lC,EAAID,EACtB00C,EAAUvL,GAAW,EAAI,EAEzBwL,EAAa3uB,GADW,IAAZ0uB,EAAgB,EAAI,GACFl5D,WAGlC,MAAO,CACHwqC,KAAMA,EACN2uB,WAAYA,EACZD,QAASA,EACTnG,QAASA,EACTkG,SAAUA,EACVhK,UARY8D,EAAQoG,GAU5B,EAEA+D,EAAaz5D,UAAUs1D,QAAU,WAS7B,OAFUt5D,KAAKsV,QACG44C,SACA,EAAI,CAC1B,EAGAuP,EAAaz5D,UAAUyxD,QAAU,SAAkBlyB,EAAMjkC,EAAIs4D,GACzD,IAAItiD,EAAUtV,KAAKsV,QACf44C,EAAU54C,EAAQ44C,QAClB4L,EAAYxkD,EAAQwkD,UACpBvnE,EAAMyN,KAAKs+D,eACXtsC,EAAQz/B,EAAIy/B,MACZ/B,EAAM19B,EAAI09B,IACVtB,EAAMp8B,EAAIo8B,IACVy8B,EAAQprD,KAAKu5D,WACbiF,EAAYpT,EAAMrgB,KAClBykB,EAAYpE,EAAMoE,UAElB+P,EAAUtvC,EAAIpJ,QACd24C,GAAcr6C,GAAQ7lB,GAEtBiqB,EAAQkG,GAAe8T,EAAM,GAC7B/Z,EAAMiG,GAAenwB,EAAIiqB,GAC7BC,EAAM1I,KAAK0K,IAAIhC,EAAM,EAAGD,GAMxB,IAAIynB,EAAKwe,GAAajmC,EAAQoF,GAAOqD,EACjCue,EAAKif,IAHThmC,EAAM1I,KAAK0K,IAAIjC,EAAOC,IAGM,EAAImF,GAAOqD,EAcvC,OAZIwtC,GAAc1F,IACdvpB,EAAKS,GAGL4mB,IACA5mB,EAAKtiB,GAAWsiB,EAAI/gB,EAAIuuC,EAAY,GAAIvuC,EAAIuuC,EAAY,IACxDjuB,EAAK7hB,GAAW6hB,EAAItgB,EAAIuuC,EAAY,GAAIvuC,EAAIuuC,EAAY,KAG5De,EAAQf,EAAY,GAAKtQ,EAAU3d,EAAKS,EACxCuuB,EAAQf,EAAY,GAAKtQ,EAAUld,EAAKT,EAEjCgvB,CACX,EAEA9B,EAAaz5D,UAAUy7D,UAAY,SAAoB1H,GACnD,IACIyG,EADWx+D,KAAKsV,QAAQq1C,SACD3lC,EAAID,EAC3BuuC,EAAUtzD,KAAKszD,UACfoM,EAAe3H,EAAKlxC,QAKxB,OAHA64C,EAAalB,EAAY,GAAK9vC,GAAWqpC,EAAKyG,EAAY,GAAIlL,EAAQkL,EAAY,GAAIlL,EAAQkL,EAAY,IAC1GkB,EAAalB,EAAY,GAAK9vC,GAAWqpC,EAAKyG,EAAY,GAAIlL,EAAQkL,EAAY,GAAIlL,EAAQkL,EAAY,IAEnGkB,CACX,EAEAjC,EAAaz5D,UAAU+zD,KAAO,SAAex0B,EAAMjkC,EAAIs4D,GACnD,IAAIjpC,EAAM7N,KAAK8K,MAAM5rB,KAAKsV,QAAQqZ,KAAO,GACrCpF,EAAQga,EACR/Z,EAAMlqB,EAcV,MAZqB,kBAAViqB,EACPA,EAAQvpB,KAAK2/D,cAAcp2C,GACpBxO,GAASwO,KAChBA,GAASoF,GAGM,kBAARnF,EACPA,EAAMxpB,KAAK2/D,cAAcn2C,GAClBzO,GAASyO,KAChBA,GAAOmF,GAGJojC,EAAK/tD,UAAU+zD,KAAK/0D,KAAKhD,KAAMupB,EAAOC,EAAKouC,EACtD,EAEA6F,EAAaz5D,UAAU47D,mBAAqB,SAA6B16B,GACrE,IAAI3yC,EAAMyN,KAAKsV,QACX44C,EAAU37D,EAAI27D,QACd4L,EAAYvnE,EAAIunE,UAEhB0E,EADWjsE,EAAIo4D,SACQ3lC,EAAID,EAC3BqmC,EAAQprD,KAAKs+D,eACbtsC,EAAQo5B,EAAMp5B,MACd/B,EAAMm7B,EAAMn7B,IACZtB,EAAMy8B,EAAMz8B,IACZnD,EAAM4/B,EAAM5/B,IACZq0C,EAAa3R,EAAU1iC,EAAMmD,EAC7B6gC,EAAYv/B,EAAIuuC,EAAY,GAC5B1M,EAAU7hC,EAAIuuC,EAAY,GAC1BjpD,EAAM2vB,EAAMs5B,GAEhB,GAAIjpD,EAAMi6C,GAAaj6C,EAAMu8C,EACzB,OAAO,KAGX,IAAI30D,EAAQ0iE,GAActqD,EAAMi6C,GAAax9B,EACzCpR,EAAOzjB,EAAQ,EAQnB,OANI28D,EACA38D,EAAQ2jB,KAAKE,MAAM7jB,GACH,IAATyjB,GAAczjB,EAAQ,GAC7BA,IAGG2jB,KAAK8K,MAAMzuB,EACtB,EAEAsgE,EAAaz5D,UAAU87D,YAAc,SAAsB56B,GACvD,IAAI5qC,EAAQ0F,KAAK4/D,mBAAmB16B,GAEpC,OAAc,OAAV5qC,EACO,KAGJ0F,KAAKsV,QAAQuoD,WAAWvjE,EACnC,EAEAmjE,EAAaz5D,UAAU27D,cAAgB,SAAwBxiE,GAC3D,OAAO6C,KAAK+/D,WAAW5iE,GAAS2jB,KAAK8K,MAAM5rB,KAAKsV,QAAQqZ,KAAO,EACnE,EAEA8uC,EAAaz5D,UAAUg8D,WAAa,SAAqB1lE,EAAO8iB,GAC5D,IAAI9H,EAAUtV,KAAKsV,QAEnB,OAAQ8H,EAAQ9H,EAAQwoD,cAAgBxoD,EAAQuoD,YAAYvjE,EAChE,EAEAmjE,EAAaz5D,UAAUi8D,gBAAkB,WACrC,OAAQjgE,KAAKsV,QAAQuoD,YAAc,IAAIzjE,MAC3C,EAEAqjE,EAAaz5D,UAAUk8D,eAAiB,SAAyB50C,GAC7D,IAAIhW,EAAUtV,KAAKsV,QACfg+C,EAAUtzD,KAAKszD,UACf18D,EAAO0e,EAAQq1C,SAAW2I,EAAQ7+D,SAAW6+D,EAAQ9+D,QACrDkjD,EAAQpiC,EAAQuoD,WAAWzjE,OAE3BkrB,EAAStE,GAAMsK,GADP10B,EAAO8gD,GACe7zB,GAElC,MAAO,CACH8K,IAAKrJ,EACLkG,IAAKksB,EAAQpyB,EAErB,EAEAm4C,EAAaz5D,UAAUm8D,WAAa,SAAqBnuC,EAAOs1B,GAC5D,IAAIzK,EAAW/7B,KAAKC,IAAI/gB,KAAK25D,YAAYrS,IACrC2W,EAAej+D,KAAKm+D,oBACpBzmB,EAAQumB,EAAazyC,IAAMyyC,EAAatvC,IACxCrD,EAAQtrB,KAAK45D,aAAa5nC,EAAO0lB,GACjC0oB,EAAWvjB,EAAWvxB,EACtB+0C,GAAY,EAAIxjB,GAAYvxB,EAC5BqD,EAAMsvC,EAAatvC,IAAMyxC,EACzB50C,EAAMyyC,EAAazyC,IAAM60C,EAM7B,OAJI70C,EAAMmD,EA9bO,KA+bbnD,EAAMmD,EA/bO,IAkcV,CACHA,IAAKA,EACLnD,IAAKA,EAEb,EAEAiyC,EAAaz5D,UAAUs8D,UAAY,SAAoBtuC,EAAOs1B,GAC1D,IAAI/0D,EAAMyN,KAAKk+D,aACXqC,EAAWhuE,EAAIo8B,IACf6xC,EAAWjuE,EAAIi5B,IACfksB,EAAQ13C,KAAKmgE,WAAWnuC,EAAOs1B,GAEnC,MAAO,CACH34B,IAAKD,GAAWgpB,EAAM/oB,IAAK4xC,EAAUC,GACrCh1C,IAAKkD,GAAWgpB,EAAMlsB,IAAK+0C,EAAUC,GAE7C,EAEA/C,EAAaz5D,UAAU8uD,YAAc,WACjC,IAAIF,EAAc5yD,KAAK4yD,cAEvB,OAAOA,EAAYpnC,IAAMonC,EAAYjkC,GACzC,EAEA8uC,EAAaz5D,UAAU4uD,YAAc,WACjC,IAAIt9C,EAAUtV,KAAKsV,QACfwkD,EAAYxkD,EAAQwkD,UACpB9G,EAAe19C,EAAQ08C,OACvBz/D,EAAMyN,KAAKm+D,mBAAkB,GAC7BxvC,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IACVjC,EAAQzI,KAAK8K,MAAM+C,GAkBvB,OAhBKmrC,GAIDnrC,EAAM7N,KAAK6K,KAAKgD,GAChBnD,EAAM1K,KAAK8K,MAAMJ,KAJjBmD,EAAM7N,KAAK8K,MAAM+C,GACjBnD,EAAM1K,KAAK6K,KAAKH,IAcb,CACHmD,KAPAA,EAAMqkC,EAAaH,KACZG,EAAaH,KAAOG,EAAapQ,KAAO9hC,KAAK6K,MAAMgD,EAAMqkC,EAAaH,MAAQG,EAAapQ,MAE3FoQ,EAAaH,MAIRtpC,EACZiC,KAAMlW,EAAQuoD,WAAWzjE,OAASoxB,GAAOsuC,EAAY,EAAI,GAAK,GAAKvwC,EAE3E,EAEAk0C,EAAaz5D,UAAUovD,gBAAkB,SAA0B94D,EAAO04D,EAAcG,GACpF,IAAI79C,EAAUtV,KAAKsV,QACf0wC,EAAW1wC,EAAQmrD,UAAYnrD,EAAQmrD,UAAUnmE,GAAS,KAC1D2rD,EAAWx2B,GAAena,EAAQuoD,WAAWvjE,GAAQ,IAEzD64D,EAAanN,SAAWA,EACxB,IAAI9sD,EAAO8G,KAAKm4D,cAAclS,EAAU+M,EAAcG,GAEtD,OAAO,IAAI/E,GAAUnI,EAAU/sD,EAAMoB,EAAO0rD,EAAUgN,EAC1D,EAEAyK,EAAaz5D,UAAUg0D,iBAAmB,SAA2B76D,GACjE,IAAIu6C,EAAQ13C,KAAKm+D,oBAEjB,OAAOr9C,KAAK8K,MAAM8rB,EAAM/oB,MAAQxxB,GAASA,GAAS2jB,KAAK6K,KAAK+rB,EAAMlsB,IACtE,EAEAiyC,EAAaz5D,UAAUi0D,SAAW,SAAmB96D,GACjD,IAAImY,EAAUtV,KAAKsV,QACfhb,EAAQ6C,EAAQ2jB,KAAK8K,MAAMtW,EAAQqZ,KAAO,GAC9C,OAAO3uB,KAAKy1D,QAAQn7D,EACxB,EAEAmjE,EAAaz5D,UAAU4yD,aAAe,WAClC7E,EAAK/tD,UAAU4yD,aAAa5zD,KAAKhD,MACjCA,KAAK0gE,qBACT,EAEAjD,EAAaz5D,UAAU08D,oBAAsB,WACzC,IACI9M,EADM5zD,KACM4zD,MACZ3jC,EAFMjwB,KAEIiwB,IACd,GAAI2jC,GAASA,EAAMx5D,OAKf,IAJA,IAAIokE,EAAYx+D,KAAKsV,QAAQq1C,SAAW3lC,EAAID,EACxCwE,EAAQ0G,EAAIuuC,EAAY,GACxBh1C,EAAMyG,EAAIuuC,EAAY,GAEjB/pD,EAAM,EAAGA,EAAMm/C,EAAMx5D,OAAQqa,IAAO,CACzC,IAAIq/C,EAAOF,EAAMn/C,GACbq/C,EAAK7jC,MAAQzG,EAAMsqC,EAAK7jC,IAAIuuC,EAAY,IAAM1K,EAAK7jC,IAAIuuC,EAAY,GAAKj1C,IACxEuqC,EAAK39D,MAEb,CAER,EAEAsnE,EAAaz5D,UAAU28D,IAAM,SAAcr1C,GACvC,IAAIosB,EAAQ13C,KAAKm+D,mBAAkB,GAE/BnsC,EADMhyB,KAAKs+D,eACCtsC,MACZ1M,EAAStE,GAAMsK,EAAQ0G,EAAOnO,GAC9Bq6C,EAAal+D,KAAKk+D,aAClBvvC,EAAM+oB,EAAM/oB,IAAMrJ,EAClBkG,EAAMksB,EAAMlsB,IAAMlG,EAEtB,OAAOtlB,KAAK+4D,WAAWpqC,EAAKnD,EAAK,EAAG0yC,EAAW1yC,IAAKlG,EACxD,EAEAm4C,EAAaz5D,UAAU48D,YAAc,SAAsBr3C,EAAOC,GAC9D,IAAIj3B,EAAMyN,KAAKsV,QACX44C,EAAU37D,EAAI27D,QAEdsQ,EADWjsE,EAAIo4D,SACQ3lC,EAAID,EAC3B2yB,EAAQ13C,KAAKm+D,mBAAkB,GAC/B/S,EAAQprD,KAAKs+D,eACbtsC,EAAQo5B,EAAMp5B,MAEdw9B,EADMpE,EAAMn7B,IACIuuC,GAAatQ,EAAU,EAAI,IAE3C2S,EAAYt3C,EAAMi1C,GAAahP,EAC/BsR,EAAUt3C,EAAIg1C,GAAahP,EAE3B7gC,EAAM+oB,EAAM/oB,IAAMkyC,EAAY7uC,EAC9BxG,EAAMksB,EAAM/oB,IAAMmyC,EAAU9uC,EAC5B+uC,EAAWjgD,KAAK6N,IAAIA,EAAKnD,GACzBw1C,EAAWlgD,KAAK0K,IAAImD,EAAKnD,GAE7B,GAAIw1C,EAAWD,GAvkBS,IAwkBpB,MAAO,CACHpyC,IAAKoyC,EACLv1C,IAAKw1C,EAGjB,EAEAvD,EAAaz5D,UAAUm1D,WAAa,WAChC,OAAOn5D,KAAK03C,OAChB,EAEA+lB,EAAaz5D,UAAU+7D,WAAa,SAAqB5iE,GACrD,IAAImY,EAAUtV,KAAKsV,QACfhb,EAAQ0F,KAAKihE,eACbjhE,KAAKihE,eAAe70D,IAAIjP,GAnlBpC,SAAiBA,EAAO24B,GACpB,GAAI34B,aAAiBsa,KAAM,CAEvB,IADA,IAAIrd,EAAS07B,EAAI17B,OACRqa,EAAM,EAAGA,EAAMra,EAAQqa,IAC5B,GAAIwoD,GAAWnnC,EAAIrhB,GAAMtX,GACrB,OAAOsX,EAIf,OAAQ,CACZ,CAEA,OAAOqhB,EAAIzsB,QAAQlM,EACvB,CAskB6CkM,CAAQlM,EAAOmY,EAAQwoD,eAE5D,OAAOxjE,CACX,EAEAmjE,EAAaz5D,UAAUk9D,oBAAsB,WACzC,IAAI5rD,EAAUtV,KAAKsV,QACfqZ,EAAM,EAaV,OAXI5T,GAASzF,EAAQqZ,OACjBA,EAAM7N,KAAK8K,MAAMtW,EAAQqZ,MAUtB,CACHA,IAAKA,EACLnD,IARAzQ,GAASzF,EAAQkW,KACXlW,EAAQwkD,UAAYh5C,KAAK8K,MAAMtW,EAAQkW,KAAO1K,KAAK6K,KAAKrW,EAAQkW,KAAO,EAEvExrB,KAAKmhE,aAAe,EAOlC,EAEA1D,EAAaz5D,UAAUo9D,cAAgB,WACnC,IAAKphE,KAAKihE,eAGN,IAFA,IAAI5mE,EAAM2F,KAAKihE,eAAiB,IAAIl4C,GAChC+0C,EAAgB99D,KAAKsV,QAAQwoD,cACxBrpD,EAAM,EAAGA,EAAMqpD,EAAc1jE,OAAQqa,IAC1Cpa,EAAI4uB,IAAI60C,EAAcrpD,GAAMA,EAGxC,EAEAgpD,EAAaz5D,UAAUm9D,WAAa,WAChC,OAAOrgD,KAAK0K,IAAIxrB,KAAKsV,QAAQwoD,cAAc1jE,OAAQ4F,KAAKq+D,YAAc,EAC1E,EAEOZ,CACX,CA7mBoB,CA6mBlB1L,IAEFp8B,GAAkB8nC,GAAc,CAC5BtqE,KAAM,WACNw3D,UAAU,EACVqL,eAAgB,CACZjiE,SAAS,EACTS,MAAO,EACPg6B,MAAOlL,GAEX0uC,OAAQ,CACJpN,OAAQ,GAEZkV,WAAW,EACXtH,cAAc,IAGlB,UCvpBI6O,GAAmB,IAEnBC,GAAmB,CACnBC,aAAc,eACdC,QAAS,WACTC,QAAS,QACTlG,MAAO,QACPmG,KAAM,MACNC,MAAO,MACPC,OAAQ,UACRC,MAAO,QCMPC,GAAa,CACb7H,GAAcC,GAASC,GAASC,GAAOC,GAAMC,GAAOC,GAAQC,IAE5DuH,GAAM,MAGV,SAASC,GAAcnE,GACnB,IAAInmB,EAAQmmB,EAAWoE,OAOvB,OANKvqB,KACDA,EAAQmmB,EAAWoE,OAASpsC,GAAkBgoC,IACxClvC,IAAM0sC,GAAO3jB,EAAM/oB,KACzB+oB,EAAMlsB,IAAM6vC,GAAO3jB,EAAMlsB,MAGtBksB,CACX,CAEA,IAAIwqB,GAAiB,SAAwB5sD,GACzCtV,KAAKsV,QAAUA,CACnB,EAEA4sD,GAAel+D,UAAUm+D,eAAiB,WACtC,MAAO,CACHxzC,IAAK,EACLnD,IAAK,EAEb,EAEA02C,GAAel+D,UAAUo+D,aAAe,WACpC,MAAO,CAAC,CACZ,EAEAF,GAAel+D,UAAUoZ,MAAQ,WAC7B,MAAO,CAAC,CACZ,EAEA8kD,GAAel+D,UAAUm1D,WAAa,WAClC,MAAO,CAAC,CACZ,EAEA+I,GAAel+D,UAAUq+D,WAAa,WAClC,OAAQ,CACZ,EAEAH,GAAel+D,UAAU+L,OAAS,WAC9B,MAAO,EACX,EAEAmyD,GAAel+D,UAAU+7D,WAAa,WAClC,OAAQ,CACZ,EAEAmC,GAAel+D,UAAUs+D,YAAc,WACnC,OAAO,CACX,EAEAJ,GAAel+D,UAAUm9D,WAAa,WAClC,OAAO,CACX,EAEAe,GAAel+D,UAAUu+D,OAAS,WAC9B,OAAO,IACX,EAEA,IAAIC,GAAY,SAAmBj5C,EAAOC,EAAKlU,GAC3CtV,KAAKsV,QAAUA,EACfA,EAAQ+nD,aAAe/nD,EAAQ+nD,cAAgB,EAE/C,IAAIoF,EAAkBntD,EAAQmtD,gBAC1B3I,EAAYxkD,EAAQwkD,UAExB95D,KAAKupB,MAAQmyC,GAAYnyC,EAAO,EAAGjU,EAAQ6nD,SAAU7nD,EAAQsmD,cAC7D,IAAI8G,EAAW1iE,KAAK2iE,iBAAiBn5C,GACjCo5C,GAAa9I,GAAamD,GAAWzzC,EAAKk5C,KAAcptD,EAAQutD,WAEpE7iE,KAAKwpB,IAAMxpB,KAAK2iE,iBAAiBn5C,GAAMswC,EAAW8I,EAAY,EAAI,GAElE,IAAIj0C,EAAMrZ,EAAQqZ,KAAOpF,EACzBvpB,KAAK8iE,WAAa9iE,KAAK2iE,iBAAiBh0C,GACxC3uB,KAAK+iE,aAAeN,EAAkBziE,KAAK8iE,WAAan0C,EAExD,IAAInD,EAAMlW,EAAQkW,IAClB,GAAKA,EAGE,CACH,IAAIzc,GAAQ+qD,GAAamD,GAAWzxC,EAAKxrB,KAAK2iE,iBAAiBn3C,KAAS,EAAI,EAC5ExrB,KAAKgjE,SAAWhjE,KAAK2iE,iBAAiBn3C,GAAK,EAAOzc,GAClD/O,KAAKijE,WAAaR,EAAkBziE,KAAK2iE,iBAAiBn3C,GAAMsuC,GAAaxkD,EAAQkW,GACzF,MANIxrB,KAAKgjE,SAAWN,EAChB1iE,KAAKijE,WAAaR,GAAmBG,EAAY5iE,KAAKwpB,IAAMA,EAO5DxpB,KAAKgjE,SAAWhjE,KAAK8iE,aACrB9iE,KAAKgjE,SAAWhjE,KAAK8iE,YAErB9iE,KAAKijE,YAAcjjE,KAAK+iE,eACxB/iE,KAAKijE,WAAajjE,KAAK2iE,iBAAiB3iE,KAAK+iE,cAAc,EAAO,GAE1E,EAyGA,SAASG,GAAa5tD,EAAS6tD,EAAWC,GAYtC,IAXA,IASIC,EAAWzgB,EAAM0gB,EATjBC,EAAiBvB,GAAc1sD,EAAQuoD,YACvC2F,GAAQluD,EAAQkW,KAAO+3C,EAAe/3C,MAAQlW,EAAQqZ,KAAO40C,EAAe50C,KAC5E80C,EAAoBnuD,EAAQmuD,kBAC5BC,EAAgBpuD,EAAQouD,cACxBC,EAAWruD,EAAQ6nD,WAAa4E,GAChC6B,EAAaT,EAAYrB,GAAWz4D,QAAQ85D,GAAa,EACzDhG,EAAWwG,EAAW7B,GAAW8B,KAAgBtuD,EAAQ6nD,SACzD0G,EAAQL,EAAOxI,GAAcmC,GAC7B2G,EAAaD,GAGTjhB,GAAQihB,GAASH,GAAe,CACpCL,EAAYA,GAAaI,EAAkBtG,GAAUziD,MAAM,GAE3D,GACI4oD,EAAWD,EAAUl3C,cAChBm3C,GAAYH,IAAchG,GAAYmG,EAAWF,GAE1D,GAAIE,EAEAO,EAAQC,GADRlhB,EAAO0gB,OAEJ,IAAInG,IAAa1uC,GAAKqzC,IAAa,CACtClf,EAAO9hC,KAAK6K,KAAKm4C,EAAaJ,GAC9B,KACJ,CAAO,IAAIC,EAIJ,CACCE,EAAQH,IACR9gB,EAAO9hC,KAAK6K,KAAKm4C,EAAaJ,IAElC,KACJ,CARIvG,EAAW2E,GAAW8B,MAAiBn1C,GAAKqzC,IAC5CgC,EAAaN,EAAOxI,GAAcmC,GAClCkG,EAAY,IAMhB,CACJ,CAEA/tD,EAAQ+nD,aAAeza,EACvBttC,EAAQ6nD,SAAWA,CACvB,CAwCA,SAAS4G,GAASzuD,GACd,IAAI6nD,GAAY7nD,EAAQ6nD,UAAY,IAAIpyC,cAWxC,OAViBoyC,IAAa4E,KAAQ74C,GAAQi0C,EAAU2E,KAxC5D,SAAyBxsD,GAMrB,IALA,IAGI0uD,EAAcryC,EAHdksC,EAAavoD,EAAQuoD,WACrBnkB,EAAQv0B,GAAQ04C,GAAcA,EAAWzjE,OAAS,EAClD6pE,EAAU//C,EAGLggD,EAAa,EAAGA,EAAaxqB,EAAOwqB,IAAc,CACvD,IAAIje,EAAW4X,EAAWqG,GAE1B,GAAIje,GAAY+d,EAAc,CAC1B,IAAIpjD,EAAOq6C,GAAiBhV,EAAU+d,GAClCpjD,EAAO,IAIH+Q,GAHJsyC,EAAUnjD,KAAK6N,IAAIs1C,EAASrjD,KAEbm6C,GACJP,GACAyJ,GAAWnJ,QACXP,GACA0J,GAAWpJ,GACXP,GACA2J,GAAWrJ,GACXP,GACA4J,GAAWtJ,GACXP,GACA6J,GAAWvJ,GACXP,GAEAD,GAGnB,CAEA8J,EAAe/d,CACnB,CAEA3wC,EAAQ6nD,SAAWxrC,GAAQ0oC,EAC/B,CAOQ8J,CAAgB7uD,GAGhB6nD,IAAa4E,IAlSV,SAkSiBzsD,EAAQ+nD,cAC5B6F,GAAa5tD,GAGVA,CACX,CAnMAktD,GAAUx+D,UAAUo+D,aAAe,WAC/B,MAAO,CACHzzC,IAAK3uB,KAAK+iE,aACVv3C,IAAKxrB,KAAKijE,WAElB,EAEAT,GAAUx+D,UAAUm+D,eAAiB,WACjC,IAAKniE,KAAKokE,SAAU,CAChB,IAAI9uD,EAAUtV,KAAKsV,QAEf6nD,EAAW7nD,EAAQ6nD,SACfE,EAAe/nD,EAAQ+nD,aAE3BgH,EAASjH,GAAUp9D,KAAK+iE,aAAc/iE,KAAK8iE,WAAY3F,EAAUE,GACjEiH,EAASlH,GAAUp9D,KAAKijE,WAAYjjE,KAAK8iE,WAAY3F,EAAUE,GAEnEr9D,KAAKokE,SAAW,CAAEz1C,IAAK01C,EAAQ74C,IAAK84C,EACxC,CAEA,OAAOtkE,KAAKokE,QAChB,EAEA5B,GAAUx+D,UAAUoZ,MAAQ,WACxB,MAAO,CACHuR,IAAK3uB,KAAKupB,MACViC,IAAKxrB,KAAKwpB,IAElB,EAEAg5C,GAAUx+D,UAAUm9D,WAAa,WAG7B,OAFWnhE,KAAK+/D,WAAW//D,KAAKwpB,MAEjBxpB,KAAKsV,QAAQwkD,UAAY,EAAI,EAChD,EAEA0I,GAAUx+D,UAAUm1D,WAAa,WAC7B,MAAO,CACHxqC,IAAK3uB,KAAK8iE,WACVt3C,IAAKxrB,KAAKgjE,SAElB,EAEAR,GAAUx+D,UAAUq+D,WAAa,SAAqBllE,GAClD,IAAImY,EAAUtV,KAAKsV,QACnB,OAAOwL,KAAK8K,MAAMwxC,GAAUjgE,EAAO6C,KAAK8iE,WAAYxtD,EAAQ6nD,SAAU7nD,EAAQ+nD,cAClF,EAEAmF,GAAUx+D,UAAU+7D,WAAa,SAAqB5iE,GAClD,IAAImY,EAAUtV,KAAKsV,QACnB,OAAOwL,KAAK8K,MAAMwxC,GAAUjgE,EAAO6C,KAAKupB,MAAOjU,EAAQ6nD,SAAU7nD,EAAQ+nD,cAC7E,EAEAmF,GAAUx+D,UAAUo5D,UAAY,SAAsBjgE,GAClD,IAAImY,EAAUtV,KAAKsV,QACnB,OAAO8nD,GAAUjgE,EAAO6C,KAAK8iE,WAAYxtD,EAAQ6nD,SAAU7nD,EAAQ+nD,aACvE,EAEAmF,GAAUx+D,UAAUs+D,YAAc,WAG9B,OAFatiE,KAAKqiE,WAAWriE,KAAKgjE,UAElB,CACpB,EAEAR,GAAUx+D,UAAU+L,OAAS,WACzB,IAAIA,EAAS/P,KAAK6iC,QAClB,IAAK9yB,EAAQ,CACT,IAAIuF,EAAUtV,KAAKsV,QACfoiC,EAAQ13C,KAAKm5D,aACjBn5D,KAAK6iC,QAAU9yB,EAAS,GAExB,IAAK,IAAIyH,EAAOkgC,EAAM/oB,IAAKnX,GAAQkgC,EAAMlsB,KACrCzb,EAAOX,KAAKoI,GACZA,EAAOkkD,GAAYlkD,EAAMlC,EAAQ+nD,aAAc/nD,EAAQ6nD,SAAU7nD,EAAQsmD,aAEjF,CAEA,OAAO7rD,CACX,EAEAyyD,GAAUx+D,UAAUu+D,OAAS,SAAiBjoE,EAAO8iB,GACjD,IAAI9H,EAAUtV,KAAKsV,QAEnB,OAAOomD,GAAYt+C,EAAQpd,KAAKupB,MAAQvpB,KAAK8iE,WAAYxtD,EAAQ+nD,aAAe/iE,EAAOgb,EAAQ6nD,SAAU7nD,EAAQsmD,aACrH,EAEA4G,GAAUx+D,UAAU2+D,iBAAmB,SAA2BxlE,EAAOonE,EAAOx1D,GAC5E,IAAIxc,EAAMyN,KAAKsV,QACP6nD,EAAW5qE,EAAI4qE,SACfE,EAAe9qE,EAAI8qE,aACnBzB,EAAerpE,EAAIqpE,aACvBryC,EAAQvpB,KAAKupB,MAEbq5B,EAAOwa,GAAUjgE,EAAOosB,EAAO4zC,EAAUE,GACzCmH,EAAcD,EAAQzjD,KAAK6K,KAAKi3B,GAAQ9hC,KAAK8K,MAAMg3B,GAMvD,OAJI7zC,IACAy1D,GAAez1D,GAGZ2sD,GAAYnyC,EAAOi7C,EAAcnH,EAAcF,EAAUvB,EACpE,EAgGA,IAAI6I,GAAoB,SAAUhH,GAC9B,SAASgH,IACLhH,EAAav1D,MAAMlI,KAAM+H,UAC7B,CA0mBA,OAxmBK01D,IAAegH,EAAiB15D,UAAY0yD,GACjDgH,EAAiBzgE,UAAY6G,OAAOS,OAAQmyD,GAAgBA,EAAaz5D,WACzEygE,EAAiBzgE,UAAUqH,YAAco5D,EAEzCA,EAAiBzgE,UAAU6iB,MAAQ,WAC/B,IAAI+2C,EAAO,IAAI6G,EAAiB55D,OAAOW,OAAO,CAAC,EAAGxL,KAAKsV,SAAUtV,KAAKgkD,cAGtE,OAFA4Z,EAAKnL,eAEEmL,CACX,EAEA6G,EAAiBzgE,UAAU25D,eAAiB,WACxC,IAAIp0C,EAAQvpB,KAAK0kE,UAAUtnD,QAAQuR,IACnC,OAAO3uB,KAAKsV,QAAQ6nD,SAAWn9D,KAAKsV,QAAQ+nD,aAAe9zC,CAC/D,EAEAk7C,EAAiBzgE,UAAUw/C,gBAAkB,SAA0BluC,GACnE,OAAOA,CACX,EAEAmvD,EAAiBzgE,UAAUuuD,WAAa,WACpCkL,EAAaz5D,UAAUuuD,WAAWvvD,KAAKhD,MAEvC,IAAIgkD,EAAehkD,KAAKgkD,aACpBuM,EAAcvM,EAAayM,KAC3Bn7C,EAAUtV,KAAKsV,QAEfuoD,EAAavoD,EAAQuoD,YAAc,GAyBvC,GAxBKA,EAAW8G,WACZ9G,EAAaN,GAAWhN,EAAasN,IAC1B8G,SAAU,GAGzBrvD,EAAUyR,GAAW,CACjB07C,iBAAiB,GAClBntD,EAAS,CACRuoD,WAAYA,EACZlvC,IAAKshC,GAAUM,EAAaj7C,EAAQqZ,KACpCnD,IAAKykC,GAAUM,EAAaj7C,EAAQkW,KACpCowC,aAAc1L,GAAS56C,EAASi7C,KAGhCvM,EAAa4gB,SAAW5gB,EAAamN,WAAW77C,EAAQq1C,SAAW3lC,EAAID,KACvEzP,EAAQmtD,iBAAkB,GAG9BntD,EAAQuvD,gBAAkBvvD,EAAQuvD,iBAAmBvvD,EAAQ6nD,SAC7D7nD,EAAQwvD,oBAAsBxvD,EAAQwvD,qBAAuBxvD,EAAQ+nD,aAErEr9D,KAAKsV,QAAUA,EACfA,EAAQwoD,cAAgBD,EAEpBA,EAAWzjE,OAAS,EAAG,CACvB,IAAIs9C,EAAQsqB,GAAcnE,GACtBkH,EAAezvD,EAAQyvD,aAI3B,GAFA/kE,KAAK0kE,UAAY,IAAIlC,GAAU9qB,EAAM/oB,IAAK+oB,EAAMlsB,IAAKu4C,GAASzuD,IAE1DyvD,EAAc,CACd,IAAIL,EAAY1kE,KAAK0kE,UAAUtC,eAE3B4C,EAAkBn6D,OAAOW,OAAO,CAAC,EAAG8J,EAAS,CAC7CwkD,WAAW,EACX2I,iBAAiB,EACjBtF,SAAU,MACVxuC,IAAK+1C,EAAU/1C,IACfnD,IAAKk5C,EAAUl5C,IACfk4C,cAAeqB,IAGfE,EAAmBjlE,KAAK0kE,UAAUpvD,QAEtC4tD,GAAa8B,EAAiBC,EAAiB9H,SAAU8H,EAAiB5H,cAE1Er9D,KAAKklE,cAAgB,IAAI1C,GAAU9qB,EAAM/oB,IAAK+oB,EAAMlsB,IAAKw5C,EAC7D,MACIhlE,KAAKklE,cAAgBllE,KAAK0kE,SAGlC,MACIpvD,EAAQ6nD,SAAW7nD,EAAQ6nD,UAAY9C,GACvCr6D,KAAK0kE,UAAY1kE,KAAKklE,cAAgB,IAAIhD,GAAe5sD,GAG7DtV,KAAKmlE,YAAc,EACvB,EAEAV,EAAiBzgE,UAAU46D,YAAc,SAAsBC,GAC3D,IACI6F,EADM1kE,KACU0kE,UAChBQ,EAFMllE,KAEcklE,cACpB5C,EAAc4C,EAAc5C,cAEhC,IAAKtiE,KAAKsV,QAAQyvD,eAAiBzC,EAC/B,OAAO7E,EAAaz5D,UAAU46D,YAAY57D,KAAKhD,KAAM6+D,GAGzD,IAAIC,EAAU,GACV/uD,EAASm1D,EAAcn1D,SACvBuV,EAAS,EAERtlB,KAAKsV,QAAQwkD,YACd/pD,EAASA,EAAO5H,OAAO+8D,EAAc3C,OAAOD,IAC5Ch9C,EAAS,IAGb,IAAK,IAAI7Q,EAAM,EAAGA,EAAM1E,EAAO3V,OAAQqa,IAEnC,GADAqqD,EAAQ1vD,KAAKs1D,EAAUtH,UAAUrtD,EAAO0E,IAAQ6Q,GAC/B,IAAbu5C,GAAkBpqD,GAAO,EAAG,CAC5B,IAAIga,EAAOqwC,EAAQ1kE,OAAS,EAC5B0kE,EAAQ14B,OAAO3xB,EAAK,EAAGqqD,EAAQrwC,EAAO,IAAMqwC,EAAQrwC,GAAQqwC,EAAQrwC,EAAO,IAAMowC,EACrF,CAGJ,OAAOC,CACX,EAEA2F,EAAiBzgE,UAAUg0D,iBAAmB,SAA2B76D,GACrE,IAAIu6C,EAAQ13C,KAAK03C,QACbmmB,EAAa79D,KAAKsV,QAAQuoD,YAAc,GAE5C,OAAOf,GAAa3/D,EAAOu6C,EAAM/oB,MAAQ,GAAKmuC,GAAa3/D,EAAOu6C,EAAMlsB,MAAQ,GAAKqyC,EAAWzjE,MACpG,EAEAqqE,EAAiBzgE,UAAU6vD,eAAiB,SAAyB12D,GACjE,OAAO8yD,GAAUjwD,KAAKgkD,aAAayM,KAAMtzD,EAC7C,EAEAsnE,EAAiBzgE,UAAUi0D,SAAW,SAAmB96D,GACrD,OAAO6C,KAAKy1D,QAAQt4D,EACxB,EAEAsnE,EAAiBzgE,UAAUk8D,eAAiB,SAAyB50C,GACjE,IAAIhW,EAAUtV,KAAKsV,QACf6nD,EAAW7nD,EAAQ6nD,SACnBvB,EAAetmD,EAAQsmD,aACvBjR,EAAWr1C,EAAQq1C,SACnB2I,EAAUtzD,KAAKszD,UACf18D,EAAO+zD,EAAW2I,EAAQ7+D,SAAW6+D,EAAQ9+D,QAC7CkjD,EAAQ13C,KAAK03C,QACb1lB,EAAQp7B,GAAQ8gD,EAAMlsB,IAAMksB,EAAM/oB,KAClCrJ,EAAStE,GAAMsK,EAAQ0G,EAAOnO,GAElC,GAAI6zB,EAAM/oB,KAAO+oB,EAAMlsB,IAAK,CACxB,IAAI+X,EAAO43B,GAAS7lD,EAAQqZ,KAAO+oB,EAAM/oB,IAAKrJ,GAC1ChmB,EAAK67D,GAAS7lD,EAAQkW,KAAOksB,EAAMlsB,IAAKlG,GAE5CoyB,EAAQ,CACJ/oB,IAAK+sC,GAAYn4B,EAAM,EAAG45B,EAAUvB,GACpCpwC,IAAKkwC,GAAYp8D,EAAI,EAAG69D,EAAUvB,GAE1C,CAEA,OAAOlkB,CACX,EAEA+sB,EAAiBzgE,UAAU4uD,YAAc,WACrC,MAAO,CACHjkC,IAAK3uB,KAAKsV,QAAQ08C,OAAOa,KACzBrnC,IAAKxrB,KAAKklE,cAAc5C,cAEhC,EAEAmC,EAAiBzgE,UAAU28D,IAAM,SAAcr1C,GAC3C,GAAItrB,KAAKolE,UACL,OAAO,KAGX,IAAI9vD,EAAUtV,KAAKsV,QACfg+C,EAAUtzD,KAAKszD,UACf18D,EAAO0e,EAAQq1C,SAAW2I,EAAQ7+D,SAAW6+D,EAAQ9+D,QACrDjC,EAAMyN,KAAK0kE,UAAUtC,eACrBzzC,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IACV65C,EAAcrlE,KAAK0kE,UAAUtnD,QAE7BkI,EAAStE,GAAMsK,GADP10B,GAAQ40B,EAAMmD,IACQ9K,IAAsBvO,EAAQ44C,SAAW,EAAI,GAC3E3qB,EAAO43B,GAASxsC,EAAKrJ,GACrBhmB,EAAK67D,GAAS3vC,EAAKlG,GAEnBggD,EAAWtlE,KAAK+4D,WAAWiE,GAAOz5B,GAAOy5B,GAAO19D,GAAK09D,GAAOqI,EAAY12C,KAAMquC,GAAOqI,EAAY75C,KAAMlG,GAE3G,OAAIggD,GACAA,EAAS32C,IAAM0sC,GAAOiK,EAAS32C,KAC/B22C,EAAS95C,IAAM6vC,GAAOiK,EAAS95C,KAC/B85C,EAASnI,SAAW7nD,EAAQ6nD,SAC5BmI,EAASjI,aAAe/nD,EAAQ+nD,cAAgB,EAChDiI,EAAST,gBAAkBvvD,EAAQuvD,gBACnCS,EAASR,oBAAsBxvD,EAAQwvD,oBAEhCQ,QARX,CAUJ,EAEAb,EAAiBzgE,UAAU48D,YAAc,SAAsBr3C,EAAOC,GAClE,GAAIxpB,KAAKolE,UACL,OAAO,KAGX,IAAIxE,EAAcnD,EAAaz5D,UAAU48D,YAAY59D,KAAKhD,KAAMupB,EAAOC,GACnE+7C,EAAavlE,KAAK0kE,UAAUtC,eAC5BoD,EAAexlE,KAAK0kE,UAAUvC,iBAC9BnwC,EAAQ+qC,GAASwI,EAAW/5C,IAAK+5C,EAAW52C,MAAQ62C,EAAah6C,IAAMg6C,EAAa72C,KACpFrZ,EAAUtV,KAAKsV,QAKnB,MAAO,CACHqZ,IAJMwsC,GAASoK,EAAW52C,IAAKiyC,EAAYjyC,IAAMqD,GAKjDxG,IAJM2vC,GAASoK,EAAW52C,IAAKiyC,EAAYp1C,IAAMwG,GAKjDmrC,SAAU7nD,EAAQuvD,iBAAmBvvD,EAAQ6nD,SAC7CE,aAAc/nD,EAAQwvD,qBAAuBxvD,EAAQ+nD,aAE7D,EAEAoH,EAAiBzgE,UAAUm8D,WAAa,SAAqBnuC,EAAOs1B,GAChE,GAAItnD,KAAKolE,UACL,MAAO,CAAC,EAGZ,IAAI9vD,EAAUtV,KAAKsV,QACfmwD,EAAMnwD,EAAQuvD,kBAAoB9C,GAClCsD,EAAcrlE,KAAK0kE,UAAUtnD,QAC7B7qB,EAAMyN,KAAK0kE,UAAUtC,eACrBrB,EAAWxuE,EAAIo8B,IACfqyC,EAAWzuE,EAAIi5B,IAEfqxB,EAAW/7B,KAAKC,IAAI/gB,KAAK25D,YAAYrS,IACrC5P,EAAQspB,EAAWD,EACnBz1C,EAAQtrB,KAAK45D,aAAa5nC,EAAO0lB,GACjC0oB,EAAWt/C,KAAKE,MAAM67B,EAAWvxB,GACjC+0C,EAAWv/C,KAAKE,OAAO,EAAI67B,GAAYvxB,GAGvC6xC,EADQn9D,KAAK0kE,UAAUpvD,QACN6nD,SACjBxuC,EAAM,IAAIlX,KAAKspD,EAASlgD,UAAYu/C,GACpC50C,EAAM,IAAI/T,KAAKupD,EAASngD,UAAYw/C,GAExC,GAAIoF,EAAK,CACL,IAOIC,EAAkBtK,EAPlBqI,EAAoBnuD,EAAQmuD,kBAC5BC,EAAgBpuD,EAAQouD,cAExBiC,EAAUl3C,GAAKg1C,EAAkBtG,IAAauG,EAAgB1I,GAAcmC,GAC5EyI,EAAY7I,GAASiE,EAAUD,GAC/BngD,EAAOm8C,GAASvxC,EAAKmD,GACrBk3C,EAAgB/D,GAAWz4D,QAAQ8zD,GAGvC,GAAIv8C,EAAOo6C,GAAcmC,IAAaA,IAAalD,GAC/CkD,EAAW2E,GAAW+D,EAAgB,GAGtCl3C,EAAMwsC,GAAS4F,EADf3F,GAASwK,GAAalC,EAAgB,IADtCgC,EAAmBj3C,GAAKg1C,EAAkBtG,KACoBnC,GAAcmC,IAAa,GAEzF3xC,EAAM2vC,GAAS6F,GAAW5F,QAEvB,GAAIx6C,EAAO+kD,GAAWxI,IAAa3C,GAAO,CAC7C,IAAIsL,EAAY,EAEhB,EAAG,CACCD,IACA1I,EAAW2E,GAAW+D,GACtBC,EAAY,EACZ1K,EAAQ,EAAIJ,GAAcmC,GAC1B,GACIuI,EAAmBjC,EAAkBtG,GAAU2I,GAC/CA,UACKA,EAAYrC,EAAkBtG,GAAU/iE,QAAUghE,EAAQsK,EAAmBE,EAC1F,OAASzI,IAAa3C,IAASY,EAAQsK,EAAmBE,IAE1DxK,GAASA,EAAQsK,EAAmBE,GAAa,GACrC,IACRj3C,EAAMwsC,GAAS4F,GAAW3F,GAC1B5vC,EAAM2vC,GAAS6F,EAAU5F,GACzBzsC,EAAMwsC,GAASxsC,EAAKD,GAAWlD,EAAK65C,EAAY12C,IAAK02C,EAAY75C,KAAOA,GACxEA,EAAM2vC,GAAS3vC,EAAKkD,GAAWC,EAAK02C,EAAY12C,IAAK02C,EAAY75C,KAAOmD,GAEhF,CACJ,CAEA,OAAIA,GAAOnD,GAAOuxC,GAASvxC,EAAKmD,GAAO,EAC5B,CACHA,IAAKA,EACLnD,IAAKA,EACL2xC,SAAU7nD,EAAQuvD,iBAAmBvvD,EAAQ6nD,SAC7CE,aAAc/nD,EAAQwvD,qBAAuBxvD,EAAQ+nD,mBAL7D,CAQJ,EAEAoH,EAAiBzgE,UAAUs8D,UAAY,SAAoBtuC,EAAOs1B,GAC9D,IAAI+d,EAAcrlE,KAAK0kE,UAAUtnD,QAC7Bs6B,EAAQ13C,KAAKmgE,WAAWnuC,EAAOs1B,GAWnC,OATI5P,IACIA,EAAM/oB,IAAM02C,EAAY12C,MACxB+oB,EAAM/oB,IAAM02C,EAAY12C,KAExB+oB,EAAMlsB,IAAM65C,EAAY75C,MACxBksB,EAAMlsB,IAAM65C,EAAY75C,MAIzBksB,CACX,EAEA+sB,EAAiBzgE,UAAU0zC,MAAQ,WAC/B,OAAO13C,KAAK0kE,UAAUtC,cAC1B,EAEAqC,EAAiBzgE,UAAUyuD,aAAe,WACtCgL,EAAaz5D,UAAUyuD,aAAazvD,KAAKhD,MACzCA,KAAK+lE,mBACT,EAEAtB,EAAiBzgE,UAAUivD,YAAc,WACrCwK,EAAaz5D,UAAUivD,YAAYjwD,KAAKhD,MACxCA,KAAKmlE,YAAc,EACvB,EAEAV,EAAiBzgE,UAAU2yD,cAAgB,WACvC32D,KAAKgmE,qBACLvI,EAAaz5D,UAAU2yD,cAAc3zD,KAAKhD,KAC9C,EAEAykE,EAAiBzgE,UAAUgiE,mBAAqB,WAC5C,IACI1wD,EADMtV,KACQsV,QACd6vD,EAFMnlE,KAEYmlE,YACtB,GAA2B,IAAvBA,EAAY/qE,OAAhB,CAIA,IAAIk5D,EAAUtzD,KAAKszD,UACf3I,EAAWr1C,EAAQq1C,SACnB4I,EAASj+C,EAAQ6vD,YAAY5R,QAAUj+C,EAAQ08C,OAAOuB,OAEtDkL,EAAa0G,EAAY,GAC7B,GAAI1G,EAAY,CACZ,IAAI5hB,EAAW8N,EAAW2I,EAAQ/oB,GAAMk0B,EAAWxuC,IAAIx7B,SAAW,EAAK6+D,EAAQhpB,GAC/EtqC,KAAKq3D,cAAcoH,EAAYlL,EAAQ1W,EAC3C,CAEA,IAAI0b,EAAY4M,EAAY,GAC5B,GAAI5M,EAAW,CACX,IAAI0N,EAAatb,EAAW2I,EAAQ7oB,GAAM8tB,EAAUtoC,IAAIx7B,SAAW,EAAK6+D,EAAQ9oB,GAChFxqC,KAAKq3D,cAAckB,EAAWhF,EAAQ0S,EAC1C,CAhBA,CAiBJ,EAEAxB,EAAiBzgE,UAAUkvD,iBAAmB,WAC1CuK,EAAaz5D,UAAUkvD,iBAAiBlwD,KAAKhD,MAC7CA,KAAKkmE,uBACT,EAEAzB,EAAiBzgE,UAAUu6D,qBAAuB,WAC9Cd,EAAaz5D,UAAUu6D,qBAAqBv7D,KAAKhD,MACjDA,KAAKmmE,uBACT,EAEA1B,EAAiBzgE,UAAUmiE,sBAAwB,WAC/C,IACIhB,EADMnlE,KACYmlE,YAClBnT,EAFMhyD,KAEOgyD,OACjB,GAA2B,IAAvBmT,EAAY/qE,OAAhB,CAaA,IAAIgsE,EAAkBjB,EAAY,GAClC,GAAIiB,GAAmBA,EAAgB9wD,QAAQvhB,QAC3C,IAAK,IAAI2X,EAAI,EAAGA,EAAIsmD,EAAO53D,OAAQsR,IAAK,CAEpC,IADewpC,EAAKkxB,EAAiBpU,EAAOtmD,IAExC,KAER,CAGJ,IAAI26D,EAAiBlB,EAAY,GACjC,GAAIkB,GAAkBA,EAAe/wD,QAAQvhB,QACzC,IAAK,IAAIuyE,EAAMtU,EAAO53D,OAAS,EAAGksE,EAAM,IAAKA,EAAK,CAE9C,IADiBpxB,EAAKmxB,EAAgBrU,EAAOsU,IAEzC,KAER,CA5BJ,CAEA,SAASpxB,EAAKqxB,EAAYrX,GACtB,QAAKA,EAAM55C,QAAQvhB,UAAWm7D,EAAMj/B,IAAIwb,SAAS86B,EAAWt2C,QACxDi/B,EAAM55C,QAAQvhB,SAAU,GACjB,EAIf,CAqBJ,EAEA0wE,EAAiBzgE,UAAUijD,WAAa,WAIpC,IAHA,IAAIh3B,EAAMwtC,EAAaz5D,UAAUijD,WAAWjkD,KAAKhD,MAC7CmlE,EAAcnlE,KAAKmlE,YAEdz5D,EAAI,EAAGA,EAAIy5D,EAAY/qE,OAAQsR,IAAK,CACzC,IAAIwjD,EAAQiW,EAAYz5D,GACpBwjD,EAAM55C,QAAQvhB,SACdk8B,EAAIya,KAAKwkB,EAAMj/B,IAEvB,CAEA,OAAOA,CACX,EAEAw0C,EAAiBzgE,UAAUovD,gBAAkB,SAA0B94D,EAAO04D,EAAcG,QAClE,IAAjBA,IAA0BA,EAAe,CAAC,GAE/C,IAAI79C,EAAUtV,KAAKsV,QACf0wC,EAAW1wC,EAAQmrD,YAAcnrD,EAAQyvD,aAAezvD,EAAQmrD,UAAUnmE,GAAS,KACnFkd,EAAOxX,KAAKklE,cAAc3C,OAAOjoE,GACjCksE,EAAaxT,EAAayT,YAAYzmE,KAAKklE,cAAc5vD,QAAQ6nD,UAErEnK,EAAa7xC,OAAS6xC,EAAa7xC,QAAUqlD,EAC7CrT,EAAanN,SAAWA,EAExB,IAAI9sD,EAAO8G,KAAKm4D,cAAc3gD,EAAMw7C,EAAcG,GAClD,GAAIj6D,EACA,OAAO,IAAIk1D,GAAU52C,EAAMte,EAAMoB,EAAO0rD,EAAUgN,EAE1D,EAEAyR,EAAiBzgE,UAAU+hE,kBAAoB,WAC3C,IAAIvkC,EAASxhC,KAETzN,EAAMyN,KAAKklE,cACXnC,EAAexwE,EAAIwwE,aACnBE,EAAa1wE,EAAI0wE,WACjB3tD,EAAUtV,KAAKsV,QACf09C,EAAenoD,OAAOW,OAAO,CAAC,EAAG8J,EAAQ08C,OAAQ18C,EAAQ6vD,YAAa,CACtEh5B,MAAO3oB,EACPohC,OAAQtvC,EAAQsvC,SAGpB,IAA6B,IAAzBoO,EAAaj/D,QAAjB,CAIAiM,KAAK+yD,uBAAuBC,GAC5BA,EAAazE,cAAgB/qC,EAEC,SAA1BwvC,EAAatnB,WACbsnB,EAAatnB,SAAW,EACxBp2B,EAAQ4wD,uBAAwB,GAGpC,IAAIM,EAAaxT,EAAayT,YAAYzmE,KAAKklE,cAAc5vD,QAAQ6nD,UACrEnK,EAAa7xC,OAAS6xC,EAAa7xC,QAAUqlD,EAE7C,IAAIE,EAAc,SAAUpsE,EAAOkd,EAAMte,GACrC,GAAIA,EAAM,CACN,IAAIg2D,EAAQ,IAAId,GAAU52C,EAAMte,EAAMoB,EAAO,KAAM04D,GACnDxxB,EAAO3V,OAAOqjC,GACd1tB,EAAO2jC,YAAY/1D,KAAK8/C,EAC5B,CACJ,EAGAwX,EAAY,EAAG3D,EADC/iE,KAAKm4D,cAAc4K,EAAc/P,EAAc,CAAE14D,MAAO,EAAGo/C,MAAO,KAIlFgtB,EAAY,EAAGzD,EADDjjE,KAAKm4D,cAAc8K,EAAYjQ,EAAc,CAAE14D,MAAO,EAAGo/C,MAAO,IAxB9E,CA0BJ,EAEA+qB,EAAiBzgE,UAAUkiE,sBAAwB,WAC/C,IAAI1kC,EAASxhC,KAETgyD,EAAShyD,KAAKmlE,YAClB,GAAKnlE,KAAKsV,QAAQ4wD,wBAAyBlmE,KAAKsV,QAAQq1C,UAA8B,IAAlBqH,EAAO53D,OAA3E,CAIA,IAAIusE,EAAc,SAAUzX,EAAOqF,EAAej6D,GAC9C,IAAI9F,EAAoE,EAA5DssB,KAAKC,IAAIwzC,EAAcj6D,EAAQ,GAAKi6D,EAAcj6D,IAC1Du3B,EAAQ2P,EAAOk2B,qBAAqBxI,EAAMj/B,IAAKz7B,GACrC,IAAVq9B,IACAq9B,EAAM55C,QAAQo2B,SAAW7Z,EACzBq9B,EAAMzL,OAAO,IAAIpZ,IAEzB,EAEIkqB,EAAgBv0D,KAAKy0D,wBACzBkS,EAAY3U,EAAO,GAAIuC,EAAe,GACtCoS,EAAY3U,EAAO,GAAIuC,EAAeA,EAAcn6D,OAAS,EAb7D,CAcJ,EAEAqqE,EAAiBzgE,UAAU27D,cAAgB,SAAwBxiE,GAC/D,OAAO6C,KAAK0kE,UAAUrC,WAAWllE,EACrC,EAEAsnE,EAAiBzgE,UAAU+zD,KAAO,SAAex0B,EAAMjkC,EAAIs4D,GACvD,IAAIgP,EAAY5mE,KAAK0kE,UACjBn7C,EAAQga,EACR/Z,EAAMlqB,EAENiqB,aAAiB9R,OACjB8R,EAAQq9C,EAAUxJ,UAAU7zC,IAG5BC,aAAe/R,OACf+R,EAAMo9C,EAAUxJ,UAAU5zC,IAG9B,IAAIuuC,EAAO/3D,KAAKy1D,QAAQlsC,EAAOC,EAAKouC,GACpC,GAAIG,EACA,OAAOA,EAAK/rB,QAEpB,EAEAy4B,EAAiBzgE,UAAUyxD,QAAU,SAAkB5mC,EAAGjkB,EAAGgtD,GACzD,IAAIruC,EAAQsF,EACRrF,EAAM5e,EAUV,cARW2e,IAAUjF,IACjBiF,EAAQvpB,KAAK2/D,cAAcp2C,WAGpBC,IAAQlF,IACfkF,EAAMxpB,KAAK2/D,cAAcn2C,IAGtBi0C,EAAaz5D,UAAUyxD,QAAQzyD,KAAKhD,KAAMupB,EAAOC,EAAKouC,EACjE,EAEA6M,EAAiBzgE,UAAUm1D,WAAa,WACpC,IACIzhB,EAAQsqB,GADEhiE,KAAKsV,QACewoD,eAElC,MAAO,CACHnvC,IAAK0sC,GAAO3jB,EAAM/oB,KAClBnD,IAAK6vC,GAAO3jB,EAAMlsB,KAE1B,EAEAi5C,EAAiBzgE,UAAUg8D,WAAa,SAAqB1lE,EAAO8iB,GAChE,OAAOpd,KAAK0kE,UAAUnC,OAAOjoE,EAAO8iB,EACxC,EAEAqnD,EAAiBzgE,UAAUi8D,gBAAkB,WACzC,OAAOjgE,KAAK0kE,UAAUpC,aAC1B,EAEAmC,EAAiBzgE,UAAUi6D,aAAe,WACtC,OAAOj+D,KAAK0kE,UAAUvC,gBAC1B,EAEAsC,EAAiBzgE,UAAU+yD,mBAAqB,WAC5C,OAAQ/2D,KAAKklE,cAAc5vD,QAAQwkD,SACvC,EAEA2K,EAAiBzgE,UAAU+1D,mBAAqB,WACxC/5D,KAAKolE,YAITplE,KAAKsV,QAAQuoD,WAAa79D,KAAK0kE,UAAU30D,SAC7C,EAEA00D,EAAiBzgE,UAAU87D,YAAc,SAAsB56B,GAC3D,IAAI5qC,EAAQ0F,KAAK4/D,mBAAmB16B,GAEpC,OAAc,OAAV5qC,EACO,KAGJ0F,KAAK0kE,UAAUnC,OAAOjoE,EACjC,EAEAmqE,EAAiBzgE,UAAU+7D,WAAa,SAAqB5iE,GACzD,OAAO6C,KAAK0kE,UAAU3E,WAAW5iE,EACrC,EAEAsnE,EAAiBzgE,UAAUk9D,oBAAsB,WAC7C,IAAIxpB,EAAQ13C,KAAK0kE,UAAUvL,aAC3B,MAAO,CACHxqC,IAAK3uB,KAAK0kE,UAAU3E,WAAWroB,EAAM/oB,KACrCnD,IAAKxrB,KAAK0kE,UAAU3E,WAAWroB,EAAMlsB,KAE7C,EAEAi5C,EAAiBzgE,UAAUk6D,WAAa,WACpC,OAAOl+D,KAAK0kE,UAAUtnD,OAC1B,EAEAqnD,EAAiBzgE,UAAUm9D,WAAa,WACpC,OAAOnhE,KAAK0kE,UAAUvD,YAC1B,EAEAsD,EAAiBzgE,UAAUohE,QAAU,WACjC,OAAQplE,KAAKsV,QAAQwoD,cAAc1jE,MACvC,EAEAqqE,EAAiBzgE,UAAUo6D,aAAe,WACtC,IAAqC,IAAjCp+D,KAAKsV,QAAQmtD,iBAA6BziE,KAAKolE,UAC/C,OAAOplE,KAAK03C,QAGhB,IAAIpiC,EAAUtV,KAAKsV,QACfiwD,EAAavD,GAAc1sD,EAAQwoD,eAQvC,OANgB,IAAI0E,GAAU+C,EAAW52C,IAAK42C,EAAW/5C,IAAK3gB,OAAOW,OAAO,CAAC,EAAG8J,EAAS,CACrFwkD,WAAW,EACX2I,iBAAiB,EACjBI,WAAYvtD,EAAQwkD,aAGPsI,cACrB,EAEOqC,CACX,CA9mBwB,CA8mBtBhH,IAEF9nC,GAAkB8uC,GAAkB,CAChCtxE,KAAMwwB,EACNquC,OAAQ,CACJyU,YAAanF,IAEjB6D,YAAa,CACTpxE,SAAS,GAEb0vE,kBAAmB,CACflC,aAAc,CAAE,EAAG,GAAI,KACvBC,QAAS,CAAE,EAAG,EAAG,EAAG,GAAI,IACxBC,QAAS,CAAE,EAAG,EAAG,EAAG,GAAI,IACxBlG,MAAO,CAAE,EAAG,EAAG,GACfmG,KAAM,CAAE,EAAG,EAAG,GACdC,MAAO,CAAE,EAAG,GACZC,OAAQ,CAAE,EAAG,EAAG,EAAG,GACnBC,MAAO,CAAE,EAAG,EAAG,EAAG,EAAG,GAAI,GAAI,KAEjC6B,cAAe,KAGnB,UC17Be,SAAS93C,GAAMzuB,EAAOylD,GACjC,OAAO5hC,GAAMF,KAAK8K,MAAMzuB,EAAQylD,GAAQA,EAAM/+B,EAClD,CCFe,SAAS8H,GAAKxuB,EAAOylD,GAChC,OAAO5hC,GAAMF,KAAK6K,KAAKxuB,EAAQylD,GAAQA,EAAM/+B,EACjD,CCHe,SAASgjD,GAAgB1pE,GACpC,OAAO2jB,KAAK0K,IAAI1K,KAAK6N,IAAIxxB,EAAOkkE,KAAmB,IACvD,CCWA,IAAIyF,GAAkBhmD,KAAKuI,IAAI,IAAI,GAE/B09C,GAAe,SAAUhV,GACzB,SAASgV,EAAY3N,EAAWC,EAAW/jD,EAAS0uC,GAChD+N,EAAK/uD,KAAKhD,KAAM6K,OAAOW,OAAO,CAAC,EAAG8J,EAAS,CACvC8jD,UAAWA,EACXC,UAAWA,IACXrV,EACR,CAoOA,OAlOK+N,IAAOgV,EAAYh8D,UAAYgnD,GACpCgV,EAAY/iE,UAAY6G,OAAOS,OAAQymD,GAAQA,EAAK/tD,WACpD+iE,EAAY/iE,UAAUqH,YAAc07D,EAEpCA,EAAY/iE,UAAUw/C,gBAAkB,SAA0BluC,GAC9D,IAAI0xD,EAgOZ,SAAyB5N,EAAWC,EAAW/jD,GAC3C,IAAI2xD,EAAc3xD,EAAQ2xD,YAEtBC,EC/PO,SAAqBv4C,EAAKnD,EAAK27C,GAC1C,IAAKx4C,IAAQnD,EACT,OAAO,EAGX,IAAI47C,EAEJ,GAAIz4C,GAAO,GAAKnD,GAAO,EAAG,CACtB,IAAIytC,EAAWtqC,IAAQnD,EAAM,EAAImD,EAGjC,IAAe,IAAXw4C,IAAsBA,IADd37C,EAAMytC,GAAYztC,ENCjB,GMCT,OAAO,EAGX47C,EAAUtmD,KAAK0K,IAAI,EAAGytC,GAAaztC,EAAMytC,GAAY,EACzD,MACImO,EAAUz4C,EAGd,OAAOy4C,CACX,CD0OkBC,CAAYjO,EAAWC,EAAW4N,GAC5CK,EEhQO,SAAqB34C,EAAKnD,EAAK27C,GAC1C,IAAKx4C,IAAQnD,EACT,OAAO,EAGX,IAAI+7C,EAEJ,GAAI54C,GAAO,GAAKnD,GAAO,EAAG,CACtB,IAAI0tC,EAAWvqC,IAAQnD,EAAM,EAAIA,EAE7B5K,EAAOE,KAAKC,KAAKm4C,EAAWvqC,GAAOuqC,GACvC,IAAe,IAAXiO,IAAsBA,GAAUvmD,EPAvB,GOCT,OAAO,EAGX2mD,EAAUzmD,KAAK6N,IAAI,EAAGuqC,GAAavqC,EAAMuqC,GAAY,EACzD,MACIqO,EAAU/7C,EAGd,OAAO+7C,CACX,CF2OkBC,CAAYpO,EAAWC,EAAW4N,GAE5C5S,EAAYtvB,GAAcmiC,EAASI,GACnCN,EAAc,CACd3S,UAAWA,IAGkB,IAA7B/+C,EAAQmyD,mBACJP,EAAU,GAAKQ,GAAeR,EAAS7S,EAAW,EAAI,KACtD6S,GAAW7S,GAGXiT,EAAU,GAAKI,GAAeJ,EAASjT,EAAW,EAAI,KACtDiT,GAAWjT,IAOnB,OAHA2S,EAAYr4C,IAAM/C,GAAMs7C,EAAS7S,GACjC2S,EAAYx7C,IAAMG,GAAK27C,EAASjT,GAEzB2S,CACX,CAzP0BW,CAAgBryD,EAAQ8jD,UAAW9jD,EAAQ+jD,UAAW/jD,GAGxE,OAFAtV,KAAK4nE,aA0Pb,SAA0BZ,EAAa1xD,GACnC,MAAO,CACHqZ,IAAKxJ,GAAQ7P,EAAQqZ,KAAO7N,KAAK6N,IAAIq4C,EAAYr4C,IAAKrZ,EAAQqZ,KAAOq4C,EAAYr4C,IACjFnD,IAAKrG,GAAQ7P,EAAQkW,KAAO1K,KAAK0K,IAAIw7C,EAAYx7C,IAAKlW,EAAQkW,KAAOw7C,EAAYx7C,IACjF6oC,UAAW2S,EAAY3S,UAE/B,CAhQ4BwT,CAAiBb,EAAa1xD,GA2Q1D,SAAqB0xD,EAAac,GAC9B,IACIC,EAAYC,EADZ1yD,EAAUwyD,EAGd,GAAIA,EAAa,EAbrB,SAAyBxyD,EAASkT,GAC9B,IAAK,IAAI/T,EAAM,EAAGA,EAAM+T,EAAOpuB,OAAQqa,IAAO,CAC1C,IAAIqJ,EAAQ0K,EAAO/T,GACI,OAAnBa,EAAQwI,KACRxI,EAAQwI,QAASrqB,EAEzB,CACJ,CAOQw0E,CAAgBH,EAAa,CAAE,MAAO,QAEtCC,EAAa5iD,GAAQ2iD,EAAYn5C,KACjCq5C,EAAa7iD,GAAQ2iD,EAAYt8C,KAEjC,IAAI08C,EAAgBH,GAAcC,EAE9BE,GACIJ,EAAYn5C,MAAQm5C,EAAYt8C,MAC5Bs8C,EAAYn5C,IAAM,EAClBm5C,EAAYn5C,IAAM,EAElBm5C,EAAYt8C,IAAM,GAK1Bs8C,EAAYzT,WACZ2S,EAAYr4C,IAAM/C,GAAMo7C,EAAYr4C,IAAKm5C,EAAYzT,WACrD2S,EAAYx7C,IAAMG,GAAKq7C,EAAYx7C,IAAKs8C,EAAYzT,YAC7C6T,IACP5yD,EAAUyR,GAAWigD,EAAac,GAGlCd,EAAY3S,UAAYtvB,GAAczvB,EAAQqZ,IAAKrZ,EAAQkW,KAEnE,CAEAw7C,EAAYrS,WAAar/C,EAAQ++C,WAAa2S,EAAY3S,WAAa,EAEvE,IAAIj8D,EAAS2uB,GAAWigD,EAAa1xD,GACjCld,EAAOu2B,KAAOv2B,EAAOozB,MACjBu8C,IAAeC,EACf5vE,EAAOozB,IAAMpzB,EAAOu2B,IAAMv2B,EAAOi8D,WACzB0T,GAAcC,IACtB5vE,EAAOu2B,IAAMv2B,EAAOozB,IAAMpzB,EAAOi8D,YAIzC,OAAOj8D,CACX,CAtTe+vE,CAAYnB,EAAa1xD,EACpC,EAEAyxD,EAAY/iE,UAAUuuD,WAAa,WAC/BvyD,KAAKugE,SAAWvgE,KAAK4nE,aAAaj5C,IAClC3uB,KAAKwgE,SAAWxgE,KAAK4nE,aAAap8C,IAClCxrB,KAAKooE,eAAiBpoE,KAAK4nE,aAAavT,UACxCr0D,KAAKo5D,UAAYp5D,KAAKsV,QAAQ8jD,UAC9Bp5D,KAAKq5D,UAAYr5D,KAAKsV,QAAQ+jD,SAClC,EAEA0N,EAAY/iE,UAAU6iB,MAAQ,WAC1B,OAAO,IAAIkgD,EACP/mE,KAAKo5D,UACLp5D,KAAKq5D,UACLxuD,OAAOW,OAAO,CAAC,EAAGxL,KAAKsV,SACvBtV,KAAKgkD,aAEb,EAEA+iB,EAAY/iE,UAAU67D,WAAa,WAC/B,OAAO,CACX,EAEAkH,EAAY/iE,UAAU0zC,MAAQ,WAC1B,IAAIpiC,EAAUtV,KAAKsV,QACnB,MAAO,CAAEqZ,IAAKrZ,EAAQqZ,IAAKnD,IAAKlW,EAAQkW,IAC5C,EAEAu7C,EAAY/iE,UAAUqkE,aAAe,SAAuBC,GACxD,GAAkB,IAAdA,EACA,OAAO,EAGX,IAAIhzD,EAAUtV,KAAKsV,QACfoiC,EAAQpiC,EAAQkW,IAAMlW,EAAQqZ,IAElC,OAAO7N,KAAK8K,MAAM5K,GAAM02B,EAAQ4wB,E/KhEX,I+KgE0C,CACnE,EAEAvB,EAAY/iE,UAAU+6D,iBAAmB,SAA2BptC,EAAM6iC,GACtE,IAAIl/C,EAAUtV,KAAKsV,QACf/iB,EAAMyN,KAAKu5D,WACXE,EAAUlnE,EAAIknE,QACdC,EAAannE,EAAImnE,WACjBpG,EAAU/gE,EAAI+gE,QAId1Q,EAAOjxB,GAHIp/B,EAAIinE,UACPlkD,EAAQkW,IAAMlW,EAAQqZ,MAG9B45C,EAAYvoE,KAAKqoE,aAAa12C,GAC9BqtC,EAAY,GACZzpD,EAAM+9C,EAAQoG,GACd8O,EAAW,EAEXhU,IACAgU,EAAWhU,EAAW7iC,GAG1B,IAAK,IAAIld,EAAM,EAAGA,EAAM8zD,EAAW9zD,IAC3BA,EAAM+zD,IAAa,GACnBxJ,EAAU5vD,KAAK4R,GAAMzL,E/KxFR,I+K2FjBA,GAAYqtC,EAAO6W,EAGvB,OAAOuF,CACX,EAEA+H,EAAY/iE,UAAUywD,sBAAwB,WAC1C,OAAOz0D,KAAK++D,iBAAiB/+D,KAAKsV,QAAQ++C,UAC9C,EAEA0S,EAAY/iE,UAAU0wD,sBAAwB,WAC1C,OAAO10D,KAAK++D,iBAAiB/+D,KAAKsV,QAAQq/C,UAC9C,EAEAoS,EAAY/iE,UAAUyxD,QAAU,SAAkB5mC,EAAGjkB,EAAGgtD,QACrC,IAAVA,IAAmBA,GAAQ,GAEhC,IAAItiD,EAAUtV,KAAKsV,QACf/iB,EAAMyN,KAAKu5D,WACXxuB,EAAOx4C,EAAIw4C,KACX0uB,EAAUlnE,EAAIknE,QACdnG,EAAU/gE,EAAI+gE,QACdkG,EAAWjnE,EAAIinE,SACfhK,EAAYj9D,EAAIi9D,UAChB5M,EAAO6W,GAAWD,GAAYlkD,EAAQkW,IAAMlW,EAAQqZ,MAEpDpF,EAAQkG,GAAeZ,EAAGjkB,GAAK,GAC/B4e,EAAMiG,GAAe7kB,EAAGikB,GAAK,GAE7B+oC,IACAruC,EAAQmF,GAAWnF,EAAOjU,EAAQqZ,IAAKrZ,EAAQkW,KAC/ChC,EAAMkF,GAAWlF,EAAKlU,EAAQqZ,IAAKrZ,EAAQkW,MAG/C,IAAIwlB,EAAKlwB,KAAK6N,IAAIpF,EAAOC,GAAOlU,EAAQqZ,IACpC4hB,EAAKzvB,KAAK0K,IAAIjC,EAAOC,GAAOlU,EAAQqZ,IAEpC4wC,EAAU,IAAIl1B,GAAIipB,EAAQhpB,GAAIgpB,EAAQ/oB,GAAI+oB,EAAQhpB,GAAIgpB,EAAQ/oB,IAIlE,OAHAg1B,EAAQx0B,EAAO,GAAK87B,GAAgBrX,EAAY5M,GAAQ6W,EAAU,EAAIzoB,EAAKT,IAC3EgvB,EAAQx0B,EAAO,GAAK87B,GAAgBrX,EAAY5M,GAAQ6W,EAAU,EAAIlpB,EAAKS,IAEpEuuB,CACX,EAEAwH,EAAY/iE,UAAUykE,SAAW,SAAmBvjC,GAChD,IAAI5vB,EAAUtV,KAAKsV,QACfkW,EAAMrH,OAAO7O,EAAQkW,KACrBmD,EAAMxK,OAAO7O,EAAQqZ,KACrBrJ,EAAStlB,KAAK25D,YAAYz0B,GAG9B,OAAI5f,EAAS,GAAKA,EAAS,EAChB,KAIJtE,GADK2N,EANMrJ,GAAUkG,EAAMmD,GAOd9K,EACxB,EAEAkjD,EAAY/iE,UAAUk8D,eAAiB,SAAyB50C,GAC5D,IAAIhW,EAAUtV,KAAKsV,QACfq1C,EAAWr1C,EAAQq1C,SACnBuD,EAAU54C,EAAQ44C,QAClB1iC,EAAMlW,EAAQkW,IACdmD,EAAMrZ,EAAQqZ,IAEd6qC,EADMx5D,KAAKu5D,WACIC,SAGfl0C,EAAStE,GAAMsK,GADPkuC,GADAhuC,EAAMmD,IAEgB9K,GAMlC,OAJK8mC,IAAYuD,GAAcvD,GAAYuD,IACvC5oC,GAAUA,GAGP,CACHqJ,IAAKA,EAAMrJ,EACXkG,IAAKA,EAAMlG,EACXA,OAAQA,EAEhB,EAEAyhD,EAAY/iE,UAAU8uD,YAAc,WAChC,OAAO9yD,KAAKqoE,aAAaroE,KAAKsV,QAAQ++C,UAC1C,EAEA0S,EAAY/iE,UAAUovD,gBAAkB,SAA0B94D,EAAO04D,EAAcG,GACnF,IAAI79C,EAAUtV,KAAKsV,QACfnY,EAAQ6jB,GAAM1L,EAAQqZ,IAAOr0B,EAAQgb,EAAQ++C,UAAYxwC,GACzD3qB,EAAO8G,KAAKm4D,cAAch7D,EAAO61D,EAAcG,GAEnD,OAAO,IAAI/E,GAAUjxD,EAAOjE,EAAMoB,EAAO,KAAM04D,EACnD,EAEA+T,EAAY/iE,UAAUg0D,iBAAmB,SAA2B76D,GAChE,IAAIu6C,EAAQ13C,KAAK03C,QACjB,OAAOA,EAAM/oB,KAAOxxB,GAASA,GAASu6C,EAAMlsB,GAChD,EAEAu7C,EAAY/iE,UAAU28D,IAAM,SAAcr1C,GACtC,IAAIosB,EAAQ13C,KAAKkgE,eAAe50C,GAChC,OAAOtrB,KAAK+4D,WAAWrhB,EAAM/oB,IAAK+oB,EAAMlsB,IAAKxrB,KAAKugE,SAAUvgE,KAAKwgE,SAAU9oB,EAAMpyB,OACrF,EAEAyhD,EAAY/iE,UAAU48D,YAAc,SAAsBr3C,EAAOC,GAC7D,IAAIq2C,EAAa7/D,KAAKyoE,SAASl/C,GAC3Bm/C,EAAW1oE,KAAKyoE,SAASj/C,GACzBmF,EAAM7N,KAAK6N,IAAIkxC,EAAY6I,GAC3Bl9C,EAAM1K,KAAK0K,IAAIq0C,EAAY6I,GAE/B,GAAI1oE,KAAK2oE,aAAah6C,EAAKnD,GACvB,MAAO,CACHmD,IAAKA,EACLnD,IAAKA,EAGjB,EAEAu7C,EAAY/iE,UAAUm8D,WAAa,SAAqBnuC,EAAOs1B,GAC3D,IAAIzK,EAAW/7B,KAAKC,IAAI/gB,KAAK25D,YAAYrS,IACrC5P,EAAQ13C,KAAKsV,QAAQkW,IAAMxrB,KAAKsV,QAAQqZ,IACxCrD,EAAQtrB,KAAK45D,aAAa5nC,EAAO0lB,GACjC0oB,EAAWvjB,EAAWvxB,EACtB+0C,GAAY,EAAIxjB,GAAYvxB,EAC5BqD,EAAM3N,GAAMhhB,KAAKsV,QAAQqZ,IAAMyxC,EAAUv8C,GACzC2H,EAAMxK,GAAMhhB,KAAKsV,QAAQkW,IAAM60C,EAAUx8C,GAM7C,OAJI2H,EAAMmD,EAAMm4C,KACZt7C,EAAMmD,EAAMm4C,IAGT,CACHn4C,IAAKA,EACLnD,IAAKA,EAEb,EAEAu7C,EAAY/iE,UAAUs8D,UAAY,SAAoBtuC,EAAOs1B,GACzD,IACIiZ,EADMvgE,KACSugE,SACfC,EAFMxgE,KAESwgE,SACf9oB,EAAQ13C,KAAKmgE,WAAWnuC,EAAOs1B,GAEnC,MAAO,CACH34B,IAAKD,GAAWgpB,EAAM/oB,IAAK4xC,EAAUC,GACrCh1C,IAAKkD,GAAWgpB,EAAMlsB,IAAK+0C,EAAUC,GACrCyG,aAAa,EAErB,EAEAF,EAAY/iE,UAAU2kE,aAAe,SAAuBh6C,EAAKnD,GAC7D,OAAOA,EAAMmD,EAAMm4C,EACvB,EAEOC,CACX,CA3OmB,CA2OjBhV,IA6FF,SAAS2V,GAAevqE,EAAOyrE,EAASC,GACpC,IAAIC,EAAY9nD,GAAMF,KAAKC,IAAI5jB,EAAQyrE,GAAU/kD,GAGjD,OAAqB,IAAdilD,GAAmBA,EAFVF,GAAW,EAAIC,EAGnC,CAEAlzC,GAAkBoxC,GAAa,CAC3B5zE,KAAM,UACNw7B,IAAK,EACLnD,IAAK,EACLm/B,UAAU,EACVqL,eAAgB,CACZjiE,SAAS,EACTS,MAAO,EACPg6B,MAAOlL,GAEX0uC,OAAQ,CACJ7wC,OAAQ,0BAEZyjC,OAAQ,IAGZ,UGhWImkB,GAAiB,SAAUhX,GAC3B,SAASgX,EAAc3P,EAAWC,EAAW8O,EAAankB,GACtD,IAAIr1B,EAAM0sC,GAAOjC,GACb5tC,EAAM6vC,GAAOhC,GAEb9I,EAAcvM,EAAayM,KAC3Bn7C,EAAU6yD,GAAe,CAAC,EAO9B7yD,EAwMR,SAAuB8jD,EAAWC,EAAW/jD,GACzC,IAAIqZ,EAAMrZ,EAAQqZ,KAAOyqC,EACrB5tC,EAAMlW,EAAQkW,KAAO6tC,EACrB8D,EAAW7nD,EAAQ6nD,WAAa3xC,GAAOmD,EAnB/C,SAAmBrD,GACf,IAAIqG,EAAOyoC,GAEP9uC,GAASyvC,GACTppC,EAAO6oC,GACAlvC,GAASwvC,GAChBnpC,EAAO4oC,GACAjvC,GAASuvC,GAChBlpC,EAAO2oC,GACAhvC,GAASsvC,KAChBjpC,EAAO0oC,IAGX,OAAO1oC,CACX,CAKqDq3C,CAAU/N,GAAiBzvC,EAAKmD,IAAQyrC,IACrF6O,EAAejO,GAAcmC,GAC7BvB,EAAetmD,EAAQsmD,cAAgB,EACvCsL,EAAUtK,GAAUI,GAAOruC,GAAO,EAAGwuC,EAAUvB,IAAiBP,GAAO7vC,GACvE87C,EAAUzK,GAASG,GAAOxxC,GAAO,EAAG2xC,EAAUvB,GAE9CvH,GADgB/+C,EAAQ++C,UAAY/+C,EAAQ++C,eAAY5gE,IAC3Bk4B,GACboZ,GAAcmiC,EAAQrmD,UAAWymD,EAAQzmD,WACzCooD,GACAA,EAChBC,EAAczmB,GAASykB,EAASI,EAASnK,GAEzCgM,EADax9C,GAAKu9C,EAAa7U,GACL6U,EAC1BE,EAAOtoD,KAAK8K,MAAMu9C,EAAa,GAC/BE,EAAOF,EAAaC,EAEnB9zD,EAAQ6nD,iBACF7nD,EAAQ6nD,SASnB,OANA7nD,EAAQ6nD,SAAW7nD,EAAQ6nD,UAAYA,EACvC7nD,EAAQqZ,IAAMrZ,EAAQqZ,KAAO+sC,GAAYwL,GAAUkC,EAAMjM,EAAUvB,GACnEtmD,EAAQkW,IAAMlW,EAAQkW,KAAOkwC,GAAY4L,EAAS+B,EAAMlM,EAAUvB,GAClEtmD,EAAQq/C,UAAYr/C,EAAQq/C,WAAaN,EAAY,EACrD/+C,EAAQ++C,UAAYA,EAEb/+C,CACX,CAtOkBg0D,CAAc36C,EAAKnD,EAN7BlW,EAAUyR,GAAWzR,GAAW,CAAC,EAAG,CAChCqZ,IAAKshC,GAAUM,EAAaj7C,EAAQqZ,KACpCnD,IAAKykC,GAAUM,EAAaj7C,EAAQkW,KACpCwuC,kBAAmBuD,GAAWhN,EAAaj7C,EAAQi0D,oBAAsBj0D,EAAQ0kD,mBACjF4B,aAAc1L,GAAS56C,EAASi7C,MAIpCwB,EAAK/uD,KAAKhD,KAAMsV,EAAS0uC,GAEzBhkD,KAAKuwD,YAAcA,EACnBvwD,KAAKo5D,UAAYzqC,EACjB3uB,KAAKq5D,UAAY7tC,EAEjB,IAAIowC,EAAetmD,EAAQsmD,cAAgB,EAC3C57D,KAAKugE,SAAWvD,GAAOJ,GAAUI,GAAOruC,GAAO,EAAGrZ,EAAQ6nD,SAAUvB,IACpE57D,KAAKwgE,SAAWxD,GAAOH,GAASG,GAAOxxC,GAAO,EAAGlW,EAAQ6nD,SAAUvB,GACvE,CA0KA,OAxKK7J,IAAOgX,EAAch+D,UAAYgnD,GACtCgX,EAAc/kE,UAAY6G,OAAOS,OAAQymD,GAAQA,EAAK/tD,WACtD+kE,EAAc/kE,UAAUqH,YAAc09D,EAEtCA,EAAc/kE,UAAU6iB,MAAQ,WAC5B,OAAO,IAAIkiD,EAAc/oE,KAAKo5D,UAAWp5D,KAAKq5D,UAAWxuD,OAAOW,OAAO,CAAC,EAAGxL,KAAKsV,SAAUtV,KAAKgkD,aACnG,EAEA+kB,EAAc/kE,UAAU0zC,MAAQ,WAC5B,IAAIpiC,EAAUtV,KAAKsV,QACnB,MAAO,CAAEqZ,IAAKrZ,EAAQqZ,IAAKnD,IAAKlW,EAAQkW,IAC5C,EAEAu9C,EAAc/kE,UAAUqkE,aAAe,SAAuBC,GAC1D,IAAIhzD,EAAUtV,KAAKsV,QAEnB,OAAOwL,KAAK8K,MACR62B,GAASntC,EAAQqZ,IAAKrZ,EAAQkW,IAAKlW,EAAQ6nD,UAAYmL,EAAY,EAE3E,EAEAS,EAAc/kE,UAAU+6D,iBAAmB,SAA2Bnc,GAYlE,IAXA,IAAIttC,EAAUtV,KAAKsV,QACf/iB,EAAMyN,KAAKu5D,WACXznD,EAAMvf,EAAIknE,QACVD,EAAWjnE,EAAIinE,SACfjwC,EAAQh3B,EAAIi9D,UACZ+Y,EAAYvoE,KAAKqoE,aAAazlB,GAE9B5wB,EAAQwnC,EADIuD,GAASznD,EAAQkW,IAAKlW,EAAQqZ,KAE1CitC,EAAetmD,EAAQsmD,cAAgB,EAEvCoD,EAAY,CAAEz1C,GACT7d,EAAI,EAAGA,EAAI68D,EAAW78D,IAAK,CAChC,IACI6J,EAAMgU,EAAQwzC,GADPrB,GAAYpmD,EAAQqZ,IAAKjjB,EAAIk3C,EAAMttC,EAAQ6nD,SAAUvB,GAC/BtmD,EAAQqZ,KAAOqD,EAAQlgB,EAExDktD,EAAU5vD,KAAK4R,GAAMzL,ElLzEJ,GkL0ErB,CAEA,OAAOypD,CACX,EAEA+J,EAAc/kE,UAAUywD,sBAAwB,WAC5C,OAAOz0D,KAAK++D,iBAAiB/+D,KAAKsV,QAAQ++C,UAC9C,EAEA0U,EAAc/kE,UAAU0wD,sBAAwB,WAC5C,OAAO10D,KAAK++D,iBAAiB/+D,KAAKsV,QAAQq/C,UAC9C,EAEAoU,EAAc/kE,UAAUyxD,QAAU,SAAkB5mC,EAAGjkB,EAAGgtD,GACtD,OAAOmP,GAAAA,UAAAA,QAAAA,KACH/mE,KAAMiwD,GAAUjwD,KAAKuwD,YAAa1hC,GAAIohC,GAAUjwD,KAAKuwD,YAAa3lD,GAAIgtD,EAE9E,EAEAmR,EAAc/kE,UAAUykE,SAAW,SAAmBvjC,GAClD,IAAI/nC,EAAQ4pE,GAAAA,UAAAA,SAAAA,KAAoC/mE,KAAMklC,GAEtD,OAAiB,OAAV/nC,EAAiBk+D,GAAOl+D,GAAS,IAC5C,EAEA4rE,EAAc/kE,UAAU8uD,YAAc,WAClC,OAAO9yD,KAAKqoE,aAAaroE,KAAKsV,QAAQ++C,UAC1C,EAEA0U,EAAc/kE,UAAUovD,gBAAkB,SAA0B94D,EAAO04D,EAAcG,GACrF,IAAI79C,EAAUtV,KAAKsV,QACfgQ,EAAShrB,EAAQgb,EAAQ++C,UACzBuH,EAAetmD,EAAQsmD,cAAgB,EACvCpkD,EAAOlC,EAAQqZ,IAEfrJ,EAAS,IACT9N,EAAOkkD,GAAYlkD,EAAM8N,EAAQhQ,EAAQ6nD,SAAUvB,IAGvD,IAAI4K,EAAaxT,EAAayT,YAAYnxD,EAAQ6nD,UAClDnK,EAAa7xC,OAAS6xC,EAAa7xC,QAAUqlD,EAE7C,IAAIttE,EAAO8G,KAAKm4D,cAAc3gD,EAAMw7C,EAAcG,GAClD,OAAO,IAAI/E,GAAU52C,EAAMte,EAAMoB,EAAO,KAAM04D,EAClD,EAEA+V,EAAc/kE,UAAUk8D,eAAiB,SAAyB50C,GAC9D,IAAIhW,EAAUtV,KAAKsV,QACfg+C,EAAUtzD,KAAKszD,UACf3I,EAAWr1C,EAAQq1C,SACnBuD,EAAU54C,EAAQ44C,QAClBt3D,EAAO+zD,EAAW2I,EAAQ7+D,SAAW6+D,EAAQ9+D,QAC7CkjD,EAAQ13C,KAAK03C,QACb1lB,EAAQp7B,EAAOmmE,GAASrlB,EAAMlsB,IAAKksB,EAAM/oB,KAEzCrJ,EAAStE,GAAMsK,EAAQ0G,EAAOnO,GAQlC,OAPK8mC,IAAYuD,GAAcvD,GAAYuD,IACvC5oC,GAAUA,GAMP,CACHqJ,IAJOwsC,GAAS7lD,EAAQqZ,IAAKrJ,GAK7BkG,IAJK2vC,GAAS7lD,EAAQkW,IAAKlG,GAK3BA,OAAQA,EAEhB,EAEAyjD,EAAc/kE,UAAUg0D,iBAAmB,SAA2B76D,GAClE,IAAIu6C,EAAQ13C,KAAK03C,QAEjB,OAAOolB,GAAa3/D,EAAOu6C,EAAM/oB,MAAQ,GAAKmuC,GAAa3/D,EAAOu6C,EAAMlsB,MAAQ,CACpF,EAEAu9C,EAAc/kE,UAAU28D,IAAM,SAAcr1C,GACxC,IAAIosB,EAAQ13C,KAAKkgE,eAAe50C,GAAO,GACnCk+C,EAAgBxpE,KAAK+4D,WAAWiE,GAAOtlB,EAAM/oB,KAAMquC,GAAOtlB,EAAMlsB,KAAMxrB,KAAKugE,SAAUvgE,KAAKwgE,SAAU9oB,EAAMpyB,QAE9G,GAAIkkD,EACA,MAAO,CACH76C,IAAK0sC,GAAOmO,EAAc76C,KAC1BnD,IAAK6vC,GAAOmO,EAAch+C,KAGtC,EAEAu9C,EAAc/kE,UAAU48D,YAAc,SAAsBr3C,EAAOC,GAC/D,IAAIq2C,EAAa7/D,KAAKyoE,SAASl/C,GAC3Bm/C,EAAW1oE,KAAKyoE,SAASj/C,GACzBmF,EAAM7N,KAAK6N,IAAIkxC,EAAY6I,GAC3Bl9C,EAAM1K,KAAK0K,IAAIq0C,EAAY6I,GAE/B,MAAO,CACH/5C,IAAK0sC,GAAO1sC,GACZnD,IAAK6vC,GAAO7vC,GAEpB,EAEAu9C,EAAc/kE,UAAUm8D,WAAa,SAAqBnuC,EAAOs1B,GAC7D,IAAIzK,EAAW/7B,KAAKC,IAAI/gB,KAAK25D,YAAYrS,IACrC5P,EAAQ13C,KAAKsV,QAAQkW,IAAMxrB,KAAKsV,QAAQqZ,IACxCrD,EAAQtrB,KAAK45D,aAAa5nC,EAAO0lB,GACjC0oB,EAAWvjB,EAAWvxB,EACtB+0C,GAAY,EAAIxjB,GAAYvxB,EAC5BqD,EAAM0sC,GAAO2B,GAAOh9D,KAAKsV,QAAQqZ,KAAOyxC,GACxC50C,EAAM6vC,GAAO2B,GAAOh9D,KAAKsV,QAAQkW,KAAO60C,GAM5C,OAJI70C,EAAMmD,EA/KI,MAgLVnD,EAAM6vC,GAAO2B,GAAOruC,GAhLV,MAmLP,CACHA,IAAKA,EACLnD,IAAKA,EAEb,EAEAu9C,EAAc/kE,UAAUs8D,UAAY,SAAoBtuC,EAAOs1B,GAC3D,IAAI5P,EAAQ13C,KAAKmgE,WAAWnuC,EAAOs1B,GAInC,MAAO,CACH34B,IAJM0sC,GAAO3sC,GAAWsuC,GAAOtlB,EAAM/oB,KAAM3uB,KAAKugE,SAAUvgE,KAAKwgE,WAK/Dh1C,IAJM6vC,GAAO3sC,GAAWsuC,GAAOtlB,EAAMlsB,KAAMxrB,KAAKugE,SAAUvgE,KAAKwgE,WAMvE,EAEOuI,CACX,CAnMqB,CAmMnBhX,IAkDFp8B,GAAkBozC,GAAe,CAC7B51E,KAAMwwB,EACNqyC,eAAgB,CACZjiE,SAAS,EACTS,MAAO,EACPg6B,MAAOlL,GAEX0uC,OAAQ,CACJyU,YAAanF,MAIrB,UCpQIwF,GAAkB,KAElB2C,GAAmB,SAAU1X,GAC7B,SAAS0X,EAAgBrQ,EAAWC,EAAW/jD,EAAS0uC,GAEpD,IAAImkB,EAAcphD,GAAW,CAAEstC,UANd,GAM6C1lC,IAAKyqC,EAAW5tC,IAAK6tC,GAAa/jD,GAC5F7L,EAAO0+D,EAAY9T,UACnBiT,EAgYZ,SAAqB97C,EAAK/hB,GACtB,IACI69D,EADAoC,EAAkB1oD,GAAMkU,GAAI1J,EAAK/hB,GAAOoa,GAAqB,EAG7DyjD,EADA97C,GAAO,EACG/hB,EACiB,IAApBigE,IAA0BA,EAAkB,IAAOA,EAAkB,IAClE5oD,KAAKuI,IAAI5f,EAAMyrB,GAAI1J,EAAK/hB,GAAQ,IAEhCqX,KAAKuI,IAAI5f,EAAMqX,KAAK6K,KAAKuJ,GAAI1J,EAAK/hB,KAGhD,OAAO69D,CACX,CA5YsBE,CAAYnO,EAAW5vD,GACjCy9D,EAoXZ,SAAqBv4C,EAAKnD,EAAKlW,GAC3B,IAAI7L,EAAO6L,EAAQ++C,UACf6S,EAAUv4C,EACVA,GAAO,EACPu4C,EAAU17C,GAAO,EAAI1K,KAAKuI,IAAI5f,GAAO,GAAK,EAClC6L,EAAQ2xD,cAChBC,EAAUpmD,KAAKuI,IAAI5f,EAAMqX,KAAK8K,MAAMsJ,GAAIvG,EAAKllB,MAEjD,OAAOy9D,CACX,CA7XsBG,CAAYjO,EAAWC,EAAW8O,GAC5CzwB,EAyVZ,SAAmBwvB,EAASI,EAASa,EAAa7yD,GAC9C,IAAIqZ,EAAMw5C,EAAYx5C,IAClBnD,EAAM28C,EAAY38C,IAElBrG,GAAQgjD,EAAYnO,oBAAsBmO,EAAYnO,mBAAqB,GAC3E2P,KAGCxkD,GAAQ7P,EAAQkW,KAEVlW,EAAQkW,KAAO,GACtBm+C,KAFAn+C,EAAM87C,EAKLniD,GAAQ7P,EAAQqZ,KAEVrZ,EAAQqZ,KAAO,GACtBg7C,KAFAh7C,EAAMu4C,EAKV,MAAO,CACHv4C,IAAKA,EACLnD,IAAKA,EAEb,CAjXoBo+C,CAAU1C,EAASI,EAASa,EAAa7yD,GAErD6yD,EAAY38C,IAAMksB,EAAMlsB,IACxB28C,EAAYx5C,IAAM+oB,EAAM/oB,IACxBw5C,EAAYxT,UAAYr/C,EAAQq/C,WAAa3zC,GAAMvX,EAAO,EAAGoa,GAE7DkuC,EAAK/uD,KAAKhD,KAAMmoE,EAAankB,GAE7BhkD,KAAKugE,SAAWp7C,GAAQ7P,EAAQqZ,KAAO7N,KAAK6N,IAAIu4C,EAAS5xD,EAAQqZ,KAAOu4C,EACxElnE,KAAKwgE,SAAWr7C,GAAQ7P,EAAQkW,KAAO1K,KAAK0K,IAAI87C,EAAShyD,EAAQkW,KAAO87C,EACxEtnE,KAAK6pE,OAAS7oD,GAAMkU,GAAIwiB,EAAM/oB,IAAKllB,GAAOoa,GAC1C7jB,KAAK8pE,OAAS9oD,GAAMkU,GAAIwiB,EAAMlsB,IAAK/hB,GAAOoa,GAC1C7jB,KAAKo5D,UAAYA,EACjBp5D,KAAKq5D,UAAYA,EAEjBr5D,KAAKyyD,cACT,CAsUA,OApUKV,IAAO0X,EAAgB1+D,UAAYgnD,GACxC0X,EAAgBzlE,UAAY6G,OAAOS,OAAQymD,GAAQA,EAAK/tD,WACxDylE,EAAgBzlE,UAAUqH,YAAco+D,EAExCA,EAAgBzlE,UAAU6iB,MAAQ,WAC9B,OAAO,IAAI4iD,EACPzpE,KAAKo5D,UACLp5D,KAAKq5D,UACLxuD,OAAOW,OAAO,CAAC,EAAGxL,KAAKsV,SACvBtV,KAAKgkD,aAEb,EAEAylB,EAAgBzlE,UAAU67D,WAAa,WACnC,OAAO7/D,KAAKsV,QAAQqZ,GACxB,EAEA86C,EAAgBzlE,UAAUyxD,QAAU,SAAkB5mC,EAAGjkB,EAAGgtD,GACxD,IAAIrlE,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACdu0D,EAASt3E,EAAIs3E,OACbC,EAASv3E,EAAIu3E,OACbrgE,EAAO6L,EAAQ++C,UACf1lC,EAAMrZ,EAAQqZ,IACdnD,EAAMlW,EAAQkW,IACd4/B,EAAQprD,KAAKu5D,WACbxuB,EAAOqgB,EAAMrgB,KACb0uB,EAAUrO,EAAMqO,QAChBnG,EAAUlI,EAAMkI,QAChBkG,EAAWpO,EAAMoO,SACjBhK,EAAYpE,EAAMoE,UAClB5M,EAAO6W,GAAWD,GAAYsQ,EAASD,IACvCtgD,EAAQkG,GAAeZ,EAAGjkB,GAAK,GAC/B4e,EAAMiG,GAAe7kB,EAAGikB,GAAK,GAEjC,GAAItF,GAAS,GAAKC,GAAO,EACrB,OAAO,KAGPouC,IACAruC,EAAQmF,GAAWnF,EAAOoF,EAAKnD,GAC/BhC,EAAMkF,GAAWlF,EAAKmF,EAAKnD,IAG/BjC,EAAQ2L,GAAI3L,EAAO9f,GACnB+f,EAAM0L,GAAI1L,EAAK/f,GAEf,IAAIunC,EAAKlwB,KAAK6N,IAAIpF,EAAOC,GAAOqgD,EAC5Bt5B,EAAKzvB,KAAK0K,IAAIjC,EAAOC,GAAOqgD,EAE5BtK,EAAU,IAAIl1B,GAAIipB,EAAQhpB,GAAIgpB,EAAQ/oB,GAAI+oB,EAAQhpB,GAAIgpB,EAAQ/oB,IAIlE,OAHAg1B,EAAQx0B,EAAO,GAAK87B,GAAgBrX,EAAY5M,GAAQ6W,EAAU,EAAIzoB,EAAKT,IAC3EgvB,EAAQx0B,EAAO,GAAK87B,GAAgBrX,EAAY5M,GAAQ6W,EAAU,EAAIlpB,EAAKS,IAEpEuuB,CACX,EAEAkK,EAAgBzlE,UAAUykE,SAAW,SAAmBvjC,GACpD,IAAI3yC,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACdu0D,EAASt3E,EAAIs3E,OACbC,EAASv3E,EAAIu3E,OACbrgE,EAAO6L,EAAQ++C,UACfjJ,EAAQprD,KAAKu5D,WACbxuB,EAAOqgB,EAAMrgB,KACb0uB,EAAUrO,EAAMqO,QAChBjK,EAAYpE,EAAMoE,UAClBgK,EAAWpO,EAAMoO,SACjB5W,GAASknB,EAASD,GAAUrQ,EAC5Bl0C,EAASm0C,GAAWv0B,EAAM6F,GAAQykB,GAGtC,GAAIlqC,EAAS,GAAKA,EAASk0C,EACvB,OAAO,KAGX,IAAIr8D,EAAQ0sE,EANMvkD,EAASs9B,EAQ3B,OAAO5hC,GAAMF,KAAKuI,IAAI5f,EAAMtM,GAAQ0mB,EACxC,EAEA4lD,EAAgBzlE,UAAU0zC,MAAQ,WAC9B,IAAIpiC,EAAUtV,KAAKsV,QACnB,MAAO,CAAEqZ,IAAKrZ,EAAQqZ,IAAKnD,IAAKlW,EAAQkW,IAC5C,EAEAi+C,EAAgBzlE,UAAUk8D,eAAiB,SAAyB50C,GAChE,IAAI/4B,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACdu0D,EAASt3E,EAAIs3E,OACbC,EAASv3E,EAAIu3E,OACb5b,EAAU54C,EAAQ44C,QAClBvD,EAAWr1C,EAAQq1C,SACnBlhD,EAAO6L,EAAQ++C,UACff,EAAUtzD,KAAKszD,UACf18D,EAAO+zD,EAAW2I,EAAQ7+D,SAAW6+D,EAAQ9+D,QAE7C8wB,EAAStE,GAAMsK,GADP10B,GAAQkzE,EAASD,IACKhmD,GAMlC,OAJK8mC,IAAYuD,GAAcvD,GAAYuD,IACvC5oC,GAAUA,GAGP,CACHqJ,IAAK7N,KAAKuI,IAAI5f,EAAMogE,EAASvkD,GAC7BkG,IAAK1K,KAAKuI,IAAI5f,EAAMqgE,EAASxkD,GAC7BA,OAAQA,EAEhB,EAEAmkD,EAAgBzlE,UAAU8uD,YAAc,WACpC,IAAIiX,EAAWjpD,KAAK8K,MAAM5rB,KAAK8pE,QAG/B,OAFYhpD,KAAK8K,MAAMm+C,EAAW/pE,KAAK6pE,QAAU,CAGrD,EAEAJ,EAAgBzlE,UAAUywD,sBAAwB,WAC9C,IAAI2G,EAAQ,GAMZ,OAJAp7D,KAAKgqE,6BAA4B,SAAUntB,GACvCue,EAAMhsD,KAAKytC,EACf,GAAG,CAAE+F,KAAM,EAAGiQ,KAAM,IAEbuI,CACX,EAEAqO,EAAgBzlE,UAAUmwD,YAAc,SAAsBC,GAC1D,IAAI9+C,EAAUtV,KAAKsV,QACf+8C,EAAa/8C,EAAQ+8C,WACrBF,EAAa78C,EAAQ68C,WACrBxH,EAAWr1C,EAAQq1C,SACnB4I,EAASj+C,EAAQ08C,OAAOuB,OACxBD,EAAUtzD,KAAKszD,UAEfgB,EAAkB,CAGlB3J,SAAUA,GAGd,SAASvxD,EAAO6wE,EAAczY,GAC1B8C,EAAgB7C,MAAQ8B,EAASD,EAAQ9oB,GAAK8oB,EAAQ9oB,GAAKgnB,EAAY56D,KACvE09D,EAAgB5C,MAAQ6B,EAASD,EAAQ/oB,GAAKinB,EAAY56D,KAAO08D,EAAQ/oB,GACzE+pB,EAAgBzX,SAAWotB,EAE3B7V,EAAUvoC,OAAO0lC,GAAe+C,EAAiB9C,GACrD,CAUA,OARIa,EAAWt+D,SACXiM,KAAKgqE,4BAA4B5wE,EAAQi5D,GAGzCF,EAAWp+D,SACXiM,KAAKkqE,4BAA4B9wE,EAAQ+4D,GApBjC,EAwBhB,EAEAsX,EAAgBzlE,UAAU8xD,gBAAkB,SAA0BV,GAClE,IAAI9/C,EAAUtV,KAAKsV,QACfygD,EAAiBzgD,EAAQygD,eACzBC,EAAiB1gD,EAAQ0gD,eACzBrL,EAAWr1C,EAAQq1C,SACnB2I,EAAU8B,EAAQ9B,UAClB6C,EAAc,CACd3G,UAAW8D,EAAQ3I,EAAW,KAAO,MACrCmH,QAASwB,EAAQ3I,EAAW,KAAO,MACnCA,SAAUA,GAEV0H,EAAa,GAEbnwC,EAAYliB,KAAKg0D,kBACrB,SAAS56D,EAAO6wE,EAAcpY,GACrB3oC,GAAQ+gD,EAAc5X,KACvB8D,EAAYtZ,SAAWotB,EACvB/nD,EAAU2J,OAAO+lC,GAAmBuE,EAAatE,IAEjDQ,EAAWjjD,KAAK66D,GAExB,CAUA,OARIjU,EAAejiE,SACfiM,KAAKgqE,4BAA4B5wE,EAAQ48D,GAGzCD,EAAehiE,SACfiM,KAAKkqE,4BAA4B9wE,EAAQ28D,GAGtC7zC,EAAUtuB,QACrB,EAEA61E,EAAgBzlE,UAAUgmE,4BAA8B,SAAsC9jE,EAAUsrD,GAQpG,IAPA,IAAIj/D,EAAMyN,KAAKu5D,WACX/J,EAAYj9D,EAAIi9D,UAChB5M,EAAOrwD,EAAIqwD,KAEXinB,EADQ7pE,KACO6pE,OACfC,EAFQ9pE,KAEO8pE,OAEV1gD,EAAQtI,KAAK6K,KAAKk+C,GAAUrY,EAAYqB,KAAMzpC,GAAS0gD,EAAQ1gD,GAASooC,EAAY5O,KAAM,CAE/F18C,EADe8a,GAAMwuC,EAAY5M,GAAQx5B,EAAQygD,GAAShmD,GACvC2tC,EACvB,CACJ,EAEAiY,EAAgBzlE,UAAUkmE,4BAA8B,SAAsChkE,EAAUsrD,GAgBpG,IAfA,IAEIj/D,EAAMyN,KAAKsV,QACXqZ,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IACVmpC,EAAYpiE,EAAIoiE,UAChBlrD,EAAOlX,EAAI8hE,UACXjJ,EAAQprD,KAAKu5D,WACb/J,EAAYpE,EAAMoE,UAClB5M,EAAOwI,EAAMxI,KAEbinB,EADQ7pE,KACO6pE,OACfC,EAFQ9pE,KAEO8pE,OAGV1gD,EAFGtI,KAAK8K,MAAMi+C,GAECzgD,EAAQ0gD,EAAQ1gD,IAEpC,IADA,IAAI+gD,EAhBKnqE,KAgBiBoqE,sBAAsBhhD,GACvC3U,EAAM+8C,EAAYqB,KAAMp+C,EAAMkgD,EAAWlgD,GAAO+8C,EAAY5O,KAAM,CACvE,IAAIzlD,EAAQgtE,EAAahtE,MAAQsX,EAAM01D,EAAaE,UACpD,GAAIltE,EAAQquB,EACR,MAEJ,GAAIruB,GAASwxB,EAETzoB,EADe8a,GAAMwuC,EAAY5M,GAAQ1tB,GAAI/3B,EAAOsM,GAAQogE,GAAShmD,GAClD2tC,EAE3B,CAER,EAEAiY,EAAgBzlE,UAAUovD,gBAAkB,SAA0B94D,EAAO04D,EAAcG,GACvF,IAAI/pC,EAAQtI,KAAK6K,KAAK3rB,KAAK6pE,OAASvvE,GAChC6C,EAAQ2jB,KAAKuI,IAAIrpB,KAAKsV,QAAQ++C,UAAWjrC,GACzClwB,EAAO8G,KAAKm4D,cAAch7D,EAAO61D,EAAcG,GAEnD,OAAO,IAAI/E,GAAUjxD,EAAOjE,EAAMoB,EAAO,KAAM04D,EACnD,EAEAyW,EAAgBzlE,UAAUg0D,iBAAmB,SAA2B76D,GACpE,IAAIu6C,EAAQ13C,KAAK03C,QACjB,OAAOA,EAAM/oB,KAAOxxB,GAASA,GAASu6C,EAAMlsB,GAChD,EAEAi+C,EAAgBzlE,UAAU28D,IAAM,SAAcr1C,GAC1C,IAAIosB,EAAQ13C,KAAKkgE,eAAe50C,GAChC,OAAOtrB,KAAK+4D,WAAWrhB,EAAM/oB,IAAK+oB,EAAMlsB,IAAKxrB,KAAKugE,SAAUvgE,KAAKwgE,SAAU9oB,EAAMpyB,OACrF,EAEAmkD,EAAgBzlE,UAAU48D,YAAc,SAAsBr3C,EAAOC,GACjE,IAAIq2C,EAAa7/D,KAAKyoE,SAASl/C,GAC3Bm/C,EAAW1oE,KAAKyoE,SAASj/C,GAI7B,MAAO,CACHmF,IAJM7N,KAAK6N,IAAIkxC,EAAY6I,GAK3Bl9C,IAJM1K,KAAK0K,IAAIq0C,EAAY6I,GAMnC,EAEAe,EAAgBzlE,UAAUm8D,WAAa,SAAqBnuC,EAAOs1B,GAC/D,IACI79C,EADMzJ,KAAKsV,QACA++C,UACXwV,EAAS30C,GAAIl1B,KAAKsV,QAAQqZ,IAAKllB,GAC/BqgE,EAAS50C,GAAIl1B,KAAKsV,QAAQkW,IAAK/hB,GAC/BozC,EAAW/7B,KAAKC,IAAI/gB,KAAK25D,YAAYrS,IACrC5P,EAAQoyB,EAASD,EACjBv+C,EAAQtrB,KAAK45D,aAAa5nC,EAAO0lB,GACjC/oB,EAAM7N,KAAKuI,IAAI5f,EAAMogE,EAAShtB,EAAWvxB,GACzCE,EAAM1K,KAAKuI,IAAI5f,EAAMqgE,GAAU,EAAIjtB,GAAYvxB,GAMnD,OAJIE,EAAMmD,EAAMm4C,KACZt7C,EAAMmD,EAAMm4C,IAGT,CACHn4C,IAAKA,EACLnD,IAAKA,EAEb,EAEAi+C,EAAgBzlE,UAAUs8D,UAAY,SAAoBtuC,EAAOs1B,GAC7D,IAAI5P,EAAQ13C,KAAKmgE,WAAWnuC,EAAOs1B,GAE/BiZ,EADMvgE,KACSugE,SACfC,EAFMxgE,KAESwgE,SAEnB,MAAO,CACH7xC,IAAKD,GAAWgpB,EAAM/oB,IAAK4xC,EAAUC,GACrCh1C,IAAKkD,GAAWgpB,EAAMlsB,IAAK+0C,EAAUC,GAE7C,EAEAiJ,EAAgBzlE,UAAUomE,sBAAwB,SAAgChhD,GAC9E,IAAI72B,EAAMyN,KAAKsV,QACXq/C,EAAYpiE,EAAIoiE,UAChBlrD,EAAOlX,EAAI8hE,UACXl3D,EAAQ2jB,KAAKuI,IAAI5f,EAAM2f,GAK3B,MAAO,CACHjsB,MAAOA,EACPktE,WANYvpD,KAAKuI,IAAI5f,EAAM2f,EAAQ,GACVjsB,GACAw3D,EAMjC,EAEA8U,EAAgBzlE,UAAUu1D,SAAW,WACjC,IAAI+Q,EAAOvY,EAAK/tD,UAAUu1D,SAASv2D,KAAKhD,MAGxC,OAFAsqE,EAAK1nB,KAAO0nB,EAAK7Q,SAAW6Q,EAAK9Q,UAAYx5D,KAAK8pE,OAAS9pE,KAAK6pE,SAEzDS,CACX,EAEOb,CACX,CA9VuB,CA8VrB1X,IAqDF,SAAS4X,KACL,MAAM,IAAIvpE,MAAM,4DACpB,CAEA,SAAS80B,GAAInP,EAAGtc,GACZ,OAAOqX,KAAKoU,IAAInP,GAAKjF,KAAKoU,IAAIzrB,EAClC,CAEAksB,GAAkB8zC,GAAiB,CAC/Bt2E,KAAM,MACNkhE,UAhaqB,GAiarBM,UAAW,EACXqF,kBAAmB,EACnBrP,UAAU,EACVqL,eAAgB,CACZjiE,SAAS,EACTS,MAAO,EACPg6B,MAAOlL,GAEXshC,OAAQ,EACR4N,cAAc,IAGlB,UCrbI+X,GAAiB,CACjBzU,gBAAiB,SAASV,GACtB,IAIIoV,EAAaC,EAJbn1D,EAAUtV,KAAKsV,QACfwwB,EAAShlB,KAAKC,IAAI/gB,KAAKiwB,IAAIkV,SAASnf,EAAIovC,EAAQ9B,UAAU/oB,IAC1D0pB,EAAY,GACZyW,GAAY,EAoBhB,OAjBIp1D,EAAQ0gD,eAAejiE,UACvBy2E,EAAcxqE,KAAK2qE,oBAAoBvV,GACvCsV,GAAY,EAEZzW,EAAYj0D,KAAK4qE,qBACbJ,EAAa1kC,EAAQxwB,EAAQ0gD,iBAIjC1gD,EAAQygD,eAAehiE,UACvB02E,EAAczqE,KAAK6qE,oBAAoBzV,EAASsV,GAEhD7+C,GAAOooC,EAAWj0D,KAAK8qE,qBACnBL,EAAa3kC,EAAQxwB,EAAQygD,eAAgBX,EAASsV,KAIvDzW,CACX,EAEA2W,qBAAsB,SAAS58B,EAAQlI,EAAQxwB,GAC3C,OAAOtV,KAAK+qE,gBAAgB/8B,EAAQlI,EAAQxwB,EAChD,EAEAw1D,qBAAsB,SAAS98B,EAAQlI,EAAQxwB,EAAS8/C,EAASsV,GAC7D,IAAIM,EAAiBhrE,KAAKgrE,gBAAkBhrE,KAAKgrE,eAAellC,EAAQsvB,EAASsV,GACjF,OAAO1qE,KAAK+qE,gBAAgB/8B,EAAQlI,EAAQxwB,EAAS01D,EACzD,EAEAD,gBAAiB,SAAS/8B,EAAQlI,EAAQxwB,EAAS01D,GAa/C,IAZA,IAAIv0E,EAAQ,CACR8uB,OAAQ,CACJ/wB,MAAO8gB,EAAQ9gB,MACfg6B,MAAOlZ,EAAQkZ,MACf64B,SAAU/xC,EAAQ+xC,WAItBliB,EAASnlC,KAAKiwB,IAAIkV,SAClB8lC,EAAS,IAAIh/B,GAAY,CAAE9G,EAAOpf,EAAGof,EAAOnf,GAAK8f,GACjD5jB,EAAYliB,KAAKg0D,kBAEZtoD,EAAI,EAAGA,EAAIsiC,EAAO5zC,OAAQsR,IAAK,CACpC,IAAI+jD,EAAO,IAAItP,GAAU1pD,GACrBu0E,IACAC,EAAOnlC,OAASklC,EAAeh9B,EAAOtiC,KAG1C+jD,EAAKrR,OAAO6sB,EAAO9lC,QACd4X,OAAOkuB,EAAOv7B,QAAQ1B,EAAOtiC,GAAK,MAEvCwW,EAAU2J,OAAO4jC,EACrB,CAEA,OAAOvtC,EAAUtuB,QACrB,EAEAs3E,eAAgB,SAAS9V,EAASx+D,EAAMi8D,EAAMjQ,EAAMuoB,GAChD,IAAI3pC,EAASxhC,KAETorE,EAAOprE,KAAKqrE,UAAUz0E,EAAMi8D,EAAMjQ,EAAMuoB,GACxC71D,EAAU8/C,EAAQ9/C,QAClBg2D,EAAiBh2D,EAAQvhB,UAA4C,KAAhCuhB,EAAQm6C,MAAQ,CAAC,GAAG17D,QAE7D,OAAOsG,GAAI+wE,GAAM,SAAUzgE,GACvB,IAAIq2B,EAAQQ,EAAOuO,cAAcplC,GAEjC,IAAK2gE,GAA4B,KAAVtqC,EACnB,OAAOA,CAEf,GACJ,GAGJ,MC3EIuqC,GAAqB,SAAU9N,GAC/B,SAAS8N,IACL9N,EAAav1D,MAAMlI,KAAM+H,UAC7B,CA6NA,OA3NK01D,IAAe8N,EAAkBxgE,UAAY0yD,GAClD8N,EAAkBvnE,UAAY6G,OAAOS,OAAQmyD,GAAgBA,EAAaz5D,WAC1EunE,EAAkBvnE,UAAUqH,YAAckgE,EAE1CA,EAAkBvnE,UAAU0zC,MAAQ,WAChC,MAAO,CAAE/oB,IAAK,EAAGnD,IAAKxrB,KAAKsV,QAAQuoD,WAAWzjE,OAClD,EAEAmxE,EAAkBvnE,UAAUy/C,OAAS,SAAiBxzB,GAClDjwB,KAAKiwB,IAAMA,EACXjwB,KAAKwrE,cACT,EAEAD,EAAkBvnE,UAAUsvD,QAAU,WAClC,OAAOtzD,KAAKiwB,GAChB,EAEAs7C,EAAkBvnE,UAAUwnE,aAAe,WAUvC,IATA,IAGIxZ,EADMhyD,KACOgyD,OACbgB,EAFMhzD,KAEasV,QAAQ08C,OAC3Ba,EAAOG,EAAaH,MAAQ,EAC5BjQ,EAAOoQ,EAAapQ,MAAQ,EAC5BruB,EAAa,IAAI8V,GAEZ3+B,EAAI,EAAGA,EAAIsmD,EAAO53D,OAAQsR,IAAK,CACpCsmD,EAAOtmD,GAAG+3C,OAAOlvB,GACjB,IAAI+iC,EAAWtF,EAAOtmD,GAAGukB,IAEzB+hC,EAAOtmD,GAAG+3C,OAbDzjD,KAaey1D,QAAQ5C,EAAOnnD,EAAIk3C,GAAM7V,YAC7C,EAAGuqB,EAAS9iE,QAAS8iE,EAAS7iE,UAEtC,CACJ,EAEA82E,EAAkBvnE,UAAUqnE,UAAY,SAAoBz0E,EAAM60E,EAAYC,EAAYP,QAClE,IAAfA,IAAwBA,GAAa,GAW1C,IATA,IAAI71D,EAAUtV,KAAKsV,QAEfq2D,EADar2D,EAAQuoD,WAAWzjE,OACRxD,GAAQ,EAChCg1E,EAAW,IAAMD,EAEjB/oB,EAAO8oB,GAAc,EACrBN,EAAO,GACPv5C,EAAQ,EAEHnmB,EALE+/D,GAAc,EAKN//D,EAAIigE,EAAUjgE,GAAKk3C,EAE9B/wB,EADAvc,EAAQ44C,QACA,IAAMxiD,EAAIkgE,EAEVlgE,EAAIkgE,EAGhB/5C,EAAQ7Q,GAAM6Q,ErLlEG,GqLkEuB,IAElCs5C,GAAcjiD,GAAQ2I,EAAOs5C,IAC/BC,EAAKh8D,KAAKyiB,GAIlB,OAAOu5C,CACX,EAEAG,EAAkBvnE,UAAU6nE,eAAiB,WACzC,OAAO7rE,KAAKqrE,UAAU,EAC1B,EAEAE,EAAkBvnE,UAAU8nE,eAAiB,WACzC,OAAO9rE,KAAKqrE,UAAU,GAC1B,EAEAE,EAAkBvnE,UAAU+rC,cAAgB,SAAwBF,GAChE,OAAQ,IAAMA,EAAW7vC,KAAKsV,QAAQk3B,YAAc,GACxD,EAEA++B,EAAkBvnE,UAAUwmE,YAAc,WACtC,IAAIhpC,EAASxhC,KAEb,OAAO3F,GAAI2F,KAAK6rE,kBAAkB,SAAUh8B,GAAY,OAAOrO,EAAOuO,cAAcF,EAAW,GACnG,EAEA07B,EAAkBvnE,UAAU2rD,WAAa,WACrC,MAAO,EACX,EAEA4b,EAAkBvnE,UAAU2mE,oBAAsB,SAA8BvV,GAC5E,IAAIY,EAAiBh2D,KAAKsV,QAAQ0gD,eAClC,OAAOh2D,KAAKkrE,eAAe9V,EAAS,EAAGY,EAAenD,KAAMmD,EAAepT,KAC/E,EAEA2oB,EAAkBvnE,UAAU6mE,oBAAsB,SAA8BzV,EAASsV,GACrF,IAAIn4E,EAAMyN,KAAKsV,QACXygD,EAAiBxjE,EAAIwjE,eACrBC,EAAiBzjE,EAAIyjE,eACrB2U,EAAsBD,EAAY1qE,KAAKqrE,UAAU,EAAGrV,EAAenD,KAAMmD,EAAepT,MAAQ,KAEpG,OAAO5iD,KAAKkrE,eAAe9V,EAAS,GAAKW,EAAelD,KAAMkD,EAAenT,KAAM+nB,EACvF,EAEAY,EAAkBvnE,UAAUgnE,eAAiB,SAAyBllC,EAAQsvB,EAASsV,GACnF,GAAItV,EAAQ9/C,QAAQniB,OAASkwB,EAAK,CAC9B,IAAI0oD,EAAax8C,GAAI,KAAwC,EAAjCvvB,KAAKsV,QAAQuoD,WAAWzjE,SAChD4xE,EAAclrD,KAAKgR,IAAIi6C,GAAcjmC,EACrC0kC,EAAcxqE,KAAKwqE,cAEnBQ,EAAiB,SAASn5C,GAC1B,OAAK64C,GAAaxhD,GAAQ2I,EAAO24C,GACtB1kC,EAGJkmC,CACX,EACA,OAAOhB,CACX,CACJ,EAEAO,EAAkBvnE,UAAU+vD,gBAAkB,WAS1C,IARA,IAEIkB,EAAYj1D,KAAKsV,QAAQ2/C,WAAa,GAEtC33C,EAAQtd,KAAKm1D,eAAiB,IAAIhV,GAAW,CAC7CyE,QAAS,IAGJl5C,EAAI,EAAGA,EAAIupD,EAAU76D,OAAQsR,IAAK,CACvC,IAAIugE,EAAOhX,EAAUvpD,GACjBqsD,EAVK/3D,KAUSksE,aAAaD,GAC3BzM,EAXKx/D,KAWey1D,QAAQwW,EAAK1oC,MAEjC6lC,EAAO6C,EAAK1oC,KAAOziB,KAAK8K,MAAMqgD,EAAK1oC,MACvCw0B,EAAKvrB,YAAc48B,EAAO5J,EAAW3tC,MAErC,IAAIw3C,EAAOvoD,KAAK6K,KAAKsgD,EAAK3sE,IAAM2sE,EAAK3sE,GACrCy4D,EAAKlmC,QAAUw3C,EAAOD,GAAQ5J,EAAW3tC,MAEzC,IAAIs6C,EAAOlsB,GAAAA,QAAAA,WAAgC8X,EAAM,CAC7ChiB,KAAM,CACFvnB,MAAOy9C,EAAKz9C,MACZgnB,QAASy2B,EAAKz2B,SAElBjwB,OAAQ,CACJiwB,QAASy2B,EAAKz2B,WAGtBl4B,EAAMuO,OAAOsgD,EACjB,CAEAnsE,KAAK2kD,aAAarnC,EACtB,EAEAiuD,EAAkBvnE,UAAUkoE,aAAe,SAAuBD,GAC9D,OAAOjsE,KAAKy1D,QAAQwW,EAAK1oC,KAAM0oC,EAAK3sE,GAAK,EAC7C,EAEAisE,EAAkBvnE,UAAUyxD,QAAU,SAAkBlyB,EAAMjkC,GAC1D,IAAIgW,EAAUtV,KAAKsV,QACfwkD,EAAYxkD,EAAQwkD,UACpB7pC,EAAMjwB,KAAKiwB,IACXm7C,EAAOprE,KAAKwqE,cACZ4B,EAAYhB,EAAKhxE,OACjBiyE,EAAY,IAAMD,EAClBE,EAAY/oC,EAEZjuB,EAAQ44C,UAAY4L,IACpBwS,GAAaA,EAAY,GAAKF,GAIlC,IAAIG,EAAYnB,EADhBkB,EAAY59C,GAAW5N,KAAK8K,MAAM0gD,GAAY,EAAGF,EAAY,IAGzDtS,IACAyS,GAAwBF,EAAY,GAEpB,IACZE,GAAa,KAIrB,IAEI16C,EAAQw6C,GAFE39C,GAAW5N,KAAK6K,KAAKrsB,GAAMgtE,GAAYA,EAAWF,EAAY,GACtDE,EAAY,GAGlC,OAAO,IAAIhgC,GAAKrc,EAAIkV,SAAU,EAAGlV,EAAIx7B,SAAW,EAAG83E,EAAW16C,EAClE,EAEA05C,EAAkBvnE,UAAU+zD,KAAO,SAAex0B,EAAMjkC,GACpD,IAAIy4D,EAAO/3D,KAAKy1D,QAAQlyB,EAAMjkC,GAC1BktC,EAAaurB,EAAKvrB,WAAa,IAC/BgB,EAAWhB,EAAaurB,EAAKlmC,MAEjC,OAAO,IAAIoa,GAAS,CAAE8rB,EAAK5yB,OAAOpf,EAAGgyC,EAAK5yB,OAAOnf,GAAK,CAClDwmB,WAAYA,EACZgB,SAAUA,EACV6B,QAAS0oB,EAAKjyB,OACdwJ,QAASyoB,EAAKjyB,QAEtB,EAEAylC,EAAkBvnE,UAAU47D,mBAAqB,SAA6B16B,GAM1E,IALA,IAEI9qC,EAAS4F,KAAKsV,QAAQuoD,WAAWzjE,OACjCE,EAAQ,KAEHoR,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAE7B,GAPS1L,KAMSy1D,QAAQ/pD,GACjBm+B,cAAc3E,GAAQ,CAC3B5qC,EAAQoR,EACR,KACJ,CACJ,CAEA,OAAOpR,CACX,EAEOixE,CACX,CAjOyB,CAiOvB9N,IAEF9nC,GAAkB41C,GAAmB,CACjC/+B,WAAY,GACZwlB,OAAQ,CACJ12D,OAAQksB,GAAW,KAEvBwuC,eAAgB,CACZjiE,SAAS,GAEb+lE,WAAW,IAEf/yC,GAAWwkD,GAAkBvnE,UAAWumE,IAExC,UC9OIiC,GAAa,SAAUza,GACvB,SAASya,EAAUl3D,EAAS0uC,GACxB+N,EAAK/uD,KAAKhD,KAAMsV,EAAS0uC,GAEzB,IAAIyoB,EAAkBzsE,KAAKsV,QAE3Bm3D,EAAgB9X,UAAY8X,EAAgB9X,WAAa8X,EAAgBpY,UAAY,CACzF,CA0KA,OAxKKtC,IAAOya,EAAUzhE,UAAYgnD,GAClCya,EAAUxoE,UAAY6G,OAAOS,OAAQymD,GAAQA,EAAK/tD,WAClDwoE,EAAUxoE,UAAUqH,YAAcmhE,EAElCA,EAAUxoE,UAAUqkE,aAAe,SAAuBC,GACtD,OAAOvB,GAAAA,UAAAA,aAAAA,KAAwC/mE,KAAMsoE,GAAa,CACtE,EAEAkE,EAAUxoE,UAAUy/C,OAAS,SAAiBxzB,GAC1CjwB,KAAKiwB,IAAMA,EACXjwB,KAAKwrE,cACT,EAEAgB,EAAUxoE,UAAUwnE,aAAe,WAa/B,IAZA,IAEIj5E,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACd08C,EAASz/D,EAAIy/D,OACbgB,EAAezgE,EAAI+iB,QAAQ08C,OAC3Ba,EAAOG,EAAaH,MAAQ,EAC5BjQ,EAAOoQ,EAAapQ,MAAQ,EAE5BruB,EAAa,IAAI8V,GACjB+gC,EAAOprE,KAAKqrE,UAAU/1D,EAAQ++C,UAAWxB,EAAMjQ,GAE1Cl3C,EAAI,EAAGA,EAAIsmD,EAAO53D,OAAQsR,IAAK,CACpCsmD,EAAOtmD,GAAG+3C,OAAOlvB,GACjB,IAAI+iC,EAAWtF,EAAOtmD,GAAGukB,IAEzB+hC,EAAOtmD,GAAG+3C,OAhBDzjD,KAgBey1D,QAAQ2V,EAAK1/D,IAAIqhC,YAAY,EAAGuqB,EAAS9iE,QAAS8iE,EAAS7iE,UACvF,CACJ,EAEA+3E,EAAUxoE,UAAUsvD,QAAU,WAC1B,OAAOtzD,KAAKiwB,GAChB,EAEAu8C,EAAUxoE,UAAUqnE,UAAY,SAAoBz0E,EAAM60E,EAAYC,EAAYP,QAC1D,IAAfA,IAAwBA,GAAa,GAQ1C,IANA,IAAIx8C,EAAM3uB,KAAKsV,QAAQqZ,IACnB45C,EAAYvoE,KAAKqoE,aAAazxE,GAC9Bw0E,EAAO,GAEPxoB,EAAO8oB,GAAc,EAEhBhgE,EAHE+/D,GAAc,EAGN//D,EAAI68D,EAAW78D,GAAKk3C,EAAM,CACzC,IAAIrvD,GAAW,IAAMo7B,EAAMjjB,EAAI9U,GAAQ,IACjCu0E,GAAcjiD,GAAQ31B,EAAS43E,IACjCC,EAAKh8D,KAAK7b,EAElB,CAEA,OAAO63E,CACX,EAEAoB,EAAUxoE,UAAU6nE,eAAiB,WACjC,OAAO7rE,KAAKqrE,UAAUrrE,KAAKsV,QAAQ++C,UACvC,EAEAmY,EAAUxoE,UAAU8nE,eAAiB,WACjC,OAAO9rE,KAAKqrE,UAAUrrE,KAAKsV,QAAQq/C,UACvC,EAEA6X,EAAUxoE,UAAU+rC,cAAgB,SAAwBrkC,GACxD,OAAQ,IAAMA,EAAI1L,KAAKsV,QAAQk3B,YAAc,GACjD,EAEAggC,EAAUxoE,UAAU2rD,WAAa,WAC7B,MAAO,EACX,EAEA6c,EAAUxoE,UAAU2mE,oBAAsB,SAA8BvV,GACpE,IAAIY,EAAiBh2D,KAAKsV,QAAQ0gD,eAClC,OAAOh2D,KAAKkrE,eAAe9V,EAASp1D,KAAKsV,QAAQ++C,UAAW2B,EAAenD,KAAMmD,EAAepT,KACpG,EAEA4pB,EAAUxoE,UAAU6mE,oBAAsB,SAA8BzV,EAASsV,GAC7E,IAAIp1D,EAAUtV,KAAKsV,QACfygD,EAAiBzgD,EAAQygD,eACzBC,EAAiB1gD,EAAQ0gD,eACzB2U,EAAsBD,EAAY1qE,KAAKqrE,UAAU/1D,EAAQ++C,UAAW2B,EAAenD,KAAMmD,EAAepT,MAAQ,KAEpH,OAAO5iD,KAAKkrE,eAAe9V,EAAS9/C,EAAQq/C,UAAWoB,EAAelD,KAAMkD,EAAenT,KAAM+nB,EACrG,EAEA6B,EAAUxoE,UAAUkoE,aAAe,SAAuBD,GACtD,OAAOjsE,KAAKy1D,QAAQwW,EAAK1oC,KAAM0oC,EAAK3sE,GACxC,EAEAktE,EAAUxoE,UAAUyxD,QAAU,SAAkB5mC,EAAGjkB,GAC/C,IACI0K,EADMtV,KACQsV,QACd2a,EAFMjwB,KAEIiwB,IACVuc,EAAal3B,EAAQk3B,WACrBjjB,EAAQmF,GAAWG,EAAGvZ,EAAQqZ,IAAKrZ,EAAQkW,KAC3ChC,EAAMkF,GAAW9jB,GAAK2e,EAAOA,EAAOjU,EAAQkW,KAUhD,GARIlW,EAAQ44C,UACR3kC,IAAU,EACVC,IAAQ,IAIZA,GAAO,IAAMA,EAAMgjB,GAAc,MADjCjjB,GAAS,IAAMA,EAAQijB,GAAc,KAGpB,CACb,IAAIkgC,EAAMnjD,EACVA,EAAQC,EACRA,EAAMkjD,CACV,CAEA,OAAO,IAAIpgC,GAAKrc,EAAIkV,SAAU,EAAGlV,EAAIx7B,SAAW,EAAG80B,EAAOC,EAAMD,EACpE,EAEAijD,EAAUxoE,UAAU+zD,KAAO,SAAex0B,EAAMjkC,QAChC,IAAPA,IAAgBA,EAAKikC,GAE1B,IAKIiJ,EAAYgB,EALZl4B,EAAUtV,KAAKsV,QACfiU,EAAQ,IAAMjU,EAAQk3B,WACtBurB,EAAO/3D,KAAKy1D,QAAQlyB,EAAMjkC,GAC1BqvB,EAAM7N,KAAK6N,IAAI4U,EAAMjkC,GACrBksB,EAAM1K,KAAK0K,IAAI+X,EAAMjkC,GAczB,OAXIgW,EAAQ44C,SACR1hB,EAAa7d,EACb6e,EAAWhiB,IAEXghB,EAAa,IAAMhhB,EACnBgiB,EAAW,IAAM7e,GAGrB6d,GAAcA,EAAajjB,GAAS,IACpCikB,GAAYA,EAAWjkB,GAAS,IAEzB,IAAI0iB,GAAS,CAAE8rB,EAAK5yB,OAAOpf,EAAGgyC,EAAK5yB,OAAOnf,GAAK,CAClDwmB,WAAYA,EACZgB,SAAUA,EACV6B,QAAS0oB,EAAKjyB,OACdwJ,QAASyoB,EAAKjyB,QAEtB,EAEA0mC,EAAUxoE,UAAUykE,SAAW,SAAmBvjC,GAC9C,IAAI5vB,EAAUtV,KAAKsV,QACf6vB,EAASnlC,KAAKiwB,IAAIkV,SAClBQ,EAAKT,EAAMnf,EAAIof,EAAOpf,EACtB6f,EAAKV,EAAMlf,EAAImf,EAAOnf,EACtBof,EAAQtkB,KAAKE,MAAMgM,GAAIlM,KAAKiuB,MAAMnJ,EAAID,KACtCpc,EAAQjU,EAAQk3B,WAOpB,OALKl3B,EAAQ44C,UACT9oB,IAAU,EACV7b,IAAU,IAGN6b,EAAQ7b,EAAQ,KAAO,GACnC,EAEAijD,EAAUxoE,UAAUm1D,WAAa,WAC7B,MAAO,CACHxqC,IAAK,EACLnD,IAAe,EAAV1K,KAAK+L,GAElB,EAEO2/C,CACX,CAlLiB,CAkLfza,IAEFp8B,GAAkB62C,GAAW,CACzBr5E,KAAM,QACNq5C,WAAY,EACZ0hB,SAAS,EACTmG,UAAW,GACX1lC,IAAK,EACLnD,IAAK,IACLwmC,OAAQ,CACJ12D,OAAQksB,GAAW,KAEvBwuC,eAAgB,CACZxnC,MAAOlL,EACPvvB,SAAS,EACTS,MAAO,GAEXuhE,eAAgB,CACZvnC,MAAO,UAIfzH,GAAWylD,GAAUxoE,UAAWumE,GAAgB,CAC5CxW,gBAAiBwX,GAAAA,UAAAA,gBACjBf,YAAae,GAAAA,UAAAA,YACb7zB,MAAOqvB,GAAAA,UAAAA,MACPjU,YAAaiU,GAAAA,UAAAA,YACb3T,gBAAiB2T,GAAAA,UAAAA,kBAGrB,UCnNI4F,GAAwB,CACxBr3D,QAAS,CACL0gD,eAAgB,CACZjiE,SAAS,IAIjBggE,gBAAiB,WACb,IAEIxhE,EAAMyN,KAAKsV,QACXniB,EAAOZ,EAAIyjE,eAAe7iE,KAC1B8hE,EAAY1iE,EAAI0iE,eAA8B,IAAdA,IAAuBA,EAAY,IAQvE,IAPA,IAAIG,EAAUp1D,KAAKk1D,SAAS0X,UACxBpC,EAAcpV,EAAQoV,cACtBrlC,EAASiwB,EAAQnlC,IAAIkV,SACrB7nB,EAAQtd,KAAKm1D,eAAiB,IAAIhV,GAAW,CAC7CyE,QAAS,IAGJl5C,EAAI,EAAGA,EAAIupD,EAAU76D,OAAQsR,IAAK,CACvC,IAAIugE,EAAOhX,EAAUvpD,GACjBmhE,EAAY,CACZ92B,KAAM,CACFvnB,MAAOy9C,EAAKz9C,MACZgnB,QAASy2B,EAAKz2B,SAElBjwB,OAAQ,CACJiwB,QAASy2B,EAAKz2B,UAIlBuiB,EAxBK/3D,KAwBSy1D,QAAQwW,EAAK1oC,KAAM0oC,EAAK3sE,IAAI,GAC1C6sE,EAAO,IAAI7/B,GAAKnH,EAAQA,EAAOnf,EAAI+xC,EAAKttB,GAAItF,EAAOnf,EAAI+xC,EAAKxtB,GAAI,EAAG,KAEnE/uC,OAAS,EAETA,EADArI,IAASkwB,EACD48B,GAAAA,QAAAA,WAAgCksB,EAAMU,GAEtC1sB,GAAAA,WA/BHngD,KA+B+B8sE,eAAeX,EAAM3B,GAAcqC,GAAWt+B,QAGtFjxB,EAAMuO,OAAOrwB,EACjB,CAEAwE,KAAK2kD,aAAarnC,EACtB,EAEAwvD,eAAgB,SAASX,EAAMn+B,GAO3B,IANA,IAAI++B,EAAc,GACdC,EAAc,GACd7nC,EAAS,CAAEgnC,EAAKhnC,OAAOpf,EAAGomD,EAAKhnC,OAAOnf,GACtCinD,EAAc,IAAIhhC,GAAY9G,EAAQgnC,EAAK5/B,aAC3C2gC,EAAc,IAAIjhC,GAAY9G,EAAQgnC,EAAKrmC,QAEtCp6B,EAAI,EAAGA,EAAIsiC,EAAO5zC,OAAQsR,IAC/BqhE,EAAY39D,KAAK69D,EAAYv9B,QAAQ1B,EAAOtiC,GAAK,MACjDshE,EAAY59D,KAAK89D,EAAYx9B,QAAQ1B,EAAOtiC,GAAK,MAOrD,OAJAqhE,EAAY7e,UACZ6e,EAAY39D,KAAK29D,EAAY,IAC7BC,EAAY59D,KAAK49D,EAAY,IAEtBA,EAAY7kE,OAAO4kE,EAC9B,EAEAjX,gBAAiB,SAASV,GACtB,IAAI9/C,EAAUtV,KAAKsV,QACf+8C,EAAaryD,KAAKmtE,8BAClB3C,EAAcpV,EAAQoV,cACtBrlC,EAASiwB,EAAQnlC,IAAIkV,SACrB8uB,EAAY,GAQhB,GANI3+C,EAAQ0gD,eAAejiE,UACvBkgE,EAAYj0D,KAAK+qE,gBACb5lC,EAAQktB,EAAYmY,EAAal1D,EAAQ0gD,iBAI7C1gD,EAAQygD,eAAehiE,QAAS,CAChC,IAAIo+D,EAAanyD,KAAKotE,8BACtBvhD,GAAOooC,EAAWj0D,KAAK+qE,gBACnB5lC,EAAQgtB,EAAYqY,EAAal1D,EAAQygD,gBAEjD,CAEA,OAAO9B,CACX,EAEA8W,gBAAiB,SAAS5lC,EAAQi2B,EAAOptB,EAAQ14B,GAC7C,IAAI7e,EAAQ,CACR8uB,OAAQ,CACJ/wB,MAAO8gB,EAAQ9gB,MACfg6B,MAAOlZ,EAAQkZ,MACf64B,SAAU/xC,EAAQ+xC,WAGtBwL,EAAOv9C,EAAQu9C,UAAoB,IAATA,IAAkBA,EAAO,GACvD,IAAIjQ,EAAOttC,EAAQstC,UAAoB,IAATA,IAAkBA,EAAO,GAGvD,IAFA,IAAI1gC,EAAYliB,KAAKg0D,kBAEZgD,EAASnE,EAAMmE,EAASoE,EAAMhhE,OAAQ48D,GAAUpU,EAAM,CAC3D,IAAIyqB,EAAaloC,EAAOnf,EAAIo1C,EAAMpE,GAClC,GAAIqW,EAAa,EAAG,CAChB,IAAIpC,EAAS,IAAIh/B,GAAY,CAAE9G,EAAOpf,EAAGof,EAAOnf,GAAKqnD,GACrD,GAAI/3D,EAAQniB,OAASkwB,EACjBnB,EAAU2J,OAAO,IAAIs0B,GAAY8qB,EAAQx0E,QACtC,CAEH,IADA,IAAIg5D,EAAO,IAAItP,GAAU1pD,GAChB62E,EAAU,EAAGA,EAAUt/B,EAAO5zC,OAAQkzE,IAC3C7d,EAAK1S,OAAOkuB,EAAOv7B,QAAQ1B,EAAOs/B,GAAW,MAGjD7d,EAAKlhB,QACLrsB,EAAU2J,OAAO4jC,EACrB,CACJ,CACJ,CAEA,OAAOvtC,EAAUtuB,QACrB,EAEA60E,SAAU,SAASvjC,GACf,IAAIouB,EAAUtzD,KAAKszD,UACf8B,EAAUp1D,KAAKk1D,SAAS0X,UACxBpC,EAAcpV,EAAQoV,cACtBrlC,EAASiwB,EAAQnlC,IAAIkV,SACrBW,EAASZ,EAAMQ,WAAWP,GAC1B6H,EAAWlH,EAEf,GAAI9lC,KAAKsV,QAAQ0gD,eAAe7iE,OAASkwB,GAAOmnD,EAAYpwE,OAAS,EAAG,CACpE,IAAIurC,EAAKT,EAAMnf,EAAIof,EAAOpf,EACtB6f,EAAKV,EAAMlf,EAAImf,EAAOnf,EACtBof,GAASpY,GAAIlM,KAAKiuB,MAAMnJ,EAAID,IAAO,KAAO,IAE9C6kC,EAAYz7C,MAAK,SAASF,EAAGjkB,GACzB,OAAO2iE,GAAgB1+C,EAAGuW,GAASmoC,GAAgB3iE,EAAGw6B,EAC1D,IAIA,IAEIooC,EAAQ,GAFGD,GAAgB/C,EAAY,GAAIA,EAAY,IAAM,EAG7DiD,EAAO,IAFCF,GAAgBnoC,EAAOolC,EAAY,IAEtBgD,EAEzBxgC,EAAWlH,GAAUhlB,KAAKiR,IAAIxC,GAAIk+C,IAAS3sD,KAAKiR,IAAIxC,GAAIi+C,IAC5D,CAEA,OAAOxtE,KAAK0tE,WAAW1pE,UAAUykE,SAASzlE,KACtChD,KAAM,IAAIilC,GAAMquB,EAAQhpB,GAAIgpB,EAAQ7oB,GAAKuC,GAEjD,GAGJ,SAASugC,GAAgB1+C,EAAGjkB,GACxB,OAAO,IAAMkW,KAAKC,IAAID,KAAKC,IAAI8N,EAAIjkB,GAAK,IAC5C,CAEA,UCpKI+iE,GAAoB,SAAU5G,GAC9B,SAAS4G,IACL5G,EAAY7+D,MAAMlI,KAAM+H,UAC5B,CAwBA,OAtBKg/D,IAAc4G,EAAiB5iE,UAAYg8D,GAChD4G,EAAiB3pE,UAAY6G,OAAOS,OAAQy7D,GAAeA,EAAY/iE,WACvE2pE,EAAiB3pE,UAAUqH,YAAcsiE,EAEzCA,EAAiB3pE,UAAUmpE,4BAA8B,WACrD,OAAOntE,KAAK++D,iBAAiB/+D,KAAKsV,QAAQ++C,UAC9C,EAEAsZ,EAAiB3pE,UAAUopE,4BAA8B,WACrD,IAAI93D,EAAUtV,KAAKsV,QACfs4D,EAAgB,EAKpB,OAHIt4D,EAAQ0gD,eAAejiE,UACvB65E,EAAgBt4D,EAAQ++C,WAErBr0D,KAAK++D,iBAAiBzpD,EAAQq/C,UAAWiZ,EACpD,EAEAD,EAAiB3pE,UAAU0pE,SAAW,WAClC,OAAO3G,CACX,EAEO4G,CACX,CA5BwB,CA4BtB5G,IAEFhgD,GAAW4mD,GAAiB3pE,UAAW2oE,IAEvC,UChCIkB,GAAwB,SAAUpE,GAClC,SAASoE,IACLpE,EAAgBvhE,MAAMlI,KAAM+H,UAChC,CA8BA,OA5BK0hE,IAAkBoE,EAAqB9iE,UAAY0+D,GACxDoE,EAAqB7pE,UAAY6G,OAAOS,OAAQm+D,GAAmBA,EAAgBzlE,WACnF6pE,EAAqB7pE,UAAUqH,YAAcwiE,EAE7CA,EAAqB7pE,UAAUmpE,4BAA8B,WACzD,IAAInO,EAAY,GAMhB,OAJAh/D,KAAKgqE,6BAA4B,SAASntB,GACtCmiB,EAAU5vD,KAAKytC,EACnB,GAAG78C,KAAKsV,QAAQ0gD,gBAETgJ,CACX,EAEA6O,EAAqB7pE,UAAUopE,4BAA8B,WACzD,IAAIpO,EAAY,GAMhB,OAJAh/D,KAAKkqE,6BAA4B,SAASrtB,GACtCmiB,EAAU5vD,KAAKytC,EACnB,GAAG78C,KAAKsV,QAAQygD,gBAETiJ,CACX,EAEA6O,EAAqB7pE,UAAU0pE,SAAW,WACtC,OAAOjE,CACX,EAEOoE,CACX,CAlC4B,CAkC1BpE,IAEF1iD,GAAW8mD,GAAqB7pE,UAAW2oE,IAE3C,UCnCImB,GAAkB,SAAU78C,GAC5B,SAAS68C,EAAezzB,GACpBppB,EAAMjuB,KAAKhD,MAEXA,KAAKq6C,OAASA,CAClB,CAuRA,OArRKppB,IAAQ68C,EAAe/iE,UAAYkmB,GACxC68C,EAAe9pE,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACzD8pE,EAAe9pE,UAAUqH,YAAcyiE,EAEvCA,EAAe9pE,UAAU3K,QAAU,SAAkB00E,GACjD,IAEIxiC,EAASwiC,EAAWrzD,MAAM,GAC1B+K,EAAW,GACX40B,EAASr6C,KAAKq6C,OACdjgD,EAASmxC,EAAOnxC,OAOpB,GALIA,EAAS,IACT4F,KAAKs6C,iBAAiB,EAAG/O,GACzBnxC,EAASmxC,EAAOnxC,QAGhBA,EAAS,GAAiB,IAAXA,GAAgBmxC,EAAO,GAAGha,OAAOga,EAAO,IACvD,OAAO9lB,EAGX,IA2BI80B,EAAqBC,EA3BrBjJ,EAAKhG,EAAO,GACZyF,EAAKzF,EAAO,GACZgF,EAAKhF,EAAO,GAIhB,IAFA9lB,EAASrW,KAAK,IAAI68B,GAAasF,IAExBA,EAAGhgB,OAAOga,EAAOnxC,EAAS,KAC7BigD,GAAS,EACT9O,EAAOmI,MACPt5C,IAGJ,GAAe,IAAXA,EAAc,CACd,IAAIqgD,EAAUz6C,KAAKy6C,QAAQlJ,EAAGP,EAAIjsB,EAAGC,GAWrC,OATAyJ,GAAKhJ,GAAU2yB,WACXp4C,KAAK26C,kBAAkBF,EAASlJ,EAAIP,EAAIjsB,EAAGC,IAG/CS,EAASrW,KAAK,IAAI68B,GACd+E,EACAhxC,KAAK46C,mBAAmBH,EAASlJ,EAAIP,EAAIjsB,EAAGC,KAGzCS,CACX,CAIA,GAAI40B,EAAQ,CACR9I,EAAKhG,EAAOnxC,EAAS,GAAI42C,EAAKzF,EAAO,GAAIgF,EAAKhF,EAAO,GACrD,IAAIsP,EAAgB76C,KAAK66C,cAActJ,EAAIP,EAAIT,GAC/CgK,EAAsBM,EAAc,GACpCL,EAAmBK,EAAc,EACrC,KAAO,CACH,IAAImzB,EAAYhuE,KAAKy6C,QAAQlJ,EAAIP,EAAIjsB,EAAEC,GACvCu1B,EAAsBv6C,KAAK26C,kBAAkBqzB,EAAWz8B,EAAIP,EAAIjsB,EAAGC,EACvE,CAGA,IADA,IAAI+1B,EAAMR,EACD9lC,EAAM,EAAGA,GAAOra,EAAS,EAAGqa,IAGjC,GA3DSzU,KAyDFs6C,iBAAiB7lC,EAAK82B,GAEzB92B,EAAM,IADVra,EAASmxC,EAAOnxC,QACO,CACnBm3C,EAAKhG,EAAO92B,GAAMu8B,EAAKzF,EAAO92B,EAAM,GAAI87B,EAAKhF,EAAO92B,EAAM,GAC1D,IAAIumC,EA7DCh7C,KA6DwB66C,cAActJ,EAAGP,EAAGT,GAEjD9hB,GAAKhJ,GAAU2yB,WAAW2C,GAC1BA,EAAMC,EAAgB,GAEtB,IAAI3K,EAAM2K,EAAgB,GAC1Bv1B,EAASrW,KAAK,IAAI68B,GAAa+E,EAAIX,GACvC,CAGJ,GAAIgK,EAAQ,CACR9I,EAAKhG,EAAOnxC,EAAS,GAAI42C,EAAKzF,EAAOnxC,EAAS,GAAIm2C,EAAKhF,EAAO,GAC9D,IAAI0P,EAAkBj7C,KAAK66C,cAActJ,EAAIP,EAAIT,GAEjD9hB,GAAKhJ,GAAU2yB,WAAW2C,GAC1Bt1B,EAASrW,KAAK,IAAI68B,GACd+E,EACAiK,EAAgB,KAGpBxsB,GAAKhJ,GAAU2yB,WAAW6C,EAAgB,IAC1Cx1B,EAASrW,KAAK,IAAI68B,GACdsE,EACAiK,GAER,KAAO,CACH,IAAIU,EAAYl7C,KAAKy6C,QAAQzJ,EAAIT,EAAIxrB,EAAGC,GAExCyJ,GAAKhJ,GAAU2yB,WAAW2C,GAC1Bt1B,EAASrW,KAAK,IAAI68B,GACdsE,EACAvwC,KAAK46C,mBAAmBM,EAAWlK,EAAIT,EAAIxrB,EAAGC,IAEtD,CAEA,OAAOS,CACX,EAEAqoD,EAAe9pE,UAAUs2C,iBAAmB,SAA2B7lC,EAAK82B,GACxE,KAAOA,EAAO92B,EAAM,KAAO82B,EAAO92B,GAAK8c,OAAOga,EAAO92B,EAAM,KAAO82B,EAAO92B,EAAM,GAAG8c,OAAOga,EAAO92B,EAAM,MAClG82B,EAAOnF,OAAO3xB,EAAM,EAAG,EAE/B,EAEAq5D,EAAe9pE,UAAU43C,WAAa,SAAqBrK,EAAIP,EAAIT,GAC/D,IAAIqL,GAAa,EAEjB,GAAIrK,EAAGxrB,IAAMirB,EAAGjrB,EACZ61B,GAAa,OACV,GAAI5K,EAAGjrB,IAAMwqB,EAAGxqB,GACdirB,EAAGhrB,EAAIuqB,EAAGvqB,GAAKurB,EAAGvrB,GAAKgrB,EAAGhrB,GAAOuqB,EAAGvqB,EAAIgrB,EAAGhrB,GAAKgrB,EAAGhrB,GAAKurB,EAAGvrB,KAC5D41B,GAAa,OAEd,CACH,IAAIv1B,EAAKrmB,KAAKm7C,aAAa5J,EAAGP,GAC1BvG,EAAKzqC,KAAKw7C,kBAAkBn1B,EAAIkqB,EAAGxqB,GACjCwrB,EAAGvrB,GAAKgrB,EAAGhrB,GAAKuqB,EAAGvqB,GAAKykB,GACxBuG,EAAGhrB,GAAKurB,EAAGvrB,GAAKuqB,EAAGvqB,GAAKykB,IAC1BmR,GAAa,EAErB,CAEA,OAAOA,CACX,EAEAkyB,EAAe9pE,UAAUy3C,OAAS,SAAiBlK,EAAIP,EAAIT,GACvD,IAAIlqB,EAAKrmB,KAAKm7C,aAAa5J,EAAIP,GAC3BvG,EAAKzqC,KAAKw7C,kBAAkBn1B,EAAIkqB,EAAGxqB,GAEvC,OAAQwrB,EAAGxrB,IAAMirB,EAAGjrB,GAAKirB,EAAGjrB,IAAMwqB,EAAGxqB,GAAM/E,GAAMypB,EAAI,KAAOzpB,GAAMuvB,EAAGvqB,EAAG,EAC5E,EAEA8nD,EAAe9pE,UAAUm3C,aAAe,SAAuBnK,EAAIT,GAC/D,IAAI1hB,GAAK0hB,EAAGvqB,EAAIgrB,EAAGhrB,IAAMuqB,EAAGxqB,EAAIirB,EAAGjrB,GAGnC,MAAO,CAFCirB,EAAGhrB,EAAI6I,EAAImiB,EAAGjrB,EAEV8I,EAChB,EAEAi/C,EAAe9pE,UAAU62C,cAAgB,SAAwBtJ,EAAIP,EAAIT,GACrE,IAIIkK,EAJAW,EAASr2B,EACTs2B,EAASr2B,EACTs2B,GAAW,EACXC,GAAoB,EAGxB,GAAIv7C,KAAKy7C,OAAOlK,EAAIP,EAAIT,GACpBkK,EAAUz6C,KAAKy6C,QAAQlJ,EAAIP,EAAIjsB,EAAGC,OAC/B,CACH,IAAI02B,EAAY,CACZ31B,EAAG/lB,KAAK27C,mBAAmBpK,EAAIP,EAAIT,EAAIxrB,GACvCiB,EAAGhmB,KAAK27C,mBAAmBpK,EAAIP,EAAIT,EAAIvrB,IAG3C,GAAI02B,EAAU31B,GAAK21B,EAAU11B,EACzBy0B,EAAUz6C,KAAKy6C,QAAQlJ,EAAIhB,EAAIxrB,EAAGC,GAClCs2B,GAAW,OAOX,GALIt7C,KAAK47C,WAAWrK,EAAIP,EAAIT,KACxB6K,EAASp2B,EACTq2B,EAASt2B,GAGT22B,EAAUN,GACVX,EAAU,OAUVA,EA7La,KAsLRlK,EAAG8K,GAAU9J,EAAG8J,IAAW9J,EAAG8J,IAAWrK,EAAGqK,IAC5C9J,EAAG8J,GAAU9K,EAAG8K,IAAWrK,EAAGqK,IAAW9J,EAAG8J,GACtCtE,IAAYxG,EAAG8K,GAAU9J,EAAG8J,KAAYrK,EAAGoK,GAAU7J,EAAG6J,MAEvDrE,IAAYxG,EAAG6K,GAAU7J,EAAG6J,KAAYpK,EAAGqK,GAAU9J,EAAG8J,MAIpEE,GAAoB,CAGhC,CAEA,IAAIX,EAAqB56C,KAAK46C,mBAAmBH,EAASlJ,EAAIP,EAAIoK,EAAQC,GAE1E,GAAIE,EAAmB,CACnB,IAAIO,EAAYV,EAChBA,EAASC,EACTA,EAASS,CACb,CAEA,IAAInB,EAAoB36C,KAAK26C,kBAAkBF,EAASzJ,EAAIT,EAAI6K,EAAQC,GAOxE,OALIC,IACAt7C,KAAKg8C,qBAAqBzK,EAAIP,EAAI4J,EAAoBH,GACtDz6C,KAAKg8C,qBAAqBhL,EAAIT,EAAIoK,EAAmBF,IAGlD,CAAEG,EAAoBD,EACjC,EAEAmzB,EAAe9pE,UAAUg4C,qBAAuB,SAA+BhL,EAAIT,EAAI0L,EAAIxB,GACnFzJ,EAAGhrB,EAAIuqB,EAAGvqB,EACNuqB,EAAGvqB,EAAIi2B,EAAGj2B,GACVi2B,EAAGl2B,EAAIirB,EAAGjrB,GAAKwqB,EAAGvqB,EAAIgrB,EAAGhrB,GAAKy0B,EAC9BwB,EAAGj2B,EAAIuqB,EAAGvqB,GACHi2B,EAAGj2B,EAAIgrB,EAAGhrB,IACjBi2B,EAAGl2B,EAAIwqB,EAAGxqB,GAAKwqB,EAAGvqB,EAAIgrB,EAAGhrB,GAAKy0B,EAC9BwB,EAAGj2B,EAAIgrB,EAAGhrB,GAGVi2B,EAAGj2B,EAAIuqB,EAAGvqB,GACVi2B,EAAGl2B,EAAIirB,EAAGjrB,GAAKirB,EAAGhrB,EAAIuqB,EAAGvqB,GAAKy0B,EAC9BwB,EAAGj2B,EAAIuqB,EAAGvqB,GACHgrB,EAAGhrB,EAAIi2B,EAAGj2B,IACjBi2B,EAAGl2B,EAAIwqB,EAAGxqB,GAAKirB,EAAGhrB,EAAIuqB,EAAGvqB,GAAKy0B,EAC9BwB,EAAGj2B,EAAIgrB,EAAGhrB,EAGtB,EAEA8nD,EAAe9pE,UAAUy2C,QAAU,SAAkBlJ,EAAIP,EAAIoK,EAAQC,GACjE,IAEIZ,EAFA10B,EAAIirB,EAAGoK,GAAU7J,EAAG6J,GACpBp1B,EAAIgrB,EAAGqK,GAAU9J,EAAG8J,GASxB,OALIZ,EADM,IAAN10B,EACU,EAEAC,EAAID,EAGX00B,CACX,EAEAqzB,EAAe9pE,UAAU23C,mBAAqB,SAA6BpK,EAAIP,EAAIT,EAAIzyB,GACnF,OAAQyyB,EAAGzyB,GAASkzB,EAAGlzB,IAAUkzB,EAAGlzB,GAASyzB,EAAGzzB,IACnCyyB,EAAGzyB,GAASkzB,EAAGlzB,IAAUkzB,EAAGlzB,GAASyzB,EAAGzzB,EACzD,EAEAgwD,EAAe9pE,UAAU22C,kBAAoB,SAA4BF,EAASlJ,EAAIC,EAAI4J,EAAQC,GAC9F,IAAIlF,EAAK5E,EAAG6J,GAERpO,EAhQC,MA+PIwE,EAAG4J,GACSjF,GAErB,OAAOn2C,KAAKklC,MAAMiR,EAAKnJ,EAAUuE,EAAG8J,GAAUrO,EAAWyN,EAASW,EAAQC,EAC9E,EAEAyyB,EAAe9pE,UAAU42C,mBAAqB,SAA6BH,EAASlJ,EAAIC,EAAI4J,EAAQC,GAChG,IAAIlF,EAAK5E,EAAG6J,GACR/B,EAAK7H,EAAG4J,GACRpO,EAxQC,MAwQWqM,EAAKlD,GAErB,OAAOn2C,KAAKklC,MAAMmU,EAAKrM,EAAUwE,EAAG6J,GAAUrO,EAAWyN,EAASW,EAAQC,EAC9E,EAEAyyB,EAAe9pE,UAAUkhC,MAAQ,SAAgBgX,EAAQC,EAAQf,EAAQC,GACrE,IAAIpF,EAAe,IAAIhK,GAIvB,OAHAgK,EAAamF,GAAUc,EACvBjG,EAAaoF,GAAUc,EAEhBlG,CACX,EAEA63B,EAAe9pE,UAAUw3C,kBAAoB,SAA4Bn1B,EAAIN,GAIzE,IAHA,IAAI3rB,EAASisB,EAAGjsB,OACZhC,EAAS,EAEJsT,EAAI,EAAGA,EAAItR,EAAQsR,IACxBtT,GAAU0oB,KAAKuI,IAAItD,EAAEra,GAAK2a,EAAG3a,GAEjC,OAAOtT,CACX,EAEO01E,CACX,CA7RsB,CA6RpB78C,IAEF,SAAS8lB,GAAW55C,GAChB,OAAOA,GAAS,GAAK,EAAI,CAC7B,CAEA,UCzSI8wE,GAAa,SAAUh9C,GACvB,SAASg9C,EAAUljC,GACf9Z,EAAMjuB,KAAKhD,MAEXA,KAAKkuE,MAAQnjC,EACb/qC,KAAKsV,QAAUy1B,EAAKz1B,OACxB,CA2BA,OAzBK2b,IAAQg9C,EAAUljE,UAAYkmB,GACnCg9C,EAAUjqE,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpDiqE,EAAUjqE,UAAUqH,YAAc4iE,EAElCA,EAAUjqE,UAAU7G,MAAQ,SAAgB+nC,GACxC,IAAI6F,EAAO/qC,KAAKkuE,MACZ/wE,EAAQ4tC,EAAK+0B,YAAc/0B,EAAK+0B,YAAY56B,GAAS6F,EAAK09B,SAASvjC,GAEvE,OAAO/nC,CACX,EAEA8wE,EAAUjqE,UAAU+zD,KAAO,SAAex0B,EAAMjkC,EAAIs4D,GAGhD,YAFe,IAAVA,IAAmBA,GAAQ,GAEzB53D,KAAKkuE,MAAMnW,KAAKx0B,EAAMjkC,EAAIs4D,EACrC,EAEAqW,EAAUjqE,UAAU0zC,MAAQ,WACxB,OAAO13C,KAAKkuE,MAAMx2B,OACtB,EAEAu2B,EAAUjqE,UAAUm1D,WAAa,WAC7B,OAAOn5D,KAAKkuE,MAAM/U,YACtB,EAEO8U,CACX,CAlCiB,CAkCfh9C,IAEF,MCpCe,SAASk9C,GAAex9D,EAAM2kD,GACzC,IAAK,IAAI7gD,EAAM,EAAGA,EAAM6gD,EAAKl7D,OAAQqa,IACjC,GAAI6gD,EAAK7gD,GAAKa,QAAQ3E,OAASA,EAE3B,OADA2kD,EAAK7gD,GAAKslD,qBACH,IAAIkU,GAAU3Y,EAAK7gD,GAGtC,CCPA,IAAI25D,GAAY,SAAmB/Y,GAC/Br1D,KAAKykD,OAAS4Q,EAAK5Q,OACnBzkD,KAAKquE,aAAehZ,EAAKiZ,eAAe7pB,OACxCzkD,KAAKuuE,MAAQlZ,CACjB,EAEA+Y,GAAUpqE,UAAUmqE,eAAiB,SAA2Bx9D,GAC5D,OAAOw9D,GAAex9D,EAAM3Q,KAAKuuE,MAAMjZ,KAC3C,EAEA,UCVIkZ,GAAiB,SAAUv9C,GAC3B,SAASu9C,EAActZ,GACnBjkC,EAAMjuB,KAAKhD,MAEXA,KAAKyuE,UAAYvZ,EACjBl1D,KAAKykD,OAASyQ,EAASzQ,OACvBzkD,KAAK0uE,iBAAmBxZ,EAASyZ,SACrC,CAMA,OAJK19C,IAAQu9C,EAAczjE,UAAYkmB,GACvCu9C,EAAcxqE,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACxDwqE,EAAcxqE,UAAUqH,YAAcmjE,EAE/BA,CACX,CAdqB,CAcnBv9C,IAEF,MChBe,SAAS29C,GAAa7+D,GAIjC,IAHA,IAAI3V,EAAS2V,EAAO3V,OAChBs/C,EAAQ,EAEHhuC,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAEzBqP,GADMhL,EAAOrE,KAEbguC,GAER,CAEA,OAAOA,CACX,CCTA,IAAIm1B,GAAa,CACblgD,IAAK,SAAS5e,GAIV,IAHA,IAAI3V,EAAS2V,EAAO3V,OAChBu0B,EAAMzK,EAEDxY,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIvO,EAAQ4S,EAAOrE,GACfqP,GAAS5d,KACTwxB,EAAM7N,KAAK6N,IAAIA,EAAKxxB,GAE5B,CAEA,OAAOwxB,IAAQzK,EAAYnU,EAAO,GAAK4e,CAC3C,EAEAnD,IAAK,SAASzb,GAIV,IAHA,IAAI3V,EAAS2V,EAAO3V,OAChBoxB,EAAMpH,EAED1Y,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIvO,EAAQ4S,EAAOrE,GACfqP,GAAS5d,KACTquB,EAAM1K,KAAK0K,IAAIA,EAAKruB,GAE5B,CAEA,OAAOquB,IAAQpH,EAAYrU,EAAO,GAAKyb,CAC3C,EAEAsjD,IAAK,SAAS/+D,GAIV,IAHA,IAAI3V,EAAS2V,EAAO3V,OAChB00E,EAAM,EAEDpjE,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIvO,EAAQ4S,EAAOrE,GACfqP,GAAS5d,KACT2xE,GAAO3xE,EAEf,CAEA,OAAO2xE,CACX,EAEAC,UAAW,SAASh/D,GAChB,IAAI3X,EAAS,KAMb,OAJIw2E,GAAa7+D,KACb3X,EAASy2E,GAAWC,IAAI/+D,IAGrB3X,CACX,EAEAshD,MAAO,SAAS3pC,GAIZ,IAHA,IAAI3V,EAAS2V,EAAO3V,OAChBs/C,EAAQ,EAEHhuC,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIvO,EAAQ4S,EAAOrE,GACL,OAAVvO,GAAkBgoB,GAAQhoB,IAC1Bu8C,GAER,CAEA,OAAOA,CACX,EAEAs1B,IAAK,SAASj/D,GACV,IAAI2pC,EAAQk1B,GAAa7+D,GACrB3X,EAAS2X,EAAO,GAMpB,OAJI2pC,EAAQ,IACRthD,EAASy2E,GAAWC,IAAI/+D,GAAU2pC,GAG/BthD,CACX,EAEA0zB,MAAO,SAAS/b,GAGZ,IAFA,IAAI3V,EAAS2V,EAAO3V,OAEXsR,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIvO,EAAQ4S,EAAOrE,GACnB,GAAc,OAAVvO,GAAkBgoB,GAAQhoB,GAC1B,OAAOA,CAEf,CAEA,OAAO4S,EAAO,EAClB,GAGJ,MC/Fe,SAASk/D,GAASnxD,EAAOoxD,GACpC,OAAY,OAARA,EACOA,EAGD3mD,GAAOzK,EACV1R,CAAI8iE,EACf,CCLA,IAAIC,GAAgB,SAAUl+C,GAC1B,SAASk+C,IACLl+C,EAAMjuB,KAAKhD,MAEXA,KAAKovE,aAAe,CAAC,EACrBpvE,KAAKqvE,aAAe,CAAC,EACrBrvE,KAAKsvE,WAAa,CAAC,EACnBtvE,KAAKuvE,gBAAkB,CAAC,CAC5B,CAsIA,OApIKt+C,IAAQk+C,EAAapkE,UAAYkmB,GACtCk+C,EAAanrE,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACvDmrE,EAAanrE,UAAUqH,YAAc8jE,EAErCA,EAAanrE,UAAUkkB,SAAW,SAAmBsnD,EAAaC,EAAaC,GAC3E,IAAIluC,EAASxhC,UACQ,IAAhByvE,IAAyBA,EAAc,CAAE7qD,SACzB,IAAhB8qD,IAAyBA,EAAc,CAAC,GAG7C,IAAK,IAAIhkE,EAAI,EAAGA,EAAI8jE,EAAYp1E,OAAQsR,IAAK,CACzC,IAAIvY,EAAOq8E,EAAY9jE,GAEvB81B,EAAO4tC,aAAaj8E,GAAQs8E,EAC5BjuC,EAAO6tC,aAAal8E,GAAQu8E,EAC5BluC,EAAO8tC,WAAWn8E,GAAQquC,EAAOmuC,WAAWF,EAAa,MACzDjuC,EAAO+tC,gBAAgBp8E,GAAQquC,EAAOmuC,WAAWF,OAAah8E,EAClE,CACJ,EAEA07E,EAAanrE,UAAU4rE,gBAAkB,SAA0B7pB,GAC/D,OAAO/lD,KAAKyvE,YAAY1pB,GAAQ59C,OAAOnI,KAAK0vE,YAAY3pB,GAC5D,EAEAopB,EAAanrE,UAAUyrE,YAAc,SAAsB1pB,GACvD,OAAO/lD,KAAKovE,aAAarpB,EAAO5yD,OAAS,CAAEyxB,EAC/C,EAEAuqD,EAAanrE,UAAU0rE,YAAc,SAAsB3pB,GACvD,OAAO/lD,KAAKqvE,aAAatpB,EAAO5yD,OAAS,CAAEyxB,EAC/C,EAEAuqD,EAAanrE,UAAU6rE,UAAY,SAAoB9pB,EAAQ+pB,EAAS75C,GACpE,IAKIzN,EAAQrrB,EALR8Z,EAAO8uC,EAAO9uC,KACduwC,EAAYriC,GAAQ8Q,GAAQA,EAAOhf,EAAK64D,GACxC13E,EAAS,CAAEq3E,YAAa,CAAEtyE,MAAOqqD,IACjCioB,EAAczvE,KAAKyvE,YAAY1pB,GAC/B2pB,EAAc1vE,KAAKqvE,aAAatpB,EAAO5yD,MAG3C,GAAkB,OAAdq0D,EACArqD,EAAQ6C,KAAKsvE,WAAWvpB,EAAO5yD,WAC5B,GAAKgyB,GAAQqiC,IAEb,GAAIryD,MAAMC,QAAQoyD,GAAY,CACjC,IAAIuoB,EAAYvoB,EAAU9sC,MAAM+0D,EAAYr1E,QAC5C+C,EAAQ6C,KAAKgwE,eAAexoB,EAAWioB,GACvCjnD,EAASxoB,KAAKgwE,eAAeD,EAAWL,EAC5C,MAAO,GAAyB,kBAAdloB,EAAwB,CACtC,IAAIyoB,EAAiBjwE,KAAKkwE,aAAanqB,EAAQ0pB,GAC3CU,EAAiBnwE,KAAKkwE,aAAanqB,EAAQ2pB,GAE/CvyE,EAAQ6C,KAAKowE,gBAAgB5oB,EAAWioB,EAAaQ,GACrDznD,EAASxoB,KAAKowE,gBAAgB5oB,EAAWkoB,EAAaS,EAC1D,OAXIhzE,EAAQ6C,KAAKuvE,gBAAgBxpB,EAAO5yD,MAuBxC,OAVIgyB,GAAQhoB,KACmB,IAAvBsyE,EAAYr1E,OACZhC,EAAOq3E,YAAYtyE,MAAQA,EAAMsyE,EAAY,IAE7Cr3E,EAAOq3E,YAActyE,GAI7B/E,EAAOowB,OAASA,GAAU,CAAC,EAEpBpwB,CACX,EAEA+2E,EAAanrE,UAAU2rE,WAAa,SAAqBnnD,EAAQ6nD,GAI7D,IAHA,IAAIlzE,EAAQ,CAAC,EACT/C,EAASouB,EAAOpuB,OAEXsR,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAE7BvO,EADgBqrB,EAAO9c,IACJ2kE,CACvB,CAEA,OAAOlzE,CACX,EAEAgyE,EAAanrE,UAAUgsE,eAAiB,SAAyBpnD,EAAOJ,GACpE,IAAIrrB,EAAQ,CAAC,EAEb,GAAIqrB,EAGA,IAFA,IAAIpuB,EAAS0mB,KAAK6N,IAAInG,EAAOpuB,OAAQwuB,EAAMxuB,QAElCsR,EAAI,EAAGA,EAAItR,EAAQsR,IACxBvO,EAAMqrB,EAAO9c,IAAMkd,EAAMld,GAIjC,OAAOvO,CACX,EAEAgyE,EAAanrE,UAAUosE,gBAAkB,SAA0Bz2D,EAAQ6O,EAAQ8nD,QAC5D,IAAdA,IAAuBA,EAAY9nD,GAExC,IAAIrrB,EAAQ,CAAC,EAEb,GAAIqrB,EAGA,IAFA,IAAIpuB,EAASouB,EAAOpuB,OAEXsR,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIkpC,EAAYpsB,EAAO9c,GACnB6kE,EAAeD,EAAU5kE,GACR,OAAjB6kE,IACApzE,EAAMy3C,GAAaq6B,GAASsB,EAAc52D,GAElD,CAGJ,OAAOxc,CACX,EAEAgyE,EAAanrE,UAAUksE,aAAe,SAAuBnqB,EAAQ6pB,GACjE,IAAIM,EAAe,GAEnB,GAAIN,EAGA,IAFA,IAAIx1E,EAASw1E,EAAgBx1E,OAEpBsR,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIkpC,EAAYg7B,EAAgBlkE,GAC5B8kE,EAAkB57B,IAAchwB,EAAQ,QAAUgwB,EAAY,QAElEs7B,EAAa9gE,KAAiC,OAA5B22C,EAAOyqB,GAA6BzqB,EAAOyqB,IAAoB57B,EAAa,KAClG,CAGJ,OAAOs7B,CACX,EAEOf,CACX,CA/IoB,CA+IlBl+C,IAEFk+C,GAAa57E,QAAU,IAAI47E,GAE3B,UChJIsB,GAAe,0BACfC,GAAyB,IAAIruE,OAAO,yCAEpCsuE,GAAwB,SAAU1/C,GAClC,SAAS0/C,EAAqBC,EAAY7qB,EAAQjoC,GAC9CmT,EAAMjuB,KAAKhD,MAEXA,KAAK6wE,iBAAiBD,EAAY7qB,EAAQjoC,EAC9C,CAyHA,OAvHKmT,IAAQ0/C,EAAqB5lE,UAAYkmB,GAC9C0/C,EAAqB3sE,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC/D2sE,EAAqB3sE,UAAUqH,YAAcslE,EAE7CA,EAAqB3sE,UAAU6sE,iBAAmB,SAA2BD,EAAY7qB,EAAQjoC,GAC7F,IAAI7G,EAAO8uC,EAAO9uC,KACd65D,EAAiBJ,GAAuBpxD,KAAKsxD,GAEjD,GAAIE,EAAgB,CAChB9wE,KAAK+wE,YAAc/wE,KAAKgxE,kBAAkBjrB,EAAQjoC,GAElD,IAAImzD,EAAUjxE,KAAKkxE,WAAWj6D,GAC1Bk6D,EAAYnxE,KAAKoxE,qBAAqBn6D,EAAMg6D,GAAS,GACrDI,EAAWP,EAAe,GAAK5mE,WAAW4mE,EAAe,IAAM,EAC/DQ,EAAa,CAAEhkD,IAAK2jD,EAAQ9zE,MAAQg0E,EAAYE,EAAUE,KAAMN,EAAQ9zE,MAAQg0E,EAAYE,GAEhGrxE,KAAKwxE,YAAc,WACf,OAAOF,CACX,CACJ,MAAO,GAAIV,EAAWvnE,SAAWunE,EAAWvnE,QA/BtC,WA+B0D,EAAG,CAC/DrJ,KAAK+wE,YAAc/wE,KAAKgxE,kBAAkBjrB,EAAQjoC,GAClD,IAAI2zD,EAAgBzxE,KAAK0xE,iBAAiBz6D,EAAMjX,KAAKkxE,WAAWj6D,IAEhEjX,KAAKwxE,YAAc,SAASr0E,GACxB,MAAO,CAAEmwB,IAAKnwB,EAAQs0E,EAAeF,KAAMp0E,EAAQs0E,EACvD,CACJ,CACJ,EAEAd,EAAqB3sE,UAAUgtE,kBAAoB,SAA4BjrB,EAAQjoC,GACnF,IAIIizD,EAJA95D,EAAO8uC,EAAO9uC,KACd06D,EAASxC,GAAAA,QACTM,EAAckC,EAAOlC,YAAY1pB,GACjC9vB,EAAO9Q,GAAQlO,EAAK,IAAMA,EAAK,GAAK,CAAC,EAGzC,GAAI7hB,EAAQ6gC,GAER86C,EAAcxoD,GAAO,KADTzK,EAAQ2xD,EAAYpmE,QAAQyU,GAAS,GACd,UAChC,GAAI/C,GAASkb,GAChB86C,EAAcxoD,UACX,UAAW0N,IAAS3R,EAAQ,CAE/BysD,EAAcxoD,GADOopD,EAAOzB,aAAanqB,EAAQ0pB,GACbA,EAAYpmE,QAAQyU,IAC5D,CAEA,OAAOizD,CACX,EAEAJ,EAAqB3sE,UAAU4tE,cAAgB,SAAwBC,EAAYjB,GAC/E,IAAItjD,EAAKikD,EAAMp0E,EAEf,IAAKgoB,GAAQyrD,GACT,OAAO,KAGX,GAAI5wE,KAAKwxE,YACL,OAAOxxE,KAAKwxE,YAAYK,GAG5B,GAAIz8E,EAAQw7E,GACRtjD,EAAMukD,EAAajB,EAAW,GAC9BW,EAAOM,EAAajB,EAAW,QAC5B,GAAI71D,GAAS5d,EAAQ+M,WAAW0mE,IACnCtjD,EAAMukD,EAAa10E,EACnBo0E,EAAOM,EAAa10E,MACjB,MAAKA,EAAQszE,GAAanxD,KAAKsxD,IAKlC,MAAM,IAAIxwE,MAAM,2BAA6BwwE,GAJ7C,IAAIkB,EAAeD,GAAc3nE,WAAW/M,EAAM,IAAM,KACxDmwB,EAAMukD,EAAa/wD,KAAKC,IAAI+wD,GAC5BP,EAAOM,EAAa/wD,KAAKC,IAAI+wD,EAGjC,CAEA,MAAO,CAAExkD,IAAKA,EAAKikD,KAAMA,EAC7B,EAEAZ,EAAqB3sE,UAAU0tE,iBAAmB,SAA2Bz6D,EAAMg6D,GAC/E,OAAOjxE,KAAKoxE,qBAAqBn6D,EAAMg6D,GAAS,GAAQnwD,KAAK0f,KAAKywC,EAAQv3B,MAC9E,EAEAi3B,EAAqB3sE,UAAUotE,qBAAuB,SAA+Bn6D,EAAMg6D,EAASc,GAOhG,IANA,IAEI33E,EAAS6c,EAAK7c,OACdgjB,EAAQ20D,EAAWd,EAAQv3B,MAAQ,EAAIu3B,EAAQv3B,MAC/Cs4B,EAAsB,EAEjBv9D,EAAM,EAAGA,EAAMra,EAAQqa,IAAO,CACnC,IAAItX,EAPK6C,KAOU+wE,YAAY95D,EAAKxC,IAChCsG,GAAS5d,KACT60E,GAAuBlxD,KAAKuI,IAAIlsB,EAAQ8zE,EAAQ9zE,MAAO,GAE/D,CAEA,OAAO2jB,KAAK0f,KAAKwxC,EAAsB50D,EAC3C,EAEAuzD,EAAqB3sE,UAAUktE,WAAa,SAAqBj6D,GAO7D,IANA,IAEI7c,EAAS6c,EAAK7c,OACd00E,EAAM,EACNp1B,EAAQ,EAEHjlC,EAAM,EAAGA,EAAMra,EAAQqa,IAAO,CACnC,IAAItX,EAPK6C,KAOU+wE,YAAY95D,EAAKxC,IAChCsG,GAAS5d,KACT2xE,GAAO3xE,EACPu8C,IAER,CAEA,MAAO,CACHv8C,MAAO2xE,EAAMp1B,EACbA,MAAOA,EAEf,EAEOi3B,CACX,CA/H4B,CA+H1B1/C,IAEF,MCzII5G,GAAUe,GAAAA,SAAmB,CAAC,EAE9B6mD,GAA6B,IAC7BC,GAAS,SAGTC,GAAoB,GAEpBC,GAAc/nD,GAAQO,KAAO,KAAQ,EACrCynD,GAAkB,WAClBC,GAAmB,YAMnBhrC,GAAO,OACPirC,GAAc,cAEdC,GAAQ,QACRC,GAAQ,QAERC,GAAS,SACTC,GAAO,OAEPC,GAAO,OACPC,GAAM,MACNC,GAAW,UACXC,GAAS,SACTC,GAAS,SACTC,GAAc,cACdC,GAAS,SACTC,GAAQ,QACRC,GAAS,SACTC,GAAU,UACVC,GAAuB,sBACvBC,GAAO,OACPC,GAAO,OACPC,GAAM,MACNC,GAAa,YACbC,GAAa,YACbC,GAAgB,eAChBC,GAAa,YACbC,GAAe,cACfC,GAAa,YACbC,GAAa,YACbC,GAAY,WACZC,GAAe,cACfC,GAAU,UACVC,GAAe,cACfC,GAAgB,eAChBC,GAAoB,kBACpBC,GAAkB,iBAClBC,GAAgB,eAChBC,GAAsB,oBACtBC,GAAY,YACZC,GAAwB,CACxB9B,GAAKK,GAAQM,GAAMP,GAAaH,GAAUwB,GAC1CtB,GAAQkB,GAAcD,GAAWS,GAAWpB,IAO5CsB,GAAe,cAIfC,GAAkB,gBAClBC,GAAkB,gBAClBC,GAAO,OACPC,GAAW,UACXC,GAAa,YACbC,GAAa,YACbC,GAAO,OACPC,GAAW,UACXC,GAAe,cACfC,GAAS,SACTC,GAAa,YAEbC,GAAe,cACfC,GAAe,cAGfC,GAAc,MACdC,GAAW,WAEXC,GAAa,YAEbC,GAAc,aAEdC,GAAa,4BCpFbC,GAAgB,SAAUxyB,GAC1B,SAASwyB,EAAazoD,EAAKikD,EAAM9zB,EAAYsT,EAAOhL,EAAQzwC,GACxDiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKstB,IAAMA,EACXttB,KAAKuxE,KAAOA,EACZvxE,KAAKy9C,WAAaA,EAClBz9C,KAAK+wD,MAAQA,EACb/wD,KAAK+lD,OAASA,CAClB,CA6GA,OA3GKxC,IAAewyB,EAAahrE,UAAYw4C,GAC7CwyB,EAAa/xE,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACrE+xE,EAAa/xE,UAAUqH,YAAc0qE,EAErCA,EAAa/xE,UAAUy/C,OAAS,SAAiB9Y,GAC7C,IASI+kB,EATAsmB,EAAUh2E,KAAKsV,QAAQ0gE,QACvBv4B,EAAaz9C,KAAKy9C,WAElBw4B,EADOj2E,KAAKk2E,UACIzgB,QAAQz1D,KAAKstB,IAAKttB,KAAKuxE,MACvC4E,EAAYxrC,EAAUxF,SACtBixC,EAAYp2E,KAAKq2E,aAAa1rC,EAAW8S,GACzC64B,EAAW74B,EAAa04B,EAAUpwD,EAAIowD,EAAUnwD,EAChDuwD,EAAWD,EAAWF,EACtBI,EAASF,EAAWF,EAGpB34B,GACAiS,EAAa,CACT,IAAIzqB,GAAMkxC,EAAUpwD,EAAGkwD,EAAS1rC,IAChC,IAAItF,GAAMkxC,EAAUpwD,EAAGkwD,EAASxrC,KAEhCurC,GACAtmB,EAAWtgD,KAAK,IAAI61B,GAAMsxC,EAAUN,EAAS1rC,IACzC,IAAItF,GAAMuxC,EAAQP,EAAS1rC,IAC3B,IAAItF,GAAMsxC,EAAUN,EAASxrC,IAC7B,IAAIxF,GAAMuxC,EAAQP,EAASxrC,KAEnCzqC,KAAKiwB,IAAM,IAAIoa,GAAIksC,EAAUN,EAAS1rC,GAAIisC,EAAQP,EAASxrC,MAE3DilB,EAAa,CACT,IAAIzqB,GAAMgxC,EAAS3rC,GAAI6rC,EAAUnwD,GACjC,IAAIif,GAAMgxC,EAASzrC,GAAI2rC,EAAUnwD,IAEjCgwD,GACAtmB,EAAWtgD,KAAK,IAAI61B,GAAMgxC,EAAS3rC,GAAIisC,GACnC,IAAItxC,GAAMgxC,EAAS3rC,GAAIksC,GACvB,IAAIvxC,GAAMgxC,EAASzrC,GAAI+rC,GACvB,IAAItxC,GAAMgxC,EAASzrC,GAAIgsC,IAE/Bx2E,KAAKiwB,IAAM,IAAIoa,GAAI4rC,EAAS3rC,GAAIisC,EAAUN,EAASzrC,GAAIgsC,IAG3Dx2E,KAAK0vD,WAAaA,CACtB,EAEAqmB,EAAa/xE,UAAUqyE,aAAe,SAAuBpmD,EAAKwtB,GAC9D,IAAI8Y,EAAU9Y,EAAaxtB,EAAIz7B,QAAUy7B,EAAIx7B,SAG7C,OAFgBqsB,KAAK6N,IAAI7N,KAAK8K,MAAM2qC,EAAU,GA5DxB,KA+D1B,EAEAwf,EAAa/xE,UAAUogD,aAAe,WAClC,IAAI5iB,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACfmvC,EAASnvC,EAAQmvC,OAEjBA,EACAzkD,KAAKykD,OAASA,EAAO,CACjBn3B,IAAKttB,KAAKstB,IACVikD,KAAMvxE,KAAKuxE,KACX7xB,KAAM1/C,KAAKiwB,IAAI+b,SACf+X,OAAQ/jD,KAAK4jD,YACbtuC,QAAS,CACL0gE,QAAS1gE,EAAQ0gE,QACjBxnD,MAAOlZ,EAAQkZ,MACfihC,KAAMn6C,EAAQm6C,MAElBrL,aAAc,WACV5iB,EAAOi1C,sBACP,IAAI7mB,EAAgBpuB,EAAOijB,OAE3B,cADOjjB,EAAOijB,OACPmL,CACX,IAGJ5vD,KAAKy2E,qBAEb,EAEAV,EAAa/xE,UAAUyyE,oBAAsB,WACzC,IAGInhE,EADMtV,KACQsV,QACdo6C,EAFM1vD,KAEW0vD,WACjByG,EAAc,CACd5wC,OAAQ,CACJiJ,MAAOlZ,EAAQkZ,MACfh6B,MAAO8gB,EAAQm6C,KAAKj7D,MACpB6yD,SAAU/xC,EAAQm6C,KAAKpI,WAI/B9D,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAEzC,IAAK,IAAIyU,EAAM,EAAGA,EAAMi7C,EAAWt1D,OAAQqa,GAAO,EAAG,CACjD,IAAIg7C,EAAO,IAAItP,GAAUgW,GACpB/X,OAAOsR,EAAWj7C,GAAKsR,EAAG2pC,EAAWj7C,GAAKuR,GAC1C+2B,OAAO2S,EAAWj7C,EAAM,GAAGsR,EAAG2pC,EAAWj7C,EAAM,GAAGuR,GAEvDZ,EAAiBqqC,GApBRzvD,KAqBFykD,OAAO54B,OAAO4jC,EACzB,CACJ,EAEOsmB,CACX,CAvHoB,CAuHlBxyB,IAEF5tB,GAAkBogD,GAAc,CAC5B36E,UAAW,CACPjI,KAAM++E,GACNpvB,MAAOmvB,IAEX+D,SAAS,EACTvmB,KAAM,CACFj7D,MAAO,GAEXowD,OAAQ,IAGZ,UC7II8xB,GAAuB,SAAUX,GACjC,SAASW,IACLX,EAAa7tE,MAAMlI,KAAM+H,UAC7B,CAYA,OAVKguE,IAAeW,EAAoB3rE,UAAYgrE,GACpDW,EAAoB1yE,UAAY6G,OAAOS,OAAQyqE,GAAgBA,EAAa/xE,WAC5E0yE,EAAoB1yE,UAAUqH,YAAcqrE,EAE5CA,EAAoB1yE,UAAUkyE,QAAU,WAGpC,OAFWl2E,KAAK+wD,MAAM4lB,gBAAgB32E,KAAK+lD,OAG/C,EAEO2wB,CACX,CAhB2B,CAgBzBX,IAEF,MChBe,SAASa,GAAYthE,EAASxS,EAASnD,EAAOk3E,QAC1C,IAAVl3E,IAAmBA,EAAQ,CAAC,QACjB,IAAXk3E,IAAoBA,GAAS,GAElC,IAAIC,EAAWn3E,EAAMm3E,SAAWn3E,EAAMm3E,UAAY,CAAC,EAC/CxhD,EAAQ31B,EAAM21B,MAAQ31B,EAAM21B,OAAS,EACrCyhD,GAAY,EAIhB,GAFAp3E,EAAMq3E,SAAWr3E,EAAMq3E,UAAY,GAE/B1hD,EAZe,EAaf,OAAO,KAGX,IAAK,IAAI7O,KAAYnR,EACjB,IAAK4T,GAAQzC,EAAU9mB,EAAMq3E,WAAa1hE,EAAQrK,eAAewb,GAAW,CACxE,IAAIC,EAAYpR,EAAQmR,GACpBL,GAAWM,IACXqwD,GAAY,EACPF,IACDvhE,EAAQmR,GAAYgJ,GAAe/I,EAAU5jB,GAAUg0E,EAASrwD,MAE7DQ,GAASP,KACXmwD,IACDl3E,EAAMm3E,SAAWA,EAASrwD,IAE9B9mB,EAAM21B,QACNyhD,EAAYH,GAAYlwD,EAAW5jB,EAASnD,EAAOk3E,IAAWE,EAC9Dp3E,EAAM21B,QAEd,CAGJ,OAAOyhD,CACX,CCtCe,SAAS9W,GAAgBla,GAIpC,IAHA,IAAIkxB,EAAclxB,EAAO3rD,OACrByjE,EAAa,EAERnyD,EAAI,EAAGA,EAAIurE,EAAavrE,IAC7BmyD,EAAa/8C,KAAK0K,IAAIqyC,EAAY9X,EAAOr6C,GAAGuL,KAAK7c,QAGrD,OAAOyjE,CACX,CCKA,IAAIqZ,GAAoB,SAAU3zB,GAC9B,SAAS2zB,EAAiBhiB,EAAU5/C,GAChCiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKk1D,SAAWA,EAChBl1D,KAAKgkD,aAAekR,EAASlR,aAC7BhkD,KAAKm3E,aAAejiB,EAASkiB,mBAAmB9hE,EAAQywC,OAAO,IAI/D/lD,KAAKq3E,gBAAkB,CAAC,EAExBr3E,KAAKurC,OAAS,GACdvrC,KAAKs3E,eAAiB,GACtBt3E,KAAKu3E,aAAe,GACpBv3E,KAAKw3E,cAAgB,GACrBx3E,KAAKy3E,YAAc,GAEnBz3E,KAAK5G,QACT,CA2gBA,OAzgBKmqD,IAAe2zB,EAAiBnsE,UAAYw4C,GACjD2zB,EAAiBlzE,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACzEkzE,EAAiBlzE,UAAUqH,YAAc6rE,EAEzCA,EAAiBlzE,UAAU5K,OAAS,WAChC4G,KAAK03E,mBAAmB13E,KAAK23E,SAAS53E,KAAKC,MAC/C,EAEAk3E,EAAiBlzE,UAAU4zE,aAAe,SAAuB7xB,EAAQ8xB,GACrE,IAAIviE,EAAUtV,KAAKw3E,cAAcK,GACjC,IAAKviE,EAAS,CACV,IAAIwhE,EAAW92E,KAAK83E,YAAY9zE,UAAU8yE,SAC1C92E,KAAKw3E,cAAcK,GAAYviE,EAAUyR,GAAW,CAAE,EAAG+vD,EAAU,CAC/DnsB,UAAW3qD,KAAKsV,QAAQyiE,YACzBhyB,EACP,CAEA,OAAOzwC,CACX,EAEA4hE,EAAiBlzE,UAAUg0E,UAAY,SAAoB9yC,GACvD,IAAKA,EACD,OAAO,EAGX,GAAIllC,KAAKsV,QAAQ2iE,cAAgBl9D,GAASmqB,EAAM/nC,OAAQ,CAMpD,IALA,IAAI+mE,EAAah/B,EAAMg/B,WACnBoT,EAAiBt3E,KAAKs3E,eAAepT,GACrCgU,EAAc,GACdC,EAAc,EAETzsE,EAAI,EAAGA,EAAI4rE,EAAel9E,OAAQsR,IAAK,CAC5C,IAAIsB,EAAQsqE,EAAe5rE,GAC3B,GAAIsB,EAAO,CACP,IAAIorE,EAAQlzC,EAAM6gB,OAAOqyB,MACrBC,EAAarrE,EAAM+4C,OAAOqyB,MAE9B,GAAKA,GAASC,GAAeD,EAAM96D,QAAU+6D,EAAW/6D,MACpD,SAGAvC,GAAS/N,EAAM7P,SACfg7E,GAAer3D,KAAKC,IAAI/T,EAAM7P,OAC9B+6E,EAAY9oE,KAAK0R,KAAKC,IAAI/T,EAAM7P,QAExC,CACJ,CAEA,GAAIg7E,EAAc,EACd,OAAOjzC,EAAM/nC,MAAQg7E,CAE7B,CAEA,OAAOjzC,EAAM/nC,KACjB,EAEA+5E,EAAiBlzE,UAAUs0E,UAAY,SAAoBpzC,EAAO26B,QAE1C,IAAfA,IAAwBA,EAAa,GAE1C,IAAIyX,EAAiBt3E,KAAKs3E,eAAepyC,EAAMg/B,YAE/C,GAAIlkE,KAAKsV,QAAQijE,UAAW,CAMxB,IALA,IAAIP,EAAYh4E,KAAKg4E,UAAU9yC,GAC3BszC,EAAWR,GAAa,EACxBS,EAAY5Y,EACZ6Y,GAAe,EAEVhtE,EAAI,EAAGA,EAAI4rE,EAAel9E,OAAQsR,IAAK,CAC5C,IAAIsB,EAAQsqE,EAAe5rE,GAE3B,GAAIw5B,IAAUl4B,EACV,MAGJ,IAAIorE,EAAQlzC,EAAM6gB,OAAOqyB,MACrBC,EAAarrE,EAAM+4C,OAAOqyB,MAC9B,GAAIA,GAASC,EAAY,CACrB,UAAWD,IAAU1zD,GAAU0zD,IAAUC,EACrC,SAGJ,GAAID,EAAM96D,OAAS86D,EAAM96D,QAAU+6D,EAAW/6D,MAC1C,QAER,CAEA,IAAIq7D,EA9BC34E,KA8BmBg4E,UAAUhrE,IAC7B2rE,GAAc,GAAKH,GACnBG,EAAa,IAAMH,KACpBC,GAAaE,EACbX,GAAaW,EACbD,GAAe,EAnCd14E,KAqCUsV,QAAQ2iE,eACfD,EAAYl3D,KAAK6N,IAAIqpD,EAAW,IAG5C,CAMA,OAJIU,IACAD,GAAa5Y,GAGV,CAAE4Y,EAAWT,EACxB,CAEA,IAAIjyB,EAAS7gB,EAAM6gB,OACfyY,EAAYx+D,KAAK22E,gBAAgB5wB,GACjCiU,EAAoBh6D,KAAK44E,0BAA0Bpa,GAEvD,MAAO,CAAExE,EAAmB9zC,GAAoBgf,EAAM/nC,OAAS+nC,EAAM/nC,MAAQ68D,EACjF,EAEAkd,EAAiBlzE,UAAU60E,YAAc,SAAsBC,EAAUC,GAMrE,IALA,IAEIpqD,EAAMzK,EACNsH,EAAMpH,EAED1Y,EAAI,EAAGA,EAAI1L,KAAKs3E,eAAel9E,OAAQsR,IAAK,CACjD,IAAI4rE,EANKt3E,KAMmBs3E,eAAe5rE,GAC3C,GAAK4rE,EAIL,IAAK,IAAI0B,EAAM,EAAGA,EAAM1B,EAAel9E,OAAQ4+E,IAAO,CAClD,IAAI9zC,EAAQoyC,EAAe0B,GAC3B,GAAI9zC,IACIA,EAAM6gB,OAAOqyB,QAAUW,GAAa7zC,EAAM6gB,OAAOhb,OAAS+tC,GAAU,CACpE,IAAIx5E,EAfPU,KAemBs4E,UAAUpzC,EAAO,GAAG,GAChC/f,GAAQ7lB,IAAO6mB,SAAS7mB,KACxBksB,EAAM1K,KAAK0K,IAAIA,EAAKlsB,GACpBqvB,EAAM7N,KAAK6N,IAAIA,EAAKrvB,GAE5B,CAER,CACJ,CAEA,MAAO,CAAEqvB,IAAKA,EAAKnD,IAAKA,EAC5B,EAEA0rD,EAAiBlzE,UAAUi1E,iBAAmB,WAC1C,IAAIz3C,EAASxhC,KAETzN,EAAMyN,KAAKsV,QACXijE,EAAYhmF,EAAIgmF,UAChBW,EAAc3mF,EAAIwzD,OAClBozB,EAAc,CAAC,EAEnB,GAAIZ,EACA,IAAK,IAAI7sE,EAAI,EAAGA,EAAIwtE,EAAY9+E,OAAQsR,IAAK,CACzC,IAAIq6C,EAASmzB,EAAYxtE,GACrBotE,EAAW/yB,EAAOhb,KAClB18B,EAAMyqE,EAAW/yB,EAAOqyB,MAExBgB,EAASD,EAAY9qE,GACzB,IAAK+qE,EAAQ,CACTA,EAAS53C,EAAOq3C,YAAYC,EAAU/yB,EAAOqyB,OAE7C,IAAIiB,EAAc73C,EAAO63C,YACrBA,IACIA,EAAYC,SAASl/E,SACrBg/E,EAAOzqD,IAAM7N,KAAK6N,IAAIyqD,EAAOzqD,IAAKkH,GAAkBwjD,EAAYC,UAAU3qD,MAE1E0qD,EAAYb,SAASp+E,SACrBg/E,EAAO5tD,IAAM1K,KAAK0K,IAAI4tD,EAAO5tD,IAAKqK,GAAkBwjD,EAAYb,UAAUhtD,OAI9E4tD,EAAOzqD,MAAQzK,GAAak1D,EAAO5tD,MAAQpH,EAC3C+0D,EAAY9qE,GAAO+qE,EAEnBA,EAAS,IAEjB,CAEIA,IACA53C,EAAO61C,gBAAgByB,GAAYM,EAE3C,CAER,EAEAlC,EAAiBlzE,UAAUu1E,YAAc,SAAsBr0C,EAAOjuB,EAAMitD,GACxE,IAMIoN,EANAn0E,EAAQ+nC,EAAM/nC,MACd4oD,EAAS7gB,EAAM6gB,OACf8xB,EAAW3yC,EAAM2yC,SACjB2B,EAAYt0C,EAAM5vB,QAAQkkE,UAC1BC,EAAWxiE,EAAKuR,OAAsB,SACtCkxD,EAAYziE,EAAKuR,OAAuB,UAGxCzN,GAAS0+D,IAAa1+D,GAAS2+D,GAC/BpI,EAAa,CAAEhkD,IAAKmsD,EAAUlI,KAAMmI,GAC7BF,GAAar0D,GAAQq0D,EAAUr8E,SACtC6C,KAAK25E,kBAAoB35E,KAAK25E,mBAAqB,GACnD35E,KAAK25E,kBAAkB9B,GAAY73E,KAAK25E,kBAAkB9B,IACtD,IAAIlH,GAAqB6I,EAAUr8E,MAAO4oD,EAAQnhC,GAEtD0sD,EAAatxE,KAAK25E,kBAAkB9B,GAAUjG,cAAcz0E,EAAOq8E,EAAUr8E,QAG7Em0E,IACApsC,EAAM5X,IAAMgkD,EAAWhkD,IACvB4X,EAAMqsC,KAAOD,EAAWC,KACxBvxE,KAAK45E,iBAAiB10C,EAAOg/B,GAErC,EAEAgT,EAAiBlzE,UAAU41E,iBAAmB,SAA2B10C,EAAOg/B,GAC5E,IAAIzmB,GAAcz9C,KAAKsV,QAAQyiE,WAC3BziE,EAAU4vB,EAAM5vB,QAAQkkE,UACxBzzB,EAAS7gB,EAAM6gB,OACfz4B,EAAM4X,EAAM5X,IACZikD,EAAOrsC,EAAMqsC,KAEjB,GAAIvxE,KAAKsV,QAAQijE,UAAW,CACxB,IAAIsB,EAAoB75E,KAAK65E,kBAAkB30C,EAAOg/B,GACtD52C,EAAMusD,EAAkBvsD,IACxBikD,EAAOsI,EAAkBtI,IAC7B,KAAO,CACH,IAAI/oD,EAAS,CAAE07C,WAAYA,EAAYne,OAAQA,GAC/C/lD,KAAK85E,YAAY,CAAE38E,MAAOmwB,GAAO9E,GACjCxoB,KAAK85E,YAAY,CAAE38E,MAAOo0E,GAAQ/oD,EACtC,CAEA,IAAIuxD,EAAW,IAAIrD,GAAoBppD,EAAKikD,EAAM9zB,EAAYz9C,KAAM+lD,EAAQzwC,GAC5E4vB,EAAMs0C,UAAY,CAAEO,GACpB70C,EAAMrZ,OAAOkuD,EACjB,EAEA7C,EAAiBlzE,UAAU61E,kBAAoB,SAA4B30C,EAAOg/B,GAC9E,IAAI8T,EAAYh4E,KAAKs4E,UAAUpzC,EAAO,GAAG,GAAKA,EAAM/nC,MAChDmwB,EAAM4X,EAAM5X,IAAM0qD,EAClBzG,EAAOrsC,EAAMqsC,KAAOyG,EAYxB,OAVAh4E,KAAKq5E,YAAcr5E,KAAKq5E,aAAe,CAAEb,SAAU,GAAIc,SAAU,IAE7DhsD,EAAM,IACNttB,KAAKq5E,YAAYC,SAASpV,GAAcpjD,KAAK6N,IAAI3uB,KAAKq5E,YAAYC,SAASpV,IAAe,EAAG52C,IAG7FikD,EAAO,IACPvxE,KAAKq5E,YAAYb,SAAStU,GAAcpjD,KAAK0K,IAAIxrB,KAAKq5E,YAAYb,SAAStU,IAAe,EAAGqN,IAG1F,CAAEjkD,IAAKA,EAAKikD,KAAMA,EAC7B,EAEA2F,EAAiBlzE,UAAU2zE,SAAW,SAAmB1gE,EAAMuR,GAC3D,IAAI07C,EAAa17C,EAAO07C,WACpBne,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAElBP,EAAiBt3E,KAAKs3E,eAAepT,GACpCoT,IACDt3E,KAAKs3E,eAAepT,GAAcoT,EAAiB,IAGvD,IAAIC,EAAev3E,KAAKu3E,aAAaM,GAChCN,IACDv3E,KAAKu3E,aAAaM,GAAYN,EAAe,IAGjD,IAAIryC,EAAQllC,KAAKg6E,YAAY/iE,EAAMuR,GAC/B0c,IACAr6B,OAAOW,OAAO05B,EAAO1c,GAErB0c,EAAM+0C,MAAQj6E,KACdklC,EAAMg1C,SAAWjjE,EAAKuR,OAAO0xD,SACxB/0D,GAAQ+f,EAAM8gB,YACf9gB,EAAM8gB,SAAWD,EAAO9uC,KAAKitD,IAEjClkE,KAAKu5E,YAAYr0C,EAAOjuB,EAAMitD,IAGlClkE,KAAKurC,OAAOn8B,KAAK81B,GACjBqyC,EAAanoE,KAAK81B,GAClBoyC,EAAeloE,KAAK81B,GAEpBllC,KAAK85E,YAAY7iE,EAAKw4D,YAAajnD,EACvC,EAEA0uD,EAAiBlzE,UAAUm2E,iBAAmB,SAA2B7kE,EAASnY,EAAO8oD,EAAUie,EAAYne,EAAQ8xB,GACnH,IAAIl4E,EAAQ,CAAEm3E,SAAU/wB,EAAOq0B,UAAWpD,SAAU,CAAE,OAAQ,YAAa,UAAW,UAAW,UAAW,WAAY,SAAU,SAAU,sBAAuB,wBAE/JqD,EAASr6E,KAAKy3E,YAAYI,GACzB1yD,GAAQk1D,KACTr6E,KAAKy3E,YAAYI,GAAYwC,EAASzD,GAAYthE,EAAS,CAAC,EAAG3V,GAAO,IAG1E,IAAIi4E,EAAetiE,EAYnB,OAXI+kE,GAEAzD,GADAgB,EAAe7wD,GAAW,CAAC,EAAG6wD,GACJ,CACtBz6E,MAAOA,EACP8oD,SAAUA,EACV3rD,MAAO4pE,EACPne,OAAQA,EACRC,SAAUD,EAAO9uC,KAAKitD,IACvBvkE,GAGAi4E,CACX,EAEAV,EAAiBlzE,UAAU81E,YAAc,SAAsB7iE,EAAMuR,GACjE,IAAIswD,EAAWtwD,EAAOu9B,OAAOhb,KACzB5tC,EAAQ8Z,EAAK9Z,MACbm9E,EAAYt6E,KAAKq3E,gBAAgByB,GAEjC3yD,SAAShpB,IAAoB,OAAVA,KACnBm9E,EAAYt6E,KAAKq3E,gBAAgByB,GAC7BwB,GAAa,CAAE3rD,IAAKzK,EAAWsH,IAAKpH,IAE9BuK,IAAM7N,KAAK6N,IAAI2rD,EAAU3rD,IAAKxxB,GACxCm9E,EAAU9uD,IAAM1K,KAAK0K,IAAI8uD,EAAU9uD,IAAKruB,GAEhD,EAEA+5E,EAAiBlzE,UAAU2yE,gBAAkB,SAA0B5wB,GACnE,IAAImP,EAAWl1D,KAAKk1D,SAChB4jB,EAAW/yB,EAAOhb,KAClBA,EAAO+tC,EAAW5jB,EAASqlB,eAAezB,GAAY5jB,EAASsJ,UAEnE,IAAKzzB,EACD,MAAM,IAAI3qC,MAAM,yCAA2C04E,GAG/D,OAAO/tC,CACX,EAEAmsC,EAAiBlzE,UAAUy/C,OAAS,SAAiB9Y,GACjD,IAAInJ,EAASxhC,KAETw6E,EAAgBx6E,KAAKw6E,cAAgB,GACrCC,EAAcz6E,KAAKurC,OACnB4rC,EAAen3E,KAAKm3E,aACpBrH,EAAU,EAEd9vE,KAAK03E,oBAAmB,SAAUzgE,EAAMuR,GACpC,IAAI07C,EAAa17C,EAAO07C,WACpBwW,EAAgBlyD,EAAOu9B,OAEvByY,EAAYh9B,EAAOm1C,gBAAgB+D,GACnCx1C,EAAQu1C,EAAY3K,KAEpB6K,EAAeH,EAActW,GAMjC,GALKyW,IACDH,EAActW,GAAcyW,EACxBn5C,EAAOm5C,aAAaxD,EAAcjT,EAAY1F,IAGlDt5B,EAAO,CACP,IAAIozC,EAAY92C,EAAO82C,UAAUpzC,EAAOs5B,EAAUqB,cAC9C+a,EAAYp5C,EAAOo5C,UAAUpc,EAAW8Z,GAC5C,GAAIsC,EAAW,CACX,IAAIC,EAAYr5C,EAAOq5C,UAAUF,EAAcC,GAE/C11C,EAAM41C,UAAYt5C,EAAOs5C,UAAU51C,EAAOs5B,GAC1Ct5B,EAAM61C,WAAazC,EAAU,GAEzB92C,EAAOlsB,QAAQ2iE,eACf/yC,EAAMghB,WAAa1kB,EAAOw2C,UAAU9yC,IAGxC1D,EAAOw5C,YAAY91C,EAAO21C,EAC9B,MACI31C,EAAMnxC,SAAU,CAExB,CACJ,IAEAiM,KAAKi7E,iBAAiBT,IACjBx6E,KAAKsV,QAAQ4/B,MAAQl1C,KAAKsV,QAAQ4lE,aAAel7E,KAAKurC,OAAOnxC,QAC9D4F,KAAKk7E,cAGTl7E,KAAKiwB,IAAM0a,CACf,EAEAusC,EAAiBlzE,UAAU42E,UAAY,SAAoBpc,EAAW8Z,GAClE,OAAO9Z,EAAU/I,QAAQ6iB,EAAU,GAAIA,EAAU,IAAKt4E,KAAKsV,QAAQ4/B,KACvE,EAEAgiC,EAAiBlzE,UAAUk3E,YAAc,WAKrC,IAJA,IAEI5D,EAAiBt3E,KAAKs3E,eACtB/rC,EAAS+rC,EAAe,GAAGnvE,OAAOsmB,GAAK6oD,IAClC7iE,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IAC/B82B,EAAO92B,IALFzU,KAMEm7E,WAAW5vC,EAAO92B,GAGrC,EAEAyiE,EAAiBlzE,UAAUm3E,WAAa,SAAqBj2C,GACzD,IAAIw6B,EAAe1/D,KAAKm3E,aAAa1X,UAAUv6B,EAAMjV,KAChDyvC,EAAanuC,OAAO2T,EAAMjV,MAC3BiV,EAAMue,OAAOic,EAErB,EAEAwX,EAAiBlzE,UAAU82E,UAAY,SAAoB51C,EAAOs5B,GAC9D,IAAIxE,EAAoBh6D,KAAK44E,0BAA0Bpa,GACnDrhE,EAAQ+nC,EAAM/nC,MAElB,OAAOqhE,EAAUlpD,QAAQ44C,QACrB/wD,EAAQ68D,EAAoB78D,GAAS68D,CAC7C,EAEAkd,EAAiBlzE,UAAU40E,0BAA4B,SAAoCpa,GACvF,IAAI2Y,EAAen3E,KAAKm3E,aACpB7hE,EAAUkpD,EAAUlpD,QAKxB,MAJqB,GAAGnN,OACpBmN,EAAQi0D,oBAAsBj0D,EAAQ0kD,mBAGpBmd,EAAaiE,WAAa,IAAM,CAC1D,EAEAlE,EAAiBlzE,UAAUg3E,YAAc,SAAsB91C,EAAO21C,GAClE31C,EAAMue,OAAOo3B,EACjB,EAEA3D,EAAiBlzE,UAAUi3E,iBAAmB,WAA+B,EAE7E/D,EAAiBlzE,UAAU62E,UAAY,SAAoBF,EAAcC,GACrE,IACI7C,EADU/3E,KAAKsV,QACMyiE,WACrBxiB,EAAQwiB,EAAa6C,EAAYD,EACjCnlB,EAAQuiB,EAAa4C,EAAeC,EAExC,OAAO,IAAIvwC,GAAIkrB,EAAMjrB,GAAIkrB,EAAMjrB,GAAIgrB,EAAM/qB,GAAIgrB,EAAM/qB,GACvD,EAEAysC,EAAiBlzE,UAAU22E,aAAe,SAAuBxD,EAAcjT,GAC3E,OAAOiT,EAAa1hB,QAAQyO,EAChC,EAEAgT,EAAiBlzE,UAAU0zE,mBAAqB,SAA6BxxE,GAOzE,IANA,IAAIs7B,EAASxhC,KAET+lD,EAAS/lD,KAAKsV,QAAQywC,OACtBrM,EAAQumB,GAAgBla,GACxBkxB,EAAclxB,EAAO3rD,OAEhBy9E,EAAW,EAAGA,EAAWZ,EAAaY,IAC3Cr2C,EAAO65C,oBAAoBt1B,EAAO8xB,GAAW,sBAAuBA,EAAU3xE,GAGlF,IAAK,IAAIg+D,EAAa,EAAGA,EAAaxqB,EAAOwqB,IACzC,IAAK,IAAIoX,EAAa,EAAGA,EAAarE,EAAaqE,IAAc,CAC7D,IAAIZ,EAAgB30B,EAAOu1B,GACvBC,EAAkB/5C,EAAO21C,aAAanX,WAAWkE,GAGrDh+D,EAFgBs7B,EAAOg6C,WAAWd,EAAeY,EAAYpX,GAEzC,CAChBje,SAAUs1B,EACVrX,WAAYA,EACZjE,gBAAiBvmB,EACjBqM,OAAQ20B,EACR7C,SAAUyD,GAElB,CAGJ,IAAK,IAAIG,EAAa,EAAGA,EAAaxE,EAAawE,IAC/Cj6C,EAAO65C,oBAAoBt1B,EAAO01B,GAAa,sBAAuBA,EAAYv1E,EAE1F,EAEAgxE,EAAiBlzE,UAAUq3E,oBAAsB,SAA8Bt1B,EAAQjoC,EAAO+5D,EAAU3xE,GACpG,IAAIw1E,EAAkB31B,EAAOjoC,GAC7B,GAAI49D,EAAiB,CACjB,IAAIxX,EAAawX,EAAgBxX,WAGjCh+D,EAFgBlG,KAAKw7E,WAAWz1B,EAAQ8xB,EAAU3T,EAAYwX,EAAgBzlD,MAE1D,CAChBgwB,SAAUy1B,EAAgBz1B,SAC1Bie,WAAYA,EACZne,OAAQA,EACR8xB,SAAUA,EACV7xB,SAAU01B,EAAgBzlD,MAElC,CACJ,EAEAihD,EAAiBlzE,UAAUw3E,WAAa,SAAqBz1B,EAAQ8xB,EAAU3T,EAAYjuC,GAClFj2B,KAAK27E,aACN37E,KAAK27E,WAAa,IAGtB,IAAIC,EAAY57E,KAAK27E,WAAW9D,GAC3B+D,IACDA,EAAY57E,KAAK27E,WAAW9D,GAAY,IAG5C,IAAI5gE,EAAO2kE,EAAU1X,GAKrB,OAJKjtD,IACDA,EAAO2kE,EAAU1X,GAAciL,GAAAA,QAAAA,UAA+BppB,EAAQme,EAAYjuC,IAG/Ehf,CACX,EAEAigE,EAAiBlzE,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GAC5E,OAAoB,OAAhB+jB,EAAM/nC,MACC,GAGJ6C,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EAAQ+jB,EAAM/nC,MACvD,EAEA+5E,EAAiBlzE,UAAU6tE,WAAa,SAAqB56D,GACzD,OAAOA,EAAKw4D,YAAYtyE,KAC5B,EAEO+5E,CACX,CA/hBwB,CA+hBtB3zB,IAEF5tB,GAAkBuhD,GAAkB,CAChCnxB,OAAQ,GACRgyB,YAAY,EACZQ,WAAW,EACXrjC,MAAM,EACNgmC,aAAa,IAGjB,UCpjBIY,GAAmB,CACnBr8D,MAAO,SAASsxC,EAAO/9D,GACnB,OAAO+9D,EAAMhnC,QN6DF,cM3DP/pB,KAAK6vD,UAAU78D,GAEvB,EAEA+oF,MAAO,SAAShrB,EAAO/9D,GACnB,OAAO+9D,EAAMhnC,QACT6qD,GACA50E,KAAK6vD,UAAU78D,GAEvB,EAEA+8D,KAAM,SAASgB,EAAO/9D,GAClB,OAAO+9D,EAAMhnC,QNiDH,aM/CN/pB,KAAK6vD,UAAU78D,GAEvB,EAEAg9D,IAAK,SAASe,EAAO/9D,GACjB,OAAO+9D,EAAMhnC,QN2CF,cMzCP/pB,KAAK6vD,UAAU78D,GAEvB,EAEA68D,UAAW,SAAS78D,GAChB,MAAO,CACHmK,MAAO6C,KAAK7C,MACZ+oD,WAAYlmD,KAAKkmD,WACjB60B,WAAY/6E,KAAK+6E,WACjB90B,SAAUjmD,KAAKimD,SACfF,OAAQ/lD,KAAK+lD,OACbC,SAAUhmD,KAAKgmD,SACfG,aAAcnmD,KAAKmmD,aACnB/oC,MAAOpd,KAAKod,MACZ5pB,QAAS46B,GAAap7B,GACtBgpF,cAAehpF,EACfkyC,MAAOllC,KAEf,GAGJ,MC9CIi8E,GAAY,CACZC,WAAY,WACR,IAAI5mE,EAAUtV,KAAKsV,QAAQs+C,MACvB16D,EAAO8G,KAAKk6E,UAAY5kE,EAAQ45C,MAAMh2D,MAElB,IAApBoc,EAAQvhB,SAAqBoxB,GAAQjsB,IAAkB,OAATA,IAC9C8G,KAAK8zD,KAAO,IAAI7E,GAAK,CACjB9xD,MAAO6C,KAAK7C,MACZjE,KAAMA,EACN8sD,SAAUhmD,KAAKgmD,SACfC,SAAUjmD,KAAKimD,SACfF,OAAQ/lD,KAAK+lD,QACd/lD,KAAKsV,QAAQs+C,MAAO5zD,KAAKi6E,MAAMj2B,cAElChkD,KAAK6rB,OAAO7rB,KAAK8zD,MAEzB,GAGJ,MCXIqoB,GAAa,SAAU54B,GACvB,SAAS44B,EAAUh/E,EAAOmY,GACtBiuC,EAAavgD,KAAKhD,MAElBA,KAAK7C,MAAQA,EACb6C,KAAKsV,QAAUA,EACftV,KAAK86E,UAAYrrD,GAAezvB,KAAKsV,QAAQwlE,WAAW,GACxD96E,KAAKo8E,iBAAkB,CAC3B,CAkRA,OAhRK74B,IAAe44B,EAAUpxE,UAAYw4C,GAC1C44B,EAAUn4E,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAClEm4E,EAAUn4E,UAAUqH,YAAc8wE,EAElCA,EAAUn4E,UAAU5K,OAAS,WACzB,IAAI7G,EAAMyN,KAAKsV,QACX+mE,EAAU9pF,EAAI8pF,QACdrqB,EAASz/D,EAAIy/D,OAEjB,IAAIhyD,KAAKs8E,UAAT,CAWA,GAPAt8E,KAAKs8E,WAAY,EAEbD,EAAQtoF,SAAWsoF,EAAQzlF,OAC3BoJ,KAAK+0B,OAAS/0B,KAAKu8E,eACnBv8E,KAAK6rB,OAAO7rB,KAAK+0B,SAGjBi9B,EAAOj+D,QAAS,CAChB,IAAI8hE,EAAgBztC,GAAY4pC,GAC5BxK,EAAYxnD,KAAKwnD,YACjBg1B,EAAYx8E,KAAK7C,MACjB04D,EACA2mB,EAAY3mB,EAAcrO,GACnBwK,EAAO7wC,SACdq7D,EAAYx8E,KAAKy8E,YAAYzqB,EAAO7wC,SAExCnhB,KAAKkvD,MAAQ,IAAIxC,GAAQ8vB,EACrBz1D,GAAW,CACPolB,MAAO3oB,EACPujC,OAAQvjC,EACRloB,OAAQ,CACJwsB,KAAM,EACNF,MAAO,GAEXg9B,OAAQn1B,GAAeuiC,EAAOpN,OAAQ5kD,KAAK+lD,OAAOnB,SACnDoN,GACHxK,GAEJxnD,KAAK6rB,OAAO7rB,KAAKkvD,MACrB,CAEAlvD,KAAKk8E,aAEDl8E,KAAK+5E,UACL/5E,KAAK6rB,OAAO7rB,KAAK+5E,SApCrB,CAsCJ,EAEAoC,EAAUn4E,UAAU04E,aAAe,WAC/B,IAAIpnE,EAAUtV,KAAKsV,QAAQ+mE,QACvBl1B,EAAa7xC,EAAQ6xC,WACrBN,EAAS9/B,GAAW,CAAEyH,MAAOxuB,KAAKwuB,OAASlZ,EAAQuxC,QAMvD,OAJK1hC,GAAQ0hC,EAAOr4B,SAChBq4B,EAAOr4B,MAAQ,IAAI+S,GAAM4lB,GAAYhlB,WAAWgwC,IAAmBtyC,SAGhEgnB,CACX,EAEAs1B,EAAUn4E,UAAUogD,aAAe,WAA0B,EAE7D+3B,EAAUn4E,UAAUu4E,aAAe,WAC/B,IAAIjnE,EAAUtV,KAAKsV,QAAQ+mE,QAmB3B,OAlBa,IAAI90B,GAAa,CAC1Bp0D,KAAMmiB,EAAQniB,KACdqB,MAAO8gB,EAAQ1e,KACfnC,OAAQ6gB,EAAQ1e,KAChB80C,SAAUp2B,EAAQo2B,SAClByb,WAAY7xC,EAAQ6xC,WACpBN,OAAQ7mD,KAAK08E,eACblnC,QAASx1C,KAAK+lD,OAAOvQ,SAAWlgC,EAAQkgC,QACxCoP,OAAQn1B,GAAena,EAAQsvC,OAAQ5kD,KAAK+lD,OAAOnB,QACnDxpD,UAAWka,EAAQla,UACnBqpD,OAAQnvC,EAAQmvC,QACjB,CACCuB,SAAUhmD,KAAKgmD,SACf7oD,MAAO6C,KAAK7C,MACZ4oD,OAAQ/lD,KAAK+lD,OACbE,SAAUjmD,KAAKimD,UAIvB,EAEAk2B,EAAUn4E,UAAU24E,UAAY,WAM5B,OALK38E,KAAK+0B,SACN/0B,KAAK+0B,OAAS/0B,KAAKu8E,eACnBv8E,KAAK+0B,OAAO0uB,OAAOzjD,KAAK48E,YAGrB58E,KAAK+0B,OAAO9E,GACvB,EAEAksD,EAAUn4E,UAAUy/C,OAAS,SAAiB9Y,GAC1C,IAGIr1B,EADMtV,KACQsV,QACdwlE,EAFM96E,KAEU86E,UAChBnwB,EAAWr1C,EAAQq1C,SAEvB3qD,KAAK5G,SAEL4G,KAAKiwB,IAAM0a,EACX,IAAIkyC,EAAWlyC,EAAU9jB,QAuBzB,GArBI8jC,EACImwB,EACA+B,EAAStyC,IAAMsyC,EAASpoF,SAExBooF,EAASpyC,IAAMoyC,EAASpoF,SAGxBqmF,EACA+B,EAASvyC,IAAMuyC,EAASroF,QAExBqoF,EAASryC,IAAMqyC,EAASroF,QAIhCwL,KAAK48E,UAAYC,EACb78E,KAAK+0B,QACL/0B,KAAK+0B,OAAO0uB,OAAOo5B,GAGvB78E,KAAK88E,YAAYD,GAEb78E,KAAKw5E,UACL,IAAK,IAAI9tE,EAAI,EAAGA,EAAI1L,KAAKw5E,UAAUp/E,OAAQsR,IAlClC1L,KAmCEw5E,UAAU9tE,GAAG+3C,OAAOo5B,GAInC,GAAI78E,KAAK8zD,KAAM,CACX,IAAIipB,EAAgB/8E,KAAK28E,YAEzB,IAAMrnE,EAAQ+mE,QAAQtoF,UAAWuhB,EAAQ+mE,QAAQzlF,KAAO,CACpD,IAAIuuC,EAAS43C,EAAc53C,SAC3B43C,EAAgB,IAAI1yC,GAAIlF,EAAOpf,EAAGof,EAAOnf,EAAGmf,EAAOpf,EAAGof,EAAOnf,EACjE,CAEAhmB,KAAK8zD,KAAKrQ,OAAOs5B,EACrB,CACJ,EAEAZ,EAAUn4E,UAAU84E,YAAc,SAAsB7sD,GACpD,IACI3a,EADMtV,KACQsV,QACd45C,EAFMlvD,KAEMkvD,MACZxpC,EAASpQ,EAAQ08C,OAAOnV,SAExBqS,IAEAxpC,GADAA,EAASA,IAAW8sD,GAAQ7tD,EAAMe,KACd+sD,GAAQlvD,EAASmC,EAErCwpC,EAAMzL,OAAOxzB,GACbi/B,EAAMj/B,IAAI+a,QAAQhrC,KAAK28E,YAAaj3D,GACpCwpC,EAAMzL,OAAOyL,EAAMj/B,KAE3B,EAEAksD,EAAUn4E,UAAUyhD,gBAAkB,WAClC,IAAI42B,EAAUr8E,KAAKsV,QAAQkwC,UAAU62B,QACjCW,EAAeh9E,KAAK08E,eAAeluD,MACnClZ,EAAUtV,KAAKsV,QAAQ+mE,QACvBzlF,EAAO0e,EAAQ1e,MAAQ0e,EAAQuxC,OAAOryD,OAAS,IAAM6nF,EAAQx1B,OAAOryD,OAAS,GAE7EyoF,EAAS,IAAI11B,GAAa,CAC1Bp0D,KAAMmiB,EAAQniB,KACdqB,MAAOoC,EACPnC,OAAQmC,EACR80C,SAAUp2B,EAAQo2B,SAClByb,WAAYk1B,EAAQ7tD,OAASwuD,EAC7Bn2B,OAAQ,CACJr4B,MAAO6tD,EAAQx1B,OAAOr4B,MACtBh6B,MAAO6nF,EAAQx1B,OAAOryD,MACtBghD,QAAS/lB,GAAe4sD,EAAQx1B,OAAOrR,QAAS,IAEpDA,QAAS/lB,GAAe4sD,EAAQ7mC,QAAS,KAI7C,OAFAynC,EAAOx5B,OAAOzjD,KAAK48E,WAEZK,EAAOx1B,YAClB,EAEA00B,EAAUn4E,UAAUk5E,gBAAkB,WAClC,OAAQl9E,KAAK+0B,QAAU,CAAC,GAAG0vB,MAC/B,EAEA03B,EAAUn4E,UAAU8hD,oBAAsB,WACtC,IACIrB,EAAQ/E,EADR3qB,EAAS/0B,KAAK+0B,OAGlB,GAAIA,EACA2qB,EAAO3qB,EAAOiyB,WAAWhb,SACzByY,EAAS1vB,EAAO0vB,WACb,CACH,IAAI7tD,EAAOoJ,KAAKsV,QAAQ+mE,QAAQzlF,KAC5BumF,EAAWvmF,EAAO,EAClBuuC,EAASnlC,KAAKiwB,IAAIkV,SACtBua,EAAO,IAAIzT,GAAU,CAAE9G,EAAOpf,EAAIo3D,EAAUh4C,EAAOnf,EAAIm3D,GAAY,CAAEvmF,EAAMA,GAC/E,CAEA,MAAO,CACH0e,QAAStV,KAAKsV,QACdoqC,KAAMA,EACN+E,OAAQA,EAEhB,EAEA03B,EAAUn4E,UAAUo5E,cAAgB,WAChC,IAAIT,EAAY38E,KAAK28E,YACjBU,EAAUr9E,KAAKi6E,MAAM5kB,KAAKgoB,UAG9B,IAFmBA,GAAWA,EAAQ5xC,SAASkxC,GAE9B,CACb,IAEI32D,EAAGs3D,EAFHv3D,EAAI42D,EAAUnyC,GRxOT,EQoPT,OARIxqC,KAAK86E,WACL90D,EAAI22D,EAAUpyC,GACd+yC,EAAgB/5D,IAEhByC,EAAI22D,EAAUlyC,GACd6yC,EAAgB34D,GAGb,CACHugB,MAAO,IAAID,GAAMlf,EAAGC,GACpBmmB,MAAO,CACHoxC,WAdct5D,OAed0mC,SAAU2yB,GAGtB,CACJ,EAEAnB,EAAUn4E,UAAUy4E,YAAc,SAAsBt7D,GACpD,OAAOnhB,KAAKi6E,MAAM4B,iBAAiB77E,KAAMmhB,EAC7C,EAEAg7D,EAAUn4E,UAAUw5E,YAAc,SAAsBvtD,GAEpD,OADgBjwB,KAAK28E,YACJlxC,SAASxb,EAC9B,EAEAksD,EAAUn4E,UAAUy5E,eAAiB,WAC7Bz9E,KAAKkvD,QACLlvD,KAAKkvD,MAAM55C,QAAQwvC,QAAS,GAG5B9kD,KAAK8zD,OACL9zD,KAAK8zD,KAAKx+C,QAAQwvC,QAAS,EAEnC,EAEAq3B,EAAUn4E,UAAUwjD,UAAY,WAC5B,MAAO,CACHxB,SAAUhmD,KAAKgmD,SACfC,SAAUjmD,KAAKimD,SACf9oD,MAAO6C,KAAK7C,MACZ+oD,WAAYlmD,KAAKkmD,WACjB60B,WAAY/6E,KAAK+6E,WACjBh1B,OAAQ/lD,KAAK+lD,OAErB,EAEOo2B,CACX,CA3RiB,CA2Rf54B,IAEF44B,GAAUn4E,UAAU8yE,SAAW,CAC3BnsB,UAAU,EACV0xB,QAAS,CACLtoF,SAAS,EACTozD,WAAYtiC,EACZjuB,KR5Re,EQ6RfzD,KAAMswB,EACNojC,OAAQ,CACJryD,MAAO,GAEXghD,QAAS,GAEbwc,OAAQ,CACJj+D,SAAS,EACT8oD,SAAU21B,GACVl3E,OAAQksB,GAAW,GACnB6jB,QAAS7jB,GAAW,GACpBpsB,UAAW,CACPjI,KAAM++E,GACNpvB,MAAOmvB,KAGfre,MAAO,CACH1E,MAAO,CAAC,GAEZ1J,UAAW,CACP62B,QAAS,CACLx1B,OAAQ,CACJr4B,MAAO,OACPh6B,MAAO,IAGfowD,O5MxTsB,K4M0T1B40B,UAAW,CACP/pB,KAAM,CACFj7D,MAAO,KAKnBuyB,GAAWo1D,GAAUn4E,UAAW83E,IAChC/0D,GAAWo1D,GAAUn4E,UAAWi4E,IAEhC,UC9UIyB,GAAe,SAAUn6B,GACzB,SAASm6B,EAAYhuB,EAAY3J,EAAQ8xB,GACrCt0B,EAAavgD,KAAKhD,MAElBA,KAAK0vD,WAAaA,EAClB1vD,KAAK+lD,OAASA,EACd/lD,KAAK63E,SAAWA,CACpB,CA4EA,OA1EKt0B,IAAem6B,EAAY3yE,UAAYw4C,GAC5Cm6B,EAAY15E,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACpE05E,EAAY15E,UAAUqH,YAAcqyE,EAEpCA,EAAY15E,UAAUunC,OAAS,WAC3B,OAAOvrC,KAAK29E,iBAAiB39E,KAAK0vD,WACtC,EAEAguB,EAAY15E,UAAU25E,iBAAmB,SAA2BpyC,GAEhE,IADA,IAAInzC,EAAS,GACJsT,EAAI,EAAGtR,EAASmxC,EAAOnxC,OAAQsR,EAAItR,EAAQsR,IAC5C6/B,EAAO7/B,KAA4B,IAAtB6/B,EAAO7/B,GAAG3X,SACvBqE,EAAOgX,KAAKm8B,EAAO7/B,GAAGkxE,UAAU5wC,SAAS7G,UAIjD,OAAO/sC,CACX,EAEAslF,EAAY15E,UAAUogD,aAAe,WACjC,IAAI5iB,EAASxhC,KAET2lD,EAAe3lD,KAAK+lD,OAAOtB,OAC3BkB,GACA3lD,KAAKykD,OAASkB,EAAa,CACvBpa,OAAQvrC,KAAK29E,iBAAiB39E,KAAK0vD,YACnC3J,OAAQ/lD,KAAK+lD,OACbhC,OAAQ/jD,KAAK4jD,YACbQ,aAAc,WAGV,OAFA5iB,EAAOo8C,gBAEAp8C,EAAOijB,MAClB,IAEAzkD,KAAKykD,SAAWt/B,GAAQnlB,KAAKykD,OAAOnvC,QAAQsvC,UAC5C5kD,KAAKykD,OAAOnvC,QAAQsvC,OAAS5kD,KAAK+lD,OAAOnB,SAG7C5kD,KAAK49E,eAEb,EAEAF,EAAY15E,UAAU45E,cAAgB,WAClC,IACItoE,EADMtV,KACQsV,QACdywC,EAFM/lD,KAEO+lD,OACbv3B,EAAQu3B,EAAOv3B,MACfsoD,EAAW/wB,EAAOq0B,UAElBh0D,GAAWoI,IAAUsoD,IACrBtoD,EAAQsoD,EAAStoD,OAGrB,IAAIihC,EAAOtP,GAAAA,WAAqBngD,KAAKurC,SAAU,CAC3ChmB,OAAQ,CACJiJ,MAAOA,EACPh6B,MAAOuxD,EAAOvxD,MACdghD,QAASuQ,EAAOvQ,QAChB6R,SAAUtB,EAAOsB,UAErBzC,OAAQmB,EAAOnB,SAGftvC,EAAQ+kC,QACRoV,EAAKlhB,QAGTvuC,KAAKykD,OAASgL,CAClB,EAEAiuB,EAAY15E,UAAUsrD,SAAW,SAAmBt8D,EAAG6qF,GACnD,OAAO79E,KAAK4yB,OAAOkrD,gBAAgBD,EAAO93D,EAAG83D,EAAO73D,EAAGhmB,KAAK63E,SAChE,EAEO6F,CACX,CApFmB,CAoFjBn6B,IAEF5tB,GAAkB+nD,GAAa,CAC3BrjC,QAAQ,IAGZ,UC3FI0jC,GAAgB,CAChBC,oBAAqB,SAASzyC,GAe1B,IAdA,IACIh5C,EADeyN,KAAK4yB,OAAOsiC,SAASkiB,mBAAmBp3E,KAAK+lD,QACzCzwC,QACnBwkD,EAAYvnE,EAAIunE,UAChBnP,EAAWp4D,EAAIo4D,SACfuD,EAAU37D,EAAI27D,QAEd+vB,EAAWtzB,EAAW5lC,EAAIC,EAC1B+lB,EAAO4f,EAAW3lC,EAAID,EACtBm5D,EAAUhwB,EAAU,EAAI,EACxBp8C,EAAMosE,EAENC,EAAgBC,GAAgB7yC,EAAO,GAAI0yC,EAAUC,EAASnzC,EAAMj5B,GACpE1Z,EAAS,CAAE+lF,GAEN1pE,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IAAO,CAC1C,IAAIywB,EAAQk5C,GAAgB7yC,EAAO92B,GAAMwpE,EAAUC,EAASnzC,EAAMj5B,GAElE,GAAIqsE,EAAcF,KAAc/4C,EAAM+4C,GAAW,CAC7C,IAAII,EAAY,IAAIpyC,GACpBoyC,EAAUJ,GAAYE,EAAcF,GACpCI,EAAUtzC,GAAQ7F,EAAM6F,GAExB3yC,EAAOgX,KAAKivE,EAAWn5C,EAC3B,CAEAi5C,EAAgBj5C,CACpB,CAQA,OANK40B,EAEMqkB,IAAkB1vD,GAAKr2B,IAC9BA,EAAOgX,KAAK+uE,GAFZ/lF,EAAOgX,KAAKgvE,GAAgB3vD,GAAK8c,GAAS0yC,EAAUC,EAASnzC,EAAMmjB,EAAU,EAAI,IAK9E91D,CAEX,GAGJ,SAASgmF,GAAgBE,EAAWL,EAAUC,EAASnzC,EAAMj5B,GACzD,IAAIme,EAAMquD,EAAUruD,IAChB73B,EAAS,IAAI6zC,GAKjB,OAHA7zC,EAAO6lF,GAAYhuD,EAAIguD,EAAWC,GAClC9lF,EAAO2yC,GAAQ9a,EAAI8a,EAAOj5B,GAEnB1Z,CACX,CAEA,UCpDImmF,GAAmB,SAAUb,GAC7B,SAASa,IACLb,EAAYx1E,MAAMlI,KAAM+H,UAC5B,CAUA,OARK21E,IAAca,EAAgBxzE,UAAY2yE,GAC/Ca,EAAgBv6E,UAAY6G,OAAOS,OAAQoyE,GAAeA,EAAY15E,WACtEu6E,EAAgBv6E,UAAUqH,YAAckzE,EAExCA,EAAgBv6E,UAAUunC,OAAS,WAC/B,OAAOvrC,KAAKg+E,oBAAoBh+E,KAAK0vD,WACzC,EAEO6uB,CACX,CAduB,CAcrBb,IAEF32D,GAAWw3D,GAAgBv6E,UAAW+5E,IAEtC,UCdIS,GAAiB,SAAUd,GAC3B,SAASc,IACLd,EAAYx1E,MAAMlI,KAAM+H,UAC5B,CAgCA,OA9BK21E,IAAcc,EAAczzE,UAAY2yE,GAC7Cc,EAAcx6E,UAAY6G,OAAOS,OAAQoyE,GAAeA,EAAY15E,WACpEw6E,EAAcx6E,UAAUqH,YAAcmzE,EAEtCA,EAAcx6E,UAAU45E,cAAgB,WACpC,IAAI73B,EAAS/lD,KAAK+lD,OACd+wB,EAAW/wB,EAAOq0B,UAClB5rD,EAAQu3B,EAAOv3B,MAEfpI,GAAWoI,IAAUsoD,IACrBtoD,EAAQsoD,EAAStoD,OAGrB,IACI/I,EADiB,IAAIqoD,GAAe9tE,KAAKsV,QAAQ+kC,QACvBhhD,QAAQ2G,KAAKurC,UACvCkzC,EAAQ,IAAIt+B,GAAU,CACtB56B,OAAQ,CACJiJ,MAAOA,EACPh6B,MAAOuxD,EAAOvxD,MACdghD,QAASuQ,EAAOvQ,QAChB6R,SAAUtB,EAAOsB,UAErBzC,OAAQmB,EAAOnB,SAGnB65B,EAAMh5D,SAASrW,KAAKlH,MAAMu2E,EAAMh5D,SAAUA,GAE1CzlB,KAAKykD,OAASg6B,CAClB,EAEOD,CACX,CApCqB,CAoCnBd,IAEF,MCxCIgB,GAAiB,CACjBC,eAAgB,WACZ,IAOI7/B,EAPAtd,EAASxhC,KAGTsV,EADMtV,KACQsV,QACdiiE,EAFMv3E,KAEau3E,aACnBxxB,EAASzwC,EAAQywC,OACjBkxB,EAAcM,EAAan9E,OAG/B4F,KAAK4+E,UAAY,GAEjB,IAAK,IAAI/G,EAAW,EAAGA,EAAWZ,EAAaY,IAAY,CAMvD,IALA,IAAI6C,EAAgB30B,EAAO8xB,GACvBgH,EAAer9C,EAAOs9C,WAAWvH,EAAaM,IAC9CkH,EAAaF,EAAazkF,OAC1Bs1D,EAAa,GAERogB,EAAU,EAAGA,EAAUiP,EAAYjP,IAAW,CACnD,IAAI5qC,EAAQ25C,EAAa/O,GACrB5qC,EACAwqB,EAAWtgD,KAAK81B,GACT1D,EAAOw9C,oBAAoBtE,KAAmBnI,KACjD7iB,EAAWt1D,OAAS,IACpB0kD,EAActd,EAAOy9C,cACjBvvB,EAAYgrB,EAAe7C,EAAU/4B,GAEzCtd,EAAO09C,YAAYpgC,IAEvB4Q,EAAa,GAErB,CAEIA,EAAWt1D,OAAS,IACpB0kD,EAActd,EAAOy9C,cACjBvvB,EAAYgrB,EAAe7C,EAAU/4B,GAEzCtd,EAAO09C,YAAYpgC,GAE3B,CAEA9+C,KAAKpM,SAAS+/C,QAAQzrC,MAAMlI,KAAKpM,SAAUoM,KAAK4+E,UACpD,EAEAM,YAAa,SAAS3lC,GAClBv5C,KAAK4+E,UAAUxvE,KAAKmqC,GACpBA,EAAQ3mB,OAAS5yB,IACrB,EAEA8+E,WAAY,SAASvzC,GACjB,OAAOA,CACX,EAEAyzC,oBAAqB,SAASj5B,GAC1B,IAAIo5B,EAAgBp5B,EAAOo5B,cAG3B,OAFkBA,GAAiBn/E,KAAKsV,QAAQijE,UAE5BjxC,GAAO63C,GAAiB5M,EAChD,EAEAuL,gBAAiB,SAAS/3D,EAAGC,EAAG6xD,GAM5B,IALA,IAGIuH,EAHAxxE,EAAS,IAAIq3B,GAAMlf,EAAGC,GACtBq5D,EAAYr/E,KAAKu3E,aAAaM,GAC9ByH,EAAuBp7D,EAGlBxY,EAAI,EAAGA,EAAI2zE,EAAUjlF,OAAQsR,IAAK,CACvC,IAAIw5B,EAAQm6C,EAAU3zE,GAEtB,GAAIw5B,GAAS/f,GAAQ+f,EAAM/nC,QAA0B,OAAhB+nC,EAAM/nC,QAAoC,IAAlB+nC,EAAMnxC,QAAmB,CAClF,IACIysD,EADWtb,EAAMjV,IACQkV,SAASO,WAAW93B,GAE7C4yC,EAAgB8+B,IAChBF,EAAel6C,EACfo6C,EAAuB9+B,EAE/B,CACJ,CAEA,OAAO4+B,CACX,GAGJ,MCrFIG,GAAiB,SAAUn4C,GAC3B,SAASm4C,IACLn4C,EAAWl/B,MAAMlI,KAAM+H,UAC3B,CA2BA,OAzBKq/B,IAAam4C,EAAcx0E,UAAYq8B,GAC5Cm4C,EAAcv7E,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAClEu7E,EAAcv7E,UAAUqH,YAAck0E,EAEtCA,EAAcv7E,UAAU2+C,MAAQ,WAC5B3iD,KAAKw/E,QAAQx/E,KAAKsV,QAAQ2a,IAAIqa,GAClC,EAEAi1C,EAAcv7E,UAAU4+C,KAAO,SAAertC,GAC1C,IAAI0a,EAAMjwB,KAAKsV,QAAQ2a,IACvBjwB,KAAKw/E,QAAQl2D,GAAiB2G,EAAIqa,GAAIra,EAAIua,GAAIj1B,GAClD,EAEAgqE,EAAcv7E,UAAUw7E,QAAU,SAAkBz5D,GAChD,IAAIvyB,EAAUwM,KAAKxM,QACfiyB,EAAWjyB,EAAQiyB,SACnB0jB,EAAW1jB,EAAS,GAAGC,SACvBwjB,EAAczjB,EAAS,GAAGC,SAE9BlyB,EAAQizC,UACR0C,EAASs2C,KAAK15D,GACdvyB,EAAQkzC,SACRwC,EAAYu2C,KAAK15D,EACrB,EAEOw5D,CACX,CA/BqB,CA+BnBp/B,IAEFxqB,GAAkB4pD,GAAe,CAC7B98B,SAAUwvB,KAGd9xB,GAAAA,QAAAA,SAAuC,OAAQo/B,IAE/C,UC3Ce,SAASG,GAAa5rC,GACjC,IAAK,IAAIr/B,EAAM,EAAGA,EAAMq/B,EAAS15C,OAAQqa,IACrC,GAAI0Q,GAAQ2uB,EAASr/B,GAAKmwC,QACtB,OAAO,CAGnB,CCFA,IAAI+6B,GAAqB,CACrBp7B,gBAAiB,WACb,IAAIq7B,EAAO5/E,KAAK2jD,UAChB,GAAIi8B,IAA6C,KAApCA,EAAKtqE,SAAW,CAAC,GAAGuqE,YAAuB,CACpD,IAAI5vD,EAAM2vD,EAAKhpF,OACXkpF,EAAW3/B,GAAAA,SAAmBlwB,EAAI+b,UACtChsC,KAAKykD,OAAOvP,KAAK4qC,GACjB9/E,KAAK5E,UAAY,IAAImkF,GAAcO,EAAU,CACzC7vD,IAAKA,IAELyvD,GAAa1/E,KAAKsV,QAAQywC,SAC1B/lD,KAAK+/E,sBAAsBD,EAEnC,CACJ,EAEAC,sBAAuB,SAASD,GAG5B,IAFA,IAAIv0C,EAASvrC,KAAKggF,kBAETvrE,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IAAO,CAC1C,IAAIywB,EAAQqG,EAAO92B,GACfywB,GAASA,EAAMuf,QAAUt/B,GAAQ+f,EAAMuf,OAAOnvC,QAAQsvC,SACtD1f,EAAMuf,OAAOvP,KAAK4qC,EAE1B,CACJ,GAGJ,MCtBIG,GAAa,SAAU/I,GACvB,SAAS+I,IACL/I,EAAiBhvE,MAAMlI,KAAM+H,UACjC,CA4GA,OA1GKmvE,IAAmB+I,EAAUl1E,UAAYmsE,GAC9C+I,EAAUj8E,UAAY6G,OAAOS,OAAQ4rE,GAAoBA,EAAiBlzE,WAC1Ei8E,EAAUj8E,UAAUqH,YAAc40E,EAElCA,EAAUj8E,UAAU5K,OAAS,WAEzB89E,EAAiBlzE,UAAU5K,OAAO4J,KAAKhD,MAEvCA,KAAKi5E,mBACLj5E,KAAK2+E,gBACT,EAEAsB,EAAUj8E,UAAU8zE,UAAY,WAC5B,OAAOqE,EACX,EAEA8D,EAAUj8E,UAAUg2E,YAAc,SAAsB/iE,EAAMuR,GAC1D,IAAI07C,EAAa17C,EAAO07C,WACpBje,EAAWz9B,EAAOy9B,SAClBF,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAClBsH,EAAgBn/E,KAAKg/E,oBAAoBj5B,GACzC5oD,EAAQ8Z,EAAKw4D,YAAYtyE,MAE7B,IAAKgoB,GAAQhoB,IAAoB,OAAVA,EAAgB,CACnC,GAAIgiF,IAAkB73C,GAGlB,OAAO,KAFPnqC,EAAQ,CAIhB,CAEA,IAAIy6E,EAAe53E,KAAK43E,aAAa7xB,EAAQ8xB,GAC7CD,EAAe53E,KAAKm6E,iBAChBvC,EAAcz6E,EAAO8oD,EAAUie,EAAYne,EAAQ8xB,GAGvD,IAAIrpD,EAAQvX,EAAKuR,OAAOgG,OAASu3B,EAAOv3B,MACpCpI,GAAW2/B,EAAOv3B,SAClBA,EAAQopD,EAAappD,OAGzB,IAAI0W,EAAQ,IAAIi3C,GAAUh/E,EAAOy6E,GAKjC,OAJA1yC,EAAM1W,MAAQA,EAEdxuB,KAAK6rB,OAAOqZ,GAELA,CACX,EAEA+6C,EAAUj8E,UAAUs0E,UAAY,SAAoBpzC,GAChD,IAEI8yC,EAAYh4E,KAAKg4E,UAAU9yC,GAE/B,GAAIllC,KAAKsV,QAAQijE,UAIb,IAHA,IAAIrU,EAAah/B,EAAMg/B,WACnBoT,EAAiBt3E,KAAKs3E,eAAepT,GAEhCx4D,EAAI,EAAGA,EAAI4rE,EAAel9E,OAAQsR,IAAK,CAC5C,IAAIsB,EAAQsqE,EAAe5rE,GAE3B,GAAIw5B,IAAUl4B,EACV,MAGJgrE,GAfKh4E,KAeeg4E,UAAUhrE,GAfzBhN,KAiBMsV,QAAQ2iE,eACfD,EAAYl3D,KAAK6N,IAAIqpD,EAAW,GAExC,CAIJ,MAAO,CAAEA,EAAWA,EACxB,EAEAiI,EAAUj8E,UAAUi7E,cAAgB,SAAwBvvB,EAAYgrB,EAAe7C,GACnF,IAAIphF,EAAQikF,EAAcjkF,MAW1B,OAAO,IARHA,IAAUk8E,GACE4L,GACL9nF,IAAUi8E,GACL8L,GAEAd,IAGKhuB,EAAYgrB,EAAe7C,EACpD,EAEAoI,EAAUj8E,UAAUg8E,gBAAkB,WAGlC,IAFA,IAAIz0C,EAASvrC,KAAKurC,OACdnzC,EAAS,GACJqc,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IACnCrc,EAAOgX,MAAMm8B,EAAO92B,IAAQ,CAAC,GAAGsgB,QAEpC,OAAO38B,EAAO+P,OAAOnI,KAAK4+E,UAC9B,EAEAqB,EAAUj8E,UAAUwiD,6BAA+B,WAC/C,OAAO,CACX,EAEOy5B,CACX,CAhHiB,CAgHf/I,IAEFnwD,GAAWk5D,GAAUj8E,UAAW06E,GAAgBiB,IAEhD,UC3HIO,GAAe,SAAUxC,GACzB,SAASwC,EAAYxwB,EAAYgrB,EAAe7C,EAAUsI,EAAaC,GACnE1C,EAAY16E,KAAKhD,KAAM0vD,EAAYgrB,EAAe7C,GAElD73E,KAAKmgF,YAAcA,EACnBngF,KAAKogF,YAAcA,CACvB,CAyHA,OAvHK1C,IAAcwC,EAAYn1E,UAAY2yE,GAC3CwC,EAAYl8E,UAAY6G,OAAOS,OAAQoyE,GAAeA,EAAY15E,WAClEk8E,EAAYl8E,UAAUqH,YAAc60E,EAEpCA,EAAYl8E,UAAUogD,aAAe,WACjC,IAAI2B,EAAS/lD,KAAK+lD,OACd+wB,EAAW/wB,EAAOq0B,UAClBjkB,EAAcpQ,EAAO0J,MAAQ,CAAC,EAC9BjhC,EAAQu3B,EAAOv3B,MAEfpI,GAAWoI,IAAUsoD,IACrBtoD,EAAQsoD,EAAStoD,OAGrBxuB,KAAKykD,OAAS,IAAItE,GAAW,CACzByE,OAAQmB,EAAOnB,SAGnB5kD,KAAKqgF,WAAW,CACZtqC,KAAM,CACFvnB,MAAOA,EACPgnB,QAASuQ,EAAOvQ,SAEpBjwB,OAAQ,OAGR4wC,EAAY3hE,MAAQ,IAA6B,IAAxB2hE,EAAYpiE,SACrCiM,KAAKsgF,aAAa,CACd/6D,OAAQwB,GAAW,CACfyH,MAAOA,EACPgnB,QAASuQ,EAAOvQ,QAChB+qC,QAAS,QACVpqB,IAGf,EAEA+pB,EAAYl8E,UAAUw8E,eAAiB,WACnC,IAAI/6D,EAAWzlB,KAAKygF,gBAMpB,OAJKh7D,IACDA,EAAWzlB,KAAKygF,gBAAkBzgF,KAAK0gF,wBAGpCj7D,CACX,EAEAy6D,EAAYl8E,UAAU08E,qBAAuB,WACzC,OAAO1gF,KAAK2gF,mBAAmB3gF,KAAKurC,SACxC,EAEA20C,EAAYl8E,UAAU48E,cAAgB,WAClC,OAAI5gF,KAAKmgF,YACEngF,KAAKmgF,YAAYU,oBAAoB7gF,KAAKogF,aAG9CpgF,KAAK6gF,oBAAoB7gF,KAAKogF,YACzC,EAEAF,EAAYl8E,UAAU68E,oBAAsB,SAA8BT,GACtE,OAAOpgF,KAAK2gF,mBAAmB3gF,KAAK29E,iBAAiByC,IAAclyB,SACvE,EAEAgyB,EAAYl8E,UAAU28E,mBAAqB,SAA6Bp1C,GACpE,OAAOA,EAAOlxC,KAAI,SAAU6qC,GAAS,OAAO,IAAI+G,GAAa/G,EAAQ,GACzE,EAEAg7C,EAAYl8E,UAAUs8E,aAAe,SAAuB7pF,GACxD,IAAI8uB,EAAS,IAAI46B,GAAU1pD,GAC3B8uB,EAAOE,SAASrW,KAAKlH,MAAMqd,EAAOE,SAAUzlB,KAAKwgF,kBAEjDxgF,KAAKykD,OAAO54B,OAAOtG,EACvB,EAEA26D,EAAYl8E,UAAU88E,gBAAkB,WACpC,OAAO9gF,KAAKmgF,aAAgBngF,KAAKogF,aAAepgF,KAAKogF,YAAYhmF,MACrE,EAEA8lF,EAAYl8E,UAAUq8E,WAAa,SAAqB5pF,GACpD,IAAI+pF,EAAiBxgF,KAAKwgF,iBACtBO,EAAeP,EAAe9lE,MAAM,GACpCsmE,EAAmBhhF,KAAK8gF,kBAE5B,GAAIE,EAAkB,CAClB,IAAIJ,EAAgB5gF,KAAK4gF,gBAEzB/0D,GAAOk1D,EAAcH,EACzB,CAEA,IAAI7qC,EAAO,IAAIoK,GAAU1pD,GACzBs/C,EAAKtwB,SAASrW,KAAKlH,MAAM6tC,EAAKtwB,SAAUs7D,IAEnCC,GAAoBR,EAAepmF,OAAS,GAC7C4F,KAAKihF,WAAWlrC,GAGpB/1C,KAAKykD,OAAO54B,OAAOkqB,EACvB,EAEAmqC,EAAYl8E,UAAUi9E,WAAa,SAAqBC,GACpD,IAAInwB,EAAQ/wD,KAAK4yB,OACbmlD,EAAahnB,EAAMz7C,QAAQyiE,WAC3BvZ,EAAYzN,EAAM4lB,gBAAgB32E,KAAK+lD,QACvCo7B,EAAgBpwB,EAAM6nB,0BAA0Bpa,GAChD4iB,EAAU5iB,EAAU/I,QAAQ0rB,EAAeA,GAAe,GAC1D17D,EAAWzlB,KAAKwgF,iBAChBa,EAAa57D,EAAS,GAAGC,SACzB47D,EAAY7yD,GAAKhJ,GAAUC,SAC3B8D,EAAMuuD,EAAaqJ,EAAQ92C,GAAK82C,EAAQ72C,GAExCwtC,EACAmJ,EAASnkC,OAAOvzB,EAAK83D,EAAUt7D,GACtB+2B,OAAOvzB,EAAK63D,EAAWr7D,GAEhCk7D,EAASnkC,OAAOukC,EAAUv7D,EAAGyD,GACpBuzB,OAAOskC,EAAWt7D,EAAGyD,EAEtC,EAEO02D,CACX,CAhImB,CAgIjBxC,IAEF,MClII6D,GAAmB,SAAUrB,GAC7B,SAASqB,IACLrB,EAAYh4E,MAAMlI,KAAM+H,UAC5B,CAcA,OAZKm4E,IAAcqB,EAAgBx2E,UAAYm1E,GAC/CqB,EAAgBv9E,UAAY6G,OAAOS,OAAQ40E,GAAeA,EAAYl8E,WACtEu9E,EAAgBv9E,UAAUqH,YAAck2E,EAExCA,EAAgBv9E,UAAU08E,qBAAuB,WAC7C,OAAO1gF,KAAK2gF,mBAAmB3gF,KAAKg+E,oBAAoBh+E,KAAK0vD,YACjE,EAEA6xB,EAAgBv9E,UAAU68E,oBAAsB,SAA8BT,GAC1E,OAAOpgF,KAAK2gF,mBAAmB3gF,KAAKg+E,oBAAoBoC,IAAclyB,SAC1E,EAEOqzB,CACX,CAlBuB,CAkBrBrB,IAEFn5D,GAAWw6D,GAAgBv9E,UAAW+5E,IAEtC,UCtBIyD,GAAqB,SAAUtB,GAC/B,SAASsB,IACLtB,EAAYh4E,MAAMlI,KAAM+H,UAC5B,CA4BA,OA1BKm4E,IAAcsB,EAAkBz2E,UAAYm1E,GACjDsB,EAAkBx9E,UAAY6G,OAAOS,OAAQ40E,GAAeA,EAAYl8E,WACxEw9E,EAAkBx9E,UAAUqH,YAAcm2E,EAE1CA,EAAkBx9E,UAAU08E,qBAAuB,WAC/C,IAAIe,EAAiB,IAAI3T,GAAe9tE,KAAKsV,QAAQ+kC,QACjDqV,EAAa1vD,KAAKurC,SAEtB,OAAOk2C,EAAepoF,QAAQq2D,EAClC,EAEA8xB,EAAkBx9E,UAAU68E,oBAAsB,WAG9C,IAFA,IAAIL,EAAiBxgF,KAAKwgF,iBACtBI,EAAgB,GACXnsE,EAAM+rE,EAAepmF,OAAS,EAAGqa,GAAO,EAAGA,IAAO,CACvD,IAAI8kC,EAAUinC,EAAe/rE,GAC7BmsE,EAAcxxE,KAAK,IAAI68B,GACnBsN,EAAQ7zB,SACR6zB,EAAQnB,aACRmB,EAAQpB,aAEhB,CAEA,OAAOyoC,CACX,EAEOY,CACX,CAhCyB,CAgCvBtB,IAEF,MC9BIwB,GAAa,SAAUzB,GACvB,SAASyB,IACLzB,EAAU/3E,MAAMlI,KAAM+H,UAC1B,CAoIA,OAlIKk4E,IAAYyB,EAAU32E,UAAYk1E,GACvCyB,EAAU19E,UAAY6G,OAAOS,OAAQ20E,GAAaA,EAAUj8E,WAC5D09E,EAAU19E,UAAUqH,YAAcq2E,EAElCA,EAAU19E,UAAUi7E,cAAgB,SAAwBvvB,EAAYgrB,EAAe7C,EAAUsI,GAC7F,IAEIwB,EAEAvB,EAJA7H,EAAYv4E,KAAKsV,QAAQijE,UACzB9hF,GAASikF,EAAcjrB,MAAQ,CAAC,GAAGh5D,MAInC8hF,GAAaV,EAAW,GAAKsI,IAEP,QADFngF,KAAKg/E,oBAAoBtE,IAEzC0F,EAAcD,EAAYzwB,WAC1BiyB,EAAkBxB,GAElBC,EAAcpgF,KAAK4hF,gBAAgBlyB,EAAYmoB,EAAUphF,IAajE,OAAO,IARHA,IAAUk8E,GACE4O,GACL9qF,IAAUi8E,GACL8O,GAEAtB,IAGKxwB,EAAYgrB,EAAe7C,EAAU8J,EAAiBvB,EAC/E,EAEAsB,EAAU19E,UAAUy/C,OAAS,SAAiB9Y,GAG1Cs1C,EAAUj8E,UAAUy/C,OAAOzgD,KAAKhD,KAAM2qC,GAEtC,IAAIy1C,EAAcpgF,KAAK6hF,aACvB,GAAIzB,EACA,IAAK,IAAI3rE,EAAM,EAAGA,EAAM2rE,EAAYhmF,OAAQqa,IAAO,CAC/C,IAAIqtE,EAAa1B,EAAY3rE,GACzBomE,EARC76E,KAQkBm3E,aAAa1hB,QAAQqsB,EAAW5d,YACvD4d,EAAWr+B,OAAOo3B,EACtB,CAER,EAEA6G,EAAU19E,UAAU49E,gBAAkB,SAA0BlyB,EAAYmoB,EAAUphF,GAClF,IAAI+qC,EAASxhC,KAETu3E,EAAev3E,KAAKu3E,aACpBwK,EAAWryB,EAAW,GAAGwU,WACzB9pE,EAASs1D,EAAWt1D,OACpB2nF,EAAW,IACXA,EAAW,EACX3nF,KAGJ,IAAI4nF,EAASD,EAAW3nF,EACpBu/D,EAAc35D,KAAKw3E,cAAc,GAAGyK,oBAAsB,EAAI,EAC9D7B,EAAc,GAElBpgF,KAAK6hF,aAAe7hF,KAAK6hF,cAAgB,GACzC,IAAK,IAAI3d,EAAa6d,EAAU7d,EAAa8d,EAAQ9d,IAAc,CAC/D,IAAI4L,EAAU5L,EAAavK,EACvBuoB,EAAkBrK,EAClB3yC,OAAS,EAEb,GAEIA,EAAQqyC,IADR2K,GACsCpS,SACjCoS,EAAkB,IAAMh9C,GAEjC,GAAIA,EACIzuC,IAAUk8E,IAAQzO,EAAa6d,IAAaxK,EAAa2K,GAAiBpS,EAAU,IACpFsQ,EAAYhxE,KAAKoyB,EAAO2gD,sBAAsBje,EAAY4L,EAASA,EAAU,EAAGoS,IAGpF9B,EAAYhxE,KAAK81B,GAEbzuC,IAAUk8E,IAAQzO,EAAa,EAAI8d,IAAWzK,EAAa2K,GAAiBpS,EAAU,IACtFsQ,EAAYhxE,KAAKoyB,EAAO2gD,sBAAsBje,EAAY4L,EAASA,EAAU,EAAGoS,QAEjF,CACH,IAAIE,EAAgB5gD,EAAO6gD,qBAAqBne,GAChD1iC,EAAOqgD,aAAazyE,KAAKgzE,GACzBhC,EAAYhxE,KAAKgzE,EACrB,CACJ,CAEA,OAAOhC,CACX,EAEAsB,EAAU19E,UAAUm+E,sBAAwB,SAAgCje,EAAY4L,EAASwS,EAAWC,GAKxG,IAJA,IAEIr9C,EAFAqyC,EAAev3E,KAAKu3E,aACpBj9E,EAAQioF,EAGLjoF,EAAQ,IAAM4qC,GAEjBA,EAAQqyC,IADRj9E,GAC4BgoF,GAUhC,OAPKp9C,EAIDA,EAAQqyC,EAAaj9E,GAAOw1E,IAH5B5qC,EAAQllC,KAAKqiF,qBAAqBne,GAClClkE,KAAK6hF,aAAazyE,KAAK81B,IAKpBA,CACX,EAEAw8C,EAAU19E,UAAUq+E,qBAAuB,SAA+Bne,GACtE,IAAI5uD,EAAUtV,KAAK43E,aAAa,CAAC,EAAG,GAChC1yC,EAAQ,IAAIi3C,GAAU,EAAG7mE,GAI7B,OAHA4vB,EAAMg/B,WAAaA,EACnBh/B,EAAM6gB,OAAS,CAAC,EAET7gB,CACX,EAEAw8C,EAAU19E,UAAUg7E,oBAAsB,SAA8Bj5B,GACpE,OAAOA,EAAOo5B,eAAiB73C,EACnC,EAEAo6C,EAAU19E,UAAUwiD,6BAA+B,WAC/C,OAAO,CACX,EAEOk7B,CACX,CAxIiB,CAwIfzB,IAEF,MChJIuC,GAAyB,SAAUvxD,GACnC,SAASuxD,IACLvxD,EAAMjuB,KAAKhD,MAEXA,KAAKyiF,WAAa,CAAC,CACvB,CA2BA,OAzBKxxD,IAAQuxD,EAAsBz3E,UAAYkmB,GAC/CuxD,EAAsBx+E,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAChEw+E,EAAsBx+E,UAAUqH,YAAcm3E,EAE9CA,EAAsBx+E,UAAU0+E,OAAS,SAAiBC,GACtD,IAAIF,EAAaziF,KAAKyiF,WAEtB,IAAK,IAAI3J,KAAY6J,EAAiB,CAClC,IAAIC,EAAaD,EAAgB7J,GAC7BphC,EAAQ+qC,EAAW3J,GACvB2J,EAAW3J,GAAYphC,EAAQA,GAAS,CAAE/oB,IAAKzK,EAAWsH,IAAKpH,GAE/DszB,EAAM/oB,IAAM7N,KAAK6N,IAAI+oB,EAAM/oB,IAAKi0D,EAAWj0D,KAC3C+oB,EAAMlsB,IAAM1K,KAAK0K,IAAIksB,EAAMlsB,IAAKo3D,EAAWp3D,IAC/C,CACJ,EAEAg3D,EAAsBx+E,UAAU6+E,MAAQ,SAAgB/J,GACpD94E,KAAKyiF,WAAW3J,QAAYrlF,CAChC,EAEA+uF,EAAsBx+E,UAAU8+E,MAAQ,SAAgBhK,GACpD,OAAO94E,KAAKyiF,WAAW3J,EAC3B,EAEO0J,CACX,CAjC6B,CAiC3BvxD,IAEF,MChCI8xD,GAAY,SAAUx/B,GACtB,SAASw/B,EAASjhF,EAASwT,EAASkyC,GAChCjE,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKgjF,QAAU,IAAIt2B,GAAQ5qD,EAAS9B,KAAKsV,QAASkyC,GAClDxnD,KAAK6rB,OAAO7rB,KAAKgjF,QACrB,CAqGA,OAnGKz/B,IAAew/B,EAASh4E,UAAYw4C,GACzCw/B,EAAS/+E,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACjE++E,EAAS/+E,UAAUqH,YAAc03E,EAEjCA,EAAS/+E,UAAUogD,aAAe,WAC9BpkD,KAAKgjF,QAAQ1tE,QAAQwvC,OAAS9kD,KAAKsV,QAAQwvC,MAC/C,EAEAi+B,EAAS/+E,UAAUy/C,OAAS,SAAiB9Y,GACzC,IAAIr1B,EAAUtV,KAAKsV,QACfq1C,EAAWr1C,EAAQq1C,SACnBmwB,EAAYxlE,EAAQwlE,UACpB5hF,EAAO8G,KAAKpM,SAAS,GACrBm5D,EAAc7zD,EAAKoc,QACnB2a,EAAM/2B,EAAK+2B,IACXob,EAAUnyC,EAAKoc,QAAQ+1B,QACvBisB,EAAW3sB,EAEfoiB,EAAY5gB,MAAQwe,EAAWnnC,EAASS,EACxC8oC,EAAYhG,OAAS4D,EAAWhmC,EAAMnB,EAElClO,EAAQunC,WAAa+4B,GACjBjrB,GACAoC,EAAYhG,OAASpiC,GAEhBm2D,GAAa7qD,EAAIx7B,SAAWk2C,EAAUl2C,WACvCs4D,EAAYhG,OAASxjC,IAGzBwpC,EAAY5gB,MAAQ2uC,EAAYt2D,EAAQP,EAErC3O,EAAQunC,WAAar5B,GAC5BupC,EAAYhG,OAASvjC,EACrBupC,EAAY5gB,MAAQ3oB,GvB4Cd,euB3CClO,EAAQunC,SACX8N,EACAoC,EAAYhG,OAAS+zB,EAAYv3D,EAASoB,EAE1CooC,EAAY5gB,MAAQ2uC,EAAY72D,EAAOO,EAEpClP,EAAQunC,WAAag5B,KACxBlrB,EAEI2M,EADAwjB,EACW,IAAIzwC,GACXM,EAAUL,GAAIK,EAAUJ,GAAKta,EAAIx7B,SACjCk2C,EAAUH,GAAIG,EAAUJ,IAGjB,IAAIF,GACXM,EAAUL,GAAIK,EAAUF,GACxBE,EAAUH,GAAIG,EAAUF,GAAKxa,EAAIx7B,WAIzCs4D,EAAY5gB,MAAQ3oB,EAEhB8zC,EADAwjB,EACW,IAAIzwC,GACXM,EAAUH,GAAIG,EAAUJ,GACxBI,EAAUH,GAAKva,EAAIz7B,QAASm2C,EAAUF,IAG/B,IAAIJ,GACXM,EAAUL,GAAKra,EAAIz7B,QAASm2C,EAAUJ,GACtCI,EAAUL,GAAIK,EAAUF,MAMnCn1B,EAAQo2B,WACLif,EACAtf,EAAQvjB,KAAOujB,EAAQzjB,OAClB0vC,EAAS9iE,QAAU0E,EAAK+tD,WAAWzyD,SAAW,EAEnD62C,EAAQ1jB,IAAM0jB,EAAQxjB,QACjByvC,EAAS7iE,SAAWyE,EAAK+tD,WAAWxyD,UAAY,GAI7DyE,EAAKuqD,OAAO6T,EAChB,EAEAyrB,EAAS/+E,UAAUi/E,eAAiB,SAAyB5F,GACzD,IACIv/D,EADW9d,KAAKsV,QAAQq1C,SACL3lC,EAAID,EACvBwE,EAAQzL,EAAQ,IAChB0L,EAAM1L,EAAQ,IACd5kB,EAAO8G,KAAKpM,SAAS,GACrBsvF,EAAYljF,KAAK4yB,OAAO3C,IAE5B,GAAIizD,EAAU35D,GAAS8zD,EAAQ9zD,IAAU8zD,EAAQ7zD,GAAO05D,EAAU15D,GAAM,CACpE,IAAImhB,EAAYzxC,EAAK8tD,WAAWngC,QAChC8jB,EAAUphB,GAASzI,KAAK0K,IAAI03D,EAAU35D,GAAQ8zD,EAAQ9zD,IACtDohB,EAAUnhB,GAAO1I,KAAK6N,IAAIu0D,EAAU15D,GAAM6zD,EAAQ7zD,IAElDxpB,KAAKyjD,OAAO9Y,EAChB,CACJ,EAEOo4C,CACX,CA5GgB,CA4Gdx/B,IAEF5tB,GAAkBotD,GAAU,CACxBlmC,SAAUg5B,GACVv6E,OAAQksB,GAAW,GACnB6jB,QAAS7jB,GAAW,GACpBgH,MAAOlL,EACP6jC,WAAY,GACZN,OAAQ,CACJryD,MAAO,EACPg6B,MAAO,IAEXssD,WAAW,EACXnwB,UAAU,EACVvvD,UAAW,CACPjI,KAAM++E,GACNpvB,MAAOmvB,IAEXrtB,OAAQ,IAGZ,UCvIe,SAASu+B,GAAmB7tE,GACvC,IAAIgxC,EAAUhxC,EAAQgxC,QAEtB,OAAOA,GAAWA,EAAQ4D,UAAiC,SAArB5D,EAAQ4D,QAClD,CCYA,IAEIk5B,GAAO,SAAU7/B,GACjB,SAAS6/B,EAAIjmF,EAAOmY,GAChBiuC,EAAavgD,KAAKhD,MAElBA,KAAKsV,QAAUA,EACftV,KAAKwuB,MAAQlZ,EAAQkZ,OAAS3J,EAC9B7kB,KAAK86E,UAAYrrD,GAAezvB,KAAKsV,QAAQwlE,WAAW,GACxD96E,KAAK7C,MAAQA,CACjB,CAoQA,OAlQKomD,IAAe6/B,EAAIr4E,UAAYw4C,GACpC6/B,EAAIp/E,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAC5Do/E,EAAIp/E,UAAUqH,YAAc+3E,EAE5BA,EAAIp/E,UAAU5K,OAAS,WACf4G,KAAKs8E,YAITt8E,KAAKs8E,WAAY,EAEjBt8E,KAAK0mE,cACL1mE,KAAKk8E,aAEDl8E,KAAK+5E,UACL/5E,KAAK6rB,OAAO7rB,KAAK+5E,UAEzB,EAEAqJ,EAAIp/E,UAAU0iE,YAAc,WACxB,IAAIpxD,EAAUtV,KAAKsV,QACf08C,EAAS18C,EAAQ08C,OAErB,GAAIA,EAAOj+D,QAAS,CAChB,IAEIyoF,EAFAh1B,EAAYxnD,KAAKwnD,YACjBqO,EAAgBztC,GAAY4pC,GAI5BwqB,EADA3mB,EACYA,EAAcrO,GAEdxnD,KAAKy8E,YAAYzqB,EAAO7wC,QAGxCnhB,KAAKkvD,MAAQ,IAAI6zB,GAASvG,EACtBz1D,GAAW,CACP4jC,SAAUr1C,EAAQq1C,UAEtBqH,GACDxK,GACHxnD,KAAK6rB,OAAO7rB,KAAKkvD,MACrB,CACJ,EAEAk0B,EAAIp/E,UAAUy4E,YAAc,SAAsBt7D,GAC9C,OAAOnhB,KAAKi6E,MAAM4B,iBAAiB77E,KAAMmhB,EAC7C,EAEAiiE,EAAIp/E,UAAUy/C,OAAS,SAAiB9Y,GAGpC3qC,KAAK5G,SAEL,IAAI81D,EAAQlvD,KAAKkvD,MAajB,GAXAlvD,KAAKiwB,IAAM0a,EAEPukB,IACAA,EAAM55C,QAAQwlE,UAAY96E,KAAK86E,UAC/B5rB,EAAMzL,OAAO9Y,IAGb3qC,KAAK8zD,MACL9zD,KAAK8zD,KAAKrQ,OAAO9Y,GAGjB3qC,KAAKw5E,UACL,IAAK,IAAI9tE,EAAI,EAAGA,EAAI1L,KAAKw5E,UAAUp/E,OAAQsR,IAlBlC1L,KAmBEw5E,UAAU9tE,GAAG+3C,OAAO9Y,EAGvC,EAEAy4C,EAAIp/E,UAAUogD,aAAe,WACzB,IAAI5iB,EAASxhC,KAGTiwB,EADMjwB,KACIiwB,IACV3a,EAFMtV,KAEQsV,QACdqwC,EAAerwC,EAAQmvC,OAE3B,IAAqB,IAAjBzkD,KAAKjM,QAGL,GAFAwvD,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAErC2lD,EAAc,CACd,IAAIlB,EAASzkD,KAAKqjF,WAAa19B,EAAa,CACxCM,SAAUjmD,KAAKimD,SACfD,SAAUhmD,KAAKgmD,SACf7oD,MAAO6C,KAAK7C,MACZ4mD,OAAQ/jD,KAAK4jD,YACbmC,OAAQ/lD,KAAK+lD,OACbG,WAAYlmD,KAAKkmD,WACjB60B,WAAY/6E,KAAK+6E,WACjB50B,aAAcnmD,KAAKmmD,aACnB/oC,MAAOpd,KAAKod,MACZsiC,KAAMzvB,EAAI+b,SACVoY,aAAc,WACV,IAAI9mC,EAAQ,IAAI6iC,GAEhB,OADA3e,EAAO8hD,WAAWhmE,GACXA,CACX,EACAhI,QAASA,IAGTmvC,GACAzkD,KAAKykD,OAAO54B,OAAO44B,EAE3B,MAAWx0B,EAAIz7B,QAAU,GAAKy7B,EAAIx7B,SAAW,GACzCuL,KAAKsjF,WAAWtjF,KAAKykD,OAGjC,EAEA2+B,EAAIp/E,UAAUs/E,WAAa,SAAqB7+B,GAC5C,IAAInvC,EAAUtV,KAAKsV,QACfuxC,EAASvxC,EAAQuxC,OACjB08B,EAAgBp+D,GAAQ0hC,EAAOrR,SAAWqR,EAAOrR,QAAUlgC,EAAQkgC,QACnEkK,EAAO1/C,KAAKiwB,IAAI+b,SAEpB0T,EAAK9oD,KAAKpC,MAAQssB,KAAKE,MAAM0+B,EAAK9oD,KAAKpC,OAEvC,IAAI6wB,EAAOrlB,KAAKqjF,WAAaljC,GAAAA,SAAmBT,EAAM,CAClD3J,KAAM,CACFvnB,MAAOxuB,KAAKwuB,MACZgnB,QAASlgC,EAAQkgC,SAErBjwB,OAAQ,CACJiJ,MAAOxuB,KAAKwjF,iBACZhvF,MAAOqyD,EAAOryD,MACdghD,QAAS+tC,EACTl8B,SAAUR,EAAOQ,YAIrB7yD,EAAQwL,KAAKiwB,IAAIz7B,QACjBC,EAASuL,KAAKiwB,IAAIx7B,SAetB,IAbW6gB,EAAQq1C,SAAWn2D,EAAQC,GArJpB,IAwJd2wB,EAAiBC,IAGb7wB,EAAQ,GAAKC,EAAS,KACtB4wB,EAAK/P,QAAQiQ,OAAOs5B,SAAW,UAIvC4F,EAAO54B,OAAOxG,GAEV89D,GAAmB7tE,GAAU,CAC7B,IAAIgxC,EAAUtmD,KAAKomD,sBAAsB/gC,EAAM,CAAEo+D,UAAWzjF,KAAKwuB,OAASzH,GAAW,CACjFyC,IAAMlU,EAAQq1C,cAAsBl3D,EAAX,CAAE,EAAG,IAC/B6hB,EAAQgxC,UAEX7B,EAAO54B,OAAOy6B,EAClB,CACJ,EAEA88B,EAAIp/E,UAAUyhD,gBAAkB,SAA0BhvD,GAGtD,OAAO2uB,EAFS+6B,GAAAA,SAAmBngD,KAAKiwB,IAAI+b,SAAUv1C,GAG1D,EAEA2sF,EAAIp/E,UAAUk5E,gBAAkB,WAC5B,OAAOl9E,KAAKqjF,UAChB,EAEAD,EAAIp/E,UAAU8hD,oBAAsB,WAChC,MAAO,CACHxwC,QAAStV,KAAKsV,QACdoqC,KAAM1/C,KAAKiwB,IAAI+b,SACfyY,OAAQzkD,KAAKqjF,WAErB,EAEAD,EAAIp/E,UAAUw/E,eAAiB,WAC3B,IAAIh1D,EAAQxuB,KAAKwuB,MACbq4B,EAAS7mD,KAAKsV,QAAQuxC,OACtB1kB,EAAa0kB,EAAO68B,aAAevR,GACnCwR,EAAc98B,EAAOr4B,MAMzB,OAJKrJ,GAAQw+D,KACTA,EAAc,IAAIpiD,GAAM/S,GAAO2T,WAAWA,GAAYtC,SAGnD8jD,CACX,EAEAP,EAAIp/E,UAAUo5E,cAAgB,WAC1B,IAOIr3D,EAAGC,EAPHzzB,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACd2a,EAAM19B,EAAI09B,IACV6qD,EAAYvoF,EAAIuoF,UAChBuC,EAAUr9E,KAAKi6E,MAAM5kB,KAAKgoB,WAAaptD,EACvC2zD,EAAkB3/D,EAClBq5D,EAAgB34D,EAGpB,GAAIrP,EAAQq1C,SACR5kC,EAAIjF,KAAK6N,IAAIsB,EAAIua,GAAI6yC,EAAQ7yC,IzB5NpB,EyB6NLswC,EACA90D,EAAIlF,KAAK0K,IAAIyE,EAAIsa,GAAI8yC,EAAQ9yC,KAE7BvkB,EAAIlF,KAAK6N,IAAIsB,EAAIwa,GAAI4yC,EAAQ5yC,IAC7B6yC,EAAgB/5D,OAEjB,CACH,IAAI+mB,EAAKxpB,KAAK0K,IAAIyE,EAAIqa,GAAI+yC,EAAQ/yC,IAC9BE,EAAK1pB,KAAK6N,IAAIsB,EAAIua,GAAI6yC,EAAQ7yC,IAE9Bl1B,EAAQijE,WACR+E,EAAgB/5D,EACZu3D,GACA8I,EAAkBp/D,EAClBuB,EAAIykB,GAEJzkB,EAAIukB,EAERtkB,EAAIlF,KAAK0K,IAAIyE,EAAIsa,GAAI8yC,EAAQ9yC,IzB/OxB,IyBiPDuwC,EACA/0D,EAAIykB,EzBlPH,GyBoPDzkB,EAAIukB,EzBpPH,EyBqPDs5C,EAAkBp/D,GAEtBwB,EAAIlF,KAAK0K,IAAIyE,EAAIsa,GAAI8yC,EAAQ9yC,IAErC,CAEA,MAAO,CACHrF,MAAO,IAAID,GAAMlf,EAAGC,GACpBmmB,MAAO,CACHoxC,WAAYqG,EACZj5B,SAAU2yB,GAGtB,EAEA8F,EAAIp/E,UAAUw5E,YAAc,SAAsBvtD,GAC9C,OAAOjwB,KAAKiwB,IAAIwb,SAASxb,EAC7B,EAEAmzD,EAAIp/E,UAAUwjD,UAAY,WACtB,MAAO,CACHxB,SAAUhmD,KAAKgmD,SACfC,SAAUjmD,KAAKimD,SACf9oD,MAAO6C,KAAK7C,MACZ+oD,WAAYlmD,KAAKkmD,WACjB60B,WAAY/6E,KAAK+6E,WACjB50B,aAAcnmD,KAAKmmD,aACnB/oC,MAAOpd,KAAKod,MACZ2oC,OAAQ/lD,KAAK+lD,OAErB,EAEOq9B,CACX,CA7QW,CA6QT7/B,IAEFx8B,GAAWq8D,GAAIp/E,UAAW83E,IAC1B/0D,GAAWq8D,GAAIp/E,UAAWi4E,IAE1BmH,GAAIp/E,UAAU8yE,SAAW,CACrBjwB,OAAQ,CACJryD,MAAO,GAEXm2D,UAAU,EACVrE,QAAS,CACL4D,SAAU,SAEd8H,OAAQ,CACJj+D,SAAS,EACTotB,OAAQ,OAEZq0B,QAAS,EACToe,MAAO,CACH1E,MAAO,CAAC,IAIhB,UCtTO,SAAS1nD,GAAQssC,EAAU5tC,GAC9B4tC,EAAStsC,QAAQtB,EACrB,CAEO,SAAS29E,GAAe/vC,EAAU5tC,GAGrC,IAFA,IAAI9L,EAAS05C,EAAS15C,OAEbqa,EAAMra,EAAS,EAAGqa,GAAO,EAAGA,IACjCvO,EAAS4tC,EAASr/B,GAAMA,EAAMra,EAAS,EAE/C,CCJA,IAAI0pF,GAAiB,SAAUvgC,GAC3B,SAASugC,EAAcxuE,GACnBiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKwH,QAAU8N,EAAQ07C,IAAM6yB,GAAiBr8E,EAClD,CAiCA,OA/BK+7C,IAAeugC,EAAc/4E,UAAYw4C,GAC9CugC,EAAc9/E,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACtE8/E,EAAc9/E,UAAUqH,YAAcy4E,EAEtCA,EAAc9/E,UAAUy/C,OAAS,SAAiBxzB,GAC9C,IAAI19B,EAAMyN,KAAKsV,QACXq1C,EAAWp4D,EAAIo4D,SACfo5B,EAAMxxF,EAAIwxF,IACVr8D,EAAUn1B,EAAIm1B,QACd9zB,EAAWoM,KAAKpM,SAChB8lD,EAAQ9lD,EAASwG,OACjB2wC,EAAO4f,EAAW3lC,EAAID,EACtBi/D,EAAQtqC,EAAQqqC,EAAOr8D,GAAWgyB,EAAQ,GAC1CuqC,GAAYt5B,EAAW16B,EAAIx7B,SAAWw7B,EAAIz7B,SAAWwvF,EACrDnnC,EAAW5sB,EAAI8a,EAAO,GAAKk5C,GAAYF,EAAM,GAEjD/jF,KAAKwH,QAAQ5T,GAAU,SAAUwa,EAAOqG,GACpC,IAAIooE,GAAYzuE,EAAM6hB,KAAOA,GAAKpJ,QAElCg2D,EAAS9xC,EAAO,GAAK8R,EACrBggC,EAAS9xC,EAAO,GAAK8R,EAAWonC,EAEhC71E,EAAMq1C,OAAOo5B,GACTpoE,EAAMilC,EAAQ,IACdmD,GAAaonC,EAAWv8D,GAG5Bm1B,GAAYonC,CAChB,GACJ,EAEOH,CACX,CAvCqB,CAuCnBvgC,IAEF5tB,GAAkBmuD,GAAe,CAC7Bn5B,UAAU,EACVo5B,IAAK,EACLr8D,QAAS,IAGb,UChDIw8D,GAAa,SAAU3gC,GACvB,SAAS2gC,IACL3gC,EAAar7C,MAAMlI,KAAM+H,UAC7B,CA+BA,OA7BKw7C,IAAe2gC,EAAUn5E,UAAYw4C,GAC1C2gC,EAAUlgF,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAClEkgF,EAAUlgF,UAAUqH,YAAc64E,EAElCA,EAAUlgF,UAAUy/C,OAAS,SAAiB9Y,GAQ1C,IAPA,IAEIw5C,EAAenkF,KAAKsV,QAAQq1C,SAAW5lC,EAAIC,EAC3CpxB,EAAWoM,KAAKpM,SAChBswD,EAAgBtwD,EAASwG,OACzB61B,EAAMjwB,KAAKiwB,IAAM,IAAIoa,GAEhB3+B,EAAI,EAAGA,EAAIw4C,EAAex4C,IAAK,CACpC,IAAIg4C,EAAe9vD,EAAS8X,GAE5B,IAA6B,IAAzBg4C,EAAa3vD,QAAmB,CAChC,IAAI8oF,EAAWn5B,EAAazzB,IAAIpJ,QAChCg2D,EAAS/xC,OAAOH,EAAWw5C,GAEjB,IAANz4E,IACAukB,EAfCjwB,KAeYiwB,IAAM4sD,EAASh2D,SAGhC68B,EAAaD,OAAOo5B,GACpB5sD,EAAIya,KAAKmyC,EACb,CACJ,CACJ,EAEOqH,CACX,CAnCiB,CAmCf3gC,IAEF5tB,GAAkBuuD,GAAW,CACzBv5B,UAAU,IAGd,UChCIy5B,GAAY,SAAUlN,GACtB,SAASkN,IACLlN,EAAiBhvE,MAAMlI,KAAM+H,UACjC,CAqLA,OAnLKmvE,IAAmBkN,EAASr5E,UAAYmsE,GAC7CkN,EAASpgF,UAAY6G,OAAOS,OAAQ4rE,GAAoBA,EAAiBlzE,WACzEogF,EAASpgF,UAAUqH,YAAc+4E,EAEjCA,EAASpgF,UAAU5K,OAAS,WACxB89E,EAAiBlzE,UAAU5K,OAAO4J,KAAKhD,MACvCA,KAAKi5E,kBACT,EAEAmL,EAASpgF,UAAU8zE,UAAY,WAC3B,OAAOsL,EACX,EAEAgB,EAASpgF,UAAUqgF,YAAc,WAC7B,OAAOP,EACX,EAEAM,EAASpgF,UAAUsgF,UAAY,WAC3B,OAAOJ,EACX,EAEAE,EAASpgF,UAAU60E,YAAc,SAAsBC,EAAUC,GAG7D,OAFa7B,EAAiBlzE,UAAU60E,YAAY71E,KAAKhD,KAAM84E,EAAUC,EAG7E,EAEAqL,EAASpgF,UAAUg2E,YAAc,SAAsB/iE,EAAMuR,GACzD,IAAI07C,EAAa17C,EAAO07C,WACpBje,EAAWz9B,EAAOy9B,SAClBF,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAElBviE,EADMtV,KACQsV,QACd1hB,EAFMoM,KAESpM,SACf2kF,EAAYjjE,EAAQijE,UACpBp7E,EAAQ6C,KAAK6xE,WAAW56D,GACxB2gE,EAAe53E,KAAK43E,aAAa7xB,EAAQ8xB,GAEzC7kB,EAAe4kB,EAAa5lB,OAC5BumB,GACIvlB,EAAanW,WAAag5B,KAC1B7iB,EAAanW,SAAW+4B,IAIhCgC,EAAaW,UAAYA,EAEzB,IAAI/pD,EAAQvX,EAAKuR,OAAOgG,OAASu3B,EAAOv3B,MACpCrxB,EAAQ,GAAKy6E,EAAa2M,gBAC1B/1D,EAAQopD,EAAa2M,eAGzB3M,EAAe53E,KAAKm6E,iBAChBvC,EAAcz6E,EAAO8oD,EAAUie,EAAYne,EAAQ8xB,GAGnDzxD,GAAW2/B,EAAOv3B,SAClBA,EAAQopD,EAAappD,OAGzB,IACI0W,EAAQ,IADIllC,KAAK83E,YACT,CAAc36E,EAAOy6E,GACjC1yC,EAAM1W,MAAQA,EAEd,IAAIg2D,EAAU5wF,EAASswE,GAClBsgB,IAEDA,EAAU,IADQxkF,KAAKqkF,cACb,CAAgB,CACtB15B,SAAUr1C,EAAQyiE,WAClBgM,IAAKzuE,EAAQyuE,IACbr8D,QAASpS,EAAQoS,QACjBspC,KAAM17C,EAAQyiE,aAAe/3E,KAAKgkD,cAAgB,CAAC,GAAGgN,MAE1DhxD,KAAK6rB,OAAO24D,IAGZjM,EACgBv4E,KAAKykF,aAAa1+B,EAAQy+B,GAChC34D,OAAOqZ,GAEjBs/C,EAAQ34D,OAAOqZ,GAGnB,OAAOA,CACX,EAEAk/C,EAASpgF,UAAUygF,aAAe,SAAuB1+B,EAAQy+B,GAC7D,IAGIE,EAHAtM,EAAQryB,EAAOqyB,MACfuM,EAAavM,GAAQA,EAAM96D,OAAiB86D,EAC5CwM,EAAQJ,EAAQ5wF,SAGpB,UAAW+wF,IAAejgE,GACtB,IAAK,IAAIhZ,EAAI,EAAGA,EAAIk5E,EAAMxqF,OAAQsR,IAC9B,GAAIk5E,EAAMl5E,GAAGm5E,cAAgBF,EAAY,CACrCD,EAAYE,EAAMl5E,GAClB,KACJ,OAGJg5E,EAAYE,EAAM,GAGjBF,KAEDA,EAAY,IADI1kF,KAAKskF,YACT,CAAc,CACtB35B,UAAW3qD,KAAKsV,QAAQyiE,cAElB8M,YAAcF,EACxBH,EAAQ34D,OAAO64D,IAGnB,OAAOA,CACX,EAEAN,EAASpgF,UAAU22E,aAAe,SAAuBxD,EAAcjT,EAAY1F,GAC/E,IAAIlpD,EAAUtV,KAAKsV,QACfqlE,EAAexD,EAAa1hB,QAAQyO,GACpCrE,EAAarB,EAAUqB,aAE3B,GAAIvqD,EAAQijE,UAAW,CACnB,IAAIuM,EAAWtmB,EAAU/I,QAAQoK,EAAYA,GAAY,GACrDklB,EAAYzvE,EAAQyiE,WAAahzD,EAAIC,EACzC21D,EAAaoK,EAAY,GAAKpK,EAAaoK,EAAY,GAAKD,EAASC,EAAY,EACrF,CAEA,OAAOpK,CACX,EAEAyJ,EAASpgF,UAAUi3E,iBAAmB,SAA2BT,GAI7D,IAHA,IAAI5mF,EAAWoM,KAAKpM,SAChBoxF,EAAiBpxF,EAASwG,OAErBsR,EAAI,EAAGA,EAAIs5E,EAAgBt5E,IAChC9X,EAAS8X,GAAG+3C,OAAO+2B,EAAc9uE,GAEzC,EAEA04E,EAASpgF,UAAUugD,gBAAkB,WACjCvkD,KAAKilF,uBACL/N,EAAiBlzE,UAAUugD,gBAAgBvhD,KAAKhD,MAE5C0/E,GAAa1/E,KAAKsV,QAAQywC,SAC1B/lD,KAAK+/E,uBAEb,EAEAqE,EAASpgF,UAAU+7E,sBAAwB,WAKvC,IAJA,IAEIx0C,EAASvrC,KAAKurC,OAET92B,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IAAO,CAC1C,IAAIywB,EAAQqG,EAAO92B,GACfywE,EAAchgD,EAAMuf,OACpBygC,GAAe//D,GAAQ+/D,EAAY5vE,QAAQsvC,UAC3C1f,EAAM5vB,QAAQla,UART4E,KAQ4BsV,QAAQla,UACzC8pC,EAAMqf,kBAEd,CACJ,EAEA6/B,EAASpgF,UAAUihF,qBAAuB,WACtC,IAEI19C,EAFAjyB,EAAUtV,KAAKsV,QACfla,EAAYka,EAAQla,WAAa,CAAC,EAGtC,GAAIka,EAAQijE,UAAW,CACnB,IAAI/Z,EAAYx+D,KAAK22E,gBAAgBrhE,EAAQywC,OAAO,IACpDxe,EAASi3B,EAAU/I,QAAQ+I,EAAUqB,aACzC,MACIt4B,EAASvnC,KAAKm3E,aAAa1hB,QAAQ,GAGvCr6D,EAAUmsC,OAAS,IAAI0E,GAAW1E,EAAO+C,GAAI/C,EAAOgD,IACpDnvC,EAAUuvD,UAAYr1C,EAAQyiE,UAClC,EAEOqM,CACX,CAzLgB,CAyLdlN,IAEFvhD,GAAkByuD,GAAU,CACxBhpF,UAAW,CACPjI,KAAM0/E,MAId,UCnMIsS,GAAe,SAAU5hC,GACzB,SAAS4hC,EAAYhoF,EAAOmY,GACxBiuC,EAAavgD,KAAKhD,KAAMsV,GACxBtV,KAAK7C,MAAQA,CACjB,CA8LA,OA5LKomD,IAAe4hC,EAAYp6E,UAAYw4C,GAC5C4hC,EAAYnhF,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACpEmhF,EAAYnhF,UAAUqH,YAAc85E,EAEpCA,EAAYnhF,UAAUy/C,OAAS,SAAiBxzB,GAC5C,IAAI19B,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACdnY,EAAQ5K,EAAI4K,MAEZqhE,EADQjsE,EAAI0nF,MACMtD,gBAAgBrhE,GAClC8vE,EAAS5mB,EAAU/I,QAAQt4D,EAAMT,KAAMS,EAAMoxC,OAC7C82C,EAAS7mB,EAAU/I,QAAQt4D,EAAMmwB,IAAKnwB,EAAMo0E,MAEhD6T,EAAO96C,GAAK+6C,EAAO/6C,GAAKra,EAAIqa,GAC5B86C,EAAO56C,GAAK66C,EAAO76C,GAAKva,EAAIua,GAE5BxqC,KAAKslF,SAAWF,EAEhB,IAAIG,EAAMF,EAAOlgD,SAASpf,EACtBwlB,EAAS,GAEbA,EAAOn8B,KAAK,CAAE,CAAEm2E,EAAKF,EAAO96C,IAAM,CAAEg7C,EAAKH,EAAO76C,MAChDgB,EAAOn8B,KAAK,CAAE,CAAEm2E,EAAKH,EAAO36C,IAAM,CAAE86C,EAAKF,EAAO56C,MAEhDzqC,KAAKwlF,MAAQj6C,EAEbvrC,KAAKiwB,IAAMo1D,EAAOx+D,QAAQ6jB,KAAK06C,GAE1BplF,KAAKs8E,YACNt8E,KAAKs8E,WAAY,EACjBt8E,KAAKk8E,cAGTl8E,KAAKylF,YACT,EAEAN,EAAYnhF,UAAUyhF,WAAa,WAC3BzlF,KAAK8zD,MACL9zD,KAAK8zD,KAAKrQ,OAAOzjD,KAAKiwB,IAE9B,EAEAk1D,EAAYnhF,UAAUogD,aAAe,WACjCb,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MACzCA,KAAK0lF,YAAc1lF,KAAK2lF,WAAW3lF,KAAKsV,SACxCtV,KAAKykD,OAAO54B,OACR7rB,KAAK0lF,aAGT1lF,KAAK4lF,eACT,EAEAT,EAAYnhF,UAAU2hF,WAAa,SAAqBrwE,GACpD,IAAIgI,EAAQ,IAAI6iC,GAKhB,OAHAngD,KAAK6lF,WAAWvoE,EAAOhI,GACvBtV,KAAK8lF,YAAYxoE,EAAOhI,GAEjBgI,CACX,EAEA6nE,EAAYnhF,UAAU6hF,WAAa,SAAqB3jE,EAAW5M,GAC/D,IAAI9X,EAAO2iD,GAAAA,SAAmBngD,KAAKslF,SAASt5C,SAAU,CAClD+J,KAAM,CACFvnB,MAAOxuB,KAAKwuB,MACZgnB,QAASlgC,EAAQkgC,SAErBjwB,OAAQ,OAGRjQ,EAAQuxC,OAAOryD,MAAQ,GACvBgJ,EAAK8X,QAAQ2T,IAAI,SAAU,CACvBuF,MAAOxuB,KAAKwjF,iBACZhvF,MAAO8gB,EAAQuxC,OAAOryD,MACtB6yD,SAAU/xC,EAAQuxC,OAAOQ,SACzB7R,QAAS/lB,GAAena,EAAQuxC,OAAOrR,QAASlgC,EAAQkgC,WAIhEpwB,EAAiB5nB,GACjB0kB,EAAU2J,OAAOruB,GAEb2lF,GAAmB7tE,IACnB4M,EAAU2J,OAAO7rB,KAAKomD,sBAAsB5oD,EAAM,CAAEimF,UAAWzjF,KAAKwuB,OAASzH,GAAW,CACpFyC,IAAMlU,EAAQq1C,cAAsBl3D,EAAX,CAAE,EAAG,IAC/B6hB,EAAQgxC,UAEnB,EAEA6+B,EAAYnhF,UAAU8hF,YAAc,SAAsB5jE,EAAW5M,GACjEtV,KAAK+lF,UAAU7jE,EAAW5M,EAAStV,KAAKwlF,MAAOlwE,EAAQm6C,KAC3D,EAEA01B,EAAYnhF,UAAU+hF,UAAY,SAAoB7jE,EAAW5M,EAASkwE,EAAOrvB,GAC7E,GAAKqvB,EAcL,IAVA,IAAIQ,EAAY,CACZzgE,OAAQ,CACJiJ,MAAO2nC,EAAY3nC,OAASxuB,KAAKwuB,MACjCgnB,QAAS/lB,GAAe0mC,EAAY3gB,QAASlgC,EAAQkgC,SACrDhhD,MAAO2hE,EAAY3hE,MACnB6yD,SAAU8O,EAAY9O,SACtBk5B,QAAS,SAIR70E,EAAI,EAAGA,EAAI85E,EAAMprF,OAAQsR,IAAK,CACnC,IAAI+jD,EAAOtP,GAAAA,WAAqBqlC,EAAM95E,GAAIs6E,GAC1C5gE,EAAiBqqC,GACjBvtC,EAAU2J,OAAO4jC,EACrB,CACJ,EAEA01B,EAAYnhF,UAAUw/E,eAAiB,WACnC,IAAI38B,EAAS7mD,KAAKsV,QAAQuxC,OACtB88B,EAAc98B,EAAOr4B,MAMzB,OAJKrJ,GAAQw+D,KACTA,EAAc,IAAIpiD,GAAMvhC,KAAKwuB,OAAO2T,WAAW0kB,EAAO68B,aAAa7jD,SAGhE8jD,CACX,EAEAwB,EAAYnhF,UAAU4hF,cAAgB,WAClC,IAAIt/B,EAAUnG,GAAAA,SAAmBngD,KAAKiwB,IAAI+b,SAAU,CAChD+J,KAAM,CACFvnB,MAAO3J,EACP2wB,QAAS,GAEbjwB,OAAQ,OAGZvlB,KAAKykD,OAAO54B,OAAOy6B,EACvB,EAEA6+B,EAAYnhF,UAAUyhD,gBAAkB,WACpC,IAAID,EAAYxlD,KAAKsV,QAAQkwC,UACzBygC,EAAcjmF,KAAKwuB,MAEvBxuB,KAAKwuB,MAAQg3B,EAAUh3B,OAASxuB,KAAKwuB,MACrC,IAAI83B,EAAUtmD,KAAK2lF,WACf5+D,GAAW,CAAC,EAAG/mB,KAAKsV,QAAS,CACzBm6C,KAAM,CACFjhC,MAAOxuB,KAAKwjF,mBAEjBh+B,IAIP,OAFAxlD,KAAKwuB,MAAQy3D,EAEN3/B,CACX,EAEA6+B,EAAYnhF,UAAUk5E,gBAAkB,WACpC,OAAOl9E,KAAK0lF,WAChB,EAEAP,EAAYnhF,UAAU8hD,oBAAsB,WACxC,MAAO,CACHxwC,QAAStV,KAAKsV,QACdoqC,KAAM1/C,KAAKiwB,IAAI+b,SACfyY,OAAQzkD,KAAK0lF,YAErB,EAEAP,EAAYnhF,UAAUo5E,cAAgB,WAClC,IAAIntD,EAAMjwB,KAAKiwB,IACXotD,EAAUr9E,KAAKi6E,MAAM5kB,KAAKgoB,WAAaptD,EAE3C,MAAO,CACHiV,MAAO,IAAID,GAAMhV,EAAIua,G9BrLZ,E8BqLiC1pB,KAAK0K,IAAIyE,EAAIsa,GAAI8yC,EAAQ9yC,I9BrL1D,G8BsLT4B,MAAO,CACHoxC,WAAYt5D,EACZ0mC,SAAUhmC,GAGtB,EAEAwgE,EAAYnhF,UAAUy4E,YAAc,SAAsBt7D,GACtD,OAAOnhB,KAAKi6E,MAAM4B,iBAAiB77E,KAAMmhB,EAC7C,EAEAgkE,EAAYnhF,UAAUw5E,YAAc,SAAsBvtD,GACtD,OAAOjwB,KAAKiwB,IAAIwb,SAASxb,EAC7B,EAEOk1D,CACX,CAnMmB,CAmMjB5hC,IAEF5tB,GAAkBwvD,GAAa,CAC3Bx6B,UAAU,EACV9D,OAAQ,CACJ68B,YAAa,IAEjBj0B,KAAM,CACFj7D,MAAO,GAEX8xD,QAAS,CACL4D,SAAU,SAEdg8B,QAAS,CACL/kE,OAAQ,0MAQZqkC,UAAW,CACPhQ,QAAS,EACTqR,OAAQ,CACJryD,MAAO,EACPghD,QAAS,GAEbia,KAAM,CACFj7D,MAAO,EACPghD,QAAS,IAGjBoe,MAAO,CACH7/D,SAAS,EACTm7D,MAAO,CAAC,KAIhBnoC,GAAWo+D,GAAYnhF,UAAW83E,IAClC/0D,GAAWo+D,GAAYnhF,UAAWi4E,IAElC,UCvPe,SAASkK,GAAWp2E,GAC/B,OAAO6+D,GAAa7+D,KAAYA,EAAO3V,MAC3C,CCOA,IAAIgsF,GAAoB,SAAUlP,GAC9B,SAASkP,IACLlP,EAAiBhvE,MAAMlI,KAAM+H,UACjC,CAsIA,OApIKmvE,IAAmBkP,EAAiBr7E,UAAYmsE,GACrDkP,EAAiBpiF,UAAY6G,OAAOS,OAAQ4rE,GAAoBA,EAAiBlzE,WACjFoiF,EAAiBpiF,UAAUqH,YAAc+6E,EAEzCA,EAAiBpiF,UAAUi3E,iBAAmB,SAA2BT,GAIrE,IAHA,IAAI5mF,EAAWoM,KAAKpM,SAChBoxF,EAAiBpxF,EAASwG,OAErBsR,EAAI,EAAGA,EAAIs5E,EAAgBt5E,IAChC9X,EAAS8X,GAAG+3C,OAAO+2B,EAAc9uE,GAEzC,EAEA06E,EAAiBpiF,UAAU2zE,SAAW,SAAmB1gE,EAAMuR,GAC3D,IAYI0c,EAZAg/B,EAAa17C,EAAO07C,WACpBje,EAAWz9B,EAAOy9B,SAClBF,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAElBjkF,EADMoM,KACSpM,SACf0hB,EAFMtV,KAEQsV,QACdnY,EAAQ8Z,EAAKw4D,YAEb4W,EAAWF,GADEnmF,KAAKsmF,WAAWnpF,IAE7B6oD,EAAWD,EAAO9uC,KAAKitD,GACvBoT,EAAiBt3E,KAAKs3E,eAAepT,GAGpCoT,IACDt3E,KAAKs3E,eAAepT,GAAcoT,EAAiB,IAGnD+O,IACAnhD,EAAQllC,KAAKg6E,YAAY/iE,EAAMuR,IAGnC,IAAIg8D,EAAU5wF,EAASswE,GAClBsgB,IACDA,EAAU,IAAIV,GAAc,CACxBn5B,SAAUr1C,EAAQyiE,WAClBgM,IAAKzuE,EAAQyuE,IACbr8D,QAASpS,EAAQoS,QACjBspC,KAAM17C,EAAQyiE,aAAe/3E,KAAKgkD,cAAgB,CAAC,GAAGgN,MAE1DhxD,KAAK6rB,OAAO24D,IAGZt/C,IACAllC,KAAK85E,YAAY38E,EAAOqrB,GAExBg8D,EAAQ34D,OAAOqZ,GAEfA,EAAMg/B,WAAaA,EACnBh/B,EAAM+gB,SAAWA,EACjB/gB,EAAM6gB,OAASA,EACf7gB,EAAM2yC,SAAWA,EACjB3yC,EAAM+0C,MAAQj6E,KACdklC,EAAM8gB,SAAWA,EACjB9gB,EAAMg1C,SAAWjjE,EAAKuR,OAAO0xD,UAGjCl6E,KAAKurC,OAAOn8B,KAAK81B,GACjBoyC,EAAeloE,KAAK81B,EACxB,EAEAkhD,EAAiBpiF,UAAU8zE,UAAY,WACnC,OAAOqN,EACX,EAEAiB,EAAiBpiF,UAAUg2E,YAAc,SAAsB/iE,EAAMuR,GACjE,IAAI07C,EAAa17C,EAAO07C,WACpBje,EAAWz9B,EAAOy9B,SAClBF,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAClBC,EAAY93E,KAAK83E,YACjB36E,EAAQ8Z,EAAKw4D,YACbmI,EAAe7wD,GAAW,CAAC,EAAGg/B,GAC9Bv3B,EAAQvX,EAAKuR,OAAOgG,OAASu3B,EAAOv3B,MAExCopD,EAAe53E,KAAKm6E,iBAChBvC,EAAcz6E,EAAO8oD,EAAUie,EAAYne,EAAQ8xB,GAGnD9xB,EAAO5yD,OAAS8/E,IACZ91E,EAAMT,KAAOS,EAAMoxC,QACnB/f,EAAQvX,EAAKuR,OAAO+9D,WAAaxgC,EAAOwgC,WAAaxgC,EAAOv3B,OAIhEpI,GAAW2/B,EAAOv3B,SAClBA,EAAQopD,EAAappD,OAGzBopD,EAAajtB,UAAY3qD,KAAKsV,QAAQyiE,WAEtC,IAAI7yC,EAAQ,IAAI4yC,EAAU36E,EAAOy6E,GAGjC,OAFA1yC,EAAM1W,MAAQA,EAEP0W,CACX,EAEAkhD,EAAiBpiF,UAAUsiF,WAAa,SAAqBnpF,GACzD,MAAO,CAAEA,EAAMmwB,IAAKnwB,EAAMT,KAAMS,EAAMoxC,MAAOpxC,EAAMo0E,KACvD,EAEA6U,EAAiBpiF,UAAU81E,YAAc,SAAsB38E,EAAOqrB,GAClE,IAAIswD,EAAWtwD,EAAOu9B,OAAOhb,KACzBrX,EAAQ1zB,KAAKsmF,WAAWnpF,GACxBm9E,EAAYt6E,KAAKq3E,gBAAgByB,GAErCwB,EAAYt6E,KAAKq3E,gBAAgByB,GAC7BwB,GAAa,CAAE3rD,IAAKzK,EAAWsH,IAAKpH,GAExCk2D,EAAYt6E,KAAKq3E,gBAAgByB,GAAY,CACzCnqD,IAAK7N,KAAK6N,IAAIzmB,MAAM4Y,KAAM4S,EAAMvrB,OAAO,CAAEmyE,EAAU3rD,OACnDnD,IAAK1K,KAAK0K,IAAItjB,MAAM4Y,KAAM4S,EAAMvrB,OAAO,CAAEmyE,EAAU9uD,OAE3D,EAEA46D,EAAiBpiF,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GAC5E,IAAIhkB,EAAQ+nC,EAAM/nC,MAElB,OAAO6C,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EACjChkB,EAAMT,KAAMS,EAAMo0E,KAClBp0E,EAAMmwB,IAAKnwB,EAAMoxC,MAAOrJ,EAAM+gB,SAEtC,EAEAmgC,EAAiBpiF,UAAUg8E,gBAAkB,WACzC,OAAOhgF,KAAKurC,MAChB,EAEO66C,CACX,CA1IwB,CA0ItBlP,IAEFnwD,GAAWq/D,GAAiBpiF,UAAW27E,IAEvC,UC9II6G,GAAW,SAAUrB,GACrB,SAASqB,EAAQrpF,EAAOmY,GACpB6vE,EAAYniF,KAAKhD,KAAM7C,EAAOmY,GAE9BtV,KAAKk8E,YACT,CAuKA,OArKKiJ,IAAcqB,EAAQz7E,UAAYo6E,GACvCqB,EAAQxiF,UAAY6G,OAAOS,OAAQ65E,GAAeA,EAAYnhF,WAC9DwiF,EAAQxiF,UAAUqH,YAAcm7E,EAEhCA,EAAQxiF,UAAUy/C,OAAS,SAAiBxzB,GACxC,IAKIw2D,EAAaC,EALbn0F,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACdnY,EAAQ5K,EAAI4K,MAEZqhE,EADQjsE,EAAI0nF,MACMtD,gBAAgBrhE,GAGtCtV,KAAK0mF,QAAUA,EAAUloB,EAAU/I,QAAQt4D,EAAMwpF,GAAIxpF,EAAMypF,IAC3D5mF,KAAKslF,SAAWoB,EAChB1mF,KAAK6mF,cAAc52D,GAEnBjwB,KAAKymF,YAAcA,EAAcjoB,EAAU/I,QAAQt4D,EAAM2pF,MAAO3pF,EAAMonE,OACtEvkE,KAAK+mF,kBAAkB92D,GAEvB,IAAI+2D,EAAaxoB,EAAU/I,QAAQt4D,EAAM8pF,QAEzC,GAAI9pF,EAAM+pF,KAAM,CACZ,IAAIC,EAAW3oB,EAAU/I,QAAQt4D,EAAM+pF,MACvClnF,KAAKonF,WAAapnF,KAAKqnF,eAAep3D,EAAKk3D,EAC/C,CAEAnnF,KAAKsnF,cAAgBtnF,KAAKunF,kBAAkBb,EAASD,GACrDzmF,KAAKwnF,aAAexnF,KAAKynF,iBAAiBx3D,EAAK+2D,GAE/ChnF,KAAKiwB,IAAMw2D,EAAY5/D,QAAQ6jB,KAAKg8C,GACpC1mF,KAAKylF,YACT,EAEAe,EAAQxiF,UAAU6iF,cAAgB,SAAwB52D,GACtDjwB,KAAK0mF,QAAQp8C,GAAKra,EAAIqa,GACtBtqC,KAAK0mF,QAAQl8C,GAAKva,EAAIua,EAC1B,EAEAg8C,EAAQxiF,UAAU+iF,kBAAoB,SAA4B92D,GAC9DjwB,KAAKymF,YAAYn8C,GAAKra,EAAIqa,GAC1BtqC,KAAKymF,YAAYj8C,GAAKva,EAAIua,EAC9B,EAEAg8C,EAAQxiF,UAAUqjF,eAAiB,SAAyBp3D,EAAKk3D,GAC7D,MAAO,CACH,CAAE,CAAEl3D,EAAIqa,GAAI68C,EAAS58C,IAAM,CAAEta,EAAIua,GAAI28C,EAAS58C,KAEtD,EAEAi8C,EAAQxiF,UAAUujF,kBAAoB,SAA4Bb,EAASD,GACvE,IAAIlB,EAAMkB,EAAYthD,SAASpf,EAC/B,MAAO,CAAE,CACL,CAAEw/D,EAAM,EAAGkB,EAAYl8C,IAAM,CAAEg7C,EAAM,EAAGkB,EAAYl8C,IACpD,CAAEg7C,EAAKkB,EAAYl8C,IAAM,CAAEg7C,EAAKmB,EAAQn8C,KACzC,CACC,CAAEg7C,EAAM,EAAGkB,EAAYh8C,IAAM,CAAE86C,EAAM,EAAGkB,EAAYh8C,IACpD,CAAE86C,EAAKkB,EAAYh8C,IAAM,CAAE86C,EAAKmB,EAAQj8C,KAEhD,EAEA+7C,EAAQxiF,UAAUyjF,iBAAmB,SAA2Bx3D,EAAK+2D,GACjE,MAAO,CACH,CAAE,CAAE/2D,EAAIqa,GAAI08C,EAAWz8C,IAAM,CAAEta,EAAIua,GAAIw8C,EAAWz8C,KAE1D,EAEAi8C,EAAQxiF,UAAU0jF,eAAiB,SAAyBpyE,GASxD,IARA,IAEInY,EAAQ6C,KAAK7C,MACbwqF,EAAWxqF,EAAMwqF,UAAY,GAC7BC,EAA6C,EAAhC9mE,KAAKC,IAAI5jB,EAAMypF,GAAKzpF,EAAMwpF,IACvC7yC,EAAW,GACXuoC,EAAU/mE,EAAQ+mE,SAAW,CAAC,EAEzB3wE,EAAI,EAAGA,EAAIi8E,EAASvtF,OAAQsR,IAAK,CACtC,IAAIm8E,EAAeF,EAASj8E,GAMxBo8E,EAAgB/gE,GAAW,CAAC,GAJ5Bs1D,EADAwL,EAAe1qF,EAAMypF,GAAKgB,GAAcC,EAAe1qF,EAAMwpF,GAAKiB,EACxDtyE,EAAQqyE,SAERryE,EAAQ2jC,UAEqB4N,QAEtC1hC,GAAQ2iE,EAAct5D,SACnBrJ,GAlBCnlB,KAkBcwuB,OACfs5D,EAAct5D,MAnBbxuB,KAmB4BwuB,MAE7Bs5D,EAAct5D,MACV,IAAI+S,GAAM86C,EAAQl1B,YAAYhlB,WAAWgwC,IAAmBtyC,SAIxE,IAAIrkC,EAAQ,IAAI+rD,GAAa,CACzBp0D,KAAMkpF,EAAQlpF,KACdqB,MAAO6nF,EAAQzlF,KACfnC,OAAQ4nF,EAAQzlF,KAChB80C,SAAU2wC,EAAQ3wC,SAClByb,WAAYk1B,EAAQl1B,WACpBN,OAAQihC,EACRtyC,QAAS6mC,EAAQ7mC,UAGrBh6C,EAAM2B,MAAQ0qF,EAEd/zC,EAAS1kC,KAAK5T,EAClB,CAGA,OADAwE,KAAK+nF,eAAej0C,GACbA,CACX,EAEA0yC,EAAQxiF,UAAU+jF,eAAiB,SAAyBJ,GAMxD,IALA,IAAInmD,EAASxhC,KAETw+D,EAAYx+D,KAAKi6E,MAAMtD,gBAAgB32E,KAAKsV,SAC5C6vB,EAASnlC,KAAKiwB,IAAIkV,SAEbz5B,EAAI,EAAGA,EAAIi8E,EAASvtF,OAAQsR,IAAK,CACtC,IAAIm8E,EAAeF,EAASj8E,GAAGvO,MAC3Bw/E,EAAYne,EAAU/I,QAAQoyB,GAE9BrmD,EAAOlsB,QAAQq1C,SACfgyB,EAAUj1C,KAAKvC,EAAOpf,GAEtB42D,EAAUj1C,UAAKj0C,EAAW0xC,EAAOnf,GAGrCwb,EAAOvR,IAAMuR,EAAOvR,IAAIya,KAAKiyC,GAC7BgL,EAASj8E,GAAG+3C,OAAOk5B,EACvB,CACJ,EAEA6J,EAAQxiF,UAAU2hF,WAAa,SAAqBrwE,GAIhD,IAHA,IAAIgI,EAAQ6nE,EAAYnhF,UAAU2hF,WAAW3iF,KAAKhD,KAAMsV,GACpDqyE,EAAW3nF,KAAK0nF,eAAepyE,GAE1B5J,EAAI,EAAGA,EAAIi8E,EAASvtF,OAAQsR,IAAK,CACtC,IAAIlY,EAAUm0F,EAASj8E,GAAG+7C,aACtBj0D,GACA8pB,EAAMuO,OAAOr4B,EAErB,CAEA,OAAO8pB,CACX,EAEAkpE,EAAQxiF,UAAU8hF,YAAc,SAAsB5jE,EAAW5M,GAC7DtV,KAAK+lF,UAAU7jE,EAAW5M,EAAStV,KAAKsnF,cAAehyE,EAAQ0yE,UAC/DhoF,KAAK+lF,UAAU7jE,EAAW5M,EAAStV,KAAKwnF,aAAclyE,EAAQ2xE,QAC9DjnF,KAAK+lF,UAAU7jE,EAAW5M,EAAStV,KAAKonF,WAAY9xE,EAAQ4xE,KAChE,EAEAV,EAAQxiF,UAAUw/E,eAAiB,WAC/B,OAAKxjF,KAAKsV,QAAQuxC,QAAU,CAAC,GAAGr4B,MACrBxuB,KAAKsV,QAAQuxC,OAAOr4B,MAG3BxuB,KAAKwuB,MACExuB,KAAKwuB,MAGT22D,EAAYnhF,UAAUw/E,eAAexgF,KAAKhD,KACrD,EAEOwmF,CACX,CA7Ke,CA6KbrB,IAEFxvD,GAAkB6wD,GAAS,CACvB3/B,OAAQ,CACJ68B,YAAa,IAEjBj0B,KAAM,CACFj7D,MAAO,GAEXyyF,OAAQ,CACJz4D,MAAO,WAEX04D,KAAM,CACF1yF,MAAO,EACP6yD,SAAU,OACV74B,MAAO,WAEX83B,QAAS,CACL4D,SAAU,SAEdg8B,QAAS,CACL/kE,OAAQ,oRAUZqkC,UAAW,CACPhQ,QAAS,EACTqR,OAAQ,CACJryD,MAAO,EACPghD,QAAS,GAEbia,KAAM,CACFj7D,MAAO,EACPghD,QAAS,IAGjBoe,MAAO,CACH7/D,SAAS,EACTm7D,MAAO,CAAC,GAEZy4B,SAAU,CACN5zF,SAAS,EACT6C,KjCvNe,EiCwNfzD,KAAMuwB,EACNyjC,WAAYtiC,EACZgiC,OAAQ,CACJryD,MAAO,EACPghD,QAAS,GAEbA,QAAS,GAEbyD,SAAU,CACNllD,SAAS,EACT6C,KjClOe,EiCmOfzD,KAAMswB,EACN0jC,WAAYtiC,EACZgiC,OAAQ,CACJryD,MAAO,EACPghD,QAAS,GAEbA,QAAS,KAIjBzuB,GAAWy/D,GAAQxiF,UAAW83E,IAE9B,UC9PImM,GAAmB,SAAUzB,GAC7B,SAASyB,IACLzB,EAAQt+E,MAAMlI,KAAM+H,UACxB,CAuCA,OArCKy+E,IAAUyB,EAAgBl9E,UAAYy7E,GAC3CyB,EAAgBjkF,UAAY6G,OAAOS,OAAQk7E,GAAWA,EAAQxiF,WAC9DikF,EAAgBjkF,UAAUqH,YAAc48E,EAExCA,EAAgBjkF,UAAU6iF,cAAgB,SAAwB52D,GAC9DjwB,KAAK0mF,QAAQn8C,GAAKta,EAAIsa,GACtBvqC,KAAK0mF,QAAQj8C,GAAKxa,EAAIwa,EAC1B,EAEAw9C,EAAgBjkF,UAAU+iF,kBAAoB,SAA4B92D,GACtEjwB,KAAKymF,YAAYl8C,GAAKta,EAAIsa,GAC1BvqC,KAAKymF,YAAYh8C,GAAKxa,EAAIwa,EAC9B,EAEAw9C,EAAgBjkF,UAAUqjF,eAAiB,SAAyBp3D,EAAKk3D,GACrE,MAAO,CACH,CAAE,CAAEA,EAAS78C,GAAIra,EAAIsa,IAAM,CAAE48C,EAAS78C,GAAIra,EAAIwa,KAEtD,EAEAw9C,EAAgBjkF,UAAUujF,kBAAoB,SAA4Bb,EAASD,GAC/E,IAAIlB,EAAMkB,EAAYthD,SAASnf,EAC/B,MAAO,CAAE,CACL,CAAEygE,EAAYn8C,GAAIi7C,EAAM,GAAK,CAAEkB,EAAYn8C,GAAIi7C,EAAM,GACrD,CAAEkB,EAAYn8C,GAAIi7C,GAAO,CAAEmB,EAAQp8C,GAAIi7C,IACxC,CACC,CAAEkB,EAAYj8C,GAAI+6C,EAAM,GAAK,CAAEkB,EAAYj8C,GAAI+6C,EAAM,GACrD,CAAEkB,EAAYj8C,GAAI+6C,GAAO,CAAEmB,EAAQl8C,GAAI+6C,IAE/C,EAEA0C,EAAgBjkF,UAAUyjF,iBAAmB,SAA2Bx3D,EAAK+2D,GACzE,MAAO,CACH,CAAE,CAAEA,EAAW18C,GAAIra,EAAIsa,IAAM,CAAEy8C,EAAW18C,GAAIra,EAAIwa,KAE1D,EAEOw9C,CACX,CA3CuB,CA2CrBzB,IAEF,MCrCI0B,GAAgB,SAAU9B,GAC1B,SAAS8B,IACL9B,EAAiBl+E,MAAMlI,KAAM+H,UACjC,CAqHA,OAnHKq+E,IAAmB8B,EAAan9E,UAAYq7E,GACjD8B,EAAalkF,UAAY6G,OAAOS,OAAQ86E,GAAoBA,EAAiBpiF,WAC7EkkF,EAAalkF,UAAUqH,YAAc68E,EAErCA,EAAalkF,UAAU2zE,SAAW,SAAmB1gE,EAAMuR,GACvD,IAYI0c,EAZAg/B,EAAa17C,EAAO07C,WACpBje,EAAWz9B,EAAOy9B,SAClBF,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAElBjkF,EADMoM,KACSpM,SACf0hB,EAFMtV,KAEQsV,QACdnY,EAAQ8Z,EAAKw4D,YAEb4W,EAAWF,GADEnmF,KAAKsmF,WAAWnpF,IAE7B6oD,EAAWD,EAAO9uC,KAAKitD,GACvBoT,EAAiBt3E,KAAKs3E,eAAepT,GAGpCoT,IACDt3E,KAAKs3E,eAAepT,GAAcoT,EAAiB,IAGnD+O,IACAnhD,EAAQllC,KAAKg6E,YAAY/iE,EAAMuR,IAGnC,IAAIg8D,EAAU5wF,EAASswE,GAClBsgB,IACDA,EAAU,IAAIV,GAAc,CACxBn5B,SAAUr1C,EAAQyiE,WAClBgM,IAAKzuE,EAAQyuE,IACbr8D,QAASpS,EAAQoS,QACjBspC,KAAM17C,EAAQyiE,aAAe/3E,KAAKgkD,cAAgB,CAAC,GAAGgN,MAE1DhxD,KAAK6rB,OAAO24D,IAGZt/C,IACAllC,KAAK85E,YAAY38E,EAAOqrB,GAExBg8D,EAAQ34D,OAAOqZ,GAEfA,EAAMg/B,WAAaA,EACnBh/B,EAAM+gB,SAAWA,EACjB/gB,EAAM6gB,OAASA,EACf7gB,EAAM2yC,SAAWA,EACjB3yC,EAAM+0C,MAAQj6E,KACdklC,EAAM8gB,SAAWA,GAGrBhmD,KAAKurC,OAAOn8B,KAAK81B,GACjBoyC,EAAeloE,KAAK81B,EACxB,EAEAgjD,EAAalkF,UAAU8zE,UAAY,WAC/B,OAAI93E,KAAKsV,QAAQyiE,WACNkQ,GAGJzB,EACX,EAEA0B,EAAalkF,UAAUsiF,WAAa,SAAqBnpF,GACrD,MAAO,CACHA,EAAM2pF,MAAO3pF,EAAMwpF,GAAIxpF,EAAM8pF,OAC7B9pF,EAAMypF,GAAIzpF,EAAMonE,MAExB,EAEA2jB,EAAalkF,UAAU81E,YAAc,SAAsB38E,EAAOqrB,GAC9D,IAAIswD,EAAWtwD,EAAOu9B,OAAOhb,KACzBuvC,EAAYt6E,KAAKq3E,gBAAgByB,GACjCplD,EAAQ1zB,KAAKsmF,WAAWnpF,GAAOgL,OAAOnI,KAAKmoF,eAAehrF,EAAMwqF,WAEhExiE,GAAQhoB,EAAM+pF,QACdxzD,EAAQA,EAAMvrB,OAAOhL,EAAM+pF,OAG/B5M,EAAYt6E,KAAKq3E,gBAAgByB,GAC7BwB,GAAa,CAAE3rD,IAAKzK,EAAWsH,IAAKpH,GAExCk2D,EAAYt6E,KAAKq3E,gBAAgByB,GAAY,CACzCnqD,IAAK7N,KAAK6N,IAAIzmB,MAAM4Y,KAAM4S,EAAMvrB,OAAO,CAAEmyE,EAAU3rD,OACnDnD,IAAK1K,KAAK0K,IAAItjB,MAAM4Y,KAAM4S,EAAMvrB,OAAO,CAAEmyE,EAAU9uD,OAE3D,EAEA08D,EAAalkF,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GACxE,IAAIhkB,EAAQ+nC,EAAM/nC,MAElB,OAAO6C,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EACjChkB,EAAM2pF,MAAO3pF,EAAMwpF,GAAIxpF,EAAM8pF,OAC7B9pF,EAAMypF,GAAIzpF,EAAMonE,MAAOpnE,EAAM+pF,KAAMhiD,EAAM+gB,SAEjD,EAEAiiC,EAAalkF,UAAUmkF,eAAiB,SAAyBjnC,GAI7D,IAHA,IAAI9mD,GAAU8mD,GAAS,IAAI9mD,OACvBhC,EAAS,GAEJsT,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIuqB,EAAOirB,EAAMx1C,GACbyZ,GAAQ8Q,IAAkB,OAATA,GACjB79B,EAAOgX,KAAK6mB,EAEpB,CAEA,OAAO79B,CACX,EAEA8vF,EAAalkF,UAAUwiD,6BAA+B,WAClD,OAAO,CACX,EAEO0hC,CACX,CAzHoB,CAyHlB9B,IAEF,MCnIIgC,GAAmB,SAAUrS,GAC7B,SAASqS,IACLrS,EAAa7tE,MAAMlI,KAAM+H,UAC7B,CAaA,OAXKguE,IAAeqS,EAAgBr9E,UAAYgrE,GAChDqS,EAAgBpkF,UAAY6G,OAAOS,OAAQyqE,GAAgBA,EAAa/xE,WACxEokF,EAAgBpkF,UAAUqH,YAAc+8E,EAExCA,EAAgBpkF,UAAUkyE,QAAU,WAChC,IAAI5gB,EAAOt1D,KAAK+wD,MAAMs3B,WAAWroF,KAAK+lD,QAGtC,OAFW/lD,KAAKy9C,WAAa6X,EAAKtvC,EAAIsvC,EAAKvvC,CAG/C,EAEOqiE,CACX,CAjBuB,CAiBrBrS,IAEF,MCnBe,SAASsQ,GAASlpF,GAC7B,OAAOgoB,GAAQhoB,IAAoB,OAAVA,CAC7B,CCWA,IAAImrF,GAAgB,SAAU/kC,GAC1B,SAAS+kC,EAAapzB,EAAU5/C,GAE5BiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKk1D,SAAWA,EAChBl1D,KAAKgkD,aAAekR,EAASlR,aAC7BhkD,KAAKuoF,cAELvoF,KAAK5G,QACT,CAiTA,OA/SKmqD,IAAe+kC,EAAav9E,UAAYw4C,GAC7C+kC,EAAatkF,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACrEskF,EAAatkF,UAAUqH,YAAci9E,EAErCA,EAAatkF,UAAUukF,YAAc,WAGjCvoF,KAAKwoF,YAAc,CAAC,EACpBxoF,KAAKyoF,YAAc,CAAC,EAEpBzoF,KAAKurC,OAAS,GACdvrC,KAAKu3E,aAAe,GACpBv3E,KAAKw3E,cAAgB,GACrBx3E,KAAKy3E,YAAc,EACvB,EAEA6Q,EAAatkF,UAAU5K,OAAS,WAC5B4G,KAAK03E,mBAAmB13E,KAAK23E,SAAS53E,KAAKC,MAC/C,EAEAsoF,EAAatkF,UAAUu1E,YAAc,SAAsBr0C,EAAOpnB,EAAO0K,GACrE,IAWQ8oD,EAXJn0E,EAAQ+nC,EAAM/nC,MAAM2gB,GACpB4qE,EAAkB5qE,EAAQ,QAC1B6qE,EAAW7qE,EAAQ,WACnB8qE,EAAY9qE,EAAQ,YACpB+5D,EAAWrvD,EAAOqvD,SAClB9xB,EAASv9B,EAAOu9B,OAChByzB,EAAYt0C,EAAM5vB,QAAQkkE,UAC1BC,EAAWjxD,EAAOmgE,GAClBjP,EAAYlxD,EAAOogE,GAEnB7tE,GAAS5d,KAEL4d,GAAS0+D,IAAa1+D,GAAS2+D,KAC/BpI,EAAa,CAAEhkD,IAAKmsD,EAAUlI,KAAMmI,IAGpCF,GAAar0D,GAAQq0D,EAAUkP,MAC/B1oF,KAAK25E,kBAAoB35E,KAAK25E,mBAAqB,CAAE5zD,EAAG,GAAIC,EAAG,IAC/DhmB,KAAK25E,kBAAkB77D,GAAO+5D,GAAY73E,KAAK25E,kBAAkB77D,GAAO+5D,IACpE,IAAIlH,GAAqB6I,EAAUkP,GAAkB3iC,EAAQjoC,GAEjEwzD,EAAatxE,KAAK25E,kBAAkB77D,GAAO+5D,GAAUjG,cAAcz0E,EAAOq8E,EAAUkP,KAGpFpX,GACAtxE,KAAK45E,iBAAiBtI,EAAYpsC,EAAOpnB,GAGrD,EAEAwqE,EAAatkF,UAAU41E,iBAAmB,SAA2BtI,EAAYpsC,EAAOpnB,GACpF,IAAIwP,EAAMgkD,EAAWhkD,IACjBikD,EAAOD,EAAWC,KAClBxrB,EAAS7gB,EAAM6gB,OACfzwC,EAAU4vB,EAAM5vB,QAAQkkE,UACxB/7B,EAAa3/B,IAAUkH,EACvBiR,EAAO,CAAC,EAEZiP,EAAMpnB,EAAQ,OAASwP,EACvB4X,EAAMpnB,EAAQ,QAAUyzD,EAExBrsC,EAAMs0C,UAAYt0C,EAAMs0C,WAAa,GACrC,IAAIO,EAAW,IAAIqO,GAAgB96D,EAAKikD,EAAM9zB,EAAYz9C,KAAM+lD,EAAQzwC,GACxE4vB,EAAMs0C,UAAUpqE,KAAK2qE,GACrB70C,EAAMrZ,OAAOkuD,GAEb9jD,EAAKnY,GAASwP,EACdttB,KAAK85E,YAAY7jD,EAAM8vB,GACvB9vB,EAAKnY,GAASyzD,EACdvxE,KAAK85E,YAAY7jD,EAAM8vB,EAC3B,EAEAuiC,EAAatkF,UAAU2zE,SAAW,SAAmBx6E,EAAOqrB,GACxD,IAYI0c,EAZAnf,EAAI5oB,EAAM4oB,EACVC,EAAI7oB,EAAM6oB,EACV6xD,EAAWrvD,EAAOqvD,SAClB9xB,EAAS/lD,KAAKsV,QAAQywC,OAAO8xB,GAC7BsH,EAAgBn/E,KAAKg/E,oBAAoBj5B,GACzCwxB,EAAev3E,KAAKu3E,aAAaM,GAEjChG,EAAa10E,EACXkpF,GAAStgE,IAAMsgE,GAASrgE,KAC1B6rD,EAAa7xE,KAAK6oF,mBAAmBhX,EAAYsN,IAIjDtN,KACA3sC,EAAQllC,KAAKg6E,YAAYnI,EAAYrpD,MAEjC3d,OAAOW,OAAO05B,EAAO1c,GACrBxoB,KAAKu5E,YAAYr0C,EAAOngB,EAAGyD,GAC3BxoB,KAAKu5E,YAAYr0C,EAAOlgB,EAAGwD,IAE/BxoB,KAAK85E,YAAYjI,EAAYrpD,EAAOu9B,SAGxC/lD,KAAKurC,OAAOn8B,KAAK81B,GACjBqyC,EAAanoE,KAAK81B,EACtB,EAEAojD,EAAatkF,UAAUg7E,oBAAsB,SAA8Bj5B,GACvE,OAAOA,EAAOo5B,aAClB,EAEAmJ,EAAatkF,UAAU6kF,mBAAqB,WAAgC,EAE5EP,EAAatkF,UAAU81E,YAAc,SAAsB38E,EAAO4oD,GAC9D,IAAIwK,EAAcvwD,KAAKgkD,aAAayM,KAChCq4B,EAAY/iC,EAAOgjC,MACnBC,EAAYjjC,EAAOkjC,MACnBljE,EAAI5oB,EAAM4oB,EACVC,EAAI7oB,EAAM6oB,EACVkjE,EAAalpF,KAAKwoF,YAAYM,GAC9BK,EAAanpF,KAAKyoF,YAAYO,GAE9B3C,GAAStgE,KACTmjE,EAAalpF,KAAKwoF,YAAYM,GAC1BI,GAAc,CAAEv6D,IAAKzK,EAAWsH,IAAKpH,GAErCnuB,GAAS8vB,KACTA,EAAIkqC,GAAUM,EAAaxqC,IAG/BmjE,EAAWv6D,IAAM7N,KAAK6N,IAAIu6D,EAAWv6D,IAAK5I,GAC1CmjE,EAAW19D,IAAM1K,KAAK0K,IAAI09D,EAAW19D,IAAKzF,IAG1CsgE,GAASrgE,KACTmjE,EAAanpF,KAAKyoF,YAAYO,GAC1BG,GAAc,CAAEx6D,IAAKzK,EAAWsH,IAAKpH,GAErCnuB,GAAS+vB,KACTA,EAAIiqC,GAAUM,EAAavqC,IAG/BmjE,EAAWx6D,IAAM7N,KAAK6N,IAAIw6D,EAAWx6D,IAAK3I,GAC1CmjE,EAAW39D,IAAM1K,KAAK0K,IAAI29D,EAAW39D,IAAKxF,GAElD,EAEAsiE,EAAatkF,UAAUm2E,iBAAmB,SAA2B7kE,EAASnY,EAAOqrB,GACjF,IAAIu9B,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAClBl4E,EAAQ,CAAEm3E,SAAU/wB,EAAOq0B,UAAWpD,SAAU,CAAE,OAAQ,UAAW,UAAW,WAAY,SAAU,SAAU,sBAAuB,wBAEvIqD,EAASr6E,KAAKy3E,YAAYI,GACzB1yD,GAAQk1D,KACTr6E,KAAKy3E,YAAYI,GAAYwC,EAASzD,GAAYthE,EAAS,CAAC,EAAG3V,GAAO,IAG1E,IAAIi4E,EAAetiE,EAUnB,OATI+kE,GAEAzD,GADAgB,EAAe7wD,GAAW,CAAC,EAAGzR,GACJ,CACtBnY,MAAOA,EACP4oD,OAAQA,EACRC,SAAUx9B,EAAOw9B,UAClBrmD,GAGAi4E,CACX,EAEA0Q,EAAatkF,UAAU8zE,UAAY,WAC/B,OAAOqE,EACX,EAEAmM,EAAatkF,UAAU4zE,aAAe,SAAuB7xB,EAAQ8xB,GACjE,IAAIviE,EAAUtV,KAAKw3E,cAAcK,GACjC,IAAKviE,EAAS,CACV,IAAIwhE,EAAW92E,KAAK83E,YAAY9zE,UAAU8yE,SAC1C92E,KAAKw3E,cAAcK,GAAYviE,EAAUyR,GAAW,CAAC,EAAG+vD,EAAU,CAC9DuF,QAAS,CACL7mC,QAASuQ,EAAOvQ,SAEpB0wC,QAAS,CACL/kE,OAAQnhB,KAAKsV,QAAQ4wE,QAAQ/kE,QAEjC6wC,OAAQ,CACJ7wC,OAAQnhB,KAAKsV,QAAQ08C,OAAO7wC,SAEjC4kC,EACP,CAEA,OAAOzwC,CACX,EAEAgzE,EAAatkF,UAAUg2E,YAAc,SAAsB78E,EAAOqrB,GAC9D,IAAIu9B,EAASv9B,EAAOu9B,OAChB6xB,EAAe53E,KAAK43E,aAAa7xB,EAAQv9B,EAAOqvD,UAChDrpD,EAAQhG,EAAOgG,OAASu3B,EAAOv3B,MAEnCopD,EAAe53E,KAAKm6E,iBAAiBvC,EAAcz6E,EAAOqrB,GAEtDpC,GAAW2/B,EAAOv3B,SAClBA,EAAQopD,EAAappD,OAGzB,IAAI0W,EAAQ,IAAIi3C,GAAUh/E,EAAOy6E,GAKjC,OAJA1yC,EAAM1W,MAAQA,EAEdxuB,KAAK6rB,OAAOqZ,GAELA,CACX,EAEAojD,EAAatkF,UAAUqkF,WAAa,SAAqBtiC,GACrD,IAAI+iC,EAAY/iC,EAAOgjC,MACnBC,EAAYjjC,EAAOkjC,MACnB/zB,EAAWl1D,KAAKk1D,SAChB6zB,EAAQD,EAAY5zB,EAASk0B,WAAWN,GAAa5zB,EAAS1B,MAC9Dy1B,EAAQD,EAAY9zB,EAASm0B,WAAWL,GAAa9zB,EAASzB,MAElE,IAAKs1B,EACD,MAAM,IAAI3oF,MAAM,qCAAuC0oF,GAG3D,IAAKG,EACD,MAAM,IAAI7oF,MAAM,qCAAuC4oF,GAG3D,MAAO,CACHjjE,EAAGgjE,EACH/iE,EAAGijE,EAEX,EAEAX,EAAatkF,UAAUy/C,OAAS,SAAiB9Y,GAC7C,IAAInJ,EAASxhC,KAETy6E,EAAcz6E,KAAKurC,OACnBqsB,GAAS53D,KAAKsV,QAAQ4/B,KACtB46B,EAAU,EAGd9vE,KAAK03E,oBAAmB,SAAUv6E,EAAOqrB,GACrC,IAAI0c,EAAQu1C,EAAY3K,KACpBuY,EAAa7mD,EAAO6mD,WAAW7/D,EAAOu9B,QACtCwP,EAAQ8yB,EAAWtiE,EAAE0vC,QAAQt4D,EAAM4oB,EAAG5oB,EAAM4oB,EAAG6xC,GAC/CpC,EAAQ6yB,EAAWriE,EAAEyvC,QAAQt4D,EAAM6oB,EAAG7oB,EAAM6oB,EAAG4xC,GAEnD,GAAI1yB,EACA,GAAIqwB,GAASC,EAAO,CAChB,IAAIqlB,EAAYr5C,EAAOq5C,UAAUtlB,EAAOC,GACxCtwB,EAAMue,OAAOo3B,EACjB,MACI31C,EAAMnxC,SAAU,CAG5B,IAEAiM,KAAKiwB,IAAM0a,CACf,EAEA29C,EAAatkF,UAAU62E,UAAY,SAAoBtlB,EAAOC,GAC1D,OAAO,IAAInrB,GAAIkrB,EAAMjrB,GAAIkrB,EAAMjrB,GAAIgrB,EAAM/qB,GAAIgrB,EAAM/qB,GACvD,EAEA69C,EAAatkF,UAAU0zE,mBAAqB,SAA6BxxE,GAOrE,IANA,IAGI6/C,EADM/lD,KACOsV,QAAQywC,OACrBwxB,EAFMv3E,KAEau3E,aAEdM,EAAW,EAAGA,EAAW9xB,EAAO3rD,OAAQy9E,IAAY,CACzD,IAAI6C,EAAgB30B,EAAO8xB,GACDN,EAAaM,KAEnCN,EAAaM,GAAY,IAG7B,IAAK,IAAI/H,EAAU,EAAGA,EAAU4K,EAAczjE,KAAK7c,OAAQ01E,IAAW,CAClE,IAAI1kB,EAdCprD,KAccw7E,WAAWd,EAAe7C,EAAU/H,GACnD3yE,EAAQiuD,EAAMqkB,YACdjnD,EAAS4iC,EAAM5iC,OAEnBtiB,EAAS/I,EAAO4pB,GAAW,CACvB+oD,QAASA,EACT/pB,OAAQ20B,EACR7C,SAAUA,EACV7xB,SAAU00B,EAAczjE,KAAK64D,GAC7BmK,MAvBCj6E,MAwBFwoB,GACP,CACJ,CACJ,EAEA8/D,EAAatkF,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GACxE,IAAIhkB,EAAQ+nC,EAAM/nC,MAClB,OAAO6C,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EAAQhkB,EAAM4oB,EAAG5oB,EAAM6oB,EAChE,EAEAsiE,EAAatkF,UAAUg8E,gBAAkB,WAGrC,IAFA,IAAIz0C,EAASvrC,KAAKurC,OACdnzC,EAAS,GACJqc,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IACnCrc,EAAOgX,MAAMm8B,EAAO92B,IAAQ,CAAC,GAAGsgB,QAEpC,OAAO38B,CACX,EAEOkwF,CACX,CA5ToB,CA4TlB/kC,IACF5tB,GAAkB2yD,GAAc,CAC5BviC,OAAQ,GACRmgC,QAAS,CACL/kE,OAAQ,YAEZ6wC,OAAQ,CACJ7wC,OAAQ,YAEZ+zB,MAAM,IAEVnuB,GAAWuhE,GAAatkF,UAAW27E,GAAoB,CACnDnE,WAAYtE,GAAAA,UAAAA,aAGhB,UClVIoS,GAAU,SAAUnN,GACpB,SAASmN,EAAOnsF,EAAOmY,GACnB6mE,EAAUn5E,KAAKhD,KAAM7C,EAAOmY,GAE5BtV,KAAKimD,SAAW9oD,EAAM8oD,QAC1B,CAiDA,OA/CKk2B,IAAYmN,EAAOv+E,UAAYoxE,GACpCmN,EAAOtlF,UAAY6G,OAAOS,OAAQ6wE,GAAaA,EAAUn4E,WACzDslF,EAAOtlF,UAAUqH,YAAci+E,EAE/BA,EAAOtlF,UAAUyhD,gBAAkB,WAC/B,IAAID,EAAYxlD,KAAKsV,QAAQkwC,UACzBqB,EAASrB,EAAUqB,OACnBw1B,EAAUr8E,KAAKsV,QAAQ+mE,QACvBl3C,EAASnlC,KAAKiwB,IAAIkV,SAClBW,GAAUu2C,EAAQzlF,KAAOylF,EAAQx1B,OAAOryD,MAAQqyD,EAAOryD,OAAS,EAChE+0F,EAAiB,IAAIppC,GACrB88B,EAAS,IAAI98B,GAAY,IAAIlU,GAAY,CAAE9G,EAAOpf,EAAGof,EAAOnf,EAAI8f,EAAS,EAAI+gB,EAAOryD,MAAQ,GAAKsxC,EAAS+gB,EAAOryD,MAAQ,GAAI,CAC7H+wB,OAAQ,CACJiJ,MAAO,QAEXunB,KAAM/1C,KAAKumD,eAAe,CACtB2D,SAAU,eACV17B,MAAO6tD,EAAQl1B,WACfkB,MAAO,CAAE,CACL/iC,OAAQ,EACRkJ,MAAO6tD,EAAQl1B,WACf3R,QAAS,IACV,CACClwB,OAAQ,EACRkJ,MAAO6tD,EAAQl1B,WACf3R,QAAS,QAIjB8Q,EAAU,IAAInG,GAAY,IAAIlU,GAAY,CAAE9G,EAAOpf,EAAGof,EAAOnf,GAAK8f,GAAS,CAC3EvgB,OAAQ,CACJiJ,MAAOq4B,EAAOr4B,OACV,IAAI+S,GAAM86C,EAAQl1B,YAAYhlB,WAAWgwC,IAAmBtyC,QAChErrC,MAAOqyD,EAAOryD,MACdghD,QAASqR,EAAOrR,SAEpBO,KAAM,CACFvnB,MAAO6tD,EAAQl1B,WACf3R,QAASgQ,EAAUhQ,WAM3B,OAFA+zC,EAAe19D,OAAOoxD,EAAQ32B,GAEvBijC,CACX,EAEOD,CACX,CAvDc,CAuDZnN,IAEFmN,GAAOtlF,UAAU8yE,SAAW/vD,GAAW,CAAC,EAAGuiE,GAAOtlF,UAAU8yE,SAAU,CAClE9kB,OAAQ,CACJnV,SAAUr5B,GAEdgiC,UAAW,CACPhQ,QAAS,EACTqR,OAAQ,CACJr4B,MAAO,OACPh6B,MAAO,EACPghD,QAAS,MAKrB8zC,GAAOtlF,UAAU8yE,SAAStxB,UAAUZ,YAASnxD,EAE7C,UCzEI+1F,GAAe,SAAUlB,GACzB,SAASkB,IACLlB,EAAapgF,MAAMlI,KAAM+H,UAC7B,CAgIA,OA9HKugF,IAAekB,EAAYz+E,UAAYu9E,GAC5CkB,EAAYxlF,UAAY6G,OAAOS,OAAQg9E,GAAgBA,EAAatkF,WACpEwlF,EAAYxlF,UAAUqH,YAAcm+E,EAEpCA,EAAYxlF,UAAUukF,YAAc,WAChCvoF,KAAKypF,SAAWrlE,EAChBkkE,EAAatkF,UAAUukF,YAAYvlF,KAAKhD,KAC5C,EAEAwpF,EAAYxlF,UAAU2zE,SAAW,SAAmBx6E,EAAOqrB,GACpC,OAAfrrB,EAAMvG,OAAkBuG,EAAMvG,KAAO,GAAMuG,EAAMvG,KAAO,GAAK4xB,EAAOu9B,OAAO2jC,eAAe31F,UAC1FiM,KAAKypF,SAAW3oE,KAAK0K,IAAIxrB,KAAKypF,SAAU3oE,KAAKC,IAAI5jB,EAAMvG,OACvD0xF,EAAatkF,UAAU2zE,SAAS30E,KAAKhD,KAAM7C,EAAOqrB,KAElDxoB,KAAKurC,OAAOn8B,KAAK,MACjBpP,KAAKu3E,aAAa/uD,EAAOqvD,UAAUzoE,KAAK,MAEhD,EAEAo6E,EAAYxlF,UAAUy/C,OAAS,SAAiBxzB,GAC5CjwB,KAAK2pF,kBAAkB15D,GACvBq4D,EAAatkF,UAAUy/C,OAAOzgD,KAAKhD,KAAMiwB,EAC7C,EAEAu5D,EAAYxlF,UAAU8zE,UAAY,WAC9B,OAAOwR,EACX,EAEAE,EAAYxlF,UAAUg2E,YAAc,SAAsB78E,EAAOqrB,GAC7D,IAAIu9B,EAASv9B,EAAOu9B,OAChB6jC,EAAc7jC,EAAO9uC,KAAK7c,OAC1B0oD,EAAQt6B,EAAOsnD,SAAWmC,GAA6B2X,GACvDC,EAAmB,CACnB/mC,MAAOA,EACPL,SAAUwvB,GAA6BnvB,EACvC3vD,KAAM4/E,IAGNvkD,EAAQhG,EAAOgG,OAASu3B,EAAOv3B,MAC/BrxB,EAAMvG,KAAO,GAAKmvD,EAAO2jC,eAAe31F,UACxCy6B,EAAQiB,GACJs2B,EAAO2jC,eAAel7D,MAAOA,IAIrC,IAAIopD,EAAe7wD,GAAW,CAC1BirC,OAAQ,CACJ52D,UAAW,CACP0nD,MAAOA,EACPL,SAAUwvB,GAA6BnvB,KAGhD9iD,KAAK43E,aAAa7xB,EAAQv9B,EAAOqvD,UAAW,CAC3CwE,QAAS,CACLlpF,KAAMswB,EACNojC,OAAQd,EAAOc,OACfrR,QAASuQ,EAAOvQ,QAChBp6C,UAAWyuF,KAInBjS,EAAe53E,KAAKm6E,iBAAiBvC,EAAcz6E,EAAOqrB,GACtDpC,GAAW2/B,EAAOv3B,SAClBA,EAAQopD,EAAappD,OAGzBopD,EAAayE,QAAQl1B,WAAa34B,EAElC,IAAI0W,EAAQ,IAAIokD,GAAOnsF,EAAOy6E,GAK9B,OAJA1yC,EAAM1W,MAAQA,EAEdxuB,KAAK6rB,OAAOqZ,GAELA,CACX,EAEAskD,EAAYxlF,UAAU2lF,kBAAoB,SAA4B15D,GAOlE,IANA,IAGI81B,EADM/lD,KACOsV,QAAQywC,OACrBwQ,EAAUz1C,KAAK6N,IAAIsB,EAAIz7B,QAASy7B,EAAIx7B,UAE/BojF,EAAW,EAAGA,EAAW9xB,EAAO3rD,OAAQy9E,IAY7C,IAXA,IAAI6C,EAAgB30B,EAAO8xB,GACvBN,EARKv3E,KAQiBu3E,aAAaM,GAGnCiS,GAFUpP,EAAcqP,SAAWjpE,KAAK0K,IAAc,IAAV+qC,EAAgB,KAE3C,EACjByzB,GAFUtP,EAActuB,SAAqB,GAAVmK,GAElB,EACjB0zB,EAAUnpE,KAAK+L,GAAKi9D,EAAOA,EAG3BI,GAFUppE,KAAK+L,GAAKm9D,EAAOA,EACLC,GAfjBjqF,KAgB0BypF,SAE1B3Z,EAAU,EAAGA,EAAUyH,EAAan9E,OAAQ01E,IAAW,CAC5D,IAAI5qC,EAAQqyC,EAAazH,GACzB,GAAI5qC,EAAO,CACP,IAAIilD,EAAOrpE,KAAKC,IAAImkB,EAAM/nC,MAAMvG,MAAQszF,EACpCpkD,EAAShlB,KAAK0f,MAAMypD,EAAUE,GAAQrpE,KAAK+L,IAE3C+3B,EADan1B,GAAeyV,EAAM5vB,QAAQsvC,OAAQ,IAC3B,EAAI9e,EAASkkD,GAExCjjE,GAAWme,EAAM5vB,QAAS,CACtBsvC,OAAQA,EACRy3B,QAAS,CACLzlF,KAAe,EAATkvC,EACN8e,OAAQA,GAEZoN,OAAQ,CACJpN,OAAQA,EAAS,IAG7B,CACJ,CAER,EAEA4kC,EAAYxlF,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GACvE,IAAIhkB,EAAQ+nC,EAAM/nC,MAClB,OAAO6C,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EAAQhkB,EAAM4oB,EAAG5oB,EAAM6oB,EAAG7oB,EAAMvG,KAAMsuC,EAAM+gB,SACrF,EAEAujC,EAAYxlF,UAAUugD,gBAAkB,WAA6B,EACrEilC,EAAYxlF,UAAUogD,aAAe,WAA0B,EAExDolC,CACX,CApImB,CAoIjBlB,IAEF3yD,GAAkB6zD,GAAa,CAC3BtD,QAAS,CACL/kE,OAAQ,OAEZ6wC,OAAQ,CACJ7wC,OAAQ,SAIhB,UCnJIipE,GAAU,SAAU7iC,GACvB,SAAS6iC,IACR7iC,EAAar/C,MAAMlI,KAAM+H,UAC1B,CAMA,OANMw/C,IAAe6iC,EAAOr/E,UAAYw8C,GACxC6iC,EAAOpmF,UAAY6G,OAAOS,OAAQi8C,GAAgBA,EAAavjD,WAC/DomF,EAAOpmF,UAAUqH,YAAc++E,EAIxBA,CACR,CAVc,CAUZ7iC,IAEFxgC,GAAWqjE,GAAOpmF,UAAW83E,IAE7B,UCHIuO,GAAU,SAAU9mC,GACpB,SAAS8mC,EAAOltF,EAAOmY,GACnBiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAK86E,UAAY96E,KAAKsV,QAAQwlE,UAC9B96E,KAAKwuB,MAAQlZ,EAAQkZ,OAAS3J,EAC9B7kB,KAAK7C,MAAQA,CACjB,CAgKA,OA9JKomD,IAAe8mC,EAAOt/E,UAAYw4C,GACvC8mC,EAAOrmF,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAC/DqmF,EAAOrmF,UAAUqH,YAAcg/E,EAE/BA,EAAOrmF,UAAU5K,OAAS,WACtB,IAAIkc,EAAUtV,KAAKsV,QAEdtV,KAAKs8E,YACNt8E,KAAKs8E,WAAY,EAEbn3D,GAAQnlB,KAAK7C,MAAMyQ,UACnB5N,KAAK4N,OAAS,IAAIw8E,GAAO,CACrBj3F,KAAMmiB,EAAQ1H,OAAOpS,MACrB2rD,WAAY7xC,EAAQ1H,OAAO4gB,OAASxuB,KAAKwuB,MACzCgnB,QAASlgC,EAAQkgC,QACjBoP,OAAQtvC,EAAQsvC,OAChBiC,OAAQvxC,EAAQ1H,OAAOi5C,OACvBE,OAAQpiC,EACRwnB,MAAO3nB,IAGXxkB,KAAK4N,OAAOzQ,MAAQ6C,KAAK7C,MACzB6C,KAAK4N,OAAOo4C,SAAWhmD,KAAKgmD,SAC5BhmD,KAAK4N,OAAOm4C,OAAS/lD,KAAK+lD,OAE1B/lD,KAAK6rB,OAAO7rB,KAAK4N,SAGrB5N,KAAK0mE,cACL1mE,KAAKk8E,aAEb,EAEAmO,EAAOrmF,UAAU0iE,YAAc,WAC3B,IACI1U,EADUhyD,KAAKsV,QACE08C,OAErB,GAAIA,EAAOj+D,QAAS,CAChB,IAEIyoF,EAFAh1B,EAAYxnD,KAAKwnD,YACjBqO,EAAgBztC,GAAY4pC,GAI5BwqB,EADA3mB,EACYA,EAAcrO,GAEdxnD,KAAKy8E,YAAYzqB,EAAO7wC,QAGxCnhB,KAAKkvD,MAAQ,IAAI6zB,GAASvG,EAAWxqB,EAAQxK,GAC7CxnD,KAAK6rB,OAAO7rB,KAAKkvD,MACrB,CACJ,EAEAm7B,EAAOrmF,UAAUy/C,OAAS,SAAiBxzB,GACvCjwB,KAAK5G,SAEL,IAAI7G,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACd1H,EAASrb,EAAIqb,OACbmjD,EAAQx+D,EAAI0nF,MACZlC,EAAaziE,EAAQyiE,WACrBvZ,EAAYzN,EAAM4lB,gBAAgB32E,KAAKsV,SACvCqlE,EAAe5pB,EAAM4pB,aAAa5pB,EAAMomB,aAAc7hE,EAAQ4uD,WAAY1F,GAC1E8rB,EAAkB9rB,EAAU/I,QAAQz1D,KAAK7C,MAAMyQ,QAC/C28E,EAAcxS,EAAauS,EAAkB3P,EAC7C6P,EAAczS,EAAa4C,EAAe2P,EAE9C,GAAI18E,EAAQ,CACR,IAAI68E,EAAa,IAAIpgD,GACjBkgD,EAAYjgD,GAAIkgD,EAAYjgD,GAC5BggD,EAAY//C,GAAIggD,EAAY//C,IAEhC78B,EAAO0H,QAAQ7gB,OAASsjF,EAAa0S,EAAWh2F,SAAW6gB,EAAQ1H,OAAO6hD,KAAKj7D,MAC/EoZ,EAAO0H,QAAQ9gB,MAAQujF,EAAaziE,EAAQ1H,OAAO6hD,KAAKj7D,MAAQi2F,EAAWj2F,QAC3EoZ,EAAO61C,OAAOgnC,EAClB,CAEA,IAAIv7B,EAAQlvD,KAAKkvD,MACbA,IACAA,EAAM55C,QAAQwlE,UAAY96E,KAAK86E,UAC/B5rB,EAAMzL,OAAOxzB,IAGbjwB,KAAK8zD,MACL9zD,KAAK8zD,KAAKrQ,OAAOxzB,GAGrBjwB,KAAKiwB,IAAMA,CACf,EAEAo6D,EAAOrmF,UAAUogD,aAAe,WAC5Bb,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAEzC,IAAIsV,EAAUtV,KAAKsV,QACf9X,EAAO2iD,GAAAA,SAAmBngD,KAAKiwB,IAAI+b,SAAU,CAC7C+J,KAAM,CACFvnB,MAAOxuB,KAAKwuB,MACZgnB,QAASlgC,EAAQkgC,SAErBjwB,OAAQ,OAGRjQ,EAAQuxC,OAAOryD,MAAQ,GACvBgJ,EAAK8X,QAAQ2T,IAAI,SAAU,CACvBuF,MAAOlZ,EAAQuxC,OAAOr4B,OAASxuB,KAAKwuB,MACpCh6B,MAAO8gB,EAAQuxC,OAAOryD,MACtB6yD,SAAU/xC,EAAQuxC,OAAOQ,SACzB7R,QAAS/lB,GAAena,EAAQuxC,OAAOrR,QAASlgC,EAAQkgC,WAIhEx1C,KAAK0qF,WAAaltF,EAElB4nB,EAAiB5nB,GACjBwC,KAAKykD,OAAO54B,OAAOruB,EACvB,EAEA6sF,EAAOrmF,UAAUugD,gBAAkB,WAC3BvkD,KAAK0qF,aACL1qF,KAAK5E,UAAY+kD,GAAAA,OACbngD,KAAK0qF,WAAY1qF,KAAKsV,QAAQla,WAG1C,EAEAivF,EAAOrmF,UAAUyhD,gBAAkB,SAA0BhvD,GACzD,OAAO0pD,GAAAA,SAAmBngD,KAAKiwB,IAAI+b,SAAUv1C,EACjD,EAEA4zF,EAAOrmF,UAAUk5E,gBAAkB,WAC/B,OAAOl9E,KAAK0qF,UAChB,EAEAL,EAAOrmF,UAAU8hD,oBAAsB,WACnC,MAAO,CACHpG,KAAM1/C,KAAKiwB,IAAI+b,SACfyY,OAAQzkD,KAAK0qF,WACbp1E,QAAStV,KAAKsV,QAEtB,EAEA+0E,EAAOrmF,UAAUy4E,YAAc,SAAsBt7D,GACjD,OAAOnhB,KAAKi6E,MAAM4B,iBAAiB77E,KAAMmhB,EAC7C,EAEAkpE,EAAOrmF,UAAUwjD,UAAY,WACzB,MAAO,CACHxB,SAAUhmD,KAAKgmD,SACfC,SAAUjmD,KAAKimD,SACf9oD,MAAO6C,KAAK7C,MACZ4oD,OAAQ/lD,KAAK+lD,OAErB,EAEAskC,EAAOrmF,UAAUw5E,YAAc,SAAsBvtD,GACjD,OAAOjwB,KAAKiwB,IAAIwb,SAASxb,EAC7B,EAEOo6D,CACX,CAxKc,CAwKZ9mC,IAEF8mC,GAAOrmF,UAAUo5E,cAAgBgG,GAAAA,UAAAA,cAEjCztD,GAAkB00D,GAAQ,CACtBxjC,OAAQ,CACJryD,MAAO,GAEXm2D,UAAU,EACVnV,QAAS,EACT5nC,OAAQ,CACJpS,MAAO,GACPqrD,OAAQ,CACJryD,MAAO,EACPg6B,MAAO,SAEXihC,KAAM,CACFj7D,MAAO,IAGfw9D,OAAQ,CACJj+D,SAAS,GAEbmyF,QAAS,CACL/kE,OAAQ,iCAEZyyC,MAAO,CACH1E,MAAO,CAAC,KAIhBnoC,GAAWsjE,GAAOrmF,UAAW83E,IAC7B/0D,GAAWsjE,GAAOrmF,UAAWi4E,IAE7B,UC/MI0O,GAAe,SAAUzT,GACzB,SAASyT,EAAYz1B,EAAU5/C,IA+HnC,SAAkBA,GAGd,IAFA,IAAIywC,EAASzwC,EAAQywC,OAEZr6C,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAAK,CACpC,IAAIk/E,EAAa7kC,EAAOr6C,GACpBuL,EAAO2zE,EAAW3zE,MAClBA,GAAS7hB,EAAQ6hB,EAAK,KAAQgQ,GAAShQ,EAAK,MAC5C2zE,EAAW3zE,KAAO,CAAEA,GAE5B,CACJ,CAvIQ4zE,CAASv1E,GAET4hE,EAAiBl0E,KAAKhD,KAAMk1D,EAAU5/C,EAC1C,CA+GA,OA7GK4hE,IAAmByT,EAAY5/E,UAAYmsE,GAChDyT,EAAY3mF,UAAY6G,OAAOS,OAAQ4rE,GAAoBA,EAAiBlzE,WAC5E2mF,EAAY3mF,UAAUqH,YAAcs/E,EAEpCA,EAAY3mF,UAAUi3E,iBAAmB,SAA2BT,GAIhE,IAHA,IAAI5mF,EAAWoM,KAAKpM,SAChBoxF,EAAiBpxF,EAASwG,OAErBsR,EAAI,EAAGA,EAAIs5E,EAAgBt5E,IAChC9X,EAAS8X,GAAG+3C,OAAO+2B,EAAc9uE,GAEzC,EAEAi/E,EAAY3mF,UAAUs0E,UAAY,SAAoBpzC,GAClD,IAAI6gB,EAAS7gB,EAAM6gB,OACfyY,EAAYx+D,KAAK22E,gBAAgB5wB,GACjCiU,EAAoBh6D,KAAK44E,0BAA0Bpa,GAEvD,MAAO,CAAExE,EAAmB90B,EAAM/nC,MAAM5J,SAAWymE,EACvD,EAEA2wB,EAAY3mF,UAAUg2E,YAAc,SAAsB/iE,EAAMuR,GAC5D,IAAI07C,EAAa17C,EAAO07C,WACpBje,EAAWz9B,EAAOy9B,SAClBF,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAElBviE,EADMtV,KACQsV,QACd1hB,EAFMoM,KAESpM,SACfuJ,EAAQ8Z,EAAKw4D,YAEbqb,EAAgB/jE,GAAW,CAC3B4jC,UAAWr1C,EAAQyiE,WACnBzxB,QAASP,EAAOO,QAChB4d,WAAYA,EACZ6T,WAAYziE,EAAQyiE,YACrBhyB,GAECv3B,EAAQvX,EAAKuR,OAAOgG,OAASu3B,EAAOv3B,MACxCs8D,EAAgB9qF,KAAKm6E,iBACjB2Q,EAAe3tF,EAAO8oD,EAAUie,EAAYne,EAAQ8xB,GAGpDzxD,GAAW2/B,EAAOv3B,SAClBA,EAAQs8D,EAAct8D,OAG1B,IAAIu8D,EAAS,IAAIV,GAAOltF,EAAO2tF,GAC/BC,EAAOv8D,MAAQA,EAEf,IAAIg2D,EAAU5wF,EAASswE,GAavB,OAZKsgB,IACDA,EAAU,IAAIV,GAAc,CACxBn5B,SAAUr1C,EAAQyiE,WAClBgM,IAAKzuE,EAAQyuE,IACbr8D,QAASpS,EAAQoS,QACjBspC,KAAM17C,EAAQyiE,aAAe/3E,KAAKgkD,cAAgB,CAAC,GAAGgN,MAE1DhxD,KAAK6rB,OAAO24D,IAGhBA,EAAQ34D,OAAOk/D,GAERA,CACX,EAEAJ,EAAY3mF,UAAU81E,YAAc,SAAsB38E,EAAOqrB,GAC7D,IAAIj1B,EAAU4J,EAAM5J,QAChBqa,EAASzQ,EAAMyQ,OACfkrE,EAAWtwD,EAAOu9B,OAAOhb,KACzBuvC,EAAYt6E,KAAKq3E,gBAAgByB,GAEjC3zD,GAAQ5xB,KAAa0yB,MAAM1yB,IAAY4xB,GAAQvX,IAAWqY,MAAMrY,OAChE0sE,EAAYt6E,KAAKq3E,gBAAgByB,GAC7BwB,GAAa,CAAE3rD,IAAKzK,EAAWsH,IAAKpH,IAE9BuK,IAAM7N,KAAK6N,IAAI2rD,EAAU3rD,IAAKp7B,EAASqa,GACjD0sE,EAAU9uD,IAAM1K,KAAK0K,IAAI8uD,EAAU9uD,IAAKj4B,EAASqa,GAEzD,EAEA+8E,EAAY3mF,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GACvE,OAAOnhB,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EAAQ+jB,EAAM/nC,MAAM5J,QAAS2xC,EAAM/nC,MAAMyQ,OAClF,EAEA+8E,EAAY3mF,UAAU6tE,WAAa,SAAqB56D,GACpD,OAAOA,EAAKw4D,YAAYl8E,OAC5B,EAEAo3F,EAAY3mF,UAAU82E,UAAY,SAAoB51C,GAGlD,OAFYA,EAAM/nC,MAAM5J,QAET,CACnB,EAEAo3F,EAAY3mF,UAAUugD,gBAAkB,WACpC,IAEIhZ,EAASvrC,KAAKurC,OAElBvrC,KAAKilF,uBAEL,IAAK,IAAIxwE,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IAAO,CAC1C,IAAIywB,EAAQqG,EAAO92B,GACnBywB,EAAM5vB,QAAQla,UARL4E,KAQwBsV,QAAQla,UACzC8pC,EAAMqf,iBACV,CACJ,EAEOomC,CACX,CAtHmB,CAsHjBzT,IAEFyT,GAAY3mF,UAAUihF,qBAAuBb,GAAAA,UAAAA,qBAE7CzuD,GAAkBg1D,GAAa,CAC3BvvF,UAAW,CACPjI,KAAM0/E,MAgBd,UCjJImY,GAAe,SAAU/5D,GACzB,SAAS+5D,EAAYhnC,EAAc1uC,GAC/B2b,EAAMjuB,KAAKhD,MAEXA,KAAKgkD,aAAeA,EACpBhkD,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,CA4DA,OA1DK2b,IAAQ+5D,EAAYjgF,UAAYkmB,GACrC+5D,EAAYhnF,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACtDgnF,EAAYhnF,UAAUqH,YAAc2/E,EAEpCA,EAAYhnF,UAAUinF,SAAW,SAAmB31E,EAAS4vB,GACzD,IAAIiiB,EAAa7xC,EAAQ6xC,WACrBN,EAASvxC,EAAQuxC,OAAOr4B,MAE5B,GAAI0W,EAAO,CACP,IAAIgmD,EAAahmD,EAAM1W,OAAS0W,EAAM5vB,QAAQkZ,MAC9C24B,EAAa13B,GAAe03B,EAAY+jC,GACxCrkC,EAASp3B,GAAeo3B,EAAQqkC,EACpC,CAEA,IAAI7/C,EAAU7jB,GAAWlS,EAAQ+1B,SAAW,CAAC,EAAG,QAEhD,MAAO,CACH8/C,gBAAiBhkC,EACjBw8B,YAAa98B,EACbrxB,KAAMlgB,EAAQkgB,KACdhH,MAAOlZ,EAAQkZ,MACfgnB,QAASlgC,EAAQkgC,QACjBoR,YAAa1/B,GAAW5R,EAAQuxC,OAAOryD,OACvCu8B,WAAY7J,GAAWmkB,EAAQ1jB,KAC/ByjE,cAAelkE,GAAWmkB,EAAQxjB,QAClCiJ,YAAa5J,GAAWmkB,EAAQvjB,MAChCujE,aAAcnkE,GAAWmkB,EAAQzjB,OAEzC,EAEAojE,EAAYhnF,UAAU3L,KAAO,SAAeid,EAASg2E,EAAgBpmD,GACjE5vB,EAAQ6L,OAASmqE,EAAenqE,OAEhC,IAAI1qB,EAAQuJ,KAAKirF,SAASK,EAAgBpmD,GAC1C5vB,EAAQ7e,MAAQA,EAEhB,IAAI0wD,EAAa,IAAI5lB,GAAM9qC,EAAM00F,iBAC5BhmE,GAAQmmE,EAAe98D,QAAW24B,EAAW9kB,WAC9C/sB,EAAQhhB,UAAY,2BAGxB0L,KAAKgkD,aAAakN,OAAOskB,GAAclgE,GAEvCtV,KAAKjM,SAAU,CACnB,EAEAi3F,EAAYhnF,UAAU7N,KAAO,WACrB6J,KAAKgkD,cACLhkD,KAAKgkD,aAAakN,OAAOukB,IAG7Bz1E,KAAKjM,SAAU,CACnB,EAEAi3F,EAAYhnF,UAAUs/C,QAAU,kBACrBtjD,KAAKgkD,YAChB,EAEOgnC,CACX,CAnEmB,CAmEjB/5D,IAEF0E,GAAkBq1D,GAAa,CAC3BnkC,OAAQ,CACJryD,MAAO,GAEXghD,QAAS,IAGb,UC3EI+1C,GAAoB,SAAUP,GAC9B,SAASO,EAAiBvnC,EAAcwnC,EAAWl2E,GAC/C01E,EAAYhoF,KAAKhD,KAAMgkD,EAAc1uC,GAErCtV,KAAKwrF,UAAYA,EACjBxrF,KAAKyrF,cAAgBznC,EAAa7iC,OAClCnhB,KAAK0rF,cACT,CAwFA,OAtFKV,IAAcO,EAAiBxgF,UAAYigF,GAChDO,EAAiBvnF,UAAY6G,OAAOS,OAAQ0/E,GAAeA,EAAYhnF,WACvEunF,EAAiBvnF,UAAUqH,YAAckgF,EAEzCA,EAAiBvnF,UAAU0nF,aAAe,WACtC,IAEI/6E,EAFAo6B,EAAO/qC,KAAKwrF,UAAUzgD,KAItBp6B,EAHWo6B,EAAKmqB,SAEPiiB,aACFpsC,EAAK+0B,YAAc,eAAiB,YAEpC/0B,EAAKz1B,QAAQq1C,SAAW,QAAU,QAE7C3qD,KAAK84E,SAAWnoE,CACpB,EAEA46E,EAAiBvnF,UAAU2nF,OAAS,SAAiBzmD,GACjD,IACI6F,EADM/qC,KACKwrF,UAAUzgD,KACrBz1B,EAFMtV,KAEQsV,QACdnY,EAAQ4tC,EAAKz1B,EAAQs2E,WAAa,cAAgB,YAAY1mD,GAC9D2mD,EAAiB1uF,EAEjBmY,EAAQ6L,OACR0qE,EAAiB7rF,KAAKyrF,cAAcp8B,KAAK/5C,EAAQ6L,OAAQhkB,GAClD4tC,EAAKz1B,QAAQniB,OAASwwB,IAC7BkoE,EAAiB7rF,KAAKyrF,cAAcp8B,KAAKtkB,EAAKz1B,QAAQ08C,OAAOyU,YAAY17B,EAAKz1B,QAAQ6nD,UAAWhgE,IAGrG6C,KAAK3H,KAAK,CACN6sC,MAAOA,EACPxf,OAAQ1lB,KAAK8rF,YACbN,UAAWxrF,KAAKwrF,UAChBruF,MAAO0uF,EACP/S,SAAU94E,KAAK84E,SACfsC,UAAWp7E,KAAKwrF,UAAUzgD,KAAKqwC,WAChCp7E,KAAKsV,QACZ,EAEAi2E,EAAiBvnF,UAAU7N,KAAO,WAC9B6J,KAAKgkD,aAAakN,OAAOukB,GAAc,CACnC+V,UAAWxrF,KAAKwrF,UAChB1S,SAAU94E,KAAK84E,SACfsC,UAAWp7E,KAAKwrF,UAAUzgD,KAAKqwC,WAEvC,EAEAmQ,EAAiBvnF,UAAU8nF,UAAY,WACnC,IAOIlI,EAAiBtG,EAAep4C,EANhCsmD,EADMxrF,KACUwrF,UAChBO,EAFM/rF,KAEYsV,QAClBunC,EAAWkvC,EAAYlvC,SACvBxR,EAAU0gD,EAAY1gD,QACtBsf,GAAY6gC,EAAUzgD,KAAKz1B,QAAQq1C,SACnC2I,EAAUk4B,EAAU/7B,KAAKpmB,OAuB7B,OApBIshB,GACAi5B,EAAkBpgE,EACdq5B,IAAat5B,GACb+5D,EAAgB34D,EAChBugB,EAAQouB,EAAQlqB,aAAazjB,UAAU,EAAG0lB,KAE1CiyC,EAAgB/5D,EAChB2hB,EAAQouB,EAAQrqB,UAAUtjB,UAAU,GAAI0lB,MAG5CiyC,EAAgB95D,EACZq5B,IAAa54B,GACb2/D,EAAkBp/D,EAClB0gB,EAAQouB,EAAQrqB,UAAUtjB,WAAW0lB,EAAS,KAE9Cu4C,EAAkB3/D,EAClBihB,EAAQouB,EAAQnqB,WAAWxjB,UAAU0lB,EAAS,KAI/C,CACHnG,MAAOA,EACPiH,MAAO,CACHoxC,WAAYqG,EACZj5B,SAAU2yB,GAGtB,EAEOiO,CACX,CAhGwB,CAgGtBP,IAEFr1D,GAAkB41D,GAAkB,CAChClgD,QAAS,KAGb,UCpGI2gD,GAAa,SAAUzoC,GACvB,SAASyoC,EAAUhoC,EAAcjZ,EAAMz1B,GACnCiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAK+qC,KAAOA,EACZ/qC,KAAK4rF,WAAa7gD,aAAgB0yB,GAElC,IAAI6tB,EAAiBtrF,KAAKsV,QAAQ4wE,QAE9BoF,EAAev3F,UACfiM,KAAKkmF,QAAU,IAAIqF,GAAiBvnC,EAAchkD,KAC9C+mB,GAAW,CAAC,EAAGukE,EAAgB,CAAEM,WAAY5rF,KAAK4rF,cAG9D,CA0GA,OAxGKroC,IAAeyoC,EAAUjhF,UAAYw4C,GAC1CyoC,EAAUhoF,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAClEgoF,EAAUhoF,UAAUqH,YAAc2gF,EAElCA,EAAUhoF,UAAU2nF,OAAS,SAAiBzmD,GAC1CllC,KAAKklC,MAAQA,EACbllC,KAAKisF,WACLjsF,KAAKyvD,KAAK17D,SAAQ,GAEdiM,KAAKkmF,SACLlmF,KAAKkmF,QAAQyF,OAAOzmD,EAE5B,EAEA8mD,EAAUhoF,UAAU7N,KAAO,WACvB6J,KAAKyvD,KAAK17D,SAAQ,GAEdiM,KAAKkmF,SACLlmF,KAAKkmF,QAAQ/vF,MAErB,EAEA61F,EAAUhoF,UAAUioF,SAAW,WAC3B,IAOIn6B,EANA/mB,EADM/qC,KACK+qC,KACX7F,EAFMllC,KAEMklC,MACZylB,EAAW5f,EAAKz1B,QAAQq1C,SACxB16B,EAAMjwB,KAAKksF,SACXC,EAAMxhC,EAAW3lC,EAAID,EACrByqC,EAAY,IAAIvjB,GAAWhc,EAAIqa,GAAIra,EAAIsa,IAS3C,GALIunB,EADAnH,EACU,IAAI1e,GAAWhc,EAAIua,GAAIva,EAAIsa,IAE3B,IAAI0B,GAAWhc,EAAIqa,GAAIra,EAAIwa,IAGrCvF,EACA,GAAIllC,KAAK4rF,WAAY,CACjB,IAAI7zB,EAAOhtB,EAAK0qB,QAAQ1qB,EAAK60B,mBAAmB16B,IAChDsqB,EAAU28B,GAAOr6B,EAAQq6B,GAAOp0B,EAAK5yB,SAASgnD,EAClD,MACI38B,EAAU28B,GAAOr6B,EAAQq6B,GAAOjnD,EAAMinD,GAI9CnsF,KAAKiwB,IAAMA,EAEXjwB,KAAKyvD,KAAKrR,OAAOoR,GAAWzS,OAAO+U,EACvC,EAEAk6B,EAAUhoF,UAAUkoF,OAAS,WASzB,IARA,IAMIE,EANArhD,EAAO/qC,KAAK+qC,KACZuqB,EAAOvqB,EAAKsqB,KAAKC,KACjBl7D,EAASk7D,EAAKl7D,OACduwD,EAAW5f,EAAKz1B,QAAQq1C,SACxB16B,EAAM8a,EAAKuoB,UAAUzsC,QACrBslE,EAAMxhC,EAAW5lC,EAAIC,EAGhBtZ,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAI2gF,EAAc/2B,EAAK5pD,GACnB2gF,EAAY/2E,QAAQq1C,WAAaA,IAC5ByhC,EAGDA,EAAY1hD,KAAK2hD,EAAY/4B,WAF7B84B,EAAcC,EAAY/4B,UAAUzsC,QAKhD,CAKA,OAHAoJ,EAAIk8D,EAAM,GAAKC,EAAYD,EAAM,GACjCl8D,EAAIk8D,EAAM,GAAKC,EAAYD,EAAM,GAE1Bl8D,CACX,EAEA+7D,EAAUhoF,UAAUogD,aAAe,WAC/Bb,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAEzC,IAAIsV,EAAUtV,KAAKsV,QACnBtV,KAAKyvD,KAAO,IAAItP,GAAU,CACtB56B,OAAQ,CACJiJ,MAAOlZ,EAAQkZ,MACfh6B,MAAO8gB,EAAQ9gB,MACfghD,QAASlgC,EAAQkgC,QACjB6R,SAAU/xC,EAAQ+xC,UAEtBtzD,SAAS,IAGbiM,KAAKisF,WACLjsF,KAAKykD,OAAO54B,OAAO7rB,KAAKyvD,KAC5B,EAEAu8B,EAAUhoF,UAAUs/C,QAAU,WACtBtjD,KAAKkmF,SACLlmF,KAAKkmF,QAAQ5iC,UAGjBC,EAAav/C,UAAUs/C,QAAQtgD,KAAKhD,KACxC,EAEOgsF,CACX,CAzHiB,CAyHfzoC,IAEF5tB,GAAkBq2D,GAAW,CACzBx9D,MAAOlL,EACP9uB,MAAO,EACPowD,QAAS,EACTshC,QAAS,CACLnyF,SAAS,KAIjB,UCvIIu4F,GAAkB,SAAU/oC,GAC5B,SAAS+oC,EAAeh3E,EAAS+/C,GAC7B9R,EAAavgD,KAAKhD,KAAMsV,GACxBtV,KAAKq1D,KAAOA,CAChB,CAkFA,OAhFK9R,IAAe+oC,EAAevhF,UAAYw4C,GAC/C+oC,EAAetoF,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACvEsoF,EAAetoF,UAAUqH,YAAcihF,EAEvCA,EAAetoF,UAAUuoF,WAAa,WAIlC,IAHA,IAAI34F,EAAWoM,KAAKpM,SAChBwG,EAASxG,EAASwG,OAEbsR,EAAI,EAAGA,EAAItR,EAAQsR,IACxB,IAAiC,IAA7B9X,EAAS8X,GAAG4J,QAAQ4/B,KACpB,OAAO,EAGf,OAAO,CACX,EAEAo3C,EAAetoF,UAAUwoF,SAAW,WAChC,OAAOxsF,KAAKq1D,KAAKo3B,WACrB,EAEAH,EAAetoF,UAAUogD,aAAe,WAKpC,GAJApkD,KAAKykD,OAAS,IAAItE,GAAW,CACzByE,OAAQ,IAGR5kD,KAAKusF,aAAc,CACnB,IACIG,GADU1sF,KAAKq9E,QAAUr9E,KAAKwsF,YACXxgD,SACnB8zC,EAAW3/B,GAAAA,SAAmBusC,GAClCtnE,EAAiB06D,GAEjB9/E,KAAKykD,OAAOvP,KAAK4qC,GACjB9/E,KAAK2sF,cACT,CACJ,EAEAL,EAAetoF,UAAUghD,UAAY,WACjC,OAAOhlD,IACX,EAEAssF,EAAetoF,UAAU2oF,aAAe,WAKpC,IAJA,IACIC,EADM5sF,KACOpM,SACbypF,EAFMr9E,KAEQq9E,QAET3xE,EAAI,EAAGA,EAAIkhF,EAAOxyF,OAAQsR,IAI/B,IAHA,IAAI6/B,EAASqhD,EAAOlhF,GAAG6/B,QAAU,CAAC,EAC9BnxC,EAASmxC,EAAOnxC,OAEXyyF,EAAI,EAAGA,EAAIzyF,EAAQyyF,IAAK,CAC7B,IAAI3nD,EAAQqG,EAAOshD,GACnB,GAAI3nD,IAA2B,IAAlBA,EAAMnxC,SAAqBmxC,EAAMs4C,aAAet4C,EAAMs4C,YAAYH,GAC3E,GAAIn4C,EAAMu4C,eACNv4C,EAAMu4C,qBACH,CACH,IAAIvuB,EAAQhqB,EAAMgqB,MACd4E,EAAO5uB,EAAM4uB,KAEb5E,GAASA,EAAM55C,QAAQvhB,UACnBm7D,EAAM+zB,gBACN/zB,EAAM+zB,eAAe5F,GAEzBnuB,EAAM55C,QAAQwvC,QAAS,GAGvBgP,GAAQA,EAAKx+C,QAAQvhB,UACrB+/D,EAAKx+C,QAAQwvC,QAAS,EAE9B,CAER,CAER,EAEAwnC,EAAetoF,UAAUs/C,QAAU,WAC/BC,EAAav/C,UAAUs/C,QAAQtgD,KAAKhD,aAE7BA,KAAK4yB,MAChB,EAEO05D,CACX,CAvFsB,CAuFpB/oC,IAEF+oC,GAAetoF,UAAUkhD,aAAc,EAEvC,UCxFI4nC,GAAQ,SAAUrmC,GAClB,SAASqmC,EAAKx3E,GACVmxC,EAAWzjD,KAAKhD,KAAMsV,GAEtBtV,KAAK1J,GA+MF,OAASy2F,KA7MZ/sF,KAAK0yD,cAEL1yD,KAAK8B,QAAU,IAAIyhD,GAEnBvjD,KAAKsuE,eAAiB,IAAIge,GAAe,CAAC,EAAGtsF,MAC7CA,KAAK6rB,OAAO7rB,KAAK8B,SAEjB9B,KAAKs1D,KAAO,GACZt1D,KAAK4sF,OAAS,EAClB,CA8LA,OA5LKnmC,IAAaqmC,EAAK/hF,UAAY07C,GACnCqmC,EAAK9oF,UAAY6G,OAAOS,OAAQm7C,GAAcA,EAAWziD,WACzD8oF,EAAK9oF,UAAUqH,YAAcyhF,EAE7BA,EAAK9oF,UAAU0uD,YAAc,WACzB,IAAI5E,EAAe9tD,KAAKsV,QAAQ/gB,MAC5B0yB,GAAS6mC,KACTA,EAAe/mC,GAAW,CAAC,EAAG+mC,EAAc,CACxC3hB,MAAO2hB,EAAajR,SACpBA,SAAUl4B,KAIlB3kB,KAAKzL,MAAQm5D,GAAAA,WAAiBI,EAAcg/B,EAAK9oF,UAAUsR,QAAQ/gB,OAC/DyL,KAAKzL,OACLyL,KAAK6rB,OAAO7rB,KAAKzL,MAEzB,EAEAu4F,EAAK9oF,UAAUgpF,WAAa,SAAqBjiD,GAC7C/qC,KAAK8B,QAAQ+pB,OAAOkf,GACpB/qC,KAAKs1D,KAAKlmD,KAAK27B,GACfA,EAAKsqB,KAAOr1D,IAChB,EAEA8sF,EAAK9oF,UAAUipF,aAAe,SAAuBliD,EAAMx1B,GACvDvV,KAAK8B,QAAQ+pB,OAAOkf,GACpB/qC,KAAKs1D,KAAKlvB,OAAO7wB,EAAK,EAAGw1B,GACzBA,EAAKsqB,KAAOr1D,IAChB,EAEA8sF,EAAK9oF,UAAUkpF,YAAc,SAAsBn8B,GAC3C/wD,KAAKsuE,eAAe17C,SAAW5yB,KAAK8B,SACpC9B,KAAK8B,QAAQ+pB,OAAO7rB,KAAKsuE,gBAG7BtuE,KAAK4sF,OAAOx9E,KAAK2hD,GACjB/wD,KAAKsuE,eAAeziD,OAAOklC,GAC3BA,EAAMsE,KAAOr1D,IACjB,EAEA8sF,EAAK9oF,UAAUmpF,MAAQ,WACnB,IAEIj4B,EAAWl1D,KAAK4yB,OAEpB,GAAIsiC,EAAU,CACV,IAAK,IAAIxpD,EAAI,EAAGA,EAAI1L,KAAKs1D,KAAKl7D,OAAQsR,IAClCwpD,EAASk4B,WANJptF,KAMsBs1D,KAAK5pD,IAGpC,IAAK,IAAI46D,EAAM,EAAGA,EAAMtmE,KAAK4sF,OAAOxyF,OAAQksE,IACxCpR,EAASm4B,YAVJrtF,KAUuB4sF,OAAOtmB,GAE3C,CAEAtmE,KAAKs1D,KAAO,GACZt1D,KAAK4sF,OAAS,GAEd5sF,KAAK8B,QAAQwhD,UACbtjD,KAAK8B,QAAQlO,SAAW,GACxBoM,KAAKsuE,eAAe16E,SAAW,EACnC,EAEAk5F,EAAK9oF,UAAUy/C,OAAS,SAAiB9Y,GAErC,IAAI7oC,EACA2sB,GAAKzuB,KAAKpM,YAAcoM,KAAK8B,UAC7BA,EAAU9B,KAAKpM,SAAS8/C,OAG5B+S,EAAWziD,UAAUy/C,OAAOzgD,KAAKhD,KAAM2qC,GAEnC7oC,GACA9B,KAAKpM,SAASwb,KAAKtN,GAGnB9B,KAAKzL,QACLyL,KAAKinD,WAAW1c,IAAMvqC,KAAKzL,MAAM07B,IAAIx7B,SAE7C,EAEAq4F,EAAK9oF,UAAUojD,YAAc,WACzB,IAAI3wD,EAAQgwD,EAAWziD,UAAUojD,YAAYpkD,KAAKhD,MAGlD,OAFAvJ,EAAMmuD,QAAU,GAETnuD,CACX,EAEAq2F,EAAK9oF,UAAUwgD,eAAiB,WACxBxkD,KAAKsV,QAAQvhB,SACbiM,KAAK81D,iBAEb,EAEAg3B,EAAK9oF,UAAUghD,UAAY,WACvB,OAAOhlD,IACX,EAEA8sF,EAAK9oF,UAAU+gD,SAAW,WACtB,OAAO/kD,IACX,EAEA8sF,EAAK9oF,UAAU8xD,gBAAkB,WAQ7B,IAPA,IAAIR,EAAOt1D,KAAKs1D,KACZg4B,EAAUh4B,EAAKntD,OAAOnI,KAAK4yB,OAAO0iC,MAClCi4B,EAAa,GACbC,EAAa,GAIR9hF,EAAI,EAAGA,EAAI4pD,EAAKl7D,OAAQsR,IAI7B,IAHA,IAAIq/B,EAAOuqB,EAAK5pD,GACZi/C,EAAW5f,EAAKz1B,QAAQq1C,SACxBsJ,EAAYtJ,EAAW4iC,EAAaC,EAC/BX,EAAI,EAAGA,EAAIS,EAAQlzF,OAAQyyF,IAChC,GAAyB,IAArB54B,EAAU75D,OAAc,CACxB,IAAIg7D,EAAUk4B,EAAQT,GAClBliC,IAAayK,EAAQ9/C,QAAQq1C,UAC7B9+B,GAAOooC,EAAWlpB,EAAK+qB,gBAAgBV,GAE/C,CAGZ,EAEA03B,EAAK9oF,UAAUypF,QAAU,WACrBztF,KAAKykD,OAAOxhB,QAEZjjC,KAAK8B,QAAQ8wB,OAAS,KACtB5yB,KAAK8B,QAAQykD,eAAiBvmD,KAAKumD,eAAexmD,KAAKC,MACvDA,KAAK8B,QAAQqiD,eACbnkD,KAAK8B,QAAQ8wB,OAAS5yB,KAElBA,KAAKzL,OACLyL,KAAKykD,OAAO54B,OAAO7rB,KAAKzL,MAAMkwD,QAGlCzkD,KAAKykD,OAAO54B,OAAO7rB,KAAK8B,QAAQ2iD,QAEhCzkD,KAAKwkD,iBACLxkD,KAAK0tF,cACT,EAEAZ,EAAK9oF,UAAUyoF,UAAY,WAKvB,IAJA,IAAIn3B,EAAOt1D,KAAKs1D,KACZl7D,EAASk7D,EAAKl7D,OACdqyF,EAAY,IAAIpiD,GAEX51B,EAAM,EAAGA,EAAMra,EAAQqa,IAAO,CACnC,IAAIs2B,EAAOuqB,EAAK7gD,GACZk5E,EAAiB5iD,EAAKz1B,QAAQq1C,SAAW3lC,EAAID,EAC7CuuC,EAAUvoB,EAAKuoB,UACnBm5B,EAAUkB,EAAiB,GAAKr6B,EAAQq6B,EAAiB,GACzDlB,EAAUkB,EAAiB,GAAKr6B,EAAQq6B,EAAiB,EAC7D,CAEA,GAAqB,IAAjBlB,EAAUjiD,GAIV,IAHA,IAAI8iD,EAAUttF,KAAK4yB,OAAO0iC,KACtBs4B,EAAWN,EAAQlzF,OAEd09D,EAAQ,EAAGA,EAAQ81B,EAAU91B,IAAS,CAC3C,IAAI+1B,EAASP,EAAQx1B,GACrB,IAAK+1B,EAAOv4E,QAAQq1C,SAAU,CAC1B,IAAImjC,EAAYD,EAAOv6B,UACvBm5B,EAAUniD,GAAKwjD,EAAUxjD,GACzBmiD,EAAUjiD,GAAKsjD,EAAUtjD,EAC7B,CACJ,CAEJ,OAAOiiD,CACX,EAEAK,EAAK9oF,UAAUq5E,QAAU,WACrB,OAAOr9E,KAAKsuE,eAAe+O,OAC/B,EAEAyP,EAAK9oF,UAAU0pF,aAAe,WAC1B,IAAI7pC,EAAU7jD,KAAK8jD,aACfD,GACAA,EAAQqN,OhDxHF,agDwHsB,CACxBmE,KAAM,IAAI+Y,GAAUpuE,MACpB1F,MAAO0F,KAAK+tF,UACZp9E,KAAM3Q,KAAKsV,QAAQ3E,MAG/B,EAEOm8E,CACX,CA9MY,CA8MVrmC,IAEEsmC,GAAK,EAMTD,GAAK9oF,UAAUkhD,aAAc,EAE7BvvB,GAAkBm3D,GAAM,CACpBloC,QAAS,EACT8B,aAAa,EACbnyD,MAAO,CACH43C,MAAOloB,GAEXlwB,SAAS,IAGb,UCzOe,SAASi6F,GAAgBplE,EAAOp1B,GAC3B,OAAZA,GACAo1B,EAAMxZ,KAAK5b,EAEnB,CCFe,SAASy6F,GAAeloC,EAAQv9B,EAAQluB,GACnD,IAAIvG,EAAUy0B,EAAOz0B,QACrB,GAAIoxB,GAAQpxB,GACR,OAAOA,EAGX,IAAIm6F,EAAkBnoC,EAAOmoC,gBAC7B,OAAIA,EACOA,EAAgB5zF,QAD3B,CAGJ,CCRe,SAAS6zF,GAAapoC,GAMjC,IALA,IAAI9uC,EAAO8uC,EAAO9uC,KACds0B,EAAS,GACTujC,EAAM,EACNp1B,EAAQ,EAEHjlC,EAAM,EAAGA,EAAMwC,EAAK7c,OAAQqa,IAAO,CACxC,IAAI+yC,EAAY2nB,GAAAA,QAAAA,UAA+BppB,EAAQtxC,GACnDtX,EAAQqqD,EAAUioB,YAAYtyE,MAG9BlH,GAASkH,KACTA,EAAQ+M,WAAW/M,IAGnB4d,GAAS5d,IACTqqD,EAAUzzD,SAA4D,IAAlDk6F,GAAeloC,EAAQyB,EAAUh/B,OAAQ/T,GAE7D+yC,EAAUrqD,MAAQ2jB,KAAKC,IAAI5jB,GAC3BouC,EAAOn8B,KAAKo4C,GAERA,EAAUzzD,UACV+6E,GAAOtnB,EAAUrqD,OAGP,IAAVA,GACAu8C,KAGJnO,EAAOn8B,KAAK,KAEpB,CAEA,MAAO,CACHgO,MAAO0xD,EACPvjC,OAAQA,EACRmO,MAAOA,EAEf,CC1Ce,SAAS00C,GAAiBv/D,EAAGjkB,GACxC,OAAIikB,GAAKjkB,EACEikB,EAAE9D,gBAAkBngB,EAAEmgB,cAG1B8D,IAAMjkB,CACjB,CCJe,SAASyjF,GAAmBtoC,EAAQuoC,GAI/C,IAHA,IAAIl2F,EAAS,GAETo3E,EAAc,GAAGrnE,OAAOmmF,GACnB75E,EAAM,EAAGA,EAAMsxC,EAAO3rD,OAAQqa,IAAO,CAC1C,IAAIimE,EAAgB30B,EAAOtxC,GACvByU,GAAQwxD,EAAcvnF,KAAMq8E,IAC5Bp3E,EAAOgX,KAAKsrE,EAEpB,CAEA,OAAOtiF,CACX,CCXe,SAASm2F,GAAazwE,EAAOoxD,EAAK3e,GAC7C,GAAY,OAAR2e,EACA,OAAOA,EAGX,IAAI7gE,EAAM,SAAWyP,EACjB3gB,EAAQ+xE,EAAI7gE,GAOhB,OALKlR,IACDA,EAAQ8yD,GAAUM,EAAahoC,GAAOzK,EAAPyK,CAAoB2mD,IACnDA,EAAI7gE,GAAOlR,GAGRA,CACX,CCbe,SAASqxF,GAAWrmB,EAAasmB,GAC5C,IAAIt7F,EAAOg1E,EAAYh1E,KACnBu7F,EAAeD,aAA0Bh3E,KAE7C,OAAStkB,GAAQu7F,GAAiBN,GAAiBj7F,EAAMwwB,EAC7D,CCTe,SAASgrE,GAAkB/lE,GACtC,OAAwB,IAAjBA,EAAMxuB,OAAewuB,EAAM,GAAKA,CAC3C,CCEA,IAAIgmE,GAAa,QAUjB,SAASvI,GAAStgC,EAAQ9vB,GACtB,IACIw5C,EADSN,GAAAA,QAAAA,UAA+BppB,EAAQ,KAAM9vB,GACjCw5C,YAEzB,IAAK,IAAI3xD,KAAS2xD,EACd,GAAIvpD,GAAoBupD,EAAY3xD,IAChC,OAAO,CAGnB,CAEA,SAAS+wE,GAASt8F,GACd,IAQIu8F,EAAeC,EARfxlE,EAAQh3B,EAAIg3B,MACZzX,EAAMvf,EAAIuf,IACV6c,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IACVjD,EAASh2B,EAAIg2B,OACbymE,EAAUz8F,EAAIy8F,QACdjpC,EAASxzD,EAAIwzD,OAGbtxC,EAAM8U,EACV,GAIQylE,EAHJv6E,GAAO3C,KAKHg9E,EAAgBzI,GAAStgC,GADzBgpC,EAAWxmE,EAAO9T,IACwBwhB,aAEzCtH,GAAOla,GAAOA,GAAO+W,IAAQsjE,GAEtC,GAAIA,EACA,OAAOC,CAEf,CAEe,SAASE,GAAuBlpC,EAAQrO,EAAOgC,EAAOnxB,EAAQymE,GACzE,IAAIrgE,EAAM+oB,EAAM/oB,IACZnD,EAAMksB,EAAMlsB,IACZ0jE,EAAcvgE,EAAM,GAAKA,EAAM+qB,EAC/By1C,EAAc3jE,EAAM,EAAIkuB,EAE5B,GAAIw1C,GAAeC,EAAa,CAC5B,IACI9mD,EAAUC,EAUNymD,EAXJ5P,EApDZ,SAA6Bp5B,GACzB,OAAIA,EAAOo5B,cACAp5B,EAAOo5B,cAGXyP,GAAWxtE,KAAK2kC,EAAO5yD,OAAS4yD,EAAOqyB,MAAQ9wC,GAAOirC,EACjE,CA8C4ByM,CAAoBj5B,GAExC,GAAIo5B,IAAkB5M,GACd2c,IACA7mD,EAAW9f,EAAOoG,EAAM,IAGxBwgE,IACA7mD,EAAW/f,EAAOiD,EAAM,SAIxB0jE,IAcI7mD,EAZYg+C,GAAStgC,GADzBgpC,EAAWxmE,EAAOoG,EAAM,IACkBsH,MAY3B84D,EAVAF,GAAS,CAChBtlE,MAAOoF,EACP7c,KAAM,EACN6c,IAAK,EACLnD,IAAKkuB,EAAQ,EACbnxB,OAAQA,EACRymE,QAASA,EACTjpC,OAAQA,KAOhBopC,IAcI7mD,EAZY+9C,GAAStgC,GADzBgpC,EAAWxmE,EAAOiD,EAAM,IACkByK,MAY3B84D,EAVAF,GAAS,CAChBtlE,MAAOiC,EACP1Z,IAAK,EACL6c,IAAK,EACLnD,IAAKkuB,EAAQ,EACbnxB,OAAQA,EACRymE,QAASA,EACTjpC,OAAQA,KAQpB1d,IACA0d,EAAOk8B,oBAAsB55C,GAG7BC,IACAyd,EAAOqpC,oBAAsB9mD,EAErC,CACJ,CCzGA,IAAI+mD,GAAgB,SAAU9rC,GAC1B,SAAS8rC,EAAatpC,EAAQzwC,EAAS0uC,GACnCT,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKuyD,WAAWxM,EAAQzwC,GACxBtV,KAAK+lD,OAASA,EACd/lD,KAAKsvF,aACLtvF,KAAK4sF,OAAS,GACd5sF,KAAKsV,QAAQi6E,OAASvvF,KAAKsV,QAAQi6E,QAAU,CAAC,EAC9CvvF,KAAKsV,QAAQi6E,OAAOruC,MAAQ,GAC5BlhD,KAAKs1D,KAAO,GACZt1D,KAAKwvF,WAAa,GAClBxvF,KAAKgkD,aAAeA,EACpBhkD,KAAKyvF,gBAAkBn6E,EAEvBtV,KAAK0vF,cACL1vF,KAAK5G,SACL4G,KAAK2vF,kBACT,CA86BA,OA56BKpsC,IAAe8rC,EAAatkF,UAAYw4C,GAC7C8rC,EAAarrF,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACrEqrF,EAAarrF,UAAUqH,YAAcgkF,EAErCA,EAAarrF,UAAUuuD,WAAa,WAAyB,EAE7D88B,EAAarrF,UAAUsrF,WAAa,WAGhC,IAFA,IAAIvpC,EAAS/lD,KAAK+lD,OAETr6C,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAC/Bq6C,EAAOr6C,GAAGpR,MAAQoR,CAE1B,EAEA2jF,EAAarrF,UAAU0rF,YAAc,WAejC,IAdA,IAEI5hC,EAAe9tD,KAAKsV,QAAQ/gB,OAAS,CAAC,EACtCq7F,EAAe5vF,KAAKsV,QAAQs6E,aAC5BC,EAAc7vF,KAAKsV,QAAQw6E,OAAS,GACpCC,EAAcjvE,KAAK0K,IAAIqkE,EAAYz1F,OAAQ,GAC3C01F,EAAQ,GAERhZ,EAAW/vD,GAAW,CACtBxyB,MAAO,CACHi6B,MAAOs/B,EAAat/B,QAEzBohE,GAEMlkF,EAAI,EAAGA,EAAIqkF,EAAarkF,IAAK,CAClC,IAAI4J,EAAUyR,GAAW,CAAC,EAAG+vD,EAAU+Y,EAAYnkF,IAC/CzV,GAASqf,EAAQ/gB,SACjB+gB,EAAQ/gB,MAAQwyB,GAAW,CAAE7tB,KAAMoc,EAAQ/gB,OAASuiF,EAASviF,QAGjE,IAAIy7F,EAAc,IAAIlD,GAAKx3E,GAC3B06E,EAAYjC,UAAYriF,EAExBokF,EAAM1gF,KAAK4gF,GAvBFhwF,KAwBF6rB,OAAOmkE,EAClB,CAEAhwF,KAAK8vF,MAAQA,CACjB,EAEAT,EAAarrF,UAAUisF,iBAAmB,SAA2BllD,GACjE,OAAOA,EAAKz1B,QAAQk2E,SACxB,EAEA6D,EAAarrF,UAAU2rF,iBAAmB,SAA2BG,GACjE,IAAItuD,EAASxhC,UACE,IAAV8vF,IAAmBA,EAAQ9vF,KAAK8vF,OAErC,IAAK,IAAIpkF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAE9B,IADA,IAAI2pD,EAAOy6B,EAAMpkF,GACRmhF,EAAI,EAAGA,EAAIx3B,EAAKC,KAAKl7D,OAAQyyF,IAAK,CACvC,IAAI9hD,EAAOsqB,EAAKC,KAAKu3B,GACjBv3E,EAAUksB,EAAOyuD,iBAAiBllD,GACtC,GAAIz1B,GAAWA,EAAQvhB,QAAS,CAC5B,IAAIm8F,EAAmB,IAAIlE,GAAUxqD,EAAOwiB,aAAcjZ,EAAMz1B,GAEhEksB,EAAOguD,WAAWpgF,KAAK8gF,GACvB76B,EAAKvzD,QAAQ+pB,OAAOqkE,EACxB,CACJ,CAER,EAEAb,EAAarrF,UAAUmsF,iBAAmB,SAA2B96B,GAIjE,IAHA,IAAIm6B,EAAaxvF,KAAKwvF,WAClBl6B,EAAOD,EAAKC,KAEP5pD,EAAI8jF,EAAWp1F,OAAS,EAAGsR,GAAK,EAAGA,IACxC,IAAK,IAAImhF,EAAI,EAAGA,EAAIv3B,EAAKl7D,OAAQyyF,IAC7B,GAAI2C,EAAW9jF,GAAGq/B,OAASuqB,EAAKu3B,GAAI,CAChC2C,EAAWppD,OAAO16B,EAAG,GACrB,KACJ,CAGZ,EAEA2jF,EAAarrF,UAAUosF,eAAiB,WAEpC,IADA,IAAIZ,EAAaxvF,KAAKwvF,WACb/6E,EAAM,EAAGA,EAAM+6E,EAAWp1F,OAAQqa,IACvC+6E,EAAW/6E,GAAKte,MAExB,EAEAk5F,EAAarrF,UAAUqsF,SAAW,SAAmB1/E,GAIjD,IAHA,IACI2/E,EADAR,EAAQ9vF,KAAK8vF,MAGRpkF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAC9B,GAAIokF,EAAMpkF,GAAG4J,QAAQ3E,OAASA,EAAM,CAChC2/E,EAAeR,EAAMpkF,GACrB,KACJ,CAGJ,OAAO4kF,GAAgBR,EAAM,EACjC,EAEAT,EAAarrF,UAAUusF,cAAgB,SAAwBrrD,GAI3D,IAHA,IACIorD,EADAR,EAAQ9vF,KAAK8vF,MAGRpkF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAC9B,GAAIokF,EAAMpkF,GAAGukB,IAAI4Z,cAAc3E,GAAQ,CACnCorD,EAAeR,EAAMpkF,GACrB,KACJ,CAGJ,OAAO4kF,CACX,EAEAjB,EAAarrF,UAAUgpF,WAAa,SAAqBjiD,GAC1C/qC,KAAKqwF,SAAStlD,EAAKz1B,QAAQ+/C,MAEjC23B,WAAWjiD,GAChB/qC,KAAKs1D,KAAKlmD,KAAK27B,GACfA,EAAKmqB,SAAWl1D,IACpB,EAEAqvF,EAAarrF,UAAUopF,WAAa,SAAqBoD,GAKrD,IAJA,IAEIC,EAAe,GAEV/kF,EAAI,EAAGA,EAAI1L,KAAKs1D,KAAKl7D,OAAQsR,IAAK,CACvC,IAAIq/B,EALK/qC,KAKSs1D,KAAK5pD,GACnB8kF,IAAiBzlD,EACjB0lD,EAAarhF,KAAK27B,GAElBA,EAAKuY,SAEb,CAEAtjD,KAAKs1D,KAAOm7B,CAChB,EAEApB,EAAarrF,UAAUkpF,YAAc,SAAsBn8B,EAAOsE,GAC9Dr1D,KAAK4sF,OAAOx9E,KAAK2hD,GACbsE,EACAA,EAAK63B,YAAYn8B,GAEjB/wD,KAAK6rB,OAAOklC,EAEpB,EAEAs+B,EAAarrF,UAAUqpF,YAAc,SAAsBqD,GAKvD,IAJA,IAEIC,EAAiB,GAEZjlF,EAAI,EAAGA,EAAI1L,KAAK4sF,OAAOxyF,OAAQsR,IAAK,CACzC,IAAIqlD,EALK/wD,KAKU4sF,OAAOlhF,GACtBqlD,IAAU2/B,EACVC,EAAevhF,KAAK2hD,GAEpBA,EAAMzN,SAEd,CAEAtjD,KAAK4sF,OAAS+D,CAClB,EAEAtB,EAAarrF,UAAU4sF,YAAc,SAAsB7qC,GAQvD,IAPA,IAAIrM,EAAQqM,EAAO3rD,OACfm1F,EAASvvF,KAAKsV,QAAQi6E,OACtBv9B,EAASu9B,EAAOv9B,QAAU,CAAC,EAC3B6+B,EAAgBtB,EAAOsB,eAAiB,CAAC,EACzCC,EAAsBD,EAAc7+B,QAAU,CAAC,EAC/C/6C,EAAO,GAEFvL,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAIgvE,EAAgB30B,EAAOr6C,GACvBqlF,GAA0C,IAA1BrW,EAAc3mF,QAClC,IAAsC,IAAlC2mF,EAAcsW,gBAAlB,CAIA,IAAI93F,EAAOwhF,EAAc/pE,KACrBklD,EAAgBk7B,EAAgB3oE,GAAY4pC,GAAU5pC,GAAY0oE,IAAwB1oE,GAAY4pC,GACtG6D,IACA38D,EAAO28D,EAAc,CACjB38D,KAAMmtF,GAASntF,GAAQA,EAAO,GAC9B6sD,OAAQ20B,KAIhB,IAAI5D,EAAW4D,EAAcN,UACzB5rD,EAAQksD,EAAclsD,MACtBpI,GAAWoI,IAAUsoD,IACrBtoD,EAAQsoD,EAAStoD,OAGrB,IAAIyiE,OAAoB,EAASC,OAAe,EAC5CH,GACAE,EAAmB,CAAC,EACpBC,EAAc1iE,IAEdyiE,EAAmB,CACfziE,MAAOsiE,EAAoBtiE,MAC3BgH,KAAMs7D,EAAoBt7D,MAE9B07D,EAAcL,EAAcxU,QAAQ7tD,OAGpC63D,GAASntF,IAAkB,KAATA,GAClB+d,EAAK7H,KAAK,CACNlW,KAAMA,EACN84D,OAAQi/B,EACRC,YAAaA,EACbnrC,OAAQ20B,EACRr0E,OAAQ0qF,GAnChB,CAsCJ,CAEAllE,GAAO0jE,EAAOruC,MAAOjqC,EACzB,EAEAo4E,EAAarrF,UAAUmtF,UAAY,SAAoBrB,GAInD,IAHA,IAAIsB,EAAQ,GACRC,EAAQ,GAEHC,EAAS,EAAGA,EAASxB,EAAM11F,OAAQk3F,IAExC,IADA,IAAIC,EAAWzB,EAAMwB,GAAQh8B,KACpBk8B,EAAS,EAAGA,EAASD,EAASn3F,OAAQo3F,IAAU,CACrD,IAAIzmD,EAAOwmD,EAASC,GAChBzmD,EAAKz1B,QAAQq1C,SACb0mC,EAAMjiF,KAAK27B,GAEXqmD,EAAMhiF,KAAK27B,EAEnB,CAGJ,MAAO,CAAEhlB,EAAGqrE,EAAOprE,EAAGqrE,EAAOI,IAAKL,EAAMjpF,OAAOkpF,GACnD,EAEAhC,EAAarrF,UAAU0tF,kBAAoB,WAMvC,IALA,IAEI3rC,EAAS/lD,KAAK+lD,OACd4rC,EAAe,CAAC,EAEXjmF,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAAK,CACpC,IAAIgvE,EAAgB30B,EAAOr6C,GACvB2pD,EAPKr1D,KAOS4xF,eAAelX,GAE7BiX,EAAat8B,GACbs8B,EAAat8B,GAAMjmD,KAAKsrE,GAExBiX,EAAat8B,GAAQ,CAAEqlB,EAE/B,CAEA,OAAOiX,CACX,EAEAtC,EAAarrF,UAAU6tF,oBAAsB,SAA8B9rC,GAGvE,IAFA,IAAI3tD,EAAS,GAEJsT,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAAK,CACpC,IAAIgvE,EAAgB30B,EAAOr6C,IACG,IAA1BgvE,EAAc3mF,SACdqE,EAAOgX,KAAKsrE,EAEpB,CAEA,OAAOtiF,CACX,EAEAi3F,EAAarrF,UAAUy/C,OAAS,SAAiB9Y,GAC7C,IAAIr1B,EAAUtV,KAAKsV,QAAQ4/C,SACvB46B,EAAQ9vF,KAAK8vF,MACbx0F,EAASksB,GAAWlS,EAAQha,QAEhC0E,KAAKiwB,IAAM0a,EAAU9jB,QAAQykB,MAAMhwC,GACnC0E,KAAK8xF,cAEL9xF,KAAK+xF,eACL/xF,KAAKgyF,WAAWlC,GAChB9vF,KAAKiyF,aAAanC,EACtB,EAEAT,EAAarrF,UAAUkuF,OAAS,SAAiBpC,GAC7C,IAEIqC,EAAa,GAAGhqF,OAAO2nF,GAC3B9vF,KAAKsvF,aAGL,IAAI1P,EAAO5/E,KAAK2jD,UACZi8B,GACAA,EAAKp1B,iBAGT,IAAK,IAAI9+C,EAAI,EAAGA,EAAIymF,EAAW/3F,OAAQsR,IAX1B1L,KAYFmwF,iBAAiBgC,EAAWzmF,IACnCymF,EAAWzmF,GAAGyhF,QAGlBntF,KAAK5G,OAAO+4F,GACZnyF,KAAK+xF,eACL/xF,KAAKgyF,WAAWhyF,KAAK8vF,OACrB9vF,KAAKiyF,aAAaE,GAElBnyF,KAAK2vF,iBAAiBwC,GAEtB,IAAK,IAAI7rB,EAAM,EAAGA,EAAM6rB,EAAW/3F,OAAQksE,IACvC6rB,EAAW7rB,GAAKmnB,SAExB,EAEA4B,EAAarrF,UAAUulE,mBAAqB,SAA6Bx+B,EAAMqnD,GAQ3E,IAPA,IAAI98E,EAAUy1B,EAAKz1B,QACf+8E,EAAiB,GAAGlqF,OACpBmN,EAAQi0D,oBAAsBj0D,EAAQ0kD,mBAEtCs4B,EAAcF,EAAah4F,OAASi4F,EAAej4F,OACnDs1B,EAAe2iE,EAAe,IAAM,EAE/B3mF,EAAI,EAAGA,EAAI4mF,EAAa5mF,IAC7B2mF,EAAejjF,KAAKsgB,GAGxB,OAAO2iE,CACX,EAEAhD,EAAarrF,UAAUuuF,YAAc,SAAsBxnD,EAAMynD,EAAYrR,EAAesR,GACxF,IAAI16B,EAAOhtB,EAAK0qB,QAAQ0rB,EAAeA,GAAe,GAClDuR,EAAW3nD,EAAKz1B,QAAQ44C,QAAU,EAAI,EACtCu8B,EAAa+H,EAAW/8B,QAAQg9B,EAAqBA,GAAqB,GAC1EE,EAAaH,EAAWl9E,QAAQ44C,QAAU,EAAI,EAC9C0kC,EAAU7nD,EAAK9a,IAAItK,UACnB8kE,EAAW1lE,EAAI4tE,GAAc56B,EAAKhzC,EAAI2tE,GACtCjI,EAAWzlE,EAAI2tE,GAAc56B,EAAK/yC,EAAI0tE,IAGtC3nD,EAAKsqB,OAASm9B,EAAWn9B,MACzBu9B,EAAQjtE,UAAU,EAAGolB,EAAKsqB,KAAKplC,IAAIsa,GAAKioD,EAAWn9B,KAAKplC,IAAIsa,IAGhEQ,EAAK0Y,OAAOmvC,EAChB,EAEAvD,EAAarrF,UAAU6uF,UAAY,SAAoBzB,EAAOC,GAY1D,IAXA,IAAI7vD,EAASxhC,KAET8yF,EAAU1B,EAAM,GAChB2B,EAAU1B,EAAM,GAChB2B,EAAmBhzF,KAAKupE,mBAAmBupB,EAASzB,GACpD4B,EAAmBjzF,KAAKupE,mBAAmBwpB,EAAS3B,GACpD8B,EAAc,CAAC,EACfC,EAAe,CAAC,EAChBC,EAAa,CAAC,EACdC,EAAgB,CAAC,EAEZ3nF,EAAI,EAAGA,EAAI2lF,EAAMj3F,OAAQsR,IAAK,CACnC,IAAIq/B,EAAOsmD,EAAM3lF,GACb2pD,EAAOtqB,EAAKsqB,KACZi+B,EAASj+B,EAAK/+D,GACdvC,GAAmC,IAAzBg3C,EAAKz1B,QAAQvhB,QAGvB2xB,EAAS6tE,GAAWnC,EAAO/7B,IAASy9B,EACpCU,EAAkBR,EAElBttE,IAAWotE,IACXU,EAAkBhyD,EAAO+nC,mBAAmB7jD,EAAQ2rE,IAGxD7vD,EAAO+wD,YAAYxnD,EAAMrlB,EAAQutE,EAAiBvnF,GAAI8nF,EAAgB9nF,IAElEq/B,EAAKz1B,QAAQm+E,WAIbzyE,GAAM+pB,EAAKuoB,UAAUhpB,MAAQtpB,GAAM0E,EAAO4tC,UAAUhpB,MAEhD4oD,EAAYI,IACZvoD,EAAK0Y,OAAO1Y,EAAK9a,IACZ+a,QAAQkoD,EAAYI,GAAQrjE,IAAKhM,GACjC0B,WAAWolB,EAAKz1B,QAAQha,OAAQ,IAIrCvH,IACAm/F,EAAYI,GAAUvoD,IAI1B/pB,GAAM+pB,EAAKuoB,UAAU9oB,MAAQxpB,GAAM0E,EAAO4tC,UAAU9oB,MAE/CO,EAAK2oD,YACN3oD,EAAKz1B,QAAQ08C,OAAOuB,QAAUxoB,EAAKz1B,QAAQ08C,OAAOuB,OAClDxoB,EAAK2oD,WAAY,GAGrBlyD,EAAO+wD,YAAYxnD,EAAMrlB,EAAQutE,EAAiBvnF,GAAI8nF,EAAgB9nF,IAGlEynF,EAAaG,IACbvoD,EAAK0Y,OAAO1Y,EAAK9a,IACZ+a,QAAQmoD,EAAaG,GAAQrjE,IAAKzL,GAClCmB,UAAUolB,EAAKz1B,QAAQha,OAAQ,IAIpCvH,IACAo/F,EAAaG,GAAUvoD,IAIrB,IAANr/B,GAAWqnF,EAAQ19B,OAAStqB,EAAKsqB,OACjCtqB,EAAKC,QAAQ+nD,GACbhoD,EAAK0Y,OAAO1Y,EAAK9a,MAEzB,CAEA,IAAK,IAAIq2C,EAAM,EAAGA,EAAM8qB,EAAMh3F,OAAQksE,IAAO,CACzC,IAAIunB,EAASuD,EAAM9qB,GACfqtB,EAAS9F,EAAOx4B,KAChBu+B,EAAWD,EAAOr9F,GAClBu9F,GAAuC,IAA3BhG,EAAOv4E,QAAQvhB,QAG3B+/F,EAAWP,GAAWlC,EAAOsC,IAAWZ,EACxCgB,EAAoBd,EACpBa,IAAaf,IACbgB,EAAoBvyD,EAAO+nC,mBAAmBuqB,EAAU1C,IAG5D5vD,EAAO+wD,YAAY1E,EAAQiG,EAAUd,EAAiB1sB,GAAMytB,EAAkBztB,IAE1EunB,EAAOv4E,QAAQm+E,WAIfzyE,GAAM6sE,EAAOv6B,UAAU/oB,MAAQvpB,GAAM8yE,EAASxgC,UAAU/oB,MAEnDsjD,EAAO6F,YACR7F,EAAOv4E,QAAQ08C,OAAOuB,QAAUs6B,EAAOv4E,QAAQ08C,OAAOuB,OACtDs6B,EAAO6F,WAAY,GAEvBlyD,EAAO+wD,YAAY1E,EAAQiG,EAAUd,EAAiB1sB,GAAMytB,EAAkBztB,IAG1E8sB,EAAWQ,IACX/F,EAAOpqC,OAAOoqC,EAAO59D,IAChB+a,QAAQooD,EAAWQ,GAAU3jE,IAAKtL,GAClCgB,UAAU,GAAIkoE,EAAOv4E,QAAQha,SAIlCu4F,IACAT,EAAWQ,GAAY/F,IAI3B7sE,GAAM6sE,EAAOv6B,UAAU7oB,G9PxeV,K8PwemCzpB,GAAM8yE,EAASxgC,UAAU7oB,G9Pxe5D,K8P0eT4oD,EAAcO,IACd/F,EAAOpqC,OAAOoqC,EAAO59D,IAChB+a,QAAQqoD,EAAcO,GAAU3jE,IAAK1M,GACrCoC,UAAU,EAAGkoE,EAAOv4E,QAAQha,SAIjCu4F,IACAR,EAAcO,GAAY/F,IAItB,IAARvnB,IACAunB,EAAO7iD,QAAQ8nD,GACfjF,EAAOpqC,OAAOoqC,EAAO59D,MAE7B,CACJ,EAEAo/D,EAAarrF,UAAUgwF,gBAAkB,SAA0BlE,GAK/D,IAJA,IAAIx6B,EAAOt1D,KAAKmxF,UAAUrB,GAAO2B,IAC7BmB,EAAUqB,GAAa3+B,GACvB4+B,EAAY,EAEPxoF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAAK,CACnC,IAAIskF,EAAcF,EAAMpkF,GAEpBskF,EAAY16B,KAAKl7D,OAAS,IAC1B85F,EAAYpzE,KAAK0K,IACb0oE,EACAtB,EAAQp+F,QAAUw7F,EAAY/oC,WAAWzyD,SAGrD,CAEA,GAAkB,IAAd0/F,EACA,IAAK,IAAI5tB,EAAM,EAAGA,EAAMhR,EAAKl7D,OAAQksE,IAAO,CACxC,IAAI+lB,EAAc/2B,EAAKgR,GAElB+lB,EAAY/2E,QAAQq1C,UACrB0hC,EAAY5oC,OAAO4oC,EAAYp8D,IAAIib,OAAOgpD,EAAW,GAE7D,CAER,EAEA7E,EAAarrF,UAAUmwF,iBAAmB,SAA2BrE,GAGjE,IAFA,IAAIsE,EAEK1oF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAAK,CACnC,IAAIskF,EAAcF,EAAMpkF,GACpB4pD,EAAO06B,EAAY16B,KACnB++B,EAAYvzE,KAAK0K,IAAI,EAAGyoE,GAAa3+B,GAAM7gE,SAAWu7F,EAAY/oC,WAAWxyD,UAEjF,GAAkB,IAAd4/F,EAAiB,CACjB,IAAK,IAAIxH,EAAI,EAAGA,EAAIv3B,EAAKl7D,OAAQyyF,IAAK,CAClC,IAAIR,EAAc/2B,EAAKu3B,GAEnBR,EAAY/2E,QAAQq1C,UACpB0hC,EAAY5oC,OACR4oC,EAAYp8D,IAAIib,OAAO,EAAGmpD,GAGtC,CACAD,GAAW,CACf,CACJ,CAEA,OAAOA,CACX,EAEA/E,EAAarrF,UAAUswF,QAAU,SAAkBxE,GAI/C,IAHA,IAAIx6B,EAAOt1D,KAAKmxF,UAAUrB,GAAO2B,IAC7B8C,EAAU,EAEL7oF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAAK,CACnC,IAAIskF,EAAcF,EAAMpkF,GACpB6lF,EAAWvB,EAAY16B,KACvBk/B,EAAUxE,EAAY/oC,WAE1B,GAAIsqC,EAASn3F,OAAS,EAAG,CACrB,IAAIw4F,EAAUqB,GAAa1C,GAEvBkD,EAAU3zE,KAAK0K,IAAIgpE,EAAQjqD,GAAKqoD,EAAQroD,GAAIiqD,EAAQ/pD,GAAKmoD,EAAQnoD,IAGrE8pD,EAAUzzE,KAAK0K,IAAI+oE,EAASC,EAAQlqD,GAAKsoD,EAAQtoD,IAGjD,IAAK,IAAIuiD,EAAI,EAAGA,EAAI0E,EAASn3F,OAAQyyF,IAAK,CACtC,IAAIR,EAAckF,EAAS1E,GAE3BR,EAAY5oC,OACR4oC,EAAYp8D,IAAItK,UAAU,EAAG8uE,GAErC,CACJ,CACJ,CAEA,IAAK,IAAInuB,EAAM,EAAGA,EAAMhR,EAAKl7D,OAAQksE,IAAO,CACxC,IAAIouB,EAAgBp/B,EAAKgR,GAEzBouB,EAAcjxC,OACVixC,EAAczkE,IAAItK,UAAU4uE,EAAS,GAE7C,CACJ,EAEAlF,EAAarrF,UAAUguF,WAAa,SAAqBlC,GAKrD,IAJA,IAEIx6B,EAAOt1D,KAAKmxF,UAAUrB,GAEjBpkF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAJrB1L,KAKF20F,eAAe7E,EAAMpkF,IAG5B4pD,EAAKvvC,EAAE3rB,OAAS,GAAKk7D,EAAKtvC,EAAE5rB,OAAS,IACrC4F,KAAK6yF,UAAUv9B,EAAKvvC,EAAGuvC,EAAKtvC,GAC5BhmB,KAAKg0F,gBAAgBlE,GAErB9vF,KAAK40F,qBAAqBt/B,GAE1Bt1D,KAAK6yF,UAAUv9B,EAAKvvC,EAAGuvC,EAAKtvC,GACxBhmB,KAAKg0F,gBAAgBlE,IACrB9vF,KAAK6yF,UAAUv9B,EAAKvvC,EAAGuvC,EAAKtvC,GAGhChmB,KAAKm0F,iBAAiBrE,GACtB9vF,KAAK6yF,UAAUv9B,EAAKvvC,EAAGuvC,EAAKtvC,GAExBhmB,KAAKm0F,iBAAiBrE,IACtB9vF,KAAK6yF,UAAUv9B,EAAKvvC,EAAGuvC,EAAKtvC,GAGhChmB,KAAKs0F,QAAQxE,GAErB,EAEAT,EAAarrF,UAAU4wF,qBAAuB,SAA+BC,GAQzE,IAPA,IAKIC,EAFAhF,EADM9vF,KACM8vF,MACZx6B,EAAOy/B,GAAYjF,GAGdr7E,EAAM,EAAGA,EAAM6gD,EAAKl7D,OAAQqa,IAAO,CAC7B6gD,EAAK7gD,GACPy+C,qBACL4hC,GAAU,EAElB,CAEA,GAAIA,EAAS,CACT,IAAK,IAAIh9B,EAAQ,EAAGA,EAAQg4B,EAAM11F,OAAQ09D,IAfjC93D,KAgBE20F,eAAe7E,EAAMh4B,IAG5B+8B,EAAY9uE,EAAE3rB,OAAS,GAAKy6F,EAAY7uE,EAAE5rB,OAAS,IACnD4F,KAAK6yF,UAAUgC,EAAY9uE,EAAG8uE,EAAY7uE,GAC1ChmB,KAAKg0F,gBAAgBlE,GAE7B,CACJ,EAEAT,EAAarrF,UAAU2wF,eAAiB,SAAyBt/B,GAC7D,IAAIC,EAAOD,EAAKC,KACZl7D,EAASk7D,EAAKl7D,OAElB,GAAIA,EAAS,EACT,IAAK,IAAIsR,EAAI,EAAGA,EAAItR,EAAQsR,IACxB4pD,EAAK5pD,GAAG+3C,OAAO4R,EAAKpO,WAGhC,EAEAooC,EAAarrF,UAAUiuF,aAAe,SAAuBnC,GAKzD,IAJA,IAAIlD,EAAS5sF,KAAK4sF,OACdlzC,EAAQkzC,EAAOxyF,OACf61B,EAAMjwB,KAAKiwB,IAENvkB,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAIspF,EAAYpI,EAAOlhF,GAAG2pD,KACrB2/B,IAAa9rE,GAAQ8rE,EAAWlF,IACjClD,EAAOlhF,GAAG+3C,OAAOxzB,EAEzB,CACJ,EAEAo/D,EAAarrF,UAAU8tF,YAAc,WAUjC,IATA,IACI7hE,EADMjwB,KACIiwB,IACV6/D,EAFM9vF,KAEM8vF,MACZC,EAAcD,EAAM11F,OACpB66F,EAAkBhlE,EAAIx7B,SAEtBygG,EAAkB,EAClBvtE,EAAMsI,EAAIsa,GAEL7+B,EAAI,EAAGA,EAAIqkF,EAAarkF,IAAK,CAClC,IAAIskF,EAAcF,EAAMpkF,GACpBjX,EAASu7F,EAAY16E,QAAQ7gB,OAIjC,GAFAu7F,EAAY16E,QAAQ9gB,MAAQy7B,EAAIz7B,QAE3Bw7F,EAAY16E,QAAQ7gB,OAElB,CACH,GAAIA,EAAO4U,SAAW5U,EAAO4U,QAAQ,KAAM,CACvC,IAAI8rF,EAAWnqE,SAASv2B,EAAQ,IAAM,IACtCu7F,EAAY16E,QAAQ7gB,OAAS0gG,EAAWllE,EAAIx7B,QAChD,CAEAu7F,EAAYvsC,OAAOxzB,EAAIpJ,SAEvBouE,GAAmBjF,EAAY16E,QAAQ7gB,MAC3C,MAVIygG,GAWR,CAEA,IAAK,IAAI5uB,EAAM,EAAGA,EAAMypB,EAAazpB,IAAO,CACxC,IAAI8uB,EAAgBtF,EAAMxpB,GAErB8uB,EAAc9/E,QAAQ7gB,SACvB2gG,EAAc9/E,QAAQ7gB,OAASwgG,EAAkBC,EAEzD,CAEA,IAAK,IAAIG,EAAM,EAAGA,EAAMtF,EAAasF,IAAO,CACxC,IAAIC,EAAgBxF,EAAMuF,GACtBb,EAAUvkE,EACTpJ,QACA6gB,KAAKzX,EAAIqa,GAAI3iB,GAElB2tE,EAAc7xC,OAAO+wC,GAGrB7sE,GAAO2tE,EAAchgF,QAAQ7gB,MACjC,CACJ,EAEA46F,EAAarrF,UAAUuxF,cAAgB,WAKnC,IAJA,IAEItlE,EAFAqlC,EAAOt1D,KAAKs1D,KACZkgC,EAAYlgC,EAAKl7D,OAGZsR,EAAI,EAAGA,EAAI8pF,EAAW9pF,IAG3B,IAFA,IAAI+pF,EAAQngC,EAAK5pD,GAERmhF,EAAI,EAAGA,EAAI2I,EAAW3I,IAAK,CAChC,IAAI6I,EAAQpgC,EAAKu3B,GAEjB,GAAI4I,EAAMngF,QAAQq1C,WAAa+qC,EAAMpgF,QAAQq1C,SAAU,CACnD,IAAI2I,EAAUmiC,EAAMniC,UAAUzsC,QAAQ6jB,KAAKgrD,EAAMpiC,WAK7CrjC,EAHCA,EAGKA,EAAIya,KAAK4oB,GAFTA,CAId,CACJ,CAGJ,OAAOrjC,GAAOjwB,KAAKiwB,GACvB,EAEAo/D,EAAarrF,UAAU2xF,YAAc,WAIjC,IAHA,IAAI7F,EAAQ9vF,KAAK8vF,MACbpmC,EAAQ,GAEHj1C,EAAM,EAAGA,EAAMq7E,EAAM11F,OAAQqa,IAClCi1C,EAAMt6C,KAAK0gF,EAAMr7E,GAAKg4E,aAG1B,OAAO/iC,CACX,EAEA2lC,EAAarrF,UAAU4xF,mBAAqB,SAA6BC,GAErE,IADA,IAAInsC,EAAQ1pD,KAAK21F,cACRlhF,EAAM,EAAGA,EAAMi1C,EAAMtvD,OAAQqa,IAClCohF,EAAUx4C,MAAMjuC,KAAK+wC,GAAAA,SAAmBuJ,EAAMj1C,GAAKu3B,UAE3D,EAEAqjD,EAAarrF,UAAU8xF,wBAA0B,SAAkC5wD,GAE/E,IADA,IAAIwkB,EAAQ1pD,KAAK21F,cACRlhF,EAAM,EAAGA,EAAMi1C,EAAMtvD,OAAQqa,IAClC,GAAIi1C,EAAMj1C,GAAKo1B,cAAc3E,GACzB,OAAO,CAGnB,EAEAmqD,EAAarrF,UAAUogD,aAAe,WAClCb,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAEzC,IAuNewuB,EAvNXlZ,EAAUtV,KAAKsV,QAAQ4/C,SACvB1f,EAAUlgC,EAAQkgC,QAClB2R,EAAa7xC,EAAQ6xC,WACrBN,EAASvxC,EAAQuxC,YAAwB,IAAXA,IAAoBA,EAAS,CAAC,GAqNnD,MADEr4B,EAnNG24B,IAoNW,OAAV34B,GAA4B,SAAVA,GAA8B,gBAAVA,GAA4BrJ,GAAQqJ,KAnNzF24B,EAAatiC,EACb2wB,EAAU,GAGd,IAAIugD,EAAK/1F,KAAK2uE,UAAY,IAAIxuB,GAAe,CACzCpK,KAAM,CACFvnB,MAAO24B,EACP3R,QAASA,GAEbjwB,OAAQ,CACJiJ,MAAOq4B,EAAOryD,MAAQqyD,EAAOr4B,MAAQ,GACrCh6B,MAAOqyD,EAAOryD,MACd6yD,SAAUR,EAAOQ,UAErBzC,QAAS,IAGb5kD,KAAK41F,mBAAmBG,GAExB/1F,KAAK2kD,aAAaoxC,EACtB,EAEA1G,EAAarrF,UAAUgyF,sBAAwB,SAAgCr2B,GAC3E,IAAIitB,EAAS5sF,KAAK4sF,OACdx0F,EAAS,GAEb,GAAsB,OAAlBunE,EACA,IAAK,IAAIj0D,EAAI,EAAGA,EAAIkhF,EAAOxyF,OAAQsR,IAAK,CAEpC,GAAgC,eADpBkhF,EAAOlhF,GACT2pD,KAAK//C,QAAQ3E,KAAvB,CAIA,IAAI46B,EAASqhD,EAAOlhF,GAAG4rE,eAAe3X,GACtC,GAAIp0B,GAAUA,EAAOnxC,OACjB,IAAK,IAAIyyF,EAAI,EAAGA,EAAIthD,EAAOnxC,OAAQyyF,IAAK,CACpC,IAAI3nD,EAAQqG,EAAOshD,GACf3nD,GAAS/f,GAAQ+f,EAAM/nC,QAA0B,OAAhB+nC,EAAM/nC,OACvC/E,EAAOgX,KAAK81B,EAEpB,CATJ,CAWJ,CAGJ,OAAO9sC,CACX,EAEAi3F,EAAarrF,UAAUiyF,oBAAsB,SAA8BC,GACvE,OAAOl2F,KAAKm2F,cAAa,SAASjxD,GAC9B,OAAOA,EAAM6gB,OAAOzrD,QAAU47F,CAClC,GACJ,EAEA7G,EAAarrF,UAAUoyF,mBAAqB,SAA6BzlF,GACrE,OAAO3Q,KAAKm2F,cAAa,SAASjxD,GAC9B,OAAOA,EAAM6gB,OAAOp1C,OAASA,CACjC,GACJ,EAEA0+E,EAAarrF,UAAUmyF,aAAe,SAAuBjwF,GAIzD,IAHA,IAAI0mF,EAAS5sF,KAAK4sF,OACdx0F,EAAS,GAEJsT,EAAI,EAAGA,EAAIkhF,EAAOxyF,OAAQsR,IAG/B,IAFA,IACI6/B,EADQqhD,EAAOlhF,GACA6/B,OACVshD,EAAI,EAAGA,EAAIthD,EAAOnxC,OAAQyyF,IAAK,CACpC,IAAI3nD,EAAQqG,EAAOshD,GACf3nD,IAA2B,IAAlBA,EAAMnxC,SAAqBmS,EAASg/B,IAC7C9sC,EAAOgX,KAAK81B,EAEpB,CAGJ,OAAO9sC,CACX,EAEAi3F,EAAarrF,UAAUqyF,UAAY,SAAoBnwF,GAGnD,IAFA,IAAI0mF,EAAS5sF,KAAK4sF,OAETlhF,EAAI,EAAGA,EAAIkhF,EAAOxyF,OAAQsR,IAG/B,IAFA,IACI6/B,EADQqhD,EAAOlhF,GACA6/B,OACVshD,EAAI,EAAGA,EAAIthD,EAAOnxC,OAAQyyF,IAAK,CACpC,IAAI3nD,EAAQqG,EAAOshD,GACnB,GAAI3nD,IAA2B,IAAlBA,EAAMnxC,SAAqBmS,EAASg/B,GAC7C,OAAOA,CAEf,CAER,EAEAmqD,EAAarrF,UAAUsyF,YAAc,SAAsBpxD,GAGvD,IAFA,IAAI4qD,EAAQ9vF,KAAK8vF,MAERpkF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAAK,CACnC,IAAI2pD,EAAOy6B,EAAMpkF,GACjB,GAAI2pD,EAAKplC,IAAI4Z,cAAc3E,GACvB,OAAOmwB,CAEf,CACJ,EAEAg6B,EAAarrF,UAAU+tF,aAAe,WAClC,IAAIz8B,EAAOt1D,KAAKmxF,UAAUnxF,KAAK8vF,OAC3BsB,EAAQ97B,EAAKvvC,EACbsrE,EAAQ/7B,EAAKtvC,EAEjBhmB,KAAKu2F,sBAAsBlF,EAAOD,GAClCpxF,KAAKu2F,sBAAsBnF,EAAOC,EACtC,EAEAhC,EAAarrF,UAAUuyF,sBAAwB,SAAgCjhC,EAAM88B,GAKjF,IAJA,IAEIoE,EAAiB,EAEZ9qF,EAAI,EAAGA,EAAI4pD,EAAKl7D,OAAQsR,IAAK,CAClC,IAAIq/B,EAAOuqB,EAAK5pD,GACZ2pD,EAAOtqB,EAAKsqB,KACZ3vC,EAAS6tE,GAAWnB,EAAc/8B,IAAS+8B,EAAa,GACxDhX,EAAY1vE,EAAI8qF,EAChBC,EATKz2F,KASc02F,gBAAgB3rD,EAAMqwC,EAAW11D,GAExD,GAAI+wE,EAAW,CACXD,IAEA,IAAIjhF,EAAM8/C,EAAKC,KAAKjsD,QAAQ0hC,GAAQyrD,EACpCnhC,EAAK43B,aAAawJ,EAAWlhF,EACjC,CACJ,CACJ,EAEA85E,EAAarrF,UAAU0yF,gBAAkB,SAA0B3rD,EAAMqwC,EAAW11D,GAChF,IAAIstC,EAAejoB,EAAKz1B,QAAQ08C,OAC5BnV,EAAWmW,EAAanW,SACxB85C,E9P15BK,Q8P05BI95C,G9P14BF,U8P04BsBA,EAC7B9oD,EAAUi/D,EAAaj/D,QAE3B,GAAI4iG,IAAsB,IAAZ5iG,EACV,OAAO,KAGX,IAAIu5F,EAAUttF,KAAKmxF,UAAUnxF,KAAK8vF,OAC9BsC,EAAe1sE,EAAOpQ,QAAQq1C,SAAW2iC,EAAQvnE,EAAIunE,EAAQtnE,EAC7DwtE,EAAkBxzF,KAAKupE,mBAAmB7jD,EAAQ0sE,GAClD5oE,E9Pp6BK,Q8Po6BCqzB,EACNnF,EAAQhyB,EAAOgyB,QACfltB,EAAOhB,EAAMkuB,EAAMlsB,IAAMksB,EAAM/oB,IAGnC,GAFoBD,GAAW8kE,EAAgBpY,GAAY1jC,EAAM/oB,IAAK+oB,EAAMlsB,KAExDhB,IAAS,EACzB,OAAO,KAGXgpE,EAAgBptD,OAAOg1C,EAAY,EAAG,EAAG5wD,GACzC9E,EAAOpQ,QAAQi0D,mBAAqBiqB,EAEpC,IAAIiD,EAAY1rD,EAAKlkB,QAUrB,OATAkkB,EAAK9H,QAELwzD,EAAUnhF,QAAQ3E,UAAOld,EACzBgjG,EAAUnhF,QAAQm6C,KAAK17D,SAAU,EAEjC0iG,EAAUnhF,QAAQk2E,eAAY/3F,EAC9BgjG,EAAUnhF,QAAQs+C,WAAQngE,EAC1BgjG,EAAUnhF,QAAQ2/C,eAAYxhE,EAEvBgjG,CACX,EAEOpH,CACX,CAj8BoB,CAi8BlB9rC,IAEF,SAASqzC,GAAa7rD,GAClB,OAAQA,EAAKsqB,KAAKC,KAAKuhC,MAAK,SAAUhoE,GAAK,OAAOA,EAAEvZ,QAAQq1C,WAAa5f,EAAKz1B,QAAQq1C,UAAY97B,IAAMkc,IAA8B,IAAtBlc,EAAEvZ,QAAQvhB,OAAmB,GAEjJ,CAEA,SAASkgG,GAAa3+B,GAIlB,IAHA,IACIrlC,EADA71B,EAASk7D,EAAKl7D,OAGTsR,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIq/B,EAAOuqB,EAAK5pD,GACZ3X,GAAmC,IAAzBg3C,EAAKz1B,QAAQvhB,QAC3B,GAAIA,GAAW6iG,GAAa7rD,GAAO,CAC/B,IAAI6nD,EAAU7+F,EAAUg3C,EAAKkc,aAAelc,EAAKuoB,UAE5CrjC,EAGDA,EAAIya,KAAKkoD,GAFT3iE,EAAM2iE,EAAQ/rE,OAItB,CACJ,CAEA,OAAOoJ,GAAO,IAAIoa,EACtB,CAEA,SAASkpD,GAAWj+B,EAAMD,GACtB,IAAK,IAAI3pD,EAAI,EAAGA,EAAI4pD,EAAKl7D,OAAQsR,IAAK,CAClC,IAAIga,EAAS4vC,EAAK5pD,GAClB,GAAIga,GAAUA,EAAO2vC,OAASA,EAC1B,OAAO3vC,CAEf,CACJ,CAMA,IAAIqvE,GAAc,SAAUjF,GAAS,OAAOA,EAAMlxE,QAAO,SAAUk4E,EAAKzhC,GAAQ,OAAOyhC,EAAI3uF,OAAOktD,EAAKC,KAAO,GAAG,GAAK,EAEtH3/B,GAAkB05D,GAAc,CAC5BtpC,OAAQ,GACRmP,SAAU,CACN55D,OAAQ,CAAC,GAEb6rD,WAAY,GACZN,OAAQ,CACJr4B,MAAOlL,EACP9uB,MAAO,GAEXo7F,aAAc,CACVr7F,MAAO,CAAC,GAEZg7F,OAAQ,CACJsB,cAAe,CACX7+B,OAAQ,CACJxjC,MAAO,WAEX6tD,QAAS,CACL7tD,MAAO,eAMvB,UC7gCIuoE,GAAsB,CACtBhb,MAAO,SAAShrB,EAAO/9D,GACnBgN,KAAKg3F,eAAejmC,EAAO/9D,EAAG6hF,GAClC,EAEAp1D,MAAO,SAASsxC,EAAO/9D,GACnBgN,KAAKg3F,eAAejmC,EAAO/9D,E3D8Db,gB2D7DlB,GAGJ,MCRIikG,GAAoB,SAAUhmE,GAC9B,SAASgmE,EAAiBlxC,EAAQ4rB,EAAQulB,GACtCjmE,EAAMjuB,KAAKhD,MAEX,IAAI4vE,EAAkB+B,EAAO/B,gBAAgB7pB,GACzC0pB,EAAckC,EAAOlC,YAAY1pB,GACjCmqB,EAAeyB,EAAOzB,aAAanqB,EAAQ6pB,GAC3CunB,EAAen3F,KAAKo3F,cAAgB,GACpCtgB,EAAWogB,EAAkBpU,MAAM/8B,EAAO5yD,MAC1CkkG,EAAgBtxC,EAAOvoC,WAAas5D,EAExC92E,KAAKs3F,QAAUvxC,EACf/lD,KAAKu3F,QAAU5lB,EAEf,IAAK,IAAIjmE,EAAI,EAAGA,EAAIkkE,EAAgBx1E,OAAQsR,IAAK,CAC7C,IAAIoS,EAAQ8xD,EAAgBlkE,GACxB8rF,OAAkB,EAEtB,GAAIvwE,GAASowE,GACTG,EAAiBH,EAAcv5E,OAC5B,IAAU,IAANpS,IAAWwd,GAAQpL,EAAO2xD,GAGjC,MAFA+nB,EAAiBH,CAGrB,CAEIG,GACAL,EAAa/nF,KAAK,CACdqoF,cAAe35E,EACfnN,KAAMu/D,EAAaxkE,GACnB4mB,UAAWlM,GAAWoxE,GAAkBA,EAAiB3oB,GAAW2oB,IAGhF,CACJ,CAiFA,OA/EKvmE,IAAQgmE,EAAiBlsF,UAAYkmB,GAC1CgmE,EAAiBjzF,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC3DizF,EAAiBjzF,UAAUqH,YAAc4rF,EAEzCA,EAAiBjzF,UAAU0zF,gBAAkB,SAA0BC,EAAWr6E,GAC9E,IAGIyoC,EADM/lD,KACOs3F,QACbH,EAFMn3F,KAEao3F,cACnBngF,EAAOjX,KAAK43F,YAAYD,GAAa,IACrCE,EAAgB5gF,EAAKwpD,UAAU,GAC/BroE,EAAS,CAAC,EAEd,GAAIy/F,IAAkB98E,GAAS88E,KAAmBziG,EAAQyiG,GAAgB,CACtE,IAAIxxE,EAAK,WAAY,EACrBA,EAAGriB,UAAY6zF,EACfz/F,EAAS,IAAIiuB,CACjB,CAEA,IAAK,IAAI3a,EAAI,EAAGA,EAAIyrF,EAAa/8F,OAAQsR,IAAK,CAC1C,IAAIoS,EAAQq5E,EAAazrF,GACrBosF,EAjBK93F,KAiBc+3F,WAAW9gF,EAAKlH,OAAQ+N,EAAM25E,eACjDt6F,EAAQ2gB,EAAMwU,UAAUwlE,EAAW/xC,EAAQ9uC,EAAKwpD,UAAWnjD,GAE/D,KAAc,OAAVngB,IAAkB8pB,GAAS9pB,IAAWgoB,GAAQhoB,EAAM/C,SAAa+C,aAAiBsa,MAAO,CACzFrf,EAAS+E,EACT,KACJ,CACQgoB,GAAQhoB,IACR66F,GAASl6E,EAAMnN,KAAMvY,EAAQ+E,EAGzC,CAEA,OAAO/E,CACX,EAEA6+F,EAAiBjzF,UAAU4zF,YAAc,SAAsBrsD,GAO3D,IANA,IACIomC,EADM3xE,KACOu3F,QACbxxC,EAFM/lD,KAEOs3F,QACbvnF,EAAS,GACT0wD,EAAY,GAEP/0D,EAAI,EAAGA,EAAI6/B,EAAOnxC,OAAQsR,IAAK,CACpC,IAAIokE,EAAUvkC,EAAO7/B,GAErBqE,EAAOX,KAAKuiE,EAAO9B,UAAU9pB,EAAQ+pB,IACrCrP,EAAUrxD,KAAK22C,EAAO9uC,KAAK64D,GAC/B,CAEA,MAAO,CACH//D,OAAQA,EACR0wD,UAAWA,EAEnB,EAEAw2B,EAAiBjzF,UAAU+zF,WAAa,SAAqB9gF,EAAM6G,GAI/D,IAHA,IAAI/N,EAAS,GACT2pC,EAAQziC,EAAK7c,OAERsR,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAIuqB,EAAOhf,EAAKvL,GACZ+jE,EAAcx5C,EAAKw5C,YACnBtyE,OAAS,EAGTA,EADAgoB,GAAQsqD,EAAY3xD,IACZ2xD,EAAY3xD,GAEZmY,EAAKzN,OAAO1K,GAGxB/N,EAAOX,KAAKjS,EAChB,CAEA,OAAO4S,CACX,EAEOknF,CACX,CApHwB,CAoHtBhmE,IAEF,SAAS+mE,GAASpjD,EAAWhnC,EAAQzQ,GACjC,IAAIw3C,EAAY/mC,EACZkQ,EAAQ82B,EAEZ,GAAIA,EAAUvrC,QAAQ,MAAQ,EAAG,CAG7B,IAFA,IAAIqqB,EAAQkhB,EAAUrtC,MAAM,KAErBmsB,EAAMt5B,OAAS,GAClB0jB,EAAQ4V,EAAMvH,QACThH,GAAQwvB,EAAU72B,MACnB62B,EAAU72B,GAAS,CAAC,GAExB62B,EAAYA,EAAU72B,GAE1BA,EAAQ4V,EAAMvH,OAClB,CAEAwoB,EAAU72B,GAAS3gB,CACvB,CAEA,UC5II86F,GAAqB,SAAUhnE,GAC/B,SAASgnE,IACLhnE,EAAMjuB,KAAKhD,MAEXA,KAAKo6E,UAAY,CAAC,CACtB,CAkBA,OAhBKnpD,IAAQgnE,EAAkBltF,UAAYkmB,GAC3CgnE,EAAkBj0F,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC5Di0F,EAAkBj0F,UAAUqH,YAAc4sF,EAE1CA,EAAkBj0F,UAAUkkB,SAAW,SAAmBsnD,EAAa0oB,GAGnE,IAFA,IAESxsF,EAAI,EAAGA,EAAI8jE,EAAYp1E,OAAQsR,IAF3B1L,KAGFo6E,UAAU5K,EAAY9jE,IAAMwsF,CAE3C,EAEAD,EAAkBj0F,UAAU8+E,MAAQ,SAAgBqV,GAChD,OAAOn4F,KAAKo6E,UAAU+d,EAC1B,EAEOF,CACX,CAxByB,CAwBvBhnE,IAEFgnE,GAAkB1kG,QAAU,IAAI0kG,GAEhC,UCzBIG,GAAY,SAAUhV,GACtB,SAASgV,IACLhV,EAAIl7E,MAAMlI,KAAM+H,UACpB,CAmEA,OAjEKq7E,IAAMgV,EAASrtF,UAAYq4E,GAChCgV,EAASp0F,UAAY6G,OAAOS,OAAQ83E,GAAOA,EAAIp/E,WAC/Co0F,EAASp0F,UAAUqH,YAAc+sF,EAEjCA,EAASp0F,UAAU0iE,YAAc,WAC7B,IAAI1U,EAAShyD,KAAKsV,QAAQ08C,OACtBqmC,EAActxE,GAAW,CAAC,EAAGirC,EAAQA,EAAOzuB,MAC5C+0D,EAAYvxE,GAAW,CAAC,EAAGirC,EAAQA,EAAO1yD,IAE1C+4F,EAAYtkG,UACZiM,KAAKu4F,UAAYv4F,KAAKw4F,aAAaH,GACnCr4F,KAAK6rB,OAAO7rB,KAAKu4F,YAGjBD,EAAUvkG,UACViM,KAAKy4F,QAAUz4F,KAAKw4F,aAAaF,GACjCt4F,KAAK6rB,OAAO7rB,KAAKy4F,SAEzB,EAEAL,EAASp0F,UAAUw0F,aAAe,SAAuBljF,GACrD,IAGIknE,EAHA3mB,EAAgBztC,GAAY9S,GAC5BkyC,EAAYxnD,KAAKwnD,YAUrB,OALIg1B,EADA3mB,EACYA,EAAcrO,GAEdxnD,KAAKy8E,YAAYnnE,EAAQ6L,QAGlC,IAAI4hE,GAASvG,EAChBz1D,GAAW,CACP4jC,SAAU3qD,KAAKsV,QAAQq1C,UAE3Br1C,GACDkyC,EACP,EAEA4wC,EAASp0F,UAAUy/C,OAAS,SAAiB9Y,GACzC3qC,KAAK5G,SAEL,IAAI7G,EAAMyN,KACNu4F,EAAYhmG,EAAIgmG,UAChBE,EAAUlmG,EAAIkmG,QACdt7F,EAAQ5K,EAAI4K,MAEhB6C,KAAKiwB,IAAM0a,EAEP4tD,IACAA,EAAUjjF,QAAQwlE,UAAY39E,EAAMomC,KAAOpmC,EAAMmC,GACjDi5F,EAAU90C,OAAO9Y,IAGjB8tD,IACAA,EAAQnjF,QAAQwlE,UAAY39E,EAAMmC,GAAKnC,EAAMomC,KAC7Ck1D,EAAQh1C,OAAO9Y,IAGf3qC,KAAK8zD,MACL9zD,KAAK8zD,KAAKrQ,OAAO9Y,EAEzB,EAEOytD,CACX,CAvEgB,CAuEdhV,IAEFgV,GAASp0F,UAAU8yE,SAAW/vD,GAAW,CAAC,EAAGqxE,GAASp0F,UAAU8yE,SAAU,CACtE9kB,OAAQ,CACJ7wC,OAAQ,aAEZ+kE,QAAS,CACL/kE,OAAQ,SAIhB,UChFIu3E,GAAiB,SAAUtU,GAC3B,SAASsU,IACLtU,EAASl8E,MAAMlI,KAAM+H,UACzB,CAoDA,OAlDKq8E,IAAWsU,EAAc3tF,UAAYq5E,GAC1CsU,EAAc10F,UAAY6G,OAAOS,OAAQ84E,GAAYA,EAASpgF,WAC9D00F,EAAc10F,UAAUqH,YAAcqtF,EAEtCA,EAAc10F,UAAU8zE,UAAY,WAChC,OAAOsgB,EACX,EAEAM,EAAc10F,UAAU6tE,WAAa,SAAqB56D,GACtD,OAAOA,EAAKw4D,WAChB,EAEAipB,EAAc10F,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GACzE,OAAyB,OAArB+jB,EAAM/nC,MAAMomC,MAAoC,OAAnB2B,EAAM/nC,MAAMmC,GAClC,GAGJU,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EAAQ+jB,EAAM/nC,MAAMomC,KAAM2B,EAAM/nC,MAAMmC,GAC/E,EAEAo5F,EAAc10F,UAAUs0E,UAAY,SAAoBpzC,GACpD,OAAKA,EAIE,CAAEA,EAAM/nC,MAAMomC,KAAM2B,EAAM/nC,MAAMmC,IAH5B,CAIf,EAEAo5F,EAAc10F,UAAU81E,YAAc,SAAsB38E,EAAOqrB,GAC/D,IAAIswD,EAAWtwD,EAAOu9B,OAAOhb,KACzBxH,EAAOpmC,EAAMomC,KACbjkC,EAAKnC,EAAMmC,GACXg7E,EAAYt6E,KAAKq3E,gBAAgByB,GAEvB,OAAV37E,GAAkB4d,GAASwoB,IAASxoB,GAASzb,MAC7Cg7E,EAAYt6E,KAAKq3E,gBAAgByB,GAAYwB,GAAa,CAAE3rD,IAAKzK,EAAWsH,IAAKpH,IAEvEuK,IAAM7N,KAAK6N,IAAI2rD,EAAU3rD,IAAK4U,GACxC+2C,EAAU9uD,IAAM1K,KAAK0K,IAAI8uD,EAAU9uD,IAAK+X,GAExC+2C,EAAU3rD,IAAM7N,KAAK6N,IAAI2rD,EAAU3rD,IAAKrvB,GACxCg7E,EAAU9uD,IAAM1K,KAAK0K,IAAI8uD,EAAU9uD,IAAKlsB,GAEhD,EAEAo5F,EAAc10F,UAAU82E,UAAY,SAAoB51C,GACpD,IAAI/nC,EAAQ+nC,EAAM/nC,MAClB,OAAOA,EAAMomC,KAAOpmC,EAAMmC,EAC9B,EAEOo5F,CACX,CAxDqB,CAwDnBtU,IAEFsU,GAAc10F,UAAU20F,WAAazhB,GAAAA,UAAAA,WAErC,UCjEI0hB,GAAkB,SAAUzc,GAC5B,SAASyc,IACLzc,EAAUj0E,MAAMlI,KAAM+H,UAC1B,CAUA,OARKo0E,IAAYyc,EAAe7tF,UAAYoxE,GAC5Cyc,EAAe50F,UAAY6G,OAAOS,OAAQ6wE,GAAaA,EAAUn4E,WACjE40F,EAAe50F,UAAUqH,YAAcutF,EAEvCA,EAAe50F,UAAUsrD,SAAW,WAChC,OAAOtvD,KAAK4yB,MAChB,EAEOgmE,CACX,CAdsB,CAcpBzc,IAEF,MCPI0c,GAAO,OAIPC,GAAkB,SAAUv1C,GAC5B,SAASu1C,EAAe37F,EAAOmY,GAC3BiuC,EAAavgD,KAAKhD,MAElBA,KAAK7C,MAAQA,EACb6C,KAAKsV,QAAUA,EACftV,KAAK86E,UAAYrrD,GAAezvB,KAAKsV,QAAQwlE,WAAW,GACxD96E,KAAKo8E,iBAAkB,EACvBp8E,KAAK+4F,kBACT,CA4KA,OA1KKx1C,IAAeu1C,EAAe/tF,UAAYw4C,GAC/Cu1C,EAAe90F,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACvE80F,EAAe90F,UAAUqH,YAAcytF,EAEvCA,EAAe90F,UAAU5K,OAAS,WAC9B,IAAI4G,KAAKs8E,UAAT,CAIAt8E,KAAKs8E,WAAY,EAEjB,IAAI/pF,EAAMyN,KAAKsV,QACX+mE,EAAU9pF,EAAI8pF,QACdrqB,EAASz/D,EAAIy/D,OACb70D,EAAQ6C,KAAK7C,MAEb67F,EAAYh5F,KAAKg5F,UAAY,IAAIJ,GAAez7F,EAAO4pB,GAAW,CAAC,EAAG/mB,KAAKsV,QAAS,CACpF08C,OAAQA,EAAOzuB,KACf84C,QAASA,EAAQ94C,QAGjB01D,EAAUj5F,KAAKi5F,QAAU,IAAIL,GAAez7F,EAAO4pB,GAAW,CAAC,EAAG/mB,KAAKsV,QAAS,CAChF08C,OAAQA,EAAO1yD,GACf+8E,QAASA,EAAQ/8E,MAGrBU,KAAKk5F,WAAWF,GAChBh5F,KAAKk5F,WAAWD,GAEhBj5F,KAAK6rB,OAAOmtE,GACZh5F,KAAK6rB,OAAOotE,EAvBZ,CAwBJ,EAEAH,EAAe90F,UAAUy/C,OAAS,SAAiB9Y,GAC/C3qC,KAAK5G,SAEL,IAAI+/F,EAAUxuD,EAAUpH,KACpB61D,EAAQzuD,EAAUrrC,GAEtBU,KAAKq5F,eAAeF,EAASC,GAE7Bp5F,KAAKg5F,UAAUv1C,OAAO01C,GACtBn5F,KAAKi5F,QAAQx1C,OAAO21C,GAEpBp5F,KAAKiwB,IAAMjwB,KAAKg5F,UAAUrc,YAAY91D,QAAQ6jB,KAAK1qC,KAAKi5F,QAAQtc,YACpE,EAEAmc,EAAe90F,UAAUyhD,gBAAkB,WACvC,IAAInoC,EAAQ,IAAI6iC,GAIhB,OAHA7iC,EAAMuO,OAAO7rB,KAAKg5F,UAAUvzC,mBAC5BnoC,EAAMuO,OAAO7rB,KAAKi5F,QAAQxzC,mBAEnBnoC,CACX,EAEAw7E,EAAe90F,UAAUk5E,gBAAkB,WACvC,OAAOl9E,KAAKykD,MAChB,EAEAq0C,EAAe90F,UAAU8hD,oBAAsB,WAC3C,MAAO,CACHxwC,QAAStV,KAAKsV,QACdiuB,KAAMvjC,KAAKg5F,UAAUlzC,sBACrBxmD,GAAIU,KAAKi5F,QAAQnzC,sBAEzB,EAEAgzC,EAAe90F,UAAUo5E,cAAgB,WACrC,IAAIC,EAAUr9E,KAAKi6E,MAAM5kB,KAAKgoB,UAG9B,IAFmBA,GAAWA,EAAQ5xC,SAASzrC,KAAKiwB,KAEnC,CACb,IAGIlK,EAAGC,EAAGs3D,EAHNrtD,EAAMjwB,KAAKiwB,IACXkV,EAASlV,EAAIkV,SAcjB,OAVInlC,KAAKsV,QAAQq1C,UACb5kC,EAAIof,EAAOpf,EACXC,EAAIiK,EAAIsa,GjEhGH,EiEiGL+yC,EAAgB/5D,IAEhBwC,EAAIkK,EAAIua,GjEnGH,EiEoGLxkB,EAAImf,EAAOnf,EACXs3D,EAAgB95D,GAGb,CACH0hB,MAAO,IAAID,GAAMlf,EAAGC,GACpBmmB,MAAO,CACHoxC,WAhBct5D,OAiBd0mC,SAAU2yB,GAGtB,CACJ,EAEAwb,EAAe90F,UAAUy4E,YAAc,SAAsBt7D,GACzD,OAAOnhB,KAAKi6E,MAAM4B,iBAAiB77E,KAAMmhB,EAC7C,EAEA23E,EAAe90F,UAAUw5E,YAAc,SAAsBvtD,GACzD,OAAOjwB,KAAKiwB,IAAIwb,SAASxb,EAC7B,EAEA6oE,EAAe90F,UAAUy5E,eAAiB,WACtCz9E,KAAKg5F,UAAUvb,iBACfz9E,KAAKi5F,QAAQxb,gBACjB,EAEAqb,EAAe90F,UAAU+0F,iBAAmB,WACxC,IAAI/mC,EAAShyD,KAAKsV,QAAQ08C,OACrBA,EAAO7wC,SACH6wC,EAAOzuB,MAASyuB,EAAOzuB,KAAKpiB,SAC7B6wC,EAAOzuB,KAAO14B,OAAOW,OAAO,CAAC,EAAGwmD,EAAOzuB,KAAM,CACzCpiB,OAjIM,SAqIT6wC,EAAO1yD,IAAO0yD,EAAO1yD,GAAG6hB,SACzB6wC,EAAO1yD,GAAKuL,OAAOW,OAAO,CAAC,EAAGwmD,EAAO1yD,GAAI,CACrC6hB,OAtII,SA0IpB,EAEA23E,EAAe90F,UAAUq1F,eAAiB,SAAyBF,EAASC,GACxE,IAKQE,EAAmBC,EALvBhnG,EAAMyN,KAAKsV,QACX08C,EAASz/D,EAAIy/D,OACbrH,EAAWp4D,EAAIo4D,SAEfqH,EAAOnV,WAAag8C,KAEhBluC,EACIyuC,EAAM7uD,IAAM4uD,EAAQ5uD,IACpBgvD,EAAkB/mB,GAClB8mB,EAAoB7mB,KAEpB8mB,EAAkB9mB,GAClB6mB,EAAoB9mB,IAGpB4mB,EAAM9uD,IAAM6uD,EAAQ7uD,IACpBivD,EAAkBt1E,EAClBq1E,EAAoB90E,IAEpB+0E,EAAkB/0E,EAClB80E,EAAoBr1E,GAIvB+tC,EAAOzuB,MAASyuB,EAAOzuB,KAAKsZ,WAC7B78C,KAAKg5F,UAAU1jF,QAAQ08C,OAAOnV,SAAWy8C,GAGxCtnC,EAAO1yD,IAAO0yD,EAAO1yD,GAAGu9C,WACzB78C,KAAKi5F,QAAQ3jF,QAAQ08C,OAAOnV,SAAW08C,GAGnD,EAEAT,EAAe90F,UAAUk1F,WAAa,SAAqBh0D,GACvDA,EAAM8gB,SAAWhmD,KAAKgmD,SACtB9gB,EAAM+gB,SAAWjmD,KAAKimD,SACtB/gB,EAAM6gB,OAAS/lD,KAAK+lD,OACpB7gB,EAAM1W,MAAQxuB,KAAKwuB,MACnB0W,EAAM+0C,MAAQj6E,KAAKi6E,KACvB,EAEO6e,CACX,CAtLsB,CAsLpBv1C,IAEFx8B,GAAW+xE,GAAe90F,UAAW83E,IACrC/0D,GAAW+xE,GAAe90F,UAAWi4E,IAErC6c,GAAe90F,UAAU8yE,SAAW,CAChCuF,QAAS,CACLtoF,SAAS,EACTozD,WAAYtiC,EACZjuB,KjE7Le,EiE8LfzD,KAAMswB,EACNojC,OAAQ,CACJryD,MAAO,GAEXghD,QAAS,GAEbwc,OAAQ,CACJj+D,SAAS,EACTuH,OAAQksB,GAAW,GACnB6jB,QAAS7jB,GAAW,GACpBpsB,UAAW,CACPjI,KAAM++E,GACNpvB,MAAOmvB,IAEXp1B,SAAUg8C,IAEdjlC,MAAO,CACH1E,MAAO,CAAC,GAEZ1J,UAAW,CACP62B,QAAS,CACLx1B,OAAQ,CACJr4B,MAAO3J,EACPrwB,MAAO,IAGfowD,OrQzNsB,KqQ2N1BshC,QAAS,CACL/kE,OAAQ,cAIhB,UC7OIq4E,GAAoB,SAAUtZ,GAC9B,SAASsZ,IACLtZ,EAAYh4E,MAAMlI,KAAM+H,UAC5B,CA0CA,OAxCKm4E,IAAcsZ,EAAiBzuF,UAAYm1E,GAChDsZ,EAAiBx1F,UAAY6G,OAAOS,OAAQ40E,GAAeA,EAAYl8E,WACvEw1F,EAAiBx1F,UAAUqH,YAAcmuF,EAEzCA,EAAiBx1F,UAAU08E,qBAAuB,WAC9C,OAAO1gF,KAAK2gF,mBAAmB3gF,KAAK29E,iBAAiB39E,KAAKy5F,YAC9D,EAEAD,EAAiBx1F,UAAU48E,cAAgB,WACvC,IAAI8Y,EAAe15F,KAAK05F,aAKxB,OAJK15F,KAAK05F,eACNA,EAAe15F,KAAK05F,aAAe15F,KAAK2gF,mBAAmB3gF,KAAK29E,iBAAiB39E,KAAK0pC,aAAawkB,aAGhGwrC,CACX,EAEAF,EAAiBx1F,UAAUs8E,aAAe,SAAuB7pF,GAC7D,IAAIkjG,EAAS,IAAIx5C,GAAU1pD,GACvBmjG,EAAW,IAAIz5C,GAAU1pD,GAE7BkjG,EAAOl0E,SAASrW,KAAKlH,MAAMyxF,EAAOl0E,SAAUzlB,KAAKwgF,kBACjDoZ,EAASn0E,SAASrW,KAAKlH,MAAM0xF,EAASn0E,SAAUzlB,KAAK4gF,iBAErD5gF,KAAKykD,OAAO54B,OAAO8tE,GACnB35F,KAAKykD,OAAO54B,OAAO+tE,EACvB,EAEAJ,EAAiBx1F,UAAU88E,gBAAkB,WACzC,OAAO,CACX,EAEA0Y,EAAiBx1F,UAAU0lC,WAAa,WACpC,OAAO1pC,KAAK0vD,WAAWr1D,KAAI,SAAU6qC,GAAS,OAAOA,EAAM8zD,SAAW,GAC1E,EAEAQ,EAAiBx1F,UAAUy1F,SAAW,WAClC,OAAOz5F,KAAK0vD,WAAWr1D,KAAI,SAAU6qC,GAAS,OAAOA,EAAM+zD,OAAS,GACxE,EAEOO,CACX,CA9CwB,CA8CtBtZ,IAEF,MC/CI2Z,GAA0B,SAAUL,GACpC,SAASK,IACLL,EAAiBtxF,MAAMlI,KAAM+H,UACjC,CAyBA,OAvBKyxF,IAAmBK,EAAuB9uF,UAAYyuF,GAC3DK,EAAuB71F,UAAY6G,OAAOS,OAAQkuF,GAAoBA,EAAiBx1F,WACvF61F,EAAuB71F,UAAUqH,YAAcwuF,EAE/CA,EAAuB71F,UAAU08E,qBAAuB,WACpD,OAAO1gF,KAAK85F,oBAAoB95F,KAAKy5F,WACzC,EAEAI,EAAuB71F,UAAU48E,cAAgB,WAC7C,IAAI8Y,EAAe15F,KAAK05F,aAKxB,OAJK15F,KAAK05F,eACNA,EAAe15F,KAAK05F,aAAe15F,KAAK85F,oBAAoB95F,KAAK0pC,aAAawkB,YAG3EwrC,CACX,EAEAG,EAAuB71F,UAAU81F,oBAAsB,SAA8BvuD,GAGjF,OAFqB,IAAIuiC,IAEHz0E,QAAQ2G,KAAK29E,iBAAiBpyC,GACxD,EAEOsuD,CACX,CA7B8B,CA6B5BL,IAEF,MC/BIO,GAAwB,SAAUP,GAClC,SAASO,IACLP,EAAiBtxF,MAAMlI,KAAM+H,UACjC,CAoBA,OAlBKyxF,IAAmBO,EAAqBhvF,UAAYyuF,GACzDO,EAAqB/1F,UAAY6G,OAAOS,OAAQkuF,GAAoBA,EAAiBx1F,WACrF+1F,EAAqB/1F,UAAUqH,YAAc0uF,EAE7CA,EAAqB/1F,UAAU08E,qBAAuB,WAClD,OAAO1gF,KAAK2gF,mBAAmB3gF,KAAKg+E,oBAAoBh+E,KAAKy5F,YACjE,EAEAM,EAAqB/1F,UAAU48E,cAAgB,WAC3C,IAAI8Y,EAAe15F,KAAK05F,aAMxB,OALK15F,KAAK05F,eACNA,EAAe15F,KAAK05F,aAAe15F,KAAK2gF,mBAAmB3gF,KAAKg+E,oBAAoBh+E,KAAK0pC,gBAC5EwkB,UAGVwrC,CACX,EAEOK,CACX,CAxB4B,CAwB1BP,IAEFzyE,GAAWgzE,GAAqB/1F,UAAW+5E,IAE3C,UCjBIic,GAAkB,SAAU9iB,GAC5B,SAAS8iB,IACL9iB,EAAiBhvE,MAAMlI,KAAM+H,UACjC,CAqJA,OAnJKmvE,IAAmB8iB,EAAejvF,UAAYmsE,GACnD8iB,EAAeh2F,UAAY6G,OAAOS,OAAQ4rE,GAAoBA,EAAiBlzE,WAC/Eg2F,EAAeh2F,UAAUqH,YAAc2uF,EAEvCA,EAAeh2F,UAAU5K,OAAS,WAC9B89E,EAAiBlzE,UAAU5K,OAAO4J,KAAKhD,MAEvCA,KAAK2+E,gBACT,EAEAqb,EAAeh2F,UAAU8zE,UAAY,WACjC,OAAOghB,EACX,EAEAkB,EAAeh2F,UAAUg2E,YAAc,SAAsB/iE,EAAMuR,GAC/D,IAAI07C,EAAa17C,EAAO07C,WACpBje,EAAWz9B,EAAOy9B,SAClBF,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAClB16E,EAAQ8Z,EAAKw4D,YAEjB,IAAK4W,GAASlpF,EAAMomC,QAAU8iD,GAASlpF,EAAMmC,IAAK,CAC9C,GAAIU,KAAKg/E,oBAAoBj5B,KAAYze,GAMrC,OAAO,KALPnqC,EAAQ,CACJomC,KAAM,EACNjkC,GAAI,EAKhB,CAEA,IAAIs4E,EAAe53E,KAAK43E,aAAa7xB,EAAQ8xB,GAC7CD,EAAe53E,KAAKm6E,iBAChBvC,EAAcz6E,EAAO8oD,EAAUie,EAAYne,EAAQ8xB,GAGvD,IAAIrpD,EAAQvX,EAAKuR,OAAOgG,OAASu3B,EAAOv3B,MACpCpI,GAAW2/B,EAAOv3B,SAClBA,EAAQopD,EAAappD,OAGzB,IAAI0W,EAAQ,IAAI4zD,GAAe37F,EAAOy6E,GAKtC,OAJA1yC,EAAM1W,MAAQA,EAEdxuB,KAAK6rB,OAAOqZ,GAELA,CACX,EAEA80D,EAAeh2F,UAAUi7E,cAAgB,SAAwBvvB,EAAYgrB,EAAe7C,GACxF,IAAIphF,GAASikF,EAAcjrB,MAAQ,CAAC,GAAGh5D,MAUvC,OAAO,IARO,WAAVA,EACcojG,GACG,SAAVpjG,EACOsjG,GAEAP,IAGK9pC,EAAYgrB,EAAe7C,EACtD,EAEAmiB,EAAeh2F,UAAUs0E,UAAY,SAAoBpzC,EAAO26B,GAC5D,OAAK36B,EAIE,CAAEA,EAAM/nC,MAAMomC,KAAM2B,EAAM/nC,MAAMmC,IAH5B,CAAEugE,EAAYA,EAI7B,EAEAm6B,EAAeh2F,UAAU42E,UAAY,SAAoBpc,EAAW8Z,GAChE,IAAI2hB,EAAWz7B,EAAU/I,QAAQ6iB,EAAU,GAAIA,EAAU,IAAKt4E,KAAKsV,QAAQ4/B,MACvEglD,EAAS17B,EAAU/I,QAAQ6iB,EAAU,GAAIA,EAAU,IAAKt4E,KAAKsV,QAAQ4/B,MACzE,GAAI+kD,GAAYC,EACZ,MAAO,CACH32D,KAAM02D,EACN36F,GAAI46F,EAGhB,EAEAF,EAAeh2F,UAAU62E,UAAY,SAAoBF,EAAcC,GACnE,IAEIqf,EAAUC,EAFV32D,EAAOq3C,EAAUr3C,KACjBjkC,EAAKs7E,EAAUt7E,GAWnB,OARIU,KAAKsV,QAAQyiE,YACbkiB,EAAW,IAAI5vD,GAAI9G,EAAK+G,GAAIqwC,EAAapwC,GAAIhH,EAAKiH,GAAImwC,EAAalwC,IACnEyvD,EAAS,IAAI7vD,GAAI/qC,EAAGgrC,GAAIqwC,EAAapwC,GAAIjrC,EAAGkrC,GAAImwC,EAAalwC,MAE7DwvD,EAAW,IAAI5vD,GAAIswC,EAAarwC,GAAI/G,EAAKgH,GAAIowC,EAAanwC,GAAIjH,EAAKkH,IACnEyvD,EAAS,IAAI7vD,GAAIswC,EAAarwC,GAAIhrC,EAAGirC,GAAIowC,EAAanwC,GAAIlrC,EAAGmrC,KAG1D,CACHlH,KAAM02D,EACN36F,GAAI46F,EAEZ,EAEAF,EAAeh2F,UAAU2zE,SAAW,SAAmB1gE,EAAMuR,GACzD,IAAIinD,EAAcx4D,EAAKw4D,YAClB10D,GAAS00D,EAAYlsC,QACtBksC,EAAYlsC,KAAOksC,EAAYnwE,IAG9Byb,GAAS00D,EAAYnwE,MACtBmwE,EAAYnwE,GAAKmwE,EAAYlsC,MAGjC2zC,EAAiBlzE,UAAU2zE,SAAS30E,KAAKhD,KAAMiX,EAAMuR,EACzD,EAEAwxE,EAAeh2F,UAAU81E,YAAc,SAAsB38E,EAAOqrB,GAChE,GAAc,OAAVrrB,GAAkB4d,GAAS5d,EAAMomC,OAASxoB,GAAS5d,EAAMmC,IAAK,CAC9D,IAAIw5E,EAAWtwD,EAAOu9B,OAAOhb,KACzBuvC,EAAYt6E,KAAKq3E,gBAAgByB,GAAY94E,KAAKq3E,gBAAgByB,IAAa,CAAEnqD,IAAKzK,EAAWsH,IAAKpH,GACtGmf,EAAOpmC,EAAMomC,KACbjkC,EAAKnC,EAAMmC,GAEfg7E,EAAU3rD,IAAM7N,KAAK6N,IAAI2rD,EAAU3rD,IAAK4U,EAAMjkC,GAC9Cg7E,EAAU9uD,IAAM1K,KAAK0K,IAAI8uD,EAAU9uD,IAAK+X,EAAMjkC,EAClD,CACJ,EAEA06F,EAAeh2F,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GAC1E,IAAIhkB,EAAQ+nC,EAAM/nC,MAElB,OAAO6C,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EAAQhkB,EAAMomC,KAAMpmC,EAAMmC,GACnE,EAEA06F,EAAeh2F,UAAUg8E,gBAAkB,WAGvC,IAFA,IAAIz0C,EAASvrC,KAAKurC,OACdnzC,EAAS,GACJqc,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IAAO,CAC1C,IAAIywB,EAAQqG,EAAO92B,GACfywB,IACA9sC,EAAOgX,MAAM81B,EAAM8zD,WAAa,CAAC,GAAGjkE,QACpC38B,EAAOgX,MAAM81B,EAAM+zD,SAAW,CAAC,GAAGlkE,QAE1C,CAEA,OAAO38B,EAAO+P,OAAOnI,KAAK4+E,UAC9B,EAEOob,CACX,CAzJsB,CAyJpB9iB,IAEFnwD,GAAWizE,GAAeh2F,UAAW06E,GAAgBiB,IAErD,UC1KIwa,GAAa,SAAUhV,GACvB,SAASgV,IACLhV,EAAYj9E,MAAMlI,KAAM+H,UAC5B,CA2CA,OAzCKo9E,IAAcgV,EAAUpvF,UAAYo6E,GACzCgV,EAAUn2F,UAAY6G,OAAOS,OAAQ65E,GAAeA,EAAYnhF,WAChEm2F,EAAUn2F,UAAUqH,YAAc8uF,EAElCA,EAAUn2F,UAAUy/C,OAAS,SAAiBxzB,GAC1C,IAAI19B,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACdnY,EAAQ5K,EAAI4K,MAEZqhE,EADQjsE,EAAI0nF,MACMtD,gBAAgBrhE,GAClC8kF,EAAU,GACVC,EAAU,GACVC,EAAW,GAEXjV,EAAS7mB,EAAU/I,QAAQt4D,EAAMmwB,IAAKnwB,EAAMo0E,MAC5CgpB,EAAQ/7B,EAAU/I,QAAQt4D,EAAMT,KAAMS,EAAMT,MAC5C89F,EAAQh8B,EAAU/I,QAAQt4D,EAAMoxC,MAAOpxC,EAAMoxC,OAEjDgsD,EAAMjwD,GAAKkwD,EAAMlwD,GAAK+6C,EAAO/6C,GAAKra,EAAIqa,GACtCiwD,EAAM/vD,GAAKgwD,EAAMhwD,GAAK66C,EAAO76C,GAAKva,EAAIua,GAEtC,IAAI+6C,EAAMF,EAAOlgD,SAASpf,EAE1Bq0E,EAAQhrF,KAAK,CAAEmrF,EAAMjwD,GAAIiwD,EAAMhwD,KAC/B6vD,EAAQhrF,KAAK,CAAEm2E,EAAKgV,EAAMhwD,KAC1B8vD,EAAQjrF,KAAK,CAAEm2E,EAAKiV,EAAMjwD,KAC1B8vD,EAAQjrF,KAAK,CAAEorF,EAAMhwD,GAAIgwD,EAAMjwD,KAC/B+vD,EAASlrF,KAAK,CAAEm2E,EAAKF,EAAO96C,KAC5B+vD,EAASlrF,KAAK,CAAEm2E,EAAKF,EAAO56C,KAE5BzqC,KAAKwlF,MAAQ,CACT4U,EAASC,EAASC,GAGtBt6F,KAAKiwB,IAAMo1D,EAAOx+D,QAAQ6jB,KAAK6vD,EAAM1zE,QAAQ6jB,KAAK8vD,IAElDx6F,KAAKylF,YACT,EAEA0U,EAAUn2F,UAAU6hF,WAAa,WAAwB,EAElDsU,CACX,CA/CiB,CA+CfhV,IAEF,MChDIsV,GAAa,SAAUrU,GACvB,SAASqU,IACLrU,EAAiBl+E,MAAMlI,KAAM+H,UACjC,CAUA,OARKq+E,IAAmBqU,EAAU1vF,UAAYq7E,GAC9CqU,EAAUz2F,UAAY6G,OAAOS,OAAQ86E,GAAoBA,EAAiBpiF,WAC1Ey2F,EAAUz2F,UAAUqH,YAAcovF,EAElCA,EAAUz2F,UAAU8zE,UAAY,WAC5B,OAAOqiB,EACX,EAEOM,CACX,CAdiB,CAcfrU,IAEF,MCXIsU,GAAoB,SAAUn3C,GAC9B,SAASm3C,EAAiBn3D,EAAMjkC,EAAIymD,GAChCxC,EAAavgD,KAAKhD,MAElBA,KAAKujC,KAAOA,EACZvjC,KAAKV,GAAKA,EACVU,KAAK+lD,OAASA,CAClB,CAgDA,OA9CKxC,IAAem3C,EAAiB3vF,UAAYw4C,GACjDm3C,EAAiB12F,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACzE02F,EAAiB12F,UAAUqH,YAAcqvF,EAEzCA,EAAiB12F,UAAU0rD,WAAa,WACpC,IAAInsB,EAAOvjC,KAAKujC,KAEZ41D,EADMn5F,KACQujC,KAAKtT,IACnBmpE,EAFMp5F,KAEMV,GAAG2wB,IACfsb,EAAS,GAEb,GAAIhI,EAAKka,WAAY,CACjB,IAAIz3B,EAAIud,EAAKu3C,UAAYqe,EAAQ5uD,GAAK4uD,EAAQ1uD,GAC9Cc,EAAOn8B,KACH,CAAE+pF,EAAQ7uD,GAAItkB,GACd,CAAEozE,EAAM5uD,GAAIxkB,GAEpB,KAAO,CACH,IAAID,EAAIwd,EAAKu3C,UAAYqe,EAAQ3uD,GAAK2uD,EAAQ7uD,GAC9CiB,EAAOn8B,KACH,CAAE2W,EAAGozE,EAAQ5uD,IACb,CAAExkB,EAAGqzE,EAAM3uD,IAEnB,CAEA,OAAOc,CACX,EAEAmvD,EAAiB12F,UAAUogD,aAAe,WACtCb,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAEzC,IAAIyvD,EAAOzvD,KAAK+lD,OAAO0J,MAAQ,CAAC,EAE5BpqC,EAAO86B,GAAAA,WAAqBngD,KAAK0vD,aAAc,CAC/CnqC,OAAQ,CACJiJ,MAAOihC,EAAKjhC,MACZh6B,MAAOi7D,EAAKj7D,MACZghD,QAASia,EAAKja,QACd6R,SAAUoI,EAAKpI,YAIvBjiC,EAAiBC,GACjBrlB,KAAKykD,OAAO54B,OAAOxG,EACvB,EAEOq1E,CACX,CAxDwB,CAwDtBn3C,IAEF5tB,GAAkB+kE,GAAkB,CAChCt/F,UAAW,CACPjI,KAAM++E,GACNpvB,MAAOmvB,MAIf,UCjEI0oB,GAAkB,SAAUvW,GAC5B,SAASuW,IACLvW,EAASl8E,MAAMlI,KAAM+H,UACzB,CAqGA,OAnGKq8E,IAAWuW,EAAe5vF,UAAYq5E,GAC3CuW,EAAe32F,UAAY6G,OAAOS,OAAQ84E,GAAYA,EAASpgF,WAC/D22F,EAAe32F,UAAUqH,YAAcsvF,EAEvCA,EAAe32F,UAAU5K,OAAS,WAC9BgrF,EAASpgF,UAAU5K,OAAO4J,KAAKhD,MAC/BA,KAAK46F,gBACT,EAEAD,EAAe32F,UAAU0zE,mBAAqB,SAA6BxxE,GAOvE,IANA,IAEI6/C,EAAS/lD,KAAKsV,QAAQywC,OACtB80C,EAAkB56B,GAAgBla,GAClCtI,GAAcz9C,KAAKsV,QAAQyiE,WAEtBF,EAAW,EAAGA,EAAW9xB,EAAO3rD,OAAQy9E,IAK7C,IAJA,IAAI6C,EAAgB30B,EAAO8xB,GACvBz6D,EAAQ,EACR+oC,EAAe,EAEV+d,EAAa,EAAGA,EAAa22B,EAAiB32B,IAAc,CACjE,IAAIjtD,EAAOk4D,GAAAA,QAAAA,UAA+BuL,EAAexW,GACrD/mE,EAAQ8Z,EAAKw4D,YAAYtyE,MACzB29F,EAAU7jF,EAAKuR,OAAOsyE,QACtBv3D,EAAOnmB,EACP9d,OAAM,EAENw7F,EAC8B,UAA1BA,EAAQ/vE,eACR9T,EAAKw4D,YAAYtyE,MAAQigB,EACzBmmB,EAAO,EACPjkC,EAAK8d,IAELnG,EAAKw4D,YAAYtyE,MAAQgpD,EACzB7mD,EAAKikC,EAAO4iB,EACZA,EAAe,GAEZprC,GAAS5d,KAChBgpD,GAAgBhpD,EAEhBmC,EADA8d,GAASjgB,GAIb+I,EAAS+Q,EAAM,CACXgvC,SAnCCjmD,KAmCgBm3E,aAAanX,WAAWkE,GACzCA,WAAYA,EACZne,OAAQ20B,EACR7C,SAAUA,EACVz6D,MAAOA,EACP+oC,aAAcA,EACd5iB,KAAMA,EACNjkC,GAAIA,EACJm+C,WAAYA,GAEpB,CAER,EAEAk9C,EAAe32F,UAAU81E,YAAc,SAAsB38E,EAAOqrB,GAChE47D,EAASpgF,UAAU81E,YAAY92E,KAAKhD,KAAM,CAAE7C,MAAOqrB,EAAOlpB,IAAMkpB,EACpE,EAEAmyE,EAAe32F,UAAU82E,UAAY,SAAoB51C,GACrD,OAAOA,EAAM/nC,OAAS,CAC1B,EAEAw9F,EAAe32F,UAAUs0E,UAAY,SAAoBpzC,GACrD,MAAO,CAAEA,EAAM3B,KAAM2B,EAAM5lC,GAC/B,EAEAq7F,EAAe32F,UAAU42F,eAAiB,WAOtC,IANA,IAEI70C,EAAS/lD,KAAKsV,QAAQywC,OACtBwxB,EAAev3E,KAAKu3E,aACpB9xD,EAAWzlB,KAAKylB,SAAW,GAEtBoyD,EAAW,EAAGA,EAAW9xB,EAAO3rD,OAAQy9E,IAAY,CACzD,IAAI6C,EAAgB30B,EAAO8xB,GACvBtsC,EAASgsC,EAAaM,GAE1B,GAAItsC,EAEA,IADA,IAAIwvD,OAAa,EACRjrB,EAAU,EAAGA,EAAUvkC,EAAOnxC,OAAQ01E,IAAW,CACtD,IAAI5qC,EAAQqG,EAAOukC,GAEnB,GAAI5qC,GAAS61D,EAAW,CACpB,IAAIxhD,EAAU,IAAImhD,GAAiBK,EAAW71D,EAAOw1C,GACrDj1D,EAASrW,KAAKmqC,GAjBjBv5C,KAkBU6rB,OAAO0tB,EAClB,CAEAwhD,EAAY71D,CAChB,CAER,CACJ,EAEOy1D,CACX,CAzGsB,CAyGpBvW,IAEF,MCtFI4W,GAAc,CAAEpoB,GAAMyB,GAAeL,GAAYS,IACjDwmB,GAAsB,CAAE1nB,GAAMiB,IAAgBrsE,OAAO6yF,IAErDE,GAAuB,SAAU7L,GACjC,SAAS6L,IACL7L,EAAannF,MAAMlI,KAAM+H,UAC7B,CAquBA,OAnuBKsnF,IAAe6L,EAAoBnwF,UAAYskF,GACpD6L,EAAoBl3F,UAAY6G,OAAOS,OAAQ+jF,GAAgBA,EAAarrF,WAC5Ek3F,EAAoBl3F,UAAUqH,YAAc6vF,EAE5CA,EAAoBl3F,UAAUuuD,WAAa,SAAqBxM,GAO5D,GAJA/lD,KAAKm7F,kBAAoB,CAAC,EAC1Bn7F,KAAKu6E,eAAiB,CAAC,EACvBv6E,KAAKo7F,sBAAwB,IAAI5Y,GAE7Bz8B,EAAO3rD,OAAS,EAAG,CACnB4F,KAAK+3E,WAAa7uD,GACd68B,EAAO,GAAG5yD,KAAM,CAAE0/E,GAAKG,GAAQwB,GAAeH,GAAeI,GAC5CR,GAAWX,GAAsBgB,KAGtD,IAAK,IAAI5oE,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAAK,CACpC,IAAI0sE,EAAQryB,EAAOr6C,GAAG0sE,MACtB,GAAIA,GAAwB,SAAfA,EAAMjlF,KAAiB,CAd/B6M,KAeMq7F,UAAW,EAClB,KACJ,CACJ,CACJ,CAEJ,EAEAH,EAAoBl3F,UAAU5K,OAAS,SAAiB02F,QACrC,IAAVA,IAAmBA,EAAQ9vF,KAAK8vF,OAErC9vF,KAAKs7F,mBAAmBxL,GACxB9vF,KAAKu7F,oBAAoBzL,GACzB9vF,KAAKw7F,yBAAyB1L,GAC9B9vF,KAAKy7F,aAAa3L,GAClB9vF,KAAK07F,gBAAgB5L,EACzB,EAEAoL,EAAoBl3F,UAAUopF,WAAa,SAAqBriD,GAC5D,IAAI+tC,EAAW/tC,EAAKz1B,QAAQ3E,KAE5B0+E,EAAarrF,UAAUopF,WAAWpqF,KAAKhD,KAAM+qC,GAEzCA,aAAgB0yB,UACTz9D,KAAKm7F,kBAAkBriB,IAE9B94E,KAAKo7F,sBAAsBvY,MAAM/J,UAC1B94E,KAAKu6E,eAAezB,IAG3B/tC,IAAS/qC,KAAKm3E,qBACPn3E,KAAKm3E,aAGZpsC,IAAS/qC,KAAKw+D,kBACPx+D,KAAKw+D,SAEpB,EAEA08B,EAAoBl3F,UAAUy3F,aAAe,SAAuB3L,GAKhE,IAJA,IAAItuD,EAASxhC,KAET2xF,EAAe3xF,KAAK0xF,oBAEfhmF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAAK,CACnC,IAAI2pD,EAAOy6B,EAAMpkF,GACbiwF,EAAahK,EAAat8B,EAAK//C,QAAQ3E,MAAQ,YAAc,GACjE6wB,EAAOovD,YAAY+K,GAEnB,IAAIC,EAAgBp6D,EAAOqwD,oBAAoB8J,GAC/C,GAAKC,EAKL,IADA,IAAItwC,EAAS9pB,EAAOq6D,0BAA0BD,GACrCE,EAAU,EAAGA,EAAUxwC,EAAOlxD,OAAQ0hG,IAC3Ct6D,EAAOu6D,iBAAiBzwC,EAAOwwC,GAAUzmC,EAEjD,CACJ,EAEA6lC,EAAoBl3F,UAAU+3F,iBAAmB,SAA2Bh2C,EAAQsP,GAChFr1D,KAAKg8F,gBACD3N,GAAmBtoC,EAAQ,CAAE6sB,GAAMyB,KAAkBhf,GAGzDr1D,KAAKi8F,qBACD5N,GAAmBtoC,EAAQ,CAAEiuB,GAAYS,KAAwBpf,GAGrEr1D,KAAKk8F,eACD7N,GAAmBtoC,EAAQ,CAAEmtB,GAAQL,KAAQxd,GAGjDr1D,KAAKm8F,oBACD9N,GAAmBtoC,EAAQ,CAAEmuB,GAAcD,KAAc5e,GAG7Dr1D,KAAKo8F,kBACD/N,GAAmBtoC,EAAQ,CAAEitB,GAAQuB,KAAoBlf,GAG7Dr1D,KAAKq8F,uBACDhO,GAAmBtoC,EAAQktB,IAAc5d,GAG7Cr1D,KAAKs8F,mBACDjO,GAAmBtoC,EAAQ,CAAE+sB,GAAUwB,KAAsBjf,GAGjEr1D,KAAKu8F,gBACDlO,GAAmBtoC,EAAQytB,IAAOne,GAGtCr1D,KAAKw8F,qBACDnO,GAAmBtoC,EAAQ,CAAE2uB,GAAWpB,KAAyBje,GAGrEr1D,KAAKy8F,gBACDpO,GAAmBtoC,EAAQ,CAAEwtB,GAAMiB,KAAkBnf,EAE7D,EAEA6lC,EAAoBl3F,UAAUu3F,oBAAsB,SAA8BzL,GAC9E,IAAItuD,EAASxhC,KAET+lD,EAAS/lD,KAAK08F,WAAa18F,KAAK+lD,OAChC42C,EAAkB,GACtB38F,KAAK48F,oBAAsB,CAAC,EAC5B58F,KAAK68F,mBAAqB78F,KAAK68F,oBAAsB,CAAC,EAEtD,IAAK,IAAInxF,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAAK,CACpC,IAAIgvE,EAAgB30B,EAAOr6C,GACvByrE,EAAe31C,EAAO41C,mBAAmBsD,GACzCoiB,EAAWt7D,EAAO6uD,SAASlZ,EAAa7hE,QAAQ+/C,MAIhDqlB,GAHW0T,GAAiBjX,EAAa7hE,QAAQniB,KAAMwwB,IAE1C+2D,EAAcqiB,gBAAkB7zE,GAAQ4zE,EAAUhN,GAC/CtuD,EAAOw7D,gBAAgBtiB,EAAevD,GAEtC31C,EAAOy7D,aAAaviB,EAAevD,GAGvDwlB,EAAgBvtF,KAAKsrE,EACzB,CAEA16E,KAAK68F,mBAAqB78F,KAAK48F,oBAC/B58F,KAAK48F,oBAAsB,KAE3B58F,KAAK08F,UAAY32C,EACjB/lD,KAAK+lD,OAAS42C,CAClB,EAEAzB,EAAoBl3F,UAAUi5F,aAAe,SAAuBl3C,EAAQoxB,GACxE,IAAI+lB,GAAcn3C,EAAO9uC,MAAQ,CAAC,GAAG7c,OAGrC,GAFA+8E,EAAa9Y,WAAav9C,KAAK0K,IAAI2rD,EAAa9Y,YAAc,EAAG6+B,IAE3DniF,GAASo8D,EAAa7hE,QAAQqZ,OAAQ5T,GAASo8D,EAAa7hE,QAAQkW,KACtE,OAAOu6B,EAGX,IAAIrO,EAAQy/B,EAAajW,sBACrBi8B,EAAmBj0E,GAAQ68B,EAAO5yD,KAAM8nG,IACxCvgB,EAAgB3zD,GAAW,CAAC,EAAGg/B,GAYnC,OAVA20B,EAAczjE,MAAQyjE,EAAczjE,MAAQ,IAAIyD,MAAMg9B,EAAM/oB,IAAK+oB,EAAMlsB,IAAM,GAEzE2xE,GACAlO,GAAuBvU,EAAehjC,EAAOwlD,GAAY,SAAUzoF,GAAO,MAAQ,CAC9EwhB,KAAM8vB,EAAO9uC,KAAKxC,GAClBwxC,SAAUkxB,EAAanX,WAAWvrD,GAAK,GACvCyvD,WAAYzvD,EAAMijC,EAAM/oB,IACxB,IAAG,SAAUla,GAAO,OAAO0Q,GAAQ4gC,EAAO9uC,KAAKxC,GAAO,IAGvDimE,CACX,EAEAwgB,EAAoBl3F,UAAUo5F,uBAAyB,WACnDp9F,KAAK68F,mBAAqB,CAAC,CAC/B,EAEA3B,EAAoBl3F,UAAUq5F,mBAAqB,SAA6Bt3C,EAAQoxB,GACpF,IAEI9oE,EAAO03C,EAAOzrD,MAAS,IAAO68E,EAAaxZ,iBAC/C,GAAI39D,KAAK68F,mBAAmBxuF,GAExB,OADArO,KAAK48F,oBAAoBvuF,GAAOrO,KAAK68F,mBAAmBxuF,GACjDrO,KAAK68F,mBAAmBxuF,GAGnC,IAAI85D,EAAcgP,EAAa7hE,QAC3BwoD,EAAgBqK,EAAYrK,cAC5Bw/B,EAAWlP,GAAiBjmB,EAAYh1E,KAAMwwB,GAC9C45E,EAAUx3C,EAAO9uC,KACjBumF,EAAQF,EAAW/O,GAAetf,GAClC72E,EAAS,GACRklG,GACDnmB,EAAa/V,gBAGjB,IAAK,IAAI3sD,EAAM,EAAGA,EAAM8oF,EAAQnjG,OAAQqa,IAAO,CAC3C,IAAIwxC,OAAY,EAOhB,GALIA,EADAF,EAAOg3C,cACIS,EAAMz3C,EAAOg3C,cAAeQ,EAAQ9oF,GArB1CzU,KAqBuDgkD,aAAayM,MAE9DqN,EAAcrpD,GAGzB0Q,GAAQ8gC,IAA0B,OAAbA,EAAmB,CACxC,IAAIie,EAAaiT,EAAapX,WAAW9Z,GACzC7tD,EAAO8rE,GAAc9rE,EAAO8rE,IAAe,CAAEhjB,MAAO,GAAI+E,SAAUA,GAClE7tD,EAAO8rE,GAAYhjB,MAAM9xC,KAAKqF,EAClC,CACJ,CAIA,OAFAzU,KAAK48F,oBAAoBvuF,GAAOjW,EAEzBA,CACX,EAEA8iG,EAAoBl3F,UAAUg5F,gBAAkB,SAA0Bj3C,EAAQoxB,GAE9E,IADcpxB,EAAO9uC,KACR7c,OACT,OAAO2rD,EA4BX,IAzBA,IAAI4xC,EAAY33F,KAAKq9F,mBAAmBt3C,EAAQoxB,GAC5C/+E,EAAS2uB,GAAW,CAAC,EAAGg/B,GACxB03C,EAAa,IAAIxG,GAAiBlwE,GAAW,CAAC,EAAGg/B,GAASopB,GAAAA,QAAsB8oB,GAAAA,SAChFhhF,EAAO7e,EAAO6e,KAAO,GACrBwpD,EAAY0W,EAAa7hE,QAAQmrD,WAAa,GAE9C/oB,EAAQy/B,EAAajW,sBACrBw8B,EAAe,SAAUjpF,GACzB,IAAIkpF,EAAclpF,EAAMijC,EAAM/oB,IAC1BuW,EAAQyyD,EAAUljF,GAOtB,GANKywB,IACDA,EAAQyyD,EAAUljF,GAAO,CAAC,GAG9BywB,EAAMg/B,WAAay5B,GAEdz4D,EAAMjP,KAAM,CACb,IAAIgwB,EAAWkxB,EAAanX,WAAWvrD,GAAK,GAC5CywB,EAAM+gB,SAAWA,EACjB/gB,EAAMjP,KAAOwnE,EAAW/F,gBAAgBxyD,EAAMgc,MAAO+E,EACzD,CAEA,OAAO/gB,CACX,EAESzwB,EAAMijC,EAAM/oB,IAAKla,GAAOijC,EAAMlsB,IAAK/W,IAAO,CAC/C,IAAIywB,EAAQw4D,EAAajpF,GACzBwC,EAAKiuB,EAAMg/B,YAAch/B,EAAMjP,KAE3BiP,EAAMgc,OAAShc,EAAMgc,MAAM9mD,SAC3BqmE,EAAUv7B,EAAMg/B,YAAch/B,EAAMjP,KAE5C,CAQA,OANI/M,GAAQ9wB,EAAOjF,KAAM8nG,KACrBhM,GAAuB72F,EAAQs/C,EAAOy/B,EAAahW,aAAcu8B,GAAc,SAAUjpF,GAAO,OAAOkjF,EAAUljF,EAAM,IAG3H0iE,EAAa7hE,QAAQmrD,UAAYA,EAE1BroE,CACX,EAEA8iG,EAAoBl3F,UAAUkpF,YAAc,SAAsBn8B,EAAOsE,GACrE,IAAItP,EAASgL,EAAMz7C,QAAQywC,OACvBoxB,EAAen3E,KAAKo3E,mBAAmBrxB,EAAO,IAC9C8X,EAAasZ,EAAa7hE,QAAQuoD,WAClC+/B,EAAkB98E,KAAK0K,IAAI,EAAGy0C,GAAgBla,GAAU8X,EAAWzjE,QAEvE,GAAIwjG,EAAkB,EAElB,IADA//B,EAAasZ,EAAa7hE,QAAQuoD,WAAasZ,EAAa7hE,QAAQuoD,WAAWnjD,MAAM,GAC9EkjF,KACH//B,EAAWzuD,KAAK,IAIxBpP,KAAKo7F,sBAAsB1Y,OAAO3xB,EAAMsmB,iBAExCgY,EAAarrF,UAAUkpF,YAAYlqF,KAAKhD,KAAM+wD,EAAOsE,EACzD,EAGA6lC,EAAoBl3F,UAAU4tF,eAAiB,SAAyB7rC,GACpE,IAAIzwC,EAAUtV,KAAKsV,QACfwjE,EAAW/yB,EAAOhb,KAElBA,EAAOpiB,GADO,GAAGxgB,OAAOmN,EAAQkpD,YACP,SAAS3vC,GAAK,OAAOA,EAAEle,OAASmoE,CAAU,IAAG,GAEtE+kB,IADQvoF,EAAQw6E,OAAS,CAAE,CAAC,IACH,IAAM,CAAC,GAAGn/E,MAAQ,UAG/C,OAFgBo6B,GAAQ,CAAC,GAAGsqB,MAAQwoC,CAGxC,EAEA3C,EAAoBl3F,UAAUozE,mBAAqB,SAA6BrxB,GAC5E,IAAI+yB,EAAW/yB,EAAOoxB,aAClBpsC,EAAO+tC,EAAW94E,KAAKm7F,kBAAkBriB,GAAY94E,KAAKm3E,aAE9D,IAAKpsC,EACD,MAAM,IAAI3qC,MAAM,4CAA8C04E,GAGlE,OAAO/tC,CACX,EAEAmwD,EAAoBl3F,UAAU85F,sBAAwB,SAAgCC,EAAa1oC,GAC/F,IAAI+iB,EAAQ2lB,EAAY3lB,MAIxB,MAAO,CACHG,UAAWH,EACXH,aALeG,GAAwB,SAAfA,EAAMjlF,KAM9B+hD,KALOmgB,EAAK//C,QAAQ4/B,KAO5B,EAEAgmD,EAAoBl3F,UAAU63F,0BAA4B,SAAoC91C,GAG1F,IAFA,IAAIi4C,EAAe,GACfC,EAAS,CAAC,EACLxpF,EAAM,EAAGA,EAAMsxC,EAAO3rD,OAAQqa,IAAO,CAC1C,IAAI9D,EAAOo1C,EAAOtxC,GAAK0iE,cAAgB,cAClC8mB,EAAOhzF,eAAe0F,KACvBstF,EAAOttF,IAAQ,EACfqtF,EAAa5uF,KAAKuB,GAE1B,CAGA,IADA,IAAI26C,EAAS,GACJkmC,EAAS,EAAGA,EAASwM,EAAa5jG,OAAQo3F,IAAU,CACzD,IACI0M,EAAaC,GAAYp4C,EADlBi4C,EAAaxM,GACmBA,GACjB,IAAtB0M,EAAW9jG,QAIfkxD,EAAOl8C,KAAK8uF,EAChB,CAEA,OAAO5yC,CACX,EAEA4vC,EAAoBl3F,UAAUk4F,eAAiB,SAAyBn2C,EAAQsP,GAC5E,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrBq4C,EAAW,IAAIha,GAASpkF,KAAM6K,OAAOW,OAAO,CAC5Cu6C,OAAQA,EACRgyB,WAAY/3E,KAAK+3E,WACjBgM,IAAKga,EAAYha,IACjBr8D,QAASq2E,EAAYr2E,SACtB1nB,KAAK89F,sBAAsBC,EAAa1oC,KAE3Cr1D,KAAKktF,YAAYkR,EAAU/oC,EAV3B,CAWJ,EAEA6lC,EAAoBl3F,UAAUm4F,oBAAsB,SAA8Bp2C,EAAQsP,GACtF,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrBs4C,EAAmB,IAAI3F,GAAc14F,KAAM,CAC3C+lD,OAAQA,EACRgyB,WAAY/3E,KAAK+3E,WACjBgM,IAAKga,EAAYha,IACjBr8D,QAASq2E,EAAYr2E,UAGzB1nB,KAAKktF,YAAYmR,EAAkBhpC,EAVnC,CAWJ,EAEA6lC,EAAoBl3F,UAAUo4F,kBAAoB,SAA4Br2C,EAAQsP,GAClF,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrBu4C,EAAc,IAAI3T,GAAY3qF,KAAM,CACpC+lD,OAAQA,EACRgyB,WAAY/3E,KAAK+3E,WACjBgM,IAAKga,EAAYha,IACjBr8D,QAASq2E,EAAYr2E,QACrBwtB,KAAMmgB,EAAK//C,QAAQ4/B,OAGvBl1C,KAAKktF,YAAYoR,EAAajpC,EAX9B,CAYJ,EAEA6lC,EAAoBl3F,UAAUy4F,gBAAkB,SAA0B12C,EAAQsP,GAC9E,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrBw4C,EAAY,IAAIte,GAAUjgF,KAAM6K,OAAOW,OAAO,CAC9CusE,WAAY/3E,KAAK+3E,WACjBhyB,OAAQA,GACT/lD,KAAK89F,sBAAsBC,EAAa1oC,KAE3Cr1D,KAAKktF,YAAYqR,EAAWlpC,EAR5B,CASJ,EAEA6lC,EAAoBl3F,UAAUg4F,gBAAkB,SAA0Bj2C,EAAQsP,GAC9E,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrBy4C,EAAY,IAAI9c,GAAU1hF,KAAM6K,OAAOW,OAAO,CAC9CusE,WAAY/3E,KAAK+3E,WACjBhyB,OAAQA,GACT/lD,KAAK89F,sBAAsBC,EAAa1oC,KAE3Cr1D,KAAKktF,YAAYsR,EAAWnpC,EAR5B,CASJ,EAEA6lC,EAAoBl3F,UAAUi4F,qBAAuB,SAA+Bl2C,EAAQsP,GACxF,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAIqkG,EAAiB,IAAIzE,GAAeh6F,KAAM,CAC1C+3E,WAAY/3E,KAAK+3E,WACjBhyB,OAAQA,EACR7Q,KAAMmgB,EAAK//C,QAAQ4/B,OAGvBl1C,KAAKktF,YAAYuR,EAAgBppC,EARjC,CASJ,EAEA6lC,EAAoBl3F,UAAUu4F,gBAAkB,SAA0Bx2C,EAAQsP,GAC9E,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrBgL,EAAQ,IAAI0pC,GAAUz6F,KAAM,CAC5B+3E,WAAY/3E,KAAK+3E,WACjBgM,IAAKga,EAAYha,IACjBh+B,OAAQA,EACRr+B,QAASq2E,EAAYr2E,QACrBwtB,KAAMmgB,EAAK//C,QAAQ4/B,OAGvBl1C,KAAKktF,YAAYn8B,EAAOsE,EAXxB,CAYJ,EAEA6lC,EAAoBl3F,UAAUq4F,uBAAyB,SAAiCt2C,EAAQsP,GAC5F,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrBgL,EAAQ,IAAIq1B,GAAiBpmF,KAAM,CACnC+3E,WAAY/3E,KAAK+3E,WACjBgM,IAAKga,EAAYha,IACjBh+B,OAAQA,EACRr+B,QAASq2E,EAAYr2E,QACrBwtB,KAAMmgB,EAAK//C,QAAQ4/B,OAGvBl1C,KAAKktF,YAAYn8B,EAAOsE,EAXxB,CAYJ,EAEA6lC,EAAoBl3F,UAAUs4F,mBAAqB,SAA6Bv2C,EAAQsP,GACpF,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrBgL,EAAQ,IAAIm3B,GAAaloF,KAAM,CAC/B+3E,WAAY/3E,KAAK+3E,WACjBgM,IAAKga,EAAYha,IACjBh+B,OAAQA,EACRr+B,QAASq2E,EAAYr2E,QACrBwtB,KAAMmgB,EAAK//C,QAAQ4/B,OAGvBl1C,KAAKktF,YAAYn8B,EAAOsE,EAXxB,CAYJ,EAEA6lC,EAAoBl3F,UAAUw4F,qBAAuB,SAA+Bz2C,EAAQsP,GACxF,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrB24C,EAAiB,IAAI/D,GAAe36F,KAAM,CAC1C+lD,OAAQA,EACRgyB,WAAY/3E,KAAK+3E,WACjBgM,IAAKga,EAAYha,IACjBr8D,QAASq2E,EAAYr2E,UAGzB1nB,KAAKktF,YAAYwR,EAAgBrpC,EAVjC,CAWJ,EAEA6lC,EAAoBl3F,UAAU26F,qBAAuB,SAA+BC,EAAkBC,GAKlG,IAJA,IAEIC,EAAiBzQ,GAAmBruF,KAAK+lD,OAAQ4uB,IAE5CkD,EAAW,EAAGA,EAAW73E,KAAK+lD,OAAO3rD,OAAQy9E,IAAY,CAC9D,IAAI6C,EALK16E,KAKkB+lD,OAAO8xB,GAClC,GAAI3uD,GAAQwxD,EAAcvnF,KAAM6nG,IAAc,CAC1C,IAAIvrC,EAAOirB,EAAcjrB,KACrBA,GAAQA,EAAKh5D,QAAUk8E,IACvBmsB,EAAe1vF,KAAKsrE,EAE5B,CACJ,CAEA,IAAK,IAAIY,EAAa,EAAGA,EAAawjB,EAAe1kG,OAAQkhF,IAAc,CACvE,IAAIyjB,EAAaD,EAAexjB,GAAYnE,cAAgB,GAC5D,GAAI4nB,IAAeH,IAAsBG,GAAoC,IAAtBF,EACnD,OAAO,CAEf,CACJ,EAEA3D,EAAoBl3F,UAAUg7F,eAAiB,SAAyBJ,EAAkBC,GAGtF,IAFA,IAAI94C,EAAS/lD,KAAK+lD,OAET8xB,EAAW,EAAGA,EAAW9xB,EAAO3rD,OAAQy9E,IAAY,CACzD,IAAIknB,EAAah5C,EAAO8xB,GAAUV,cAAgB,GAClD,IAAK4nB,IAAeH,IAAsBG,GAAoC,IAAtBF,IAA6B94C,EAAO8xB,GAAUklB,cAClG,OAAO,CAEf,CACJ,EAEA7B,EAAoBl3F,UAAUw3F,yBAA2B,WAErD,IADA,IAAIlmC,EAAOt1D,KAAKs1D,KACP5pD,EAAI,EAAGA,EAAI4pD,EAAKl7D,OAAQsR,IACzB4pD,EAAK5pD,aAAc+xD,IACnBnI,EAAK5pD,GAAG+mD,cAGpB,EAEAyoC,EAAoBl3F,UAAUs3F,mBAAqB,SAA6BxL,GAO5E,IANA,IAAItuD,EAASxhC,KAET+3E,EAAa/3E,KAAK+3E,WAClBknB,EAAc,GAAG92F,OAAOnI,KAAKsV,QAAQ6hE,cACrC7hB,EAAO,GAEF5pD,EAAI,EAAGA,EAAIuzF,EAAY7kG,OAAQsR,IAAK,CACzC,IAAIy8D,EAAc82B,EAAYvzF,GAG9B,GAAIwd,GAFWsY,EAAO6uD,SAASloB,EAAY9S,MAErBy6B,GAAQ,CAC1B,IAAIn/E,EAAOw3D,EAAYx3D,KACnBktD,EAAasK,EAAYtK,gBAAgC,IAAfA,IAAwBA,EAAa,IACnFsK,EAAcphD,GAAW,CACrB4jC,SAAUotB,EACV7pB,SAAU6pB,GAAcv2C,EAAOwiB,aAAagN,IAC5CgJ,kBAAmB+d,EAAa7zD,EAAY,GAC7CikD,GAEEhjD,GAAQgjD,EAAYrO,aACrBqO,EAAYrO,UAAYt4B,EAAO09D,eAG/B19D,EAAOm9D,qBAAqBhuF,EAAMjF,KAClCy8D,EAAYrO,WAAY,GAG5B,IAAIqd,OAAgB,EAUpB,GAPIA,EADAqX,GAAWrmB,EAAatK,EAAW,IACpB,IAAI4G,GAAiB0D,EAAa3mC,EAAOwiB,cAEzC,IAAIyZ,GAAa0K,EAAa3mC,EAAOwiB,cAGxDi7C,EAAYvzF,GAAGmyD,WAAasZ,EAAa7hE,QAAQwoD,cAE7CntD,EAAM,CACN,GAAI6wB,EAAO25D,kBAAkBxqF,GACzB,MAAM,IAAIvQ,MAAO,2BAA6BuQ,EAAO,uBAEzD6wB,EAAO25D,kBAAkBxqF,GAAQwmE,CACrC,CAEAA,EAAaiE,UAAY1vE,EACzB4pD,EAAKlmD,KAAK+nE,GACV31C,EAAOwrD,WAAW7V,EACtB,CACJ,CAEA,IAAIgoB,EAAcn/F,KAAKm3E,cAAgB7hB,EAAK,GAC5Ct1D,KAAKm3E,aAAegoB,EAEhBpnB,EACA/3E,KAAKyzD,MAAQ0rC,EAEbn/F,KAAKwzD,MAAQ2rC,CAErB,EAEAjE,EAAoBl3F,UAAUk7F,YAAc,WAGxC,IAFA,IAAIn5C,EAAS/lD,KAAK+lD,OAETr6C,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAAK,CAEpC,IAAKwd,GADe68B,EAAOr6C,GACAvY,KAAM6nG,IAC7B,OAAO,CAEf,CAEA,OAAO,CACX,EAEAE,EAAoBl3F,UAAU03F,gBAAkB,SAA0B5L,GACtE,IAAItuD,EAASxhC,KAETo/F,EAAUp/F,KAAKo7F,sBACfiE,EAAeD,EAAQtc,QACvBmc,EAAc,GAAG92F,OAAOnI,KAAKsV,QAAQkpD,WACrCuZ,EAAa/3E,KAAK+3E,WAClBunB,EAAc,CAAE30C,UAAWotB,EAAY7pB,QAAS6pB,GAAc/3E,KAAKgkD,aAAagN,KAChFsE,EAAO,GAEPt1D,KAAKq7F,WACLiE,EAAY73B,kBAAmB,EAC/B63B,EAAYttC,OAAS,CAAE7wC,OAAQ,OAGnC,IAAK,IAAIzV,EAAI,EAAGA,EAAIuzF,EAAY7kG,OAAQsR,IAAK,CACzC,IAAIy8D,EAAc82B,EAAYvzF,GAG9B,GAAIwd,GAFWsY,EAAO6uD,SAASloB,EAAY9S,MAErBy6B,GAAQ,CAC1B,IAAIn/E,EAAOw3D,EAAYx3D,KACnB4uF,EAAmBnR,GAAiBjmB,EAAYh1E,KAAMuiF,IAAe,CAAE/mD,IAAK,GAAKnD,IAAK,GAAM,CAAEmD,IAAK,EAAGnD,IAAK,GAC3GksB,EAAQ0nD,EAAQtc,MAAMnyE,IAAS0uF,GAAgBE,EAEzC,IAAN7zF,GAAWgsC,GAAS2nD,IACpB3nD,EAAM/oB,IAAM7N,KAAK6N,IAAI+oB,EAAM/oB,IAAK0wE,EAAa1wE,KAC7C+oB,EAAMlsB,IAAM1K,KAAK0K,IAAIksB,EAAMlsB,IAAK6zE,EAAa7zE,MAGjD,IAOIgzC,EAAY,IANZ4vB,GAAiBjmB,EAAYh1E,KAAMuiF,IACxBjM,GAEA1C,IAGcrvB,EAAM/oB,IAAK+oB,EAAMlsB,IAC1CzE,GAAW,CAAC,EAAGu4E,EAAan3B,GAC5B3mC,EAAOwiB,cAGX,GAAIrzC,EAAM,CACN,GAAI6wB,EAAO+4C,eAAe5pE,GACtB,MAAM,IAAIvQ,MAAO,wBAA0BuQ,EAAO,uBAEtD6wB,EAAO+4C,eAAe5pE,GAAQ6tD,CAClC,CACAA,EAAU4c,UAAY1vE,EAEtB4pD,EAAKlmD,KAAKovD,GACVh9B,EAAOwrD,WAAWxuB,EACtB,CACJ,CAEA,IAAI2gC,EAAcn/F,KAAKw+D,WAAalJ,EAAK,GACzCt1D,KAAKw+D,UAAY2gC,EAEbpnB,EACA/3E,KAAKwzD,MAAQ2rC,EAEbn/F,KAAKyzD,MAAQ0rC,CAErB,EAEAjE,EAAoBl3F,UAAUgzF,eAAiB,SAAyBjmC,EAAO/9D,EAAGwsG,GAC9E,IAAI3hB,EAAS9sB,EAAM0uC,kBAAkBzsG,GACjCkyC,EAAQ,IAAID,GAAM44C,EAAO93D,EAAG83D,EAAO73D,GACnCqvC,EAAOr1D,KAAK0/F,UAAUx6D,GACtB24B,EAAa,GACb9tD,EAAS,GAEb,GAAKslD,EAAL,CAKA,IADA,IAAIi4B,EAAUj4B,EAAKC,KACV5pD,EAAI,EAAGA,EAAI4hF,EAAQlzF,OAAQsR,IAAK,CACrC,IAAIq/B,EAAOuiD,EAAQ5hF,GACfq/B,EAAK09B,SACLulB,GAAgBj+E,EAAQg7B,EAAK09B,SAASvjC,IAEtC8oD,GAAgBnwB,EAAY9yB,EAAK+0B,YAAY56B,GAErD,CAE0B,IAAtB24B,EAAWzjE,QACX4zF,GAAgBnwB,EAAY79D,KAAKm3E,aAAarX,YAAY56B,IAG1D24B,EAAWzjE,OAAS,GAAK2V,EAAO3V,OAAS,GACzC22D,EAAMhnC,QAAQy1E,EAAW,CACrBhsG,QAAS46B,GAAap7B,GACtBgpF,cAAehpF,EACfizD,SAAU0oC,GAAkB9wB,GAC5B1gE,MAAOwxF,GAAkB5+E,IArBjC,CAwBJ,EAEAmrF,EAAoBl3F,UAAU07F,UAAY,SAAoBx6D,GAG1D,IAFA,IAAI4qD,EAAQ9vF,KAAK8vF,MAERpkF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAAK,CACnC,IAAIskF,EAAcF,EAAMpkF,GACxB,GAAIskF,EAAY/oC,WAAWpd,cAAc3E,GACrC,OAAO8qD,CAEf,CACJ,EAEAkL,EAAoBl3F,UAAU27F,kBAAoB,SAA8B50D,EAAMz1B,GAClFqqF,GAAkB3/F,KAAKsV,QAASy1B,EAAMz1B,GACtCqqF,GAAkB3/F,KAAKyvF,gBAAiB1kD,EAAMz1B,EAClD,EAEO4lF,CACX,CAzuB2B,CAyuBzB7L,IAEF,SAASsQ,GAAkBC,EAAe70D,EAAMz1B,GAE5CyR,GADiD,GAAG5e,OAAlC4iC,aAAgB0yB,GAAyBmiC,EAAczoB,aAA0ByoB,EAAcphC,WAC1FzzB,EAAKqwC,WAAY9lE,EAC5C,CAEA,SAAS6oF,GAAYp4C,EAAQhb,EAAMymD,GAC/B,OAAO7oE,GAAKo9B,GAAQ,SAASt6C,GACzB,OAAmB,IAAX+lF,IAAiB/lF,EAAE0rE,cAAkB1rE,EAAE0rE,eAAiBpsC,CACpE,GACJ,CAEApV,GAAkBulE,GAAqB,CACnC/jB,aAAc,CAAC,EACf3Y,UAAW,CAAC,IAGhBz3C,GAAWm0E,GAAoBl3F,UAAW+yF,IAE1C,UC3xBI8I,GAAc,SAAU5uE,GACxB,SAAS4uE,IACL5uE,EAAMjuB,KAAKhD,MAEXA,KAAK8/F,QAAU,CAAC,CACpB,CAmHA,OAjHK7uE,IAAQ4uE,EAAW90F,UAAYkmB,GACpC4uE,EAAW77F,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACrD67F,EAAW77F,UAAUqH,YAAcw0F,EAEnCA,EAAW77F,UAAUjE,KAAO,SAAe8vB,EAAWhG,EAAUk2E,GAC5D,IAAI/4E,EAAcjf,UACdy5B,EAASxhC,KAET8vB,EAAakwE,GAASnwE,GACtBowE,EAAqB75E,GAAWyD,GAChCzvB,EAAS01B,EAAW11B,OAExB,QAAiB3G,IAAbo2B,EAAwB,CACxB,IAAK,IAAI/L,KAAS+R,EACd2R,EAAOzhC,KAAK+d,EAAO+R,EAAU/R,IAEjC,OAAO9d,IACX,CAqBA,IAnBA,IAAIkjD,EAAO,SAAWzuC,GAClB,IAAIyrF,EAAcpwE,EAAWrb,GAEzBnO,EAAU25F,EAAqBp2E,EAAWA,EAASq2E,GAEvD,GAAI55F,EAAS,CACT,GAAIy5F,EAAK,CACL,IAAII,EAAW75F,GACfA,EAAU,WACNk7B,EAAO4+D,OAAOF,EAAa55F,GAC3B65F,EAASj4F,MAAMs5B,EAAQxa,EAC3B,GACQm5E,SAAWA,CACvB,EACa3+D,EAAOs+D,QAAQI,GAAe1+D,EAAOs+D,QAAQI,IAAgB,IACnE9wF,KAAK9I,EAChB,CACJ,EAESmO,EAAM,EAAGA,EAAMra,EAAQqa,IAAOyuC,EAAMzuC,GAE7C,OAAOzU,IACX,EAEA6/F,EAAW77F,UAAU+7F,IAAM,SAAcjwE,EAAYjG,GACjD,OAAO7pB,KAAKD,KAAK+vB,EAAYjG,GAAU,EAC3C,EAEAg2E,EAAW77F,UAAU8nB,MAAQ,SAAgB+D,EAAWhG,GAMpD,IALA,IAEIiG,EAAakwE,GAASnwE,GACtBowE,EAAqB75E,GAAWyD,GAE3BpV,EAAM,EAAGra,EAAS01B,EAAW11B,OAAQqa,EAAMra,EAAQqa,IAAO,CAC/D,IAAIyrF,EAAcpwE,EAAWrb,GAEzBnO,EAAU25F,EAAqBp2E,EAAWA,EAASq2E,GAEvD,GAAI55F,GAVKtG,KAWe8/F,QAAQI,GAXvBlgG,KAW6C8/F,QAAQI,IAAgB,IACnEvsD,QAAQrtC,EAEvB,CAEA,OAAOtG,IACX,EAEA6/F,EAAW77F,UAAU+lB,QAAU,SAAkB8F,EAAW78B,QAE7C,IAANA,IAAeA,EAAI,CAAC,GAEzB,IAAI48B,EAAS5vB,KAAK8/F,QAAQjwE,GAE1B,GAAID,EAAQ,CACR,IAAIx1B,EAASw1B,EAAOx1B,OAEpBpH,EAAE+wD,OAAS/jD,KACXhN,EAAEqtG,mBAAoB,EACtBrtG,EAAE88D,eAAiBA,GACnB98D,EAAEg3B,mBAAqBA,GAEvB4F,EAASA,EAAOlV,QAEhB,IAAK,IAAIjG,EAAM,EAAGA,EAAMra,EAAQqa,IAC5Bmb,EAAOnb,GAAKzR,KAhBPhD,KAgBoBhN,GAG7B,OAA+B,IAAxBA,EAAEqtG,iBACb,CAEA,OAAO,CACX,EAEAR,EAAW77F,UAAUo8F,OAAS,SAAiBvwE,EAAWvpB,GACtD,IAAIspB,EAAS5vB,KAAK8/F,QAAQjwE,GAE1B,QAAkBp8B,IAAdo8B,EACA7vB,KAAK8/F,QAAU,CAAC,OACb,GAAIlwE,EACP,GAAItpB,EACA,IAAK,IAAImO,EAAMmb,EAAOx1B,OAAS,EAAGqa,GAAO,EAAGA,IACpCmb,EAAOnb,KAASnO,GAAWspB,EAAOnb,GAAK0rF,WAAa75F,GACpDspB,EAAOwW,OAAO3xB,EAAK,QAI3BzU,KAAK8/F,QAAQjwE,GAAa,GAIlC,OAAO7vB,IACX,EAEO6/F,CACX,CAzHkB,CAyHhB5uE,IAEF,SAAS7K,GAAWjpB,GAChB,MAAwB,oBAAVA,CAClB,CAEA,SAAS6iG,GAAS7iG,GACd,MAAwB,kBAAVA,EAAqB,CAAEA,GAAUA,CACnD,CAEA,SAAS2yD,KACL9vD,KAAKqgG,mBAAoB,CAC7B,CAEA,SAASr2E,KACL,OAAkC,IAA3BhqB,KAAKqgG,iBAChB,CAEA,ICxIIzwE,GAAS,CACT,QACA,aACA,aACA,YACA,UAGA0wE,GAAW,SAAUT,GACrB,SAASS,EAAQ9sG,EAAS8hB,GACtBuqF,EAAW78F,KAAKhD,MAEhBA,KAAKsV,QAAUzK,OAAOW,OAAO,CAAC,EAAG8J,GACjCtV,KAAKxM,QAAUA,EACfwM,KAAKxM,QAAQ+sG,mBAAqBvgG,KAAKwgG,aAAazgG,KAAKC,MAEzDA,KAAKygG,OAASzgG,KAAK0gG,SAAS,SAC5B1gG,KAAK2gG,YAAc3gG,KAAK0gG,SAAS,cACjC1gG,KAAK4gG,YAAc5gG,KAAK0gG,SAAS,cACjC1gG,KAAK6gG,WAAa7gG,KAAK0gG,SAAS,aAEhC1gG,KAAK8gG,QAAU,IAAI9/C,GAEnBtwB,GAAYl9B,EAASwM,KAAKsV,SAE1BtV,KAAKD,KAAK6vB,GAAQ5vB,KAAKsV,SAEvBtV,KAAK+gG,iBACT,CAyIA,OAvIKlB,IAAaS,EAAQv1F,UAAY80F,GACtCS,EAAQt8F,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAC5Ds8F,EAAQt8F,UAAUqH,YAAci1F,EAEhCA,EAAQt8F,UAAUm8C,KAAO,SAAe3sD,GACpCwM,KAAK8gG,QAAQltG,SAASwb,KAAK5b,EAC/B,EAEA8sG,EAAQt8F,UAAUi/B,MAAQ,WACtBjjC,KAAK8gG,QAAQltG,SAAW,EAC5B,EAEA0sG,EAAQt8F,UAAUs/C,QAAU,WACxBtjD,KAAK8gG,QAAU,KACf9gG,KAAKxM,QAAQ+sG,mBAAqB,KAClCvgG,KAAKogG,QACT,EAEAE,EAAQt8F,UAAUg9F,YAAc,SAAsBhuG,GAMlD,IALA,IAGIuT,EADA06F,EAAU7yE,GAAap7B,IAGnBuT,GAAQ06F,IACZ16F,EAAO06F,EAAQC,WACXD,IAPKjhG,KAOcxM,UAIvBytG,EAAUA,EAAQpuE,cAGtB,GAAItsB,EACA,OAAOA,EAAK46F,UAEpB,EAEAb,EAAQt8F,UAAUw8F,aAAe,WAC7B,OAAOxgG,KAAK8gG,OAChB,EAEAR,EAAQt8F,UAAUglC,QAAU,WACxB,OAAOtY,GAAY1wB,KAAKxM,QAC5B,EAEA8sG,EAAQt8F,UAAUo9F,YAAc,SAAsBxqG,GAClD,IAAIA,EAGA,OAAOoJ,KAAKgzB,MAFZhzB,KAAKgzB,MAAQp8B,CAIrB,EAEA0pG,EAAQt8F,UAAU4kC,QAAU,SAAkBhyC,GAC1C85B,GAAY1wB,KAAKxM,QAASoD,GAE1BoJ,KAAKohG,YAAYxqG,GACjBoJ,KAAKqhG,SACT,EAEAf,EAAQt8F,UAAUs9F,OAAS,SAAiBC,GACxC,IAAI3qG,EAAOoJ,KAAKgpC,UACZo4D,EAAcphG,KAAKohG,eAEnBG,IAAU3qG,EAAKpC,MAAQ,GAAKoC,EAAKnC,OAAS,MAAQ2sG,GAAexqG,EAAKpC,QAAU4sG,EAAY5sG,OAASoC,EAAKnC,SAAW2sG,EAAY3sG,WACjIuL,KAAKohG,YAAYxqG,GACjBoJ,KAAKqhG,QAAQzqG,EAAM2qG,GACnBvhG,KAAK+pB,QAAQ,SAAUnzB,GAE/B,EAEA0pG,EAAQt8F,UAAUpN,KAAO,SAAeuG,GACpC,IAAKA,EACD,OAAO6C,KAAKgpC,UAGhBhpC,KAAK4oC,QAAQzrC,EACjB,EAEAmjG,EAAQt8F,UAAUw9F,gBAAkB,WAChCxhG,KAAKyhG,oBAAqB,CAC9B,EAEAnB,EAAQt8F,UAAU09F,eAAiB,WAC/B1hG,KAAKyhG,oBAAqB,CAC9B,EAEAnB,EAAQt8F,UAAU+8F,gBAAkB,WAA6B,EAEjET,EAAQt8F,UAAUq9F,QAAU,WAAqB,EAEjDf,EAAQt8F,UAAU08F,SAAW,SAAmB7wE,GAC5C,IAAI2R,EAASxhC,KAEb,OAAO,SAAUhN,GACb,IAAIuT,EAAOi7B,EAAOw/D,YAAYhuG,GAC1BuT,IAASi7B,EAAOigE,oBAChBjgE,EAAOzX,QAAQ8F,EAAW,CACtBr8B,QAAS+S,EACTy1E,cAAehpF,EACfG,KAAM08B,GAGlB,CACJ,EAEAywE,EAAQt8F,UAAU29F,eAAiB,WAC/B,IAAInuG,EAAUwM,KAAKxM,QACf63C,EAAUxa,GAAer9B,GACzBjB,EAAMy9B,GAAcx8B,GACpBs0B,EAAOv1B,EAAIu1B,KACXH,EAAMp1B,EAAIo1B,IAEd,MAAO,CACHG,KAAMA,EAAOujB,EAAQvjB,KACrBH,IAAKA,EAAM0jB,EAAQ1jB,IAE3B,EAEA24E,EAAQt8F,UAAU49F,cAAgB,SAAwB5uG,GACtD,IAAIsyB,EAAStlB,KAAK2hG,iBACdE,EAAQ9zE,GAAiB/6B,GACzB+yB,EAAI87E,EAAM97E,EAAIT,EAAOwC,KACrB9B,EAAI67E,EAAM77E,EAAIV,EAAOqC,IAErBm6E,EAAmBnvE,GAAa3yB,KAAKxM,SAAS49B,SAMlD,OALY,IAAI6T,GACZlf,EACAC,GACFsM,UAAUwvE,EAGhB,EAEOxB,CACX,CA9Je,CDgIf,ICgCA,MC3KIyB,GAAY,SAAU9wE,GACtB,SAAS8wE,EAASZ,GACdlwE,EAAMjuB,KAAKhD,MAEXA,KAAKgiG,WAAa,GAClBhiG,KAAK4yB,OAAS,KAEVuuE,IACAnhG,KAAKmhG,WAAaA,EAClBnhG,KAAKiiG,UAEb,CAkFA,OAhFKhxE,IAAQ8wE,EAASh3F,UAAYkmB,GAClC8wE,EAAS/9F,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnD+9F,EAAS/9F,UAAUqH,YAAc02F,EAEjCA,EAAS/9F,UAAUs/C,QAAU,WAGrBtjD,KAAKmhG,YACLnhG,KAAKmhG,WAAWh7D,eAAenmC,MAInC,IADA,IAAIpM,EAAWoM,KAAKgiG,WACXt2F,EAAI,EAAGA,EAAI9X,EAASwG,OAAQsR,IAPxB1L,KAQFgiG,WAAWt2F,GAAG43C,UAGzBtjD,KAAK4yB,OAAS,IAClB,EAEAmvE,EAAS/9F,UAAUyxB,KAAO,WAAkB,EAE5CssE,EAAS/9F,UAAUi+F,QAAU,WACrBjiG,KAAKmhG,YACLnhG,KAAKmhG,WAAWj7D,YAAYlmC,KAEpC,EAEA+hG,EAAS/9F,UAAU6nB,OAAS,SAAiBtlB,GACzCvG,KAAKgiG,WAAW5yF,KAAK7I,GACrBA,EAAKqsB,OAAS5yB,IAClB,EAEA+hG,EAAS/9F,UAAUq9C,SAAW,SAAmB96C,EAAMgP,GACnDvV,KAAKgiG,WAAW57D,OAAO7wB,EAAK,EAAGhP,GAC/BA,EAAKqsB,OAAS5yB,IAClB,EAEA+hG,EAAS/9F,UAAU2D,OAAS,SAAiBrN,EAAOo/C,GAIhD,IAHA,IAEIlwB,EAAMlvB,EAAQo/C,EACThuC,EAAIpR,EAAOoR,EAAI8d,EAAK9d,IAHhB1L,KAIFgiG,WAAWt2F,GAAGw2F,aAEzBliG,KAAKgiG,WAAW57D,OAAO9rC,EAAOo/C,EAClC,EAEAqoD,EAAS/9F,UAAUk+F,WAAa,WAC5BliG,KAAKijC,QACLjjC,KAAKsjD,SACT,EAEAy+C,EAAS/9F,UAAUi/B,MAAQ,WACvBjjC,KAAK2H,OAAO,EAAG3H,KAAKgiG,WAAW5nG,OACnC,EAEA2nG,EAAS/9F,UAAUm+F,WAAa,WACxBniG,KAAK4yB,QACL5yB,KAAK4yB,OAAOuvE,YAEpB,EAEAJ,EAAS/9F,UAAUwiC,eAAiB,WAChCxmC,KAAKmiG,YACT,EAEAJ,EAAS/9F,UAAUuiC,cAAgB,WAC/BvmC,KAAKmiG,YACT,EAEAJ,EAAS/9F,UAAUi9C,eAAiB,SAAyBjuD,GACxC,QAAbA,EAAEmgB,OACFnT,KAAKy1B,KAAKziC,EAAEkuD,MAAOluD,EAAEsH,OACD,WAAbtH,EAAEmgB,QACTnT,KAAK2H,OAAO3U,EAAEsH,MAAOtH,EAAEkuD,MAAM9mD,QAGjC4F,KAAKmiG,YACT,EAEOJ,CACX,CA9FgB,CA8Fd9wE,IAEF,MChGe,SAASmxE,GAAWzxF,EAAMxT,GACrC,OAAQgoB,EAAQhoB,IAAoB,OAAVA,EAAmB,IAAMwT,EAAO,KAAQxT,EAAQ,KAAS,EACvF,CCFe,SAASklG,GAAcC,GAElC,IADA,IAAI5tF,EAAS,GACJhJ,EAAI,EAAGA,EAAI42F,EAAMloG,OAAQsR,IAC9BgJ,GAAU0tF,GAAWE,EAAM52F,GAAG,GAAI42F,EAAM52F,GAAG,IAG/C,OAAOgJ,CACX,CCPe,SAAS6tF,GAAYD,GAEhC,IADA,IAAI5tF,EAAS,GACJhJ,EAAI,EAAGA,EAAI42F,EAAMloG,OAAQsR,IAAK,CACnC,IAAIvO,EAAQmlG,EAAM52F,GAAG,GACjByZ,EAAQhoB,KACRuX,GAAU4tF,EAAM52F,GAAG,GAAK,IAAMvO,EAAQ,IAE9C,CAEA,GAAe,KAAXuX,EACA,OAAOA,CAEf,CCdA,IAEA,GAFe,CAAC,ECAZ8tF,GAAS,6BACTn+E,GAAO,OCCPo+E,GAAY,SAASvgF,EAAWwgF,GAChCxgF,EAAUygF,UAAYD,CAC1B,EAEA,GAAwB,qBAAb5pG,SAA0B,CACjC,IACI8pG,GAAgB9pG,SAASomB,cAAc,OACvC2jF,GAAiC,qBAAdC,UAEvBF,GAAcD,UAJK,iDAMfE,IAAaD,GAAcG,WAAWC,eAAiBR,KACvDC,GAAY,SAASvgF,EAAWwgF,GAC5B,IACIO,GADS,IAAIH,WACKI,gBAAgBR,EAAK,YACvCS,EAAcrqG,SAASsqG,UAAUH,EAAS9yE,iBAE9CjO,EAAUygF,UAAY,GACtBzgF,EAAU1C,YAAY2jF,EAC1B,EAER,CAEA,UCfIE,GAAY,YACZC,GAAgB,CAChBpuD,KAAM,YACNa,KAAM,QAGV,SAASwtD,GAAapwG,EAAMgK,GACxB,MAAgB,SAAThK,GAA6B,SAATA,KAAqBgK,GAA4B,aAAnBA,EAAM83C,SACnE,CAmBA,IAAIuuD,GAAQ,SAAUzB,GAClB,SAASyB,EAAKrC,EAAY7rF,GACtBysF,EAAS/+F,KAAKhD,KAAMmhG,GACpBnhG,KAAKi/F,YAAc,CAAC,EAEpBj/F,KAAKsV,QAAUA,CACnB,CAgVA,OA9UKysF,IAAWyB,EAAKz4F,UAAYg3F,GACjCyB,EAAKx/F,UAAY6G,OAAOS,OAAQy2F,GAAYA,EAAS/9F,WACrDw/F,EAAKx/F,UAAUqH,YAAcm4F,EAE7BA,EAAKx/F,UAAUs/C,QAAU,WACjBtjD,KAAKxM,UACLwM,KAAKxM,QAAQ0tG,WAAa,KAC1BlhG,KAAKxM,QAAU,MAGnBwM,KAAKyjG,mBACL1B,EAAS/9F,UAAUs/C,QAAQtgD,KAAKhD,KACpC,EAEAwjG,EAAKx/F,UAAUyxB,KAAO,SAAeqe,EAAUv+B,GAG3C,IAFA,IAAIisB,EAASxhC,KAEJ0L,EAAI,EAAGA,EAAIooC,EAAS15C,OAAQsR,IAAK,CACtC,IAAIy1F,EAAartD,EAASpoC,GACtB9X,EAAWutG,EAAWvtG,SAEtB8vG,EAAY,IAAIC,GAASxC,EAAWlsD,UAAUksD,EAAY3/D,EAAOlsB,SAEjE6P,EAAQ5P,GACRisB,EAAO6f,SAASqiD,EAAWnuF,GAE3BisB,EAAO3V,OAAO63E,GAGlBA,EAAUE,oBAENhwG,GAAYA,EAASwG,OAAS,GAC9BspG,EAAUjuE,KAAK7hC,GAGnB,IAAIJ,EAAUguC,EAAOhuC,QACjBA,GACAkwG,EAAUG,SAASrwG,EAAS+hB,EAEpC,CACJ,EAEAiuF,EAAKx/F,UAAU47E,KAAO,WAGlB,IAFA,IAAIA,EAAO5/E,KAEJ4/E,EAAKhtD,QACRgtD,EAAOA,EAAKhtD,OAGhB,OAAOgtD,CACX,EAEA4jB,EAAKx/F,UAAU6/F,SAAW,SAAmBC,EAAYvuF,GACrD,IAAI2M,EAAYppB,SAASomB,cAAc,OACvCujF,GAAUvgF,EACN,eAAiBsgF,GAAS,mBACtBxiG,KAAK5G,SACT,UAGJ,IAAI5F,EAAU0uB,EAAU6gF,WAAWA,WAC/BvvG,IACI2xB,EAAQ5P,GACRuuF,EAAWC,aAAavwG,EAASswG,EAAW9B,WAAWzsF,IAAQ,MAE/DuuF,EAAWtkF,YAAYhsB,GAE3BwM,KAAKgkG,WAAWxwG,GAExB,EAEAgwG,EAAKx/F,UAAUggG,WAAa,SAAqBxwG,GACzCwM,KAAKxM,UACLwM,KAAKxM,QAAQ0tG,WAAa,MAG9BlhG,KAAKxM,QAAUA,EACfwM,KAAKxM,QAAQ0tG,WAAalhG,KAG1B,IADA,IAAIikG,EAAQjkG,KAAKgiG,WACRt2F,EAAI,EAAGA,EAAIu4F,EAAM7pG,OAAQsR,IAAK,CACnC,IAAIw4F,EAAe1wG,EAAQwuG,WAAWt2F,GACtCu4F,EAAMv4F,GAAGs4F,WAAWE,EACxB,CACJ,EAEAV,EAAKx/F,UAAUi/B,MAAQ,WACnBjjC,KAAKyjG,mBAEDzjG,KAAKxM,UACLwM,KAAKxM,QAAQmvG,UAAY,IAI7B,IADA,IAAI/uG,EAAWoM,KAAKgiG,WACXt2F,EAAI,EAAGA,EAAI9X,EAASwG,OAAQsR,IACjC9X,EAAS8X,GAAG43C,UAGhBtjD,KAAKgiG,WAAa,EACtB,EAEAwB,EAAKx/F,UAAUk+F,WAAa,WACxB,GAAIliG,KAAKxM,QAAS,CACd,IAAIshC,EAAa90B,KAAKxM,QAAQshC,WAC1BA,GACAA,EAAWpV,YAAY1f,KAAKxM,SAEhCwM,KAAKxM,QAAU,IACnB,CAEAuuG,EAAS/9F,UAAUk+F,WAAWl/F,KAAKhD,KACvC,EAEAwjG,EAAKx/F,UAAUgkB,SAAW,WACtB,OAAOhoB,KAAKskD,gBAChB,EAEAk/C,EAAKx/F,UAAU5K,OAAS,WACpB,OAAO4G,KAAKgoB,UAChB,EAEAw7E,EAAKx/F,UAAUsgD,eAAiB,WAI5B,IAHA,IAAI2/C,EAAQjkG,KAAKgiG,WACbttF,EAAS,GAEJhJ,EAAI,EAAGA,EAAIu4F,EAAM7pG,OAAQsR,IAC9BgJ,GAAUuvF,EAAMv4F,GAAGtS,SAGvB,OAAOsb,CACX,EAEA8uF,EAAKx/F,UAAUuiC,cAAgB,SAAwBvzC,GACnD,IAAI8qB,EAAQ9qB,EAAE8qB,MACV3gB,EAAQnK,EAAEmK,MAEA,YAAV2gB,EACA9d,KAAKmkG,IAAI,UAAWhnG,EAAQ,GAAKknB,IAC1Bi/E,GAAcxlF,IAAUylF,GAAazlF,EAAO3gB,GACnD6C,KAAKokG,iBAAiBtmF,EAAO3gB,GACZ,YAAV2gB,EACP9d,KAAKqkG,KAAK,UAAWlnG,GACJ,WAAV2gB,EACP9d,KAAKmkG,IAAI,SAAUhnG,GACF,OAAV2gB,IACH3gB,EACA6C,KAAKqkG,KAAK,KAAMlnG,GAEhB6C,KAAKskG,WAAW,OAIxBvC,EAAS/9F,UAAUuiC,cAAcvjC,KAAKhD,KAAMhN,EAChD,EAEAwwG,EAAKx/F,UAAUqgG,KAAO,SAAe1zF,EAAMxT,GACnC6C,KAAKxM,SACLwM,KAAKxM,QAAQE,aAAaid,EAAMxT,EAExC,EAEAqmG,EAAKx/F,UAAUugG,QAAU,SAAkBjC,GAGvC,IAFA,IAES52F,EAAI,EAAGA,EAAI42F,EAAMloG,OAAQsR,IAFrB1L,KAGFqkG,KAAK/B,EAAM52F,GAAG,GAAI42F,EAAM52F,GAAG,GAE1C,EAEA83F,EAAKx/F,UAAUmgG,IAAM,SAAcxzF,EAAMxT,GACjC6C,KAAKxM,UACLwM,KAAKxM,QAAQiD,MAAMka,GAAQxT,EAEnC,EAEAqmG,EAAKx/F,UAAUwgG,OAAS,SAAiBh6F,GAGrC,IAFA,IAESkB,EAAI,EAAGA,EAAIlB,EAAOpQ,OAAQsR,IAFtB1L,KAGFmkG,IAAI35F,EAAOkB,GAAG,GAAIlB,EAAOkB,GAAG,GAE3C,EAEA83F,EAAKx/F,UAAUsgG,WAAa,SAAqB3zF,GACzC3Q,KAAKxM,SACLwM,KAAKxM,QAAQG,gBAAgBgd,EAErC,EAEA6yF,EAAKx/F,UAAUygG,aAAe,SAAuBnyE,GACjD,IAAIgwE,EAAQ,GAQZ,OAPIhwE,GACAgwE,EAAMlzF,KAAK,CACPi0F,GACA,UAAY/wE,EAAUnB,SAAS5wB,SAAS,GAAK,MAI9C+hG,CACX,EAEAkB,EAAKx/F,UAAU0gG,gBAAkB,WAC7B,OAAOrC,GACHriG,KAAKykG,aAAazkG,KAAKmhG,WAAW7uE,aAE1C,EAEAkxE,EAAKx/F,UAAU2gG,gBAAkB,SAA0BxnG,GACnDA,EACA6C,KAAKukG,QAAQvkG,KAAKykG,aAAatnG,IAE/B6C,KAAKskG,WAAWjB,GAExB,EAEAG,EAAKx/F,UAAU4gG,SAAW,WACtB,IAAItvF,EAAUtV,KAAKmhG,WAAW7rF,QAC1B7e,EAAQ,CAAE,CAAE,SAAU6e,EAAQgyC,SAMlC,OAJwB,IAApBhyC,EAAQvhB,SACR0C,EAAM2Y,KAAK,CAAE,UAAWiV,KAGrB5tB,CACX,EAEA+sG,EAAKx/F,UAAUu+F,YAAc,WACzB,OAAOH,GAAW,QAASG,GAAYviG,KAAK4kG,UAAS,IACzD,EAEApB,EAAKx/F,UAAU6gG,cAAgB,WAC3B,OAAOzC,GAAW,UAAWpiG,KAAKmhG,WAAW7rF,QAAQkgC,QACzD,EAEAguD,EAAKx/F,UAAU8gG,SAAW,WACtB,OAAO1C,GAAW,KAAMpiG,KAAKmhG,WAAW7rF,QAAQhf,GACpD,EAEAktG,EAAKx/F,UAAU4/F,kBAAoB,WAC/B,IAAIzC,EAAanhG,KAAKmhG,WAClBlC,EAAcj/F,KAAKi/F,YACvB,GAAIkC,EAAY,CACZ,IACI4D,EADAzvF,EAAU6rF,EAAW7rF,QAGzB,IAAK,IAAIwI,KAASwlF,GAAe,CAC7B,IAAI0B,EAAa1vF,EAAQlJ,IAAI0R,GACzBknF,GAAczB,GAAazlF,EAAOknF,KAClC/F,EAAYnhF,GAASknF,EACrBD,GAAiB,EAEzB,CACIA,GACA/kG,KAAKilG,iBAAiB,CAClB9xF,OAAQ,MACR8rF,YAAaA,GAGzB,CACJ,EAEAuE,EAAKx/F,UAAUihG,iBAAmB,SAA2BjyG,GACrDgN,KAAK4yB,QACL5yB,KAAK4yB,OAAOqyE,iBAAiBjyG,EAErC,EAEAwwG,EAAKx/F,UAAUogG,iBAAmB,SAA2BjxG,EAAMgK,GAC/D,IAAI8hG,EAAcj/F,KAAKi/F,YACnB1rG,EAAU0rG,EAAY9rG,GACtBkxG,EAAOf,GAAcnwG,GACrB6xG,EAAa,CAAC,EACdzxG,IACAyxG,EAAW7xG,GAAQI,EACnByM,KAAKilG,iBAAiB,CAClB9xF,OAAQ,SACR8rF,YAAa+F,WAEV/F,EAAY9rG,IAGlBgK,GAKD6nG,EAAW7xG,GAAQgK,EACnB6C,KAAKilG,iBAAiB,CAClB9xF,OAAQ,MACR8rF,YAAa+F,IAEjB/F,EAAY9rG,GAAQgK,EACpB6C,KAAKqkG,KAAKA,EAAMrkG,KAAKklG,OAAO/nG,EAAM7G,MAV9B/C,GACAyM,KAAKskG,WAAWD,EAW5B,EAEAb,EAAKx/F,UAAUy/F,iBAAmB,WAC9B,IAAIxE,EAAcj/F,KAAKi/F,YAEvBj/F,KAAKilG,iBAAiB,CAClB9xF,OAAQ,SACR8rF,YAAaA,IAEjBj/F,KAAKi/F,YAAc,CAAC,CACxB,EAEAuE,EAAKx/F,UAAUmhG,kBAAoB,WAC/B,OAAO9C,GAAcriG,KAAKolG,iBAC9B,EAEA5B,EAAKx/F,UAAUohG,eAAiB,WAC5B,IAEInG,EAAcj/F,KAAKi/F,YACnBqD,EAAQ,GAEZ,IAAK,IAAIxkF,KAASmhF,EACdqD,EAAMlzF,KAAK,CAAEk0F,GAAcxlF,GANlB9d,KAMiCklG,OAAOjG,EAAYnhF,GAAOxnB,MAGxE,OAAOgsG,CACX,EAEAkB,EAAKx/F,UAAUkhG,OAAS,SAAiB5uG,GACrC,IAAI+uG,GAAgBrlG,KAAKsV,SAAW,CAAC,GAAG+vF,aACpCC,EAAWtlG,KAAK4V,UAAUxT,QAAQ,KAAM,OAE5C,MAAQ,QADGijG,EAAe,GAAKC,GACP,IAAMhvG,EAAK,GACvC,EAEAktG,EAAKx/F,UAAU4R,QAAU,WACrB,OApWR,WACI,IAAInM,EAAO3Q,SAASysG,qBAAqB,QAAQ,GAC7CpmF,EAAOrmB,SAAS+Z,SAASsM,KACzB5iB,EAAM,GAEV,GAAIkN,KAAU2hB,GAAAA,SAAmB,CAAC,GAAGR,KAAM,CACvC,IAAI46E,EAAYrmF,EAAK9V,QAAQ,MACV,IAAfm8F,IACArmF,EAAOA,EAAK6nB,UAAU,EAAGw+D,IAG7BjpG,EAAM4iB,CACV,CAEA,OAAO5iB,CACX,CAqVeqZ,EACX,EAEO4tF,CACX,CAvVY,CAuVVzB,IAEF,MC3XI0D,GAAoB,SAAUjC,GAC9B,SAASiC,IACLjC,EAAKt7F,MAAMlI,KAAM+H,UACrB,CA8BA,OA5BKy7F,IAAOiC,EAAiB16F,UAAYy4F,GACzCiC,EAAiBzhG,UAAY6G,OAAOS,OAAQk4F,GAAQA,EAAKx/F,WACzDyhG,EAAiBzhG,UAAUqH,YAAco6F,EAEzCA,EAAiBzhG,UAAUgkB,SAAW,WAClC,MAAQ,SAAYhoB,KAAK0lG,eAAkB,IAAO1lG,KAAKuiG,cAAiB,KAC5E,EAEAkD,EAAiBzhG,UAAU0hG,aAAe,WACtC,OAAOtD,GAAW,SAAUpiG,KAAKmhG,WAAW77E,SAChD,EAEAmgF,EAAiBzhG,UAAU4gG,SAAW,WAClC,IAAIzD,EAAanhG,KAAKmhG,WACtB,MAAO,CACH,CAAE,aAAcA,EAAW3yE,SAC3B,CAAE,eAAgB2yE,EAAW3rD,WAErC,EAEAiwD,EAAiBzhG,UAAUuiC,cAAgB,SAAwBvzC,GAC/C,WAAZA,EAAE8qB,MACF9d,KAAKqkG,KAAKrxG,EAAE8qB,MAAO9qB,EAAEmK,OACF,UAAZnK,EAAE8qB,OAAiC,YAAZ9qB,EAAE8qB,OAChC9d,KAAKmkG,IAAI,QAAUnxG,EAAE8qB,MAAO9qB,EAAEmK,MAEtC,EAEOsoG,CACX,CAlCwB,CAkCtBjC,IAEF,MClCImC,GAAgB,SAAUnC,GAC1B,SAASmC,EAAaxE,GAClBqC,EAAKxgG,KAAKhD,KAAMmhG,GAEhBnhG,KAAK1J,GAAK6qG,EAAW7qG,GAErB0J,KAAK4lG,WACT,CAsCA,OApCKpC,IAAOmC,EAAa56F,UAAYy4F,GACrCmC,EAAa3hG,UAAY6G,OAAOS,OAAQk4F,GAAQA,EAAKx/F,WACrD2hG,EAAa3hG,UAAUqH,YAAcs6F,EAErCA,EAAa3hG,UAAU4hG,UAAY,WAM/B,IALA,IAEIv9C,EAAQroD,KAAKmhG,WAAW94C,MACxB70D,EAAUwM,KAAKxM,QAEVihB,EAAM,EAAGA,EAAM4zC,EAAMjuD,OAAQqa,IAAO,CACzC,IAAIoxF,EAAW,IAAIJ,GAAiBp9C,EAAM5zC,IANjCzU,KAOF6rB,OAAOg6E,GACVryG,GACAqyG,EAAShC,SAASrwG,EAE1B,CACJ,EAEAmyG,EAAa3hG,UAAUuiC,cAAgB,SAAwBvzC,GAC3C,mBAAZA,EAAE8qB,OACFikF,GAAAA,UAAAA,MAAAA,KAA8B/hG,MAC9BA,KAAK4lG,aACc,aAAZ5yG,EAAE8qB,OACT9d,KAAKukG,QAAQvkG,KAAK8lG,iBAE1B,EAEAH,EAAa3hG,UAAU+hG,kBAAoB,WACvC,OAAO1D,GAAcriG,KAAK8lG,iBAC9B,EAEAH,EAAa3hG,UAAUgiG,SAAW,WAC9B,MAAO,CAAE,gBAAiBhmG,KAAKmhG,WAAW34C,YAAc,iBAAmB,oBAC/E,EAEOm9C,CACX,CA9CoB,CA8ClBnC,IAEF,MCnDIyC,GAAsB,SAAUN,GAChC,SAASM,IACLN,EAAaz9F,MAAMlI,KAAM+H,UAC7B,CAyBA,OAvBK49F,IAAeM,EAAmBl7F,UAAY46F,GACnDM,EAAmBjiG,UAAY6G,OAAOS,OAAQq6F,GAAgBA,EAAa3hG,WAC3EiiG,EAAmBjiG,UAAUqH,YAAc46F,EAE3CA,EAAmBjiG,UAAUgkB,SAAW,WACpC,MAAQ,uBAA0BhoB,KAAK1J,GAAM,KAAQ0J,KAAK+lG,oBAAuB,IAAO/lG,KAAKskD,iBAAoB,mBACrH,EAEA2hD,EAAmBjiG,UAAU8hG,eAAiB,WAC1C,IAAI3E,EAAanhG,KAAKmhG,WAClB53E,EAAQ43E,EAAW53E,QACnBC,EAAM23E,EAAW33E,MASrB,MARY,CACR,CAAE,KAAMD,EAAMxD,GACd,CAAE,KAAMwD,EAAMvD,GACd,CAAE,KAAMwD,EAAIzD,GACZ,CAAE,KAAMyD,EAAIxD,GACZhmB,KAAKgmG,WAIb,EAEOC,CACX,CA7B0B,CA6BxBN,IAEF,MC/BIO,GAAsB,SAAUP,GAChC,SAASO,IACLP,EAAaz9F,MAAMlI,KAAM+H,UAC7B,CAuBA,OArBK49F,IAAeO,EAAmBn7F,UAAY46F,GACnDO,EAAmBliG,UAAY6G,OAAOS,OAAQq6F,GAAgBA,EAAa3hG,WAC3EkiG,EAAmBliG,UAAUqH,YAAc66F,EAE3CA,EAAmBliG,UAAUgkB,SAAW,WACpC,MAAQ,uBAA0BhoB,KAAK1J,GAAM,KAAQ0J,KAAK+lG,oBAAuB,IAAO/lG,KAAKskD,iBAAoB,mBACrH,EAEA4hD,EAAmBliG,UAAU8hG,eAAiB,WAC1C,IAAI3E,EAAanhG,KAAKmhG,WAClBh8D,EAASg8D,EAAWh8D,SACpBW,EAASq7D,EAAWr7D,SAOxB,MANY,CACR,CAAE,KAAMX,EAAOpf,GACf,CAAE,KAAMof,EAAOnf,GACf,CAAE,IAAK8f,GACP9lC,KAAKgmG,WAGb,EAEOE,CACX,CA3B0B,CA2BxBP,IAEF,MC7BIQ,GAAY,SAAU3C,GACtB,SAAS2C,EAAShF,GACdqC,EAAKxgG,KAAKhD,MAEVA,KAAKmhG,WAAaA,EAClBnhG,KAAK1J,GAAK6qG,EAAW7qG,GAErB0J,KAAKy1B,KAAK,CAAE0rE,GAChB,CAUA,OARKqC,IAAO2C,EAASp7F,UAAYy4F,GACjC2C,EAASniG,UAAY6G,OAAOS,OAAQk4F,GAAQA,EAAKx/F,WACjDmiG,EAASniG,UAAUqH,YAAc86F,EAEjCA,EAASniG,UAAUgkB,SAAW,WAC1B,MAAQ,iBAAoBhoB,KAAK1J,GAAM,KAAQ0J,KAAKskD,iBAAoB,aAC5E,EAEO6hD,CACX,CAnBgB,CAmBd3C,IAEF,MChBI4C,GAAkB,SAAU5C,GAC5B,SAAS4C,IACL5C,EAAKxgG,KAAKhD,MACVA,KAAKqmG,cAAgB,CAAC,CAC1B,CA0FA,OAxFK7C,IAAO4C,EAAer7F,UAAYy4F,GACvC4C,EAAepiG,UAAY6G,OAAOS,OAAQk4F,GAAQA,EAAKx/F,WACvDoiG,EAAepiG,UAAUqH,YAAc+6F,EAEvCA,EAAepiG,UAAU6/F,SAAW,SAAmBC,GACnD9jG,KAAKxM,QAAUswG,CACnB,EAEAsC,EAAepiG,UAAUgkB,SAAW,WAChC,MAAQ,SAAYhoB,KAAKskD,iBAAoB,SACjD,EAEA8hD,EAAepiG,UAAUihG,iBAAmB,SAA2BjyG,GACnE,IAAIisG,EAAcjsG,EAAEisG,YAChB9rF,EAASngB,EAAEmgB,OAEA,QAAXA,EACAnT,KAAKsmG,eAAerH,GACF,WAAX9rF,GACPnT,KAAKumG,kBAAkBtH,EAE/B,EAEAmH,EAAepiG,UAAUwiG,iBAAmB,SAA2BrzG,EAAM8iC,GACzE,IAAIgf,EAUJ,MATa,SAAT9hD,EACA8hD,EAAWkxD,GACK,SAAThzG,IACH8iC,aAAgB2yB,GAChB3T,EAAWgxD,GACJhwE,aAAgB4yB,KACvB5T,EAAWixD,KAGZ,IAAIjxD,EAAShf,EACxB,EAEAmwE,EAAepiG,UAAUsiG,eAAiB,SAAyBrH,GAG/D,IAAK,IAAInhF,KAASmhF,EAFLj/F,KAGFymG,cAAc3oF,EAAOmhF,EAAYnhF,GAEhD,EAEAsoF,EAAepiG,UAAUyiG,cAAgB,SAAwBtzG,EAAMguG,GACnE,IACI3tG,EADMwM,KACQxM,QACd6yG,EAFMrmG,KAEcqmG,cACpB/vG,EAAK6qG,EAAW7qG,GAChBowG,EAAUL,EAAc/vG,GAC5B,GAAKowG,EAWDA,EAAQhtD,YAXE,CACV,IAAInzC,EAAOvG,KAAKwmG,iBAAiBrzG,EAAMguG,GACvCkF,EAAc/vG,GAAM,CAChB9C,QAAS+S,EACTmzC,MAAO,GAEX15C,KAAK6rB,OAAOtlB,GACR/S,GACA+S,EAAKs9F,SAAS7jG,KAAKxM,QAE3B,CAGJ,EAEA4yG,EAAepiG,UAAUuiG,kBAAoB,SAA4BtH,GAGrE,IAAK,IAAInhF,KAASmhF,EAFLj/F,KAGF2mG,iBAAiB1H,EAAYnhF,GAE5C,EAEAsoF,EAAepiG,UAAU2iG,iBAAmB,SAA2BxF,GACnE,IAAIkF,EAAgBrmG,KAAKqmG,cACrB/vG,EAAK6qG,EAAW7qG,GAChBowG,EAAUL,EAAc/vG,GAExBowG,IACAA,EAAQhtD,QACc,IAAlBgtD,EAAQhtD,QACR15C,KAAK2H,OAAO3H,KAAKgiG,WAAW34F,QAAQq9F,EAAQlzG,SAAU,UAC/C6yG,EAAc/vG,IAGjC,EAEO8vG,CACX,CA/FsB,CA+FpB5C,IAEF,MCpGIoD,GAAY,SAAUpD,GACtB,SAASoD,EAAStxF,GACdkuF,EAAKxgG,KAAKhD,MACVA,KAAKsV,QAAUA,EACftV,KAAK6mG,KAAO,IAAIT,EACpB,CAuBA,OArBK5C,IAAOoD,EAAS77F,UAAYy4F,GACjCoD,EAAS5iG,UAAY6G,OAAOS,OAAQk4F,GAAQA,EAAKx/F,WACjD4iG,EAAS5iG,UAAUqH,YAAcu7F,EAEjCA,EAAS5iG,UAAU6/F,SAAW,SAAmBC,GAC7C9jG,KAAKxM,QAAUswG,EACf9jG,KAAK6mG,KAAKhD,SAASC,EAAWgD,kBAClC,EAEAF,EAAS5iG,UAAUi/B,MAAQ,WACvB8+D,GAAAA,UAAAA,MAAAA,KAA8B/hG,KAClC,EAEA4mG,EAAS5iG,UAAUgkB,SAAW,WAC1B,OAAOhoB,KAAK6mG,KAAKztG,SAAW4G,KAAKskD,gBACrC,EAEAsiD,EAAS5iG,UAAUihG,iBAAmB,SAA2BjyG,GAC7DgN,KAAK6mG,KAAK5B,iBAAiBjyG,EAC/B,EAEO4zG,CACX,CA7BgB,CA6BdpD,IAEF,MCnCIuD,GAAc,CACdC,IAAK,CAAE,IAAK,KACZC,KAAM,CAAE,EAAG,KACXC,SAAU,CAAE,EAAG,KACfC,QAAS,CAAE,IAAK,IAAK,IAAK,KAC1BC,YAAa,CAAE,EAAG,IAAK,IAAK,KAC5BC,eAAgB,CAAE,EAAG,IAAK,IAAK,IAAK,IAAK,MAGzCC,GAAQ,QACRC,GAAO,OCHPC,GAAgB,CAChB,eAAgB,eAChB,eAAgB,SAChB,eAAgB,eAChB,iBAAkB,kBAGlBC,GAAY,SAAUjE,GACtB,SAASiE,IACLjE,EAAKt7F,MAAMlI,KAAM+H,UACrB,CA0IA,OAxIKy7F,IAAOiE,EAAS18F,UAAYy4F,GACjCiE,EAASzjG,UAAY6G,OAAOS,OAAQk4F,GAAQA,EAAKx/F,WACjDyjG,EAASzjG,UAAUqH,YAAco8F,EAEjCA,EAASzjG,UAAUwiC,eAAiB,WAChCxmC,KAAKqkG,KAAK,IAAKrkG,KAAK0nG,cACpB1nG,KAAKmiG,YACT,EAEAsF,EAASzjG,UAAUuiC,cAAgB,SAAwBvzC,GACvD,OAAQA,EAAE8qB,OACN,IAAK,OACG9qB,EAAEmK,MACF6C,KAAKukG,QAAQvkG,KAAK2nG,QAAQ30G,EAAEmK,QAE5B6C,KAAKskG,WAAW,QAEpB,MAEJ,IAAK,aACDtkG,KAAKukG,QAAQvkG,KAAK2nG,QAAQ,CAAEn5E,MAAOx7B,EAAEmK,SACrC,MAEJ,IAAK,SACGnK,EAAEmK,MACF6C,KAAKukG,QAAQvkG,KAAK4nG,UAAU50G,EAAEmK,QAE9B6C,KAAKskG,WAAW,UAEpB,MAEJ,IAAK,YACDtkG,KAAK2kG,gBAAgB3xG,EAAEmK,OACvB,MAEJ,QACI,IAAIwT,EAAO62F,GAAcx0G,EAAE8qB,OACvBnN,GACA3Q,KAAKqkG,KAAK1zF,EAAM3d,EAAEmK,OAK9BqmG,EAAKx/F,UAAUuiC,cAAcvjC,KAAKhD,KAAMhN,EAC5C,EAEAy0G,EAASzjG,UAAUlC,QAAU,WACrB9B,KAAKxM,UACLwM,KAAKxM,QAAQohC,YAAc50B,KAAKmhG,WAAWr/F,UAEnD,EAEA2lG,EAASzjG,UAAU0jG,WAAa,WAC5B,OAAO1nG,KAAKmhG,WAAW5gG,SXtEZ,SWsEsC9M,CACrD,EAEAg0G,EAASzjG,UAAU4jG,UAAY,SAAoBriF,GAC/C,IAAI+8E,EAAQ,GAmBZ,OAjBI/8E,IAAWgJ,GAAchJ,EAAOiJ,QAChC8zE,EAAMlzF,KAAK,CAAE,SAAUmW,EAAOiJ,QAC9B8zE,EAAMlzF,KAAK,CAAE,eAAgBmW,EAAO/wB,QACpC8tG,EAAMlzF,KAAK,CAAE,iBAAkBpP,KAAK6nG,cAActiF,KAClD+8E,EAAMlzF,KAAK,CAAE,kBAAmBmW,EAAOs5B,WAEnC15B,EAAQI,EAAOiwB,UACf8sD,EAAMlzF,KAAK,CAAE,iBAAkBmW,EAAOiwB,UAGtCrwB,EAAQI,EAAO8hC,WACfi7C,EAAMlzF,KAAK,CAAE,mBAAoBpP,KAAK8nG,eAAeviF,MAGzD+8E,EAAMlzF,KAAK,CAAE,SAAUiV,KAGpBi+E,CACX,EAEAmF,EAASzjG,UAAU+jG,aAAe,WAC9B,OAAO1F,GACHriG,KAAK4nG,UAAU5nG,KAAKmhG,WAAW7rF,QAAQiQ,QAE/C,EAEAkiF,EAASzjG,UAAU8jG,eAAiB,SAAyBviF,GACzD,IAAI8hC,EAAW9hC,EAAO8hC,SAClB7yD,EAAQ+wB,EAAO/wB,MAEnB,QAFyC,IAAVA,IAAmBA,EAAQ,GAEtD6yD,GAAYA,IAAaigD,GAAO,CAIhC,IAHA,IAAIU,EAAYjB,GAAY1/C,EAASt8B,eACjC3yB,EAAS,GAEJsT,EAAI,EAAGA,EAAIs8F,EAAU5tG,OAAQsR,IAClCtT,EAAOgX,KAAK44F,EAAUt8F,GAAKlX,GAG/B,OAAO4D,EAAOs5B,KAAK,IACvB,CACJ,EAEA+1E,EAASzjG,UAAU6jG,cAAgB,SAAwBtiF,GACvD,IAAI8hC,EAAW9hC,EAAO8hC,SAClBk5B,EAAUh7D,EAAOg7D,QAErB,OAAQl5B,GAAyB,UAAbA,EAAwBkgD,GAAOhnB,CACvD,EAEAknB,EAASzjG,UAAU2jG,QAAU,SAAkB5xD,GAC3C,IAAIusD,EAAQ,GAaZ,OAZMvsD,GAA0B,aAAlBA,EAAKd,WACXc,IAASxnB,GAAcwnB,EAAKvnB,QAC5B8zE,EAAMlzF,KAAK,CAAE,OAAQ2mC,EAAKvnB,QAEtBrJ,EAAQ4wB,EAAKP,UACb8sD,EAAMlzF,KAAK,CAAE,eAAgB2mC,EAAKP,WAGtC8sD,EAAMlzF,KAAK,CAAE,OAAQiV,MAItBi+E,CACX,EAEAmF,EAASzjG,UAAUikG,WAAa,WAC5B,OAAO5F,GACHriG,KAAK2nG,QAAQ3nG,KAAKmhG,WAAW7rF,QAAQygC,MAE7C,EAEA0xD,EAASzjG,UAAUgkB,SAAW,WAC1B,MAAO,SAAYhoB,KAAK8kG,WAAc,IAAO9kG,KAAKuiG,cAAiB,IAAOviG,KAAK6kG,gBAAmB,IAAOzC,GAAW,IAAKpiG,KAAK0nG,cAC5G1nG,KAAK+nG,eAAmB/nG,KAAKioG,aAAiBjoG,KAAKmlG,oBAAwBnlG,KAAK0kG,kBAAqB,UAC3H,EAEO+C,CACX,CA9IgB,CA8IdjE,IAEF,MC3JI0E,GAAW,SAAUT,GACrB,SAASS,IACLT,EAASv/F,MAAMlI,KAAM+H,UACzB,CAUA,OARK0/F,IAAWS,EAAQn9F,UAAY08F,GACpCS,EAAQlkG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WACxDkkG,EAAQlkG,UAAUqH,YAAc68F,EAEhCA,EAAQlkG,UAAU0jG,WAAa,WAC3B,OAAO1nG,KAAKmhG,WAAWxH,SAASp5F,SZXrB,EYYf,EAEO2nG,CACX,CAde,CAcbT,IAEF,MCjBIU,GAAc,SAAUV,GACxB,SAASU,IACLV,EAASv/F,MAAMlI,KAAM+H,UACzB,CA6BA,OA3BK0/F,IAAWU,EAAWp9F,UAAY08F,GACvCU,EAAWnkG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WAC3DmkG,EAAWnkG,UAAUqH,YAAc88F,EAEnCA,EAAWnkG,UAAUwiC,eAAiB,WAClC,IAAIrB,EAASnlC,KAAKmlC,SAClBnlC,KAAKqkG,KAAK,KAAMl/D,EAAOpf,GACvB/lB,KAAKqkG,KAAK,KAAMl/D,EAAOnf,GACvBhmB,KAAKqkG,KAAK,IAAKrkG,KAAK8lC,UACpB9lC,KAAKmiG,YACT,EAEAgG,EAAWnkG,UAAUmhC,OAAS,WAC1B,OAAOnlC,KAAKmhG,WAAWjrE,WAAWiP,MACtC,EAEAgjE,EAAWnkG,UAAU8hC,OAAS,WAC1B,OAAO9lC,KAAKmhG,WAAWjrE,WAAW4P,MACtC,EAEAqiE,EAAWnkG,UAAUgkB,SAAW,WAC5B,MAAO,WAAchoB,KAAK8kG,WAAc,IAAO9kG,KAAKuiG,cAAiB,IAAOviG,KAAK6kG,gBACrE,OAAU7kG,KAAKmlC,SAASpf,EAAK,SAAY/lB,KAAKmlC,SAASnf,EAAK,QAAWhmB,KAAK8lC,SAAY,IACvF9lC,KAAK+nG,eAAkB,IAAO/nG,KAAKioG,aAAgB,IAAOjoG,KAAKmlG,oBAC/DnlG,KAAK0kG,kBAAqB,aAC3C,EAEOyD,CACX,CAjCkB,CAiChBV,IAEF,MCnCIW,GAAa,SAAU5E,GACvB,SAAS4E,IACL5E,EAAKt7F,MAAMlI,KAAM+H,UACrB,CAkBA,OAhBKy7F,IAAO4E,EAAUr9F,UAAYy4F,GAClC4E,EAAUpkG,UAAY6G,OAAOS,OAAQk4F,GAAQA,EAAKx/F,WAClDokG,EAAUpkG,UAAUqH,YAAc+8F,EAElCA,EAAUpkG,UAAUgkB,SAAW,WAC3B,MAAQ,MAAQhoB,KAAK8kG,WAAa9kG,KAAK0kG,kBAAoB1kG,KAAKuiG,cAAgBviG,KAAK6kG,gBAAkB7kG,KAAKmlG,qBAAuB,IAAOnlG,KAAKskD,iBAAoB,MACvK,EAEA8jD,EAAUpkG,UAAUuiC,cAAgB,SAAwBvzC,GACxC,cAAZA,EAAE8qB,OACF9d,KAAK2kG,gBAAgB3xG,EAAEmK,OAG3BqmG,EAAKx/F,UAAUuiC,cAAcvjC,KAAKhD,KAAMhN,EAC5C,EAEOo1G,CACX,CAtBiB,CAsBf5E,IAEF,MC1BI6E,GAAY,KACZC,GAAW,KACXC,GAAc,KACdC,GAAa,KACbC,GAAW,KAEA,SAASC,GAAWvrG,GAC/B,OAAOgO,OAAOhO,GAAOiF,QAAQimG,GAAW,SAASjmG,QAAQkmG,GAAU,QAAQlmG,QAAQqmG,GAAU,QAAQrmG,QAAQmmG,GAAa,UAAUnmG,QAAQomG,GAAY,QAC5J,CCJA,IAAIG,GAAa,SAAUlB,GACvB,SAASkB,IACLlB,EAASv/F,MAAMlI,KAAM+H,UACzB,CAuDA,OArDK0/F,IAAWkB,EAAU59F,UAAY08F,GACtCkB,EAAU3kG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WAC1D2kG,EAAU3kG,UAAUqH,YAAcs9F,EAElCA,EAAU3kG,UAAUwiC,eAAiB,WACjCxmC,KAAKukG,QAAQvkG,KAAK4oG,eAClB5oG,KAAKmiG,YACT,EAEAwG,EAAU3kG,UAAUuiC,cAAgB,SAAwBvzC,GACxC,QAAZA,EAAE8qB,OACF9d,KAAKukG,QAAQvkG,KAAK6oG,aAGtBpB,EAASzjG,UAAUuiC,cAAcvjC,KAAKhD,KAAMhN,EAChD,EAEA21G,EAAU3kG,UAAU4kG,YAAc,WAC9B,IAAIlpD,EAAO1/C,KAAKmhG,WAAWzhD,OACvBpW,EAAKoW,EAAKzW,UAEd,MAAO,CACH,CAAE,IAAKK,EAAGvjB,GACV,CAAE,IAAKujB,EAAGtjB,GACV,CAAE,QAAS05B,EAAKlrD,QAAU,MAC1B,CAAE,SAAUkrD,EAAKjrD,SAAW,MAEpC,EAEAk0G,EAAU3kG,UAAU8kG,eAAiB,WACjC,OAAOzG,GAAcriG,KAAK4oG,cAC9B,EAEAD,EAAU3kG,UAAU6kG,UAAY,SAAoBE,GAChD,IAAIC,EAAMhpG,KAAKmhG,WAAW6H,MAM1B,OAJID,IACAC,EAAMN,GAAWM,IAGd,CAAE,CAAE,aAAcA,GAC7B,EAEAL,EAAU3kG,UAAUilG,aAAe,WAC/B,OAAO5G,GAAcriG,KAAK6oG,WAAU,GACxC,EAEAF,EAAU3kG,UAAUgkB,SAAW,WAC3B,MAAO,qCAAwChoB,KAAK8kG,WAAc,IAAO9kG,KAAKuiG,cAAiB,IAAOviG,KAAK0kG,kBAAqB,IAAO1kG,KAAK6kG,gBACpI7kG,KAAK8oG,iBAAoB,IAAO9oG,KAAKipG,eAAkB,IAAOjpG,KAAKmlG,oBADpE,WAGX,EAEOwD,CACX,CA3DiB,CA2DflB,IAEF,MC9DIyB,GAAiB,SAAUzB,GAC3B,SAASyB,IACLzB,EAASv/F,MAAMlI,KAAM+H,UACzB,CAUA,OARK0/F,IAAWyB,EAAcn+F,UAAY08F,GAC1CyB,EAAcllG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WAC9DklG,EAAcllG,UAAUqH,YAAc69F,EAEtCA,EAAcllG,UAAU0jG,WAAa,WACjC,OAAO1nG,KAAKmhG,WAAW5gG,SjBXZ,IiBWsC,WACrD,EAEO2oG,CACX,CAdqB,CAcnBzB,IAEF,MCjBI0B,GAAY,SAAU1B,GACtB,SAAS0B,IACL1B,EAASv/F,MAAMlI,KAAM+H,UACzB,CAwCA,OAtCK0/F,IAAW0B,EAASp+F,UAAY08F,GACrC0B,EAASnlG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WACzDmlG,EAASnlG,UAAUqH,YAAc89F,EAEjCA,EAASnlG,UAAUwiC,eAAiB,WAChC,IAAItQ,EAAWl2B,KAAKmhG,WAAWjrE,WAC/Bl2B,KAAKqkG,KAAK,IAAKnuE,EAASqR,OAAOxhB,GAC/B/lB,KAAKqkG,KAAK,IAAKnuE,EAASqR,OAAOvhB,GAC/BhmB,KAAKqkG,KAAK,QAASnuE,EAASt/B,KAAKpC,OACjCwL,KAAKqkG,KAAK,SAAUnuE,EAASt/B,KAAKnC,QAClCuL,KAAKqkG,KAAK,KAAMnuE,EAASwS,aAAa,IACtC1oC,KAAKqkG,KAAK,KAAMnuE,EAASwS,aAAa,IACtC1oC,KAAKmiG,YACT,EAEAgH,EAASnlG,UAAUpN,KAAO,WACtB,OAAOoJ,KAAKmhG,WAAWjrE,WAAWt/B,IACtC,EAEAuyG,EAASnlG,UAAUujC,OAAS,WACxB,OAAOvnC,KAAKmhG,WAAWjrE,WAAWqR,MACtC,EAEA4hE,EAASnlG,UAAU2qC,GAAK,WACpB,OAAO3uC,KAAKmhG,WAAWjrE,WAAWwS,aAAa,EACnD,EAEAygE,EAASnlG,UAAU4qC,GAAK,WACpB,OAAO5uC,KAAKmhG,WAAWjrE,WAAWwS,aAAa,EACnD,EAEAygE,EAASnlG,UAAUgkB,SAAW,WAC1B,MAAO,SAAYhoB,KAAK8kG,WAAc,IAAO9kG,KAAKuiG,cAAiB,IAAOviG,KAAK6kG,gBAAmB,OAAU7kG,KAAKunC,SAASxhB,EAAK,QAAW/lB,KAAKunC,SAASvhB,EAAjJ,SACehmB,KAAK2uC,KAAQ,SAAY3uC,KAAK4uC,KAD7C,YAEkB5uC,KAAKpJ,OAAOpC,MAAS,aAAgBwL,KAAKpJ,OAAOnC,OAAU,KAAQuL,KAAK+nG,eAAkB,IACtG/nG,KAAKioG,aAAgB,IAAOjoG,KAAKmlG,oBAAuB,IAAOnlG,KAAK0kG,kBAAqB,KAC1G,EAEOyE,CACX,CA5CgB,CA4Cd1B,IAEF,MC1CI2B,GAAe,wBAEnB,SAASC,GAAenwG,GACpB,IAAKA,GAAwB,kBAATA,IAAsBkwG,GAAahoF,KAAKloB,GACxD,OAAOA,EAGX,IAAI1F,EAAU61G,GAAeC,SAG7B,OAFAF,GAAaG,UAAY,EAElBrwG,EAAKkJ,QAAQgnG,IAAc,SAAU3gF,GAGxC,OAFAj1B,EAAQmvG,UAAYl6E,EAEbj1B,EAAQohC,aAAephC,EAAQg2G,SAC1C,GACJ,CAEwB,qBAAb1wG,WACPuwG,GAAeC,SAAWxwG,SAASomB,cAAc,SAGrD,IAAIuqF,GAAY,SAAUhC,GACtB,SAASgC,IACLhC,EAASv/F,MAAMlI,KAAM+H,UACzB,CAmEA,OAjEK0/F,IAAWgC,EAAS1+F,UAAY08F,GACrCgC,EAASzlG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WACzDylG,EAASzlG,UAAUqH,YAAco+F,EAEjCA,EAASzlG,UAAUwiC,eAAiB,WAChC,IAAIjxB,EAAMvV,KAAKuV,MACfvV,KAAKqkG,KAAK,IAAK9uF,EAAIwQ,GACnB/lB,KAAKqkG,KAAK,IAAK9uF,EAAIyQ,GACnBhmB,KAAKmiG,YACT,EAEAsH,EAASzlG,UAAUuiC,cAAgB,SAAwBvzC,GACvC,SAAZA,EAAE8qB,OACF9d,KAAKqkG,KAAK,QAAS9B,GAAYviG,KAAK4kG,aACpC5kG,KAAKwmC,kBACc,YAAZxzC,EAAE8qB,OACT2pF,EAASzjG,UAAUlC,QAAQkB,KAAKhD,KAAMA,KAAKmhG,WAAWr/F,WAG1D2lG,EAASzjG,UAAUuiC,cAAcvjC,KAAKhD,KAAMhN,EAChD,EAEAy2G,EAASzlG,UAAU4gG,SAAW,SAAmBmE,GAC7C,IAAItyG,EAAQgxG,EAASzjG,UAAU4gG,SAAS5hG,KAAKhD,KAAM+oG,GAC/CvzE,EAAOx1B,KAAKmhG,WAAW7rF,QAAQkgB,KAQnC,OANIuzE,IACAvzE,EAAOkzE,GAAWlzE,IAGtB/+B,EAAM2Y,KAAK,CAAE,OAAQomB,GAAQ,CAAE,cAAe,QAEvC/+B,CACX,EAEAgzG,EAASzlG,UAAUuR,IAAM,WACrB,IAAIA,EAAMvV,KAAKmhG,WAAWtkD,WACtBjmD,EAAOoJ,KAAKmhG,WAAWhtE,UAC3B,OAAO5e,EAAIsR,QAAQ6iF,KAAKn0F,EAAIyQ,EAAIpvB,EAAKw9B,SACzC,EAEAq1E,EAASzlG,UAAU2lG,cAAgB,WAC/B,IAAI7nG,EAAU9B,KAAKmhG,WAAWr/F,UAI9B,OAAO0xB,GAFP1xB,EAAU4mG,GADV5mG,EAAUunG,GAAevnG,IAI7B,EAEA2nG,EAASzlG,UAAU4lG,iBAAmB,WAClC,IAAIlkF,EAMJ,QAJK1lB,KAAKsV,SAAW,CAAC,GAAG07C,KAAS5lC,GAAAA,QAAAA,MAAwBA,GAAAA,QAAAA,OACtD1F,EAAS,OAGN08E,GAAW,cAAe18E,EACrC,EAEA+jF,EAASzlG,UAAUgkB,SAAW,WAC1B,MAAO,SAAYhoB,KAAK8kG,WAAc,IAAO9kG,KAAK4pG,mBAAsB,IAAO5pG,KAAKuiG,cAAiB,IAAOviG,KAAK6kG,gBACrG,MAAS7kG,KAAKuV,MAAMwQ,EAAK,QAAW/lB,KAAKuV,MAAMyQ,EAAK,KAAQhmB,KAAK+nG,eAAkB,IAAO/nG,KAAK0kG,kBAAqB,IAAO1kG,KAAKmlG,oBAC/HnlG,KAAKioG,aAAgB,IAAOjoG,KAAK2pG,gBAAmB,SACrE,EAEOF,CACX,CAvEgB,CAuEdhC,IAEF,MClFA9D,GAAAA,IAAeuE,GACfvE,GAAAA,OAAkBwE,GAClBxE,GAAAA,MAAiByE,GACjBzE,GAAAA,MAAiBgF,GACjBhF,GAAAA,UAAqBuF,GACrBvF,GAAAA,KAAgB8D,GAChB9D,GAAAA,KAAgBwF,GAChBxF,GAAAA,KAAgB8F,GAuBhB,IAAInJ,GAAW,SAAUuJ,GACrB,SAASvJ,EAAQ9sG,EAAS8hB,GACtBu0F,EAAY7mG,KAAKhD,KAAMxM,EAAS8hB,GAEhCtV,KAAK8pG,MAAQ,IAAIlD,GAAS/7F,OAAOW,OAAO,CACpCwlD,IA1BF,QA0BO3pC,GAAc7zB,EAAS,aAAau2G,WAC1C/pG,KAAKsV,UAERmtF,GAAUziG,KAAKxM,QAASwM,KAAKgqG,UAAU,KAEvChqG,KAAKiqG,aAAejqG,KAAKxM,QAAQszG,kBACjC9mG,KAAKiqG,aAAaxzG,MAAMjC,MAAQ,OAChCwL,KAAKiqG,aAAaxzG,MAAMhC,OAAS,OACjCuL,KAAKiqG,aAAaxzG,MAAMyzG,SAAW,SAhC3C,SAAuB12G,GACnB,IAAI22G,EAEJ,IACIA,EAAM32G,EAAQ42G,aAAe52G,EAAQ42G,eAAiB,IAC5C,CAAZ,MAAOp3G,GAAK,CAEd,GAAIm3G,EAAK,CACL,IAAIriF,GAASqiF,EAAIn3G,EAAI,EACjB20B,GAAQwiF,EAAI9tF,EAAI,EAChB5lB,EAAQjD,EAAQiD,MAEP,IAATqxB,GAAsB,IAARH,IACdlxB,EAAMqxB,KAAOA,EAAO,KACpBrxB,EAAMkxB,IAAMA,EAAM,KAE1B,CACJ,CAiBQ0iF,CAAcrqG,KAAKiqG,cAEnBjqG,KAAK8pG,MAAMjG,SAAS7jG,KAAKiqG,cAEzBt6E,GAAW3vB,KAAKxM,QAAS,CACrBisB,MAAOzf,KAAKygG,OACZ6J,UAAWtqG,KAAK2gG,YAChB4J,SAAUvqG,KAAK4gG,YACf4J,UAAWxqG,KAAK6gG,aAGpB7gG,KAAKshG,QACT,CAEKuI,IAAcvJ,EAAQv1F,UAAY8+F,GACvCvJ,EAAQt8F,UAAY6G,OAAOS,OAAQu+F,GAAeA,EAAY7lG,WAC9Ds8F,EAAQt8F,UAAUqH,YAAci1F,EAEhC,IAAIx9D,EAAqB,CAAE3vC,KAAM,CAAEmZ,cAAc,IA4EjD,OA1EAw2B,EAAmB3vC,KAAKiZ,IAAM,WAC1B,MAAO,KACX,EAEAk0F,EAAQt8F,UAAUs/C,QAAU,WACpBtjD,KAAK8pG,QACL9pG,KAAK8pG,MAAMxmD,UACXtjD,KAAK8pG,MAAQ,KACb9pG,KAAKiqG,aAAe,KACpBr5E,GAAa5wB,KAAKxM,QAAS,CACvBisB,MAAOzf,KAAKygG,OACZ6J,UAAWtqG,KAAK2gG,YAChB4J,SAAUvqG,KAAK4gG,YACf4J,UAAWxqG,KAAK6gG,cAIxBgJ,EAAY7lG,UAAUs/C,QAAQtgD,KAAKhD,KACvC,EAEAsgG,EAAQt8F,UAAU2hB,UAAY,SAAoBL,GAC9C,IAAImlF,EAAW3pF,KAAKE,MAAMsE,EAAOS,GAAM,IAAOjF,KAAKE,MAAMsE,EAAOU,GAAM,IAAOhmB,KAAKgzB,MAAMx+B,MAAS,IAAOwL,KAAKgzB,MAAMv+B,OAEnHuL,KAAK0qG,QAAUplF,EACftlB,KAAKiqG,aAAav2G,aAAa,UAAW+2G,EAC9C,EAEAnK,EAAQt8F,UAAUm8C,KAAO,SAAe3sD,GACpCq2G,EAAY7lG,UAAUm8C,KAAKn9C,KAAKhD,KAAMxM,GACtCwM,KAAK8pG,MAAMr0E,KAAK,CAAEjiC,GACtB,EAEA8sG,EAAQt8F,UAAUi/B,MAAQ,WACtB4mE,EAAY7lG,UAAUi/B,MAAMjgC,KAAKhD,MACjCA,KAAK8pG,MAAM7mE,OACf,EAEAq9D,EAAQt8F,UAAU0+F,IAAM,WACpB,MAAO,yBAA2B1iG,KAAKgqG,WAC3C,EAEA1J,EAAQt8F,UAAUw8F,aAAe,WAC7B,IACI/7C,EADMzkD,KACO8gG,QACbx7E,EAFMtlB,KAEO0qG,QAEjB,GAAIplF,EAAQ,CACR,IAAIolB,EAAO,IAAIsW,GACftW,EAAK92C,SAASwb,KAAKq1C,GAEnB/Z,EAAKpY,UACDA,KAAY3M,WAAWL,EAAOS,GAAIT,EAAOU,IAG7Cy+B,EAAS/Z,CACb,CAEA,OAAO+Z,CACX,EAEA67C,EAAQt8F,UAAUq9F,QAAU,WACpBrhG,KAAK0qG,SACL1qG,KAAK2lB,UAAU3lB,KAAK0qG,QAE5B,EAEApK,EAAQt8F,UAAUgmG,UAAY,SAAoBW,GAG9C,MAAQ,SAF0B,kBAAdA,EAAyBA,EACzC,yDACuB,UAAYnI,GAAS,8DAAiExiG,KAAK8pG,MAAM1wG,SAAY,QAC5I,EAEAyR,OAAOq4B,iBAAkBo9D,EAAQt8F,UAAW8+B,GAErCw9D,CACX,CA9Ge,CA8GbuJ,IAEF,MC9JA,GAFe,CAAC,ECCD,SAASe,GAAWC,EAAKxlF,GACpC,IAAII,EAAWJ,EAAKI,SAEpB,GAAwB,IAApBA,EAASrrB,OAAb,CAIA,IAAIm/C,EAAU9zB,EAAS,GACnBC,EAAS6zB,EAAQ7zB,SACrBmlF,EAAIzsD,OAAO14B,EAAOK,EAAGL,EAAOM,GAE5B,IAAK,IAAIta,EAAI,EAAGA,EAAI+Z,EAASrrB,OAAQsR,IAAK,CAEtCga,GADA6zB,EAAU9zB,EAAS/Z,IACFga,SAEjB,IACIolF,EADUrlF,EAAS/Z,EAAI,GACL0sC,aAClBD,EAAYoB,EAAQpB,YAEpB2yD,GAAW3yD,EACX0yD,EAAIE,cAAcD,EAAQ/kF,EAAG+kF,EAAQ9kF,EACnBmyB,EAAUpyB,EAAGoyB,EAAUnyB,EACvBN,EAAOK,EAAGL,EAAOM,GAEnC6kF,EAAI9tD,OAAOr3B,EAAOK,EAAGL,EAAOM,EAEpC,CAEIX,EAAK/P,QAAQ+kC,QACbwwD,EAAI7sD,WAxBR,CA0BJ,CC3BA,IAAIwlD,GAAQ,SAAUzB,GAClB,SAASyB,EAAKrC,GACVY,EAAS/+F,KAAKhD,KAAMmhG,GAChBA,GACAnhG,KAAKgrG,UAEb,CA0GA,OAxGKjJ,IAAWyB,EAAKz4F,UAAYg3F,GACjCyB,EAAKx/F,UAAY6G,OAAOS,OAAQy2F,GAAYA,EAAS/9F,WACrDw/F,EAAKx/F,UAAUqH,YAAcm4F,EAE7BA,EAAKx/F,UAAUgnG,SAAW,WACtB,IAAI91D,EAAOl1C,KAAKmhG,WAAWjsD,OACvBA,IACAl1C,KAAKk1C,KAAOA,EACZA,EAAKhP,YAAYlmC,MAEzB,EAEAwjG,EAAKx/F,UAAUi/B,MAAQ,WACfjjC,KAAKmhG,YACLnhG,KAAKmhG,WAAWh7D,eAAenmC,MAGnCA,KAAKirG,YAELlJ,EAAS/9F,UAAUi/B,MAAMjgC,KAAKhD,KAClC,EAEAwjG,EAAKx/F,UAAUinG,UAAY,WACnBjrG,KAAKk1C,OACLl1C,KAAKk1C,KAAK/O,eAAenmC,aAClBA,KAAKk1C,KAEpB,EAEAsuD,EAAKx/F,UAAUknG,QAAU,SAAkBL,GACnC7qG,KAAKk1C,OACL21D,EAAIM,YACJP,GAAWC,EAAK7qG,KAAKk1C,MACrB21D,EAAI31D,OAEZ,EAEAsuD,EAAKx/F,UAAUuiC,cAAgB,SAAwBvzC,GACnC,SAAZA,EAAE8qB,QACF9d,KAAKirG,YACLjrG,KAAKgrG,YAGTjJ,EAAS/9F,UAAUuiC,cAAcvjC,KAAKhD,KAAMhN,EAChD,EAEAwwG,EAAKx/F,UAAUonG,aAAe,SAAuBP,GACjD,GAAI7qG,KAAKmhG,WAAY,CACjB,IAAI7uE,EAAYtyB,KAAKmhG,WAAW7uE,YAC5BA,GACAu4E,EAAIv4E,UAAUpqB,MAAM2iG,EAAKv4E,EAAUnB,SAASK,QAAQ,GAE5D,CACJ,EAEAgyE,EAAKx/F,UAAUqnG,aAAe,SAAuBv3D,EAAUv+B,EAAK+1F,GAGhE,IAFA,IAES5/F,EAAI,EAAGA,EAAIooC,EAAS15C,OAAQsR,IAAK,CACtC,IAAIy1F,EAAartD,EAASpoC,GACtB9X,EAAWutG,EAAWvtG,SAEtB8vG,EAAY,IAAIC,GAASxC,EAAWlsD,UAAUksD,EAAYmK,GAE1D13G,GAAYA,EAASwG,OAAS,GAC9BspG,EAAUjuE,KAAK7hC,EAAU2hB,EAAK+1F,GAG9BnmF,EAAQ5P,GAZHvV,KAaEqhD,SAASqiD,EAAWnuF,GAbtBvV,KAeE6rB,OAAO63E,EAEtB,CACJ,EAEAF,EAAKx/F,UAAUyxB,KAAO,SAAeqe,EAAUv+B,EAAK+1F,GAChDtrG,KAAKqrG,aAAav3D,EAAUv+B,EAAK+1F,GAEjCtrG,KAAKmiG,YACT,EAEAqB,EAAKx/F,UAAUunG,WAAa,SAAqBV,GAC7C,GAAI7qG,KAAKmhG,WAAY,CACjB,IAAI3rD,EAAUx1C,KAAKmhG,WAAW3rD,UAC1BrwB,EAAQqwB,IACRx1C,KAAKwrG,YAAYX,EAAKr1D,EAE9B,CACJ,EAEAguD,EAAKx/F,UAAUwnG,YAAc,SAAsBX,EAAK1tG,GACpD,IAAIsuG,EAAWtuG,EACXsuG,GAAYZ,EAAIW,cAChBC,GAAYZ,EAAIW,aAEpBX,EAAIW,YAAcC,CACtB,EAEAjI,EAAKx/F,UAAUjQ,QAAU,WACrB,IAAIi1G,EAAMhpG,KAAKmhG,WACf,OAAQ6H,GAAQA,IAA+B,IAAxBA,EAAI1zF,QAAQvhB,OACvC,EAEOyvG,CACX,CAjHY,CAiHVzB,IAEF,MCpHIqG,GAAa,SAAUhhE,GACvB,SAASghE,IACLhhE,EAAWl/B,MAAMlI,KAAM+H,UAC3B,CA4BA,OA1BKq/B,IAAaghE,EAAUr9F,UAAYq8B,GACxCghE,EAAUpkG,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC9DokG,EAAUpkG,UAAUqH,YAAc+8F,EAElCA,EAAUpkG,UAAU0nG,SAAW,SAAmBb,GAC9C,GAAK7qG,KAAKjM,UAAV,CAIA82G,EAAIc,OAEJ3rG,KAAKorG,aAAaP,GAClB7qG,KAAKkrG,QAAQL,GACb7qG,KAAKurG,WAAWV,GAGhB,IADA,IAAI7I,EAAahiG,KAAKgiG,WACbt2F,EAAI,EAAGA,EAAIs2F,EAAW5nG,OAAQsR,IAAK,CACxC,IAAI0C,EAAQ4zF,EAAWt2F,GACnB0C,EAAMra,WACNqa,EAAMs9F,SAASb,EAEvB,CAEAA,EAAIe,SAhBJ,CAiBJ,EAEOxD,CACX,CAhCiB,CAgCf5mD,GAAYgiD,GAAM,eAEpB,MCpCe,SAASqI,GAASxlF,EAAIy8B,GACjC,IACIp+C,EADAonG,EAAe,EAGnB,IAAKhpD,GAASA,GAAS,EACnB,OAAOz8B,EAGX,IAAI0lF,EAAY,WACZ,IAAIC,EAAU58E,KAAQ08E,EAClB9jG,EAAOD,UAEPuX,EAAO,WACP+G,EAAGne,MAAM,KAAMF,GACf8jG,EAAe18E,IACnB,EAGA,IAAK08E,EACD,OAAOxsF,IAGP5a,GACA+N,aAAa/N,GAGbsnG,EAAUlpD,EACVxjC,IAEA5a,EAAUkC,WAAW0Y,EAAMwjC,EAAQkpD,EAE3C,EAMA,OAJAD,EAAU/lG,OAAS,WACfyM,aAAa/N,EACjB,EAEOqnG,CACX,CCnCA,IAEInF,GAAY,SAAUx/D,GACtB,SAASw/D,EAASqF,EAAQr1G,GACtBwwC,EAAWpkC,KAAKhD,MAEhBA,KAAKisG,OAASA,EACdjsG,KAAKpJ,KAAOA,EACZoJ,KAAK6qG,IAAMoB,EAAOC,WAAW,MAE7B,IAAIC,EAAoBnsG,KAAKosG,YAAYrsG,KAAKC,MAC9CA,KAAKmiG,WAAa0J,IAAS,WACvB7pD,GAAemqD,EACnB,GAbU,mBAcd,CA+CA,OA7CK/kE,IAAaw/D,EAAS77F,UAAYq8B,GACvCw/D,EAAS5iG,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC7D4iG,EAAS5iG,UAAUqH,YAAcu7F,EAEjCA,EAAS5iG,UAAUs/C,QAAU,WACzBlc,EAAWpjC,UAAUs/C,QAAQtgD,KAAKhD,MAClCA,KAAKisG,OAAS,KACdjsG,KAAK6qG,IAAM,IACf,EAEAjE,EAAS5iG,UAAUyxB,KAAO,SAAeqe,EAAUv+B,EAAK+1F,GACpDtrG,KAAKqrG,aAAav3D,EAAUv+B,EAAK+1F,GACjCtrG,KAAKosG,aACT,EAEAxF,EAAS5iG,UAAUqoG,SAAW,SAAmBr6E,GAC7C,IACIi6E,EADMjsG,KACOisG,OACbr1G,EAFMoJ,KAEKpJ,KACfq1G,EAAOz3G,MAAQoC,EAAKpC,MAAQw9B,EAC5Bi6E,EAAOx3G,OAASmC,EAAKnC,OAASu9B,EAC9BhyB,KAAK6qG,IAAI74E,MAAMA,EAAOA,EAC1B,EAEA40E,EAAS5iG,UAAUsoG,kBAAoB,WACnC,MAAuC,kBAA5B7vG,OAAOgvB,iBACPhvB,OAAOgvB,iBAGX,CACX,EAEAm7E,EAAS5iG,UAAUooG,YAAc,SAAsB92F,GACnD,GAAKtV,KAAK6qG,IAAV,CAIA,IACI74E,EADa1c,GAAWA,EAAQi3F,WACX,EAAIvsG,KAAKssG,oBAClCtsG,KAAKqsG,SAASr6E,GAEdhyB,KAAK6qG,IAAI2B,UAAU,EAAG,EAAGxsG,KAAKisG,OAAOz3G,MAAOwL,KAAKisG,OAAOx3G,QACxDuL,KAAK0rG,SAAS1rG,KAAK6qG,IAPnB,CAQJ,EAEOjE,CACX,CA5DgB,CA4DdplD,GAAY4mD,GAAW,eAEzB,MCnEIqE,GAAY,SAAUx7E,GACtB,SAASw7E,IACLx7E,EAAMjuB,KAAKhD,MAEXA,KAAK0sG,OAAS,EAClB,CA0CA,OAxCKz7E,IAAQw7E,EAAS1hG,UAAYkmB,GAClCw7E,EAASzoG,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnDyoG,EAASzoG,UAAUqH,YAAcohG,EAEjCA,EAASzoG,UAAUgwC,KAAO,SAAex4C,EAAO6tC,GAC5CrpC,KAAK0sG,OAAOt9F,KAAK,CACbi6B,KAAMA,EACN7tC,MAAOA,IAEXA,EAAMmxG,UAAY3sG,IACtB,EAEAysG,EAASzoG,UAAU4oG,YAAc,SAAsB1nE,GAInD,IAHA,IAAIwnE,EAAS1sG,KAAK0sG,OACdtyG,EAASsyG,EAAOtyG,OAChBhC,EAAS,GACJqc,EAAM,EAAGA,EAAMra,EAAQqa,IACxBi4F,EAAOj4F,GAAK40B,KAAKQ,cAAc3E,IAC/B9sC,EAAOgX,KAAKs9F,EAAOj4F,GAAKjZ,OAGhC,OAAOpD,CACX,EAEAq0G,EAASzoG,UAAUo9C,OAAS,SAAiB5lD,EAAO6tC,GAChDrpC,KAAKg0C,KAAKx4C,EAAO6tC,EACrB,EAEAojE,EAASzoG,UAAU2D,OAAS,SAAiBnM,GAIzC,IAHA,IAAIkxG,EAAS1sG,KAAK0sG,OACdtyG,EAASsyG,EAAOtyG,OAEXqa,EAAM,EAAGA,EAAMra,EAAQqa,IAC5B,GAAIi4F,EAAOj4F,GAAKjZ,QAAUA,EAAO,CAC7BkxG,EAAOtmE,OAAO3xB,EAAK,GACnB,KACJ,CAER,EAEOg4F,CACX,CAhDgB,CAgDdx7E,IAEF,MChDI47E,GAAY,SAAUJ,GACtB,SAASI,EAASntD,GACd+sD,EAASzpG,KAAKhD,MACdA,KAAKpM,SAAW,GAChBoM,KAAK0/C,KAAOA,CAChB,CAsEA,OApEK+sD,IAAWI,EAAS9hG,UAAY0hG,GACrCI,EAAS7oG,UAAY6G,OAAOS,OAAQmhG,GAAYA,EAASzoG,WACzD6oG,EAAS7oG,UAAUqH,YAAcwhG,EAEjCA,EAAS7oG,UAAU8oG,SAAW,SAAmBptD,GAC7C,IAAIqtD,EAAW/sG,KAAK0/C,KAChBstD,EAAkBD,EAAS7jE,cAC3BA,EAAcwW,EAAKxW,cACnB4jE,EAAWC,EAASxlE,OAAOxhB,GAAK25B,EAAKnY,OAAOxhB,GAAKgnF,EAASxlE,OAAOvhB,GAAK05B,EAAKnY,OAAOvhB,GAAKkjB,EAAYnjB,GAAKinF,EAAgBjnF,GACxHmjB,EAAYljB,GAAKgnF,EAAgBhnF,EACrC,OAAO8mF,CACX,EAEAD,EAAS7oG,UAAU4oG,YAAc,SAAsB1nE,GAInD,IAHA,IAAItxC,EAAWoM,KAAKpM,SAChBwG,EAASxG,EAASwG,OAClBhC,EAASq0G,EAASzoG,UAAU4oG,YAAY5pG,KAAKhD,KAAMklC,GAC9CzwB,EAAM,EAAGA,EAAMra,EAAQqa,IAC5BoX,GAAOzzB,EAAQxE,EAAS6gB,GAAKm4F,YAAY1nE,IAE7C,OAAO9sC,CACX,EAEAy0G,EAAS7oG,UAAUo9C,OAAS,SAAiB5lD,EAAO6tC,GAChD,IAAIz1C,EAAWoM,KAAKpM,SAChBq5G,GAAW,EAEf,GAAIjtG,KAAK8sG,SAASzjE,GAAO,CACrB,GAAIrpC,KAAK0sG,OAAOtyG,OAAS,EACrB4F,KAAKg0C,KAAKx4C,EAAO6tC,OACd,CACEz1C,EAASwG,QACV4F,KAAKktG,gBAGT,IAAK,IAAIz4F,EAAM,EAAGA,EAAM7gB,EAASwG,OAAQqa,IACrC,GAAI7gB,EAAS6gB,GAAK2sC,OAAO5lD,EAAO6tC,GAAO,CACnC4jE,GAAW,EACX,KACJ,CAGCA,GACDjtG,KAAKg0C,KAAKx4C,EAAO6tC,EAEzB,CACA4jE,GAAW,CACf,CAEA,OAAOA,CACX,EAEAJ,EAAS7oG,UAAUkpG,cAAgB,WAC/B,IACIxtD,EADM1/C,KACK0/C,KACX9rD,EAFMoM,KAESpM,SACfuxC,EAASua,EAAKva,SACduiB,EAAYhI,EAAKlrD,QAAU,EAC3BmzD,EAAajI,EAAKjrD,SAAW,EAEjCb,EAASwb,KACL,IAAIy9F,EAAS,IAAIpkE,GAAK,CAAEiX,EAAKnY,OAAOxhB,EAAG25B,EAAKnY,OAAOvhB,GAAK,CAAE0hC,EAAWC,KACrE,IAAIklD,EAAS,IAAIpkE,GAAK,CAAEtD,EAAOpf,EAAG25B,EAAKnY,OAAOvhB,GAAK,CAAE0hC,EAAWC,KAChE,IAAIklD,EAAS,IAAIpkE,GAAK,CAAEiX,EAAKnY,OAAOxhB,EAAGof,EAAOnf,GAAK,CAAE0hC,EAAWC,KAChE,IAAIklD,EAAS,IAAIpkE,GAAK,CAAEtD,EAAOpf,EAAGof,EAAOnf,GAAK,CAAE0hC,EAAWC,KAEnE,EAEOklD,CACX,CA5EgB,CA4EdJ,IAEF,MC5EIU,GAAY,IAIZC,GAAkB,SAAUn8E,GAC5B,SAASm8E,IACLn8E,EAAMjuB,KAAKhD,MAEXA,KAAKqtG,WACT,CAwLA,OAtLKp8E,IAAQm8E,EAAeriG,UAAYkmB,GACxCm8E,EAAeppG,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACzDopG,EAAeppG,UAAUqH,YAAc+hG,EAEvCA,EAAeppG,UAAUqpG,UAAY,WACjCrtG,KAAKstG,QAAU,CAAC,EAChBttG,KAAK4/E,KAAO,IAAI6sB,GAChBzsG,KAAKutG,aAAe,EACxB,EAEAH,EAAeppG,UAAUi/B,MAAQ,WAI7B,IAHA,IAEIsqE,EAAevtG,KAAKutG,aACf94F,EAAM,EAAGA,EAAM84F,EAAanzG,OAAQqa,IAHhCzU,KAIF2H,OAAO4lG,EAAa94F,IAE/BzU,KAAKqtG,WACT,EAEAD,EAAeppG,UAAUwpG,WAAa,SAAqBtoE,GACvD,IAAIuoE,GAAeztG,KAAKstG,QAASxsF,KAAK8K,MAAOsZ,EAAMnf,EAAIonF,MAAiB,CAAC,GAAKrsF,KAAK8K,MAAOsZ,EAAMlf,EAAImnF,KAChG/0G,EAAS4H,KAAK4/E,KAAKgtB,YAAY1nE,GAE/BuoE,IACAr1G,EAASA,EAAO+P,OAAOslG,EAAWb,YAAY1nE,KAGlDllC,KAAK0tG,aAAat1G,GAElBA,EAAO22B,KAAK4+E,IACZ,IAAK,IAAIl5F,EAAM,EAAGA,EAAMrc,EAAOgC,OAAQqa,IACnC,GAAIrc,EAAOqc,GAAKo1B,cAAc3E,GAC1B,OAAO9sC,EAAOqc,EAG1B,EAEA24F,EAAeppG,UAAU0pG,aAAe,SAAuB55D,GAG3D,IAFA,IAESr/B,EAAM,EAAGA,EAAMq/B,EAAS15C,OAAQqa,IAAO,CAM5C,IALA,IAAIjhB,EAAUsgD,EAASr/B,GACnBmwC,EAAS,EACTgpD,EAAc9sF,KAAKuI,IAtDlB,IACD,IAsDAwkF,EAAU,GAEPr6G,GACHq6G,EAAQz+F,KAAK5b,GACbA,EAAUA,EAAQo/B,OAGtB,KAAOi7E,EAAQzzG,QAEXwqD,MADApxD,EAAUq6G,EAAQn6D,OACE9gB,OAASp/B,EAAQo/B,OAAOh/B,SAfvCoM,KAeyDutG,cAAclkG,QAAQ7V,GAAW,GAAKo6G,EACpGA,GAjEC,IAoEL95D,EAASr/B,GAAKq5F,QAAUlpD,CAC5B,CACJ,EAEAwoD,EAAeppG,UAAUuiC,cAAgB,SAAwBvzC,GAC7C,cAAZA,EAAE8qB,OAAqC,iBAAZ9qB,EAAE8qB,OAC7B9d,KAAK+tG,WAAW/6G,EAAEQ,QAE1B,EAEA45G,EAAeppG,UAAUwiC,eAAiB,SAAyBxzC,GAC/DgN,KAAK+tG,WAAW/6G,EAAEQ,QACtB,EAEA45G,EAAeppG,UAAU+pG,WAAa,SAAqBv6G,GAGvD,GAAyB,UAArBA,EAAQyhD,SACR,IAAK,IAAIxgC,EAAM,EAAGA,EAAMjhB,EAAQI,SAASwG,OAAQqa,IAHxCzU,KAIE+tG,WAAWv6G,EAAQI,SAAS6gB,SAGnCjhB,EAAQm5G,WACRn5G,EAAQm5G,UAAUhlG,OAAOnU,GAE7BwM,KAAKguG,aAAax6G,EAE1B,EAEA45G,EAAeppG,UAAUmF,IAAM,SAAc2qC,GACzC,IAAIm6D,EAAgB94G,MAAMC,QAAQ0+C,GAAYA,EAASp5B,MAAM,GAAK,CAAEo5B,GAEpEjoB,GAAO7rB,KAAKutG,aAAcU,GAC1BjuG,KAAKkuG,QAAQD,EACjB,EAEAb,EAAeppG,UAAUi9C,eAAiB,SAAyBjuD,GAG/D,GAAiB,WAAbA,EAAEmgB,OACF,IAAK,IAAIsB,EAAM,EAAGA,EAAMzhB,EAAEkuD,MAAM9mD,OAAQqa,IAH/BzU,KAIE2H,OAAO3U,EAAEkuD,MAAMzsC,SAG1BzU,KAAKkuG,QAAQ/4G,MAAM6O,UAAU0W,MAAM1X,KAAKhQ,EAAEkuD,MAAO,GAEzD,EAEAksD,EAAeppG,UAAUkqG,QAAU,SAAkBp6D,GAKjD,IAJA,IAEItgD,EAEGsgD,EAAS15C,OAAS,IACrB5G,EAAUsgD,EAASJ,OACXxN,YANClmC,MAOgB,UAArBxM,EAAQyhD,SACRppB,GAAOioB,EAAUtgD,EAAQI,UARpBoM,KAUEguG,aAAax6G,EAGhC,EAEA45G,EAAeppG,UAAUgqG,aAAe,SAAuBxyG,GAC3D,IAAI6tC,EAAO7tC,EAAM6tC,OACjB,GAAIA,EAAM,CACN,IAAI8kE,EAAUnuG,KAAKouG,WAAW/kE,GAC1BtjB,EAAIooF,EAAQ,GAAG,GACfnoF,EAAImoF,EAAQ,GAAG,GAEnB,GAAInuG,KAAKquG,OAAOF,GACZnuG,KAAK4/E,KAAKx+B,OAAO5lD,EAAO6tC,OACrB,CACH,IAAIikE,EAAUttG,KAAKstG,QACdA,EAAQvnF,KACTunF,EAAQvnF,GAAK,CAAC,GAGbunF,EAAQvnF,GAAGC,KACZsnF,EAAQvnF,GAAGC,GAAK,IAAI6mF,GAChB,IAAIpkE,GAAK,CAAE1iB,EAAIonF,GAAWnnF,EAAImnF,IAAa,CAAEA,GAAWA,OAIhEG,EAAQvnF,GAAGC,GAAGo7B,OAAO5lD,EAAO6tC,EAChC,CACJ,CACJ,EAEA+jE,EAAeppG,UAAU2D,OAAS,SAAiBnU,GAK/C,GAFAA,EAAQ2yC,eAAenmC,MAEE,UAArBxM,EAAQyhD,SAER,IADA,IAAIrhD,EAAWJ,EAAQI,SACd6gB,EAAM,EAAGA,EAAM7gB,EAASwG,OAAQqa,IANhCzU,KAOE2H,OAAO/T,EAAS6gB,SAEpBjhB,EAAQm5G,YACfn5G,EAAQm5G,UAAUhlG,OAAOnU,UAClBA,EAAQm5G,UAEvB,EAEAS,EAAeppG,UAAUqqG,OAAS,SAAiBF,GAC/C,OAAOA,EAAQ,GAAG/zG,OAAS,GAAK+zG,EAAQ,GAAG/zG,OAAS,CACxD,EAEAgzG,EAAeppG,UAAUoqG,WAAa,SAAqB1uD,GAKvD,IAJA,IAAIxW,EAAcwW,EAAKxW,cACnBolE,EAAUxtF,KAAK8K,MAAMsd,EAAYnjB,EAAIonF,IACrCoB,EAAUztF,KAAK8K,MAAMsd,EAAYljB,EAAImnF,IACrCgB,EAAU,CAAE,GAAI,IACXpoF,EAAIjF,KAAK8K,MAAM8zB,EAAKnY,OAAOxhB,EAAIonF,IAAYpnF,GAAKuoF,EAASvoF,IAC9DooF,EAAQ,GAAG/+F,KAAK2W,GAEpB,IAAK,IAAIC,EAAIlF,KAAK8K,MAAM8zB,EAAKnY,OAAOvhB,EAAImnF,IAAYnnF,GAAKuoF,EAASvoF,IAC9DmoF,EAAQ,GAAG/+F,KAAK4W,GAEpB,OAAOmoF,CACX,EAEOf,CACX,CA9LsB,CA8LpBn8E,IAEF,SAAS08E,GAAerjE,EAAIE,GACxB,OAAIF,EAAGwjE,QAAUtjE,EAAGsjE,QACT,EAEPxjE,EAAGwjE,QAAUtjE,EAAGsjE,SACR,EAGL,CACX,CAEA,UCnNIU,GAAgB,SAAuBC,GACvCA,EAAQ1uG,KAAK,aAAcC,KAAK2gG,YAAY5gG,KAAKC,OACjDyuG,EAAQ1uG,KAAK,aAAcC,KAAK4gG,YAAY7gG,KAAKC,OAEjDA,KAAKxM,QAAUi7G,EAAQj7G,OAC3B,EAEAg7G,GAAcxqG,UAAUi/B,MAAQ,WAC5BjjC,KAAK0uG,cACT,EAEAF,GAAcxqG,UAAUs/C,QAAU,WAC9BtjD,KAAK0uG,sBACE1uG,KAAKxM,OAChB,EAEAg7G,GAAcxqG,UAAU28F,YAAc,SAAsB3tG,GACxD,IAAIs0D,EAAStnD,KAAK2uG,aAAa37G,GAE1Bs0D,GAGItnD,KAAK4uG,WACN5uG,KAAK6uG,eAAiB7uG,KAAK8uG,cAG/B9uG,KAAK+uG,WAAWznD,IANhBtnD,KAAK0uG,cAQb,EAEAF,GAAcxqG,UAAU48F,YAAc,WAClC5gG,KAAK0uG,cACT,EAEAF,GAAcxqG,UAAU2qG,aAAe,SAAuB37G,GAG1D,IAFA,IAAIwI,EAAQxI,EAAEQ,QAEPgI,IAAU2pB,EAAQ3pB,EAAM8Z,QAAQgyC,SACnC9rD,EAAQA,EAAMo3B,OAGlB,GAAIp3B,EACA,OAAOA,EAAM8Z,QAAQgyC,MAE7B,EAEAknD,GAAcxqG,UAAU8qG,WAAa,WACjC,GAAI9uG,KAAKxM,QACL,OAAOwM,KAAKxM,QAAQiD,MAAM6wD,MAElC,EAEAknD,GAAcxqG,UAAU+qG,WAAa,SAAqBznD,GAClDtnD,KAAKxM,UACLwM,KAAKxM,QAAQiD,MAAM6wD,OAASA,EAC5BtnD,KAAK4uG,SAAWtnD,EAExB,EAEAknD,GAAcxqG,UAAU0qG,aAAe,WAC/B1uG,KAAK4uG,WACL5uG,KAAK+uG,WAAW/uG,KAAK6uG,gBAAkB,WAChC7uG,KAAK4uG,SAEpB,EAEA,UCjDA,IAAInH,GAAY,SAAUjE,GACtB,SAASiE,IACLjE,EAAKt7F,MAAMlI,KAAM+H,UACrB,CAoIA,OAlIKy7F,IAAOiE,EAAS18F,UAAYy4F,GACjCiE,EAASzjG,UAAY6G,OAAOS,OAAQk4F,GAAQA,EAAKx/F,WACjDyjG,EAASzjG,UAAUqH,YAAco8F,EAEjCA,EAASzjG,UAAU0nG,SAAW,SAAmBb,GAC7CA,EAAIc,OAEJ3rG,KAAKorG,aAAaP,GAClB7qG,KAAKkrG,QAAQL,GACb7qG,KAAKurG,WAAWV,GAEhBA,EAAIM,YAEJnrG,KAAKgvG,aAAanE,EAAK7qG,KAAKmhG,YAE5BnhG,KAAKivG,YAAYpE,GACjB7qG,KAAKkvG,WAAWrE,GAChB7qG,KAAKmvG,YAAYtE,GAEjB7qG,KAAKovG,QAAQvE,GACb7qG,KAAKqvG,UAAUxE,GAEfA,EAAIe,SACR,EAEAnE,EAASzjG,UAAUorG,QAAU,SAAkBvE,GAC3C,IAAI90D,EAAO/1C,KAAKmhG,WAAW7rF,QAAQygC,KAC/Bu5D,GAAU,EAkBd,OAhBIv5D,IACsB,aAAlBA,EAAKd,UACLj1C,KAAKuvG,gBAAgB1E,EAAK90D,GAC1Bu5D,GAAU,GACF/gF,GAAcwnB,EAAKvnB,SAC3Bq8E,EAAI2E,UAAYz5D,EAAKvnB,MAErBq8E,EAAIc,OACJ3rG,KAAKwrG,YAAYX,EAAK90D,EAAKP,SAC3Bq1D,EAAI90D,OACJ80D,EAAIe,UAEJ0D,GAAU,IAIXA,CACX,EAEA7H,EAASzjG,UAAUurG,gBAAkB,SAA0B1E,EAAK90D,GAChE,IACImU,EADA7gB,EAAOrpC,KAAKmhG,WAAW1iD,UAG3B,GAAI1I,aAAgB6S,GAAgB,CAChC,IAAIr/B,EAAQwsB,EAAKxsB,QACbC,EAAMusB,EAAKvsB,MACf0gC,EAAW2gD,EAAI4E,qBAAqBlmF,EAAMxD,EAAGwD,EAAMvD,EAAGwD,EAAIzD,EAAGyD,EAAIxD,EACrE,MAAO,GAAI+vB,aAAgB8S,GAAgB,CACvC,IAAI1jB,EAAS4Q,EAAK5Q,SAClB+kB,EAAW2gD,EAAI6E,qBAAqBvqE,EAAOpf,EAAGof,EAAOnf,EAAG,EAAGmf,EAAOpf,EAAGof,EAAOnf,EAAG+vB,EAAKjQ,SACxF,EA3ER,SAA0BokB,EAAU7B,GAChC,IAAK,IAAI5zC,EAAM,EAAGA,EAAM4zC,EAAMjuD,OAAQqa,IAAO,CACzC,IAAIk0C,EAAON,EAAM5zC,GACb+Z,EAAQ4R,GAAWuoB,EAAKn6B,SAE5BA,EAAMK,GAAK85B,EAAKnT,UAEhB0U,EAASylD,aAAahnD,EAAKrjC,SAAUkJ,EAAMwR,YAC/C,CACJ,CAoEQ4vE,CAAiB1lD,EAAUnU,EAAKsS,OAEhCwiD,EAAIc,OAEC51D,EAAKyS,aACNqiD,EAAIv4E,UAAU+W,EAAK70C,QAAS,EAAG,EAAG60C,EAAK50C,SAAU40C,EAAK9B,OAAOxhB,EAAGsjB,EAAK9B,OAAOvhB,GAEhF6kF,EAAI2E,UAAYtlD,EAChB2gD,EAAI90D,OAEJ80D,EAAIe,SACR,EAEAnE,EAASzjG,UAAUqrG,UAAY,SAAoBxE,GAC/C,IAAItlF,EAASvlB,KAAKmhG,WAAW7rF,QAAQiQ,OACrC,GAAIA,IAAWgJ,GAAchJ,EAAOiJ,QAAUjJ,EAAO/wB,MAAQ,EASzD,OARAq2G,EAAIgF,YAActqF,EAAOiJ,MACzBq8E,EAAIn3C,UAAYjkC,GAAelK,EAAO/wB,MAAO,GAE7Cq2G,EAAIc,OACJ3rG,KAAKwrG,YAAYX,EAAKtlF,EAAOiwB,SAC7Bq1D,EAAItlF,SACJslF,EAAIe,WAEG,CAEf,EAEAnE,EAASzjG,UAAUqjD,SAAW,WAC1B,IAAI9hC,EAASvlB,KAAKmhG,WAAW7rF,QAAQiQ,OACrC,GAAIA,GAAUA,EAAO8hC,SACjB,OAAO9hC,EAAO8hC,SAASt8B,aAE/B,EAEA08E,EAASzjG,UAAUirG,YAAc,SAAsBpE,GACnD,IAAIxjD,EAAWrnD,KAAKqnD,WACpB,GAAIA,GAAYA,IAAaigD,GAAO,CAChC,IAAIU,EAAYjB,GAAY1/C,GACxBwjD,EAAIoE,YACJpE,EAAIoE,YAAYjH,IAEhB6C,EAAIiF,QAAU9H,EACd6C,EAAIkF,eAAiB/H,EAE7B,CACJ,EAEAP,EAASzjG,UAAUkrG,WAAa,SAAqBrE,GACjD,IAAIxjD,EAAWrnD,KAAKqnD,WAChB9hC,EAASvlB,KAAKmhG,WAAW7rF,QAAQiQ,OACjC8hC,GAAYA,IAAaigD,GACzBuD,EAAItqB,QAAUgnB,GACPhiF,GAAUA,EAAOg7D,UACxBsqB,EAAItqB,QAAUh7D,EAAOg7D,QAE7B,EAEAknB,EAASzjG,UAAUmrG,YAAc,SAAsBtE,GACnD,IAAItlF,EAASvlB,KAAKmhG,WAAW7rF,QAAQiQ,OACjCA,GAAUA,EAAOs5B,WACjBgsD,EAAIhsD,SAAWt5B,EAAOs5B,SAE9B,EAEA4oD,EAASzjG,UAAUgrG,aAAe,SAAuBnE,EAAKxlF,GAC1DulF,GAAWC,EAAKxlF,EACpB,EAEOoiF,CACX,CAxIgB,CAwIdjE,IAEF,MC1JI0E,GAAW,SAAUT,GACrB,SAASS,IACLT,EAASv/F,MAAMlI,KAAM+H,UACzB,CAWA,OATK0/F,IAAWS,EAAQn9F,UAAY08F,GACpCS,EAAQlkG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WACxDkkG,EAAQlkG,UAAUqH,YAAc68F,EAEhCA,EAAQlkG,UAAUgrG,aAAe,SAAuBnE,GAEpDD,GAAWC,EADA7qG,KAAKmhG,WAAWxH,SAE/B,EAEOuO,CACX,CAfe,CAebT,IAEF,MClBIU,GAAc,SAAUV,GACxB,SAASU,IACLV,EAASv/F,MAAMlI,KAAM+H,UACzB,CAcA,OAZK0/F,IAAWU,EAAWp9F,UAAY08F,GACvCU,EAAWnkG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WAC3DmkG,EAAWnkG,UAAUqH,YAAc88F,EAEnCA,EAAWnkG,UAAUgrG,aAAe,SAAuBnE,GACvD,IAAIt4G,EAAMyN,KAAKmhG,WAAWjrE,WACtBiP,EAAS5yC,EAAI4yC,OACbW,EAASvzC,EAAIuzC,OAEjB+kE,EAAI9rD,IAAI5Z,EAAOpf,EAAGof,EAAOnf,EAAG8f,EAAQ,EAAa,EAAVhlB,KAAK+L,GAChD,EAEOs7E,CACX,CAlBkB,CAkBhBV,IAEF,MCnBIkB,GAAa,SAAUlB,GACvB,SAASkB,EAAUxH,EAAYmK,GAC3B7D,EAASzkG,KAAKhD,KAAMmhG,GAEpBnhG,KAAKgwG,OAAShwG,KAAKgwG,OAAOjwG,KAAKC,MAC/BA,KAAKiwG,QAAUjwG,KAAKiwG,QAAQlwG,KAAKC,MAEjCA,KAAKZ,QAAUgtB,KAEf,IAAImqB,EAAMv2C,KAAKu2C,IAAM,IAAI25D,MACrBlH,EAAM7H,EAAW6H,MAEjBsC,IAAU,UAAUlqF,KAAK4nF,KACzBzyD,EAAI45D,YAAc7E,GAGlBtC,IACAzyD,EAAIyyD,IAAMA,GAGVzyD,EAAI65D,SACJpwG,KAAKgwG,UAELz5D,EAAI85D,OAASrwG,KAAKgwG,OAClBz5D,EAAI+5D,QAAUtwG,KAAKiwG,QAE3B,CAiDA,OA/CKxI,IAAWkB,EAAU59F,UAAY08F,GACtCkB,EAAU3kG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WAC1D2kG,EAAU3kG,UAAUqH,YAAcs9F,EAElCA,EAAU3kG,UAAU0nG,SAAW,SAAmBb,GACjB,aAAzB7qG,KAAKZ,QAAQO,UACbkrG,EAAIc,OAEJ3rG,KAAKorG,aAAaP,GAClB7qG,KAAKkrG,QAAQL,GAEb7qG,KAAKuwG,UAAU1F,GAEfA,EAAIe,UAEZ,EAEAjD,EAAU3kG,UAAUuiC,cAAgB,SAAwBvzC,GACxC,QAAZA,EAAE8qB,OACF9d,KAAKZ,QAAUgtB,KACfpsB,KAAKu2C,IAAIyyD,IAAMhpG,KAAKmhG,WAAW6H,OAE/BvB,EAASzjG,UAAUuiC,cAAcvjC,KAAKhD,KAAMhN,EAEpD,EAEA21G,EAAU3kG,UAAUgsG,OAAS,WACzBhwG,KAAKZ,QAAQpD,UACbgE,KAAKmiG,YACT,EAEAwG,EAAU3kG,UAAUisG,QAAU,WAC1BjwG,KAAKZ,QAAQotB,OAAO,IAAIpsB,MACpB,yBAA2BJ,KAAKu2C,IAAIyyD,IACpC,sDAER,EAEAL,EAAU3kG,UAAUusG,UAAY,SAAoB1F,GAChD,IAAInrD,EAAO1/C,KAAKmhG,WAAWzhD,OACvBzW,EAAUyW,EAAKzW,UAEnB4hE,EAAI0F,UACAvwG,KAAKu2C,IAAKtN,EAAQljB,EAAGkjB,EAAQjjB,EAAG05B,EAAKlrD,QAASkrD,EAAKjrD,SAE3D,EAEOk0G,CACX,CA5EiB,CA4EflB,IAEF,MC9EIyB,GAAiB,SAAUzB,GAC3B,SAASyB,IACLzB,EAASv/F,MAAMlI,KAAM+H,UACzB,CAaA,OAXK0/F,IAAWyB,EAAcn+F,UAAY08F,GAC1CyB,EAAcllG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WAC9DklG,EAAcllG,UAAUqH,YAAc69F,EAEtCA,EAAcllG,UAAUgrG,aAAe,SAAuBnE,GAE1D,IADA,IAAIxtD,EAAQr9C,KAAKmhG,WAAW9jD,MACnB3xC,EAAI,EAAGA,EAAI2xC,EAAMjjD,OAAQsR,IAC9Bk/F,GAAWC,EAAKxtD,EAAM3xC,GAE9B,EAEOw9F,CACX,CAjBqB,CAiBnBzB,IAEF,MCnBI0B,GAAY,SAAU1B,GACtB,SAAS0B,IACL1B,EAASv/F,MAAMlI,KAAM+H,UACzB,CAqBA,OAnBK0/F,IAAW0B,EAASp+F,UAAY08F,GACrC0B,EAASnlG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WACzDmlG,EAASnlG,UAAUqH,YAAc89F,EAEjCA,EAASnlG,UAAUgrG,aAAe,SAAuBnE,GACrD,IAAI30E,EAAWl2B,KAAKmhG,WAAWjrE,WAC3B3jC,EAAM2jC,EAASwS,aACfiG,EAAKp8C,EAAI,GACTq8C,EAAKr8C,EAAI,GAEb,GAAW,IAAPo8C,GAAmB,IAAPC,EAAU,CACtB,IAAIrH,EAASrR,EAASqR,OAClB3wC,EAAOs/B,EAASt/B,KACpBi0G,EAAInrD,KAAKnY,EAAOxhB,EAAGwhB,EAAOvhB,EAAGpvB,EAAKpC,MAAOoC,EAAKnC,OAClD,MACIgzG,EAASzjG,UAAUgrG,aAAahsG,KAAKhD,KAAM6qG,EAAKjsD,GAAKa,SAASvpB,GAEtE,EAEOizE,CACX,CAzBgB,CAyBd1B,IAEF,MC5BIgC,GAAY,SAAUhC,GACtB,SAASgC,IACLhC,EAASv/F,MAAMlI,KAAM+H,UACzB,CAkCA,OAhCK0/F,IAAWgC,EAAS1+F,UAAY08F,GACrCgC,EAASzlG,UAAY6G,OAAOS,OAAQm8F,GAAYA,EAASzjG,WACzDylG,EAASzlG,UAAUqH,YAAco+F,EAEjCA,EAASzlG,UAAU0nG,SAAW,SAAmBb,GAC7C,IAAI3xG,EAAO8G,KAAKmhG,WACZ5rF,EAAMrc,EAAK2jD,WACXjmD,EAAOsC,EAAKi7B,UAEhB02E,EAAIc,OAEJ3rG,KAAKorG,aAAaP,GAClB7qG,KAAKkrG,QAAQL,GACb7qG,KAAKurG,WAAWV,GAEhBA,EAAIM,YAEJN,EAAIr1E,KAAOt8B,EAAKoc,QAAQkgB,KACxBq1E,EAAI2F,UAAY,OAEZxwG,KAAKovG,QAAQvE,IACbA,EAAI4F,SAASv3G,EAAK4I,UAAWyT,EAAIwQ,EAAGxQ,EAAIyQ,EAAIpvB,EAAKw9B,UAGjDp0B,KAAKqvG,UAAUxE,KACf7qG,KAAKivG,YAAYpE,GACjBA,EAAI6F,WAAWx3G,EAAK4I,UAAWyT,EAAIwQ,EAAGxQ,EAAIyQ,EAAIpvB,EAAKw9B,WAGvDy2E,EAAIe,SACR,EAEOnC,CACX,CAtCgB,CAsCdhC,IAGF,MC3BA9D,GAAAA,IAAeuE,GACfvE,GAAAA,OAAkBwE,GAClBxE,GAAAA,MAAiByE,GACjBzE,GAAAA,MAAiBgF,GACjBhF,GAAAA,UAAqBuF,GACrBvF,GAAAA,KAAgB8D,GAChB9D,GAAAA,KAAgBwF,GAChBxF,GAAAA,KAAgB8F,GAGhB,ICtBI1pD,GACA30B,GDqBAk1E,GAAW,SAAUuJ,GACrB,SAASvJ,EAAQ9sG,EAAS8hB,GACtBu0F,EAAY7mG,KAAKhD,KAAMxM,EAAS8hB,GAEhCtV,KAAKxM,QAAQmvG,UAAY3iG,KAAKgqG,UAAUhqG,MAExC,IAAIisG,EAASjsG,KAAKxM,QAAQszG,kBAC1BmF,EAAOx1G,MAAMjC,MAAQ,OACrBy3G,EAAOx1G,MAAMhC,OAAS,OAEtB,IAAImC,EAAO85B,GAAYl9B,GAEvBy4G,EAAOz3G,MAAQoC,EAAKpC,MACpBy3G,EAAOx3G,OAASmC,EAAKnC,OAErBuL,KAAKiqG,aAAegC,EAEpBjsG,KAAK8pG,MAAQ,IAAIlD,GAASqF,EAAQr1G,GAElCoJ,KAAK2wG,mBAAqB3wG,KAAK4wG,YAAY7wG,KAAKC,MAEhD2vB,GAAW3vB,KAAKxM,QAAS,CACrBisB,MAAOzf,KAAK2wG,mBACZnG,UAAWxqG,KAAK2wG,oBAExB,CAEK9G,IAAcvJ,EAAQv1F,UAAY8+F,GACvCvJ,EAAQt8F,UAAY6G,OAAOS,OAAQu+F,GAAeA,EAAY7lG,WAC9Ds8F,EAAQt8F,UAAUqH,YAAci1F,EAEhC,IAAIx9D,EAAqB,CAAE3vC,KAAM,CAAEmZ,cAAc,IA6KjD,OA3KAw2B,EAAmB3vC,KAAKiZ,IAAM,WAC1B,MAAO,QACX,EAEAk0F,EAAQt8F,UAAUs/C,QAAU,WACxBumD,EAAY7lG,UAAUs/C,QAAQtgD,KAAKhD,MAE/BA,KAAK8pG,QACL9pG,KAAK8pG,MAAMxmD,UACXtjD,KAAK8pG,MAAQ,MAGb9pG,KAAK6wG,cACL7wG,KAAK6wG,YAAY5tE,eACVjjC,KAAK6wG,aAGZ7wG,KAAK8wG,UACL9wG,KAAK8wG,QAAQxtD,iBACNtjD,KAAK8wG,SAGhBlgF,GAAa5wB,KAAKxM,QAAS,CACvBisB,MAAOzf,KAAK2wG,mBACZnG,UAAWxqG,KAAK2wG,oBAExB,EAEArQ,EAAQt8F,UAAUm8C,KAAO,SAAe3sD,GACpCq2G,EAAY7lG,UAAUm8C,KAAKn9C,KAAKhD,KAAMxM,GACtCwM,KAAK8pG,MAAMr0E,KAAK,CAAEjiC,QAAWC,EAAWuM,KAAKsV,QAAQg2F,MAEjDtrG,KAAK6wG,aACL7wG,KAAK6wG,YAAY1nG,IAAI,CAAE3V,GAE/B,EAEA8sG,EAAQt8F,UAAUi/B,MAAQ,WACtB4mE,EAAY7lG,UAAUi/B,MAAMjgC,KAAKhD,MACjCA,KAAK8pG,MAAM7mE,QAEPjjC,KAAK6wG,aACL7wG,KAAK6wG,YAAY5tE,QAGjBjjC,KAAK8wG,SACL9wG,KAAK8wG,QAAQ7tE,OAErB,EAEAq9D,EAAQt8F,UAAUg9F,YAAc,SAAsBhuG,GAClD,GAAIgN,KAAK6wG,YAAa,CAClB,IAAI3rE,EAAQllC,KAAK4hG,cAAc5uG,GAE/B,OADYgN,KAAK6wG,YAAYrD,WAAWtoE,EAE5C,CACJ,EAEAo7D,EAAQt8F,UAAU+sG,MAAQ,WACtB,IACInxB,EADM5/E,KACK8pG,MACXh1G,EAFMkL,KAEYiqG,aAClB+G,EAAgB,GAEpBpxB,EAAK7+B,UAAS,SAAU2iD,GAChBA,EAAUtkG,SACV4xG,EAAc5hG,KAAKs0F,EAAUtkG,QAErC,IAEA,IAAImtB,EAAUH,KACV6kF,EAAiB,WACjBrxB,EAAKwsB,YAAY,CAAEG,YAAY,IAE/B,IACI,IAAIt1F,EAAOniB,EAAYo8G,YACvB3kF,EAAQvwB,QAAQib,EAGpB,CAFE,MAAOjkB,GACLu5B,EAAQC,OAAOx5B,EACnB,CACJ,EAIA,OAFAq8B,GAAW2hF,GAAe/0G,KAAKg1G,EAAgBA,GAExC1kF,CACX,EAEA+zE,EAAQt8F,UAAUw9F,gBAAkB,WAChCqI,EAAY7lG,UAAUw9F,gBAAgBx+F,KAAKhD,MACvCA,KAAK6wG,cACL7wG,KAAK6wG,YAAY5tE,eACVjjC,KAAK6wG,YAEpB,EAEAvQ,EAAQt8F,UAAU09F,eAAiB,WAE/B,GADAmI,EAAY7lG,UAAU09F,eAAe1+F,KAAKhD,OACrCA,KAAK6wG,YAAa,CACnB7wG,KAAK6wG,YAAc,IAAIzD,GAIvB,IAFA,IAAIpL,EAAahiG,KAAK8pG,MAAM9H,WACxBuL,EAAe,GACV94F,EAAM,EAAGA,EAAMutF,EAAW5nG,OAAQqa,IACvC84F,EAAan+F,KAAK4yF,EAAWvtF,GAAK0sF,YAEtCnhG,KAAK6wG,YAAY1nG,IAAIokG,EACzB,CACJ,EAEAjN,EAAQt8F,UAAUq9F,QAAU,WACxBrhG,KAAKiqG,aAAaz1G,MAAQwL,KAAKgzB,MAAMx+B,MACrCwL,KAAKiqG,aAAax1G,OAASuL,KAAKgzB,MAAMv+B,OAEtCuL,KAAK8pG,MAAMlzG,KAAOoJ,KAAKgzB,MACvBhzB,KAAK8pG,MAAM3H,YACf,EAEA7B,EAAQt8F,UAAUgmG,UAAY,WAC1B,MAAO,mBACX,EAEA1J,EAAQt8F,UAAU+8F,gBAAkB,WAChC/gG,KAAK6wG,YAAc,IAAIzD,GACvBptG,KAAK8wG,QAAU,IAAItC,GAAcxuG,MAEjC6pG,EAAY7lG,UAAU+8F,gBAAgB/9F,KAAKhD,KAC/C,EAEAsgG,EAAQt8F,UAAU4sG,YAAc,SAAsB59G,GAClD,IAAIgN,KAAKyhG,mBAAT,CAIA,IAAIjmG,EAAQwE,KAAKghG,YAAYhuG,GAE7B,GAAe,UAAXA,EAAEG,KAAkB,CACpB,IAAIg+G,EAAenxG,KAAKoxG,cACpBD,GAAgBA,IAAiB31G,GACjCwE,KAAK+pB,QAAQ,aAAc,CACvBv2B,QAAS29G,EACTn1B,cAAehpF,EACfG,KAAM,eAIVqI,GAAS21G,IAAiB31G,GAC1BwE,KAAK+pB,QAAQ,aAAc,CACvBv2B,QAASgI,EACTwgF,cAAehpF,EACfG,KAAM,eAId6M,KAAK+pB,QAAQ,YAAa,CACtBv2B,QAASgI,EACTwgF,cAAehpF,EACfG,KAAM,cAGV6M,KAAKoxG,cAAgB51G,CACzB,MAAWA,GACPwE,KAAK+pB,QAAQ,QAAS,CAClBv2B,QAASgI,EACTwgF,cAAehpF,EACfG,KAAM,SAjCd,CAoCJ,EAEA0X,OAAOq4B,iBAAkBo9D,EAAQt8F,UAAW8+B,GAErCw9D,CACX,CA7Me,CA6MbuJ,IAEF,MClOIwH,GAAc,WAAc,MAA2B,qBAAbv4G,QAA0B,EAQpEw4G,GAAkB,SAAUrgF,GAC5B,SAASqgF,IACLrgF,EAAMjuB,KAAKhD,MAEXA,KAAKuiD,OAAS,CAAE,CACZ5xC,KAAM,MACNxd,KAAMo+G,IACP,CACC5gG,KAAM,SACNxd,KAAMq+G,IAEd,CAEKvgF,IAAQqgF,EAAevmG,UAAYkmB,GACxCqgF,EAAettG,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACzDstG,EAAettG,UAAUqH,YAAcimG,EAEvC,IAAIjqE,EAAkB,CAAEjc,QAAS,CAAE9e,cAAc,GAAO/Y,QAAS,CAAE+Y,cAAc,IA8CjF,OA5CA+6B,EAAgBjc,QAAQhf,IAAM,WAQ1B,OAPKgf,KACDA,GAAU,CACN6gF,OA5B0BoF,MACtCv4G,SAASomB,cAAc,UAAUgtF,WA4BrBxJ,IA1BuB2O,MACnCv4G,SAASs3D,eAAeqhD,WAAW,oDAAqD,SA6B7ErmF,EACX,EAEAic,EAAgB9zC,QAAQ6Y,IAAM,WAK1B,OAJK2zC,KACDA,GAAW,IAAIuxD,GAGZvxD,EACX,EAEAuxD,EAAettG,UAAUsH,OAAS,SAAiB9X,EAAS8hB,GACxD,IAAI4rC,EAAQlhD,KAAKuiD,OACb95B,EAAQy4B,EAAM,GAElB,GAAI5rC,GAAWA,EAAQniB,KAEnB,IADA,IAAIu+G,EAAYp8F,EAAQniB,KAAK43B,cACpBrf,EAAI,EAAGA,EAAIw1C,EAAM9mD,OAAQsR,IAC9B,GAAIw1C,EAAMx1C,GAAGiF,OAAS+gG,EAAW,CAC7BjpF,EAAQy4B,EAAMx1C,GACd,KACJ,CAIR,GAAI+c,EACA,OAAO,IAAIA,EAAMt1B,KAAKK,EAAS8hB,GAGnC2f,GACI,oIACiE9J,UAAUb,UACnF,EAEAzf,OAAOq4B,iBAAkBouE,EAAgBjqE,GAElCiqE,CACX,CAhEsB,CAgEpBrgF,IAEF,MC9EIqvE,GAAW,SAAUuJ,GACrB,SAASvJ,IACLuJ,EAAY3hG,MAAMlI,KAAM+H,UAC5B,CAEK8hG,IAAcvJ,EAAQv1F,UAAY8+F,GACvCvJ,EAAQt8F,UAAY6G,OAAOS,OAAQu+F,GAAeA,EAAY7lG,WAC9Ds8F,EAAQt8F,UAAUqH,YAAci1F,EAEhC,IAAIj5D,EAAkB,CAAEjc,QAAS,CAAE9e,cAAc,IAYjD,OAVA+6B,EAAgBjc,QAAQhf,IAAM,WAC1B,OAAOklG,GAAAA,OACX,EAEAhR,EAAQh1F,OAAS,SAAiB9X,EAAS8hB,GACvC,OAAOg8F,GAAAA,QAAAA,OAA8B99G,EAAS8hB,EAClD,EAEAzK,OAAOq4B,iBAAkBo9D,EAASj5D,GAE3Bi5D,CACX,CAtBe,CAsBbuJ,IAEF,MCzBI8H,GAAa,SAAU1gF,GACvB,SAAS0gF,IACL1gF,EAAMjuB,KAAKhD,MAEXA,KAAK4xG,QAAU,EACnB,CAqEA,OAnEK3gF,IAAQ0gF,EAAU5mG,UAAYkmB,GACnC0gF,EAAU3tG,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpD2tG,EAAU3tG,UAAUqH,YAAcsmG,EAElCA,EAAU3tG,UAAUs/C,QAAU,WAC1BtjD,KAAK4xG,QAAU,EACnB,EAEAD,EAAU3tG,UAAU3L,KAAO,SAAekzC,EAAQiK,GAC9C,IAEIq8D,EAAc,GAAG1pG,OAAOojC,GAC5BvrC,KAAK7J,OAEL,IAAK,IAAIuV,EAAI,EAAGA,EAAImmG,EAAYz3G,OAAQsR,IAAK,CACzC,IAAIw5B,EAAQ2sE,EAAYnmG,GACpBw5B,GAASA,EAAMwgB,iBAAmBxgB,EAAMqgB,iBAPnCvlD,KAQE8xG,qBAAqB5sE,GAAO,EAAMsQ,GARpCx1C,KASE4xG,QAAQxiG,KAAK81B,GAE5B,CACJ,EAEAysE,EAAU3tG,UAAU8tG,qBAAuB,SAA+B5sE,EAAO7sC,EAAMm9C,GACnF,IAAIu8D,GAAiB7sE,EAAM5vB,QAAQkwC,WAAa,CAAC,GAAGwsD,OACpD,GAAID,EAAe,CACf,IAAIliD,EAAY,CACZ5J,SAAU/gB,EAAM+gB,SAChBF,OAAQ7gB,EAAM6gB,OACdC,SAAU9gB,EAAM8gB,SAChB7oD,MAAO+nC,EAAM/nC,MACb49E,WAAY71C,EAAM61C,WAClBjrB,eAAgBA,GAChBrL,OAAQvf,EAAMg4C,kBACd7kF,KAAMA,GAEV05G,EAAcliD,GACTA,EAAUwwC,mBACXn7D,EAAMwgB,gBAAgBrtD,EAAMm9C,EAEpC,MACItQ,EAAMwgB,gBAAgBrtD,EAAMm9C,EAEpC,EAEAm8D,EAAU3tG,UAAU7N,KAAO,WAIvB,IAHA,IAEIo1C,EAASvrC,KAAK4xG,QACXrmE,EAAOnxC,QAHD4F,KAIF8xG,qBAAqBvmE,EAAOmI,OAAO,EAElD,EAEAi+D,EAAU3tG,UAAUiuG,cAAgB,SAAwBz+G,GAGxD,IAFA,IAAI+3C,EAASvrC,KAAK4xG,QAETlmG,EAAI,EAAGA,EAAI6/B,EAAOnxC,OAAQsR,IAAK,CAEpC,GAAIlY,IADQ+3C,EAAO7/B,GAEf,OAAO,CAEf,CAEA,OAAO,CACX,EAEOimG,CACX,CA3EiB,CA2Ef1gF,IAEF,SAAS6+B,KACL9vD,KAAKqgG,mBAAoB,CAC7B,CAEA,UCnFe,SAAS6R,GAAUl/G,EAAGm/G,GACjC,IAAI9jG,GAAO8jG,GAAY,IAAIpnF,cACvBzuB,EAAQtJ,EAAEsJ,MAGd,MAFsB,SAAR+R,KAAoB/R,EAAME,SAAWF,EAAM81G,UAAY91G,EAAM+1G,SAAY/1G,EAAM+R,EAAM,MAGvG,CCNe,SAASikG,GAAkB7vB,GAEtC,IADA,IAAI8vB,EAAS,CAAC,EACL99F,EAAM,EAAGA,EAAMguE,EAAWroF,OAAQqa,IAAO,CAC9C,IAAI6lE,EAAYmI,EAAWhuE,GACvB6lE,EAAUvvC,KAAKz1B,QAAQ3E,OACvB4hG,EAAOj4B,EAAUvvC,KAAKz1B,QAAQ3E,MAAQ,CAClCge,IAAK2rD,EAAU5iC,MAAM/oB,IACrBnD,IAAK8uD,EAAU5iC,MAAMlsB,KAGjC,CACA,OAAO+mF,CACX,CCNA,IAAIC,GAAY,SAAUvhF,GACtB,SAASuhF,EAASt9C,EAAU5/C,GACxB2b,EAAMjuB,KAAKhD,MAEXA,KAAKk1D,SAAWA,EAChBl1D,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,CAyEA,OAvEK2b,IAAQuhF,EAASznG,UAAYkmB,GAClCuhF,EAASxuG,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnDwuG,EAASxuG,UAAUqH,YAAcmnG,EAEjCA,EAASxuG,UAAUulB,MAAQ,SAAgBv2B,GAEvC,OADAgN,KAAKyyG,QAAUP,GAAUl/G,EAAGgN,KAAKsV,QAAQjH,KAClCrO,KAAKyyG,OAChB,EAEAD,EAASxuG,UAAU0jC,KAAO,SAAe10C,GACrC,GAAIgN,KAAKyyG,QAAS,CACd,IAAIhwB,EAAaziF,KAAKyiF,WAAaziF,KAAK0yG,SAAS1/G,EAAG+xB,GAAG5c,OAAOnI,KAAK0yG,SAAS1/G,EAAGgyB,IAC/E,GAAIy9D,EAAWroF,OAEX,OADA4F,KAAKyiF,WAAaA,EACX6vB,GAAkB7vB,EAEjC,CACJ,EAEA+vB,EAASxuG,UAAUwlB,IAAM,WACrB,IAAInjB,EAASrG,KAAKyyG,QAGlB,OAFAzyG,KAAKyyG,SAAU,EAERpsG,CACX,EAEAmsG,EAASxuG,UAAU28D,IAAM,WACrB,IACIzL,EADMl1D,KACSk1D,SACfutB,EAFMziF,KAEWyiF,WACrB,GAAIA,EAAWroF,OAAQ,CACnB,IAAK,IAAIqa,EAAM,EAAGA,EAAMguE,EAAWroF,OAAQqa,IAAO,CAC9C,IAAIijC,EAAQ+qC,EAAWhuE,GACvBygD,EAASyqC,kBAAkBjoD,EAAM3M,KAAM2M,EAAMA,MACjD,CACAwd,EAASg9B,OAAOh9B,EAAS46B,MAC7B,CACJ,EAEA0iB,EAASxuG,UAAUs/C,QAAU,kBAClBtjD,KAAKk1D,QAChB,EAEAs9C,EAASxuG,UAAU0uG,SAAW,SAAmB1/G,EAAG6pD,GAChD,IAAIqY,EAAWl1D,KAAKk1D,SAChB5pC,GAASt4B,EAAE6pD,GAAUvxB,MACrB+lC,GAAQrxD,KAAKsV,QAAQ+7C,MAAQ,IAAItmC,cACjC4nF,EAAc,GAElB,GAAc,IAAVrnF,IAAgB+lC,GAAQ,IAAItmC,gBAAkB8xB,EAE9C,IADA,IAAIyY,EAAOJ,EAASI,KACX7gD,EAAM,EAAGA,EAAM6gD,EAAKl7D,OAAQqa,IAAO,CACxC,IAAIs2B,EAAOuqB,EAAK7gD,GAEhB,GAAIooC,IAAa93B,IAAMgmB,EAAKz1B,QAAQq1C,UAAY9N,IAAa73B,GAAK+lB,EAAKz1B,QAAQq1C,SAAU,CACrF,IAAIjT,EAAQ3M,EAAK41B,IAAIr1C,GAEjBosB,IACAA,EAAMqhB,YAAa,EACnB45C,EAAYvjG,KAAK,CACb27B,KAAMA,EACN2M,MAAOA,IAGnB,CACJ,CAGJ,OAAOi7D,CACX,EAEOH,CACX,CAhFgB,CAgFdvhF,IAEFuhF,GAASxuG,UAAUsR,QAAU,CACzBjH,IAAK,OACLgjD,KAAM,QAGV,UCvFIuhD,GAAiB,SAAU3hF,GAC3B,SAAS2hF,EAAc7hD,EAAOz7C,GAC1B2b,EAAMjuB,KAAKhD,MAEXA,KAAK+wD,MAAQA,EACb/wD,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,GAC5CtV,KAAKkf,eACT,CAiLA,OA/KK+R,IAAQ2hF,EAAc7nG,UAAYkmB,GACvC2hF,EAAc5uG,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACxD4uG,EAAc5uG,UAAUqH,YAAcunG,EAEtCA,EAAc5uG,UAAUkb,cAAgB,WACpC,IAAI2zF,EAAU7yG,KAAK8yG,SAAWh6G,SAASomB,cAAc,OACrD2zF,EAAQv+G,UAAY,YACpB,IAAIy+G,EAAej6G,SAASomB,cAAc,OAC1C6zF,EAAaz+G,UAAY,kBACzBu+G,EAAQrzF,YAAYuzF,EACxB,EAEAH,EAAc5uG,UAAUgvG,cAAgB,WAChChzG,KAAK8yG,SAASh+E,YACd90B,KAAK8yG,SAASh+E,WAAWpV,YAAY1f,KAAK8yG,SAElD,EAEAF,EAAc5uG,UAAUivG,UAAY,SAAoBzoG,GACpD6c,GAAcrnB,KAAK8yG,SAAUtoG,EACjC,EAEAooG,EAAc5uG,UAAUulB,MAAQ,SAAgBv2B,GAC5C,GAAIk/G,GAAUl/G,EAAGgN,KAAKsV,QAAQjH,KAAM,CAChC,IAAI0iD,EAAQ/wD,KAAK+wD,MACb7rB,EAAQ6rB,EAAM0uC,kBAAkBzsG,GAChCkgH,EAAWlzG,KAAKmzG,UAAYpiD,EAAM0d,UAAU6nB,YAAYpxD,GACxDm4C,EAAU61B,EAAWA,EAASzmB,YAAY5lE,QAAU,KAExD,GAAIqsF,GAAY71B,EAAS,CACrB,IAAI/3D,EAAStlB,KAAK2hG,iBAalB,OAXAtkB,EAAQ13D,UAAUL,EAAOwC,KAAMxC,EAAOqC,KACtC3nB,KAAKozG,iBAAmB/1B,EAExBvkF,SAAS0E,KAAKgiB,YAAYxf,KAAK8yG,UAC/B9yG,KAAKizG,UAAU,CACXnrF,KAAM90B,EAAEg7B,MAAQ,EAChBrG,IAAK30B,EAAEk7B,MAAQ,EACf15B,MAAO,EACPC,OAAQ,KAGL,CACX,CACJ,CACA,OAAO,CACX,EAEAm+G,EAAc5uG,UAAU29F,eAAiB,WACrC,IAAIj9C,EAAe1kD,KAAK+wD,MAAMv9D,QAC1BjB,EAAM80B,GAAcq9B,EAAc,CAAE,cAAe,eACnD5zB,EAAcv+B,EAAIu+B,YAClBC,EAAax+B,EAAIw+B,WACjBzL,EAAS0K,GAAc00B,GAE3B,MAAO,CACH58B,KAAMgJ,EAAcxL,EAAOwC,KAC3BH,IAAKoJ,EAAazL,EAAOqC,IAEjC,EAEAirF,EAAc5uG,UAAU0jC,KAAO,SAAe10C,GAC3BgN,KAAKmzG,WAEhBnzG,KAAKizG,UAAUjzG,KAAKqzG,mBAAmBrgH,GAE/C,EAEA4/G,EAAc5uG,UAAUwlB,IAAM,SAAcx2B,GAExC,GADegN,KAAKmzG,UACN,CACV,IAAInjF,EAAgBhwB,KAAK2hG,iBACrB2R,EAAoBtzG,KAAKqzG,mBAAmBrgH,GAChDsgH,EAAkBxrF,MAAQkI,EAAclI,KACxCwrF,EAAkB3rF,KAAOqI,EAAcrI,IAEvC,IAAI4B,EAAQ,CAAExD,EAAGutF,EAAkBxrF,KAAM9B,EAAGstF,EAAkB3rF,KAC1D6B,EAAM,CAAEzD,EAAGutF,EAAkBxrF,KAAOwrF,EAAkB9+G,MAAOwxB,EAAGstF,EAAkB3rF,IAAM2rF,EAAkB7+G,QAM9G,OALAuL,KAAKuzG,kBAAkBhqF,EAAOC,GAE9BxpB,KAAKgzG,uBACEhzG,KAAKmzG,UAELb,GAAkBtyG,KAAKyiF,WAClC,CACJ,EAEAmwB,EAAc5uG,UAAUwvG,KAAO,WAC3B,IAAI/wB,EAAaziF,KAAKyiF,WACtB,GAAIA,GAAcA,EAAWroF,OAAQ,CAEjC,IADA,IAAI86D,EAAWl1D,KAAK+wD,MAAM0d,UACjBh6D,EAAM,EAAGA,EAAMguE,EAAWroF,OAAQqa,IAAO,CAC9C,IAAI6lE,EAAYmI,EAAWhuE,GAC3BygD,EAASyqC,kBAAkBrlB,EAAUvvC,KAAMuvC,EAAU5iC,MACzD,CACAwd,EAASg9B,OAAOh9B,EAAS46B,MAC7B,CACJ,EAEA8iB,EAAc5uG,UAAUs/C,QAAU,WAC9BtjD,KAAKgzG,uBACEhzG,KAAK8yG,gBACL9yG,KAAK+wD,KAChB,EAEA6hD,EAAc5uG,UAAUuvG,kBAAoB,SAA4BhqF,EAAOC,GAK3E,IAJA,IAAI6nC,GAAQrxD,KAAKsV,QAAQ+7C,MAAQ,IAAItmC,cACjC03D,EAAa,GAEbntB,EAAOt1D,KAAKmzG,UAAU79C,KACjB7gD,EAAM,EAAGA,EAAM6gD,EAAKl7D,OAAQqa,IAAO,CACxC,IAAIs2B,EAAOuqB,EAAK7gD,GACZk2C,EAAW5f,EAAKz1B,QAAQq1C,SAC5B,IAAM0G,IAAStsC,GAAM4lC,KAAe0G,IAASrsC,IAAK2lC,IAAaxlC,GAAQ4lB,EAAKqwC,WAAY,CACpF,IAAI1jC,EAAQ3M,EAAK61B,YAAYr3C,EAAOC,GAChCkuB,GACA+qC,EAAWrzE,KAAK,CACZ27B,KAAMA,EACN2M,MAAOA,GAGnB,CACJ,CAEA13C,KAAKyiF,WAAaA,CACtB,EAEAmwB,EAAc5uG,UAAUqvG,mBAAqB,SAA6BrgH,GACtE,IAAIqqF,EAAUr9E,KAAKozG,iBACfK,EAAgB,CAChB1tF,EAAG/yB,EAAE+yB,EAAE0tF,cACPztF,EAAGhzB,EAAEgzB,EAAEytF,eAEPzlF,EAAQh7B,EAAE+yB,EAAElT,SACZqb,EAAQl7B,EAAEgzB,EAAEnT,SACZw+C,GAAQrxD,KAAKsV,QAAQ+7C,MAAQ,IAAItmC,cACjCjD,EAAOhH,KAAK6N,IAAI8kF,EAAc1tF,EAAGiI,GACjCrG,EAAM7G,KAAK6N,IAAI8kF,EAAcztF,EAAGkI,GAChC15B,EAAQssB,KAAKC,IAAI0yF,EAAc1tF,EAAIiI,GACnCv5B,EAASqsB,KAAKC,IAAI0yF,EAAcztF,EAAIkI,GA2BxC,OAzBImjC,IAAStsC,IACT+C,EAAOu1D,EAAQ/yC,GACf91C,EAAQ6oF,EAAQ7oF,SAEhB68D,IAASrsC,IACT2C,EAAM01D,EAAQ9yC,GACd91C,EAAS4oF,EAAQ5oF,UAGjBu5B,EAAQqvD,EAAQ7yC,KAChBh2C,EAAQ6oF,EAAQ7yC,GAAKipE,EAAc1tF,GAGnCiI,EAAQqvD,EAAQ/yC,KAChB91C,EAAQi/G,EAAc1tF,EAAIs3D,EAAQ/yC,IAGlCpc,EAAQmvD,EAAQ5yC,KAChBh2C,EAAS4oF,EAAQ5yC,GAAKgpE,EAAcztF,GAGpCkI,EAAQmvD,EAAQ9yC,KAChB91C,EAASg/G,EAAcztF,EAAIq3D,EAAQ9yC,IAGhC,CACHziB,KAAMhH,KAAK0K,IAAI1D,EAAMu1D,EAAQ/yC,IAC7B3iB,IAAK7G,KAAK0K,IAAI7D,EAAK01D,EAAQ9yC,IAC3B/1C,MAAOA,EACPC,OAAQA,EAEhB,EAEOm+G,CACX,CAzLqB,CAyLnB3hF,IAEF2hF,GAAc5uG,UAAUsR,QAAU,CAC9BjH,IAAK,QACLgjD,KAAM,QAGV,UCzLIqiD,GAAkB,SAAUziF,GAC5B,SAASyiF,EAAe3iD,EAAOz7C,GAC3B2b,EAAMjuB,KAAKhD,MAEXA,KAAK+wD,MAAQA,EACb/wD,KAAKsV,QAAUyR,GAAW,CACtB4sF,KARO,IASR3zG,KAAKsV,QAASA,EACrB,CAmDA,OAjDK2b,IAAQyiF,EAAe3oG,UAAYkmB,GACxCyiF,EAAe1vG,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACzD0vG,EAAe1vG,UAAUqH,YAAcqoG,EAEvCA,EAAe1vG,UAAU4vG,aAAe,SAAuBtoF,EAAOuyD,GAOlE,IANA,IAEIxsB,GAAQrxD,KAAKsV,QAAQ+7C,MAAQ,IAAItmC,cACjC03D,EAAa,GACbntB,EAAOt1D,KAAK+wD,MAAM0d,UAAUnZ,KAEvB7gD,EAAM,EAAGA,EAAM6gD,EAAKl7D,OAAQqa,IAAO,CACxC,IAAIs2B,EAAOuqB,EAAK7gD,GACZk2C,EAAW5f,EAAKz1B,QAAQq1C,SAE5B,IAAM0G,IAAStsC,GAAM4lC,KAAe0G,IAASrsC,IAAK2lC,IAAa5f,EAAKu1B,UAAW,CAC3E,IAAIqzC,EAAOjlF,GAXN1uB,KAWwBsV,QAAQq+F,KA9BtC,IACA,IA8BKj8D,EAAQ3M,EAAKu1B,WAAWh1C,EAAQqoF,EAAM91B,GAEtCnmC,GACA+qC,EAAWrzE,KAAK,CACZ27B,KAAMA,EACN2M,MAAOA,GAGnB,CACJ,CAGA,OADA13C,KAAKyiF,WAAaA,EACX6vB,GAAkB7vB,EAC7B,EAEAixB,EAAe1vG,UAAUwvG,KAAO,WAC5B,IAAI/wB,EAAaziF,KAAKyiF,WAClBvtB,EAAWl1D,KAAK+wD,MAAM0d,UAE1B,GAAIgU,GAAcA,EAAWroF,QAAU86D,EAASyqC,kBAAmB,CAC/D,IAAK,IAAIlrF,EAAM,EAAGA,EAAMguE,EAAWroF,OAAQqa,IAAO,CAC9C,IAAI6lE,EAAYmI,EAAWhuE,GAC3BygD,EAASyqC,kBAAkBrlB,EAAUvvC,KAAMuvC,EAAU5iC,MACzD,CACAwd,EAASg9B,OAAOh9B,EAAS46B,MAC7B,CACJ,EAEA4jB,EAAe1vG,UAAUs/C,QAAU,kBACxBtjD,KAAK+wD,KAChB,EAEO2iD,CACX,CA5DsB,CA4DpBziF,IAEF,MC1Ee,SAAS06B,GAAW/0D,EAAM8oD,EAAMvT,EAAOpB,EAAM8oE,GAUxD,MARc,UAAV1nE,EACQuT,EAAKnY,OAAOwD,GACH,QAAVoB,EACCuT,EAAKnY,OAAOwD,GAAQ2U,EAAK9oD,KAAKi9G,GAAaj9G,EAE3C8oD,EAAKnY,OAAOwD,IAAS2U,EAAK9oD,KAAKi9G,GAAaj9G,GAAQ,CAIpE,CCXe,SAASk9G,GAAkBl9G,EAAM8oD,EAAMvT,EAAOpB,EAAM8oE,GAU/D,MARc,UAAV1nE,EACQuT,EAAKnY,OAAOwD,GAAQ2U,EAAK9oD,KAAKi9G,GAAaj9G,EAClC,QAAVu1C,EACCuT,EAAKnY,OAAOwD,GAEZ2U,EAAKnY,OAAOwD,IAAS2U,EAAK9oD,KAAKi9G,GAAaj9G,GAAQ,CAIpE,CCHA,IAAIk9B,GAAkB,CAClBigF,aAAc,QACdC,eAAgB,QAChB7hG,WAAY,QACZuV,QAAS,EACTusF,YAAa,aACbC,YAAa,EACbxpE,MAAM,EACNypE,QAAQ,GAGR3sG,GAAU,SAAUssC,EAAU5tC,GAC9B4tC,EAAStsC,QAAQtB,EACrB,EAEI29E,GAAiB,SAAU/vC,EAAU5tC,GAGrC,IAFA,IAESuO,EAFIq/B,EAAS15C,OAEE,EAAGqa,GAAO,EAAGA,IACjCvO,EAAS4tC,EAASr/B,GAAMA,EAEhC,EAEI2/F,GAAU,SAAUpzD,GACpB,SAASozD,EAAO10D,EAAMpqC,GAClB0rC,EAAMh+C,KAAKhD,KAAM6K,OAAOW,OAAO,CAAC,EAAGsoB,GAAiBxe,IACpDtV,KAAKq0G,MAAQ30D,EACb1/C,KAAKs0G,UAAY,CAAC,CACtB,CAyKA,OAvKKtzD,IAAQozD,EAAOrpG,UAAYi2C,GAChCozD,EAAOpwG,UAAY6G,OAAOS,OAAQ01C,GAASA,EAAMh9C,WACjDowG,EAAOpwG,UAAUqH,YAAc+oG,EAE/BA,EAAOpwG,UAAU07C,KAAO,SAAeviD,GACnC,OAAIA,GACA6C,KAAKq0G,MAAQl3G,EACN6C,MAGJA,KAAKq0G,KAChB,EAEAD,EAAOpwG,UAAUuwG,SAAW,WACxB,IAAIj/F,EAAUtV,KAAKsV,QACfk/F,EAAWx0G,KAAKs0G,UACQ,eAAxBh/F,EAAQ2+F,aACRO,EAASX,UAAY,QACrBW,EAASC,gBAAkB,SAC3BD,EAAS5pD,UAAY,IACrB4pD,EAASE,WAAa,MAEtBF,EAASX,UAAY,SACrBW,EAASC,gBAAkB,QAC3BD,EAAS5pD,UAAY,IACrB4pD,EAASE,WAAa,KAGtBp/F,EAAQ44C,SACRluD,KAAKwH,QAAUq8E,GACf7jF,KAAK20G,aAAeb,KAEpB9zG,KAAKwH,QAAUA,GACfxH,KAAK20G,aAAehpD,GAE5B,EAEAyoD,EAAOpwG,UAAUy/C,OAAS,WAGtB,GAAKzjD,KAAKq0G,OAAkC,IAAzBr0G,KAAKpM,SAASwG,OAAjC,CAGA4F,KAAKu0G,WAEDv0G,KAAKsV,QAAQgd,WACbtyB,KAAKsyB,UAAU,MA4BnB,IAzBA,IAcIy5B,EAAczuC,EAAOs3F,EAdrBt/F,EAAUtV,KAAKsV,QACfoqC,EAAO1/C,KAAKq0G,MACZ9hH,EAAMyN,KAAK60G,cACXvpD,EAAS/4D,EAAI+4D,OACbC,EAAah5D,EAAIg5D,WACjBH,EAAQprD,KAAKs0G,UACbT,EAAYzoD,EAAMyoD,UAClBY,EAAkBrpD,EAAMqpD,gBACxB7pD,EAAYQ,EAAMR,UAClB8pD,EAAatpD,EAAMspD,WACnBI,EAAc,IAAI7vE,GAClB8vE,EAAgB,IAAI9vE,GACpBruC,EAAO,IAAI4xC,GACXojB,EAAaD,GAAWJ,EAAY7L,EAAMpqC,EAAQy+F,aAAcW,EAAYD,GAG5EO,EAAkB,SAAU3rE,EAAM50B,GAClC,IAAIjhB,EAAU8pB,EAAMw2B,SAASr/B,GAE7BsgG,EAAcnqD,GAAamB,EAC3BgpD,EAAcL,GAAc/oD,GAAWtiB,EAAKzyC,KAAK69G,GAAkBG,EAAUt/F,EAAQnD,WAAYuiG,EAAYD,GC1G1G,SAA0BvvE,EAAOmE,EAAM71C,GAClD,IAAIyhH,EAAYzhH,EAAQ8+B,aAAe6iB,KACnChkB,EAAS8jF,EAAU9jF,SACvBA,EAAOn+B,GAAKkyC,EAAMnf,EAAIsjB,EAAK9B,OAAOxhB,EAClCoL,EAAO9U,GAAK6oB,EAAMlf,EAAIqjB,EAAK9B,OAAOvhB,EAElCivF,EAAU9jF,OAAOA,GACjB39B,EAAQ8+B,UAAU2iF,EACtB,CDmGYC,CAAiBH,EAAe1rE,EAAM71C,GACtCu4D,GAAgB1iB,EAAKzyC,KAAKi9G,GAAav+F,EAAQoS,OACnD,EAESmkC,EAAW,EAAGA,EAAWP,EAAOlxD,OAAQyxD,IAC7CvuC,EAAQguC,EAAOO,GACfipD,EAAYlqD,GAAamB,EAtChB/rD,KAsCsC20G,aAAar3F,EAAM1mB,KAAM8oD,EAAMpqC,EAAQ0+F,eAAgBppD,EAAWipD,GACjHiB,EAAYJ,GAAc9oD,EAC1Bh1D,EAAKi9G,GAAav2F,EAAM1mB,KACxBA,EAAK69G,GAAmBn3F,EAAMk8C,SAC9Bo7C,EAAW,IAAInsE,GAAKqsE,EAAal+G,GA1CxBoJ,KA2CFwH,QAAQ8V,EAAM63F,OAAQH,GAE7BppD,GAActuC,EAAMk8C,SAAWlkD,EAAQ4+F,YAG3C,IAAK5+F,EAAQo1B,MAAQptB,EAAM1mB,KAAO8oD,EAAK9oD,KAAKi9G,GAAY,CACpD,IAAI7hF,EAAQ0tB,EAAK9oD,KAAKi9G,GAAae,EAASh+G,KAAKi9G,GAC7CuB,EAAcR,EAAS3rE,UAAUjX,MAAMA,EAAOA,GAE9CqjF,EAAW1pD,GADEipD,EAASh+G,KAAK69G,GAAmBziF,EACZ0tB,EAAMpqC,EAAQy+F,aAAcW,EAAYD,GAC1EniF,EAAY6iB,KACE,MAAdyV,EACAt4B,EAAU3M,UAAU+5B,EAAKnY,OAAOxhB,EAAIqvF,EAAYrvF,EAAGsvF,EAAWD,EAAYpvF,GAE1EsM,EAAU3M,UAAU0vF,EAAWD,EAAYrvF,EAAG25B,EAAKnY,OAAOvhB,EAAIovF,EAAYpvF,GAE9EsM,EAAUN,MAAMA,EAAOA,GAEvBhyB,KAAKsyB,UAAUA,EACnB,CA1DA,CA2DJ,EAEA8hF,EAAOpwG,UAAU6wG,YAAc,WAkB3B,IAjBA,IAAIrzE,EAASxhC,KAGTsV,EADMtV,KACQsV,QACd1hB,EAFMoM,KAESpM,SACfsgH,EAAc5+F,EAAQ4+F,YACtBxpE,EAAOp1B,EAAQo1B,KACfhjB,EAAUpS,EAAQoS,QAClBmsF,EAAY7zG,KAAKs0G,UAAUT,UAC3Bv2F,EAAQtd,KAAKs1G,YACbhqD,EAAS,GACTiqD,EAAW,WACXjqD,EAAOl8C,KAAKkO,GACZiuC,GAAcjuC,EAAMk8C,SAAW06C,CACnC,EACI3oD,GAAc2oD,EAETz/F,EAAM,EAAGA,EAAM7gB,EAASwG,OAAQqa,IAAO,CAC5C,IAAIjhB,EAAUI,EAAS6gB,GACnB40B,EAAOz1C,EAAS6gB,GAAKghC,cACrBjiD,EAAQO,WAAas1C,IACjBqB,GAAQptB,EAAM1mB,KAAOyyC,EAAKzyC,KAAKi9G,GAAansF,EAAU8Z,EAAO6yE,MAAMz9G,KAAKi9G,GAC5C,IAAxBv2F,EAAM63F,OAAO/6G,QACbonC,EAAOg0E,YAAYl4F,EAAO+rB,EAAM71C,GAChC+hH,IACAj4F,EAAQkkB,EAAO8zE,cAEfC,IACAj4F,EAAQkkB,EAAO8zE,YACf9zE,EAAOg0E,YAAYl4F,EAAO+rB,EAAM71C,IAGpCguC,EAAOg0E,YAAYl4F,EAAO+rB,EAAM71C,GAG5C,CAMA,OAJI8pB,EAAM63F,OAAO/6G,QACbm7G,IAGG,CACHjqD,OAAQA,EACRC,WAAYA,EAEpB,EAEA6oD,EAAOpwG,UAAUwxG,YAAc,SAAsBl4F,EAAO+rB,EAAM71C,GAC9D8pB,EAAM1mB,MAAQyyC,EAAKzyC,KAAKoJ,KAAKs0G,UAAUT,WAAa7zG,KAAKsV,QAAQoS,QACjEpK,EAAMk8C,SAAW14C,KAAK0K,IAAI6d,EAAKzyC,KAAKoJ,KAAKs0G,UAAUG,iBAAkBn3F,EAAMk8C,UAC3El8C,EAAM63F,OAAO/lG,KAAKi6B,GAClB/rB,EAAMw2B,SAAS1kC,KAAK5b,EACxB,EAEA4gH,EAAOpwG,UAAUsxG,UAAY,WACzB,MAAO,CACH97C,SAAU,EACV5iE,MAAOoJ,KAAKsV,QAAQoS,QACpBytF,OAAQ,GACRrhE,SAAU,GAElB,EAEOsgE,CACX,CA/Kc,CA+KZpzD,IAEF,ME7MIy0D,GAAgB,SAAUlyD,GAC1B,SAASkyD,EAAangG,EAAS0uC,GAC3BT,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKgkD,aAAeA,CACxB,CA6CA,OA3CKT,IAAekyD,EAAa1qG,UAAYw4C,GAC7CkyD,EAAazxG,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACrEyxG,EAAazxG,UAAUqH,YAAcoqG,EAErCA,EAAazxG,UAAU5K,OAAS,WAC5B,IACIxF,EADMoM,KACSpM,SACf0hB,EAFMtV,KAEQsV,QACdq1C,EAAWr1C,EAAQq1C,SAEvB3qD,KAAKykD,OAAS,IAAItE,GAAY,KAAM,CAChCz4B,QAASijC,EAAW,EAAIr1C,EAAQoS,QAChCwsF,YAAavpD,EAAWr1C,EAAQoS,QAAU,EAC1CusF,YAAatpD,EAAW,WAAa,aACrCuD,QAAS54C,EAAQ07C,IACjB7+C,WAAYw4C,EAAW,QAAU,WAGrC,IAAK,IAAIl2C,EAAM,EAAGA,EAAM7gB,EAASwG,OAAQqa,IAAO,CAC5C,IAAIihG,EAAa9hH,EAAS6gB,GAC1BihG,EAAWjyD,OAAO,IAAIpZ,IACtBqrE,EAAWvxD,cACf,CACJ,EAEAsxD,EAAazxG,UAAUy/C,OAAS,SAAiBxzB,GAC7CjwB,KAAKykD,OAAO/E,KAAKzvB,EAAI+b,UACrBhsC,KAAKykD,OAAOhB,SACZ,IAAIpa,EAAOrpC,KAAKykD,OAAOhP,cAGnBz1C,KAAKiwB,IADLoZ,EACWmjB,GAAUnjB,GAEV,IAAIgB,EAEvB,EAEAorE,EAAazxG,UAAUmgD,aAAe,WAClCnkD,KAAKqkD,WACT,EAEAoxD,EAAazxG,UAAUogD,aAAe,WAA0B,EAEzDqxD,CACX,CAnDoB,CAmDlBlyD,IAEF,MClDIoyD,GAAc,SAAUlvD,GACxB,SAASkvD,EAAWrgG,GAChBmxC,EAAWzjD,KAAKhD,KAAMsV,GAEtBtV,KAAK41G,kBACAtgG,EAAQ07C,KAIThxD,KAAK0mE,cACL1mE,KAAKu8E,iBAJLv8E,KAAKu8E,eACLv8E,KAAK0mE,cAKb,CAwHA,OAtHKjgB,IAAakvD,EAAW5qG,UAAY07C,GACzCkvD,EAAW3xG,UAAY6G,OAAOS,OAAQm7C,GAAcA,EAAWziD,WAC/D2xG,EAAW3xG,UAAUqH,YAAcsqG,EAEnCA,EAAW3xG,UAAU4xG,gBAAkB,WACnC51G,KAAKkiB,UAAY,IAAIuoC,GAAa,CAAEE,UAAU,EAAOjgB,MAAM,EAAOyB,MAAO3oB,EAAQkE,QAAS1nB,KAAKsV,QAAQoS,UACvG1nB,KAAK6rB,OAAO7rB,KAAKkiB,UACrB,EAEAyzF,EAAW3xG,UAAUu4E,aAAe,WAChCv8E,KAAKkiB,UAAU2J,OAAO,IAAI07B,GAAavnD,KAAK61G,iBAChD,EAEAF,EAAW3xG,UAAU6xG,cAAgB,WACjC,IAAIvgG,EAAUtV,KAAKsV,QACf47E,EAAc57E,EAAQ47E,YAC1B,OAAOnqE,GAAW,CAAC,EAAGzR,EAAQ+mE,QAAS,CACnCl1B,WAAY+pC,EACZrqC,OAAQ,CACJr4B,MAAO0iE,IAGnB,EAEAykB,EAAW3xG,UAAU0iE,YAAc,WAC/B,IAAIpxD,EAAUtV,KAAKsV,QACf09C,EAAejsC,GAAW,CAAC,EAAGzR,EAAQ08C,QAE1ChyD,KAAKkiB,UAAU2J,OAAO,IAAI6gC,GAAQp3C,EAAQpc,KAAM85D,GACpD,EAEA2iD,EAAW3xG,UAAUwgD,eAAiB,WAClCiC,EAAWziD,UAAUwgD,eAAexhD,KAAKhD,MAEzC,IAAIsnD,EAAStnD,KAAKsV,QAAQgyC,QAAU,CAAC,EACjCwuD,EAAY91G,KAAK+1G,aAAe51D,GAAAA,SAAmBngD,KAAKkiB,UAAU+N,IAAI+b,SAAU,CAChF+J,KAAM,CACFvnB,MAAO3J,EACP2wB,QAAS,GAEbjwB,OAAQ,KACR+hC,OAAQA,EAAO7wD,OAAS6wD,IAG5BtnD,KAAK2kD,aAAamxD,EACtB,EAEAH,EAAW3xG,UAAUyb,MAAQ,SAAgB6uC,EAAQt7D,GACjD,IAAIgV,EAAOhI,KAAK6vD,UAAU78D,IAErBs7D,EAAOvkC,QtIRI,kBsIQuB/hB,IAAShV,GAAgB,gBAAXA,EAAEG,MACnDH,EAAE88D,gBAEV,EAEA6lD,EAAW3xG,UAAU+rD,KAAO,SAAezB,EAAQt7D,GAC/C,IAAIgV,EAAOhI,KAAK6vD,UAAU78D,GAO1B,OALKs7D,EAAOvkC,QtIfI,kBsIeuB/hB,IACnCsmD,EAAO0nD,iBAAiBhuG,EAAKkuF,YAAaluF,EAAKiuG,aAI5C,CACX,EAEAN,EAAW3xG,UAAUgsD,IAAM,SAAc1B,EAAQt7D,GAC7Cs7D,EAAO4nD,oBAEP5nD,EAAOvkC,QtIzBS,kBsIyBkB/pB,KAAK6vD,UAAU78D,GACrD,EAEA2iH,EAAW3xG,UAAU6rD,UAAY,SAAoB78D,GACjD,IAAIsiB,EAAUtV,KAAKsV,QAEnB,MAAO,CACH9hB,QAAS46B,GAAap7B,GACtBkG,KAAMoc,EAAQpc,KACd6sD,OAAQzwC,EAAQywC,OAChBmwC,YAAa5gF,EAAQywC,OAAOzrD,MAC5B27G,WAAY3gG,EAAQ2gG,WAE5B,EAEAN,EAAW3xG,UAAUmgD,aAAe,WAChC,IAAI3iB,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACfqwC,EAAerwC,EAAQmvC,OAEvBkB,GACA3lD,KAAKykD,OAASkB,EAAa,CACvBt/C,OAAQiP,EAAQjP,OAChB0/C,OAAQzwC,EAAQywC,OAChBhC,OAAQ/jD,KAAK4jD,YACbqyD,WAAY3gG,EAAQ2gG,WACpB3gG,QAAS,CACL+mE,QAASr8E,KAAK61G,gBACd7jD,OAAQ18C,EAAQ08C,QAEpB5N,aAAc,WACV5iB,EAAO4iB,eACP5iB,EAAO8iB,iBACP9iB,EAAOgjB,iBAEP,IAAIoL,EAAgBpuB,EAAOijB,OAI3B,cAFOjjB,EAAOijB,OAEPmL,CACX,IAEJ5vD,KAAKqkD,aAELoC,EAAWziD,UAAUmgD,aAAanhD,KAAKhD,KAE/C,EAEO21G,CACX,CArIkB,CAqIhBlvD,IAEF,MCtII0vD,GAAa,aAEbC,GAAS,SAETC,GAAU,SAAU9yD,GACpB,SAAS8yD,EAAO/gG,EAAS0uC,QACC,IAAjBA,IAA0BA,EAAe,CAAC,GAE/CT,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKgkD,aAAeA,EAEf96B,GAAQlpB,KAAKsV,QAAQunC,SAAU,CAAEl4B,EAAKH,EAAOjB,EAAQU,EAAMmyF,OAC5Dp2G,KAAKsV,QAAQunC,SAAWr4B,GAG5BxkB,KAAKs2G,mBAELt2G,KAAKu2G,kBAAkBjhG,EAAQ/gB,OAE/ByL,KAAKw2G,aACT,CAuPA,OArPKjzD,IAAe8yD,EAAOtrG,UAAYw4C,GACvC8yD,EAAOryG,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAC/DqyG,EAAOryG,UAAUqH,YAAcgrG,EAE/BA,EAAOryG,UAAUsyG,iBAAmB,WAChC,IAAIhhG,EAAUtV,KAAKsV,QACfunC,EAAWvnC,EAAQunC,SACnB45D,EAAYnhG,EAAQ62B,MACpBA,EAAQ0Q,EACRkK,EAASvjC,EAETq5B,IAAau5D,GACbjqE,EAAQloB,EACDiF,GAAQ2zB,EAAU,CAAEl4B,EAAKpB,KAE5B4oB,EADc,UAAdsqE,EACQxyF,EACa,QAAdwyF,EACCjyF,EAEAhB,EAEZujC,EAASlK,GACF45D,IACW,UAAdA,EACA1vD,EAASpiC,EACY,QAAd8xF,IACP1vD,EAASxjC,IAIjBvjB,KAAKkiB,UAAY,IAAIukC,GAAW,CAC5BnrD,OAAQga,EAAQha,OAChB+vC,QAAS/1B,EAAQ+1B,QACjB8b,WAAY7xC,EAAQ6xC,WACpBN,OAAQvxC,EAAQuxC,OAChBE,OAAQA,EACR5a,MAAOA,EACPyY,OAAQtvC,EAAQsvC,OAChB8B,aAAa,IAGb1mD,KAAK02G,WACL12G,KAAK22G,eAAiB,IAAIlwD,GAAW,CACjCM,OAAQA,EACR5a,MAAOA,EACPyY,OAAQtvC,EAAQsvC,OAChB8B,aAAa,IAGjB1mD,KAAK22G,eAAiB32G,KAAKkiB,UAG/BliB,KAAK6rB,OAAO7rB,KAAKkiB,UACrB,EAEAm0F,EAAOryG,UAAUwyG,YAAc,WAC3B,IAAIxyD,EAAehkD,KAAK8jD,aACpBxuC,EAAUtV,KAAKsV,QACfq1C,EAAW3qD,KAAKy9C,aAChBm5D,EAAe,IAAInB,GAAa,CAChC9qD,SAAUA,EACVjjC,QAASpS,EAAQoS,QACjBspC,IAAKhN,EAAagN,KACnBhN,GACC9C,EAAQ5rC,EAAQ4rC,MAEhB5rC,EAAQ44C,UACRhN,EAAQA,EAAMxmC,MAAM,GAAGwzC,WAK3B,IAFA,IAAIxU,EAAQwH,EAAM9mD,OAETsR,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAIuqB,EAAOirB,EAAMx1C,GAEjBkrG,EAAa/qF,OAAO,IAAI8pF,GAAW5uF,GAAW,CAAC,EAAG,CAC9Cs1D,QAAS/mE,EAAQ+mE,QACjBrqB,OAAQ18C,EAAQ08C,OAChBhB,IAAKhN,EAAagN,KACnB17C,EAAQ2gB,KAAMA,IACrB,CAEA2gF,EAAax9G,SACb4G,KAAK22G,eAAe9qF,OAAO+qF,EAC/B,EAEAP,EAAOryG,UAAUy5C,WAAa,WAC1B,IAAIlrD,EAAMyN,KAAKsV,QACX2+F,EAAc1hH,EAAI0hH,YAClBp3D,EAAWtqD,EAAIsqD,SAInB,OAHgBA,IAAau5D,IAAUnC,IAAgBkC,KAC/ChxF,GAAQ8uF,GAAeA,IAAgBkC,GAAajtF,GAAQ2zB,EAAU,CAAE54B,EAAMO,IAG1F,EAEA6xF,EAAOryG,UAAU6yG,SAAW,WACxB,OAAO72G,KAAKkiB,UAAUtuB,SAAS,GAAGA,SAASwG,OAAS,CACxD,EAEAi8G,EAAOryG,UAAUy/C,OAAS,SAAiB9Y,GACvC,IAAIr1B,EAAUtV,KAAKsV,QACfwhG,EAAYnsE,EAAU9jB,QAErB7mB,KAAK62G,YAKNvhG,EAAQunC,WAAau5D,IACrBp2G,KAAK+2G,sBAAsBD,GAC3B92G,KAAKiwB,IAAM6mF,GAEX92G,KAAKg3G,gBAAgBF,GAGrB92G,KAAK02G,YACL12G,KAAKzL,MAAMkvD,OAAO,IAAIpZ,GAAIrqC,KAAKkiB,UAAU+N,IAAIqa,GAAItqC,KAAKzL,MAAM07B,IAAIsa,GAAIvqC,KAAKkiB,UAAU+N,IAAIua,GAAIxqC,KAAKzL,MAAM07B,IAAIwa,MAZ1GzqC,KAAKiwB,IAAM6mF,CAcnB,EAEAT,EAAOryG,UAAUgzG,gBAAkB,SAA0BrsE,GACzD,IACIr1B,EADMtV,KACQsV,QACd4M,EAFMliB,KAEUkiB,UAChB26B,EAAWvnC,EAAQunC,SACnBroD,EAAQ8gB,EAAQ9gB,MAChBC,EAAS6gB,EAAQ7gB,OACjB8gB,EAAMsnC,IAAal4B,GAAOk4B,IAAat5B,EAASwB,EAAIC,EACpD2lC,EAAW3qD,KAAKy9C,aAChBw5D,EAActsE,EAAU9jB,QACxBqwF,EAAevsE,EAAU9jB,QAEzBg2B,IAAa54B,GAAQ44B,IAAar4B,IAClC0yF,EAAa3sE,GAAK0sE,EAAY1sE,GAAK,GAGnCogB,GAAYl2D,GACZyiH,EAAazsE,GAAKysE,EAAa3sE,GAAK91C,EACpCyiH,EAAa/qE,MAAM8qE,EAAajyF,EAAG9C,EAAU5M,QAAQyxC,UAC7C4D,GAAYn2D,IACpB0iH,EAAa1sE,GAAK0sE,EAAa5sE,GAAK91C,EACpC0iH,EAAa/qE,MAAM8qE,EAAalyF,EAAG7C,EAAU5M,QAAQ62B,QAGzDjqB,EAAUuhC,OAAOyzD,GAGjB,IAAIjnF,GAFJinF,EAAeh1F,EAAU+N,KAEFpJ,SAEnBvR,EAAQi/E,SAAWj/E,EAAQm/E,WAC3ByiB,EAAavxF,UAAUrQ,EAAQi/E,QAASj/E,EAAQm/E,SAChDvyE,EAAUuhC,OAAOyzD,IAGrBjnF,EAAI1a,EAAM,GAAKo1B,EAAUp1B,EAAM,GAC/B0a,EAAI1a,EAAM,GAAKo1B,EAAUp1B,EAAM,GAE/BvV,KAAKiwB,IAAMA,CACf,EAEAomF,EAAOryG,UAAU+yG,sBAAwB,SAAgCpsE,GACrE,IACIr1B,EADMtV,KACQsV,QACd4M,EAFMliB,KAEUkiB,UAChBqyE,EAAUj/E,EAAQi/E,QAClBE,EAAUn/E,EAAQm/E,QAClBjgG,EAAQ8gB,EAAQ9gB,MAChBC,EAAS6gB,EAAQ7gB,OACjBk2D,EAAW3qD,KAAKy9C,aAChBy5D,EAAevsE,EAAU9jB,QAEzB8jC,GAAYl2D,EACZyiH,EAAazsE,GAAKysE,EAAa3sE,GAAK91C,GAC5Bk2D,GAAYn2D,IACpB0iH,EAAa1sE,GAAK0sE,EAAa5sE,GAAK91C,GAExC0tB,EAAUuhC,OAAOyzD,GACjBA,EAAeh1F,EAAU+N,IAEzB/N,EAAUuhC,OAAO,IAAIpZ,GACjBkqD,EAASE,EACTF,EAAU2iB,EAAa1iH,QAASigG,EAAUyiB,EAAaziH,UAE/D,EAEA4hH,EAAOryG,UAAUmgD,aAAe,WACxBnkD,KAAK62G,YACLtzD,EAAav/C,UAAUmgD,aAAanhD,KAAKhD,KAEjD,EAEAq2G,EAAOryG,UAAUuyG,kBAAoB,SAA4BhiH,GAC7D,IAAIu5D,EAAe/mC,GAAW,CAAC,EAAG,CAC9ByH,MAAOlL,EACPu5B,SAAUl4B,EACVwnB,MAAO3oB,GACRjvB,GACC2E,EAAO40D,EAAa50D,KAExB,GAAK3E,IAA2B,IAAlBA,EAAMR,QAApB,CAIA,GAAIoxB,GAAQ2oC,IAAiBA,EAAa/5D,QAAS,CAC/C,IAAI8hE,EAAgBztC,GAAY0lC,GAC5B+H,EACA38D,EAAO28D,EAAc,CAAE38D,KAAMA,IACtB40D,EAAa3sC,SACpBjoB,EAAO8G,KAAKgkD,aAAa7iC,OAAOkuC,KAAKvB,EAAa3sC,OAAQjoB,GAElE,CAEA8G,KAAKzL,MAAQ,IAAIm4D,GAAQxzD,EAAM40D,GAE/B9tD,KAAKm3G,oBAELn3G,KAAKo3G,0BAfL,CAgBJ,EAEAf,EAAOryG,UAAUmzG,kBAAoB,WACjCn3G,KAAKhK,OAAS,IAAIy0D,GAAa,CAC3BE,UAAU,EACVjgB,MAAM,IAGV1qC,KAAKkiB,UAAU2J,OAAO7rB,KAAKhK,OAC/B,EAEAqgH,EAAOryG,UAAU0yG,SAAW,WACxB,OAAOzlD,QAAQjxD,KAAKsV,QAAQ/gB,QAAwC,IAA/ByL,KAAKsV,QAAQ/gB,MAAMR,QAC5D,EAEAsiH,EAAOryG,UAAUozG,yBAA2B,WAC1Bp3G,KAAKsV,QAEP/gB,MAAMsoD,WAAat5B,GAC3BvjB,KAAKhK,OAAO61B,OAAO7rB,KAAK22G,gBACxB32G,KAAKhK,OAAO61B,OAAO7rB,KAAKzL,SAExByL,KAAKhK,OAAO61B,OAAO7rB,KAAKzL,OACxByL,KAAKhK,OAAO61B,OAAO7rB,KAAK22G,gBAEhC,EAEON,CACX,CAzQc,CAyQZ9yD,IAEF5tB,GAAkB0gF,GAAQ,CACtBx5D,SAAUr4B,EACV08B,MAAO,GACPqzC,QAAS,EACTE,QAAS,EACTn5F,OAAQksB,GAAW,GACnB6jB,QAAS7jB,GAAW,GACpBq/B,OAAQ,CACJr4B,MAAOlL,EACP9uB,MAAO,GAEXyhC,KAAM,CACFqxB,OA1RM,UA2RN5/B,QAAS,GAEbA,QAAS,EACTy/B,WAAY,GACZvC,OAAQ,EACRy3B,QAAS,CACLx1B,OAAQ,CACJryD,MAAO,GAEXA,MAAO,GACPC,OAAQ,EACRtB,KAAM,OACNg5C,MAAOloB,EACP8iC,OAAQvjC,KAIhB,UClTI6zF,GAAmB,SAAUpmF,GAC7B,SAASomF,IACLpmF,EAAMjuB,KAAKhD,MAEXA,KAAKs3G,UAAY,EACrB,CA+BA,OA7BKrmF,IAAQomF,EAAgBtsG,UAAYkmB,GACzComF,EAAgBrzG,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC1DqzG,EAAgBrzG,UAAUqH,YAAcgsG,EAExCA,EAAgBrzG,UAAUkkB,SAAW,SAAmB/0B,EAAMq8E,GAC1DxvE,KAAKs3G,UAAUloG,KAAK,CAChBjc,KAAMA,EACNq8E,YAAaA,GAErB,EAEA6nC,EAAgBrzG,UAAUsH,OAAS,SAAiBoxF,EAAWpnF,EAAS0uC,GAKpE,IAJA,IAEI+B,EAFAwxD,EAAWv3G,KAAKs3G,UAChB7uF,EAAQ8uF,EAAS,GAGZ9iG,EAAM,EAAGA,EAAM8iG,EAASn9G,OAAQqa,IAAO,CAC5C,IAAIye,EAAQqkF,EAAS9iG,GAGrB,IAFAsxC,EAASsoC,GAAmBqO,EAAWxpE,EAAMs8C,cAElCp1E,OAAS,EAAG,CACnBquB,EAAQyK,EACR,KACJ,CACJ,CAEA,OAAO,IAAIzK,EAAMt1B,KAAK4yD,EAAQzwC,EAAS0uC,EAC3C,EAEOqzD,CACX,CArCuB,CAqCrBpmF,IAEFomF,GAAgB9jH,QAAU,IAAI8jH,GAE9B,UC/BA,SAASG,GAAUljH,GACf,IAAId,EAAUsF,SAASomB,cAAc,OAKrC,OAJI5qB,IACAd,EAAQc,UAAYA,GAGjBd,CACX,CAEA,SAASikH,GAAcjkH,GAEnB,IADA,IAAID,EAAUC,EACPD,IAAYs1B,GAAWt1B,EAAS,aACnCA,EAAUA,EAAQuhC,WAGtB,OAAOvhC,CACX,CAEA,IAAImkH,GAAa,SAAUzmF,GACvB,SAASymF,EAAU3mD,EAAOomB,EAAc7hE,EAASsU,GAC7CqH,EAAMjuB,KAAKhD,MAEX,IAAI0kD,EAAeqM,EAAMv9D,QAEzBwM,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,GAC5CtV,KAAK+wD,MAAQA,EACb/wD,KAAK4pB,SAAWA,EAChB5pB,KAAK0kD,aAAeA,EACpB1kD,KAAKm3E,aAAeA,EACpBn3E,KAAK23G,UAAY33G,KAAKm3E,wBAAwB1S,GAE9CzkE,KAAK43G,cAEL53G,KAAKjM,QAAUiM,KAAKsV,QAAQvhB,SAAW2wD,EAAat6C,aAEhDpK,KAAKjM,UACLiM,KAAK63G,iBAEL73G,KAAKipB,IAAIjpB,KAAK4iC,OAAO5iC,KAAKsV,QAAQiuB,MAAOvjC,KAAK4iC,OAAO5iC,KAAKsV,QAAQhW,KAElEU,KAAK2vB,aAEb,CA2iBA,OAziBKsB,IAAQymF,EAAU3sG,UAAYkmB,GACnCymF,EAAU1zG,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpD0zG,EAAU1zG,UAAUqH,YAAcqsG,EAElCA,EAAU1zG,UAAU8zG,OAAS,SAAiBziD,GAC1C,OAAOr1D,KAAKm3E,aAAa9hB,OAASA,CACtC,EAEAqiD,EAAU1zG,UAAU6zG,eAAiB,WACjC,IAAIviG,EAAUtV,KAAKsV,QACfzc,EAAUmH,KAAKnH,QAAU2+G,GAAU,cACvCnwF,GAAcxuB,EAAS,CACnB8uB,IAAKrS,EAAQgQ,OAAOqC,IACpBG,KAAMxS,EAAQgQ,OAAOwC,KACrBtzB,MAAO8gB,EAAQ9gB,MACfC,OAAQ6gB,EAAQ7gB,OAChBs1G,UAAW,QAEf,IAAIgO,EAAY/3G,KAAK+3G,UAAYP,GAAU,eAC3Cx3G,KAAKg4G,SAAWR,GAAU,UAC1Bx3G,KAAKi4G,UAAYT,GAAU,UAE3B3+G,EAAQ2mB,YAAYxf,KAAKg4G,UACzBn/G,EAAQ2mB,YAAYxf,KAAKi4G,WACzBp/G,EAAQ2mB,YAAYu4F,GAEpBA,EAAUv4F,YAAYg4F,GAAU,mBAEhC,IAAIU,EAAal4G,KAAKk4G,WAAaV,GAAU,0BACzCW,EAAcn4G,KAAKm4G,YAAcX,GAAU,2BAC/CU,EAAW14F,YAAYg4F,MACvBW,EAAY34F,YAAYg4F,MAExBO,EAAUv4F,YAAY04F,GACtBH,EAAUv4F,YAAY24F,GAEtBn4G,KAAK0kD,aAAallC,YAAY3mB,GAC9B,IAAIu/G,EAAkB/wF,GAAc0wF,EAAW,CAAE,kBAAmB,mBAAoB,WACpFM,EAAmBhxF,GAAc6wF,EAAY,UAAUzjH,OACvD6jH,EAAoBjxF,GAAc8wF,EAAa,UAAU1jH,OAE7D6gB,EAAQyiG,UAAY,CAChBlxD,OAAQ,CACJ/+B,KAAMswF,EAAgBG,gBACtB3wF,MAAOwwF,EAAgBI,mBAI/BnxF,GAAc6wF,EAAY,CACtBvwF,KAAMywF,EAAgB3jH,OAAS4jH,GAAoB,IAGvDhxF,GAAc8wF,EAAa,CACvBxwF,KAAMywF,EAAgB3jH,OAAS6jH,GAAqB,IAGxDz/G,EAAQpC,MAAMu9B,QAAUn7B,EAAQpC,MAAMu9B,OAC1C,EAEA0jF,EAAU1zG,UAAU2rB,WAAa,WAC7B,IAAI3f,GAE4B,IAA5BhQ,KAAKsV,QAAQmjG,aACbz4G,KAAK04G,mBAAqB14G,KAAK24G,YAAY54G,KAAKC,MAChD2vB,GAAW3vB,KAAKnH,UAAWmX,EAAM,CAAC,GAAQ8lE,IAAe91E,KAAK04G,mBAAoB1oG,KAGtFhQ,KAAK44G,WAAatnD,GAAAA,OAAwBtxD,KAAKnH,QAAS,CACpDggH,iBAAiB,EACjBtvF,MAAOvpB,KAAK84G,OAAO/4G,KAAKC,MACxB0nC,KAAM1nC,KAAK+4G,MAAMh5G,KAAKC,MACtBwpB,IAAKxpB,KAAKg5G,KAAKj5G,KAAKC,MACpBi5G,IAAKj5G,KAAKk5G,KAAKn5G,KAAKC,MACpBm5G,MAAOn5G,KAAKo5G,OAAOr5G,KAAKC,MACxBq5G,aAAcr5G,KAAKs5G,cAAcv5G,KAAKC,MACtCu5G,cAAev5G,KAAKw5G,eAAez5G,KAAKC,MACxCy5G,WAAYz5G,KAAK05G,YAAY35G,KAAKC,OAE1C,EAEA03G,EAAU1zG,UAAU4zG,YAAc,WAC9B,IACItiG,EADMtV,KACQsV,QAEd2a,EAHMjwB,KAEam3E,aACA9hB,KAAKo3B,YACxBl8B,EAAcvwD,KAAK+wD,MAAM/M,aAAayM,KAEtCzwD,KAAK23G,WACL5wF,GAAWzR,EAAS,CAChBqZ,IAAKshC,GAAUM,EAAaj7C,EAAQqZ,KACpCnD,IAAKykC,GAAUM,EAAaj7C,EAAQkW,KACpC+X,KAAM0sB,GAAUM,EAAaj7C,EAAQiuB,MACrCjkC,GAAI2wD,GAAUM,EAAaj7C,EAAQhW,MAI3C,IAAI8rD,EAAQ/jC,GAAcrnB,KAAK0kD,aAAc,CAAE,cAAe,eAC1D5zB,EAAcs6B,EAAMt6B,YACpBC,EAAaq6B,EAAMr6B,WAEvB/wB,KAAKsV,QAAUyR,GAAW,CAAC,EAAG,CAC1BvyB,MAAOy7B,EAAIz7B,QACXC,OAAQw7B,EAAIx7B,SApJK,GAqJjB42C,QAAS,CACLvjB,KAAMgJ,EACNnJ,IAAKoJ,GAETzL,OAAQ,CACJwC,KAAMmI,EAAIqa,GAAKxZ,EACfnJ,IAAKsI,EAAIsa,GAAKxZ,GAElBwS,KAAMjuB,EAAQqZ,IACdrvB,GAAIgW,EAAQkW,KACblW,EACP,EAEAoiG,EAAU1zG,UAAUs/C,QAAU,WAC1B,IAAItzC,EAEAhQ,KAAK44G,aACL54G,KAAK44G,WAAWt1D,iBACTtjD,KAAK44G,YAGhBnmG,aAAazS,KAAK25G,YAClB35G,KAAKysB,OAAS,KAEVzsB,KAAKnH,UACDmH,KAAK04G,qBACL9nF,GAAa5wB,KAAKnH,UAAWmX,EAAM,CAAC,GAAQ8lE,IAAe91E,KAAK04G,mBAAoB1oG,IACpFhQ,KAAK04G,mBAAqB,MAE9B14G,KAAK0kD,aAAahlC,YAAY1f,KAAKnH,SACnCmH,KAAKnH,QAAU,KAEvB,EAEA6+G,EAAU1zG,UAAU41G,gBAAkB,SAA0BliE,GAE5D,MAAO,CACH3M,KAAM/qC,KAAKm3E,aAAa7hE,QACxBiuB,KAAMvjC,KAAK65G,OAAOniE,EAAMnU,MACxBjkC,GAAIU,KAAK65G,OAAOniE,EAAMp4C,IAE9B,EAEAo4G,EAAU1zG,UAAU80G,OAAS,SAAiB9lH,GAC1C,IAAIsiB,EAAUtV,KAAKsV,QACf1H,EAASwgB,GAAap7B,GAE1B,IAAIgN,KAAKysB,QAAW7e,EAApB,CAIA5N,KAAK+wD,MAAMmlD,oBACXl2G,KAAKysB,OAAS,CACVqtF,WAAYrC,GAAc7pG,IAAWA,EACrC6lG,cAAezgH,EAAE+yB,EAAI/yB,EAAE+yB,EAAElT,SAAW,EACpC6kC,MAAO,CACHnU,KAAMvjC,KAAK4iC,OAAOttB,EAAQiuB,MAC1BjkC,GAAIU,KAAK4iC,OAAOttB,EAAQhW,MAIhC,IAAI0I,EAAOhI,KAAK45G,gBAAgB,CAC5Br2E,KAAMvjC,KAAK4iC,OAAOttB,EAAQiuB,MAC1BjkC,GAAIU,KAAK4iC,OAAOttB,EAAQhW,MAGxBU,KAAK+pB,QAAQsrD,GAAcrtE,KAC3BhI,KAAKysB,OAAS,KAlBlB,CAoBJ,EAEAirF,EAAU1zG,UAAUo1G,OAAS,SAAiBpmH,GAC1C,IAAI+mH,GAEAA,EADA/5G,KAAKysB,OACIzsB,KAAKysB,OAAOqtF,WAEZrC,GAAcrpF,GAAap7B,MAGpCwV,EAASuxG,EAAQ,kBAEzB,EAEArC,EAAU1zG,UAAU+0G,MAAQ,SAAgB/lH,GACxC,GAAKgN,KAAKysB,OAAV,CAIA,IAAIl6B,EAAMyN,KACNL,EAAQpN,EAAIk6B,OACZnX,EAAU/iB,EAAI+iB,QACd6hE,EAAe5kF,EAAI4kF,aACnBz/B,EAAQ/3C,EAAM+3C,MACd9pC,EAASjO,EAAMm6G,WACf5rD,EAAUipB,EAAa7hE,QAAQ44C,QAC/B3qB,EAAOvjC,KAAK4iC,OAAOttB,EAAQiuB,MAC3BjkC,EAAKU,KAAK4iC,OAAOttB,EAAQhW,IACzBqvB,EAAM3uB,KAAK4iC,OAAOttB,EAAQqZ,KAC1BnD,EAAMxrB,KAAK4iC,OAAOttB,EAAQkW,KAC1BF,EAAQ3rB,EAAM8zG,cAAgBzgH,EAAE+yB,EAAElT,SAClCmnG,EAAmBtiE,EAAMnU,KAAzBy2E,EAAmCtiE,EAAMp4C,GACzCkkE,EAAO9rB,EAAMp4C,GAAKo4C,EAAMnU,KACxBvR,EAAQ3K,GAAcrnB,KAAKnH,QAAS,SAASrE,OAAS2iF,EAAalX,kBAAoB,GACvF36C,EAASxE,KAAKE,MAAMsK,EAAQ0G,IAAUk8B,GAAW,EAAI,GAEzD,GAAKtgD,EAAL,CAIA,IAAIsqG,EAAarvF,GAAWjb,EAAQ,iBAChCuqG,EAActvF,GAAWjb,EAAQ,kBAEjCib,GAAWjb,EAAQ,+BACnB8pC,EAAMnU,KAAOziB,KAAK6N,IACd7N,KAAK0K,IAAImD,EAAK4U,EAAOje,GACrBkG,EAAMg4C,GAEV9rB,EAAMp4C,GAAKwhB,KAAK6N,IACZ+oB,EAAMnU,KAAOigC,EACbh4C,IAEI0sF,IAAehqD,GAAaiqD,GAAejqD,GACnDxW,EAAMnU,KAAOziB,KAAK6N,IACd7N,KAAK0K,IAAImD,EAAK4U,EAAOje,GACrBkG,EAAM,GAEVksB,EAAMp4C,GAAKwhB,KAAK0K,IAAIksB,EAAMnU,KAAO,EAAGmU,EAAMp4C,MAClC44G,GAAchqD,GAAaiqD,IAAgBjqD,KACnDxW,EAAMp4C,GAAKwhB,KAAK6N,IACZ7N,KAAK0K,IAAImD,EAAM,EAAGrvB,EAAKgmB,GACvBkG,GAEJksB,EAAMnU,KAAOziB,KAAK6N,IAAI+oB,EAAMp4C,GAAK,EAAGo4C,EAAMnU,OAG1CmU,EAAMnU,OAASy2E,GAAiBtiE,EAAMp4C,KAAO06G,IAC7Ch6G,KAAK0nC,KAAKgQ,EAAMnU,KAAMmU,EAAMp4C,IAC5BU,KAAK+pB,QAAQurD,GAAQt1E,KAAK45G,gBAAgBliE,IA9B9C,CArBA,CAqDJ,EAEAggE,EAAU1zG,UAAUg1G,KAAO,WACvB,GAAIh5G,KAAKysB,OAAQ,CACb,IAAIqtF,EAAa95G,KAAKysB,OAAOqtF,WACzBA,I1U9S6BxlH,E0U+SL,mB1U/SJd,E0U+SRsmH,I1U9STtmH,EAAQc,YACnBd,EAAQc,UAAYd,EAAQc,UAAU8N,QAAQ9N,EAAW,IAAI8N,QAAQ8iB,EAAa,O0UgT9E,IAAIwyB,EAAQ13C,KAAKysB,OAAOirB,MACxB13C,KAAKipB,IAAIyuB,EAAMnU,KAAMmU,EAAMp4C,IAC3BU,KAAK+pB,QAAQwrD,GAAYv1E,KAAK45G,gBAAgBliE,WAEvC13C,KAAKysB,MAChB,C1UvTO,IAAqBj5B,EAASc,C0UwTzC,EAEAojH,EAAU1zG,UAAUk1G,KAAO,SAAelmH,GACtC,IACIsiB,EADMtV,KACQsV,QACd6hE,EAFMn3E,KAEam3E,aACnB0G,EAAS79E,KAAK+wD,MAAM0uC,kBAAkBzsG,GACtCkxE,EAAaiT,EAAavX,mBAAmB,IAAI36B,GAAM44C,EAAO93D,EAAGoxD,EAAalnD,IAAIsa,KAClFhH,EAAOvjC,KAAK4iC,OAAOttB,EAAQiuB,MAC3BjkC,EAAKU,KAAK4iC,OAAOttB,EAAQhW,IACzBqvB,EAAM3uB,KAAK4iC,OAAOttB,EAAQqZ,KAC1BnD,EAAMxrB,KAAK4iC,OAAOttB,EAAQkW,KAC1Bg4C,EAAOlkE,EAAKikC,EACZgiD,EAAMhiD,EAAOigC,EAAO,EACpB9rB,EAAQ,CAAC,EACTuiE,EAA+B,IAAlBjnH,EAAEsJ,MAAM49G,MACrB50F,EAASxE,KAAKE,MAAMukE,EAAMrhB,GAE1BlkE,KAAKysB,QAAUwtF,IAKnBj6G,KAAK+wD,MAAMmlD,oBAEN/+B,EAAa7hE,QAAQwkD,WACtBx0C,IAGJoyB,EAAMnU,KAAOziB,KAAK6N,IACd7N,KAAK0K,IAAImD,EAAK4U,EAAOje,GACrBkG,EAAMg4C,GAGV9rB,EAAMp4C,GAAKwhB,KAAK6N,IAAI+oB,EAAMnU,KAAOigC,EAAMh4C,GAEvCxrB,KAAK84G,OAAO9lH,GACRgN,KAAKysB,SACLzsB,KAAKysB,OAAOirB,MAAQA,EACpB13C,KAAK+pB,QAAQurD,GAAQt1E,KAAK45G,gBAAgBliE,IAC1C13C,KAAKg5G,QAEb,EAEAtB,EAAU1zG,UAAU20G,YAAc,SAAsB3lH,GACpD,IAAIwuC,EAASxhC,KAETsrB,EAAQD,GAAgBr4B,GAI5B,GAFAgN,KAAK84G,OAAO,CAAElrG,OAAQ5N,KAAK+3G,YAEvB/3G,KAAKysB,OAAQ,CACb,IAAIirB,EAAQ13C,KAAKysB,OAAOirB,MAExB1kD,EAAE88D,iBACF98D,EAAE6lH,kBAEE/3F,KAAKC,IAAIuK,GAAS,IAClBA,GA1WQ,GA6WRtrB,KAAKsV,QAAQmjG,WAAWvqD,UACxB5iC,IAAU,GAGVtrB,KAAK2pC,OAAOre,IACZtrB,KAAK+pB,QAAQurD,GAAQ,CACjBvqC,KAAM/qC,KAAKm3E,aAAa7hE,QACxBgW,MAAOA,EACP0wD,cAAehpF,EACfuwC,KAAMvjC,KAAK65G,OAAOniE,EAAMnU,MACxBjkC,GAAIU,KAAK65G,OAAOniE,EAAMp4C,MAI1BU,KAAK25G,YACLlnG,aAAazS,KAAK25G,YAGtB35G,KAAK25G,WAAa/yG,YAAW,WACzB46B,EAAOw3E,MACX,GzI5SW,IyI6Sf,CACJ,EAEAtB,EAAU1zG,UAAUs1G,cAAgB,SAAwBtmH,GACxD,IAAIsiB,EAAUtV,KAAKsV,QAEnBtV,KAAKysB,OAAS,CACVirB,MAAO,CACHnU,KAAMvjC,KAAK4iC,OAAOttB,EAAQiuB,MAC1BjkC,GAAIU,KAAK4iC,OAAOttB,EAAQhW,MAGhC,IAAI0I,EAAOhI,KAAK45G,gBAAgB55G,KAAKysB,OAAOirB,OAExC13C,KAAK+pB,QAAQsrD,GAAcrtE,GAC3BhI,KAAKysB,OAAS,KAEdz5B,EAAE88D,gBAEV,EAEA4nD,EAAU1zG,UAAU01G,YAAc,WAC1B15G,KAAKysB,SACLzsB,KAAK+pB,QAAQwrD,GAAYv1E,KAAK45G,gBAAgB55G,KAAKysB,OAAOirB,eACnD13C,KAAKysB,OAEpB,EAEAirF,EAAU1zG,UAAUw1G,eAAiB,SAAyBxmH,GAC1D,IAAIT,EAAMyN,KACN+wD,EAAQx+D,EAAIw+D,MACZpxD,EAAQpN,EAAIk6B,OACZnX,EAAU/iB,EAAI+iB,QACd6hE,EAAe5kF,EAAI4kF,aACnBz/B,EAAQ/3C,EAAM+3C,MACdnG,EAAKwf,EAAMopD,oBAAoBnnH,EAAEonH,QAAQ,GAAGr0F,EAAElT,UAAUkT,EACxDirB,EAAK+f,EAAMopD,oBAAoBnnH,EAAEonH,QAAQ,GAAGr0F,EAAElT,UAAUkT,EACxD+B,EAAOhH,KAAK6N,IAAI4iB,EAAIP,GACpBppB,EAAQ9G,KAAK0K,IAAI+lB,EAAIP,GAEzBh+C,EAAE88D,iBAEFpY,EAAMnU,KAAO4zC,EAAavX,mBAAmB,IAAI36B,GAAMnd,KAAUxS,EAAQqZ,IAEzE+oB,EAAMp4C,GAAK63E,EAAavX,mBAAmB,IAAI36B,GAAMrd,KAAWtS,EAAQkW,IAExExrB,KAAK0nC,KAAKgQ,EAAMnU,KAAMmU,EAAMp4C,IAE5BU,KAAK+pB,QAAQurD,GAAQt1E,KAAK45G,gBAAgBliE,GAC9C,EAEAggE,EAAU1zG,UAAU4+B,OAAS,SAAiBzlC,GAC1C,IAAI7C,EAAQ6C,EAMZ,OAJIA,aAAiBsa,OACjBnd,EAAQ0F,KAAKm3E,aAAaxX,cAAcxiE,IAGrC7C,CACX,EAEAo9G,EAAU1zG,UAAU61G,OAAS,SAAiBv/G,GAC1C,IAAI6C,EAAQ7C,EAQZ,OAPI0F,KAAK23G,YACLx6G,EAAQ6C,KAAKm3E,aAAanX,WAAW1lE,IACzB0F,KAAKsV,QAAQkW,MACrBruB,EAAQ6C,KAAKsV,QAAQkW,KAItBruB,CACX,EAEAu6G,EAAU1zG,UAAUq2G,MAAQ,SAAgBl9G,GACxC,IAAIg6E,EAAen3E,KAAKm3E,aACpB78E,EAAQ0F,KAAK4iC,OAAOzlC,GAExB,OAAOg6E,EAAa1hB,QAAQn7D,EAAOA,GAAO,EAC9C,EAEAo9G,EAAU1zG,UAAU0jC,KAAO,SAAenE,EAAMjkC,GAC5C,IAAIgW,EAAUtV,KAAKsV,QACf44C,EAAUluD,KAAKm3E,aAAa7hE,QAAQ44C,QACpC5oC,EAAShQ,EAAQgQ,OACjB+lB,EAAU/1B,EAAQ+1B,QAClBwb,EAASvxC,EAAQyiG,UAAUlxD,OAC3B/+B,EAAOomC,EAAU5uD,EAAKikC,EACtB3b,EAAQsmC,EAAU3qB,EAAOjkC,EACzBkrB,EAAO,KAAO0jC,EAAU,EAAI,GAE5Bj+B,EAAMjwB,KAAKq6G,MAAMvyF,GACjBwyF,EAAgBt5F,GAAMiP,EAAIzF,GAAQlF,EAAOwC,KAAOujB,EAAQvjB,MAE5DT,GAAcrnB,KAAKg4G,SAAU,CACzBxjH,MAAO8lH,IAEXjzF,GAAcrnB,KAAK+3G,UAAW,CAC1BjwF,KAAMwyF,IAGVrqF,EAAMjwB,KAAKq6G,MAAMzyF,GAEjB,IAAI2yF,EAAiBv5F,GAAM1L,EAAQ9gB,OAASy7B,EAAIzF,GAAQlF,EAAOwC,KAAOujB,EAAQvjB,OAC9ET,GAAcrnB,KAAKi4G,UAAW,CAC1BzjH,MAAO+lH,IAGX,IAAIvtE,EAAW13B,EAAQ9gB,MAAQ+lH,EAC3BvtE,IAAa13B,EAAQ9gB,QACrBw4C,GAAY6Z,EAAOj/B,OAGvBP,GAAcrnB,KAAKi4G,UAAW,CAC1BnwF,KAAMklB,IAEV3lB,GAAcrnB,KAAK+3G,UAAW,CAC1BvjH,MAAOssB,KAAK0K,IAAIlW,EAAQ9gB,OAAS8lH,EAAgBC,GAAkB1zD,EAAOj/B,MAAO,IAEzF,EAEA8vF,EAAU1zG,UAAUilB,IAAM,SAAcsa,EAAMjkC,GAC1C,IAAIgW,EAAUtV,KAAKsV,QACfqZ,EAAM3uB,KAAK4iC,OAAOttB,EAAQqZ,KAC1BnD,EAAMxrB,KAAK4iC,OAAOttB,EAAQkW,KAC1B8gD,EAAY59C,GAAW1uB,KAAK4iC,OAAOW,GAAO5U,EAAKnD,GAC/CgvF,EAAU9rF,GAAW1uB,KAAK4iC,OAAOtjC,GAAKgtE,EAAY,EAAG9gD,GAErDlW,EAAQvhB,SACRiM,KAAK0nC,KAAK4kC,EAAWkuC,GAGzBllG,EAAQiuB,KAAOvjC,KAAK65G,OAAOvtC,GAC3Bh3D,EAAQhW,GAAKU,KAAK65G,OAAOW,EAC7B,EAEA9C,EAAU1zG,UAAU2lC,OAAS,SAAiBre,GAC1C,IAAIhW,EAAUtV,KAAKsV,QACfqZ,EAAM3uB,KAAK4iC,OAAOttB,EAAQqZ,KAC1BnD,EAAMxrB,KAAK4iC,OAAOttB,EAAQkW,KAC1BivF,EAAOnlG,EAAQmjG,WAAWjF,KAC1BjwE,EAAOvjC,KAAK4iC,OAAOttB,EAAQiuB,MAC3BjkC,EAAKU,KAAK4iC,OAAOttB,EAAQhW,IACzBo4C,EAAQ,CAAEnU,KAAMA,EAAMjkC,GAAIA,GAC1B06G,EAAWjzF,GAAW,CAAC,EAAG2wB,GAqB9B,GAnBI13C,KAAKysB,SACLirB,EAAQ13C,KAAKysB,OAAOirB,OAGpB+iE,IAASj2F,IACTkzB,EAAMnU,KAAO7U,GACTA,GAAW6U,EAAOjY,EAAO,EAAGhsB,EAAK,GACjCqvB,EAAKnD,IAITivF,IAASx2F,IACTyzB,EAAMp4C,GAAKovB,GACPA,GAAWpvB,EAAKgsB,EAAOosB,EAAMnU,KAAO,EAAG/X,GACvCmD,EACAnD,IAIJksB,EAAMnU,OAASy2E,EAASz2E,MAAQmU,EAAMp4C,KAAO06G,EAAS16G,GAEtD,OADAU,KAAKipB,IAAIyuB,EAAMnU,KAAMmU,EAAMp4C,KACpB,CAEf,EAEAo4G,EAAU1zG,UAAUwvG,KAAO,SAAeloF,EAAOuyD,GAC7C,IAAIvoE,EAAUtV,KAAKsV,QACfqZ,EAAM3uB,KAAK4iC,OAAOttB,EAAQqZ,KAC1BnD,EAAMxrB,KAAK4iC,OAAOttB,EAAQkW,KAC1B+X,EAAOvjC,KAAK4iC,OAAOttB,EAAQiuB,MAC3BjkC,EAAKU,KAAK4iC,OAAOttB,EAAQhW,IACzBo4C,EAAQ,CAAEnU,KAAMA,EAAMjkC,GAAIA,GAC1B06G,EAAWjzF,GAAW,CAAC,EAAG2wB,GAG1BwW,EADMluD,KAAKm3E,aAAa7hE,QACV44C,QACd3mB,EAASxiB,GAAKmpC,EAAU,IAAM,KAC9BoF,EAAUtzD,KAAKm3E,aAAa7jB,UAC5BonD,EAAW55F,KAAKC,IAAIuyC,EAAQ/rB,GAAUs2C,EAAQ,GAC9CjnF,EAAO08D,EAAQ9+D,QACfqoD,EAAW77B,GAAM05F,EAAW9jH,EAAM,GAClCwpE,EAAWp/C,GAAM67B,EAAWvxB,GAC5B+0C,EAAWr/C,IAAO,EAAI67B,GAAYvxB,GAiBtC,GAfItrB,KAAKysB,SACLirB,EAAQ13C,KAAKysB,OAAOirB,OAGxBA,EAAMnU,KAAO7U,GACTA,GAAW6U,EAAO68B,EAAU,EAAG9gE,EAAK,GACpCqvB,EAAKnD,GAGTksB,EAAMp4C,GAAKovB,GACPA,GAAWpvB,EAAK+gE,EAAU3oB,EAAMnU,KAAO,EAAG/X,GAC1CmD,EACAnD,GAGAksB,EAAMnU,OAASy2E,EAASz2E,MAAQmU,EAAMp4C,KAAO06G,EAAS16G,GAEtD,OADAU,KAAKipB,IAAIyuB,EAAMnU,KAAMmU,EAAMp4C,KACpB,CAEf,EAEAo4G,EAAU1zG,UAAU+lB,QAAU,SAAkBpZ,EAAM3I,GAClD,OAAQhI,KAAK4pB,UAAY5pB,KAAK+wD,OAAOhnC,QAAQpZ,EAAM3I,EACvD,EAEO0vG,CACX,CApkBiB,CAokBfzmF,IAEF0E,GAAkB+hF,GAAW,CACzB3jH,SAAS,EACT0kH,WAAY,CACRjF,KAAM,QAEV7kF,IAAKvK,EACLoH,IAAKtH,IAGT,UC1mBIy2F,GAAW,SAAU3vB,GACrB,SAAS2vB,IACL3vB,EAAY9iF,MAAMlI,KAAM+H,UAC5B,CA8BA,OA5BKijF,IAAc2vB,EAAQ5vG,UAAYigF,GACvC2vB,EAAQ32G,UAAY6G,OAAOS,OAAQ0/E,GAAeA,EAAYhnF,WAC9D22G,EAAQ32G,UAAUqH,YAAcsvG,EAEhCA,EAAQ32G,UAAU3L,KAAO,SAAe6sC,GACpC,GAAKA,GAAUA,EAAMk4C,iBAAkBp9E,KAAK4uG,UAAY5uG,KAAK4uG,WAAa1pE,GAA1E,CAIA,IAAI5vB,EAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAAS4vB,EAAM5vB,QAAQ4wE,SACrDxgE,EAASwf,EAAMk4C,gBAEf13D,GACA1lB,KAAK4uG,SAAW1pE,EAChB8lD,EAAYhnF,UAAU3L,KAAK2K,KAAKhD,KAAM,CAClCklC,MAAOA,EACPxf,OAAQA,GACTpQ,EAAS4vB,IAEZllC,KAAK7J,MAZT,CAcJ,EAEAwkH,EAAQ32G,UAAU7N,KAAO,kBACd6J,KAAK4uG,SACZ5jB,EAAYhnF,UAAU7N,KAAK6M,KAAKhD,KACpC,EAEO26G,CACX,CAlCe,CAkCb3vB,IAEF,MCnCI4vB,GAAiB,SAAU5vB,GAC3B,SAAS4vB,EAAc1lD,EAAU5/C,GAC7B01E,EAAYhoF,KAAKhD,KAAMk1D,EAASlR,aAAc1uC,GAE9CtV,KAAKk1D,SAAWA,EAChBl1D,KAAKyrF,cAAgBv2B,EAASlR,aAAa7iC,MAC/C,CAuEA,OArEK6pE,IAAc4vB,EAAc7vG,UAAYigF,GAC7C4vB,EAAc52G,UAAY6G,OAAOS,OAAQ0/E,GAAeA,EAAYhnF,WACpE42G,EAAc52G,UAAUqH,YAAcuvG,EAEtCA,EAAc52G,UAAU2nF,OAAS,SAAiBpgD,EAAQsyC,GACtD,IAAIg9B,EAAgBlyF,GAAK4iB,GAAQ,SAASrG,GACtC,IAAIghD,EAAUhhD,EAAM6gB,OAAOmgC,QAG3B,QAFeA,IAA+B,IAApBA,EAAQnyF,QAGtC,IAEA,GAAI8mH,EAAczgH,OAAS,EAAG,CAC1B,IAAI8qC,EAAQ21E,EAAc,GACtB9iD,EAAO/3D,KAAKk1D,SAASiiB,aAAa1hB,QAAQvwB,EAAMg/B,YAEhDx+C,EAASm4D,EAAS79E,KAAK86G,YAAYj9B,EAAQ9lB,GAAQ/3D,KAAK+6G,eAAe71E,EAAO6yB,GAElF/3D,KAAK3H,KAAK,CACNqtB,OAAQA,EACRs1F,QAAQ,EACRzvE,OAAQA,EACR0a,SAAU/gB,EAAM+gB,SAChBg1D,aAAcj7G,KAAKyrF,cAAcp8B,KAAKrvD,KAAKsV,QAAQ4lG,eAAgBh2E,EAAM+gB,UACzEF,OAAQ/lD,KAAKk1D,SAASnP,QACvB/lD,KAAKsV,QACZ,CACJ,EAEAslG,EAAc52G,UAAU82G,YAAc,SAAsB51E,EAAO6yB,GAW/D,OAVW/3D,KAAKk1D,SAASiiB,aAMf7hE,QAAQq1C,WACdzlB,EAAMnf,EAAIgyC,EAAK5yB,SAASpf,GAGrB,CACHmf,MAAOA,EACPiH,MAXQ,CACRoxC,WAAY,OACZ5yB,SAAU,UAWlB,EAEAiwD,EAAc52G,UAAU+2G,eAAiB,SAAyB71E,EAAO6yB,GACrE,IAAI9nC,EAAMiV,EAAM+0C,MAAM5kB,KAAKo3B,YACvB9hC,EAAW3qD,KAAKk1D,SAASiiB,aAAa7hE,QAAQq1C,SAC9CxlB,EAASlV,EAAIkV,SACbg2E,EAAapjD,EAAK5yB,SAatB,MAAO,CACHD,MAPAylB,EACc,IAAI1lB,GAAME,EAAOpf,EAAGo1F,EAAWn1F,GAE/B,IAAIif,GAAMk2E,EAAWp1F,EAAGof,EAAOnf,GAK7CmmB,MAdQ,CACRoxC,WAAY,SACZ5yB,SAAU,UAclB,EAEOiwD,CACX,CA9EqB,CA8EnB5vB,IAEFr1D,GAAkBilF,GAAe,CAC7BM,eAAgB,UAGpB,UClFIE,GAAqB,SAAUh0E,GAC/B,SAASg0E,IACLh0E,EAAWl/B,MAAMlI,KAAM+H,UAC3B,CAyCA,OAvCKq/B,IAAag0E,EAAkBrwG,UAAYq8B,GAChDg0E,EAAkBp3G,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACtEo3G,EAAkBp3G,UAAUqH,YAAc+vG,EAE1CA,EAAkBp3G,UAAU2+C,MAAQ,WAChC,IACInvD,EADMwM,KACQxM,QACd8hB,EAFMtV,KAEQsV,QAGlB,GAFW9hB,EAAQ61C,OAET,CACNrpC,KAAKunC,OAASjyB,EAAQiyB,OACtB,IAAIwD,EAAOz1B,EAAQq1C,SAAW3lC,EAAID,EAE9Bs2F,EAAYr7G,KAAKq7G,UAAY,IAAIpvE,GAAW,EAAG,GACnDovE,EAAUtwE,GAAQqnC,GAElB5+E,EAAQ8+B,UAAU2Z,KACbja,MAAMqpF,EAAUt1F,EAAGs1F,EAAUr1F,GAEtC,MACIhmB,KAAKijD,OAEb,EAEAm4D,EAAkBp3G,UAAU4+C,KAAO,SAAertC,GAC9C,IAAI0c,EAAS3I,GAAiBtpB,KAAKq7G,UAAUt1F,EAAG,EAAGxQ,GAC/C2c,EAAS5I,GAAiBtpB,KAAKq7G,UAAUr1F,EAAG,EAAGzQ,GAEnDvV,KAAKxM,QAAQ8+B,UAAU2Z,KAClBja,MAAMC,EAAQC,EAAQlyB,KAAKunC,QAEpC,EAEA6zE,EAAkBp3G,UAAUi/C,MAAQ,WAChC7b,EAAWpjC,UAAUi/C,MAAMjgD,KAAKhD,MAChCA,KAAKxM,QAAQ8+B,UAAU,KAC3B,EAEO8oF,CACX,CA7CyB,CA6CvBj7D,IAEFxqB,GAAkBylF,GAAmB,CACjC34D,SAAUwvB,KAGd9xB,GAAAA,QAAAA,SAAuC0yB,GAAKuoC,IAE5C,ICtDIE,GAAmB,SAAUl0E,GAC7B,SAASk0E,IACLl0E,EAAWl/B,MAAMlI,KAAM+H,UAC3B,CAmBA,OAjBKq/B,IAAak0E,EAAgBvwG,UAAYq8B,GAC9Ck0E,EAAgBt3G,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACpEs3G,EAAgBt3G,UAAUqH,YAAciwG,EAExCA,EAAgBt3G,UAAU2+C,MAAQ,WAC9B,IAAIxd,EAASnlC,KAAKmlC,OAASnlC,KAAKxM,QAAQ61C,OAAOlE,SAC/CnlC,KAAKxM,QAAQ8+B,UAAU2Z,KAClBja,MAAMogD,GAAaA,GAAajtC,GAEzC,EAEAm2E,EAAgBt3G,UAAU4+C,KAAO,SAAertC,GAC5CvV,KAAKxM,QAAQ8+B,UAAU2Z,KAClBja,MAAMzc,EAAKA,EAAKvV,KAAKmlC,QAE9B,EAEOm2E,CACX,CAvBuB,CAuBrBn7D,IAEFxqB,GAAkB2lF,GAAiB,CAC/B54D,OAAQ,mBAGZvC,GAAAA,QAAAA,SAAuC4yB,GAAQuoC,IAE/C,IC/BIC,GAAmB,SAAUn0E,GAC7B,SAASm0E,IACLn0E,EAAWl/B,MAAMlI,KAAM+H,UAC3B,CAeA,OAbKq/B,IAAam0E,EAAgBxwG,UAAYq8B,GAC9Cm0E,EAAgBv3G,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACpEu3G,EAAgBv3G,UAAUqH,YAAckwG,EAExCA,EAAgBv3G,UAAU2+C,MAAQ,WAC9B3iD,KAAKw7G,OAASx7G,KAAKxM,QAAQgiD,UAC3Bx1C,KAAKxM,QAAQgiD,QAAQ,EACzB,EAEA+lE,EAAgBv3G,UAAU4+C,KAAO,SAAertC,GAC5CvV,KAAKxM,QAAQgiD,QAAQjgC,EAAMvV,KAAKw7G,OACpC,EAEOD,CACX,CAnBuB,CAmBrBp7D,IAEFxqB,GAAkB4lF,GAAiB,CAC/B94D,SAAU,IACVC,OAAQ,WAGZvC,GAAAA,QAAAA,SAAuC+xB,GAAQqpC,IAE/C,IC5BIE,GAAgB,SAAUr0E,GAC1B,SAASq0E,IACLr0E,EAAWl/B,MAAMlI,KAAM+H,UAC3B,CAkBA,OAhBKq/B,IAAaq0E,EAAa1wG,UAAYq8B,GAC3Cq0E,EAAaz3G,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACjEy3G,EAAaz3G,UAAUqH,YAAcowG,EAErCA,EAAaz3G,UAAU2+C,MAAQ,WAC3B3iD,KAAKxM,QAAQ8+B,UAAU2Z,KAClBja,MAAMogD,GAAaA,GAAapyE,KAAKsV,QAAQ6vB,QAEtD,EAEAs2E,EAAaz3G,UAAU4+C,KAAO,SAAertC,GACzCvV,KAAKxM,QAAQ8+B,UAAU2Z,KAClBja,MAAMzc,EAAKA,EAAKvV,KAAKsV,QAAQ6vB,QAEtC,EAEOs2E,CACX,CAtBoB,CAsBlBt7D,IAEFxqB,GAAkB8lF,GAAc,CAC5B/4D,OAAQ,iBACRD,SAAUwvB,KAGd9xB,GAAAA,QAAAA,SAAuCszB,GAAKgoC,IAE5C,IC1BIC,GAAoB,SAAUpzB,GAC9B,SAASozB,IACLpzB,EAAapgF,MAAMlI,KAAM+H,UAC7B,CA8CA,OA5CKugF,IAAeozB,EAAiB3wG,UAAYu9E,GACjDozB,EAAiB13G,UAAY6G,OAAOS,OAAQg9E,GAAgBA,EAAatkF,WACzE03G,EAAiB13G,UAAUqH,YAAcqwG,EAEzCA,EAAiB13G,UAAU5K,OAAS,WAChCkvF,EAAatkF,UAAU5K,OAAO4J,KAAKhD,MAEnCA,KAAK2+E,gBACT,EAEA+8B,EAAiB13G,UAAUi7E,cAAgB,SAAwBvvB,EAAYgrB,EAAe7C,GAU1F,OAAO,IATK6C,EAAcjkF,QAGZi8E,GACE8L,GAEAd,IAGKhuB,EAAYgrB,EAAe7C,EACpD,EAEA6jC,EAAiB13G,UAAUg8E,gBAAkB,WAEzC,OADasI,EAAatkF,UAAUg8E,gBAAgBh9E,KAAKhD,MAC3CmI,OAAOnI,KAAK4+E,UAC9B,EAEA88B,EAAiB13G,UAAU6kF,mBAAqB,SAA6B1rF,EAAOgiF,GAChF,GAAIA,IAAkB73C,GAAM,CACxB,IAAIq0E,EAAe,CACf51F,EAAG5oB,EAAM4oB,EACTC,EAAG7oB,EAAM6oB,GAQb,OANKqgE,GAASs1B,EAAa51F,KACvB41F,EAAa51F,EAAI,GAEhBsgE,GAASs1B,EAAa31F,KACvB21F,EAAa31F,EAAI,GAEd21F,CACX,CACJ,EAEOD,CACX,CAlDwB,CAkDtBpzB,IAEFvhE,GAAW20F,GAAiB13G,UAAW06E,IAEvC,UC9CIk9B,GAAc,SAAUvsB,GACxB,SAASusB,IACLvsB,EAAannF,MAAMlI,KAAM+H,UAC7B,CAqPA,OAnPKsnF,IAAeusB,EAAW7wG,UAAYskF,GAC3CusB,EAAW53G,UAAY6G,OAAOS,OAAQ+jF,GAAgBA,EAAarrF,WACnE43G,EAAW53G,UAAUqH,YAAcuwG,EAEnCA,EAAW53G,UAAUuuD,WAAa,WAC9BvyD,KAAKopF,WAAa,CAAC,EACnBppF,KAAKqpF,WAAa,CAAC,EAEnBrpF,KAAK67G,kBAAoB,IAAIr5B,GAC7BxiF,KAAK87G,kBAAoB,IAAIt5B,EACjC,EAEAo5B,EAAW53G,UAAU5K,OAAS,SAAiB02F,GAC3C,IAAItuD,EAASxhC,UACE,IAAV8vF,IAAmBA,EAAQ9vF,KAAK8vF,OAIrC,IAFA,IAAI6B,EAAe3xF,KAAK0xF,oBAEfhmF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAAK,CACnC,IAAI2pD,EAAOy6B,EAAMpkF,GACbiwF,EAAahK,EAAat8B,EAAK//C,QAAQ3E,MAAQ,YAAc,GACjE6wB,EAAOovD,YAAY+K,GACnB,IAAIogB,EAAiBv6E,EAAOqwD,oBAAoB8J,GAE3CogB,IAILv6E,EAAOw6E,mBACH3tB,GAAmB0tB,EAAgB5nC,IACnC9e,GAGJ7zB,EAAOy6E,uBACH5tB,GAAmB0tB,EAAgB3nC,IACnC/e,GAGJ7zB,EAAO06E,kBACH7tB,GAAmB0tB,EAAgBhpC,IACnC1d,GAER,CAEAr1D,KAAKm8G,WAAWrsB,EACpB,EAEA8rB,EAAW53G,UAAUkpF,YAAc,SAAsBn8B,EAAOsE,GAC5Dr1D,KAAK67G,kBAAkBn5B,OAAO3xB,EAAMy3B,aACpCxoF,KAAK87G,kBAAkBp5B,OAAO3xB,EAAM03B,aAEpC4G,EAAarrF,UAAUkpF,YAAYlqF,KAAKhD,KAAM+wD,EAAOsE,EACzD,EAEAumD,EAAW53G,UAAUopF,WAAa,SAAqBriD,GACnD,IAAI+tC,EAAW/tC,EAAKz1B,QAAQ3E,KAE5B0+E,EAAarrF,UAAUopF,WAAWpqF,KAAKhD,KAAM+qC,GAEzCA,EAAKz1B,QAAQq1C,UACb3qD,KAAK87G,kBAAkBj5B,MAAM/J,UACtB94E,KAAKqpF,WAAWvQ,KAEvB94E,KAAK67G,kBAAkBh5B,MAAM/J,UACtB94E,KAAKopF,WAAWtQ,IAGvB/tC,IAAS/qC,KAAKwzD,cACPxzD,KAAKwzD,MAGZzoB,IAAS/qC,KAAKyzD,cACPzzD,KAAKyzD,KAEpB,EAGAmoD,EAAW53G,UAAU4tF,eAAiB,SAAyB7rC,GAC3D,IAAIzwC,EAAUtV,KAAKsV,QACfwzE,EAAY/iC,EAAOgjC,MAEnBA,EAAQpgE,GADO,GAAGxgB,OAAOmN,EAAQyzE,QACN,SAASl6D,GAAK,OAAOA,EAAEle,OAASm4E,CAAW,IAAG,GACzEE,EAAYjjC,EAAOkjC,MAEnBA,EAAQtgE,GADO,GAAGxgB,OAAOmN,EAAQ2zE,QACN,SAASp6D,GAAK,OAAOA,EAAEle,OAASq4E,CAAW,IAAG,GAEzE6U,GADQvoF,EAAQw6E,OAAS,CAAE,CAAC,IACJ,GAAGn/E,MAAQ,UAGvC,OAFgBo4E,GAAS,CAAC,GAAG1zB,OAAS4zB,GAAS,CAAC,GAAG5zB,MAAQwoC,CAG/D,EAEA+d,EAAW53G,UAAUg4G,mBAAqB,SAA6Bj2D,EAAQsP,GACvEtP,EAAO3rD,OAAS,GAChB4F,KAAKktF,YACD,IAAI5E,GAAatoF,KAAM,CAAE+lD,OAAQA,EAAQ7Q,KAAMmgB,EAAK//C,QAAQ4/B,OAC5DmgB,EAGZ,EAEAumD,EAAW53G,UAAUi4G,uBAAyB,SAAiCl2D,EAAQsP,GAC/EtP,EAAO3rD,OAAS,GAChB4F,KAAKktF,YACD,IAAIwuB,GAAiB17G,KAAM,CAAE+lD,OAAQA,EAAQ7Q,KAAMmgB,EAAK//C,QAAQ4/B,OAChEmgB,EAGZ,EAEAumD,EAAW53G,UAAUk4G,kBAAoB,SAA4Bn2D,EAAQsP,GACrEtP,EAAO3rD,OAAS,GAChB4F,KAAKktF,YACD,IAAI1D,GAAYxpF,KAAM,CAAE+lD,OAAQA,EAAQ7Q,KAAMmgB,EAAK//C,QAAQ4/B,OAC3DmgB,EAGZ,EAEAumD,EAAW53G,UAAUo4G,aAAe,SAAuB9mG,EAASq1C,EAAUywB,GAY1E,IAXA,IA2BIihC,EA3BAvjC,EAAWxjE,EAAQ3E,KACnB2rG,EAAY3xD,EAAW3qD,KAAKqpF,WAAarpF,KAAKopF,WAC9CgW,EAAUz0C,EAAW3qD,KAAK87G,kBAAoB97G,KAAK67G,kBACnD1zC,EAAcphD,GAAW,CAAEmnC,SAAUvD,GAAY3qD,KAAKgkD,aAAagN,KAAO17C,EAAS,CAAEq1C,SAAUA,IAC/F4xD,EAAQnuB,GAAiBjmB,EAAYh1E,KAAMuiF,IAC3C2pB,EAAeD,EAAQtc,QACvByc,EAAmBgd,EAAQ,CAAE5tF,IAAK,GAAKnD,IAAK,GAAM,CAAEmD,IAAK,EAAGnD,IAAK,GACjEksB,EAAQ0nD,EAAQtc,MAAMhK,IAAaumB,GAAgBE,EACnDid,EAAc,CAAEr0C,EAAYx5C,IAAKw5C,EAAY38C,KAC7Cu6B,EAAS/lD,KAAK+lD,OAET8xB,EAAW,EAAGA,EAAW9xB,EAAO3rD,OAAQy9E,IAAY,CACzD,IAAI6C,EAAgB30B,EAAO8xB,GACvB4kC,EAAiB/hC,EAAc/vB,EAAW,QAAU,SACxD,GAAK8xD,IAAmBt0C,EAAYx3D,MAAwB,IAAdyqE,IAAoBqhC,EAAiB,CAC/E,IAAIC,EAAkBvtC,GAAAA,QAAAA,UAA+BuL,EAAe,GAAGjL,YACvE+sC,EAAYptG,KAAKstG,EAAgB/xD,EAAW,IAAM,MAElD,KACJ,CACJ,CAEkB,IAAdywB,GAAmBikB,IACnB3nD,EAAM/oB,IAAM7N,KAAK6N,IAAI+oB,EAAM/oB,IAAK0wE,EAAa1wE,KAC7C+oB,EAAMlsB,IAAM1K,KAAK0K,IAAIksB,EAAMlsB,IAAK6zE,EAAa7zE,MAKjD,IAAK,IAAI9f,EAAI,EAAGA,EAAI8wG,EAAYpiH,OAAQsR,IACpC,GAAI8wG,EAAY9wG,aAAc+L,KAAM,CAChC4kG,GAAe,EACf,KACJ,CAYJ,IAAItxE,EAAO,IARPqjD,GAAiBjmB,EAAYh1E,KAAMwwB,KAAWwkD,EAAYh1E,MAAQkpH,EACvDtzC,GACJwzC,EACI9yC,GAEA1C,IAGSrvB,EAAM/oB,IAAK+oB,EAAMlsB,IAAK28C,EAAanoE,KAAKgkD,cAGhE,GAFAjZ,EAAKqwC,UAAYA,EAEbtC,EAAU,CACV,GAAIwjC,EAAUxjC,GACV,MAAM,IAAI14E,OAAQuqD,EAAW,IAAM,KAAO,mBAAqBmuB,EAAW,uBAE9EwjC,EAAUxjC,GAAY/tC,CAC1B,CAIA,OAFA/qC,KAAKgtF,WAAWjiD,GAETA,CACX,EAEA6wE,EAAW53G,UAAUm4G,WAAa,SAAqBrsB,GASnD,IARA,IAAItuD,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACfqnG,EAAe,GAAGx0G,OAAOmN,EAAQyzE,OACjCqI,EAAQ,GACRwrB,EAAe,GAAGz0G,OAAOmN,EAAQ2zE,OACjCoI,EAAQ,GAEH58E,EAAM,EAAGA,EAAMkoG,EAAaviH,OAAQqa,IAAO,CAE5CyU,GADWsY,EAAO6uD,SAASssB,EAAaloG,GAAK4gD,MAC3By6B,IAClBsB,EAAMhiF,KAAKoyB,EAAO46E,aAAaO,EAAaloG,IAAM,EAAOA,GAEjE,CAEA,IAAK,IAAIqjD,EAAQ,EAAGA,EAAQ8kD,EAAaxiH,OAAQ09D,IAAS,CAElD5uC,GADasY,EAAO6uD,SAASusB,EAAa9kD,GAAOzC,MAC7By6B,IACpBuB,EAAMjiF,KAAKoyB,EAAO46E,aAAaQ,EAAa9kD,IAAQ,EAAMA,GAElE,CAEA93D,KAAKwzD,MAAQxzD,KAAKwzD,OAAS49B,EAAM,GACjCpxF,KAAKyzD,MAAQzzD,KAAKyzD,OAAS49B,EAAM,EACrC,EAEAuqB,EAAW53G,UAAUgzF,eAAiB,SAAyBjmC,EAAO/9D,EAAGwsG,GAQrE,IAPA,IAAI3hB,EAAS9sB,EAAM0uC,kBAAkBzsG,GACjCkyC,EAAQ,IAAID,GAAM44C,EAAO93D,EAAG83D,EAAO73D,GACnCsnE,EAAUttF,KAAKs1D,KACfl7D,EAASkzF,EAAQlzF,OACjByiH,EAAU,GACVC,EAAU,GAELpxG,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIq/B,EAAOuiD,EAAQ5hF,GACfqE,EAASg7B,EAAKz1B,QAAQq1C,SAAWmyD,EAAUD,EAC3CE,EAAehyE,EAAK09B,SAASvjC,GACZ,OAAjB63E,GACAhtG,EAAOX,KAAK2tG,EAEpB,CAEIF,EAAQziH,OAAS,GAAK0iH,EAAQ1iH,OAAS,GACvC22D,EAAMhnC,QAAQy1E,EAAW,CACrBhsG,QAAS46B,GAAap7B,GACtBgpF,cAAehpF,EACf+yB,EAAG4oE,GAAkBkuB,GACrB72F,EAAG2oE,GAAkBmuB,IAGjC,EAEAlB,EAAW53G,UAAU27F,kBAAoB,SAA8B50D,EAAMz1B,GACzE,IAAIq1C,EAAW5f,EAAKz1B,QAAQq1C,SACxB2K,EAAOt1D,KAAKmxF,UAAUnxF,KAAK8vF,OAC3Bx1F,GAASqwD,EAAW2K,EAAKtvC,EAAIsvC,EAAKvvC,GAAG1c,QAAQ0hC,GAEjD40D,GAAkB3/F,KAAKsV,QAAShb,EAAOqwD,EAAUr1C,GACjDqqF,GAAkB3/F,KAAKyvF,gBAAiBn1F,EAAOqwD,EAAUr1C,EAC7D,EAEOsmG,CACX,CAzPkB,CAyPhBvsB,IAEF,SAASsQ,GAAkBC,EAAexkB,EAAWzwB,EAAUr1C,GAE3DyR,GADmB,GAAG5e,OAAOwiD,EAAWi1C,EAAc3W,MAAQ2W,EAAc7W,OAAQ3N,GAC5D9lE,EAC5B,CAEAqgB,GAAkBimF,GAAY,CAC1B7yB,MAAO,CAAC,EACRE,MAAO,CAAC,IAGZliE,GAAW60F,GAAW53G,UAAW+yF,IAEjC,UC9QIimB,GAAc,SAAUz5D,GACxB,SAASy5D,EAAW7/G,EAAO8vC,EAAQ33B,GAC/BiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAK7C,MAAQA,EACb6C,KAAKitC,OAASA,CAClB,CAqQA,OAnQKsW,IAAey5D,EAAWjyG,UAAYw4C,GAC3Cy5D,EAAWh5G,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACnEg5G,EAAWh5G,UAAUqH,YAAc2xG,EAEnCA,EAAWh5G,UAAU5K,OAAS,WAC1B,IAAI44D,EAAShyD,KAAKsV,QAAQ08C,OACtBhO,EAAehkD,KAAKi6E,MAAMj2B,aAC1Bw4B,EAAYx8E,KAAK7C,MAErB,IAAI6C,KAAKs8E,YAA8B,IAAjBt8E,KAAKjM,QAA3B,CAGAiM,KAAKs8E,WAAY,EAEjB,IAAIzmB,EAAgBztC,GAAY4pC,GAC5BxK,EAAYxnD,KAAKwnD,YAQrB,GANIqO,EACA2mB,EAAY3mB,EAAcrO,GACnBwK,EAAO7wC,SACdq7D,EAAYx4B,EAAa7iC,OAAOkuC,KAAK2C,EAAO7wC,OAAQq7D,IAGpDxqB,EAAOj+D,UAAYyoF,GAA2B,IAAdA,GAAkB,CAClD,GAAIxqB,EAAOnV,WAAar5B,GAAUwuC,EAAOnV,WAAa+4B,GAC7C5jB,EAAOxjC,QACRwjC,EAAOxjC,MAAQyuF,GAAcj9G,KAAKsV,QAAQkZ,QAEzCwjC,EAAO7K,aACR6K,EAAO7K,WAAannD,KAAKsV,QAAQkZ,WAElC,CACH,IAAI0uF,EAAcl5D,EAAam5D,MAAMC,eAAeprD,OACpDA,EAAOxjC,MAAQwjC,EAAOxjC,OAAS0uF,EAAY1uF,MAC3CwjC,EAAO7K,WAAa6K,EAAO7K,YAAc+1D,EAAY/1D,UACzD,CAGAnnD,KAAKkvD,MAAQ,IAAIxC,GAAQ8vB,EAAWz1D,GAAW,CAAC,EAAGirC,EAAQ,CACvD7lB,MAAO3oB,EACPujC,OAAQ,GACR3rD,UAAW,CACPjI,KAAM++E,GACNpvB,MAAO9iD,KAAKq9G,kBAEhB71D,GAEJxnD,KAAK6rB,OAAO7rB,KAAKkvD,MACrB,CArCA,CAsCJ,EAEA8tD,EAAWh5G,UAAUy/C,OAAS,SAAiB9Y,GAC3C3qC,KAAK5G,SACL4G,KAAKiwB,IAAM0a,EACX3qC,KAAK88E,aACT,EAEAkgC,EAAWh5G,UAAU84E,YAAc,WAC/B,IACIwgC,EADMt9G,KACcsV,QAAQ08C,OAC5B9C,EAFMlvD,KAEMkvD,MACZjiB,EAASjtC,KAAKitC,OAAOpmB,QACrB02F,EAAiBD,EAActwE,SAC/Bnb,EAAQob,EAAOR,SAEnB,GAAIyiB,EAAO,CACP,IAEIsuD,EAFAC,EAAcvuD,EAAMj/B,IAAIx7B,SACxBipH,EAAaxuD,EAAMj/B,IAAIz7B,QAG3B,GAAI8oH,EAAczgE,WAAar5B,EAC3BypB,EAAOnH,OAAShlB,KAAKC,KAAKksB,EAAOnH,OAAS23E,GAAe,GAAKA,EAC9DD,EAAKvwE,EAAO/H,MAAMrT,GAClBq9B,EAAMzL,OAAO,IAAIpZ,GAAImzE,EAAGz3F,EAAGy3F,EAAGx3F,EAAIy3F,EAAc,EAAGD,EAAGz3F,EAAGy3F,EAAGx3F,SACzD,GAAIs3F,EAAczgE,WAAa+4B,GAClC3oC,EAAOnH,OAASmH,EAAOnH,OAAS23E,EAAc,EAC9CD,EAAKvwE,EAAO/H,MAAMrT,GAClBq9B,EAAMzL,OAAO,IAAIpZ,GAAImzE,EAAGz3F,EAAGy3F,EAAGx3F,EAAIy3F,EAAc,EAAGD,EAAGz3F,EAAGy3F,EAAGx3F,QACzD,CACH,IAAIskB,GACJkzE,EAAKvwE,EAAOpmB,QAAQ8iB,OAAO4zE,GAAgBr4E,MAAMrT,IAC1C9L,GAAKknB,EAAO9H,OAAOpf,GACtBukB,EAAKkzE,EAAGz3F,EAAI23F,EACZxuD,EAAM+kD,YAAczvF,IAEpB8lB,EAAKkzE,EAAGz3F,EAAI23F,EACZxuD,EAAM+kD,YAAchwF,GAExBirC,EAAMzL,OAAO,IAAIpZ,GAAIC,EAAIkzE,EAAGx3F,EAAIy3F,EAAaD,EAAGz3F,EAAGy3F,EAAGx3F,GAC1D,CACJ,CACJ,EAEAg3F,EAAWh5G,UAAUogD,aAAe,WAChC,IAAI5iB,EAASxhC,KAGTitC,EADMjtC,KACOitC,OACb33B,EAFMtV,KAEQsV,QAIlB,GAFAiuC,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAErCA,KAAK7C,MACL,GAAImY,EAAQmvC,OAAQ,CAChB,IAAIjY,GAAcS,EAAOT,WAAa,KAAO,IACzCiY,EAASnvC,EAAQmvC,OAAO,CACxBwB,SAAUjmD,KAAKimD,SACfD,SAAUhmD,KAAKgmD,SACf7oD,MAAO6C,KAAK7C,MACZ4oD,OAAQ/lD,KAAK+lD,OACbG,WAAYlmD,KAAKkmD,WACjB/gB,OAAQ,IAAI8G,GAAWgB,EAAO9H,OAAOpf,EAAGknB,EAAO9H,OAAOnf,GACtD8f,OAAQmH,EAAOnH,OACfyG,YAAaU,EAAOV,YACpBC,WAAYA,EACZgB,SAAUhB,EAAaS,EAAOpb,MAC9Bvc,QAASA,EACTyuC,OAAQ/jD,KAAK4jD,YACbQ,aAAc,WACV,IAAI9mC,EAAQ,IAAI6iC,GAGhB,OAFA3e,EAAOm8E,oBAAoBrgG,GAEpBA,CACX,IAGAmnC,GACAzkD,KAAKykD,OAAO54B,OAAO44B,EAE3B,MACIzkD,KAAK29G,oBAAoB39G,KAAKykD,OAG1C,EAEAu4D,EAAWh5G,UAAU25G,oBAAsB,SAA8BrgG,GACrE,IACI2vB,EADMjtC,KACOitC,OACb33B,EAFMtV,KAEQsV,QACdsoG,EAAgBtoG,EAAQuxC,QAAU,CAAC,EACnCA,EAAS+2D,EAAcppH,MAAQ,EAAI,CACnC+wB,OAAQ,CACJiJ,MAAOovF,EAAcpvF,MACrBh6B,MAAOopH,EAAcppH,MACrBghD,QAASooE,EAAcpoE,QACvB6R,SAAUu2D,EAAcv2D,WAE5B,CAAC,EACD74B,EAAQlZ,EAAQkZ,MAChBunB,EAAO,CACPvnB,MAAOA,EACPgnB,QAASlgC,EAAQkgC,SAEjBiP,EAASzkD,KAAKi/E,cAAchyC,EAAQlmB,GAAW,CAC/CgvB,KAAMA,EACNxwB,OAAQ,CACJiwB,QAASlgC,EAAQkgC,SAErBoP,OAAQtvC,EAAQsvC,QACjBiC,IAEHvpC,EAAMuO,OAAO44B,GAET0+B,GAAmB7tE,IACnBgI,EAAMuO,OAAO7rB,KAAKomD,sBAAsB3B,EAAQ,CAC5Cg/B,UAAWj1D,EACXw6B,aAAcjT,GACfhvB,GAAW,CACVoe,OAAQ,CAAE8H,EAAO9H,OAAOpf,EAAGknB,EAAO9H,OAAOnf,GACzCumB,YAAaU,EAAOV,YACpBzG,OAAQmH,EAAOnH,OACf0iB,WAAW,GACZlzC,EAAQgxC,UAEnB,EAEA02D,EAAWh5G,UAAUi7E,cAAgB,SAAwBhyC,EAAQ33B,GACjE,OAAIA,EAAQuoG,cACD,IAAI19D,GAAY,IAAIlU,GAAY,IAAIA,GAAWgB,EAAO9H,OAAOpf,EAAGknB,EAAO9H,OAAOnf,GAAIinB,EAAOnH,QAASxwB,GAGtG2qC,GAAAA,QAAAA,WAAgChT,EAAQ33B,EACnD,EAEA0nG,EAAWh5G,UAAUugD,gBAAkB,WACnC,IACIjvC,EADMtV,KACQsV,QACd6vB,EAFMnlC,KAEOitC,OAAO9H,OAExBpe,GAAWzR,EAAS,CAChBla,UAAW,CACP+pC,OAAQ,CAAEA,EAAOpf,EAAGof,EAAOnf,GAC3B88B,MAAO9iD,KAAKq9G,kBAIpB95D,EAAav/C,UAAUugD,gBAAgBvhD,KAAKhD,KAChD,EAEAg9G,EAAWh5G,UAAUyhD,gBAAkB,SAA0BnwC,GAC7D,IAAIkwC,EAAYxlD,KAAKsV,QAAQkwC,WAAa,CAAC,EACvCqB,EAASrB,EAAUqB,QAAU,CAAC,EAElC,OAAO7mD,KAAKi/E,cAAcj/E,KAAKitC,OAAQlmB,GAAW,CAAC,EAAGzR,EAAS,CAC3DygC,KAAM,CACFvnB,MAAOg3B,EAAUh3B,MACjBgnB,QAASgQ,EAAUhQ,SAEvBjwB,OAAQ,CACJiwB,QAASqR,EAAOrR,QAChBhhD,MAAOqyD,EAAOryD,MACdg6B,MAAOq4B,EAAOr4B,SAG1B,EAEAwuF,EAAWh5G,UAAUk5E,gBAAkB,WACnC,OAAOl9E,KAAKykD,OAAO7wD,SAAS,EAChC,EAEAopH,EAAWh5G,UAAU8hD,oBAAsB,WACvC,IAAI7Y,EAASjtC,KAAKitC,OAElB,MAAO,CACH33B,QAAStV,KAAKsV,QACdwwB,OAAQmH,EAAOnH,OACfyG,YAAaU,EAAOV,YACpBpH,OAAQ,IAAI8G,GAAWgB,EAAO9H,OAAOpf,EAAGknB,EAAO9H,OAAOnf,GACtDwmB,WAAYS,EAAOT,WACnBgB,SAAUP,EAAOpb,MAAQob,EAAOT,WAChCiY,OAAQzkD,KAAKykD,OAErB,EAEAu4D,EAAWh5G,UAAUo5E,cAAgB,WACjC,IAAInwC,EAASjtC,KAAKitC,OAAOpmB,QAAQ8iB,OlJtPpB,GkJuPTuD,EAAWD,EAAOR,SAGtB,MAAO,CACHvH,MAHW+H,EAAO/H,MAAMgI,GAIxBf,MAAO2xE,GAAiB5wE,EAAW,KAE3C,EAEA8vE,EAAWh5G,UAAUy4E,YAAc,SAAsBt7D,GACrD,OAAOnhB,KAAKi6E,MAAM4B,iBAAiB77E,KAAMmhB,EAC7C,EAEA67F,EAAWh5G,UAAUwjD,UAAY,WAC7B,MAAO,CACHxB,SAAUhmD,KAAKgmD,SACfC,SAAUjmD,KAAKimD,SACf9oD,MAAO6C,KAAK7C,MACZ4oD,OAAQ/lD,KAAK+lD,OACbG,WAAYlmD,KAAKkmD,WAEzB,EAEO82D,CACX,CA5QkB,CA4QhBz5D,IAEEw6D,GAAS/8F,GAAMuO,GAAI,IAAK1L,GACxBm6F,GAASh9F,GAAMuO,GAAI,IAAK1L,GAE5B,SAASi6F,GAAiBjsF,GACtB,IAAI5E,EAAUsC,GAAIsC,GACd0gB,EAAOvxB,GAAMF,KAAKiR,IAAI9E,GAAUpJ,GAChCyuB,EAAStxB,GAAMF,KAAKgR,IAAI7E,GAAUpJ,GAqBtC,MAAO,CACH05D,WAlBAz8D,KAAKC,IAAIwxB,GAAQyrE,GACJx6F,EACN8uB,EAAS,EACH9tB,EAEAP,EAcb0mC,SAVA7pC,KAAKC,IAAIwxB,GAAQwrE,GACNv6F,EACJ+uB,EAAO,EACHhvB,EAEAoB,EAOnB,CAEAgR,GAAkBqnF,GAAY,CAC1BxuF,MAAO3J,EACPyhC,QAAS,CACL4D,SAAU,gBAEdrD,OAAQ,CACJryD,MAAO,IAEXw9D,OAAQ,CACJj+D,SAAS,EACTi5C,SAAU,GACVxX,KAAM5R,EACNtoB,OAAQksB,GAAW,IACnB2kB,MAAO1oB,EACPmhC,OAAQ,EACR/H,SAAUg5B,IAEdz6E,UAAW,CACPjI,KAAMsgF,IAEVjuB,UAAW,CACPzxD,SAAS,EACT8yD,OAAQ,CACJryD,MAAO,IAGfT,SAAS,IAGbgzB,GAAWi2F,GAAWh5G,UAAW83E,IAEjC,UCvVImiC,GAAgB,CAChBC,iBAAkB,SAAS/gH,EAAO+nC,EAAO5vB,GACrC,IAAI6oG,EAAgBn+G,KAAKsV,QAAQi6E,QAAU,CAAC,EACxC+tB,EAAgBa,EAAcnsD,QAAU,CAAC,EACzC6+B,EAAgBstB,EAActtB,eAAiB,CAAC,EAChDC,EAAsBD,EAAc7+B,QAAU,CAAC,EAEnD,GAAI18C,IAAuC,IAA5BA,EAAQ07E,gBAA2B,CAC9C,IAeIC,EAAkBC,EAflBktB,GAAmC,IAApB9oG,EAAQvhB,QACvB8hE,EAAgBuoD,EAAeh2F,GAAYk1F,GAC3Cl1F,GAAY0oE,IAAwB1oE,GAAYk1F,GAChDpkH,EAAOoc,EAAQ2wC,SAEf4P,IACA38D,EAAO28D,EAAc,CACjB38D,KAAMA,EACN6sD,OAAQzwC,EAAQywC,OAChBC,SAAU1wC,EAAQ0wC,SAClBE,WAAY5wC,EAAQ4wC,WACpB/oD,MAAOA,KAKXihH,GACAntB,EAAmB,CAAC,EACpBC,EAAchsD,EAAM1W,QAEpByiE,EAAmB,CACfziE,MAAOsiE,EAAoBtiE,MAC3BgH,KAAMs7D,EAAoBt7D,MAE9B07D,GAAeL,EAAcxU,SAAW,CAAC,GAAG7tD,OAG5C63D,GAASntF,IAAkB,KAATA,GAClB8G,KAAKq+G,YAAYjvG,KAAK,CAClB/I,OAAQ+3G,EACRnI,WAAY3gG,EAAQhb,MACpBpB,KAAMA,EACN6sD,OAAQzwC,EAAQywC,OAChBmrC,YAAaA,EACbl/B,OAAQi/B,GAGpB,CACJ,GAGJ,MCtCIqtB,GAAY,SAAU/6D,GACtB,SAAS+6D,EAASppD,EAAU5/C,GACxBiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKk1D,SAAWA,EAChBl1D,KAAKgkD,aAAekR,EAASlR,aAC7BhkD,KAAKurC,OAAS,GACdvrC,KAAKq+G,YAAc,GACnBr+G,KAAK5G,QACT,CA8cA,OA5cKmqD,IAAe+6D,EAASvzG,UAAYw4C,GACzC+6D,EAASt6G,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACjEs6G,EAASt6G,UAAUqH,YAAcizG,EAEjCA,EAASt6G,UAAU5K,OAAS,WACxB4G,KAAK03E,mBAAmB13E,KAAK23E,SAAS53E,KAAKC,MAC/C,EAEAs+G,EAASt6G,UAAU0zE,mBAAqB,SAA6BxxE,GACjE,IAGIoP,EADMtV,KACQsV,QACdipG,EAFMv+G,KAEak1D,SAAS5/C,QAAQipG,kBAAoC,IAAjBA,IAA0BA,EAAe,IAKpG,IAJA,IAAIC,EAAcD,EAAankH,OAC3B2rD,EAASzwC,EAAQywC,OACjBkxB,EAAclxB,EAAO3rD,OAEhBy9E,EAAW,EAAGA,EAAWZ,EAAaY,IAAY,CACvD,IAAI6C,EAAgB30B,EAAO8xB,GACvB5gE,EAAOyjE,EAAczjE,KACrBm0C,EAAQ+iC,GAAazT,GACrBt9D,EAAQguC,EAAMhuC,MACdmuB,EAAS6f,EAAM7f,OACfmO,EAAQ0R,EAAM1R,MACd+kE,EAAgB,IAAMrhG,EACtBshG,OAAiB,EAChBv4F,SAASs4F,KACVC,EAAgB,IAAMhlE,GAE1B,IAAIxJ,OAAgB,EAGhBA,EADA/qB,GAAQu1D,EAAcluC,YACPkuC,EAAcluC,WAEdl3B,EAAQk3B,WAGvBqrC,IAAaZ,EAAc,GACvByD,EAAc1oB,OAAOnV,WAAag5B,KAClC6E,EAAc1oB,OAAOnV,SAAWr5B,GAIxC,IAAK,IAAI9X,EAAI,EAAGA,EAAI6/B,EAAOnxC,OAAQsR,IAAK,CACpC,IAAI87C,EAAYjc,EAAO7/B,GACvB,GAAK87C,EAAL,CAIA,IAAIh/B,EAASg/B,EAAUh/B,OACnBrrB,EAAQqqD,EAAUrqD,MAClBpJ,EAAUyzD,EAAUzzD,QACpB89B,EAAkB,IAAV10B,EAAeuhH,GAAkBvhH,EAAQshH,EAAkB,EACnEE,EAA0B,IAAhB1nG,EAAK7c,QAAgB62D,QAAQzoC,EAAOm2F,SAE7Cv4F,GAAWs0D,EAAclsD,SAC1BksD,EAAclsD,MAAQhG,EAAOgG,OAAS+vF,EAAa7yG,EAAI8yG,IAG3Dt4G,EAAS/I,EAAO,IAAImvC,GAAK,KAAM,EAAG,EAAG4D,EAAcre,GAAQ,CACvDooD,MApDCj6E,KAqDDimD,SAAU9gC,GAAQqD,EAAOy9B,UAAYz9B,EAAOy9B,SAAW,GACvD3rD,MAAOoR,EACPq6C,OAAQ20B,EACR7C,SAAUA,EACV7xB,SAAU/uC,EAAKvL,GACfw6C,WAAsB,IAAV9oC,EAAcjgB,EAAQigB,EAAQ,EAC1CuhG,QAASA,EACT3tB,gBAAiBxoE,EAAOwoE,gBACxBj9F,QAASA,EACT6wD,OAAQqyB,EAAcY,EACtBwlC,eA/DCr9G,KA+DsBq9G,eAAe3xG,EAAGmsE,EAAUZ,MAGvC,IAAZljF,IACAm8C,GAAgBre,EA5BpB,CA8BJ,CACJ,CACJ,EAEAysF,EAASt6G,UAAU46G,mBAAqB,SAA6BtpG,EAASnY,EAAOqrB,GACjF,IAAIu9B,EAASv9B,EAAOu9B,OAEpB6wB,GAAYthE,EAAS,CACjBnY,MAAOA,EACP4oD,OAAQA,EACRC,SAAUx9B,EAAOw9B,SACjBC,SAAUz9B,EAAOy9B,SACjBC,WAAY19B,EAAO09B,YACpB,CAAE4wB,SAAU/wB,EAAOq0B,UAAWpD,SAAU,CAAE,OAAQ,UAAW,WAAY,SAAU,WAC1F,EAEAsnC,EAASt6G,UAAU2zE,SAAW,SAAmBx6E,EAAO8vC,EAAQzkB,GAC5D,IAAIq2F,EAAiB93F,GAAW,CAAC,EAAGyB,EAAOu9B,OAAQ,CAAEzrD,MAAOkuB,EAAOluB,QAKnE,GAJA0F,KAAK4+G,mBAAmBC,EAAgB1hH,EAAOqrB,GAE/CxoB,KAAKk+G,iBAAiB/gH,EAAO0hH,EAAgBr2F,IAEtB,IAAnBA,EAAOz0B,QAAX,CAIA,IAAIwlD,EAAU,IAAIyjE,GAAW7/G,EAAO8vC,EAAQ4xE,GAC5Ch0G,OAAOW,OAAO+tC,EAAS/wB,GACvBxoB,KAAK6rB,OAAO0tB,GACZv5C,KAAKurC,OAAOn8B,KAAKmqC,EALjB,CAMJ,EAEA+kE,EAASt6G,UAAUy/C,OAAS,SAAiB9Y,GACzC,IAAIp4C,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACdi2B,EAASh5C,EAAIg5C,OACbuzE,EAAgBvsH,EAAIusH,mBAAsC,IAAlBA,IAA2BA,EAAgB,IACvF,IAAIplE,EAAQnO,EAAOnxC,OACf61B,EAAM0a,EAAU9jB,QAEhB1sB,EAAW2mB,KAAK6N,IAAIsB,EAAIz7B,QAASy7B,EAAIx7B,UACrCsqH,EAAe5kH,EAAW,EAC1B6kH,EAAiB7kH,EAAsB,IAAXA,EAC5B8kH,EAAS,IAAI50E,GAAIpa,EAAIqa,GAAIra,EAAIsa,GAAIta,EAAIqa,GAAKnwC,EAAU81B,EAAIsa,GAAKpwC,GAC7D+kH,EAAeD,EAAO95E,SACtBsoB,EAAYx9B,EAAIkV,SAChB8xC,EAAc3hE,EAAQywC,OAAO3rD,OAC7B+kH,EAAiB,GACjBC,EAAkB,GAClB/zE,EAAU5b,GAAena,EAAQ+1B,QAAS2zE,GAE9Ch/G,KAAK2qC,UAAYA,EAEjBU,EAAUA,EAAU0zE,EAdR,EAc+BA,EAd/B,EAcsD1zE,EAClE4zE,EAAOt5F,UAAU8nC,EAAU1nC,EAAIm5F,EAAan5F,EAAG0nC,EAAUznC,EAAIk5F,EAAal5F,GAQ1E,IANA,IAAI8f,EAASi5E,EAAe1zE,EACxBlG,EAAS,IAAIF,GACba,EAASm5E,EAAO30E,GAAKe,EACrBvF,EAASm5E,EAAO10E,GAAKc,GAGhB3/B,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAI6tC,EAAUhO,EAAO7/B,GACjBuhC,EAASsM,EAAQtM,OACjBipD,EAAc38C,EAAQs+B,SAI1B,GAHA5qC,EAAOnH,OAASA,EAChBmH,EAAO9H,OAASA,EAEZ25E,EAAc1kH,OAAQ,CACtB,IAAIilH,EAAeP,EAAc5oB,GACjCjpD,EAAOV,YAAc8yE,EAAa9yE,YAClCU,EAAOnH,OAASu5E,EAAav5E,MACjC,CAEIowD,IAAgBjf,EAAc,GAAK19B,EAAQolE,UAC3C1xE,EAAO9H,OAAS8H,EAAOpmB,QAAQ6lB,UAA0B,IAAhBO,EAAOnH,QAAeZ,MAAM+H,EAAOR,WAGhF8M,EAAQkK,OAAOw7D,GAEf,IAAI/vD,EAAQ3V,EAAQ2V,MAChBA,GACIA,EAAM55C,QAAQunC,WAAag5B,IACvBqgB,IAAgBjf,EAAc,IAC1B/nB,EAAM+kD,cAAgBzvF,EACtB46F,EAAgBhwG,KAAK8/C,GAErBiwD,EAAe/vG,KAAK8/C,GAKxC,CAEIiwD,EAAe/kH,OAAS,IACxB+kH,EAAepwF,KAAK/uB,KAAKs/G,iBAAgB,IACzCt/G,KAAKu/G,iBAAiBJ,IAGtBC,EAAgBhlH,OAAS,IACzBglH,EAAgBrwF,KAAK/uB,KAAKs/G,iBAAgB,IAC1Ct/G,KAAKw/G,kBAAkBJ,IAG3Bp/G,KAAKiwB,IAAMgvF,CACf,EAEAX,EAASt6G,UAAUu7G,iBAAmB,SAA2BvtD,GAC7D,IAAIytD,EAAYz/G,KAAK0/G,sBAAsB1tD,GAE3ChyD,KAAK2/G,iBAAiBF,EAAWztD,EACrC,EAEAssD,EAASt6G,UAAUw7G,kBAAoB,SAA4BxtD,GAC/D,IAAIytD,EAAYz/G,KAAK0/G,sBAAsB1tD,GAE3ChyD,KAAK2/G,iBAAiBF,EAAWztD,EACrC,EAEAssD,EAASt6G,UAAU07G,sBAAwB,SAAgC1tD,GACvE,IAAIzY,EAAU9qB,GAAKzuB,KAAKurC,QACpB0B,EAASsM,EAAQtM,OACjByM,EAAQsY,EAAO53D,OAAS,EACxBwlH,EAAK3yE,EAAOnH,OAASyT,EAAQjkC,QAAQ08C,OAAOhlB,SAC5CyyE,EAAY,GACZI,EAAW7tD,EAAO,GAAG/hC,IACrB+c,EAAWhsB,GAAM6+F,EAASt1E,IAAM0C,EAAO9H,OAAOnf,EAAI45F,EAAKC,EAASprH,SAAWorH,EAASprH,SAAW,IAEnGgrH,EAAUrwG,KAAK49B,GAEf,IAAK,IAAIthC,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAIo0G,EAAY9tD,EAAOtmD,EAAI,GAAGukB,IAE9B4vF,EAAW7tD,EAAOtmD,GAAGukB,IACrB+c,EAAWhsB,GAAM8+F,EAAUv1E,GAAKs1E,EAASp1E,IACzCg1E,EAAUrwG,KAAK49B,EACnB,CAIA,OAHAA,EAAWhsB,GAAMisB,EAAO9H,OAAOnf,EAAI45F,EAAK5tD,EAAOtY,GAAOzpB,IAAIwa,GAAKunB,EAAOtY,GAAOzpB,IAAIx7B,SAAW,GAC5FgrH,EAAUrwG,KAAK49B,GAERyyE,CACX,EAEAnB,EAASt6G,UAAU27G,iBAAmB,SAA2BF,EAAWztD,GAMxE,IALA,IAGIlqC,EAAMF,EAAOm4F,EADbrmE,EAAQ+lE,EAAUrlH,OAGbsR,EAAI,EAAGA,EAAIguC,EAAOhuC,IAIvB,IAHAq0G,GAAaN,EAAU/zG,GACvBoc,EAAOF,EAAQlc,EAERq0G,EAAY,IAAMj4F,GAAQ,GAAKF,EAAQ8xB,IAC1CqmE,EAVK//G,KAUcggH,cAAcP,EAAW/zG,IAAKoc,EAAMi4F,GACvDA,EAXK//G,KAWcggH,cAAcP,EAAW/zG,IAAKkc,EAAOm4F,GAIhE//G,KAAKwrE,aAAai0C,EAAWztD,EACjC,EAEAssD,EAASt6G,UAAUg8G,cAAgB,SAAwBP,EAAW/5F,EAAQm3B,EAAUojE,GACpF,IAAI7nH,EAAS6nH,EACb,GAAIR,EAAU5iE,GAAY,EAAG,CACzB,IAAIqjE,EAAYp/F,KAAK6N,IAAI8wF,EAAU5iE,GAAWzkD,GAC9CA,GAAU8nH,EACVT,EAAU5iE,IAAaqjE,EACvBT,EAAU/5F,IAAWw6F,CACzB,CAEA,OAAO9nH,CACX,EAEAkmH,EAASt6G,UAAUwnE,aAAe,SAAuBi0C,EAAWztD,GAChE,IAQImuD,EANA5mE,EAAU9qB,GAAKzuB,KAAKurC,QACpB0B,EAASsM,EAAQtM,OACjB+lB,EAAezZ,EAAQjkC,QAAQ08C,OAC/Bc,EAAcd,EAAO53D,OACrBgmH,EAAgBptD,EAAahmB,SAC7BqzE,EAAOpzE,EAAO9H,OAAOnf,GAAKinB,EAAOnH,OAASs6E,GAAiBpuD,EAAO,GAAG/hC,IAAIx7B,SAG7EgrH,EAAU,IAAM,EAChB,IAAK,IAAI/zG,EAAI,EAAGA,EAAIonD,EAAapnD,IAAK,CAClC,IAAIwjD,EAAQ8C,EAAOtmD,GACfukB,EAAMi/B,EAAMj/B,IAEhBowF,GAAQZ,EAAU/zG,GAClBy0G,EAhBSngH,KAgBKsgH,YACVrwF,EAAIua,GACJyC,EAAOpmB,QAAQ8iB,OAAOy2E,GACtBC,EACAA,EAAOpwF,EAAIx7B,SACXy6D,EAAM+kD,cAAgBzvF,GAEtB0qC,EAAM+kD,cAAgBzvF,GAClBwuC,EAAa7mB,QAAU1oB,IACvB08F,EAAOlzE,EAAOnH,OAASmH,EAAO9H,OAAOpf,EAAIq6F,GAE7ClxD,EAAMzL,OAAO,IAAIpZ,GAAI81E,EAAOlwF,EAAIz7B,QAAS6rH,EAAMF,EAAME,MAEjDrtD,EAAa7mB,QAAU1oB,IACvB08F,EAAOlzE,EAAO9H,OAAOpf,EAAIknB,EAAOnH,OAASs6E,GAE7ClxD,EAAMzL,OAAO,IAAIpZ,GAAI81E,EAAOlwF,EAAIz7B,QAAS6rH,EAAMF,EAAME,KAGzDA,GAAQpwF,EAAIx7B,QAChB,CACJ,EAEA6pH,EAASt6G,UAAUogD,aAAe,WAC9B,IAAI5iB,EAASxhC,KAGTugH,EADMvgH,KACWsV,QAAQirG,WACzBh1E,EAFMvrC,KAEOurC,OACbmO,EAAQnO,EAAOnxC,OAGnBmpD,EAAav/C,UAAUogD,aAAaphD,KAAKhD,MAEzCA,KAAKwgH,gBAAkB,GAEvB,IAAK,IAAI90G,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAI6tC,EAAUhO,EAAO7/B,GACjBuhC,EAASsM,EAAQtM,OACjBiiB,EAAQ3V,EAAQ2V,MAChBr9B,EAAQob,EAAOR,SACfg0E,GAAmBlnE,EAAQjkC,QAAQirG,YAAc,CAAC,GAAG/xF,OAAS+xF,EAAW/xF,MAE7E,GAAI0gC,EAAO,CACP,IAAIwxD,EAAgB,IAAIvgE,GAAU,CAC9B56B,OAAQ,CACJiJ,MAAOiyF,EACPjsH,MAAO+rH,EAAW/rH,OAEtB4G,UAAW,CACPjI,KAAM++E,GACNpvB,MAAOvJ,EAAQ8jE,kBAIvB,GAAInuD,EAAM55C,QAAQunC,WAAag5B,GAAa,CACxC,IAAI5lD,EAAMi/B,EAAMj/B,IACZ0wF,EAAc1zE,EAAO9H,OACrB5b,EAAQ0jB,EAAO/H,MAAMrT,GACrB4a,EAAS,IAAIxH,GAAMhV,EAAIqa,GAAIra,EAAIkV,SAASnf,GACxC46F,OAAM,EAASp3F,OAAO,EAASq3F,OAAY,EAE/Ct3F,EAAQ0jB,EAAOpmB,QAAQ8iB,OAAO42E,EAAWl1E,SAASnG,MAAMrT,GACxD6uF,EAActiE,OAAO70B,EAAMxD,EAAGwD,EAAMvD,GAEhCkpC,EAAM+kD,cAAgBzvF,GAEtBq8F,EAAWvvE,GAAaqvE,EAAap3F,EAAOkjB,EAD5CjjB,EAAM,IAAIyb,GAAMhV,EAAIqa,GAAKi2E,EAAWl1E,QAASpb,EAAIkV,SAASnf,IAE1DymB,EAAS,IAAIxH,GAAMzb,EAAIzD,EAtC3B,EAsCsCyD,EAAIxD,IACtC66F,EAAWA,GAAYp0E,GACd1mB,EAAIjF,KAAK6N,IAAIkyF,EAAS96F,EAAG0mB,EAAO1mB,GAErCyb,EAAOs/E,cAAcD,EAAU5zE,EAAO9H,OAAQ8H,EAAOnH,OA1C7D,IA2CQ+6E,EAAS96F,EAAIknB,EAAO9H,OAAOpf,GAC3B66F,EAAK3zE,EAAO9H,OAAOpf,EAAIknB,EAAOnH,OA5CtC,EA6CYyT,EAAQjkC,QAAQ08C,OAAO7lB,QAAU+mC,GAC7B0tC,EAAKn0E,EAAO1mB,EACZ26F,EAAc3jE,OAAO6jE,EAAIr3F,EAAMvD,GAE/B06F,EAAc3jE,OAAOxzB,EAAMxD,EAAIuwC,EAAW/sC,EAAMvD,GAGpD06F,EAAc3jE,OAAO6jE,EAAIr3F,EAAMvD,GAEnC06F,EAAc3jE,OAAOtQ,EAAO1mB,EAAGyD,EAAIxD,KAEnC66F,EAAS76F,EAAIwD,EAAIxD,EACjB06F,EAAc3jE,OAAO8jE,EAAS96F,EAAG86F,EAAS76F,MAI9C66F,EAAWvvE,GAAaqvE,EAAap3F,EAAOkjB,EAD5CjjB,EAAM,IAAIyb,GAAMhV,EAAIua,GAAK+1E,EAAWl1E,QAASpb,EAAIkV,SAASnf,IAE1DymB,EAAS,IAAIxH,GAAMzb,EAAIzD,EA9D3B,EA8DsCyD,EAAIxD,IACtC66F,EAAWA,GAAYp0E,GACd1mB,EAAIjF,KAAK0K,IAAIq1F,EAAS96F,EAAG0mB,EAAO1mB,GAErCyb,EAAOs/E,cAAcD,EAAU5zE,EAAO9H,OAAQ8H,EAAOnH,OAlE7D,IAmEQ+6E,EAAS96F,EAAIknB,EAAO9H,OAAOpf,GAC3B66F,EAAK3zE,EAAO9H,OAAOpf,EAAIknB,EAAOnH,OApEtC,EAqEYyT,EAAQjkC,QAAQ08C,OAAO7lB,QAAU+mC,GAC7B0tC,EAAKn0E,EAAO1mB,EACZ26F,EAAc3jE,OAAO6jE,EAAIr3F,EAAMvD,GAE/B06F,EAAc3jE,OAAOxzB,EAAMxD,EAAIuwC,EAAW/sC,EAAMvD,GAGpD06F,EAAc3jE,OAAO6jE,EAAIr3F,EAAMvD,GAEnC06F,EAAc3jE,OAAOtQ,EAAO1mB,EAAGyD,EAAIxD,KAEnC66F,EAAS76F,EAAIwD,EAAIxD,EACjB06F,EAAc3jE,OAAO8jE,EAAS96F,EAAG86F,EAAS76F,KAIlD06F,EAAc3jE,OAAOvzB,EAAIzD,EAAGyD,EAAIxD,GAEhCwb,EAAOg/E,gBAAgBpxG,KAAKsxG,GAC5Bl/E,EAAOijB,OAAO54B,OAAO60F,EACzB,CACJ,CACJ,CACJ,EAEApC,EAASt6G,UAAUmgD,aAAe,WAG9B,GAFAZ,EAAav/C,UAAUmgD,aAAanhD,KAAKhD,MAErC+1B,GAAK/1B,KAAKsV,QAAQywC,QAAQ,SAAUzwC,GAAW,OAAOA,EAAQyrG,OAAS,IAAI,CAC3E,IAAIp2E,EAAY3qC,KAAK2qC,UACjBq2E,EAAYhhH,KAAKiwB,IAAIkV,SACrBkE,EAAOrpC,KAAKykD,OAAOpb,OACvB,IAAKA,EACD,OAGJ,IAAI43E,EAAa53E,EAAKH,cAElBlX,EAAQlR,KAAK6N,KACZqyF,EAAUh7F,EAAI2kB,EAAUJ,KAAOy2E,EAAUh7F,EAAIqjB,EAAK9B,OAAOvhB,IACzD2kB,EAAUF,GAAKu2E,EAAUh7F,IAAMi7F,EAAWj7F,EAAIg7F,EAAUh7F,IACxDg7F,EAAUj7F,EAAI4kB,EAAUL,KAAO02E,EAAUj7F,EAAIsjB,EAAK9B,OAAOxhB,IACzD4kB,EAAUH,GAAKw2E,EAAUj7F,IAAMk7F,EAAWl7F,EAAIi7F,EAAUj7F,IAGzDiM,EAAQ,GACRhyB,KAAKykD,OAAOnyB,UAAU4D,KAAqBlE,MAAMA,EAAOA,EAAO,CAAEgvF,EAAUj7F,EAAGi7F,EAAUh7F,IAEhG,CACJ,EAEAs4F,EAASt6G,UAAUs7G,gBAAkB,SAA0BpxD,GAC3D,IAAIgzD,EAAehzD,GAAW,EAAI,EAElC,OAAO,SAASr/B,EAAGjkB,GAGf,QAFaikB,EAAE+D,OAAOqa,OAAOR,SAAW,KAAO,KACjC7hC,EAAEgoB,OAAOqa,OAAOR,SAAW,KAAO,KACtBy0E,CAC9B,CACJ,EAEA5C,EAASt6G,UAAUs8G,YAAc,SAAsBa,EAAWl0E,EAAQ1C,EAAIE,EAAIs/D,GAC9E,IAAIjkE,EAASmH,EAAOnH,OAChBs7E,EAAgBn0E,EAAO9H,OACvBI,EAAK67E,EAAcr7F,EACnByf,EAAK47E,EAAcp7F,EACnBttB,EAAIooB,KAAK6N,IAAI7N,KAAKC,IAAIykB,EAAK+E,GAAKzpB,KAAKC,IAAIykB,EAAKiF,IAElD,OAAI/xC,EAAIotC,EACGq7E,EAGJ57E,EAAKzkB,KAAK0f,KAAMsF,EAASA,EAAWptC,EAAIA,IAAOqxG,EAAY,GAAK,EAC3E,EAEAuU,EAASt6G,UAAU88G,cAAgB,SAAwB57E,EAAOC,EAAQW,GACtE,OAAOhlB,KAAKuI,IAAI8b,EAAOpf,EAAImf,EAAMnf,EAAG,GAAKjF,KAAKuI,IAAI8b,EAAOnf,EAAIkf,EAAMlf,EAAG,GAAKlF,KAAKuI,IAAIyc,EAAQ,EAChG,EAEAw4E,EAASt6G,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GACpE,OAAOnhB,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EAAQ+jB,EAAM/nC,MACvD,EAEAmhH,EAASt6G,UAAUq5G,eAAiB,SAAyB19C,GACzD,OAldoB,GAkdbA,CACX,EAEA2+C,EAASt6G,UAAUghD,UAAY,WAC3B,OAAOhlD,IACX,EAEOs+G,CACX,CAxdgB,CAwdd/6D,IAEF,SAASjS,GAAa+vE,EAAIC,EAAIC,EAAIC,GAC9B,IAGIppH,EAHAqpH,GAAOD,EAAGz7F,EAAIw7F,EAAGx7F,IAAMs7F,EAAGr7F,EAAIu7F,EAAGv7F,IAAMw7F,EAAGx7F,EAAIu7F,EAAGv7F,IAAMq7F,EAAGt7F,EAAIw7F,EAAGx7F,GACjE27F,GAAMF,EAAGx7F,EAAIu7F,EAAGv7F,IAAMs7F,EAAGv7F,EAAIs7F,EAAGt7F,IAAMy7F,EAAGz7F,EAAIw7F,EAAGx7F,IAAMu7F,EAAGt7F,EAAIq7F,EAAGr7F,GAGpE,GAAW,IAAP07F,EAAU,CACV,IAAIC,EAAMF,EAAMC,EAEhBtpH,EAAS,IAAI6sC,GACTo8E,EAAGt7F,EAAI47F,GAAML,EAAGv7F,EAAIs7F,EAAGt7F,GACvBs7F,EAAGr7F,EAAI27F,GAAML,EAAGt7F,EAAIq7F,EAAGr7F,GAE/B,CAEA,OAAO5tB,CACX,CAEAu9B,GAAkB2oF,GAAU,CACxB9xE,WAAY,GACZ+zE,WAAY,CACR/rH,MAAO,EACPg6B,MAAO,UACP6c,QAAS,GAEbwlD,cAAe,CACXxU,QAAS,CAAC,EACVrqB,OAAQ,CAAC,KAIjBjrC,GAAWu3F,GAASt6G,UAAWi6G,IAE/BK,GAASt6G,UAAUkhD,aAAc,EAEjC,UCrgBI08D,GAAe,SAAUvyB,GACzB,SAASuyB,IACLvyB,EAAannF,MAAMlI,KAAM+H,UAC7B,CA4BA,OA1BKsnF,IAAeuyB,EAAY72G,UAAYskF,GAC5CuyB,EAAY59G,UAAY6G,OAAOS,OAAQ+jF,GAAgBA,EAAarrF,WACpE49G,EAAY59G,UAAUqH,YAAcu2G,EAEpCA,EAAY59G,UAAU5K,OAAS,WAC3B4G,KAAK6hH,eAAe7hH,KAAK+lD,OAC7B,EAEA67D,EAAY59G,UAAU69G,eAAiB,SAAyB97D,GAC5D,IAAIg4C,EAAch4C,EAAO,GACrB+7D,EAAW,IAAIxD,GAASt+G,KAAM,CAC9B+lD,OAAQA,EACR1a,QAAS0yD,EAAY1yD,QACrBmB,WAAYuxD,EAAYvxD,WACxB+zE,WAAYxiB,EAAYwiB,WACxBhxB,OAAQvvF,KAAKsV,QAAQi6E,SAGzBvvF,KAAKktF,YAAY40B,EACrB,EAEAF,EAAY59G,UAAUkpF,YAAc,SAAsBn8B,EAAOsE,GAC7Dg6B,EAAarrF,UAAUkpF,YAAYlqF,KAAKhD,KAAM+wD,EAAOsE,GACrDxpC,GAAO7rB,KAAKsV,QAAQi6E,OAAOruC,MAAO6P,EAAMstD,YAC5C,EAEOuD,CACX,CAhCmB,CAgCjBvyB,IAEF,MC7BI0yB,GAAgB,SAAU/E,GAC1B,SAAS+E,IACL/E,EAAW90G,MAAMlI,KAAM+H,UAC3B,CA+BA,OA7BKi1G,IAAa+E,EAAah3G,UAAYiyG,GAC3C+E,EAAa/9G,UAAY6G,OAAOS,OAAQ0xG,GAAcA,EAAWh5G,WACjE+9G,EAAa/9G,UAAUqH,YAAc02G,EAErCA,EAAa/9G,UAAU84E,YAAc,WACjC,IACIwgC,EADMt9G,KACcsV,QAAQ08C,OAC5B9C,EAFMlvD,KAEMkvD,MACZjiB,EAASjtC,KAAKitC,OAAOpmB,QACrBgL,EAAQob,EAAOR,SAEnB,GAAIyiB,EAAO,CACP,IAAIuuD,EAAcvuD,EAAMj/B,IAAIx7B,SAC5B,GAAI6oH,EAAczgE,WAAar5B,EAAQ,CACnCypB,EAAOnH,SAAWmH,EAAOnH,OAASmH,EAAOV,aAAe,EAExD,IAAIixE,EAAKvwE,EAAO/H,MAAMrT,GAEtBq9B,EAAMzL,OAAO,IAAIpZ,GAAImzE,EAAGz3F,EAAGy3F,EAAGx3F,EAAIy3F,EAAc,EAAGD,EAAGz3F,EAAGy3F,EAAGx3F,GAChE,MACIg3F,EAAWh5G,UAAU84E,YAAY95E,KAAKhD,KAE9C,CACJ,EAEA+hH,EAAa/9G,UAAUi7E,cAAgB,SAAwBhyC,EAAQ33B,GACnE,OAAO2qC,GAAAA,QAAAA,WAAgChT,EAAQ33B,EACnD,EAEOysG,CACX,CAnCoB,CAmClB/E,IAEFrnF,GAAkBosF,GAAc,CAC5Bz7D,QAAS,CACL4D,SAAU,gBAEd8H,OAAQ,CACJnV,SAAUr5B,GAEdpoB,UAAW,CACPjI,KAAMsgF,MAId1sD,GAAWg7F,GAAa/9G,UAAW83E,IAGnC,UCrDIkmC,GAAc,SAAU1D,GACxB,SAAS0D,IACL1D,EAASp2G,MAAMlI,KAAM+H,UACzB,CA4FA,OA1FKu2G,IAAW0D,EAAWj3G,UAAYuzG,GACvC0D,EAAWh+G,UAAY6G,OAAOS,OAAQgzG,GAAYA,EAASt6G,WAC3Dg+G,EAAWh+G,UAAUqH,YAAc22G,EAEnCA,EAAWh+G,UAAU2zE,SAAW,SAAmBx6E,EAAO8vC,EAAQzkB,GAC9D,IAAIq2F,EAAiB93F,GAAW,CAAC,EAAGyB,EAAOu9B,OAAQ,CAAEzrD,MAAOkuB,EAAOluB,QAKnE,GAJA0F,KAAK4+G,mBAAmBC,EAAgB1hH,EAAOqrB,GAE/CxoB,KAAKk+G,iBAAiB/gH,EAAO0hH,EAAgBr2F,IAEtB,IAAnBA,EAAOz0B,QAAX,CAIA,IAAIwlD,EAAU,IAAIwoE,GAAa5kH,EAAO8vC,EAAQ4xE,GAE9Ch0G,OAAOW,OAAO+tC,EAAS/wB,GACvBxoB,KAAK6rB,OAAO0tB,GACZv5C,KAAKurC,OAAOn8B,KAAKmqC,EANjB,CAOJ,EAEAyoE,EAAWh+G,UAAUy/C,OAAS,SAAiB9Y,GAmB3C,IAlBA,IAgBIs3E,EAdA3sG,EAAUtV,KAAKsV,QACf2a,EAAM0a,EAAU9jB,QAEhB1sB,EAAW2mB,KAAK6N,IAAIsB,EAAIz7B,QAASy7B,EAAIx7B,UACrCsqH,EAAe5kH,EAAW,EAC1B6kH,EAAiB7kH,EAAsB,IAAXA,EAC5B4rD,EAASzwC,EAAQywC,OACjBkxB,EAAclxB,EAAO3rD,OAErBixC,EAAU5b,GAAena,EAAQ+1B,QAAS2zE,GAG1CkD,EAAYnD,GAFhB1zE,EAAUA,EAAU0zE,EARR,EAQ+BA,EAR/B,EAQsD1zE,GAG9D82E,EAAoB,EAGfz2G,EAAI,EAAGA,EAAIurE,EAAavrE,IAAK,CAClC,IAAIgvE,EAAgB30B,EAAOr6C,GACjB,IAANA,GACIyZ,GAAQu1D,EAAcunC,YACtBA,EAAWvnC,EAAcunC,SACzBC,GAAaxnC,EAAcunC,UAI/B98F,GAAQu1D,EAAc9jF,MACtBsrH,GAAaxnC,EAAc9jF,KAE3BurH,IAGAh9F,GAAQu1D,EAAcp/E,SAAWoQ,IAAMurE,EAAc,IACrDirC,GAAaxnC,EAAcp/E,OAEnC,CAEK6pB,GAAQ88F,KAGTC,GADAD,EAAyB,MADNlD,EAAe1zE,IAAY4rC,EAAc,OAKhE,IAEUnxC,EAFNyG,EAAc01E,EACd3mH,EAAS,EAGb0E,KAAK8+G,cAAgB,GAErB,IAAK,IAAIx4C,EAAM,EAAGA,EAAM2Q,EAAa3Q,IAAO,CACxC,IAAI87C,EAAkBr8D,EAAOugB,GAG7BxgC,GADAyG,GAAejxC,GADRm0B,GAAe2yF,EAAgBxrH,KAAMsrH,EAAYC,GApD/CniH,KAuDF8+G,cAAc1vG,KAAK,CAAEm9B,YAAaA,EAAazG,OAAQA,IAC9DxqC,EAAS8mH,EAAgB9mH,QAAU,EACnCixC,EAAczG,CAClB,CAEAw4E,EAASt6G,UAAUy/C,OAAOzgD,KAAKhD,KAAM2qC,EACzC,EAEAq3E,EAAWh+G,UAAUq5G,eAAiB,SAAyB19C,EAAeu2B,EAAajf,GACvF,OA7FsB,GA6FftX,EACFsS,IAA8BikB,EAAc,IAAMjf,EAAc,EACzE,EAEO+qC,CACX,CAhGkB,CAgGhB1D,IAGF3oF,GAAkBqsF,GAAY,CAC1Bx1E,WAAY,GACZ+zE,WAAY,CACR/rH,MAAO,EACPg6B,MAAO,UACP6c,QAAS,KAIjB,UClHIg3E,GAAiB,SAAUT,GAC3B,SAASS,IACLT,EAAY15G,MAAMlI,KAAM+H,UAC5B,CAsBA,OApBK65G,IAAcS,EAAct3G,UAAY62G,GAC7CS,EAAcr+G,UAAY6G,OAAOS,OAAQs2G,GAAeA,EAAY59G,WACpEq+G,EAAcr+G,UAAUqH,YAAcg3G,EAEtCA,EAAcr+G,UAAU5K,OAAS,WAC7B4G,KAAKsiH,iBAAiBtiH,KAAK+lD,OAC/B,EAEAs8D,EAAcr+G,UAAUs+G,iBAAmB,SAA2Bv8D,GAClE,IAAIg4C,EAAch4C,EAAO,GACrBw8D,EAAa,IAAIP,GAAWhiH,KAAM,CAClC+lD,OAAQA,EACR1a,QAAS0yD,EAAY1yD,QACrBk1E,WAAYxiB,EAAYwiB,WACxBhxB,OAAQvvF,KAAKsV,QAAQi6E,SAGzBvvF,KAAKktF,YAAYq1B,EACrB,EAEOF,CACX,CA1BqB,CA0BnBT,IAEF,MCpBIY,GAAqB,SAAUnzB,GAC/B,SAASmzB,IACLnzB,EAAannF,MAAMlI,KAAM+H,UAC7B,CAgGA,OA9FKsnF,IAAemzB,EAAkBz3G,UAAYskF,GAClDmzB,EAAkBx+G,UAAY6G,OAAOS,OAAQ+jF,GAAgBA,EAAarrF,WAC1Ew+G,EAAkBx+G,UAAUqH,YAAcm3G,EAE1CA,EAAkBx+G,UAAUuuD,WAAa,WACrCvyD,KAAKo7F,sBAAwB,IAAI5Y,EACrC,EAEAggC,EAAkBx+G,UAAU5K,OAAS,WACjC4G,KAAK4wF,YAAY5wF,KAAK+lD,QACtB/lD,KAAKyiH,kBACLziH,KAAKy7F,eACLz7F,KAAK0iH,iBACT,EAEAF,EAAkBx+G,UAAU6uF,UAAY,WACpC,IAAI9nD,EAAO/qC,KAAKw+D,UACZ9mB,EAAQ3M,EAAK2M,QACbypC,EAAgBp2C,EAAKz1B,QAAQ44C,QAAUxW,EAAMlsB,IAAMksB,EAAM/oB,IACzDopC,EAAOhtB,EAAK0qB,QAAQ0rB,GACpBh8C,EAASnlC,KAAK4sE,UAAUnX,QAAQ,GAAGtwB,OACnCytD,EAAU7nD,EAAK9a,IAAItK,UACnBwf,EAAOpf,EAAIgyC,EAAKztB,GAChBnF,EAAOnf,EAAI+xC,EAAKxtB,IAGpBQ,EAAK0Y,OAAOmvC,EAChB,EAEA4vB,EAAkBx+G,UAAU0+G,gBAAkB,WAC1C,IAMIh1C,EAAUi1C,EANVvjB,EAAUp/F,KAAKo7F,sBACfiE,EAAeD,EAAQtc,QACvB3a,EAAcnoE,KAAK4iH,iBAAiB,CACpCn7C,kBAAkB,EAClB7iB,QAAS,IAITujB,EAAYh1E,OAASuiF,IACrBhI,EAAWG,GACX80C,EAAmB,CAAEh0F,IAAK,GAAKnD,IAAK,KAEpCkiD,EAAWC,GACXg1C,EAAmB,CAAEh0F,IAAK,EAAGnD,IAAK,IAGtC,IAAIksB,EAAQ0nD,EAAQtc,MAAMnyE,OAAS0uF,GAAgBsjB,EAE/CjrE,GAAS2nD,IACT3nD,EAAM/oB,IAAM7N,KAAK6N,IAAI+oB,EAAM/oB,IAAK0wE,EAAa1wE,KAC7C+oB,EAAMlsB,IAAM1K,KAAK0K,IAAIksB,EAAMlsB,IAAK6zE,EAAa7zE,MAGjD,IAAIgzC,EAAY,IAAIkP,EAChBh2B,EAAM/oB,IAAK+oB,EAAMlsB,IACjB28C,EACAnoE,KAAKgkD,cAGThkD,KAAKw+D,UAAYA,EACjBx+D,KAAKgtF,WAAWxuB,EACpB,EAEAgkD,EAAkBx+G,UAAUguF,WAAa,WACrC,IAAIz/F,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QAAQ4/C,SACtBsJ,EAAYjsE,EAAIisE,UAChBoO,EAAYr6E,EAAIq6E,UAChB38C,EAAM19B,EAAI09B,IACV+uF,EA5EU,IA4EOl+F,KAAK6N,IAAIsB,EAAIz7B,QAASy7B,EAAIx7B,UAC3C42C,EAAU7jB,GAAWlS,EAAQ+1B,SAAW,CAAC,EAAG2zE,GAC5Ch4D,EAAa/2B,EAAIpJ,QAAQykB,MAAMD,GAC/BunD,EAAU5rC,EAAWngC,QAEzB+rE,EAAQnoD,GAAKmoD,EAAQroD,GAAKzpB,KAAK6N,IAAIikE,EAAQp+F,QAASo+F,EAAQn+F,UAC5Dm+F,EAAQzmD,MAAM6a,EAAYhiC,EAAGxB,GAE7B,IAAIq/F,EAAejwB,EAAQ/rE,QAAQqkB,OAAO,EAAG0nD,EAAQn+F,SAAW,GAEhEm4E,EAAUnpB,OAAOmvC,GACjBp0B,EAAU/a,OAAOo/D,GACjB,IAAIC,EAAatkD,EAAUlL,UAAU7+D,SAAW+pE,EAAUvuC,IAAIx7B,SAC9D+pE,EAAU/a,OAAO+a,EAAUvuC,IAAIqb,MAAM,CAAE3jB,IAAKm7F,KAE5C9iH,KAAK4yF,QAAUA,EACf5yF,KAAK6yF,UAAUD,EACnB,EAEA4vB,EAAkBx+G,UAAUuxF,cAAgB,WACxC,OAAOv1F,KAAKiwB,GAChB,EAEAuyF,EAAkBx+G,UAAU+tF,aAAe,WAA0B,EAE9DywB,CACX,CApGyB,CAoGvBnzB,IAEF,MC3GI0zB,GAAqB,SAAUz6B,GAC/B,SAASy6B,IACLz6B,EAAapgF,MAAMlI,KAAM+H,UAC7B,CAaA,OAXKugF,IAAey6B,EAAkBh4G,UAAYu9E,GAClDy6B,EAAkB/+G,UAAY6G,OAAOS,OAAQg9E,GAAgBA,EAAatkF,WAC1E++G,EAAkB/+G,UAAUqH,YAAc03G,EAE1CA,EAAkB/+G,UAAU62E,UAAY,SAAoBtlB,EAAOC,GAC/D,IAAIwtD,EAAcztD,EAAMpwB,OAAOnf,EAAIwvC,EAAMjrB,GACrCwtB,EAAO9yB,GAAAA,SAAeswB,EAAMpwB,OAAQowB,EAAM/oB,WAAYw2E,GAE1D,OAAO,IAAI34E,GAAI0tB,EAAKhyC,EAAGgyC,EAAK/xC,EAAG+xC,EAAKhyC,EAAGgyC,EAAK/xC,EAChD,EAEO+8F,CACX,CAjByB,CAiBvBz6B,IAEF3yD,GAAkBotF,GAAmB,CACjC7tE,MAAM,IAGV,UCxBI+tE,GAAkB,SAAUvH,GAC5B,SAASuH,IACLvH,EAAiBxzG,MAAMlI,KAAM+H,UACjC,CAMA,OANM2zG,IAAmBuH,EAAel4G,UAAY2wG,GACpDuH,EAAej/G,UAAY6G,OAAOS,OAAQowG,GAAoBA,EAAiB13G,WAC/Ei/G,EAAej/G,UAAUqH,YAAc43G,EAIhCA,CACX,CAVsB,CAUpBvH,IAEFuH,GAAej/G,UAAU62E,UAAYkoC,GAAAA,UAAAA,UAErCptF,GAAkBstF,GAAgB,CAC9B/tE,MAAM,IAGV,UCpBIguE,GAA0B,SAAU1hC,GACpC,SAAS0hC,IACL1hC,EAAkBt5E,MAAMlI,KAAM+H,UAClC,CAiCA,OA/BKy5E,IAAoB0hC,EAAuBn4G,UAAYy2E,GAC5D0hC,EAAuBl/G,UAAY6G,OAAOS,OAAQk2E,GAAqBA,EAAkBx9E,WACzFk/G,EAAuBl/G,UAAUqH,YAAc63G,EAE/CA,EAAuBl/G,UAAUi9E,WAAa,SAAqBC,GAC/D,IAAI/7C,EAASnlC,KAAKmjH,mBAClBjiC,EAASnkC,OAAO5X,EAAOpf,EAAGof,EAAOnf,EACrC,EAEAk9F,EAAuBl/G,UAAUm/G,iBAAmB,WAGhD,OAFgBnjH,KAAK4yB,OAAOsiC,SAAS0X,UACd38C,IAAIkV,QAE/B,EAEA+9E,EAAuBl/G,UAAUw8E,eAAiB,WAC9C,IAAI/6D,EAAWzlB,KAAKygF,gBAEpB,IAAKh7D,EAAU,CACX,IAAI0f,EAASnlC,KAAKmjH,mBACd1hC,EAAiB,IAAI3T,IAAe,GACpCpe,EAAa1vD,KAAKurC,SAEtBmkB,EAAWtgD,KAAK+1B,IAChB1f,EAAWzlB,KAAKygF,gBAAkBgB,EAAepoF,QAAQq2D,IAChDhc,KACb,CAEA,OAAOjuB,CACX,EAEOy9F,CACX,CArC8B,CAqC5B1hC,IAEF,MCvCI4hC,GAAoB,SAAUljC,GAC9B,SAASkjC,IACLljC,EAAYh4E,MAAMlI,KAAM+H,UAC5B,CAeA,OAbKm4E,IAAckjC,EAAiBr4G,UAAYm1E,GAChDkjC,EAAiBp/G,UAAY6G,OAAOS,OAAQ40E,GAAeA,EAAYl8E,WACvEo/G,EAAiBp/G,UAAUqH,YAAc+3G,EAEzCA,EAAiBp/G,UAAUi9E,WAAa,SAAqBC,GACzD,IACI/7C,EADYnlC,KAAK4yB,OAAOsiC,SAAS0X,UACd38C,IAAIkV,SACvBk+E,EAAgB,IAAIp3E,GAAa,CAAE9G,EAAOpf,EAAGof,EAAOnf,IAExDk7D,EAASz7D,SAASkuB,QAAQ0vE,GAC1BniC,EAASz7D,SAASrW,KAAKi0G,EAC3B,EAEOD,CACX,CAnBwB,CAmBtBljC,IAEF,MChBIojC,GAAkB,SAAUL,GAC5B,SAASK,IACLL,EAAe/6G,MAAMlI,KAAM+H,UAC/B,CAsEA,OApEKk7G,IAAiBK,EAAev4G,UAAYk4G,GACjDK,EAAet/G,UAAY6G,OAAOS,OAAQ23G,GAAkBA,EAAej/G,WAC3Es/G,EAAet/G,UAAUqH,YAAci4G,EAEvCA,EAAet/G,UAAUi7E,cAAgB,SAAwBvvB,EAAYgrB,EAAe7C,GASxF,OARa6C,EAAcjrB,MAAQ,CAAC,GAAGh5D,QAGzBi8E,GACA,IAAIwwC,GAAuBxzD,EAAYgrB,EAAe7C,GAEtD,IAAIurC,GAAiB1zD,EAAYgrB,EAAe7C,EAGlE,EAEAyrC,EAAet/G,UAAU6kF,mBAAqB,SAA6B1rF,EAAOgiF,GAC9E,IAAIw8B,EAYJ,OAVIt1B,GAASlpF,EAAM4oB,IAAMo5D,IAAkB5M,KACvCopC,EAAe,CACX51F,EAAG5oB,EAAM4oB,EACTC,EAAG7oB,EAAM6oB,GAETm5D,IAAkB73C,KAClBq0E,EAAa31F,EAAI,IAIlB21F,CACX,EAEA2H,EAAet/G,UAAUg7E,oBAAsB,SAA8Bj5B,GACzE,OAAOA,EAAOo5B,eAAiB73C,EACnC,EAEAg8E,EAAet/G,UAAUu/G,qBAAuB,WAK5C,IAJA,IAEIx9D,EAAS/lD,KAAKsV,QAAQywC,OAEjBtxC,EAAM,EAAGA,EAAMsxC,EAAO3rD,OAAQqa,IACnC,G9JnCF,Q8J8BWzU,KAKEg/E,oBAAoBj5B,EAAOtxC,IAClC,OAAO,CAGnB,EAEA6uG,EAAet/G,UAAU86E,WAAa,SAAqBvzC,GAKvD,GAFAA,EAAOxc,KAAKy0F,IAERxjH,KAAKujH,uBACL,IAAK,IAAI9uG,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IAAO,CAC1C,IAAIywB,EAAQqG,EAAO92B,GACnB,GAAIywB,EAEKmhD,GADOnhD,EAAM/nC,MACE6oB,I9JnD9B,Q8J0CWhmB,KASgCg/E,oBAAoB95C,EAAM6gB,gBAChDxa,EAAO92B,EAG1B,CAGJ,OAAO82B,CACX,EAEO+3E,CACX,CA1EsB,CA0EpBL,IAEF,SAASO,GAAU30F,EAAGjkB,GAClB,OAAOikB,EAAE1xB,MAAM4oB,EAAInb,EAAEzN,MAAM4oB,CAC/B,CAEA,UCxEI09F,GAAiB,SAAUjB,GAC3B,SAASiB,IACLjB,EAAkBt6G,MAAMlI,KAAM+H,UAClC,CAmGA,OAjGKy6G,IAAoBiB,EAAc14G,UAAYy3G,GACnDiB,EAAcz/G,UAAY6G,OAAOS,OAAQk3G,GAAqBA,EAAkBx+G,WAChFy/G,EAAcz/G,UAAUqH,YAAco4G,EAEtCA,EAAcz/G,UAAUy+G,gBAAkB,WACtC,IAAI71C,EAAY,IAAIJ,GAAUxsE,KAAKsV,QAAQyzE,MAAO/oF,KAAKgkD,cAEvDhkD,KAAK4sE,UAAYA,EACjB5sE,KAAKwzD,MAAQoZ,EACb5sE,KAAKgtF,WAAWpgB,EACpB,EAEA62C,EAAcz/G,UAAU4+G,iBAAmB,SAA2B9rC,GAClE,OAAO/vD,GAAW+vD,EAAU,CACxB9gB,eAAgB,CAAE7iE,KAAMkwB,GACxB0yC,eAAgB,CAAE5iE,KAAMkwB,IACzBrjB,KAAKsV,QAAQ2zE,MACpB,EAEAw6B,EAAcz/G,UAAU0+G,gBAAkB,WACtCF,EAAkBx+G,UAAU0+G,gBAAgB1/G,KAAKhD,MACjDA,KAAKyzD,MAAQzzD,KAAKw+D,SACtB,EAEAilD,EAAcz/G,UAAUkpF,YAAc,SAAsBn8B,EAAOsE,GAC/Dr1D,KAAKo7F,sBAAsB1Y,OAAO3xB,EAAM03B,aAExC4G,GAAAA,UAAAA,YAAAA,KAAwCrvF,KAAM+wD,EAAOsE,EACzD,EAEAouD,EAAcz/G,UAAUy3F,aAAe,WACnC,IAAI11C,EAAS/lD,KAAK6xF,oBAAoB7xF,KAAK+lD,QACvCsP,EAAOr1D,KAAK8vF,MAAM,GAEtB9vF,KAAKy8F,gBACDpO,GAAmBtoC,EAAQ,CAAE4tB,KAC7Bte,GAGJr1D,KAAKg8G,mBACD3tB,GAAmBtoC,EAAQ,CAAE6tB,KAC7Bve,GAGJr1D,KAAKg8F,gBACD3N,GAAmBtoC,EAAQ,CAAE2tB,KAC7Bre,EAER,EAEAouD,EAAcz/G,UAAUy4F,gBAAkB,SAA0B12C,EAAQsP,GACxE,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAImkG,EAAY,IAAI0kB,GAAejjH,KAAM,CAAE+lD,OAAQA,IAEnD/lD,KAAKktF,YAAYqR,EAAWlpC,EAJ5B,CAKJ,EAEAouD,EAAcz/G,UAAUg4G,mBAAqB,SAA6Bj2D,EAAQsP,GAC9E,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAIspH,EAAe,IAAIX,GAAkB/iH,KAAM,CAAE+lD,OAAQA,IAEzD/lD,KAAKktF,YAAYw2B,EAAcruD,EAJ/B,CAKJ,EAEAouD,EAAcz/G,UAAUg4F,gBAAkB,SAA0Bj2C,EAAQsP,GACxE,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAIokG,EAAY,IAAI8kB,GAAetjH,KAAM,CAAE+lD,OAAQA,IAEnD/lD,KAAKktF,YAAYsR,EAAWnpC,EAJ5B,CAKJ,EAEAouD,EAAcz/G,UAAUgzF,eAAiB,SAAyBjmC,EAAO/9D,EAAGwsG,GACxE,IAAI3hB,EAAS9sB,EAAM0uC,kBAAkBzsG,GACjCkyC,EAAQ,IAAID,GAAM44C,EAAO93D,EAAG83D,EAAO73D,GACnCk2B,EAASl8C,KAAKwzD,MAAMiV,SAASvjC,GAC7BiX,EAASn8C,KAAKyzD,MAAMgV,SAASvjC,GAElB,OAAXgX,GAA8B,OAAXC,GACnB4U,EAAMhnC,QAAQy1E,EAAW,CACrBhsG,QAAS46B,GAAap7B,GACtB+yB,EAAGm2B,EACHl2B,EAAGm2B,GAGf,EAEAsnE,EAAcz/G,UAAU2rF,iBAAmB,WAA8B,EAElE8zB,CACX,CAvGqB,CAuGnBjB,IAEF7sF,GAAkB8tF,GAAe,CAC7B16B,MAAO,CAAC,EACRE,MAAO,CAAC,IAGZliE,GAAW08F,GAAcz/G,UAAW+yF,IAEpC,UC3GA,IAAI4sB,GAAkB,SAAU1jC,GAC5B,SAAS0jC,IACL1jC,EAAU/3E,MAAMlI,KAAM+H,UAC1B,CAuDA,OArDKk4E,IAAY0jC,EAAe54G,UAAYk1E,GAC5C0jC,EAAe3/G,UAAY6G,OAAOS,OAAQ20E,GAAaA,EAAUj8E,WACjE2/G,EAAe3/G,UAAUqH,YAAcs4G,EAEvCA,EAAe3/G,UAAU62E,UAAY,SAAoBF,EAAcC,GACnE,IAAIooC,EAAcroC,EAAax1C,OAAOnf,EAAI40D,EAAUrwC,GAChDwtB,EAAO9yB,GAAAA,SAAe01C,EAAax1C,OAAQw1C,EAAaluC,SAAUu2E,GAEtE,OAAO,IAAI34E,GAAI0tB,EAAKhyC,EAAGgyC,EAAK/xC,EAAG+xC,EAAKhyC,EAAGgyC,EAAK/xC,EAChD,EAEA29F,EAAe3/G,UAAU26E,eAAiB,WAGtC,GAFAsB,EAAUj8E,UAAU26E,eAAe37E,KAAKhD,MAEpCA,KAAK4+E,WAAa5+E,KAAK4+E,UAAUxkF,OAAS,EAG1C,IAFA,IAAIwpH,EA/BhB,SAAyBn+F,GAErB,IADA,IAAIm+F,EAAiB,GACZnvG,EAAM,EAAGA,EAAMgR,EAASrrB,OAAQqa,IAAO,CAC5C,IAAI8kC,EAAU9zB,EAAShR,GACvBmvG,EAAerqE,EAAQs+B,UAAY+rC,EAAerqE,EAAQs+B,WAAa,GACvE+rC,EAAerqE,EAAQs+B,UAAUzoE,KAAKmqC,EAC1C,CAEA,OAAOqqE,CACX,CAsBiCC,CAAgB7jH,KAAK4+E,WAEjCnqE,EAAM,EAAGA,EAAMmvG,EAAexpH,OAAQqa,IAAO,CAClD,IAAIgR,EAAWm+F,EAAenvG,GAC9B,GAAIgR,GAAYA,EAASrrB,OAAS,EAAG,CACjC,IAAIinF,EAAa57D,EAAS,GAAGiqC,WAAW,GACpC5Q,EAAcrwB,GAAKhJ,GACnB67D,EAAY7yD,GAAKqwB,EAAY4Q,YAC7Bo0D,EAA6C,IAA1BziC,EAAWnd,WAC9B6/C,EAAkBziC,EAAUpd,aAAeod,EAAUrhB,gBAAkB,EACvE6jD,GAAoBC,GACpBt1F,GAAKhJ,GAAUiqC,WAAWtgD,KAAKiyE,EAEvC,CACJ,CAER,EAEAsiC,EAAe3/G,UAAUi7E,cAAgB,SAAwBvvB,EAAYgrB,EAAe7C,GACxF,IASIt+B,EAAU,IATFmhC,EAAcjkF,QAGZi8E,GACE8L,GAEAd,IAGYhuB,EAAYgrB,EAAe7C,GACnDsH,EAAgBn/E,KAAKg/E,oBAAoBtE,GAM7C,OAJIhrB,EAAWt1D,SAAWsgF,EAAczjE,KAAK7c,QAAU+kF,IAAkB5M,KACrEh5B,EAAQjkC,QAAQ+kC,QAAS,GAGtBd,CACX,EAEOoqE,CACX,CA3DsB,CA2DpB1jC,IAEFtqD,GAAkBguF,GAAgB,CAC9BzuE,MAAM,EACNgmC,aAAa,IAGjB,UCrFI8oC,GAA0B,SAAUxiC,GACpC,SAASwiC,IACLxiC,EAAkBt5E,MAAMlI,KAAM+H,UAClC,CAQA,OANKy5E,IAAoBwiC,EAAuBj5G,UAAYy2E,GAC5DwiC,EAAuBhgH,UAAY6G,OAAOS,OAAQk2E,GAAqBA,EAAkBx9E,WACzFggH,EAAuBhgH,UAAUqH,YAAc24G,EAE/CA,EAAuBhgH,UAAUi9E,WAAa,WAAwB,EAE/D+iC,CACX,CAZ8B,CAY5BxiC,IAEF,MCdIyiC,GAAoB,SAAU/jC,GAC9B,SAAS+jC,IACL/jC,EAAYh4E,MAAMlI,KAAM+H,UAC5B,CAQA,OANKm4E,IAAc+jC,EAAiBl5G,UAAYm1E,GAChD+jC,EAAiBjgH,UAAY6G,OAAOS,OAAQ40E,GAAeA,EAAYl8E,WACvEigH,EAAiBjgH,UAAUqH,YAAc44G,EAEzCA,EAAiBjgH,UAAUi9E,WAAa,WAAwB,EAEzDgjC,CACX,CAZwB,CAYtB/jC,IAEF,MCVIgkC,GAAkB,SAAUP,GAC5B,SAASO,IACLP,EAAez7G,MAAMlI,KAAM+H,UAC/B,CAiCA,OA/BK47G,IAAiBO,EAAen5G,UAAY44G,GACjDO,EAAelgH,UAAY6G,OAAOS,OAAQq4G,GAAkBA,EAAe3/G,WAC3EkgH,EAAelgH,UAAUqH,YAAc64G,EAEvCA,EAAelgH,UAAUi7E,cAAgB,SAAwBvvB,EAAYgrB,EAAe7C,EAAUsI,GAClG,IAEIwB,EACAvB,EACA7mC,EAJAg/B,EAAYv4E,KAAKsV,QAAQijE,UACzB9hF,GAASikF,EAAcjrB,MAAQ,CAAC,GAAGh5D,MAkBvC,OAbI8hF,GAAaV,EAAW,GAAKsI,IAC7BC,EAAcD,EAAYzwB,WAAWh1C,MAAM,GAC3CinE,EAAkBxB,GAGlB1pF,IAAUi8E,IACVn5B,EAAU,IAAIyqE,GAAuBt0D,EAAYgrB,EAAe7C,EAAU8J,EAAiBvB,IACnF9qE,QAAQ+kC,QAAS,GAEzBqV,EAAWtgD,KAAKsgD,EAAW,IAC3BnW,EAAU,IAAI0qE,GAAiBv0D,EAAYgrB,EAAe7C,EAAU8J,EAAiBvB,IAGlF7mC,CACX,EAEA2qE,EAAelgH,UAAUg7E,oBAAsB,SAA8Bj5B,GACzE,OAAOA,EAAOo5B,eAAiB73C,EACnC,EAEO48E,CACX,CArCsB,CAqCpBP,IAEF,MCzCIQ,GAAgB,SAAUpC,GAC1B,SAASoC,EAAahnH,EAAOmY,GACzBysG,EAAa/+G,KAAKhD,KAAM7C,EAAO,KAAMmY,EACzC,CAMA,OAJKysG,IAAeoC,EAAap5G,UAAYg3G,GAC7CoC,EAAangH,UAAY6G,OAAOS,OAAQy2G,GAAgBA,EAAa/9G,WACrEmgH,EAAangH,UAAUqH,YAAc84G,EAE9BA,CACX,CAVoB,CAUlBpC,IAEFpsF,GAAkBwuF,GAAc,CAC5B79D,QAAS,CACL4D,SAAU,QAEd8H,OAAQ,CACJhlB,SAAU,MAIlB,UCnBIo3E,GAAsB,SAAU7gE,GAChC,SAAS6gE,EAAmB9uG,GACxBiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKwH,QAAU8N,EAAQ07C,IAAM6yB,GAAiBr8E,EAClD,CAiCA,OA/BK+7C,IAAe6gE,EAAmBr5G,UAAYw4C,GACnD6gE,EAAmBpgH,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WAC3EogH,EAAmBpgH,UAAUqH,YAAc+4G,EAE3CA,EAAmBpgH,UAAUy/C,OAAS,SAAiBxW,GACnD,IACI33B,EADMtV,KACQsV,QACd1hB,EAFMoM,KAESpM,SACfmwF,EAAMzuE,EAAQyuE,IACdr8D,EAAUpS,EAAQoS,QAClBgyB,EAAQ9lD,EAASwG,OACjB4pF,EAAQtqC,EAAQqqC,EAAOr8D,GAAWgyB,EAAQ,GAC1C2yB,EAAYp/B,EAAOpb,MAAQmyD,EAC3BnyD,EAAQob,EAAOT,WAAa6/B,GAAa0X,EAAM,GAEnD/jF,KAAKwH,QAAQ5T,GAAU,SAAUwa,GAC7B,IAAIi2G,EAAap3E,EAAOpmB,QACxBw9F,EAAW73E,WAAa3a,EACxBwyF,EAAWxyF,MAAQw6C,EAEfj+D,EAAM6+B,SACNo3E,EAAWv+E,OAAS13B,EAAM6+B,OAAOnH,QAGrC13B,EAAMq1C,OAAO4gE,GACbj2G,EAAM6+B,OAASo3E,EAEfxyF,GAASw6C,EAAaA,EAAY3kD,CACtC,GACJ,EAEO08F,CACX,CAvC0B,CAuCxB7gE,IAEF5tB,GAAkByuF,GAAoB,CAClCrgC,IAAK,EACLr8D,QAAS,IAGb,UClDI48F,GAAoB,SAAU/gE,GAC9B,SAAS+gE,IACL/gE,EAAar7C,MAAMlI,KAAM+H,UAC7B,CAuBA,OArBKw7C,IAAe+gE,EAAiBv5G,UAAYw4C,GACjD+gE,EAAiBtgH,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACzEsgH,EAAiBtgH,UAAUqH,YAAci5G,EAEzCA,EAAiBtgH,UAAUy/C,OAAS,SAAiBxW,GACjD,IACIihB,EADMluD,KACQsV,QAAQ44C,QACtBt6D,EAFMoM,KAESpM,SACfswD,EAAgBtwD,EAASwG,OACzB0xB,EAAQoiC,EAAUhK,EAAgB,EAAI,EACtCtB,EAAOsL,GAAW,EAAI,EAE1BluD,KAAKiwB,IAAM,IAAIoa,GAEf,IAAK,IAAI3+B,EAAIogB,EAAOpgB,GAAK,GAAKA,EAAIw4C,EAAex4C,GAAKk3C,EAAM,CACxD,IAAI2hE,EAAc3wH,EAAS8X,GAAGuhC,OAC9Bs3E,EAAY/3E,WAAaS,EAAOT,WAChC+3E,EAAY1yF,MAAQob,EAAOpb,KAC/B,CACJ,EAEOyyF,CACX,CA3BwB,CA2BtB/gE,IAEF,MCvBIihE,GAAiB,SAAUpgC,GAC3B,SAASogC,IACLpgC,EAASl8E,MAAMlI,KAAM+H,UACzB,CA0CA,OAxCKq8E,IAAWogC,EAAcz5G,UAAYq5E,GAC1CogC,EAAcxgH,UAAY6G,OAAOS,OAAQ84E,GAAYA,EAASpgF,WAC9DwgH,EAAcxgH,UAAUqH,YAAcm5G,EAEtCA,EAAcxgH,UAAU8zE,UAAY,WAChC,OAAOqsC,EACX,EAEAK,EAAcxgH,UAAUqgF,YAAc,WAClC,OAAO+/B,EACX,EAEAI,EAAcxgH,UAAUsgF,UAAY,WAChC,OAAOggC,EACX,EAEAE,EAAcxgH,UAAU22E,aAAe,SAAuBxD,EAAcjT,GACxE,OAAOiT,EAAa1hB,QAAQyO,EAChC,EAEAsgD,EAAcxgH,UAAU62E,UAAY,SAAoBF,EAAcC,GAClE,IAAI7iB,EAAO4iB,EAAa9zD,QACpBb,EAAI20D,EAAax1C,OAAOnf,EAK5B,OAHA+xC,EAAKjyB,OAAS9f,EAAI40D,EAAUrwC,GAC5BwtB,EAAKxrB,YAAcvmB,EAAI40D,EAAUnwC,GAE1BstB,CACX,EAEAysD,EAAcxgH,UAAUg3E,YAAc,SAAsB91C,EAAO21C,GAC/D31C,EAAM+H,OAAS4tC,EACf31C,EAAMue,QACV,EAEA+gE,EAAcxgH,UAAUugD,gBAAkB,WACtCvkD,KAAKsV,QAAQla,UAAU+pC,OAASnlC,KAAKiwB,IAAI+b,SAAS7G,SAClDi/C,EAASpgF,UAAUugD,gBAAgBvhD,KAAKhD,KAC5C,EAEOwkH,CACX,CA9CqB,CA8CnBpgC,IAEFogC,GAAcxgH,UAAUy/C,OAASyzB,GAAAA,UAAAA,OAEjCvhD,GAAkB6uF,GAAe,CAC7BtvE,MAAM,EACNgmC,aAAa,EACb9/E,UAAW,CACPjI,KAAM,SAId,UClDIsxH,GAAiB,SAAUjC,GAC3B,SAASiC,IACLjC,EAAkBt6G,MAAMlI,KAAM+H,UAClC,CA4IA,OA1IKy6G,IAAoBiC,EAAc15G,UAAYy3G,GACnDiC,EAAczgH,UAAY6G,OAAOS,OAAQk3G,GAAqBA,EAAkBx+G,WAChFygH,EAAczgH,UAAUqH,YAAco5G,EAEtCA,EAAczgH,UAAUy+G,gBAAkB,WACtC,IAAItrC,EAAe,IAAI5L,GAAkBvrE,KAAKsV,QAAQ6hE,aAAcn3E,KAAKgkD,cAEzEhkD,KAAK4sE,UAAYuK,EACjBn3E,KAAKm3E,aAAeA,EACpBn3E,KAAKgtF,WAAW7V,GAChBn3E,KAAKu7F,sBACLv7F,KAAKw7F,0BACT,EAEAipB,EAAczgH,UAAU4+G,iBAAmB,SAA2B9rC,GAelE,OAdI92E,KAAK0kH,eACL39F,GAAW+vD,EAAU,CACjB9gB,eAAgB,CAAE7iE,KAAMkwB,GACxB0yC,eAAgB,CAAE5iE,KAAMkwB,KAI5BrjB,KAAK2kH,eACL59F,GAAW+vD,EAAU,CACjBrP,kBAAkB,EAClBzV,OAAQ,CAAE7wC,OAAQ,QAInB4F,GAAW+vD,EAAU92E,KAAKsV,QAAQkpD,UAC7C,EAEAimD,EAAczgH,UAAUu3F,oBAAsB,WAE1CL,GAAAA,UAAAA,oBAAAA,KAAuDl7F,KAAMA,KAAK8vF,MACtE,EAEA20B,EAAczgH,UAAUw3F,yBAA2B,WAC/CN,GAAAA,UAAAA,yBAAAA,KAA4Dl7F,KAAMA,KAAK8vF,MAC3E,EAEA20B,EAAczgH,UAAUi5F,aAAe,SAAuBviB,GAE1D,OAAOA,CACX,EAEA+pC,EAAczgH,UAAUy3F,aAAe,WACnC,IAAI11C,EAAS/lD,KAAK6xF,oBAAoB7xF,KAAK+lD,QACvCsP,EAAOr1D,KAAK8vF,MAAM,GAEtB9vF,KAAKg8F,gBACD3N,GAAmBtoC,EAAQ,CAAE8tB,KAC7Bxe,GAGJr1D,KAAKy8F,gBACDpO,GAAmBtoC,EAAQ,CAAEguB,KAC7B1e,GAGJr1D,KAAKk8F,eACD7N,GAAmBtoC,EAAQ,CAAE+tB,KAC7Bze,EAER,EAEAovD,EAAczgH,UAAU4gH,aAAe,SAAuB7+D,GAC1D,IAAIzwC,EAAU,CAAEywC,OAAQA,GACpBg4C,EAAch4C,EAAO,GACzB,GAAIg4C,EAAa,CACb,IAAIge,EAAiB/7G,KAAK6xF,oBAAoB9rC,GAC1CqyB,EAAQ2lB,EAAY3lB,MACxB9iE,EAAQijE,UAAYH,GAAS2jC,EAAe3hH,OAAS,EACrDkb,EAAQ2iE,aAAeG,GAAwB,SAAfA,EAAMjlF,MAAmB4oH,EAAe3hH,OAAS,EAE7Ekb,EAAQ2iE,eACRj4E,KAAK2kH,eAAgB,EAE7B,CAEA,OAAOrvG,CACX,EAEAmvG,EAAczgH,UAAUg4F,gBAAkB,SAA0Bj2C,EAAQsP,GACxE,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAIokG,EAAY,IAAI0lB,GAAelkH,KAAMA,KAAK4kH,aAAa7+D,IAC3D/lD,KAAKktF,YAAYsR,EAAWnpC,EAH5B,CAIJ,EAEAovD,EAAczgH,UAAUy4F,gBAAkB,SAA0B12C,EAAQsP,GACxE,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAImkG,EAAY,IAAIolB,GAAe3jH,KAAMA,KAAK4kH,aAAa7+D,IAC3D/lD,KAAKktF,YAAYqR,EAAWlpC,EAH5B,CAIJ,EAEAovD,EAAczgH,UAAUk4F,eAAiB,SAAyBn2C,EAAQsP,GACtE,GAAsB,IAAlBtP,EAAO3rD,OAAX,CAIA,IAAI2jG,EAAch4C,EAAO,GACrBzwC,EAAUtV,KAAK4kH,aAAa7+D,GAChCzwC,EAAQyuE,IAAMga,EAAYha,IAC1BzuE,EAAQoS,QAAUq2E,EAAYr2E,QAE9B,IAAI02E,EAAW,IAAIomB,GAAcxkH,KAAMsV,GACvCtV,KAAKktF,YAAYkR,EAAU/oC,GAE3Br1D,KAAK0kH,eAAgB,CAVrB,CAWJ,EAEAD,EAAczgH,UAAUozE,mBAAqB,WACzC,OAAOp3E,KAAKm3E,YAChB,EAEAstC,EAAczgH,UAAUgzF,eAAiB,SAAyBjmC,EAAO/9D,EAAGwsG,GACxE,IAAI3hB,EAAS9sB,EAAM0uC,kBAAkBzsG,GACjCkyC,EAAQ,IAAID,GAAM44C,EAAO93D,EAAG83D,EAAO73D,GACnCigC,EAAWjmD,KAAKm3E,aAAarX,YAAY56B,GACzC/nC,EAAQ6C,KAAKw+D,UAAUiK,SAASvjC,GAEnB,OAAb+gB,GAA+B,OAAV9oD,GACrB4zD,EAAMhnC,QAAQy1E,EAAW,CACrBhsG,QAAS46B,GAAap7B,GACtBizD,SAAUA,EACV9oD,MAAOA,GAGnB,EAEAsnH,EAAczgH,UAAU2rF,iBAAmB,WAA8B,EAElE80B,CACX,CAhJqB,CAgJnBjC,IAEFz7F,GAAW09F,GAAczgH,UAAW+yF,GAAqB,CACrD7J,YAAagO,GAAAA,UAAAA,YACb8B,gBAAiB9B,GAAAA,UAAAA,gBACjBmC,mBAAoBnC,GAAAA,UAAAA,qBAGxBvlE,GAAkB8uF,GAAe,CAC7BttC,aAAc,CACVtZ,WAAY,IAEhBW,UAAW,CAAC,IAGhB,UCvKIqmD,GAAiB,SAAUthE,GAC3B,SAASshE,EAAc1nH,EAAOmY,EAASupG,GACnCt7D,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAK7C,MAAQA,EACb6C,KAAKsV,QAAQhb,MAAQukH,EAAevkH,KACxC,CAiGA,OA/FKipD,IAAeshE,EAAc95G,UAAYw4C,GAC9CshE,EAAc7gH,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACtE6gH,EAAc7gH,UAAUqH,YAAcw5G,EAEtCA,EAAc7gH,UAAUy/C,OAAS,SAAiBqhE,GAC9C,IAAIv5E,EAASvrC,KAAKurC,OACd2jB,EAAQlvD,KAAKpM,SAAS,GAE1BoM,KAAKiwB,IAAM,IAAIoa,GAAIkB,EAAO,GAAGxlB,EAAGwlB,EAAO,GAAGvlB,EAAGulB,EAAO,GAAGxlB,EAAGwlB,EAAO,GAAGvlB,GAEhEkpC,GACAA,EAAMzL,OAAO,IAAIpZ,GAAIy6E,EAASx6E,GAAIiB,EAAO,GAAGvlB,EAAG8+F,EAASt6E,GAAIe,EAAO,GAAGvlB,GAE9E,EAEA6+F,EAAc7gH,UAAUogD,aAAe,WACnC,IAGIK,EAHAjjB,EAASxhC,KAETsV,EAAUtV,KAAKsV,QAGnBiuC,EAAav/C,UAAUogD,aAAaphD,KAAKhD,OAGrCykD,EADAnvC,EAAQmvC,OACCnvC,EAAQmvC,OAAO,CACpBwB,SAAUjmD,KAAKimD,SACfD,SAAUhmD,KAAKgmD,SACf7oD,MAAO6C,KAAK7C,MACZ4oD,OAAQ/lD,KAAK+lD,OACbG,WAAYlmD,KAAKkmD,WACjB3a,OAAQvrC,KAAKurC,OACbj2B,QAASA,EACTyuC,OAAQ/jD,KAAK4jD,YACbQ,aAAc,WAAc,OAAO5iB,EAAOujF,YAAc,IAGnD/kH,KAAK+kH,eAId/kH,KAAKykD,OAAO54B,OAAO44B,EAE3B,EAEAogE,EAAc7gH,UAAU+gH,WAAa,WACjC,IAAIzvG,EAAUtV,KAAKsV,QACfuxC,EAASvxC,EAAQuxC,OAarB,OAZW1G,GAAAA,WAAqBngD,KAAKurC,OAAQ,CACzCwK,KAAM,CACFvnB,MAAOlZ,EAAQkZ,MACfgnB,QAASlgC,EAAQkgC,SAErBjwB,OAAQ,CACJiJ,MAAOq4B,EAAOr4B,MACdgnB,QAASqR,EAAOrR,QAChBhhD,MAAOqyD,EAAOryD,SAEnB+5C,OAGP,EAEAs2E,EAAc7gH,UAAUyhD,gBAAkB,SAA0BhvD,GAChE,OAAO0pD,GAAAA,WAAqBngD,KAAKurC,OAAQ90C,EAC7C,EAEAouH,EAAc7gH,UAAUk5E,gBAAkB,WACtC,OAAOl9E,KAAKykD,OAAO7wD,SAAS,EAChC,EAEAixH,EAAc7gH,UAAU8hD,oBAAsB,WAC1C,IAAIzgC,EAAO86B,GAAAA,WAAqBngD,KAAKurC,QAAQgD,QAE7C,MAAO,CACHj5B,QAAStV,KAAKsV,QACd+P,KAAMA,EAEd,EAEAw/F,EAAc7gH,UAAUo5E,cAAgB,WACpC,IAAIntD,EAAMjwB,KAAKiwB,IACf,MAAO,CACHiV,MAAO,IAAID,GAAMhV,EAAIkV,SAASpf,EAAGkK,EAAIsa,IACrC4B,MAAO,CACHoxC,WAAY,SACZ5yB,SAAU,OAGtB,EAEAk6D,EAAc7gH,UAAUy4E,YAAc,SAAsBt7D,GAExD,OADYnhB,KACCi6E,MAAM4B,iBADP77E,KAC+BmhB,EAC/C,EAEO0jG,CACX,CAxGqB,CAwGnBthE,IAEF5tB,GAAkBkvF,GAAe,CAC7Br2F,MAAO3J,EACPgiC,OAAQ,CACJryD,MAAO,KAIfuyB,GAAW89F,GAAc7gH,UAAW83E,IAEpC,UChHIkpC,GAAe,SAAUzhE,GACzB,SAASyhE,EAAY9vD,EAAU5/C,GAC3BiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKk1D,SAAWA,EAChBl1D,KAAKurC,OAAS,GACdvrC,KAAKgyD,OAAS,GACdhyD,KAAKq+G,YAAc,GACnBr+G,KAAK5G,QACT,CAmPA,OAjPKmqD,IAAeyhE,EAAYj6G,UAAYw4C,GAC5CyhE,EAAYhhH,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACpEghH,EAAYhhH,UAAUqH,YAAc25G,EAEpCA,EAAYhhH,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GACvE,OAAOnhB,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EAAO+jB,EAAM/nC,MACtD,EAEA6nH,EAAYhhH,UAAU5K,OAAS,WAC3B,IAAIooC,EAASxhC,KAGTsV,EADMtV,KACQsV,QACdipG,EAFMv+G,KAEak1D,SAAS5/C,QAAQipG,kBAAoC,IAAjBA,IAA0BA,EAAe,IACpG,IAAIx4D,EAASzwC,EAAQywC,OAAO,GACxB9uC,EAAO8uC,EAAO9uC,KAElB,GAAKA,EAQL,IAJA,IAAIm0C,EAAQ+iC,GAAapoC,GACrB3oC,EAAQguC,EAAMhuC,MACdmuB,EAAS6f,EAAM7f,OAEV7/B,EAAI,EAAGA,EAAI6/B,EAAOnxC,OAAQsR,IAAK,CACpC,IAAI87C,EAAYjc,EAAO7/B,GAEvB,GAAK87C,EAAL,CAIA,IAAIh/B,EAASg/B,EAAUh/B,OAElBpC,GAAW2/B,EAAOv3B,SACnBu3B,EAAOv3B,MAAQhG,EAAOgG,OAAS+vF,EAAa7yG,EAAI6yG,EAAankH,SAGjEouB,EAASzB,GAAW,CAChBzsB,MAAOoR,EACPuuE,MAAOz4C,EACPukB,OAAQA,EACRC,SAAU/uC,EAAKvL,GACfw6C,WAAYsB,EAAUrqD,MAAQigB,GAC/BoL,EAAQ,CAAEz0B,QAASyzD,EAAUzzD,UAEhC,IAAIoJ,EAAQqqD,EAAUioB,YAAYtyE,MAC9Bo8C,EAAU/X,EAAOy9C,cAAc9hF,EAAOqrB,GACtC0mC,EAAQ1tB,EAAOklC,YAAYvpE,EAAOqrB,GAElC+wB,GAAW2V,GACX3V,EAAQ1tB,OAAOqjC,EArBnB,CAuBJ,CACJ,EAEA81D,EAAYhhH,UAAU46G,mBAAqB,SAA6BtpG,EAASnY,EAAOqrB,GACpF,IAAIu9B,EAASv9B,EAAOu9B,OAEpB6wB,GAAYthE,EAAS,CACjBnY,MAAOA,EACP4oD,OAAQA,EACRC,SAAUx9B,EAAOw9B,SACjB1rD,MAAOkuB,EAAOluB,OACf,CAAEw8E,SAAU/wB,EAAOq0B,UAAWpD,SAAU,CAAE,OAAQ,UAAW,WAAY,SAAU,WAC1F,EAEAguC,EAAYhhH,UAAUi7E,cAAgB,SAAwB9hF,EAAOqrB,GACjE,IAAIgvD,EAAgBzwD,GAAW,CAAC,EAAGyB,EAAOu9B,QAK1C,GAJA/lD,KAAK4+G,mBAAmBpnC,EAAer6E,EAAOqrB,GAE9CxoB,KAAKk+G,iBAAiB/gH,EAAOq6E,EAAehvD,IAErB,IAAnBA,EAAOz0B,QAAmB,CAE1B,IAAIwlD,EAAU,IAAIsrE,GAAc1nH,EAAOq6E,EAAehvD,GAMtD,OALA3d,OAAOW,OAAO+tC,EAAS/wB,GAEvBxoB,KAAK6rB,OAAO0tB,GACZv5C,KAAKurC,OAAOn8B,KAAKmqC,GAEVA,CACX,CACJ,EAEAyrE,EAAYhhH,UAAU0iE,YAAc,SAAsBvpE,EAAOqrB,GAC7D,IAAIu9B,EAASv9B,EAAOu9B,OAChBC,EAAWx9B,EAAOw9B,SAClBgM,EAASjrC,GAAW,CAAC,EAAG/mB,KAAKsV,QAAQ08C,OAAQjM,EAAOiM,QACpD94D,EAAOiE,EAEX,GAAI60D,EAAOj+D,QAAS,CAChB,IAAI8hE,EAAgBztC,GAAY4pC,GAC5B/6C,EAAO,CACP+uC,SAAUA,EACV7oD,MAAOA,EACP+oD,WAAY19B,EAAO09B,WACnBD,SAAUz9B,EAAOy9B,SACjBF,OAAQA,GAER8P,EACA38D,EAAO28D,EAAc5+C,GACd+6C,EAAO7wC,SACdjoB,EAAO8G,KAAKk1D,SAASlR,aAAa7iC,OAAOkuC,KAAK2C,EAAO7wC,OAAQjoB,IAG5D84D,EAAOxjC,QACRwjC,EAAOxjC,MAAQyuF,GAAcl3D,EAAOv3B,OAC/BwjC,EAAO7K,aACR6K,EAAO7K,WAAapB,EAAOv3B,QAInCxuB,KAAK4+G,mBAAmB5sD,EAAQ70D,EAAOqrB,GACvC,IAAIw6D,EAAU,IAAIt2B,GAAQxzD,EAAM6tB,GAAW,CACvCggC,OAAQiL,EAAOnV,UAChBmV,GAAS/6C,GAIZ,OAFAjX,KAAKgyD,OAAO5iD,KAAK4zE,GAEVA,CACX,CACJ,EAEAgiC,EAAYhhH,UAAUihH,aAAe,WAIjC,IAHA,IAAIjzD,EAAShyD,KAAKgyD,OACd3mB,EAAU,CAAEvjB,KAAM,EAAGF,MAAO,GAEvBlc,EAAI,EAAGA,EAAIsmD,EAAO53D,OAAQsR,IAAK,CACpC,IACIygC,EADQ6lB,EAAOtmD,GACD4J,QAAQ62B,MAC1B,GAAIA,IAAU3oB,EAAQ,CAClB,IAAIhvB,EAAQw9D,EAAOtmD,GAAGukB,IAAIz7B,QAEtB23C,IAAUloB,EACVonB,EAAQvjB,KAAOhH,KAAK0K,IAAI6f,EAAQvjB,KAAMtzB,GAEtC62C,EAAQzjB,MAAQ9G,KAAK0K,IAAI6f,EAAQzjB,MAAOpzB,EAEhD,CACJ,CAEA,OAAO62C,CACX,EAEA25E,EAAYhhH,UAAUkhH,mBAAqB,SAA6Bj1F,EAAKz7B,EAAO2wH,GAQhF,IAPA,IACI7vG,EADMtV,KACQsV,QACdmQ,EAFMzlB,KAESurC,OACfmO,EAAQj0B,EAASrrB,OACjBgrH,EAAe3/F,EAAS,GACxB4/F,EAAaD,EAER3wG,EAAM,EAAGA,EAAMgR,EAASrrB,OAAQqa,IACjCgR,EAAShR,GAAKyxC,WAAam/D,EAAWn/D,aACtCm/D,EAAa5/F,EAAShR,IAQ9B,IAJA,IAAI6wG,EAAiBF,EAAal/D,WAAam/D,EAAWn/D,WAAc1xD,EACpE+wH,GAAkB/wH,EAAQ8wH,GAAiB,EAC3CE,EAAiB,EAEZ1tD,EAAQ,EAAGA,EAAQpe,EAAOoe,IAAS,CACxC,IAAI5R,EAAazgC,EAASqyC,GAAO5R,WAC7Bu/D,EAAchgG,EAASqyC,EAAQ,GAC/B4tD,EAAkBD,EAAcA,EAAYv/D,WAAaA,EACzD3a,EAAS9lB,EAASqyC,GAAOvsB,OAAS,GAClC92C,EAAU6gB,EAAQqwG,cAAkBR,EAAcj/D,EAAei/D,EAAczrE,EAC/Ep0B,OAAU,EAQdA,EAASoJ,GAHLpJ,EAHC4gC,GAGS1xD,EAAQ8wH,GAAiBI,EAAiBx/D,IAAe,EAF1Dw/D,EAAiB,EAAIlxH,EAAQ,EAKd,EAAGA,GAE/B+2C,EAAOn8B,KAAK,IAAI68B,GAAWhc,EAAIqa,GAAKi7E,EAAgBt1F,EAAIsa,GAAKi7E,IAC7Dj6E,EAAOn8B,KAAK,IAAI68B,GAAWhc,EAAIqa,GAAK91C,EAAQ+wH,EAAgBt1F,EAAIsa,GAAKi7E,IACrEj6E,EAAOn8B,KAAK,IAAI68B,GAAWhc,EAAIqa,GAAK91C,EAAQ8wB,EAAQ2K,EAAIsa,GAAK91C,EAAS+wH,IACtEj6E,EAAOn8B,KAAK,IAAI68B,GAAWhc,EAAIqa,GAAKhlB,EAAQ2K,EAAIsa,GAAK91C,EAAS+wH,IAE9DD,EAAiBjgG,EACjBkgG,GAAkB/wH,EAAS6gB,EAAQswG,eACnCN,EAAgB52F,GAAWl6B,EAAQ,EAAI8wB,EAAQ,EAAG9wB,EACtD,CACJ,EAEAwwH,EAAYhhH,UAAU6hH,oBAAsB,SAA8B51F,EAAKz7B,EAAO2wH,GAYlF,IAXA,IACI7vG,EADMtV,KACQsV,QACdmQ,EAFMzlB,KAESurC,OACfmO,EAAQj0B,EAASrrB,OACjB0rH,EAAkBxwG,EAAQywG,WAAa,EACvCA,EAAYD,EAAkBxwG,EAAQywG,UAAYvxH,EAAQA,EAC1D+wH,EAAiBO,EAAkB,GAAKtxH,EAAQA,EAAQ8gB,EAAQywG,WAAa,EAE7EC,IADeF,EAAkBtxH,EAAQA,EAAyB,EAAjB+wH,GACnBQ,GAAa,EAC3CP,EAAiB,EAEZ/wG,EAAM,EAAGA,EAAMilC,EAAOjlC,IAAO,CAClC,IAAI82B,EAAS9lB,EAAShR,GAAK82B,OAAS,GAChC2a,EAAazgC,EAAShR,GAAKyxC,WAC3B5gC,EAAUhQ,EAAQqwG,cAAkBK,EAAc9/D,EAAe8/D,EAActsE,EAC/EjlD,EAAU6gB,EAAQqwG,cAAkBR,EAAcj/D,EAAei/D,EAAczrE,EAEnFnO,EAAOn8B,KAAK,IAAI68B,GAAWhc,EAAIqa,GAAKi7E,EAAgBt1F,EAAIsa,GAAKi7E,IAC7Dj6E,EAAOn8B,KAAK,IAAI68B,GAAWhc,EAAIqa,GAAK91C,EAAQ+wH,EAAgBt1F,EAAIsa,GAAKi7E,IACrEj6E,EAAOn8B,KAAK,IAAI68B,GAAWhc,EAAIqa,GAAK91C,EAAQ+wH,EAAiBjgG,EAAQ2K,EAAIsa,GAAK91C,EAAS+wH,IACvFj6E,EAAOn8B,KAAK,IAAI68B,GAAWhc,EAAIqa,GAAKi7E,EAAiBjgG,EAAO2K,EAAIsa,GAAK91C,EAAS+wH,IAC9ED,GAAkBjgG,EAClBkgG,GAAkB/wH,EAAS6gB,EAAQswG,cACvC,CACJ,EAEAZ,EAAYhhH,UAAUy/C,OAAS,SAAiBqhE,GAC5C,IAAIv5E,EAASvrC,KAAKurC,OACdmO,EAAQnO,EAAOnxC,OAEnB,GAAKs/C,EAAL,CAIA,IAAIpkC,EAAUtV,KAAKsV,QACf2a,EAAM60F,EAASj+F,QAAQykB,MAAMtrC,KAAKilH,gBAClCE,EAAcl1F,EAAIx7B,SAAW6gB,EAAQswG,gBAAkBlsE,EAAQ,GAC/DllD,EAAQy7B,EAAIz7B,QAEZ8gB,EAAQ2wG,aACRjmH,KAAKklH,mBAAmBj1F,EAAKz7B,EAAO2wH,GAEpCnlH,KAAK6lH,oBAAoB51F,EAAKz7B,EAAO2wH,GAGzC,IAAK,IAAI1wG,EAAM,EAAGA,EAAMilC,EAAOjlC,IAC3B82B,EAAO92B,GAAKgvC,OAAOqhE,EAdvB,CAgBJ,EAEOE,CACX,CA7PmB,CA6PjBzhE,IAEF5tB,GAAkBqvF,GAAa,CAC3Be,UAAW,GACXvxH,MAAO,IACPyxH,cAAc,EACdN,eAAe,EACfC,eAAgB,EAChB5zD,OAAQ,CACJj+D,SAAS,EACTo4C,MAAO3oB,EACPq5B,SAAUr5B,EACVohC,OAAQ,KAIhB79B,GAAWi+F,GAAYhhH,UAAWi6G,IAElC,UCrRIiI,GAAkB,SAAU72B,GAC5B,SAAS62B,IACL72B,EAAannF,MAAMlI,KAAM+H,UAC7B,CA8BA,OA5BKsnF,IAAe62B,EAAen7G,UAAYskF,GAC/C62B,EAAeliH,UAAY6G,OAAOS,OAAQ+jF,GAAgBA,EAAarrF,WACvEkiH,EAAeliH,UAAUqH,YAAc66G,EAEvCA,EAAeliH,UAAU5K,OAAS,WAC9B4G,KAAKmmH,kBAAkBnmH,KAAK+lD,OAChC,EAEAmgE,EAAeliH,UAAUmiH,kBAAoB,SAA4BpgE,GACrE,IAAIg4C,EAAch4C,EAAO,GACrBqgE,EAAc,IAAIpB,GAAYhlH,KAAM,CACpC+lD,OAAQA,EACRwpC,OAAQvvF,KAAKsV,QAAQi6E,OACrBw2B,UAAWhoB,EAAYgoB,UACvBJ,cAAe5nB,EAAY4nB,cAC3BM,aAAcloB,EAAYkoB,aAC1BL,eAAgB7nB,EAAY6nB,eAC5BpgE,UAAWu4C,EAAYv4C,YAG3BxlD,KAAKktF,YAAYk5B,EACrB,EAEAF,EAAeliH,UAAUkpF,YAAc,SAAsBn8B,EAAOsE,GAChEg6B,EAAarrF,UAAUkpF,YAAYlqF,KAAKhD,KAAM+wD,EAAOsE,GACrDxpC,GAAO7rB,KAAKsV,QAAQi6E,OAAOruC,MAAO6P,EAAMstD,YAC5C,EAEO6H,CACX,CAlCsB,CAkCpB72B,IAEF,MCtBA,GAhBiB,SAAU7gE,EAAO63F,QACF,IAAvBA,IAAgCA,EAAqB,KAE1D,IAAI5iC,EAAYrjD,GAAW5R,GACvBlJ,EAAS,EAAI+gG,EAEjB,OAAO,SAAUlpH,GACb,IAAImpH,EAAM7iC,EAAU7iD,QAChB8W,EAAQ,IAAM4uE,EAAIzlF,EAClBqE,EAAQ5f,EAASnoB,EAGrB,OAFAmpH,EAAIzlF,GAAK/f,KAAK6N,IAAIuW,EAAQwS,EAAOA,GAE1B4uE,EAAIvmF,OACf,CACJ,ECVIwmF,GAAgB,SAAUhjE,GAC1B,SAASgjE,EAAappH,EAAOmY,GACzBiuC,EAAavgD,KAAKhD,MAElBA,KAAKsV,QAAUA,EACftV,KAAKwuB,MAAQlZ,EAAQkZ,OAAS3J,EAC9B7kB,KAAK7C,MAAQA,CACjB,CAoNA,OAlNKomD,IAAegjE,EAAax7G,UAAYw4C,GAC7CgjE,EAAaviH,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACrEuiH,EAAaviH,UAAUqH,YAAck7G,EAErCA,EAAaviH,UAAU5K,OAAS,WACxB4G,KAAKs8E,YAITt8E,KAAKs8E,WAAY,EAEjBt8E,KAAKu8E,eACLv8E,KAAK0mE,cACL1mE,KAAKk8E,aACT,EAEAqqC,EAAaviH,UAAU0iE,YAAc,WACjC,IACI1U,EADUhyD,KAAKsV,QACE08C,OAErB,GAAIA,EAAOj+D,QAAS,CAChB,IAEIyoF,EAFAh1B,EAAYxnD,KAAKwnD,YACjBqO,EAAgBztC,GAAY4pC,GAE5Bw0D,EAAax0D,EAAOxjC,MAGpBguD,EADA3mB,EACYA,EAAcrO,GAEdxnD,KAAKy8E,YAAYzqB,EAAO7wC,QAGnCqlG,IACDA,EAAavJ,GAAcj9G,KAAKwuB,QAGpCxuB,KAAKkvD,MAAQ,IAAIxC,GAAQ8vB,EACrBz1D,GAAW,CACPolB,MAAO3oB,EACPujC,OAAQvjC,EACRloB,OAAQ,CACJwsB,KAAM,EACNF,MAAO,GAEXg9B,OAAQn1B,GAAeuiC,EAAOpN,OAAQ5kD,KAAK+lD,OAAOnB,SAEtDoN,EAAQ,CACJxjC,MAAOg4F,IAEXh/D,GAEJxnD,KAAK6rB,OAAO7rB,KAAKkvD,MACrB,CACJ,EAEAq3D,EAAaviH,UAAUy4E,YAAc,SAAsBt7D,GACvD,OAAOnhB,KAAKi6E,MAAM4B,iBAAiB77E,KAAMmhB,EAC7C,EAEAolG,EAAaviH,UAAUy/C,OAAS,SAAiB9Y,GAC7C3qC,KAAK5G,SAEL,IAAI81D,EAAQlvD,KAAKkvD,MAEjBlvD,KAAKiwB,IAAM0a,EAEPukB,GACAA,EAAMzL,OAAOzjD,KAAK28E,aAGlB38E,KAAK8zD,MACL9zD,KAAK8zD,KAAKrQ,OAAO9Y,GAGrB3qC,KAAK+0B,OAAO0uB,OAAOzjD,KAAK28E,YAC5B,EAEA4pC,EAAaviH,UAAU24E,UAAY,WAC/B,IACIN,EADUr8E,KAAKsV,QACG+mE,QAClBx1B,EAASw1B,EAAQx1B,OACjBnH,EAAO1/C,KAAKiwB,IAAI+b,SAEhBy6E,EADOh3F,GAAe4sD,EAAQlpF,KAAM,UACbsxB,EACvBmiC,EAAcn3B,GAAeo3B,EAAOryD,MAAOiyH,EAAc,EAAI,GAC7DC,EAAkB5lG,KAAKE,MAAM4lC,EAAc,GAE/C,GAAIy1B,EAAQzlF,KAAM,CACd,IAAIuuC,EAASua,EAAKva,SAClBua,EAAK9oD,KAAKpC,MAAQkrD,EAAK9oD,KAAKnC,OAAS4nF,EAAQzlF,KAC7C8oD,EAAKnY,OAAOxhB,EAAIjF,KAAKE,MAAMmkB,EAAOpf,EAAI25B,EAAK9oD,KAAKpC,MAAQ,GACxDkrD,EAAKnY,OAAOvhB,EAAIlF,KAAKE,MAAMmkB,EAAOnf,EAAI05B,EAAK9oD,KAAKnC,OAAS,EAC7D,CAOA,OALAirD,EAAK9oD,KAAKpC,OAASoyD,EACnBlH,EAAK9oD,KAAKnC,QAAUmyD,EACpBlH,EAAKnY,OAAOvhB,GAAK0gG,EAAkB,GACnChnE,EAAKnY,OAAOxhB,GAAK2gG,EAAkB,GAE5Bl6D,GAAU9M,EACrB,EAEA6mE,EAAaviH,UAAU04E,aAAe,WAClC,IAAIpnE,EAAUtV,KAAKsV,QAEfuxC,EADUvxC,EAAQ+mE,QACDx1B,OACjBrR,EAAU/lB,GAAeo3B,EAAOrR,QAASlgC,EAAQkgC,SAErD,MAAO,CACHhnB,MAAOq4B,EAAOr4B,OAASxuB,KAAKwuB,MAC5Bh6B,MAAOqyD,EAAOryD,MACdghD,QAASA,EACT6R,SAAUR,EAAOQ,SAEzB,EAEAk/D,EAAaviH,UAAUu4E,aAAe,WAClC,IAAIjnE,EAAUtV,KAAKsV,QACfugG,EAAgBvgG,EAAQ+mE,QACxBtnD,EAAS,IAAIwyB,GAAa,CAC1Bp0D,KAAMs8B,GAAeomF,EAAc1iH,KAAM,QACzCqB,MAAOqhH,EAAcj/G,KACrBnC,OAAQohH,EAAcj/G,KACtB80C,SAAUmqE,EAAcnqE,SACxByb,WAAYnnD,KAAKwuB,MACjBq4B,OAAQ7mD,KAAK08E,eACb90B,aAAciuD,EAAcjuD,aAC5BpS,QAASx1C,KAAK+lD,OAAOvQ,SAAWlgC,EAAQkgC,QACxCoP,OAAQn1B,GAAena,EAAQsvC,OAAQ5kD,KAAK+lD,OAAOnB,QACnDxpD,UAAWka,EAAQla,UACnBqpD,OAAQnvC,EAAQmvC,QACjB,CACCuB,SAAUhmD,KAAKgmD,SACf7oD,MAAO6C,KAAK7C,MACZ4oD,OAAQ/lD,KAAK+lD,OACbE,SAAUjmD,KAAKimD,WAGnBjmD,KAAK+0B,OAASA,EACd/0B,KAAK6rB,OAAOkJ,EAChB,EAEAwxF,EAAaviH,UAAUyhD,gBAAkB,SAA0BhvD,GAC/D,IAAI6e,EAAUtV,KAAKsV,QACfugG,EAAgB71G,KAAKsV,QAAQkwC,UAAU62B,SAAWr8E,KAAKsV,QAAQ+mE,QAE/D72B,EAAY,IAAI+B,GAAa,CAC7Bp0D,KAAMs8B,GAAeomF,EAAc1iH,KAAM,QACzCqB,MAAOqhH,EAAcj/G,KACrBnC,OAAQohH,EAAcj/G,KACtB80C,SAAUmqE,EAAcnqE,SACxByb,WAAY0uD,EAAcrnF,OAASxuB,KAAKwuB,MACxCq4B,OAAQ7mD,KAAK08E,eACb90B,aAAciuD,EAAcjuD,aAC5BpS,QAASx1C,KAAK+lD,OAAOvQ,SAAWlgC,EAAQkgC,QACxCoP,OAAQn1B,GAAena,EAAQsvC,OAAQ5kD,KAAK+lD,OAAOnB,UAGvDY,EAAU/B,OAAOzjD,KAAK28E,aACtB,IAAIl4B,EAASe,EAAUiC,aAKvB,OAHAhD,EAAOnvC,QAAQygC,KAAOt/C,EAAMs/C,KAC5B0O,EAAOnvC,QAAQiQ,OAAS9uB,EAAM8uB,OAEvBk/B,CACX,EAEA8hE,EAAaviH,UAAUk5E,gBAAkB,WACrC,OAAOl9E,KAAKqjF,UAChB,EAEAkjC,EAAaviH,UAAU8hD,oBAAsB,WACzC,MAAO,CACHxwC,QAAStV,KAAKsV,QACdoqC,KAAM1/C,KAAKiwB,IAAI+b,SACfyY,OAAQzkD,KAAKqjF,WAErB,EAEAkjC,EAAaviH,UAAUo5E,cAAgB,WACnC,IAAIt1D,EAAO9nB,KAAKiwB,IAAIkV,SAASpf,EACzB4B,EAAM3nB,KAAKiwB,IAAIsa,G7K5LN,E6K8Lb,MAAO,CACHrF,MAAO,IAAID,GAAMnd,EAAMH,GACvBwkB,MAAO,CACHoxC,WAAY/5D,EACZmnC,SAAUpnC,GAGtB,EAEAgjG,EAAaviH,UAAUw5E,YAAc,SAAsBvtD,GACvD,OAAOjwB,KAAKiwB,IAAIwb,SAASxb,EAC7B,EAEAs2F,EAAaviH,UAAUy5E,eAAiB,WACpC,EAGJ8oC,EAAaviH,UAAUwjD,UAAY,WAC/B,MAAO,CACHzhC,EAAG/lB,KAAK7C,MAAM4oB,EACdC,EAAGhmB,KAAK7C,MAAM6oB,EACd7oB,MAAO6C,KAAK7C,MAAMA,MAClB6oD,SAAUhmD,KAAKgmD,SACfD,OAAQ/lD,KAAK+lD,OAErB,EAEOwgE,CACX,CA5NoB,CA4NlBhjE,IAEFx8B,GAAWw/F,GAAaviH,UAAW83E,IACnC/0D,GAAWw/F,GAAaviH,UAAWi4E,IAEnCsqC,GAAaviH,UAAU8yE,SAAW,CAC9BuF,QAAS,CACLlpF,KAAM,OACNy0D,aAAc,EACdf,OAAQ,CACJr4B,MAAO,gBAGf6c,QAAS,CAAE1jB,IAAK,GAChBqqC,OAAQ,CACJj+D,SAAS,EACTs3C,QAAS,GAEbmK,QAAS,EACToe,MAAO,CACH1E,MAAO,CAAC,IAIhB,UCnPIy3D,GAAgB,SAAUpjE,GAC1B,SAASojE,EAAazxD,EAAU5/C,GAC5BiuC,EAAavgD,KAAKhD,KAAMsV,GAExBtV,KAAKk1D,SAAWA,EAChBl1D,KAAKgkD,aAAekR,EAASlR,aAC7BhkD,KAAKuoF,cAELvoF,KAAK5G,QACT,CAgOA,OA9NKmqD,IAAeojE,EAAa57G,UAAYw4C,GAC7CojE,EAAa3iH,UAAY6G,OAAOS,OAAQi4C,GAAgBA,EAAav/C,WACrE2iH,EAAa3iH,UAAUqH,YAAcs7G,EAErCA,EAAa3iH,UAAUukF,YAAc,WACjCvoF,KAAKurC,OAAS,GACdvrC,KAAKw3E,cAAgB,GACrBx3E,KAAKm5D,WAAa,CAAExqC,IAAKzK,EAAWsH,IAAKpH,GACzCpkB,KAAKy3E,YAAc,EACvB,EAEAkvC,EAAa3iH,UAAU5K,OAAS,WAC5B4G,KAAK4mH,WACL5mH,KAAK03E,mBAAmB13E,KAAK23E,SAAS53E,KAAKC,MAC/C,EAEA2mH,EAAa3iH,UAAU4iH,SAAW,WAM9B,IALA,IAAIplF,EAASxhC,KAGT+lD,EADM/lD,KACOsV,QAAQywC,OAEhB8xB,EAAW,EAAGA,EAAW9xB,EAAO3rD,OAAQy9E,IAG7C,IAFA,IAAI6C,EAAgB30B,EAAO8xB,GAElB/H,EAAU,EAAGA,EAAU4K,EAAczjE,KAAK7c,OAAQ01E,IAAW,CAClE,IACIL,EADQjuC,EAAOg6C,WAAWd,EAAe7C,EAAU/H,GAC/BL,YACpBtqD,GAAQsqD,EAAYtyE,QAAgC,OAAtBsyE,EAAYtyE,QAC1CqkC,EAAO23B,WAAWxqC,IAAM7N,KAAK6N,IAAI6S,EAAO23B,WAAWxqC,IAAK8gD,EAAYtyE,OACpEqkC,EAAO23B,WAAW3tC,IAAM1K,KAAK0K,IAAIgW,EAAO23B,WAAW3tC,IAAKikD,EAAYtyE,OAE5E,CAER,EAEAwpH,EAAa3iH,UAAU2zE,SAAW,SAAmBx6E,EAAOqrB,GACxD,IAAI0c,EACA/nC,GAASgoB,GAAQhoB,EAAMA,QAA0B,OAAhBA,EAAMA,QACvC+nC,EAAQllC,KAAKg6E,YAAY78E,EAAOqrB,KAE5B3d,OAAOW,OAAO05B,EAAO1c,GAI7BxoB,KAAKurC,OAAOn8B,KAAK81B,EACrB,EAEAyhF,EAAa3iH,UAAUm2E,iBAAmB,SAA2B7kE,EAASnY,EAAOqrB,GACjF,IAAIu9B,EAASv9B,EAAOu9B,OAChB8xB,EAAWrvD,EAAOqvD,SAClBl4E,EAAQ,CAAEm3E,SAAU/wB,EAAOq0B,UAAWpD,SAAU,CAAE,OAAQ,UAAW,UAAW,WAAY,SAAU,WAEtGqD,EAASr6E,KAAKy3E,YAAYI,GACzB1yD,GAAQk1D,KACTr6E,KAAKy3E,YAAYI,GAAYwC,EAASzD,GAAYthE,EAAS,CAAC,EAAG3V,GAAO,IAG1E,IAAIi4E,EAAetiE,EAYnB,OAXI+kE,GAEAzD,GADAgB,EAAe7wD,GAAW,CAAC,EAAGzR,GACJ,CACtBnY,MAAOA,EACP4oD,OAAQA,EACRC,SAAUx9B,EAAOw9B,SACjBr3B,IAAK3uB,KAAKm5D,WAAWxqC,IACrBnD,IAAKxrB,KAAKm5D,WAAW3tC,KACtB7rB,GAGAi4E,CACX,EAEA+uC,EAAa3iH,UAAU8zE,UAAY,WAC/B,OAAOyuC,EACX,EAEAI,EAAa3iH,UAAU4zE,aAAe,SAAuB7xB,EAAQ8xB,GACjE,IAAIviE,EAAUtV,KAAKw3E,cAAcK,GACjC,IAAKviE,EAAS,CACV,IAAIwhE,EAAW92E,KAAK83E,YAAY9zE,UAAU8yE,SAC1C92E,KAAKw3E,cAAcK,GAAYviE,EAAUyR,GAAW,CAAC,EAAG+vD,EAAU,CAC9DuF,QAAS,CACL7mC,QAASuQ,EAAOvQ,SAEpB0wC,QAAS,CACL/kE,OAAQnhB,KAAKsV,QAAQ4wE,QAAQ/kE,QAEjC6wC,OAAQ,CACJ7wC,OAAQnhB,KAAKsV,QAAQ08C,OAAO7wC,SAEjC4kC,EACP,CAEA,OAAOzwC,CACX,EAEAqxG,EAAa3iH,UAAUg2E,YAAc,SAAsB78E,EAAOqrB,GAC9D,IAAIu9B,EAASv9B,EAAOu9B,OAChB6xB,EAAe53E,KAAK43E,aAAa7xB,EAAQv9B,EAAOqvD,UAChDrpD,EAAQhG,EAAOgG,OAASu3B,EAAOv3B,MAInC,GAFAopD,EAAe53E,KAAKm6E,iBAAiBvC,EAAcz6E,EAAOqrB,GAEtDpC,GAAW2/B,EAAOv3B,OAClBA,EAAQopD,EAAappD,WAClB,GAA4B,IAAxBxuB,KAAKm5D,WAAW3tC,IAAW,CAElCgD,EADYq4F,GAAWr4F,EACfwD,CAAM70B,EAAMA,MAAQ6C,KAAKm5D,WAAW3tC,IAChD,CAEA,IAAI0Z,EAAQ,IAAIqhF,GAAappH,EAAOy6E,GAKpC,OAJA1yC,EAAM1W,MAAQA,EAEdxuB,KAAK6rB,OAAOqZ,GAELA,CACX,EAEAyhF,EAAa3iH,UAAUqkF,WAAa,SAAqBtiC,GACrD,IAAI+iC,EAAY/iC,EAAOgjC,MACnBC,EAAYjjC,EAAOkjC,MACnB/zB,EAAWl1D,KAAKk1D,SAChB6zB,EAAQD,EAAY5zB,EAASk0B,WAAWN,GAAa5zB,EAAS1B,MAC9Dy1B,EAAQD,EAAY9zB,EAASm0B,WAAWL,GAAa9zB,EAASzB,MAElE,IAAKs1B,EACD,MAAM,IAAI3oF,MAAM,qCAAuC0oF,GAG3D,IAAKG,EACD,MAAM,IAAI7oF,MAAM,qCAAuC4oF,GAG3D,MAAO,CAAED,MAAOA,EAAOE,MAAOA,EAClC,EAEA09B,EAAa3iH,UAAUy/C,OAAS,SAAiB9Y,GAC7C,IAAInJ,EAASxhC,KAETy6E,EAAcz6E,KAAKurC,OACnBqsB,GAAS53D,KAAKsV,QAAQ4/B,KACtB46B,EAAU,EAGd9vE,KAAK03E,oBAAmB,SAAUv6E,EAAOqrB,GACrC,IAAI0c,EAAQu1C,EAAY3K,KACpBv9E,EAAMivC,EAAO6mD,WAAW7/D,EAAOu9B,QAC/BgjC,EAAQx2F,EAAIw2F,MACZE,EAAQ12F,EAAI02F,MACZ69B,EAAS/9B,EAAMppB,cAAcxiE,EAAM4oB,GACnCghG,EAAS99B,EAAMtpB,cAAcxiE,EAAM6oB,GACnCuvC,EAAQwzB,EAAMtzB,QAAQqxD,EAAQA,EAAQlvD,GACtCpC,EAAQyzB,EAAMxzB,QAAQsxD,EAAQA,EAAQnvD,GAE1C,GAAI1yB,EACA,GAAIqwB,GAASC,EAAO,CAChB,IAAIqlB,EAAYr5C,EAAOq5C,UAAUtlB,EAAOC,GACxCtwB,EAAMue,OAAOo3B,EACjB,MACI31C,EAAMnxC,SAAU,CAG5B,IAEAiM,KAAKiwB,IAAM0a,CACf,EAEAg8E,EAAa3iH,UAAU62E,UAAY,SAAoBtlB,EAAOC,GAC1D,OAAO,IAAInrB,GAAIkrB,EAAMjrB,GAAIkrB,EAAMjrB,GAAIgrB,EAAM/qB,GAAIgrB,EAAM/qB,GACvD,EAEAk8E,EAAa3iH,UAAU0zE,mBAAqB,SAA6BxxE,GAMrE,IALA,IAAIs7B,EAASxhC,KAGT+lD,EADM/lD,KACOsV,QAAQywC,OAEhB8xB,EAAW,EAAGA,EAAW9xB,EAAO3rD,OAAQy9E,IAQ7C,IAPA,IAAI6C,EAAgB30B,EAAO8xB,GACvBzsB,EAAQ5pB,EAAO6mD,WAAW3N,GAC1BqO,EAAQ39B,EAAM29B,MACdE,EAAQ79B,EAAM69B,MACd+9B,EAASj+B,EAAM7nB,sBACf+lD,EAASh+B,EAAM/nB,sBAEV4O,EAAU,EAAGA,EAAU4K,EAAczjE,KAAK7c,OAAQ01E,IAAW,CAClE,IAAIo3C,EAAQ1lF,EAAOg6C,WAAWd,EAAe7C,EAAU/H,GACnD3yE,EAAQ+pH,EAAMz3C,YACdjnD,EAAS0+F,EAAM1+F,OACf2+F,EAASp+B,EAAMhpB,WAAW5iE,EAAM4oB,GAChCqhG,EAASn+B,EAAMlpB,WAAW5iE,EAAM6oB,GAChCqhG,EAAML,EAAOr4F,KAAOw4F,GAAUA,GAAUH,EAAOx7F,IAC/C87F,EAAML,EAAOt4F,KAAOy4F,GAAUA,GAAUH,EAAOz7F,IAE/C67F,GAAOC,GACPphH,EAAS/I,EAAO4pB,GAAW,CACvB+oD,QAASA,EACT/pB,OAAQ20B,EACR7C,SAAUA,EACV7xB,SAAU00B,EAAczjE,KAAK64D,GAC7BmK,MAAOz4C,GACRhZ,GAEX,CAER,EAEAm+F,EAAa3iH,UAAU63E,iBAAmB,SAA2B32C,EAAO/jB,GACxE,IAAIhkB,EAAQ+nC,EAAM/nC,MAClB,OAAO6C,KAAKgkD,aAAa7iC,OAAOkuC,KAAKluC,EAAQhkB,EAAM4oB,EAAG5oB,EAAM6oB,EAAG7oB,EAAMA,MACzE,EAEAwpH,EAAa3iH,UAAUg8E,gBAAkB,WAGrC,IAFA,IAAIz0C,EAASvrC,KAAKurC,OACdnzC,EAAS,GACJqc,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IACnCrc,EAAOgX,MAAMm8B,EAAO92B,IAAQ,CAAC,GAAGsgB,QAEpC,OAAO38B,CACX,EAEOuuH,CACX,CA1OoB,CA0OlBpjE,IACF5tB,GAAkBgxF,GAAc,CAC5B5gE,OAAQ,GACRmgC,QAAS,CACL/kE,OAAQ,iBAEZ6wC,OAAQ,CACJ7wC,OAAQ,OAEZ+zB,MAAM,IAEVnuB,GAAW4/F,GAAa3iH,UAAW,CAC/Bw3E,WAAYtE,GAAAA,UAAAA,aAGhB,UCtPIqwC,GAAmB,SAAUl4B,GAC7B,SAASk4B,IACLl4B,EAAannF,MAAMlI,KAAM+H,UAC7B,CAyRA,OAvRKsnF,IAAek4B,EAAgBx8G,UAAYskF,GAChDk4B,EAAgBvjH,UAAY6G,OAAOS,OAAQ+jF,GAAgBA,EAAarrF,WACxEujH,EAAgBvjH,UAAUqH,YAAck8G,EAExCA,EAAgBvjH,UAAUuuD,WAAa,WACnCvyD,KAAKopF,WAAa,CAAC,EACnBppF,KAAKqpF,WAAa,CAAC,CACvB,EAEAk+B,EAAgBvjH,UAAU5K,OAAS,SAAiB02F,QACjC,IAAVA,IAAmBA,EAAQ9vF,KAAK8vF,OAErC9vF,KAAKwnH,iBACLxnH,KAAKm8G,WAAWrsB,GAChB9vF,KAAKy7F,aAAa3L,GAClB9vF,KAAKynH,kBACT,EAEAF,EAAgBvjH,UAAUwjH,eAAiB,WAKvC,IAJA,IAEIzhE,EAAS/lD,KAAK08F,WAAa18F,KAAK+lD,OAE3Br6C,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAAK,CAUpC,IATA,IAAIgvE,EAAgB30B,EAAOr6C,GACvBuL,EAAOyjE,EAAczjE,MAAQ,GAC7B1kB,EAPKyN,KAOQqoF,WAAW3N,GACxBqO,EAAQx2F,EAAIw2F,MACZE,EAAQ12F,EAAI02F,MAEZy+B,EAAclkF,GAAculD,EAAMlrB,YAAc,IAChD8pD,EAAcnkF,GAAcylD,EAAMprB,YAAc,IAE3Co4C,EAAa,EAAGA,EAAah/F,EAAK7c,OAAQ67G,IAAc,CAC7D,IAAI7qD,EAAQ+jB,GAAAA,QAAAA,UAA+BuL,EAAeu7B,GAAYxmC,YAClE1pD,EAAIqlC,EAAMrlC,EACVC,EAAIolC,EAAMplC,EAET0hG,EAAY1kF,IAAIjd,IACjB2hG,EAAYv+G,IAAI4c,GAGf4hG,EAAY3kF,IAAIhd,IACjB2hG,EAAYx+G,IAAI6c,EAExB,CAEA+iE,EAAMlrB,WAAa6pD,EAAY33G,SAC/Bk5E,EAAMprB,WAAa8pD,EAAY53G,QACnC,CACJ,EAEAw3G,EAAgBvjH,UAAUy3F,aAAe,SAAuB3L,GAK5D,IAJA,IAAItuD,EAASxhC,KAET2xF,EAAe3xF,KAAK0xF,oBAEfhmF,EAAI,EAAGA,EAAIokF,EAAM11F,OAAQsR,IAAK,CACnC,IAAI2pD,EAAOy6B,EAAMpkF,GACbiwF,EAAahK,EAAat8B,EAAK//C,QAAQ3E,MAAQ,YAAc,GACjE6wB,EAAOovD,YAAY+K,GACnB,IAAIogB,EAAiBv6E,EAAOqwD,oBAAoB8J,GAE3CogB,GAILv6E,EAAOomF,mBACHv5B,GAAmB0tB,EAAgB,CAAE1oC,KACrChe,EAER,CACJ,EAEAkyD,EAAgBvjH,UAAU4jH,mBAAqB,SAA6B7hE,EAAQsP,GAChF,IAAItE,EAAQ,IAAI41D,GAAa3mH,KAAM,CAC/B+lD,OAAQA,IAGZ/lD,KAAKktF,YAAYn8B,EAAOsE,EAC5B,EAEAkyD,EAAgBvjH,UAAU4tF,eAAiB,SAAyB7rC,GAChE,IAAIzwC,EAAUtV,KAAKsV,QACfwzE,EAAY/iC,EAAOgjC,MAEnBA,EAAQpgE,GADO,GAAGxgB,OAAOmN,EAAQyzE,QACN,SAASl6D,GAAK,OAAOA,EAAEle,OAASm4E,CAAW,IAAG,GACzEE,EAAYjjC,EAAOkjC,MAEnBA,EAAQtgE,GADO,GAAGxgB,OAAOmN,EAAQ2zE,QACN,SAASp6D,GAAK,OAAOA,EAAEle,OAASq4E,CAAW,IAAG,GAEzE6U,GADQvoF,EAAQw6E,OAAS,CAAE,CAAC,IACJ,GAAGn/E,MAAQ,UAGvC,OAFgBo4E,GAAS,CAAC,GAAG1zB,OAAS4zB,GAAS,CAAC,GAAG5zB,MAAQwoC,CAG/D,EAEA0pB,EAAgBvjH,UAAUqkF,WAAa,SAAqBtiC,GACxD,IAAIgjC,EACAE,EAEA3zE,EAAUtV,KAAKsV,QAEfuyG,EAAe,GAAG1/G,OAAOmN,EAAQyzE,OACjCD,EAAY/iC,EAAOgjC,MAEnBA,EADAD,EACQ++B,EAAa9xF,MAAK,SAAUgV,GAAQ,OAAOA,EAAKp6B,OAASm4E,CAAW,IAEpE++B,EAAa,GAGzB,IAAIC,EAAe,GAAG3/G,OAAOmN,EAAQ2zE,OACjCD,EAAYjjC,EAAOkjC,MAOvB,GALIA,EADAD,EACQ8+B,EAAa/xF,MAAK,SAAUgV,GAAQ,OAAOA,EAAKp6B,OAASq4E,CAAW,IAEpE8+B,EAAa,IAGpB/+B,EACD,MAAM,IAAI3oF,MAAM,qCAAuC0oF,GAG3D,IAAKG,EACD,MAAM,IAAI7oF,MAAM,qCAAuC4oF,GAG3D,MAAO,CAAED,MAAOA,EAAOE,MAAOA,EAClC,EAEAs+B,EAAgBvjH,UAAUyjH,iBAAmB,WAEzC,IADA,IAAInyD,EAAOt1D,KAAKs1D,KACP5pD,EAAI,EAAGA,EAAI4pD,EAAKl7D,OAAQsR,IAC7B4pD,EAAK5pD,GAAG+mD,cAEhB,EAEA80D,EAAgBvjH,UAAUo4G,aAAe,SAAuB9mG,EAASq1C,EAAUywB,GAc/E,IAbA,IAwBIihC,EAxBAvjC,EAAWxjE,EAAQ3E,KACnB2rG,EAAY3xD,EAAW3qD,KAAKqpF,WAAarpF,KAAKopF,WAC9CjhB,EAAct9D,OAAOW,OAAO,CAC5BwuD,kBAAmB,GACpB1kD,EAAS,CACRq1C,SAAUA,EACVuD,QAAUvD,GAAY3qD,KAAKgkD,aAAagN,KAAQ17C,EAAQ44C,QAAU54C,EAAQ44C,QAC1E4L,WAAW,IAEXiuD,EAAgB5/C,EAAYtK,WAAasK,EAAYtK,WAAW,GAAK,KACrE2+C,EAAc,CAAEr0C,EAAYx5C,IAAKw5C,EAAY38C,IAAKu8F,GAClDhiE,EAAS/lD,KAAK+lD,OAET8xB,EAAW,EAAGA,EAAW9xB,EAAO3rD,OAAQy9E,IAAY,CACzD,IAAI6C,EAAgB30B,EAAO8xB,GACvB4kC,EAAiB/hC,EAAc/vB,EAAW,QAAU,SACxD,GAAK8xD,IAAmBt0C,EAAYx3D,MAAwB,IAAdyqE,IAAoBqhC,EAAiB,CAC/E,IAAIC,EAAkBvtC,GAAAA,QAAAA,UAA+BuL,EAAe,GAAGjL,YACvE+sC,EAAYptG,KAAKstG,EAAgB/xD,EAAW,IAAM,MAElD,KACJ,CACJ,CAIA,IAAK,IAAIj/C,EAAI,EAAGA,EAAI8wG,EAAYpiH,OAAQsR,IACpC,GAAI8wG,EAAY9wG,aAAc+L,KAAM,CAChC4kG,GAAe,EACf,KACJ,CAUJ,IAAItxE,EAAO,IANPqjD,GAAiBjmB,EAAYh1E,KAAMwwB,KAAWwkD,EAAYh1E,MAAQkpH,EACvD53C,GAEAhH,IAGS0K,EAAanoE,KAAKgkD,cAG1C,GAFAjZ,EAAKqwC,UAAYA,EAEbtC,EAAU,CACV,GAAIwjC,EAAUxjC,GACV,MAAM,IAAI14E,OAAQuqD,EAAW,IAAM,KAAO,mBAAqBmuB,EAAW,uBAE9EwjC,EAAUxjC,GAAY/tC,CAC1B,CAKA,OAHA/qC,KAAKgtF,WAAWjiD,GAChBA,EAAKq2B,gBAEEr2B,CACX,EAEAw8E,EAAgBvjH,UAAUm4G,WAAa,SAAqBrsB,GASxD,IARA,IAAItuD,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACfqnG,EAAe,GAAGx0G,OAAOmN,EAAQyzE,OACjCqI,EAAQ,GACRwrB,EAAe,GAAGz0G,OAAOmN,EAAQ2zE,OACjCoI,EAAQ,GAEH58E,EAAM,EAAGA,EAAMkoG,EAAaviH,OAAQqa,IAAO,CAE5CyU,GADWsY,EAAO6uD,SAASssB,EAAaloG,GAAK4gD,MAC3By6B,IAClBsB,EAAMhiF,KAAKoyB,EAAO46E,aAAaO,EAAaloG,IAAM,EAAOA,GAEjE,CAEA,IAAK,IAAIqjD,EAAQ,EAAGA,EAAQ8kD,EAAaxiH,OAAQ09D,IAAS,CAElD5uC,GADasY,EAAO6uD,SAASusB,EAAa9kD,GAAOzC,MAC7By6B,IACpBuB,EAAMjiF,KAAKoyB,EAAO46E,aAAaQ,EAAa9kD,IAAQ,EAAMA,GAElE,CAEA93D,KAAKwzD,MAAQxzD,KAAKwzD,OAAS49B,EAAM,GACjCpxF,KAAKyzD,MAAQzzD,KAAKyzD,OAAS49B,EAAM,EACrC,EAEAk2B,EAAgBvjH,UAAUopF,WAAa,SAAqBriD,GACxD,IAAI+tC,EAAW/tC,EAAKz1B,QAAQ3E,KAE5B0+E,EAAarrF,UAAUopF,WAAWpqF,KAAKhD,KAAM+qC,GAEzCA,EAAKz1B,QAAQq1C,gBACN3qD,KAAKqpF,WAAWvQ,UAEhB94E,KAAKopF,WAAWtQ,GAGvB/tC,IAAS/qC,KAAKwzD,cACPxzD,KAAKwzD,MAGZzoB,IAAS/qC,KAAKyzD,cACPzzD,KAAKyzD,KAEpB,EAEA8zD,EAAgBvjH,UAAUgzF,eAAiB,SAAyBjmC,EAAO/9D,EAAGwsG,GAQ1E,IAPA,IAAI3hB,EAAS9sB,EAAM0uC,kBAAkBzsG,GACjCkyC,EAAQ,IAAID,GAAM44C,EAAO93D,EAAG83D,EAAO73D,GACnCsnE,EAAUttF,KAAKs1D,KACfl7D,EAASkzF,EAAQlzF,OACjByiH,EAAU,GACVC,EAAU,GAELpxG,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAIq/B,EAAOuiD,EAAQ5hF,GAEnBsiF,GADajjD,EAAKz1B,QAAQq1C,SAAWmyD,EAAUD,EACvB9xE,EAAK+0B,YAAY56B,GAC7C,CAEI23E,EAAQziH,OAAS,GAAK0iH,EAAQ1iH,OAAS,GACvC22D,EAAMhnC,QAAQy1E,EAAW,CACrBhsG,QAAS46B,GAAap7B,GACtBgpF,cAAehpF,EACf+yB,EAAG4oE,GAAkBkuB,GACrB72F,EAAG2oE,GAAkBmuB,IAGjC,EAEAyK,EAAgBvjH,UAAU27F,kBAAoB,SAA8B50D,EAAMz1B,GAC9E,IAAIq1C,EAAW5f,EAAKz1B,QAAQq1C,SACxB2K,EAAOt1D,KAAKmxF,UAAUnxF,KAAK8vF,OAC3Bx1F,GAASqwD,EAAW2K,EAAKtvC,EAAIsvC,EAAKvvC,GAAG1c,QAAQ0hC,GAEjD40D,GAAkB3/F,KAAKsV,QAAShb,EAAOqwD,EAAUr1C,GACjDqqF,GAAkB3/F,KAAKyvF,gBAAiBn1F,EAAOqwD,EAAUr1C,EAC7D,EAEAiyG,EAAgBvjH,UAAUisF,iBAAmB,SAA2BllD,GAEpE,OAAOlgC,OAAOW,OAAO,CAAC,EAAGu/B,EAAKz1B,QAAQk2E,UAAW,CAAE5mC,OAAQ,GAC/D,EAEO2iE,CACX,CA7RuB,CA6RrBl4B,IAEF,SAASsQ,GAAkBC,EAAexkB,EAAWzwB,EAAUr1C,GAE3DyR,GADmB,GAAG5e,OAAOwiD,EAAWi1C,EAAc3W,MAAQ2W,EAAc7W,OAAQ3N,GAC5D9lE,EAC5B,CAEAqgB,GAAkB4xF,GAAiB,CAC/Bx+B,MAAO,CAAC,EACRE,MAAO,CAAC,IAGZliE,GAAWwgG,GAAgBvjH,UAAW+yF,IAEtC,UClSIixB,GAAQ,QACRC,GAAQ,QAERC,GAAM,MACNC,GAAM,MACNC,GAAY,WAIhB/Q,GAAAA,QAAAA,SAAiCnc,GAAqB,CAClDroB,GAAKK,GAAQK,GAAMiB,GAAe5B,GAAMyB,GACxCpB,GAAaO,GAAMR,GAAQuB,GAAiBzB,GAAUwB,GACtDJ,GAAcD,GAAWS,GAAWpB,GAAsBU,GAAYS,KAG1E4iC,GAAAA,QAAAA,SAAiCuE,GAAY,CACzCznC,GAASC,GAAcrB,KAG3BskC,GAAAA,QAAAA,SAAiCuK,GAAa,CAAEnuC,KAChD4jC,GAAAA,QAAAA,SAAiCgL,GAAe,CAAElvC,KAClDkkC,GAAAA,QAAAA,SAAiC6O,GAAgB,CAAE9yC,KAEnDikC,GAAAA,QAAAA,SAAiCoM,GAAe,CAAE/vC,GAAYC,GAAYC,KAC1EyjC,GAAAA,QAAAA,SAAiCoN,GAAe,CAAE5wC,GAAYC,GAAcC,KAE5EsjC,GAAAA,QAAAA,SAAiCkQ,GAAiB,CAAEl0C,KAEpDlE,GAAAA,QAAAA,SACI,CAAE0D,GAAKK,GAAQK,GAAMiB,GAAe5B,GAAMyB,IAC1C,CAAEzvD,GAAS,CAAE+wD,GAAUqyC,GAAOI,GAAW/1C,GAAiBC,KAG9DnD,GAAAA,QAAAA,SACI,CAAE+E,GAAcD,GAAWD,GAAYS,IACvC,CAjCO,OAKF,MA4BS,CAAEkB,GAAUqyC,GAAOI,KAGrCj5C,GAAAA,QAAAA,SACI,CAAEuF,GAAWpB,IACb,CAAE1uD,GAAS,CAAE+wD,GAAUqyC,GAAOI,GAlCd,YAqCpBj5C,GAAAA,QAAAA,SAA8B,CAAEuE,GAAYC,GAAYC,IAAiB,CAAE7uD,EAAGC,GAAK,CAAEgjG,KACrF74C,GAAAA,QAAAA,SAA8B,CAAE0E,GAAYC,GAAcC,IAAc,CAAEnvD,GAAS,CAAEojG,KAErF74C,GAAAA,QAAAA,SACI,CAAEiE,IACF,CAAExuD,GAAS,CAAE+wD,GAAUqyC,GAAO,kBAAmB,YAGrD/vB,GAAAA,QAAAA,SACI,CAAEplB,GAAKK,GAAQK,GAAMiB,GAAe5B,GAAMyB,GAAeK,GAAWpB,IACpE,CAAEn2E,MAAO+qH,GAAK15F,MAAOy5F,GAAO/tC,SAAU+tC,GAAOI,SAAUF,GAAKG,UAAWJ,KAG3EjwB,GAAAA,QAAAA,SACI,CAAE/jB,GAAcD,GAAWD,GAAYS,IACvC,CAAElxC,KAAM4kF,GAAK7oH,GAAI4oH,GAAK15F,MAAOy5F,GAAO/tC,SAAU+tC,KAGlDhwB,GAAAA,QAAAA,SACI,CAAEpkB,GAAYC,GAAcC,IAC5B,CAAE52E,MAAO+qH,GAAK15F,MAAOy5F,KAGzB94C,GAAAA,QAAAA,SACI,CAAEgF,GAASC,GAAcrB,IACzB,CAAEhuD,EAAGC,GAAK,CAAEgjG,GAAOI,GhL3EC,YACC,aACD,YACC,egL2EzBj5C,GAAAA,QAAAA,SACI,CAAE4D,IAAU,CAAEhuD,EAAGC,EAAG,QAAU,CAAEgjG,GAAOryC,GAAUyyC,KAGrDj5C,GAAAA,QAAAA,SACI,CAAEkE,IACF,CAAEtuD,EAAGC,EAAGJ,GAAS,CAAEojG,GAAOI,KAG9Bj5C,GAAAA,QAAAA,SACI,CAAE8D,GAAaO,IACf,CAAE,OAAQ,OAAQ,MAAO,SAAW,CAAEmC,GAAUqyC,GAAO,YAAaI,KAGxEnwB,GAAAA,QAAAA,SACI,CAAEhlB,GAAaO,IACf,CAAE92E,KAAMwrH,GAAK32C,KAAM22C,GAAK56F,IAAK66F,GAAK55E,MAAO25E,GACvC15F,MAAOy5F,GAAO1hC,UAAW0hC,GAAO/tC,SAAU+tC,KAGhD94C,GAAAA,QAAAA,SACI,CAAE2D,GAAUwB,IACZ,CAAE,QAAS,KAAM,SAAU,KAAM,QAAS,OAAQ,YAAc,CAAEqB,GAAUqyC,GAAOI,KAGvFnwB,GAAAA,QAAAA,SACI,CAAEnlB,GAAUwB,IACZ,CAAEwS,MAAOohC,GAAKvhC,GAAIuhC,GAAKjhC,OAAQihC,GAAKthC,GAAIshC,GAAK3jD,MAAO2jD,GAAKhhC,KAAMghC,GAAKvgC,SAAUsgC,GAC5Ez5F,MAAOy5F,GAAO/tC,SAAU+tC,KAG9B94C,GAAAA,QAAAA,SACI,CAAE6D,GAAQuB,IACV,CAAE,UAAW,UAAY,CAAEoB,GAAUqyC,GAAO,kBAAmBI,KAGnEnwB,GAAAA,QAAAA,SACI,CAAEjlB,GAAQuB,IACV,CAAEhhF,QAAS20H,GAAKt6G,OAAQs6G,GAAK15F,MAAOy5F,GAAO/tC,SAAU+tC,KAGzD94C,GAAAA,QAAAA,SACI,CAAEsE,GAAKN,IACP,CAAEvuD,GAAS,CAAE+wD,GAAUqyC,GAAO,UAAW,kBAAmB,YCnGhE,IAAIO,GAAa,CAAE5yC,GAAU/wD,EAAOG,EAAGC,GAOnCwjG,GAAS,SAAUv3F,GACnB,SAASu3F,EAAMh1H,EAASs0E,EAAa2gD,EAAc3lH,GAC/C,IAAI0+B,EAASxhC,UACI,IAAZ8C,IAAqBA,EAAU,CAAC,GAErCmuB,EAAMjuB,KAAKhD,MAEXA,KAAKgmC,UAAY,GACjBhmC,KAAKkmC,YAAYpjC,EAAQ8mB,UACzB5pB,KAAKgkD,aAAe,IAAI8M,GAAa9wD,KAAM8C,GAC3C9C,KAAKgkD,aAAam5D,MAAQsL,EAE1BzoH,KAAK0oH,aAAal1H,GAElB,IAAI8hB,EAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASwyD,GAC3C9nE,KAAK2oH,iBAAmB5hG,GAAW,CAAC,EAAGzR,GACvCtV,KAAK4oH,OAASH,EACdzoH,KAAK6oH,WAAWvzG,EAASmzG,GAEzBzoH,KAAK8oH,gBACL9oH,KAAK+oH,eAEL/oH,KAAKwnH,iBACLryF,GAAAA,aAAwB2yC,GAAa,WACjCtmC,EAAOwnF,YAAa,EACfxnF,EAAOynF,aACRznF,EAAOzX,QAAQ,QACfyX,EAAO0nF,UACP1nF,EAAO2nF,gBAEf,GACJ,CAwkDA,OAtkDKl4F,IAAQu3F,EAAMz9G,UAAYkmB,GAC/Bu3F,EAAMxkH,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAChDwkH,EAAMxkH,UAAUqH,YAAcm9G,EAE9BA,EAAMxkH,UAAU0kH,aAAe,SAAuBl1H,GAGlD,IAFAwM,KAAKopH,iBAAiB51H,GACtBA,EAAQiD,MAAMomD,SAAW,WAClBrpD,EAAQuvG,YACXvvG,EAAQksB,YAAYlsB,EAAQuvG,YAEhC/iG,KAAKxM,QAAUA,CACnB,EAEAg1H,EAAMxkH,UAAUolH,iBAAmB,SAA2B51H,GAC1DgV,EAAShV,EAAS,UACtB,EAEAg1H,EAAMxkH,UAAU6kH,WAAa,SAAqBvzG,EAASmzG,GAIvD,IAHA,IAAIY,EAAe,GACftjE,EAASzwC,EAAQywC,QAAU,GAEtBr6C,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAC/B29G,EAAaj6G,KAAKvE,OAAOW,OAAO,CAAC,EAAGu6C,EAAOr6C,KAE/C4J,EAAQywC,OAASsjE,EAijDzB,SAA4B/zG,GAGxB,IAFA,IAAIg0G,EAAUf,GAEL9zG,EAAM,EAAGA,EAAM60G,EAAQlvH,OAAQqa,IAAO,CAC3C,IAAI80G,EAAQD,EAAQ70G,GAAO,OACvBa,EAAQi0G,KACRj0G,EAAQg0G,EAAQ70G,GAAO,QAAUa,EAAQi0G,UAClCj0G,EAAQi0G,GAEvB,CACJ,CAzjDQC,CAAmBl0G,GACnBtV,KAAKspE,cAAch0D,EAASmzG,GAGC,OAAzBnzG,EAAQipG,qBACDjpG,EAAQipG,aAGnBv+G,KAAKsV,QAAUyR,GAAW,CAAC,EAAG0hG,EAAcnzG,GAC5CtV,KAAKypH,mBACT,EAEAjB,EAAMxkH,UAAUglC,QAAU,WACtB,IAAI0gF,EAAY1pH,KAAKsV,QAAQo0G,WAAa,CAAC,EAI3C,MAAO,CACHl1H,MAJQk1H,EAAUl1H,MAAQw2B,SAAS0+F,EAAUl1H,MAAO,IAAMssB,KAAK8K,MAAM5rB,KAAKxM,QAAQ+W,aAKlF9V,OAJSi1H,EAAUj1H,OAASu2B,SAAS0+F,EAAUj1H,OAAQ,IAAMqsB,KAAK8K,MAAM5rB,KAAKxM,QAAQ4W,cAM7F,EAEAo+G,EAAMxkH,UAAUs9F,OAAS,SAAiBC,GACtC,IAAI3qG,EAAOoJ,KAAKgpC,UACZo4D,EAAcphG,KAAKgzB,MACnBkZ,EAAUt1C,EAAKpC,MAAQ,GAAKoC,EAAKnC,OAAS,EAE1C8sG,GAASr1D,KAAak1D,GAAexqG,EAAKpC,QAAU4sG,EAAY5sG,OAASoC,EAAKnC,SAAW2sG,EAAY3sG,SACrGuL,KAAKgzB,MAAQp8B,EACboJ,KAAKqhG,QAAQzqG,EAAM2qG,GACnBvhG,KAAK+pB,QAAQ,SAAUnzB,IAChBs1C,GAAWlsC,KAAK2pH,aAAe5zF,GAAK/1B,KAAK2pH,aAAa,SAAUl+G,GAAK,OAAQA,EAAE1X,OAAS,MAC/FiM,KAAK4pH,qBACL5pH,KAAK6pH,kBAEb,EAEArB,EAAMxkH,UAAUq9F,QAAU,WACtBrhG,KAAK8pH,sBACT,EAEAtB,EAAMxkH,UAAUkuF,OAAS,SAAiB63B,GAItC,GAHA/pH,KAAKspE,cAActpE,KAAKsV,SACxBtV,KAAKypH,oBAEDM,EAAU,CACV,IAAI70D,EAAWl1D,KAAKgqH,OAAOv7C,UACvBpZ,EAAOH,EAASm7B,SAAS05B,GAC7B70D,EAASg9B,OAAO78B,EACpB,MACIr1D,KAAKkpH,SAEb,EAEAV,EAAMxkH,UAAUkyE,QAAU,SAAkBvlE,GACxC,OAAOw9D,GAAex9D,EAAM3Q,KAAKyuE,UAAUnZ,KAC/C,EAEAkzD,EAAMxkH,UAAUmqE,eAAiB,SAAyBx9D,GACtD,OAAO3Q,KAAKk2E,QAAQvlE,EACxB,EAEA63G,EAAMxkH,UAAUimH,eAAiB,SAAyBt5G,GAGtD,IAFA,IAAIm/E,EAAQ9vF,KAAKyuE,UAAUqhB,MAElBr7E,EAAM,EAAGA,EAAMq7E,EAAM11F,OAAQqa,IAClC,GAAIq7E,EAAMr7E,GAAKa,QAAQ3E,OAASA,EAC5B,OAAO,IAAIy9D,GAAU0hB,EAAMr7E,GAGvC,EAEA+zG,EAAMxkH,UAAUkmH,gBAAkB,SAA0Bz1G,GACxD,IAAIq7E,EAAQ9vF,KAAKyuE,UAAUqhB,MAC3B,GAAIA,EAAMr7E,GACN,OAAO,IAAI25D,GAAU0hB,EAAMr7E,GAEnC,EAEA+zG,EAAMxkH,UAAUkxD,SAAW,WACvB,OAAO,IAAIsZ,GAAcxuE,KAAKyuE,UAClC,EAEA+5C,EAAMxkH,UAAU0hD,gBAAkB,SAA0BrtD,EAAM0qC,GAC9D,IAEIwI,EAKI4+E,EAAYC,EAPhBl1D,EAAWl1D,KAAKyuE,UAChBsvB,GAAe7oC,EAASwnC,WAAaxnC,EAASnP,QAAU,IAAI,GAG5D3/B,GAAW2c,GACXwI,EAAS2pB,EAASihC,aAAapzD,IAG3B9b,GAAS8b,IACTonF,EAAapnF,EAAOgjB,OACpBqkE,EAAernF,EAAOkjB,UAEtBkkE,EAAaC,EAAernF,EAI5BwI,EADAwyD,EAAY5qG,OAASggF,GACZk3C,GAAoBn1D,EAASkhC,mBAAmB+zB,GAAaC,GAC/DrsB,EAAY5qG,OAASsgF,IAAOsqB,EAAY5qG,OAASigF,GAC/Ci3C,IAAqBn1D,EAAS03B,OAAO,IAAM,CAAC,GAAGrhD,OAAQ6+E,GAEvDl1D,EAASkhC,mBAAmB+zB,IAIzC5+E,GACAvrC,KAAKsqH,sBAAsBjyH,EAAMkzC,EAEzC,EAEAi9E,EAAMxkH,UAAUsmH,sBAAwB,SAAgCjyH,EAAMkzC,GAE1E,IADA,IAAIia,EAAYxlD,KAAK4lD,WACZnxC,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IACnC+wC,EAAUssD,qBAAqBvmE,EAAO92B,GAAMpc,EAEpD,EAEAmwH,EAAMxkH,UAAUumH,YAAc,SAAsBxnF,GAChD,IAIImC,EAAOy6B,EAJPq7C,EAASh7G,KAAKwqH,iBAEdtkC,EADMlmF,KACQyqH,SACdv1D,EAFMl1D,KAESyuE,UAYnB,GATIroD,GAAW2c,IACXmC,EAAQgwB,EAASmhC,UAAUtzD,KACdi4E,IACTr7C,EAAgBz6B,EAAMg/B,YAEnB82C,GAAU71F,GAAQ4d,KACzB48B,EAAgBzK,EAASiiB,aAAaxX,cAAc58B,IAGpDi4E,GACA,GAAIr7C,GAAiB,EAAG,CACpB,IAAIp0B,EAASvrC,KAAKyuE,UAAUunB,sBAAsBr2B,GAClDumB,EAAQyF,OAAOpgD,EACnB,OACOrG,GACPghD,EAAQ7tF,KAAK6sC,EAErB,EAEAsjF,EAAMxkH,UAAU0mH,YAAc,WAC1B1qH,KAAKyqH,SAASt0H,MAClB,EAEAqyH,EAAMxkH,UAAU+kH,aAAe,WAC3B,IAAIta,EAAUzuG,KAAKyuG,QACf/jE,EAAO1qC,KAAK2qH,eAEZjB,EAAY1pH,KAAKsV,QAAQo0G,WAAa,CAAC,EACvCA,EAAUl1H,OACVk8B,GAAYga,EAAM,CAAEl2C,MAAOk1H,EAAUl1H,QAErCk1H,EAAUj1H,QACVi8B,GAAYga,EAAM,CAAEj2C,OAAQi1H,EAAUj1H,SAGrCg6G,GAAWA,EAAQn5F,QAAQniB,OAAS6M,KAAKsV,QAAQs1G,UAWlD5qH,KAAKyuG,QAAQxrE,QACbjjC,KAAKyuG,QAAQnN,WAXbthG,KAAK6qH,kBAEL7qH,KAAKyuG,QAAUtuD,GAAAA,OAAoBzV,EAAM,CACrCv3C,KAAM6M,KAAKsV,QAAQs1G,WAGvB5qH,KAAKyuG,QAAQ1uG,KAAK,aAAcC,KAAK8qH,2BACrC9qH,KAAKyuG,QAAQ1uG,KAAK,aAAcC,KAAK+qH,2BAM7C,EAEAvC,EAAMxkH,UAAU2mH,aAAe,WAC3B,OAAO3qH,KAAKxM,OAChB,EAEAg1H,EAAMxkH,UAAUklH,QAAU,WACtB,IAAI8B,EAAQhrH,KAAKirH,YACjBjrH,KAAKgzB,MAAQ,CACTx+B,MAAOw2H,EAAM11G,QAAQ9gB,MACrBC,OAAQu2H,EAAM11G,QAAQ7gB,QAG1BuL,KAAKkrH,eAELlrH,KAAKgqH,OAASgB,EACdhrH,KAAKyuE,UAAYu8C,EAAMv8C,UAEvBu8C,EAAM7mE,gBAE2B,IAA7BnkD,KAAKsV,QAAQuqE,aACbmrC,EAAMjqE,UAAS,SAASvtD,GAChBA,EAAQ4H,WACR5H,EAAQ4H,UAAUunD,OAE1B,IAGJ3iD,KAAK+oH,eACL/oH,KAAKyuG,QAAQtuD,KAAK6qE,EAAMvmE,SAES,IAA7BzkD,KAAKsV,QAAQuqE,aACbmrC,EAAMjqE,UAAS,SAASvtD,GAChBA,EAAQ4H,WACR5H,EAAQ4H,UAAUynD,MAE1B,IAGJ7iD,KAAKyqH,SAAWzqH,KAAKmrH,iBACrBnrH,KAAK4lD,WAAa,IAAI+rD,GACtB3xG,KAAK6pH,kBACL7pH,KAAKorH,kBACLprH,KAAKqrH,uBACLrrH,KAAKsrH,wBAELtrH,KAAK+pB,QjLlPA,UiLmPLwhG,GAAkBvrH,KAAKyuE,UAAUqhB,OAE5B9vF,KAAKwrH,WACNxrH,KAAKyrH,kBAEb,EAEAjD,EAAMxkH,UAAUw8F,aAAe,SAAuBkrB,GAClD,IAAIjnE,EACJ,GAAIinE,IAAkBA,EAAcl3H,OAASk3H,EAAcj3H,QAAUi3H,EAAcp2G,SAAU,CACzF,IAAIq2G,EAAiB3rH,KAAKsV,QACtBA,EAAUyR,GAAW,CAAC,EAAG2kG,EAAcp2G,QAAS,CAChDo0G,UAAW,CACPl1H,MAAOk3H,EAAcl3H,MACrBC,OAAQi3H,EAAcj3H,UAI9Bm3H,GAAmB5rH,KAAK2oH,iBAAkBrzG,GAC1CtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAK2oH,iBAAkBrzG,GACrDtV,KAAK6oH,WAAW7oH,KAAKsV,QAAStV,KAAK4oH,QACnC5oH,KAAKwnH,iBAEL,IAAIwD,EAAQhrH,KAAKirH,YAEjBD,EAAM7mE,eACNonE,GAAkBP,EAAMv8C,UAAUqhB,OAElCrrC,EAASumE,EAAMvmE,OAEfzkD,KAAKsV,QAAUq2G,CACnB,MACIlnE,EAASzkD,KAAKyuG,QAAQjO,eAG1B,OAAO/7C,CACX,EAEA+jE,EAAMxkH,UAAUwmH,eAAiB,WAC7B,OAAOxqH,KAAKyuE,qBAAqBysB,IAAuBl7F,KAAKsV,QAAQ4wE,SAAWlmF,KAAKsV,QAAQ4wE,QAAQ80B,MACzG,EAEAwN,EAAMxkH,UAAUonH,gBAAkB,WAC9B,IAAI91G,EAAUtV,KAAKsV,SACM,IAArBA,EAAQ87C,WACRpxD,KAAK6rH,UAAY,IAAIrZ,GAASxyG,KAAKyuE,UAAWn5D,EAAQ87C,UAE9D,EAEAo3D,EAAMxkH,UAAUqnH,qBAAuB,WACnC,IAAIS,EAAW9rH,KAAKsV,QAAQw2G,SACxB/T,GAAa+T,GAAY,CAAC,GAAG/T,WAChB,IAAb+T,IAAoC,IAAd/T,IACtB/3G,KAAK+rH,eAAiB,IAAInZ,GAAc5yG,KAAM+3G,GAEtD,EAEAyQ,EAAMxkH,UAAUsnH,sBAAwB,WACpC,IAAIQ,EAAW9rH,KAAKsV,QAAQw2G,SACxBrT,GAAcqT,GAAY,CAAC,GAAGrT,YACjB,IAAbqT,IAAqC,IAAfrT,IACtBz4G,KAAKgsH,gBAAkB,IAAItY,GAAe1zG,KAAMy4G,GAExD,EAEA+P,EAAMxkH,UAAUioH,sBAAwB,WACpC,IAAI76D,EAAWpxD,KAAKsV,QAAQ87C,SACxB06D,EAAW9rH,KAAKsV,QAAQw2G,SACxB/T,GAAa+T,GAAY,CAAC,GAAG/T,UAC7BU,GAAcqT,GAAY,CAAC,GAAGrT,WAC9ByT,GAAa96D,KAA0B,IAAb06D,IAAoC,IAAd/T,KAAyB/3G,KAAKoqB,iBAAiB,CAAE6qD,GAAYF,GAAMC,KACnHm3C,IAA0B,IAAbL,IAAqC,IAAfrT,KAA0Bz4G,KAAKoqB,iBAAiB,CAAE8qD,GAAYC,GAAMC,KACvG5hF,EAAUwM,KAAKxM,QAEfwM,KAAKosH,kBAAoBF,GAAaC,GACtC34H,EAAQiD,MAAM41H,YAAcrsH,KAAKssH,cAAgB,GACjDtsH,KAAKosH,kBAAmB,GAChBpsH,KAAKosH,kBAAsBF,GAAaC,IAChD34H,EAAQiD,MAAM41H,YAAc,OAE5BrsH,KAAKosH,kBAAmB,GAG5BpsH,KAAKusH,kBAAkBL,GAAYC,EACvC,EAEA3D,EAAMxkH,UAAUuoH,iBAAmB,SAA2BC,EAAMhZ,GAChE,IAAIiZ,EAAYzsH,KAAKysH,UAChBA,IAIDA,EAAUC,YACVD,EAAUC,WAAWF,GAGrBC,EAAUE,YACVF,EAAUE,WAAWnZ,GAE7B,EAEAgV,EAAMxkH,UAAUmnH,eAAiB,WAC7B,IACI7/B,EADMtrF,KACesV,QAAQ4wE,QASjC,OANIlmF,KAAKwqH,iBACKxqH,KAAK4sH,qBAAqBthC,GAE1B,IAAIqvB,GAAQ36G,KAAKgkD,aAAcsnC,EAIjD,EAEAk9B,EAAMxkH,UAAU4oH,qBAAuB,SAA+Bt3G,GAClE,OAAO,IAAIslG,GAAc56G,KAAKyuE,UAAWn5D,EAC7C,EAEAkzG,EAAMxkH,UAAUslE,cAAgB,SAAwBh0D,EAASmzG,IA8uCrE,SAA2BnzG,EAASmzG,GAChC,IACI3vC,EAAU+zC,EAAcv3D,EADxBw3D,GAAsBrE,GAAgB,CAAC,GAAGoE,cAAiB,CAAC,EAGhE,SAASE,EAAe5kD,GACpB,IAAI6kD,GAAa7kD,GAAe,CAAC,GAAG35C,OAASq+F,EAAar+F,MACtDp2B,EAAS2uB,GAAW,CAAC,EACrB+lG,EACAA,EAAkBh0C,GAClB+zC,EACAA,EAAa/zC,GAAW,CACpBrpB,KAAM,CAAEjhC,MAAOw+F,GACfh7D,OAAQ,CAAExjC,MAAOw+F,GACjBz4H,MAAO,CAAEi6B,MAAOw+F,IAEpB7kD,GAKJ,cAFO/vE,EAAO0gF,GAEP1gF,CACX,CAEA,IAAK,IAAIqc,EAAM,EAAGA,EAAM8zG,GAAWnuH,OAAQqa,IACvCqkE,EAAWyvC,GAAW9zG,GAAO,OAC7Bo4G,EAAev3G,EAAQu3G,cAAgB,CAAC,EAGxCv3D,GAFAA,EAAO,GAAGntD,OAAOmN,EAAQwjE,KAEbz+E,IAAI0yH,GAEhBz3G,EAAQwjE,GAAYxjB,EAAKl7D,OAAS,EAAIk7D,EAAOA,EAAK,EAE1D,CA7wCQ23D,CAAkB33G,EAASmzG,GA+wCnC,SAA6BnzG,EAASmzG,GAClC,IAAI1iE,EAASzwC,EAAQywC,OACjBmnE,EAAennE,EAAO3rD,OACtBgjH,EAAiB9nG,EAAQ8nG,eACzB+P,EAAiBpmG,GAAW,CAAC,EAAGzR,EAAQ8nG,gBACxCgQ,EAAsB3E,EAAe1hG,GAAW,CAAC,EAAG0hG,EAAarL,gBAAkB,CAAC,EACpFiQ,EAAsBtmG,GAAW,CAAC,EAAGqmG,GAEzCE,GAA4BH,GAC5BG,GAA4BD,GAE5B,IAAK,IAAI3hH,EAAI,EAAGA,EAAIwhH,EAAcxhH,IAAK,CACnC,IAAIysF,EAAapyC,EAAOr6C,GAAGvY,MAAQmiB,EAAQ8nG,eAAejqH,KAEtDmsG,EAAcv4E,GACd,CAAE9P,KAAM,IACRo2G,EACAD,EAAoBj1B,GACpB,CAAEjS,QAAS5wE,EAAQ4wE,SACnBinC,EACA/P,EAAejlB,IAGnBpyC,EAAOr6C,GAAG0uE,UAAYklB,EACtBv5C,EAAOr6C,GAAKqb,GAAW,CAAC,EAAGu4E,EAAav5C,EAAOr6C,IAC/Cq6C,EAAOr6C,GAAGuL,KAAO8uC,EAAOr6C,GAAGuL,MAAQ,EACvC,CACJ,CAzyCQs2G,CAAoBj4G,EAASmzG,EACjC,EAEAD,EAAMxkH,UAAUylH,kBAAoB,WAKhC,IAJA,IAAIn0G,EAAUtV,KAAKsV,QACfywC,EAASzwC,EAAQywC,OACjBynE,EAASl4G,EAAQipG,cAAgB,GAE5B7yG,EAAI,EAAGA,EAAIq6C,EAAO3rD,OAAQsR,IAAK,CACpC,IAAIgvE,EAAgB30B,EAAOr6C,GACvB+hH,EAAcD,EAAO9hH,EAAI8hH,EAAOpzH,QAChC08E,EAAW4D,EAAcN,UAE7BM,EAAclsD,MAAQksD,EAAclsD,OAASi/F,EACzC32C,IACAA,EAAStoD,MAAQsoD,EAAStoD,OAASi/F,EAE3C,CACJ,EAEAjF,EAAMxkH,UAAUinH,UAAY,WACxB,IAAI31G,EAAUtV,KAAKsV,QACf4/C,EAAWl1D,KAAK0tH,kBAChB1C,EAAQ,IAAIrhE,GAAY3pD,KAAK2tH,iBACjC3C,EAAMj6D,MAAQ/wD,KACdgrH,EAAMv8C,UAAYvZ,EAElB,IAAI3gE,EAAQm5D,GAAAA,WAAiBp4C,EAAQ/gB,OACjCq5H,EAAWlgE,GAAAA,WAAiBp4C,EAAQs4G,SAAU,CAC9CzhF,MAAO72B,EAAQ/gB,MAAM43C,MACrB0Q,SAAUvnC,EAAQ/gB,MAAMsoD,WAU5B,OARAmuE,EAAMn/F,OAAO3jB,MAAM8iH,EAAOt9D,GAAAA,YAAkB,CAACn5D,EAAOq5H,KAEhDt4G,EAAQi6E,QAAUj6E,EAAQi6E,OAAOx7F,SACjCi3H,EAAMn/F,OAAO,IAAIwqF,GAAOnhD,EAAS5/C,QAAQi6E,OAAQvvF,KAAKgkD,eAE1DgnE,EAAMn/F,OAAOqpC,GACb81D,EAAMvnE,SAECunE,CACX,EAEAxC,EAAMxkH,UAAU2pH,cAAgB,WAC5B,IAAIr4G,EAAUtV,KAAKsV,QACf1e,EAAOoJ,KAAKgpC,UAEhB,OAAOjiB,GAAW,CACd84D,YAAavqE,EAAQuqE,YACrBrrF,MAAOoC,EAAKpC,OrXneG,IqXoefC,OAAQmC,EAAKnC,QrXteG,KqXuejB6gB,EAAQo0G,UACf,EAEAlB,EAAMxkH,UAAU0pH,gBAAkB,SAA0BG,GACxD,IAAIv4G,EAAUtV,KAAKsV,QAInB,OAFe+hG,GAAAA,QAAAA,OAA+BwW,EAAa,GAAKv4G,EAAQywC,OAAQzwC,EAAStV,KAAKgkD,aAGlG,EAEAwkE,EAAMxkH,UAAU6lH,gBAAkB,WAO9B,IANA,IAGIv0D,EADMt1D,KACKyuE,UAAUnZ,KACrBw4D,EAAa9tH,KAAK2pH,YAAc,GAE3Bj+G,EAAI,EAAGA,EAAI4pD,EAAKl7D,OAAQsR,IAAK,CAClC,IAAIq/B,EAAOuqB,EAAK5pD,GACZ4J,EAAUy1B,EAAKz1B,QACnB,GAAIy1B,aAAgB0yB,IAAgBnoD,EAAQy4G,SAAWz4G,EAAQq1C,SAAU,CACrE,IAAIjT,EAAQ3M,EAAK2M,QAEbqgE,EAAY,IAAIL,GAZf13G,KAYiC+qC,EAClChkB,GAAW,CAAE4H,IAAK+oB,EAAM/oB,IAAKnD,IAAKksB,EAAMlsB,KAAOlW,EAAQy4G,SAG3DD,EAAW1+G,KAAK2oG,EACpB,CACJ,CACJ,EAEAyQ,EAAMxkH,UAAUgqH,aAAe,SAAuBh7H,GAClD,OAAOgN,KAAK+pB,QAAQsrD,GAAcriF,EACtC,EAEAw1H,EAAMxkH,UAAUiqH,QAAU,SAAkBj7H,GACxC,OAAOgN,KAAK+pB,QAAQurD,GAAQtiF,EAChC,EAEAw1H,EAAMxkH,UAAUkqH,WAAa,SAAqBl7H,GAC9C,OAAOgN,KAAK+pB,QAAQwrD,GAAYviF,EACpC,EAEAw1H,EAAMxkH,UAAU8kH,cAAgB,WAC5B9oH,KAAKmuH,cAAgBnuH,KAAKygG,OAAO1gG,KAAKC,MACtCA,KAAK04G,mBAAqB14G,KAAK24G,YAAY54G,KAAKC,MAChDA,KAAKouH,mBAAqBpuH,KAAK4gG,YAAY7gG,KAAKC,MAChDA,KAAK8qH,0BAA4B9qH,KAAKquH,WAAWtuH,KAAKC,MACtDA,KAAK+qH,0BAA4B/qH,KAAKsuH,UAAUvuH,KAAKC,MAErDA,KAAK6gG,WAAagL,GACd7rG,KAAK6gG,WAAW9gG,KAAKC,MA9fX,GAigBlB,EAEAwoH,EAAMxkH,UAAUkiC,YAAc,SAAsBtc,GAC5CA,GACA5pB,KAAKgmC,UAAU52B,KAAKwa,EAE5B,EAEA4+F,EAAMxkH,UAAUmiC,eAAiB,SAAyBvc,GACtD,IAAItvB,EAAQ0F,KAAKgmC,UAAU38B,QAAQugB,GAC/BtvB,GAAS,GACT0F,KAAKgmC,UAAUI,OAAO9rC,EAAO,EAErC,EAEAkuH,EAAMxkH,UAAUomB,iBAAmB,SAA2B0F,GAE1D,IADA,IAAIkW,EAAYhmC,KAAKgmC,UACZvxB,EAAM,EAAGA,EAAMuxB,EAAU5rC,OAAQqa,IACtC,GAAIuxB,EAAUvxB,GAAK2V,iBAAiB0F,GAChC,OAAO,CAGnB,EAEA04F,EAAMxkH,UAAU+lB,QAAU,SAAkBpZ,EAAM3I,QAChC,IAATA,IAAkBA,EAAO,CAAC,GAE3B2I,IAAS6kE,KACTxtE,EAAK0d,OAAOwf,MAAQllC,KAAKuuH,uBAAuBvmH,EAAK0d,OAAOwf,QAEhEl9B,EAAK+7C,OAAS/jD,KAId,IAFA,IAAIgmC,EAAYhmC,KAAKgmC,UACjBhc,GAAqB,EAChBvV,EAAM,EAAGA,EAAMuxB,EAAU5rC,OAAQqa,IAClCuxB,EAAUvxB,GAAKsV,QAAQpZ,EAAM3I,KAC7BgiB,GAAqB,GAI7B,OAAOA,CACX,EAEAw+F,EAAMxkH,UAAUmlH,cAAgB,WAC5B,IAAIn5G,EAAKw+G,EAELh7H,EAAUwM,KAAKxM,QAEnBwM,KAAKssH,aAAe94H,EAAQiD,MAAM41H,YAElC18F,GAAWn8B,IAAWwc,EAAM,CAAC,GAAmB,YAAKhQ,KAAKmuH,cAAen+G,EAAK8lE,IAAe91E,KAAK04G,mBAAoB1oG,EAAe,WAAKhQ,KAAKouH,mBAAoBp+G,IAE/JhQ,KAAKyuH,0BACL9+F,GAAWn8B,IAAWg7H,EAAQ,CAAC,GAAmB,UAAKxuH,KAAK6gG,WAAY2tB,IAG5ExuH,KAAKysH,UAAYn7D,GAAAA,OAAwBtxD,KAAKxM,QAAS,CACnD+1B,MAAOvpB,KAAK84G,OAAO/4G,KAAKC,MACxB0nC,KAAM1nC,KAAK+4G,MAAMh5G,KAAKC,MACtBwpB,IAAKxpB,KAAKg5G,KAAKj5G,KAAKC,MACpBi5G,IAAKj5G,KAAKk5G,KAAKn5G,KAAKC,MACpBq5G,aAAcr5G,KAAKs5G,cAAcv5G,KAAKC,MACtCu5G,cAAev5G,KAAKw5G,eAAez5G,KAAKC,MACxCy5G,WAAYz5G,KAAK05G,YAAY35G,KAAKC,QAGtCA,KAAKisH,uBACT,EAEAzD,EAAMxkH,UAAU48F,YAAc,SAAsB5tG,GAC5CgN,KAAK0uH,gBACL1uH,KAAK0uH,cAAc1+D,IAAIhwD,KAAMhN,GAC7BgN,KAAK0uH,cAAgB,MAGrB1uH,KAAK2uH,mBACL3uH,KAAK2uH,kBAAmB,EACxB3uH,KAAK+pB,QAAQ+qD,IAErB,EAEA0zC,EAAMxkH,UAAUynH,iBAAmB,WAC3BzrH,KAAKysH,WAAazsH,KAAKysH,UAAUzmH,QACjChG,KAAKysH,UAAUzmH,QAEvB,EAEAwiH,EAAMxkH,UAAUs1G,cAAgB,SAAwBtmH,GAChDgN,KAAKgsH,kBAAoBhsH,KAAK4uH,mBAAmB57H,KACjDgN,KAAK6uH,iBAAmB77H,EAAEg6C,SAC1BhtC,KAAKk2G,oBACLl2G,KAAKyuG,QAAQjN,kBAErB,EAEAgnB,EAAMxkH,UAAU01G,YAAc,SAAsB1mH,GAC5CgN,KAAK8uH,WAAa9uH,KAAK4uH,mBAAmB57H,KACtCgN,KAAKyuG,SACLzuG,KAAKyuG,QAAQ/M,iBAEjB1hG,KAAK8uH,UAAW,EAChB9uH,KAAK+pB,QAAQqrD,GAAU,CAAC,GAEhC,EAEAozC,EAAMxkH,UAAUw1G,eAAiB,SAAyBxmH,GACtD,IAAI+7H,EAAiB/uH,KAAKgsH,gBAE1B,GAAI+C,IAAmB/uH,KAAK4uH,mBAAmB57H,GAAI,CAC/CA,EAAE88D,iBACF,IAAIk/D,EAA0BhvH,KAAK6uH,iBAC/BI,GAAcj8H,EAAEg6C,SAAWgiF,EAA0B,EAEzD,GAAIluG,KAAKC,IAAIkuG,IAAe,GAAK,CAC7BA,EAAanuG,KAAKE,MAAmB,GAAbiuG,GAExBjvH,KAAK6uH,iBAAmB77H,EAAEg6C,SAC1B,IAAIhlC,EAAO,CAAEsjB,MAAO2jG,EAAYxsC,WAAYA,GAAWziF,KAAKyuE,UAAUnZ,MAAO0mB,cAAehpF,GAC5F,GAAIgN,KAAK8uH,WAAa9uH,KAAK+pB,QAAQmrD,GAAYltE,GAAO,CAClD,IAAI61E,EAAS79E,KAAKy/F,kBAAkBzsG,GAE/BgN,KAAK8uH,WACN9uH,KAAK8uH,UAAW,IAGP9mH,EAAKy6E,WAAassC,EAAenb,aAAaqb,EAAYpxC,MACxD79E,KAAK+pB,QAAQorD,GAAMntE,IAC9B+mH,EAAevb,MAEvB,CACJ,CACJ,CACJ,EAEAgV,EAAMxkH,UAAUsqH,UAAY,SAAoBt7H,GAC5C,GAAIA,EAAEQ,QAAS,CACX,IAAIA,EAAUwM,KAAKkvH,qBAAqBl8H,EAAEQ,QAASR,GAE/CQ,GAAWA,EAAQ27H,OACnB37H,EAAQ27H,MAAMnvH,KAAMhN,EAAEgpF,cAE9B,CACJ,EAEAwsC,EAAMxkH,UAAU80G,OAAS,SAAiB9lH,GACtC,IAAI6qF,EAAS79E,KAAKy/F,kBAAkBzsG,IAEhCgN,KAAK4uH,mBAAmB57H,IAAOgN,KAAKyuE,UAAUqnB,wBAAwBjY,KAKtE79E,KAAKoqB,iBAAiB,CAAE6qD,GAAYF,GAAMC,MAC1Ch1E,KAAKovH,iBAAiBp8H,EAAG6qF,EAAQ5I,IAGjCj1E,KAAK6rH,WAAa7rH,KAAK6rH,UAAUtiG,MAAMv2B,KACvCgN,KAAKyuG,QAAQjN,kBACbxhG,KAAKk2G,oBACLl2G,KAAKqvH,gBAAiB,EACtBrvH,KAAKgkD,aAAa4gB,SAAU,GAG5B5kE,KAAK+rH,gBACD/rH,KAAK+rH,eAAexiG,MAAMv2B,IAC1BgN,KAAK+pB,QAAQmrD,GAAY,CAAEuN,WAAYA,GAAWziF,KAAKyuE,UAAUnZ,MAAO0mB,cAAehpF,IAGnG,EAEAw1H,EAAMxkH,UAAU+0G,MAAQ,SAAgB/lH,GACpC,IACI2M,EADMK,KACMwrH,UACZp6D,EAFMpxD,KAES6rH,UAEnB,IAAI7rH,KAAK4uH,mBAAmB57H,GAA5B,CAIA,GAAIo+D,EAAU,CACV,IAAImhD,EAASnhD,EAAS1pB,KAAK10C,GAEvBu/G,IAAWvyG,KAAK+pB,QAAQgrD,GAAM,CAAE0N,WAAY8vB,EAAQv2B,cAAehpF,KACnEo+D,EAASuP,KAEjB,MAAO,GAAIhhE,EAAO,CAId,IAHA,IAAI2vH,EAAW,CAAC,EACZh6D,EAAO31D,EAAM21D,KAER5pD,EAAI,EAAGA,EAAI4pD,EAAKl7D,OAAQsR,IAAK,CAClC,IAAI2gF,EAAc/2B,EAAK5pD,GAEvB,GADe2gF,EAAY/2E,QAAQ3E,KACrB,CACV,IAAIo6B,EAAOshD,EAAY/2E,QAAQq1C,SAAW33D,EAAEgzB,EAAIhzB,EAAE+yB,EAC9CuF,EAAQyf,EAAK0oE,cAAgB1oE,EAAKl4B,SAExB,IAAVyY,IACAgkG,EAASjjC,EAAY/2E,QAAQ3E,MAAQ07E,EAAYnsB,eAAe50C,GAExE,CACJ,CAEA3rB,EAAM8iF,WAAa6sC,EACnBtvH,KAAK+pB,QAAQgrD,GAAM,CACf0N,WAAY6sC,EACZtzC,cAAehpF,GAEvB,CAEIgN,KAAK+rH,gBACL/rH,KAAK+rH,eAAerkF,KAAK10C,EAjC7B,CAmCJ,EAEAw1H,EAAMxkH,UAAUg1G,KAAO,SAAehmH,GAClC,IAAIgN,KAAK4uH,mBAAmB57H,GAA5B,CAIA,IAAIo+D,EAAWpxD,KAAK6rH,UAapB,GAZIz6D,GAAYA,EAAS5nC,IAAIx2B,IACzBgN,KAAKyuG,QAAQ/M,iBACb1hG,KAAK+pB,QAAQirD,GAAU,CACnByN,WAAYA,GAAWziF,KAAKyuE,UAAUnZ,MACtC0mB,cAAehpF,IAEnBgN,KAAKqvH,gBAAiB,EACtBrvH,KAAKgkD,aAAa4gB,SAAU,GAE5B5kE,KAAKuvH,eAAev8H,EAAGgiF,IAGvBh1E,KAAK+rH,eAAgB,CACrB,IAAIxZ,EAASvyG,KAAK+rH,eAAeviG,IAAIx2B,GACjCu/G,IAAWvyG,KAAK+pB,QAAQorD,GAAM,CAAEsN,WAAY8vB,EAAQv2B,cAAehpF,MACnEgN,KAAK+rH,eAAevY,OACpBxzG,KAAK+pB,QAAQqrD,GAAU,CAAEqN,WAAY8vB,EAAQv2B,cAAehpF,IAEpE,CArBA,CAsBJ,EAEAw1H,EAAMxkH,UAAU4qH,mBAAqB,SAA6B57H,GAC9D,IAAI86H,EAAa9tH,KAAK2pH,aAAe,GACrC,IAAKmE,EAAW1zH,OACZ,OAAO,EAGX,IAAIyjF,EAAS79E,KAAKy/F,kBAAkBzsG,GAChCqiE,EAAOr1D,KAAKyuE,UAAU6nB,YAAYzY,GACtC,GAAIxoB,EACA,IAAK,IAAI5gD,EAAM,EAAGA,EAAMq5G,EAAW1zH,OAAQqa,IACvC,GAAIq5G,EAAWr5G,GAAKqjG,OAAOziD,GACvB,OAAO,CAIvB,EAEAmzD,EAAMxkH,UAAUwrH,oBAAsB,WAClC,IACI/W,GADWz4G,KAAKsV,QAAQw2G,UACE,CAAC,GAAGrT,YAAc,CAAC,EACjD,OAAOhpF,GAAegpF,EAAW9E,KjL9sBd,GiL+sBvB,EAEA6U,EAAMxkH,UAAU20G,YAAc,SAAsB3lH,GAChD,IAAIwuC,EAASxhC,KAETsrB,EAAQD,GAAgBr4B,GACxB+7H,EAAiB/uH,KAAKgsH,gBACtBnuC,EAAS79E,KAAKy/F,kBAAkBzsG,GAEpC,IAAIgN,KAAK4uH,mBAAmB57H,IAAOgN,KAAKyuE,UAAUqnB,wBAAwBjY,GAI1E,GAAIkxC,EAAgB,CAChB,IAAI/mH,EAAO,CAAEsjB,MAAOA,EAAOm3D,WAAYA,GAAWziF,KAAKyuE,UAAUnZ,MAAO0mB,cAAehpF,IACnFgN,KAAK8uH,UAAa9uH,KAAK+pB,QAAQmrD,GAAYltE,KAC3ChV,EAAE88D,iBAEG9vD,KAAK8uH,WACN9uH,KAAKk2G,oBACLl2G,KAAKyuG,QAAQjN,kBACbxhG,KAAK8uH,UAAW,GAGhB9uH,KAAK25G,YACLlnG,aAAazS,KAAK25G,YAGtB3xG,EAAKy6E,WAAassC,EAAenb,aAAatoF,EAAOuyD,GACjD71E,EAAKy6E,aAAeziF,KAAK+pB,QAAQorD,GAAMntE,IACvC+mH,EAAevb,OAGnBxzG,KAAK25G,WAAa/yG,YAAW,WACzB46B,EAAOzX,QAAQqrD,GAAUptE,GACzBw5B,EAAOstF,UAAW,EACdttF,EAAOitE,SACPjtE,EAAOitE,QAAQ/M,gBAEvB,GjLvvBO,KiLyvBf,KAAO,CACH,IAAI/hG,EAAQK,KAAKwrH,UACjB,IAAK7rH,EACeK,KAAKovH,iBAAiBp8H,EAAG6qF,EAAQ3I,MAE7Cv1E,EAAQK,KAAKwrH,WAIrB,GAAI7rH,EAAO,CACP,IAAI8vH,EAAa9vH,EAAM8vH,YAAcnkG,EACrC3rB,EAAM8vH,WAAaA,EAAankG,EAKhC,IAHA,IAAIgqC,EAAOt1D,KAAKwrH,UAAUl2D,KACtBi9C,EAAS,CAAC,EAEL7mG,EAAI,EAAGA,EAAI4pD,EAAKl7D,OAAQsR,IAAK,CAClC,IAAI2gF,EAAc/2B,EAAK5pD,GACnBotE,EAAWuT,EAAY/2E,QAAQ3E,KAC/BmoE,IACAy5B,EAAOz5B,GAAYuT,EAAYlsB,YAAYsvD,EAAajuF,EAAOguF,sBAAuB3xC,GAE9F,CAEA79E,KAAK+pB,QAAQorD,GAAM,CACf7pD,MAAOA,EACPm3D,WAAY8vB,EACZv2B,cAAehpF,IAGfgN,KAAK25G,YACLlnG,aAAazS,KAAK25G,YAGtB35G,KAAK25G,WAAa/yG,YAAW,WACzB46B,EAAO+tF,eAAev8H,EAAGoiF,GAC7B,GjL7xBO,IiL8xBX,CACJ,CACJ,EAEAozC,EAAMxkH,UAAUorH,iBAAmB,SAA2Bp8H,EAAG6qF,EAAQ6xC,GACrE,IAAIx6D,EAAWl1D,KAAKgqH,OAAOv7C,UACvBpZ,EAAOH,EAASq7B,cAAc1S,GAC9BvoB,EAAOJ,EAASI,KAAK56C,MAAM,GAE/B,GAAK26C,EAAL,CAIA,IAAIk9C,EAAS9vB,GAAWntB,GAERt1D,KAAK+pB,QAAQ2lG,EAAY,CACrCjtC,WAAY8vB,EACZv2B,cAAehpF,IAIfgN,KAAKyrH,oBAELzrH,KAAKqvH,gBAAiB,EACtBrvH,KAAKk2G,oBACLl2G,KAAKwrH,UAAY,CACb/oC,WAAY8vB,EACZl9C,KAAMA,EACNC,KAAMA,GAjBd,CAoBJ,EAEAkzD,EAAMxkH,UAAUurH,eAAiB,SAAyBv8H,EAAG08H,GACrD1vH,KAAKwrH,YACLxrH,KAAK+pB,QAAQ2lG,EAAY,CACrBjtC,WAAYziF,KAAKwrH,UAAU/oC,WAC3BzG,cAAehpF,IAEnBgN,KAAKqvH,gBAAiB,EACtBrvH,KAAKwrH,UAAY,KAEzB,EAEAhD,EAAMxkH,UAAU2rH,iBAAmB,SAA2B38H,EAAGy1B,GAC7D,IAAIj1B,EAAUwM,KAAKyuG,QAAQzN,YAAYhuG,GACvC,GAAIQ,EACA,OAAOwM,KAAKkvH,qBAAqB17H,EAASR,EAAGy1B,EAErD,EAEA+/F,EAAMxkH,UAAUkrH,qBAAuB,SAA+B17H,EAASR,EAAGy1B,GAG9E,IAFA,IACIi8B,EADAnxD,EAAUC,EAEPD,IAAYmxD,GACfA,EAAenxD,EAAQmxD,aACvBnxD,EAAUA,EAAQq/B,OAGtB,GAAI8xB,EAYA,OAXIA,EAAa4K,WACb5K,EAAeA,EAAa4K,SAASt8D,EAAGgN,KAAKy/F,kBAAkBzsG,KAG/Dy1B,IACAi8B,EAAeA,EAAaW,QAAQ58B,KAChBi8B,EAAa4K,WAC7B5K,EAAeA,EAAa4K,YAI7B5K,CAEf,EAEA8jE,EAAMxkH,UAAUy7F,kBAAoB,SAA4BzsG,GAC5D,IAAI48H,EAAc7hG,GAAiB/6B,GACnC,OAAOgN,KAAKm6G,oBAAoByV,EAAY7pG,EAAG6pG,EAAY5pG,EAC/D,EAEAwiG,EAAMxkH,UAAU6rH,gBAAkB,WAC9B,IAAK7vH,KAAK8vH,SAAU,CAChB,IAAIv9H,EAAM80B,GAAcrnB,KAAKxM,QAAS,CAAE,cAAe,eACnDs9B,EAAcv+B,EAAIu+B,YAClBC,EAAax+B,EAAIw+B,WACrB/wB,KAAK8vH,SAAW,CACZnoG,IAAKoJ,EACLjJ,KAAMgJ,EAEd,CAEA,OAAO9wB,KAAK8vH,QAChB,EAEAtH,EAAMxkH,UAAUuqH,uBAAyB,SAAiCrpF,GACtE,IAAImG,EAAUrrC,KAAK6vH,kBACfvqG,EAAS0K,GAAchwB,KAAKxM,SAEhC,MAAO,CACHs0B,KAAM9G,GAAMkkB,EAAMnf,EAAIslB,EAAQvjB,KAAOxC,EAAOwC,MAC5CH,IAAK3G,GAAMkkB,EAAMlf,EAAIqlB,EAAQ1jB,IAAMrC,EAAOqC,KAElD,EAIA6gG,EAAMxkH,UAAUm2G,oBAAsB,SAA8BlsF,EAASE,GACzE,IAAI36B,EAAUwM,KAAKxM,QACf8xB,EAAS0K,GAAcx8B,GACvB63C,EAAUrrC,KAAK6vH,kBACf/tB,EnTl9BG,SAAsBtuG,GACjC,IAAKA,EACD,OAAOw9B,GAAOW,OAKlB,IAFA,IAAIR,EAASkB,GAAgB7+B,GACzBo/B,EAASp/B,EAAQq/B,cACdD,GAAQ,CACX,IAAIE,EAAeT,GAAgBO,GACnCzB,EAASA,EAAOD,aAAa4B,GAC7BF,EAASA,EAAOC,aACpB,CAGA,OADA1B,EAAOvmB,EAAIumB,EAAO1pB,EAAI0pB,EAAOn+B,EAAIm+B,EAAO9U,EAAI,EACrC8U,CACX,CmTm8B+BwB,CAAan/B,GAAS49B,SACzC8T,EAAQ,IAAIhP,GACZjI,EAAU3I,EAAOwC,KAAOujB,EAAQvjB,KAChCqG,EAAU7I,EAAOqC,IAAM0jB,EAAQ1jB,KACjC2K,UAAUwvE,GAEZ,OAAO,IAAI78D,GAAMC,EAAMnf,EAAGmf,EAAMlf,EACpC,EAEAwiG,EAAMxkH,UAAUk1G,KAAO,SAAelmH,GAClC,IAAIwuC,EAASxhC,KAET+vH,EAAiB/vH,KAAKyuG,QAAQzN,YAAYhuG,GAC1CQ,EAAUwM,KAAKkvH,qBAAqBa,EAAgB/8H,GACpDg9H,EAAgBhwH,KAAKwqH,iBAEpBxqH,KAAKiwH,YAAYF,EAAgB/8H,IAAOg9H,GACzChwH,KAAKk2G,oBAGL8Z,GACAhwH,KAAKkwH,oBAAoBlwH,KAAKy/F,kBAAkBzsG,GAAIA,GAAG,GAG3DgN,KAAKmwH,gBAAgB38H,EAASR,GAG9BgN,KAAKowH,aAAc,EACnBxpH,YAAW,WACP46B,EAAO4uF,aAAc,CACzB,GAAG,EACP,EAEA5H,EAAMxkH,UAAUy8F,OAAS,SAAiBztG,GACtC,IAAIQ,EAAUwM,KAAK2vH,iBAAiB38H,GACpCgN,KAAKmwH,gBAAgB38H,EAASR,EAClC,EAEAw1H,EAAMxkH,UAAUmsH,gBAAkB,SAA0B38H,EAASR,GAIjE,IAHA,IAEIO,EAAUC,EACPD,GACCA,EAAQksB,OACRlsB,EAAQksB,MALHzf,KAKiBhN,GAG1BO,EAAUA,EAAQq/B,MAE1B,EAEA41F,EAAMxkH,UAAUisH,YAAc,SAAsBz8H,EAASR,GACzD,GAAIgN,KAAKqvH,eACL,OAAO,EAGX,IAAInqF,EAAQllC,KAAKkvH,qBAAqB17H,EAASR,GAAG,SAASQ,GACvD,OAAQA,EAAQuoF,OAASvoF,EAAQu8D,SAAWv8D,aAAmB67F,GACnE,IAIA,OAFArvF,KAAKqwH,qBAAqBnrF,EAAOlyC,GAE1BkyC,CACX,EAEAsjF,EAAMxkH,UAAUssH,gBAAkB,SAA0BprF,GACnCne,GAAW,CAAC,EAAG/mB,KAAKsV,QAAQ4wE,QAAShhD,EAAM5vB,QAAQ4wE,SACrDnyF,SACfiM,KAAKyqH,SAASpyH,KAAK6sC,EAE3B,EAEAsjF,EAAMxkH,UAAUusH,wBAA0B,SAAkCC,EAAaC,EAAgBC,GACrG,IAAIC,EAAgB3wH,KAAK4wH,qBAAuB5wH,KAAK6wH,wBAAwBL,GAC7E,GAAKG,EAIL,GAAIF,EACAzwH,KAAK8wH,qBAAqBN,GAC1BxwH,KAAK+wH,oBAAoBJ,EAAc/8H,SAAU,MAAM,GACvDoM,KAAK+wH,oBAAoBJ,EAAc/8H,SAAU48H,EAAYzqE,QAC7D/lD,KAAK4lD,WAAWvtD,KAAKq4H,GAAmBF,OACrC,CACH,IAAIQ,EAEJ,IAAKL,EAAcnqE,+BAEf,YADAxmD,KAAK4lD,WAAWvtD,KAAKm4H,IAIzBQ,EAAiBhxH,KAAKixH,mBAAmBT,EAAaG,KAEhCK,EAAe52H,QACjC4F,KAAK4lD,WAAWvtD,KAAK24H,EAAgB,EAAIhxH,KAAKkxH,6BAA6BV,EAAYzqE,QAE/F,CACJ,EAEAyiE,EAAMxkH,UAAUitH,mBAAqB,SAA6BT,EAAaG,GAG3E,OAFgB3wH,KAAKmxH,oBAAoBR,EAAeH,EAAYnlH,aAEnD03B,QAAO,SAAUmC,GAAS,OAAOA,IAAUsrF,CAAa,GAC7E,EAEAhI,EAAMxkH,UAAUmtH,oBAAsB,SAA8BjvG,EAAW/uB,GAK3E,IAJA,IAEIo4C,EAAS,GAEJ7/B,EAAI,EAAGA,EAAIwW,EAAUtuB,SAASwG,OAAQsR,IAAK,CAChD,IAAIlY,EAAU0uB,EAAUtuB,SAAS8X,GAE7BlY,EAAQ6X,cAAgBlY,EACxBo4C,EAAOn8B,KAAK5b,GACLA,EAAQI,UAAYJ,EAAQI,SAASwG,SAC5CmxC,EAASA,EAAOpjC,OAVXnI,KAUyBmxH,oBAAoB39H,EAASL,IAEnE,CAEA,OAAOo4C,CACX,EAEAi9E,EAAMxkH,UAAUotH,oBAAsB,SAA8BlsF,EAAOlyC,GACvE,IAAIq+H,EAAerxH,KAAK0uH,cAEpB2C,GAAgBA,IAAiBnsF,IACjCmsF,EAAarhE,IAAIhwD,KAAMhN,GACvBgN,KAAK0uH,cAAgB,MAGrBxpF,GAASmsF,IAAiBnsF,GAASA,EAAM6qB,OACzC/vD,KAAK0uH,cAAgBxpF,EACrBA,EAAM6qB,KAAK/vD,KAAMhN,GAEzB,EAEAw1H,EAAMxkH,UAAU8sH,qBAAuB,SAA+B5rF,EAAOosF,GAMzE,IALA,IAEIp8D,EAAWl1D,KAAKyuE,UAChBr0E,EAAS86D,EAASnP,OAAO3rD,OAEpBsR,EAAI,EAAGA,EAAItR,EAAQsR,IAAK,CAC7B,IAAI6lH,EAAar8D,EAASnP,OAAOr6C,GAC7B8lH,EAPKxxH,KAOmByxH,4BAA4BF,GACpDG,EARK1xH,KAQoBkxH,6BAA6BK,GAErDD,GAAgBC,IAAersF,EAAM6gB,QAQtCwrE,EAAW/7E,QAAUg8E,EAEjBD,EAAW9hE,OACX8hE,EAAW9hE,KAAKja,QAAUg8E,KAV9BD,EAAWC,eAAiBA,EAC5BD,EAAW/7E,QAAUk8E,EAEjBH,EAAW9hE,OACX8hE,EAAW9hE,KAAKja,QAAUk8E,GAStC,CACJ,EAEAlJ,EAAMxkH,UAAU+sH,oBAAsB,SAA8Bj9E,EAAU69E,EAAc9uC,EAAO98B,GAG/F,IAFA,IAESr6C,EAAI,EAAGA,EAAIooC,EAAS15C,OAAQsR,IAAK,CACtC,IAAIlY,EAAUsgD,EAASpoC,GACnB6lH,EAAa/9H,EAAQuyD,QAAUA,EAGnC,GAFsBwrE,IAAeA,EAAW/rE,WAAa,CAAC,GAAGzxD,SAE1CP,EAAQixD,OAAQ,CACnC,IAAIjP,EAAUuQ,EAASA,EAAOvQ,QAAUhiD,EAAQuyD,OAAOvQ,SACnD+7E,IAAeI,GAAgB9uC,IAC/BrvF,EAAQixD,OAAOjP,QAAQqtC,EAAQ,EAAIrtC,EAE3C,CAEIhiD,EAAQI,UAAYJ,EAAQI,SAASwG,QAdhC4F,KAeE+wH,oBAAoBv9H,EAAQI,SAAU+9H,EAAc9uC,EAAOrvF,EAAQuyD,OAElF,CACJ,EAEAyiE,EAAMxkH,UAAU6sH,wBAA0B,SAAkC3rF,GAGxE,IAFA,IAAIyrF,EAAgBzrF,EAAMtS,OAEnB+9F,IAAkBA,EAAcz7D,UACnCy7D,EAAgBA,EAAc/9F,OAGlC,OAAO+9F,CACX,EAEAnI,EAAMxkH,UAAUqsH,qBAAuB,SAA+BnrF,EAAOlyC,GACzE,IAAIw9H,EAAcxwH,KAAK4xH,aACnBnB,EAAiBzwH,KAAKyuE,UAAU1oB,OAAO3rD,OAAS,EAChDy3H,EAAqB7xH,KAAK8xH,sBAkB9B,OAhBA9xH,KAAKoxH,oBAAoBlsF,EAAOlyC,GAE5BkyC,GAASsrF,IAAgBtrF,GAASA,EAAM62C,QACxC/7E,KAAK4xH,aAAe1sF,EAEfllC,KAAKwqH,kBAAqBtlF,EAAM62C,MAAM/7E,KAAMhN,KAC7CgN,KAAKswH,gBAAgBprF,GAEjB2sF,EACA7xH,KAAKuwH,wBAAwBrrF,EAAOurF,GAEpCzwH,KAAK4lD,WAAWvtD,KAAK6sC,KAK1BA,CACX,EAEAsjF,EAAMxkH,UAAU+tH,qBAAuB,SAA+B7sF,GAClE,IAAIurF,EAAiBzwH,KAAKyuE,UAAU1oB,OAAO3rD,OAAS,EAC3B4F,KAAK8xH,wBAEtBrB,GAAkBzwH,KAAK4wH,uBACvB5wH,KAAK8wH,qBAAqB5rF,GAAO,GACjCllC,KAAK+wH,oBAAoB/wH,KAAK4wH,qBAAqBh9H,SAAU,MAAM,GACnEoM,KAAK4wH,qBAAuB,MAEhC5wH,KAAK4lD,YAAc5lD,KAAK4lD,WAAWzvD,OACnC6J,KAAK4xH,aAAe,KAE5B,EAEApJ,EAAMxkH,UAAU8tH,oBAAsB,WAClC,IAAIE,OAAsFv+H,IAA1DuM,KAAKsV,QAAQ8nG,eAAe53D,UAAUksE,gBAClEG,EAAqB7xH,KAAKsV,QAAQywC,OAAOhjB,QAAO,SAAUt3B,GAAK,YAAuChY,IAAhCgY,EAAE+5C,UAAUksE,eAA+B,IAAIt3H,OAAS,EAClI,OAAO43H,GAA6BH,CACxC,EAEArJ,EAAMxkH,UAAUktH,6BAA+B,SAAuCnrE,GAClF,IAAIksE,EAAyBjyH,KAAKsV,QAAQ8nG,eAAe53D,UAAUksE,gBAEnE,OAD4B3rE,EAAOP,UAAUksE,iBACbO,GAA0BlsE,EAAOvQ,SrXxrCrC,CqXyrChC,EAEAgzE,EAAMxkH,UAAUytH,4BAA8B,SAAsC1rE,GAChF,OAAOA,EAAOyrE,gBAAkBzrE,EAAOvQ,SrX5rCX,CqX6rChC,EAEAgzE,EAAMxkH,UAAUqqH,WAAa,SAAqBr7H,GAC9C,IAAIgd,EAEAk1B,EAAQllC,KAAKiwH,YAAYj9H,EAAEQ,QAASR,EAAEgpF,eAEtC92C,GAASA,EAAMk3C,kBAAoBp8E,KAAKkyH,yBAA2BlyH,KAAKwqH,mBACxExqH,KAAKkyH,uBAAyBlyH,KAAKmyH,mBAAmBpyH,KAAKC,MAC3D2vB,GAAW72B,WAAYkX,EAAM,CAAC,GAAiB,UAAKhQ,KAAKkyH,uBAAwBliH,IAEzF,EAEAw4G,EAAMxkH,UAAUmuH,mBAAqB,SAA6Bn/H,GAC9D,IAAIgd,EAEAzd,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACd4wE,EAAU3zF,EAAIk4H,SACdjlE,EAAYjzD,EAAIqzD,WAChB1gB,EAAQ3yC,EAAIq/H,aACZ/zC,EAAS79E,KAAKy/F,kBAAkBzsG,GAEpC,GAAIgN,KAAKyuE,UAAUx+C,IAAI4Z,cAAcg0C,IACjC,GAAI34C,GAASA,EAAMk3C,iBAAmBl3C,EAAM6gB,QAAU7gB,EAAMtS,OAAOkrD,gBAAiB,CAChF,IAAIs0C,EAAcltF,EAAMtS,OAAOkrD,gBAAgBD,EAAO93D,EAAG83D,EAAO73D,EAAGkf,EAAM2yC,UACzE,GAAIu6C,GAAeA,IAAgBltF,EAG/B,GAFAllC,KAAK4xH,aAAeQ,GAEfA,EAAYr2C,MAAM/7E,KAAMhN,GACJ+zB,GAAW,CAAC,EAAGzR,EAAQ4wE,QAASksC,EAAY98G,QAAQ4wE,SACtDnyF,SACfmyF,EAAQ7tF,KAAK+5H,GAGjB5sE,EAAUntD,KAAK+5H,EAG3B,OAEAxhG,GAAa93B,WAAYkX,EAAM,CAAC,GAAiB,UAAKhQ,KAAKkyH,uBAAwBliH,IACnFhQ,KAAKk2G,oBACLl2G,KAAKkyH,uBAAyB,KAE9BlyH,KAAK+xH,qBAAqB7sF,EAElC,EAEAsjF,EAAMxkH,UAAU68F,WAAa,SAAqB7tG,GAC9C,IAAI6qF,EAAS79E,KAAKy/F,kBAAkBzsG,GAChCkiE,EAAWl1D,KAAKyuE,UAIpB,GAFAzuE,KAAKqyH,iBAAiBx0C,GAElB3oB,EAAS6mB,MAAO,CAChB,IAAIu2C,EAAep9D,EAAS4gC,wBAAwBjY,GAChDy0C,GACAtyH,KAAK2uH,kBAAmB,EACxB3uH,KAAKyuE,UAAUsN,MAAM/7E,KAAMhN,IACpBgN,KAAK2uH,mBAAqB2D,IACjCtyH,KAAK2uH,kBAAmB,EACxB3uH,KAAK+pB,QAAQ+qD,IAErB,CAEI90E,KAAKwqH,kBACLxqH,KAAKkwH,oBAAoBryC,EAAQ7qF,EAEzC,EAEAw1H,EAAMxkH,UAAUquH,iBAAmB,SAA2Bx0C,GAG1D,IAFA,IAAI2R,EAAaxvF,KAAKyuE,UAAU+gB,WAEvB9jF,EAAI,EAAGA,EAAI8jF,EAAWp1F,OAAQsR,IAAK,CACxC,IAAInY,EAAUi8F,EAAW9jF,GAErBnY,EAAQ08B,IAAI4Z,cAAcg0C,GAC1BtqF,EAAQo4F,OAAO9N,GAEftqF,EAAQ4C,MAEhB,CACJ,EAEAqyH,EAAMxkH,UAAUksH,oBAAsB,SAA8BryC,EAAQ7qF,EAAGg/G,GAC3E,IAAIhyG,KAAKqvH,eAAT,CAIA,IAAI98H,EAAMyN,KACNsrF,EAAiB/4F,EAAI+iB,QAAQ4wE,QAC7BhxB,EAAW3iE,EAAIk8E,UACf0I,EAAe5kF,EAAIk8E,UAAU0I,aAC7B+O,EAAU3zF,EAAIk4H,SACdjlE,EAAYjzD,EAAIqzD,WAEpB,GAAIsP,EAAS4gC,wBAAwBjY,GAAS,CAC1C,IAAIvjF,EAAQ68E,EAAavX,mBAAmBie,GAC5C,GAAIvjF,IAAU0F,KAAKuyH,qBAAwBvyH,KAAKwyH,kBAAoBxgB,EAAS,CACzE,IAAIzmE,EAAS2pB,EAAS8gC,sBAAsB17F,GACxCm4H,EAAYlnF,EAAOlxC,KAAI,SAAS6qC,GAChC,OAAOA,EAAM2qB,UAAU78D,EAC3B,IACI0/H,EAAYD,EAAU,IAAM,CAAC,EACjCC,EAAUp7C,eAAiBm7C,EAEvBlnF,EAAOnxC,OAAS,IAAM4F,KAAK+pB,QAAQ6qD,GAAc89C,IAC7CpnC,EAAev3F,SACfmyF,EAAQyF,OAAOpgD,EAAQsyC,GAG3Br4B,EAAUntD,KAAKkzC,GAEfvrC,KAAKwyH,kBAAmB,GAExBtsC,EAAQ/vF,OAGZ6J,KAAKuyH,mBAAqBj4H,CAC9B,MAAW03G,GAAUhyG,KAAKwyH,mBACtBhtE,EAAUrvD,OACV+vF,EAAQ/vF,OACR6J,KAAKwyH,kBAAmB,EAEhC,MAAWxyH,KAAKwyH,mBACZhtE,EAAUrvD,OACV+vF,EAAQ/vF,OACR6J,KAAKuyH,mBAAqB,KAC1BvyH,KAAKwyH,kBAAmB,EAzC5B,CA2CJ,EAEAhK,EAAMxkH,UAAU2uH,aAAe,SAAuBr9G,GAClD,IAAI4/C,EAAWl1D,KAAKyuE,UACpBzuE,KAAK6gG,WAAW76F,SAEhBkvD,EAASk7B,iBAETpwF,KAAKk2G,kBAAkB5gG,EAC3B,EAEAkzG,EAAMxkH,UAAUkyG,kBAAoB,SAA4B5gG,GAC5D,IACI4wE,EADMlmF,KACQyqH,SACdjlE,EAFMxlD,KAEU4lD,WAEpB5lD,KAAK4xH,aAAe,KACpB5xH,KAAK0uH,cAAgB,MAEjBxoC,GAAa5wE,GAAWA,EAAQs9G,iBAChC1sC,EAAQ/vF,OAGZ6J,KAAKuyH,mBAAqB,KAC1BvyH,KAAKwyH,kBAAmB,EAEpBhtE,GACAA,EAAUrvD,MAElB,EAEAqyH,EAAMxkH,UAAU6uH,aAAe,WAC3B7yH,KAAKkpH,SACT,EAEAV,EAAMxkH,UAAU8uH,oBAAsB,WAC9B9yH,KAAK+yH,iBACLC,cAAchzH,KAAK+yH,gBACnB/yH,KAAK+yH,eAAiB,KAE9B,EAEAvK,EAAMxkH,UAAUwjH,eAAiB,WAM7B,IALA,IAEIlyG,EAAUtV,KAAKsV,QACf2pF,EAAc,GAAG92F,OAAOmN,EAAQ6hE,cAE3Bqa,EAAS,EAAGA,EAASyN,EAAY7kG,OAAQo3F,IAAU,CACxD,IAAIzmD,EAAOk0D,EAAYzN,IACD,IAAlBzmD,EAAKkoF,UAPAjzH,KAQEkzH,2BAA2BnoF,EAAMymD,EAEhD,CACJ,EAEAg3B,EAAMxkH,UAAUkvH,2BAA6B,SAAqCnoF,EAAMymD,GAUpF,IATA,IAOI8L,EALAv3C,EAAS/lD,KAAKsV,QAAQywC,OACtBmnE,EAAennE,EAAO3rD,OACtB+4H,EAAmB,IAAIpqG,GACvBm4B,EAAQ,GACRkyE,GAAW,EAGNv7C,EAAW,EAAGA,EAAWq1C,EAAcr1C,IAAY,CACxD,IAAIpsE,EAAIs6C,EAAO8xB,GACX8e,EAASlrF,EAAE0rE,eAAiBpsC,EAAKp6B,OAAUlF,EAAE0rE,cAA2B,IAAXqa,EAC7Dv6E,EAAOxL,EAAEwL,KACTimF,EAAajmF,EAAK7c,OAClB2F,EAAO0L,EAAEsxF,eAAiBpG,EAG9B,GAFAy8B,EAAWrzH,GAAQqzH,EAEfrzH,GAAQm9F,EAAa,EAKrB,IAFA,IAAIM,GAFJF,EAAW9O,GAAWzjD,EAAMkkC,GAASxjE,EAAEsxF,cAAe9lF,EAAK,MAEpCs3E,GAAetf,GAE7BokD,EAAS,EAAGA,EAASn2B,EAAYm2B,IAAU,CAChD,IAAIC,EAAUr8G,EAAKo8G,GACfptE,EAAWu3C,EAAM/xF,EAAEsxF,cAAeu2B,EAxBrCtzH,KAwBqDgkD,aAAayM,OAE/D6sC,GAAa61B,EAAiB/mH,IAAI65C,KAClC/E,EAAM9xC,KAAK,CAAE62C,EAAUqtE,IAElBh2B,GACD61B,EAAiBlqG,IAAIg9B,GAAU,GAG3C,CAER,CAEA,GAAI/E,EAAM9mD,OAAS,EAAG,CACdkjG,IACAp8C,EAyVhB,SAAqBqyE,EAAUC,QACT,IAAbA,IAAsBA,EAAW12D,IAMtC,IAJA,IAAIU,EAhBR,SAAmBA,EAAOg2D,QACJ,IAAbA,IAAsBA,EAAW12D,IAEtC,IAAK,IAAIpxD,EAAI,EAAGtR,EAASojE,EAAMpjE,OAAQsR,EAAItR,EAAQsR,IAC/C,GAAI8nH,EAASh2D,EAAM9xD,GAAI8xD,EAAM9xD,EAAI,IAAM,EAAG,CACtC8xD,EAAMzuC,KAAKykG,GACX,KACJ,CAGJ,OAAOh2D,CACX,CAKgBi2D,CAAUF,EAAUC,GAC5Bp5H,EAASojE,EAAMpjE,OACfhC,EAASgC,EAAS,EAAI,CAAEojE,EAAM,IAAO,GAEhC9xD,EAAI,EAAGA,EAAItR,EAAQsR,IACiB,IAArC8nH,EAASh2D,EAAM9xD,GAAI+iB,GAAKr2B,KACxBA,EAAOgX,KAAKouD,EAAM9xD,IAI1B,OAAOtT,CACX,CAvWwBs7H,CAAYxyE,GAAO,SAASryB,EAAGjkB,GACnC,OAAOkyD,GAAajuC,EAAE,GAAIjkB,EAAE,GAChC,KAGJ,IAAIxS,EAoWhB,SAAmBy0D,GAIf,IAHA,IAAI8mE,EAAW9mE,EAAKzyD,OAChBhC,EAAS,GAEJw7H,EAAQ,EAAGA,EAAQD,EAAUC,IAIlC,IAHA,IAAI1kD,EAAMriB,EAAK+mE,GACXC,EAAW3kD,EAAI90E,OAEV05H,EAAQ,EAAGA,EAAQD,EAAUC,IAClC17H,EAAO07H,GAAS17H,EAAO07H,IAAU,GACjC17H,EAAO07H,GAAO1kH,KAAK8/D,EAAI4kD,IAI/B,OAAO17H,CACX,CAnXyB27H,CAAU7yE,GACvBnW,EAAK8yB,WAAazlE,EAAO,EAC7B,MAAWg7H,IACProF,EAAK8yB,WAAa,GAE1B,EAEA2qD,EAAMxkH,UAAUgwH,YAAc,SAAsBjuE,GAIhD,IAHA,IAAI0pB,EAAcN,GAAAA,QAAAA,YAAiCppB,GAC/C3tD,GAAS,EAEJsT,EAAI,EAAGA,EAAI+jE,EAAYr1E,OAAQsR,IAAK,CACzC,IAAIoS,EAAQ2xD,EAAY/jE,GAOxB,GANIoS,IAAU8G,EACV9G,EAAQ,QAERA,GAAgB,SAGfqH,GAAQ4gC,EAAOjoC,IAAS,CACzB1lB,GAAS,EACT,KACJ,CACJ,CAEA,OAAOA,CACX,EAEAowH,EAAMxkH,UAAU8lH,qBAAuB,WACnC,IACImK,EADA3+G,EAAUtV,KAAKsV,SAGS,IAAxBA,EAAQuqE,cACRvqE,EAAQuqE,aAAc,EACtBo0C,GAAmB,GAGvBj0H,KAAKkpH,UAED+K,IACA3+G,EAAQuqE,aAAc,EAE9B,EAEA2oC,EAAMxkH,UAAUgyG,iBAAmB,SAA2B9f,EAAa+f,GACvE,IAII/0D,EAHAgU,EADMl1D,KACSyuE,UACfjpB,EAFMxlD,KAEU4lD,WAChB80B,GAAiBxlB,EAASwnC,WAAaxnC,EAASnP,QAAQmwC,GAW5D,GAPIh1C,EADAh4B,GAAQwxD,EAAcvnF,KAAM,CAAEsgF,GAAKN,GAAOC,KAClCle,EAASmhC,WAAU,SAASnxD,GAChC,OAAOA,EAAM6gB,OAAOzrD,QAAU47F,GAAehxD,EAAM5qC,QAAU27G,CACjE,IAEQ/gD,EAAS+gC,oBAAoBC,GAGrCl2F,KAAK8xH,uBAAyBp3C,EAAc3mF,SAAWmtD,EAAO,CAC9D,IAAIuvE,EAAiBv7D,EAASnP,OAAO3rD,OAAS,EAC1C8qC,EAAQgc,EAAM9mD,OAAS8mD,EAAM,GAAKA,EAEtClhD,KAAKuwH,wBAAwBrrF,EAAOurF,EAAgBvvE,EACxD,MACIsE,EAAUntD,KAAK6oD,EAEvB,EAEAsnE,EAAMxkH,UAAUyqH,uBAAyB,WACrC,OAAOzuH,KAAKyuE,UAAU+gB,WAAWp1F,QAAW4F,KAAKyqH,UAAYzqH,KAAKwqH,kBAAqBxqH,KAAKoqB,iBAAiB,CAAEyqD,GAAiBC,IACpI,EAEA0zC,EAAMxkH,UAAUkwH,uBAAyB,WACrC,IAAIlkH,EAAKw+G,EAET59F,GAAa5wB,KAAKxM,UAAWwc,EAAM,CAAC,GAAiB,UAAKhQ,KAAK6gG,WAAY7wF,IAEvEhQ,KAAKyuH,0BACL9+F,GAAW3vB,KAAKxM,UAAWg7H,EAAQ,CAAC,GAAmB,UAAKxuH,KAAK6gG,WAAY2tB,GAErF,EAEAhG,EAAMxkH,UAAUmwH,aAAe,SAAuB7+G,EAAS6nG,GAC3DyO,GAAmB5rH,KAAK2oH,iBAAkBrzG,GAC1CtV,KAAK2oH,iBAAmB5hG,GAAW/mB,KAAK2oH,iBAAkBrzG,GAC1DtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAK2oH,kBAE/BxL,IACAn9G,KAAK4oH,OAASzL,EACdn9G,KAAKgkD,aAAam5D,MAAQA,GAE9Bn9G,KAAK6oH,WAAW7oH,KAAKsV,QAAStV,KAAK4oH,QAEnC5oH,KAAKisH,uBACT,EAEAzD,EAAMxkH,UAAUowH,WAAa,SAAqB9+G,EAAS6nG,GACvDn9G,KAAKm0H,aAAa7+G,EAAS6nG,GAC3Bn9G,KAAKwnH,iBACLxnH,KAAKkyF,SACLlyF,KAAKk0H,wBACT,EAEA1L,EAAMxkH,UAAUqwH,aAAe,SAAuBrjE,GAClDhxD,KAAKgkD,aAAagN,IAAMC,QAAQD,GAC5BhxD,KAAKyuG,SAAiC,QAAtBzuG,KAAKyuG,QAAQt7G,MAC7B6M,KAAK6qH,iBAEb,EAEArC,EAAMxkH,UAAUswH,eAAiB,SAAyB7jE,GACtDzwD,KAAKgkD,aAAayM,KAAOA,CAC7B,EAEA+3D,EAAMxkH,UAAUuwH,oBAAsB,WAClCv0H,KAAK8pH,sBACT,EAEAtB,EAAMxkH,UAAUs/C,QAAU,WACtB,IAAItzC,EAAKw+G,EAETxuH,KAAKipH,YAAa,EAElBr4F,GAAa5wB,KAAKxM,UAAWwc,EAAM,CAAC,GAAmB,YAAKhQ,KAAKmuH,cAAen+G,EAAK8lE,IAAe91E,KAAK04G,mBAAoB1oG,EAAc,UAAKhQ,KAAK6gG,WAAY7wF,EAAe,WAAKhQ,KAAKouH,mBAAoBp+G,IAE1MhQ,KAAKysH,YACLzsH,KAAKysH,UAAUnpE,iBACRtjD,KAAKysH,WAGZzsH,KAAKkyH,wBACLthG,GAAa93B,WAAY01H,EAAQ,CAAC,GAAmB,UAAKxuH,KAAKkyH,uBAAwB1D,IAG3FxuH,KAAKkrH,eAELlrH,KAAK6qH,kBAEL7qH,KAAK8yH,qBACT,EAEAtK,EAAMxkH,UAAU6mH,gBAAkB,WAC9B,IAAIpc,EAAUzuG,KAAKyuG,QACfA,IACAA,EAAQrO,OAAO,aAAcpgG,KAAK8qH,2BAClCrc,EAAQrO,OAAO,aAAcpgG,KAAK+qH,2BAClCtc,EAAQnrD,UAERtjD,KAAKyuG,QAAU,KAEvB,EAEA+Z,EAAMxkH,UAAU4lH,mBAAqB,WACjC,IAAIkE,EAAa9tH,KAAK2pH,YAEtB,GAAImE,EACA,KAAOA,EAAW1zH,OAAS,GACvB0zH,EAAW3hG,QAAQm3B,SAG/B,EAEAklE,EAAMxkH,UAAUknH,aAAe,WAC3B,IAAIF,EAAQhrH,KAAKgqH,OAEbgB,IACAA,EAAM1nE,UACNtjD,KAAKgqH,OAAS,MAGlBhqH,KAAKk2G,oBAELl2G,KAAK4pH,qBAED5pH,KAAKyqH,UACLzqH,KAAKyqH,SAASnnE,UAGdtjD,KAAK4lD,YACL5lD,KAAK4lD,WAAWtC,UAGhBtjD,KAAK+rH,iBACL/rH,KAAK+rH,eAAezoE,iBACbtjD,KAAK+rH,gBAGZ/rH,KAAK6rH,YACL7rH,KAAK6rH,UAAUvoE,iBACRtjD,KAAK6rH,WAGZ7rH,KAAKgsH,kBACLhsH,KAAKgsH,gBAAgB1oE,iBACdtjD,KAAKgsH,gBAEpB,EAEOxD,CACX,CAxmDa,CAwmDXv3F,IAcF,SAASo5F,GAAoB9+E,EAAQ56B,GACjC,GAAI46B,EACA,IAAK,IAAI92B,EAAM,EAAGA,EAAM82B,EAAOnxC,OAAQqa,IACnC,GAAI82B,EAAO92B,GAAKwxC,WAAat1C,EACzB,MAAO,CAAE46B,EAAO92B,GAIhC,CAiEA,SAAS64G,GAA4BlQ,UAC1BA,EAAeoX,WACfpX,EAAeqX,cACfrX,EAAesX,mBACftX,EAAe3tD,YACf2tD,EAAeuX,oBACfvX,EAAewX,WACfxX,EAAeyX,aACfzX,EAAejzB,YACfizB,EAAe0X,oBACf1X,EAAe2X,eACf3X,EAAe4X,mBACf5X,EAAe6X,cACf7X,EAAe8X,mBACf9X,EAAe+X,YACf/X,EAAegY,eACfhY,EAAeryB,cACfqyB,EAAeiY,sBACfjY,EAAekY,iBACflY,EAAemY,iBACfnY,EAAeoY,iBACfpY,EAAeqY,iBACfrY,EAAesY,SAC1B,CAGA,SAASjzC,GAAWntB,GAGhB,IAFA,IAAIi9C,EAAS,CAAC,EAEL7mG,EAAI,EAAGA,EAAI4pD,EAAKl7D,OAAQsR,IAAK,CAClC,IAAIq/B,EAAOuqB,EAAK5pD,GACZotE,EAAW/tC,EAAKz1B,QAAQ3E,KACxBmoE,IACAy5B,EAAOz5B,GAAY/tC,EAAK2M,QAEhC,CAEA,OAAO66D,CACX,CAgDA,IAAIojB,GAAc,CAAE,OAAQ,cAE5B,SAAS/J,GAAmBn8B,EAAiBn6E,GACzC,IAAK,IAAIwI,KAASxI,EACd,IAAK4T,GAAQpL,EAAO63G,KAAgBrgH,EAAQrK,eAAe6S,GAAQ,CAC/D,IAAI83G,EAAatgH,EAAQwI,GACrB+3G,EAAgBpmC,EAAgB3xE,GACpC,GAAIqH,GAAQ0wG,GAAgB,CACxB,IAAIC,EAA2B,OAAfF,EACXE,IAAc3wG,GAAQywG,WAChBnmC,EAAgB3xE,GACnBg4G,UACOxgH,EAAQwI,IAEZ+3G,GAAiB5uG,GAAS2uG,IAC7B3uG,GAAS4uG,IACTjK,GAAmBiK,EAAeD,EAG9C,CACJ,CAER,CAEA,SAASrK,GAAkBz7B,GACvB,IAAK,IAAIr7E,EAAM,EAAGA,EAAMq7E,EAAM11F,OAAQqa,IAClCq7E,EAAMr7E,GAAKi5E,cAEnB,CAEA/3D,GAAkB6yF,GAAO,CACrBoC,SAAU,GACVlB,UAAW,CAAC,EACZn6B,OAAQ,CACJx7F,SAAS,EACTi+D,OAAQ,CAAC,GAEbmlB,aAAc,CAAC,EACfimC,eAAgB,CACZjqH,KAAM+/E,GACNj8D,KAAM,GACNuuC,UAAW,CACPzxD,SAAS,GAEbi+D,OAAQ,CAAC,EACT03B,eAAgB,CACZ31F,SAAS,IAGjBgyD,OAAQ,GACRw4D,aAAc,KACdr4B,QAAS,CACLnyF,SAAS,GAEb8rF,aAAa,EACbrhB,UAAW,CAAC,EACZtJ,SAAU,CAAC,EACX3gE,MAAO,CAAC,EACRw0F,MAAO,CAAC,EACRE,MAAO,CAAC,EACR6G,MAAO,CAAE,CAAC,GACV1+B,UAAU,EACV06D,UAAU,IAGd,UC53DIlR,GAAiB,SAAUmb,GAC3B,SAASnb,IACLmb,EAAmB7tH,MAAMlI,KAAM+H,UACnC,CAmCA,OAjCKguH,IAAqBnb,EAAc7vG,UAAYgrH,GACpDnb,EAAc52G,UAAY6G,OAAOS,OAAQyqH,GAAsBA,EAAmB/xH,WAClF42G,EAAc52G,UAAUqH,YAAcuvG,EAEtCA,EAAc52G,UAAU82G,YAAc,SAAsBj9B,EAAQ9lB,GAChE,IACIpN,EADO3qD,KAAKk1D,SAASiiB,aACL7hE,QAAQq1C,SACxBxe,EAAQwe,EAAW,CACnB4yB,WAAY,OACZ5yB,SAAU,UACV,CACA4yB,WAAY,SACZ5yB,SAAU,UAWd,MAAO,CACHzlB,MAPAylB,EACQ,IAAI1lB,GAAMjlC,KAAKk1D,SAASjlC,IAAIua,GAAIutB,EAAK5yB,SAASnf,GAE9C,IAAIif,GAAM8yB,EAAK5yB,SAASpf,GA3B3B,GAgCLomB,MAAOA,EAEf,EAEAyuE,EAAc52G,UAAU+2G,eAAiB,SAAyB71E,EAAO6yB,GACrE,OAAO/3D,KAAK86G,YAAY,CAAC,EAAG/iD,EAChC,EAEO6iD,CACX,CAvCqB,CAuCnBmb,IAEF,MCtCIC,GAAe,CAAEnjD,GAAKG,IAE1B,SAAS78E,GAAKvC,GAEV,IADA,IAAI+L,EAAQ,GACH8U,EAAM,EAAGA,EAAM7gB,EAASwG,OAAQqa,IAAO,CAC5C,IAAIrG,EAAQxa,EAAS6gB,GACrB9U,EAAM8U,GAAOrG,EAAM3X,MAAMC,QACzB0X,EAAM3X,MAAMC,QAAU,MAC1B,CAEA,OAAOiJ,CACX,CAEA,SAAStH,GAAKzE,EAAU+L,GACpB,IAAK,IAAI8U,EAAM,EAAGA,EAAM7gB,EAASwG,OAAQqa,IACrC7gB,EAAS6gB,GAAKhe,MAAMC,QAAUiJ,EAAM8U,EAE5C,CAEA,SAASwhH,GAAW94H,GAChB,OAAO4d,GAAS5d,GAAS,CAAEA,GAAUA,CACzC,CAEA,IAAI+4H,GAAa,SAAU1N,GACvB,SAAS0N,IACL1N,EAAMtgH,MAAMlI,KAAM+H,UACtB,CA8JA,OA5JKygH,IAAQ0N,EAAUnrH,UAAYy9G,GACnC0N,EAAUlyH,UAAY6G,OAAOS,OAAQk9G,GAASA,EAAMxkH,WACpDkyH,EAAUlyH,UAAUqH,YAAc6qH,EAElCA,EAAUlyH,UAAUolH,iBAAmB,SAA2B51H,GAC9DgV,EAAShV,EAAS,cACtB,EAEA0iI,EAAUlyH,UAAU0kH,aAAe,SAAuBl1H,GACtDg1H,EAAMxkH,UAAU0kH,aAAa1lH,KAAKhD,KAAMxM,GAExCwM,KAAKm2H,cAAgBr1G,KAAK8K,MAAM8E,GAAYl9B,GAASgB,MACzD,EAEA0hI,EAAUlyH,UAAUq9F,QAAU,WAC1B,IAAI7tG,EAAUwM,KAAKxM,QACfmM,EAAQxJ,GAAK3C,EAAQwuG,YAEzBhiG,KAAKm2H,cAAgBr1G,KAAK8K,MAAM8E,GAAYl9B,GAASgB,OAErD6D,GAAK7E,EAAQwuG,WAAYriG,GAEzB6oH,EAAMxkH,UAAUq9F,QAAQr+F,KAAKhD,KACjC,EAEAk2H,EAAUlyH,UAAU2pH,cAAgB,WAChC,IAAI/I,EAAe5kH,KAAKsV,QACpB8gH,EAAQp2H,KAAK2qH,eACb0L,EAAelgI,GAAKigI,EAAMp0B,YAE1B1rC,EAAQx9D,SAASomB,cAAc,QACnCo3C,EAAMqsC,UAAY,SAElByzB,EAAM52G,YAAY82C,GAElB,IAAIhhD,EAAUyR,GAAW,CACrBvyB,MAAOwL,KAAKs2H,WACZ7hI,OAAQi8B,GAAY0lG,GAAO3hI,OAC3BorF,YAAa+kC,EAAa/kC,aAC3B+kC,EAAa8E,UAAW,CACvB6M,QAAQ,EACRpqF,OAAO,IAgBX,OAbAzb,GAAY0lG,EAAO,CACf5hI,MAAO8gB,EAAQ9gB,MACfC,OAAQ6gB,EAAQ7gB,SAGpB2hI,EAAM12G,YAAY42C,GAElBj+D,GAAK+9H,EAAMp0B,WAAYq0B,GAEnBr2H,KAAKyuG,SACLzuG,KAAKyuG,QAAQnN,SAGVhsF,CACX,EAEA4gH,EAAUlyH,UAAU2mH,aAAe,WAC/B,IAAK3qH,KAAKo2H,MAAO,CACb,IAAIA,EAAQp2H,KAAKo2H,MAAQt9H,SAASomB,cAAc,QAChDlf,KAAKxM,QAAQgsB,YAAY42G,EAC7B,CACA,OAAOp2H,KAAKo2H,KAChB,EAEAF,EAAUlyH,UAAU0pH,gBAAkB,SAA0BG,GAC5D,IAAI34D,EAAWszD,EAAMxkH,UAAU0pH,gBAAgB1qH,KAAKhD,KAAM6tH,GAG1D,OAFA7tH,KAAKs2H,WAAat2H,KAAKm2H,eAAiBn2H,KAAKw2H,gBAAgBthE,GAEtDA,CACX,EAEAghE,EAAUlyH,UAAUwyH,gBAAkB,SAA0BthE,GAQ5D,IAPA,IAAI5/C,EAAUtV,KAAKsV,QACfha,EAASksB,GAAWlS,EAAQo0G,UAAUpuH,QACtCsxF,EAAS13B,EAAS03B,OAClBwpC,EAAQp2H,KAAK2qH,eACbvtG,EAAQ,EAGH1R,EAAI,EAAGA,EAAIkhF,EAAOxyF,OAAQsR,IAAK,CACpC,IAAI+qH,EAAe7pC,EAAOlhF,GACtBqyF,GAAe04B,EAAanhH,QAAQywC,QAAU,IAAI,GACtD,GAAKg4C,EAAL,CAIA,GAAIA,EAAY5qG,OAAS0/E,GACrB,OAzHO,IA4HX,GAAIkrB,EAAY5qG,OAAS6/E,GACrB,OA5HU,IA+Hd,GAAI+qB,EAAY5qG,OAASsgF,GACrB,OAAO/iD,GAAY0lG,GAAO3hI,OAG9B,IAAI0iF,EAAes/C,EAAat/C,aAChC,GAAIA,EAAc,CACd,IAAIyS,EAAczS,EAAalX,oBACzBw2D,EAAanhH,QAAQijE,WAAarvD,GAAQ60E,EAAY5qG,KAAM,CAAE+/E,GAAQqB,KAAqBkiD,EAAaj/C,cAAcp9E,OAAS,GAErIgjB,EAAQ0D,KAAK0K,IAAIpO,EAAOwsE,EAC5B,CApBA,CAqBJ,CAEA,IAAIhzF,EAAOwmB,EAAQ9H,EAAQohH,WAK3B,OAJI9/H,EAAO,IACPA,GAAQ0E,EAAOwsB,KAAOxsB,EAAOssB,OAG1BhxB,CACX,EAEAs/H,EAAUlyH,UAAU4oH,qBAAuB,SAA+Bt3G,GACtE,OAAO,IAAIslG,GAAc56G,KAAKyuE,UAAWn5D,EAC7C,EAEA4gH,EAAUS,iBAAmB,SAA2B7uD,GACpD,IAAIxyD,EAAU2gH,GAAWnuD,GA6BzB,OA1BIxyD,EADAlgB,EAAQkgB,GACE,CAAE8nG,eAAgB,CAAEnmG,KAAM3B,IAE1ByR,GAAW,CAAC,EAAGzR,IAGhBywC,SACTzwC,EAAQywC,OAAS,CAAE,CAAE9uC,KAAMg/G,GAAW3gH,EAAQ2B,SAGlD8P,GAAWzR,EAAS,CAChB8nG,eAAgB,CACZjqH,KAAMmiB,EAAQniB,SAIlB+1B,GAAQ5T,EAAQywC,OAAO,GAAG5yD,KAAM6iI,KAChC9sG,GAAQ5T,EAAQ8nG,eAAejqH,KAAM6iI,OACrC1gH,EAAUyR,GAAW,CAAC,EAAG,CACrBowD,aAAc,CACVqU,UAAW,CACPz3F,SAAS,KAGlBuhB,IAGAA,CACX,EAEO4gH,CACX,CAlKiB,CAkKf1N,IAEF7yF,GAAkBugG,GAAW,CACzBxM,UAAW,CACPpuH,OAAQ,GAEZuxH,aAAc,CACV94H,SAAS,EACTiiE,eAAgB,CACZjiE,SAAS,GAEbyqE,UAAW,CACPyI,aAAa,IAGrBm2C,eAAgB,CACZjqH,KAAM,OACNg3F,KAAM,CACF16B,KAAM,CACFj7D,MAAO,KAGfggI,IAAK,CACDp8C,OAAO,GAEX/sC,QAAS,EACT72C,MAAO,GACP8xD,QAAS,CACL4D,SAAU,MAEd1E,UAAW,CACPzxD,SAAS,GAEb8yD,OAAQ,CACJryD,MAAO,GAEX6nF,QAAS,CACLzlF,KAAM,EACN7C,SAAS,IAGjBmyF,QAAS,CACLnyF,SAAS,EACTinH,QAAQ,GAEZ7jC,aAAc,CACVqU,UAAW,CACPz3F,SAAS,EACTmyF,QAAS,CACLnyF,SAAS,KAIrBw7F,OAAQ,CACJx7F,SAAS,GAEb8rF,aAAa,EAEb62C,WAAY,EAEZ5mC,MAAO,CAAE,CAAE56C,MAAM,MAGrB,IC3PI0hF,GAAoB,SAAUxvF,GAC9B,SAASwvF,IACLxvF,EAAWl/B,MAAMlI,KAAM+H,UAC3B,CA+BA,OA7BKq/B,IAAawvF,EAAiB7rH,UAAYq8B,GAC/CwvF,EAAiB5yH,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACrE4yH,EAAiB5yH,UAAUqH,YAAcurH,EAEzCA,EAAiB5yH,UAAU2+C,MAAQ,WAC/B3iD,KAAK62H,gBAAkB3sH,WAAWmd,GAAcrnB,KAAKxM,QAAS,WAAWgiD,QAC7E,EAEAohF,EAAiB5yH,UAAU4+C,KAAO,SAAertC,GAC7C8R,GAAcrnB,KAAKxM,QAAS,CACxBgiD,QAASrqC,OAAOme,GAAiBtpB,KAAK62H,gBAAiB,EAAGthH,KAElE,EAEAqhH,EAAiB5yH,UAAUi/C,MAAQ,WAC/B7b,EAAWpjC,UAAUi/C,MAAMjgD,KAAKhD,MAChCqnB,GAAcrnB,KAAKxM,QAAS,CACxBkD,QAAS,OACT8+C,QAASrqC,OAAOnL,KAAK62H,kBAE7B,EAEAD,EAAiB5yH,UAAUgC,OAAS,WAChCohC,EAAWpjC,UAAUi/C,MAAMjgD,KAAKhD,MAChCqnB,GAAcrnB,KAAKxM,QAAS,CACxBgiD,QAASrqC,OAAOnL,KAAK62H,kBAE7B,EAEOD,CACX,CAnCwB,CAmCtBz2E,IAEF,MCrCA,SAASq3D,GAAUljH,EAAWmC,GAC1B,IAAIqgI,EAAMh+H,SAASomB,cAAc,OAMjC,OALA43G,EAAIxiI,UAAYA,EACZmC,IACAqgI,EAAIrgI,MAAMu9B,QAAUv9B,GAGjBqgI,CACX,CAEA,IAAIC,GAAiB,SAAU9lG,GAC3B,SAAS8lG,EAAc70G,EAAW8hC,EAAc1uC,GAC5C2b,EAAMjuB,KAAKhD,MAEXA,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,GAC5CtV,KAAKkiB,UAAYA,EACjBliB,KAAKgkD,aAAeA,EAEpB,IAAI3Y,EAAUhkB,GAAcnF,EAAW,CAAE,cAAe,eACxDliB,KAAKg3H,aAAe,CAChBrvG,IAAK0jB,EAAQta,WACbjJ,KAAMujB,EAAQva,aAGlB9wB,KAAK63G,iBACL31F,EAAU1C,YAAYxf,KAAKxM,QAC/B,CAyGA,OAvGKy9B,IAAQ8lG,EAAchsH,UAAYkmB,GACvC8lG,EAAc/yH,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACxD+yH,EAAc/yH,UAAUqH,YAAc0rH,EAEtCA,EAAc/yH,UAAU6zG,eAAiB,WACrC,IAAIrkH,EAAUwM,KAAKxM,QAAUgkH,GAAU,mBAAoB,2DACvDtxB,EAAUlmF,KAAKkmF,QAAUsxB,GAAU,6BACnCyf,EAASj3H,KAAKi3H,OAASzf,GAAU,YAErCtxB,EAAQyc,UAAY,SAEpBnvG,EAAQgsB,YAAY0mE,GACpB1yF,EAAQgsB,YAAYy3G,EACxB,EAEAF,EAAc/yH,UAAU3L,KAAO,SAAekrC,EAAMjkC,EAAI+pC,GACpD,IAAI92C,EAAMyN,KACNxM,EAAUjB,EAAIiB,QACd8hB,EAAU/iB,EAAI+iB,QACd2hH,EAAS1kI,EAAI0kI,OACb/wC,EAAU3zF,EAAI2zF,QACdz5C,EAAS4uB,GAAO2B,GAAOz5B,GAAQy5B,GAAO19D,EAAKikC,GAAQ,GACnD2zF,EAA6B,GAAf7tF,EAAK70C,QACnB2iI,EAAS9tF,EAAKlE,SAASpf,EAAImxG,EAI3BllG,GAHSqX,EAAKlE,SAASpf,EACHoxG,IACZ7hH,EAAQkW,IAAMlW,EAAQqZ,KAE9BrJ,EAASmnB,EAASn3B,EAAQqZ,IAC1Bz1B,EAAO8G,KAAKgkD,aAAayM,KAAKtvC,OAAO7L,EAAQ6L,OAAQoiB,EAAMjkC,GAC3D0oB,EAAWI,GAAY9S,GAE3BtV,KAAKo3H,mBAEAp3H,KAAKq3H,WACNhwG,GAAc7zB,EAAS,CACnB8jI,WAAY,SACZ5gI,QAAS,UAEbsJ,KAAKq3H,UAAW,GAGhBrvG,IACA9uB,EAAO8uB,EAAS,CACZub,KAAMA,EACNjkC,GAAIA,KAIZ4mF,EAAQyc,UAAYzpG,EACpBmuB,GAAc6+D,EAAS,CACnBp+D,KAAMuhB,EAAKlE,SAASpf,EAAImgE,EAAQ37E,YAAc,EAC9Cod,IAAK0hB,EAAKkB,KAGd,IAAIgtF,EAAelwG,GAAc6+D,EAAS,CAAE,YAAa,iBAAkB,WAE3E7+D,GAAc4vG,EAAQ,CAClBziI,MAAO0iI,EACPpvG,KAAMqvG,EAAS7xG,EAAS0M,EACxBrK,IAAK0hB,EAAKkB,GAAKgtF,EAAattH,UAAYstH,EAAaC,eAAiBD,EAAa9iI,OAAS,IAGhG4yB,GAAc7zB,EAAS,CACnB8jI,WAAY,WAEpB,EAEAP,EAAc/yH,UAAUozH,iBAAmB,WACnCp3H,KAAKy3H,cACLhlH,aAAazS,KAAKy3H,cAGlBz3H,KAAK03H,gBACL13H,KAAK03H,eAAe1xH,QAE5B,EAEA+wH,EAAc/yH,UAAU7N,KAAO,WAC3B,IAAIqrC,EAASxhC,KAEbA,KAAKo3H,mBAELp3H,KAAKy3H,aAAe7wH,YAAW,WAC3B46B,EAAO61F,UAAW,EAClB71F,EAAOk2F,eAAiB,IAAId,GAAiBp1F,EAAOhuC,SACpDguC,EAAOk2F,eAAe/0E,QACtBnhB,EAAOk2F,eAAe70E,MAC1B,GAAG7iD,KAAKsV,QAAQqiH,UACpB,EAEAZ,EAAc/yH,UAAUs/C,QAAU,WAC9BtjD,KAAKo3H,mBACDp3H,KAAKkiB,WACLliB,KAAKkiB,UAAUxC,YAAY1f,KAAKxM,gBAE7BwM,KAAKkiB,iBACLliB,KAAKgkD,oBACLhkD,KAAKxM,eACLwM,KAAKkmF,eACLlmF,KAAKi3H,MAChB,EAEOF,CACX,CA1HqB,CA0HnB9lG,IAEF0E,GAAkBohG,GAAe,CAC7B51G,OAAQ,gBACRw2G,UAAW,MAGf,UC/IIC,GAAiB,aACjBC,GAAiBD,GCSjBE,GAAa,SAAU7mG,GACvB,SAAS6mG,EAAU/mE,GACf,IAAI/gD,EAEJihB,EAAMjuB,KAAKhD,MAEXA,KAAK+wD,MAAQA,EACb,IAAIz7C,EAAUtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASy7C,EAAMz7C,QAAQ6V,WACpE4iG,EAASz4G,EAAQy4G,OACjBA,IACAA,EAAOxqF,KAAOvjC,KAAKiwD,UAAU89D,EAAOxqF,MACpCwqF,EAAOzuH,GAAKU,KAAKiwD,UAAU89D,EAAOzuH,KAGjC6lB,GAAQ7P,EAAQyiH,KAAKhkI,WACtBuhB,EAAQyiH,KAAKhkI,QAAUuhB,EAAQvhB,SAGnCiM,KAAKg4H,cAAgB,IAAIruG,GAAiB3pB,OAAQgQ,EAAM,CAAC,GAAW,KAAI,QAASA,EAAY,QAAI,WAAYA,EAAQ,KAAI,QAASA,EAAY,QAAI,WAAYA,IAC9J+gD,EAAM7qB,YAAYlmC,KAAKg4H,cAC3B,CAmdA,OAjdK/mG,IAAQ6mG,EAAU/sH,UAAYkmB,GACnC6mG,EAAU9zH,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpD8zH,EAAU9zH,UAAUqH,YAAcysH,EAElCA,EAAU9zH,UAAUisD,UAAY,SAAsB9yD,GAClD,OAAO8yD,GAAUjwD,KAAK+wD,MAAM/M,aAAayM,KAAMtzD,EACnD,EAEA26H,EAAU9zH,UAAUi0H,MAAQ,WACpBj4H,KAAK+3G,YACL/3G,KAAK+3G,UAAUz0D,UACftjD,KAAK+3G,UAAY,MAGjB/3G,KAAK+3H,OACL/3H,KAAK+3H,KAAKz0E,UACVtjD,KAAK+3H,KAAO,KAEpB,EAEAD,EAAU9zH,UAAUs/C,QAAU,WACtBtjD,KAAK+wD,QACL/wD,KAAK+wD,MAAM5qB,eAAenmC,KAAKg4H,sBACxBh4H,KAAK+wD,OAGhB/wD,KAAKi4H,OACT,EAEAH,EAAU9zH,UAAUkuF,OAAS,WACzBlyF,KAAKk4H,cACLl4H,KAAKm4H,eACT,EAEAL,EAAU9zH,UAAUm0H,cAAgB,WAChC,IAkbOnoH,EAjbH+gD,EADM/wD,KACM+wD,MACZz7C,EAFMtV,KAEQsV,QACdy1B,EAAO/qC,KAAKo4H,WACZhtE,EAAQrgB,EAAKqzB,eACbzvC,EAAMy8B,EAAMz8B,IACZnD,EAAM4/B,EAAM5/B,IACZ07F,EAAQ5xG,EAAQy4G,OAChBxqF,EAAO2jF,EAAM3jF,KACbjkC,EAAK4nH,EAAM5nH,GACXm5G,EAAayO,EAAMzO,WACnB4f,GAuaGroH,EAvae+6B,EAwa1ButF,GAAat0H,UAAYgM,EAClB,IAAIsoH,IAvawB,IAA3BvtF,EAAKk1B,oBAITjgE,KAAKi4H,QAGLI,EAAUpoG,IAAM8a,EAAK9a,IAErBjwB,KAAK+3G,UAAY,IAAIL,GAAU3mD,EAAOsnE,EAAW,CAC7C1pG,IAAKA,EACLnD,IAAKA,EACL+X,KAAMA,GAAQ5U,EACdrvB,GAAIA,GAAMksB,EACVitF,WAAYhpF,GAAegpF,EAAY,CAAEjF,KAAM,SAC/Cz/G,QAASuhB,EAAQvhB,SAClB,IAAI41B,GAAiB3pB,KAAM,CAC1Bu4H,YAAa,eACbxK,OAAQ,UACRyK,UAAW,gBAGXljH,EAAQyiH,KAAKhkI,UACbiM,KAAK+3H,KAAO,IAAIhB,GAAchmE,EAAMv9D,QAASu9D,EAAM/M,aAAc,CAC7Dr1B,IAAKA,EACLnD,IAAKA,EACLxD,SAAUI,GAAY9S,EAAQyiH,MAC9B52G,OAAQ7L,EAAQyiH,KAAK52G,UAGjC,EAEA22G,EAAU9zH,UAAU4iH,SAAW,WAC3B,IAGIr0H,EAHWyN,KAAK+wD,MAAM28D,iBAAgB,GACtBvyB,kBAAgC,WAErC/8B,eACXzvC,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IAEVuiG,EAAS/tH,KAAKsV,QAAQy4G,QAAU,CAAC,EACjCxqF,EAAOwqF,EAAOxqF,MAAQ5U,EACtB4U,EAAO5U,IACP4U,EAAO5U,GAGX,IAAIrvB,EAAKyuH,EAAOzuH,IAAMksB,EAClBlsB,EAAKksB,IACLlsB,EAAKksB,GAGTxrB,KAAKsV,QAAQy4G,OAAShnG,GAAW,CAAC,EAAGgnG,EAAQ,CACzCxqF,KAAMA,EACNjkC,GAAIA,IAGRU,KAAKy4H,YACT,EAEAX,EAAU9zH,UAAUk0H,YAAc,SAAsBQ,GACpD,IAAIxjE,EAAWl1D,KAAK+wD,MAAM0d,UAEtBvZ,GACAA,EAASg9B,OAAOzjE,GAAKymC,EAAS46B,OAAQ4oC,EAE9C,EAEAZ,EAAU9zH,UAAU20H,aAAe,WAC/B,IAAI5nE,EAAQ/wD,KAAK+wD,MACbmE,EAAWnE,EAAM0d,UACjBmqD,EAAa1jE,EAAS46B,MAAMp1E,MAAM,GAAI,GAG1Cw6C,EAASwnC,UAAY3rC,EAAMz7C,QAAQywC,OACnCmP,EAAS5/C,QAAQ6hE,aAAepmB,EAAMz7C,QAAQ6hE,aAC9CjiB,EAASkoC,yBAETloC,EAASg9B,OAAO0mC,EACpB,EAEAd,EAAU9zH,UAAU60H,MAAQ,SAAgB7lI,GACxC,IAUIyvD,EATAsO,EADM/wD,KACM+wD,MACZgnD,EAFM/3G,KAEU+3G,UAChBl6B,EAAS9sB,EAAM0uC,kBAAkBzsG,EAAEgpF,eACnC88C,EAAgB94H,KAAKo4H,WACrBW,EAAYD,EAAc16D,eAC1B46D,EAAcF,EAAczjE,KAAKplC,IAAI4Z,cAAcg0C,GACnD9yC,EAAOgmB,EAAM0d,UAAU0I,aACvBz/B,EAAQ1kD,EAAEyvF,WAAW13C,EAAKz1B,QAAQ3E,MAClCo9G,EAAS/tH,KAAKsV,QAAQy4G,OAG1B,GAAKr2E,IAASshF,GAAgBjhB,EAA9B,CAKIt1D,EADAsrE,EAAOxqF,MAAQwqF,EAAOzuH,GACX09D,GAAO+wD,EAAOzuH,IAAM09D,GAAO+wD,EAAOxqF,MAElCy5B,GAAO+6C,EAAUziG,QAAQhW,IAAM09D,GAAO+6C,EAAUziG,QAAQiuB,MAGvE,IAAIA,EAAO83B,GAAO3sC,GACdsuC,GAAOtlB,EAAM/oB,KACboqG,EAAUpqG,IAAKquC,GAAO+7D,EAAUvtG,KAAOi3B,IAGvCnjD,EAAK+7D,GAAO3sC,GACZsuC,GAAOz5B,GAAQkf,EACfua,GAAO+7D,EAAUpqG,KAAO8zB,EAAUs2E,EAAUvtG,MAGhDxrB,KAAKsV,QAAQy4G,OAAS,CAAExqF,KAAMA,EAAMjkC,GAAIA,GAEpCU,KAAKsV,QAAQ2jH,WACbj5H,KAAKy4H,aACLz4H,KAAK24H,gBAGT5gB,EAAU9uF,IAAIsa,EAAMjkC,GAEpBU,KAAKk5H,SAAS31F,EAAMjkC,EA3BpB,CA4BJ,EAEAw4H,EAAU9zH,UAAUm1H,SAAW,WAC3Bn5H,KAAKy4H,aACLz4H,KAAK+iC,SACL/iC,KAAK24H,eAED34H,KAAK+3H,MACL/3H,KAAK+3H,KAAK5hI,MAElB,EAEA2hI,EAAU9zH,UAAUo1H,cAAgB,WAChC,IACIC,EADMr5H,KACsB+3G,UAAUziG,QACtCiuB,EAAO81F,EAAsB91F,KAC7BjkC,EAAK+5H,EAAsB/5H,GAC3ByuH,EAJM/tH,KAIOsV,QAAQy4G,OAEzBA,EAAOxqF,KAAOA,EACdwqF,EAAOzuH,GAAKA,CAChB,EAEAw4H,EAAU9zH,UAAUy0H,WAAa,WAC7B,IACI1K,EADM/tH,KACOsV,QAAQy4G,YAAwB,IAAXA,IAAoBA,EAAS,CAAE,GAMrE,IALA,IACIzgC,EAHMttF,KAEM+wD,MACIz7C,QAAQ6hE,aACxB5zC,EAAOwqF,EAAOxqF,KACdjkC,EAAKyuH,EAAOzuH,GAEPmV,EAAM,EAAGA,EAAM64E,EAAQlzF,OAAQqa,IAAO,CAC3C,IAAIs2B,EAAOuiD,EAAQ74E,GACfs2B,EAAKsqB,OAASuiE,KACd7sF,EAAKpc,IAAM4U,EACXwH,EAAKvf,IAAMlsB,EAEnB,CACJ,EAEAw4H,EAAU9zH,UAAU++B,OAAS,WACzB,IACIguB,EADM/wD,KACM+wD,MACZg9D,EAFM/tH,KAEOsV,QAAQy4G,OAEzB,GAAKh9D,EAAM3mC,iBAAiB,CAAE,oBAA9B,CAIA,IAAIguG,EAAWp4H,KAAKo4H,WAChBpwH,EAAO,CACPu7B,KAAMwqF,EAAOxqF,KACbjkC,GAAIyuH,EAAOzuH,IAGf,GAA8B,aAA1B84H,EAAS9iH,QAAQniB,KAAqB,CACtC,IAAIg1E,EAAc,IAAI1D,GAAiB19C,GAAW,CAC9Co2C,SAAU,OACXpM,EAAMz7C,QAAQ6hE,aAAa,GAAI,CAC9BtZ,WAAY,CAAEkwD,EAAOxqF,KAAMwqF,EAAOzuH,MAClCyxD,EAAM/M,cAAc1uC,QAExBtN,EAAKu7B,KAAOm4B,GAAYyM,EAAYx5C,KAAMw5C,EAAY9K,aAAc8K,EAAYhL,UAChFn1D,EAAK1I,GAAKo8D,GAAYyM,EAAY38C,IAAK28C,EAAY9K,aAAc8K,EAAYhL,SACjF,CAEAn9D,KAAK+wD,MAAMhnC,QAAQ,kBAAmB/hB,EAnBtC,CAoBJ,EAEA8vH,EAAU9zH,UAAUs1H,MAAQ,SAAgBtmI,GACxC,IAAIT,EAAMyN,KACN+qC,EAAOx4C,EAAIw+D,MAAM0d,UAAU0I,aAC3B4gC,EAAYxlH,EAAIwlH,UAChBhsB,EAAcx5F,EAAI+iB,QAClBy4G,EAAShiC,EAAYgiC,OACrBkL,EAAWltC,EAAYktC,SACvBb,EAAWp4H,KAAKo4H,WAChB9sG,EAAQt4B,EAAEs4B,MAEd,GAAKysF,EAAL,CAIA,IAAIwhB,EAASnB,EAASz4D,cAAco4C,EAAUziG,QAAQiuB,MAClDi2F,EAAOpB,EAASz4D,cAAco4C,EAAUziG,QAAQhW,IAChDu+E,EAAS79E,KAAK+wD,MAAM0uC,kBAAkBzsG,EAAEgpF,eAE5ChpF,EAAEgpF,cAAclsB,iBAEZhvC,KAAKC,IAAIuK,GAAS,IAClBA,GA7RY,GAgSZkuG,EAAOD,EAAS,GAChBxhB,EAAUvE,KAAKloF,EAAOuyD,GACtB79E,KAAKo5H,kBAELruF,EAAKz1B,QAAQqZ,IAAMo/F,EAAOxqF,KAC1BwqF,EAAOxqF,KAAOwH,EAAKo1B,YAAYntE,EAAEs4B,MAAQtrB,KAAK+wD,MAAMy+D,sBAAuB3xC,GAAQlvD,KAGnFsqG,IACAj5H,KAAKy4H,aACLz4H,KAAK24H,gBAGT5gB,EAAU9uF,IAAI8kG,EAAOxqF,KAAMwqF,EAAOzuH,IAElCU,KAAKk5H,SAASl5H,KAAKsV,QAAQy4G,OAAOxqF,KAAMvjC,KAAKsV,QAAQy4G,OAAOzuH,GA3B5D,CA4BJ,EAEAw4H,EAAU9zH,UAAUy1H,SAAW,SAAmBzmI,GAC9CgN,KAAKm5H,SAASnmI,EAClB,EAEA8kI,EAAU9zH,UAAUk1H,SAAW,SAAmB31F,EAAMjkC,GACpD,IAAI41D,EAAWl1D,KAAK+wD,MAAM0d,UAEtBzuE,KAAK+3H,MACL/3H,KAAK+3H,KAAK1/H,KAAKkrC,EAAMjkC,EAAI41D,EAASqgC,gBAE1C,EAEAuiC,EAAU9zH,UAAUgqH,aAAe,SAAuBh7H,GACtD,OAAOgN,KAAK+wD,MAAMi9D,aAAah7H,EACnC,EAEA8kI,EAAU9zH,UAAUiqH,QAAU,SAAkBj7H,GAG5C,OAFAgN,KAAKk5H,SAASlmI,EAAEuwC,KAAMvwC,EAAEsM,IAEjBU,KAAK+wD,MAAMk9D,QAAQj7H,EAC9B,EAEA8kI,EAAU9zH,UAAUkqH,WAAa,SAAqBl7H,GAUlD,OATIgN,KAAK+3H,MACL/3H,KAAK+3H,KAAK5hI,OAGd6J,KAAKo5H,gBACLp5H,KAAKy4H,aACLz4H,KAAK+iC,SACL/iC,KAAK24H,eAEE34H,KAAK+wD,MAAMm9D,WAAWl7H,EACjC,EAEA8kI,EAAU9zH,UAAUo0H,SAAW,WAC3B,IAAIljE,EAAWl1D,KAAK+wD,MAAM0d,UAE1B,GAAIvZ,EACA,OAAOA,EAASimC,kBAAgC,UAExD,EAEA28B,EAAU9zH,UAAU+pH,OAAS,SAAiBxqF,EAAMjkC,GAChD,IAAIyuH,EAAS/tH,KAAKsV,QAAQy4G,OAa1B,OAXIxqF,GAAQjkC,IACRyuH,EAAOxqF,KAAOvjC,KAAKiwD,UAAU1sB,GAC7BwqF,EAAOzuH,GAAKU,KAAKiwD,UAAU3wD,GAE3BU,KAAKy4H,aACLz4H,KAAK+iC,SACL/iC,KAAK24H,eAEL34H,KAAK+3G,UAAU9uF,IAAIsa,EAAMjkC,IAGtB,CACHikC,KAAMwqF,EAAOxqF,KACbjkC,GAAIyuH,EAAOzuH,GAEnB,EAEAw4H,EAAUn1E,MAAQ,SAAgBrtC,EAASmzG,GAIvC,QAHiB,IAAZnzG,IAAqBA,EAAU,CAAC,QACf,IAAjBmzG,IAA0BA,EAAe,CAAC,IAE3CnzG,EAAQokH,OAAZ,CAGApkH,EAAQokH,QAAS,EAEjB,IAAIC,EAAc5yG,GAAW,CAAC,EAAG0hG,EAAat9F,UAAW7V,EAAQ6V,WAC7D2kE,EAAQx6E,EAAQw6E,MAAQ,GAAG3nF,OAAOmN,EAAQw6E,OAC1CD,EAAc9oE,GAAW,CAAC,EAAG4yG,EAAYtkE,KAAM,CAAE1kD,KAAMinH,KAEtD+B,EAAY5lI,UACb87F,EAAY97F,SAAU,EACtB87F,EAAYp7F,OAAS,IAGzBq7F,EAAM1gF,KAAKygF,GAEXioC,EAAU8B,WAAWtkH,EAASqkH,GAC9B7B,EAAU+B,aAAavkH,EAASqkH,EAAalR,EAf7C,CAgBJ,EAEAqP,EAAU8B,WAAa,SAAqBtkH,EAASqkH,GACjD,IAAI5zE,EAAS4zE,EAAY5zE,QAAU,GAC/Bi4C,EAAe1oF,EAAQ6hE,aAAe,GAAGhvE,OAAOmN,EAAQ6hE,cACxD2iD,EAAYxkH,EAAQkpD,UAAY,GAAGr2D,OAAOmN,EAAQkpD,WAGlDu7D,EAA6C,IADvB1rC,GAAmBtoC,EAAQ4uB,IACfv6E,OAElCqP,EAAOsd,GAAW,CAClB5zB,KAAM,OACNkiE,KAAMuiE,GACNn1D,iBAAkBs3D,EAClBjgE,UAAWigE,EACXC,WAAW,EACX3nE,WAAY,CAAEt+D,SAAS,GACvBmyF,QAAS,CAAEnyF,SAAS,GACpBi+D,OAAQ,CAAEpP,KAAM,GAChBqwE,SAAU0G,EAAYM,iBACtBx2D,kBAAmB,CACfhC,QAAS,CAAE,GACXlG,MAAO,CAAE,EAAG,GACZmG,KAAM,CAAE,EAAG,GACXC,MAAO,GACPC,OAAQ,CAAE,GACVC,MAAO,CAAE,MAGb7pD,EAAO2hH,EAAYxiD,aAEvB6mB,EAAa5uF,KACT2X,GAAW,CAAC,EAAGtd,EAAM,CACjBi6D,cAAe,KAChB1rD,EAAM,CACLrH,KAAMknH,GACNtjI,MAAO,KACP4oE,SAAU,MACVE,aAAc,OACdrL,OAAQ,CAAEj+D,SAAS,GACnBs+D,WAAY,CAAEt+D,SAAS,KACvBgzB,GAAW,CAAC,EAAGtd,EAAMuO,EAAM,CAC3BrH,KAAMknH,oBACNn0D,cAAe,GACfrG,aAAc,OACdrL,OAAQ,CAAEnV,SAAU,IACpBoY,UAAW,GACXwO,kBAAmB,CACfhC,QAAS,IAEbgyB,UAAU,IACV1sE,GAAW,CAAC,EAAGtd,EAAMuO,EAAM,CAC3BrH,KAAMknH,mBACNn0D,cAAe,IACfrR,WAAY,CACR79D,MAAO,IAEXygE,UAAW,GACX1gE,MAAO,KACPy9D,OAAQ,CAAEj+D,SAAS,EAAOw/D,QAAQ,GAClCkgC,UAAU,KAIlBqmC,EAAU1qH,KAAK2X,GAAW,CACtBpW,KAAMknH,GACNxiE,KAAMuiE,GACN5hE,eAAgB,CACZjiE,SAAS,GAEbA,SAAS,GACV4lI,EAAYn7D,WACnB,EAEAs5D,EAAU+B,aAAe,SAAuBvkH,EAASqkH,EAAalR,GAMlE,IALA,IAAI1iE,EAASzwC,EAAQywC,OAASzwC,EAAQywC,QAAU,GAC5Cm0E,EAAkB,GAAG/xH,OAAOwxH,EAAY5zE,QAAU,IAClDw4D,EAAekK,EAAalK,aAC5BznC,EAAW6iD,EAAYvc,eAElB3oG,EAAM,EAAGA,EAAMylH,EAAgB9/H,OAAQqa,IAC5CsxC,EAAO32C,KACH2X,GAAW,CACPyH,MAAO+vF,EAAa9pG,EAAM8pG,EAAankH,QACvC2iG,cAAe48B,EAAYQ,UAC3BnpC,iBAAiB,EACjB9K,QAAS,CACLnyF,SAAS,IAEd+iF,EAAUojD,EAAgBzlH,GAAM,CAC/Bs2B,KAAM8sF,GACN1gD,aAAc0gD,GACd5E,SAAU0G,EAAYM,mBAItC,EAEOnC,CACX,CAxeiB,CAwef7mG,IAEF,SAASqnG,KAAiB,CAM1B,UCjfI8B,GAAc,SAAU5R,GACxB,SAAS4R,IACL5R,EAAMtgH,MAAMlI,KAAM+H,UACtB,CA0JA,OAxJKygH,IAAQ4R,EAAWrvH,UAAYy9G,GACpC4R,EAAWp2H,UAAY6G,OAAOS,OAAQk9G,GAASA,EAAMxkH,WACrDo2H,EAAWp2H,UAAUqH,YAAc+uH,EAEnCA,EAAWp2H,UAAUslE,cAAgB,SAAwBh0D,EAASmzG,GAClE,IAAIj0H,EAAQk8B,GAAY1wB,KAAKxM,SAASgB,O5XPnB,I4XQf2oH,EAAQsL,EAER4R,EAAgB,CAChBjd,eAAgB,CACZrgB,cAAeznF,EAAQ6kH,WAE3BtN,aAAc,CACV11C,aAAc,CACVxmE,KAAM,UACNqlD,eAAgB,CACZjiE,SAAS,GAEbi+D,OAAQ,CACJpP,KAAM,GAEVyP,WAAY,CACRt+D,SAAS,GAEb2vE,cAAe5iD,KAAK8K,MAAMp3B,EA/BpB,OAoCd2oH,IACAA,EAAQp2F,GAAW,CAAC,EAAGo2F,EAAOkd,IAGlCvC,GAAAA,MAAgBxiH,EAAS6nG,GAEzBqL,EAAMxkH,UAAUslE,cAActmE,KAAKhD,KAAMsV,EAAS6nG,EACtD,EAEAid,EAAWp2H,UAAUolH,iBAAmB,SAA2B51H,GAC/DgV,EAAShV,EAAS,uBACtB,EAEA4mI,EAAWp2H,UAAUowH,WAAa,SAAqB9+G,GACnDtV,KAAKs6H,mBACL9R,EAAMxkH,UAAUowH,WAAWpxH,KAAKhD,KAAMsV,EAC1C,EAEA8kH,EAAWp2H,UAAUuwH,oBAAsB,WACvC,IAAI10C,EAAc7/E,KAAKsV,QAAQuqE,YAE/B7/E,KAAKsV,QAAQuqE,aAAc,EAC3B7/E,KAAKu6H,cACLv6H,KAAKsV,QAAQuqE,YAAcA,CAC/B,EAEAu6C,EAAWp2H,UAAUq9F,QAAU,WAC3BrhG,KAAKu0H,qBACT,EAEA6F,EAAWp2H,UAAUklH,QAAU,WAC3B,IAAI/9F,EAAYnrB,KAAKmrB,WAEhBnrB,KAAKw6H,UAAYrvG,GAAaA,EAAU7V,QAAQmlH,cACjDtvG,EAAUwtG,eAEV34H,KAAKu6H,aAEb,EAEAH,EAAWp2H,UAAUw2H,OAAS,WAC1B,IAAIllH,EAAUtV,KAAKsV,QAEf2hE,EAActuD,GADL,GAAGxgB,OAAOmN,EAAQywC,OAAQzwC,EAAQ6V,UAAU46B,SAC1B,SAASt6C,GAAK,OAAOA,GAAKA,EAAE1X,OAAS,IAAGqG,OACnEsgI,EAAQ16H,KAAK26H,eAAiB1jD,EAGlC,OAFAj3E,KAAK26H,aAAe1jD,EAEbyjD,CACX,EAEAN,EAAWp2H,UAAUu2H,YAAc,WAC/B,IAAIpvG,EAAYnrB,KAAKmrB,UAEhBA,IACDA,EAAYnrB,KAAKmrB,UAAY,IAAI2sG,GAAU93H,MAC3CA,KAAK+pB,QAAQ,mBAAoB,CAAEoB,UAAWA,KAGlDA,EAAU8sG,QACV9sG,EAAUy7F,WAEV4B,EAAMxkH,UAAUklH,QAAQlmH,KAAKhD,MAE7BmrB,EAAUgtG,eACd,EAEAiC,EAAWp2H,UAAUksH,oBAAsB,SAA8BryC,GACrE,IACIxoB,EADWr1D,KAAKyuE,UACA6nB,YAAYzY,GAE5BxoB,GAAQA,EAAK//C,QAAQ3E,OAASinH,GAC9B53H,KAAKk2G,oBAELsS,EAAMxkH,UAAUksH,oBAAoBltH,KAAKhD,KAAM69E,EAEvD,EAEAu8C,EAAWp2H,UAAUwjH,eAAiB,WAClCgB,EAAMxkH,UAAUwjH,eAAexkH,KAAKhD,MACpCA,KAAK46H,yBACT,EAEAR,EAAWp2H,UAAU42H,wBAA0B,WAI3C,IAHA,IACI/8D,EADAohC,EAAc,GAAG92F,OAAOnI,KAAKsV,QAAQ6hE,cAGhCqa,EAAS,EAAGA,EAASyN,EAAY7kG,OAAQo3F,IAAU,CACxD,IAAIzmD,EAAOk0D,EAAYzN,GACnBzmD,EAAKp6B,OAASknH,GACdh6D,EAAa9yB,EAAK8yB,WACXA,GAAc9yB,EAAKsqB,OAASuiE,KACnC7sF,EAAK8yB,WAAaA,EAE1B,CACJ,EAEAu8D,EAAWp2H,UAAUs2H,iBAAmB,WAChCt6H,KAAKmrB,YACLnrB,KAAKmrB,UAAUm4B,UACftjD,KAAKmrB,UAAY,KAEzB,EAEAivG,EAAWp2H,UAAUs/C,QAAU,WAC3BtjD,KAAKs6H,mBACL9R,EAAMxkH,UAAUs/C,QAAQtgD,KAAKhD,KACjC,EAEAo6H,EAAWp2H,UAAU4qH,mBAAqB,SAA6B57H,GACnE,IAAI6qF,EAAS79E,KAAKy/F,kBAAkBzsG,GAChCqiE,EAAOr1D,KAAKyuE,UAAU6nB,YAAYzY,GAEtC,OAAO2qC,EAAMxkH,UAAU4qH,mBAAmB5rH,KAAKhD,KAAMhN,IAAOqiE,GAAQA,EAAK//C,QAAQ3E,OAASinH,EAC9F,EAEAwC,EAAWp2H,UAAUioH,sBAAwB,WACpCjsH,KAAKosH,mBACNpsH,KAAKxM,QAAQiD,MAAM41H,YAAc,OAEjCrsH,KAAKosH,kBAAmB,EAEhC,EAEOgO,CACX,CA9JkB,CA8JhB5R,IAEF7yF,GAAkBykG,GAAY,CAC1BD,UAAW,OACXtN,aAAc,CACV11C,aAAc,CACVhkF,KAAM,OACNgqE,SAAU,MACVrD,WAAW,GAEf0E,UAAW,CACPyI,aAAa,EACbjV,OAAQ,CACJ7wC,OAAQ,OAIpBgK,UAAW,CACP4iG,OAAQ,CAAC,EACT3Q,eAAgB,CACZ/gC,QAAS,CACLtoF,SAAS,GAEbmyF,QAAS,CACLnyF,SAAS,GAEb07D,KAAM,CACFj7D,MAAO,IAGfujI,KAAM,CAAC,EACPhkI,SAAS,GAEbmyF,QAAS,CACLnyF,SAAS,GAEbw7F,OAAQ,CACJx7F,SAAS,KAIjB,IChNI8mI,GAAgB,IAGhBC,GAAgB,eAChBC,GAAc,aAEdC,GAAqB,GAErBC,GAASn6G,KAAK+L,GAAK,IACnB7I,GAAS,SACTk3G,GAAS,SACT32G,GAAU,UACV42G,GAAiB,gBACjBC,GAAuB,qBCXZ,SAASn6F,GAAIoI,EAAMlsC,GAC9B,IAAIoqC,EAAS8B,EAAKP,YACdlyC,EAAOyyC,EAAKL,UACZthB,EAAUF,GAAWrqB,GAKzB,OAHAksC,EAAKV,UAAU,CAAEpB,EAAOxhB,EAAI2B,EAAQI,KAAMyf,EAAOvhB,EAAI0B,EAAQC,MAC7D0hB,EAAKT,QAAQ,CAAEhyC,EAAKpC,OAASkzB,EAAQI,KAAOJ,EAAQE,OAAQhxB,EAAKnC,QAAUizB,EAAQC,IAAMD,EAAQG,UAE1FwhB,CACX,CCRA,IAAI2X,GAAQx7B,GACRo5B,GAAOp5B,GACP8mC,GAAO9mC,GAEI,SAAS61G,GAAkBnsE,EAAO55C,GAC7C,IAAIgiD,EAAWpI,EAAMj/B,IACjB+yD,EAAU9zB,EAAMt7D,SAAS,GAAGq8B,IAC5B42B,EAASvxC,EAAQuxC,QAAU,CAAC,EAC5BM,EAAa7xC,EAAQ6xC,YAAc,GAEnCtuD,EAAU+lD,GAAKa,SAAS,IAAI67E,GAAS,CAAEhkE,EAAShtB,GAAIgtB,EAAS/sB,IAAM,CAAE+sB,EAAS9iE,QAAS8iE,EAAS7iE,WAAa,CAC7G8wB,OAAQ,CAAC,IAGTrsB,EAAO,IAAIozD,GAAK4C,EAAMh2D,KAAM,IAAIoiI,GAAUt4C,EAAQ14C,GAAI04C,EAAQz4C,IAAK,CACnE/U,KAAMlgB,EAAQkgB,KACdugB,KAAM,CAAEvnB,MAAOlZ,EAAQkZ,SAGvB+sG,EAAgBt6F,GAAI/nC,EAAKmwC,OAAOxiB,QAASvR,EAAQ+1B,SAEjDmwF,EAAW58E,GAAKa,SAAS87E,EAAe,CACxCh2G,OAAQ,CACJiJ,MAAOq4B,EAAOryD,MAAQqyD,EAAOr4B,MAAQ,GACrCh6B,MAAOqyD,EAAOryD,MACdghD,QAASqR,EAAOrR,QAChB6R,SAAUR,EAAOQ,SACjBxI,SAAU,QACV0hC,QAAS,SAEbxqC,KAAM,CACFvnB,MAAO24B,KAIXrT,EAAW,IAAIkN,GAKnB,OAJAlN,EAASjoB,OAAOhzB,GAChBi7C,EAASjoB,OAAO2vG,GAChB1nF,EAASjoB,OAAO3yB,GAET46C,CACX,CCzCe,SAAS2nF,GAAS/jF,EAAO/oB,EAAKnD,GACzC,IAAI+X,EAAOpe,GAAQuyB,EAAMnU,MAAQmU,EAAMnU,KAAOnf,EAC1C9kB,EAAK6lB,GAAQuyB,EAAMp4C,IAAMo4C,EAAMp4C,GAAK4kB,EAKxC,OAHAwzB,EAAMnU,KAAOziB,KAAK0K,IAAI1K,KAAK6N,IAAIrvB,EAAIikC,GAAO5U,GAC1C+oB,EAAMp4C,GAAKwhB,KAAK6N,IAAI7N,KAAK0K,IAAIlsB,EAAIikC,GAAO/X,GAEjCksB,CACX,CCRe,SAASpM,GAAMjC,EAAMlsC,GAChC,IAAIuqB,EAAUF,GAAWrqB,GAKzB,OAHAuqB,EAAQI,MAAQJ,EAAQI,KAAMJ,EAAQC,KAAOD,EAAQC,IACrDD,EAAQE,OAASF,EAAQE,MAAOF,EAAQG,QAAUH,EAAQG,OAEnDoZ,GAAIoI,EAAM3hB,EACrB,CCJA,IACIk3B,GAAOp5B,GACP86E,GAAU96E,GAEVk2G,GAAS,SAAUzqG,GACnB,SAASyqG,EAAMloI,EAASs0E,EAAaq1C,EAAOr6G,QACvB,IAAZA,IAAqBA,EAAU,CAAC,GAErCmuB,EAAMjuB,KAAKhD,MAEXA,KAAKxM,QAAUA,EACfwM,KAAKm9G,MAAQA,EACbn9G,KAAK27H,eAAiB,IAAI7qE,GAAa9wD,KAAM8C,GAC7C9C,KAAK2oH,iBAAmB5hG,GAAW,CAAC,EAAG/mB,KAAKsV,QAASwyD,GACrD9nE,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAK2oH,kBACnC3oH,KAAK6oH,WAAW1L,GAEhBn9G,KAAKkyF,QACT,CAoPA,OAlPKjhE,IAAQyqG,EAAM3wH,UAAYkmB,GAC/ByqG,EAAM13H,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAChD03H,EAAM13H,UAAUqH,YAAcqwH,EAE9BA,EAAM13H,UAAUs/C,QAAU,WAClBtjD,KAAKyuG,UACLzuG,KAAKyuG,QAAQnrD,UACbtjD,KAAKyuG,QAAU,aAGZzuG,KAAKxM,eACLwM,KAAK47H,cAChB,EAEAF,EAAM13H,UAAU7G,MAAQ,SAAgB0+H,GACpC,IAAIC,EAAU97H,KAAK+7H,SAAS,GAE5B,GAAyB,IAArBh0H,UAAU3N,OACV,OAAO0hI,EAAQ3+H,QAGnB2+H,EAAQ3+H,MAAM0+H,GACd77H,KAAKg8H,iBAAiBH,EAC1B,EAEAH,EAAM13H,UAAUi4H,MAAQ,WACpB,IAAIxtB,EAAUzuG,KAAKyuG,QAEnBA,EAAQxrE,QACRwrE,EAAQtuD,KAAKngD,KAAKk8H,SACtB,EAEAR,EAAM13H,UAAUw8F,aAAe,WAC3B,OAAOxgG,KAAKk8H,QAChB,EAEAR,EAAM13H,UAAUm4H,UAAY,SAAoBpsH,GAC5C,IAAIgsH,EAAW/7H,KAAK+7H,SAChBI,EAAY,GAEhB,GAAyB,IAArBp0H,UAAU3N,OAAc,CACxB,IAAK,IAAIsR,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IACjCywH,EAAU/sH,KAAK2sH,EAASrwH,GAAGvO,SAG/B,OAAOg/H,CACX,CAEA,GAAI/mI,EAAQ2a,GACR,IAAK,IAAIu2D,EAAM,EAAGA,EAAMv2D,EAAO3V,OAAQksE,IAC/BvrD,GAAShL,EAAOu2D,KAChBy1D,EAASz1D,GAAKnpE,MAAM4S,EAAOu2D,IAKvCtmE,KAAKg8H,iBAAiBjsH,EAC1B,EAEA2rH,EAAM13H,UAAUg4H,iBAAmB,SAA2BjsH,GAI1D,IAHA,IAAIgsH,EAAW,GAAG5zH,OAAOnI,KAAKsV,QAAQwmH,SAClCM,EAAc,GAAGj0H,OAAO4H,GAEnBrE,EAAI,EAAGA,EAAI0wH,EAAYhiI,OAAQsR,IACpCqwH,EAASrwH,GAAGvO,MAAQi/H,EAAY1wH,EAExC,EAEAgwH,EAAM13H,UAAUs9F,OAAS,WACrBthG,KAAKu0H,qBACT,EAEAmH,EAAM13H,UAAUuwH,oBAAsB,WAClC,IAAI10C,EAAc7/E,KAAKsV,QAAQuqE,YAE/B7/E,KAAKq8H,oBAAmB,GAExBr8H,KAAKkyF,SAELlyF,KAAKq8H,mBAAmBx8C,EAC5B,EAEA67C,EAAM13H,UAAUkuF,OAAS,WACrB,IAAIt7F,EAAOoJ,KAAKs8H,eACZzjI,EAAU,IAAIyiI,GAAS,CAAE,EAAG,GAAK,CAAE1kI,EAAKpC,MAAOoC,EAAKnC,SAExDuL,KAAK+oH,eAEL/oH,KAAKu8H,UAAYv8H,KAAKw8H,mBAEtBx8H,KAAKy8H,eAEL,IAAIpzF,EAAOiC,GAAMzyC,EAAQwwC,OAAQrpC,KAAK08H,kBACtC18H,KAAKyjD,OAAOpa,EAChB,EAEAqyF,EAAM13H,UAAUowH,WAAa,SAAqB9+G,EAAS6nG,GACvDn9G,KAAK2oH,iBAAmB5hG,GAAW/mB,KAAK2oH,iBAAkBrzG,GAC1DtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAK2oH,kBAEnC3oH,KAAK6oH,WAAW1L,GAEhBn9G,KAAKkyF,QACT,EAEAwpC,EAAM13H,UAAUqwH,aAAe,SAAuBrjE,GAClDhxD,KAAK27H,eAAe3qE,IAAMC,QAAQD,GAC9BhxD,KAAKyuG,SAAiC,QAAtBzuG,KAAKyuG,QAAQt7G,OAC7B6M,KAAKyuG,QAAQnrD,UACbtjD,KAAKyuG,QAAU,KAEvB,EAEAitB,EAAM13H,UAAUswH,eAAiB,SAAyB7jE,GACtDzwD,KAAK27H,eAAelrE,KAAOA,CAC/B,EAEAirE,EAAM13H,UAAU6kH,WAAa,SAAqB1L,GAC9C,IAAIwf,EAAexf,GAASn9G,KAAKm9G,OAAS,CAAC,EAC3Cn9G,KAAKm9G,MAAQwf,EAEb38H,KAAKsV,QAAUyR,GAAW,CAAC,EAAG41G,EAAc38H,KAAKsV,SACjD,IAAIA,EAAUtV,KAAKsV,QACfwmH,EAAUxmH,EAAQwmH,QAEtB,GAAI1mI,EAAQ0mI,GAAU,CAElB,IADA,IAAIC,EAAW,GACNrwH,EAAI,EAAGA,EAAIowH,EAAQ1hI,OAAQsR,IAChCqwH,EAAS3sH,KAAK2X,GAAW,CAAC,EAAG41G,EAAab,QAASA,EAAQpwH,KAE/D4J,EAAQwmH,QAAUC,CACtB,CACJ,EAEAL,EAAM13H,UAAUw4H,iBAAmB,WAC/B,IAAIlnH,EAAUtV,KAAKsV,QAAQinH,UACvB3lI,EAAOoJ,KAAKyuG,QAAQ73G,OACpBiwD,EAASvxC,EAAQuxC,QAAU,CAAC,EAC5B+1E,EAAe,IAAItB,GAAS,CAAE,EAAG,GAAK,CAAE1kI,EAAKpC,MAAOoC,EAAKnC,SAqB7D,OAnBAuL,KAAK08H,iBAAmBpnH,EAAQha,QAhKnB,EAkKTurD,EAAOryD,MAAQ,IACfooI,EAAetxF,GAAMsxF,EAAc/1E,EAAOryD,QAG9BoqD,GAAKa,SAASm9E,EAAc,CACxCr3G,OAAQ,CACJiJ,MAAOq4B,EAAOryD,MAAQqyD,EAAOr4B,MAAQ,GACrCh6B,MAAOqyD,EAAOryD,MACd6yD,SAAUR,EAAOQ,SACjBxI,SAAU,QACV0hC,QAAS,SAEbxqC,KAAM,CACFvnB,MAAOlZ,EAAQ6xC,aAK3B,EAEAu0E,EAAM13H,UAAU+kH,aAAe,WAC3B,IACIzzG,EADMtV,KACQsV,QACdm5F,EAFMzuG,KAEQyuG,QACdj7G,EAAUwM,KAAK68H,kBACfjmI,EAAOoJ,KAAKs8H,eAEhB5rG,GAAYl9B,EAASoD,GAEhB63G,GAAWA,EAAQn5F,QAAQniB,OAASmiB,EAAQs1G,UAS7C5qH,KAAKyuG,QAAQxrE,QACbjjC,KAAKyuG,QAAQnN,WATTmN,GACAA,EAAQnrD,UAGZtjD,KAAKyuG,QAAUnO,GAAQh1F,OAAO9X,EAAS,CACnCL,KAAMmiB,EAAQs1G,WAM1B,EAEA8Q,EAAM13H,UAAUs4H,aAAe,WAC3B,IAAIhnH,EAAUtV,KAAKsV,QACf1e,EAAOoJ,KAAK88H,WAMhB,OAJIxnH,EAAQinH,WACRx1G,GAAWnwB,EAAM0e,EAAQinH,WAGtB3lI,CACX,EAEA8kI,EAAM13H,UAAU64H,gBAAkB,WAM9B,OALK78H,KAAK47H,iBACN57H,KAAK47H,eAAiB9iI,SAASomB,cAAc,OAC7Clf,KAAKxM,QAAQgsB,YAAYxf,KAAK47H,iBAG3B57H,KAAK47H,cAChB,EAEAF,EAAM13H,UAAUglC,QAAU,WACtB,OAAOhpC,KAAK88H,UAChB,EAEApB,EAAM13H,UAAU84H,SAAW,WACvB,IAAItpI,EAAUwM,KAAKxM,QACfupI,EAAc/8H,KAAKg9H,eACnBxoI,EAAQhB,EAAQ+W,YAChB9V,EAASjB,EAAQ4W,aAUrB,OARK5V,IACDA,EAAQuoI,EAAYvoI,OAGnBC,IACDA,EAASsoI,EAAYtoI,QAGlB,CAAED,MAAOA,EAAOC,OAAQA,EACnC,EAEAinI,EAAM13H,UAAUg5H,aAAe,WAC3B,MAAO,CACHxoI,MLvPQ,IKwPRC,OL1PS,IK4PjB,EAEAinI,EAAM13H,UAAUq4H,mBAAqB,SAA6Bl/H,GAG9D6C,KAAKsV,QAAQuqE,YAAc1iF,EAC3B,IAAK,IAAIuO,EAAI,EAAGA,EAAI1L,KAAK+7H,SAAS3hI,OAAQsR,IAH7B1L,KAIF+7H,SAASrwH,GAAG4J,QAAQla,UAAUykF,YAAc1iF,CAE3D,EAEOu+H,CACX,CAnQa,CAmQXzqG,IAEF0E,GAAkB+lG,GAAO,CACrBxmE,SAAU,CAAC,EACXioD,MAAO,UACPyN,SAAU,GACVkR,QAAS,CAAC,EACV9pG,MAAO,CAAC,EACRuqG,UAAW,CAAC,IAGhB,UChRI39E,GAAOp5B,GACPw7B,GAAQx7B,GACRyf,GAAQq2F,GAEZ,SAAS2B,GAAeC,EAAmB1rE,GACvC,IAGIjoC,EAAOC,EAHPqzB,EAAWqgF,EAAkBrgF,SAC7B4U,EAAQyrE,EAAkBzrE,MAC1BC,EAAQwrE,EAAkBxrE,MAkB9B,OAfIwrE,EAAkBvyE,UAClBphC,EAAQ,IAAI0b,GAAMwsB,EAAO5U,GACzBrzB,EAAM,IAAIyb,GAAMwsB,EAAQD,EAAY56D,KAAMimD,KAE1CtzB,EAAQ,IAAI0b,GAAM4X,EAAU6U,GAC5BloC,EAAM,IAAIyb,GAAM4X,EAAU6U,EAAQF,EAAY56D,OAGnC,IAAIgoD,GAAK,CACpBr5B,OAAQ,CACJiJ,MAAOgjC,EAAYhjC,MACnBh6B,MAAOg9D,EAAYh9D,SAExB4pD,OAAO70B,GAAOwzB,OAAOvzB,EAG5B,CAEA,SAAS2zG,GAAYC,EAAW7oE,EAAe2oE,EAAmB1rE,GAC9D,IAAI9X,EAAQ6a,EAAcn6D,OAE1B,GAAIo3D,EAAYz9D,QAGZ,IAFA,IAAIw/D,EAAS2pE,EAAkB3pE,OAC3BD,EAAU4pE,EAAkB5pE,QACvB5nD,EAAI8lD,EAAYqB,KAAMnnD,EAAIguC,EAAOhuC,GAAK8lD,EAAY5O,KACnDl3C,EAAI8lD,EAAYgD,WAAa,IAIjC0oE,EAAkBzrE,MAAQ8B,EAASD,EAAQ9oB,GAAK8oB,EAAQ9oB,GAAKgnB,EAAY56D,KACzEsmI,EAAkBxrE,MAAQ6B,EAASD,EAAQ/oB,GAAKinB,EAAY56D,KAAO08D,EAAQ/oB,GAC3E2yF,EAAkBrgF,SAAW0X,EAAc7oD,GAE3C0xH,EAAUvxG,OAAOoxG,GAAeC,EAAmB1rE,IAG/D,CAEA,IAAI6rE,GAAe,SAAUt2D,GACzB,SAASs2D,EAAY/nH,EAASuuC,GAC1B,IAAIya,EAAehpD,GAAW,CAAC,GAC1B6P,GAAQm5C,EAAapQ,WAAsC,IAA1BoQ,EAAa3T,WAAuB9G,GAAW,CAAC,GAAGmN,MACrFsN,EAAezzD,OAAOW,OAAO,CAAC,EAAG8yD,EAAc,CAC3CpQ,SAAS,KAIjB6Y,EAAY/jE,KAAKhD,KAAM,EAAG,EAAGs+D,EAAcza,GAE3C7jD,KAAKsV,QAAQq/C,UAAY30D,KAAKsV,QAAQq/C,WAAa30D,KAAKsV,QAAQ++C,UAAY,EAChF,CAkHA,OAhHK0S,IAAcs2D,EAAYtyH,UAAYg8D,GAC3Cs2D,EAAYr5H,UAAY6G,OAAOS,OAAQy7D,GAAeA,EAAY/iE,WAClEq5H,EAAYr5H,UAAUqH,YAAcgyH,EAEpCA,EAAYr5H,UAAUw/C,gBAAkB,SAA0BluC,GAC9D,IAAIgpD,EAAev3C,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,GAIhD,OAHAgpD,EAAev3C,GAAW,CAAC,EAAGu3C,EAAe,CAAEtM,OAAQ,CAAEuB,OAAQ+K,EAAa/K,WACjEc,UAAYiK,EAAajK,WAAatvB,GAAcu5B,EAAa3vC,IAAK2vC,EAAa9yC,KAEzF8yC,CACX,EAEA++D,EAAYr5H,UAAUuuD,WAAa,WACnC,EAEA8qE,EAAYr5H,UAAU5K,OAAS,WAC3B,IAAI06C,EAAW9zC,KAAK8zC,SAAW,IAAIkN,GAC/BgR,EAAShyD,KAAKs9H,eACdC,EAAYv9H,KAAKw9H,aACjBC,EAAaz9H,KAAKm9H,cAClB5qB,EAASvyG,KAAK09H,eAIlB,OAFA5pF,EAASjoB,OAAO0xG,EAAWvrE,EAAQyrE,EAAYlrB,GAExCz+D,CACX,EAEAupF,EAAYr5H,UAAU05H,aAAe,WAajC,IAZA,IAAIl8F,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACfqZ,EAAMrZ,EAAQqZ,IACdnD,EAAMlW,EAAQkW,IACdm/B,EAAWr1C,EAAQq1C,SACnB4I,EAASj+C,EAAQ08C,OAAOuB,OACxBg/C,EAASj9F,EAAQi9F,QAAU,GAC3Bz+D,EAAW,IAAIkN,GACftH,EAAQ64D,EAAOn4G,OACf4+D,EAAY1jD,EAAQ0jD,WAAa1jD,EAAQ68C,WAAWv7D,KAAO,EAEtD8U,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAIgsC,EAAQ+jF,GAASlpB,EAAO7mG,GAAIijB,EAAKnD,GACjCusC,EAAOv2B,EAAOi0B,QAAQ/d,EAAMnU,KAAMmU,EAAMp4C,IACxCi2D,EAAQ5K,EAAWnpB,EAAO8xB,UAAYyE,EACtCvC,EAAQ7K,EAAWoN,EAAOv2B,EAAO8xB,UACjC3I,EACA4K,EAAMjrB,IAAM0uB,GAAazF,GAAU,EAAI,GAEvCiC,EAAM/qB,IAAMuuB,GAAazF,GAAU,EAAI,GAG3Czf,EAASjoB,OAAO+yB,GAAKa,SAAS,IAAI67E,GAAS,CAAE/lE,EAAMjrB,GAAIkrB,EAAMjrB,IAAM,CAAEgrB,EAAM/qB,GAAK+qB,EAAMjrB,GAAIkrB,EAAM/qB,GAAK+qB,EAAMjrB,KAAO,CAC9GwL,KAAM,CAAEvnB,MAAOkpB,EAAMlpB,MAAOgnB,QAASkC,EAAMlC,SAC3CjwB,OAAQ,CAAE,IAElB,CAEA,OAAOuuB,CACX,EAEAupF,EAAYr5H,UAAUs5H,aAAe,WAMjC,IALA,IACItrE,EADMhyD,KACOgyD,OACb18C,EAFMtV,KAEQsV,QACdw+B,EAAW,IAAIkN,GAEVt1C,EAAI,EAAGA,EAAIsmD,EAAO53D,OAAQsR,IAC/BooC,EAASjoB,OAAOwvG,GAAkBrpE,EAAOtmD,GAAI4J,EAAQ08C,SAGzD,OAAOle,CACX,EAEAupF,EAAYr5H,UAAUw5H,WAAa,WAC/B,IAAI/tE,EAAOzvD,KAAKsV,QAAQm6C,KACpB6D,EAAUtzD,KAAKszD,UACfxf,EAAW,IAAIkN,GAEnB,GAAIyO,EAAKj7D,MAAQ,GAAKi7D,EAAK17D,QAAS,CAChC,IAAI4pI,EAAW,IAAI/+E,GAAK,CACpBr5B,OAAQ,CACJiJ,MAAOihC,EAAKjhC,MACZ64B,SAAUoI,EAAKpI,SACf7yD,MAAOi7D,EAAKj7D,SAIpBmpI,EAASv/E,OAAOkV,EAAQhpB,GAAIgpB,EAAQ/oB,IAAIwS,OAAOuW,EAAQ9oB,GAAI8oB,EAAQ7oB,IACnEqJ,EAASjoB,OAAO8xG,EACpB,CAEA,OAAO7pF,CACX,EAEAupF,EAAYr5H,UAAUm5H,YAAc,WAChC,IAAI/hE,EAAQ,IAAIpa,GACZ1rC,EAAUtV,KAAKsV,QACf++C,EAAY/+C,EAAQ+8C,WAAWt+D,QAAUuhB,EAAQ++C,UAAY,EAC7D6oE,EAAoB,CACpBvyE,SAAUr1C,EAAQq1C,SAClB4I,OAAQj+C,EAAQ08C,OAAOuB,OACvBD,QAAStzD,KAAKszD,WAQlB,OALA6pE,GAAY/hE,EAAOp7D,KAAKy0D,wBAAyByoE,EAAmB5nH,EAAQ+8C,YAC5E8qE,GAAY/hE,EAAOp7D,KAAK00D,wBAAyBwoE,EAAmBn2G,GAAW,CAAC,EAAG,CAC/EytC,SAAUH,EAAY/+C,EAAQq/C,WAC/Br/C,EAAQ68C,aAEJiJ,CACX,EAEOiiE,CACX,CA/HmB,CA+HjBt2D,IAEFpxC,GAAkB0nG,GAAa,CAC3B1uG,IAAK,EACLnD,IAAK,GAEL6mC,WAAY,CACRz7D,KAAM,GACNu1C,MAAOnoB,GACPwK,MAAOlL,EACP9uB,MAAOwmI,GACPjnI,SAAS,GAGbo+D,WAAY,CACRv7D,KAAM,GACNu1C,MAAOnoB,GACPwK,MAAOlL,EACP9uB,MAAOwmI,GACPjnI,SAAS,GAGb07D,KAAM,CACFj7D,MAAOwmI,IAGXhpE,OAAQ,CACJnV,SAAU74B,GACVqnB,QAAS,GAEbkoB,QAAQ,EACRqB,aAAa,IAGjB,UCtNIgpE,GAAW,SAAU3sG,GACrB,SAAS2sG,EAAQ5rG,EAAO81C,GACpB72C,EAAMjuB,KAAKhD,MAEX,IAAIzN,EAAMy/B,EAAM1c,QACZqZ,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IACVlW,EAAUtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASwyD,GAE1DxyD,EAAQygC,KAAOzgC,EAAQkZ,MAEvBxuB,KAAKgyB,MAAQA,EAET7M,GAAQ7P,EAAQnY,OAChBmY,EAAQnY,MAAQuxB,GAAWpZ,EAAQnY,MAAOwxB,EAAKnD,GAE/ClW,EAAQnY,MAAQwxB,CAExB,CA0BA,OAxBKsC,IAAQ2sG,EAAQ7yH,UAAYkmB,GACjC2sG,EAAQ55H,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAClD45H,EAAQ55H,UAAUqH,YAAcuyH,EAEhCA,EAAQ55H,UAAU7G,MAAQ,SAAgB0gI,GACtC,IAAIvoH,EAAUtV,KAAKsV,QACfnY,EAAQmY,EAAQnY,MAEpB,GAAyB,IAArB4K,UAAU3N,OACV,OAAO+C,EAGX,IAAI5K,EAAMyN,KAAKgyB,MAAM1c,QACjBqZ,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IAEdlW,EAAQwoH,UAAY34G,GAAQ7P,EAAQwoH,WAAaxoH,EAAQnY,MAAQwxB,EACjErZ,EAAQnY,MAAQuxB,GAAWmvG,EAAUlvG,EAAKnD,GAEtCxrB,KAAK8zC,UACL9zC,KAAK+9H,SAEb,EAEOH,CACX,CA7Ce,CA6Cb3sG,IAEF0E,GAAkBioG,GAAS,CACvBpvG,MAAOlL,IAGX,UChDI06G,GAAiB,SAAUJ,GAC3B,SAASI,EAAchsG,EAAO1c,GAC1BsoH,EAAQ56H,KAAKhD,KAAMgyB,EAAO1c,GAE1BtV,KAAKsV,QAAUyR,GAAW,CACtBk3G,MAAO,CACHlqI,QAASoxB,GAAQ7P,EAAQ2oH,SAE9Bj+H,KAAKsV,QACZ,CAoGA,OAlGKsoH,IAAUI,EAAcjzH,UAAY6yH,GACzCI,EAAch6H,UAAY6G,OAAOS,OAAQsyH,GAAWA,EAAQ55H,WAC5Dg6H,EAAch6H,UAAUqH,YAAc2yH,EAEtCA,EAAch6H,UAAUy/C,OAAS,WAC7B,IAaIy6E,EAAYC,EAAiBC,EAZ7B9oH,EADMtV,KACQsV,QACd0c,EAFMhyB,KAEMgyB,MACZo5B,EAAQp5B,EAAM1c,QACdi+C,EAASnI,EAAMmI,OACf5I,EAAWS,EAAMT,SACjB4yE,EAAYvrG,EAAMshC,UAClB+qE,EAAY/oH,EAAQ2oH,MAAMrnI,MAAQ0e,EAAQ1e,KAC1C0nI,EAAkBhpH,EAAQ1e,KAAO,EACjC0E,EAASksB,GAAWlS,EAAQha,QAC5Bg7D,EAAQ3L,EACHrvD,EAAOi4D,EAAS,OAAS,SACzBj4D,EAAOi4D,EAAS,SAAW,OAGpC+C,EAAQ/C,GAAU+C,EAAQA,EAEtB3L,GACAyzE,EAAW,IAAI/zF,GACXkzF,EAAUjzF,GAAKgsB,EAAOinE,EAAUhzF,GAChCgzF,EAAUjzF,GAAKgsB,EAAOinE,EAAU9yF,IAEhC8oB,EACA6qE,EAAS9zF,IAAM+zF,EAEfD,EAAS5zF,IAAM6zF,EAGf/oH,EAAQ9Z,QAAUu/H,KAKlBmD,EAJAC,EAAkB,IAAI9zF,GAClBkzF,EAAU/yF,GAAK8rB,EAAOinE,EAAUhzF,GAAK+zF,EACrCf,EAAU/yF,GAAK8rB,EAAOinE,EAAU9yF,GAAK6zF,MAK7CF,EAAW,IAAI/zF,GACXkzF,EAAUjzF,GAAIizF,EAAUhzF,GAAK+rB,EAC7BinE,EAAU/yF,GAAI+yF,EAAUhzF,GAAK+rB,GAE7B/C,EACA6qE,EAAS3zF,IAAM4zF,EAEfD,EAAS7zF,IAAM8zF,EAGf/oH,EAAQ9Z,QAAUu/H,KAKlBmD,EAJAC,EAAkB,IAAI9zF,GAClBkzF,EAAUjzF,GAAKg0F,EAAiBf,EAAUhzF,GAAK+rB,EAC/CinE,EAAU/yF,GAAK8zF,EAAiBf,EAAUhzF,GAAK+rB,KAM3Dt2D,KAAKo+H,SAAWA,EAChBp+H,KAAKm+H,gBAAkBA,EACvBn+H,KAAKiwB,IAAMiuG,GAAcE,EAASv3G,QAAQoa,IAAI3rB,EAAQuxC,OAAOryD,MACjE,EAEAwpI,EAAch6H,UAAUu6H,kBAAoB,WACxC,IAAIjpH,EAAUtV,KAAKsV,QAEnB,MAAO,CACHygC,KAAM,CACFvnB,MAAOlZ,EAAQkZ,MACfgnB,QAASlgC,EAAQkgC,SAErBjwB,OAAQJ,GAAQ7P,EAAQuxC,QAAU,CAC9Br4B,MAAOlZ,EAAQuxC,OAAOryD,MAAQ8gB,EAAQuxC,OAAOr4B,OAASlZ,EAAQkZ,MAAQ,GACtEh6B,MAAO8gB,EAAQuxC,OAAOryD,MACtB6yD,SAAU/xC,EAAQuxC,OAAOQ,SACzB7R,QAASlgC,EAAQkgC,SACjB,KAEZ,EAEAwoF,EAAch6H,UAAUw6H,QAAU,WAC9B,IACIxsG,EADMhyB,KACMgyB,MACZ1c,EAFMtV,KAEQsV,QACd81C,EAAQp5B,EAAM1c,QACdi+C,EAASnI,EAAMmI,OACf5I,EAAWS,EAAMT,SACjBrvD,EAASksB,GAAWlS,EAAQha,QAMhC,OAJYqvD,EACRrvD,EAAOi4D,EAAS,OAAS,SACzBj4D,EAAOi4D,EAAS,SAAW,MAGnC,EAEOyqE,CACX,CA9GqB,CA8GnBJ,IAEFjoG,GAAkBqoG,GAAe,CAC7BxiI,MAAOu/H,GAEPkD,MAAO,CACHp3E,OAAQ,CACJryD,MAAO,IAIfg6B,MAAOlL,EACPujC,OAAQ,CACJryD,MAAO,GAEXghD,QAAS,EAETl6C,OAAQksB,GAAW,GACnBpsB,UAAW,CACPjI,KAAM4nI,IAEVhnI,SAAS,IAGb,UCxII0qI,GAA+B,SAAUr3F,GACzC,SAASq3F,IACLr3F,EAAWl/B,MAAMlI,KAAM+H,UAC3B,CAmCA,OAjCKq/B,IAAaq3F,EAA4B1zH,UAAYq8B,GAC1Dq3F,EAA4Bz6H,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAChFy6H,EAA4Bz6H,UAAUqH,YAAcozH,EAEpDA,EAA4Bz6H,UAAU2+C,MAAQ,WAC1C,IAAIrtC,EAAUtV,KAAKsV,QACfha,EAASga,EAAQha,OACjBioC,EAAOjuB,EAAQiuB,KACfjkC,EAAKgW,EAAQhW,GACbqrD,EAAWr1C,EAAQq1C,SACnB5f,EAAO4f,EAAW,KAAO,KAEzBr1C,EAAQi+C,SAAW5I,GACnBpnB,EAAKwH,IAASzvC,EAAQgE,EAAGyrC,IAASzvC,IAElCioC,EAAKwH,IAASzvC,EAAQgE,EAAGyrC,IAASzvC,GAGtC,IAAI+/G,EAAYr7G,KAAKq7G,UAAY,IAAInlF,GAAeqN,EAAK+G,GAAI/G,EAAKgH,IAC9Dm0F,EAAU1+H,KAAK0+H,QAAU,IAAIxoG,GAAe52B,EAAGgrC,GAAIhrC,EAAGirC,IAEjC,IAArBj1B,EAAQmtC,WACRntC,EAAQmtC,SAAW3hC,KAAK0K,IAAK6vF,EAAU31E,WAAWg5F,GAAWppH,EAAQmtC,SAAY,IAAM,GAE/F,EAEAg8E,EAA4Bz6H,UAAU4+C,KAAO,SAAertC,GACxD,IAAIopH,EAAar1G,GAAiBtpB,KAAKq7G,UAAUt1F,EAAG/lB,KAAK0+H,QAAQ34G,EAAGxQ,GAChEqpH,EAAat1G,GAAiBtpB,KAAKq7G,UAAUr1F,EAAGhmB,KAAK0+H,QAAQ14G,EAAGzQ,GAEpEvV,KAAKxM,QAAQ8+B,UAAU4D,KAAqBvQ,UAAUg5G,EAAYC,GACtE,EAEOH,CACX,CAvCmC,CAuCjCj5G,IAEFmQ,GAAkB8oG,GAA6B,CAC3C/7E,OAAQw4E,GACRz4E,ST9Ce,MSiDnBj9B,GAAAA,QAAAA,SAA0Cs1G,GAAe2D,IAEzD,UC9CIx5F,GAAQq2F,GACR18E,GAAOp5B,GAEPq5G,GAAsB,SAAUb,GAChC,SAASa,EAAmB7sG,EAAO1c,GAC/B0oH,EAAch7H,KAAKhD,KAAMgyB,EAAO1c,GAE3B6P,GAAQnlB,KAAKsV,QAAQ1e,QACtBoJ,KAAKsV,QAAQ1e,KAA4C,GAArCoJ,KAAKgyB,MAAM1c,QAAQ+8C,WAAWz7D,KAE1D,CAqEA,OAnEKonI,IAAgBa,EAAmB9zH,UAAYizH,GACpDa,EAAmB76H,UAAY6G,OAAOS,OAAQ0yH,GAAiBA,EAAch6H,WAC7E66H,EAAmB76H,UAAUqH,YAAcwzH,EAE3CA,EAAmB76H,UAAU86H,aAAe,WACxC,IACI9sG,EADMhyB,KACMgyB,MACZp7B,EAFMoJ,KAEKsV,QAAQ1e,KACnBumF,EAAWvmF,EAAO,EAClB87C,EAAQ1gB,EAAM1c,QAAQi+C,QAAU,EAAI,EAaxC,OAVIvhC,EAAM1c,QAAQq1C,SACN,CACJ,IAAI1lB,GAAM,EAAG,EAAIk4C,GAAW,IAAIl4C,GAAM,EAAIyN,EAAO97C,EAAM,GAAI,IAAIquC,GAAM,EAAG,EAAIk4C,IAGxE,CACJ,IAAIl4C,GAAM,EAAIk4C,EAAU,GAAI,IAAIl4C,GAAM,EAAG,EAAIyN,EAAO97C,GAAO,IAAIquC,GAAM,EAAIk4C,EAAU,GAK/F,EAEA0hD,EAAmB76H,UAAU+5H,QAAU,WACnC,IACI/rG,EADMhyB,KACMgyB,MACZ1c,EAFMtV,KAEQsV,QACdla,EAAY,IAAIqjI,GAA4Bz+H,KAAK8zC,SAAU/sB,GAAWzR,EAAQla,UAAW,CACzFuvD,SAAU34B,EAAM1c,QAAQq1C,SACxB4I,OAAQvhC,EAAM1c,QAAQi+C,OACtBj4D,OAAQ0E,KAAKw+H,QAAQlpH,EAAQha,QAC7BioC,KAAMvR,EAAMyjC,QAAQngD,EAAQwoH,WAC5Bx+H,GAAI0yB,EAAMyjC,QAAQngD,EAAQnY,WAGQ,IAAlCmY,EAAQla,UAAUykF,cAClBzkF,EAAUka,QAAQmtC,SAAW,GAGjCrnD,EAAUunD,QACVvnD,EAAUynD,MACd,EAEAg8E,EAAmB76H,UAAU5K,OAAS,WAClC,IACI44B,EADMhyB,KACMgyB,MACZ1c,EAFMtV,KAEQsV,QACdypH,EAAiB/+H,KAAKu+H,oBACtB/iI,EAAQwE,KAAK8+H,aAAaxpH,EAAQnY,OAEtCmY,EAAQla,UAAUjI,KAAO2nI,GAEzB,IAAIhnF,EAAW,IAAI8K,GAAK,CACpBr5B,OAAQw5G,EAAex5G,OACvBwwB,KAAMgpF,EAAehpF,OACtBqI,OAAO5iD,EAAM,IAAIuhD,OAAOvhD,EAAM,IAAIuhD,OAAOvhD,EAAM,IAAI+yC,QAElDwpB,EAAO/lC,EAAMyjC,QAAQngD,EAAQnY,OAKjC,OAJA22C,EAASxhB,UAAUgpG,KAAgB31G,UAAUoyC,EAAKztB,GAAIytB,EAAKxtB,KAE3DvqC,KAAK8zC,SAAWA,EAETA,CACX,EAEO+qF,CACX,CA7E0B,CA6ExBb,IAEF,MCnFIgB,GAA6B,SAAU53F,GACvC,SAAS43F,IACL53F,EAAWl/B,MAAMlI,KAAM+H,UAC3B,CAgCA,OA9BKq/B,IAAa43F,EAA0Bj0H,UAAYq8B,GACxD43F,EAA0Bh7H,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC9Eg7H,EAA0Bh7H,UAAUqH,YAAc2zH,EAElDA,EAA0Bh7H,UAAU2+C,MAAQ,WACxC,IAAIrtC,EAAUtV,KAAKsV,QACfy1B,EAAO/qC,KAAK+qC,KAAOz1B,EAAQq1C,SAAW3lC,EAAID,EAC1CzlB,EAAKU,KAAKV,GAAKgW,EAAQ2pH,UAAU,GAAGl0F,GACpCxH,EAAOvjC,KAAKujC,KAAOjuB,EAAQ4pH,UAAU,GAAGn0F,GAEnB,IAArBz1B,EAAQmtC,WACRntC,EAAQmtC,SAAW3hC,KAAK0K,IAAK1K,KAAKC,IAAIzhB,EAAKikC,GAAQjuB,EAAQ6pH,MAAS,IAAM,IAG9En/H,KAAKojC,KAAKG,EACd,EAEAy7F,EAA0Bh7H,UAAU4+C,KAAO,SAAertC,GACtD,IAAIpY,EAAQmsB,GAAiBtpB,KAAKujC,KAAMvjC,KAAKV,GAAIiW,GACjDvV,KAAKojC,KAAKjmC,EACd,EAEA6hI,EAA0Bh7H,UAAUo/B,KAAO,SAAejmC,GACtD,IAAIiiI,EAAS,MAAQp/H,KAAK+qC,KAAK/1B,cAC3Bu2B,EAASvrC,KAAKsV,QAAQ2pH,UAE1B1zF,EAAO,GAAG6zF,GAAQjiI,GAClBouC,EAAO,GAAG6zF,GAAQjiI,EACtB,EAEO6hI,CACX,CApCiC,CAoC/Bx5G,IAEFmQ,GAAkBqpG,GAA2B,CACzCt8E,OAAQw4E,GACRiE,MX5Ce,MW+CnB35G,GAAAA,QAAAA,SAA0Cu1G,GAAaiE,IAEvD,UC5CIh+E,GAAQx7B,GACRo5B,GAAOp5B,GAEP65G,GAAoB,SAAUrB,GAC9B,SAASqB,EAAiBrtG,EAAO1c,GAC7B0oH,EAAch7H,KAAKhD,KAAMgyB,EAAO1c,GAE3B6P,GAAQnlB,KAAKsV,QAAQ1e,QACtBoJ,KAAKsV,QAAQ1e,KAA4C,GAArCoJ,KAAKgyB,MAAM1c,QAAQ+8C,WAAWz7D,KAE1D,CAkHA,OAhHKonI,IAAgBqB,EAAiBt0H,UAAYizH,GAClDqB,EAAiBr7H,UAAY6G,OAAOS,OAAQ0yH,GAAiBA,EAAch6H,WAC3Eq7H,EAAiBr7H,UAAUqH,YAAcg0H,EAEzCA,EAAiBr7H,UAAU86H,aAAe,SAAuB3hI,GAC7D,IACI60B,EADMhyB,KACMgyB,MACZ1c,EAFMtV,KAEQsV,QACd81C,EAAQp5B,EAAM1c,QACdi+C,EAASnI,EAAMmI,OACf5I,EAAWS,EAAMT,SACjB74C,EAAMyhD,IAAW5I,GAAY,EAAI,EACjC/zD,EAAO0e,EAAQ1e,KAAOkb,EACtBwtH,EAAUttG,EAAMyjC,QAAQzjC,EAAM1c,QAAQqZ,KACtCopC,EAAO/lC,EAAMyjC,QAAQt4D,GACrB4tC,EAAO4f,EAAW3lC,EAAID,EACtBw6G,EAAW50E,EAAW5lC,EAAIC,EAC1B1pB,EAAS0E,KAAKw+H,UAAY1sH,EAE1Bk/B,EAAK,IAAIsqF,GACbtqF,EAAGjG,GAAQu0F,EAAQv0F,EAAO,KAC1BiG,EAAGuuF,GAAYD,EAAQC,EAAW,KAElC,IAAIhvF,EAAK,IAAI+qF,GACb/qF,EAAGxF,GAAQgtB,EAAKhtB,EAAO,KACvBwF,EAAGgvF,GAAYxnE,EAAKwnE,EAAW,KAE3B50E,GACA3Z,EAAGrrB,UAAUrqB,EAAQ,GACrBi1C,EAAG5qB,UAAUrqB,EAAQ,KAErB01C,EAAGrrB,UAAU,EAAGrqB,GAChBi1C,EAAG5qB,UAAU,EAAGrqB,IAGpB,IAAIk2C,EAAKjB,EAAG1pB,QACRizB,EAAK9I,EAAGnqB,QAUZ,OARI8jC,GACAnZ,EAAG7rB,UAAU/uB,EAAM,GACnBkjD,EAAGn0B,UAAU/uB,EAAM,KAEnB46C,EAAG7rB,UAAU,EAAG/uB,GAChBkjD,EAAGn0B,UAAU,EAAG/uB,IAGb,CAAEo6C,EAAIT,EAAIiB,EAAIsI,EACzB,EAEAulF,EAAiBr7H,UAAU+5H,QAAU,WACjC,IACI/rG,EADMhyB,KACMgyB,MACZ1c,EAFMtV,KAEQsV,QACd9Z,EAAQwE,KAAK8+H,aAAaxpH,EAAQnY,OAClCqiI,EAAcx/H,KAAKw/H,YACnBC,EAAWz/H,KAAK8+H,aAAaxpH,EAAQwoH,WAEzC0B,EAAYphF,OAAO5iD,EAAM,IAAIuhD,OAAOvhD,EAAM,IAAIuhD,OAAOvhD,EAAM,IAAIuhD,OAAOvhD,EAAM,IAAI+yC,QAEhF,IAAInzC,EAAY,IAAI4jI,GAA0BQ,EAAaz4G,GAAWzR,EAAQla,UAAW,CACrF8yD,QAASl8B,EAAM1c,QAAQ44C,QACvBvD,SAAU34B,EAAM1c,QAAQq1C,SACxBu0E,UAAW,CAAEO,EAAS,GAAIA,EAAS,IACnCR,UAAW,CAAEzjI,EAAM,GAAIA,EAAM,QAGK,IAAlC8Z,EAAQla,UAAUykF,cAClBzkF,EAAUka,QAAQmtC,SAAW,GAGjCrnD,EAAUunD,QACVvnD,EAAUynD,MACd,EAEAw8E,EAAiBr7H,UAAU5K,OAAS,WAChC,IAAIkkB,EAAQ,IAAI0jC,GACZ+9E,EAAiB/+H,KAAKu+H,oBAEtBv+H,KAAKsV,QAAQ2oH,MAAMlqI,SACnBupB,EAAMuO,OAAO7rB,KAAK0/H,eAGtB,IAAI5D,EAAU97H,KAAKw/H,YAAc,IAAI5gF,GAAK,CACtCr5B,OAAQw5G,EAAex5G,OACvBwwB,KAAMgpF,EAAehpF,OAOzB,OAJAz4B,EAAMuO,OAAOiwG,GAEb97H,KAAK8zC,SAAWx2B,EAETA,CACX,EAEA+hH,EAAiBr7H,UAAU07H,YAAc,WACrC,IAAIC,EAAe3/H,KAAKsV,QAAQ2oH,MAC5Bp3E,EAAS84E,EAAa94E,QAAU,CAAC,EACjCu3E,EAAWp+H,KAAKo+H,SAASv3G,QAAQoa,IAAI4lB,EAAOryD,OAAS,GAEzD,OAAO,IAAIoqD,GAAKa,SAAS2+E,EAASpyF,SAAU,CACxC+J,KAAM,CACFvnB,MAAOmxG,EAAanxG,MACpBgnB,QAASmqF,EAAanqF,SAE1BjwB,OAAQ,CACJiJ,MAAOq4B,EAAOryD,MAAQqyD,EAAOr4B,OAASmxG,EAAanxG,MAAQ,GAC3Dh6B,MAAOqyD,EAAOryD,MACd6yD,SAAUR,EAAOQ,WAG7B,EAEOg4E,CACX,CA1HwB,CA0HtBrB,IAEF,MCzHIh9E,GAAQx7B,GAERo6G,GAAe,SAAUlE,GACzB,SAASkE,IACLlE,EAAMxzH,MAAMlI,KAAM+H,UACtB,CAgLA,OA9KK2zH,IAAQkE,EAAY70H,UAAY2wH,GACrCkE,EAAY57H,UAAY6G,OAAOS,OAAQowH,GAASA,EAAM13H,WACtD47H,EAAY57H,UAAUqH,YAAcu0H,EAEpCA,EAAY57H,UAAUy/C,OAAS,SAAiBpa,GAC5C,IAAI0yF,EAAW/7H,KAAK+7H,SAChB8D,EAAQx2F,EAAK9B,OAAOxhB,EACpB+5G,EAAQz2F,EAAK9B,OAAOvhB,EAEpBiK,EAAM,IAAIoa,GAAIw1F,EAAOC,EAAOD,EAAQx2F,EAAK70C,QAASsrI,EAAQz2F,EAAK50C,UAEnEuL,KAAKgyB,MAAMyxB,OAAOxzB,GAClBjwB,KAAK+/H,kBAAkB9vG,GAEvB,IAAK,IAAIvkB,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IACjCqwH,EAASrwH,GAAG+3C,SAGhBzjD,KAAKqpC,KAAOrpC,KAAKggI,QAAQ/vG,GACzBjwB,KAAKigI,iBACLjgI,KAAKkgI,kBACLlgI,KAAKmgI,eACLngI,KAAKi8H,OACT,EAEA2D,EAAY57H,UAAUm8H,aAAe,WACjC,IAAIh7E,EAAU,IAAInE,GACdo/E,EAAgBpgI,KAAKgyB,MAAM54B,SAC3B2iI,EAAW/7H,KAAK+7H,SAEpB52E,EAAQt5B,OAAO7rB,KAAKu8H,WACpBp3E,EAAQt5B,OAAOu0G,GAEf,IAAK,IAAI10H,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IAAK,CACtC,IAAInY,EAAUwoI,EAASrwH,GACvBy5C,EAAQt5B,OAAOt4B,EAAQ6F,UACvB7F,EAAQ4J,MAAM5J,EAAQ+hB,QAAQnY,MAClC,CAEA6C,KAAKk8H,SAAW/2E,CACpB,EAEAy6E,EAAY57H,UAAUy4H,aAAe,WACjC,IAEInnH,EAAUtV,KAAKsV,QACf0c,EAAQhyB,KAAKgyB,MAAQ,IAAIqrG,GAAY/nH,EAAQ0c,MAAOhyB,KAAK27H,gBAE7D37H,KAAK+7H,SAAW,GAEhB,IAAIA,EAAWzmH,EAAQwmH,QACvBC,EAAW3mI,EAAQ2mI,GAAYA,EAAW,CAAEA,GAE5C,IAAK,IAAIrwH,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IAAK,CACtC,IAAIigH,EAAiB5kG,GAAW,CAAC,EAAGg1G,EAASrwH,GAAI,CAC7CtQ,UAAW,CACPykF,YAAavqE,EAAQuqE,eAGzBwgD,Eb5EJ,Ua4EkB1U,EAAenwH,MAAkBqjI,GAAqBQ,GAhB/Dr/H,KAkBF+7H,SAAS3sH,KAAK,IAAIixH,EAAYruG,EAAO25F,GAChD,CACJ,EAEAiU,EAAY57H,UAAUg5H,aAAe,WACjC,IAAIryE,EAAW3qD,KAAKsV,QAAQ0c,MAAM24B,SAElC,MAAO,CACHn2D,MAAOm2D,EA/EK,GbFJ,IakFRl2D,OAAQk2D,EbpFC,IaKI,GAiFrB,EAEAi1E,EAAY57H,UAAUg8H,QAAU,SAAkB/vG,GAO9C,IANA,IAUIr5B,EATAo7B,EADMhyB,KACMgyB,MACZ+pG,EAFM/7H,KAES+7H,SACftuE,EAAYx9B,EAAIkV,SAChBm7F,EAAcvE,EAAS,GAAG9rG,IAAIpJ,QAAQ6jB,KAAK1Y,EAAM/B,KAE5CvkB,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IACjC40H,EAAY51F,KAAKqxF,EAASrwH,GAAGukB,IAAIpJ,SAkBrC,OAdImL,EAAM1c,QAAQq1C,UACd/zD,EAAO0pI,EAAY9rI,QAAU,EAC7B8rI,EAAc,IAAIj2F,GACdojB,EAAU1nC,EAAInvB,EAAMq5B,EAAIsa,GACxBkjB,EAAU1nC,EAAInvB,EAAMq5B,EAAIwa,MAG5B7zC,EAAO0pI,EAAY7rI,SAAW,EAC9B6rI,EAAc,IAAIj2F,GACdpa,EAAIqa,GAAImjB,EAAUznC,EAAIpvB,EACtBq5B,EAAIua,GAAIijB,EAAUznC,EAAIpvB,IAIvB0pI,CACX,EAEAV,EAAY57H,UAAUi8H,eAAiB,WAUnC,IATA,IAaIr/G,EAVAoR,EADMhyB,KACMgyB,MACZ+pG,EAFM/7H,KAES+7H,SACfwE,EAAWvuG,EAAM/B,IACjBA,EAAM8rG,EAAS,GAAG9rG,IAAIpJ,QAAQ6jB,KAAK1Y,EAAM/B,KACzCqwG,EAActgI,KAAKqpC,KAEd39B,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IACjCukB,EAAIya,KAAKqxF,EAASrwH,GAAGukB,IAAIpJ,SAIzBmL,EAAM1c,QAAQq1C,UACd/pC,EAAO0/G,EAAYn7F,SAASpf,EAAIkK,EAAIkV,SAASpf,EAC7CiM,EAAMyxB,OAAO,IAAIpZ,GACbk2F,EAASj2F,GAAK1pB,EAAM0/G,EAAY/1F,GAChCg2F,EAAS/1F,GAAK5pB,EAAM0/G,EAAY71F,OAGpC7pB,EAAO0/G,EAAYn7F,SAASnf,EAAIiK,EAAIkV,SAASnf,EAC7CgM,EAAMyxB,OAAO,IAAIpZ,GACbk2F,EAASj2F,GAAIi2F,EAASh2F,GAAK3pB,EAC3B2/G,EAAS/1F,GAAI+1F,EAAS91F,GAAK7pB,KAInC,IAAK,IAAI0lD,EAAM,EAAGA,EAAMy1D,EAAS3hI,OAAQksE,IACrCy1D,EAASz1D,GAAK7iB,OA7BLzjD,KA6BmBqpC,KAEpC,EAEAu2F,EAAY57H,UAAU+7H,kBAAoB,SAA4B12F,GAClE,IACIrX,EADMhyB,KACMgyB,MAChB,IAAKA,EAAM1c,QAAQq1C,SAAU,CACzB,IAAIu/C,EAAWl4E,EAAMi1B,aAAazyD,QAAU60C,EAAK70C,QAC7C01G,EAAW,IACXl4E,EAAM/B,IAAIib,OAAOg/D,EAAU,GAC3Bl4E,EAAM/B,IAAI+a,QAAQ3B,EAAM,UACxBrX,EAAMyxB,OAAOzxB,EAAM/B,KAE3B,CACJ,EAEA2vG,EAAY57H,UAAUk8H,gBAAkB,WAUpC,IATA,IAGIluG,EADMhyB,KACMgyB,MACZ+pG,EAFM/7H,KAES+7H,SACfwE,EAAWvuG,EAAM/B,IAAIpJ,QACrBtR,EAAMyc,EAAM1c,QAAQq1C,SAAW,IAAM,IACrCuzE,EAAanC,EAAS,GAAG9rG,IAEpBvkB,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IACjCwyH,EAAWxzF,KAAKqxF,EAASrwH,GAAGukB,IAAIpJ,SAGpC05G,EAAShrH,EAAM,IAAMuL,KAAK0K,IAAI+0G,EAAShrH,EAAM,GAAK2oH,EAAW3oH,EAAM,GAAI,GACvEgrH,EAAShrH,EAAM,IAAMuL,KAAK0K,IAAI0yG,EAAW3oH,EAAM,GAAKgrH,EAAShrH,EAAM,GAAI,GAEvEyc,EAAMyxB,OAAO88E,GAEb,IAAK,IAAIj6D,EAAM,EAAGA,EAAMy1D,EAAS3hI,OAAQksE,IACrCy1D,EAASz1D,GAAK7iB,OAnBLzjD,KAmBmBqpC,KAEpC,EAEOu2F,CACX,CApLmB,CAoLjBlE,IAEF/lG,GAAkBiqG,GAAa,CAC3B//C,aAAa,EACb08C,UAAW,CACPp1E,WAAY,IAEhBn1B,MAAO,CACH24B,UAAU,KAIlB,ICnMIxb,GAAO,SAAU/H,GACjB,SAAS+H,EAAIjZ,EAAU5gB,QACD,IAAb4gB,IAAsBA,EAAW,IAAIsqG,SACzB,IAAZlrH,IAAqBA,EAAU,CAAC,GAErC8xB,EAAWpkC,KAAKhD,KAAMsV,GAEtBtV,KAAKk2B,SAASA,GAET/Q,EAAQnlB,KAAKsV,QAAQiQ,SACtBvlB,KAAKulB,OAZI,OAcjB,CAEK6hB,IAAa+H,EAAIpkC,UAAYq8B,GAClC+H,EAAInrC,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WACxDmrC,EAAInrC,UAAUqH,YAAc8jC,EAE5B,IAAIrM,EAAqB,CAAEmS,SAAU,CAAE3oC,cAAc,IAuCrD,OArCAw2B,EAAmBmS,SAAS7oC,IAAM,WAC9B,MAAO,KACX,EAEA+iC,EAAInrC,UAAU04C,MAAQ,SAAgBvrB,GAClC,OAAOnxB,KAAK4gD,UAAUvX,KAAKlY,EAC/B,EAEAge,EAAInrC,UAAUy6C,QAAU,WACpB,OAAOz+C,KAAKk2B,WAAWmT,MAC3B,EAEA8F,EAAInrC,UAAU21F,OAAS,WACnB,IAAIt0E,EAAO,IAAIu5B,GACXhP,EAAc5vC,KAAKk2B,WAAW0Z,cAElC,GAAIA,EAAYx1C,OAAS,EAAG,CACxBirB,EAAK+4B,OAAOxO,EAAY,GAAG7pB,EAAG6pB,EAAY,GAAG5pB,GAE7C,IAAK,IAAIta,EAAI,EAAGA,EAAIkkC,EAAYx1C,OAAQsR,GAAK,EACzC2Z,EAAK23B,QAAQpN,EAAYlkC,GAAIkkC,EAAYlkC,EAAI,GAAIkkC,EAAYlkC,EAAI,GAEzE,CAEA,OAAO2Z,CACX,EAEA8pB,EAAInrC,UAAU6xC,eAAiB,SAAyB3Q,GACpD,OAAOllC,KAAKk2B,WAAW2T,cAAc3E,EACzC,EAEAiK,EAAInrC,UAAU8lC,UAAY,SAAoB5E,GAC1C,OAAOllC,KAAKk2B,WAAW4T,UAAU5E,EAAOllC,KAAKsV,QAAQiQ,OAAO/wB,MAAQ,EACxE,EAEAqW,OAAOq4B,iBAAkBiM,EAAInrC,UAAW8+B,GAEjCqM,CACX,CA1DW,CA0DT0Q,GAAUC,GAAWe,GAAa9L,OC7DhC0rF,GAAuB,IAEvBtxF,GD6DJ,GC5DIyP,GAAOp5B,GACPw7B,GAAQx7B,GAEZ,SAASk7G,GAAU3hF,EAAK4hF,EAAYhvG,EAAM6/B,GACtC,IAAI4J,EAAQ,IAAIpa,GACZ7b,EAAS4Z,EAAI5Z,OACbW,EAASiZ,EAAI6hF,aAEjB,GAAIpvE,EAAYz9D,QACZ,IAAK,IAAI2X,EAAI,EAAGA,EAAIi1H,EAAWvmI,OAAQsR,IAAK,CACxC,IAAIm1H,EAAY9hF,EAAIrP,QAAQixF,EAAWj1H,IACnCo1H,EAAU,IAAIxF,GAAUn2F,EAAOpf,EAAI+f,EAAS0rB,EAAY56D,KAAMuuC,EAAOnf,GAAG4L,OAAO+uG,EAAWj1H,GAAIy5B,GAElGi2B,EAAMvvC,OAAO,IAAI+yB,GAAK,CAClBr5B,OAAQ,CACJiJ,MAAOgjC,EAAYhjC,MACnBh6B,MAAOg9D,EAAYh9D,SAExB4pD,OAAOyiF,GAAW9jF,OAAO+jF,GAChC,CAGJ,OAAO1lE,CACX,CAEA,SAAS2lE,GAAax9F,EAAMjkC,EAAIkvB,EAAOgnB,GACnC,MAAO,CAAEjS,KAAMA,EAAMjkC,GAAIA,EAAIkvB,MAAOA,EAAOgnB,QAASA,EACxD,CAEA,IAAIwrF,GAAe,SAAUj6D,GACzB,SAASi6D,EAAY1rH,EAASuuC,GAC1BkjB,EAAY/jE,KAAKhD,KAAM,EAAG,EAAGsV,EAASuuC,EAC1C,CAuZA,OArZKkjB,IAAci6D,EAAYj2H,UAAYg8D,GAC3Ci6D,EAAYh9H,UAAY6G,OAAOS,OAAQy7D,GAAeA,EAAY/iE,WAClEg9H,EAAYh9H,UAAUqH,YAAc21H,EAEpCA,EAAYh9H,UAAUw/C,gBAAkB,SAA0BluC,GAC9D,IAAIgpD,EAAev3C,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,GAIhD,OAHAgpD,EAAajK,UAAYiK,EAAajK,WAAatvB,GAAcu5B,EAAa3vC,IAAK2vC,EAAa9yC,KAChG8yC,EAAa3J,UAAY2J,EAAa3J,WAAa2J,EAAajK,UAAY,GAErEiK,CACX,EAEA0iE,EAAYh9H,UAAUuuD,WAAa,WACnC,EAEAyuE,EAAYh9H,UAAU5K,OAAS,SAAiB+rC,EAAQW,GACpD,IAAIiZ,EAAM/+C,KAAKihI,UAAU97F,EAAQW,GAEjC9lC,KAAKqpC,KAAO0V,EAAI1V,OAChBrpC,KAAKkhI,cAAgBlhI,KAAKs9H,eAC1Bt9H,KAAKo7D,MAAQp7D,KAAKm9H,cAClBn9H,KAAKuyG,OAASvyG,KAAK09H,cACvB,EAEAsD,EAAYh9H,UAAUy/C,OAAS,SAAiBpa,GAC5C,IAAIlE,EAASkE,EAAKlE,SACdW,EAAShlB,KAAK6N,IAAI0a,EAAK50C,SAAU40C,EAAK70C,SAAW,EAErD,IAAI2wB,GAAQnlB,KAAKqpC,MAMb,OAAOrpC,KAAK5G,OAAO+rC,EAAQW,GAL3B9lC,KAAKqpC,KAAOrpC,KAAK++C,IAAI1V,OACrBrpC,KAAK8lC,OAAO9lC,KAAK++C,IAAI6hF,cACrB5gI,KAAKmhI,mBACLnhI,KAAKs9H,cAIb,EAEA0D,EAAYh9H,UAAUqoE,UAAY,SAAoBlvE,GAClD,IAAI5K,EAAMyN,KAAKsV,QACXqZ,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IACV0iC,EAAU37D,EAAI27D,QACd1hB,EAAaj6C,EAAIi6C,WACjBgB,EAAWj7C,EAAIi7C,SACf3b,EAAQ2b,EAAWhB,EASvB,OANI0hB,EACS1gB,GAAYrwC,EAAQwxB,IAAQnD,EAAMmD,GAAOkD,GAEvC10B,EAAQwxB,IAAQnD,EAAMmD,GAAOkD,EAAS2a,GAGrCi0F,EACpB,EAEAO,EAAYh9H,UAAUo9H,UAAY,WAC9B,IAAI7uB,EAASvyG,KAAKsV,QAAQi9F,OAE1B,OAAOA,GAAUA,EAAOn4G,MAC5B,EAEA4mI,EAAYh9H,UAAUq9H,UAAY,WAC9B,IAAI9uI,EAAMyN,KAAKsV,QACX+8C,EAAa9/D,EAAI8/D,WACjBF,EAAa5/D,EAAI4/D,WACjBv7D,EAAO,EASX,OARIy7D,EAAWt+D,UACX6C,EAAOy7D,EAAWz7D,MAGlBu7D,EAAWp+D,UACX6C,EAAOkqB,KAAK0K,IAAI2mC,EAAWv7D,KAAMA,IAG9BA,CACX,EAEAoqI,EAAYh9H,UAAU8uD,YAAc,WAChC,IAAIpZ,EAAQqtB,EAAY/iE,UAAU8uD,YAAY9vD,KAAKhD,MAC/CsV,EAAUtV,KAAKsV,QAOnB,OANYA,EAAQk4B,SAAWl4B,EAAQk3B,YAE1B,KAAQl3B,EAAQkW,IAAMlW,EAAQ++C,YAAc,IACrD3a,GAAS,GAGNA,CACX,EAEAsnF,EAAYh9H,UAAUs5H,aAAe,WACjC,IAAI97F,EAASxhC,KAETsV,EAAUtV,KAAKsV,QACfypC,EAAM/+C,KAAK++C,IAAIl4B,QACfif,EAASiZ,EAAI6hF,aACbD,EAAa3gI,KAAK2gI,WAAW5hF,EAAKzpC,EAAQ++C,WAC1C2E,EAAY1jD,EAAQ0jD,UAAY1jD,EAAQ0jD,WAAsB,GAATlzB,EACrDw7F,EAAc,IAAItgF,GAElBugF,EAAyB,IAATz7F,EAChB3gB,GAAQ7P,EAAQisH,eAChBA,EAAgBjsH,EAAQisH,cAExBjsH,EAAQisH,cAAgBA,EAG5B,IAAIjkB,EAAgBhoG,EAAQ08C,OACxBwvE,EAAWlkB,EAAczgE,WAAa74B,GACtCy9G,EAAmBt8G,GAAQnlB,KAAKkhI,eAEhCM,IACA17F,GAAU9lC,KAAKqhI,YAEXrhI,KAAKohI,cAAgBK,IACrB37F,GAAUkzB,EAAYuoE,GAE1BxiF,EAAI2iF,WAAW57F,GAAQ67F,WAAW77F,IAStC,IANA,IAAIksB,EAAShyD,KAAKgyD,OACdtY,EAAQsY,EAAO53D,OACfixC,EAAU7jB,GAAW81F,EAAcjyE,SACnCu2F,GAAgBv2F,EAAQvjB,KAAOujB,EAAQzjB,OAAS,EAChDi6G,GAAiBx2F,EAAQ1jB,IAAM0jB,EAAQxjB,QAAU,EAE5Cnc,EAAI,EAAGA,EAAIguC,EAAOhuC,IAAK,CAC5B,IAAIwjD,EAAQ8C,EAAOtmD,GACfg8C,EAAYwH,EAAMj/B,IAAIz7B,QAAU,EAChCmzD,EAAauH,EAAMj/B,IAAIx7B,SAAW,EAClCo9B,EAAQ8uG,EAAWj1H,GACnBmsD,GAAchmC,EAAQ4uG,IAAwBxF,GAE9Czd,EAAKz+D,EAAIrP,QAAQ7d,GACjB0T,EAAKi4E,EAAGz3F,EAAKjF,KAAKgR,IAAI+lC,IAAenQ,EAAYk6E,IAAiBJ,EAAW,GAAK,GAClFh8F,EAAKg4E,EAAGx3F,EAAKlF,KAAKiR,IAAI8lC,IAAelQ,EAAak6E,IAAkBL,EAAW,GAAK,GAExFtyE,EAAMzL,OAAO,IAAIpZ,GAAI9E,EAAKmiB,EAAWliB,EAAKmiB,EAAYpiB,EAAKmiB,EAAWliB,EAAKmiB,IAC3E,IAAIm6E,EAAW,IAAIxG,GAAUpsE,EAAMj/B,IAAIqa,GAAI4kB,EAAMj/B,IAAIsa,IAEjDw3F,OAAgB,EACpB,GAAKN,EAGE,CAEH,IAAIO,GADJD,EAAevgG,EAAO0/F,cAActtI,SAAS8X,IACb29B,OAAO9B,OAEnC06F,EAAiBF,EAAazvG,aAAegpG,KACjD2G,EAAet8G,UAAUm8G,EAAS/7G,EAAIi8G,EAAaj8G,EAAG+7G,EAAS97G,EAAIg8G,EAAah8G,GAChF+7G,EAAazvG,UAAU2vG,EAC3B,MATIF,EAAe1G,GAAkBnsE,EAAO55C,EAAQ08C,QAChDsvE,EAAYz1G,OAAOk2G,GAUvBvgG,EAAO6H,KAAOiyF,GAAAA,MAAe95F,EAAO6H,KAAM04F,EAAa14F,OAC3D,CAEA,OAAOi4F,CACX,EAEAN,EAAYh9H,UAAUm9H,iBAAmB,WACrC,IAAI5uB,EAASvyG,KAAKuyG,OAAO3+G,SAEzB,GAAI2+G,EAAOn4G,OAAS,EAAG,CACnB,IAAI7H,EAAMyN,KAAKsV,QACXisH,EAAgBhvI,EAAIgvI,cACpBvoE,EAAYzmE,EAAIymE,UAChBkpE,EAAcliI,KAAKmiI,iBAEnBniI,KAAKsV,QAAQ08C,OAAOnV,WAAa74B,KACjCk+G,GAAelpE,EAAYuoE,GAK/B,IAFA,IAAI50F,EAAYu1F,EAAelpE,EAAY,EAElCttD,EAAI,EAAGA,EAAI6mG,EAAOn4G,OAAQsR,IAC/B6mG,EAAO7mG,GAAGk1C,UAAU8gF,WAAW/0F,GAAWg1F,WAAWh1F,GAGzD3sC,KAAKqpC,KAAOiyF,GAAAA,MAAet7H,KAAKqpC,KAAMrpC,KAAKuyG,OAAOlpE,OACtD,CACJ,EAEA23F,EAAYh9H,UAAU05H,aAAe,WACjC,IAAIl8F,EAASxhC,KAETylB,EAAWzlB,KAAKoiI,gBAChBC,EAAgB58G,EAASrrB,OACzBhC,EAAS,IAAI4oD,GAEjB,GAAIqhF,EAAe,CACf,IAAI9vI,EAAMyN,KAAKsV,QACX0jD,EAAYzmE,EAAIymE,UAChB9K,EAAU37D,EAAI27D,QACdqzE,EAAgBhvI,EAAIgvI,cACpBW,EAAcliI,KAAKmiI,iBAGvBniI,KAAK8lC,OAAO9lC,KAAK8lC,SAAWkzB,EAAYuoE,GAExC,IAAK,IAAI71H,EAAI,EAAGA,EAAI22H,EAAe32H,IAAK,CACpC,IAAI6tC,EAAU9zB,EAAS/Z,GACnB63B,EAAO/B,EAAO6qC,UAAU9yB,EAAQ2U,EAAU,KAAO,SACjD5uD,EAAKkiC,EAAO6qC,UAAU9yB,EAAS2U,EAAiB,OAAP,OAEzC5uD,EAAKikC,IAAS,GACdnrC,EAAOyzB,OAAO2V,EAAO8gG,YAAY/+F,EAAMjkC,EAAI4iI,EAAa3oF,GAEhE,CACJ,CAEA,OAAOnhD,CACX,EAEA4oI,EAAYh9H,UAAUs+H,YAAc,SAAsB91F,EAAYgB,EAAU00F,EAAa5sH,GACzF,IAAI0jD,EAAYh5D,KAAKsV,QAAQ0jD,UACzBupE,EAAY,IAAIjH,GAAQt7H,KAAK++C,IAAI5Z,OAAQ,CACzCkK,QAAS6yF,EAAelpE,EAAY,EACpC1pB,QAAS4yF,EAAelpE,EAAY,EACpCxsB,WAAYA,EACZgB,SAAUA,IAGd,OAAO,IAAI2B,GAAIozF,EAAW,CACtBh9G,OAAQ,CACJ/wB,MAAOwkE,EACPxqC,MAAOlZ,EAAQkZ,MACfgnB,QAASlgC,EAAQkgC,QACjB+qC,QAASjrE,EAAQirE,UAG7B,EAEAygD,EAAYh9H,UAAUo+H,cAAgB,WAClC,IAAI9sH,EAAUtV,KAAKsV,QACfi9F,EAASj9F,EAAQi9F,QAAU,GAC3B74D,EAAQ64D,EAAOn4G,OACfqrB,EAAW,GAEf,GAAIi0B,EAAO,CACP,IAAI/qB,EAAMrZ,EAAQqZ,IACdnD,EAAMlW,EAAQkW,IACdwxD,EAAe1nE,EAAQktH,sBAC3B/8G,EAASrW,KAAK2xH,GAAapyG,EAAKnD,EAAKwxD,IAErC,IAAK,IAAItxE,EAAI,EAAGA,EAAIguC,EAAOhuC,IAIvB,IAHA,IAAIgsC,EAAQ+jF,GAASlpB,EAAO7mG,GAAIijB,EAAKnD,GACjC62G,EAAgB58G,EAASrrB,OAEpByyF,EAAI,EAAGA,EAAIw1C,EAAex1C,IAAK,CACpC,IAAItzC,EAAU9zB,EAASonE,GAEvB,GAAItzC,EAAQhW,MAAQmU,EAAMnU,MAAQmU,EAAMnU,MAAQgW,EAAQj6C,GAAI,CACxDmmB,EAASrW,KAAK2xH,GAAarpF,EAAMnU,KAAMmU,EAAMp4C,GAAIo4C,EAAMlpB,MAAOkpB,EAAMlC,UAEhE+D,EAAQhW,MAAQmU,EAAMp4C,IAAMo4C,EAAMp4C,IAAMi6C,EAAQj6C,IAChDmmB,EAASrW,KAAK2xH,GAAarpF,EAAMp4C,GAAIi6C,EAAQj6C,GAAI09E,EAActlC,EAAMlC,UAGzE+D,EAAQj6C,GAAKo4C,EAAMnU,KAEnB,KACJ,CACJ,CAER,CAEA,OAAO9d,CACX,EAEAu7G,EAAYh9H,UAAUm+H,eAAiB,WACnC,IACIpjF,EADM/+C,KACI++C,IACVzpC,EAFMtV,KAEQsV,QACd0jD,EAAY1jD,EAAQ0jD,UACpBuoE,EAAgBjsH,EAAQisH,cACxBtvE,EAAgB38C,EAAQ+8C,WAAWz7D,KASvC,OANI0e,EAAQ08C,OAAOnV,WAAat4B,GACnBw6B,EAAI6hF,aAAe3uE,EAAgBsvE,EAAgBvoE,EAEnDja,EAAI6hF,aAAe5nE,CAIpC,EAEAgoE,EAAYh9H,UAAUi9H,UAAY,SAAoB97F,EAAQW,GAC1D,IAAIxwB,EAAUtV,KAAKsV,QASnB,OAPUtV,KAAK++C,IAAM,IAAIu8E,GAAQn2F,EAAQ,CACrCkK,QAASvJ,EACTwJ,QAASxJ,EACT0G,WAAYl3B,EAAQk3B,WAAai0F,GACjCjzF,SAAUl4B,EAAQk4B,SAAWizF,IAIrC,EAEAO,EAAYh9H,UAAUm5H,YAAc,WAChC,IACIp+E,EADM/+C,KACI++C,IACVzpC,EAFMtV,KAEQsV,QACdmtH,EAAU1jF,EAAIl4B,QAElB7mB,KAAK0iI,gBAAkB1iI,KAAK2gI,WAAW5hF,EAAKzpC,EAAQ++C,WACpDr0D,KAAKqyD,WAAaquE,GAAU+B,EAASziI,KAAK0iI,gBAAiBptH,EAAQ++C,UAAW/+C,EAAQ+8C,YAEtF,IAAIswE,EAAW,IAAI3hF,GACnB2hF,EAAS92G,OAAO7rB,KAAKqyD,YAErB,IAAIJ,EAAgB38C,EAAQ+8C,WAAWz7D,KACnCs7D,EAAgB58C,EAAQ68C,WAAWv7D,KAIvC,GAFAoJ,KAAK4iI,gBAAkB3wE,EAAgBC,EAEnC58C,EAAQ08C,OAAOnV,WAAat4B,GAAS,CACrC,IAAIuhB,EAAS28F,EAAQ7B,aACrB6B,EAAQf,WAAW57F,EAASmsB,EAAgBC,GACpCyvE,WAAW77F,EAASmsB,EAAgBC,EAChD,CAMA,OAJAlyD,KAAK6iI,gBAAkB7iI,KAAK8iI,oBAAoB9iI,KAAK2gI,WAAW5hF,EAAKzpC,EAAQq/C,YAC7E30D,KAAKmyD,WAAauuE,GAAU+B,EAASziI,KAAK6iI,gBAAiBvtH,EAAQq/C,UAAWr/C,EAAQ68C,YACtFwwE,EAAS92G,OAAO7rB,KAAKmyD,YAEdwwE,CACX,EAEA3B,EAAYh9H,UAAU8+H,oBAAsB,SAA8B90F,GAItE,IAHA,IAAI14B,EAAUtV,KAAKsV,QACfu9C,EAAOv9C,EAAQ++C,UAAY/+C,EAAQq/C,UAE9BjpD,EAAIsiC,EAAO5zC,OAAS,EAAGsR,GAAK,EAAGA,IAChCA,EAAImnD,IAAS,GACb7kB,EAAO5H,OAAO16B,EAAG,GAIzB,OAAOsiC,CACX,EAEAgzF,EAAYh9H,UAAU28H,WAAa,SAAqBx0D,EAAM7D,GAC1D,IAAIhzD,EAAUtV,KAAKsV,QACf44C,EAAU54C,EAAQ44C,QAClBxW,EAAQpiC,EAAQkW,IAAMlW,EAAQqZ,IAC9BkD,EAAQs6C,EAAK3+B,SAAW2+B,EAAK3/B,WAC7Bu2F,EAAYrrF,EAAQ4wB,EACpB/yD,EAAM42D,EAAK3/B,WACXoW,EAAO/wB,EAAQkxG,EAEf70E,IACA34C,GAAOsc,EACP+wB,GAAQA,GAGR/wB,GAAS,KAAQvc,EAAQkW,IAAM88C,IAAc,IAC7Cy6D,GAAa,GAIjB,IADA,IAAI/jE,EAAY,GACPtzD,EAAI,EAAGA,EAAIq3H,EAAWr3H,IAC3BszD,EAAU5vD,KAAK4R,GAAMzL,E5YnZJ,I4YoZjBA,GAAOqtC,EAOX,OAJI5hC,GAAMzL,IAAQ42D,EAAK3+B,UACnBwxB,EAAU5vD,KAAKmG,GAGZypD,CACX,EAEAgiE,EAAYh9H,UAAU8hC,OAAS,SAAiB3oC,GAC5C,IAAIA,EAKA,OAAO6C,KAAK++C,IAAI6hF,aAJhB5gI,KAAK++C,IAAI2iF,WAAWvkI,GAAOwkI,WAAWxkI,GACtC6C,KAAKgjI,gBAAgBhjI,KAAKqyD,WAAWz+D,SAAUoM,KAAK0iI,iBACpD1iI,KAAKgjI,gBAAgBhjI,KAAKmyD,WAAWv+D,SAAUoM,KAAK6iI,iBAAiB,EAI7E,EAEA7B,EAAYh9H,UAAUg/H,gBAAkB,SAA0B5nE,EAAOulE,EAAYsC,GACjF,IAAIriH,EAAOqiH,GAASjjI,KAAK4iI,iBAAwB,EAC7CH,EAAUziI,KAAK++C,IACfjZ,EAAS28F,EAAQ7B,aAEjBqC,GAASjjI,KAAKsV,QAAQ08C,OAAOnV,WAAat4B,IAAoB,IAAT3D,IACrD6hH,EAAUziI,KAAK++C,IAAIl4B,SACX66G,WAAW57F,EAASllB,GAAM+gH,WAAW77F,EAASllB,GAG1D,IAAK,IAAIlV,EAAI,EAAGA,EAAI0vD,EAAMhhE,OAAQsR,IAAK,CACnC,IAAIw3H,EAAWT,EAAQ/yF,QAAQixF,EAAWj1H,IACtC+Z,EAAW21C,EAAM1vD,GAAG+Z,SACpB09G,EAAQD,EAASn9G,EAAIN,EAAS,GAAGC,SAASK,EAC1Cq9G,EAAQF,EAASl9G,EAAIP,EAAS,GAAGC,SAASM,EAE9Co1C,EAAM1vD,GAAG4mB,WAAU,IAAIgpG,IAAgB31G,UAAUw9G,EAAOC,GAC5D,CACJ,EAEOpC,CACX,CA3ZmB,CA2ZjBj6D,IAEFpxC,GAAkBqrG,GAAa,CAC3BryG,IAAK,EACLnD,IAAK,IAEL6mC,WAAY,CACRz7D,KAAM,GACNu1C,MAAOnoB,GACPwK,MAAOlL,EACP9uB,MAAOwmI,GACPjnI,SAAS,GAGbo+D,WAAY,CACRv7D,KAAM,GACNu1C,MAAOnoB,GACPwK,MAAOlL,EACP9uB,MAAOwmI,GACPjnI,SAAS,GAGby4C,YAAa,GACbgB,SAAU,IAEVwkB,OAAQ,CACJnV,SAAU74B,GACVqnB,QAAS,KAIjB,UC9dIg4F,GAA0B,SAAUj8F,GACpC,SAASi8F,EAAuB7vI,EAAS8hB,GACrC8xB,EAAWpkC,KAAKhD,KAAMxM,EAAS8hB,GAE/B,IAAIu0E,EAAmB7pF,KAAKsV,QAE5Bu0E,EAAiBpnC,SAAW3hC,KAAK0K,IAAK1K,KAAKC,IAAI8oE,EAAiBy5C,SAAWz5C,EAAiB05C,UAAY15C,EAAiBpnC,SAAY,IAAM,EAC/I,CAaA,OAXKrb,IAAai8F,EAAuBt4H,UAAYq8B,GACrDi8F,EAAuBr/H,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC3Eq/H,EAAuBr/H,UAAUqH,YAAcg4H,EAE/CA,EAAuBr/H,UAAU4+C,KAAO,SAAertC,GACnD,IAAID,EAAUtV,KAAKsV,QACfuc,EAAQvI,GAAiBhU,EAAQiuH,SAAUjuH,EAAQguH,SAAU/tH,GAEjEvV,KAAKxM,QAAQ8+B,UAAU4D,KAAqBtE,OAAOC,EAAOvc,EAAQ6vB,QACtE,EAEOk+F,CACX,CArB8B,CAqB5B79G,IAEFmQ,GAAkB0tG,GAAwB,CACtC3gF,OAAQw4E,GACRz4E,SAAUo4E,KAGdr1G,GAAAA,QAAAA,SAA0C21G,GAAgBkI,IAE1D,UC1BI/iF,GAAS96B,GACTw7B,GAAQx7B,GACRo5B,GAAOp5B,GAEPg+G,GAAiB,SAAU5F,GAC3B,SAAS4F,IACL5F,EAAQ11H,MAAMlI,KAAM+H,UACxB,CA0FA,OAxFK61H,IAAU4F,EAAcz4H,UAAY6yH,GACzC4F,EAAcx/H,UAAY6G,OAAOS,OAAQsyH,GAAWA,EAAQ55H,WAC5Dw/H,EAAcx/H,UAAUqH,YAAcm4H,EAEtCA,EAAcx/H,UAAUy/H,SAAW,SAAmB5xG,GAClD7xB,KAAK8zC,SAASxhB,UAAUgpG,KAAgB1pG,OAAOC,EAAO7xB,KAAKmlC,QAC/D,EAEAq+F,EAAcx/H,UAAU+5H,QAAU,WAC9B,IACI/rG,EADMhyB,KACMgyB,MACZ1c,EAFMtV,KAEQsV,QACdiuH,EAAWvxG,EAAMq6C,UAAU/2D,EAAQwoH,WACnCwF,EAAWtxG,EAAMq6C,UAAU/2D,EAAQnY,QAED,IAAlCmY,EAAQla,UAAUykF,YAClB7/E,KAAKyjI,SAASH,GAEd,IAAID,GAAuBrjI,KAAK8zC,SAAU/sB,GAAWzR,EAAQla,UAAW,CACpEmoI,SAAUA,EACVD,SAAUA,KACVzgF,MAEZ,EAEA2gF,EAAcx/H,UAAU5K,OAAS,WAC7B,IACI44B,EADMhyB,KACMgyB,MACZ1c,EAFMtV,KAEQsV,QACdw+B,EAAW,IAAIkN,GAenB,OAb0B,IAAtB1rC,EAAQla,WACR2rB,GAAWzR,EAAQla,UAAW,CAC1BoxC,WAAY,EACZrH,OAAQnT,EAAM+sB,IAAI5Z,OAClB+oB,QAASl8B,EAAM1c,QAAQ44C,UAI/Bpa,EAASjoB,OAAO7rB,KAAK0jI,gBAAiB1jI,KAAK2jI,cAE3C3jI,KAAK8zC,SAAWA,EAChB9zC,KAAKyjI,SAASxI,IAEPnnF,CACX,EAEA0vF,EAAcx/H,UAAUy/C,OAAS,SAAiB1E,GAC9C,IAAI5Z,EAASnlC,KAAKmlC,OAAS4Z,EAAI5Z,OAC3B/qC,EAASs0B,GAAW1uB,KAAKsV,QAAQlb,QAAU,EAAG,GAAK,KACnD0rC,EAAS9lC,KAAK8lC,OAASiZ,EAAI6hF,aAAexmI,EAC1CwpI,EAAU5jI,KAAK4jI,QAAU9iH,KAAKE,MAAM8kB,EAAS9lC,KAAKsV,QAAQuuH,IAAIjtI,MAElEoJ,KAAKqpC,KAAOiyF,GAAAA,WAAoB,IAAIA,GAAUn2F,EAAOpf,EAAI69G,EAASz+F,EAAOnf,EAAI49G,GACjD,IAAItI,GAAUn2F,EAAOpf,EAAI69G,EAASz+F,EAAOnf,EAAI49G,GAC7E,EAEAJ,EAAcx/H,UAAU0/H,cAAgB,WACpC,IAAIxxE,EAAgBlyD,KAAKgyB,MAAM1c,QAAQ68C,WAAWv7D,KAC9CuuC,EAASnlC,KAAKmlC,OACd2+F,EAAc9jI,KAAKsV,QAAQkZ,MAE3Bu1G,EAAa,IAAInlF,GAAK,CACtB7I,KAAM,CAAEvnB,MAAOs1G,GACfv+G,OAAQ,CAAEiJ,MAAOs1G,EAAatvI,MAAOwmI,MAQzC,OALA+I,EAAW3lF,OAAOjZ,EAAOpf,EAAI/lB,KAAK8lC,OAASosB,EAAe/sB,EAAOnf,GACtD+2B,OAAO5X,EAAOpf,EAAGof,EAAOnf,EAAKhmB,KAAK4jI,QAAU,GAC5C7mF,OAAO5X,EAAOpf,EAAGof,EAAOnf,EAAKhmB,KAAK4jI,QAAU,GAC5Cr1F,QAEJw1F,CACX,EAEAP,EAAcx/H,UAAU2/H,WAAa,WACjC,IAAIruH,EAAUtV,KAAKsV,QACf0uH,EAAW1uH,EAAQuuH,IAAIr1G,OAASlZ,EAAQkZ,MACxCy8C,EAAS,IAAIqwD,GAAWt7H,KAAKmlC,OAAQnlC,KAAK4jI,SAO9C,OALU,IAAItjF,GAAO2qB,EAAQ,CACzBl1B,KAAM,CAAEvnB,MAAOw1G,GACfz+G,OAAQ,CAAEiJ,MAAOw1G,IAIzB,EAEOR,CACX,CA9FqB,CA8FnB5F,IAEFjoG,GAAkB6tG,GAAe,CAC7BK,IAAK,CACDjtI,KAvGO,KAyGXqtI,MAAO,CACHzvI,MAAO,GACPC,OAAQ,IAEZ2G,UAAW,CACPjI,KAAMgoI,GACN14E,SAAUo4E,MAIlB,UCnHI75E,GAAQx7B,GAER0+G,GAAe,SAAUxI,GACzB,SAASwI,IACLxI,EAAMxzH,MAAMlI,KAAM+H,UACtB,CA6KA,OA3KK2zH,IAAQwI,EAAYn5H,UAAY2wH,GACrCwI,EAAYlgI,UAAY6G,OAAOS,OAAQowH,GAASA,EAAM13H,WACtDkgI,EAAYlgI,UAAUqH,YAAc64H,EAEpCA,EAAYlgI,UAAUy/C,OAAS,SAAiBpa,GAC5C,IAAI7H,EAASxhC,KAET+7H,EAAW/7H,KAAK+7H,SACpB/7H,KAAKgyB,MAAMyxB,OAAOpa,GAClBrpC,KAAKmkI,iBAAmBnkI,KAAKgyB,MAAMqX,KAEnC,IAAK,IAAI39B,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IACjCqwH,EAASrwH,GAAG+3C,OAAOjiB,EAAOxP,MAAM+sB,KAChCvd,EAAO2iG,iBAAmB7I,GAAAA,MAAe95F,EAAO2iG,iBAAkBpI,EAASrwH,GAAG29B,MAGlFrpC,KAAKokI,SAAS/6F,GACdrpC,KAAKqkI,WAAWh7F,GAChBrpC,KAAKmgI,aAAangI,KAAKu8H,UAAWR,EAAU/7H,KAAKgyB,OACjDhyB,KAAKi8H,OACT,EAEAiI,EAAYlgI,UAAUm8H,aAAe,SAAuB5D,EAAWR,EAAU/pG,GAC7E,IAAImzB,EAAUnlD,KAAKk8H,SAAW,IAAIl7E,GAElCmE,EAAQt5B,OAAO0wG,GACfp3E,EAAQt5B,OAAOmG,EAAMopC,OACrBjW,EAAQt5B,OAAOmG,EAAMugF,QACrBvyG,KAAKskI,eAAevI,GACpB52E,EAAQt5B,OAAOmG,EAAMkvG,cACzB,EAEAgD,EAAYlgI,UAAUsgI,eAAiB,SAAyBvI,GAG5D,IAFA,IAESrwH,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IAAK,CACtC,IAAInY,EAAUwoI,EAASrwH,GACvBnY,EAAQ6F,SAJC4G,KAKFk8H,SAASrwG,OAAOt4B,EAAQugD,UAE/BvgD,EAAQ4J,MAAM5J,EAAQ+hB,QAAQnY,MAClC,CACJ,EAEA+mI,EAAYlgI,UAAUogI,SAAW,SAAmB/6F,GAYhD,IAXA,IAOI46B,EAASsgE,EAAS5+D,EAAS4f,EAAKi/C,EAPhChjG,EAASxhC,KAET++C,EAAM/+C,KAAKgyB,MAAM+sB,IACjBuhF,EAActgI,KAAKmkI,iBACnBvhF,EAAO9hC,KAAKC,IAAI/gB,KAAKykI,QAAQnE,EAAaj3F,IAC1C1a,EAAM3N,GAAM4hC,E/Y1DK,G+Y2DjBp3B,EAAMxK,IAAO4hC,E/Y3DI,G+Y6DjB8hF,EAAY,EACZh5H,EAAI,EAEDA,IAAM,QACTg5H,EAAaF,IAAY7+D,EAAY++D,EAAY,EAAK,GAEtC,MAIZ/1G,IAAQ42D,GAEJ,IADJthB,EAAUziC,EAAOmjG,WAAWh2G,EAAK0a,EAAM0V,KACnBklB,GAAW,MAK/Bz4C,IAAQ+5D,GAEJ,IADJ5f,EAAUnkC,EAAOmjG,WAAWn5G,EAAK6d,EAAM0V,KACnB4mB,GAAW,KAM/B4f,EADAthB,EAAU,GAAK0B,EAAU,EACb,EAANh3C,EACCs1C,EAAU,GAAK0B,EAAU,EACpB,EAANn6C,EAEAxK,IAAQ2N,EAAMnD,GAAO,GAAM,E/Y1FpB,K+Y8Fb,IADJ+4G,EAAU/iG,EAAOmjG,WAAWp/C,EAAKl8C,EAAM0V,KACnBwlF,GAAW,KAI/BC,EAAU7+D,EAEN4+D,EAAU,GACV/4G,EAAM+5D,EACN5f,EAAU4+D,IAEV51G,EAAM42D,EACNthB,EAAUsgE,EAGtB,EAEAL,EAAYlgI,UAAU2gI,WAAa,SAAqB/hF,EAAMvZ,EAAM0V,GAChE,IAEI/sB,EAAQhyB,KAAKgyB,MACb+pG,EAAW/7H,KAAK+7H,SAChBj2F,EAASiZ,EAAI6hF,aACbgE,EAAW7lF,EAAIl4B,QAEnB+9G,EAASlD,WAAW57F,EAAS8c,GAAM++E,WAAW77F,EAAS8c,GAEvD5wB,EAAM+sB,IAAM6lF,EACZ5yG,EAAMyxB,OAAOpa,GACbrpC,KAAK6kI,SAAW7yG,EAAMqX,KAEtB,IAAK,IAAI39B,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IACjCqwH,EAASrwH,GAAG+3C,OAAOmhF,GAdV5kI,KAeF6kI,SAAWvJ,GAAAA,MAfTt7H,KAe+B6kI,SAAU9I,EAASrwH,GAAG29B,MAGlE,OAAOrpC,KAAKykI,QAAQzkI,KAAK6kI,SAAUx7F,EACvC,EAEA66F,EAAYlgI,UAAUygI,QAAU,SAAkBK,EAAS70G,GACvD,OAAOnP,KAAK6N,IAAIsB,EAAIz7B,QAAUswI,EAAQtwI,QAASy7B,EAAIx7B,SAAWqwI,EAAQrwI,SAC1E,EAEAyvI,EAAYlgI,UAAUqgI,WAAa,SAAqBh7F,GACpD,IAEI07F,EAAgB/kI,KAAK6kI,SAAS1/F,SAC9BsoB,EAAYpkB,EAAKlE,SACjB6/F,EAAWD,EAAch/G,EAAI0nC,EAAU1nC,EACvCk/G,EAAWF,EAAc/+G,EAAIynC,EAAUznC,EAEvCgM,EADMhyB,KACMgyB,MACZ+pG,EAFM/7H,KAES+7H,SAEnB/pG,EAAM+sB,IAAI5Z,OAAOpf,GAAKi/G,EACtBhzG,EAAM+sB,IAAI5Z,OAAOnf,GAAKi/G,EAEtBjzG,EAAMyxB,OAAOpa,GAEb,IAAK,IAAI39B,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IACjCqwH,EAASrwH,GAAG+3C,OAAOzxB,EAAM+sB,KAhBhB/+C,KAiBF6kI,SAAWvJ,GAAAA,MAAetpG,EAAMqX,KAAM0yF,EAASrwH,GAAG29B,KAEjE,EAEA66F,EAAYlgI,UAAUy4H,aAAe,WACjC,IAEInnH,EAAUtV,KAAKsV,QACfymH,EAAWzmH,EAAQwmH,QACnB9pG,EAAQhyB,KAAKgyB,MAAQ,IAAIgvG,GAAY1rH,EAAQ0c,MAAOhyB,KAAK27H,gBAE7D37H,KAAK+7H,SAAW,GAGhB,IADA,IAAImJ,EAAc9vI,EAAQ2mI,GAAYA,EAAW,CAAEA,GAC1CrwH,EAAI,EAAGA,EAAIw5H,EAAY9qI,OAAQsR,IAAK,CACzC,IAAInY,EAAU,IAAIiwI,GAAcxxG,EAAOjL,GAAW,CAAC,EAAGm+G,EAAYx5H,GAAI,CAClEtQ,UAAW,CACPykF,YAAavqE,EAAQuqE,gBAZpB7/E,KAgBF+7H,SAAS3sH,KAAK7b,EACzB,CACJ,EAEO2wI,CACX,CAjLmB,CAiLjBxI,IAEF/lG,GAAkBuuG,GAAa,CAC3BrkD,aAAa,EACb08C,UAAW,CACPp1E,WAAY,MAIpB,UChMIg+E,GAAY,SAAUnE,GACtB,SAASmE,IACLnE,EAAY94H,MAAMlI,KAAM+H,UAC5B,CA2CA,OAzCKi5H,IAAcmE,EAASp6H,UAAYi2H,GACxCmE,EAASnhI,UAAY6G,OAAOS,OAAQ01H,GAAeA,EAAYh9H,WAC/DmhI,EAASnhI,UAAUqH,YAAc85H,EAEjCA,EAASnhI,UAAUo+H,cAAgB,WAC/B,IAAI7vI,EAAMyN,KAAKsV,QAMf,MAAO,CAAE,CAAEiuB,KALDhxC,EAAIo8B,IAKQrvB,GAJZ/M,EAAIi5B,IAIiBgD,MAHHj8B,EAAIiwI,sBAG6BjiD,QAF1ChuF,EAAI6yI,cAG3B,EAEAD,EAASnhI,UAAUo9H,UAAY,WAC3B,OAAO,CACX,EAEA+D,EAASnhI,UAAUqhI,sBAAwB,SAAgCxzG,GACvE,IAAIqE,EAAWl2B,KAAKuyG,OAAO3+G,SAAS,GAAGsiC,WAEnCl2B,KAAKsV,QAAQ44C,QACbh4B,EAASovG,YAAYzzG,GAErBqE,EAASqvG,cAAc1zG,EAE/B,EAEAszG,EAASnhI,UAAUwhI,SAAW,SAAmBjiG,EAAMjkC,EAAIgW,GACvD,IAAI44C,EAAUluD,KAAKsV,QAAQ44C,QAEvB1hB,EAAaxsC,KAAKqsE,UAAUne,EAAU5uD,EAAKikC,GAC3CiK,EAAWxtC,KAAKqsE,UAAUne,EAAU3qB,EAAOjkC,GAE3Co4C,EAAQ13C,KAAKsiI,YAAY91F,EAAYgB,EAAUxtC,KAAKmiI,iBAAkB7sH,GAI1E,OAFAtV,KAAKuyG,OAAO1mF,OAAO6rB,GAEZA,CACX,EAEOytF,CACX,CA/CgB,CA+CdnE,IAEFrrG,GAAkBwvG,GAAU,CACxBx2G,IAAK,EACLnD,IAAK,IAEL6mC,WAAY,CACRt+D,SAAS,GAGbo+D,WAAY,CACRp+D,SAAS,GAGbi+D,OAAQ,CACJj+D,SAAS,GAGby4C,WAAY,EACZgB,SAAU,IACV43F,aAAc,UAGlB,UCnEIK,GAAyB,SAAUr+F,GACnC,SAASq+F,EAAsBjyI,EAAS8hB,GACpC8xB,EAAWpkC,KAAKhD,KAAMxM,EAAS8hB,GAE/B,IAAIu0E,EAAmB7pF,KAAKsV,QACxBmtC,EAAY3hC,KAAKC,IAAI8oE,EAAiBy5C,SAAWz5C,EAAiB05C,UAAY15C,EAAiBpnC,SAAY,IAC/GonC,EAAiBpnC,SAAW/zB,GAAW+zB,EAAUo4E,GARtC,KAUX,IAAI6K,EAAalyI,EAAQsgD,SAASx+B,QAAQlJ,IAAI,gBAC1CoiB,EAAQh7B,EAAQmyI,eAChBD,IAAel3G,IACfxuB,KAAK0lI,WAAa,IAAInkG,GAAMmkG,GAC5B1lI,KAAKwuB,MAAQ,IAAI+S,GAAM/S,GAE/B,CAuBA,OArBK4Y,IAAaq+F,EAAsB16H,UAAYq8B,GACpDq+F,EAAsBzhI,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC1EyhI,EAAsBzhI,UAAUqH,YAAco6H,EAE9CA,EAAsBzhI,UAAU4+C,KAAO,SAAertC,GAClD,IAAIhjB,EAAMyN,KACNsV,EAAU/iB,EAAI+iB,QACdowH,EAAanzI,EAAImzI,WACjBl3G,EAAQj8B,EAAIi8B,MACZqD,EAAQvI,GAAiBhU,EAAQiuH,SAAUjuH,EAAQguH,SAAU/tH,GAGjE,GAFAvV,KAAKxM,QAAQq+B,MAAMA,GAEfrD,EAAO,CACP,IAAIQ,EAAIhO,GAAMsI,GAAiBo8G,EAAW12G,EAAGR,EAAMQ,EAAGzZ,IAClD4G,EAAI6E,GAAMsI,GAAiBo8G,EAAWvpH,EAAGqS,EAAMrS,EAAG5G,IAClD3K,EAAIoW,GAAMsI,GAAiBo8G,EAAW96H,EAAG4jB,EAAM5jB,EAAG2K,IAEtDvV,KAAKxM,QAAQ+xB,OAAO,IAAIgc,GAAMvS,EAAG7S,EAAGvR,GAAGi1B,QAC3C,CACJ,EAEO4lG,CACX,CAtC6B,CAsC3BjgH,IAEFmQ,GAAkB8vG,GAAuB,CACrC/iF,OAAQw4E,GACRz4E,SAAUo4E,KAGdr1G,GAAAA,QAAAA,SAA0C41G,GAAsBqK,IAEhE,UChDIG,GAAgB,SAAUhI,GAC1B,SAASgI,IACLhI,EAAQ11H,MAAMlI,KAAM+H,UACxB,CAoGA,OAlGK61H,IAAUgI,EAAa76H,UAAY6yH,GACxCgI,EAAa5hI,UAAY6G,OAAOS,OAAQsyH,GAAWA,EAAQ55H,WAC3D4hI,EAAa5hI,UAAUqH,YAAcu6H,EAErCA,EAAa5hI,UAAU+5H,QAAU,WAC7B,IACI/rG,EADMhyB,KACMgyB,MACZ1c,EAFMtV,KAEQsV,QACdiuH,EAAWvxG,EAAMq6C,UAAU/2D,EAAQwoH,WACnCwF,EAAWtxG,EAAMq6C,UAAU/2D,EAAQnY,OAEnC6C,KAAK5E,WACL4E,KAAK5E,UAAU6nD,SAGmB,IAAlC3tC,EAAQla,UAAUykF,aAClB7/E,KAAK6xB,MAAMyxG,GACXtjI,KAAKulB,OAAOvlB,KAAK2lI,kBAEjB3lI,KAAK5E,UAAY,IAAIqqI,GAAsBzlI,KAAM+mB,GAAWzR,EAAQla,UAAW,CAC3EmoI,SAAUA,EACVD,SAAUA,KAGdtjI,KAAK5E,UAAUynD,OAEvB,EAEA+iF,EAAa5hI,UAAU6tB,MAAQ,SAAgB10B,GAC3C,IAAI+4B,EAAWl2B,KAAK8zC,SAAS5d,WACzBl2B,KAAKgyB,MAAM1c,QAAQ44C,QACnBh4B,EAASqvG,cAAcpoI,GAEvB+4B,EAASovG,YAAYnoI,GAEzB6C,KAAKgyB,MAAMqzG,sBAAsBloI,EACrC,EAEAyoI,EAAa5hI,UAAUuhB,OAAS,SAAiBpoB,GAC7C6C,KAAK8zC,SAASvuB,OAAOpoB,EACzB,EAEAyoI,EAAa5hI,UAAU5K,OAAS,WAC5B,IAAI4G,KAAK8zC,SAAT,CAIA,IACI9hB,EADMhyB,KACMgyB,MACZ1c,EAFMtV,KAEQsV,SAEQ,IAAtBA,EAAQla,WACR2rB,GAAWzR,EAAQla,UAAW,CAC1BoxC,WAAY,EACZrH,OAAQnT,EAAM+sB,IAAI5Z,OAClB+oB,QAASl8B,EAAM1c,QAAQ44C,UAI/BluD,KAAK8zC,SAAW9hB,EAAMwzG,SAASxzG,EAAM1c,QAAQqZ,IAAK3uB,KAAKsV,QAAQnY,MAAO,CAClEqxB,MAAOxuB,KAAK2lI,eACZnwF,QAASlgC,EAAQkgC,QACjB+qC,QAASvuD,EAAM1c,QAAQ8vH,cAjB3B,CAmBJ,EAEAQ,EAAa5hI,UAAU2hI,aAAe,WAClC,IAAIpzI,EAAMyN,KAAKgyB,MAAM1c,QACjBqZ,EAAMp8B,EAAIo8B,IACVnD,EAAMj5B,EAAIi5B,IACV4/B,EAAQprD,KAAKsV,QACbk4G,EAASpiE,EAAMoiE,OACfh/F,EAAQ48B,EAAM58B,MACdrxB,EAAQiuD,EAAMjuD,MACd4/G,EAAehiG,GAAS5d,GAASA,EAAQwxB,EAE7C,GAAI6+F,EACA,IAAK,IAAI/4G,EAAM,EAAGA,EAAM+4G,EAAOpzH,OAAQqa,IAAO,CAC1C,IAAIyyG,EAAQsG,EAAO/4G,GACfoxH,EAAa3e,EAAM14F,MACnB+U,EAAO2jF,EAAM3jF,UAAoB,IAATA,IAAkBA,EAAO5U,GACrD,IAAIrvB,EAAK4nH,EAAM5nH,GAEf,QAF+B,IAAPA,IAAgBA,EAAKksB,GAEzC+X,GAAQw5E,GAAgBA,GAAgBz9G,EACxC,OAAOumI,CAEf,CAGJ,OAAOr3G,CACX,EAEAo3G,EAAa5hI,UAAUy/C,OAAS,WAC5BzjD,KAAK5G,SAEL4G,KAAKqpC,KAAOrpC,KAAK8zC,SAASzK,MAC9B,EAEOu8F,CACX,CAxGoB,CAwGlBhI,IAEFjoG,GAAkBiwG,GAAc,CAC5BxqI,UAAW,CACPjI,KAAMioI,GACN34E,SAAUo4E,MAIlB,UC/GIiL,GAAY,SAAU5B,GACtB,SAAS4B,IACL5B,EAAYh8H,MAAMlI,KAAM+H,UAC5B,CAoFA,OAlFKm8H,IAAc4B,EAAS/6H,UAAYm5H,GACxC4B,EAAS9hI,UAAY6G,OAAOS,OAAQ44H,GAAeA,EAAYlgI,WAC/D8hI,EAAS9hI,UAAUqH,YAAcy6H,EAEjCA,EAAS9hI,UAAU6kH,WAAa,SAAqB1L,GACjD+mB,EAAYlgI,UAAU6kH,WAAW7lH,KAAKhD,KAAMm9G,GAE5Cn9G,KAAKsV,QAAQkZ,MAAQxuB,KAAKsV,QAAQkZ,QAAUxuB,KAAKm9G,MAAM2e,SAAW,CAAC,GAAGttG,KAC1E,EAEAs3G,EAAS9hI,UAAUy4H,aAAe,WAC9B,IAAInnH,EAAUtV,KAAKsV,QACf0c,EAAQhyB,KAAKgyB,MAAQ,IAAImzG,GAAS7vH,EAAQ0c,MAAOhyB,KAAK27H,gBAEtDG,EAAU,IAAI8J,GAAa5zG,EAAOjL,GAAW,CAAC,EAAG,CACjDymG,OAAQl4G,EAAQk4G,OAChBh/F,MAAOlZ,EAAQkZ,MACfrxB,MAAOmY,EAAQnY,MACfq4C,QAASlgC,EAAQkgC,QACjBp6C,UAAW,CACPykF,YAAavqE,EAAQuqE,gBAI7B7/E,KAAK+7H,SAAW,CAAED,EACtB,EAEAgK,EAAS9hI,UAAUsgI,eAAiB,SAAyBvI,GACzD,IAAK,IAAIrwH,EAAI,EAAGA,EAAIqwH,EAAS3hI,OAAQsR,IAAK,CACtC,IAAInY,EAAUwoI,EAASrwH,GACvBnY,EAAQ6F,SAER7F,EAAQ4J,MAAM5J,EAAQ+hB,QAAQnY,MAClC,CACJ,EAEA2oI,EAAS9hI,UAAUg4H,iBAAmB,SAA2B7+H,GAC7D6C,KAAKsV,QAAQnY,MAAQA,CACzB,EAEA2oI,EAAS9hI,UAAU2hI,aAAe,WAC9B,IAAI7J,EAAU97H,KAAK+7H,SAAS,GAC5B,GAAID,EACA,OAAOA,EAAQ6J,cAEvB,EAEAG,EAAS9hI,UAAU+hI,oBAAsB,SAA8BvxI,EAAOC,GAC1E,IAAImC,EAAOoJ,KAAKgpC,UACZ7D,EAASnlC,KAAKgyB,MAAM+sB,IAAI5Z,OAExBrd,EAAOqd,EAAOpf,EAAIvxB,EAAQ,EAC1BmzB,EAAMwd,EAAOnf,EAAIvxB,EAAS,EAE9B,GAAID,EAAQoC,EAAKpC,MAAO,CACpB,IAAIozB,EAAQE,EAAOtzB,EAEnBszB,EAAOhH,KAAK0K,IAAI1D,EAAM,GAElBF,EAAQhxB,EAAKpC,QACbszB,GAAQF,EAAQhxB,EAAKpC,MAE7B,CAEA,GAAIC,EAASmC,EAAKnC,OAAQ,CACtB,IAAI40C,EAAOrpC,KAAKgyB,MAAMqX,KAClB28F,EAAS38F,EAAKH,cAAcljB,EAC5B6B,EAASF,EAAMlzB,EAEnBkzB,EAAM7G,KAAK0K,IAAI7D,EAAK0hB,EAAK9B,OAAOvhB,GAE5B6B,EAASm+G,IACTr+G,GAAOE,EAASm+G,EAExB,CAEA,MAAO,CACHl+G,KAAMA,EACNH,IAAKA,EAEb,EAEOm+G,CACX,CAxFgB,CAwFd5B,ICvFS+B,ICJU,SAAUH,GAC3B,SAASI,IACLJ,EAAS59H,MAAMlI,KAAM+H,UACzB,CAEK+9H,IAAWI,EAAcn7H,UAAY+6H,GAC1CI,EAAcliI,UAAY6G,OAAOS,OAAQw6H,GAAYA,EAAS9hI,WAC9DkiI,EAAcliI,UAAUqH,YAAc66H,EAEtCA,EAAcliI,UAAUy4H,aAAe,WACnC,IAAIn+D,EAAet+D,KAAKsV,QAAQ0c,MACO,kBAA5BssC,EAAa9xB,aACpB8xB,EAAa9xB,WAdD,IAiBhB8xB,EAAa9wB,SAAW8wB,EAAa9xB,WAAa,IAElDs5F,EAAS9hI,UAAUy4H,aAAaz5H,KAAKhD,KACzC,CAGJ,CArBqB,CF6FrB,ICzFuB,SAAUixB,GAC7B,SAASg1G,EAAS3wH,GACd2b,EAAMjuB,KAAKhD,MACXA,KAAKo0H,WAAW9+G,GAChBtV,KAAKmmI,gBACT,CA8CA,OA5CKl1G,IAAQg1G,EAASl7H,UAAYkmB,GAClCg1G,EAASjiI,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnDiiI,EAASjiI,UAAUqH,YAAc46H,EAEjCA,EAASjiI,UAAUmiI,eAAiB,WAA6B,EAEjEF,EAASjiI,UAAUowH,WAAa,SAAqB9+G,GACjDtV,KAAKsV,QAAUzK,OAAOW,OAAO,CAAC,EAAGxL,KAAKsV,QAASA,GAC/CtV,KAAKomI,gBAAkBpmI,KAAKsV,QAAQ+wH,aAAe,EAAIrmI,KAAKsV,QAAQ8wH,gBAAkB,CAC1F,EAEAH,EAASjiI,UAAU+kG,OAAS,SAAiB5rG,EAAO3I,EAAOC,GACvD,IAAI6xI,EAAiBnhH,GAAQhoB,GAASgO,OAAOhO,GAASA,EActD,OAZA6C,KAAKumI,UAAUD,EAAgB9xI,EAAOC,GAElCuL,KAAKsV,QAAQ+wH,cACbrmI,KAAKqmI,eAGTrmI,KAAKwmI,UAEDxmI,KAAKsV,QAAQ+wH,cACbrmI,KAAKqmI,eAGF,CACHlpE,SAAUn9D,KAAKm9D,SACfspE,QAASzmI,KAAKymI,QAEtB,EAEAR,EAASjiI,UAAUuiI,UAAY,WAAwB,EAEvDN,EAASjiI,UAAUqiI,aAAe,WAC9BrmI,KAAKymI,QAAQr3H,KAAKpP,KAAKsV,QAAQ8wH,iBA5CP,GA6C5B,EAEAH,EAASjiI,UAAUwiI,QAAU,WAAsB,EAEnDP,EAASjiI,UAAU0iI,sBAAwB,SAAgCC,GACvE,MAAM,IAAIvmI,MAAO,cAAiBumI,EAAY,gCAAoC3mI,KAAK2Q,KAAQ,IACnG,EAEOs1H,CACX,CApDuB,CAoDrBh1G,KAEF0E,GAAkBswG,GAAU,CACxBG,gBAzD4B,GA0D5BC,cAAc,EACdO,aAAa,IE9DjB,IAAIC,GAASh8H,OAAOW,OAETs7H,GAAU,SAAUb,GAC3B,SAASa,IACLb,EAAS/9H,MAAMlI,KAAM+H,UACzB,CAoHA,OAlHKk+H,IAAWa,EAAO/7H,UAAYk7H,GACnCa,EAAO9iI,UAAY6G,OAAOS,OAAQ26H,GAAYA,EAASjiI,WACvD8iI,EAAO9iI,UAAUqH,YAAcy7H,EAE/BA,EAAO9iI,UAAUmiI,eAAiB,WAC9BF,EAASjiI,UAAUmiI,eAAenjI,KAAKhD,MAEvC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,UACNo2H,aAAc,CAAC,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UACnHC,eAAgB,GAChBC,eAAgB,EAChBC,mBAAoB,GACpBC,YAAa,GACbC,WAAY,GACZC,KAAM,IACNC,MAAO,SACPC,KAAM,SAEd,EAEAT,EAAO9iI,UAAUuiI,UAAY,SAAoBppI,EAAO3I,GACpDwL,KAAKymI,QAAU,GACfzmI,KAAK7C,MAAQA,EACb6C,KAAKxL,MAAQA,EACbwL,KAAK8jE,WAAa,CACtB,EAEAgjE,EAAO9iI,UAAUwiI,QAAU,WACvB,IAEIrpI,EAAQ6C,KAAK7C,MAEjB6C,KAAKwnI,WAAWxnI,KAAKsnI,OAErB,IAAK,IAAI57H,EAAI,EAAGA,EAAIvO,EAAM/C,OAAQsR,IANrB1L,KAOFynI,aAAatqI,EAAMP,OAAO8O,IAGjC1L,KAAKsV,QAAQsxH,aACb5mI,KAAK4mI,cAGT5mI,KAAKwnI,WAAWxnI,KAAKunI,MACrBvnI,KAAK0nI,aACT,EAEAZ,EAAO9iI,UAAU0jI,YAAc,WAC3B1nI,KAAKm9D,SAAWn9D,KAAKxL,OAASwL,KAAK8jE,WAAa9jE,KAAKomI,gBACzD,EAEAU,EAAO9iI,UAAU4iI,YAAc,WAC3B,IAAIzpI,EAAQ6C,KAAK7C,MACb/C,EAAS+C,EAAM/C,OACfutI,EAAS3nI,KAAK4nI,eAAezqI,EAAO/C,EAAQ4F,KAAKgnI,gBAAkBhnI,KAAKmnI,YAO5E,GALAnnI,KAAK6nI,SAAW18H,OAAOw8H,GACvB3nI,KAAKwnI,WAAWxnI,KAAK+mI,aAAaY,MAElCvtI,GAEc4F,KAAKknI,mBAAoB,CACnC,IAAIY,GAAUH,EAAS3nI,KAAK4nI,eAAezqI,EAAO/C,EAAQ4F,KAAKinI,iBAAmBjnI,KAAKmnI,YACvFnnI,KAAK6nI,UAAYC,EACjB9nI,KAAKwnI,WAAWxnI,KAAK+mI,aAAae,GACtC,CACJ,EAEAhB,EAAO9iI,UAAU4jI,eAAiB,SAAyBzqI,EAAO/C,EAAQgjB,GAKtE,IAJA,IAEI2qH,EAAc,EAETr8H,EAAI,EAAGA,EAAIvO,EAAM/C,OAAQsR,IAC9Bq8H,GALS/nI,KAKagoI,cALbhoI,KAKkCyoE,SAAStrE,EAAMP,OAAO8O,IAAKtR,EAAQsR,EAAG0R,GAGrF,OAAO2qH,CACX,EAEAjB,EAAO9iI,UAAUgkI,cAAgB,SAAwB7qI,EAAO/C,EAAQE,EAAO8iB,GAE3E,QADchjB,EAASE,GAAS8iB,GAASA,GACzBjgB,CACpB,EAEA2pI,EAAO9iI,UAAUykE,SAAW,SAAmBk+D,GAC3C,OAAK1gH,MAAM0gH,IAEAA,IAAc3mI,KAAKqnI,MAC1BrnI,KAAK0mI,sBAAsBC,GAGxB3mI,KAAKonI,YALDp8G,SAAS27G,EAAW,GAMnC,EAEAG,EAAO9iI,UAAUyjI,aAAe,SAAuBd,GACnD,IAAIxpI,EAAQ6C,KAAKyoE,SAASk+D,GACtBF,EAAUzmI,KAAK+mI,aAAa5pI,GAEhC6C,KAAKwnI,WAAWf,EACpB,EAEAK,EAAO9iI,UAAUwjI,WAAa,SAAqBf,GAK/C,IAJA,IAEItpI,EAEKuO,EAAI,EAAGA,EAAI+6H,EAAQrsI,OAAQsR,IAChCvO,EAAQ6tB,SAASy7G,EAAQ7pI,OAAO8O,GAAI,IAL3B1L,KAMFymI,QAAQr3H,KAAKjS,GANX6C,KAOF8jE,YAAc3mE,CAE7B,EAEO2pI,CACX,CAxHqB,CAwHnBb,IAEFtwG,GAAkBmxG,GAAQ,CACtBF,aAAa,IC7HjB,IAAIC,GAASh8H,OAAOW,OAETy8H,GAAc,SAAUhC,GAC/B,SAASgC,IACLhC,EAAS/9H,MAAMlI,KAAM+H,UACzB,CA6CA,OA3CKk+H,IAAWgC,EAAWl9H,UAAYk7H,GACvCgC,EAAWjkI,UAAY6G,OAAOS,OAAQ26H,GAAYA,EAASjiI,WAC3DikI,EAAWjkI,UAAUqH,YAAc48H,EAEnCA,EAAWjkI,UAAUmiI,eAAiB,WAClCF,EAASjiI,UAAUmiI,eAAenjI,KAAKhD,MAEvC6mI,GAAO7mI,KAAM,CACTkoI,kBAAmB,IAE3B,EAEAD,EAAWjkI,UAAUwiI,QAAU,WAC3B,IAEIrpI,EAAQ6C,KAAK7C,MAEjB6C,KAAKmoI,WAEL,IAAK,IAAI1zH,EAAM,EAAGA,EAAMtX,EAAM/C,OAAQqa,IANzBzU,KAOFynI,aAAatqI,EAAMP,OAAO6X,IAGjCzU,KAAKsV,QAAQsxH,aACb5mI,KAAKooI,eAGTpoI,KAAKyoD,UACLzoD,KAAKqoI,eACT,EAEAJ,EAAWjkI,UAAUyjI,aAAe,SAAuBd,GACvD,IAAI2B,EAAgBtoI,KAAK+mI,aAAaJ,GAEjC2B,GACDtoI,KAAK0mI,sBAAsBC,GAG/B3mI,KAAKuoI,QAAQD,EACjB,EAEAL,EAAWjkI,UAAUukI,QAAU,WAAsB,EAE9CN,CACX,CAjDyB,CAiDvBhC,IAESuC,GAAU,SAAUP,GAC3B,SAASO,IACLP,EAAW//H,MAAMlI,KAAM+H,UAC3B,CAkJA,OAhJKkgI,IAAaO,EAAOz9H,UAAYk9H,GACrCO,EAAOxkI,UAAY6G,OAAOS,OAAQ28H,GAAcA,EAAWjkI,WAC3DwkI,EAAOxkI,UAAUqH,YAAcm9H,EAE/BA,EAAOxkI,UAAUmiI,eAAiB,WAC9B8B,EAAWjkI,UAAUmiI,eAAenjI,KAAKhD,MAEzC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,UACNw2H,YAAa,GACbsB,SAAU,IACVC,SAAU,EACVC,SAAU,EACVC,eAAgB,IAChBC,gBAAiB,CACb,EAAK,KACL,EAAK,KACL,EAAK,SACL,EAAK,UAET9B,aAAc,CACV,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,GACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,IAAK,CAAE,QAAW,YAAa,MAAS,IACxC,IAAK,CAAE,QAAW,YAAa,MAAS,IACxC,IAAK,CAAE,QAAW,YAAa,MAAS,IACxC,EAAK,CAAE,QAAW,YAAa,MAAS,IACxC,IAAK,CAAE,QAAW,YAAa,MAAS,IACxC,IAAK,CAAE,QAAW,YAAa,MAAS,IACxC,IAAK,CAAE,QAAW,YAAa,MAAS,IACxCO,MAAO,CAAEb,QAAS,eAG9B,EAEA+B,EAAOxkI,UAAUuiI,UAAY,SAAoBppI,EAAO3I,EAAOC,GAC3DuL,KAAKxL,MAAQA,EACbwL,KAAKvL,OAASA,EACduL,KAAK7C,MAAQA,EACb6C,KAAKk9F,WAAa//F,EAAM/C,OACxB4F,KAAKymI,QAAU,GACfzmI,KAAK8oI,cAAgB,EACzB,EAEAN,EAAOxkI,UAAUqkI,cAAgB,WAC7B,IAKIlrE,EAHA4rE,EAAc/oI,KAAKkoI,kBACnBO,EAAWzoI,KAAKyoI,SAChBO,EAAYloH,KAAK6K,KAAK7K,KAAK0K,IAAI,IAAOxrB,KAAKxL,MAAO,KAElDq0E,EAAQ7oE,KAAK0oI,SAEjB,GAAI1oI,KAAKvL,OAASu0I,EACd,MAAM,IAAI5oI,MAAO,kEAAqEJ,KAAKvL,OAAU,gCAAkCu0I,EAAY,OAKvJ,IAFA7rE,EAAWn9D,KAAKipI,YAAYpgE,GAErB1L,EAAW4rE,GAAelgE,EAAQ4/D,GACrC5/D,EAAQ3+D,YAAY2+D,EAAQ,IAAK3oC,QAAQ,IACzCi9B,EAhBSn9D,KAgBSipI,YAAYpgE,GAGlC,GAAI1L,EAAW4rE,EAAa,CACxB,IAAI5uI,EAAW2mB,KAAK6K,KAAK3rB,KAAKkpI,aAAaT,GAAYM,GACvD,MAAM,IAAI3oI,MAAO,gEAAmEJ,KAAKxL,MAAS,uCAA2CwL,KAAK7C,MAAS,QAAWhD,EAAW,MACrL,CAEA6F,KAAK6oE,MAAQA,EACb7oE,KAAKm9D,SAAWA,EAChBn9D,KAAK8oI,cAAgB9oI,KAAK8oI,cAAc9hG,UAAU,EAAGhnC,KAAK8oI,cAAc1uI,OAAS,GACjF4F,KAAKymI,QAAUzmI,KAAKymI,QAAQt+H,OAAOnI,KAAK8oI,cAAc1mI,QAAQ,SAAUymE,GAAOthE,MAAMvH,KAAK4oI,gBAC9F,EAEAJ,EAAOxkI,UAAUilI,YAAc,SAAsBpgE,GACjD,OAAO7oE,KAAKxL,MAAQwL,KAAKkpI,aAAargE,EAC1C,EAEA2/D,EAAOxkI,UAAUklI,aAAe,SAAuBrgE,GACnD,IAAIsgE,EAAkB,GAAKtgE,EAAQ,GACnC,OAAO7oE,KAAKomI,gBAAkB+C,GAAmBnpI,KAAKk9F,WAAa,GAAKl9F,KAAK2oI,UAAY3oI,KAAKk9F,WAAa,EAC/G,EAEAsrC,EAAOxkI,UAAUmkI,SAAW,WACxBnoI,KAAKwnI,WAAWxnI,KAAK+mI,aAAaO,MAAMb,SACxCzmI,KAAKopI,iBACT,EAEAZ,EAAOxkI,UAAUukI,QAAU,SAAkB5B,GACzC3mI,KAAKwnI,WAAWb,EAAUF,SAC1BzmI,KAAKopI,iBACT,EAEAZ,EAAOxkI,UAAUykD,QAAU,WACvBzoD,KAAKwnI,WAAWxnI,KAAK+mI,aAAaO,MAAMb,QAC5C,EAEA+B,EAAOxkI,UAAUwjI,WAAa,SAAqBf,GAG/C,IAFA,IAES/6H,EAAI,EAAGA,EAAI+6H,EAAQrsI,OAAQsR,IAFvB1L,KAGF8oI,eAHE9oI,KAGsB6oI,gBAAgBpC,EAAQ7pI,OAAO8O,GAEtE,EAEA88H,EAAOxkI,UAAUolI,gBAAkB,WAC/BppI,KAAK8oI,eAAiB9oI,KAAK2oI,SAAW3oI,KAAK4oI,cAC/C,EAEOJ,CACX,CAtJqB,CAsJnBP,IAEFtyG,GAAkB6yG,GAAQ,CACtB5B,aAAa,IC9MV,IAAIyC,GAAqB,CAC5B5B,aAAc,SAAsBd,GAC5B3mI,KAAK+mI,aAAaJ,GAClB3mI,KAAKuoI,QAAQvoI,KAAK+mI,aAAaJ,IACxBA,EAAU5xH,WAAW,GAAK,IACjC/U,KAAK0mI,sBAAsBC,GAE3B3mI,KAAKspI,YAAY3C,EAAU5xH,WAAW,GAE9C,EAEAu0H,YAAa,SAAqBx0H,GAK9B,IAJA,IAEIy0H,EAFA/nG,EAASxhC,KAIJ0L,EAAI,EAAGA,EAAI1L,KAAKwpI,iBAAiBpvI,OAAQsR,IAG9C,GAFA69H,EAAW/nG,EAAOgoG,iBAAiB99H,GAAG1I,KAAKw+B,EAAQ1sB,GAErC,CACV,IAAK,IAAI20H,EAAe,EAAGA,EAAeF,EAASnvI,OAAQqvI,IAAgB,CACvE,IAAIhD,EAAU8C,EAASE,GACvBjoG,EAAO+mG,QAAQ9B,EACnB,CAGA,YADAjlG,EAAO07D,YAAcqsC,EAASnvI,OAAS,EAE3C,CAER,EAEAovI,iBAAkB,CACd,SAAS10H,GACL,GAAI,IAAMA,GAAQA,GAAQ,IACtB,MAAO,CAAC9U,KAAK+mI,aAAa/mI,KAAK0pI,gBAAgB,IAAK1pI,KAAK+mI,aAAa57H,OAAOwJ,aAAaG,EAAO,KAEzG,EACA,SAASA,GACL,GAAI,IAAMA,GAAQA,GAAQ,GACtB,MAAO,CAAC9U,KAAK+mI,aAAa/mI,KAAK0pI,gBAAgB,IAAK1pI,KAAK+mI,aAAa57H,OAAOwJ,aAAaG,EAAO,KAEzG,EACA,SAASA,GACL,GAAI,GAAKA,GAAQA,GAAQ,GACrB,MAAO,CAAC9U,KAAK+mI,aAAa/mI,KAAK0pI,gBAAgB,IAAK1pI,KAAK+mI,aAAa57H,OAAOwJ,aAAaG,EAAO,KAEzG,EACA,SAASA,GACL,IAEI1c,EACAuxI,EAHAnoG,EAASxhC,KAKb,GAAKA,KAAK4pI,kBAAkB90H,GAGrB,CACH1c,EAAS,GAET,IAAK,IAAIsT,EAAI,EAAGA,EAAI1L,KAAK4pI,kBAAkB90H,GAAM1a,OAAQsR,IACrDtT,EAAOgX,KAAKoyB,EAAOulG,aAAavlG,EAAOkoG,gBAAgB,KACvDtxI,EAAOgX,KAAKoyB,EAAOulG,aAAavlG,EAAOooG,kBAAkB90H,GAAMpJ,IAEvE,MATIi+H,EAAwC,EAAxB7oH,KAAK8K,MAAM9W,EAAO,KAAWA,EAAO,IAAM,GAAK,GAC/D1c,EAAS,CAAC4H,KAAK+mI,aAAa/mI,KAAK0pI,gBAAgB,IAAK1pI,KAAK+mI,aAAa57H,OAAOwJ,aAAag1H,KAUhG,OAAOvxI,CACX,GAEJwxI,kBAAmB,CACf,EAAK,CAAC,KACN,GAAM,CAAC,KACP,GAAM,CAAC,KACP,IAAO,CAAC,IAAK,IAAK,IAAK,MAE3BC,sBAAuB,CACnB,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,IAEV9C,aAAc,CACV,KAAK,EACL,KAAK,EACL,GAAK,EACL,KAAK,GAET2C,gBAAiB,CAAC,SAAU,SAAU,SAAU,WAGzCI,GAAkB,SAAUtB,GACnC,SAASsB,IACLtB,EAAOtgI,MAAMlI,KAAM+H,UACvB,CAoBA,OAlBKygI,IAASsB,EAAe/+H,UAAYy9H,GACzCsB,EAAe9lI,UAAY6G,OAAOS,OAAQk9H,GAAUA,EAAOxkI,WAC3D8lI,EAAe9lI,UAAUqH,YAAcy+H,EAEvCA,EAAe9lI,UAAUmiI,eAAiB,WACtCqC,EAAOxkI,UAAUmiI,eAAenjI,KAAKhD,MAErC+mB,GAAW/mB,KAAMqpI,GAAoB,CACjC14H,KAAM,mBACNo2H,aAAc,CACVgD,OAAQ,CAAE,QAAW,YAAa,MAAS,IAC3CC,OAAQ,CAAE,QAAW,YAAa,MAAS,IAC3CC,OAAQ,CAAE,QAAW,YAAa,MAAS,IAC3CC,OAAQ,CAAE,QAAW,YAAa,MAAS,MAGvD,EAEOJ,CACX,CAxB6B,CAwB3BtB,IClHE3B,GAASh8H,OAAOW,OAET2+H,GAAU,SAAUlC,GAC3B,SAASkC,IACLlC,EAAW//H,MAAMlI,KAAM+H,UAC3B,CAkLA,OAhLKkgI,IAAakC,EAAOp/H,UAAYk9H,GACrCkC,EAAOnmI,UAAY6G,OAAOS,OAAQ28H,GAAcA,EAAWjkI,WAC3DmmI,EAAOnmI,UAAUqH,YAAc8+H,EAE/BA,EAAOnmI,UAAUmiI,eAAiB,WAC9B8B,EAAWjkI,UAAUmiI,eAAenjI,KAAKhD,MAEzC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,UACNq2H,eAAgB,GAChBC,eAAgB,GAChBE,YAAa,GACbJ,aAAc,CACV,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,GACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,IAAK,CAAE,QAAW,SAAU,MAAS,IACrC,IAAK,CAAE,QAAW,SAAU,MAAS,IACrC,IAAK,CAAE,QAAW,SAAU,MAAS,IACrC,EAAK,CAAE,QAAW,SAAU,MAAS,IACrC,IAAK,CAAE,QAAW,SAAU,MAAS,IACrC,IAAK,CAAE,QAAW,SAAU,MAAS,IACrC,IAAK,CAAE,QAAW,SAAU,MAAS,IACrCgD,OAAQ,CAAE,QAAW,SAAU,MAAS,IACxCC,OAAQ,CAAE,QAAW,SAAU,MAAS,IACxCC,OAAQ,CAAE,QAAW,SAAU,MAAS,IACxCC,OAAQ,CAAE,QAAW,SAAU,MAAS,IACxC5C,MAAO,CAAE,QAAW,UACpB8C,gBAAiB,MAG7B,EAEAD,EAAOnmI,UAAUuiI,UAAY,SAAoBppI,EAAO3I,EAAOC,GAC3DuL,KAAK7C,MAAQA,EACb6C,KAAKxL,MAAQA,EACbwL,KAAKvL,OAASA,EACduL,KAAKymI,QAAU,GACfzmI,KAAK+P,OAAS,GACd/P,KAAKk9F,WAAa//F,EAAM/C,MAC5B,EAEA+vI,EAAOnmI,UAAUqkI,cAAgB,WAC7B,IAAIW,EAAYloH,KAAK6K,KAAK7K,KAAK0K,IAAI,IAAOxrB,KAAKxL,MAAO,KAEtD,GAAIwL,KAAKvL,OAASu0I,EACd,MAAM,IAAI5oI,MAAO,kEAAqEJ,KAAKvL,OAAU,sCAAwCu0I,EAAY,OAK7J,GAFAhpI,KAAK0nI,cAED1nI,KAAKm9D,SAAWn9D,KAAKkoI,kBAAmB,CACxC,IAAI/tI,EAAW2mB,KAAK6K,KAAK3rB,KAAKkoI,mBAAqBloI,KAAKxL,MAAQwL,KAAKm9D,WACrE,MAAM,IAAI/8D,MAAO,gEAAmEJ,KAAKxL,MAAS,gDAAoDwL,KAAK7C,MAAS,QAAWhD,EAAW,MAC9L,CACJ,EAEAgwI,EAAOnmI,UAAU0jI,YAAc,WAG3B1nI,KAAKm9D,SAAWn9D,KAAKxL,OAAS,GAAKwL,KAAKk9F,WAAa,EAFhC,GAEsDl9F,KAAKomI,gBAAkB,EACtG,EAEA+D,EAAOnmI,UAAUmkI,SAAW,WACxB,IAAI1B,EAAUzmI,KAAK+mI,aAAaO,MAAMb,QACtCzmI,KAAKwnI,WAAWf,EACpB,EAEA0D,EAAOnmI,UAAUykD,QAAU,WACvBzoD,KAAKmoI,WACLnoI,KAAKymI,QAAQr3H,KAAKpP,KAAK+mI,aAAaqD,gBACxC,EAEAD,EAAOnmI,UAAUukI,QAAU,SAAkB8B,GACzCrqI,KAAKwnI,WAAW6C,EAAS5D,SACzBzmI,KAAK+P,OAAOX,KAAKi7H,EAASltI,MAC9B,EAEAgtI,EAAOnmI,UAAUokI,aAAe,WAC5B,IAGIiC,EAHA7oG,EAASxhC,KAETsqI,EAActqI,KAAKuqI,kBAGvBvqI,KAAK6nI,SAAWyC,EAAY54G,KAAK,IAEjC,IAAK,IAAIhmB,EAAI,EAAGA,EAAI4+H,EAAYlwI,OAAQsR,IACpC2+H,EAAW7oG,EAAOulG,aAAavlG,EAAOgpG,sBAAsBF,EAAY5+H,KACxE81B,EAAOgmG,WAAW6C,EAAS5D,QAEnC,EAEA0D,EAAOnmI,UAAUumI,gBAAkB,WAC/B,IAKI5C,EAEAlzH,EAPA+sB,EAASxhC,KAET+P,EAAS/P,KAAK+P,OACd3V,EAAS2V,EAAO3V,OAChBqwI,EAAa,EAKjB,IAAKh2H,EAAMra,EAAS,EAAGqa,GAAO,EAAGA,IAC7Bg2H,GAAcjpG,EAAOwmG,cAAcj4H,EAAO0E,GAAMra,EAASqa,EAAK+sB,EAAOwlG,gBAOzE,IAJAW,EAAS8C,EAAazqI,KAAKmnI,YAE3BsD,EAAazqI,KAAKgoI,cAAcL,EAAQ,EAAG3nI,KAAKinI,gBAE3CxyH,EAAMra,EAAS,EAAGqa,GAAO,EAAGA,IAC7Bg2H,GAAcjpG,EAAOwmG,cAAcj4H,EAAO0E,GAAMra,EAASqa,EAAM,EAAG+sB,EAAOylG,gBAI7E,MAAO,CAACU,EADC8C,EAAazqI,KAAKmnI,YAE/B,EAEAgD,EAAOnmI,UAAUwmI,sBAAwB,SAAgCrtI,GAGrE,IAAK,IAAIwpI,KAFI3mI,KAEgB+mI,aACzB,GAHS/mI,KAGE+mI,aAAaJ,GAAWxpI,QAAUA,EACzC,OAAOwpI,CAGnB,EAEAwD,EAAOnmI,UAAUgkI,cAAgB,SAAwB7qI,EAAO7C,EAAO8iB,GACnE,OAAQ9iB,EAAQ8iB,GAASA,GAASjgB,CACtC,EAEAgtI,EAAOnmI,UAAUwjI,WAAa,SAAqBf,GAK/C,IAJA,IAEItpI,EAEKuO,EAAI,EAAGA,EAAI+6H,EAAQrsI,OAAQsR,IAChCvO,EAAQ6tB,SAASy7G,EAAQ7pI,OAAO8O,GAAI,IAL3B1L,KAMFymI,QAAQr3H,KAAKjS,EAE5B,EAEOgtI,CACX,CAtLqB,CAsLnBlC,ICtLSyC,GAAkB,SAAUP,GACnC,SAASO,IACLP,EAAOjiI,MAAMlI,KAAM+H,UACvB,CAiCA,OA/BKoiI,IAASO,EAAe3/H,UAAYo/H,GACzCO,EAAe1mI,UAAY6G,OAAOS,OAAQ6+H,GAAUA,EAAOnmI,WAC3D0mI,EAAe1mI,UAAUqH,YAAcq/H,EAEvCA,EAAe1mI,UAAUmiI,eAAiB,WACtCgE,EAAOnmI,UAAUmiI,eAAenjI,KAAKhD,MAErC+mB,GAAW/mB,KAAMqpI,GAAoB,CACjC14H,KAAM,mBACNy3H,aAAc,WACV,IAGIjrI,EAHAqkC,EAASxhC,KAETsqI,EAActqI,KAAKuqI,kBAGvBvqI,KAAK6nI,SAAWyC,EAAY54G,KAAK,IAEjC,IAAK,IAAIhmB,EAAI,EAAGA,EAAI4+H,EAAYlwI,OAAQsR,IAGpC,GAFAvO,EAAQmtI,EAAY5+H,GAEhB81B,EAAOqoG,sBAAsB1sI,GAC7BqkC,EAAO8nG,YAAY9nG,EAAOqoG,sBAAsB1sI,QAC7C,CACH,IAAIwtI,EAAmBnpG,EAAOgpG,sBAAsBrtI,GACpDqkC,EAAOgmG,WAAWhmG,EAAOulG,aAAa4D,GAAkBlE,QAC5D,CAER,GAER,EAEOiE,CACX,CArC6B,CAqC3BP,ICtCES,GAAc,QACd/D,GAASh8H,OAAOW,OAETq/H,GAAW,SAAU5E,GAC5B,SAAS4E,IACL5E,EAAS/9H,MAAMlI,KAAM+H,UACzB,CAuFA,OArFKk+H,IAAW4E,EAAQ9/H,UAAYk7H,GACpC4E,EAAQ7mI,UAAY6G,OAAOS,OAAQ26H,GAAYA,EAASjiI,WACxD6mI,EAAQ7mI,UAAUqH,YAAcw/H,EAEhCA,EAAQ7mI,UAAUmiI,eAAiB,WAC/BF,EAASjiI,UAAUmiI,eAAenjI,KAAKhD,MAEvC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,UACN22H,MAAO,IACPwD,mBAAoB,CAAC,EAAG,EAAG,IAC3BC,gBAAiB,IACjBhE,aAAc,CAAC,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,QAAS,UAExG,EAEA8D,EAAQ7mI,UAAUuiI,UAAY,SAAoBppI,EAAO3I,EAAOC,GAC5DuL,KAAKvL,OAASA,EACduL,KAAKxL,MAAQA,EACbwL,KAAKgrI,WAAav2I,EAAS,EAC3BuL,KAAK7C,MAAQA,EAAMiF,QAAQ,IAAIC,OAAOrC,KAAK+qI,gBAAiB,KAAM,IAClE/qI,KAAKymI,QAAU,GACfzmI,KAAKirI,SAASjrI,KAAK7C,OACnB6C,KAAKkrI,SAAW,EAChBlrI,KAAK0nI,aACT,EAEAmD,EAAQ7mI,UAAUwiI,QAAU,WACxB,IAEIrpI,EAAQ6C,KAAK7C,MAEjB6C,KAAKwnI,WAAWxnI,KAAKsnI,OAErB,IAAK,IAAI57H,EAAI,EAAGA,EAAIvO,EAAM/C,OAAQsR,IANrB1L,KAOFynI,aAAatqI,EAAMP,OAAO8O,IAGjC1L,KAAKsV,QAAQsxH,aACb5mI,KAAK4mI,cAGT5mI,KAAKwnI,WAAWxnI,KAAKsnI,OACrBtnI,KAAKymI,QAAQ/yF,KACjB,EAEAm3F,EAAQ7mI,UAAUyjI,aAAe,SAAuBd,GACpD,IAAIF,EAAUzmI,KAAK+mI,aAAaJ,GAChC3mI,KAAKkrI,UAAYlgH,SAAS27G,EAAW,IACrC3mI,KAAKwnI,WAAWf,EACpB,EAEAoE,EAAQ7mI,UAAU4iI,YAAc,WAC5B5mI,KAAK6nI,UAAY,GAAM7nI,KAAKkrI,SAAW,IAAO,GAC9ClrI,KAAKynI,aAAaznI,KAAK6nI,SAC3B,EAEAgD,EAAQ7mI,UAAU0jI,YAAc,WAG5B1nI,KAAKm9D,SAAWn9D,KAAKxL,OAAmC,IAAzBwL,KAAK7C,MAAM/C,OAAS,GAF7B,EAEyD4F,KAAKomI,gBACxF,EAEAyE,EAAQ7mI,UAAUinI,SAAW,SAAmB9tI,GAK5C,GAJKytI,GAAYxpH,KAAKjkB,IAClB6C,KAAK0mI,sBAAsBvpI,EAAMsrB,MAAM,UAAU,KAGhDS,GAAQ/rB,EAAM/C,OAAQ4F,KAAK8qI,oBAC5B,MAAM,IAAI1qI,MAAM,qEAAuEJ,KAAK8qI,mBAAmBp5G,KAAK,KAAO,IAEnI,EAEAm5G,EAAQ7mI,UAAUwjI,WAAa,SAAqBf,GAKhD,IAJA,IAEIl8F,EAFA/I,EAASxhC,KAIJ0L,EAAI,EAAGA,EAAI+6H,EAAQrsI,OAAQsR,IAChC6+B,EAAK/I,EAAO/sC,OAAS+sC,EAAOwpG,WAAavE,EAAQ7pI,OAAO8O,GACxD81B,EAAOilG,QAAQr3H,KAAK,CAAE5a,MAAO,EAAG+1C,GAAIA,EAAIE,GAAIjJ,EAAO/sC,SACnD+sC,EAAOilG,QAAQr3H,KAAK,EAE5B,EAEOy7H,CACX,CA3FsB,CA2FpB5E,IC5FE2E,GAAc,QACdO,GAAoB,eACpBtE,GAASh8H,OAAOW,OAET4/H,GAAY,SAAUn6G,GAC7B,SAASm6G,EAASC,GACdp6G,EAAMjuB,KAAKhD,MACXA,KAAKqrI,SAAWA,EAChBrrI,KAAKmmI,gBACT,CAoBA,OAlBKl1G,IAAQm6G,EAASrgI,UAAYkmB,GAClCm6G,EAASpnI,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnDonI,EAASpnI,UAAUqH,YAAc+/H,EAEjCA,EAASpnI,UAAUmiI,eAAiB,WAA6B,EAEjEiF,EAASpnI,UAAUmkI,SAAW,WAAuB,EAErDiD,EAASpnI,UAAUsnI,GAAK,WAAiB,EAEzCF,EAASpnI,UAAUunI,OAAS,WACxB,OAAO,CACX,EAEAH,EAASpnI,UAAU0jC,KAAO,WAAmB,EAE7C0jG,EAASpnI,UAAUwnI,UAAY,WAAwB,EAEhDJ,CACX,CA1BuB,CA0BrBn6G,IAESw6G,GAAc,SAAUL,GAC/B,SAASK,EAAWJ,EAAUK,GAC1BN,EAASpoI,KAAKhD,KAAMqrI,GACpBrrI,KAAK0rI,OAASA,EACd1rI,KAAK2rI,WAAWD,EACpB,CA4FA,OA1FKN,IAAWK,EAAW1gI,UAAYqgI,GACvCK,EAAWznI,UAAY6G,OAAOS,OAAQ8/H,GAAYA,EAASpnI,WAC3DynI,EAAWznI,UAAUqH,YAAcogI,EAEnCA,EAAWznI,UAAUmiI,eAAiB,WAClCiF,EAASpnI,UAAUmiI,eAAenjI,KAAKhD,MAEvC+mB,GAAW/mB,KAAM,CACb4rI,KAAM,OACNC,MAAO,IAEf,EAEAJ,EAAWznI,UAAUmkI,SAAW,WAC5BnoI,KAAKqrI,SAAS7D,WAAWxnI,KAAKsnI,MAClC,EAEAmE,EAAWznI,UAAUsnI,GAAK,SAAanuI,EAAO7C,GAC1C,IAAIwa,EAAO3X,EAAM4X,WAAWza,GAC5B,OAAO0F,KAAKurI,OAAOz2H,EACvB,EAEA22H,EAAWznI,UAAU0jC,KAAO,SAAeokG,GAGvC,IAFA,IAAIr3H,EAAM,GAEFzU,KAAK+rI,OAAOt3H,GAAKzR,KAAKhD,KAAM8rI,IAAkBr3H,EAAMzU,KAAK+rI,OAAO3xI,QACpEqa,GAER,EAEAg3H,EAAWznI,UAAUwnI,UAAY,SAAoBM,GACjD,IAKIh3H,EAHA42H,EAAS1rI,KAAK0rI,OACdvuI,EAAQ2uI,EAAc3uI,MACtB6uI,EAAY7uI,EAAM/C,OAGtB,GAAI8uB,GAAQ,IAAKwiH,GAAS,CACtB,IAAIO,EAAc9uI,EAAM+kC,OAAO4pG,EAAcxxI,OAAOmuB,MAAM,WAEtDwjH,IACAD,EAAY7uI,EAAMkM,QAAQ4iI,EAAY,GAAIH,EAAcxxI,OAEhE,CAEA,MAAQwa,EAAOg3H,EAAc3uI,MAAM4X,WAAW+2H,EAAcxxI,SAAW,GACnE0F,KAAKurI,OAAOz2H,IACZg3H,EAAcxxI,MAAQ0xI,GAjBbhsI,KAkBFqrI,SAAS7D,WAlBPxnI,KAkByByoE,SAAS3zD,IAC3Cg3H,EAAcxxI,OAEtB,EAEAmxI,EAAWznI,UAAU2nI,WAAa,SAAqBD,GACnD1rI,KAAK+rI,OAAS,GAEV7iH,GAAQlpB,KAAK4rI,KAAMF,IACnB1rI,KAAK+rI,OAAO38H,KAAKpP,KAAKksI,UAGtBhjH,GAAQlpB,KAAKoyG,SAAUs5B,IACvB1rI,KAAK+rI,OAAO38H,KAAKpP,KAAKmsI,aAG1BnsI,KAAK+rI,OAAO38H,KAAKpP,KAAKosI,WAC1B,EAEAX,EAAWznI,UAAUkoI,SAAW,SAAmBJ,GAC/C,GAAIA,EAAcO,IAEd,OADAP,EAAcO,KAAM,EACbP,EAAcQ,gBAAkBtsI,KAAKqO,GAEpD,EAEAo9H,EAAWznI,UAAUmoI,YAAc,SAAsBL,GACrD,GAAIA,EAAcQ,gBAAkBtsI,KAAKoyG,WACpC05B,EAAcxxI,MAAQ,GAAKwxI,EAAc3uI,MAAM/C,QAC5C4F,KAAKqrI,SAASrrI,KAAKoyG,UAAUk5B,GAAGQ,EAAc3uI,MAAO2uI,EAAcxxI,MAAQ,IAG/E,OAFA0F,KAAKqrI,SAAS7D,WAAWxnI,KAAK6rI,OAC9BC,EAAcS,SAAU,GACjB,CAEf,EAEAd,EAAWznI,UAAUooI,WAAa,WAE9B,OADApsI,KAAKqrI,SAAS7D,WAAWxnI,KAAKwsI,OACvB,CACX,EAEOf,CACX,CAlGyB,CAkGvBL,IAEEqB,GAAY,CAAC,EAEjBA,GAAUC,EAAK,SAAUjB,GACrB,SAASkB,IACLlB,EAAWvjI,MAAMlI,KAAM+H,UAC3B,CA6BA,OA3BK0jI,IAAakB,EAAU5hI,UAAY0gI,GACxCkB,EAAU3oI,UAAY6G,OAAOS,OAAQmgI,GAAcA,EAAWznI,WAC9D2oI,EAAU3oI,UAAUqH,YAAcshI,EAElCA,EAAU3oI,UAAUmiI,eAAiB,WACjCsF,EAAWznI,UAAUmiI,eAAenjI,KAAKhD,MAEzC6mI,GAAO7mI,KAAM,CACTqO,IAAK,IACL+jG,SAAU,IACVo6B,KAAM,IACNlF,MAAO,KAEf,EAEAqF,EAAU3oI,UAAUunI,OAAS,SAAiBz2H,GAC1C,OAAO,GAAKA,GAAQA,EAAO,EAC/B,EAEA63H,EAAU3oI,UAAUykE,SAAW,SAAmB3zD,GAC9C,OAAIA,EAAO,GACAA,EAAO,GAGXA,EAAO,EAClB,EAEO63H,CACX,CAjCe,CAiCblB,IAEFgB,GAAUG,EAAK,SAAUnB,GACrB,SAASoB,IACLpB,EAAWvjI,MAAMlI,KAAM+H,UAC3B,CAyBA,OAvBK0jI,IAAaoB,EAAU9hI,UAAY0gI,GACxCoB,EAAU7oI,UAAY6G,OAAOS,OAAQmgI,GAAcA,EAAWznI,WAC9D6oI,EAAU7oI,UAAUqH,YAAcwhI,EAElCA,EAAU7oI,UAAUmiI,eAAiB,WACjCsF,EAAWznI,UAAUmiI,eAAenjI,KAAKhD,MAEzC6mI,GAAO7mI,KAAM,CACTqO,IAAK,IACL+jG,SAAU,IACVo6B,KAAM,IACNlF,MAAO,KAEf,EAEAuF,EAAU7oI,UAAUunI,OAAS,SAAiBz2H,GAC1C,OAAO,IAAMA,GAAQA,EAAO,GAChC,EAEA+3H,EAAU7oI,UAAUykE,SAAW,SAAmB3zD,GAC9C,OAAOA,EAAO,EAClB,EAEO+3H,CACX,CA7Be,CA6BbpB,IAEFgB,GAAUK,EAAK,SAAU1B,GACrB,SAAS2B,IACL3B,EAASljI,MAAMlI,KAAM+H,UACzB,CA6CA,OA3CKqjI,IAAW2B,EAAUhiI,UAAYqgI,GACtC2B,EAAU/oI,UAAY6G,OAAOS,OAAQ8/H,GAAYA,EAASpnI,WAC1D+oI,EAAU/oI,UAAUqH,YAAc0hI,EAElCA,EAAU/oI,UAAUmiI,eAAiB,WACjCiF,EAASpnI,UAAUmiI,eAAenjI,KAAKhD,MAEvC6mI,GAAO7mI,KAAM,CACTqO,IAAK,IACLm+H,KAAM,GACNlF,MAAO,KAEf,EAEAyF,EAAU/oI,UAAUmkI,SAAW,WAC3BnoI,KAAKqrI,SAAS7D,WAAWxnI,KAAKsnI,MAClC,EAEAyF,EAAU/oI,UAAUsnI,GAAK,SAAanuI,EAAO7C,GACzC,IAAI0yI,EAAQC,GAAa9vI,EAAO7C,EAAO,GACvC,OAAQA,EAAQ,GAAK6C,EAAM/C,QAA2B,IAAjB+C,EAAM/C,SAAiBwwI,GAAYxpH,KAAK4rH,EACjF,EAEAD,EAAU/oI,UAAU0jC,KAAO,WACvB1nC,KAAKqrI,SAAS7D,WAAWxnI,KAAKwsI,KAClC,EAEAO,EAAU/oI,UAAUwnI,UAAY,SAAoBM,GAKhD,IAJA,IAEIh3H,GAEIA,EAAOm4H,GAAanB,EAAc3uI,MAAO2uI,EAAcxxI,MAAO,KAClEswI,GAAYxpH,KAAKtM,IAAyB,IAAhBA,EAAK1a,QALtB4F,KAMFqrI,SAAS7D,WAAWx8G,SAASlW,EAAM,KAC1Cg3H,EAAcxxI,OAAS,CAE/B,EAEAyyI,EAAU/oI,UAAUykE,SAAW,SAAmB3zD,GAC9C,OAAOA,CACX,EAEOi4H,CACX,CAjDe,CAiDb3B,IAEFqB,GAAUb,KAAQ,SAAUR,GACxB,SAAS8B,EAAa7B,EAAUK,GAC5BN,EAASpoI,KAAKhD,KAAMqrI,GACpBrrI,KAAKmtI,eAAezB,EACxB,CA4HA,OA1HKN,IAAW8B,EAAaniI,UAAYqgI,GACzC8B,EAAalpI,UAAY6G,OAAOS,OAAQ8/H,GAAYA,EAASpnI,WAC7DkpI,EAAalpI,UAAUqH,YAAc6hI,EAErCA,EAAalpI,UAAUmiI,eAAiB,WACpCiF,EAASpnI,UAAUmiI,eAAenjI,KAAKhD,MAEvC6mI,GAAO7mI,KAAM,CACTqO,IAAK,OACL++H,gBAAiB,CAAC,IAAK,MAE/B,EAEAF,EAAalpI,UAAUmkI,SAAW,SAAmB2D,GACjD,IAAIh3H,EAAOg3H,EAAc3uI,MAAM4X,WAAW,GAAK,IAC3Cs4H,EAAWrtI,KAAKstI,aAAax4H,GAEjC9U,KAAKqrI,SAASgC,GAAUlF,UAC5B,EAEA+E,EAAalpI,UAAUsnI,GAAK,SAAanuI,EAAO7C,GAC5C,IAAIwa,EAAO3X,EAAM4X,WAAWza,GAC5B,OAAO0F,KAAKurI,OAAOz2H,EACvB,EAEAo4H,EAAalpI,UAAUunI,OAAS,SAAiBz2H,GAC7C,OAAO,KAAOA,GAAQA,EAAO,GACjC,EAEAo4H,EAAalpI,UAAUwnI,UAAY,SAAoBM,GACnD,IAKIh3H,EAHAu4H,EAAWrtI,KAAKutI,cAAczB,GAC9BT,EAAWrrI,KAAKqrI,SAChBjxI,EAASizI,EAASlwI,MAAM/C,OAK5B,GAFA0xI,EAAcxxI,OAASF,EAEnBA,EAAS,EACT,KAAOizI,EAAS/yI,MAAQF,EAAQizI,EAAS/yI,QACrCwa,EAAOu4H,EAASlwI,MAAM4X,WAAWs4H,EAAS/yI,OAC1C+yI,EAAS1tI,MAZJK,KAYmBstI,aAAax4H,GAEjCu4H,EAASf,gBAAkBe,EAAS1tI,QACpC0tI,EAASf,cAAgBe,EAAS1tI,MAClC0rI,EAASgC,EAAS1tI,OAAO+nC,KAAK2lG,IAGlChC,EAAS7D,WAAW6D,EAASgC,EAAS1tI,OAAO6sI,MAC7CnB,EAAS7D,WAAW6D,EAASgC,EAAS1tI,OAAO8oE,SAAS3zD,SAGtDu4H,EAAS1tI,QAAU0tI,EAASf,eAC5BjB,EAASgC,EAAS1tI,OAAO+nC,KAAK2lG,GAGlCrtI,KAAKwtI,WAAWH,GAChBhC,EAASoC,SAASJ,EAAUrtI,KAAK0tI,WAE7B5B,EAAcxxI,MAAQwxI,EAAc3uI,MAAM/C,QAC1C4F,KAAKwtI,WAAWH,GAIxBvB,EAAcO,KAAM,EACpBP,EAAcnsI,MAAQ0tI,EAAS1tI,KACnC,EAEAutI,EAAalpI,UAAUwpI,WAAa,SAAqBH,GACrDrtI,KAAKqrI,SAAS7D,WAAWxnI,KAAKqrI,SAASgC,EAAS1tI,OAAO6sI,MACvDxsI,KAAKqrI,SAAS7D,WAAWxnI,KAAKqrI,SAASgC,EAAS1tI,OAAO6sI,KAC3D,EAEAU,EAAalpI,UAAUupI,cAAgB,SAAwBzB,GAC3D,IAAIuB,EAAW,CACXlwI,MAAO6C,KAAK2tI,QAAQ7B,EAAc3uI,MAAO2uI,EAAcxxI,OACvDA,MAAO,GAQX,OALA+yI,EAAS1tI,MAAQK,KAAKstI,aAAaD,EAASlwI,MAAM4X,WAAW,IAC7Ds4H,EAASf,cAAgBR,EAAcQ,gBAAkBtsI,KAAKqO,IAC1Dg/H,EAAS1tI,MACTmsI,EAAcQ,cAEXe,CACX,EAEAH,EAAalpI,UAAUmpI,eAAiB,SAAyBzB,GAG7D1rI,KAAK0tI,UAAY,GAEjB,IAAK,IAAIhiI,EAAI,EAAGA,EAAIggI,EAAOtxI,OAAQsR,IAC3Bwd,GAAQwiH,EAAOhgI,GALV1L,KAKqBotI,kBALrBptI,KAME0tI,UAAUt+H,KAAKs8H,EAAOhgI,GAGzC,EAEAwhI,EAAalpI,UAAUspI,aAAe,SAAuBx4H,GAGzD,IAFA,IAAI0sB,EAASxhC,KAEJ0L,EAAI,EAAGA,EAAI1L,KAAK0tI,UAAUtzI,OAAQsR,IACvC,GAAI81B,EAAO6pG,SAAS7pG,EAAOksG,UAAUhiI,IAAI6/H,OAAOz2H,GAC5C,OAAO0sB,EAAOksG,UAAUhiI,EAGpC,EAEAwhI,EAAalpI,UAAU2pI,QAAU,SAAkBxwI,EAAO7C,GAKtD,IAJA,IAAIwa,EACA1c,EAAS,GACTsT,EAAIpR,GAEAwa,EAAO3X,EAAM4X,WAAWrJ,OAAS1L,KAAKurI,OAAOz2H,IACjD1c,GAAU+S,OAAOwJ,aAAaG,EAAO,KAGzC,OAAO1c,CACX,EAEO80I,CACX,CAjIkB,CAiIhB9B,IAEFqB,GAAUmB,KAAQ,SAAUxC,GACxB,SAASyC,EAAcxC,EAAUK,GAC7BN,EAASpoI,KAAKhD,KAAMqrI,GACpBrrI,KAAK0rI,OAASA,CAClB,CA8OA,OA5OKN,IAAWyC,EAAc9iI,UAAYqgI,GAC1CyC,EAAc7pI,UAAY6G,OAAOS,OAAQ8/H,GAAYA,EAASpnI,WAC9D6pI,EAAc7pI,UAAUqH,YAAcwiI,EAEtCA,EAAc7pI,UAAUmiI,eAAiB,WACrCiF,EAASpnI,UAAUmiI,eAAenjI,KAAKhD,MAEvC6mI,GAAO7mI,KAAM,CACTqO,IAAK,OACLy/H,WAAY,IACZC,QAAS,IACTC,MAAO,IACPZ,gBAAiB,CAAC,IAAK,KACvBa,uBAAwB,CACpB,GAAM,CAAEziH,IAAK,GAAIr4B,KAAM,gBACvB,IAAO,CAAEiH,OAAQ,IACjB,KAAQ,CAAEoxB,IAAK,EAAGr4B,KAAM,gBACxB,IAAO,CAAEq4B,IAAK,EAAGr4B,KAAM,gBACvB,KAAQ,CAAEq4B,IAAK,GAAIr4B,KAAM,gBACzB,IAAO,CAAEw7B,IAAK,EAAGnD,IAAK,GAAIr4B,KAAM,gBAChC,KAAQ,CAAEw7B,IAAK,EAAGnD,IAAK,GAAIr4B,KAAM,gBACjC,IAAO,CAAEw7B,IAAK,GAAInD,IAAK,GAAIr4B,KAAM,gBACjC,KAAQ,CAAEw7B,IAAK,GAAInD,IAAK,GAAIr4B,KAAM,gBAClC+6I,SAAU,CAAC,CACPC,IAAK,CAAC,KAAM,KAAM,OAAQ,QAC1B57B,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,IAAK,KACN,CAAC,IAAK,KACN,CAAC,IAAK,MAEVp/G,KAAM,CAAEiH,OAAQ,IACjB,CACC+zI,IAAK,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,OAAQ,OAAQ,OAAQ,QAC/E57B,OAAQ,CAAC,EAAC,IACVp/G,KAAM,CAAEq4B,IAAK,GAAIr4B,KAAM,iBACxB,CACCg7I,IAAK,CAAC,QACN57B,OAAQ,CAAC,CAAC,IAAK,MACfp/G,KAAM,CAAEiH,OAAQ,KACjB,CACC+zI,IAAK,CAAC,KAAM,KAAM,MAAO,MAAO,QAChCh7I,KAAM,CAAEq4B,IAAK,GAAIr4B,KAAM,iBACxB,CACCg7I,IAAK,CAAC,KAAM,OAAQ,OAAQ,QAC5Bh7I,KAAM,CAAEiH,OAAQ,KACjB,CACC+zI,IAAK,CAAC,KAAM,KAAM,QAClBh7I,KAAM,CAAEiH,OAAQ,KACjB,CACC+zI,IAAK,CAAC,OACN57B,OAAQ,CACJ,CAAC,IAAK,MAEVp/G,KAAM,CAAEiH,OAAQ,IACjB,CACC+zI,IAAK,CAAC,KAAM,QACZh7I,KAAM,CAAEiH,OAAQ,IACjB,CACC+zI,IAAK,CAAC,KAAM,MACZh7I,KAAM,CAAEq4B,IAAK,EAAGr4B,KAAM,iBACvB,CACCg7I,IAAK,CAAC,MAAO,OACbh7I,KAAM,CAAEq4B,IAAK,GAAIr4B,KAAM,iBACxB,CACCg7I,IAAK,CAAC,MAAO,OACbh7I,KAAM,CAAEw7B,IAAK,EAAGnD,IAAK,GAAIr4B,KAAM,iBAChC,CACCg7I,IAAK,CAAC,MAAO,OACbh7I,KAAM,CAAEw7B,IAAK,EAAGnD,IAAK,GAAIr4B,KAAM,iBAChC,CACCg7I,IAAK,CAAC,OAAQ,QACdh7I,KAAM,CAAEiH,OAAQ,OAGxBktI,MAAO,KAEf,EAGAuG,EAAc7pI,UAAUmkI,SAAW,WAC/BnoI,KAAKqrI,SAASrrI,KAAK8tI,YAAY3F,UACnC,EAEA0F,EAAc7pI,UAAUsnI,GAAK,WACzB,OAAOpiH,GAAQlpB,KAAKqO,IAAKrO,KAAK0rI,OAClC,EAEAmC,EAAc7pI,UAAUwnI,UAAY,SAAoBM,GACpD,IASIv4I,EACA66I,EACAC,EAXA7sG,EAASxhC,KAETqrI,EAAWrrI,KAAKqrI,SAChBluI,EAAQ2uI,EAAc3uI,MAAMiF,QAAQ,MAAO,IAC3CksI,EAAkB,IAAIjsI,OAAO,IAAMrC,KAAK+tI,QAAU/tI,KAAKguI,MAAQ,IAAK,KACpE1zI,EAAQwxI,EAAcxxI,MACtB+yI,EAAW,CACP1tI,MAAOK,KAAK8tI,YAMpBzC,EAAS7D,WAAWxnI,KAAKsnI,OAIzB,OAAsB,CAMlB,GALA+F,EAAS/yI,MAAQ,GAGjB/G,GADA86I,EAAkBlxI,EAAMP,OAAOtC,KAAWknC,EAAOusG,QAAU,EAAI,GACnC,EAAIvsG,EAAO+sG,eAAepxI,EAAO7C,GAASknC,EAAOgtG,YAAYrxI,EAAO7C,IAEpF20B,GAAG70B,OACXg0I,EAAY9zI,EAAQ+zI,EAAkB96I,EAAQ+C,GAAG8D,OAAS7G,EAAQ07B,GAAG70B,YAIrE,IAFAg0I,EAAYjxI,EAAMkM,QAAQm4B,EAAOusG,QAASzzI,EAAQ,IAElC,EAAG,CACf,GAAIA,EAAQ/G,EAAQ07B,GAAGzD,IAAMj4B,EAAQ+C,GAAG8D,OAASi0I,EAAkBlxI,EAAM/C,OACrE,MAAM,IAAIgG,MAAM,6DAGpBguI,EAAYjxI,EAAM/C,MACtB,CAOJ,GAJAizI,EAASlwI,MAAQA,EAAM6pC,UAAU1sC,EAAO8zI,GAAWhsI,QAAQksI,EAAiB,IAC5E9sG,EAAOypG,SAAS13I,EAAS85I,EAASlwI,OAClCkuI,EAASoC,SAASJ,EAAU7rG,EAAO4rG,iBAE/BgB,GAAajxI,EAAM/C,OACnB,MAGJE,EAAQ8zI,EAEJf,EAAS1tI,QAAU6hC,EAAOssG,aAC1BzC,EAAS7pG,EAAOssG,YAAYpmG,KAAK2lG,GACjCA,EAAS1tI,MAAQ6hC,EAAOssG,YAGvBv6I,EAAQ07B,GAAG70B,QACZixI,EAAS7D,WAAWhmG,EAAO8lG,MAEnC,CAEAwE,EAAcxxI,MAAQwxI,EAAc3uI,MAAM/C,MAC9C,EAEAyzI,EAAc7pI,UAAUinI,SAAW,SAAmB13I,EAAS4J,GAC3D,IAAI2X,EAAO3X,EAAM+kC,OAAO3uC,EAAQ+C,GAAG8D,QAC/B60B,EAAK17B,EAAQ07B,GAEjB,IAAKA,EAAG97B,OAASy3I,GAAYxpH,KAAKtM,GAC9B,MAAM,IAAI1U,MAAM,0BAA4B7M,EAAQ+C,GAAK,2DAG7D,GAAgB,iBAAZ24B,EAAG97B,OAA4Bg4I,GAAkB/pH,KAAKtM,GACtD,MAAM,IAAI1U,MAAM,0BAA4B7M,EAAQ+C,GAAK,qEAG7D,GAAI24B,EAAG70B,QAAU60B,EAAG70B,SAAW0a,EAAK1a,OAChC,MAAM,IAAIgG,MAAM,0BAA4B7M,EAAQ+C,GAAK,YAAc24B,EAAG70B,OAAS,qBAGvF,GAAI60B,EAAGN,KAAOM,EAAGN,IAAM7Z,EAAK1a,OACxB,MAAM,IAAIgG,MAAM,0BAA4B7M,EAAQ+C,GAAK,qBAAuB24B,EAAGN,IAAM,qBAG7F,GAAIM,EAAGzD,KAAOyD,EAAGzD,IAAM1W,EAAK1a,OACxB,MAAM,IAAIgG,MAAM,0BAA4B7M,EAAQ+C,GAAK,oBAAsB24B,EAAGzD,IAAM,oBAEhG,EAEAqiH,EAAc7pI,UAAUwqI,YAAc,SAAsBrxI,EAAO7C,GAM/D,IALA,IAEIhE,EACAm4I,EAEK/iI,EAAI,EAAGA,GAAK,EAAGA,IAGpB,GAFApV,EAAK22I,GAAa9vI,EAAO7C,EAAOoR,GAChC+iI,EAPSzuI,KAOsB0uI,yBAAyBp4I,IAP/C0J,KAO6D0uI,yBAAyBp4I,EAAG0wC,UAAU,EAAG1wC,EAAG8D,OAAS,IAEvH,MAAO,CACH9D,GAAIA,EACJ24B,GAAIw/G,GAIhBzuI,KAAK2uI,mBAAmBr4I,EAC5B,EAEAu3I,EAAc7pI,UAAU2qI,mBAAqB,SAA6Br4I,GACtE,MAAM,IAAI8J,MAAM,IAAM9J,EAAK,8CAC/B,EAEAu3I,EAAc7pI,UAAUuqI,eAAiB,SAAyBpxI,EAAO7C,GACrE,IAAIivB,EAAQpsB,EAAMkM,QAAQrJ,KAAK+tI,QAASzzI,GACpCkvB,EAAMrsB,EAAMkM,QAAQrJ,KAAKguI,MAAOzkH,GAChCjzB,EAAK6G,EAAM6pC,UAAUzd,EAAQ,EAAGC,GAChCyF,EAAKjvB,KAAK0uI,yBAAyBp4I,IAAO0J,KAAK0uI,yBAAyBp4I,EAAG4rC,OAAO5rC,EAAG8D,OAAS,IAMlG,OAJK60B,GACDjvB,KAAK2uI,mBAAmBr4I,GAGrB,CACH24B,GAAIA,EACJ34B,GAAIA,EAEZ,EAEAu3I,EAAc7pI,UAAU0qI,yBAA2B,SAAmCp4I,GAClF,IAAIm4I,EAAwBzuI,KAAKiuI,uBAC7BC,EAAWO,EAAsBP,SAErC,GAAIO,EAAsBn4I,GACtB,OAAOm4I,EAAsBn4I,GAGjC,IAAK,IAAIoV,EAAI,EAAGA,EAAIwiI,EAAS9zI,OAAQsR,IAAK,CACtC,GAAIwiI,EAASxiI,GAAGyiI,KAAOjlH,GAAQ5yB,EAAI43I,EAASxiI,GAAGyiI,KAC3C,OAAOD,EAASxiI,GAAGvY,KAChB,GAAI+6I,EAASxiI,GAAG6mG,OAGnB,IAFA,IAAIA,EAAS27B,EAASxiI,GAAG6mG,OAEhB1lB,EAAI,EAAGA,EAAI0lB,EAAOn4G,OAAQyyF,IAC/B,GAAI0lB,EAAO1lB,GAAG,IAAMv2F,GAAMA,GAAMi8G,EAAO1lB,GAAG,GACtC,OAAOqhD,EAASxiI,GAAGvY,IAInC,CACJ,EAEO06I,CACX,CAnPkB,CAmPhBzC,IAEK,IAAIwD,GAAe,SAAU3I,GAChC,SAAS2I,EAAYt5H,GACjB2wH,EAASjjI,KAAKhD,KAAMsV,GACpBtV,KAAK6uI,aACT,CA0IA,OAxIK5I,IAAW2I,EAAY7jI,UAAYk7H,GACxC2I,EAAY5qI,UAAY6G,OAAOS,OAAQ26H,GAAYA,EAASjiI,WAC5D4qI,EAAY5qI,UAAUqH,YAAcujI,EAEpCA,EAAY5qI,UAAUmiI,eAAiB,WACnCF,EAASjiI,UAAUmiI,eAAenjI,KAAKhD,MAEvC6mI,GAAO7mI,KAAM,CACT+mI,aAAc,CACV,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OACxE,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,OAAQ,SAEpDQ,KAAM,KAEd,EAEAqH,EAAY5qI,UAAU6qI,YAAc,WAGhC,IAFA,IAAIrtG,EAASxhC,KAEJ0L,EAAI,EAAGA,EAAI1L,KAAK0rI,OAAOtxI,OAAQsR,IACpC81B,EAAOA,EAAOkqG,OAAOhgI,IAAM,IAAI+gI,GAAUjrG,EAAOkqG,OAAOhgI,IAAI81B,EAAQA,EAAOkqG,OAElF,EAEAkD,EAAY5qI,UAAUuiI,UAAY,SAAoBppI,EAAO3I,EAAOC,GAChEuL,KAAKymI,QAAU,GACfzmI,KAAK7C,MAAQA,EACb6C,KAAKxL,MAAQA,EACbwL,KAAKvL,OAASA,EACduL,KAAKkrI,SAAW,EAChBlrI,KAAK8jE,WAAa,EAClB9jE,KAAK1F,MAAQ,EACb0F,KAAK68C,SAAW,CACpB,EAEA+xF,EAAY5qI,UAAUwiI,QAAU,WAC5B,IAAIsF,EAAgB,CAChB3uI,MAAO6C,KAAK7C,MACZ7C,MAAO,EACPqF,MAAO,IAGe,IAAtBK,KAAK7C,MAAM/C,SAIf0xI,EAAcnsI,MACVmsI,EAAcQ,cAAgBtsI,KAAK8uI,aAAahD,EAAe9rI,KAAK0rI,QAExE1rI,KAAKmoI,SAAS2D,GAEd9rI,KAAKytI,SAAS3B,EAAe9rI,KAAK0rI,QAElC1rI,KAAK4mI,cACL5mI,KAAKyoD,UACLzoD,KAAK0nI,cACT,EAEAkH,EAAY5qI,UAAUypI,SAAW,SAAmB3B,EAAeJ,GAK/D,IAJA,IAAIlqG,EAASxhC,KAKTwhC,EAAOsqG,EAAcnsI,OAAO6rI,UAAUM,KAElCA,EAAcxxI,OAASwxI,EAAc3uI,MAAM/C,SAI/C,GAAK0xI,EAAcS,QAIZ,CACH,IAAIwC,EAAOjD,EAAcnsI,MACzBmsI,EAAcnsI,MAAQmsI,EAAcQ,cACpCR,EAAcQ,cAAgByC,EAC9BjD,EAAcS,SAAU,CAC5B,MARIT,EAAcQ,cAAgBR,EAAcnsI,MAC5CmsI,EAAcnsI,MAAQ6hC,EAAOstG,aAAahD,EAAeJ,GACzDlqG,EAAOsqG,EAAcnsI,OAAO+nC,KAAKokG,EAQ7C,EAEA8C,EAAY5qI,UAAUmkI,SAAW,SAAmB2D,GAChD9rI,KAAK8rI,EAAcnsI,OAAOwoI,SAAS2D,GACnC9rI,KAAK68C,SAAW,CACpB,EAEA+xF,EAAY5qI,UAAU4iI,YAAc,WAChC5mI,KAAK6nI,SAAW7nI,KAAKkrI,SAAW,IAChClrI,KAAKwnI,WAAWxnI,KAAK6nI,SACzB,EAEA+G,EAAY5qI,UAAUykD,QAAU,WAC5BzoD,KAAKwnI,WAAWxnI,KAAKunI,KACzB,EAEAqH,EAAY5qI,UAAU0jI,YAAc,WAChC1nI,KAAKm9D,SAAWn9D,KAAKxL,OAASwL,KAAK8jE,WAAa9jE,KAAKomI,gBACzD,EAEAwI,EAAY5qI,UAAUwjI,WAAa,SAAqB1yH,GAMpD,IALA,IAGI3X,EADAspI,EAAUzmI,KAAK+mI,aAAajyH,GAAMvU,WAG7BmL,EAAI,EAAGA,EAAI+6H,EAAQrsI,OAAQsR,IAChCvO,EAAQ6tB,SAASy7G,EAAQ7pI,OAAO8O,GAAI,IAN3B1L,KAOFymI,QAAQr3H,KAAKjS,GAPX6C,KAQF8jE,YAAc3mE,EAEzB6C,KAAKkrI,UAAYp2H,EAAO9U,KAAK68C,UACjC,EAEA+xF,EAAY5qI,UAAU8qI,aAAe,SAAuBhD,EAAeJ,GAGvE,IAFA,IAEShgI,EAAI,EAAGA,EAAIggI,EAAOtxI,OAAQsR,IAC/B,GAHS1L,KAGE0rI,EAAOhgI,IAAI4/H,GAAGQ,EAAc3uI,MAAO2uI,EAAcxxI,OACxD,OAAOoxI,EAAOhgI,GAItB1L,KAAK0mI,sBAAsBoF,EAAc3uI,MAAMP,OAAOkvI,EAAcxxI,OACxE,EAEOs0I,CACX,CA/I0B,CA+IxB3I,IAES+I,GAAY,SAAUJ,GAC7B,SAASI,IACLJ,EAAY1mI,MAAMlI,KAAM+H,UAC5B,CAeA,OAbK6mI,IAAcI,EAASjkI,UAAY6jI,GACxCI,EAAShrI,UAAY6G,OAAOS,OAAQsjI,GAAeA,EAAY5qI,WAC/DgrI,EAAShrI,UAAUqH,YAAc2jI,EAEjCA,EAAShrI,UAAUmiI,eAAiB,WAChCyI,EAAY5qI,UAAUmiI,eAAenjI,KAAKhD,MAE1C6mI,GAAO7mI,KAAM,CACT2Q,KAAM,aACN+6H,OAAQ,CAAC,MAEjB,EAEOsD,CACX,CAnBuB,CAmBrBJ,IAESK,GAAY,SAAUL,GAC7B,SAASK,IACLL,EAAY1mI,MAAMlI,KAAM+H,UAC5B,CAeA,OAbK6mI,IAAcK,EAASlkI,UAAY6jI,GACxCK,EAASjrI,UAAY6G,OAAOS,OAAQsjI,GAAeA,EAAY5qI,WAC/DirI,EAASjrI,UAAUqH,YAAc4jI,EAEjCA,EAASjrI,UAAUmiI,eAAiB,WAChCyI,EAAY5qI,UAAUmiI,eAAenjI,KAAKhD,MAE1C6mI,GAAO7mI,KAAM,CACT2Q,KAAM,aACN+6H,OAAQ,CAAC,MAEjB,EAEOuD,CACX,CAnBuB,CAmBrBL,IAESM,GAAY,SAAUN,GAC7B,SAASM,IACLN,EAAY1mI,MAAMlI,KAAM+H,UAC5B,CAeA,OAbK6mI,IAAcM,EAASnkI,UAAY6jI,GACxCM,EAASlrI,UAAY6G,OAAOS,OAAQsjI,GAAeA,EAAY5qI,WAC/DkrI,EAASlrI,UAAUqH,YAAc6jI,EAEjCA,EAASlrI,UAAUmiI,eAAiB,WAChCyI,EAAY5qI,UAAUmiI,eAAenjI,KAAKhD,MAE1C6mI,GAAO7mI,KAAM,CACT2Q,KAAM,aACN+6H,OAAQ,CAAC,MAEjB,EAEOwD,CACX,CAnBuB,CAmBrBN,IAESO,GAAW,SAAUP,GAC5B,SAASO,IACLP,EAAY1mI,MAAMlI,KAAM+H,UAC5B,CAeA,OAbK6mI,IAAcO,EAAQpkI,UAAY6jI,GACvCO,EAAQnrI,UAAY6G,OAAOS,OAAQsjI,GAAeA,EAAY5qI,WAC9DmrI,EAAQnrI,UAAUqH,YAAc8jI,EAEhCA,EAAQnrI,UAAUmiI,eAAiB,WAC/ByI,EAAY5qI,UAAUmiI,eAAenjI,KAAKhD,MAE1C6mI,GAAO7mI,KAAM,CACT2Q,KAAM,WACN+6H,OAAQ,CAAC,IAAK,IAAK,IAAK,SAEhC,EAEOyD,CACX,CAnBsB,CAmBpBP,IAESQ,GAAc,SAAUR,GAC/B,SAASQ,IACLR,EAAY1mI,MAAMlI,KAAM+H,UAC5B,CAeA,OAbK6mI,IAAcQ,EAAWrkI,UAAY6jI,GAC1CQ,EAAWprI,UAAY6G,OAAOS,OAAQsjI,GAAeA,EAAY5qI,WACjEorI,EAAWprI,UAAUqH,YAAc+jI,EAEnCA,EAAWprI,UAAUmiI,eAAiB,WAClCyI,EAAY5qI,UAAUmiI,eAAenjI,KAAKhD,MAE1C6mI,GAAO7mI,KAAM,CACT2Q,KAAM,eACN+6H,OAAQ,CAAC,OAAQ,IAAK,MAE9B,EAEO0D,CACX,CAnByB,CAmBvBR,IAEF,SAAS3B,GAAa9vI,EAAO7C,EAAOo/C,GAChC,OAAOv8C,EAAM6pC,UAAU1sC,EAAOA,EAAQo/C,EAC1C,CCl3BA,IAAImtF,GAASh8H,OAAOW,OAET6jI,GAAW,SAAUpJ,GAC5B,SAASoJ,IACLpJ,EAAS/9H,MAAMlI,KAAM+H,UACzB,CA8FA,OA5FKk+H,IAAWoJ,EAAQtkI,UAAYk7H,GACpCoJ,EAAQrrI,UAAY6G,OAAOS,OAAQ26H,GAAYA,EAASjiI,WACxDqrI,EAAQrrI,UAAUqH,YAAcgkI,EAEhCA,EAAQrrI,UAAUmiI,eAAiB,WAC/BF,EAASjiI,UAAUmiI,eAAenjI,KAAKhD,MAEvC6mI,GAAO7mI,KAAM,CACT+mI,aAAc,CACV,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,WACA,YAEJO,MAAO,KACPC,KAAM,MACN+H,aAAc,GACdC,UAAWA,IAEnB,EAEAF,EAAQrrI,UAAUuiI,UAAY,SAAoBppI,EAAO3I,GACrDwL,KAAKymI,QAAU,GACfzmI,KAAK7C,MAAQA,EACb6C,KAAKwvI,eAAiB,EACtBxvI,KAAKxL,MAAQA,CACjB,EAEA66I,EAAQrrI,UAAU0jI,YAAc,WAG5B1nI,KAAKm9D,SAAWn9D,KAAKxL,OAChB,IAAMwL,KAAK7C,MAAM/C,OAAS4F,KAAKwvI,gBAAkBxvI,KAAKomI,gBAHrC,EAI1B,EAEAiJ,EAAQrrI,UAAUwiI,QAAU,WACxB,IAEIrpI,EAAQ6C,KAAK7C,MAEjB6C,KAAKwnI,WAAWxnI,KAAKsnI,OAErB,IAAK,IAAI57H,EAAI,EAAGA,EAAIvO,EAAM/C,OAAQsR,IANrB1L,KAOFynI,aAAatqI,EAAMP,OAAO8O,IAGjC1L,KAAKsV,QAAQsxH,aACb5mI,KAAK4mI,cAGT5mI,KAAKwnI,WAAWxnI,KAAKunI,MACrBvnI,KAAK0nI,aACT,EAEA2H,EAAQrrI,UAAUyjI,aAAe,SAAuBd,GACpD,IAAIF,EAAUzmI,KAAK+mI,aAAaJ,GAE3BF,GACDzmI,KAAK0mI,sBAAsBC,GAG/B3mI,KAAKwnI,WAAWf,EACpB,EAEA4I,EAAQrrI,UAAUwjI,WAAa,SAAqBf,GAGhD,IAFA,IAES/6H,EAAI,EAAGA,EAAI+6H,EAAQrsI,OAAQsR,IAFvB1L,KAGFymI,QAAQr3H,KAAK4b,SAASy7G,EAAQ7pI,OAAO8O,GAAI,IAExD,EAEA2jI,EAAQrrI,UAAU4iI,YAAc,WAC5B,IAAIplG,EAASxhC,KAGTsqI,EADmBtqI,KAAKuvI,UAAUvvI,KAAKsvI,cACRtsI,KAAKhD,KAAKuvI,UAAWvvI,KAAK7C,OAE7D6C,KAAK6nI,SAAWyC,EAAY54G,KAAK,IAEjC,IAAK,IAAIhmB,EAAI,EAAGA,EAAI4+H,EAAYlwI,OAAQsR,IACpC81B,EAAOguG,iBACPhuG,EAAOgmG,WAAWhmG,EAAOulG,aAAauD,EAAY5+H,IAE1D,EAEO2jI,CACX,CAlGsB,CAkGpBpJ,IAESwJ,GAAY,SAAUJ,GAC7B,SAASI,IACLJ,EAAQnnI,MAAMlI,KAAM+H,UACxB,CAeA,OAbKsnI,IAAUI,EAAS1kI,UAAYskI,GACpCI,EAASzrI,UAAY6G,OAAOS,OAAQ+jI,GAAWA,EAAQrrI,WACvDyrI,EAASzrI,UAAUqH,YAAcokI,EAEjCA,EAASzrI,UAAUmiI,eAAiB,WAChCkJ,EAAQrrI,UAAUmiI,eAAenjI,KAAKhD,MAEtC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,eACN2+H,aAAc,YAEtB,EAEOG,CACX,CAnBuB,CAmBrBJ,IAESK,GAAY,SAAUL,GAC7B,SAASK,IACLL,EAAQnnI,MAAMlI,KAAM+H,UACxB,CAeA,OAbKsnI,IAAUK,EAAS3kI,UAAYskI,GACpCK,EAAS1rI,UAAY6G,OAAOS,OAAQ+jI,GAAWA,EAAQrrI,WACvD0rI,EAAS1rI,UAAUqH,YAAcqkI,EAEjCA,EAAS1rI,UAAUmiI,eAAiB,WAChCkJ,EAAQrrI,UAAUmiI,eAAenjI,KAAKhD,MAEtC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,eACN2+H,aAAc,YAEtB,EAEOI,CACX,CAnBuB,CAmBrBL,IAESM,GAAc,SAAUN,GAC/B,SAASM,IACLN,EAAQnnI,MAAMlI,KAAM+H,UACxB,CAeA,OAbKsnI,IAAUM,EAAW5kI,UAAYskI,GACtCM,EAAW3rI,UAAY6G,OAAOS,OAAQ+jI,GAAWA,EAAQrrI,WACzD2rI,EAAW3rI,UAAUqH,YAAcskI,EAEnCA,EAAW3rI,UAAUmiI,eAAiB,WAClCkJ,EAAQrrI,UAAUmiI,eAAenjI,KAAKhD,MAEtC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,wBACN2+H,aAAc,oBAEtB,EAEOK,CACX,CAnByB,CAmBvBN,IAESO,GAAc,SAAUP,GAC/B,SAASO,IACLP,EAAQnnI,MAAMlI,KAAM+H,UACxB,CAeA,OAbKsnI,IAAUO,EAAW7kI,UAAYskI,GACtCO,EAAW5rI,UAAY6G,OAAOS,OAAQ+jI,GAAWA,EAAQrrI,WACzD4rI,EAAW5rI,UAAUqH,YAAcukI,EAEnCA,EAAW5rI,UAAUmiI,eAAiB,WAClCkJ,EAAQrrI,UAAUmiI,eAAenjI,KAAKhD,MAEtC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,wBACN2+H,aAAc,oBAEtB,EAEOM,CACX,CAnByB,CAmBvBP,IAEEE,GAAY,CACZM,SAAU,SAAkB1yI,GACxB,IAEIsX,EACAq7H,EACAC,EAJAzF,EAAc,CAAC,EAAG,IAClB0F,EAAM7yI,EAAM/C,OAAS,EAKzB,IAAKqa,EAAM,EAAGA,EAAMtX,EAAM/C,OAAQqa,IAC9B61H,GAAa71H,EAAMu7H,GAAO,IAAMhlH,SAAS7tB,EAAMP,OAAO6X,GAAM,IAMhE,IAHAs7H,EAASzF,EAAY,GACrBwF,GAA4B,EAAjBxF,EAAY,IAAQ/pI,WAE1BkU,EAAM,EAAGA,EAAMq7H,EAAQ11I,OAAQqa,IAChCs7H,GAAU/kH,SAAS8kH,EAAQlzI,OAAO6X,GAAM,IAG5C,MAAO,EAAE,GAAMs7H,EAAS,IAAO,GACnC,EACAE,SAAU,SAAkB9yI,GAOxB,IANA,IAII+yI,EAJAnI,EAAc,EAEd3tI,EAAS+C,EAAM/C,OAIVsR,EAAI,EAAGA,EAAItR,EAAQsR,IAExBq8H,MADW3tI,EAASsR,GAAK,GAAK,GAAK,GACXvO,EAAMP,OAAO8O,GAKzC,OAAmB,MAFnBwkI,GAVU,GAUUnI,EAVV,QAaC,CAACmI,GAGL,CAAC,EAAG,EACf,EACAC,iBAAkB,SAA0BhzI,GACxC,IACIizI,EADA9F,EAActqI,KAAKiwI,SAAS9yI,GAIhC,OAFAizI,EAAajzI,EAAQmtI,EAAY,GAE1BA,EAAYniI,OAAOnI,KAAK6vI,SAASO,GAC5C,EACAC,iBAAkB,SAA0BlzI,GACxC,IACImzI,EADAhG,EAActqI,KAAK6vI,SAAS1yI,GAIhC,OAFAmzI,EAAanzI,EAAQmtI,EAAY,GAE1BA,EAAYniI,OAAOnI,KAAK6vI,SAASS,GAC5C,GChPAzJ,GAASh8H,OAAOW,OAET+kI,GAAS,SAAUtK,GAC1B,SAASsK,IACLtK,EAAS/9H,MAAMlI,KAAM+H,UACzB,CAiHA,OA/GKk+H,IAAWsK,EAAMxlI,UAAYk7H,GAClCsK,EAAMvsI,UAAY6G,OAAOS,OAAQ26H,GAAYA,EAASjiI,WACtDusI,EAAMvsI,UAAUqH,YAAcklI,EAE9BA,EAAMvsI,UAAUmiI,eAAiB,WAC7BF,EAASjiI,UAAUmiI,eAAenjI,KAAKhD,MAEvC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,SACN6/H,SAAU,CACN,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,SACA,UAEJzJ,aAAc,CACVl/F,OAAQ,CACJ,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,GACV,CAAC,EAAG,EAAG,EAAG,IAEdte,MAAO,CAAC,EAAG,EAAG,GACdkjB,OAAQ,CAAC,EAAG,EAAG,EAAG,EAAG,KAGjC,EAEA8jG,EAAMvsI,UAAUuiI,UAAY,SAAoBppI,EAAO3I,EAAOC,GAC1D,IAAIg8I,EAAgBtlI,OAAOhO,GAE3B,GAA6B,KAAzBszI,EAAcr2I,QAAiB,KAAKgnB,KAAKqvH,GACzC,MAAM,IAAIrwI,MAAM,0DAGpBJ,KAAKymI,QAAU,GACfzmI,KAAKsV,QAAQ7gB,OAASA,EACtBuL,KAAKm9D,SAAW3oE,GAAS,GAAKwL,KAAKomI,iBACnCpmI,KAAK7C,MAAQszI,EACbzwI,KAAK6nI,SAAW7nI,KAAK0wI,oBACrB1wI,KAAK2wI,QAAUF,EAAc,GAC7BzwI,KAAK4wI,SAAWH,EAAcvuG,OAAO,EAAG,GACxCliC,KAAK6wI,UAAYJ,EAAcvuG,OAAO,GAAKliC,KAAK6nI,QACpD,EAEA0I,EAAMvsI,UAAUwiI,QAAU,WACtBxmI,KAAK8wI,UAAU9wI,KAAK+mI,aAAax9G,OACjCvpB,KAAK+wI,QAAQ/wI,KAAK4wI,SAAU5wI,KAAK2wI,SACjC3wI,KAAK8wI,UAAU9wI,KAAK+mI,aAAat6F,QACjCzsC,KAAK+wI,QAAQ/wI,KAAK6wI,WAClB7wI,KAAK8wI,UAAU9wI,KAAK+mI,aAAax9G,MACrC,EAEAgnH,EAAMvsI,UAAU+sI,QAAU,SAAkBH,EAAUviI,GAGlD,IAFA,IAAImzB,EAASxhC,KAEJ0L,EAAI,EAAGA,EAAIklI,EAASx2I,OAAQsR,IAC7B2C,GAAO2c,SAASwW,EAAOgvG,SAASniI,GAAKzR,OAAO8O,GAAI,IAChD81B,EAAOsvG,UAAU37I,MAAM6O,UAAU0W,MAAM1X,KAAKw+B,EAAOulG,aAAal/F,OAAO+oG,EAASh0I,OAAO8O,KAAKwiD,WAAW,GAEvG1sB,EAAOsvG,UAAUtvG,EAAOulG,aAAal/F,OAAO+oG,EAASh0I,OAAO8O,KAAK,EAG7E,EAEA6kI,EAAMvsI,UAAU8sI,UAAY,SAAoBE,EAAUC,GAGtD,IAFA,IAAIzvG,EAASxhC,KAEJ0L,EAAI,EAAGA,EAAIslI,EAAS52I,OAAQsR,IAC7BulI,EACAzvG,EAAOilG,QAAQr3H,KAAK,CAChBm7B,GAAI,EACJE,GAA4B,IAAxBjJ,EAAOlsB,QAAQ7gB,OACnBD,MAAOw8I,EAAStlI,KAGpB81B,EAAOilG,QAAQr3H,KAAK4hI,EAAStlI,GAGzC,EAEA6kI,EAAMvsI,UAAU0sI,kBAAoB,WAKhC,IAJA,IAAIV,EAAM,EACNkB,EAAO,EACP/zI,EAAQ6C,KAAK7C,MAAMoK,MAAM,IAAI2mD,UAAUx8B,KAAK,IAEvChmB,EAAI,EAAGA,EAAIvO,EAAM/C,OAAQsR,IAC1BA,EAAI,EACJwlI,GAAQlmH,SAAS7tB,EAAMP,OAAO8O,GAAI,IAElCskI,GAAOhlH,SAAS7tB,EAAMP,OAAO8O,GAAI,IAMzC,OAFgB,IAAO,EAAIskI,EAAMkB,GAAQ,IAAO,EAGpD,EAEOX,CACX,CArHoB,CAqHlBtK,ICvHEY,GAASh8H,OAAOW,OAET2lI,GAAQ,SAAUZ,GACzB,SAASY,IACLZ,EAAMroI,MAAMlI,KAAM+H,UACtB,CA4BA,OA1BKwoI,IAAQY,EAAKpmI,UAAYwlI,GAC9BY,EAAKntI,UAAY6G,OAAOS,OAAQilI,GAASA,EAAMvsI,WAC/CmtI,EAAKntI,UAAUqH,YAAc8lI,EAE7BA,EAAKntI,UAAUmiI,eAAiB,WAC5BoK,EAAMvsI,UAAUmiI,eAAenjI,KAAKhD,MAEpC6mI,GAAO7mI,KAAM,CACT2Q,KAAM,SAEd,EAEAwgI,EAAKntI,UAAUuiI,UAAY,SAAoBppI,EAAO3I,EAAOC,GACzD,GAAqB,IAAjB0I,EAAM/C,QAAgB,KAAKgnB,KAAKjkB,GAChC,MAAM,IAAIiD,MAAM,0BAGpBJ,KAAK7C,MAAQA,EACb6C,KAAKsV,QAAQ7gB,OAASA,EACtBuL,KAAK6nI,SAAW7nI,KAAK0wI,kBAAkB1wI,KAAK7C,OAC5C6C,KAAK4wI,SAAW5wI,KAAK7C,MAAM+kC,OAAO,EAAG,GACrCliC,KAAK6wI,UAAY7wI,KAAK7C,MAAM+kC,OAAO,GAAKliC,KAAK6nI,SAC7C7nI,KAAKymI,QAAU,GACfzmI,KAAKm9D,SAAW3oE,GAAS,GAAKwL,KAAKomI,gBACvC,EAEO+K,CACX,CAhCmB,CAgCjBZ,ICXSa,GAAY,CACnBC,OAAQvK,GAERwK,OAAQ9I,GACR+I,eAAgBzH,GAEhB0H,OAAQrH,GACRsH,eAAgB/G,GAEhBgH,QAASvC,GACTwC,SAAU3C,GACV4C,SAAU3C,GACV4C,SAAU3C,ICrCP,SAAS4C,GAAYt+I,EAASu+I,GACjC,IAAIr7I,EAAUlD,EAAQiD,MAAMC,QACR,WAAhBq7I,IAKAv+I,EAAQiD,MAAMC,QAAU,SAG5B,IAAIE,EAAO,CACPpC,MAAOhB,EAAQw+I,YACfv9I,OAAQjB,EAAQy+I,cAKpB,OAFAz+I,EAAQiD,MAAMC,QAAUA,EAEjBE,CACX,CDqBAw6I,GAAU,WAAahC,GACvBgC,GAAUc,SAAWzC,GACrB2B,GAAUe,SAAWzC,GACrB0B,GAAUgB,WAAazC,GACvByB,GAAUiB,WAAazC,GACvBwB,GAAUkB,QAAUzH,GACpBuG,GAAUmB,KAAOpB,GACjBC,GAAUoB,MAAQjC,GEtBlB,IAGIkC,GAAW,SAAUxhH,GACrB,SAASwhH,EAAQj/I,EAAS8hB,EAASo9H,QACT,IAAjBA,IAA0BA,EAAe/uG,IAE9C1S,EAAMjuB,KAAKhD,MAEXA,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,GAC5CtV,KAAKxM,QAAUA,EACfwM,KAAKiwG,QAAUyiC,EAEf1yI,KAAK0oH,eACL1oH,KAAK+oH,eACL/oH,KAAK2yI,YAAYr9H,GAEbA,GAAW6P,GAAQ7P,EAAQnY,QAC3B6C,KAAKkyF,QAEb,CA+QA,OA7QKjhE,IAAQwhH,EAAQ1nI,UAAYkmB,GACjCwhH,EAAQzuI,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAClDyuI,EAAQzuI,UAAUqH,YAAconI,EAEhCA,EAAQzuI,UAAUs/C,QAAU,WACxBtjD,KAAK6qH,iBACT,EAEA4nB,EAAQzuI,UAAU0kH,aAAe,WAC7BlgH,EAASxI,KAAKxM,QAAS,YAC3B,EAEAi/I,EAAQzuI,UAAU+kH,aAAe,WAC7B,IACIzzG,EADMtV,KACQsV,QACdm5F,EAFMzuG,KAEQyuG,QAEbA,GAAWA,EAAQn5F,QAAQniB,OAASmiB,EAAQs1G,WAC7C5qH,KAAK6qH,kBACL7qH,KAAK4yI,sBACL5yI,KAAKyuG,QAAUzuG,KAAK6yI,iBAE5B,EAEAJ,EAAQzuI,UAAU6uI,eAAiB,WAC/B,OAAO1yF,GAAAA,OAAoBngD,KAAK47H,eAAgB,CAC5CzoI,KAAM6M,KAAKsV,QAAQs1G,UAE3B,EAEA6nB,EAAQzuI,UAAU6mH,gBAAkB,WAC5B7qH,KAAKyuG,UACLzuG,KAAKyuG,QAAQnrD,UACbtjD,KAAKyuG,QAAU,KACfzuG,KAAK8yI,yBAEb,EAEAL,EAAQzuI,UAAU4uI,oBAAsB,WAC/B5yI,KAAK47H,iBACN57H,KAAK47H,eAAiB9iI,SAASomB,cAAc,OAC7Clf,KAAK47H,eAAenlI,MAAMomD,SAAW,WACrC78C,KAAKxM,QAAQgsB,YAAYxf,KAAK47H,gBAEtC,EAEA6W,EAAQzuI,UAAU8uI,uBAAyB,WACnC9yI,KAAK47H,gBAAkB57H,KAAK47H,eAAe9mG,aAC3C90B,KAAK47H,eAAe9mG,WAAWpV,YAAY1f,KAAK47H,gBAChD57H,KAAK47H,eAAiB,KAE9B,EAEA6W,EAAQzuI,UAAUowH,WAAa,SAAqB9+G,GAChDtV,KAAK2yI,YAAYr9H,GACjBtV,KAAK+oH,eACL/oH,KAAKkyF,QACT,EAEAugD,EAAQzuI,UAAUkuF,OAAS,WACvB,IAAIt7F,EAAOoJ,KAAK88H,WAEhB98H,KAAKyuG,QAAQxrE,QAEbjjC,KAAKyuG,QAAQ7lE,QAAQ,CACjBp0C,MAAOoC,EAAKpC,MACZC,OAAQmC,EAAKnC,SAGjBuL,KAAKokD,eAELpkD,KAAKyuG,QAAQtuD,KAAKngD,KAAKykD,OAC3B,EAEAguF,EAAQzuI,UAAUglC,QAAU,WACxB,MAAO,CACHx0C,MAAOwL,KAAKxM,QAAQ+W,YACpB9V,OAAQuL,KAAKxM,QAAQ4W,aAE7B,EAEAqoI,EAAQzuI,UAAUq9F,QAAU,WACxBrhG,KAAKkyF,QACT,EAEAugD,EAAQzuI,UAAUogD,aAAe,WAC7BpkD,KAAKykD,OAASzkD,KAAK+yI,SACvB,EAEAN,EAAQzuI,UAAU+uI,QAAU,WACxB,IASIC,EACAC,EAVA39H,EAAUtV,KAAKsV,QACfnY,EAAQmY,EAAQnY,MAChB4vD,EAAcz3C,EAAQpc,KACtBg6I,EAAa1rH,GAAWulC,EAAYzxD,QACpC1E,EAAOoJ,KAAK88H,WACZj2E,EAASvxC,EAAQuxC,QAAU,CAAC,EAC5BwkF,EAAWrrI,KAAKqrI,SAChBpkF,EAAa,IAAI5c,GAAI,EAAG,EAAGzzC,EAAKpC,MAAOoC,EAAKnC,QAAQ62C,MAAMub,EAAOryD,OAAO82C,MAAMh2B,EAAQ+1B,SACtF8nG,EAAYlsF,EAAWxyD,SAIvBgwD,EAAS,IAAItE,GAEjBngD,KAAKinD,WAAaA,EAClBxC,EAAO54B,OAAO7rB,KAAKozI,eAAex8I,IAE9Bm2D,EAAYh5D,UAEZo/I,GADahzF,GAAsBhjD,EAAO,CAAEq4B,KAAMu3B,EAAYv3B,OAAQ/gC,OAC5Cy+I,EAAWvrH,IAAMurH,EAAWrrH,QAG1D,IACImrH,EAAe3H,EAAStiC,OAAO5rG,EAAO8pD,EAAWzyD,QAAS2+I,EAI9D,CAHE,MAAOvzI,GAEL,OADAI,KAAKiwG,QAAQrwG,GACN6kD,CACX,CAgBA,OAdIsI,EAAYh5D,UACZk/I,EAAgB91I,EAEZmY,EAAQuyH,UAAY1iH,GAAQkmH,EAASxD,YACrCoL,GAAiB,IAAM5H,EAASxD,UAGpCpjF,EAAO54B,OAAO7rB,KAAKqzI,SAASJ,KAGhCjzI,KAAKmzI,UAAYA,EACjBnzI,KAAKszI,YAActzI,KAAKuzI,UAAUP,EAAavM,QAASuM,EAAa71E,UACrE1Y,EAAO54B,OAAO7rB,KAAKszI,aAEZ7uF,CACX,EAEAguF,EAAQzuI,UAAUw8F,aAAe,WAC7B,OAAOxgG,KAAK+yI,SAChB,EAEAN,EAAQzuI,UAAU84H,SAAW,WACzB,IACIpsG,EAAcohH,GADJ9xI,KAAKxM,QACoBwM,KAAKsV,QAAQs1G,UAChDh0H,EAAO,IAAIq1C,GArKK,IACC,KAsLrB,OAhBIvb,EAAYl8B,MAAQ,IACpBoC,EAAKpC,MAAQk8B,EAAYl8B,OAGzBk8B,EAAYj8B,OAAS,IACrBmC,EAAKnC,OAASi8B,EAAYj8B,QAG1BuL,KAAKsV,QAAQ9gB,QACboC,EAAKpC,MAAQwL,KAAKsV,QAAQ9gB,OAG1BwL,KAAKsV,QAAQ7gB,SACbmC,EAAKnC,OAASuL,KAAKsV,QAAQ7gB,QAGxBmC,CACX,EAEA67I,EAAQzuI,UAAU7G,MAAQ,SAAgBq2I,GACtC,IAAKruH,GAAQquH,GACT,OAAOxzI,KAAKsV,QAAQnY,MAGxB6C,KAAKsV,QAAQnY,MAAQgO,OAAOqoI,GAC5BxzI,KAAKkyF,QACT,EAEAugD,EAAQzuI,UAAUuvI,UAAY,SAAoB9M,EAAStpE,GASvD,IARA,IAIIs2E,EACAC,EAHAzsF,EAAajnD,KAAKinD,WAClBstC,EAAUttC,EAAW3c,GAGrBhtB,EAAQ,IAAI6iC,GAEPz0C,EAAI,EAAGA,EAAI+6H,EAAQrsI,OAAQsR,IAAK,CASrC,GAFA+nI,GANAC,EAAczsH,GAASw/G,EAAQ/6H,IAAM+6H,EAAQ/6H,GAAK,CAC9ClX,MAAOiyI,EAAQ/6H,GACf6+B,GAAI,EACJE,GAZKzqC,KAYMmzI,YAGK3+I,MAAQ2oE,EAExBzxD,EAAI,EAAG,CACP,IAAIg0C,EAAOzT,GAAAA,WACP,IAAIA,GAAWsoD,EAASm/C,EAAYnpG,GAAK0c,EAAW1c,IACpD,IAAI0B,GAAWsoD,EAAUk/C,EAAOC,EAAYjpG,GAAKwc,EAAW1c,KAG5DllB,EAAO86B,GAAAA,SAAmBT,EAAM,CAChC3J,KAAM,CACFvnB,MAzBHxuB,KAyBiBsV,QAAQkZ,OAE1BjJ,OAAQ,OAGZjI,EAAMuO,OAAOxG,EACjB,CAEAkvE,GAAWk/C,CACf,CAEA,OAAOn2H,CACX,EAEAm1H,EAAQzuI,UAAUovI,eAAiB,SAAyBx8I,GACxD,IAAI0e,EAAUtV,KAAKsV,QACfuxC,EAASvxC,EAAQuxC,QAAU,CAAC,EAC5B52B,EAAM,IAAIoa,GAAI,EAAG,EAAGzzC,EAAKpC,MAAOoC,EAAKnC,QAAQ62C,MAAMub,EAAOryD,MAAQ,GAYtE,OAXW2rD,GAAAA,SAAmBlwB,EAAI+b,SAAU,CACxC+J,KAAM,CACFvnB,MAAOlZ,EAAQ6xC,YAEnB5hC,OAAQ,CACJiJ,MAAOq4B,EAAOryD,MAAQqyD,EAAOr4B,MAAQ,GACrCh6B,MAAOqyD,EAAOryD,MACd6yD,SAAUR,EAAOQ,WAK7B,EAEAorF,EAAQzuI,UAAUqvI,SAAW,SAAmBl2I,GAC5C,IAAI4vD,EAAc/sD,KAAKsV,QAAQpc,KAC3BA,EAAO8G,KAAK2zI,SAAW,IAAIjnF,GAAQvvD,EAAO,CAC1Cq4B,KAAMu3B,EAAYv3B,KAClBhH,MAAOu+B,EAAYv+B,MACnB2d,MAAO,SACP4a,OAAQ,SACRzrD,OAAQyxD,EAAYzxD,SAMxB,OAHApC,EAAKuqD,OAAOzjD,KAAKinD,YACjB/tD,EAAKirD,eAEEjrD,EAAKurD,MAChB,EAEAguF,EAAQzuI,UAAU2uI,YAAc,SAAsBr9H,GAalD,GAZAtV,KAAK7M,MAAQmiB,EAAQniB,MAAQ6M,KAAKsV,QAAQniB,MAAM43B,cAE9B,SAAd/qB,KAAK7M,OACL6M,KAAK7M,KAAO,QACZmiB,EAAQnY,MAAQ,IAAMmY,EAAQnY,OAGhB,SAAd6C,KAAK7M,OACL6M,KAAK7M,KAAO,OACZmiB,EAAQnY,MAAQ,IAAMmY,EAAQnY,QAG7Bi0I,GAAUpxI,KAAK7M,MAChB,MAAM,IAAIiN,MAAO,aAAgBJ,KAAK7M,KAAQ,uBAGlD6M,KAAKqrI,SAAW,IAAI+F,GAAUpxI,KAAK7M,MAEnC6M,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEOm9H,CACX,CAjSe,CAiSbxhH,IAEF0E,GAAkB88G,GAAS,CACvB9hI,KAAM,UACNi6G,SAAU,MACVztH,MAAO,GACPhK,KAAM,SACN00I,UAAU,EACVrzI,MAAO,EACPC,OAAQ,EACR+5B,MAAO,QACP24B,WAAY,QACZjuD,KAAM,CACFnF,SAAS,EACTyhC,KAAM,0DACNhH,MAAO,QACPlzB,OAAQ,CACJqsB,IAAK,EACLE,OAAQ,EACRC,KAAM,EACNF,MAAO,IAGfi/B,OAAQ,CACJryD,MAAO,EACP6yD,SAAU,QACV74B,MAAO,SAEX6c,QAAS,CACL1jB,IAAK,EACLE,OAAQ,EACRC,KAAM,EACNF,MAAO,KC3Sf,IC1CIsoF,GAAS,SAAU9oE,GACnB,SAAS8oE,EAAMlH,EAAKtpD,EAAMpqC,QACR,IAAToqC,IAAkBA,EAAO,IAAIjX,SACjB,IAAZnzB,IAAqBA,EAAU,CAAC,GAErC8xB,EAAWpkC,KAAKhD,KAAMsV,GAEtBtV,KAAKgpG,IAAIA,GACThpG,KAAK0/C,KAAKA,EACd,CAEKtY,IAAa8oE,EAAMnlG,UAAYq8B,GACpC8oE,EAAMlsG,UAAY6G,OAAOS,OAAQ87B,GAAcA,EAAWpjC,WAC1DksG,EAAMlsG,UAAUqH,YAAc6kG,EAE9B,IAAIptE,EAAqB,CAAEmS,SAAU,CAAE3oC,cAAc,IAkCrD,OAhCAw2B,EAAmBmS,SAAS7oC,IAAM,WAC9B,MAAO,OACX,EAEA8jG,EAAMlsG,UAAUglG,IAAM,SAAc7rG,GAChC,OAAIgoB,EAAQhoB,IACR6C,KAAKsV,QAAQ2T,IAAI,MAAO9rB,GACjB6C,MAGJA,KAAKsV,QAAQlJ,IAAI,MAC5B,EAEA8jG,EAAMlsG,UAAUqlC,KAAO,SAAelC,GAClC,IAAImO,EAAiBpO,GAASlnC,KAAKq1C,iBAAiBlO,IACpD,OAAOnnC,KAAKq0G,MAAMhrE,KAAKiM,EAC3B,EAEA46D,EAAMlsG,UAAUy6C,QAAU,WACtB,OAAOz+C,KAAKq0G,MAAMhrE,MACtB,EAEA6mE,EAAMlsG,UAAU6xC,eAAiB,SAAyB3Q,GACtD,OAAOllC,KAAKq0G,MAAMxqE,cAAc3E,EACpC,EAEAgrE,EAAMlsG,UAAU4xC,SAAW,WACvB,OAAO51C,KAAKgpG,KAChB,EAEAn+F,OAAOq4B,iBAAkBgtE,EAAMlsG,UAAW8+B,GAEnCotE,CACX,CAlDa,CAkDXrvD,GAAa9L,GAAS,CAAE,UAE1B,MC3DW8xF,GAASh8H,OAAOW,OAEpB,SAASooI,GAAUv/H,EAAKw/H,GAI3B,IAHA,IAAIz7I,EAAS,GACTqc,EAAM,EAEHA,EAAMJ,EAAIja,QACbhC,EAAOgX,KAAKiF,EAAI2yB,UAAUvyB,EAAKA,EAAMo/H,IACrCp/H,GAAOo/H,EAGX,OAAOz7I,CACX,CAEO,SAAS07I,GAAa32I,EAAO/C,GAChC,IAAI25I,EAAY5vH,OAAOhnB,GAAOoD,SAAS,GAMvC,OAJIwzI,EAAU35I,OAASA,IACnB25I,EAAY,IAAI5+I,MAAMiF,EAAS25I,EAAU35I,OAAS,GAAGs3B,KAAK,GAAKqiH,GAG5DA,CACX,CAEO,SAASC,GAAU72I,GACtB,OAAO6tB,SAAS7tB,EAAO,EAC3B,CCxBO,IAAI82I,GAAmB,SAAUhjH,GACpC,SAASgjH,EAAgB9iH,GACrBF,EAAMjuB,KAAKhD,MAEXA,KAAKmxB,OAASA,EACdnxB,KAAKkvE,IAAM/9C,EAAO/2B,OAAS,EAC3B4F,KAAKy0H,OAAStjG,EAAO/2B,OAAS,EAC9B4F,KAAKk0I,YAAcl0I,KAAKy0H,OACxBz0H,KAAK8R,KAAO,EACZ9R,KAAKyH,EAAI,CACb,CA2CA,OAzCKwpB,IAAQgjH,EAAgBlpI,UAAYkmB,GACzCgjH,EAAgBjwI,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC1DiwI,EAAgBjwI,UAAUqH,YAAc4oI,EAExCA,EAAgBjwI,UAAU0jC,KAAO,WAC7B1nC,KAAKkvE,KAAOlvE,KAAK8R,IAAM9R,KAAKyH,EAC5BzH,KAAKyH,GAAK,EACVzH,KAAKy0H,OAASz0H,KAAKk0I,YAAcl0I,KAAKyH,CAC1C,EAEAwsI,EAAgBjwI,UAAUmwI,YAAc,WAGpC,IAFA,IAAI3yG,EAASxhC,UAEiCvM,IAAvCuM,KAAKmxB,OAAOnxB,KAAKkvE,KAAKlvE,KAAKy0H,SAC9BjzF,EAAOkG,QAEHlG,EAAO0tC,IAAM,GAAK1tC,EAAO0tC,KAAO1tC,EAAOrQ,OAAO/2B,UAC9ConC,EAAO1vB,KAAO0vB,EAAO1vB,IACrB0vB,EAAO0yG,aAAsC,IAAvB1yG,EAAO0yG,YAAoB,EAAI,EACrD1yG,EAAOizF,OAASjzF,EAAO0yG,YACvB1yG,EAAO0tC,IAAM1tC,EAAO1vB,IAAM,EAAI0vB,EAAOrQ,OAAO/2B,OAAS,EAAI,GAIjE,MAAO,CACH80E,IAAKlvE,KAAKkvE,IACVulD,OAAQz0H,KAAKy0H,OAErB,EAEAwf,EAAgBjwI,UAAUowI,qBAAuB,WAG7C,GAFAp0I,KAAK0nC,YAEsCj0C,IAAvCuM,KAAKmxB,OAAOnxB,KAAKkvE,KAAKlvE,KAAKy0H,QAC3B,MAAO,CACHvlD,IAAKlvE,KAAKkvE,IACVulD,OAAQz0H,KAAKy0H,OAGzB,EAEOwf,CACX,CAtD8B,CAsD5BhjH,ICtDSojH,GAAkB,SAAUpjH,GACnC,SAASojH,EAAeC,EAAYvjI,GAChCkgB,EAAMjuB,KAAKhD,MAEXA,KAAKs0I,WAAaA,EAClBt0I,KAAK+Q,QAAUA,CACnB,CAMA,OAJKkgB,IAAQojH,EAAetpI,UAAYkmB,GACxCojH,EAAerwI,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACzDqwI,EAAerwI,UAAUqH,YAAcgpI,EAEhCA,CACX,CAb6B,CAa3BpjH,ICNSsjH,GAAc,SAAUtjH,GAC/B,SAASsjH,IACLtjH,EAAM/oB,MAAMlI,KAAM+H,UACtB,CAeA,OAbKkpB,IAAQsjH,EAAWxpI,UAAYkmB,GACpCsjH,EAAWvwI,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACrDuwI,EAAWvwI,UAAUqH,YAAckpI,EAEnCA,EAAWvwI,UAAUwwI,kBAAoB,SAA4BC,EAAaC,GAC9E,IAAIC,EC8QL,SAAkBF,GACrB,IACIG,EADAD,EAAQ,GAERlgI,EAAM,EACNJ,EAAMogI,EAEVE,EAAMvlI,KAAKylI,GAAWxgI,EAtPM,EACD,EACF,EAoP+EugI,IACxGA,EAAeD,EAAM,GAAGG,KACxBzgI,EAAMA,EAAI6tB,OAAOyyG,EAAM,GAAGI,WAAW36I,QAErC,KAAOia,EAAIja,OAAS,GAAG,CACnB,IAAI46I,EAAWH,GAAWxgI,EAxPN,GACD,EACF,GAsP+EugI,GAE5FI,EAASF,OAASF,GAClBA,EAAeI,EAASF,KACxBH,EAAMvlI,KAAK4lI,GACXvgI,KAEAkgI,EAAMlgI,GAAKsgI,YAAcC,EAASD,WAGtC1gI,EAAMA,EAAI6tB,OAAO8yG,EAASD,WAAW36I,OACzC,CAEA,OAAOu6I,CACX,CDvSoBM,CAASR,GACjBS,ECwSL,SAA+BP,GAIlC,IAHA,IAAIv6I,EAAS,EAGJsR,EAAI,EAAGA,EAAIipI,EAAMv6I,OAAQsR,IAE9BtR,GADO+6I,GAAkBR,EAAMjpI,GAAGopI,MACnBM,oBAAoBT,EAAMjpI,GAAGqpI,WAAW36I,QAG3D,OAAO0mB,KAAK6K,KAAKvxB,EAAS,EAC9B,CDlTiCi7I,CAAsBV,GAC3C5jI,EAAUukI,GAAWJ,EAAoBR,GACzCJ,ECwUL,SAAuBK,EAAO5jI,GAIjC,IAHA,IAAIujI,EAAa,GAGR5oI,EAAI,EAAGA,EAAIipI,EAAMv6I,OAAQsR,IAE9B4oI,GADOa,GAAkBR,EAAMjpI,GAAGopI,MACf/rC,OAAO4rC,EAAMjpI,GAAGqpI,WAAYhkI,GAGnD,OAAOujI,CACX,CDlVyBiB,CAAcZ,EAAO5jI,GAEtC,OAAO,IAAIsjI,GAAeC,EAAYvjI,EAC1C,EAEOwjI,CACX,CAnByB,CAmBvBtjH,IEtBSukH,GAAc,SAAUvkH,GAC/B,SAASukH,IACLvkH,EAAMjuB,KAAKhD,MAEXA,KAAKmmI,gBACT,CAqCA,OAnCKl1G,IAAQukH,EAAWzqI,UAAYkmB,GACpCukH,EAAWxxI,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACrDwxI,EAAWxxI,UAAUqH,YAAcmqI,EAEnCA,EAAWxxI,UAAUmiI,eAAiB,WAClCU,GAAO7mI,KAAM,CACTy1I,cAAe,GACfC,qBAAsB,IAE9B,EAEAF,EAAWxxI,UAAU2xI,gBAAkB,SAA0B5kI,GAC7D,OAAIA,EAAU,GACH,EACAA,EAAU,GACV,EAGJ,CACX,EAEAykI,EAAWxxI,UAAU4xI,sBAAwB,SAAgC7kI,GACzE,OAAO/Q,KAAK01I,qBAAqB11I,KAAK21I,gBAAgB5kI,GAAW,IACrE,EAEAykI,EAAWxxI,UAAU6xI,mBAAqB,SAA6Bz7I,EAAQ2W,GAC3E,OAAO/Q,KAAKy1I,cAAgB3B,GAAa15I,EAAQ4F,KAAK41I,sBAAsB7kI,GAChF,EAEAykI,EAAWxxI,UAAU+kG,OAAS,WAAqB,EAEnDysC,EAAWxxI,UAAUoxI,oBAAsB,WAAkC,EAE7EI,EAAWxxI,UAAUykE,SAAW,WAAuB,EAEhD+sE,CACX,CA3CyB,CA2CvBvkH,IC1CS6kH,GAAqB,SAAUN,GACtC,SAASM,IACLN,EAAWttI,MAAMlI,KAAM+H,UAC3B,CAqCA,OAnCKytI,IAAaM,EAAkB/qI,UAAYyqI,GAChDM,EAAkB9xI,UAAY6G,OAAOS,OAAQkqI,GAAcA,EAAWxxI,WACtE8xI,EAAkB9xI,UAAUqH,YAAcyqI,EAE1CA,EAAkB9xI,UAAUmiI,eAAiB,WACzCqP,EAAWxxI,UAAUmiI,eAAenjI,KAAKhD,MAEzC6mI,GAAO7mI,KAAM,CACT01I,qBAAsB,CAAC,GAAI,GAAI,IAC/BD,cAAe,QAEvB,EAEAK,EAAkB9xI,UAAUykE,SAAW,SAAmBk+D,GACtD,OAAO37G,SAAS27G,EAAW,GAC/B,EAEAmP,EAAkB9xI,UAAU+kG,OAAS,SAAiB10F,EAAKtD,GACvD,IAGIrF,EAFAgoB,EAAQkgH,GAAUv/H,EAAK,GACvBjc,EAFO4H,KAEO61I,mBAAmBxhI,EAAIja,OAAQ2W,GAGjD,IAAKrF,EAAI,EAAGA,EAAIgoB,EAAMt5B,OAAS,EAAGsR,IAC9BtT,GAAU07I,GAAapgH,EAAMhoB,GAAI,IAGrC,OAAOtT,EAAS07I,GAAapgH,EAAMhoB,GAAI,EAAI,EAAIgoB,EAAMhoB,GAAGtR,OAC5D,EAEA07I,EAAkB9xI,UAAUoxI,oBAAsB,SAA8BW,EAAahlI,GACzF,IAAIilI,EAAOD,EAAc,EACzB,OAAO,EAAI/1I,KAAK41I,sBAAsB7kI,GAAW,GAAK+P,KAAK8K,MAAMmqH,EAAc,GAAK,EAAIC,GAAiB,IAATA,EAAa,EAAI,EACrH,EAEOF,CACX,CAzCgC,CAyC9BN,ICzCSS,GAA0B,SAAUT,GAC3C,SAASS,IACLT,EAAWttI,MAAMlI,KAAM+H,UAC3B,CA2FA,OAzFKytI,IAAaS,EAAuBlrI,UAAYyqI,GACrDS,EAAuBjyI,UAAY6G,OAAOS,OAAQkqI,GAAcA,EAAWxxI,WAC3EiyI,EAAuBjyI,UAAUqH,YAAc4qI,EAE/CA,EAAuBjyI,UAAUmiI,eAAiB,WAC9CqP,EAAWxxI,UAAUmiI,eAAenjI,KAAKhD,MAEzC6mI,GAAO7mI,KAAM,CACTk2I,WAAY,CACR,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,EACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,EAAK,GACL,IAAK,GACL,EAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,GACL,IAAK,IAETR,qBAAsB,CAAC,EAAG,GAAI,IAC9BD,cAAe,QAEvB,EAEAQ,EAAuBjyI,UAAUykE,SAAW,SAAmBk+D,GAC3D,OAAO3mI,KAAKk2I,WAAWvP,EAC3B,EAEAsP,EAAuBjyI,UAAU+kG,OAAS,SAAiB10F,EAAKtD,GAC5D,IAMIrF,EAHAgoB,EAAQkgH,GAAUv/H,EAAK,GACvBjc,EAAS4H,KAAK61I,mBAAmBxhI,EAAIja,OAAQ2W,GAIjD,IAAKrF,EAAI,EAAGA,EAAIgoB,EAAMt5B,OAAS,EAAGsR,IAE9BtT,GAAU07I,GADF,GATC9zI,KASWyoE,SAAS/0C,EAAMhoB,GAAG9O,OAAO,IATpCoD,KASiDyoE,SAAS/0C,EAAMhoB,GAAG9O,OAAO,IACrD,IAOlC,OAAOxE,EAAS07I,GAJY,IAApBpgH,EAAMhoB,GAAGtR,OACb,GAAK4F,KAAKyoE,SAAS/0C,EAAMhoB,GAAG9O,OAAO,IAAMoD,KAAKyoE,SAAS/0C,EAAMhoB,GAAG9O,OAAO,IACvEoD,KAAKyoE,SAAS/0C,EAAMhoB,GAAG9O,OAAO,IAEE,EAAI,EAAI82B,EAAMhoB,GAAGtR,OACzD,EAEA67I,EAAuBjyI,UAAUoxI,oBAAsB,SAA8BW,EAAahlI,GAC9F,OAAO,EAAI/Q,KAAK41I,sBAAsB7kI,GAAW,GAAK+P,KAAK8K,MAAMmqH,EAAc,GAAUA,EAAc,EAAnB,CACxF,EAEOE,CACX,CA/FqC,CA+FnCT,IChGSW,GAAkB,SAAUX,GACnC,SAASW,IACLX,EAAWttI,MAAMlI,KAAM+H,UAC3B,CAwCA,OAtCKytI,IAAaW,EAAeprI,UAAYyqI,GAC7CW,EAAenyI,UAAY6G,OAAOS,OAAQkqI,GAAcA,EAAWxxI,WACnEmyI,EAAenyI,UAAUqH,YAAc8qI,EAEvCA,EAAenyI,UAAUmiI,eAAiB,WACtCqP,EAAWxxI,UAAUmiI,eAAenjI,KAAKhD,MAEzC6mI,GAAO7mI,KAAM,CACT01I,qBAAsB,CAAC,EAAG,GAAI,IAC9BD,cAAe,QAEvB,EAEAU,EAAenyI,UAAUykE,SAAW,SAAmBk+D,GACnD,IAAI7xH,EAAO6xH,EAAU5xH,WAAW,GAEhC,GAAID,GAAQ,KAAQ,KAAOA,GAAQA,GAAQ,IACvC,OAAOA,EAGX,MAAM,IAAI1U,MAAO,sCAAyCumI,EAAY,KAC1E,EAEAwP,EAAenyI,UAAU+kG,OAAS,SAAiB10F,EAAKtD,GAIpD,IAHA,IACI3Y,EADO4H,KACO61I,mBAAmBxhI,EAAIja,OAAQ2W,GAExCrF,EAAI,EAAGA,EAAI2I,EAAIja,OAAQsR,IAC5BtT,GAAU07I,GAJH9zI,KAIqByoE,SAASp0D,EAAIzX,OAAO8O,IAAK,GAGzD,OAAOtT,CACX,EAEA+9I,EAAenyI,UAAUoxI,oBAAsB,SAA8BW,EAAahlI,GACtF,OAAO,EAAI/Q,KAAK41I,sBAAsB7kI,GAAW,EAAIglI,CACzD,EAEOI,CACX,CA5C6B,CA4C3BX,IC1CSL,GAAoB,CAAC,EAChCA,GAAyB,QAAI,IAAIW,GACjCX,GAA+B,aAAI,IAAIc,GACvCd,GAAsB,KAAI,IAAIgB,GCJ9B,IAEWC,GAAe,SAAUnlH,GAChC,SAASmlH,IACLnlH,EAAMjuB,KAAKhD,MAEXA,KAAKmmI,iBAELnmI,KAAK80I,KAAOK,GAAkBn1I,KAAKq2I,aACvC,CAyEA,OAvEKplH,IAAQmlH,EAAYrrI,UAAYkmB,GACrCmlH,EAAYpyI,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACtDoyI,EAAYpyI,UAAUqH,YAAc+qI,EAEpCA,EAAYpyI,UAAUmiI,eAAiB,WACnCU,GAAO7mI,KAAM,CACTq2I,aAjBD,OAkBCC,OAAQ,2BACRC,6BAA8B,GAC9BhkC,OAAQ,CAAC,IAAK,KAAM,MAAO,QAAS,WAE5C,EAEA6jC,EAAYpyI,UAAUwwI,kBAAoB,SAA4BC,EAAaC,GAC/E,IAAIz9H,EAAOjX,KAAK+oG,OAAO0rC,GAEnB1jI,EAAUukI,GADWt1I,KAAKq1I,sBAAsBp+H,GACPy9H,GACzCJ,EAAat0I,KAAK80I,KAAKe,mBAAmB5+H,EAAK7c,OAAS,EAAG2W,GAAWkG,EAE1E,OAAO,IAAIo9H,GAAeC,EAAYvjI,EAC1C,EAEAqlI,EAAYpyI,UAAUqxI,sBAAwB,SAAgCp+H,GAC1E,IAAIimF,EAAajmF,EAAK7c,OAGtB,OAFyB0mB,KAAK6K,MAAM3rB,KAAKu2I,6BAA+Br5C,GAAc,EAG1F,EAEAk5C,EAAYpyI,UAAU+kG,OAAS,SAAiB10F,GAK5C,IAJA,IAEIjc,EAAS4H,KAAKs2I,OAET5qI,EAAI,EAAGA,EAAI2I,EAAIja,OAAQsR,IAC5BtT,GALS4H,KAKQw2I,gBAAgBniI,EAAIU,WAAWrJ,IAGpD,OAAOtT,CACX,EAEAg+I,EAAYpyI,UAAUwyI,gBAAkB,SAA0B1hI,GAC9D,IAAI2hI,EAAaz2I,KAAK02I,cAAc5hI,GAChCN,EAAKiiI,EAAa,EAClBr+I,EAAS,GAEb,GAAmB,IAAfq+I,EACAr+I,EAAS07I,GAAah/H,EAAM,OACzB,CAGH,IAFA,IAAI6hI,EAAkB,EAAIF,EAEjB/qI,EAAI,EAAGA,EAAI8I,EAAI9I,IACpBtT,EAAS07I,GAAah/H,GAAa,EAAJpJ,EAAS,GAAK,IAAK,GAAKtT,EAG3DA,GAAW0c,GAAa,EAALN,EAAY,KAAOmiI,GAAoBA,GAAkBp2I,SAAS,GAAKnI,CAC9F,CAEA,OAAOA,CACX,EAEAg+I,EAAYpyI,UAAU0yI,cAAgB,SAAwB5hI,GAG1D,IAFA,IAAIy9F,EAASvyG,KAAKuyG,OAET7mG,EAAI,EAAGA,EAAI6mG,EAAOn4G,OAAQsR,IAC/B,GAAIoJ,EAAOy9F,EAAO7mG,GACd,OAAOA,EAAI,CAGvB,EAEO0qI,CACX,CAjF0B,CAiFxBnlH,IC1FS2lH,GAA+B,CAAC,CACvCC,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,GAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IAERwrF,mBAAoB,EACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IAERwrF,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,MAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,GACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,MAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,MAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,GAAI,MAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,GAAI,MAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,GAAI,MAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,IACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,GAAI,MAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,EAAG,IACJ,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,EAAG,KACJ,CAAC,GAAI,MAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,EAAG,KAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,KAE7B,CACCF,EAAG,CACCvrF,OAAQ,CACJ,CAAC,GAAI,KACL,CAAC,EAAG,MAERwrF,mBAAoB,KACpBC,uBAAwB,IAE5BC,EAAG,CACC1rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5Bz/F,EAAG,CACCgU,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,IAE5BE,EAAG,CACC3rF,OAAQ,CACJ,CAAC,GAAI,IACL,CAAC,GAAI,KAETwrF,mBAAoB,KACpBC,uBAAwB,MP5vC5BG,GAAa,OAEbC,GAAgB,eAEhBC,GAAc,CAAE,EAAK,GACrBC,GAAoB,CAAE,EAAK,GAC3BC,GAA0C,CACtC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GACpC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,IAEhDC,GAAgB,CAAC,EAAG,EAAG,EAAG,EAAG,GAC7BC,GAAmB,CAAC,EAAG,EAAG,GAC1BC,GAA0B,CAAEZ,EAAG,KAAMG,EAAG,KAAM1/F,EAAG,KAAM2/F,EAAG,MAI1DS,GAAmB,CAAC,WAAY,YAIhCC,GAAwB,CACpB,SAAUzoE,EAAKulD,GAAU,OAAQvlD,EAAMulD,GAAU,IAAM,CAAG,EAC1D,SAAUvlD,EAAKulD,GAAU,OAAOvlD,EAAM,IAAM,CAAG,EAC/C,SAAUA,EAAKulD,GAAU,OAAOA,EAAS,IAAM,CAAG,EAClD,SAAUvlD,EAAKulD,GAAU,OAAQvlD,EAAMulD,GAAU,IAAM,CAAG,EAC1D,SAAUvlD,EAAKulD,GAAU,OAAQ3zG,KAAK8K,MAAMsjD,EAAM,GAAKpuD,KAAK8K,MAAM6oG,EAAS,IAAM,IAAM,CAAG,EAC1F,SAAUvlD,EAAKulD,GAAU,OAASvlD,EAAMulD,EAAU,EAAOvlD,EAAMulD,EAAU,IAAO,CAAG,EACnF,SAAUvlD,EAAKulD,GAAU,OAAUvlD,EAAMulD,EAAU,EAAOvlD,EAAMulD,EAAU,GAAM,IAAM,CAAG,EACzF,SAAUvlD,EAAKulD,GAAU,QAAUvlD,EAAMulD,GAAU,EAAOvlD,EAAMulD,EAAU,GAAM,IAAM,CAAG,GAI7FmW,GAAc,OAGdgN,GAAa,IAAIv1I,OAAO,oBACxBw1I,GAAoB,IAAIx1I,OAAO,uBAC/By1I,GAAY,IAAIz1I,OAAO,wBAQhB01I,GAAuB,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,IAE5C,SAASC,GAAiBC,EAAUC,EAAKnyH,EAAGC,GAC/C,IAAK,IAAIta,EAAI,EAAGA,EAAIusI,EAAS79I,OAAQsR,IACjCusI,EAASvsI,GAAGqa,GAAGC,GAAKkyH,CAE5B,CAEO,SAASC,GAAaF,EAAUC,EAAKnyH,EAAGC,GAC3C,IAAK,IAAIta,EAAI,EAAGA,EAAIisI,GAAsBv9I,OAAQsR,IAC9CusI,EAASvsI,GAAGqa,GAAGC,GAAK2xH,GAAsBjsI,GAAGqa,EAAGC,GAAW,EAANkyH,EAAUltH,SAASktH,EAAK,GAErF,CA0EO,SAASE,GAAeryH,EAAGC,GAI9B,IAHA,IAAI5tB,EAAS,GAGJsT,EAFCqa,EAAE3rB,OAAS,EAEHsR,GAAK,EAAGA,IACtBtT,EAAOsT,GAAKqa,EAAEra,GAAKsa,EAAEta,GAGzB,OAAOtT,CACX,CAEO,SAASigJ,GAAoBtyH,EAAGC,GAGnC,IAFA,IAAI5tB,EAAS,GAEJsT,EAAI,EAAGA,EAAIqa,EAAE3rB,OAAQsR,IAC1B,IAAK,IAAImhF,EAAI,EAAGA,EAAI7mE,EAAE5rB,OAAQyyF,SACJp5F,IAAlB2E,EAAOsT,EAAImhF,GACXz0F,EAAOsT,EAAImhF,IAAM9mE,EAAEra,IAAMsa,EAAE6mE,IAAM,EAAI7mE,EAAE6mE,GAAK,IAAM,IAElDz0F,EAAOsT,EAAImhF,GAAKuqD,GAAYC,GAAkBj/I,EAAOsT,EAAImhF,IAAMwqD,IAAmBtxH,EAAEra,GAAKsa,EAAE6mE,IAAM,MAK7G,OAAOz0F,CACX,CAiBO,SAASkgJ,GAAmB3gG,EAAYvuB,GAC3C,IAAIhxB,EAAS,GACTqc,EAAMkjC,EAAWv9C,OAAS,EAE9B,GACIhC,EAAOqc,GAAO4iI,IAAmB1/F,EAAWljC,GAAO2U,GAAS,KAC5D3U,eAEuBhhB,IAApBkkD,EAAWljC,IAElB,OAAOrc,CACX,CAEO,SAASmgJ,GAAuBthI,EAAMuhI,GACzC,IAKI5vE,EACAn0D,EANAgkI,EAAYV,GAAqBS,EAAsB,GACvDpgJ,EAAS,IAAIjD,MAAMqjJ,GAAqBrwI,OAAO8O,GAC/CyhI,EAAsB,IAAIvjJ,MAAMiD,EAAOgC,OAASq+I,EAAUr+I,QAAQ+N,OAAOswI,GACzEE,EAAQ1hI,EAAK7c,OACbw+I,EAAiB,GAIrB,IAAKnkI,EAAM,EAAGA,EAAMkkI,EAAOlkI,IACvBm0D,EAAU0vE,GAAmBI,EAAqBtB,GAAYh/I,EAAOA,EAAOgC,OAAS,KACrFs+I,EAAoBtyG,OAAO,EAAG,GAE9BhuC,EAASggJ,GAAexvE,EAASxwE,GAGrC,IAAKqc,EAAMrc,EAAOgC,OAAS,EAAGqa,GAAO,EAAGA,IACpCmkI,EAAeJ,EAAsB,EAAI/jI,GAAOq/H,GAAa17I,EAAOqc,GAAM,GAG9E,OAAOmkI,CACX,CAoCO,SAAS/D,GAAWxgI,EAAKwkI,EAAuBC,EAAsBC,EAAoBnE,GAC7F,IAMIE,EACAC,EAPAiE,EAAUpO,GAAYtrH,KAAKjL,GAC3B4kI,EAAeD,EAAUA,EAAQ,GAAK,GACtCh4G,EAAQ42G,GAAWt4H,KAAKjL,GACxB6kI,EAAal4G,EAAQA,EAAM,GAAK,GAChCm4G,EAAetB,GAAkBv4H,KAAKjL,GACtC+kI,EAAoBD,EAAeA,EAAa,GAAK,GAuBzD,OAnBIF,IACCA,EAAa7+I,QAAUy+I,GAAyBxkI,EAAIja,SAAW6+I,EAAa7+I,QAC5E6+I,EAAa7+I,QAAU0+I,IAAyBjB,GAAkBz2H,KAAK/M,EAAIzX,OAAOq8I,EAAa7+I,WAChG06I,EAhQM,UAiQNC,EAAakE,GACNG,IAAsB/kI,EAAIja,SAAWg/I,EAAkBh/I,QAC9Dg/I,EAAkBh/I,QAAU2+I,GAAsBnE,IAAiBuC,KACnErC,EAAOqC,GACPpC,EAAakE,GAAgBC,IAE7BpE,EArQG,OAwQCC,EADAqE,EACaA,EAAoBtB,GAAUx4H,KAAKjL,EAAI2yB,UAAUoyG,EAAkBh/I,SAAS,GAE5E09I,GAAUx4H,KAAKjL,GAAK,IAIlC,CACHygI,KAAMA,EACNC,WAAYA,EAEpB,CAyCO,SAASO,GAAWJ,EAAoBR,GAC3C,IAAI3uH,EAAI,EACJC,EAAI4wH,GAA6Bx8I,OAAS,EAC1C2W,EAAU+P,KAAK8K,MAAMgrH,GAA6Bx8I,OAAS,GAE/D,GACQ86I,EAAqB0B,GAA6B7lI,GAAS2jI,GAAsBoC,mBACjF9wH,EAAIjV,EAEJgV,EAAIhV,EAGRA,EAAUgV,EAAIjF,KAAK8K,OAAO5F,EAAID,GAAK,SAC9BC,EAAID,EAAI,GAEjB,OAAImvH,GAAsB0B,GAA6B7wH,GAAG2uH,GAAsBoC,mBACrE/lI,EAAU,EAGdiV,EAAI,CACf,CAiCO,SAASqzH,GAAUl8I,EAAOu7I,EAAqBY,GAClD,IAAIC,EAAkBvF,GAAU0E,GAC5Bc,EAAmBd,EAAoBt+I,OAAS,EAChDq/I,EAAct8I,GAASq8I,EAEvBE,EAAc5F,GAAa32I,EADlBm8I,EAAaE,GAEtBphJ,EAOD,SAA2BuhJ,EAASC,GACvC,IAAIC,EAAUD,EAAQr5I,SAAS,GAAGnG,OAC9B0/I,EAAUH,EAAQp5I,SAAS,GAAGnG,OAC9B2rB,EAAI4zH,EAER,GAEIG,GADA/zH,GAAK6zH,GAAWE,EAAUD,GACdt5I,SAAS,GAAGnG,aAErB0/I,GAAWD,GAElB,OAAO9zH,CACX,CAnBiBg0H,CAAkBN,EAAaF,GAI5C,OAFAnhJ,EAASshJ,EAAc5F,GAAa17I,EAAQohJ,EAGhD,CAgBO,SAASQ,GAAY3lI,EAAKI,GAC7B,OAAOuW,SAAS3W,EAAIzX,OAAO6X,GAAM,GACrC,CAiBO,SAASwlI,GAAqBhC,EAAUvnF,GAC3C,IACI3qC,EACAC,EAFAmL,EAAS8mH,EAAS,GAGlBxjI,EAAM,EACNra,EAASs2D,EAAat2D,OAE1B,IAAK2rB,EAAI,EAAGC,EAAI,EAAGD,GAAK,EAAGA,IACb,IAANA,GACAiyH,GAAiBC,EAAU+B,GAAYtpF,EAAct2D,EAAS,EAAIqa,KAAQsR,EAAGC,GAIrF,IAAKD,EAAI,EAAGC,EAAI,EAAGA,GAAK,EAAGA,IACb,IAANA,GACAgyH,GAAiBC,EAAU+B,GAAYtpF,EAAct2D,EAAS,EAAIqa,KAAQsR,EAAGC,GAMrF,IAFAvR,EAAM,EAEDuR,EAAImL,EAAO/2B,OAAS,EAAG2rB,EAAI,EAAGC,GAAKmL,EAAO/2B,OAAS,EAAG4rB,IACvDgyH,GAAiBC,EAAU+B,GAAYtpF,EAAct2D,EAAS,EAAIqa,KAAQsR,EAAGC,GAKjF,IAFAgyH,GAAiBC,EAAU,EAAG9mH,EAAO/2B,OAAS,EAAG,GAE5C2rB,EAAIoL,EAAO/2B,OAAS,EAAG4rB,EAAI,EAAGD,EAAIoL,EAAO/2B,OAAQ2rB,IAClDiyH,GAAiBC,EAAU+B,GAAYtpF,EAAct2D,EAAS,EAAIqa,KAAQsR,EAAGC,EAErF,CAMO,SAASk0H,GAAsBjC,EAAU3D,GAW5C,IAVA,IAMI6F,EACAC,EACAj9I,EAPAk9I,EADSpC,EAAS,GACD79I,OAEjBmwC,EAAK8vG,EAAU,GACf7vG,EAAK6vG,EAAU,GAMV5lI,EAAM,EAAGA,EAAM6/H,EAAWl6I,OAAQqa,IACvC0lI,EAAWr5H,KAAK8K,MAAMnX,EAAM,GAC5B2lI,EAAM3lI,EAAM,EAGZujI,GAAiBC,EAFjB96I,EAAQ68I,GAAY1F,EAAYA,EAAWl6I,OAASqa,EAAM,GAXrD,EAakC0lI,EAAU5vG,EAAK6vG,GACtDpC,GAAiBC,EAAU96I,EAAOqtC,EAAK4vG,EAXlC,EAW4CD,EAEzD,CAEO,SAASG,GAAkBrC,EAAUxR,EAAS1gH,EAAGC,GAKpD,IAJA,IAEI7oB,EAFAvG,EAAO6vI,EAAQrsI,OAAS,EACxBA,EAASqsI,EAAQrsI,OAAS,EAGrBsR,EAAI,EAAGA,EAAI+6H,EAAQrsI,OAAQsR,IAChC,IAAK,IAAImhF,EAAInhF,EAAGmhF,EAAIj2F,EAAO8U,EAAGmhF,IAG1BmrD,GAAiBC,EAFjB96I,EAAQspI,EAAQ/6H,GAEkBqa,EAAI8mE,EAAG7mE,EAAIta,GAC7CssI,GAAiBC,EAAU96I,EAAO4oB,EAAIra,EAAGsa,EAAI6mE,GAC7CmrD,GAAiBC,EAAU96I,EAAO4oB,EAAI3rB,EAASyyF,EAAG7mE,EAAI5rB,EAASsR,GAC/DssI,GAAiBC,EAAU96I,EAAO4oB,EAAI3rB,EAASsR,EAAGsa,EAAI5rB,EAASyyF,EAG3E,CAEO,SAAS0tD,GAAmBtC,EAAUluC,EAAWhkF,EAAGC,GACvD,IAAIw0H,EAAQz0H,EACR00H,EAAQz0H,EACRmL,EAAS8mH,EAAS,GAEtB,GACID,GAAiBC,EAAU,EAAGuC,EAAOx0H,GACrCgyH,GAAiBC,EAAU,EAAGlyH,EAAG00H,GACjCD,GAASzwC,EAAU,GACnB0wC,GAAS1wC,EAAU,SAEhBywC,GAAS,GAAKA,EAAQrpH,EAAO/2B,OACxC,CAsHO,SAASsgJ,GAA4BjmI,EAAK80H,EAAUoR,EAAQC,EAAW1C,GAC1E3O,EAAS90H,GAAKmmI,IAAerR,EAAS90H,GAAKmmI,IAAc,EAAK1C,GAAO,IA5lBhD,KA8lBjB3O,EAAS90H,GAAKmmI,KACdD,EAAOlmI,IAAQ,GAEvB,CAEO,SAASomI,GAAsBpmI,EAAKkmI,EAAQG,EAAc5C,EAAK6C,EAAcH,GAC5EE,EAAarmI,GAAKmmI,KAAe1C,EACjC6C,EAAatmI,GAAKmmI,MAElBE,EAAarmI,GAAKmmI,GAAa1C,EAE3B6C,EAAatmI,GAAKmmI,IAAc,IAChCD,EAAOlmI,IAAQ,EAAIsmI,EAAatmI,GAAKmmI,GAAa,GAGtDG,EAAatmI,GAAKmmI,GAAa,EAEvC,CAEO,SAASI,GAA+BC,EAAa79H,GACxD,IAAI89H,EAAUp6H,KAAK8K,MAAOqvH,EAAc79H,EAAS,KAC7C+9H,EAAOD,EAAU,EACjB77F,EAAWv+B,KAAKC,IAAIm6H,EAAUC,EAAO,IACrCpsI,EAAO+R,KAAKC,IAAIm6H,EAAU,EAAIC,EAAO,IAGzC,OAFY,GAAKr6H,KAAK6N,IAAI0wB,EAAW,EAAGtwC,EAAO,EAGnD,CAUO,SAASqsI,GAAW3G,EAAaC,EAAsBrJ,GAC1D,IAAIgQ,EATD,SAAiChQ,GACpC,OAAIA,GAAYA,EAAStgH,cAAc1hB,QAAQ,UAAY,EAChD,IAAI+sI,GAGR,IAAI7B,EACf,CAGkB+G,CAAwBjQ,GAClCkQ,EAAiBF,EAAQ7G,kBAAkBC,EAAaC,GACxD3jI,EAAUwqI,EAAexqI,QACzByqI,EAAqB5E,GAA6B7lI,EAAU,GAAG2jI,GAE/D+G,EAzcD,SAAmBC,EAAYC,GAWlC,IAVA,IAGIC,EAEAC,EACAC,EACAC,EACAC,EARAC,EAAgB,EAChBC,EAAa,GACbC,EAAc,GAEdC,EAAgBT,EAA4BrwF,OAMvCO,EAAW,EAAGA,EAAWuwF,EAAchiJ,OAAQyxD,IAAY,CAChEiwF,EAAmBM,EAAcvwF,GAAU,GAE3C,IAAK,IAAIwwF,EAAW,EAAGA,EAAWP,EAAkBO,IAAY,CAC5DR,EAAsBO,EAAcvwF,GAAU,GAC9C+vF,EAAY,GACZG,EAAoB,GAEpB,IAAK,IAAIO,EAAc,EAAGA,GAAeT,EAAqBS,IAC1DN,EAAWN,EAAW10G,UAAUi1G,EAAeA,EAAgB,GAC/DL,EAAUxsI,KAAK4sI,GACfD,EAAkBF,EAAsBS,GAAetI,GAAUgI,GACjEC,GAAiB,EAGrBC,EAAW9sI,KAAKwsI,GAChBO,EAAY/sI,KAAKmpI,GAAuBwD,EACpCJ,EAA4B5E,wBACpC,CACJ,CACA,MAAO,CAACmF,EAAYC,EACxB,CAyaiBI,CAhkBV,SAAuBC,EAAmB1F,GAM7C,IALA,IAAI2F,EAAqC,EAArB3F,EAChB4F,EAAkB,EAClBC,EAAuB,EACvBrI,EAAakI,EAEVlI,EAAWl6I,OAASqiJ,GAAiBC,EAAkBxF,GAAW98I,QACrEk6I,GAAc4C,GAAWt6I,OAAO8/I,KAOpC,IAJIpI,EAAWl6I,OAAS,IAAM,IAC1Bk6I,GAAc,IAAIn/I,MAAM,EAAIm/I,EAAWl6I,OAAS,GAAGs3B,KAAK,MAGrD4iH,EAAWl6I,OAASqiJ,GACvBnI,GAAcoD,GAAiBiF,GAC/BA,GAAwB,EAG5B,OAAOrI,CACX,CA2iBqBsI,CAAcrB,EAAejH,WAAYkH,EAAmB1E,oBAC1C0E,GAC/BvD,EA1QD,SAAsBlnI,GAIzB,IAHA,IAAIknI,EAAW,GACXoC,EAAU,GAAK,EAAItpI,EAEdrF,EAAI,EAAGA,EAAIisI,GAAsBv9I,OAAQsR,IAAK,CACnDusI,EAASvsI,GAAK,IAAIvW,MAAMklJ,GAExB,IAAK,IAAIxtD,EAAI,EAAGA,EAAIwtD,EAASxtD,IACzBorD,EAASvsI,GAAGmhF,GAAK,IAAI13F,MAAMklJ,EAEnC,CAEA,OAAOpC,CACX,CA6PmB4E,CAAa9rI,IAnKzB,SAA2BknI,GAC9B,IAAIoC,EAAUpC,EAAS,GAAG79I,OAE1BkgJ,GAAkBrC,EAAUV,GAAe,EAAG,GAC9CgD,GAAmBtC,EAAU,EAAE,GAAI,GAAI,EAAG,GAC1CqC,GAAkBrC,EAAUV,GAAe8C,EAAU,EAAG,GACxDE,GAAmBtC,EAAU,CAAC,GAAI,GAAIoC,EAAU,EAAG,GACnDC,GAAkBrC,EAAUV,GAAe,EAAG8C,EAAU,GACxDE,GAAmBtC,EAAU,EAAE,EAAG,GAAI,EAAGoC,EAAU,EACvD,CA4JIyC,CAAkB7E,GA1Jf,SAA8BA,EAAUlnI,GAC3C,KAAIA,EAAU,GAAd,CAIA,IAIIgsI,EACA/vG,EALA7b,EAAS8mH,EAAS,GAClBoC,EAAUlpH,EAAO/2B,OACjBwvF,EAAc9oE,KAAK8K,MAAM7a,EAAU,GACnCw6B,EAAS,CAAC,GAGV92B,EAAM,EAUV,KARKsoI,EAAgBzF,GAAwCvmI,IACzDi8B,GAAYqtG,EAAU,GAAK0C,GAAiBnzD,EAE5CmzD,EAAgB/vG,GAAYqtG,EAAU,KAAOzwD,EAAc,GAG/Dr+C,EAAOn8B,KAAKm8B,EAAO92B,KAASsoI,GAEpBxxG,EAAO92B,GAAOu4B,EAAYqtG,GAC9B9uG,EAAOn8B,KAAKm8B,EAAO92B,KAASu4B,GAGhC,IAAK,IAAIthC,EAAI,EAAGA,EAAI6/B,EAAOnxC,OAAQsR,IAC/B,IAAK,IAAImhF,EAAI,EAAGA,EAAIthD,EAAOnxC,OAAQyyF,SACMp5F,IAAjC09B,EAAOoa,EAAO7/B,IAAI6/B,EAAOshD,KACzBytD,GAAkBrC,EAAUT,GAAkBjsG,EAAO7/B,GAAK,EAAG6/B,EAAOshD,GAAK,EAzBrF,CA6BJ,CA2HImwD,CAAqB/E,EAAUlnI,GAzH5B,SAA4BknI,GAM/B,IALA,IAEI96I,EAAQ,EACRk9I,EAAUpC,EAAS,GAAG79I,OAEjBsR,EAAI,EAAGA,EAAI2uI,EAAU,EAAG3uI,IAC7BssI,GAAiBC,EAAU96I,EANrB,EAMiCuO,GACvCssI,GAAiBC,EAAU96I,EAAOuO,EANzB,GAOTvO,GAAS,CAEjB,CA+GI8/I,CAAmBhF,GAEflnI,GAAW,GACXmpI,GAAsBjC,EAAUnE,GAAa,EAAG,KAGpDmG,GAAqBhC,EAAUnE,GAAa,EAAG,KA1mB5C,SAAkBmE,EAAUwD,GAM/B,IALA,IACIyB,EACAZ,EACAa,EAHAC,EAAc,IAAInJ,GAAgBgE,EAAS,IAKtCoE,EAAW,EAAGA,EAAWZ,EAAOrhJ,OAAQiiJ,IAI7C,IAHAa,EAAQzB,EAAOY,GACfC,EAAc,EAEPY,EAAM9iJ,OAAS,GAAG,CACrB,IAAK,IAAIsR,EAAI,EAAGA,EAAIwxI,EAAM9iJ,OAAQsR,IAC9B,IAAK,IAAImhF,EAAI,EAAGA,EAAI,EAAGA,IACnBswD,EAAOC,EAAYjJ,cACnBgE,GAAaF,EAAUiF,EAAMxxI,GAAG4wI,GAAa1/I,OAAOiwF,GAAIswD,EAAKjuE,IAAKiuE,EAAK1oB,QAM/E,IAFA6nB,IAEOY,EAAM,IAAMZ,IAAgBY,EAAM,GAAG9iJ,QACxC8iJ,EAAM92G,OAAO,EAAG,EAExB,CAGJ,KAAQ+2G,EAAOC,EAAYhJ,wBACvB+D,GAAaF,EAAU,EAAGkF,EAAKjuE,IAAKiuE,EAAK1oB,OAEjD,CA8kBI4oB,CAASpF,EAAUwD,GAEnB,IAAIp3E,EAtHD,SAA2B4zE,GAC9B,IAKI9mH,EACAzlB,EANAivI,EAAS,GACTG,EAAe,GACfG,EAAc,GACd1R,EAAW,GACX+T,EAAmB,GAKnBC,EAAgBtF,EAAS,GAAG79I,OAEhC,IAAKsR,EAAI,EAAGA,EAAIusI,EAAS79I,OAAQsR,IAC7BivI,EAAOjvI,GAAK,EACZuvI,EAAYvvI,GAAK,EACjB4xI,EAAiB5xI,GAAK,CAAC,EAAG,GAC1B69H,EAAS79H,GAAK,CAAC,EAAG,GAClBovI,EAAapvI,GAAK,GAGtB,IAAK,IAAI8xI,EAAW,EAAGA,EAAWD,EAAeC,IAC7C,IAAK,IAAIC,EAAc,EAAGA,EAAcF,EAAeE,IACnD,IAAK,IAAIC,EAAc,EAAGA,EAAczF,EAAS79I,OAAQsjJ,IACrDvsH,EAAS8mH,EAASyF,GAClBzC,EAAYyC,IAAgB1yH,SAASmG,EAAOqsH,GAAUC,GAAc,IAEhE3C,EAAa4C,GAlBnB,KAkByCvsH,EAAOqsH,GAAUC,IACpDD,EAAW,EAAID,GACfE,EAAc,GAAK,GACnBtsH,EAAOqsH,EAAW,GAAGC,KAAiB3C,EAAa4C,GArBzD,IAsBMvsH,EAAOqsH,EAAW,GAAGC,EAAc,KAAO3C,EAAa4C,GAtB7D,KAuBM/C,EAAO+C,IAAgB,GAG3BhD,GAA4BgD,EAAanU,EAAUoR,EA1BrD,EA0BkExpH,EAAOqsH,GAAUC,IACjF/C,GAA4BgD,EAAanU,EAAUoR,EA1BlD,EA0BkExpH,EAAOssH,GAAaD,IACvF3C,GAAsB6C,EAAa/C,EAAQG,EAAc3pH,EAAOqsH,GAAUC,GAAcH,EA5B1F,GA6BEzC,GAAsB6C,EAAa/C,EAAQG,EAAc3pH,EAAOssH,GAAaD,GAAWF,EA5BvF,GAiCb,IACIj5E,EADAjnD,EAAQmgI,EAAgBA,EAExB5uH,EAAMxK,OAAOD,UAEjB,IAAKxY,EAAI,EAAGA,EAAIivI,EAAOvgJ,OAAQsR,IAC3BivI,EAAOjvI,IAAMsvI,GAA+BC,EAAYvvI,GAAI0R,GAExDu9H,EAAOjvI,GAAKijB,IACZA,EAAMgsH,EAAOjvI,GACb24D,EAAS34D,GAIjB,OAAO24D,CACX,CA8DiBs5E,CAAkB1F,GAC3B2F,EAAgB3F,EAAS5zE,GAS7B,OAPItzD,GAAW,GACXmpI,GAAsB,CAAC0D,GA5OxB,SAAkC7sI,GACrC,OAAOsoI,GAAUtoI,EAlbY,gBAkbyB,GAC1D,CA0O+C8sI,CAAyB9sI,IAIpEkpI,GAAqB,CAAC2D,GAhVnB,SAAiCz8H,GACpC,IACI28H,EACA1lJ,EAAS,GAEb,GAAqB,IAJF47I,GAAU7yH,GAKzB,MAAO,kBAGX28H,EAAgBzE,GAAUrF,GAAU7yH,GA3VR,cA2V4C,IAExE,IAAK,IAAIzV,EAAI,EAAGA,EAAIoyI,EAAc1jJ,OAAQsR,IACtCtT,GAAU0lJ,EAAclhJ,OAAO8O,GA/Vf,kBA+VsC9O,OAAO8O,GAGjE,OAAOtT,CACX,CAgU0C2lJ,CADnBtG,GAAwB/C,GAAwBZ,GAAazvE,EAAQ,KAGjFu5E,CACX,EAnkBO,WACH,IAAIxlJ,EACAgxB,EAEJ,IAAKA,EAAQ,EAAGA,EAAQ,IAAKA,KACzBhxB,EAAwC,EAA/Bi/I,GAAkBjuH,EAAQ,IACtB,MACThxB,GAAkB,KAGtBi/I,GAAkBjuH,GAAShxB,EAC3Bg/I,GAAYh/I,GAAUgxB,EAG1BhxB,EAAyC,EAA/Bi/I,GAAkBjuH,EAAQ,GAAU,IAC9CiuH,GAAkBjuH,GAAShxB,EAC3Bi/I,IAAmB,GAAK,CAC5B,CAyCA2G,GAZO,WAGH,IAFA,IAESvpI,EAAM,EAAGA,GAFqB,GAEoBA,IAAO,CAC9D,IAAIwpI,EAAkBlG,GAAqBtjI,EAAM,GAC7CypI,EAAmB,CAACzpI,EAAK,GAE7BsjI,GAAqBtjI,GAAO4jI,GAAoB4F,EAAiBC,EACrE,CACJ,CAIAC,GQnKA,IAAIn9H,GAAQF,KAAKE,MACbo9H,GAAe,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,GAAI,GAAI,CAAC,GAAI,GAAI,CAAC,EAAG,IACtGC,GAAgB,CAAC,CAAC,EAAG,GAAI,CAAC,EAAG,GAAI,CAAC,EAAG,IAErCC,GACc,IADdA,GAGgC,IAHhCA,GAIoB,OAJpBA,GAK2B,OAL3BA,GAMoB,EANpBA,GAOmB,EAGnBC,GAAU,SAAUttH,GACpB,SAASstH,EAAO/qJ,EAAS8hB,EAASo9H,QACR,IAAjBA,IAA0BA,EAAe/uG,IAE9C1S,EAAMjuB,KAAKhD,MAEXA,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,GAC5CtV,KAAKxM,QAAUA,EACfwM,KAAKnH,QAAUmH,KAAKxM,QACpBwM,KAAKiwG,QAAUyiC,EAEf1yI,KAAK0oH,eACL1oH,KAAK+oH,eAEL/oH,KAAKo0H,WAAW9+G,EACpB,CAqVA,OAnVK2b,IAAQstH,EAAOxzI,UAAYkmB,GAChCstH,EAAOv6I,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACjDu6I,EAAOv6I,UAAUqH,YAAckzI,EAE/BA,EAAOv6I,UAAUs/C,QAAU,WACvBtjD,KAAK6qH,iBACT,EAEA0zB,EAAOv6I,UAAU0kH,aAAe,WAC5BlgH,EAASxI,KAAKxM,QAAS,WAC3B,EAEA+qJ,EAAOv6I,UAAU+kH,aAAe,WAC5B,IACIzzG,EADMtV,KACQsV,QACdm5F,EAFMzuG,KAEQyuG,QAEbA,GAAWA,EAAQn5F,QAAQniB,OAASmiB,EAAQs1G,WAC7C5qH,KAAK6qH,kBACL7qH,KAAK4yI,sBACL5yI,KAAKyuG,QAAUzuG,KAAK6yI,iBAE5B,EAEA0L,EAAOv6I,UAAU6uI,eAAiB,WAC9B,OAAO1yF,GAAAA,OAAoBngD,KAAK47H,eAAgB,CAC5CzoI,KAAM6M,KAAKsV,QAAQs1G,UAE3B,EAEA2zB,EAAOv6I,UAAU6mH,gBAAkB,WAC3B7qH,KAAKyuG,UACLzuG,KAAKyuG,QAAQnrD,UACbtjD,KAAKyuG,QAAU,KACfzuG,KAAK8yI,yBAEb,EAEAyL,EAAOv6I,UAAU4uI,oBAAsB,WAC9B5yI,KAAK47H,iBACN57H,KAAK47H,eAAiB9iI,SAASomB,cAAc,OAC7Clf,KAAK47H,eAAenlI,MAAMomD,SAAW,WACrC78C,KAAKxM,QAAQgsB,YAAYxf,KAAK47H,gBAEtC,EAEA2iB,EAAOv6I,UAAU8uI,uBAAyB,WAClC9yI,KAAK47H,gBAAkB57H,KAAK47H,eAAe9mG,aAC3C90B,KAAK47H,eAAe9mG,WAAWpV,YAAY1f,KAAK47H,gBAChD57H,KAAK47H,eAAiB,KAE9B,EAEA2iB,EAAOv6I,UAAUkuF,OAAS,WACtB,IAAIt7F,EAAOoJ,KAAK88H,WAEhB98H,KAAKyuG,QAAQxrE,QAEbjjC,KAAKyuG,QAAQ7lE,QAAQ,CACjBp0C,MAAOoC,EACPnC,OAAQmC,IAGZoJ,KAAKokD,eAELpkD,KAAKyuG,QAAQtuD,KAAKngD,KAAKykD,OAC3B,EAEA85F,EAAOv6I,UAAUglC,QAAU,WACvB,IAAIx1C,EAAUwM,KAAKxM,QACfgrJ,EAAehrJ,EAAQw+I,YACvByM,EAAgBjrJ,EAAQy+I,aACxBr7I,EAAO,CAAEpC,MAAO,EAAGC,OAAQ,GAU/B,OARI+pJ,EAAe,IACf5nJ,EAAKpC,MAAQgqJ,GAGbC,IACA7nJ,EAAKnC,OAASgqJ,GAGX7nJ,CACX,EAEA2nJ,EAAOv6I,UAAUq9F,QAAU,WACvBrhG,KAAKkyF,QACT,EAEAqsD,EAAOv6I,UAAUogD,aAAe,WAC5BpkD,KAAKykD,OAASzkD,KAAK+yI,SACvB,EAEAwL,EAAOv6I,UAAUw8F,aAAe,WAC5B,OAAOxgG,KAAK+yI,SAChB,EAEAwL,EAAOv6I,UAAU+uI,QAAU,WACvB,IACI51E,EAIAuhF,EACAvtH,EACAv6B,EAEA+nJ,EATAxhJ,EAAQ6C,KAAK65G,OAEbhzD,EAAS7mD,KAAKsV,QAAQuxC,QAAU,CAAC,EACjCxb,EAAUrrC,KAAKsV,QAAQ+1B,SAAW,EAClCub,EAAcC,EAAOryD,OAAS,EAOlCqyD,EAAOryD,MAAQoyD,EAEf,IAAInC,EAAS,IAAItE,GAEjB,IACQhjD,IACAg0B,EAASiqH,GAAWj+I,EAAO6C,KAAKsV,QAAQspI,gBAAiB5+I,KAAKsV,QAAQ+1H,UAEtEsT,GADA/nJ,EAAOoJ,KAAK88H,YACS,GAAKl2E,EAAcvb,GACxC8xB,EAAWn9D,KAAK6+I,mBAAmBF,EAAaxtH,EAAO/2B,QAEvDskJ,EAAgB93F,EAAcvb,GAAWszG,EAD9BxtH,EAAO/2B,OAAS+iE,GACwC,EAEnE1Y,EAAO54B,OAAO7rB,KAAK8+I,kBAAkBloJ,EAAMiwD,IAC3CpC,EAAO54B,OAAO7rB,KAAK++I,cAAc5tH,EAAQgsC,EAAUuhF,IAE/C1+I,KAAKg/I,iBACLv6F,EAAO54B,OAAO7rB,KAAKi/I,YAAYroJ,EAAMumE,IAC9Bn9D,KAAKk/I,YACZz6F,EAAO54B,OAAO7rB,KAAKm/I,iBAAiBvoJ,EAAMumE,IAKtD,CAFE,MAAOv9D,GACLI,KAAKiwG,QAAQrwG,EACjB,CAEA,OAAO6kD,CACX,EAEA85F,EAAOv6I,UAAUi7I,YAAc,SAAsBG,EAAQjiF,GACzD,IACIkiF,EACAl6G,EAASnkB,GAAMo+H,EAAS,GACxBE,EAAWt/I,KAAKu/I,aAAapiF,EAAWmhF,IACxCkB,EAAUx/I,KAAKsV,QAAQgxC,QAAQm5F,SAC/B5iG,EAAW,CACX92B,EAAGof,EAASm6G,EAAS9qJ,MAAQ,EAC7BwxB,EAAGmf,EAASm6G,EAAS7qJ,OAAS,GAUlC,OAPA4qJ,EAAY,IAAIpzG,GACZ,IAAIA,GAAW4Q,EAAS92B,EAAG82B,EAAS72B,GACpC,IAAIimB,GAAUqzG,EAAS9qJ,MAAO8qJ,EAAS7qJ,SAGnC,IAAI0rD,GAAWq/F,EAASH,EAGpC,EAEAd,EAAOv6I,UAAUm7I,iBAAmB,SAA2BC,EAAQjiF,GACnE,IAAImiF,EAAWt/I,KAAKu/I,aAAapiF,EAAWmhF,IAExCoB,GADJJ,EAAWx+H,KAAK0K,IAAI8zH,EAAS9qJ,MAAO8qJ,EAAS7qJ,SAClB,EACvBkrJ,EAAcD,EAAY,EAC1Bv6G,EAASi6G,EAAS,EAClB71H,EAAQ,CAAC,EACTk7B,EAAS,IAAItE,GAYjB,OAVA52B,EAAMxD,EAAIwD,EAAMvD,EAAIlF,KAAK6K,KAAKwZ,EAASg4B,EAAWmiF,EAAW,GAC7D76F,EAAO54B,OAAO7rB,KAAK4/I,aAAar2H,EAAOzI,KAAK6K,KAAK2zH,EAAsB,EAAXniF,GAAekhF,GAAe,SAE1F90H,EAAMxD,EAAIwD,EAAMvD,EAAImf,EAASm6G,EAAW,EACxC76F,EAAO54B,OAAO7rB,KAAK4/I,aAAar2H,EAAO+1H,EAAUjB,GAAer+I,KAAKsV,QAAQkZ,QAE7EjF,EAAMxD,EAAIof,EAASw6G,EAAcL,EAAW,EAC5C/1H,EAAMvD,EAAImf,EAASw6G,EAAcD,EAAYJ,EAAW,EACxD76F,EAAO54B,OAAO7rB,KAAK4/I,aAAar2H,EAAOm2H,EAAWtB,GAAc,SAEzD35F,CACX,EAEA85F,EAAOv6I,UAAU47I,aAAe,SAAuBr2H,EAAOq5B,EAAM6jF,EAASj4G,GACzE,IAAInJ,EAAO,IAAI86B,GAAe,CAC1BpK,KAAM,CACFvnB,MAAOA,GAEXjJ,OAAQ,OAGZF,EAAK+4B,OAAO70B,EAAMxD,EAAGwD,EAAMvD,GAE3B,IAAK,IAAIta,EAAI,EAAGA,EAAI+6H,EAAQrsI,OAAQsR,IAChC2Z,EAAK03B,OAAOxzB,EAAMxD,EAAI68B,EAAO6jF,EAAQ/6H,GAAG,GAAI6d,EAAMvD,EAAI48B,EAAO6jF,EAAQ/6H,GAAG,IAK5E,OAFA2Z,EAAKkpB,QAEElpB,CACX,EAEAk5H,EAAOv6I,UAAU84H,SAAW,WACxB,IAAIlmI,EAEJ,GAAIoJ,KAAKsV,QAAQ1e,KACbA,EAAOo0B,SAAShrB,KAAKsV,QAAQ1e,KAAM,QAChC,CACH,IACI85B,EAAcohH,GADJ9xI,KAAKxM,QACoBwM,KAAKsV,QAAQs1G,UAChDj8F,EAAM7N,KAAK6N,IAAI+B,EAAYl8B,MAAOk8B,EAAYj8B,QAG9CmC,EADA+3B,EAAM,EACCA,EAEA2vH,EAEf,CAEA,OAAO1nJ,CACX,EAEA2nJ,EAAOv6I,UAAU66I,mBAAqB,SAA6BjoJ,EAAMipJ,GACrE,IAAI1iF,EAAWr8C,KAAK8K,MAAMh1B,EAAOipJ,GAEjC,GAAI1iF,EAAWmhF,GAAmC,CAC9C,IAAIv0D,EAAUjpE,KAAK6K,KAAKk0H,EAAavB,IACrCt+I,KAAKiwG,QAAQ,IAAI7vG,MACZ,sDAAwDxJ,EAAO,8BAAgCmzF,EAAU,OAElH,MAAW5sB,EAAW0iF,GAAcjpJ,GAChCumE,EAAW,GAAKmhF,IAChBnhF,IAGJ,OAAOA,CACX,EAEAohF,EAAOv6I,UAAU+6I,cAAgB,SAAwB5tH,EAAQgsC,EAAUuhF,GAQvE,IAPA,IAAIr5H,EAAO,IAAI86B,GAAe,CAC1BpK,KAAM,CACFvnB,MAAOxuB,KAAKsV,QAAQkZ,OAExBjJ,OAAQ,OAGH2pD,EAAM,EAAGA,EAAM/9C,EAAO/2B,OAAQ80E,IAInC,IAHA,IAAIlpD,EAAI04H,EAAgBxvE,EAAM/R,EAC1Bs3D,EAAS,EAENA,EAAStjG,EAAO/2B,QAAQ,CAC3B,KAA+B,IAAxB+2B,EAAO+9C,GAAKulD,IAAiBA,EAAStjG,EAAO/2B,QAChDq6H,IAGJ,GAAIA,EAAStjG,EAAO/2B,OAAQ,CAExB,IADA,IAAI2rB,EAAI0uG,EACuB,IAAxBtjG,EAAO+9C,GAAKulD,IACfA,IAGJ,IAAInqF,EAAKtpB,GAAM09H,EAAgB34H,EAAIo3C,GAC/B5yB,EAAKvpB,GAAMgF,GACXwkB,EAAKxpB,GAAM09H,EAAgBjqB,EAASt3D,GACpC1yB,EAAKzpB,GAAMgF,EAAIm3C,GAEnB93C,EAAK+4B,OAAO9T,EAAIC,GACXwS,OAAOzS,EAAIG,GACXsS,OAAOvS,EAAIC,GACXsS,OAAOvS,EAAID,GACXgE,OACT,CACJ,CAGJ,OAAOlpB,CACX,EAEAk5H,EAAOv6I,UAAU86I,kBAAoB,SAA4BloJ,EAAMiwD,GACnE,IAAI52B,EAAM,IAAIoa,GAAI,EAAG,EAAGzzC,EAAMA,GAAM00C,MAAMub,EAAOryD,MAAQ,GAWzD,OAViB2rD,GAAAA,SAAmBlwB,EAAI+b,SAAU,CAC9C+J,KAAM,CACFvnB,MAAOxuB,KAAKsV,QAAQ6xC,YAExB5hC,OAAQ,CACJiJ,MAAOq4B,EAAOr4B,MACdh6B,MAAOqyD,EAAOryD,QAK1B,EAEA+pJ,EAAOv6I,UAAUowH,WAAa,SAAqB9+G,GAC/C,IAAIwqI,EAAaxqI,GAAW,CAAC,EAC7BtV,KAAKsV,QAAUuxH,GAAO7mI,KAAKsV,QAASwqI,QAEdrsJ,IAAlB6hB,EAAQnY,QACR6C,KAAK65G,OAAS1uG,OAAOnL,KAAKsV,QAAQnY,QAGtC6C,KAAK+oH,eACL/oH,KAAKkyF,QACT,EAEAqsD,EAAOv6I,UAAU7G,MAAQ,SAAgBq2I,GACrC,QAAgB//I,IAAZ+/I,EACA,OAAOxzI,KAAK65G,OAGhB75G,KAAK65G,OAAS1uG,OAAOqoI,GAErBxzI,KAAKkyF,QACT,EAEAqsD,EAAOv6I,UAAUg7I,eAAiB,WAC9B,OAAO/tF,QAAQjxD,KAAKsV,QAAQgxC,QAAQm5F,SACxC,EAEAlB,EAAOv6I,UAAUk7I,SAAW,WACxB,MAAqC,UAA9Bl/I,KAAKsV,QAAQgxC,QAAQnzD,IAChC,EAEAorJ,EAAOv6I,UAAUu7I,aAAe,SAAuBQ,GACnD,IAAIvrJ,EAAQwL,KAAKsV,QAAQgxC,QAAQ9xD,MAC7BC,EAASuL,KAAKsV,QAAQgxC,QAAQ7xD,OAUlC,OARKD,GAAUC,EAEJD,IAAUC,EACjBA,EAASD,GACDA,GAASC,IACjBD,EAAQC,GAJRD,EAAQC,EAASsrJ,EAOd,CACHvrJ,MAAOA,EACPC,OAAQA,EAEhB,EAEO8pJ,CACX,CArWc,CAqWZttH,IAEF0E,GAAkB4oH,GAAQ,CACtB5tI,KAAM,SACNi6G,SAAU,MACVygB,SAAU,aACVluI,MAAO,GACPyhJ,gBAAiBN,GACjBn3F,WAAYm3F,GACZ9vH,MAAO8vH,GACP1nJ,KAAM,GACNy0C,QAAS,EACTwb,OAAQ,CACJr4B,MAAO,GACPh6B,MAAO,GAEX8xD,QAAS,CACLnzD,KAAM,QACNssJ,SAAU,GACVjrJ,MAAO,EACPC,OAAQ,KCnYhB,ICVWurJ,GAAS,CAChBC,MAZQ,CACRpxH,EAAG,QACHjkB,EAAG,kBACHyR,EAAG,qBACHrpB,EAAG,qBCOP,SAASktJ,GAAS/iJ,GACd,OAAOA,EAAQA,CACnB,CAGA,IAAIgjJ,GAAOr/H,KACPC,GAAMo/H,GAAKp/H,IACXq/H,GAAOD,GAAKC,KACZrxG,GAAQoxG,GAAKpxG,MACbjd,GAAMquH,GAAKruH,IACXC,GAAMouH,GAAKpuH,IACX4M,GAAMwhH,GAAKxhH,IAEJ0hH,GAAY,SAAUpvH,GAC7B,SAASovH,EAASC,EAAKC,GACnBtvH,EAAMjuB,KAAKhD,MAEXA,KAAKmmI,iBAEoB,IAArBp+H,UAAU3N,QACV4F,KAAKsgJ,IAAMA,EAAI,GACftgJ,KAAKugJ,IAAMD,EAAI,KAEftgJ,KAAKsgJ,IAAMA,EACXtgJ,KAAKugJ,IAAMA,EAEnB,CAgKA,OA9JKtvH,IAAQovH,EAASt1I,UAAYkmB,GAClCovH,EAASr8I,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnDq8I,EAASr8I,UAAUqH,YAAcg1I,EAEjCA,EAASr8I,UAAUmiI,eAAiB,WAChCp/G,GAAW/mB,KAAM,CACbwgJ,oBAAqB,IACrBC,qBAAsB,MACtBC,mBAAoB,EACpBC,OAAQ,gBAEhB,EAEAN,EAASr8I,UAAUwtB,QAAU,WACzB,MAAO,CACHxxB,KAAKsgJ,IACLtgJ,KAAKugJ,IAEb,EAEAF,EAASr8I,UAAUutB,OAAS,SAAiBqvH,GACzC,OAAOA,GAAOA,EAAIN,MAAQtgJ,KAAKsgJ,KAAOM,EAAIL,MAAQvgJ,KAAKugJ,GAC3D,EAEAF,EAASr8I,UAAU6iB,MAAQ,WACvB,OAAO,IAAIw5H,EAASrgJ,KAAKsgJ,IAAKtgJ,KAAKugJ,IACvC,EAEAF,EAASr8I,UAAUgd,MAAQ,SAAkBmI,GAGzC,OAFAnpB,KAAKugJ,IAAMv/H,GAAMhhB,KAAKugJ,IAAKp3H,GAC3BnpB,KAAKsgJ,IAAMt/H,GAAMhhB,KAAKsgJ,IAAKn3H,GACpBnpB,IACX,EAEAqgJ,EAASr8I,UAAU0mC,KAAO,WAGtB,OAFA1qC,KAAKugJ,IAAMvgJ,KAAKugJ,IAAM,IACtBvgJ,KAAKsgJ,IAAMtgJ,KAAKsgJ,IAAM,GACftgJ,IACX,EAEAqgJ,EAASr8I,UAAU0hC,WAAa,SAAqBm7G,EAAMC,GACvD,OAAO9gJ,KAAK+gJ,cAAcF,EAAMC,GAAO9zG,QAC3C,EAEAqzG,EAASr8I,UAAUuiB,YAAc,SAAsBymB,EAAUg0G,EAAgBC,GAC7E,IAAIC,EAAU3xH,GAAIyxH,GACdF,EAAQG,GAAgBjB,GAAOC,MAC/BkB,EAAU5xH,GAAIvvB,KAAKsgJ,KACnBc,EAAU7xH,GAAIvvB,KAAKugJ,KACnBc,EAAOr0G,EAAW8zG,EAAMjyH,EACxByxH,EAAMH,GAAKt+F,KAAK9vB,GAAIovH,GAAWrvH,GAAIuvH,GAAQvvH,GAAIqvH,GAAWpvH,GAAIsvH,GAAQvvH,GAAIovH,IAC1EX,EAAMa,EAAUryG,GAAMhd,GAAImvH,GAAWnvH,GAAIsvH,GAAQvvH,GAAIqvH,GAAUrvH,GAAIuvH,GAAQtvH,GAAIovH,GAAWpvH,GAAIuuH,IAElG,OAAO,IAAID,EAASrzH,GAAIszH,GAAMtzH,GAAIuzH,GACtC,EAEAF,EAASr8I,UAAU+8I,cAAgB,SAAwBO,EAAaL,GACpE,IAEIJ,EAAOR,EAAS/0I,OAAOu1I,GACvBC,EAAQG,GAAgBjB,GAAOC,MAEnC,IAAKY,GAAQ7gJ,KAAK6mB,QAAQ7F,MAAM,GAAGuQ,OAAOsvH,EAAKh6H,QAAQ7F,MAAM,IACzD,MAAO,CACHgsB,SAAU,EACVu0G,YAAa,EACbC,UAAW,GA8BnB,IAtBA,IAWIC,EAGAC,EACAC,EACAC,EACAC,EACAC,EACAC,EACAC,EApBAnzH,EAAIiyH,EAAMjyH,EACVjkB,EAAIk2I,EAAMl2I,EACVyR,EAAIykI,EAAMzkI,EACVw6H,EAAItnH,GAAIsxH,EAAKN,IAAMvgJ,KAAKugJ,KACxB0B,EAAK7B,IAAM,EAAI/jI,GAAKsiB,GAAIpP,GAAIvvB,KAAKsgJ,OACjC4B,EAAQnwH,GAAIkwH,GACZE,EAAQrwH,GAAImwH,GACZG,EAAKhC,IAAM,EAAI/jI,GAAKsiB,GAAIpP,GAAIsxH,EAAKP,OACjC+B,EAAQtwH,GAAIqwH,GACZE,EAAQxwH,GAAIswH,GACZG,EAAS1L,EAETnrI,EAAI1L,KAAKwgJ,oBACTgC,GAAY,GASRA,GAAa92I,KAAM,GAAG,CAC1Bg2I,EAAY3vH,GAAIwwH,GAChBZ,EAAY7vH,GAAIywH,GAChBX,EAAOzB,GAAK3/G,KAAK0/G,GAASoC,EAAQZ,GAAaxB,GAASiC,EAAQE,EAAQH,EAAQI,EAAQX,IAExFK,EAAQjzG,GAAM6yG,EADdE,EAAOI,EAAQG,EAAQF,EAAQG,EAAQX,GAGvC,IAAIc,EAAON,EAAQG,EAAQZ,EAAYE,EAEvCG,EAAS,EAEK,KAHdF,EAAQ,EAAI3B,GAASuC,MAIjBV,EAASD,EAAO,EAAII,EAAQG,EAAQR,GAGxCJ,EAAac,EACb,IAAIzV,EAAIzwH,EAAI,GAAKwlI,GAAS,EAAIxlI,GAAK,EAAI,EAAIwlI,IAC3CU,EAAS1L,GAAK,EAAI/J,GAAKzwH,EAAIomI,GAAQT,EAAQlV,EAAI8U,GAAQG,EAASjV,EAAIgV,GAAa,EAAI5B,GAAS6B,GAAjB,KAC7ES,EAAYzhI,GAAIwhI,EAASd,IAzDhBzhJ,KAyDsCygJ,oBACnD,CAEA,IAAIiC,EAAKb,GAAS3B,GAASrxH,GAAKqxH,GAASt1I,IAAMs1I,GAASt1I,GACpD8hI,EAAI,EAAIgW,EAAK,OAAS,KAAOA,GAAaA,GAAM,IAAM,IAAMA,GAAxB,MACpC9V,EAAI8V,EAAK,MAAQ,IAAMA,GAAaA,GAAM,GAAK,GAAKA,GAAtB,MAC9BC,EAAS/V,EAAIgV,GAAQG,EAASnV,EAAI,GAAKkV,GAAa,EAAI5B,GAAS6B,GAAjB,GAA4BnV,EAAI,EAAImV,GAAe,EAAI7B,GAAS0B,GAAjB,IAAgC,EAAI1B,GAAS6B,GAAjB,KAE3HR,EAAcxyG,GAAMuzG,EAAQZ,EAAWS,EAAQE,EAAQH,EAAQI,EAAQX,GACvEH,EAAYzyG,GAAMozG,EAAQT,GAAYQ,EAAQI,EAAQH,EAAQE,EAAQV,GAE1E,MAAO,CACH30G,SAAUhsB,GAAMpW,EAAI8hI,GAAKsV,EAAQW,GAAS3iJ,KAAK0gJ,oBAC/Ca,YAAav0H,GAAIu0H,GACjBC,UAAWx0H,GAAIw0H,GAEvB,EAGAnB,EAASr8I,UAAUzD,SAAW,WAE1B,OAAO4K,OAAOnL,KAAKsgJ,KAAO,IAAMn1I,OAAOnL,KAAKugJ,IAChD,EAEAF,EAASuC,WAAa,SAAqBC,GACvC,OAAO,IAAIxC,EAASwC,EAAU,GAAIA,EAAU,GAChD,EAEAxC,EAASyC,WAAa,SAAqBD,GACvC,OAAO,IAAIxC,EAASwC,EAAU,GAAIA,EAAU,GAChD,EAEAxC,EAAS/0I,OAAS,SAAiBujB,EAAGjkB,GAClC,GAAIua,GAAQ0J,GACR,OAAIA,aAAawxH,EACNxxH,EAAEhI,QACmB,IAArB9e,UAAU3N,QAA6B,IAAby0B,EAAEz0B,OAC5BimJ,EAASyC,WAAWj0H,GAGxB,IAAIwxH,EAASxxH,EAAGjkB,EAE/B,EAEOy1I,CACX,CA9KuB,CA8KrBpvH,IClLEkvH,GAAOr/H,KACPs/H,GAAOD,GAAKC,KACZzoI,GAAMwoI,GAAKxoI,IACX0R,GAAM82H,GAAK92H,IACX0I,GAAMouH,GAAKpuH,IACXmD,GAAMirH,GAAKjrH,IACXyJ,GAAMwhH,GAAKxhH,IACXsG,GAAQ9oB,GAER0Q,GAAKszH,GAAKtzH,GACVwzB,GAAWxzB,GAAK,EAChBk2H,GAAWl2H,GAAK,EAChBD,GAAaC,GAAK,IAElBozH,GAAQD,GAAOC,MAGR+C,GAAY,SAAU/xH,GAC7B,SAAS+xH,EAAS1tI,GACd2b,EAAMjuB,KAAKhD,MACXA,KAAKmmI,iBACLnmI,KAAKg1C,aAAa1/B,EACtB,CA+EA,OA7EK2b,IAAQ+xH,EAASj4I,UAAYkmB,GAClC+xH,EAASh/I,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnDg/I,EAASh/I,UAAUqH,YAAc23I,EAEjCA,EAASh/I,UAAUgxC,aAAe,SAAuB1/B,GACrDtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEA0tI,EAASh/I,UAAUmiI,eAAiB,WAGhCp/G,GAAW/mB,KAAM,CACbijJ,QAAS,IACTC,QAAS,cACTC,mBAAoB,GACpBC,oBAAqB,OAE7B,EAEAJ,EAASh/I,UAAUq/I,QAAU,SAAkBzC,EAAK0C,GAChD,IAAIC,EAAOvjJ,KACPsV,EAAUiuI,EAAKjuI,QAEf0Z,EADQ1Z,EAAQwrI,MACNjyH,EACV20H,EAAOluI,EAAQmuI,gBACfnD,EAAM5xH,GAAWkyH,EAAIN,KAAMiD,EAAKL,QAASK,EAAKL,SAC9C3C,EAAM+C,EAAQ50H,GAAWkyH,EAAIL,KAAMgD,EAAKN,QAASM,EAAKN,SAAWrC,EAAIL,IACrEx6H,EAAIwJ,GAAIgxH,EAAMiD,GAAQx0H,EACtBhJ,EAAIu9H,EAAKG,YAAYpD,GACzB,OAAO,IAAIr7G,GAAMlf,EAAGC,EACxB,EACAg9H,EAASh/I,UAAU0/I,YAAc,SAAsBpD,GACnD,IAAIQ,EAAQ9gJ,KAAKsV,QAAQwrI,MACrB6C,EAAM7C,EAAM9tJ,EACZg8B,EAAI8xH,EAAMjyH,EACV7I,EAAIuJ,GAAI+wH,GACRsD,EAAKjlH,GAAIokH,GAAW/8H,EAAI,GACxB69H,EAAMF,EAAM5xH,GAAI/L,GAChBhb,EAAIqe,IAAK,EAAIw6H,IAAQ,EAAIA,GAAMF,EAAM,GAGzC,OAAO30H,EAAIkG,GAAI0uH,EAAK54I,EACxB,EACAg4I,EAASh/I,UAAU8/I,QAAU,SAAkB5+G,EAAOo+G,GAClD,IAAIC,EAAOvjJ,KACPsV,EAAUiuI,EAAKjuI,QAEf0Z,EADQ1Z,EAAQwrI,MACNjyH,EACV20H,EAAOluI,EAAQmuI,gBACflD,EAAMr7G,EAAMnf,GAAK6G,GAAaoC,GAAKw0H,EACnClD,EAAM5xH,GAAW60H,EAAKQ,UAAU7+G,EAAMlf,IAAKu9H,EAAKL,QAASK,EAAKL,SAIlE,OAHII,IACA/C,EAAM7xH,GAAW6xH,GAAMgD,EAAKN,QAASM,EAAKN,UAEvC,IAAI5C,GAASC,EAAKC,EAC7B,EACAyC,EAASh/I,UAAU+/I,UAAY,SAAoB/9H,GAC/C,IAOIta,EAPA63I,EAAOvjJ,KACP8gJ,EAAQyC,EAAKjuI,QAAQwrI,MACrB9xH,EAAI8xH,EAAMjyH,EACV80H,EAAM7C,EAAM9tJ,EACZgxJ,EAAOL,EAAM,EACbC,EAAKjsI,IAAKqO,EAAIgJ,GACdi1H,EAAM5jG,GAAW,EAAI+/F,GAAKwD,GAE9B,IAAKl4I,EAAI,EAAGA,GAAK63I,EAAKJ,mBAAoBz3I,IAAK,CAC3C,IAAIm4I,EAAMF,EAAM5xH,GAAIkyH,GAChBj5I,EAAIqe,IAAK,EAAIw6H,IAAQ,EAAIA,GAAMG,GAC/BE,EAAO7jG,GAAW,EAAI+/F,GAAKwD,EAAK54I,GAAKi5I,EAEzC,GADAA,GAAOC,EACH/D,GAAKp/H,IAAImjI,IAASX,EAAKH,oBACvB,KAER,CACA,OAAOp2H,GAAIi3H,EACf,EAEOjB,CACX,CArFuB,CAqFrB/xH,IAEF0E,GAAkBqtH,GAAU,CACxBS,gBAAiB,EACjB3C,MAAOb,KAOJ,IAAIkE,GAAqB,SAAUnB,GACtC,SAASmB,IACLnB,EAAS96I,MAAMlI,KAAM+H,UACzB,CA2BA,OAzBKi7I,IAAWmB,EAAkBp5I,UAAYi4I,GAC9CmB,EAAkBngJ,UAAY6G,OAAOS,OAAQ03I,GAAYA,EAASh/I,WAClEmgJ,EAAkBngJ,UAAUqH,YAAc84I,EAE1CA,EAAkBngJ,UAAUmiI,eAAiB,WACzC6c,EAASh/I,UAAUmiI,eAAenjI,KAAKhD,MAEvC+mB,GAAW/mB,KAAM,CACbkjJ,QAAS,eAEjB,EAEAiB,EAAkBngJ,UAAU0/I,YAAc,SAAsBpD,GAC5D,IAAItxH,EAAIhvB,KAAKsV,QAAQwrI,MAAMjyH,EACvB7I,EAAIuJ,GAAI+wH,GACRsD,EAAKjlH,GAAIokH,GAAW/8H,EAAI,GAC5B,OAAOgJ,EAAIkG,GAAI0uH,EACnB,EAEAO,EAAkBngJ,UAAU+/I,UAAY,SAAoB/9H,GACxD,IAAIgJ,EAAIhvB,KAAKsV,QAAQwrI,MAAMjyH,EACvB+0H,EAAKjsI,IAAKqO,EAAIgJ,GAClB,OAAOhC,GAAIqzB,GAAW,EAAI+/F,GAAKwD,GACnC,EAEOO,CACX,CA/BgC,CA+B9BnB,IAESoB,GAAmB,SAAUnzH,GACpC,SAASmzH,IACLnzH,EAAM/oB,MAAMlI,KAAM+H,UACtB,CAaA,OAXKkpB,IAAQmzH,EAAgBr5I,UAAYkmB,GACzCmzH,EAAgBpgJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC1DogJ,EAAgBpgJ,UAAUqH,YAAc+4I,EAExCA,EAAgBpgJ,UAAUq/I,QAAU,SAAkBzC,GAClD,OAAO,IAAI37G,GAAM27G,EAAIL,IAAKK,EAAIN,IAClC,EACA8D,EAAgBpgJ,UAAU8/I,QAAU,SAAkB5+G,GAClD,OAAO,IAAIm7G,GAASn7G,EAAMlf,EAAGkf,EAAMnf,EACvC,EAEOq+H,CACX,CAjB8B,CAiB5BnzH,IAUSozH,GAAY,SAAUpzH,GAC7B,SAASozH,IACLpzH,EAAMjuB,KAAKhD,MACX,IACIujJ,EADMvjJ,KACKskJ,MAAQ,IAAIH,GACvB18I,EAAIzH,KAAKyH,EAAI,EAAIolB,GAAK02H,EAAKjuI,QAAQwrI,MAAMjyH,EAI7C7uB,KAAKukJ,IAAMpoI,KAAcwJ,UAAU,GAAK,IAAKqM,MAAM,EAAIvqB,GAAI,EAAIA,GAG/DzH,KAAKwkJ,KAAOroI,KAAc6V,MAAMvqB,GAAIA,GAAGke,WAAW,IAAM,GAC5D,CAgBA,OAdKsL,IAAQozH,EAASt5I,UAAYkmB,GAClCozH,EAASrgJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnDqgJ,EAASrgJ,UAAUqH,YAAcg5I,EAGjCA,EAASrgJ,UAAUi1F,QAAU,SAAkB2nD,EAAK5uH,EAAOsxH,GAEvD,OADYtjJ,KAAKskJ,MAAMjB,QAAQzC,EAAK0C,GACvBhxH,UAAUtyB,KAAKukJ,KAAKvyH,MAAMA,GAAS,EACpD,EACAqyH,EAASrgJ,UAAUygJ,WAAa,SAAqBv/G,EAAOlT,EAAOsxH,GAC/D,IAAIpgB,EAAWh+F,EAAMre,QAAQmL,MAAM,GAAKA,GAAS,IAAIM,UAAUtyB,KAAKwkJ,MACpE,OAAOxkJ,KAAKskJ,MAAMR,QAAQ5gB,EAAUogB,EACxC,EAEOe,CACX,CA9BuB,CA8BrBpzH,IC1NE9kB,IDmOmB,SAAU8kB,GAC7B,SAASyzH,IACLzzH,EAAMjuB,KAAKhD,MACXA,KAAKskJ,MAAQ,IAAItB,EACrB,CAEK/xH,IAAQyzH,EAAS35I,UAAYkmB,GAClCyzH,EAAS1gJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnD0gJ,EAAS1gJ,UAAUqH,YAAcq5I,EACjCA,EAAS1gJ,UAAUi1F,QAAU,SAAkB2nD,GAC3C,OAAO5gJ,KAAKskJ,MAAMjB,QAAQzC,EAC9B,EACA8D,EAAS1gJ,UAAUygJ,WAAa,SAAqBv/G,GACjD,OAAOllC,KAAKskJ,MAAMR,QAAQ5+G,EAC9B,CAGJ,CAjBuB,CAiBrBjU,IAQqB,SAAUA,GAC7B,SAAS0zH,IACL1zH,EAAMjuB,KAAKhD,MACXA,KAAKskJ,MAAQ,IAAIF,EACrB,CAEKnzH,IAAQ0zH,EAAS55I,UAAYkmB,GAClC0zH,EAAS3gJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnD2gJ,EAAS3gJ,UAAUqH,YAAcs5I,EACjCA,EAAS3gJ,UAAUi1F,QAAU,SAAkB2nD,GAC3C,OAAO5gJ,KAAKskJ,MAAMjB,QAAQzC,EAC9B,EACA+D,EAAS3gJ,UAAUygJ,WAAa,SAAqBv/G,GACjD,OAAOllC,KAAKskJ,MAAMR,QAAQ5+G,EAC9B,CAGJ,CAjBuB,CAiBrBjU,IC7QmBpmB,OAAOsB,gBAIjBy4I,IAFS/5I,OAAOW,OAEA,SAAUq5I,GACjC,IAAI/tB,EAAMh+H,SAASomB,cAAc,OAEjC,OADA43G,EAAIn0B,UAAYkiD,EACT/tB,EAAI/zB,UACf,GAaW+hD,GAAiB,SAAUtxJ,GAClC,KAAOA,EAAQuvG,YACXvvG,EAAQksB,YAAYlsB,EAAQuvG,WAEpC,EAEWgiD,GAAU,SAAUvxJ,EAASwxJ,GACpCA,EAAcjhD,aAAavwG,EAASwxJ,EAAcjiD,WACtD,EAUWkiD,GAAY,SAAU5wI,GAK7B,OAJaA,EAAIjS,QAAQ,iBAAiB,SAAS+Z,GAC/C,OAAOA,EAAEvf,OAAO,GAAK,IAAMuf,EAAEvf,OAAO,GAAGmuB,aAC3C,GAGJ,EAEWm6H,GAAW,SAAU/nJ,GAS5B,OANIA,GAASgO,OAAOhO,GAAOkkB,SAAS,MACvBlkB,EAEAgO,OAAOhO,GAAS,IAIjC,EAEIgoJ,GAAW,SAAUxjC,GACrB,IAAgByjC,EAAZC,GAAK,EAAqB58H,EAAQ,GAElC68H,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,uBAEZj8H,EAAa,CACTk8H,MAAO,eACPC,QAAS,eACTC,QAAS,kBACTC,aAAc,qBACdC,GAAI,uBACJC,OAAQ,gBACRr8H,OAAQ,WAGhB,IAAK,IAAIK,KAASw6H,EACd,GAAIA,EAASr6I,eAAe6f,KACxBrC,EAAQk5F,EAAGl5F,MAAM68H,EAASx6H,KACf,CACP,GAAc,YAAVA,GAAuB,YAAaK,UAAa,OAAO,GAE5Dk6H,EAAK,CAAC,GACH0B,OAASj8H,EACZu6H,EAAGmB,OAASQ,GAAUl8H,EAAOy7H,GAAe,GAC5ClB,EAAGh7H,QAAU28H,GAAUrlC,EAAIp3F,EAAY,WACvC86H,EAAG10I,KAAOq2I,GAAUl8H,EAAOs7H,GAC3Bf,EAAGA,EAAG10I,OAAQ,EACd00I,EAAG4B,aAAex+H,EAAM,GACxB48H,EAAGD,cAAgB38H,EAAM,IAAM,KAAKrmB,QAAQ,IAAK,KACjDgjJ,EAAeC,EAAGD,aAAahjJ,QAAQ,IAAK,IAAI8/B,OAAO,EAAG,GAC1DmjH,EAAG6B,YAAc7B,EAAG4B,aAAe7B,EAAgB,IAAIjwJ,MAAM,GAAKiwJ,EAAahrJ,OAAS,EAAIgrJ,EAAahrJ,OAAS,IAAIs3B,KAAK,KAG3H,KACJ,CAIR,OAAO2zH,CACX,EAEA,SAAS2B,GAAUl8H,EAAOq8H,EAASC,GAC/B,IAAK,IAAIC,KAASF,EACd,GAAIA,EAAQl8I,eAAeo8I,IAAUF,EAAQE,GAAOjmI,KAAK0J,GACrD,OAAOu8H,EAGf,YAAgB5zJ,IAAT2zJ,EAAqBA,EAAOt8H,CACvC,CAEO,IAmCIw8H,GAAc,WACrB,IAAIC,EAAW,CACXC,KAAM,uBACN9/G,KAAM,sBACN+/G,GAAI,+BACJzhJ,OAAQ,0BAGRolB,EAAUs8H,KAyBd,OAvBIt8H,EAAQiD,QAAUjD,EAAQu8H,SAAStB,KAAOj7H,EAAQu8H,SAASlC,SAC3D8B,EAAW,CACPC,KAAM,aACN9/G,KAAM,YACN+/G,GAAI,uBACJzhJ,OAAQ,eAELolB,EAAQ2wG,SACfwrB,EAAW,CACPC,KAAM,cACN9/G,KAAM,cACN+/G,GAAI,YACJzhJ,OAAQ,8BAELolB,EAAQw8H,aACfL,EAAW,CACPC,KAAM,gBACN9/G,KAAM,gBACN+/G,GAAI,cACJzhJ,OAAQ,mCAITuhJ,CACX,EAEWG,GAAuB,WAC9B,IAAIrC,EAAKF,GAASh6H,UAAUb,WACxBD,EApEY,SAAUC,GAC1B,IAAID,GAAU,EACV5B,EAAQ,GACR8B,EAAa,CACTC,KAAM,uBACNC,OAAQ,+BACRC,OAAQ,yBACRC,MAAO,sCACPC,KAAM,mCACNC,QAAS,kCAGjB,IAAK,IAAIC,KAASP,EACd,GAAIA,EAAWtf,eAAe6f,KAC1BrC,EAAQ6B,EAAU7B,MAAM8B,EAAWO,KAExB,EACPT,EAAU,CAAC,GACHS,IAAS,EACjBT,EAAQ5B,EAAM,GAAGsC,cAAcxjB,MAAM,KAAK,GAAGA,MAAM,KAAK,KAAM,EAC9D8iB,EAAQtZ,QAAUia,SAASlyB,SAASmyB,cAAgBxC,EAAM,GAAI,IAE9D,KACJ,CAIR,OAAO4B,CACX,CAwCkBw9H,CAAc18H,UAAUb,WAElCw8H,EAASz8H,EAAQy8H,OACjBgB,EAAez9H,EAAQ09H,MACvBl9H,EAAUR,EAAQQ,QAClBH,EAASL,EAAQK,OAEjBU,EAAU,CAAC,EAEfA,EAAQu8H,SAAWtC,EACnBj6H,EAAQiD,MAAQ,iBAAkB5xB,OAClC2uB,EAAQ2wG,UAAY+qB,IAAWgB,IAAiBj9H,IAAYH,GAAUjuB,OAAOurJ,aAC7E58H,EAAQw8H,YAAcd,GAAUrqJ,OAAOwrJ,eACvC78H,EAAQ88H,qBAAuB98H,EAAQiD,SAAWjD,EAAQu8H,SAAStB,KAAOj7H,EAAQu8H,SAASlC,SAC3Fr6H,EAAQ+8H,aAAervJ,SAASq3B,gBAAgBhyB,iBAEhD,IAAIiqJ,EAAQtvJ,SAASomB,cAAc,SAE/B2gE,EAAcz0D,EAAQy0D,aAAc,EACpCwoE,EAAaj9H,EAAQi9H,YAAa,EAElC3jI,EAAS,SA0Db,MAxDA,CAAC,MAAO,SAAU,IAAK,MAAMld,SAAQ,SAAS+sC,GAC1C,IAAI+zG,SAAwBF,EAAM3xJ,MAAM89C,EAAS,gBAAkB7vB,EAEnE,GAAI4jI,UAAyBF,EAAM3xJ,MAAM89C,EAAS,eAAiB7vB,EAAQ,CACvE,IAAI6jI,EAAYh0G,EAAOxpB,cAavB,OAXAs9H,EAAa,CACTlkD,IAAoB,OAAdokD,EAAsB,IAAMA,EAAY,IAAM,GACpDh0G,OAAQA,EACRj4C,MAAsB,MAAdisJ,GAAmC,WAAdA,EAA0BA,EAAY,IAGnED,KACAzoE,EAAcwoE,GACF/rJ,MAAQujF,EAAYvjF,MAAQujF,EAAYvjF,MAAQ,gBAAkB,kBAG3E,CACX,CACJ,IAEA8rJ,EAAQ,KAERh9H,EAAQi9H,WAAaA,EACrBj9H,EAAQy0D,YAAcA,EAEtBz0D,EAAQo9H,aAAe,WAEnB,GAAIp9H,EAAQiD,MAAO,CAGf,GAAIjD,EAAQu8H,SAAStB,IACjB,OAAO,EAGX,GAAIj7H,EAAQu8H,SAASlC,QAAS,CAE1B,IAAKr6H,EAAQf,QAAQy8H,OACjB,OAAO,EAIX,GAAI17H,EAAQf,QAAQtZ,QAAU,GAC1B,OAAO,EAIX,IAAI03I,EAAO3vJ,SAAS4vJ,cAAc,uBAElC,QADkBD,EAAOA,EAAKE,aAAa,WAAa,IACpClgI,MAAM,oBAC9B,CACJ,CAEA,OAAO,CACX,EAEO2C,CACX,EAwBWw9H,GAAQ,SAAUpyI,EAAQ1T,GACjC,OAAO0T,EAAOzW,KAAK+C,EACvB,EAMO,IAAI+lJ,GAAK,SAAUr1J,EAASo8B,EAAQmT,EAAQz8B,EAASwiJ,GACxDC,GAAkBv1J,EAASo8B,EAAQmT,EAAQz8B,EAASwiJ,EACxD,EAEWC,GAAoB,SAAUv1J,EAASo8B,EAAQmT,EAAQz8B,EAASwiJ,IACtD1zJ,EAAQw6B,GAAUA,GAAUA,GAAU,IAAIroB,MAAM,MAEtDC,SAAQ,SAASqoB,GACxB1xB,GAAiB3K,EAASq8B,EAAWkT,EAAQz8B,EAASwiJ,EAC1D,GACJ,EAEW3qJ,GAAmB,SAAU3K,EAAS8I,EAAOymC,EAAQz8B,EAASwiJ,GACrE,IACIE,EADAC,EAAe3iJ,EAGfy8B,GAAU3c,GAAW2c,KAAYz8B,EACjC2iJ,EAAelmH,EACRA,GArBc,kBAqBKA,GAAW3c,GAAW6iI,KAChDD,EAAcjmH,GAGlBvvC,EAAQ2K,iBAAiB7B,GAAO,SAAStJ,GACrC,IAAIk2J,EAAwBl2J,EAAE4a,OAAS5a,EAAE4a,OAAOy3C,QAAQ2jG,GAAe,KAEvE,IAAKA,GACAA,GAAeh2J,EAAE4a,QAAUs7I,EAAwB,CACpD,IAAIC,EAAgBH,EAAcE,EAAwBl2J,EAAEm2J,cAG5Dh9I,GAAenZ,EAAG,gBAAiB,CAAEmK,MAAOgsJ,IAE5Ch9I,GAAenZ,EAAG,iBAAkB,CAAEmK,MAAO3J,IAE7Cy1J,EAAaj2J,EACjB,CACJ,GAAGi+D,QAAQ63F,GACf,EAEWM,GAAM,SAAU51J,EAASo8B,EAAQmT,EAAQz8B,EAASwiJ,GACzDO,GAAqB71J,EAASo8B,EAAQmT,EAAQz8B,EAASwiJ,EAC3D,EAEWO,GAAuB,SAAU71J,EAASo8B,EAAQtpB,EAASwiJ,IACjD1zJ,EAAQw6B,GAAUA,GAAUA,GAAU,IAAIroB,MAAM,MAEtDC,SAAQ,SAASqoB,GACxBzxB,GAAoB5K,EAASq8B,EAAWvpB,EAASwiJ,EACrD,GACJ,EAEW1qJ,GAAsB,SAAU5K,EAAS8I,EAAOgK,EAASwiJ,GAChEt1J,EAAQ4K,oBAAoB9B,EAAOgK,EAAS2qD,QAAQ63F,GACxD,EAEWQ,GAAgB,SAAU15H,GACjC,IAAI23H,EAAWD,GAAYn8H,UAAUb,WAQrC,OAFoBsF,EAAOxtB,QADV,YAJjB,SAAuBpP,GACnB,OAAOu0J,EAASv0J,IAAMA,CAC1B,GAMJ,EAEWu2J,GAAmB,SAAUp2J,EAAMy8B,GAC1C,IAAIgG,EAAQziC,EAAK6Q,UAEb4xB,EAAMhG,OACNA,EAAOpoB,SAAQ,SAAUlL,GACjBs5B,EAAMhG,OAAOvmB,QAAQ/M,GAAS,GAC9Bs5B,EAAMhG,OAAOxgB,KAAK9S,EAE1B,IAEAs5B,EAAMhG,OAASA,CAEvB,EAoCWR,GAAM,WACb,OAAOjL,OAAO,IAAI1M,KACtB,EAEWxQ,GAAO,WAAa,ECzb3Byd,GAAS,SACT8kI,GAAW,WAEX15F,GAAiB,WACjB9vD,KAAKqgG,mBAAoB,CAC7B,EAEIr2E,GAAqB,WACrB,OAAkC,IAA3BhqB,KAAKqgG,iBAChB,EAEWR,GAAc,SAAU5uE,GAC/B,SAAS4uE,IACL5uE,EAAMjuB,KAAKhD,MACXA,KAAK8/F,QAAU,CAAC,CACpB,CA0JA,OAxJK7uE,IAAQ4uE,EAAW90F,UAAYkmB,GACpC4uE,EAAW77F,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACrD67F,EAAW77F,UAAUqH,YAAcw0F,EAEnCA,EAAW77F,UAAUs/C,QAAU,WAC3BtjD,KAAKogG,QACT,EAEAP,EAAW77F,UAAUjE,KAAO,SAAezD,EAAOutB,EAAUk2E,GACxD,IACItrF,EAEAra,EACA+lG,EACA75F,EALAmjJ,EAAOzpJ,KAEP8vB,SAAoBxzB,IAAUooB,GAAS,CAACpoB,GAASA,GAAS,GAI1D2jG,SAA4Bp2E,IAAa2/H,GAG7C,QAAiB/1J,IAAbo2B,EAAwB,CACxB,IAAKpV,KAAOnY,EACRmtJ,EAAK1pJ,KAAK0U,EAAKnY,EAAMmY,IAGzB,OAAOg1I,CACX,CAGA,IAAIvmG,EAAO,WACP,IAAIrzB,EAAYC,EAAWrb,IAE3BnO,EAAU25F,EAAqBp2E,EAAWA,EAASgG,MAG3CkwE,IACAI,EAAW75F,EACXA,EAAU,WACNmjJ,EAAKrpD,OAAOvwE,EAAWvpB,GACvB65F,EAASj4F,MAAMuhJ,EAAM1hJ,UACzB,EAEAzB,EAAQ65F,SAAWA,IAGdspD,EAAK3pD,QAAQjwE,GAAa45H,EAAK3pD,QAAQjwE,IAAc,IACvDzgB,KAAK9I,GAEpB,EAEA,IAAKmO,EAAM,EAAGra,EAAS01B,EAAW11B,OAAQqa,EAAMra,EAAQqa,IAAOyuC,IAG/D,OAAOumG,CACX,EAEA5pD,EAAW77F,UAAU+7F,IAAM,SAAcjwE,EAAYjG,GACjD,OAAO7pB,KAAKD,KAAK+vB,EAAYjG,GAAU,EAC3C,EAEAg2E,EAAW77F,UAAU8nB,MAAQ,SAAgB+D,EAAWhG,GACpD,IACIpV,EAEAra,EACAkM,EAJAmjJ,EAAOzpJ,KAEP8vB,SAAoBD,IAAcnL,GAAS,CAACmL,GAAaA,EAGzDowE,SAA4Bp2E,IAAa2/H,GAG7C,IAAK/0I,EAAM,EAAGra,EAAS01B,EAAW11B,OAAQqa,EAAMra,EAAQqa,IAAO,CAC3D,IAAIyrF,EAAcpwE,EAAWrb,IAE7BnO,EAAU25F,EAAqBp2E,EAAWA,EAASq2E,MAGtCupD,EAAK3pD,QAAQI,GAAeupD,EAAK3pD,QAAQI,IAAgB,IAC3DvsD,QAAQrtC,EAEvB,CAEA,OAAOmjJ,CACX,EAEA5pD,EAAW77F,UAAU+lB,QAAU,SAAkB8F,EAAWggC,GACxD,IAEIp7C,EACAra,EAHAqvJ,EAAOzpJ,KACP4vB,EAAS65H,EAAK3pD,QAAQjwE,GAI1B,GAAID,EAAQ,CACR,IAAI58B,EAAI68D,GAAa,CAAC,EAYtB,IAVA78D,EAAE+wD,OAAS0lG,EAEXz2J,EAAEqtG,mBAAoB,EAEtBrtG,EAAE88D,eAAiBA,GAEnB98D,EAAEg3B,mBAAqBA,GAIlBvV,EAAM,EAAGra,GAFdw1B,EAASA,EAAOlV,SAEctgB,OAAQqa,EAAMra,EAAQqa,IAChDmb,EAAOnb,GAAKzR,KAAKymJ,EAAMz2J,GAG3B,OAA+B,IAAxBA,EAAEqtG,iBACb,CAEA,OAAO,CACX,EAEAR,EAAW77F,UAAUo8F,OAAS,SAAiBvwE,EAAWvpB,GACtD,IAEImO,EAFAg1I,EAAOzpJ,KACP4vB,EAAS65H,EAAK3pD,QAAQjwE,GAG1B,QAAkBp8B,IAAdo8B,EACA45H,EAAK3pD,QAAU,CAAC,OACb,GAAIlwE,EACP,GAAItpB,EACA,IAAKmO,EAAMmb,EAAOx1B,OAAS,EAAGqa,GAAO,EAAGA,IAChCmb,EAAOnb,KAASnO,GAAWspB,EAAOnb,GAAK0rF,WAAa75F,GACpDspB,EAAOwW,OAAO3xB,EAAK,QAI3Bg1I,EAAK3pD,QAAQjwE,GAAa,GAIlC,OAAO45H,CACX,EAEA5pD,EAAW77F,UAAU0lJ,WAAa,SAAqBp0I,GAKnD,IAJA,IAAIksB,EAASxhC,KAET5F,GAAU4F,KAAK4vB,QAAU,IAAIx1B,OAExBqa,EAAM,EAAGA,EAAMra,EAAQqa,IAAQ,CACpC,IAAIzhB,EAAIwuC,EAAO5R,OAAOnb,GAElB+sB,EAAOlsB,QAAQtiB,IAAMsiB,EAAQtiB,KAC7BwuC,EAAO4+D,OAAOptG,EAAGwuC,EAAOlsB,QAAQtiB,IAE5BwuC,EAAOs+D,SAAWt+D,EAAOs+D,QAAQ9sG,WAC1BwuC,EAAOs+D,QAAQ9sG,GAGlC,CAEAgN,KAAKD,KAAKC,KAAK4vB,OAAQta,EAC3B,EAEOuqF,CACX,CA/JyB,CA+JvB5uE,IC/JS04H,GAAe,SAAU9pD,GAChC,SAAS8pD,EAAYn2J,EAAS8hB,GAC1BuqF,EAAW78F,KAAKhD,MAChBA,KAAKxM,QAAUA,EAEfwM,KAAKg1C,aAAa1/B,GAClBtV,KAAKkhD,MAAQ,GAEb14C,EAASxI,KAAKxM,QAAS,yBAC3B,CAsHA,OApHKqsG,IAAa8pD,EAAY5+I,UAAY80F,GAC1C8pD,EAAY3lJ,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAChE2lJ,EAAY3lJ,UAAUqH,YAAcs+I,EAEpCA,EAAY3lJ,UAAUgxC,aAAe,SAAuB1/B,GACxDtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEAq0I,EAAY3lJ,UAAU++B,OAAS,SAAiB6mH,EAAQp2C,GACpDxzG,KAAK6pJ,QAAUD,EACf5pJ,KAAKs5H,MAAQ9lB,EACbxzG,KAAK+yI,SACT,EAEA4W,EAAY3lJ,UAAUmF,IAAM,SAAc8sB,GACtC,IAAI6zH,EAAU7zH,EAEV9Q,GAAQ8Q,KACY,kBAATA,IACP6zH,EAAU,CACN5wJ,KAAM+8B,IAIdj2B,KAAKkhD,MAAM9xC,KAAK06I,GAChB9pJ,KAAK+yI,UAEb,EAEA4W,EAAY3lJ,UAAU2D,OAAS,SAAiBzO,GAK5C,IAJA,IAEId,EAAS,GAEJsT,EAAI,EAAGA,EAAI1L,KAAKkhD,MAAM9mD,OAAQsR,IAAK,CACxC,IAAIuqB,EALKj2B,KAKSkhD,MAAMx1C,GAEpBuqB,EAAK/8B,OAASA,GACdd,EAAOgX,KAAK6mB,EAEpB,CAEAj2B,KAAKkhD,MAAQ9oD,EACb4H,KAAK+yI,SACT,EAEA4W,EAAY3lJ,UAAUi/B,MAAQ,WAC1BjjC,KAAKkhD,MAAQ,GACb4jG,GAAe9kJ,KAAKxM,QACxB,EAEAm2J,EAAY3lJ,UAAU+uI,QAAU,WAK5B,IAJA,IAEI36I,EAAS,GAEJsT,EAAI,EAAGA,EAAI1L,KAAKkhD,MAAM9mD,OAAQsR,IAAK,CACxC,IAAIuqB,EALKj2B,KAKSkhD,MAAMx1C,GACpBxS,EANK8G,KAMS+pJ,UAAU9zH,GAEf,KAAT/8B,GACAd,EAAOgX,KAAKlW,EAEpB,CAEId,EAAOgC,OAAS,GAChB0qJ,GAAe9kJ,KAAKxM,SF3ER,SAAUqxJ,EAAMrxJ,GACpC,IAAIsjI,EAAMh+H,SAASomB,cAAc,OAKjC,IAJA43G,EAAIn0B,UAAYkiD,EAIT/tB,EAAI90B,WAAW5nG,OAAS,GAC3B5G,EAAQgsB,YAAYs3G,EAAI90B,WAAW,GAE3C,CEqEYgoD,CADW5xJ,EAAOs5B,KAAK1xB,KAAKsV,QAAQmc,WACnBzxB,KAAKxM,SAEtBwM,KAAKiqJ,eAELjqJ,KAAKkqJ,aAEb,EAEAP,EAAY3lJ,UAAUkmJ,YAAc,WAChClqJ,KAAKxM,QAAQiD,MAAMC,QAAU,MACjC,EAEAizJ,EAAY3lJ,UAAUimJ,YAAc,WAChCjqJ,KAAKxM,QAAQiD,MAAMC,QAAU,EACjC,EAEAizJ,EAAY3lJ,UAAU+lJ,UAAY,SAAoB9zH,GAClD,IAAI/8B,EAAO,GACPixJ,EAAcnqJ,KAAKoqJ,aAAan0H,EAAKo0H,QAASp0H,EAAKq0H,SACnDC,EAASvqJ,KAAKwqJ,QAAQv0H,EAAK2zH,QAM/B,OAJIO,GAAeI,IACfrxJ,GAAQ+8B,EAAK/8B,MAGVA,CACX,EAEAywJ,EAAY3lJ,UAAUomJ,aAAe,SAAuBz7H,EAAKnD,GAC7D,IACIi/H,EAASh7H,GAAed,GAAMxK,OAAOD,WACrCwmI,EAASj7H,GAAejE,EAAKrH,OAAOD,WAGxC,OADSlkB,KAAKs5H,MAAQmxB,GAAUzqJ,KAAKs5H,MAAQoxB,CAEjD,EAEAf,EAAY3lJ,UAAUwmJ,QAAU,SAAkBrgE,GAC9C,IAAI/xF,GAAS,EAMb,OAJI+xF,IACA/xF,EAAS+xF,EAAK/gF,SAASpJ,KAAK6pJ,UAGzBzxJ,CACX,EAEOuxJ,CACX,CAhI0B,CAgIxB9pD,IAEFlqE,GAAkBg0H,GAAa,CAC3Bh5I,KAAM,cACN8gB,UAAW,kBChIf,IAEIk5H,GAAgB,CAChBlD,GAAI,CACAnzJ,UAAW,gBACXs2J,UAAW,oBAEfpD,KAAM,CACFlzJ,UAAW,gBACXs2J,UAAW,sBAEfhjI,MAAO,CACHtzB,UAAW,gBACXs2J,UAAW,uBAEf9iI,KAAM,CACFxzB,UAAW,gBACXs2J,UAAW,uBAInB,SAASC,GAAa9gD,GAClB,IAAI86C,EACA,yGACI8F,GAAc5gD,GAAWz1G,UACzB,sBAAwBy1G,EAF5B,yBAG6B4gD,GAAc5gD,GAAW6gD,UAHtD,gBAMJ,OAAOhG,GAAcC,EACzB,CAEO,IAAI/sB,GAAa,SAAUj4B,GAC9B,SAASi4B,EAAUtkI,EAAS8hB,GACxBuqF,EAAW78F,KAAKhD,MAEhBA,KAAKxM,QAAUA,EACfwM,KAAKg1C,aAAa1/B,GAElB,IAAIw1I,EAAmBD,GAAa,MAChCE,EAAuBF,GAAa,SACpCG,EAAqBH,GAAa,QAClCI,EAAqBJ,GAAa,QAEtC7qJ,KAAKxM,QAAQgsB,YAAYsrI,GACzB9qJ,KAAKxM,QAAQgsB,YAAYurI,GACzB/qJ,KAAKxM,QAAQgsB,YAAYwrI,GACzBhrJ,KAAKxM,QAAQgsB,YAAYyrI,GAEzBziJ,EAASxI,KAAKxM,QAAS,wBAEvBq1J,GAAG7oJ,KAAKxM,QAAS,QAAS,YAAao1J,GAAM5oJ,KAAKygG,OAAQzgG,OAE1D,IAAI6yB,EAAgB7yB,KAAKxM,QAAQshC,WAAWuwB,QAAQ,eAEpDrlD,KAAKkrJ,SAAWr4H,GAAgC7yB,KAAKxM,QACrDwM,KAAKmrJ,UAAUnrJ,KAAKkrJ,UAEpBlrJ,KAAKorJ,gBAAkBxC,GAAM5oJ,KAAKqrJ,SAAUrrJ,MAC5C6oJ,GAAG7oJ,KAAKkrJ,SAAU,UAAWlrJ,KAAKorJ,gBACtC,CAoFA,OAlFKvrD,IAAai4B,EAAU/sH,UAAY80F,GACxCi4B,EAAU9zH,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAC9D8zH,EAAU9zH,UAAUqH,YAAcysH,EAElCA,EAAU9zH,UAAUs/C,QAAU,WAC1BtjD,KAAKsrJ,SACT,EAGAxzB,EAAU9zH,UAAUsnJ,QAAU,WAC1BlC,GAAIppJ,KAAKkrJ,SAAU,UAAWlrJ,KAAKorJ,gBACvC,EAEAtzB,EAAU9zH,UAAUmnJ,UAAY,SAAoBv9I,GAChD,IAAI29I,EAAgB39I,GAAU5N,KAAKnH,SAAWmH,KAAKxM,QAE/CA,EAAUwM,KAAKxM,QACfg4J,EAAW,WACXC,EAAWF,EAAc5C,aAAa6C,IAAah4J,EAAQm1J,aAAa6C,GAE5Eh4J,EAAQG,gBAAgB63J,GAExBD,EAAc73J,aAAa83J,EAAWvlI,MAAMwlI,GAAuB,EAAXA,EAC5D,EAEA3zB,EAAU9zH,UAAUgxC,aAAe,SAAuB1/B,GACtDtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEAwiH,EAAU9zH,UAAU0nJ,KAAO,SAAe3lI,EAAGC,GACzC,IAAI2lI,EAAU3rJ,KAAKsV,QAAQq2I,QAE3B3rJ,KAAK+pB,QA9FH,MA8FgB,CACdhE,EAAGA,EAAI4lI,EACP3lI,EAAGA,EAAI2lI,GAEf,EAEA7zB,EAAU9zH,UAAUy8F,OAAS,SAAiBztG,GAC1C,IAAI+yB,EAAI,EACJC,EAAI,EACJ4lI,EAAS54J,EAAEm2J,cAEXyC,EAAO9tJ,QAAQ,kBACfkoB,EAAI,EACG4lI,EAAO9tJ,QAAQ,kBACtBkoB,GAAK,EACE4lI,EAAO9tJ,QAAQ,kBACtBioB,EAAI,EACG6lI,EAAO9tJ,QAAQ,oBACtBioB,GAAK,GAGT/lB,KAAK0rJ,KAAK3lI,EAAGC,GAEbhzB,EAAE88D,gBACN,EAGAgoE,EAAU9zH,UAAUqnJ,SAAW,SAAmBr4J,GAC9C,OAAQA,EAAEknH,OACN,KAAKzqG,GAAAA,GACDzP,KAAK0rJ,KAAK,EAAG,GACb14J,EAAE88D,iBACF,MACJ,KAAKrgD,GAAAA,KACDzP,KAAK0rJ,KAAK,GAAI,GACd14J,EAAE88D,iBACF,MACJ,KAAKrgD,GAAAA,MACDzP,KAAK0rJ,KAAK,EAAG,GACb14J,EAAE88D,iBACF,MACJ,KAAKrgD,GAAAA,KACDzP,KAAK0rJ,MAAM,EAAG,GACd14J,EAAE88D,iBAKd,EAEOgoE,CACX,CAjHwB,CAiHtBj4B,ICjJF,SAASgrD,GAAa9gD,EAAW6gD,GAQ7B,OAAOhG,GANH,4GAA8G76C,EAC1G,iBAAmBA,EACnB,sBAAwBA,EAF5B,yBAG6B6gD,EAH7B,qBAOR,CD0IAj1H,GAAkBmiG,GAAW,CACzBnnH,KAAM,YACNg7I,QAAS,IAIbpC,GAAiBzxB,GAAW,CAzJlB,QCWV,IAII+zB,GAAS,SAEFC,GAAe,SAAUjsD,GAChC,SAASisD,EAAYt4J,EAAS8hB,GAC1BuqF,EAAW78F,KAAKhD,MAChBA,KAAKxM,QAAUA,EACfwM,KAAKg1C,aAAa1/B,GAElB,IAAIy2I,EAAelB,GAAa,KAAM,YAClCmB,EAAgBnB,GAAa,MAAO,aAExC7qJ,KAAKxM,QAAQgsB,YAAYusI,GACzB/rJ,KAAKxM,QAAQgsB,YAAYwsI,GAEzBxjJ,EAASxI,KAAKxM,QAAS,6DAEvBwM,KAAKmuH,cAAgBnuH,KAAKygG,OAAO1gG,KAAKC,MACtC6oJ,GAAG7oJ,KAAKxM,QAAS,QAAS,YAAawM,KAAKmuH,eAE5C,IAAIt7F,EAAgB7yB,KAAKxM,QAAQshC,WAAWuwB,QAAQ,eAEpDrlD,KAAKkrJ,SAAWr4H,GAAgC7yB,KAAKxM,QAErDwM,KAAKmrJ,UAAUnrJ,KAAKkrJ,UAEpBlrJ,KAAKorJ,gBAAkBprJ,KAAKqrJ,SAAStrJ,KAAKC,MAC1C6oJ,GAAG7oJ,KAAKkrJ,SAAU,UAAWlrJ,KAAKorJ,gBACtC,CAmEA,OAjEKvrD,IAAaisD,EAAY/gJ,UAAY80F,GAC1CisD,EAAY9nJ,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAChE8nJ,EAAY9nJ,UAAUqH,YAAcygJ,EAEpCA,EAAY9nJ,UAAUs/C,QAAU,WACxBtjD,KAAKxM,SACL41J,GAAIppJ,KAAKxM,QAAS,QAASwM,KAAKmuH,eAGhCnuH,KAAKkrJ,UACL9B,GAAIppJ,KAAKkrJ,SAAU,UAAWlrJ,KAAKorJ,gBAE3C,EAEAU,EAAY9nJ,UAAUmnJ,UAAY,SAAoBv9I,GAClD,IAAI29I,EAAgB39I,GAAU5N,KAAKnH,SAAWmH,KAAKxM,QAE/CA,EAAUwM,KAAKxM,QACfg4J,EAAW,WACXC,EAAWF,EAAc5C,aAAa6C,IAAah4J,EAAQm1J,aAAa6C,GAE5Eh4J,EAAQG,gBAAgB63J,GAExBD,EAAc73J,aAAa83J,EAAWvlI,MAAMwlI,GAAuB,EAAXA,EAC5D,EAEAK,EAAY9nJ,UAAUgxC,aAAe,SAAuB1/B,GACxDtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEAw2I,EAAY9nJ,UAAU+vC,QAAU,SAAkBg2D,GAC9C,IAAIkiD,EAAWjsJ,KAAKsV,QAAQ22I,SAC5BjsJ,KAAK+pB,QAAQ8hI,GAAQ,CAAEvgI,MAAOy+E,EAAYkiD,GAC9C,EAEAH,EAAY9nJ,UAAUy8F,OAAS,SAAiBztG,GAC5C,IACI+2G,EAAY,EAEZlhF,GAHS71B,EAAEm2J,cAGQ,gBACnBp/C,GAAa,GAGjB/pG,KAAK+zC,QAAQg2D,GACb/2G,EAAE88D,gBACN,EAGAg8F,EAAY9nJ,UAAUqnJ,SAAW,SAAmBr4J,GAChD,OAAQA,EAAEknH,OACN,KAAKzqG,GAAAA,YACL,KApFD,IAqFC,KAnFE,GAoFEzP,KAAK+zC,QAAQ,GACb,MACJ,KAAKtkC,GAAAA,aACL,KAxFA,IAyFA,KAvFG,IAwFCzP,KAAK+zC,SAAS,GAK1B,EAEO+3G,CACX,CA7F0B,CA6FxBjsD,IAEFlqE,GAAkBm2H,GAAa,CAC3Bn7I,KAAM,cACNs7I,SAAU,IAGd1C,GAAiBuC,GAAa,CAC1BD,KClIJ,IAAI1L,GAAOr/H,KACP0K,GAAM20H,GAAK30H,IACXmD,GAAMwxH,GAAKxxH,IAEJu9H,GAAU,SAAUj7H,GAC3B,SAASi7H,EAAOC,EAAWC,GACvBn7H,EAAMjuB,KAAKhD,MACX,IAAIqsJ,EAAKhM,GAAS/0I,OAAO6gJ,GACrBG,EAAKjM,GAAS/0I,OAAO8gJ,GAErBC,EAAG9L,IAAM,IAAM+L,EAAG/L,IAAM,KAAO8L,EAAG/L,IAAM,GAAKgM,EAAGhM,IAAM,IACtDtgJ,KAAKssJ,GAAKD,EACVrsJ,KAAKqsJ,GAAKC,IAEVtsJ,KAAKssJ,GAAKA,EACVtsJ,KAAKqsJ,GAAKA,EAElB,CAEKp7H,IAAQi7H,EAAOnhJ,UAAYkmB,GAChCi7H,EAAOloJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACjDkoJ,EAAOloJ,UAAUqH,YAAc6gJ,EAE/B,IAAI7kH,EAAkB,CAAEklH,MAAO,CAAEjgJ,cAAc,IAiG/C,OA/FA4/I,EAAOloJ,UAAUoF,SAAW,SAAmBw3I,GAC3C,IAAIyL,EAAKrsJ,KAAKqsJ,GAAIC,EAAKtsJ,KAAKssJ,GAAI/L,EAAM9wH,GAAemxH,EAAIL,IAAKK,EAAI,IAAKN,EAAM7wH,GAAemxH,EAAIN,IAAKM,EAAI,IAEzG,OAAOA,GACHL,EAAM,KAAO8L,EAAG9L,IAAM,KAAOA,EAAM,KAAO+L,EAAG/L,IAAM,KACnDD,EAAM,IAAMgM,EAAGhM,IAAM,IAAMA,EAAM,IAAM+L,EAAG/L,IAAM,EACxD,EAEA4L,EAAOloJ,UAAUmhC,OAAS,WACtB,IAAIknH,EAAKrsJ,KAAKqsJ,GACVC,EAAKtsJ,KAAKssJ,GACV/L,EAAM8L,EAAG9L,KAAO+L,EAAG/L,IAAM8L,EAAG9L,KAAO,EACnCD,EAAM+L,EAAG/L,KAAOgM,EAAGhM,IAAM+L,EAAG/L,KAAO,EAEvC,OAAO,IAAID,GAASC,EAAKC,EAC7B,EAEA2L,EAAOloJ,UAAUwoJ,YAAc,SAAsBC,GAKjD,IAJA,IAEIr0J,GAAS,EAEJsT,EAAI,EAAGA,EAAI+gJ,EAAKryJ,OAAQsR,IAC7BtT,EAASA,GALA4H,KAKiBoJ,SAASqjJ,EAAK/gJ,IAG5C,OAAOtT,CACX,EAEA8zJ,EAAOloJ,UAAU0oJ,QAAU,SAAkB9L,GACzC,IAAIyL,EAAKrsJ,KAAKqsJ,GAAIC,EAAKtsJ,KAAKssJ,GAAI/L,EAAM9wH,GAAemxH,EAAIL,IAAKK,EAAI,IAAKN,EAAM7wH,GAAemxH,EAAIN,IAAKM,EAAI,IAEzGyL,EAAG9L,IAAM5xH,GAAI09H,EAAG9L,IAAKA,GACrB8L,EAAG/L,IAAM90H,GAAI6gI,EAAG/L,IAAKA,GACrBgM,EAAG/L,IAAM/0H,GAAI8gI,EAAG/L,IAAKA,GACrB+L,EAAGhM,IAAM3xH,GAAI29H,EAAGhM,IAAKA,EACzB,EAEA4L,EAAOloJ,UAAU2oJ,WAAa,SAAqBF,GAG/C,IAFA,IAES/gJ,EAAI,EAAGA,EAAI+gJ,EAAKryJ,OAAQsR,IAFpB1L,KAGF0sJ,QAAQD,EAAK/gJ,GAE5B,EAEAwgJ,EAAOloJ,UAAU4oJ,MAAQ,WACrB,IAAIP,EAAKrsJ,KAAKqsJ,GAAIC,EAAKtsJ,KAAKssJ,GAE5B,MAAO,CACHD,GAAIrsJ,KAAKqsJ,GACTQ,GAAI,IAAIxM,GAASgM,EAAG/L,IAAKgM,EAAG/L,KAC5B+L,GAAItsJ,KAAKssJ,GACTQ,GAAI,IAAIzM,GAASiM,EAAGhM,IAAK+L,EAAG9L,KAEpC,EAEA2L,EAAOloJ,UAAUwtB,QAAU,WACvB,IAAI66H,EAAKrsJ,KAAKqsJ,GAAIC,EAAKtsJ,KAAKssJ,GAE5B,MAAO,CACHD,EACA,IAAIhM,GAASgM,EAAG/L,IAAKgM,EAAG/L,KACxB+L,EACA,IAAIjM,GAASiM,EAAGhM,IAAK+L,EAAG9L,KAEhC,EAEA2L,EAAOloJ,UAAUynC,SAAW,SAAmBm+G,GAC3C,OAAO5pJ,KAAKwsJ,YAAY5C,EAAOp4H,YAC3Bo4H,EAAO4C,YAAYxsJ,KAAKwxB,UAChC,EAEA06H,EAAO5gJ,OAAS,SAAiBujB,EAAGjkB,GAChC,OAAIikB,aAAaq9H,EACNr9H,EACAA,GAAKjkB,EACL,IAAIshJ,EAAOr9H,EAAGjkB,GACdikB,GAAkB,IAAbA,EAAEz0B,SAAiBwQ,EACxB,IAAIshJ,EAAO,CACdr9H,EAAE,GACFA,EAAE,IACH,CACCA,EAAE,GACFA,EAAE,UANH,CASX,EAEAwY,EAAgBklH,MAAMngJ,IAAM,WACxB,OAAO,IAAI8/I,EAAO,CAAE,IAAK,KAAO,EAAG,GAAI,KAC3C,EAEArhJ,OAAOq4B,iBAAkBgpH,EAAQ7kH,GAE1B6kH,CACX,CArHqB,CAqHnBj7H,IC9HS87H,GAAgB,eCChBpyC,GAAW,SAAU1pF,GAC5B,SAAS0pF,EAAQqyC,EAAe13I,GAC5B2b,EAAMjuB,KAAKhD,MAEXA,KAAKgtJ,cAAgBA,EACrBhtJ,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,GAC5CtV,KAAKslB,OAAS,CAAES,EAAG,EAAGC,EAAG,EAC7B,CAEKiL,IAAQ0pF,EAAQ5vG,UAAYkmB,GACjC0pF,EAAQ32G,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAClD22G,EAAQ32G,UAAUqH,YAAcsvG,EAEhC,IAAI73E,EAAqB,CAAEpd,OAAQ,CAAEpZ,cAAc,IAgDnD,OA9CAquG,EAAQ32G,UAAU3L,KAAO,SAAeqtB,EAAQ1d,GACxChI,KAAK6S,WAAa7K,EAAK6K,WAI3B7S,KAAK0lB,OAASA,EACd1lB,KAAK6S,SAAW7K,EAAK6K,SAErB7S,KAAKgtJ,cAAc97F,OD1BD,cC2BdrmD,OAAOW,OAAO,CAAEka,OAAQ1lB,KAAK0lB,QAAU1d,IAG3ChI,KAAKjM,SAAU,EACnB,EAEA4mH,EAAQ32G,UAAU7N,KAAO,WACjB6J,KAAKgtJ,eACLhtJ,KAAKgtJ,cAAc97F,ODlCL,eCqClBlxD,KAAKjM,SAAU,EACfiM,KAAK6S,SAAW,IACpB,EAEAiwB,EAAmBpd,OAAOtZ,IAAM,WAC5B,OAAOpM,KAAKitJ,OAChB,EAEAnqH,EAAmBpd,OAAOuD,IAAM,SAAUvD,GACtC,IAAIwnI,EAAgBltJ,KAAKgtJ,cAAc1+F,OAAOigE,uBAAuB,CACjExoG,EAAGL,EAAOoC,KAAO9nB,KAAKslB,OAAOS,EAC7BC,EAAGN,EAAOiC,IAAM3nB,KAAKslB,OAAOU,IAGhChmB,KAAKitJ,QAAU,CACXnlI,KAAMolI,EAAcplI,KACpBH,IAAKulI,EAAcvlI,IAE3B,EAEAgzF,EAAQ32G,UAAUs/C,QAAU,WACxBtjD,KAAKgtJ,cAAgB,IACzB,EAEAniJ,OAAOq4B,iBAAkBy3E,EAAQ32G,UAAW8+B,GAErC63E,CACX,CA9DsB,CA8DpB1pF,IAEF0E,GAAkBglF,GAAS,CACvB9zD,OAAQ,CACJryD,MAAO,GAEXghD,QAAS,ICxDN,IAAI23G,GAAS,SAAUl8H,GAC1B,SAASk8H,EAAM9yJ,EAAKib,GAChB2b,EAAMjuB,KAAKhD,MAEXA,KAAKorB,QAAUs8H,KAEf1nJ,KAAKg1C,aAAa1/B,GAClBtV,KAAK3F,IAAMA,EAEX,IAAI7G,EAAUsF,SAASomB,cAAc,OACrC1W,EAAShV,EAAS,WAClBA,EAAQiD,MAAMmuD,OAAS5kD,KAAKsV,QAAQsvC,OACpCpxD,EAAQiD,MAAM++C,QAAUx1C,KAAKsV,QAAQkgC,QAErCx1C,KAAKxM,QAAUA,EAEf6G,EAAI+yJ,cAAc5tI,YAAYxf,KAAKxM,SAEnCwM,KAAKqtJ,aAAertJ,KAAKqtJ,aAAattJ,KAAKC,MAC3CA,KAAKstJ,OAASttJ,KAAKstJ,OAAOvtJ,KAAKC,MAC/BA,KAAKqhG,QAAUrhG,KAAKqhG,QAAQthG,KAAKC,MACjCA,KAAKutJ,QAAUvtJ,KAAKutJ,QAAQxtJ,KAAKC,MAEjCA,KAAKwtJ,YACLxtJ,KAAKytJ,oBACT,CAuGA,OArGKx8H,IAAQk8H,EAAMpiJ,UAAYkmB,GAC/Bk8H,EAAMnpJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAChDmpJ,EAAMnpJ,UAAUqH,YAAc8hJ,EAE9BA,EAAMnpJ,UAAUs/C,QAAU,WACtBtjD,KAAK0tJ,aACT,EAEAP,EAAMnpJ,UAAUgxC,aAAe,SAAuB1/B,GAClDtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEA63I,EAAMnpJ,UAAU3L,KAAO,WACnB2H,KAAK6iF,QACL7iF,KAAKwtJ,YACLxtJ,KAAK2tJ,cAAa,EACtB,EAEAR,EAAMnpJ,UAAU7N,KAAO,WACnB6J,KAAK0tJ,cACL1tJ,KAAK4tJ,gBAAe,EACxB,EAEAT,EAAMnpJ,UAAU6+E,MAAQ,WACpB7iF,KAAKqtJ,eACLrtJ,KAAKstJ,QACT,EAEAH,EAAMnpJ,UAAUspJ,OAAS,WACrBttJ,KAAK2tJ,cACT,EAEAR,EAAMnpJ,UAAUqpJ,aAAe,WAE/B,EAEAF,EAAMnpJ,UAAUq9F,QAAU,WAE1B,EAEA8rD,EAAMnpJ,UAAUupJ,QAAU,WACtBvtJ,KAAK2tJ,cACT,EAEAR,EAAMnpJ,UAAU2pJ,aAAe,WAC3B,IAAIr4I,EAAUtV,KAAKsV,QACfk+F,EAAOxzG,KAAK3F,IAAIm5G,OAChBq6C,GAAgB1oI,GAAQ7P,EAAQ+0I,UAAY72C,GAAQl+F,EAAQ+0I,QAC5DyD,GAAgB3oI,GAAQ7P,EAAQg1I,UAAY92C,GAAQl+F,EAAQg1I,QAC5DV,EAASsC,GAAO5gJ,OAAOgK,EAAQs0I,QAC/BmE,GAAUnE,GAAUA,EAAOn+G,SAASzrC,KAAK3F,IAAIuvJ,UAEjD5pJ,KAAK4tJ,eAAeC,GAAgBC,GAAgBC,EACxD,EAEAZ,EAAMnpJ,UAAU4pJ,eAAiB,SAAyB75J,GACtDiM,KAAKxM,QAAQiD,MAAMC,QAAU3C,EAAU,GAAK,MAChD,EAEAo5J,EAAMnpJ,UAAUwpJ,UAAY,WACxB,IAAInzJ,EAAM2F,KAAK3F,IAEf2F,KAAK0tJ,cAELrzJ,EAAI0F,KAAK,cAAeC,KAAKqtJ,cAC7BhzJ,EAAI0F,KAAK,QAASC,KAAKstJ,QACvBjzJ,EAAI0F,KAAK,SAAUC,KAAKqhG,SACxBhnG,EAAI0F,KAAK,SAAUC,KAAKutJ,QAC5B,EAEAJ,EAAMnpJ,UAAU0pJ,YAAc,WAC1B,IAAIrzJ,EAAM2F,KAAK3F,IAEfA,EAAI+lG,OAAO,cAAepgG,KAAKqtJ,cAC/BhzJ,EAAI+lG,OAAO,QAASpgG,KAAKstJ,QACzBjzJ,EAAI+lG,OAAO,SAAUpgG,KAAKqhG,SAC1BhnG,EAAI+lG,OAAO,SAAUpgG,KAAKutJ,QAC9B,EAEAJ,EAAMnpJ,UAAUypJ,mBAAqB,WACjC,IAAIO,EAAchuJ,KAAK3F,IAAI2zJ,YAEvBA,GACAA,EAAY7kJ,IAAInJ,KAAKsV,QAAQ04I,YAErC,EAEAb,EAAMnpJ,UAAUiqJ,UAAY,WAExB,OADWjuJ,KAAKsV,QAAQ2B,MAAQ,EAEpC,EAEAk2I,EAAMnpJ,UAAUkqJ,SAAW,WACvB,OAAOluJ,KAAKmuJ,OAASnuJ,KAAKmuJ,MAAM/zJ,OAAS,CAC7C,EAEA+yJ,EAAMnpJ,UAAUoqJ,YAAc,WAE1B,OADapuJ,KAAK3F,IAAIg0J,QAAU,IAClBhlJ,QAAQrJ,KAC1B,EAEOmtJ,CACX,CAjIoB,CAiIlBl8H,IC3HEkvH,GAAOr/H,KACPmkB,GAAQ9oB,GAEZ,SAASmyI,GAAgBtmI,GACrB,OAAI5B,GAAW4B,GACJA,EAGJC,GAAAA,QAAwBD,EACnC,CAEA,SAASumI,GAAWrpH,GAChB,OAAO,IAAID,GAAMjkB,GAAMkkB,EAAMnf,GAAI/E,GAAMkkB,EAAMlf,GACjD,CAEA,SAASwoI,GAAW53J,GAChB,IAAI63J,EAAU73J,EAMd,MAJqB,kBAAVA,IACP63J,GAAW,MAGRA,CACX,CAEO,IAAIC,GAAa,SAAUvB,GAC9B,SAASuB,EAAUr0J,EAAKib,GACpB63I,EAAMnqJ,KAAKhD,KAAM3F,EAAKib,GAEiB,kBAA5BtV,KAAKsV,QAAQq5I,aACpB3uJ,KAAKsV,QAAQq5I,WAAa3uJ,KAAKsV,QAAQq5I,WAAWpnJ,MAAM,KAG5D,IAAIqnJ,EAAW5uJ,KAAK6uJ,YACpB7uJ,KAAK8uJ,MAAQ,IAAIF,EAAS5uJ,KAAKxM,QAASwM,KAAKsV,QACjD,CA4EA,OA1EK63I,IAAQuB,EAAU3jJ,UAAYoiJ,GACnCuB,EAAU1qJ,UAAY6G,OAAOS,OAAQ6hJ,GAASA,EAAMnpJ,WACpD0qJ,EAAU1qJ,UAAUqH,YAAcqjJ,EAElCA,EAAU1qJ,UAAUs/C,QAAU,WAC1B6pG,EAAMnpJ,UAAUs/C,QAAQtgD,KAAKhD,MAC7BA,KAAK8uJ,MAAMxrG,UACXtjD,KAAK8uJ,MAAQ,IACjB,EAEAJ,EAAU1qJ,UAAUqpJ,aAAe,WAC/B,IAAIhzJ,EAAM2F,KAAK3F,IACXktC,EAASltC,EAAI00J,gBAAgB10J,EAAIuvJ,SAASyC,IAAIrrI,QAClDhhB,KAAK8uJ,MAAME,WAAWznH,EAC1B,EAEAmnH,EAAU1qJ,UAAUspJ,OAAS,WACzBH,EAAMnpJ,UAAUspJ,OAAOtqJ,KAAKhD,MAC5BA,KAAKivJ,cACLjvJ,KAAK8uJ,MAAMjsE,OACf,EAEA6rE,EAAU1qJ,UAAU6qJ,UAAY,WAC5B,OAAOK,EACX,EAEAR,EAAU1qJ,UAAUwpJ,UAAY,WAC5BL,EAAMnpJ,UAAUwpJ,UAAUxqJ,KAAKhD,MAE1BA,KAAKorB,QAAQu8H,WACT3nJ,KAAK0rJ,OACN1rJ,KAAK0rJ,KAAO7/C,GAAS7rG,KAAK+yI,QAAQhzI,KAAKC,MAAO,MAGlDA,KAAK3F,IAAI0F,KAAK,MAAOC,KAAK0rJ,MAElC,EAEAgD,EAAU1qJ,UAAU0pJ,YAAc,WAC9BP,EAAMnpJ,UAAU0pJ,YAAY1qJ,KAAKhD,MAE7BA,KAAK0rJ,MACL1rJ,KAAK3F,IAAI+lG,OAAO,MAAOpgG,KAAK0rJ,KAEpC,EAEAgD,EAAU1qJ,UAAUirJ,YAAc,WAC9B,IAAIE,EAAOnvJ,KAAK8uJ,MACZz0J,EAAM2F,KAAK3F,IACXuvJ,EAASvvJ,EAAIuvJ,SACbwF,EAAgB,CACZ/C,GAAIhyJ,EAAI00J,gBAAgBnF,EAAOyC,IAAIrrI,QACnCsrI,GAAIjyJ,EAAI00J,gBAAgBnF,EAAO0C,IAAItrI,SAG3CmuI,EAAKhqH,OAAO9qC,EAAI00J,gBAAgB10J,EAAI8qC,WACpCgqH,EAAKvF,OAAOwF,GACZD,EAAK37C,KAAKn5G,EAAIm5G,OAClB,EAEAk7C,EAAU1qJ,UAAUq9F,QAAU,WAC1BrhG,KAAK+yI,SACT,EAEA2b,EAAU1qJ,UAAUupJ,QAAU,SAAkBv6J,GAC5Cm6J,EAAMnpJ,UAAUupJ,QAAQvqJ,KAAKhD,KAAMhN,GACnCgN,KAAK+yI,SACT,EAEA2b,EAAU1qJ,UAAU+uI,QAAU,WAC1B/yI,KAAKivJ,cACLjvJ,KAAK8uJ,MAAM11J,QACf,EAEOs1J,CACX,CAvFwB,CAuFtBvB,IAEFx3H,GAAkB+4H,GAAW,CACzBW,SAAU,IACVV,WAAY,CAAC,IAAK,IAAK,KACvBW,YAAa,GACb1qG,OAAQ,IAGL,IAAIsqG,GAAY,SAAUj+H,GAC7B,SAASi+H,EAAS17J,EAAS8hB,GACvB2b,EAAMjuB,KAAKhD,MACXA,KAAKxM,QAAUA,EACfwM,KAAKg1C,aAAa1/B,GAClBtV,KAAKuvJ,KAAO,IAAIC,EACpB,CAqJA,OAnJKv+H,IAAQi+H,EAASnkJ,UAAYkmB,GAClCi+H,EAASlrJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnDkrJ,EAASlrJ,UAAUqH,YAAc6jJ,EAEjCA,EAASlrJ,UAAUgxC,aAAe,SAAuB1/B,GACrDtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEA45I,EAASlrJ,UAAUmhC,OAAS,SAAiBsqH,GACzCzvJ,KAAK0vJ,QAAUD,CACnB,EAEAP,EAASlrJ,UAAU4lJ,OAAS,SAAiB+F,GACzC3vJ,KAAK6pJ,QAAU8F,CACnB,EAEAT,EAASlrJ,UAAUgrJ,WAAa,SAAqBznH,GACjDvnC,KAAK4vJ,YAAcroH,CACvB,EAEA2nH,EAASlrJ,UAAUwvG,KAAO,SAAeq8C,GACrC7vJ,KAAKs5H,MAAQu2B,CACjB,EAEAX,EAASlrJ,UAAU8rJ,iBAAmB,SAA2B5qH,GAC7D,OAAO,IAAID,GAAMk7G,GAAKv0H,MAAMsZ,EAAMnf,EAAI/lB,KAAKsV,QAAQ+5I,UAAWlP,GAAKv0H,MAAMsZ,EAAMlf,EAAIhmB,KAAKsV,QAAQ+5I,UACpG,EAEAH,EAASlrJ,UAAU+rJ,UAAY,WAC3B,IAAIn5J,EAAOoJ,KAAKpJ,OACZo5J,EAAiBhwJ,KAAK8vJ,iBAAiB9vJ,KAAK6pJ,QAAQwC,IACpDA,EAAKrsJ,KAAK6pJ,QAAQwC,GAClBnnH,EAAQllC,KAAKiwJ,aAAaD,GAAgBrqI,WAAW0mI,EAAGtmI,GAAIsmI,EAAGrmI,GAEnE,MAAO,CACHD,EAAGo6H,GAAKx0H,MAAMw0H,GAAKp/H,IAAImkB,EAAMnf,GAAKnvB,EAAKpC,OAASwL,KAAKsV,QAAQ+5I,UAC7DrpI,EAAGm6H,GAAKx0H,MAAMw0H,GAAKp/H,IAAImkB,EAAMlf,GAAKpvB,EAAKnC,QAAUuL,KAAKsV,QAAQ+5I,UAEtE,EAEAH,EAASlrJ,UAAUpN,KAAO,WACtB,IAAIy1J,EAAKrsJ,KAAK6pJ,QAAQwC,GAElBzrI,EADK5gB,KAAK6pJ,QAAQyC,GACRzlI,QAAQlB,WAAW0mI,EAAGtmI,GAAIsmI,EAAGrmI,GAE3C,MAAO,CACHxxB,MAAOosB,EAAKmF,EACZtxB,OAAQmsB,EAAKoF,EAErB,EAEAkpI,EAASlrJ,UAAUisJ,aAAe,SAAuB31J,GACrD,IAAIyrB,EAAIzrB,EAAMyrB,EACVC,EAAI1rB,EAAM0rB,EAEd,OAAO,IAAIif,GAAMlf,EAAI/lB,KAAKsV,QAAQ+5I,SAAUrpI,EAAIhmB,KAAKsV,QAAQ+5I,SACjE,EAEAH,EAASlrJ,UAAUksJ,cAAgB,WAC/B,IAAIvB,EAAa3uJ,KAAKsV,QAAQq5I,WAC9B,OAAOA,EAAW3uJ,KAAKmwJ,iBAAmBxB,EAAWv0J,OACzD,EAEA80J,EAASlrJ,UAAUs/C,QAAU,WACzBwhG,GAAe9kJ,KAAKxM,SACpBwM,KAAKuvJ,KAAKpiE,OACd,EAEA+hE,EAASlrJ,UAAU6+E,MAAQ,WACvB7iF,KAAKuvJ,KAAK1sE,QACV7iF,KAAKmwJ,eAAiB,EACtBnwJ,KAAK5G,QACT,EAEA81J,EAASlrJ,UAAU5K,OAAS,WACxB,IAIIg3J,EAAMrqI,EAAGC,EAFTpvB,EAAOoJ,KAAK+vJ,YACZC,EAAiBhwJ,KAAK8vJ,iBAAiB9vJ,KAAK6pJ,QAAQwC,IAGxD,IAAKtmI,EAAI,EAAGA,EAAInvB,EAAKmvB,EAAGA,IACpB,IAAKC,EAAI,EAAGA,EAAIpvB,EAAKovB,EAAGA,KACpBoqI,EARKpwJ,KAQSqwJ,WAAW,CACrBtqI,EAAGiqI,EAAejqI,EAAIA,EACtBC,EAAGgqI,EAAehqI,EAAIA,KAGhBjyB,SACNq8J,EAAK/3J,MAIrB,EAEA62J,EAASlrJ,UAAUqsJ,WAAa,SAAqBC,GACjD,IAAIh7I,EAAUtV,KAAKuwJ,YAAYD,GAC3BF,EAAOpwJ,KAAKuvJ,KAAKnjJ,IAAIpM,KAAK0vJ,QAASp6I,GAMvC,OAJK86I,EAAK58J,QAAQshC,YACd90B,KAAKxM,QAAQq4B,OAAOukI,EAAK58J,SAGtB48J,CACX,EAEAlB,EAASlrJ,UAAUusJ,YAAc,SAAsBD,GACnD,IAAIh2J,EAAQ0F,KAAKwwJ,UAAUF,GACvBprH,EAAQllC,KAAKiwJ,aAAaK,GAC1B/oH,EAASvnC,KAAK4vJ,YACdtqI,EAAS4f,EAAMre,QAAQlB,WAAW4hB,EAAOxhB,GAAIwhB,EAAOvhB,GAExD,MAAO,CACH1rB,MAAOA,EACPg2J,aAAcA,EACdprH,MAAOA,EACP5f,OAAQipI,GAAWjpI,GACnBkuF,KAAMxzG,KAAKs5H,MACX1iI,KAAMoJ,KAAKsV,QAAQ+5I,SACnBoB,UAAWzwJ,KAAKkwJ,gBAChBZ,YAAatvJ,KAAKsV,QAAQg6I,YAC1BoB,iBAAkB1wJ,KAAKsV,QAAQo7I,iBAEvC,EAEAxB,EAASlrJ,UAAUwsJ,UAAY,SAAoBl2J,GAC/C,IAAIq2J,EAAWxQ,GAAK92H,IAAI,EAAGrpB,KAAKs5H,OAEhC,MAAO,CACHvzG,EAAG/lB,KAAK4wJ,UAAUt2J,EAAMyrB,EAAG4qI,GAC3B3qI,EAAG0I,GAAWp0B,EAAM0rB,EAAG,EAAG2qI,EAAW,GAE7C,EAEAzB,EAASlrJ,UAAU4sJ,UAAY,SAAoBzzJ,EAAOwzJ,GACtD,IAAI7nF,EAAYq3E,GAAKp/H,IAAI5jB,GAASwzJ,EASlC,OANIxzJ,GAAS,EACM2rE,EAEA6nF,GAA0B,IAAd7nF,EAAkB6nF,EAAW7nF,EAIhE,EAEOomF,CACX,CA5JuB,CA4JrBj+H,IAES4/H,GAAa,SAAU5/H,GAC9B,SAAS4/H,EAAUv6J,EAAIgf,GACnB2b,EAAMjuB,KAAKhD,MACXA,KAAK1J,GAAKA,EACV0J,KAAKjM,SAAU,EACfiM,KAAKg1C,aAAa1/B,GAClBtV,KAAKkf,gBACLlf,KAAK3H,MACT,CAkGA,OAhGK44B,IAAQ4/H,EAAU9lJ,UAAYkmB,GACnC4/H,EAAU7sJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpD6sJ,EAAU7sJ,UAAUqH,YAAcwlJ,EAElCA,EAAU7sJ,UAAUs/C,QAAU,WAC1B,IAAI9vD,EAAUwM,KAAKxM,QACfshC,EAAathC,EAAUA,EAAQshC,WAAa,KAE5CthC,IACIshC,GACAA,EAAWpV,YAAYlsB,GAG3BwM,KAAKxM,QAAU,KAEvB,EAEAq9J,EAAU7sJ,UAAUgxC,aAAe,SAAuB1/B,GACtDtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEAu7I,EAAU7sJ,UAAUkb,cAAgB,WAChC,IAAI4xI,EAAKh4J,SAASomB,cAAc,OAC5BtoB,EAAOoJ,KAAKsV,QAAQ1e,KAAO,KAC/Bk6J,EAAGr6J,MAAMomD,SAAW,WACpBi0G,EAAGr6J,MAAMC,QAAU,QACnBo6J,EAAGr6J,MAAMjC,MAAQs8J,EAAGr6J,MAAMs6J,SAAWn6J,EACrCk6J,EAAGr6J,MAAMhC,OAASq8J,EAAGr6J,MAAMu6J,UAAYp6J,EAEvCoJ,KAAKxM,QAAUs9J,CAkBnB,EAEAD,EAAU7sJ,UAAU3L,KAAO,WACvB,IAAI7E,EAAUwM,KAAKxM,QACnBA,EAAQiD,MAAMkxB,IAAM6mI,GAAWxuJ,KAAKsV,QAAQgQ,OAAOU,GACnDxyB,EAAQiD,MAAMqxB,KAAO0mI,GAAWxuJ,KAAKsV,QAAQgQ,OAAOS,GAEpD,IAAIxpB,EAAMyD,KAAKzD,MAEXA,GACA/I,EAAQE,aAAa,MAAO6I,GAGhC/I,EAAQiD,MAAM6gI,WAAa,UAC3Bt3H,KAAKjM,SAAU,CACnB,EAEA88J,EAAU7sJ,UAAU7N,KAAO,WACvB6J,KAAKxM,QAAQiD,MAAM6gI,WAAa,SAChCt3H,KAAKjM,SAAU,CACnB,EAEA88J,EAAU7sJ,UAAUzH,IAAM,WAEtB,OADgB+xJ,GAAgBtuJ,KAAKsV,QAAQg6I,YACtC2B,CAAUjxJ,KAAKkxJ,aAC1B,EAEAL,EAAU7sJ,UAAUmtJ,SAAW,WAE3B,OADgB7C,GAAgBtuJ,KAAKsV,QAAQo7I,iBACtCO,CAAUjxJ,KAAKkxJ,aAC1B,EAEAL,EAAU7sJ,UAAUktJ,WAAa,WAC7B,IAAI57I,EAAUtV,KAAKsV,QAEnB,MAAO,CACHk+F,KAAMl+F,EAAQk+F,KACdi9C,UAAWn7I,EAAQm7I,UACnBW,EAAG97I,EAAQk+F,KACXztF,EAAGzQ,EAAQhb,MAAMyrB,EACjBC,EAAG1Q,EAAQhb,MAAM0rB,EACjBva,EAAG6J,EAAQm7I,UACXY,QAAS/7I,EAAQ+7I,QACjBnwH,EAAG5rB,EAAQ+7I,QACXhjG,QAAS/4C,EAAQ+4C,QACjB5mD,EAAG6N,EAAQ+4C,QAEnB,EAEOwiG,CACX,CA3GwB,CA2GtB5/H,IAEF0E,GAAkBk7H,GAAW,CACzBvB,YAAa,GACboB,iBAAkB,KAGf,IAAIlB,GAAY,SAAUv+H,GAC7B,SAASu+H,IACLv+H,EAAMjuB,KAAKhD,MACXA,KAAKuiD,OAAS,EAClB,CA0EA,OAxEKtxB,IAAQu+H,EAASzkJ,UAAYkmB,GAClCu+H,EAASxrJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACnDwrJ,EAASxrJ,UAAUqH,YAAcmkJ,EAEjCA,EAASxrJ,UAAUoI,IAAM,SAAc+4B,EAAQ7vB,GAK3C,OAJItV,KAAKuiD,OAAOnoD,QAAU4F,KAAKsV,QAAQ82C,SACnCpsD,KAAKi0C,QAAQ9O,GAGVnlC,KAAKsxJ,QAAQh8I,EACxB,EAEAk6I,EAASxrJ,UAAUmpF,MAAQ,WAGvB,IAFA,IAAIjsC,EAAQlhD,KAAKuiD,OAER72C,EAAI,EAAGA,EAAIw1C,EAAM9mD,OAAQsR,IAC9Bw1C,EAAMx1C,GAAG43C,UAGbtjD,KAAKuiD,OAAS,EAClB,EAEAitG,EAASxrJ,UAAU6+E,MAAQ,WAGvB,IAFA,IAAI3hC,EAAQlhD,KAAKuiD,OAER72C,EAAI,EAAGA,EAAIw1C,EAAM9mD,OAAQsR,IAC9Bw1C,EAAMx1C,GAAGvV,MAEjB,EAEAq5J,EAASxrJ,UAAUstJ,QAAU,SAAkBh8I,GAK3C,IAJA,IACI86I,EADAlvG,EAAQlhD,KAAKuiD,OAEbjsD,EAAKq9B,GAAQre,EAAQ4vB,MAAM3kC,WAAa+U,EAAQgQ,OAAO/kB,WAAa+U,EAAQk+F,KAAOl+F,EAAQg6I,aAEtF5jJ,EAAI,EAAGA,EAAIw1C,EAAM9mD,OAAQsR,IAC9B,GAAIw1C,EAAMx1C,GAAGpV,KAAOA,EAAI,CACpB85J,EAAOlvG,EAAMx1C,GACb,KACJ,CAUJ,OAPI0kJ,EACAA,EAAK/3J,QAEL+3J,EAAO,IAAIS,GAAUv6J,EAAIgf,GACzBtV,KAAKuiD,OAAOnzC,KAAKghJ,IAGdA,CACX,EAEAZ,EAASxrJ,UAAUiwC,QAAU,SAAkB9O,GAK3C,IAJA,IAAI+b,EAAQlhD,KAAKuiD,OACbgvG,GAAW,EACXj3J,GAAS,EAEJoR,EAAI,EAAGA,EAAIw1C,EAAM9mD,OAAQsR,IAAK,CACnC,IAAIoiC,EAAOoT,EAAMx1C,GAAG4J,QAAQ4vB,MAAMQ,WAAWP,GAEzC2I,EAAOyjH,IAAYrwG,EAAMx1C,GAAG3X,UAC5BuG,EAAQoR,EACR6lJ,EAAUzjH,EAElB,EAEe,IAAXxzC,IACA4mD,EAAM5mD,GAAOgpD,UACbpC,EAAM9a,OAAO9rC,EAAO,GAE5B,EAEOk1J,CACX,CA/EuB,CA+ErBv+H,IAEF0E,GAAkB65H,GAAU,CACxBpjG,QAAS,MCjeb,IAAIy6E,GAASh8H,OAAOW,OAEhBqgJ,GAAS,SAEF2F,GAAc,SAAU3xD,GAC/B,SAAS2xD,EAAWh+J,EAAS8hB,GACzBuqF,EAAW78F,KAAKhD,MAChB,IAAIypJ,EAAOzpJ,KACP8jG,EAAatwG,EAAQ,IAAMA,EAE/Bi2J,EAAKgI,SAAU,EAEf,IAAIlK,EAAWD,GAAYn8H,UAAUb,WAEjCw5E,EAAW3lG,kBACXopJ,EAASC,KAAKjgJ,MAAM,KAAKC,SAAQ,SAASlL,GACtCwnG,EAAW3lG,iBAAiB7B,EAAOssJ,GAAMa,EAAKrwC,OAAQqwC,IAAO,EACjE,IACAlC,EAASE,GAAGlgJ,MAAM,KAAKC,SAAQ,SAASlL,GACpCwnG,EAAW3lG,iBAAiB7B,EAAOssJ,GAAMa,EAAKiI,SAAUjI,IAAO,EACnE,MAEAlC,EAASC,KAAKjgJ,MAAM,KAAKC,SAAQ,SAASlL,GACtCwnG,EAAW6tD,YAAYr1J,EAAOssJ,GAAMa,EAAKrwC,OAAQqwC,GACrD,IACAlC,EAASE,GAAGlgJ,MAAM,KAAKC,SAAQ,SAASlL,GACpCwnG,EAAW6tD,YAAYr1J,EAAOssJ,GAAMa,EAAKiI,SAAUjI,GACvD,KAGJA,EAAK1pJ,KAAK,CACN,QACA,WACDuV,GAAW,CAAC,EACnB,CAmCA,OAjCKuqF,IAAa2xD,EAAWzmJ,UAAY80F,GACzC2xD,EAAWxtJ,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAC/DwtJ,EAAWxtJ,UAAUqH,YAAcmmJ,EAEnCA,EAAWxtJ,UAAU4tJ,YAAc,WAC/B5xJ,KAAKyxJ,SAAU,CACnB,EAEAD,EAAWxtJ,UAAU6tJ,cAAgB,WACjC7xJ,KAAKyxJ,SAAU,CACnB,EAEAD,EAAWxtJ,UAAUo1G,OAAS,SAAiBpmH,GAChCgN,KAEN+pB,QAAQ,SAFF/pB,KAIFyxJ,SACLz+J,EAAE88D,gBAEV,EAEA0hG,EAAWxtJ,UAAU0tJ,SAAW,SAAmB1+J,GAC/C,IAAIy2J,EAAOzpJ,KAEXypJ,EAAK1/H,QAAQ,WAET0/H,EAAKgI,UACLz+J,EAAE88D,iBACF25F,EAAKoI,gBAEb,EAEOL,CACX,CAlEyB,CAkEvB3xD,IAESiyD,GAAiB,SAAUjyD,GAClC,SAASiyD,EAAcx8I,GACnBuqF,EAAW78F,KAAKhD,MAChB,IAAIypJ,EAAOzpJ,KACXypJ,EAAKsI,eAAgB,EACrBlrB,GAAO4iB,EAAMn0I,GACbm0I,EAAKz3H,MAAQ,EAETy3H,EAAKlsE,YACLksE,EAAKt1H,QAAU,cACfs1H,EAAKuI,WAAa,cAClBvI,EAAK1+G,KAAO,MAEZ0+G,EAAKt1H,QAAU,eACfs1H,EAAKuI,WAAa,eAClBvI,EAAK1+G,KAAO,IAEpB,CAkEA,OAhEK80D,IAAaiyD,EAAc/mJ,UAAY80F,GAC5CiyD,EAAc9tJ,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAClE8tJ,EAAc9tJ,UAAUqH,YAAcymJ,EAEtCA,EAAc9tJ,UAAUiuJ,YAAc,WAClCprB,GAAO7mI,KAAM,CACTkyJ,SAAS,EACTH,eAAe,EACfI,YAAa,EACbC,YAAa,GAErB,EAEAN,EAAc9tJ,UAAUquJ,YAAc,SAAsB1jI,EAAKnD,GACzDxrB,KAAKmyJ,cAAgBxjI,GAAO3uB,KAAKoyJ,cAAgB5mI,IACjDxrB,KAAKmyJ,YAAcxjI,EACnB3uB,KAAKoyJ,YAAc5mI,EACnBxrB,KAAK0iF,SAEb,EAEAovE,EAAc9tJ,UAAUsuJ,YAAc,SAAsBhtI,GACxD,OAAOA,EAAStlB,KAAKwrB,KAAOlG,EAAStlB,KAAK2uB,GAC9C,EAEAmjI,EAAc9tJ,UAAUuuJ,aAAe,WACnCvyJ,KAAK+xJ,eAAgB,CACzB,EAEAD,EAAc9tJ,UAAUglC,QAAU,WAC9B,OAAOhpC,KAAKkiB,UAAUliB,KAAKm0B,QAC/B,EAEA29H,EAAc9tJ,UAAUwuJ,SAAW,WAC/B,OAAOxyJ,KAAKxM,QAAQwM,KAAKgyJ,WAC7B,EAEAF,EAAc9tJ,UAAUyuJ,QAAU,SAAkBzgI,GAChDhyB,KAAKgyB,MAAQA,CACjB,EAEA8/H,EAAc9tJ,UAAU0+E,OAAS,SAAiBg2C,GAC9C,IAAI+wB,EAAOzpJ,KACPod,EAAQqsI,EAAKyI,QAAUzI,EAAK2I,YAAc3I,EAAK+I,WAC/CE,EAAct1I,EAAQqsI,EAAKz3H,MAC3Bp7B,EAAO6yJ,EAAKzgH,WAEF,IAAV5rB,GAAgBqsI,EAAKsI,iBAIzBtI,EAAKj+H,IAAMi+H,EAAKyI,SAAWzI,EAAK0I,YAAc,EAC9C1I,EAAK7yJ,KAAOA,EACZ6yJ,EAAKrsI,MAAQs1I,EACbjJ,EAAK96H,IAAM7N,KAAK6N,IAAI86H,EAAKj+H,IAAK50B,EAAO87J,GACrCjJ,EAAKkJ,SAAW/7J,EAAOwmB,EACvBqsI,EAAKmJ,cAAgBF,EAAc97J,GAAQ,EAC3C6yJ,EAAKoJ,QAAUpJ,EAAKsI,eAAiBW,EAAc97J,EAE9C8hI,GACD+wB,EAAK1/H,QAAQ8hI,GAAQpC,GAE7B,EAEOqI,CACX,CApF4B,CAoF1BjyD,IAESizD,GAAkB,SAAUjzD,GACnC,SAASizD,EAAex9I,GACpBuqF,EAAW78F,KAAKhD,MAChB,IAAIypJ,EAAOzpJ,KAEXypJ,EAAK1jI,EAAI,IAAI+rI,GAAcjrB,GAAO,CAC9BtpD,YAAY,GACbjoE,IAEHm0I,EAAKzjI,EAAI,IAAI8rI,GAAcjrB,GAAO,CAC9BtpD,YAAY,GACbjoE,IAEHm0I,EAAKvnI,UAAY5M,EAAQ4M,UACzBunI,EAAKsJ,eAAiBz9I,EAAQq9I,SAC9BlJ,EAAKuJ,SAAW19I,EAAQ09I,UAAY,IACpCvJ,EAAK1pJ,KAAK8rJ,GAAQv2I,EACtB,CA6BA,OA3BKuqF,IAAaizD,EAAe/nJ,UAAY80F,GAC7CizD,EAAe9uJ,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WACnE8uJ,EAAe9uJ,UAAUqH,YAAcynJ,EAEvCA,EAAe9uJ,UAAUyuJ,QAAU,SAAkBQ,GACjDjzJ,KAAK+lB,EAAE0sI,QAAQQ,GACfjzJ,KAAKgmB,EAAEysI,QAAQQ,GACfjzJ,KAAKytF,SACT,EAEAqlE,EAAe9uJ,UAAUkvJ,kBAAoB,WACzC,MAAO,CACHntI,EAAGjF,KAAK6N,IAAI,GAAI3uB,KAAK+lB,EAAE6sI,cACvB5sI,EAAGlF,KAAK6N,IAAI,GAAI3uB,KAAKgmB,EAAE4sI,cAE/B,EAEAE,EAAe9uJ,UAAUypF,QAAU,WAC/B,IAAIg8D,EAAOzpJ,KACXypJ,EAAK1jI,EAAE28D,SACP+mE,EAAKzjI,EAAE08D,SACP+mE,EAAKoJ,QAAUpJ,EAAK1jI,EAAE8sI,SAAWpJ,EAAKzjI,EAAE6sI,QACxCpJ,EAAKkJ,SAAWlJ,EAAKsJ,gBAAkBjyI,KAAK6N,IAAI86H,EAAK1jI,EAAE4sI,SAAUlJ,EAAKzjI,EAAE2sI,UACxElJ,EAAKrlB,SAAWtjH,KAAK0K,IAAIi+H,EAAK1jI,EAAE4sI,SAAUlJ,EAAKzjI,EAAE2sI,UACjDlJ,EAAK1/H,QAAQ8hI,GACjB,EAEOiH,CACX,CA/C6B,CA+C3BjzD,IAESszD,GAAY,SAAUtzD,GAC7B,SAASszD,EAAS79I,GACduqF,EAAW78F,KAAKhD,MAChB6mI,GAAO7mI,KAAMsV,EACjB,CA+BA,OA7BKuqF,IAAaszD,EAASpoJ,UAAY80F,GACvCszD,EAASnvJ,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAC7DmvJ,EAASnvJ,UAAUqH,YAAc8nJ,EAEjCA,EAASnvJ,UAAUsuJ,YAAc,WAC7B,OAAOtyJ,KAAKozJ,UAAUd,YAAYtyJ,KAAKqzJ,QAAQrzJ,KAAK+qC,MACxD,EAEAooH,EAASnvJ,UAAUsvJ,SAAW,SAAmBhoI,GAC7C,IAAIm+H,EAAOzpJ,KACPozJ,EAAY3J,EAAK2J,UACjBroH,EAAO0+G,EAAK1+G,KACZsoH,EAAU5J,EAAK4J,QACfx2G,EAAWw2G,EAAQtoH,GAAQzf,EAE/B,GAAK8nI,EAAUP,QAAf,CAIA,IAAIU,EAAYjoI,GAEZuxB,EAAWu2G,EAAUzkI,KAAOrD,EAAQ,GAAKuxB,EAAWu2G,EAAU5nI,KAAOF,EAAQ,KAC7EioI,GAAa9J,EAAK+J,YAGtBH,EAAQI,cAAc1oH,EAAMwoH,GAC5B9J,EAAK1/H,QAAQ8hI,GAAQpC,EATrB,CAUJ,EAEO0J,CACX,CApCuB,CAoCrBtzD,IAES/S,GAAQ,SAAU77D,GACzB,SAAS67D,EAAKx3E,GACV2b,EAAMjuB,KAAKhD,MAEX,IACI+lB,EAAGC,EACHwtI,EACAH,EAHA5J,EAAOzpJ,KAKX6mI,GAAO4iB,EAAM,CACTiK,SAAS,GACVp+I,GAEHk+I,EAAa/J,EAAKiK,QAAU,GAAM,EAClCL,EAAU5J,EAAK4J,QAEf5J,EAAK1jI,EAAIA,EAAI,IAAIotI,GAAS,CACtBpoH,KAAM,IACNqoH,UAAW3J,EAAKkK,WAAW5tI,EAC3BytI,WAAYA,EACZH,QAASA,IAGb5J,EAAKzjI,EAAIA,EAAI,IAAImtI,GAAS,CACtBpoH,KAAM,IACNqoH,UAAW3J,EAAKkK,WAAW3tI,EAC3BwtI,WAAYA,EACZH,QAASA,IAGb5J,EAAKmK,WAAW7zJ,KAAK,CACjB,QACA,OACA,MACA,eACA,iBACD,CACCs5G,aAAc,SAAsBrmH,GAChCy2J,EAAKoK,QAAU7gK,EAEfy2J,EAAKnkI,OAAS0K,GAAcy5H,EAAKkK,WAAWzxI,UAChD,EACAi3F,MAAO,SAAenmH,GAClB,IAAI8gK,EAAgB9gK,EAAEsJ,MAAMsR,OAAOy3C,QAAQ,KAEvCyuG,GAAiBA,EAAch2J,QAAQ,kCACvC9K,EAAE+wD,OAAO/9C,QAEjB,EACAuzG,cAAe,SAAuBvmH,GAClC,IAMI48H,EANAmkC,EAAkBtK,EAAKoK,QACvBG,EAAiBD,EAAgB5uH,OACjCA,EAASnyC,EAAEmyC,OACX8pF,EAAaj8H,EAAEg6C,SAAW+mH,EAAgB/mH,SAC1C2lH,EAAWlJ,EAAKkK,WAAWhB,SAC3BK,EAAWvJ,EAAKkK,WAAWX,SAE3BK,EAAQrhI,OAAS2gI,GAAY1jC,EAAa,IAC1CA,GAAiC,IAAlB,EAAIA,IAGnBokC,EAAQrhI,MAAQi9F,GAAc+jC,IAC9B/jC,EAAa+jC,EAAWK,EAAQrhI,OAGpC,IAAIuiE,EAAU8+D,EAAQttI,EAAI0jI,EAAKnkI,OAAOwC,KAClC2sE,EAAU4+D,EAAQrtI,EAAIyjI,EAAKnkI,OAAOqC,IACtCioG,EAAc,CACV7pG,GAAIwuE,EAAUy/D,EAAejuI,GAAKkpG,EAAa9pF,EAAOpf,EAAIwuE,EAC1DvuE,GAAIyuE,EAAUu/D,EAAehuI,GAAKipG,EAAa9pF,EAAOnf,EAAIyuE,GAG9D4+D,EAAQY,UAAUhlC,GAElBlpG,EAAEutI,SAAS1jC,EAAY7pG,GACvBC,EAAEstI,SAAS1jC,EAAY5pG,GAEvByjI,EAAKkK,WAAWlB,QAAQY,EAAQrhI,OAChCy3H,EAAKoK,QAAU7gK,EAEfA,EAAE88D,gBACN,EACApoB,KAAM,SAAc10C,GACZA,EAAEsJ,MAAMsR,OAAOsmJ,QAAQzrI,MAAM,qBAI7B1C,EAAEqtI,UAAUP,SAAW7sI,EAAEotI,UAAUP,SACnC9sI,EAAEutI,SAAStgK,EAAE+yB,EAAEuF,OACftF,EAAEstI,SAAStgK,EAAEgzB,EAAEsF,OACft4B,EAAE88D,kBAEF98D,EAAEq7B,MAAMwkC,OAEhB,EACArpC,IAAK,SAAax2B,GACdA,EAAE88D,gBACN,GAER,CAMA,OAJK7+B,IAAQ67D,EAAK/hF,UAAYkmB,GAC9B67D,EAAK9oF,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAC/C8oF,EAAK9oF,UAAUqH,YAAcyhF,EAEtBA,CACX,CA1GmB,CA0GjB77D,IAEEtL,GAAY,SAASI,EAAGC,EAAGgM,GAC3B,MAAO,eAAiBjM,EAAI,MAAQC,EAAI,eAAiBgM,EAAQ,GACrE,EAEWmiI,GAAW,SAAUt0D,GAC5B,SAASs0D,EAAQ3gK,GACbqsG,EAAW78F,KAAKhD,MAEhB,IAAIypJ,EAAOzpJ,KAEXypJ,EAAKr+H,QAAUs8H,KACf1nJ,KAAKo0J,eAAiBp0J,KAAKorB,QAAQy0D,YAAYtrC,OAAS,YACxDk1G,EAAKj2J,QAAUA,EACfi2J,EAAKj2J,QAAQiD,MAAM49J,sBAAwB,WAC3C5K,EAAK1jI,EAAI,EACT0jI,EAAKzjI,EAAI,EACTyjI,EAAKz3H,MAAQ,EAEb,IAAI49F,EAAcjqG,GAAU8jI,EAAK1jI,EAAG0jI,EAAKzjI,EAAGyjI,EAAKz3H,OACjDy3H,EAAKj2J,QAAQiD,MAAMuJ,KAAKo0J,gBAAkBxkC,EAE1C65B,EAAK6K,iBAAiB1kC,EAC1B,CA8DA,OA5DK/vB,IAAas0D,EAAQppJ,UAAY80F,GACtCs0D,EAAQnwJ,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAC5DmwJ,EAAQnwJ,UAAUqH,YAAc8oJ,EAEhCA,EAAQnwJ,UAAUyvJ,cAAgB,SAAwB1oH,EAAMwpH,GAC5Dv0J,KAAK+qC,IAASwpH,EACdv0J,KAAKytF,SACT,EAEA0mE,EAAQnwJ,UAAUwwJ,QAAU,SAAkBxiI,GAC1ChyB,KAAKgyB,MAAQA,EACbhyB,KAAKytF,SACT,EAEA0mE,EAAQnwJ,UAAUiwJ,UAAY,SAAoBhlC,GAC9CjvH,KAAKgyB,OAASi9F,EACdjvH,KAAKytF,SACT,EAEA0mE,EAAQnwJ,UAAU2hB,UAAY,SAAoBiqG,GAC9C5vH,KAAK+lB,GAAK6pG,EAAY7pG,EACtB/lB,KAAKgmB,GAAK4pG,EAAY5pG,EACtBhmB,KAAKytF,SACT,EAEA0mE,EAAQnwJ,UAAUywJ,SAAW,SAAmB1pH,EAAM5tC,GAClD6C,KAAK+qC,GAAQ5tC,EACb6C,KAAKytF,SACT,EAEA0mE,EAAQnwJ,UAAUo6C,OAAS,SAAiBwxE,GACxCiX,GAAO7mI,KAAM4vH,GACb5vH,KAAKytF,SACT,EAEA0mE,EAAQnwJ,UAAUypF,QAAU,WACxB,IAGIinE,EAHAjL,EAAOzpJ,KACP+lB,EAAI0jI,EAAK1jI,EACTC,EAAIyjI,EAAKzjI,EAGTyjI,EAAKzoI,QACL+E,EAAIjF,KAAKE,MAAM+E,GACfC,EAAIlF,KAAKE,MAAMgF,KAGnB0uI,EAAiB/uI,GAAUI,EAAGC,EAAGyjI,EAAKz3H,UAEfy3H,EAAK75B,cACxB65B,EAAKj2J,QAAQiD,MAAMuJ,KAAKo0J,gBAAkBM,EAE1CjL,EAAK6K,iBAAiBI,GACtBjL,EAAK1/H,QAAQ8hI,IAErB,EAEAsI,EAAQnwJ,UAAUswJ,iBAAmB,SAA2B1kC,GAC5D5vH,KAAK4vH,YAAcA,CACvB,EAEOukC,CACX,CAjFsB,CAiFpBt0D,ICzaE7+C,GAAQr2C,GAEDgqJ,GAAc,SAAUxH,GAC/B,SAASwH,EAAWt6J,EAAKib,GACrB63I,EAAMnqJ,KAAKhD,KAAM3F,EAAKib,GAEtBtV,KAAK0rJ,KAAO9C,GAAM5oJ,KAAK0rJ,KAAM1rJ,MAE7BA,KAAKyuG,QAAU9jG,GAAAA,OAAiB3K,KAAKxM,QAAS,CAC1CgB,MAAO6F,EAAI+yJ,cAAcpb,YACzBv9I,OAAQ4F,EAAI+yJ,cAAcnb,eAG9BjyI,KAAK40J,YACL50J,KAAKqzJ,QAAU,IAAIc,GAAQn0J,KAAKyuG,QAAQj7G,SACxCwM,KAAK60J,SAAW,GAEhB70J,KAAKygG,OAASzgG,KAAK0gG,SAAS,cAC5B1gG,KAAKyuG,QAAQ1uG,KAAK,QAASC,KAAKygG,QAChCzgG,KAAK4gG,YAAc5gG,KAAK0gG,SAAS,mBACjC1gG,KAAKyuG,QAAQ1uG,KAAK,aAAcC,KAAK4gG,aACrC5gG,KAAKyuG,QAAQ1uG,KAAK,aAAcC,KAAK2gG,YAAY5gG,KAAKC,MAC1D,CAsNA,OApNKmtJ,IAAQwH,EAAW5pJ,UAAYoiJ,GACpCwH,EAAW3wJ,UAAY6G,OAAOS,OAAQ6hJ,GAASA,EAAMnpJ,WACrD2wJ,EAAW3wJ,UAAUqH,YAAcspJ,EAEnCA,EAAW3wJ,UAAUs/C,QAAU,WAC3B6pG,EAAMnpJ,UAAUs/C,QAAQtgD,KAAKhD,MAE7BA,KAAKyuG,QAAQnrD,SACjB,EAEAqxG,EAAW3wJ,UAAUspJ,OAAS,WAC1BH,EAAMnpJ,UAAUspJ,OAAOtqJ,KAAKhD,MAE5BA,KAAK80J,oBAEL90J,KAAKmuJ,MAAQnuJ,KAAKiuJ,YAEdjuJ,KAAKkuJ,YACLluJ,KAAK+0J,MAAM/0J,KAAKmuJ,MAExB,EAEAwG,EAAW3wJ,UAAU4wJ,UAAY,WAC7B50J,KAAK8pG,MAAQ,IAAI9oD,GACjBhhD,KAAKyuG,QAAQtuD,KAAKngD,KAAK8pG,MAC3B,EAEA6qD,EAAW3wJ,UAAUqpJ,aAAe,WAChCrtJ,KAAKyuG,QAAQxrE,QACbjjC,KAAK40J,WACT,EAEAD,EAAW3wJ,UAAUq9F,QAAU,WAC3BrhG,KAAKyuG,QAAQ73G,KAAKoJ,KAAK3F,IAAIzD,OAC/B,EAEA+9J,EAAW3wJ,UAAUiqJ,UAAY,WAC7B,IAAIh3I,EAAOk2I,EAAMnpJ,UAAUiqJ,UAAUjrJ,KAAKhD,MAE1C,MAAkB,sBAAdiX,EAAK9jB,KACE8jB,EAAK+9I,SAGE,uBAAd/9I,EAAK9jB,KACE8jB,EAAKg+I,WAGTh+I,CACX,EAEA09I,EAAW3wJ,UAAU+wJ,MAAQ,SAAgB99I,GAGzCjX,KAAKmuJ,MAAQl3I,EACbjX,KAAKk1J,gBAEAl1J,KAAKm1J,UACNn1J,KAAKm1J,QAAU,IAAIC,GAAcp1J,KAAK3F,IAAK2F,KAAKsV,QAAQ7e,MAAOuJ,OAKnE,IAFA,IAAIkiB,EAAY,IAAI8+B,GAEXt1C,EAAI,EAAGA,EAAIuL,EAAK7c,OAAQsR,IAAK,CAClC,IAAIlQ,EAZKwE,KAYUm1J,QAAQz/I,MAAMuB,EAAKvL,IAElClQ,GACA0mB,EAAU2J,OAAOrwB,EAEzB,CAEAwE,KAAK8pG,MAAM7mE,QACXjjC,KAAK8pG,MAAMj+E,OAAO3J,EACtB,EAEAyyI,EAAW3wJ,UAAUqxJ,aAAe,SAAuB75J,GACvD,IAAI85J,GAAY,EAUhB,GAJI95J,aAAiBmP,IAAY3K,KAAK3F,IAAIib,QAAQigJ,wBAC9CD,EAAYnwI,GAAQnlB,KAAKw1J,cAAch6J,MAGtC85J,EAAW,CACZ,IAAIttJ,EAAO,CACPytJ,MAAOz1J,KACPxE,MAAOA,GAGX85J,EAAYt1J,KAAK3F,IAAI0vB,QAAQ,eAAgB/hB,EACjD,CAEA,OAAOstJ,CACX,EAEAX,EAAW3wJ,UAAU0xJ,eAAiB,SAAyB1iK,GAC3DA,EAAEyiK,MAAQz1J,KACVA,KAAK3F,IAAI0vB,QAAQ,sBAAuB/2B,EAC5C,EAEA2hK,EAAW3wJ,UAAUwxJ,cAAgB,SAAwBh6J,GACzD,IAAIu5B,EAAS/0B,KAAK3F,IAAIgiF,QAAQt8E,KAAK,CAC/B8S,SAAUrX,EAAMqX,UACjBrX,EAAMwqD,UAMT,OAJIjxB,GACA/0B,KAAK60J,SAASzlJ,KAAK2lB,GAGhBA,CACX,EAEA4/H,EAAW3wJ,UAAUkxJ,cAAgB,WAGjC,IAFA,IAESxpJ,EAAI,EAAGA,EAAI1L,KAAK60J,SAASz6J,OAAQsR,IAF7B1L,KAGF3F,IAAIgiF,QAAQ10E,OAHV3H,KAGwB60J,SAASnpJ,IAG9C1L,KAAK60J,SAAW,EACpB,EAEAF,EAAW3wJ,UAAU0nJ,KAAO,WACnB1rJ,KAAK21J,WACN31J,KAAK21J,UAAW,EAChB31J,KAAKyuG,QAAQjN,kBAErB,EAEAmzD,EAAW3wJ,UAAUupJ,QAAU,SAAkBv6J,GAC7Cm6J,EAAMnpJ,UAAUupJ,QAAQvqJ,KAAKhD,KAAMhN,GACnCgN,KAAK80J,oBACL90J,KAAKyuG,QAAQ/M,iBACb1hG,KAAK21J,UAAW,CACpB,EAEAhB,EAAW3wJ,UAAU8wJ,kBAAoB,WACrC,IAAIz6J,EAAM2F,KAAK3F,IACXgyJ,EAAKhyJ,EAAIu7J,eAAev7J,EAAIuvJ,SAASyC,IAErCrsJ,KAAKyuG,QAAQ9oF,YACb3lB,KAAKyuG,QAAQ9oF,UAAU0mI,GACvBrsJ,KAAKqzJ,QAAQj1G,OAAO,CAChBr4B,EAAGsmI,EAAGtmI,EACNC,EAAGqmI,EAAGrmI,IAGlB,EAEA2uI,EAAW3wJ,UAAU6xJ,WAAa,SAAqB7iK,GACnD,MAAO,CACHyiK,MAAOz1J,KACP81J,WAAY91J,KAAKouJ,cACjB5yJ,MAAOxI,EAAEQ,QACTuiK,YAAa/1J,KAAKmuJ,OAAS,IAAI9kJ,QAAQrW,EAAEQ,QAAQwyD,UACjDg2B,cAAehpF,EAAEgpF,cAEzB,EAEA24E,EAAW3wJ,UAAU08F,SAAW,SAAmB7wE,GAC/C,IAAI2R,EAASxhC,KAEb,OAAO,SAAUhN,GACTA,EAAEQ,SACFguC,EAAOnnC,IAAI0vB,QAAQ8F,EAAW2R,EAAOq0H,WAAW7iK,GAExD,CACJ,EAEA2hK,EAAW3wJ,UAAU28F,YAAc,SAAsB3tG,GACrD,GAAKA,EAAEQ,QAAP,CAIAwM,KAAK3F,IAAI0vB,QAAQ,kBAAmB/pB,KAAK61J,WAAW7iK,IAEpD,IAAIwI,EAAQxI,EAAEQ,QACVkyB,EAAS1lB,KAAKg2J,eAAehjK,GACjCgN,KAAK3F,IAAIowH,SAASpyH,KAAKqtB,EAAQ1lB,KAAKi2J,gBAAgBz6J,GANpD,CAOJ,EAEAm5J,EAAW3wJ,UAAUiyJ,gBAAkB,SAA0Bz6J,GAC7D,MAAO,CACHrI,KAAM,QACN2iK,WAAY91J,KAAKouJ,cACjB95J,UAAW,sBACX0xD,SAAUxqD,EAAMwqD,SAChBnzC,SAAUrX,EAAMqX,SAExB,EAEA8hJ,EAAW3wJ,UAAUgyJ,eAAiB,SAAyBhjK,GAC3D,IAAIs0D,EAAStnD,KAAK3F,IAAI67J,YAAYljK,EAAEgpF,eACpC,MAAO,CACHr0D,IAAK2/B,EAAOthC,EACZ8B,KAAMw/B,EAAOvhC,EAErB,EAEA4uI,EAAW3wJ,UAAUwpJ,UAAY,WAC7BL,EAAMnpJ,UAAUwpJ,UAAUxqJ,KAAKhD,MAC/BA,KAAKm2J,YAAcvN,GAAM5oJ,KAAK0rJ,KAAM1rJ,MACpCA,KAAK3F,IAAI0F,KAAK,MAAOC,KAAKo2J,WAC9B,EAEAzB,EAAW3wJ,UAAU0pJ,YAAc,WAC/BP,EAAMnpJ,UAAU0pJ,YAAY1qJ,KAAKhD,MACjCA,KAAK3F,IAAI+lG,OAAO,MAAOpgG,KAAKm2J,YAChC,EAEOxB,CACX,CA3OyB,CA2OvBxH,IAEFx3H,GAAkBg/H,GAAY,CAC1B1hC,UAAU,EACVruE,OAAQ,MAGZ,IAAIwwG,GAAiB,SAAUnkI,GAC3B,SAASmkI,EAAciB,EAASnpJ,EAAc0c,GAC1CqH,EAAMjuB,KAAKhD,MACXA,KAAK4pB,SAAWA,EAChB5pB,KAAKq2J,QAAUA,EACfr2J,KAAKvJ,MAAQyW,CACjB,CA6IA,OA3IK+jB,IAAQmkI,EAAcrqJ,UAAYkmB,GACvCmkI,EAAcpxJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACxDoxJ,EAAcpxJ,UAAUqH,YAAc+pJ,EAEtCA,EAAcpxJ,UAAU0R,MAAQ,SAAgBugB,GAC5C,IAAI2pD,EAAO,IAAI5+B,GACXs1G,GAAS,EAcb,MAZkB,YAAdrgI,EAAK9iC,MACLmjK,GAAS,EACTt2J,KAAKu2J,gBAAgB32E,EAAM3pD,EAAKC,SAAUD,GAC1Cj2B,KAAKw2J,gBAAgB52E,EAAM3pD,IAE3Bj2B,KAAKu2J,gBAAgB32E,EAAM3pD,EAAMA,GAGjCqgI,GAAU12E,EAAKhsF,SAASwG,OAAS,IACjCwlF,EAAOA,EAAKhsF,SAAS,IAGlBgsF,CACX,EAEAw1E,EAAcpxJ,UAAUyyJ,cAAgB,SAAwBj7J,GAC5D,IAAI85J,GAAY,EAMhB,OAJIt1J,KAAK4pB,UAAY5pB,KAAK4pB,SAASyrI,eAC/BC,EAAYt1J,KAAK4pB,SAASyrI,aAAa75J,IAGpC85J,CACX,EAEAF,EAAcpxJ,UAAUwyJ,gBAAkB,SAA0Bl5I,EAAO0oC,GACnEhmD,KAAK4pB,UAAY5pB,KAAK4pB,SAAS8rI,gBAC/B11J,KAAK4pB,SAAS8rI,eAAe,CACzBp4I,MAAOA,EACP0oC,SAAUA,EACV0wG,WAAY1wG,EAAS0wG,YAGjC,EAGAtB,EAAcpxJ,UAAUuyJ,gBAAkB,SAA0Br0I,EAAWgU,EAAU8vB,GACrF,IAGIt6C,EACA2Z,EAJAmc,EAASxhC,KAET69E,EAAS3nD,EAAS05F,YAItB,OAAQ15F,EAAS/iC,MACb,IAAK,aACDkyB,EAAOrlB,KAAK22J,aAAaz0I,EAAW,CAAC27D,GAAS73B,GAC9ChmD,KAAK42J,aAAavxI,GAClB,MACJ,IAAK,kBACD,IAAK3Z,EAAI,EAAGA,EAAImyE,EAAOzjF,OAAQsR,IAC3B2Z,EAAOmc,EAAOm1H,aAAaz0I,EAAW,CAAC27D,EAAOnyE,IAAKs6C,GACnDxkB,EAAOo1H,aAAavxI,GAExB,MACJ,IAAK,UACDrlB,KAAK22J,aAAaz0I,EAAW27D,EAAQ73B,GACrC,MACJ,IAAK,eACD,IAAKt6C,EAAI,EAAGA,EAAImyE,EAAOzjF,OAAQsR,IAC3B81B,EAAOm1H,aAAaz0I,EAAW27D,EAAOnyE,GAAIs6C,GAE9C,MACJ,IAAK,QACDhmD,KAAK62J,WAAW30I,EAAW27D,EAAQ73B,GACnC,MACJ,IAAK,aACD,IAAKt6C,EAAI,EAAGA,EAAImyE,EAAOzjF,OAAQsR,IAC3B81B,EAAOq1H,WAAW30I,EAAW27D,EAAOnyE,GAAIs6C,GAMxD,EAGAovG,EAAcpxJ,UAAU4yJ,aAAe,SAAuBvxI,GAC1D,IAAII,EAAWJ,EAAKI,UAEhBA,EAASrrB,OAAS,IAAMqrB,EAAS,GAAGC,SAAS6L,OAAO9C,GAAKhJ,GAAUC,aACnEL,EAAK/P,QAAQygC,KAAO,KAE5B,EAEAq/G,EAAcpxJ,UAAU8yJ,WAAa,SAAqB50I,EAAW1mB,GAKjE,OAJKwE,KAAKy2J,cAAcj7J,IACpB0mB,EAAU2J,OAAOrwB,GAGdA,CACX,EAEA45J,EAAcpxJ,UAAU2yJ,aAAe,SAAuBz0I,EAAW60I,EAAO/wG,GAC5E,IAAIxqD,EAAQwE,KAAKg3J,cAAcD,GAG/B,OAFAv7J,EAAMwqD,SAAWA,EACjBxqD,EAAMqX,SAAW7S,KAAKq2J,QAAQY,eAAez7J,EAAM6tC,OAAOlE,UACnDnlC,KAAK82J,WAAW50I,EAAW1mB,EACtC,EAEA45J,EAAcpxJ,UAAUgzJ,cAAgB,SAAwBD,GAM5D,IALA,IAGI1xI,EAAO,IADA0xI,EAAM38J,OAAS,EAAIuQ,GAAcA,IACxB3K,KAAKvJ,OAEhBiV,EAAI,EAAGA,EAAIqrJ,EAAM38J,OAAQsR,IAC9B,IAAK,IAAImhF,EAAI,EAAGA,EAAIkqE,EAAMrrJ,GAAGtR,OAAQyyF,IAAK,CACtC,IAAI3nD,EAPCllC,KAOcq2J,QAAQT,eAAevV,GAASuC,WAAWmU,EAAMrrJ,GAAGmhF,KAC7D,IAANA,EACAxnE,EAAK+4B,OAAOlZ,EAAMnf,EAAGmf,EAAMlf,GAE3BX,EAAK03B,OAAO7X,EAAMnf,EAAGmf,EAAMlf,EAEnC,CAGJ,OAAOX,CACX,EAEA+vI,EAAcpxJ,UAAU6yJ,WAAa,SAAqB30I,EAAW27D,EAAQ73B,GACzE,IAAInzC,EAAWwtI,GAASuC,WAAW/kE,GAC/B34C,EAAQllC,KAAKq2J,QAAQT,eAAe/iJ,GACpCo4D,EAAS,IAAI9uD,GAAS+oB,EAAO,IAC7B1pC,EAAQ,IAAImP,GAASsgE,EAAQjrE,KAAKvJ,OAKtC,OAHA+E,EAAMwqD,SAAWA,EACjBxqD,EAAMqX,SAAWA,EAEV7S,KAAK82J,WAAW50I,EAAW1mB,EACtC,EAEO45J,CACX,CApJqB,CAoJnBnkI,IC/YSimI,GAAe,SAAUvC,GAChC,SAASuC,IACLvC,EAAWzsJ,MAAMlI,KAAM+H,UAC3B,CA4HA,OA1HK4sJ,IAAauC,EAAYnsJ,UAAY4pJ,GAC1CuC,EAAYlzJ,UAAY6G,OAAOS,OAAQqpJ,GAAcA,EAAW3wJ,WAChEkzJ,EAAYlzJ,UAAUqH,YAAc6rJ,EAEpCA,EAAYlzJ,UAAUiqJ,UAAY,WAE9B,OADWjuJ,KAAKsV,QAAQ2B,MAAQ,EAEpC,EAEAigJ,EAAYlzJ,UAAU+wJ,MAAQ,SAAgB99I,GAC1C,IAAIuqB,EAASxhC,KAKb,GAHAA,KAAKmuJ,MAAQl3I,EACbjX,KAAKyuG,QAAQxrE,QAEO,IAAhBhsB,EAAK7c,OAAT,CAIA,IAAIkb,EAAUtV,KAAKsV,QACfmzD,EAAWlgD,GAAOjT,EAAQ6hJ,YAE1BC,EAAUngJ,EAAKyD,MAAM,GACzB08I,EAAQroI,MAAK,SAASF,EAAGjkB,GACrB,OAAO69D,EAAS79D,GAAK69D,EAAS55C,EAClC,IAMA,IAJA,IACImD,EADAqlI,EAAYr3J,KAAKs3J,aAEjBC,EAAchvI,GAAOvoB,KAAKsV,QAAQkiJ,eAE7B9rJ,EAAI,EAAGA,EAAI0rJ,EAAQh9J,OAAQsR,IAAK,CACrC,IAAIs6C,EAAWoxG,EAAQ1rJ,GACnBmH,EAAW0kJ,EAAYvxG,GACvB7oD,EAAQsrE,EAASziB,GAErB,GAAI7gC,GAAQtS,IAAasS,GAAQhoB,GAAQ,CAChC60B,IACDA,EAAQ,IAAIqlI,EAAU,CAClB,EACAl6J,GACD,CACCmY,EAAQy0E,QACRz0E,EAAQ82C,WAIhBv5C,EAAWwtI,GAAS/0I,OAAOuH,GAE3B,IAAIsyB,EAAS3D,EAAOnnC,IAAIu7J,eAAe/iJ,GACnCjc,EAAOo7B,EAAM33B,IAAI8C,GACjBs6J,EAASj2H,EAAOk2H,cAAc,CAC9BvyH,OAAQA,EACRvuC,KAAMA,EACNH,MAAO6e,EAAQ7e,MACfuvD,SAAUA,EACVnzC,SAAUA,IAGd4kJ,EAAOzxG,SAAWA,EAClByxG,EAAO5kJ,SAAWA,EAClB4kJ,EAAOt6J,MAAQA,EAEfqkC,EAAOm2H,YAAYF,EACvB,CACJ,CAhDA,CAiDJ,EAEAP,EAAYlzJ,UAAUszJ,WAAa,WAC/B,IAAItlI,EAAQhyB,KAAKsV,QAAQ0c,MAEzB,OAAI5L,GAAW4L,GACJA,EAGJ4lI,GAAO5lI,EAClB,EAEAklI,EAAYlzJ,UAAU0zJ,cAAgB,SAAwB1vJ,GAC1D,IAAIyvJ,EAASz3J,KAAKsV,QAAQmiJ,OAM1B,OAJKrxI,GAAWqxI,KACZA,EAASI,GAAQJ,IAGdA,EAAOzvJ,EAClB,EAEAkvJ,EAAYlzJ,UAAU2zJ,YAAc,SAAsBn8J,GACtD,IAAIwM,EAAO,CACPytJ,MAAOz1J,KACPxE,MAAOA,GAGKwE,KAAK3F,IAAI0vB,QAAQ,eAAgB/hB,IAG7ChI,KAAKyuG,QAAQtuD,KAAK3kD,EAE1B,EAEA07J,EAAYlzJ,UAAUiyJ,gBAAkB,SAA0Bz6J,GAC9D,MAAO,CACHrI,KAAM,SACN2iK,WAAY91J,KAAKouJ,cACjB95J,UAAW,uBACX0xD,SAAUxqD,EAAMwqD,SAChBnzC,SAAUrX,EAAMqX,SAChB1V,MAAO3B,EAAM2B,MAErB,EAEA+5J,EAAYlzJ,UAAUgyJ,eAAiB,SAAyBhjK,GAC5D,IACImyC,EADQnyC,EAAEQ,QACK61C,OAAOlE,SAE1B,MAAO,CACHxd,IAAKwd,EAAOnf,EACZ8B,KAAMqd,EAAOpf,EAErB,EAEOmxI,CACX,CAhI0B,CAgIxBvC,IAEFh/H,GAAkBuhI,GAAa,CAE3BM,cAAe,WACfL,WAAY,QACZptE,QAAS,EACT39B,QAAS,IACTp6B,MAAO,OACPylI,OAAQ,SAER7yG,OAAQ,MAGZ,IAAIkzG,GAAa,SAAU7mI,GACvB,SAAS6mI,EAAUC,EAAQrgH,GACvBzmB,EAAMjuB,KAAKhD,MAEXA,KAAKg4J,QAAUD,EACf/3J,KAAKiiE,OAASvqB,EAEd,IAAIugH,EAAcn3I,KAAK0f,KAAKu3H,EAAO,IAAMj3I,KAAK0f,KAAKu3H,EAAO,IACtDG,EAAcxgH,EAAM,GAAKA,EAAM,GAEnC13C,KAAKm4J,OAASD,EAAcD,CAChC,CAWA,OATKhnI,IAAQ6mI,EAAU/sJ,UAAYkmB,GACnC6mI,EAAU9zJ,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpD8zJ,EAAU9zJ,UAAUqH,YAAcysJ,EAElCA,EAAU9zJ,UAAU3J,IAAM,SAAc8C,GACpC,IAAIi7J,GAAOt3I,KAAK0f,KAAKrjC,GAAS2jB,KAAK0f,KAAKxgC,KAAKg4J,QAAQ,KAAOh4J,KAAKm4J,OACjE,OAAOn4J,KAAKiiE,OAAO,GAAKm2F,CAC5B,EAEON,CACX,CAvBiB,CAuBf7mI,IAEE2mI,GAAS,CACTp3H,KAAMs3H,IAGND,GAAU,CACV5sF,OAAQ,SAASjjE,GACb,IAAIszH,EAAM,IAAIn/G,GAASnU,EAAKm9B,OAAQn9B,EAAKpR,KAAO,GAChD,OAAO,IAAI+T,GAAS2wH,EAAKtzH,EAAKvR,MAClC,EAEA4hK,OAAQ,SAASrwJ,GACb,IAAIqd,EAAO,IAAI1a,GAAO3C,EAAKvR,OACvB0mF,EAAWn1E,EAAKpR,KAAO,EACvBuuC,EAASn9B,EAAKm9B,OAElB,OADA9f,EAAK+4B,OAAOjZ,EAAOpf,EAAIo3D,EAAUh4C,EAAOnf,EAAIm3D,GAAUpgC,OAAO5X,EAAOpf,EAAIo3D,EAAUh4C,EAAOnf,EAAIm3D,GAAUpgC,OAAO5X,EAAOpf,EAAIo3D,EAAUh4C,EAAOnf,EAAIm3D,GAAUpgC,OAAO5X,EAAOpf,EAAIo3D,EAAUh4C,EAAOnf,EAAIm3D,GAAU5uC,QAClMlpB,CACX,GCxLAizI,GAAQ,QACRC,GAAc,aACdC,GAAc,aAEd3xB,GAASh8H,OAAOW,OAChBitJ,GAAe,YAERC,GAAe,SAAUvL,GAChC,SAASuL,EAAYr+J,EAAKib,GACtB63I,EAAMnqJ,KAAKhD,KAAM3F,EAAKib,GAEtBtV,KAAK24J,oBAAsB/P,GAAM5oJ,KAAK44J,aAAc54J,MACpD6oJ,GAAG7oJ,KAAKxM,QAAS8kK,GAAOG,GAAcz4J,KAAK24J,qBAE3C34J,KAAKkhD,MAAQ,GAEblhD,KAAK+0J,MAAM/0J,KAAKiuJ,YACpB,CA4JA,OA1JKd,IAAQuL,EAAY3tJ,UAAYoiJ,GACrCuL,EAAY10J,UAAY6G,OAAOS,OAAQ6hJ,GAASA,EAAMnpJ,WACtD00J,EAAY10J,UAAUqH,YAAcqtJ,EAEpCA,EAAY10J,UAAUs/C,QAAU,WAC5B6pG,EAAMnpJ,UAAUs/C,QAAQtgD,KAAKhD,MAC7BopJ,GAAIppJ,KAAKxM,QAAS8kK,GAAOt4J,KAAK24J,qBAC9B34J,KAAKijC,OACT,EAEAy1H,EAAY10J,UAAUmF,IAAM,SAAcnB,GAGtC,IAAI5S,EAAQ4S,GAKR,OAAOhI,KAAK64J,QAAQ7wJ,GAJpB,IAAK,IAAI0D,EAAI,EAAGA,EAAI1D,EAAK5N,OAAQsR,IAHxB1L,KAIE64J,QAAQ7wJ,EAAK0D,GAKhC,EAEAgtJ,EAAY10J,UAAU2D,OAAS,SAAiBotB,GAC5CA,EAAOuuB,UACP,IAAIhpD,GAAS0F,KAAKkhD,OAAS,IAAI73C,QAAQ0rB,GAEnCz6B,GAAS,GACT0F,KAAKkhD,MAAM9a,OAAO9rC,EAAO,EAEjC,EAEAo+J,EAAY10J,UAAUi/B,MAAQ,WAG1B,IAFA,IAESv3B,EAAI,EAAGA,EAAI1L,KAAKkhD,MAAM9mD,OAAQsR,IAF1B1L,KAGFkhD,MAAMx1C,GAAG43C,UAGpBtjD,KAAKkhD,MAAQ,EACjB,EAEAw3G,EAAY10J,UAAU0+E,OAAS,SAAiB3tD,GAC5C,IAAIliB,EAAWkiB,EAAOliB,WAEtB,GAAIA,EAAU,CACVkiB,EAAO42D,OAAO3rF,KAAK3F,IAAIu7J,eAAe/iJ,IAEtC,IAAI7K,EAAO,CACP+sB,OAAQA,EACR0gI,MAAOz1J,MAGXA,KAAK3F,IAAI0vB,QAAQ,iBAAkB/hB,EACvC,CACJ,EAEA0wJ,EAAY10J,UAAUspJ,OAAS,WAG3BH,EAAMnpJ,UAAUspJ,OAAOtqJ,KAAKhD,MAI5B,IAFA,IAAIkhD,EAAQlhD,KAAKkhD,MAERx1C,EAAI,EAAGA,EAAIw1C,EAAM9mD,OAAQsR,IANrB1L,KAOF0iF,OAAOxhC,EAAMx1C,GAE5B,EAEAgtJ,EAAY10J,UAAUjE,KAAO,SAAeuV,EAAS0wC,GACjD,IAAIjxB,EAAS+jI,GAAOxtJ,OAAOgK,EAAStV,KAAKsV,SACzCyf,EAAOixB,SAAWA,EAElB,IAAIh+C,EAAO,CACP+sB,OAAQA,EACR0gI,MAAOz1J,MAKX,IAFgBA,KAAK3F,IAAI0vB,QAAQ,gBAAiB/hB,GAI9C,OADAhI,KAAKmJ,IAAI4rB,GACFA,CAEf,EAEA2jI,EAAY10J,UAAU60J,QAAU,SAAkB3wG,GAC9C,IAAInzB,EAAS+jI,GAAOxtJ,OAAO48C,EAAKloD,KAAKsV,SAErC,OADAyf,EAAOgkI,MAAM/4J,MACN+0B,CACX,EAEA2jI,EAAY10J,UAAUiqJ,UAAY,WAE9B,OADWjuJ,KAAKsV,QAAQ2B,MAAQ,EAEpC,EAEAyhJ,EAAY10J,UAAU+wJ,MAAQ,SAAgB99I,GAG1CjX,KAAKmuJ,MAAQl3I,EACbjX,KAAKijC,QAKL,IAHA,IAAIs0H,EAAchvI,GAAOvoB,KAAKsV,QAAQkiJ,eAClCwB,EAAWzwI,GAAOvoB,KAAKsV,QAAQ2jJ,YAE1BvtJ,EAAI,EAAGA,EAAIuL,EAAK7c,OAAQsR,IAAK,CAClC,IAAIs6C,EAAW/uC,EAAKvL,GATX1L,KAWFD,KAAK,CACR8S,SAAU0kJ,EAAYvxG,GACtBzxD,MAAOykK,EAAShzG,IACjBA,EACP,CACJ,EAEA0yG,EAAY10J,UAAU40J,aAAe,SAAuB5lK,GACxD,IAAI+hC,EAAS/hC,EAAE4a,OAAOszF,WAElBl5F,EAAO,CAGPytJ,MAAOz1J,KACP81J,WAAY91J,KAAKouJ,cACjBr5H,OAAQA,EACRmkI,aAAcl5J,KAAKkhD,OAAS,IAAI73C,QAAQ0rB,GACxCinD,cAAehpF,GAGnBgN,KAAK3F,IAAI0vB,QAAQ,cAAe/hB,EACpC,EAEA0wJ,EAAY10J,UAAUm1J,kBAAoB,SAA4BnmK,GAClE,IAAIgV,EAAOhI,KAAKo5J,uBAAuBpmK,GACvCgN,KAAK3F,IAAI0vB,QAAQ,mBAAoB/hB,EACzC,EAEA0wJ,EAAY10J,UAAUq1J,kBAAoB,SAA4BrmK,GAClE,IAAIgV,EAAOhI,KAAKo5J,uBAAuBpmK,GACvCgN,KAAK3F,IAAI0vB,QAAQ,mBAAoB/hB,EACzC,EAEA0wJ,EAAY10J,UAAUo1J,uBAAyB,SAAiCpmK,GAC5E,IAAI+hC,EAAS/hC,EAAE+hC,OASf,OAPW8xG,GAAO,CAAC,EAAG,CAClB4uB,MAAOz1J,KACP81J,WAAY91J,KAAKouJ,cACjBr5H,OAAQA,EACRmkI,aAAcl5J,KAAKkhD,OAAS,IAAI73C,QAAQ0rB,IACzC/hC,EAGP,EAEO0lK,CACX,CAvK0B,CAuKxBvL,IAEFx3H,GAAkB+iI,GAAa,CAC3B9zG,OAAQ,IACRquE,UAAU,EACVukC,cAAe,WACfyB,WAAY,UAGT,IAAIH,GAAU,SAAU7nI,GAC3B,SAAS6nI,EAAOxjJ,GACZ2b,EAAMjuB,KAAKhD,MACXA,KAAKsV,QAAUA,GAAW,CAAC,CAC/B,CA4IA,OA1IK2b,IAAQ6nI,EAAO/tJ,UAAYkmB,GAChC6nI,EAAO90J,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACjD80J,EAAO90J,UAAUqH,YAAcytJ,EAE/BA,EAAO90J,UAAUs/C,QAAU,WACvBtjD,KAAKy1J,MAAQ,KACbz1J,KAAK4wB,eACL5wB,KAAK7J,MACT,EAEA2iK,EAAO90J,UAAU+0J,MAAQ,SAAgBnmI,GACrC5yB,KAAKy1J,MAAQ7iI,EAAOypD,SAAWzpD,EAC/B5yB,KAAKy1J,MAAMv0G,MAAM9xC,KAAKpP,MACtBA,KAAKy1J,MAAM/yE,OAAO1iF,KACtB,EAEA84J,EAAO90J,UAAU6O,SAAW,SAAmB1V,GAC3C,OAAIA,GACA6C,KAAKsV,QAAQzC,SAAWwtI,GAAS/0I,OAAOnO,GAAOq0B,UAE3CxxB,KAAKy1J,OACLz1J,KAAKy1J,MAAM/yE,OAAO1iF,MAGfA,MAGJqgJ,GAAS/0I,OAAOtL,KAAKsV,QAAQzC,SACxC,EAEAimJ,EAAO90J,UAAU2nF,OAAS,SAAiBzmD,GACvCllC,KAAK5G,SAEL4G,KAAKitJ,QAAU,CAAEnlI,KAAMhH,KAAKE,MAAMkkB,EAAMnf,GAAI4B,IAAK7G,KAAKE,MAAMkkB,EAAMlf,IAClEhmB,KAAKxM,QAAQiD,MAAMqxB,KAAOo9H,GAASllJ,KAAKitJ,QAAQnlI,MAChD9nB,KAAKxM,QAAQiD,MAAMkxB,IAAMu9H,GAASllJ,KAAKitJ,QAAQtlI,IACnD,EAEAmxI,EAAO90J,UAAU7N,KAAO,WAChB6J,KAAKxM,UACLwM,KAAKxM,QAAQmU,SACb3H,KAAKxM,QAAU,KAEvB,EAEAslK,EAAO90J,UAAU2rB,WAAa,WACrB3vB,KAAKxM,UAIVwM,KAAKs5J,mBAAqB1Q,GAAM5oJ,KAAKu5J,YAAav5J,MAClD6oJ,GAAG7oJ,KAAKxM,QAAS+kK,GAAaE,GAAcz4J,KAAKs5J,oBACjDt5J,KAAKw5J,mBAAqB5Q,GAAM5oJ,KAAKy5J,YAAaz5J,MAClD6oJ,GAAG7oJ,KAAKxM,QAASglK,GAAaC,GAAcz4J,KAAKw5J,oBACrD,EAEAV,EAAO90J,UAAU4sB,aAAe,WACvB5wB,KAAKxM,UAIV41J,GAAIppJ,KAAKxM,QAAS+kK,GAAav4J,KAAKs5J,oBACpClQ,GAAIppJ,KAAKxM,QAASglK,GAAax4J,KAAKw5J,oBACxC,EAEAV,EAAO90J,UAAU5K,OAAS,WACtB,IAAK4G,KAAKxM,QAAS,CACf,IAAI8hB,EAAUtV,KAAKsV,QACfmgJ,EAAQz1J,KAAKy1J,MAEbjiK,EAAUsF,SAASomB,cAAc,QACrC1W,EAAShV,EAAS,8BAAgCyxJ,GAAU3vI,EAAQ9Z,OAAS,QAEzE8Z,EAAQ/gB,OACRf,EAAQE,aAAa,QAAS4hB,EAAQ/gB,OAG1C,IAAImlK,EAAapkJ,EAAQokJ,YAAc,CAAC,EACxC7uJ,OAAO4E,KAAKiqJ,GAAYlyJ,SAAQ,SAAS6G,GACrC7a,EAAQE,aAAa2a,EAAKqrJ,EAAWrrJ,GACzC,IAEA7a,EAAQ0tG,WAAalhG,KACrBxM,EAAQiD,MAAMmuD,OAAStvC,EAAQsvC,OAE/B5kD,KAAKxM,QAAUA,EAEXiiK,GACAA,EAAMjiK,QAAQgsB,YAAYxf,KAAKxM,SAGnCwM,KAAK2vB,YACT,CACJ,EAEAmpI,EAAO90J,UAAUu1J,YAAc,SAAsBvmK,GACjD,IAAIgV,EAAOhI,KAAK25J,iBAAiB3mK,GACjCgN,KAAKy1J,MAAM0D,kBAAkBnxJ,GAE7BhI,KAAKy1J,MAAMp7J,IAAIowH,SAASpyH,KAAK,CACzBsvB,IAAK3nB,KAAKitJ,QAAQtlI,IAAM3nB,KAAKxM,QAAQ4W,aACrC0d,KAAM9nB,KAAKitJ,QAAQnlI,MACpB9nB,KAAKi2J,kBACZ,EAEA6C,EAAO90J,UAAUiyJ,gBAAkB,WAC/B,MAAO,CACH9iK,KAAM,SACN2iK,WAAY91J,KAAKy1J,MAAMrH,cACvB95J,UAAW,uBACX0xD,SAAUhmD,KAAKgmD,SACfzxD,MAAOyL,KAAKsV,QAAQ/gB,MACpBse,SAAU7S,KAAK6S,WAEvB,EAEAimJ,EAAO90J,UAAUy1J,YAAc,SAAsBzmK,GACjD,IAAIgV,EAAOhI,KAAK25J,iBAAiB3mK,GACjCgN,KAAKy1J,MAAM4D,kBAAkBrxJ,EACjC,EAEA8wJ,EAAO90J,UAAU21J,iBAAmB,SAA2B3mK,GAM3D,MALW,CACP+hC,OAAQ/0B,KACRg8E,cAAehpF,EAIvB,EAEA8lK,EAAOxtJ,OAAS,SAAiB48C,EAAK4uB,GAClC,OAAI5uB,aAAe4wG,EACR5wG,EAGJ,IAAI4wG,EAAO/xI,GAAW,CAAC,EAAG+vD,EAAU5uB,GAC/C,EAEO4wG,CACX,CAjJqB,CAiJnB7nI,ICnVE41G,GAASh8H,OAAOW,OAEpB,SAASw2C,GAAe97C,GACpBzJ,OAAOwlD,sBAAsB/7C,EACjC,CAEO,IAAI+K,GAAa,SAAUggB,GAC9B,SAAShgB,IACLggB,EAAMjuB,KAAKhD,MACX,IAAIypJ,EAAOzpJ,KAEXypJ,EAAKmQ,WAAahR,GAAMa,EAAKoQ,MAAOpQ,GACpCA,EAAKqQ,UAAW,CACpB,CAkDA,OAhDK7oI,IAAQhgB,EAAUlG,UAAYkmB,GACnChgB,EAAUjN,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpDiN,EAAUjN,UAAUqH,YAAc4F,EAElCA,EAAUjN,UAAU2tD,KAAO,WAAmB,EAC9C1gD,EAAUjN,UAAU0F,KAAO,WAAmB,EAC9CuH,EAAUjN,UAAU+1J,MAAQ,WAAoB,EAChD9oJ,EAAUjN,UAAUrK,SAAW,WAAuB,EAEtDsX,EAAUjN,UAAUulB,MAAQ,WACnBvpB,KAAK6yJ,YAIL7yJ,KAAK0J,OAIN1J,KAAK+5J,SAHL/5J,KAAK85J,UAAW,EAChB93G,GAAehiD,KAAK45J,aAI5B,EAEA3oJ,EAAUjN,UAAU6uJ,QAAU,WAC1B,OAAO,CACX,EAEA5hJ,EAAUjN,UAAUgC,OAAS,WACzBhG,KAAK85J,UAAW,EAChB95J,KAAKrG,UACT,EAEAsX,EAAUjN,UAAU61J,MAAQ,WACxB,IAAIpQ,EAAOzpJ,KAENypJ,EAAKqQ,WAIVrQ,EAAK93F,OAEA83F,EAAK//I,QAGN+/I,EAAKqQ,UAAW,EAChBrQ,EAAKsQ,SAHL/3G,GAAeynG,EAAKmQ,YAK5B,EAEO3oJ,CACX,CA1DwB,CA0DtBggB,IAESruB,GAAc,SAAUqO,GAC/B,SAASrO,EAAW0S,GAChBrE,EAAUjO,KAAKhD,MACf6mI,GAAO7mI,KAAMsV,EACjB,CAsCA,OApCKrE,IAAYrO,EAAWmI,UAAYkG,GACxCrO,EAAWoB,UAAY6G,OAAOS,OAAQ2F,GAAaA,EAAUjN,WAC7DpB,EAAWoB,UAAUqH,YAAczI,EAEnCA,EAAWoB,UAAU0F,KAAO,WACxB,OAAO1J,KAAKg6J,cAAgBh6J,KAAKyiD,QACrC,EAEA7/C,EAAWoB,UAAUg2J,WAAa,WAC9B,OAAOl5I,KAAK6N,IAAI3uB,KAAKyiD,SAAUrzB,KAAQpvB,KAAKs9D,UAChD,EAEA16D,EAAWoB,UAAUo6C,OAAS,SAAiB9oC,GAC3C,IAAIm0I,EAAOzpJ,KACPqzJ,EAAU5J,EAAK4J,QAEnB5J,EAAKwQ,QAAU5G,EAAQ5J,EAAK1+G,MAC5B0+G,EAAKn+H,MAAQhW,EAAQzC,SAAW42I,EAAKwQ,QACrCxQ,EAAKhnG,SAAuC,kBAArBntC,EAAQmtC,SAAwBntC,EAAQmtC,SAAW,IAC1EgnG,EAAK93F,KAAO83F,EAAKyQ,WAAW5kJ,EAAQ6kJ,MACpC1Q,EAAKnsF,UAAYluC,KACjBq6H,EAAKlgI,OACT,EAEA3mB,EAAWoB,UAAUk2J,WAAa,SAAqBC,GACnD,IAAI1Q,EAAOzpJ,KAEX,OAAO,WACHypJ,EAAK4J,QAAQoB,SAAShL,EAAK1+G,KAAMovH,EAAK1Q,EAAKuQ,aAAcvQ,EAAKwQ,QAASxQ,EAAKn+H,MAAOm+H,EAAKhnG,UAC5F,CACJ,EAEA7/C,EAAWw3J,YAAc,SAAsB1hK,EAAGkS,EAAGnD,EAAGkD,GACpD,OAAOjS,IAAMiS,EAAIC,EAAInD,EAAIA,GAAiC,EAA3BqZ,KAAKuI,IAAI,GAAI,GAAK3wB,EAAIiS,IAAUC,CACnE,EAEOhI,CACX,CA3CyB,CA2CvBqO,IClGE41H,GAASh8H,OAAOW,OAEhBskD,GAAiB,SAAU98D,GAC3BA,EAAE88D,gBACN,EAGIuqG,GAAmB,IAGnBC,GAAoB,EACpBC,GAAQ,QACRC,GAAO,OACPllF,GAAS,SACTgyD,GAAQ,QACRkF,GAAO,OACPpoG,GAAM,MACNq2H,GAAS,SACTC,GAAM,MACNC,GAAY,YACZC,GAAU,UAEVC,GAAgB,gBAChBC,GAAa,aACbC,GAAa,aAEbC,GAAY,CACZ,IAAO,EACP,MAAS,EACT,MAAS,EACT,QAAW,GAoBf,SAASC,GAAWjoK,GAChB,IAKIoH,EAAQ8gK,EAAgB7sI,EALxBjD,EAAUs8H,KACVttC,EAAU,GACVp+B,EAAgBhpF,EAAEgpF,eAAiBhpF,EACnCm2J,EAAgBn2J,EAAEm2J,cAClB10I,EAAM,EAGV,GAAIzhB,EAAEmoK,IACF/gD,EAAQhrG,KAAK,CACT9Y,GAAI,EACJgG,MAAOtJ,EACP4a,OAAQ5a,EAAE4a,OACVu7I,cAAen2J,EAAE4a,OACjBiF,SAAU7f,EACVG,KAAM,aAEP,GAAIH,EAAEG,KAAKs1B,MAAM,SAGpB,IAAKruB,GAFL8gK,EAAiBl/E,EAAgBA,EAAck/E,eAAiB,IAEnC9gK,OAAQqa,EAAMra,EAAQqa,IAC/C4Z,EAAQ6sI,EAAezmJ,GACvB2lG,EAAQhrG,KAAK,CACTyD,SAAUwb,EACV/xB,MAAOtJ,EACP4a,OAAQygB,EAAMzgB,OACdu7I,cAAeA,EACf7yJ,GAAI+3B,EAAM+sI,WACVjoK,KAAM,eAGPi4B,EAAQ2wG,UAAY3wG,EAAQw8H,WACnCxtC,EAAQhrG,KAAK,CACTyD,SAAUmpE,EACV1/E,MAAOtJ,EACP4a,OAAQ5a,EAAE4a,OACVu7I,cAAeA,EACf7yJ,GAAI0lF,EAAcq/E,UAClBloK,KAAM,YAGVinH,EAAQhrG,KAAK,CACT9Y,GAAI,EACJgG,MAAOtJ,EACP4a,OAAQ5a,EAAE4a,OACVu7I,cAAeA,EACft2I,SAAU7f,EACVG,KAAM,UAId,OAAOinH,CACX,CACO,IAAIkhD,GAAa,SAAUrqI,GAC9B,SAASqqI,EAAUvwH,EAAMl4B,GACrBoe,EAAMjuB,KAAKhD,MACX,IAAIypJ,EAAOzpJ,KAEXypJ,EAAKr+H,QAAUs8H,KACf+B,EAAK8R,kBAAoBv7J,KAAKorB,QAAQu8H,UAAY3nJ,KAAKorB,QAAQu8H,SAASlC,QACxEgE,EAAK1+G,KAAOA,EACZ0+G,EAAK+R,oBAAoB3oJ,GACzB42I,EAAKh2C,cAAgBg2C,EAAK52I,SAC1B42I,EAAKgS,SAAWhS,EAAKn+H,MAAQ,EAC7Bm+H,EAAKiS,UAAYtsI,IACrB,CAgCA,OA9BK6B,IAAQqqI,EAAUvwJ,UAAYkmB,GACnCqqI,EAAUt3J,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpDs3J,EAAUt3J,UAAUqH,YAAciwJ,EAElCA,EAAUt3J,UAAU0jC,KAAO,SAAe70B,GACtC,IAAI42I,EAAOzpJ,KACPslB,EAASzS,EAAS,OAAS42I,EAAK1+G,MAChC2wH,EAAYtsI,KACZusI,EAAYD,EAAYjS,EAAKiS,WAAa,GAEzCp2I,GAAUtlB,KAAKu7J,oBAIpB9R,EAAKn+H,MAAQhG,EAASmkI,EAAK52I,SAC3B42I,EAAK+R,oBAAoB3oJ,GACzB42I,EAAKmS,aAAet2I,EAASmkI,EAAKh2C,cAClCg2C,EAAKgS,SAAWhS,EAAKn+H,MAAQqwI,EAC7BlS,EAAKiS,UAAYA,EACrB,EAEAJ,EAAUt3J,UAAUw3J,oBAAsB,SAA8B3oJ,GACpE,IAAI42I,EAAOzpJ,KACP+qC,EAAO0+G,EAAK1+G,KAEhB0+G,EAAK52I,SAAWA,EAAS,OAASk4B,GAClC0+G,EAAKoS,OAAShpJ,EAAS,SAAWk4B,GAClC0+G,EAAKqS,OAASjpJ,EAAS,SAAWk4B,EACtC,EAEOuwH,CACX,CA7CwB,CA6CtBrqI,IAES8qI,GAAS,SAAU9qI,GAC1B,SAAS8qI,EAAMnI,EAAYhmJ,EAAQouJ,GAC/B/qI,EAAMjuB,KAAKhD,MAEX6mI,GAAO7mI,KAAM,CACT+lB,EAAG,IAAIu1I,GAAU,IAAKU,EAAUnpJ,UAChCmT,EAAG,IAAIs1I,GAAU,IAAKU,EAAUnpJ,UAChC1f,KAAM6oK,EAAU7oK,KAChB8oK,cAAerI,EAAWqI,cAC1BC,UAAWtI,EAAWsI,WAAalB,GAAUgB,EAAU7oK,MACvDygK,WAAYA,EACZhmJ,OAAQA,EACRu7I,cAAe6S,EAAU7S,cACzB76H,aAAc0tI,EAAUpuJ,OACxBtX,GAAI0lK,EAAU1lK,GACd6lK,WAAYH,EACZI,QAASxI,EAAWwI,QACpBC,iBAAkBzI,EAAWyI,iBAC7BC,QAAQ,EACRC,WAAW,GAEnB,CA+IA,OA7IKtrI,IAAQ8qI,EAAMhxJ,UAAYkmB,GAC/B8qI,EAAM/3J,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WAChD+3J,EAAM/3J,UAAUqH,YAAc0wJ,EAE9BA,EAAM/3J,UAAUm1G,MAAQ,WAEpBn5G,KAAKw8J,aAAe51J,WAAWgiJ,GAAM5oJ,KAAKy8J,MAAOz8J,MAAOA,KAAK4zJ,WAAW8I,SACxE18J,KAAK28J,SAASpC,GAAOv6J,KAAKm8J,WAC9B,EAEAJ,EAAM/3J,UAAUk1G,KAAO,SAAe8iD,GAClC,IAAIvS,EAAOzpJ,KAEXypJ,EAAKmK,WAAWwI,UAEgB,IAA5B3S,EAAKmK,WAAWwI,UAChB3S,EAAKmT,cAAgBh2J,YAAW,WACI,IAA5B6iJ,EAAKmK,WAAWwI,QAChB3S,EAAKkT,SAASjC,GAAKsB,GAEnBvS,EAAKkT,SAAShC,GAAWqB,GAG7BvS,EAAKmK,WAAWwI,QAAU,CAC9B,GA7LM,KA+Ld,EAEAL,EAAM/3J,UAAUy4J,MAAQ,WACpBz8J,KAAK28J,SAASnC,GAAMx6J,KAAKm8J,WAC7B,EAGAJ,EAAM/3J,UAAU0jC,KAAO,SAAes0H,GAClC,IAAIvS,EAAOzpJ,KACP68J,EAAiC,QAAnBb,EAAU7oK,MAAkBs2J,EAAKmK,WAAWkJ,eAE9D,IAAIrT,EAAK8S,YAAaM,EAAtB,CAOA,GAHApT,EAAK1jI,EAAE2hB,KAAKs0H,EAAUnpJ,UACtB42I,EAAKzjI,EAAE0hB,KAAKs0H,EAAUnpJ,WAEjB42I,EAAK6S,OAAQ,CACd,GAAI7S,EAAKsT,yBACL,OAGJ,GAAKC,GAAWzpK,SAAWypK,GAAWzpK,UAAYk2J,EAAKmK,WAGnD,OAAOnK,EAAK6B,UAFZ7B,EAAK3wC,OAAOkjD,EAIpB,CAEKvS,EAAK8S,WACN9S,EAAKkT,SAASnwB,GAAMwvB,EAlBxB,CAoBJ,EAGAD,EAAM/3J,UAAUwlB,IAAM,SAAcwyI,GAChCh8J,KAAKi9J,QAAU7tI,KAEXpvB,KAAKu8J,YAITv8J,KAAKu8J,WAAY,EACjBv8J,KAAK28J,SAAS/B,GAASoB,GAEnBh8J,KAAKs8J,OACLt8J,KAAK28J,SAASv4H,GAAK43H,GAEdh8J,KAAKi8J,gBACFj8J,KAAKq8J,iBACLr8J,KAAKk5G,KAAK8iD,GAEVh8J,KAAK28J,SAASjC,GAAKsB,IAK/BvpJ,aAAazS,KAAKw8J,cAClBx8J,KAAKsrJ,UACT,EAEAyQ,EAAM/3J,UAAUsnJ,QAAU,WACtB,IACI4R,EADal9J,KAAK4zJ,WACSx5C,SAAW,GAE1Cp6G,KAAKu8J,WAAY,EACjBv8J,KAAKm8J,WAAa,KAElB1pJ,aAAazS,KAAKw8J,cAElB,IAAIW,EAAmBD,EAAc7zJ,QAAQrJ,MAC7Ck9J,EAAc92H,OAAO+2H,EAAkB,EAC3C,EAEApB,EAAM/3J,UAAU6uD,KAAO,WACnB7yD,KAAKsrJ,SACT,EAEAyQ,EAAM/3J,UAAUgC,OAAS,WACrBhG,KAAKsrJ,SACT,EAEAyQ,EAAM/3J,UAAUo5J,QAAU,WACtB,OAAOp9J,KAAKs8J,MAChB,EAEAP,EAAM/3J,UAAU80G,OAAS,SAAiBkjD,GACtCvpJ,aAAazS,KAAKw8J,cAClBx8J,KAAKq9J,UAAYjuI,KACjBpvB,KAAKs8J,QAAS,EACdt8J,KAAK28J,SAASr1B,GAAO00B,EACzB,EAEAD,EAAM/3J,UAAU24J,SAAW,SAAmBhsJ,EAAMqrJ,GAChD,IAAIvS,EAAOzpJ,KACPs9J,EAActB,EAAU1/J,MACxB2a,EAAO,CACHoX,MAAOo7H,EACP1jI,EAAG0jI,EAAK1jI,EACRC,EAAGyjI,EAAKzjI,EACRpY,OAAQ67I,EAAK77I,OACbtR,MAAOghK,GAEX7T,EAAKmK,WAAW1iG,OAAOvgD,EAAMsG,IAC7BqmJ,EAAYxtG,gBAEpB,EAEAisG,EAAM/3J,UAAU+4J,uBAAyB,WACrC,IAAIQ,EAASv9J,KAAK+lB,EAAE61I,aAChB4B,EAASx9J,KAAKgmB,EAAE41I,aACpB,OAAO96I,KAAK0f,KAAK+8H,EAASA,EAASC,EAASA,IAAWx9J,KAAKk8J,SAChE,EAEOH,CACX,CArKoB,CAqKlB9qI,IAEF,SAASwsI,GAAgBv3J,GAMrB,IALA,IACIw3J,EADWpW,GAAYn8H,UAAUb,WACXm9H,GAAGlgJ,MAAM,KAC/BkN,EAAM,EACNra,EAASsjK,EAAWtjK,OAEjBqa,EAAMra,EAAQqa,IACjBvO,EAASw3J,EAAWjpJ,GAE5B,CAEO,IAAIuoJ,GAAc,SAAUn9D,GAC/B,SAASm9D,EAAWxpK,EAAS8hB,GACzBuqF,EAAW78F,KAAKhD,MAChB,IACI+iC,EADA0mH,EAAOzpJ,KAGPorB,EAAUs8H,KACd1nJ,KAAKorB,QAAUA,EAGf9V,EAAUA,GAAW,CAAC,EAEtBtV,KAAKsV,QAAUA,EAEfytB,EAAS0mH,EAAK1mH,OAASztB,EAAQytB,OAC/B0mH,EAAKyS,UAAY5mJ,EAAQ4mJ,WAAa5B,GACtC7Q,EAAKiT,QAAUpnJ,EAAQonJ,SAAWrC,GAClC5Q,EAAKrvC,QAAU,GACfqvC,EAAKkU,YAAcroJ,EAAQsoJ,WAAa,EAAI,EAC5CnU,EAAKoU,eAAiBvoJ,EAAQuoJ,eAC9BpU,EAAKqU,iBAAmBxoJ,EAAQwoJ,iBAChCrU,EAAKwS,eAAiB3mJ,EAAQyoJ,UAAY3yI,EAAQo9H,eAClDiB,EAAK2S,QAAU,EACf3S,EAAK4S,iBAAmB/mJ,EAAQ+mJ,iBAEhC,IAAI2B,GAAuB5yI,EAAQiD,OAASjD,EAAQ88H,qBAyBpD,GAvBArhB,GAAO4iB,EAAM,CACTj2J,QAASA,EACTi7G,QAASn5F,EAAQ2oJ,QAAUD,EACvBxqK,EAAQqW,cAAcsmB,gBACtB7a,EAAQm5F,SAAWj7G,EACvBqlH,gBAAiBvjG,EAAQujG,gBACzBqlD,SAAS,IAGbl+J,KAAKm+J,oBAAsBvV,GAAM5oJ,KAAK+4G,MAAO/4G,MAC7C6oJ,GAAGY,EAAKh7C,QAAS66C,GAAc,QAAStpJ,KAAKm+J,qBAE7Cn+J,KAAKo+J,mBAAqBxV,GAAM5oJ,KAAKg5G,KAAMh5G,MAC3C6oJ,GAAGY,EAAKh7C,QAAS66C,GAAc,aAActpJ,KAAKo+J,oBAElDp+J,KAAKq+J,qBAAuBzV,GAAM5oJ,KAAK84G,OAAQ94G,MAC/C6oJ,GAAGr1J,EAAS81J,GAAc,QAASvmH,EAAQ/iC,KAAKq+J,sBAE5C5U,EAAKwS,gBACLj8J,KAAKs+J,qBAAuB1V,GAAM5oJ,KAAKygG,OAAQzgG,MAC/C6oJ,GAAGr1J,EAAS81J,GAAc,SAAUvmH,EAAQ/iC,KAAKs+J,uBAGjDlzI,EAAQ2wG,UAAY3wG,EAAQw8H,WAC5B,GAAIx8H,EAAQf,QAAQtZ,QAAU,GAAI,CAC9B,IAAIwtJ,EAAgB,6BAEpB/qK,EAAQiD,MAAM,oBACV6e,EAAQ+2G,aAAuC,SAAxB/2G,EAAQ+2G,YAC3BkyC,EAAgB,IAAMjpJ,EAAQ+2G,YAC9BkyC,CAEZ,MACI/qK,EAAQiD,MAAM,gBAAkB6e,EAAQ+2G,aAAe,OAgB/D,GAbI/2G,EAAQkpJ,mBACRx+J,KAAKy+J,yBAA2B3uG,GAChC+4F,GAAGr1J,EAAS81J,GAAc,aAActpJ,KAAKy+J,2BAQjDz+J,KAAK0+J,sBAAwB9V,GAAM5oJ,KAAKiuH,QAASjuH,MACjD6oJ,GAAGr1J,EAAS81J,GAAc,aAAcvmH,EAAQ/iC,KAAK0+J,uBAEjDjV,EAAKqU,kBAAoB1yI,EAAQ+8H,aAAc,CAC/C,IAAIvsB,EAAiB6tB,EAAKh7C,QACtBkwD,EAAuB/V,GAAMa,EAAKmV,gBAAiBnV,GAEvDgU,IAAgB,SAAS5tI,GACrB+rG,EAAez9H,iBAAiB0xB,EAAW8uI,GAAsB,EACrE,GACJ,CAEAlV,EAAK1pJ,KAAK,CACNw6J,GACAC,GACAE,GACAC,GACArzB,GACAkF,GACApoG,GACAw2H,GACAH,GAjZO,eAmZPI,GACAC,GACAC,GACAzlF,IACDhgE,EACP,CAsQA,OApQKuqF,IAAam9D,EAAWjyJ,UAAY80F,GACzCm9D,EAAWh5J,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAC/Dg5J,EAAWh5J,UAAUqH,YAAc2xJ,EAEnCA,EAAWh5J,UAAU46J,gBAAkB,SAA0B5rK,GACzDgN,KAAK6+J,YACL7rK,EAAE88D,gBAEV,EAEAktG,EAAWh5J,UAAUs/C,QAAU,WAC3B,IAAImmG,EAAOzpJ,KACPsV,EAAUtV,KAAKsV,QACf9hB,EAAUwM,KAAKxM,QAEnB,IAAIi2J,EAAKxgC,WAAT,CAMA,GAFAwgC,EAAKxgC,YAAa,EAEdwgC,EAAKqU,kBAAoB99J,KAAKorB,QAAQ+8H,aAAc,CACpD,IAAIvsB,EAAiB6tB,EAAKh7C,QAC1BgvD,IAAgB,SAAS5tI,GACrB+rG,EAAex9H,oBAAoByxB,EAAW45H,EAAKmV,gBACvD,GACJ,CAEAxV,GAAIK,EAAKh7C,QAAS66C,GAAc,QAAStpJ,KAAKm+J,qBAC9C/U,GAAIK,EAAKh7C,QAAS66C,GAAc,aAActpJ,KAAKo+J,oBAEnDhV,GAAI51J,EAAS81J,GAAc,QAAStpJ,KAAKq+J,sBAErC5U,EAAKwS,eACL7S,GAAI51J,EAAS81J,GAAc,SAAUtpJ,KAAKs+J,sBAG1ChpJ,EAAQkpJ,kBACRpV,GAAI51J,EAAS81J,GAAc,aAActpJ,KAAKy+J,0BAGlDrV,GAAI51J,EAAS81J,GAAc,aAActpJ,KAAK0+J,uBAE9CjV,EAAKqV,cACLrV,EAAKrpD,gBAEEqpD,EAAKh7C,eACLg7C,EAAKj2J,eACLi2J,EAAKN,aA/BZ,CAgCJ,EAEA6T,EAAWh5J,UAAUytJ,QAAU,WAC3BuL,EAAWzpK,QAAUyM,IACzB,EAEAg9J,EAAWh5J,UAAUgC,OAAS,WAC1BhG,KAAK8+J,cACL9+J,KAAK+pB,QAAQ0wI,GACjB,EAGAuC,EAAWh5J,UAAUktD,OAAS,SAAiB50D,EAAO2a,GAClD,IACImjG,EADOp6G,KACQo6G,QACfvqF,EAAYvzB,EAEhB,GAAI0D,KAAK++J,gBAAiB,CACtB,OAAQlvI,GACJ,KAAK28G,GACD38G,EAAYgrI,GACZ,MACJ,KAAKz2H,GACDvU,EAAYirI,GACZ,MACJ,KAAKJ,GACD7qI,EAAYkrI,GAMpBl0B,GAAO5vH,EAAM,CACTmjG,QAASA,GAhezB,SAAoB4kD,EAAQC,GACxB,IAAI30H,EAAK00H,EAAOj5I,EAAElT,SACd03B,EAAKy0H,EAAOh5I,EAAEnT,SACd23B,EAAKy0H,EAAOl5I,EAAElT,SACd43B,EAAKw0H,EAAOj5I,EAAEnT,SACd8yB,EAAK2E,EAAKE,EACV5E,EAAK2E,EAAKE,EAEd,MAAO,CACHtF,OAAQ,CACJpf,GAAIukB,EAAKE,GAAM,EACfxkB,GAAIukB,EAAKE,GAAM,GAEnBuC,SAAUlsB,KAAK0f,KAAKmF,EAAKA,EAAKC,EAAKA,GAE3C,CAkdes5H,CAAW9kD,EAAQ,GAAIA,EAAQ,IACtC,CAEA,OAAOp6G,KAAK+pB,QAAQ8F,EAAWg3G,GAAO5vH,EAAM,CACxC9jB,KAAM08B,IAEd,EAGAmtI,EAAWh5J,UAAUm1G,MAAQ,SAAgBpzF,EAAGC,EAAGpY,GAC/C5N,KAAKm/J,SAAS,SAAUp5I,EAAGC,EAAGpY,EAClC,EAEAovJ,EAAWh5J,UAAU0jC,KAAO,SAAe3hB,EAAGC,GAC1ChmB,KAAKm/J,SAAS,QAASp5I,EAAGC,EAC9B,EAEAg3I,EAAWh5J,UAAUwlB,IAAM,SAAczD,EAAGC,GACxChmB,KAAKm/J,SAAS,OAAQp5I,EAAGC,EAC7B,EAEAg3I,EAAWh5J,UAAU+6J,cAAgB,WACjC,OAAO/+J,KAAKo6G,QAAQhgH,OAAS,CACjC,EAEA4iK,EAAWh5J,UAAUo7J,mBAAqB,WACtC,OAAOp/J,KAAKo6G,QAAQhgH,QAAU4F,KAAK29J,WACvC,EAEAX,EAAWh5J,UAAU86J,YAAc,WAE/B,IADA,IAAI1kD,EAAUp6G,KAAKo6G,QACZA,EAAQhgH,OAAS,GACpBggH,EAAQ1mE,MAAM43G,SAEtB,EAEA0R,EAAWh5J,UAAU66J,SAAW,WAC5B,OAAOl2I,GAAK3oB,KAAKo6G,SAAS,SAAS/rF,GAC/B,OAAOA,EAAM+uI,SACjB,IAAGhjK,MACP,EAEA4iK,EAAWh5J,UAAUiqH,QAAU,SAAkBj7H,GACxCgN,KAAK69J,iBAAkB79J,KAAK+pB,QAAQurD,GAAQ,CAAEh5E,MAAOtJ,KACtDA,EAAE88D,gBAEV,EAEAktG,EAAWh5J,UAAU80G,OAAS,SAAiB9lH,GAC3C,IAGI4a,EAGAygB,EANAo7H,EAAOzpJ,KACPyU,EAAM,EACNsuB,EAAS0mH,EAAK1mH,OAEdq3E,EAAU6gD,GAAWjoK,GACrBoH,EAASggH,EAAQhgH,OAEjB8/G,EAAQlnH,EAAEknH,MAEd,KAAIA,GAASA,EAAQ,GAAKuvC,EAAK2V,sBAW/B,IAPApC,EAAWzpK,QAAU,KACrBk2J,EAAKN,cAAgBn2J,EAAEm2J,cAEnBM,EAAK5wC,iBACL7lH,EAAE6lH,kBAGCpkG,EAAMra,IACLqvJ,EAAK2V,qBADQ3qJ,IAKjB4Z,EAAQ+rF,EAAQ3lG,IAGZ7G,EADAm1B,EACS1U,EAAM86H,cAENM,EAAKj2J,UAGc,IAAlBoa,EAAOxT,SAIrBi0B,EAAQ,IAAI0tI,GAAMtS,EAAM77I,EAAQygB,GAChCo7H,EAAKrvC,QAAQhrG,KAAKif,GAClBA,EAAM8qF,QAEFswC,EAAKsV,iBACLtV,EAAKv4F,OAAO,eAAgB,CAAC,GAGzC,EAEA8rG,EAAWh5J,UAAU+0G,MAAQ,SAAgB/lH,GACzCgN,KAAKq/J,WAAW,OAAQrsK,EAC5B,EAEAgqK,EAAWh5J,UAAUg1G,KAAO,SAAehmH,GACvCgN,KAAKq/J,WAAW,MAAOrsK,EAC3B,EAEAgqK,EAAWh5J,UAAUy8F,OAAS,SAAiBztG,GAC3C,IAAIikB,EAAO,CACPoX,MAAO,CACHC,aAAct7B,EAAE4a,OAChBA,OAAQ5a,EAAEm2J,cACV8T,QAAS7tI,KACTrJ,EAAG,CACClT,SAAU7f,EAAEg7B,MACZ6tI,OAAQ7oK,EAAEi7B,SAEdjI,EAAG,CACCnT,SAAU7f,EAAEk7B,MACZ2tI,OAAQ7oK,EAAEm7B,UAGlBpI,EAAG/yB,EAAEg7B,MACLhI,EAAGhzB,EAAEk7B,MACLtgB,OAAQ5a,EAAEm2J,cACV7sJ,MAAOtJ,EACPG,KAAM,OAGN6M,KAAK+pB,QAAQ,MAAO9S,IACpBjkB,EAAE88D,gBAEV,EAEAktG,EAAWh5J,UAAUq7J,WAAa,SAAqBh5H,EAAYrzC,GAC/D,IAIIyhB,EACA4Z,EACA2tI,EACAsD,EANAC,EAAO,CAAC,EACRnlD,EAAU6gD,GAAWjoK,GACrBkqK,EAHOl9J,KAGco6G,QAMzB,IAAK3lG,EAAM,EAAGA,EAAMyoJ,EAAc9iK,OAAQqa,IAEtC8qJ,GADAlxI,EAAQ6uI,EAAczoJ,IACXne,IAAM+3B,EAGrB,IAAK5Z,EAAM,EAAGA,EAAM2lG,EAAQhgH,OAAQqa,KAEhC6qJ,EAAgBC,GADhBvD,EAAY5hD,EAAQ3lG,IACWne,MAG3BgpK,EAAcj5H,GAAY21H,EAGtC,EAEAgB,EAAWh5J,UAAUm7J,SAAW,SAAmBhsK,EAAM4yB,EAAGC,EAAGpY,GAC3D5N,KAAK7M,GAAM,CACPgoK,KAAK,EACLntI,MAAOjI,EACPmI,MAAOlI,EACPiI,QAASlI,EACToI,QAASnI,EACTpY,OAAQA,GAAU5N,KAAKxM,QACvBqlH,gBAAiB5xG,GACjB6oD,eAAgB7oD,IAExB,EAEA+1J,EAAWwC,iBAAmB,SAA2BriK,GACrDm9J,GAAoBn9J,CACxB,EAEA6/J,EAAWN,QAAU,SAAkBv/J,GACnCk9J,GAAmBl9J,CACvB,EAEO6/J,CACX,CA5WyB,CA4WvBn9D,IC5pBEgnC,GAASh8H,OAAOW,OAChBuV,GAAMD,KAAKC,IAWX8qI,GAAS,SAET4T,GAAS,SAGTC,GAAgB,SAAUzuJ,GAC1B,SAASyuJ,EAAapqJ,GAClBrE,EAAUjO,KAAKhD,KAAMsV,GACrB,IAAIm0I,EAAOzpJ,KACX6mI,GAAO4iB,EAAMn0I,GACbm0I,EAAKmK,WAAW7zJ,KAAK,aAAc0pJ,EAAKlgI,MAAMxpB,KAAKC,OACnDypJ,EAAKkW,WAAW5/J,KAAK,QAAS0pJ,EAAKzjJ,OAAOjG,KAAKC,MACnD,CA0BA,OAxBKiR,IAAYyuJ,EAAa30J,UAAYkG,GAC1CyuJ,EAAa17J,UAAY6G,OAAOS,OAAQ2F,GAAaA,EAAUjN,WAC/D07J,EAAa17J,UAAUqH,YAAcq0J,EAErCA,EAAa17J,UAAU6uJ,QAAU,WAC7B,OAAO7yJ,KAAKqzJ,QAAQrhI,MAAQhyB,KAAK2zJ,WAAWhB,QAChD,EAEA+M,EAAa17J,UAAU0F,KAAO,WAC1B,OAAO1J,KAAK2zJ,WAAWhB,SAAW3yJ,KAAKqzJ,QAAQrhI,MAAQ,GAC3D,EAEA0tI,EAAa17J,UAAU2tD,KAAO,WAC1B,IAAI0hG,EAAUrzJ,KAAKqzJ,QACnBA,EAAQY,UAAU,KAClBj0J,KAAK2zJ,WAAWlB,QAAQY,EAAQrhI,MACpC,EAEA0tI,EAAa17J,UAAU+1J,MAAQ,WAC3B,IAAI1G,EAAUrzJ,KAAKqzJ,QACnBA,EAAQmB,QAAQx0J,KAAK2zJ,WAAWhB,UAChC3yJ,KAAK2zJ,WAAWlB,QAAQY,EAAQrhI,MACpC,EAEO0tI,CACX,CAlCoB,CAkClBzuJ,IAEE2uJ,GAAe,SAAU3uJ,GACzB,SAAS2uJ,EAAYtqJ,GACjBrE,EAAUjO,KAAKhD,MACf,IAAIypJ,EAAOzpJ,KAEX6mI,GAAO4iB,EAAMn0I,EAAS,CAClBuqJ,WAAY,IAAIj9J,GAAW,CACvBmoC,KAAMz1B,EAAQy1B,KACdsoH,QAAS/9I,EAAQ+9I,QACjB0G,MAAO,WACHtQ,EAAKzwC,MACT,MAIRywC,EAAKkW,WAAW5/J,KAAK,SAAS,WAC1B0pJ,EAAKzjJ,QACT,IAEAyjJ,EAAKmK,WAAW7zJ,KAAK,MAAO6oJ,GAAMa,EAAKlgI,MAAOkgI,IAC9CA,EAAKmK,WAAW7zJ,KAAK,aAAc6oJ,GAAMa,EAAKlgI,MAAOkgI,IACrDA,EAAKmK,WAAW7zJ,KAAK,MAAO6oJ,GAAMa,EAAKsQ,MAAOtQ,GAClD,CAuFA,OArFKx4I,IAAY2uJ,EAAY70J,UAAYkG,GACzC2uJ,EAAY57J,UAAY6G,OAAOS,OAAQ2F,GAAaA,EAAUjN,WAC9D47J,EAAY57J,UAAUqH,YAAcu0J,EAEpCA,EAAY57J,UAAUrK,SAAW,WAC7BqG,KAAK6/J,WAAW75J,QACpB,EAEA45J,EAAY57J,UAAU87J,OAAS,SAAiBjtJ,GACjC7S,KACNgG,SADMhG,KAEN+/J,QAAQltJ,EACjB,EAEA+sJ,EAAY57J,UAAU+1J,MAAQ,WAC1B,IAAItQ,EAAOzpJ,KACPypJ,EAAKuW,SAAS1N,cACd7I,EAAKwW,YAELxW,EAAKzwC,MAEb,EAEA4mD,EAAY57J,UAAU0F,KAAO,WACzB,OAAOqX,GAAI/gB,KAAKy7J,UAAY,CAChC,EAEAmE,EAAY57J,UAAUulB,MAAQ,SAAgBv2B,GAC1C,IACIyoK,EADAhS,EAAOzpJ,KAENypJ,EAAK2J,UAAUP,UAGhBpJ,EAAKuW,SAAS1N,cACV7I,EAAKoW,WAAW/F,UAChBrQ,EAAKoW,WAAW75J,SAChByjJ,EAAKgS,SAAW36I,KAAK6N,IAAI37B,EAAEq7B,MAAMo7H,EAAK1+G,MAAM0wH,SAAWhS,EAAKyW,mBA3GzD,IA4GHjvJ,EAAUjN,UAAUulB,MAAMvmB,KAAKhD,OAE/BypJ,EAAKwW,aAGTxE,EAxGS,IAwGEzoK,EAAEq7B,MAAM/3B,GAAwB,EAAItD,EAAEq7B,MAAMo7H,EAAK1+G,MAAM0wH,SAClEhS,EAAKgS,SAAW36I,KAAK0K,IAAI1K,KAAK6N,IAAI8sI,EAAWhS,EAAKyW,mBAlH3C,SAmHPzW,EAAKkW,WAAW/N,cAChB3gJ,EAAUjN,UAAUulB,MAAMvmB,KAAKhD,OAEvC,EAEA4/J,EAAY57J,UAAU2tD,KAAO,WACzB,IAAI83F,EAAOzpJ,KACPozJ,EAAY3J,EAAK2J,UACjB+M,EAAW1W,EAAKuW,SAAS1N,cA1HR,GA0HiD7I,EAAK0W,SACvE70I,EAAQm+H,EAAKgS,UAAY0E,EACzBttJ,EAAW42I,EAAK4J,QAAQ5J,EAAK1+G,MAAQzf,GAEpCm+H,EAAKiK,SAAWN,EAAUd,YAAYz/I,KACvCA,EAAWiO,KAAK0K,IAAI1K,KAAK6N,IAAI9b,EAAUugJ,EAAU5nI,KAAM4nI,EAAUzkI,KACjE86H,EAAKgS,SAAW,GAGpBhS,EAAK4J,QAAQoB,SAAShL,EAAK1+G,KAAMl4B,EACrC,EAEA+sJ,EAAY57J,UAAUg1G,KAAO,WACzBh5G,KAAK2/J,WAAW9N,gBAChB7xJ,KAAKwpB,KACT,EAEAo2I,EAAY57J,UAAUi8J,UAAY,WAC9B,IAAIxW,EAAOzpJ,KACPozJ,EAAY3J,EAAK2J,UACjBgN,EAAW3W,EAAK4J,QAAQ5J,EAAK1+G,MAAQqoH,EAAU5nI,IAAM4nI,EAAU5nI,IAAM4nI,EAAUzkI,IAEnF86H,EAAKsW,QAAQK,EACjB,EAEAR,EAAY57J,UAAU+7J,QAAU,SAAkBltJ,GAC9C7S,KAAK6/J,WAAWzhH,OAAO,CACnBvrC,SAAUA,EACV4vC,SA3JY,IA4JZ03G,KAAMv3J,GAAWw3J,aAEzB,EAEOwF,CACX,CA9GmB,CA8GjB3uJ,IAEEovJ,GAAoB,SAAUpvJ,GAC9B,SAASovJ,EAAiB/qJ,GACtBrE,EAAUjO,KAAKhD,KAAMsV,GAGrBuxH,GAFW7mI,KAEEsV,EAAS,CAClBiyB,OAAQ,CAAC,EACThhB,YAAa,CAAC,EACdjB,OAAQ,CAAC,GAEjB,CAiDA,OA/CKrU,IAAYovJ,EAAiBt1J,UAAYkG,GAC9CovJ,EAAiBr8J,UAAY6G,OAAOS,OAAQ2F,GAAaA,EAAUjN,WACnEq8J,EAAiBr8J,UAAUqH,YAAcg1J,EAEzCA,EAAiBr8J,UAAU2tD,KAAO,WAC9B3xD,KAAKsgK,qBACLtgK,KAAKo+C,OAAOp+C,KAAKunC,OACrB,EAEA84H,EAAiBr8J,UAAU0F,KAAO,WAC9B,OAAOqX,GAAI/gB,KAAKslB,OAAOU,GAnLG,GAmLiCjF,GAAI/gB,KAAKslB,OAAOS,GAnLjD,CAoL9B,EAEAs6I,EAAiBr8J,UAAU+1J,MAAQ,WAC/B/5J,KAAKo+C,OAAOp+C,KAAKumB,aACbvmB,KAAKkG,UACLlG,KAAKkG,SAASlD,MAEtB,EAEAq9J,EAAiBr8J,UAAUu8J,eAAiB,SAAyBh9H,EAAMjkC,GACvEU,KAAKslB,OAAS,CAAC,EACftlB,KAAKunC,OAAShE,EACdvjC,KAAKumB,YAAcjnB,CACvB,EAGA+gK,EAAiBr8J,UAAUw8J,YAAc,SAAsBt6J,GACvDA,GAAYkgB,GAAWlgB,GACvBlG,KAAKkG,SAAWA,EAEhBA,OAAWzS,CAEnB,EAGA4sK,EAAiBr8J,UAAUs8J,mBAAqB,WAC5CtgK,KAAKslB,OAAS,CACVS,GAAI/lB,KAAKumB,YAAYR,EAAI/lB,KAAKunC,OAAOxhB,GAAK,EAC1CC,GAAIhmB,KAAKumB,YAAYP,EAAIhmB,KAAKunC,OAAOvhB,GAAK,GAE9ChmB,KAAKunC,OAAS,CACVvhB,EAAGhmB,KAAKunC,OAAOvhB,EAAIhmB,KAAKslB,OAAOU,EAC/BD,EAAG/lB,KAAKunC,OAAOxhB,EAAI/lB,KAAKslB,OAAOS,EAEvC,EAEOs6I,CACX,CA5DwB,CA4DtBpvJ,IAEEwvJ,GAAa,SAAUxvI,GACvB,SAASwvI,EAAUnrJ,GACf2b,EAAMjuB,KAAKhD,MACX,IAAIypJ,EAAOzpJ,KACPu9E,EAA8B,MAAjBjoE,EAAQy1B,KAGrBv3C,EAAUoxJ,GAAc,sCADTrnE,EAAa,aAAe,YACkC,kBAEjFspD,GAAO4iB,EAAMn0I,EAAS,CAClB9hB,QAASA,EACTk9B,YAAa,EACb2iI,QAAS,IAAIc,GAAQ3gK,GACrBktK,cAAeprJ,EAAQ+9I,QACvBsN,cAAerrJ,EAAQqrJ,cACvB/pK,KAAM2mF,EAAa,QAAU,WAGjCksE,EAAKiX,cAAc3gK,KAAK8rJ,GAAQpC,EAAKh8D,QAAQ1tF,KAAK0pJ,IAElDA,EAAKvnI,UAAU1C,YAAYhsB,GAEvB8hB,EAAQqrJ,eACRlX,EAAKpxJ,MAEb,CA4CA,OA1CK44B,IAAQwvI,EAAU11J,UAAYkmB,GACnCwvI,EAAUz8J,UAAY6G,OAAOS,OAAQ2lB,GAASA,EAAMjtB,WACpDy8J,EAAUz8J,UAAUqH,YAAco1J,EAElCA,EAAUz8J,UAAUypF,QAAU,WAC1B,IAAIg8D,EAAOzpJ,KACP+qC,EAAO0+G,EAAK1+G,KACZqoH,EAAY3J,EAAK2J,UACjBwN,EAAWxN,EAAUx8J,KACrB8pK,EAAgBjX,EAAKiX,cACrBG,EAAYD,EAAWxN,EAAUh2I,MACjCy/B,EAAW/7B,KAAKE,OAAO0/I,EAAc31H,GAAQ81H,GAC7CjqK,EAAOkqB,KAAKE,MAAM4/I,EAAWC,GAE7B7gK,KAAKxM,QAAQiD,MAAMC,QADnBmqK,GAAa,EACgB,OAEA,GAE7BhkH,EAAWjmD,EAAOgqK,EAClBhqK,EAAOgqK,EAAW/jH,EACXA,EAAW,IAClBjmD,GAAQimD,EACRA,EAAW,GAEX4sG,EAAK/4H,cAAgB95B,IACrB6yJ,EAAKj2J,QAAQiD,MAAMgzJ,EAAK7yJ,MAAQA,EAAO,KACvC6yJ,EAAK/4H,YAAc95B,GAEvB6yJ,EAAK4J,QAAQoB,SAAS1pH,EAAM8R,EAChC,EAEA4jH,EAAUz8J,UAAU3L,KAAO,WACvB2H,KAAKxM,QAAQiD,MAAM++C,QA3RH,GA4RhBx1C,KAAKxM,QAAQiD,MAAM6gI,WAAa,SACpC,EAEAmpC,EAAUz8J,UAAU7N,KAAO,WAClB6J,KAAK2gK,gBACN3gK,KAAKxM,QAAQiD,MAAM++C,QAAU,EAErC,EAEOirH,CACX,CAtEiB,CAsEfxvI,IAGS6vI,GAAY,SAAUjhE,GAC7B,SAASihE,EAASttK,EAAS8hB,GACvBuqF,EAAW78F,KAAKhD,MAChB,IAAIypJ,EAAOzpJ,KACXA,KAAKxM,QAAUA,EAEfwM,KAAKg1C,aAAa1/B,GAElB,IAAIyrJ,EhBnNoB,SAAUz2I,GACtC,IAAI+6H,EAAKF,GAAS76H,GAClB,OAAO+6H,EAAGgB,KAAOhB,EAAGI,OACxB,CgBgN2Bub,CAAmB71I,UAAUb,WAChDm/H,EAAKwX,QAAUxX,EAAKn0I,QAAQ4rJ,WAAaH,EACzC,IAAII,EAAevc,GAAc,mCAEjC,GAAI6E,EAAKwX,QASL,OARAz4J,EAAShV,EAAS,sBAClBuxJ,GAAQoc,EAAc3tK,QAEtBqzI,GAAO4iB,EAAM,CACT2D,cAAe55J,EACf4tK,eAAgB5tK,EAAQI,SAAS,KAMzCJ,EAAQiD,MAAMyzG,SAAW,SACzB1hG,EAAShV,EAAS,qBhB3UH,SAAUo/B,EAAQ/5B,GAGrC,IAFA+5B,EAAOpT,YAAY3mB,GAEZ+5B,EAAOmwE,aAAelqG,GACzBA,EAAQ2mB,YAAYoT,EAAOmwE,WAEnC,CgBwUQs+D,CAAU7tK,EADYoxJ,GAAc,uCAEpCG,GAAQoc,EAAc3tK,GAEtB,IAAI8tK,EAAQ9tK,EAAQI,SAAS,GACzB+rK,EAAa,IAAInO,GAAWh+J,GAC5B6/J,EAAU,IAAIc,GAAQmN,GAEtB3N,EAAa,IAAIb,GAAe,CAC5Bt/J,QAAS8tK,EACTp/I,UAAW1uB,EACXu+J,cAAetI,EAAKn0I,QAAQk+F,OAEhC+tD,EAAiBvhK,KAAKsV,QAAQisJ,eAE9B3N,EAAa,IAAIoJ,GAAWxpK,EAAS,CACjC64H,YAAa,QACb0xC,SAAS,EACTF,gBAAgB,EAChBW,kBAAkB,EAClBV,kBAAkB,EAClBF,WAAYnU,EAAKn0I,QAAQk+F,KACzB6oD,iBAAkB5S,EAAKn0I,QAAQ+mJ,iBAC/B9yI,MAAO,SAAev2B,GAClB2gK,EAAWlmE,UACX,IAAI+zE,EAAYzgJ,GAAI/tB,EAAE+yB,EAAE01I,UACpBgG,EAAY1gJ,GAAI/tB,EAAEgzB,EAAEy1I,UACpBiG,EAA8B,EAAZF,GAAiBC,EACnCE,EhBrFF,SAAU/uI,EAAQp/B,GACpC,OAAOo/B,IAAWp/B,GAnBG,SAAUo/B,EAAQp/B,GACvC,IAAKA,EACD,OAAO,EAKX,IAFA,IAAI+S,EAAO/S,EAAQshC,WAEH,OAATvuB,GAAe,CAClB,GAAIA,IAASqsB,EACT,OAAO,EAGXrsB,EAAOA,EAAKuuB,UAChB,CAEA,OAAO,CACX,CAGiC8sI,CAAYhvI,EAAQp/B,EACrD,CgBmFuD4V,CAASqgJ,EAAK2X,eAAgBpuK,EAAEsJ,MAAMsR,QACrEi0J,EAA4B,EAAZJ,GAAiBD,GAChCG,IAAiCJ,EAAevuK,IAAMy2J,EAAKoJ,UAAYc,EAAW5tI,EAAE8sI,SAAW6O,GAAmB/N,EAAW3tI,EAAE6sI,SAAWgP,GAC3IjO,EAAWnC,UAEXmC,EAAW5tJ,QAEnB,IAGJqvD,EAAO,IAAIy3B,GAAK,CACZumE,QAASA,EACTM,WAAYA,EACZC,WAAYA,EACZF,QAASjK,EAAKn0I,QAAQo+I,UAG1BoO,EAAe,IAAIpC,GAAa,CAC5BrM,QAASA,EACTM,WAAYA,EACZC,WAAYA,EACZ+L,WAAYA,IAGhBoC,EAAmB,IAAI1B,GAAiB,CACpCjiH,OAAQ,SAAgBwxE,GACpB65B,EAAKuY,SAASpyC,EAAY7pG,EAAG6pG,EAAY5pG,EAC7C,IAGRqtI,EAAQtzJ,KAAK8rJ,IAAQ,WACjBpC,EAAKvgJ,WAAamqJ,EAAQrtI,EAC1ByjI,EAAKl5H,YAAc8iI,EAAQttI,EAC3B0jI,EAAK1/H,QAAQ01I,GAAQ,CACjBv2J,UAAWugJ,EAAKvgJ,UAChBqnB,WAAYk5H,EAAKl5H,YAEzB,IAEIk5H,EAAKn0I,QAAQ2sJ,sBACbjiK,KAAKkiK,oBAAsBliK,KAAKmiK,aAAapiK,KAAKC,MAClD6oJ,GAAGr1J,EAAS,4BAA6BwM,KAAKkiK,sBAGlDr7B,GAAO4iB,EAAM,CACT4J,QAASA,EACTM,WAAYA,EACZmO,aAAcA,EACdC,iBAAkBA,EAClBnO,WAAYA,EACZv+F,KAAMA,EACNsqG,WAAYA,EACZyC,QAAQ,EACRvP,SAAS,EACTzF,cAAekU,EACfp4J,UAAW,EACXqnB,WAAY,EACZ6wI,eAAgB5tK,EAAQI,SAAS,KAGrC61J,EAAK4Y,UAAU,KACf5Y,EAAK4Y,UAAU,KAEf5Y,EAAK6Y,UAAY,WACb7Y,EAAK8Y,QAAS,EACd9Y,EAAKmK,WAAWpqI,IAAI,EAAGigI,EAAK+Y,QAChC,EAEA7O,EAAWlmE,UAEPg8D,EAAKn0I,QAAQmtJ,eACbhZ,EAAKiZ,oBAEb,CAsPA,OApPK7iE,IAAaihE,EAAS/1J,UAAY80F,GACvCihE,EAAS98J,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WAC7D88J,EAAS98J,UAAUqH,YAAcy1J,EAEjCA,EAAS98J,UAAUgxC,aAAe,SAAuB1/B,GACrDtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEAwrJ,EAAS98J,UAAUm+J,aAAe,SAAuBnvK,GACrD,IAAIA,EAAEwJ,QAAN,CAGKwD,KAAKuiK,SACNviK,KAAKuiK,QAAS,EACdviK,KAAKwiK,QAAU,EACfxiK,KAAK4zJ,WAAWz6C,MAAM,EAAGn5G,KAAKwiK,UAGlC/vJ,aAAazS,KAAK2iK,eAClB3iK,KAAK2iK,cAAgB/7J,WAAW5G,KAAKsiK,UAAW,IAChD,IAAIh3I,EhBvFa,SAAUgyI,GAC/B,IAEIhyI,EAFAt4B,EAAIsqK,EAAYthF,eAAiBshF,EACjCsF,EAAS5vK,EAAE6vK,YAWf,OARI7vK,EAAEu4B,iBACa93B,IAAXmvK,GAAwBA,KACxBt3I,EAAQt4B,EAAEu4B,YAEPv4B,EAAE04B,QAAU14B,EAAE+3C,OAAS/3C,EAAE8vK,gBAChCx3I,EAAsB,IAAZt4B,EAAE04B,QAGTJ,CACX,CgByEoBu3I,CAAY7vK,GAEpBs4B,IACAtrB,KAAKwiK,SAAWl3I,EAChBtrB,KAAK4zJ,WAAWlsH,KAAK,EAAG1nC,KAAKwiK,UAGjCxvK,EAAE88D,gBAhBF,CAiBJ,EAEAgxG,EAAS98J,UAAUiuJ,YAAc,WAC7BjyJ,KAAK2zJ,WAAW3tI,EAAEisI,aACtB,EAEA6O,EAAS98J,UAAUquJ,YAAc,SAAsB1jI,EAAKnD,GACxDxrB,KAAK2zJ,WAAW3tI,EAAEqsI,YAAY1jI,EAAKnD,EACvC,EAEAs1I,EAAS98J,UAAUvP,OAAS,WACxB,OAAOuL,KAAK2zJ,WAAW3tI,EAAEpvB,IAC7B,EAEAkqK,EAAS98J,UAAU++J,aAAe,WAC9B,OAAO/iK,KAAKotJ,cAAc2V,YAC9B,EAEAjC,EAAS98J,UAAUkzH,YAAc,WAC7B,OAAOl3H,KAAKotJ,cAAcl2B,WAC9B,EAEA4pC,EAAS98J,UAAUq9F,QAAU,WACpBrhG,KAAKihK,SACNjhK,KAAKgjK,gBAEb,EAEAlC,EAAS98J,UAAUowH,WAAa,SAAqB9+G,GAGjDtV,KAAKg1C,aAAa1/B,GAEdA,EAAQmtJ,eAJDziK,KAKF0iK,oBAEb,EAEA5B,EAAS98J,UAAU6+E,MAAQ,WACnB7iF,KAAKihK,QACLjhK,KAAKotJ,cAAclkJ,UAAU,IAE7BlJ,KAAKqzJ,QAAQj1G,OAAO,CAChBr4B,EAAG,EACHC,EAAG,IAEPhmB,KAAKijK,OAAO,GAEpB,EAEAnC,EAAS98J,UAAUg/J,eAAiB,WAChChjK,KAAK2zJ,WAAWlmE,UACZztF,KAAKq1D,KAAKtvC,EAAEusI,eACZtyJ,KAAKqzJ,QAAQoB,SAAS,IAAKz0J,KAAK2zJ,WAAW5tI,EAAE4I,KAE7C3uB,KAAKq1D,KAAKrvC,EAAEssI,eACZtyJ,KAAKqzJ,QAAQoB,SAAS,IAAKz0J,KAAK2zJ,WAAW3tI,EAAE2I,IAErD,EAEAmyI,EAAS98J,UAAUk/J,QAAU,WACzB,IAAIvP,EAAa3zJ,KAAK2zJ,WACtBA,EAAWlmE,UACXztF,KAAKijK,OAAOtP,EAAWvvB,UACvBpkI,KAAKqzJ,QAAQj1G,OAAOu1G,EAAWT,oBACnC,EAEA4N,EAAS98J,UAAUm/J,OAAS,WACxBnjK,KAAK6yJ,SAAU,CACnB,EAEAiO,EAAS98J,UAAUo/J,QAAU,WACzBpjK,KAAK6yJ,SAAU,CACnB,EAEAiO,EAAS98J,UAAUg+J,SAAW,SAAmBj8I,EAAGC,GAC5ChmB,KAAKihK,SACLjhK,KAAKotJ,cAAc78H,WAAWxP,GAAIgF,IAClC/lB,KAAKotJ,cAAclkJ,UAAU6X,GAAIiF,MAEjChmB,KAAK2zJ,WAAWlmE,UAChBztF,KAAKqzJ,QAAQj1G,OAAO,CAChBr4B,EAAGA,EACHC,EAAGA,IAGf,EAEA86I,EAAS98J,UAAUq/J,iBAAmB,SAA2Bt9I,EAAGC,EAAG9f,GACnE,IAAIq9B,EAAMjkC,EACNU,KAAKihK,QACLjhK,KAAKgiK,SAASj8I,EAAGC,IAEjBud,EAAO,CACHxd,EAAG/lB,KAAKqzJ,QAAQttI,EAChBC,EAAGhmB,KAAKqzJ,QAAQrtI,GAEpB1mB,EAAK,CACDymB,EAAGA,EACHC,EAAGA,GAEPhmB,KAAK+hK,iBAAiBxB,eAAeh9H,EAAMjkC,GAC3CU,KAAK+hK,iBAAiBvB,YAAYt6J,GAClClG,KAAK+hK,iBAAiBx4I,QAE9B,EAGAu3I,EAAS98J,UAAUs/J,YAAc,WAQ7B,EAGJxC,EAAS98J,UAAUs/C,QAAU,WACzB,IAAI9vD,EAAUwM,KAAKxM,QAEnB41J,GAAI51J,EAAS,4BAA6BwM,KAAKkiK,qBAE3CliK,KAAK4zJ,YACL5zJ,KAAK4zJ,WAAWtwG,SAExB,EAEAw9G,EAAS98J,UAAUi/J,OAAS,SAAiBjxI,GACzChyB,KAAK2zJ,WAAWlB,QAAQzgI,GACxBhyB,KAAKqzJ,QAAQmB,QAAQxiI,EACzB,EAEA8uI,EAAS98J,UAAU0+J,mBAAqB,WACxC,EAGA5B,EAAS98J,UAAUm1H,SAAW,WAe1B,EAIJ2nC,EAAS98J,UAAUu/J,YAAc,WAa7B,EAGJzC,EAAS98J,UAAUq+J,UAAY,SAAoBt3H,GAC/C,IAAI0+G,EAAOzpJ,KACPqzJ,EAAU5J,EAAK4J,QACfD,EAAY3J,EAAKkK,WAAW5oH,GAC5B40H,EAAalW,EAAKkW,WAClBK,EAAWvW,EAAKp0F,KAAKtqB,GACrBy4H,EAAY,IAAI/C,GAAU,CACtB11H,KAAMA,EACNsoH,QAASA,EACTD,UAAWA,EACXlxI,UAAWunI,EAAKj2J,QAChBmtK,cAAelX,EAAKn0I,QAAQmuJ,qBAGpCrQ,EAAUrzJ,KAAK8rJ,IAAQ,WACnB2X,EAAU/1E,SACd,IAEAuyE,EAASjgK,KAAK8rJ,IAAQ,WAClB2X,EAAUnrK,MACd,IAEAoxJ,EAAK1+G,EAAO,WAAa,IAAI60H,GAAY,CACrC70H,KAAMA,EACNi1H,SAAUA,EACV3M,QAASA,EACTsM,WAAYA,EACZ/L,WAAYnK,EAAKmK,WACjBR,UAAWA,EACXM,QAASjK,EAAKn0I,QAAQo+I,QACtByM,SAAU1W,EAAKn0I,QAAQ6qJ,UAjpBpB,IAkpBHD,mBAAoBzW,EAAKn0I,QAAQ4qJ,oBAjpBnB,GAkpBd12I,IAAK,WACDg6I,EAAUrtK,OACVszJ,EAAK1/H,QAAQ,YAAa,CACtBghB,KAAMA,EACN7hC,UAAWugJ,EAAKvgJ,UAChBqnB,WAAYk5H,EAAKl5H,YAEzB,GAER,EAEOuwI,CACX,CAvXuB,CAuXrBjhE,IAEFlqE,GAAkBmrI,GAAU,CACxBnwJ,KAAM,WACN6iG,MAAM,EACNkwD,WAAY,IACZD,oBAAoB,EACpB/P,SAAS,EACTwN,WAAW,EACXe,qBAAqB,EACrBV,eAAgB,WACZ,OAAO,CACX,EACAkB,eAAe,EACfkB,SAAU,CACNC,aAAc,kBACdC,gBAAiB,qBACjBC,gBAAiB,gBAIzBva,GAAiBuX,GAAU,CA7qBhB,OA+qBPrB,GA7qBS,WCzDb,IAAIsE,GAAa,SAAoBz1G,EAAQxrD,QACxB,IAAZA,IAAqBA,EAAU,CAAC,GAErC9C,KAAK+jD,OAASjhD,EAAQihD,QAAUuK,EAChCtuD,KAAKsuD,OAASA,EACdtuD,KAAKgxD,IAAMC,QAAQnuD,EAAQkuD,IAC/B,EAEA+yG,GAAW//J,UAAUktD,OAAS,SAAiBvgD,EAAM3I,GAC7ChI,KAAKsuD,QACLtuD,KAAKsuD,OAAOvkC,QAAQpZ,EAAM3I,EAElC,EAEA,UCqEIm4I,GAAOr/H,KACP6N,GAAMwxH,GAAKxxH,IACXtF,GAAM82H,GAAK92H,IACX4b,GAAQ9oB,GACR6nJ,GAAS,SAITluF,GAAa,4BAIbmuF,GAAY,CACZhvC,OAAQiiC,GACR17J,MAAOm5J,GACPvE,KAAM1B,IAIV,SAASwV,GAAU3uJ,GACf,IAAInd,EAAS,GAEb,GAAImd,EAGA,IAFA,IAAIme,EAAQuxH,GAAU1vI,GAAKhO,MAAM,KAExBmE,EAAI,EAAGA,EAAIgoB,EAAMt5B,OAAQsR,IAC9BtT,EAAOgX,KAAK,SAAWskB,EAAMhoB,IAIrC,OAAOtT,EAAOs5B,KAAK,IACvB,CAdAuyI,GAAgB,OAAIvL,GAgBpB,IAAIyL,GAAO,SAAUtkE,GACjB,SAASskE,EAAI3wK,EAAS8hB,EAASmzG,EAAc3lH,QACxB,IAAZwS,IAAqBA,EAAU,CAAC,QACf,IAAjBmzG,IAA0BA,EAAe,CAAC,QAC9B,IAAZ3lH,IAAqBA,EAAU,CAAC,GAErC+8F,EAAW78F,KAAKhD,MAEhBA,KAAKokK,MAAM5wK,EAAS8hB,EAASmzG,EAAc3lH,EAC/C,CAqwBA,OAnwBK+8F,IAAaskE,EAAIp5J,UAAY80F,GAClCskE,EAAIngK,UAAY6G,OAAOS,OAAQu0F,GAAcA,EAAW77F,WACxDmgK,EAAIngK,UAAUqH,YAAc84J,EAE5BA,EAAIngK,UAAUs/C,QAAU,WAGpBtjD,KAAKqkK,SAAS/gH,UAEVtjD,KAAKyqH,UACLzqH,KAAKyqH,SAASnnE,UAGdtjD,KAAKmrB,WACLnrB,KAAKmrB,UAAUm4B,UAEftjD,KAAKguJ,aACLhuJ,KAAKguJ,YAAY1qG,UAEjBtjD,KAAKskK,aACLtkK,KAAKskK,YAAYhhH,UAGjBluD,EAAQ4K,KAAKq8E,SACbr8E,KAAKq8E,QAAQ70E,SAAQ,SAAU+8J,GAC3BA,EAAYjhH,SAChB,IAEAtjD,KAAKq8E,QAAQ/4B,UAGjB,IAAK,IAAI53C,EAAI,EAAGA,EAAI1L,KAAKquJ,OAAOj0J,OAAQsR,IA1B3B1L,KA2BFquJ,OAAO3iJ,GAAG43C,UAGrB8lG,GAAIppJ,KAAKxM,QAASsiF,GAAY91E,KAAK04G,oBAEnC7Y,EAAW77F,UAAUs/C,QAAQtgD,KAAKhD,KACtC,EAEAmkK,EAAIngK,UAAUogK,MAAQ,SAAgB5wK,EAAS8hB,EAASmzG,EAAc3lH,QACjD,IAAZwS,IAAqBA,EAAU,CAAC,QACf,IAAjBmzG,IAA0BA,EAAe,CAAC,QAC9B,IAAZ3lH,IAAqBA,EAAU,CAAC,GAErC9C,KAAKorB,QAAUs8H,KACf1nJ,KAAK8C,QAAUA,EAEf9C,KAAKwkK,aAAa1hK,GAClB9C,KAAKykK,aAAa3hK,GAClB9C,KAAK0kK,gBZ7KK,QY+KV1kK,KAAKg1C,aAAa1/B,GAClBtV,KAAK0pJ,WAAWp0I,GAChBtV,KAAK2kK,IAAM,IAAItgB,GAEfrkJ,KAAK0oH,aAAal1H,GAElBwM,KAAK4vJ,YAAc5vJ,KAAK4kK,aAExB5kK,KAAKyqH,SAAWzqH,KAAKmrH,iBACrBnrH,KAAK6kK,gBACL7kK,KAAK8kK,eACL9kK,KAAK+kK,gBACL/kK,KAAKglK,cACLhlK,KAAKstJ,SAELttJ,KAAK04G,mBAAqB14G,KAAK24G,YAAY54G,KAAKC,MAChD6oJ,GAAG7oJ,KAAKxM,QAASsiF,GAAY91E,KAAK04G,mBACtC,EAEAyrD,EAAIngK,UAAUgxC,aAAe,SAAuB1/B,GAChDtV,KAAKsV,QAAUyR,GAAW,CAAC,EAAG/mB,KAAKsV,QAASA,EAChD,EAEA6uJ,EAAIngK,UAAU0kH,aAAe,SAAuBl1H,GAChDwM,KAAKxM,QAAUA,EAEfgV,EAAShV,EAAS,SAClBA,EAAQiD,MAAMomD,SAAW,WACzBrpD,EAAQE,aAAa,YAAa,OAClCoxJ,GAAetxJ,GAEf,IAAIsjI,EAAM8tB,GAAc,WACxB5kJ,KAAKxM,QAAQgsB,YAAYs3G,EAC7B,EAEAqtC,EAAIngK,UAAUygK,aAAe,SAAuB3hK,QAC/B,IAAZA,IAAqBA,EAAU,CAAC,GAErC9C,KAAKgtJ,cAAgB,IAAI+W,GAAW/jK,KAAM8C,EAC9C,EAEAqhK,EAAIngK,UAAUwgK,aAAe,SAAuB1hK,QAC/B,IAAZA,IAAqBA,EAAU,CAAC,GAErC9C,KAAKgmC,UAAY,GACjBhmC,KAAKkmC,YAAYpjC,EAAQ8mB,SAC7B,EAEAu6I,EAAIngK,UAAUkiC,YAAc,SAAsBtc,GAC1CA,GACA5pB,KAAKgmC,UAAU52B,KAAKwa,EAE5B,EAEAu6I,EAAIngK,UAAUmiC,eAAiB,SAAyBvc,GACpD,IAAItvB,EAAQ0F,KAAKgmC,UAAU38B,QAAQugB,GAE/BtvB,GAAS,GACT0F,KAAKgmC,UAAUI,OAAO9rC,EAAO,EAErC,EAEA6pK,EAAIngK,UAAUomB,iBAAmB,SAA2B0F,GAGxD,IAFA,IAAIkW,EAAYhmC,KAAKgmC,UAEZvxB,EAAM,EAAGA,EAAMuxB,EAAU5rC,OAAQqa,IACtC,GAAIuxB,EAAUvxB,GAAK2V,iBAAiB0F,GAChC,OAAO,CAGnB,EAEAq0I,EAAIngK,UAAU+lB,QAAU,SAAkBpZ,EAAM3I,QAC9B,IAATA,IAAkBA,EAAO,CAAC,GAE/BA,EAAK+7C,OAAS/jD,KAKd,IAHA,IAAIgmC,EAAYhmC,KAAKgmC,UACjBhc,GAAqB,EAEhBvV,EAAM,EAAGA,EAAMuxB,EAAU5rC,OAAQqa,IAClCuxB,EAAUvxB,GAAKsV,QAAQpZ,EAAM3I,KAC7BgiB,GAAqB,GAQ7B,OAJKA,GACD61E,EAAW77F,UAAU+lB,QAAQ/mB,KAAKhD,KAAM2Q,EAAM3I,GAG3CgiB,CACX,EAEAm6I,EAAIngK,UAAU0gK,gBAAkB,SAA0B/zJ,EAAM3I,QAC9C,IAATA,IAAkBA,EAAO,CAAC,GAE/BA,EAAK+7C,OAAS/jD,KAKd,IAHA,IAAIgmC,EAAYhmC,KAAKgmC,UACjBhc,GAAqB,EAEhBvV,EAAM,EAAGA,EAAMuxB,EAAU5rC,OAAQqa,IAClCuxB,EAAUvxB,GAAKsV,QAAQpZ,EAAM3I,KAC7BgiB,GAAqB,GAI7B,OAAOA,CACX,EAEAm6I,EAAIngK,UAAUwvG,KAAO,SAAeyxD,GAChC,IACI7sK,EADAkd,EAAUtV,KAAKsV,QAGnB,GAAI6P,GAAQ8/I,GAAQ,CAChB,IAAIC,EAAY/kB,GAAKn/H,MAAM0N,GAAWu2I,EAAO3vJ,EAAQ+0I,QAAS/0I,EAAQg1I,UAElEh1I,EAAQk+F,OAAS0xD,IACjB5vJ,EAAQk+F,KAAO0xD,EACfllK,KAAKgtJ,cAAc97F,OZvSV,aYuS8B,CAAEsiD,KAAMl+F,EAAQk+F,OAEvDxzG,KAAKstJ,UAETl1J,EAAS4H,IACb,MACI5H,EAASkd,EAAQk+F,KAGrB,OAAOp7G,CACX,EAEA+rK,EAAIngK,UAAUmhC,OAAS,SAAiBsqH,GACpC,IAAIr3J,EAEJ,GAAIq3J,EAAU,CACV,IAAIl8J,EAAU8sJ,GAAS/0I,OAAOmkJ,GAC1BpwG,EAAWghG,GAAS/0I,OAAOtL,KAAKsV,QAAQ6vB,QACvC5xC,EAAQg+B,OAAO8tB,KAChBr/C,KAAKsV,QAAQ6vB,OAAS5xC,EAAQi+B,UAC9BxxB,KAAKgtJ,cAAc97F,OAAO67F,GAAe,CAAE5nH,OAAQnlC,KAAKsV,QAAQ6vB,SAChEnlC,KAAKstJ,UAGTl1J,EAAS4H,IACb,MACI5H,EAASioJ,GAAS/0I,OAAOtL,KAAKsV,QAAQ6vB,QAG1C,OAAO/sC,CACX,EAEA+rK,EAAIngK,UAAU4lJ,OAAS,SAAiB+F,GACpC,IAAIv3J,EASJ,OAPIu3J,GACA3vJ,KAAKmlK,WAAWxV,GAChBv3J,EAAS4H,MAET5H,EAAS4H,KAAKolK,aAGXhtK,CACX,EAEA+rK,EAAIngK,UAAUowH,WAAa,SAAqB9+G,QAC3B,IAAZA,IAAqBA,EAAU,CAAC,GAErC,IAAI9hB,EAAUwM,KAAKxM,QAEnBwM,KAAKsjD,UACLwhG,GAAetxJ,GACfwM,KAAKokK,MAAM5wK,EAAS8hB,EAAS,CAAC,EAAGtV,KAAK8C,SAEtC9C,KAAKstJ,QACT,EAEA6W,EAAIngK,UAAU+qJ,gBAAkB,SAA0Bl8I,EAAU2gG,GAChE,IAAI8vC,GAAStjJ,KAAKsV,QAAQ+vJ,WACtBC,EAAiBjlB,GAAS/0I,OAAOuH,GAErC,OAAO7S,KAAK2kK,IAAI1rE,QAAQqsE,EAAgBtlK,KAAKulK,WAAW/xD,GAAO8vC,EACnE,EAEA6gB,EAAIngK,UAAUwhK,gBAAkB,SAA0BtgI,EAAOsuE,GAC7D,IAAI8vC,GAAStjJ,KAAKsV,QAAQ+vJ,WACtBI,EAAcxgI,GAAM35B,OAAO45B,GAE/B,OAAOllC,KAAK2kK,IAAIlgB,WAAWghB,EAAazlK,KAAKulK,WAAW/xD,GAAO8vC,EACnE,EAEA6gB,EAAIngK,UAAU4xJ,eAAiB,SAAyB/iJ,GACpD,IAAIyyJ,EAAiBjlB,GAAS/0I,OAAOuH,GACjC00B,EAASvnC,KAAK+uJ,gBAAgB/uJ,KAAK4vJ,aAGvC,OAFY5vJ,KAAK+uJ,gBAAgBuW,GAEpB79H,cAAcF,EAAOvV,OAAO,GAC7C,EAEAmyI,EAAIngK,UAAUizJ,eAAiB,SAAyB/xH,EAAOsuE,GAC3D,IAAIjsE,EAASvnC,KAAK+uJ,gBAAgB/uJ,KAAK4kK,aAAcpxD,GAEjDkyD,EADczgI,GAAM35B,OAAO45B,GACDre,QAAQ4gB,cAAcF,GAEpD,OAAOvnC,KAAKwlK,gBAAgBE,EAAalyD,EAC7C,EAEA2wD,EAAIngK,UAAUkyJ,YAAc,SAAsBljK,GAC9C,IAAI+yB,EACAC,EACAV,EAAS0K,GAAchwB,KAAKxM,SAEhC,GAAKR,EAAE+yB,GAAK/yB,EAAE+yB,EAAU,UAAO/yB,EAAEgzB,GAAKhzB,EAAEgzB,EAAU,SAC9CD,EAAI/yB,EAAE+yB,EAAU,SAAIT,EAAOwC,KAC3B9B,EAAIhzB,EAAEgzB,EAAU,SAAIV,EAAOqC,QACxB,CACH,IAAIrrB,EAAQtJ,EAAEgpF,eAAiBhpF,EAC/B+yB,EAAI0J,GAAenzB,EAAM0xB,MAAO1xB,EAAM2xB,SAAW3I,EAAOwC,KACxD9B,EAAIyJ,GAAenzB,EAAM4xB,MAAO5xB,EAAM6xB,SAAW7I,EAAOqC,GAC5D,CAIA,OAFY,IAAIxL,GAAQ4J,EAAGC,EAG/B,EAEAm+I,EAAIngK,UAAU2hK,YAAc,SAAsB3yK,GAC9C,IAAIs0D,EAAStnD,KAAKk2J,YAAYljK,GAC9B,OAAOgN,KAAK41J,eAAe51J,KAAKi3J,eAAe3vG,GACnD,EAEA68G,EAAIngK,UAAU4hK,aAAe,SAAuB5yK,GAChD,OAAOgN,KAAK+uJ,gBAAgB/uJ,KAAK6lK,gBAAgB7yK,GACrD,EAEAmxK,EAAIngK,UAAU6hK,gBAAkB,SAA0B7yK,GACtD,IAAIs0D,EAAStnD,KAAKk2J,YAAYljK,GAC9B,OAAOgN,KAAKi3J,eAAe3vG,EAC/B,EAEA68G,EAAIngK,UAAU8hK,SAAW,WACrB,IAAItyK,EAAUwM,KAAKxM,QACfw+B,EAAQhyB,KAAKulK,aACb/wK,EAAQhB,EAAQw+I,YAMpB,OAJKhyI,KAAKsV,QAAQ+vJ,aACd7wK,EAAQm6B,GAAIqD,EAAOx9B,IAGhB,CACHA,MAAOA,EACPC,OAAQk6B,GAAIqD,EAAOx+B,EAAQy+I,cAEnC,EAEAkyB,EAAIngK,UAAUw8F,aAAe,WAEzB,OADAxgG,KAAKstJ,UACE,CACX,EAEA6W,EAAIngK,UAAU0mH,YAAc,WACpB1qH,KAAKyqH,UACLzqH,KAAKyqH,SAASt0H,MAEtB,EAEAguK,EAAIngK,UAAU+hK,WAAa,SAAqBx+H,EAAQisE,GACpD,IACIvqE,EADAryC,EAAOoJ,KAAK8lK,WAGZE,EAAiBhmK,KAAKimK,QAAU5lB,GAAS/0I,OAAOi8B,GAOpD,OANA0B,EAAUjpC,KAAK+uJ,gBAAgBiX,EAAgBxyD,IACvCztF,GAAKnvB,EAAKpC,MAAQ,EAC1By0C,EAAQjjB,GAAKpvB,EAAKnC,OAAS,EAC3BuL,KAAKsV,QAAQ6vB,OAASnlC,KAAKwlK,gBAAgBv8H,EAASuqE,GAAMhiF,UAC1DxxB,KAAKgtJ,cAAc97F,OAAO67F,GAAe,CAAE5nH,OAAQnlC,KAAKsV,QAAQ6vB,SAEzDnlC,IACX,EAEAmkK,EAAIngK,UAAU4gK,WAAa,SAAqBziE,GAC5C,IACIl5D,EADAryC,EAAOoJ,KAAK8lK,WAUhB,OAPI3jE,GAAeniG,KAAKimK,WACpBh9H,EAAUjpC,KAAK+uJ,gBAAgB/uJ,KAAKmlC,WAC5Bpf,GAAKnvB,EAAKpC,MAAQ,EAC1By0C,EAAQjjB,GAAKpvB,EAAKnC,OAAS,EAC3BuL,KAAKimK,QAAUjmK,KAAKwlK,gBAAgBv8H,IAGjCjpC,KAAKimK,OAChB,EAEA9B,EAAIngK,UAAUmhK,WAAa,SAAqBe,GAC5C,IAEIC,EAAMja,GAAO5gJ,OAAO46J,GACpB5Z,EAAK6Z,EAAI7Z,GAAGzlI,QAEZ7mB,KAAKsV,QAAQ+vJ,YAAc/Y,EAAG/L,IAAM,GAAK2lB,EAAU7Z,GAAG9L,IAAM,IAC5D+L,EAAG/L,IAAM,KAAO,IAAM+L,EAAG/L,MAG7B,IAAIqJ,EAAS,IAAIsC,GAAOia,EAAI9Z,GAAIC,GAChCtsJ,KAAKmlC,OAAOykH,EAAOzkH,UACnB,IAEIquE,EAFAh/G,EAAQwL,KAAKxM,QAAQw+I,YACrBv9I,EAASuL,KAAKxM,QAAQy+I,aAG1B,IAAKz+B,EAAOxzG,KAAKsV,QAAQg1I,QAAS92C,GAAQxzG,KAAKsV,QAAQ+0I,QAAS72C,IAAQ,CACpE,IAAIvqE,EAhBKjpC,KAgBY+uJ,gBAAgBnF,EAAOyC,GAAI74C,GAC5CtqE,EAjBKlpC,KAiBgB+uJ,gBAAgBnF,EAAO0C,GAAI94C,GAChD4yD,EAAajmB,GAAKp/H,IAAImoB,EAAYnjB,EAAIkjB,EAAQljB,GAC9CsgJ,EAAclmB,GAAKp/H,IAAImoB,EAAYljB,EAAIijB,EAAQjjB,GAEnD,GAAIogJ,GAAc5xK,GAAS6xK,GAAe5xK,EACtC,KAER,CAEAuL,KAAKwzG,KAAKA,EACd,EAEA2wD,EAAIngK,UAAUohK,WAAa,WACvB,IAAI/Y,EAAKrsJ,KAAK4kK,aACV17H,EAAclpC,KAAK+uJ,gBAAgB1C,GACnCz1J,EAAOoJ,KAAK8lK,WAEhB58H,EAAYnjB,GAAKnvB,EAAKpC,MACtB00C,EAAYljB,GAAKpvB,EAAKnC,OAEtB,IAAI63J,EAAKtsJ,KAAKwlK,gBAAgBt8H,GAE9B,OAAO,IAAIgjH,GAAOG,EAAIC,EAC1B,EAEA6X,EAAIngK,UAAUsiK,YAAc,SAAsBC,EAAOtB,GACrDjlK,KAAK+lK,WAAW/lK,KAAKwlK,gBAAgBe,EAAOtB,GAAQA,GACpDjlK,KAAKwzG,KAAKyxD,EACd,EAEAd,EAAIngK,UAAU+gK,cAAgB,WAC1B,IAAIyB,EAAWxmK,KAAKsV,QAAQkxJ,SACxBA,EAASxY,aACThuJ,KAAKymK,mBAAmBD,EAASxY,aAGhChuJ,KAAKorB,QAAQu8H,WACV6e,EAASr7I,WACTnrB,KAAK0mK,iBAAiBF,EAASr7I,WAG/Bq7I,EAAShzD,MACTxzG,KAAK2mK,mBAAmBH,EAAShzD,MAG7C,EAEA2wD,EAAIngK,UAAU4iK,sBAAwB,SAAgCtxJ,EAASuxJ,GAC3E,IAAItxJ,EAAMD,EAAQunC,UAAYgqH,EAC1BC,EAAc,IAAM5C,GAAU3uJ,GAAKnT,QAAQ,IAAK,KAChDsoC,EAAO1qC,KAAKxM,QAAQk1J,cAAc,kBAAoBoe,IAAgB,GAE1E,GAAoB,IAAhBp8H,EAAKtwC,OAAc,CACnB,IAAI2sK,EAAQjuK,SAASomB,cAAc,OACnC1W,EAASu+J,EAAO,kBAAoB7C,GAAU3uJ,IAC9Cm1B,EAAOq8H,EACP/mK,KAAKxM,QAAQgsB,YAAYkrB,EAC7B,CAEA,IAAIosF,EAAMh+H,SAASomB,cAAc,OAIjC,OAFAwrB,EAAKlrB,YAAYs3G,GAEVA,CACX,EAEAqtC,EAAIngK,UAAUyiK,mBAAqB,SAA6BnxJ,GAC5D,IAAI9hB,EAAUwM,KAAK4mK,sBAAsBtxJ,EAAS,eAClDtV,KAAKguJ,YAAc,IAAIrE,GAAYn2J,EAAS8hB,EAChD,EAEA6uJ,EAAIngK,UAAU0iK,iBAAmB,SAA2BpxJ,GACxD,IAAI9hB,EAAUwM,KAAK4mK,sBAAsBtxJ,EAAS,WAC9C6V,EAAYnrB,KAAKmrB,UAAY,IAAI2sG,GAAUtkI,EAAS8hB,GAExDtV,KAAKgnK,cAAgBhnK,KAAKgnK,cAAcjnK,KAAKC,MAC7CmrB,EAAUprB,KAAK,MAAOC,KAAKgnK,eAE3BhnK,KAAKinK,iBAAmBjnK,KAAKinK,iBAAiBlnK,KAAKC,MACnDmrB,EAAUprB,KAAK,SAAUC,KAAKinK,iBAClC,EAEA9C,EAAIngK,UAAUgjK,cAAgB,SAAwBh0K,GAClD,IAAIqxK,EAAWrkK,KAAKqkK,SAChBt+I,EAAIs+I,EAAS9zI,WAAav9B,EAAE+yB,EAC5BC,EAAIq+I,EAASn7J,UAAYlW,EAAEgzB,EAC3BkhJ,EAASlnK,KAAKmnK,aACd3yK,EAAQwL,KAAKxM,QAAQw+I,YACrBv9I,EAASuL,KAAKxM,QAAQy+I,aAG1BlsH,EAAI2I,GAAW3I,EAAGmhJ,EAAOnhJ,EAAE4I,IAAKu4I,EAAOnhJ,EAAEyF,IAAMh3B,GAC/CwxB,EAAI0I,GAAW1I,EAAGkhJ,EAAOlhJ,EAAE2I,IAAKu4I,EAAOlhJ,EAAEwF,IAAM/2B,GAE/CuL,KAAKqkK,SAAStkE,IAAI,SAAU6oD,GAAM5oJ,KAAKonK,WAAYpnK,OAEnDA,KAAKqkK,SAASrC,UAAUj8I,GAAIC,EAChC,EAEAm+I,EAAIngK,UAAUijK,iBAAmB,WAC7BjnK,KAAKmlC,OAAOnlC,KAAKsV,QAAQ6vB,OAC7B,EAEAg/H,EAAIngK,UAAU2iK,mBAAqB,SAA6BrxJ,GAC5D,IAAI9hB,EAAUwM,KAAK4mK,sBAAsBtxJ,EAAS,WAC9CgvJ,EAActkK,KAAKskK,YAAc,IAAIxY,GAAYt4J,EAAS8hB,GAE9DtV,KAAKqnK,mBAAqBrnK,KAAKqnK,mBAAmBtnK,KAAKC,MACvDskK,EAAYvkK,KAAK,SAAUC,KAAKqnK,mBACpC,EAEAlD,EAAIngK,UAAUqjK,mBAAqB,SAA6Br0K,GACvDgN,KAAK+pB,QAAQ,YAAa,CAAEiyD,cAAehpF,MAC5CgN,KAAKwzG,KAAKxzG,KAAKwzG,OAASxgH,EAAEs4B,OAE1BtrB,KAAK+pB,QAAQ,UAAW,CACpBiyD,cAAehpF,IAG3B,EAEAmxK,EAAIngK,UAAU6gK,cAAgB,WAC1B,IAAI1E,EAAWngK,KAAKorB,QAAQu8H,SA1gBd,IADP,GA4gBH77B,GAAqC,IAA1B9rH,KAAKsV,QAAQw2G,SACxBu4C,EAAWrkK,KAAKqkK,SAAW,IAAIvD,GAAS9gK,KAAKxM,QAAQI,SAAS,GAAI,CAClEusK,SAAUA,EACVD,mBA5gBc,EA6gBd1sD,KAAMsY,EACNm2C,qBAAqB,EACrB5F,kBAAkB,IAGtBgI,EAAStkK,KAAK,SAAU6oJ,GAAM5oJ,KAAKsnK,QAAStnK,OAC5CqkK,EAAStkK,KAAK,YAAa6oJ,GAAM5oJ,KAAKonK,WAAYpnK,OAElDqkK,EAASzQ,WAAW7zJ,KAAK,eAAgB6oJ,GAAM5oJ,KAAKunK,YAAavnK,OACjEqkK,EAASzQ,WAAW7zJ,KAAK,aAAc6oJ,GAAM5oJ,KAAKijK,OAAQjjK,OAC1DqkK,EAASzQ,WAAW7zJ,KAAK,YAAa6oJ,GAAM5oJ,KAAKwnK,WAAYxnK,OAC7DqkK,EAASzQ,WAAW7zJ,KAAK,MAAO6oJ,GAAM5oJ,KAAKk5G,KAAMl5G,OAEjDA,KAAKotJ,cAAgBiX,EAASjX,aAClC,EAEA+W,EAAIngK,UAAUghK,YAAc,WAMxB,IALA,IAEIn+D,EAAO7mG,KAAKsV,QAAQ+4I,OACpBA,EAASruJ,KAAKquJ,OAAS,GAElB3iJ,EAAI,EAAGA,EAAIm7F,EAAKzsG,OAAQsR,IAAK,CAClC,IAAI4J,EAAUuxF,EAAKn7F,GAEf+pJ,EARKz1J,KAQUynK,aAAanyJ,GAChC+4I,EAAOj/I,KAAKqmJ,EAChB,CACJ,EAEA0O,EAAIngK,UAAUyjK,aAAe,SAAuBnyJ,GAChD,IAAIniB,EAAOmiB,EAAQniB,MAAQ,QACvBu0K,EAAgB1nK,KAAKsV,QAAQoyJ,cAAcv0K,GAC3Cw0K,EACA5gJ,GAAW,CAAC,EADG5zB,IAAS6wK,GACThkK,KAAKsV,QAAQsyJ,eACbF,EAD6BpyJ,GAI5CmgJ,EAAQ,IAAIoS,EADO5D,GAAU9wK,IACA6M,KAAM2nK,GAMvC,OAJIx0K,IAAS6wK,KACThkK,KAAKq8E,QAAUo5E,GAGZA,CACX,EAEA0O,EAAIngK,UAAUmnH,eAAiB,WAC3B,OAAO,IAAIxQ,GAAQ36G,KAAKgtJ,cAAehtJ,KAAKsV,QAAQ4wE,QACxD,EAGAi+E,EAAIngK,UAAU8gK,aAAe,YACL9kK,KAAKsV,QAAQ+4I,QAAU,IAAItrH,QAAO,SAAUhd,GAC5D,OAAOA,GAAKA,EAAE5yB,OAAS6wK,EAC3B,IAEiB5pK,OAAS,IAM1B4F,KAAKq8E,QAAU,IAAIq8E,GAAY14J,KAAMA,KAAKsV,QAAQsyJ,gBAClD5nK,KAAKq8E,QAAQlzE,IAAInJ,KAAKsV,QAAQ+mE,SAClC,EAGA8nF,EAAIngK,UAAUsjK,QAAU,SAAkBt0K,GACtC,IAAIu0C,EAASvnC,KAAK+uJ,gBAAgB/uJ,KAAK4vJ,aAAa5uI,QAChDqyI,EAAUrgK,EAAE+wD,OAAOsvG,QACnB/tI,EAAS,IAAInJ,GAAQk3I,EAAQttI,EAAGstI,EAAQrtI,GAAGgM,OAAO,GAAGA,MAAM,EAAIqhI,EAAQrhI,OAE3EuV,EAAOxhB,GAAKT,EAAOS,EACnBwhB,EAAOvhB,GAAKV,EAAOU,EACnBhmB,KAAK8nK,cAAgBxiJ,EAErBtlB,KAAKyqH,SAASnlG,OAASA,EACvBtlB,KAAK0qH,cAEL1qH,KAAK+lK,WAAW/lK,KAAKwlK,gBAAgBj+H,IAErCvnC,KAAK+pB,QAAQ,MAAO,CAChBiyD,cAAehpF,EACfu0C,OAAQvnC,KAAK4kK,aACbz/H,OAAQnlC,KAAKmlC,UAErB,EAEAg/H,EAAIngK,UAAUojK,WAAa,SAAqBp0K,GACvCgN,KAAK8nK,eAAkB9nK,KAAK+nK,iBAIjC/nK,KAAK8nK,cAAgB,KACrB9nK,KAAKgoK,iBAAmB54I,KAExBpvB,KAAK+pB,QAAQ,SAAU,CACnBiyD,cAAehpF,EACfu0C,OAAQvnC,KAAK4kK,aACbz/H,OAAQnlC,KAAKmlC,WAErB,EAEAg/H,EAAIngK,UAAU+jK,aAAe,WACzB,OAAO34I,MAASpvB,KAAKgoK,kBAAoB,GAAK,EAClD,EAEA7D,EAAIngK,UAAUujK,YAAc,SAAsBv0K,GAC9C,GAAIgN,KAAK+pB,QAAQ,YAAa,CAAEiyD,cAAehpF,IAAM,CACjD,IAAIq7B,EAAQr7B,EAAEonH,QAAQ,GAElB/rF,GACAA,EAAMroB,QAEd,CACJ,EAEAm+J,EAAIngK,UAAUi/J,OAAS,SAAiBjwK,GACpC,IAAIg/B,EAAQhyB,KAAKqkK,SAAShR,QAAQrhI,MAC9BwhF,EAAOxzG,KAAKioK,aAAaj2I,GACzBk2I,EAAgB,IAAI/rJ,GAAQnpB,EAAEmyC,OAAOpf,EAAG/yB,EAAEmyC,OAAOnf,GACjDmiJ,EAAiBnoK,KAAKi3J,eAAeiR,EAAe10D,GAEpDhsE,EADcxnC,KAAK+uJ,gBAAgBoZ,EAAgB30D,GACzB7tF,WAAWuiJ,EAAcniJ,GAAImiJ,EAAcliJ,GAEzEhmB,KAAKsmK,YAAY9+H,EAAagsE,GAE9BxzG,KAAK+pB,QAAQ,UAAW,CACpBiyD,cAAehpF,GAEvB,EAEAmxK,EAAIngK,UAAUikK,aAAe,SAAuBh5C,GAChD,IACIm5C,EADQpoK,KAAKulK,aAAet2C,EACZjvH,KAAKsV,QAAQy0E,QAC7BypB,EAAO2sC,GAAKjrH,IAAIkzI,GAASjoB,GAAKjrH,IAAI,GAEtC,OAAOirH,GAAKn/H,MAAMwyF,EACtB,EAEA2wD,EAAIngK,UAAUspJ,OAAS,WACfttJ,KAAKguJ,aACLhuJ,KAAKguJ,YAAYjrH,OAAO/iC,KAAKmlC,SAAUnlC,KAAKwzG,QAGhDxzG,KAAK4vJ,YAAc5vJ,KAAK4kK,YAAW,GAEnC5kK,KAAKqoK,iBACLroK,KAAK0qH,cAEL1qH,KAAK+pB,QAAQ,eACb/pB,KAAK+pB,QAAQ,QACjB,EAEAo6I,EAAIngK,UAAUqkK,eAAiB,WAC3B,IAAIhE,EAAWrkK,KAAKqkK,SAChBt+I,EAAIs+I,EAAS1Q,WAAW5tI,EACxBC,EAAIq+I,EAAS1Q,WAAW3tI,EACxBgM,EAAQhyB,KAAKulK,aACblZ,EAAKrsJ,KAAK4pJ,SAASyC,GACnBpjH,EAAUjpC,KAAK+uJ,gBAAgB1C,GAAIrrI,QAEvCqjJ,EAAShR,QAAQryI,OAAQ,EACzBqjJ,EAASxhF,QACTwhF,EAASzQ,WAAW5tJ,SAEpB,IAAIwtG,EAAOxzG,KAAKwzG,OAEhB6wD,EAAS1Q,WAAWZ,eAAiB1pI,GAAI,EAAGrpB,KAAKsV,QAAQ+0I,QAAU72C,GACnE6wD,EAAS1Q,WAAWX,SAAW3pI,GAAI,EAAGrpB,KAAKsV,QAAQg1I,QAAU92C,GAE7D,IAAI80D,EAAU,CACV35I,KAAMsa,EAAQljB,EACdyF,IAAKwG,EAAQiX,EAAQljB,GAGrBwiJ,EAAU,CACV55I,KAAMsa,EAAQjjB,EACdwF,IAAKwG,EAAQiX,EAAQjjB,GAQzB,GALIhmB,KAAKsV,QAAQ+vJ,aACbiD,EAAQ98I,IAAM,GAAKwG,EACnBs2I,EAAQ35I,KAAO25I,EAAQ98I,MAGG,IAA1BxrB,KAAKsV,QAAQ87C,SAAoB,CACjC,IAAI00G,EAAW9lK,KAAK8lK,WACpBwC,EAAQ35I,IAAM45I,EAAQ55I,IAAM,EAC5B25I,EAAQ98I,IAAMs6I,EAAStxK,MACvB+zK,EAAQ/8I,IAAMs6I,EAASrxK,MAC3B,CAEAsxB,EAAEksI,cACFjsI,EAAEisI,cAEFlsI,EAAEssI,YAAYiW,EAAQ35I,IAAK25I,EAAQ98I,KACnCxF,EAAEqsI,YAAYkW,EAAQ55I,IAAK45I,EAAQ/8I,KAEnCxrB,KAAKmnK,aAAe,CAChBphJ,EAAGuiJ,EACHtiJ,EAAGuiJ,EAEX,EAGApE,EAAIngK,UAAUwkK,cAAgB,WAC9B,EAEArE,EAAIngK,UAAUuhK,WAAa,SAAqB/xD,GAC5C,IAAIi1D,EAAUh5I,GAAe+jF,EAAMxzG,KAAKsV,QAAQk+F,MAChD,OAAOxzG,KAAKsV,QAAQy0E,QAAU1gE,GAAI,EAAGo/I,EACzC,EAEAtE,EAAIngK,UAAUk1G,KAAO,SAAelmH,GAChC,GAAKgN,KAAK+nK,eAAV,CAIA,IAAIzgH,EAAStnD,KAAKk2J,YAAYljK,GAC9BgN,KAAK0qH,cAEL1qH,KAAK+pB,QAAQ,QAAS,CAClBiyD,cAAehpF,EACf6f,SAAU7S,KAAKi3J,eAAe3vG,IAPlC,CASJ,EAEA68G,EAAIngK,UAAUwjK,WAAa,SAAqBx0K,GAG5C,IAAyB,IAFXgN,KAAKsV,QAEPw2G,WACH9rH,KAAK+pB,QAAQ,YAAa,CAAEiyD,cAAehpF,IAAM,CAClD,IAAI01K,EAAS1oK,KAAKwzG,OAtvBV,EAuvBJlsD,EAAStnD,KAAKk2J,YAAYljK,GAC1B6f,EAAW7S,KAAKi3J,eAAe3vG,GAE/B/f,EADWvnC,KAAK+uJ,gBAAgBl8I,EAAU61J,GACxB/iJ,WAAW2hC,EAAOvhC,GAAIuhC,EAAOthC,GAEnDhmB,KAAKsmK,YAAY/+H,EAAQmhI,GAEzB1oK,KAAK+pB,QAAQ,UAAW,CACpBiyD,cAAehpF,GAEvB,CAER,EAEAmxK,EAAIngK,UAAU20G,YAAc,SAAsB3lH,GAC9CA,EAAE88D,iBACF,IAAIxkC,EAAQD,GAAgBr4B,GAAK,GAAK,EAAI,EACtCsiB,EAAUtV,KAAKsV,QACfqzJ,EAAW3oK,KAAKwzG,OAChBk1D,EAASh6I,GAAWi6I,EAAWr9I,EAAOhW,EAAQ+0I,QAAS/0I,EAAQg1I,SAEnE,IAAyB,IAArBh1I,EAAQw2G,UAAsB48C,IAAWC,IACpC3oK,KAAK+pB,QAAQ,YAAa,CAAEiyD,cAAehpF,IAAM,CAClD,IAAIs0D,EAAStnD,KAAKk2J,YAAYljK,GAC1B6f,EAAW7S,KAAKi3J,eAAe3vG,GAE/B/f,EADWvnC,KAAK+uJ,gBAAgBl8I,EAAU61J,GACxB/iJ,WAAW2hC,EAAOvhC,GAAIuhC,EAAOthC,GAEnDhmB,KAAKsmK,YAAY/+H,EAAQmhI,GAEzB1oK,KAAK+pB,QAAQ,UAAW,CACpBiyD,cAAehpF,GAEvB,CAER,EAEAmxK,EAAIngK,UAAUuqH,uBAAyB,SAAiCrpF,GACpE,IAAI5f,EAAS0K,GAAchwB,KAAKxM,SAEhC,MAAO,CACHs0B,KAAM9G,GAAMkkB,EAAMnf,EAAIT,EAAOwC,MAC7BH,IAAK3G,GAAMkkB,EAAMlf,EAAIV,EAAOqC,KAEpC,EAEOw8I,CACX,CA/wBW,CA+wBTtkE,IAEFlqE,GAAkBwuI,GAAK,CACnBxzJ,KAAM,MACN61J,SAAU,CACNxY,aAAa,EACb7iI,UAAW,CACPwgI,QAAS,KAEbn4C,MAAM,GAEV66C,OAAQ,GACRqZ,cAAe,CACXlsK,MAAO,CACH/E,MAAO,CACHs/C,KAAM,CACFvnB,MAAO,QAEXjJ,OAAQ,CACJiJ,MAAO,OACPh6B,MAAO,MAInBygI,OAAQ,CACJx+H,MAAO,CACHs/C,KAAM,CACFvnB,MAAO,OACPgnB,QAAS,IAEbjwB,OAAQ,CACJiJ,MAAO,OACPh6B,MAAO,MAInBugC,OAAQ,CACJv5B,MAAO,YACP0qF,QAAS,CACLrpC,SAAU,SAItB1X,OAAQ,CACJ,EACA,GAEJquE,KAAM,EACNzpB,QAAS,IACTsgE,QAAS,EACTC,QAAS,GACTjuE,QAAS,GACTurF,eAAgB,CACZpsK,MAAO,YACP0qF,QAAS,CACLrpC,SAAU,QAGlBwoH,YAAY,EAIZ9P,uBAAuB,IAG3BhM,GAAiB4a,GAAK,CAClB,cACA,QACA,iBACA,cACA,gBAGA,mBACA,mBAEA,MACA,SACA,QACA,aACA,eACA,sBACA,kBACA,kBACA,UACA,cAGJ,IC39BIyE,GAAU,IACVC,GAAc,GACdvlJ,GAAQ,OACRwlJ,GAAO,+BAEPC,GAAS,QAAUD,GACnBE,GAAS,QAAUF,GACnBG,GAAc,cACdpkJ,GAAQ,OAER+uC,GAAQ,WAAc,MAAQ,CAC9B7hD,KAAM,CACF80C,OAAQ,CACJryD,MAAO,IAGf06D,MAAO,CACH15B,KAAMuzI,GACN19H,QAAS,GAEbokB,KAAM,CACFr1D,OAAQ,GACR5F,MAAO,GAEXT,SAAS,EACT,EAoDAm1K,GAAgB,WAAc,MAAQ,CACtCC,cAAe,GACfC,UAAW,GACXviH,OAAQ,CACJ68B,YAAa,GACblvF,MAAO,GAEX+xF,UAAW1hE,GACXk/D,IAAK,EACLv+B,UAAW,CACPqB,OAAQ,CACJrR,QAAS,EACThhD,MAAO,GAEXwzF,SAAU,CACNxzF,MAAO,GAEX0yF,KAAM,CACF1yF,MAAO,GAEXyyF,OAAQ,CACJzyF,MAAO,IAGf0yF,KAAM,CACF1yF,MAAO,GAEXyyF,OAAQ,CACJzyF,MAAO,GAEXkzB,QAAS,GACTsgE,SAAU,CACNxzF,MAAO,GAEX,EAYA60K,GAAe,WAAc,MAAQ,CACrCtlF,IAAK6kF,GACLlhJ,QAASmhJ,GACTj7J,OAAQ,CACJ4gB,MAAO,WAEX,EAqFA86I,GAAkB,WAAc,MAAQ,CACxCvlF,IAAK,GACLt0B,KAAM,CACFjhC,MAAOlL,GACP9uB,MAAO,GAEXkzB,QAASmhJ,GACT,EAyCAzrD,GAAiB,SAAU9nG,GAAW,MAAQ,CAC9CvhB,SAAS,EACTi+D,OAAQ,CACJx8B,KArQK,qCAuQT8wB,QAAShxC,EAAQu0C,UAAY,CAAC,EAAI,CAC9BK,SAAU,QAEdigC,KAxOmC,CACnC3kC,UAAW,CACP62B,QAAS,CACLx1B,OAAQ,CAAC,IAGjB4I,KAAM,CACFja,QAAS,EACThhD,MAAO,GAEX6nF,QAAS,CACLzlF,KAAM,EACN7C,SAAS,GAEbyhD,QAAS,IA2NT+zH,UAxNwC,CACxC/jH,UAAW,CACP62B,QAAS,CACLx1B,OAAQ,CAAC,IAGjB4I,KAAM,CACFja,QAAS,EACThhD,MAAO,GAEX6nF,QAAS,CACLzlF,KAAM,EACN7C,SAAS,GAEbyhD,QAAS,IA2MTg0H,kBAzNwC,CACxChkH,UAAW,CACP62B,QAAS,CACLx1B,OAAQ,CAAC,IAGjB4I,KAAM,CACFja,QAAS,EACThhD,MAAO,GAEX6nF,QAAS,CACLzlF,KAAM,EACN7C,SAAS,GAEbyhD,QAAS,IA4MTg/E,IAzMkC,CAClCzwC,IAAK6kF,GACLlhJ,QAASmhJ,IAwMTzzC,QAAS8zC,KACTj0C,OAlKqC,CACrCpuE,OAAQ,CACJryD,MAAO,GAEXw9D,OAAQ,CACJ7K,WAAY8hH,IAEhBzzH,QAAS,IA4JTu1C,OAAQs+E,KACRn0C,YAlJ0C,CAC1CruE,OAAQ,CACJ68B,YAAa,GACblvF,MAAO,GAEX+xF,UAAW1hE,GACXk/D,IAAK,EACLv+B,UAAW,CACPqB,OAAQ,CACJrR,QAAS,EACThhD,MAAO,GAEXi7D,KAAM,CACFj7D,MAAO,IAGfi7D,KAAM,CACFjhC,MAAOlL,GACP9uB,MAAO,GAEXkzB,QAAS,IA+HT+sG,OA5HqC,CACrC1wC,IAAK6kF,GACLlhJ,QAASmhJ,IA2HTY,QA9BsC,CACtCz3G,OAAQ,CACJxjC,MAAO,GACP24B,WAAY8hH,GACZl1K,SAAS,GAEbyxD,UAAW,CACPqB,OAAQ,CACJryD,MAAO,KAuBfogI,IAzDkC,CAClC5iE,OAAQ,CACJ7K,WAAY,GACZ34B,MAAO,GACP6c,QAAS,CACL1jB,IAAK,EACLE,OAAQ,EACRC,KAAM,EACNF,MAAO,KAkDfitG,MA1HoC,CACpCv5H,OAAQ,GA0HRouK,OA9CqC,CACrC13G,OAAQ,CACJ7K,WAAY,GACZ34B,MAAO,GACP6c,QAAS,CACL1jB,IAAK,EACLE,OAAQ,EACRC,KAAM,EACNF,MAAO,KAuCf+hJ,oBAAqBL,KACrB75G,KAzHmC,CACnCj7D,MAAO,GAyHPo/D,MAAOA,KACPuhE,KAvHmC,CACnCpxC,IAAK,EACLv+B,UAAW,CACPiK,KAAM,CACFja,QAAS,EACThhD,MAAO,IAGfi7D,KAAM,CACFj7D,MAAO,GAEXkzB,QAAS,IA6GT8tG,UA1GwC,CACxC/lE,KAAM,CACFja,QAAS,EACThhD,MAAO,GAEX6nF,QAAS,CACLzlF,KAAM,EACN7C,SAAS,GAEbyhD,QAAS,IAkGTigF,UA/FwC,CACxCp5C,QAAS,CACLtoF,SAAS,GAEbS,MAAO,GA4FP8gI,UA5GwC,CACxC7lE,KAAM,CACFja,QAAS,EACThhD,MAAO,GAEX6nF,QAAS,CACLzlF,KAAM,EACN7C,SAAS,GAEbyhD,QAAS,IAoGT+/E,UAjGwC,CACxCl5C,QAAS,CACLtoF,SAAS,GAEbS,MAAO,GA8FPo1K,SA3FuC,CACvC7lF,IAAK6kF,GACLlhJ,QAASmhJ,IA0FTn0C,YAvF0C,CAC1C3wC,IAAK6kF,GACLlhJ,QAASmhJ,IAsFT7zC,YAnF0C,CAC1CxgI,MAAO,GAmFPsgI,aAhQmC,CACnCtvE,UAAW,CACP62B,QAAS,CACLx1B,OAAQ,CAAC,IAGjB4I,KAAM,CACFja,QAAS,EACThhD,MAAO,GAEX6nF,QAAS,CACLzlF,KAAM,EACN7C,SAAS,GAEbyhD,QAAS,IAmPTq0H,gBAAiBX,KACjB7zC,eAAgBg0C,KAChB10C,aAtImC,CACnCngI,MAAO,GAsIPkhI,UAAW4zC,KACX,EAgBOQ,GAAY,SAAUx0J,GAG7B,YAFiB,IAAZA,IAAqBA,EAAU,CAAC,GAE7B,CACRu3G,aApSqC,CACrC76D,OAAQ,CACJx8B,KAAMuzI,IAEVn1G,MAAOA,KACPr/D,MAAO,CACHihC,KAAMwzI,GACN1tK,OAAQ,IA8RZ67E,aAAc,CACVnhB,eAAgB,CACZjiE,SAAS,IAGjBo3B,UAAW,CACPkqC,KAAM,CACF5gE,OAAQ,GACR6G,OAAQ,CACJqsB,IAAK,MAIjBy1F,eAAgBA,GAAe9nG,GAC/B/gB,MAjC8B,CAC9BihC,KAAMwzI,IAiCNp7C,SA9BiC,CACjCp4F,KAAMuzI,IA8BNx5E,OA3B+B,CAC/Bv9B,OAAQ,CACJx8B,KAAMuzI,KA2Bd,EC/UWgB,GAAY94G,QAEL,qBAAXx0D,QACHA,OAAO3D,UACP2D,OAAO3D,SAASomB,eCJpB,SAAS8qJ,GAAUx2K,EAASo/B,GAExB,IADA,IAAIr/B,EAAUC,EACPD,GAAWA,IAAYq/B,GAC1Br/B,EAAUA,EAAQuhC,WAEtB,QAAOvhC,CACX,CAqBA,IAAIy+G,GAAS,SAAUi4D,GAAQ,YAAgBx2K,IAATw2K,IAA8BA,CAAM,EC9BtEC,GAAW,SAAUC,GACrB,MAAO,CACHpkJ,EAAG,CACClT,SAAUs3J,EAASn8I,OAEvBhI,EAAG,CACCnT,SAAUs3J,EAASj8I,OAG/B,EAoCA,SAASk8I,GAAgBC,EAAYz6I,GACjC,IAAK,IAAInb,EAAM,EAAGA,EAAM41J,EAAWjwK,OAAQqa,IACvC,GAAImb,EAAOy6I,EAAW51J,IAClB,OAAO,EAGf,OAAO,CACX,CACA,IAAI61J,GAAc,CAAC,CACX9gJ,IAAK,SACLke,KAAM,UACNne,MAAO,YACR,CACCgwF,cAAe,YACfE,WAAY,WACZJ,aAAc,cACf,CACCF,MAAO,SACR,CACCF,IAAK,QAKTsxD,GAA2B,WAC3B,SAASA,EAAUC,EAAgB56I,GAC/B5vB,KAAKwqK,eAAiBA,EACtBxqK,KAAKyqK,cAAgB,CAAC,EACtBzqK,KAAKi5G,IAAMj5G,KAAKi5G,IAAIl5G,KAAKC,MACzBA,KAAKm5G,MAAQn5G,KAAKm5G,MAAMp5G,KAAKC,MAC7BA,KAAK0qK,SAAW1qK,KAAK0qK,SAAS3qK,KAAKC,MACnCA,KAAK2qK,QAAU3qK,KAAK2qK,QAAQ5qK,KAAKC,MACjCA,KAAK4qK,OAAS5qK,KAAK4qK,OAAO7qK,KAAKC,MAC/BA,KAAK6qK,WAAa7qK,KAAK6qK,WAAW9qK,KAAKC,MACvCA,KAAK8qK,UAAY9qK,KAAK8qK,UAAU/qK,KAAKC,MACrCA,KAAK+qK,SAAW/qK,KAAK+qK,SAAShrK,KAAKC,MAC/B4vB,GACA5vB,KAAKD,KAAK6vB,EAElB,CA4EA,OA3EA26I,EAAUvmK,UAAUi1G,IAAM,SAAUjmH,GAChCgN,KAAK+pB,QAAQ,MAAO/2B,EACxB,EACAu3K,EAAUvmK,UAAUm1G,MAAQ,SAAUnmH,GAClCgN,KAAK+pB,QAAQ,QAAS/2B,EAC1B,EACAu3K,EAAUvmK,UAAU0mK,SAAW,SAAU13K,UAC9BgN,KAAKq/C,SACZr/C,KAAKq/C,SAAWr/C,KAAK+pB,QAAQ,QAAS/2B,EAC1C,EACAu3K,EAAUvmK,UAAU2mK,QAAU,SAAU33K,GACpCgN,KAAKq/C,SAAWr/C,KAAK+pB,QAAQ,OAAQ/2B,EACzC,EACAu3K,EAAUvmK,UAAU4mK,OAAS,SAAU53K,GACnCgN,KAAK+pB,QAAQ,MAAO/2B,UACbgN,KAAKq/C,QAChB,EACAkrH,EAAUvmK,UAAU6mK,WAAa,SAAU73K,GACvCgN,KAAK+pB,QAAQ,eAAgB/2B,EACjC,EACAu3K,EAAUvmK,UAAU8mK,UAAY,SAAU93K,GACtCgN,KAAK+pB,QAAQ,gBAAiB/2B,EAClC,EACAu3K,EAAUvmK,UAAU+mK,SAAW,SAAU/3K,GACrCgN,KAAK+pB,QAAQ,aAAc/2B,EAC/B,EACAu3K,EAAUvmK,UAAU+lB,QAAU,SAAUpZ,EAAM3d,GAC1C,IAAIgV,EAtGI,SAAUhV,EAAGg4K,GACzB,IAAIjvC,EAAW/oI,EAAE+oI,SACbD,EAAUC,EAAS,GACnBkvC,EAAYnvC,EAAQ9tG,MACpBk9I,EAAYpvC,EAAQ5tG,MACpB8e,EAAW,EACf,GAAI+uF,EAAS3hI,OAAS,EAAG,CACrB,IAAI+wK,EAAWpvC,EAAS,GACpBqvC,EAAWrvC,EAAS,GACxB/uF,EAAWlsB,KAAK0f,KAAK1f,KAAKuI,IAAI8hJ,EAASn9I,MAAQo9I,EAASp9I,MAAO,GAC3DlN,KAAKuI,IAAI8hJ,EAASj9I,MAAQk9I,EAASl9I,MAAO,GAClD,CACA,MAAO,CACH8e,SAAUA,EACV1wC,MAAOtJ,EAAEq4K,SACTv7G,eAAgB,WACZ98D,EAAE88D,gBACN,EACAliD,OAAQ5a,EAAE4a,OACVwsG,QAAS2hB,EAAS1hI,IAAI6vK,IACtB/2K,KAAMH,EAAEG,KACR4yB,EAAG,CACCuF,MAAO0/I,EAAeC,EAAYD,EAAajlJ,EAAElT,SAAW,EAC5D+oJ,aAAc5oK,EAAEs4K,OAChBz4J,SAAUo4J,EACVx3D,cAAew3D,EAAYj4K,EAAEs4K,QAEjCtlJ,EAAG,CACCsF,MAAO0/I,EAAeE,EAAYF,EAAahlJ,EAAEnT,SAAW,EAC5D+oJ,aAAc5oK,EAAE4vK,OAChB/vJ,SAAUq4J,EACVz3D,cAAey3D,EAAYl4K,EAAE4vK,QAGzC,CAoEmB/yG,CAAU78D,EAAGgN,KAAKq/C,UAI7B,OAHIr/C,KAAKyqK,cAAc95J,IACnB3Q,KAAKyqK,cAAc95J,GAAM3I,GAEtBA,CACX,EACAuiK,EAAUvmK,UAAUjE,KAAO,SAAU6vB,QAClB,IAAXA,IAAqBA,EAAS,CAAC,GACnC5vB,KAAKogG,SACLpgG,KAAKyqK,cAAgB76I,EACrB,IAAK,IAAInb,EAAM,EAAGA,EAAM61J,GAAYlwK,OAAQqa,IAAO,CAC/C,IAAI82J,EAAajB,GAAY71J,GACzB41J,EAAax/J,OAAO4E,KAAK87J,GAC7B,GAAInB,GAAgBC,EAAYz6I,GAC5B,IAAK,IAAI47I,EAAU,EAAGA,EAAUnB,EAAWjwK,OAAQoxK,IAAW,CAC1D,IAAIC,EAASF,EAAWlB,EAAWmB,IACnCxrK,KAAKwqK,eAAe3hB,GAAG4iB,EAAQzrK,KAAKyrK,GACxC,CAER,CACJ,EACAlB,EAAUvmK,UAAUo8F,OAAS,WACrBpgG,KAAKwqK,gBACLxqK,KAAKwqK,eAAephB,MAExBppJ,KAAKyqK,cAAgB,CAAC,CAC1B,EACAF,EAAUvmK,UAAUs/C,QAAU,WACtBtjD,KAAKwqK,iBACLxqK,KAAKwqK,eAAelnH,iBACbtjD,KAAKwqK,uBAETxqK,KAAKyqK,aAChB,EACAF,EAAUvmK,UAAU0oH,WAAa,SAAUy2C,GACvCnjK,KAAKgyG,OAAO,MAAOmxD,EACvB,EACAoH,EAAUvmK,UAAU2oH,WAAa,SAAUw2C,GACvCnjK,KAAKgyG,OAAO,QAASmxD,EACzB,EACAoH,EAAUvmK,UAAUguG,OAAS,SAAU05D,EAAYvI,GAC3CnjK,KAAKwqK,gBACoBxqK,KAAKwqK,eAAep+J,IAAIs/J,GAC9BziJ,IAAI,CACnBk6I,OAAQA,GAGpB,EACOoH,CACX,CA5F+B,GC/D3Bj5G,GAAkC,WAClC,SAASA,IACT,CAqBA,OApBAA,EAAiBhmD,OAAS,SAAU9X,EAASo8B,GACzC,GAAsB,qBAAXnzB,OAAwB,CAC/B,IAAIkvK,EAASlvK,OAAOmvK,OACpB,IAAKD,EAID,cAEJ,IAAInB,EAAiB,IAAImB,EAAOn4K,EAAS,CACrCq4K,YAAa,CACT,CAACF,EAAOG,KACR,CAACH,EAAOI,KACR,CAACJ,EAAOK,OACR,CAACL,EAAOM,MAAO,CAAErqH,KAAM,OAG/B,OAAO,IAAI2oH,GAAUC,EAAgB56I,EACzC,CACJ,EACO0hC,CACX,CAxBsC,GCHlC46G,GAIA,SAAmBt+J,GACf5N,KAAK4N,OAASA,CAClB,ECTAnD,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAoBzC+gK,GAAqC,SAAUlgK,GAK/C,SAASkgK,EAAoBn5K,EAAG4a,GAC5B,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAMzC,OALA+C,EAAMgoC,KAAO/3C,EAAE+3C,KACfhoC,EAAMijD,SAAWhzD,EAAEgzD,SACnBjjD,EAAMzI,MAAQtH,EAAEsH,MAChByI,EAAM7J,KAAOlG,EAAEkG,KACf6J,EAAM5F,MAAQnK,EAAEmK,MACT4F,CACX,CACA,OAbA0H,GAAU0hK,EAAqBlgK,GAaxBkgK,CACX,CAfyC,CAevCD,ICnCEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCghK,GAAkC,SAAUngK,GAE5C,SAASmgK,IACL,IAAIrpK,EAAmB,OAAXkJ,GAAmBA,EAAO/D,MAAMlI,KAAM+H,YAAc/H,KAEhE,OADA+C,EAAMspK,WAAY,EACXtpK,CACX,CAiBA,OAtBA0H,GAAU2hK,EAAkBngK,GAU5BmgK,EAAiBpoK,UAAU8rD,eAAiB,WACxC9vD,KAAKqsK,WAAY,CACrB,EAOAD,EAAiBpoK,UAAUgmB,mBAAqB,WAC5C,OAAOhqB,KAAKqsK,SAChB,EACOD,CACX,CAxBsC,CAwBpCF,IC3CEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCkhK,GAA2B,SAAUrgK,GAKrC,SAASqgK,EAAUt5K,EAAG4a,GAClB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAGzC,OAFA+C,EAAM0/E,WAAazvF,EAAEyvF,WACrB1/E,EAAMkP,YAAcjf,EAAEgpF,cACfj5E,CACX,CACA,OAVA0H,GAAU6hK,EAAWrgK,GAUdqgK,CACX,CAZ+B,CAY7BF,IC/BE3hK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAoBzCmhK,GAA8B,SAAUtgK,GAKxC,SAASsgK,EAAav5K,EAAG4a,GACrB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAGzC,OAFA+C,EAAM0/E,WAAazvF,EAAEyvF,WACrB1/E,EAAMkP,YAAcjf,EAAEgpF,cACfj5E,CACX,CACA,OAVA0H,GAAU8hK,EAActgK,GAUjBsgK,CACX,CAZkC,CAYhCL,IChCEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCohK,GAAgC,SAAUvgK,GAK1C,SAASugK,EAAex5K,EAAG4a,GACvB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAGzC,OAFA+C,EAAM0/E,WAAazvF,EAAEyvF,WACrB1/E,EAAMkP,YAAcjf,EAAEgpF,cACfj5E,CACX,CACA,OAVA0H,GAAU+hK,EAAgBvgK,GAUnBugK,CACX,CAZoC,CAYlCJ,IC/BE3hK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCqhK,GAAsC,SAAUxgK,GAKhD,SAASwgK,EAAqBz5K,EAAG4a,GAC7B,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAKzC,OAJA+C,EAAMgjD,OAAS/yD,EAAE+yD,OACjBhjD,EAAMmzF,YAAcljG,EAAEkjG,YACtBnzF,EAAMkzG,WAAajjH,EAAEijH,WACrBlzG,EAAM7J,KAAOlG,EAAEkG,KACR6J,CACX,CAOA,OAlBA0H,GAAUgiK,EAAsBxgK,GAehCwgK,EAAqBzoK,UAAU8rD,eAAiB,WAC5C7jD,EAAOjI,UAAU8rD,eAAe9sD,KAAKhD,KACzC,EACOysK,CACX,CApB0C,CAoBxCL,ICvCE3hK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCshK,GAAsC,SAAUzgK,GAKhD,SAASygK,EAAqB15K,EAAG4a,GAC7B,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAKzC,OAJA+C,EAAMgjD,OAAS/yD,EAAE+yD,OACjBhjD,EAAMmzF,YAAcljG,EAAEkjG,YACtBnzF,EAAMkzG,WAAajjH,EAAEijH,WACrBlzG,EAAM7J,KAAOlG,EAAEkG,KACR6J,CACX,CAOA,OAlBA0H,GAAUiiK,EAAsBzgK,GAehCygK,EAAqB1oK,UAAU8rD,eAAiB,WAC5C7jD,EAAOjI,UAAU8rD,eAAe9sD,KAAKhD,KACzC,EACO0sK,CACX,CApB0C,CAoBxCN,ICvCE3hK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCuhK,GAAsC,SAAU1gK,GAKhD,SAAS0gK,EAAqB35K,EAAG4a,GAC7B,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAKzC,OAJA+C,EAAMgjD,OAAS/yD,EAAE+yD,OACjBhjD,EAAMmzF,YAAcljG,EAAEkjG,YACtBnzF,EAAMkzG,WAAajjH,EAAEijH,WACrBlzG,EAAM7J,KAAOlG,EAAEkG,KACR6J,CACX,CAOA,OAlBA0H,GAAUkiK,EAAsB1gK,GAehC0gK,EAAqB3oK,UAAU8rD,eAAiB,WAC5C7jD,EAAOjI,UAAU8rD,eAAe9sD,KAAKhD,KACzC,EACO2sK,CACX,CApB0C,CAoBxCP,ICvCE3hK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCwhK,GAAsC,SAAU3gK,GAKhD,SAAS2gK,EAAqB55K,EAAG4a,GAC7B,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAGzC,OAFA+C,EAAMwgC,KAAOvwC,EAAEuwC,KACfxgC,EAAMzD,GAAKtM,EAAEsM,GACNyD,CACX,CACA,OAVA0H,GAAUmiK,EAAsB3gK,GAUzB2gK,CACX,CAZ0C,CAYxCV,IC/BEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCyhK,GAAgC,SAAU5gK,GAK1C,SAAS4gK,EAAe75K,EAAG4a,GACvB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAMzC,OALA+C,EAAMkjD,SAAWjzD,EAAEizD,SACnBljD,EAAMijD,SAAWhzD,EAAEgzD,SACnBjjD,EAAMgjD,OAAS/yD,EAAE+yD,OACjBhjD,EAAM5F,MAAQnK,EAAEmK,MAChB4F,EAAM0hD,OAASzxD,EAAEyxD,OACV1hD,CACX,CACA,OAbA0H,GAAUoiK,EAAgB5gK,GAanB4gK,CACX,CAfoC,CAelCX,IClCEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzC0hK,GAAgC,SAAU7gK,GAK1C,SAAS6gK,EAAe95K,EAAG4a,GACvB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAMzC,OALA+C,EAAMkjD,SAAWjzD,EAAEizD,SACnBljD,EAAMijD,SAAWhzD,EAAEgzD,SACnBjjD,EAAMgjD,OAAS/yD,EAAE+yD,OACjBhjD,EAAM5F,MAAQnK,EAAEmK,MAChB4F,EAAM0hD,OAASzxD,EAAEyxD,OACV1hD,CACX,CACA,OAbA0H,GAAUqiK,EAAgB7gK,GAanB6gK,CACX,CAfoC,CAelCZ,IClCEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzC2hK,GAAoC,SAAU9gK,GAK9C,SAAS8gK,EAAmB/5K,EAAG4a,GAC3B,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAMzC,OALA+C,EAAMkjD,SAAWjzD,EAAEizD,SACnBljD,EAAMkP,YAAcjf,EAAEgpF,cACtBj5E,EAAM5F,MAAQnK,EAAEmK,MAChB4F,EAAMgjB,EAAI/yB,EAAE+yB,EACZhjB,EAAMijB,EAAIhzB,EAAEgzB,EACLjjB,CACX,CACA,OAbA0H,GAAUsiK,EAAoB9gK,GAavB8gK,CACX,CAfwC,CAetCb,IClCEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzC4hK,GAAoC,SAAU/gK,GAK9C,SAAS+gK,EAAmBh6K,EAAG4a,GAC3B,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAMzC,OALA+C,EAAMkjD,SAAWjzD,EAAEizD,SACnBljD,EAAMkP,YAAcjf,EAAEgpF,cACtBj5E,EAAM5F,MAAQnK,EAAEmK,MAChB4F,EAAMgjB,EAAI/yB,EAAE+yB,EACZhjB,EAAMijB,EAAIhzB,EAAEgzB,EACLjjB,CACX,CACA,OAbA0H,GAAUuiK,EAAoB/gK,GAavB+gK,CACX,CAfwC,CAetCd,IClCEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzC6hK,GAA6B,SAAUhhK,GAKvC,SAASghK,EAAYC,EAAInpH,GACrB,OAAO93C,EAAOjJ,KAAKhD,KAAM+jD,IAAW/jD,IACxC,CACA,OAPAyK,GAAUwiK,EAAahhK,GAOhBghK,CACX,CATiC,CAS/Bf,IC5BEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzC+hK,GAA6B,SAAUlhK,GAKvC,SAASkhK,EAAYn6K,EAAG4a,GACpB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAIzC,OAHA+C,EAAMgoC,KAAO/3C,EAAE+3C,KACfhoC,EAAMwgC,KAAOvwC,EAAEuwC,KACfxgC,EAAMzD,GAAKtM,EAAEsM,GACNyD,CACX,CACA,OAXA0H,GAAU0iK,EAAalhK,GAWhBkhK,CACX,CAbiC,CAa/Bf,IChCE3hK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCgiK,GAAgC,SAAUnhK,GAK1C,SAASmhK,EAAep6K,EAAG4a,GACvB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAIzC,OAHA+C,EAAMgoC,KAAO/3C,EAAE+3C,KACfhoC,EAAMwgC,KAAOvwC,EAAEuwC,KACfxgC,EAAMzD,GAAKtM,EAAEsM,GACNyD,CACX,CACA,OAXA0H,GAAU2iK,EAAgBnhK,GAWnBmhK,CACX,CAboC,CAalClB,IChCEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAmBzCiiK,GAAkC,SAAUphK,GAK5C,SAASohK,EAAiBr6K,EAAG4a,GACzB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAIzC,OAHA+C,EAAMgoC,KAAO/3C,EAAE+3C,KACfhoC,EAAMwgC,KAAOvwC,EAAEuwC,KACfxgC,EAAMzD,GAAKtM,EAAEsM,GACNyD,CACX,CACA,OAXA0H,GAAU4iK,EAAkBphK,GAWrBohK,CACX,CAbsC,CAapCjB,IChCE3hK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAoBzCkiK,GAAkC,SAAUrhK,GAM5C,SAASqhK,EAAiBt6K,EAAG4a,GACzB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KASzC,OARA+C,EAAMkjD,SAAWjzD,EAAEizD,SACnBljD,EAAMijD,SAAWhzD,EAAEgzD,SACnBjjD,EAAMkP,YAAcjf,EAAEgpF,cACtBj5E,EAAMmjD,WAAalzD,EAAEkzD,WACrBnjD,EAAMmiC,MAAQlyC,EAAEkyC,MAChBniC,EAAMgjD,OAAS/yD,EAAE+yD,OACjBhjD,EAAMg4E,WAAa/nF,EAAE+nF,WACrBh4E,EAAM5F,MAAQnK,EAAEmK,MACT4F,CACX,CACA,OAjBA0H,GAAU6iK,EAAkBrhK,GAiBrBqhK,CACX,CAnBsC,CAmBpCpB,ICvCEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAoBzCmiK,GAAkC,SAAUthK,GAK5C,SAASshK,EAAiBv6K,EAAG4a,GACzB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAUzC,OATA+C,EAAMkjD,SAAWjzD,EAAEizD,SACnBljD,EAAMu0E,eAAiBtkF,EAAEskF,eACzBv0E,EAAMijD,SAAWhzD,EAAEgzD,SACnBjjD,EAAMkP,YAAcjf,EAAEgpF,cACtBj5E,EAAMmjD,WAAalzD,EAAEkzD,WACrBnjD,EAAMmiC,MAAQlyC,EAAEkyC,MAChBniC,EAAMgjD,OAAS/yD,EAAE+yD,OACjBhjD,EAAMg4E,WAAa/nF,EAAE+nF,WACrBh4E,EAAM5F,MAAQnK,EAAEmK,MACT4F,CACX,CACA,OAjBA0H,GAAU8iK,EAAkBthK,GAiBrBshK,CACX,CAnBsC,CAmBpCnB,ICvCE3hK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAoBzCoiK,GAA2B,SAAUvhK,GAMrC,SAASuhK,EAAUx6K,EAAG4a,GAClB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAIzC,OAHA+C,EAAM0/E,WAAazvF,EAAEyvF,WACrB1/E,EAAMuoB,MAAQt4B,EAAEs4B,MAChBvoB,EAAMkP,YAAcjf,EAAEgpF,cACfj5E,CACX,CACA,OAZA0H,GAAU+iK,EAAWvhK,GAYduhK,CACX,CAd+B,CAc7BpB,IClCE3hK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAoBzCqiK,GAA8B,SAAUxhK,GAMxC,SAASwhK,EAAaz6K,EAAG4a,GACrB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAGzC,OAFA+C,EAAM0/E,WAAazvF,EAAEyvF,WACrB1/E,EAAMkP,YAAcjf,EAAEgpF,cACfj5E,CACX,CACA,OAXA0H,GAAUgjK,EAAcxhK,GAWjBwhK,CACX,CAbkC,CAahCvB,ICjCEzhK,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAoBzCsiK,GAAgC,SAAUzhK,GAM1C,SAASyhK,EAAe16K,EAAG4a,GACvB,IAAI7K,EAAQkJ,EAAOjJ,KAAKhD,KAAM4N,IAAW5N,KAGzC,OAFA+C,EAAM0/E,WAAazvF,EAAEyvF,WACrB1/E,EAAMkP,YAAcjf,EAAEgpF,cACfj5E,CACX,CACA,OAXA0H,GAAUijK,EAAgBzhK,GAWnByhK,CACX,CAboC,CAalCtB,ICZEuB,GAAY,CACZC,eAAgBzB,GAChB3/C,KAAM8/C,GACNuB,QAAStB,GACTuB,UAAWtB,GACXuB,gBAAiBtB,GACjBuB,gBAAiBtB,GACjBuB,gBAAiBtB,GACjBuB,gBAAiBtB,GACjBuB,UAAWtB,GACXuB,UAAWtB,GACXuB,cAAetB,GACfuB,cAAetB,GACf5zK,OAAQ6zK,GACRl/C,OAAQo/C,GACR30C,UAAW40C,GACX70C,YAAa80C,GACbkB,YAAajB,GACbkB,YAAajB,GACb/5D,KAAMg6D,GACNiB,QAAShB,GACTiB,UAAWhB,ICvCf,IAAIiB,GAIA,SAAkB5qH,EAAQ/wD,GACtBgN,KAAK+jD,OAASA,EACd/jD,KAAKgS,eAAiBhf,CAC1B,EAIJ,SAAS47K,GAAW7qH,EAAQ/wD,GACxB,OAAO,IAAI27K,GAAS5qH,EAAQ/wD,EAChC,CCfA,IAAIwiC,GAAO,SAAU/+B,GAAS,MAAO,GAAG0R,OAAO1R,EAAMo4K,WAAY,KAAK1mK,OAAO1R,EAAMq4K,SAAU,KAAK3mK,OAAO1R,EAAMs4K,WAAa,EACxHC,GAA0B,SAAUx7K,GAAW,OAAOiJ,OAAOuN,iBAAiBxW,GAAS23F,eAAiB,EAkBxGnjE,GAAW,21CAAi5C7f,OAP34C,WAEjB,IADA,IAAI/P,EAAS,uQACJsT,EAAI,EAAGA,EAHA,GAGmBA,IAC/BtT,GAAU,qCAAsC+P,OAAOuD,EAAI,EAAG,YAElE,OAAOtT,CACX,CACu6C62K,GAAkB,kBAIr7CC,GAA8B,WAC9B,SAASA,EAAaC,GAClBnvK,KAAKmvK,MAAQA,CACjB,CAiGA,OAhGAD,EAAalrK,UAAUorK,SAAW,SAAUtxJ,EAAO3gB,GAC/C6C,KAAKmvK,MAAME,SAAS,CAAEl8K,KAAM,MAAOm8K,QAAS,CAAExxJ,MAAOA,EAAO3gB,MAAOA,IACvE,EACA+xK,EAAalrK,UAAUurK,UAAY,WAC/BvvK,KAAKwvK,SAAS,+BAAgC,8BAC9CxvK,KAAKwvK,SAAS,4BAA6B,qBAC3CxvK,KAAKwvK,SAAS,0BAA2B,qBACzCxvK,KAAKwvK,SAAS,oCAAqC,qBACnDxvK,KAAKwvK,SAAS,oCAAqC,qBACnDxvK,KAAKwvK,SAAS,qCAAsC,0BACpDxvK,KAAKwvK,SAAS,uCAAwC,sBACtDxvK,KAAKwvK,SAAS,gCAAiC,qBAC/CxvK,KAAKwvK,SAAS,2BAA4B,qBAC1CxvK,KAAKwvK,SAAS,uBAAwB,cACtCxvK,KAAKwvK,SAAS,oCAAqC,kBACnDxvK,KAAKwvK,SAAS,qCAAsC,kBACpDxvK,KAAKwvK,SAAS,sBAAuB,qBACrCxvK,KAAKwvK,SAAS,mCAAoC,qBAClDxvK,KAAKwvK,SAAS,oCAAqC,QACnDxvK,KAAKwvK,SAAS,sCAAuC,QACrDxvK,KAAKwvK,SAAS,wCAAyC,WACvDxvK,KAAKwvK,SAAS,qCAAsC,qBACpDxvK,KAAKwvK,SAAS,uCAAwC,qBACtDxvK,KAAKwvK,SAAS,wCAAyC,qBACvDxvK,KAAKwvK,SAAS,iCAAkC,+BAChDxvK,KAAKwvK,SAAS,gDAAiD,qBAC/DxvK,KAAKwvK,SAAS,mCAAoC,qBAClDxvK,KAAKwvK,SAAS,mCAAoC,cAClDxvK,KAAKwvK,SAAS,8BAA+B,qBAC7CxvK,KAAKwvK,SAAS,uCAAwC,0BACtDxvK,KAAKwvK,SAAS,yCAA0C,sBACxDxvK,KAAKwvK,SAAS,kCAAmC,qBACjDxvK,KAAKwvK,SAAS,2CAA4C,qBAC1DxvK,KAAKwvK,SAAS,4CAA6C,QAC3DxvK,KAAKwvK,SAAS,8CAA+C,QAC7DxvK,KAAKwvK,SAAS,gDAAiD,WAC/DxvK,KAAKwvK,SAAS,6CAA8C,qBAC5DxvK,KAAKwvK,SAAS,sCAAuC,qBACrDxvK,KAAKwvK,SAAS,cAAe,qBAC7BxvK,KAAKwvK,SAAS,iBAAkB,qBAChC,IAAIh6H,EAAUtrC,WAAWlK,KAAKyvK,WAAW,sBAAsBj6H,SAC1DvvB,MAAMuvB,KACPx1C,KAAKovK,SAAS,8BAA+B55H,GAC7Cx1C,KAAKovK,SAAS,mCAAoC55H,GAClDx1C,KAAKovK,SAAS,sCAAuC55H,GACrDx1C,KAAKovK,SAAS,gCAAiC55H,IAEnDx1C,KAAK0vK,mBAAmB,CAAC,OAAQ,gBAAiB,+BAClD1vK,KAAK0vK,mBAAmB,CAAC,OAAQ,gBAAiB,8BACtD,EACAR,EAAalrK,UAAU2rK,SAAW,WAC9B,IAAIC,EAAcp6I,GAAKx1B,KAAKyvK,WAAW,eACnCI,EAAYr6I,GAAKx1B,KAAKyvK,WAAW,qBACjCK,EAAgBt6I,GAAKx1B,KAAKyvK,WAAW,0BACrCM,EAAYv6I,GAAKx1B,KAAKyvK,WAAW,qBACrCzvK,KAAKovK,SAAS,2BAA4BW,GAC1C/vK,KAAKovK,SAAS,gCAAiCQ,GAC/C5vK,KAAKovK,SAAS,0BAA2BQ,GACzC5vK,KAAKovK,SAAS,qBAAsBQ,GACpC5vK,KAAKovK,SAAS,6BAA8BW,GAC5C/vK,KAAKovK,SAAS,kCAAmCQ,GACjD5vK,KAAKovK,SAAS,aAAcS,GAC5B7vK,KAAKovK,SAAS,gBAAiBU,GAC/B9vK,KAAKovK,SAAS,0BAA2BU,EAC7C,EACAZ,EAAalrK,UAAUgsK,gBAAkB,WACrC,IAAIx8K,EAAUwM,KAAKxM,QACfuyD,EAAS,GAAGrrC,MAAM1X,KAAKxP,EAAQy8K,iBAAiB,uBAChDC,EAAalB,GAAwBx7K,EAAQk1J,cAAc,yBAC3DnqC,EAAex4D,EAAOnnC,QAAO,SAAUkX,EAAKg7H,GAC5C,IAAIv7I,EA9FA,SAAU5E,GACtB,IAAIqwB,EAAQrwB,EAAK8X,MAAM,mBACvB,GAAc,OAAVuY,EACA,OAAiBA,EAAM,GAJmBjW,cAAchW,WAAW,GAAK,IAAIA,WAAW,GAM3F,IAAIo7J,EAAMx/J,EAAKpJ,MAAM,aAAa,GAClC,OAAOyjB,SAASmlJ,EAAK,IAAM,CAC/B,CAuFsBC,CAAUtf,EAAGx8J,WACnBk6B,EAAQwgJ,GAAwBle,GAIpC,OAHItiI,IAAU0hJ,IACVp6I,EAAIvgB,GAAOiZ,GAERsH,CACX,GAAG,IAEH91B,KAAKovK,SAAS,eAAgB7wD,EAClC,EACA2wD,EAAalrK,UAAUwrK,SAAW,SAAUnhK,EAAKgiK,GAC7CrwK,KAAKovK,SAAS/gK,EAAKrO,KAAKyvK,WAAWY,GAASllF,gBAChD,EACA+jF,EAAalrK,UAAUyrK,WAAa,SAAUY,GAC1C,IAAI78K,EAAUwM,KAAKxM,QACnB,OAAOiJ,OAAOuN,iBAAiBxW,EAAQk1J,cAAc,WAAWvgJ,OAAOkoK,IAC3E,EACAnB,EAAalrK,UAAU0rK,mBAAqB,SAAUlgG,EAAa8gG,GAC/D,IAAIvtK,EAAQ/C,KACR0xH,EAAkBxnH,WAAWlK,KAAKyvK,WAAWa,GAAU96H,UACtDvvB,MAAMyrG,IAAoBA,EAAkB,GAC7CliD,EAAYhoE,SAAQ,SAAUrU,GAC1B,OAAO4P,EAAMqsK,SAAS,kBAAkBjnK,OAAOhV,EAAM,8BAA+Bu+H,EACxF,GAER,EACOw9C,CACX,CArGkC,GCGlC,GAnBkB,SAAUqB,GACxB,IAAI5wK,EACA6wK,EACAC,EAAY,GAEZpB,EAAW,SAAUl8J,GACrBxT,EAAQ4wK,EAAQ5wK,EAAOwT,GACnB42J,KACAttK,OAAOgW,aAAa+9J,GACpBA,EAAU/zK,OAAOmK,YAAW,WAAc,OAAO6pK,EAAUjpK,SAAQ,SAAUq5B,GAAK,OAAOA,GAAK,GAAI,GAbrF,oBAerB,EAMA,OADAwuI,EAAS,CAAC,GACH,CAAEqB,SAbM,WAAc,OAAO/wK,CAAO,EAad0vK,SAAUA,EAAUsB,UALjC,SAAUC,GAEtB,OADAH,EAAUrhK,KAAKwhK,GACR,WAAc,OAAOH,EAAYA,EAAU1tI,QAAO,SAAUlC,GAAK,OAAOA,IAAM+vI,CAAU,GAAI,CACvG,EAGJ,EC1BIC,GAAgD,SAAUvxK,EAAIikC,EAAMutI,GACpE,GAAIA,GAA6B,IAArB/oK,UAAU3N,OAAc,IAAK,IAA4B22K,EAAxBrlK,EAAI,EAAGm1B,EAAI0C,EAAKnpC,OAAYsR,EAAIm1B,EAAGn1B,KACxEqlK,GAAQrlK,KAAK63B,IACRwtI,IAAIA,EAAK57K,MAAM6O,UAAU0W,MAAM1X,KAAKugC,EAAM,EAAG73B,IAClDqlK,EAAGrlK,GAAK63B,EAAK73B,IAGrB,OAAOpM,EAAG6I,OAAO4oK,GAAM57K,MAAM6O,UAAU0W,MAAM1X,KAAKugC,GACtD,EAIIytI,GAAiB,SAAUC,EAAc99J,GACzC,OAAIA,EAAO+9J,sBACAC,GAASC,4BAA4BH,EAAc99J,GAErDA,EAAOk+J,SACLF,GAASG,kBAAkBL,EAAc99J,GAGzC,CAAC,CAEhB,EAIIo+J,GAAe,SAAUN,EAAc99J,GACvC,IAAIA,EAAOhgB,KAWP,MAAO,CAAC,EAVR,OAAQggB,EAAOhgB,MACX,IAAK,MACD,OAAOg+K,GAASK,UAAUP,EAAc99J,GAC5C,IAAK,OACD,OAAOtI,OAAOW,OAAOylK,EAAc99J,EAAOm8J,SAC9C,QACI,OAAO2B,EAMvB,EAIIQ,GAAmB,SAAUR,EAAc99J,GAC3C,IAAIA,EAAOhgB,KAWP,MAAO,GAVP,OAAQggB,EAAOhgB,MACX,IAAK,MACD,OAAO09K,GAAcA,GAAc,GAAII,GAAc,GAAO,CAAC99J,EAAOm8J,UAAU,GAClF,IAAK,SACD,OAAO2B,EAAaluI,QAAO,SAAUvvC,GAAW,OAAOA,IAAY2f,EAAOm8J,OAAS,IACvF,QACI,OAAO2B,EAMvB,EAIIE,GAAW,CACXG,kBAAmB,SAAUL,EAAc99J,GACvC,IAAI5G,EACJ,OAAO1B,OAAOW,OAAOylK,IAAe1kK,EAAK,CAAC,GACnC4G,EAAOk+J,UAAYl+J,EAAOm8J,QAC7B/iK,GACR,EACA6kK,4BAA6B,SAAUH,EAAc99J,GACjD,IAAI5G,EACAmlK,GAAe,EACf//J,EAAKwB,EAAO+9J,sBAAsB3pK,MAAM,KAAMoqK,EAAiBhgK,EAAG,GAAIigK,EAAgBjgK,EAAG,GACzFkgK,EAAaZ,EAAaU,GAAgBt3K,KAAI,SAAU47B,EAAM37B,GAC9D,OAAI0wB,SAAS4mJ,EAAe,MAAQt3K,GAChCo3K,GAAe,EACRv+J,EAAOm8J,SAEXr5I,CACX,IAIA,OAHqB,IAAjBy7I,GACAG,EAAWzrI,OAAOpb,SAAS4mJ,EAAe,IAAK,EAAGz+J,EAAOm8J,SAEtDzkK,OAAOW,OAAOylK,IAAe1kK,EAAK,CAAC,GACnColK,GAAkBE,EACrBtlK,GACR,EACAilK,UAAW,SAAUP,EAAc99J,GAM/B,IALA,IAAIg8J,EAAQ,CAAC,EACT2C,EAAYjnK,OAAOW,OAAO2jK,EAAO8B,GACjC1kK,EAAK4G,EAAOm8J,QAASxxJ,EAAQvR,EAAGuR,MAAO3gB,EAAQoP,EAAGpP,MAClDu2B,EAAQ5V,EAAMvW,MAAM,KACpB8G,EAAMqlB,EAAMvH,QACTuH,EAAMt5B,OAAS,GAClB+0K,EAAQA,EAAM9gK,GAAO8gK,EAAM9gK,IAAQ,CAAC,EACpCA,EAAMqlB,EAAMvH,QAGhB,OADAgjJ,EAAM9gK,GAAOlR,EACN20K,CACX,GChGOlpK,GAAa,WAEpB,IADA,IAAIZ,EAAO,GACF+pK,EAAK,EAAGA,EAAKhqK,UAAU3N,OAAQ23K,IACpC/pK,EAAK+pK,GAAMhqK,UAAUgqK,GAEzB,IAAI35K,EAAS,CAAC,EACV45K,EAAc,SAAU9pH,GAAO,MAAsB,kBAARA,EAAmBr9C,OAC/D4E,KAAKy4C,GACL1gD,SAAQ,SAAU6G,GACnBjW,EAAOiW,GAAO65C,EAAI75C,EACtB,IAAKjW,EAAO8vD,IAAO,CAAM,EAErB+pH,EAAU,SAAVA,EAAoB/2J,GAAQ,OAAOA,EAClC6nB,QAAO,SAAUmlB,GAAO,OAAe,IAARA,KAAkBA,CAAK,IACtD7tD,KAAI,SAAU6tD,GACf,OAAO/yD,MAAMC,QAAQ8yD,GACjB+pH,EAAQ/pH,GACR8pH,EAAY9pH,EACpB,GAAI,EAGJ,OADA+pH,EAAQjqK,GACD6C,OACF4E,KAAKrX,GACLiC,KAAI,SAAUgU,GAAO,OAAQjW,EAAOiW,IAAQA,GAAQ,IAAM,IAC1D00B,QAAO,SAAU+tH,GAAM,OAAc,OAAPA,CAAa,IAC3Cp/H,KAAK,IACd,EC1BIwgJ,GAA8B,WAI9B,SAASA,EAAahtI,EAAO/jB,GACzBnhB,KAAK7C,MAAQ+nC,EAAM/nC,MACnB6C,KAAKimD,SAAW/gB,EAAM+gB,SACtBjmD,KAAK2/D,cAAgBz6B,EAAMg/B,WAC3BlkE,KAAK+lD,OAAS7gB,EAAM6gB,OACpB/lD,KAAKgmD,SAAW9gB,EAAM8gB,SACtBhmD,KAAKkmD,WAAahhB,EAAMghB,WACxBlmD,KAAKmmD,aAAejhB,EAAMihB,aAC1BnmD,KAAKod,MAAQ8nB,EAAM9nB,MACnBpd,KAAKstB,IAAM4X,EAAM5X,IACjBttB,KAAKuxE,KAAOrsC,EAAMqsC,KAClBvxE,KAAKmyK,KAAOjtI,EAAMitI,KAClBnyK,KAAKoyK,MAAQltI,EAAMktI,MACnBpyK,KAAKqyK,KAAOntI,EAAMmtI,KAClBryK,KAAKsyK,MAAQptI,EAAMotI,MACnBtyK,KAAKklC,MAAQA,EACbllC,KAAKmhB,SAAW+jB,EAAM5vB,SAAW,CAAC,GAAG4wE,SAAW,CAAC,GAAG/kE,QAAUA,CAClE,CAQA,OAPAtW,OAAOsB,eAAe+lK,EAAaluK,UAAW,iBAAkB,CAC5DoI,IAAK,WACD,OAAOpM,KAAKmhB,OAASnhB,KAAKklC,MAAMu3C,YAAYz8E,KAAKmhB,QAAUhW,OAAOnL,KAAK7C,MAC3E,EACAkP,YAAY,EACZC,cAAc,IAEX4lK,CACX,CA9BkC,GCE9BK,GAAuB,SAAUv7K,GACjC,IAAIikH,EAAejkH,EAAMikH,aAAcu3D,EAAcx7K,EAAMw7K,YAAaC,EAAUz7K,EAAMy7K,QAASC,EAAa17K,EAAM07K,WAAYnnI,EAASv0C,EAAMu0C,OAQ/I,OAAQjpC,EAAAA,cAAoB,QAAS,KACjCA,EAAAA,cAAoB,QAAS,KACzBA,EAAAA,cAAoB,KAAM,KACtBA,EAAAA,cAAoB,KAAM,CAAEqwK,QAASF,GAAWx3D,KACxD34G,EAAAA,cAAoB,QAAS,KAAMipC,EAAOlxC,KAX9B,SAAU6qC,EAAOzwB,GAC7B,OAAQnS,EAAAA,cAAoB,KAAM,CAAE+L,IAAKoG,GACrC+9J,GAAgBlwK,EAAAA,cAAoB,KAAM,KACtCA,EAAAA,cAAoB,OAAQ,CAAEhO,UATnB,gCASoDmC,MAAO,CAAE00F,gBAAiBjmD,EAAM6gB,OAAOv3B,UAC1GkkJ,GAAepwK,EAAAA,cAAoB,KAAM,KAAM4iC,EAAM6gB,OAAOp1C,MAC5DrO,EAAAA,cAAoB,KAAM,CAAEswK,wBAAyB,CAAEC,OAAQ3tI,EAAM2mD,kBAC7E,KAMJ,cCnBIinF,GAAa,SAAUt/K,GACvBA,EAAQiD,MAAM6W,mBAAqB,GACnCnY,MAAMouC,KAAK/vC,EAAQkU,WAAWF,SAAQ,SAAUC,GACxCA,EAAEsrK,WAAW,aACbv/K,EAAQkU,UAAUC,OAAOF,EAEjC,GACJ,EACIk/I,GAA4B,qBAAXlqJ,QACjB,UAAU2kB,KAAK3kB,OAAO0uB,UAAUb,uBCL7B,SAASpZ,GAAgBR,GAC5B,GAAyB,qBAAdc,GACPA,GAAAA,gBAA0Bd,OAEzB,CACD,IAAIe,EAAU,iCAAiCtJ,OAAOuI,EAAgBC,KAAM,MAC5Ec,GAAW,wDACXA,GAAW,OAAOtJ,OAAOuI,EAAgBM,iBAAkB,4BAC3D9Q,QAAQwR,KAAKD,EACjB,CACJ,CCZO,IAAIuhK,GAAgB1wK,EAAAA,cAAoB,GAG/C0wK,GAAc9/K,YAAc,0CCFjBwd,GAAkB,CACzBC,KAAM,8BACNC,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbC,QAAS,GACTC,iBAAkB,yJCTlBvG,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EAWA,SAASkrK,GAAapkJ,EAAGjkB,GACrB,GAAIikB,IAAMjkB,EACN,OAAO,EAEX,KAAMikB,MAAQjkB,EACV,OAAO,EAEX,IAAIsoK,EAASroK,OAAOsoK,oBAAoBtkJ,GACpCukJ,EAASvoK,OAAOsoK,oBAAoBvoK,GACxC,GAAIsoK,EAAO94K,SAAWg5K,EAAOh5K,OACzB,OAAO,EAEX,IAAK,IAAIsR,EAAI,EAAGA,EAAIwnK,EAAO94K,OAAQsR,IAAK,CACpC,IAAI2nK,EAAWH,EAAOxnK,GACtB,GAAImjB,EAAEwkJ,KAAczoK,EAAEyoK,GAClB,OAAO,CAEf,CACA,OAAO,CACX,CACA,IAIIC,GAJAC,GAAiB,CACjBzrJ,MAAO,IACPH,IAAK,IAGT,SAAW2rJ,GACPA,EAAe,OAAI,SACnBA,EAAe,OAAI,SACnBA,EAAgB,QAAI,UACpBA,EAAc,MAAI,QAClBA,EAAmB,WAAI,YAC1B,CAND,CAMGA,KAAWA,GAAS,CAAC,IACxB,IACIE,GAA4B,8BAO5BC,GAAqC,SAAUxnK,GAE/C,SAASwnK,EAAoBz8K,GACzB,IAAI+L,EAAQkJ,EAAOjJ,KAAKhD,KAAMhJ,IAAUgJ,KAwHxC,OApHA+C,EAAMD,QAAU,EAIhBC,EAAMpD,MAAQ,CAAEpM,QAAS+/K,GAAOI,OAAQr0H,SAAUi0H,GAAOI,OAAQ18K,MAAO,CAAC,GACzE+L,EAAM4wK,OAAS,KACf5wK,EAAM1K,KAAO,SAAUu7K,GACnB7wK,EAAM8wK,YAAYD,GAClB7wK,EAAM+wK,QAAQF,EAAM7wE,WAAY,QAAShgG,EAAMgxK,UAC/ChxK,EAAM9C,SAAS,CAAE1M,QAAS+/K,GAAOU,MAAO30H,SAAUt8C,EAAMpD,MAAMpM,SAClE,EACAwP,EAAM8wK,YAAc,SAAUD,GAC1B,IAAIrnK,EAAKxJ,EAAM/L,MAAOi9K,EAAc1nK,EAAG0nK,YAAaC,EAAa3nK,EAAG2nK,WAAYC,EAAY5nK,EAAG4nK,UAAW7uJ,EAAS/Y,EAAG+Y,OAAQI,EAASnZ,EAAGmZ,OAAQpqB,EAASiR,EAAGjR,OAAQ02B,EAAQzlB,EAAGylB,MAAOoiJ,EAAe7nK,EAAG6nK,aACtMziK,EAAKiiK,EAAMn9K,MAAOjC,EAAQmd,EAAGnd,MAAOC,EAASkd,EAAGld,OAEpDm/K,EAAMn9K,MAAMjC,MAAQo/K,EAAMrpK,YAAc,KACxCqpK,EAAMn9K,MAAMhC,OAASm/K,EAAMxpK,aAAe,KAC1C,IAAIiqK,GAAgBC,EAAAA,GAAAA,IAAa,CAC7B5uJ,OAAQA,EACRuuJ,YAAaA,EACbzgL,QAASogL,EACTW,aAAcL,EACd5uJ,OAAQA,EACRhqB,OAAQA,EACR84K,aAAcA,EACdpiJ,MAAOA,IAEP6qB,GAAW23H,EAAAA,GAAAA,IAAgB,CAC3B9uJ,OAAQA,EACRuuJ,YAAaA,EACbzgL,QAASogL,EACTW,aAAcL,EACdO,WAAYN,EACZO,gBAAiBL,EACjB/4K,OAAQyH,EAAM/L,MAAMsE,SAYxB,GAVAs4K,EAAMn9K,MAAMkxB,IAAMk1B,EAASv3B,OAAOqC,IAAM,KACxCisJ,EAAMn9K,MAAMqxB,KAAO+0B,EAASv3B,OAAOwC,KAAO,KAC1C8rJ,EAAMn9K,MAAMjC,MAAQA,EACpBo/K,EAAMn9K,MAAMhC,OAASA,EACrBsO,EAAM4xK,YAAc,CAChBlvG,IAAK5oB,EAAS4oB,IACdmvG,OAAQ/3H,EAAS+3H,OACjBC,KAAMh4H,EAASg4H,KACfC,QAASj4H,EAASi4H,SAElB/xK,EAAM/L,MAAM+9K,WAAY,CACxB,IAAIC,EAAU,CACVpnK,OAAQ7K,EACR+xK,QAASj4H,EAASi4H,QAClBF,OAAQ/3H,EAAS+3H,QAErB7xK,EAAM/L,MAAM+9K,WAAW/xK,UAAKvP,EAAWuhL,EAC3C,CACJ,EACAjyK,EAAMgxK,SAAW,WACb,IAAIvgL,EAAUuP,EAAM4wK,OACfngL,IAGDuP,EAAM/L,MAAMqB,MACZ7E,EAAQkU,UAAUyB,IAAIqqK,IAE1BzwK,EAAMkyK,yBAAyBzhL,GAC3BuP,EAAM/L,MAAMrC,QACZoO,EAAM/L,MAAMrC,OAAOqO,UAAKvP,EAAW,CAAEma,OAAQ7K,IAErD,EACAA,EAAM+wK,QAAU,SAAUtgL,EAASL,EAAM+S,GACrC,GAAKnD,EAAM/L,MAAMk9K,WAAjB,CAGA,IAAIgB,EACA3oK,EAAKxJ,EAAM/L,MAAMk9K,WAAY32F,EAAahxE,EAAGgxE,WAAY5yB,EAAWp+C,EAAGo+C,SAEvEuqH,EADe,SAAf33F,GAAsC,WAAb5yB,EACJ,QAED,UAAf4yB,GAAuC,WAAb5yB,EACV,OAEH,QAAbA,EACgB,OAGA,KAQrB5nD,EAAM4xK,aAAe5xK,EAAM4xK,YAAYG,UACvCI,EAPgB,CAChB1tB,KAAM,KACNC,GAAI,OACJ3/H,KAAM,QACNF,MAAO,QAG4BstJ,IJnKhC,SAAU1hL,EAASu2G,EAAWtnD,EAAUtvD,EAAM+S,GAC7D,GAAiB,IAAbu8C,EACA,OAAOv8C,IAEX,IAAIivK,EAAa,WAAaprE,EAAY,IAAM52G,EAC5CiiL,EAAmBD,EAAa,UAiBpC3hL,EAAQ2K,iBAAiB,iBAhBL,SAAhBk3K,EAA0BriL,GAItBA,EAAE4a,SAAWpa,IACbA,EAAQ4K,oBAAoB,gBAAiBi3K,GAC7CvC,GAAWt/K,GAEPA,EAAQiD,MAAMC,QADL,SAATvD,EACwB,OAGA,GAE5B+S,IAER,IAEA,IAAI2D,EAAgBrW,EAAQqW,cAC5B,GAAKA,EAAL,CAGA,IAAIC,EAAcD,EAAcC,YAChC,GAAKA,EAAL,CAGA,IAAIgqK,EAAU,WACVhB,GAAWt/K,GACXA,EAAQkU,UAAUyB,IAAIgsK,GACtBrrK,EAAYm4C,uBAAsB,WAC9BzuD,EAAQiD,MAAM6W,mBAAqBm1C,EAAW,KAC9CjvD,EAAQkU,UAAUyB,IAAIisK,EAC1B,GACJ,EACIzuB,GACA78I,EAAYm4C,sBAAsB6xH,GAGlCA,GAbJ,CAJA,CAmBJ,CIwHYwB,CAAM9hL,EAAS0hL,EAAoBnyK,EAAMwyK,kBAAkBpiL,GAAOA,EAAM+S,EAxBxE,CAyBJ,EACAnD,EAAMyyK,UAAY,SAAU5B,GACnB7wK,EAAM/L,MAAMqB,MACbu7K,EAAMlsK,UAAUC,OAAO6rK,IAE3BzwK,EAAM0yK,0BACV,EACA1yK,EAAM2yK,SAAW,WACT3yK,EAAMpD,MAAMpM,UAAY+/K,GAAOqC,QAAU5yK,EAAMpD,MAAM0/C,WAAai0H,GAAOU,OACzEjxK,EAAM9C,SAAS,CAAE1M,QAAS+/K,GAAOI,OAAQr0H,SAAUt8C,EAAMpD,MAAMpM,UAE/DwP,EAAM/L,MAAMtC,SACZqO,EAAM/L,MAAMtC,QAAQsO,UAAKvP,EAAW,CAAEma,OAAQ7K,GAEtD,EACAA,EAAM6yK,iBAAmB,WACrB,OAAO7yK,EAAMD,QAAUC,EAAMD,QAhKjB,EADG,GAkKnB,EACAoO,GAAgBR,IAChB3N,EAAM8yK,WCnLQ,SAAUC,EAAMC,EAAMzgK,GAExC,IAAI5Q,EAAS5B,EAASkF,EAAM5P,OADZ,IAAZkd,IAAsBA,EAAU,CAAC,GAErC,IAAI+pC,EAAW,EACf/pC,EAAUA,GAAW,CAAC,EACtB,IAAI0gK,EAAQ,WACR32H,GAA+B,IAApB/pC,EAAQ2gK,QAAoB,GAAI,IAAIx+J,MAAOoJ,UACtDnc,OAAUjR,EACV2E,EAAS09K,EAAK5tK,MAAMpF,EAASkF,GACxBtD,IACD5B,EAAUkF,EAAO,KAEzB,EAyBA,OAxBgB,WACZ,IAAIonB,GAAM,IAAI3X,MAAOoJ,UAChBw+B,IAAgC,IAApB/pC,EAAQ2gK,UACrB52H,EAAWjwB,GAEf,IAAI2wF,EAAYg2D,GAAQ3mJ,EAAMiwB,GAiB9B,OAhBAv8C,OAAUrP,EACVuU,EAAOD,UACHg4G,GAAa,GAAKA,EAAYg2D,GAC1BrxK,IACA+N,aAAa/N,GACbA,OAAUjR,GAEd4rD,EAAWjwB,EACXh3B,EAAS09K,EAAK5tK,MAAMpF,EAASkF,GACxBtD,IACD5B,EAAUkF,EAAO,OAGftD,IAAgC,IAArB4Q,EAAQ4gK,WACzBxxK,EAAUjI,OAAOmK,WAAWovK,EAAOj2D,IAEhC3nH,CACX,CAEJ,CD6I2ByzG,CAAS9oG,EAAM8yK,WAAW91K,KAAKgD,GCvL9B,oBDwLbA,CACX,CA0RA,OArZA0H,GAAUgpK,EAAqBxnK,GA4H/BpB,OAAOsB,eAAesnK,EAAoBzvK,UAAW,UAAW,CAI5DoI,IAAK,WACD,OAAOpM,KAAK2zK,MAChB,EACAtnK,YAAY,EACZC,cAAc,IAKlBmnK,EAAoB7vK,yBAA2B,SAAU5M,EAAO2I,GAC5D,IAAItH,EAAOrB,EAAMqB,KAAMqtB,EAAS1uB,EAAM0uB,OAAQuuJ,EAAcj9K,EAAMi9K,YAAap/K,EAAWmC,EAAMnC,SAAUs/K,EAAYn9K,EAAMm9K,UAAWD,EAAal9K,EAAMk9K,WAAY5/K,EAAY0C,EAAM1C,UAAW6hL,EAAan/K,EAAMm/K,WAAY1/K,EAAQO,EAAMP,MAAO6uB,EAAStuB,EAAMsuB,OAAQ8wJ,EAAap/K,EAAMo/K,WAC7RnwK,EAAYsF,GAASA,GAAS,CAAC,EAAG5L,GAAQ,CAAE3I,MAAO,CAC/CqB,KAAMA,EACNqtB,OAAQA,EACRuuJ,YAAaA,EACbp/K,SAAUA,EACVs/K,UAAWA,EACXD,WAAYA,EACZ5/K,UAAWA,EACX6hL,WAAYA,EACZ1/K,MAAOA,EACP6uB,OAAQA,EACR8wJ,WAAYA,KAEpB,OAAIp/K,EAAMqB,KACFsH,EAAMpM,UAAY+/K,GAAOI,QAAU/zK,EAAMpM,UAAY+/K,GAAOqC,OACrDpqK,GAASA,GAAS,CAAC,EAAGtF,GAAY,CAAE1S,QAAS+/K,GAAO+C,QAASh3H,SAAU1/C,EAAMpM,UAEpFoM,EAAMpM,UAAY+/K,GAAO+C,QAClB9qK,GAASA,GAAS,CAAC,EAAGtF,GAAY,CAAE1S,QAAS+/K,GAAOU,MAAO30H,SAAU1/C,EAAMpM,UAElFoM,EAAMpM,UAAY+/K,GAAOU,OACvBf,GAAa3tJ,EAAQ3lB,EAAM3I,MAAMsuB,SAC9B2tJ,GAAagB,EAAat0K,EAAM3I,MAAMi9K,cACtChB,GAAap+K,EAAU8K,EAAM3I,MAAMnC,WACnCo+K,GAAakB,EAAWx0K,EAAM3I,MAAMm9K,YACpClB,GAAaiB,EAAYv0K,EAAM3I,MAAMk9K,aACrCjB,GAAax8K,EAAOkJ,EAAM3I,MAAMP,QACjCivB,IAAW/lB,EAAM3I,MAAM0uB,QACvBywJ,IAAex2K,EAAM3I,MAAMm/K,YAC3B7hL,IAAcqL,EAAM3I,MAAM1C,UAG3B2R,EAFIsF,GAASA,GAAS,CAAC,EAAGtF,GAAY,CAAE1S,QAAS+/K,GAAOuC,WAAYx2H,SAAU1/C,EAAMpM,UAI3FoM,EAAMpM,UAAY+/K,GAAOqC,QAAUh2K,EAAMpM,UAAY+/K,GAAOI,OACrDnoK,GAASA,GAAS,CAAC,EAAGtF,GAAY,CAAE1S,QAAS+/K,GAAOI,OAAQr0H,SAAU1/C,EAAMpM,UAEhFgY,GAASA,GAAS,CAAC,EAAGtF,GAAY,CAAE1S,QAAS+/K,GAAOqC,OAAQt2H,SAAU1/C,EAAMpM,SACvF,EAIAkgL,EAAoBzvK,UAAUG,mBAAqB,SAAUC,GACrDpE,KAAKL,MAAMpM,UAAY+/K,GAAO+C,SAAWr2K,KAAK2zK,OAC9C3zK,KAAK3H,KAAK2H,KAAK2zK,QAEV3zK,KAAKL,MAAMpM,UAAY+/K,GAAOqC,QAAU31K,KAAK2zK,QAClD3zK,KAAKw1K,UAAUx1K,KAAK2zK,QACpB3zK,KAAK8zK,QAAQ9zK,KAAK2zK,OAAO5wE,WAAY,OAAQ/iG,KAAK01K,WAE7C11K,KAAKL,MAAMpM,UAAY+/K,GAAOuC,YAAc71K,KAAKL,MAAM0/C,WAAai0H,GAAOU,MAChFh0K,KAAKC,SAAS,CAAE1M,QAAS+/K,GAAOU,MAAO30H,SAAUr/C,KAAKL,MAAMpM,UAEvDyM,KAAKL,MAAMpM,UAAY+/K,GAAOU,OACnC5vK,EAAUgyK,aAAep2K,KAAKhJ,MAAMo/K,YAAcp2K,KAAK2zK,QACvD3zK,KAAK6zK,YAAY7zK,KAAK2zK,OAE9B,EAIAF,EAAoBzvK,UAAUC,kBAAoB,WAC1CjE,KAAKL,MAAMpM,UAAY+/K,GAAO+C,SAAWr2K,KAAK2zK,QAC9C3zK,KAAK3H,KAAK2H,KAAK2zK,OAEvB,EAIAF,EAAoBzvK,UAAUM,qBAAuB,WACjDtE,KAAKy1K,0BACT,EAIAhC,EAAoBzvK,UAAU5K,OAAS,WACnC,IAAI2J,EAAQ/C,KACRuM,EAAKvM,KAAKhJ,MAAOpD,EAAW2Y,EAAG3Y,SAAUU,EAAYiY,EAAGjY,UAAW6hL,EAAa5pK,EAAG4pK,WAAY99K,EAAOkU,EAAGlU,KAAM/B,EAAKiW,EAAGjW,GAAI89K,EAAe7nK,EAAG6nK,aAC7IkC,EAAqBt2K,KAAKhJ,MAAMnC,SAChCmL,KAAKhJ,MAAMnC,SACXk1K,GACK/pK,KAAKhJ,MAAM0uB,QAAU1lB,KAAKhJ,MAAM0uB,OAAO7b,cAAgB7J,KAAKhJ,MAAM0uB,OAAO7b,cAAcrM,KAAO1E,SAAS0E,UACtG/J,EACNuM,KAAKL,MAAMpM,UAAY+/K,GAAOuC,YAAc71K,KAAKL,MAAM0/C,WAAai0H,GAAOU,OAASh0K,KAAK2zK,QACzF3zK,KAAK6zK,YAAY7zK,KAAK2zK,QAE1B,IAAIl9K,EAAQoU,OAAOW,OAAO,CAAC,EAAG,CAAEqxC,SAAUu3H,EAAczsJ,IAAK,EAAGG,MAAO,KAAS9nB,KAAKhJ,MAAMP,OAAS,CAAC,GACjG8/K,EAAUv2K,KAAKL,MAAMpM,UAAY+/K,GAAOqC,OAC5C,IAAKt9K,GAAQk+K,IAAYD,EAAoB,CACzC,IAAIE,EAAgBx2K,KAAK41K,mBACrBa,EAAgBn0K,EAAAA,cAAoB0wK,GAAc91K,SAAU,CAAEC,MAAOq5K,GACrEl0K,EAAAA,cAAoB,MAAO,CAAEhO,UAAWsU,GA/O9B,wBAES,iCA6OmFtU,GAAYgC,GAAIA,EAAI/D,IAAK,SAAUS,GAAK,OAAO+P,EAAM4wK,OAAS3gL,CAAG,EAAGyD,MAAO8U,GAAS,CAAEq5C,OAAQ4xH,GAAiB//K,IACjN6L,EAAAA,cAAoB,MAAO,CAAEhO,UAAWsU,GA5O9C,UA4OkEutK,EA7OhD,+BA6OwF1/K,MAAO,CAAE0W,gBAAiB,QAAWvZ,KACjJ,OAA+B,OAAxBoM,KAAKhJ,MAAMnC,SACdqQ,GAAAA,aAAsBuxK,EAAcH,GACpCG,CACR,CACA,OAAO,IACX,EACA5rK,OAAOsB,eAAesnK,EAAoBzvK,UAAW,oBAAqB,CACtEoI,IAAK,WACD,IAAI0nK,EAAU9zK,KAAKhJ,MAAM88K,QACrB1wK,EAAQ,EACRqB,EAAO,EAUX,OATIqvK,KACgB,IAAZA,EACA1wK,EAAQqB,EAAO,KAGfrB,EAAQ0wK,EAAQ4C,cAAgB,EAChCjyK,EAAOqvK,EAAQ6C,eAAiB,IAGjC,CAAEvzK,MAAOA,EAAOqB,KAAMA,EACjC,EACA4H,YAAY,EACZC,cAAc,IAElBmnK,EAAoBzvK,UAAUixK,yBAA2B,SAAUzhL,GAC/D,IAAIuP,EAAQ/C,KACZA,KAAKy1K,2BACLz1K,KAAK42K,mBAAqBC,GAAAA,GAAAA,kBAA2B72K,KAAKhJ,MAAM0uB,QAAUlyB,GACtEwM,KAAK42K,oBACL52K,KAAK42K,mBAAmBv8K,KAAI,SAAU2Q,GAAK,OAAOA,EAAE7M,iBAAiB,SAAU4E,EAAM8yK,WAAa,IAEtGp5K,OAAO0B,iBAAiB,SAAU6B,KAAK61K,WAC3C,EACApC,EAAoBzvK,UAAUyxK,yBAA2B,WACrD,IAAI1yK,EAAQ/C,KACRA,KAAK42K,qBACL52K,KAAK42K,mBAAmBv8K,KAAI,SAAU2Q,GAAK,OAAOA,EAAE5M,oBAAoB,SAAU2E,EAAM8yK,WAAa,IACrG71K,KAAK42K,wBAAqBnjL,GAE9BgJ,OAAO2B,oBAAoB,SAAU4B,KAAK61K,WAC9C,EACApC,EAAoBzvK,UAAU6xK,WAAa,WACvC71K,KAAKC,SAAS,CAAE1M,QAAS+/K,GAAOuC,WAAYx2H,SAAUr/C,KAAKL,MAAMpM,SACrE,EAIAkgL,EAAoBtsK,UAAY,CAC5Bue,OAAQ,SAAU1uB,GACd,IAAI0uB,EAAS1uB,EAAM0uB,OACnB,OAAIA,GAAqC,kBAApBA,EAAOuvB,SACjB,IAAI70C,MAAM,6EAEd,IACX,EACAvL,SAAU,SAAUmC,GAChB,IAAIxD,EAAUwD,EAAMnC,SACpB,OAAIrB,GAAuC,kBAArBA,EAAQyhD,SACnB,IAAI70C,MAAM,+EAEd,IACX,EACA9L,UAAW0Z,EAAAA,UAAoB,CAC3BA,EAAAA,OACAA,EAAAA,QAAkBA,EAAAA,QAClBA,EAAAA,SAEJ1X,GAAI0X,EAAAA,OACJmoK,WAAYnoK,EAAAA,UAAoB,CAC5BA,EAAAA,OACAA,EAAAA,QAAkBA,EAAAA,QAClBA,EAAAA,SAEJmmK,UAAWnmK,EAAAA,MAAgB,CACvBuvE,WAAYvvE,EAAAA,MAAgB,CACxB8oK,GAAAA,GAAAA,IACAA,GAAAA,GAAAA,KACAA,GAAAA,GAAAA,OAEJnsH,SAAU38C,EAAAA,MAAgB,CACtB8oK,GAAAA,GAAAA,IACAA,GAAAA,GAAAA,KACAA,GAAAA,GAAAA,SAGR7C,YAAajmK,EAAAA,MAAgB,CACzBuvE,WAAYvvE,EAAAA,MAAgB,CACxB+oK,GAAAA,GAAAA,KACAA,GAAAA,GAAAA,OACAA,GAAAA,GAAAA,QAEJpsH,SAAU38C,EAAAA,MAAgB,CACtB+oK,GAAAA,GAAAA,IACAA,GAAAA,GAAAA,OACAA,GAAAA,GAAAA,WAGR7C,WAAYlmK,EAAAA,MAAgB,CACxBuvE,WAAYvvE,EAAAA,MAAgB,CACxB+oK,GAAAA,GAAAA,KACAA,GAAAA,GAAAA,OACAA,GAAAA,GAAAA,QAEJpsH,SAAU38C,EAAAA,MAAgB,CACtB+oK,GAAAA,GAAAA,IACAA,GAAAA,GAAAA,OACAA,GAAAA,GAAAA,WAGRzxJ,OAAQtX,EAAAA,MAAgB,CACpB8Z,KAAM9Z,EAAAA,OACN2Z,IAAK3Z,EAAAA,SAETpa,SAAUoa,EAAAA,UAAoB,CAC1BA,EAAAA,QACAA,EAAAA,OAEJ3V,KAAM2V,EAAAA,KACN8lK,QAAS9lK,EAAAA,UAAoB,CACzBA,EAAAA,KACAA,EAAAA,MAAgB,CACZ0oK,aAAc1oK,EAAAA,OACd2oK,cAAe3oK,EAAAA,WAGvB1S,OAAQ0S,EAAAA,MAAgB,CACpBuvE,WAAYvvE,EAAAA,OACZ28C,SAAU38C,EAAAA,SAEdomK,aAAcpmK,EAAAA,MAAgB,CAC1B,QACA,aAEJgkB,MAAOhkB,EAAAA,OACPvX,MAAOuX,EAAAA,OACPtZ,QAASsZ,EAAAA,KACT+mK,WAAY/mK,EAAAA,KACZrZ,OAAQqZ,EAAAA,MAKZylK,EAAoBrsK,aAAe,CAC/B+sK,UAAW,CACP52F,WAAYu5F,GAAAA,GAAAA,IACZnsH,SAAUmsH,GAAAA,GAAAA,MAEd7C,YAAa,CACT12F,WAAYw5F,GAAAA,GAAAA,KACZpsH,SAAUosH,GAAAA,GAAAA,QAEd7C,WAAY,CACR32F,WAAYw5F,GAAAA,GAAAA,KACZpsH,SAAUosH,GAAAA,GAAAA,KAEdzxJ,OAAQiuJ,GACRO,SAAS,EACTz7K,MAAM,EACNiD,OAAQ,CACJiiF,WAAY,EACZ5yB,SAAU,GAEdypH,aAAc,YAKlBX,EAAoBvsK,YAAc8rK,GAIlCS,EAAoBvgL,YAAc,iBAC3BugL,CACX,CAvZyC,CAuZvCnxK,EAAAA,WEneEiJ,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EAcWivK,GAAoB10K,EAAAA,eAAoB,SAAUtL,GAAS,OAAOA,CAAO,IAIzEigL,GAAQ30K,EAAAA,YAAiB,SAAUtL,EAAOzE,GACjD,IACI2kL,EADuB50K,EAAAA,WAAiB00K,IACNh0K,UAAKvP,EAAWuD,GACtD,OAAQsL,EAAAA,cAAoBmxK,GAAqBloK,GAAS,CAAEhZ,IAAKA,GAAO2kL,GAC5E,IACAD,GAAM/jL,YAAc,QC7Bb,IAAIikL,GAAe70K,EAAAA,cAAoB,MAC9C60K,GAAajkL,YAAc,eCL3B,IAAIuX,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAqBzCgsK,GAAY,CAAE75F,WAAY,MAAO5yB,SAAU,OAC3C0sH,GAAgB,kBAKhBC,GAA8B,SAAUrrK,GAExC,SAASqrK,EAAatgL,EAAO8L,GACzB,IAAIC,EAAQkJ,EAAOjJ,KAAKhD,KAAMhJ,EAAO8L,IAAY9C,KAyBjD,OAxBA+C,EAAMD,QAAU,KAChBC,EAAMvP,QAAU,KAChBuP,EAAMw0K,kBAAoB,SAAUvkL,GAEhC,QAAIg3K,GADiBh3K,EAAEgf,eACMwlK,cAAez0K,EAAMvP,QAKtD,EACAuP,EAAM00K,aAAe,SAAUzkL,GAC3B,IAAIm3K,EAAWyE,GAAW7rK,EAAO/P,GACR+P,EAAMD,QAAQ40K,iBAAiB3tJ,QAAQ,eAAgBogJ,IAE5En3K,EAAE88D,gBAEV,EACA/sD,EAAMi1H,cAAgB,IAAIruG,GAAiB5mB,EAAO,CAC9C00K,aAAc,sBAElB30K,EAAQ60K,eAAetI,SAAS,CAC5Bl8K,KAAM,MACNm8K,QAASvsK,EAAMi1H,gBAEZj1H,CACX,CAgBA,OA5CA0H,GAAU6sK,EAAcrrK,GA6BxBqrK,EAAatzK,UAAU5K,OAAS,WAC5B,IAAI2J,EAAQ/C,KACRuM,EAAKvM,KAAKhJ,MAAO4gL,EAAarrK,EAAGqrK,WAAY1D,EAAa3nK,EAAG2nK,WAAY2D,EAActrK,EAAGsrK,YAAaC,EAAcvrK,EAAGurK,YAAaC,EAAexrK,EAAGwrK,aAAczjL,EAAYiY,EAAGjY,UACpL0jL,EAAe,CAACX,GAAe/iL,GAAWo9B,KAAK,KAAK3B,OAGxD,OAFsBztB,EAAAA,cAAoB20K,GAAO,CAAEnD,SAAS,EAAOI,WAAYA,EAAY5uJ,OAAQuyJ,EAAax/K,KAAMu/K,EAAYzD,UAAWiD,GAAW9iL,UAtCtI,2BAuCdgO,EAAAA,cAAoB,MAAO,CAAEhO,UAAW0jL,EAAcvhL,MAAOqhL,EAAaL,aAAcz3K,KAAKy3K,aAAcllL,IAAK,SAAUu+J,GAAM,OAAO/tJ,EAAMvP,QAAUs9J,CAAI,GAAKinB,KAExK,EACAT,EAAatzK,UAAUM,qBAAuB,WAC1CtE,KAAK8C,QAAQ60K,eAAetI,SAAS,CACjCl8K,KAAM,SACNm8K,QAAStvK,KAAKg4H,eAEtB,EACAs/C,EAAapwK,YAAciwK,GACpBG,CACX,CA9CkC,CA8ChCh1K,EAAAA,WCzEEmI,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EACI6D,GAAkC,SAAUH,EAAGzY,GAC/C,IAAI0F,EAAI,CAAC,EACT,IAAK,IAAIsS,KAAKS,EAAOZ,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,IAAMhY,EAAEqW,QAAQ2B,GAAK,IAC9EtS,EAAEsS,GAAKS,EAAET,IACb,GAAS,MAALS,GAAqD,oBAAjCZ,OAAOgB,sBACtB,KAAIH,EAAI,EAAb,IAAgBV,EAAIH,OAAOgB,sBAAsBJ,GAAIC,EAAIV,EAAE5Q,OAAQsR,IAC3D1Y,EAAEqW,QAAQ2B,EAAEU,IAAM,GAAKb,OAAO7G,UAAU8H,qBAAqB9I,KAAKyI,EAAGT,EAAEU,MACvEhT,EAAEsS,EAAEU,IAAMD,EAAET,EAAEU,IAF4B,CAItD,OAAOhT,CACX,EAaIu/K,GAA+B,SAAUhsK,GAEzC,SAASgsK,IACL,IAAIl1K,EAAmB,OAAXkJ,GAAmBA,EAAO/D,MAAMlI,KAAM+H,YAAc/H,KAMhE,OALA+C,EAAMD,QAAU,KAChBC,EAAMpD,MAAQ,CACVi4K,YAAY,GAEhB70K,EAAMi1H,cAAgB,KACfj1H,CACX,CAwHA,OAjIA0H,GAAUwtK,EAAehsK,GAUzBgsK,EAAcj0K,UAAUC,kBAAoB,WAExCjE,KAAKg4H,cAAgB,IAAIruG,GAAiB3pB,KAAM,CAC5CuqH,YAAa,gBACbG,YAAa,kBAEjB1qH,KAAK8C,QAAQ60K,eAAetI,SAAS,CACjCl8K,KAAM,MACNm8K,QAAStvK,KAAKg4H,eAEtB,EACAigD,EAAcj0K,UAAU5K,OAAS,WAC7B,IAAImT,EACAxJ,EAAQ/C,KACR2R,EAAK3R,KAAKL,MAAOu4K,EAAevmK,EAAGumK,aAAcl9D,EAASrpG,EAAGqpG,OAAQ1mH,EAAYqd,EAAGrd,UAAW6jL,EAAevsK,GAAO+F,EAAI,CAAC,eAAgB,SAAU,cACpJymK,EAAiBp4K,KAAKL,MAAMi4K,WAAa,WACzC,IAAIx+K,EAAS2J,EAAMs1K,qBACnB,GAAIr9D,EACA,OAAkB,OAAX5hH,EAAkBA,EAAO8+K,GAC3B51K,EAAAA,cAAoBiwK,GAAsBhnK,GAAS,CAAC,EAAG2sK,IAG5D,IAAIhzI,EAAQgzI,EAAahzI,MACrBozI,EAAiBv1K,EAAMw1K,0BAA0BrzI,EAAM6gB,OAAOzrD,OAClE,OAAuB,OAAnBg+K,EACOA,EAAeJ,GAEN,OAAX9+K,EACEA,EAAO8+K,GAGN51K,EAAAA,cAAoB,OAAQ,CAAEswK,wBAAyB,CAAEC,OAAQqF,EAAahzI,MAAM2mD,iBAGxG,EAAIp5D,SAASzuB,UACTw0K,EAA0B5vK,KAAY2D,EAAK,CAAC,GAnD7B,0BAoDYyuG,EAC3BzuG,EApDgB,6BAoDcjY,EAC9BiY,IACJ,OAAQjK,EAAAA,cAAoBg1K,GAAc/rK,GAAS,CAAC,EAAG4sK,EAAc,CAAEJ,aAAcK,EAAgB9jL,UAAWkkL,IACpH,EACAP,EAAcj0K,UAAUM,qBAAuB,WAC3CtE,KAAK8C,QAAQ60K,eAAetI,SAAS,CACjCl8K,KAAM,SACNm8K,QAAStvK,KAAKg4H,eAEtB,EACAigD,EAAcj0K,UAAUy0K,cAAgB,SAAUzlL,GAC9C,IACI8P,EADA4iB,EAAS1yB,EAAE0yB,OAAQjvB,EAAQzD,EAAEyD,MAAOukH,EAAShoH,EAAEgoH,OAAQ1mH,EAAYtB,EAAEsB,UAAuBtB,EAAEw4F,YAM9F1oF,EADAk4G,EACUh7G,KAAK04K,2BAA2B1lL,GAGhCgN,KAAK24K,qBAAqB3lL,GAExCgN,KAAKC,SAAS,CACV23K,YAAY,EACZ1D,WAAYxuJ,EAAOymB,MACnB0rI,YAAanyJ,EAAOwf,MACpBgzI,aAAcp1K,EACdg1K,YAAarhL,EACbnC,UAAWA,EACX0mH,OAAQA,IAEhB,EACAi9D,EAAcj0K,UAAU40K,cAAgB,WACpC54K,KAAKC,SAAS,CACV23K,YAAY,EACZE,YAAa,CAAC,EACdxjL,eAAWb,GAEnB,EACAwkL,EAAcj0K,UAAU00K,2BAA6B,SAAU1lL,GAC3D,IAAIu4C,EAASv4C,EAAEu4C,OAAQ0vE,EAAejoH,EAAEioH,aACpCy3D,EAAannI,EAAOxI,QAAO,SAAUmC,GAAS,MAAoC,qBAAtBA,EAAM6gB,OAAOp1C,IAAsB,IAAGvW,OAAS,EAC3Go4K,EAAcx/K,EAAE+yD,OAAO3rD,OAAS,EAChCq4K,EAAU,EAOd,OANIC,GACAD,IAEAD,GACAC,IAEG,CACHx3D,aAAcA,EACdu3D,YAAaA,EACbC,QAASA,EACTC,WAAYA,EACZnnI,OAAQv4C,EAAEu4C,OAAOlxC,KAAI,SAAU6qC,GAAS,OAAO,IAAIgtI,GAAahtI,EAAOlyC,EAAEmuB,OAAS,IAE1F,EACA82J,EAAcj0K,UAAU20K,qBAAuB,SAAU3lL,GACrD,IAAIkyC,EAAQlyC,EAAEkyC,MAAO/jB,EAASnuB,EAAEmuB,OAChC,MAAO,CAAE+jB,MAAO,IAAIgtI,GAAahtI,EAAO/jB,GAC5C,EACA82J,EAAcj0K,UAAUu0K,0BAA4B,SAAUh2F,GAC1D,IAAIx8B,EAAS/lD,KAAK8C,QAAQ+1K,aAAanI,WAAW3qH,OAClD,YAAetyD,IAAXsyD,GACG5wD,MAAMC,QAAQ2wD,SACQtyD,IAAtBsyD,EAAOw8B,IACPx8B,EAAOw8B,GAAWt3E,eAAe,YACjC86C,EAAOw8B,GAAW2D,QAAQj7E,eAAe,UACrC86C,EAAOw8B,GAAW2D,QAAQ9sF,OAE9B,IACX,EACA6+K,EAAcj0K,UAAUq0K,mBAAqB,WACzC,IAAInyF,EAAUlmF,KAAK8C,QAAQ+1K,aAAanI,WAAWxqF,QACnD,YAAgBzyF,IAAZyyF,GACGA,EAAQj7E,eAAe,UACnBi7E,EAAQ9sF,OAEZ,IACX,EACA6+K,EAAc/wK,YAAciwK,GACrBc,CACX,CAnImC,CAmIjC31K,EAAAA,WCjLEw2K,GAAY,SAAU9hL,GAAS,OAAQA,EAAMpD,QAAW,EAC5DklL,GAAU5lL,YAAc,YCJxB,IAAIuX,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EACI6D,GAAkC,SAAUH,EAAGzY,GAC/C,IAAI0F,EAAI,CAAC,EACT,IAAK,IAAIsS,KAAKS,EAAOZ,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,IAAMhY,EAAEqW,QAAQ2B,GAAK,IAC9EtS,EAAEsS,GAAKS,EAAET,IACb,GAAS,MAALS,GAAqD,oBAAjCZ,OAAOgB,sBACtB,KAAIH,EAAI,EAAb,IAAgBV,EAAIH,OAAOgB,sBAAsBJ,GAAIC,EAAIV,EAAE5Q,OAAQsR,IAC3D1Y,EAAEqW,QAAQ2B,EAAEU,IAAM,GAAKb,OAAO7G,UAAU8H,qBAAqB9I,KAAKyI,EAAGT,EAAEU,MACvEhT,EAAEsS,EAAEU,IAAMD,EAAET,EAAEU,IAF4B,CAItD,OAAOhT,CACX,EAWI6yF,GAAkC,SAAUt/E,GAE5C,SAASs/E,EAAiBv0F,EAAO8L,GAC7B,IAAIC,EAAQkJ,EAAOjJ,KAAKhD,KAAMhJ,EAAO8L,IAAY9C,KAajD,OAZA+C,EAAMD,QAAU,KAChBC,EAAMpD,MAAQ,CACVi4K,YAAY,GAEhB70K,EAAMi1H,cAAgB,IAAIruG,GAAiB5mB,EAAO,CAC9CwnH,YAAa,gBACbG,YAAa,kBAEjB5nH,EAAQ60K,eAAetI,SAAS,CAC5Bl8K,KAAM,MACNm8K,QAASvsK,EAAMi1H,gBAEZj1H,CACX,CA2CA,OA3DA0H,GAAU8gF,EAAkBt/E,GAiB5Bs/E,EAAiBvnF,UAAU5K,OAAS,WAChC,IAAImT,EACAoF,EAAK3R,KAAKL,MAAOo5K,EAAepnK,EAAGonK,aAAczkL,EAAYqd,EAAGrd,UAAW6jL,EAAevsK,GAAO+F,EAAI,CAAC,eAAgB,cACtHymK,EAAiBp4K,KAAKL,MAAMi4K,WAAa,WAAc,OAAOmB,CAAc,EAAItmJ,SAASzuB,UACzFw0K,EAA0B5vK,KAAY2D,EAAK,CAAC,GA3B1B,8BA4BY,EAC9BA,EA5BgB,6BA4BcjY,EAC9BiY,IACJ,OAAQjK,EAAAA,cAAoBg1K,GAAc/rK,GAAS,CAAC,EAAG4sK,EAAc,CAAEJ,aAAcK,EAAgB9jL,UAAWkkL,IACpH,EACAjtF,EAAiBvnF,UAAUM,qBAAuB,WAC9C,IAAIiI,EACoB,QAAvBA,EAAKvM,KAAK8C,eAA4B,IAAPyJ,GAAyBA,EAAGorK,eAAetI,SAAS,CAChFl8K,KAAM,SACNm8K,QAAStvK,KAAKg4H,eAEtB,EACAzsC,EAAiBvnF,UAAUy0K,cAAgB,SAAUzlL,GACjD,IAAI0yB,EAAS1yB,EAAE0yB,OAAQjvB,EAAQzD,EAAEyD,MAAOnC,EAAYtB,EAAEsB,UAAWk3F,EAAYx4F,EAAEw4F,UAAW1S,EAAW9lF,EAAE8lF,SAAUsC,EAAYpoF,EAAEooF,UAAWj+E,EAAQnK,EAAEmK,MAChJoP,EAAKvM,KAAKhJ,MAAO2Z,EAAOpE,EAAGoE,KAAMrW,EAAQiS,EAAGjS,MAC3CkxF,GAGD1S,IAAanoE,GAAQyqE,IAAc9gF,GACnC0F,KAAKC,SAAS,CACV23K,YAAY,EACZ1D,WAAYxuJ,EAAOymB,MACnB0rI,YAAanyJ,EAAOwf,MACpB6zI,aAAc57K,EACd26K,YAAarhL,EACbnC,UAAWA,GAGvB,EACAi3F,EAAiBvnF,UAAU40K,cAAgB,WACvC54K,KAAKC,SAAS,CACV23K,YAAY,EACZE,YAAa,CAAC,EACdxjL,eAAWb,GAEnB,EACA83F,EAAiBrkF,YAAciwK,GACxB5rF,CACX,CA7DsC,CA6DpCjpF,EAAAA,WC5GEmI,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EAKIixK,GAAO,CAAC,eAAgB,YAAa,QAAS,SAClD,SAASC,GAAY3jK,GAEjB,IADA,IAAIjb,EAAM,CAAC,EACFoa,EAAM,EAAGA,EAAMukK,GAAK5+K,OAAQqa,IAEjC,IADA,IAAIykK,EAAWC,GAA4B7jK,EAAS0jK,GAAKvkK,IAChD2kK,EAAa,EAAGA,EAAaF,EAAS9+K,OAAQg/K,IAAc,CACjE,IAAIlzF,EAAUgzF,EAASE,GACvB/+K,EAAI6rF,EAAQv1E,KAAOu1E,EAAQ5rF,OAAS4rF,CACxC,CAEJ,OAAO7rF,CACX,CACA,SAAS8+K,GAA4B7jK,EAAS3E,GAC1C,IAAIvY,EAAS,GACb,GAAIkd,EAAQ3E,GAER,IADA,IAAI2kD,EAAO,GAAGntD,OAAOmN,EAAQ3E,IACpB8D,EAAM,EAAGA,EAAM6gD,EAAKl7D,OAAQqa,IAAO,CACxC,IAAIyxE,GAAW5wB,EAAK7gD,GAAK+2E,WAAa,CAAC,GAAGtF,QACtCA,GAAWA,EAAQnyF,SACnBqE,EAAOgX,KAAK,CACR9U,MAAOma,EACP9D,KAAMA,GAGlB,CAEJ,OAAOvY,CACX,CAIA,IAAIihL,GAA2C,SAAUptK,GAErD,SAASotK,IACL,IAAIt2K,EAAmB,OAAXkJ,GAAmBA,EAAO/D,MAAMlI,KAAM+H,YAAc/H,KAYhE,OAXA+C,EAAMD,QAAU,KAChBC,EAAMpD,MAAQ,CACVu5K,SAAU,CAAC,GAEfn2K,EAAMu2K,kBAAoB7mJ,SAASzuB,UACnCjB,EAAMw2K,WAAa,WACf,IAAIhtK,EACJxJ,EAAM9C,SAAS,CACXi5K,SAAUD,GAAqC,QAAxB1sK,EAAKxJ,EAAMD,eAA4B,IAAPyJ,OAAgB,EAASA,EAAGssK,aAAanI,aAExG,EACO3tK,CACX,CAcA,OA7BA0H,GAAU4uK,EAA2BptK,GAgBrCotK,EAA0Br1K,UAAUC,kBAAoB,WAEpDjE,KAAKs5K,kBAAoBt5K,KAAK8C,QAAQ+1K,aAAalI,UAAU3wK,KAAKu5K,WACtE,EACAF,EAA0Br1K,UAAU5K,OAAS,WACzC,IAAI8/K,EAAWl5K,KAAKL,MAAMu5K,SACtBM,EAAc3uK,OAAO4E,KAAKypK,GAAU7+K,KAAI,SAAUgU,GAAO,OAAQ/L,EAAAA,cAAoBipF,GAAkBhgF,GAAS,CAAC,EAAG2tK,EAAS7qK,GAAM,CAAEA,IAAKA,IAAU,IACxJ,OAAO/L,EAAAA,cAAoBw2K,GAAW,KAAMU,EAChD,EACAH,EAA0Br1K,UAAUM,qBAAuB,WACvDtE,KAAKs5K,mBACT,EACAD,EAA0BnyK,YAAciwK,GACjCkC,CACX,CA/B+C,CA+B7C/2K,EAAAA,WCzFSoO,GAAkB,CACzBC,KAAM,+BACNC,YAAa,aACbC,aAAc,CAAC,eAAgB,mBAC/BC,YAAa,WACbC,QAAS,GACTC,iBAAkB,yJCTlBvG,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCQ,GAAkC,SAAUH,EAAGzY,GAC/C,IAAI0F,EAAI,CAAC,EACT,IAAK,IAAIsS,KAAKS,EAAOZ,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,IAAMhY,EAAEqW,QAAQ2B,GAAK,IAC9EtS,EAAEsS,GAAKS,EAAET,IACb,GAAS,MAALS,GAAqD,oBAAjCZ,OAAOgB,sBACtB,KAAIH,EAAI,EAAb,IAAgBV,EAAIH,OAAOgB,sBAAsBJ,GAAIC,EAAIV,EAAE5Q,OAAQsR,IAC3D1Y,EAAEqW,QAAQ2B,EAAEU,IAAM,GAAKb,OAAO7G,UAAU8H,qBAAqB9I,KAAKyI,EAAGT,EAAEU,MACvEhT,EAAEsS,EAAEU,IAAMD,EAAET,EAAEU,IAF4B,CAItD,OAAOhT,CACX,EAuBI+gL,GAA2B,SAAUxtK,GAErC,SAASwtK,EAAUziL,GACf,IAAI+L,EAAQkJ,EAAOjJ,KAAKhD,KAAMhJ,IAAUgJ,KAwGxC,OApGA+C,EAAM4tH,cAAgB,KAItB5tH,EAAM0rG,QAAU,KAChB1rG,EAAMumG,SAAW,KACjBvmG,EAAM81K,aAAe,CAAC,EACtB91K,EAAM22K,oBAAsBjnJ,SAASzuB,UACrCjB,EAAM42K,WAAa,CAAC,EACpB52K,EAAM62K,kBAAoBnnJ,SAASzuB,UACnCjB,EAAM40K,eAAiB,CAAC,EACxB50K,EAAM82K,qBAAsB,EAK5B92K,EAAM+2K,SAAW,SAAU9mL,GACK,OAAxB+P,EAAM4tH,gBACN5tH,EAAM0rG,QAAUz7G,EAAE+wD,OAAO0qD,QACzB1rG,EAAMgnB,QAAQ,SAAU/2B,GAEhC,EAIA+P,EAAMg3K,kBAAoB,SAAU/mL,GAChC,GAA4B,OAAxB+P,EAAM4tH,cAIN,GAAI5tH,EAAM/L,MAAM+iL,kBACZh3K,EAAMgnB,QAAQ,kBAAmB/2B,OAEhC,CACD,IAAI+yD,EAAShjD,EAAM81K,aAAanI,WAAW3qH,OAC3C,IAAKA,EACD,OAEJ,IAAIupH,EAAU,CAAC,EACXp5E,EAAcljG,EAAEkjG,YAAa+f,EAAajjH,EAAEijH,WAC5C+jE,EAAgBj0H,EAAOmwC,GAC3B,QAAmBziG,IAAfwiH,EACAq5D,EAAUzkK,OAAOW,OAAO,CAAC,EAAGwuK,EAAe,CAAEjmL,QAASi+G,GAAOgoE,EAAcjmL,eAE1E,CACD,IAAIkmL,EAAKD,EAAc9rF,gBAAkB8rF,EAAc9rF,iBAAmB,GAC1E+rF,EAAGhkE,GAAcjE,GAAOioE,EAAGhkE,IAC3Bq5D,EAAUzkK,OAAOW,OAAO,CAAC,EAAGwuK,EAChC,CACAj3K,EAAM81K,aAAaxJ,SAAS,CACxB6B,sBAAuB,UAAU/oK,OAAO+tF,GACxCo5E,QAASA,IAEbvsK,EAAM82K,qBAAsB,CAChC,CAER,EAKA92K,EAAMm3K,eAAiB,WACS,OAAxBn3K,EAAM4tH,eACN5tH,EAAM4tH,cAAcrvB,QAE5B,EAIAv+F,EAAMw0K,kBAAoB,SAAUvkL,GAChC,IAAIm3K,EAAWyE,GAAW7rK,EAAO/P,GACR+P,EAAMo3K,gBAAgB,eAAgBhQ,GAE3Dn3K,EAAE88D,iBAE2B,OAAxB/sD,EAAM4tH,eACX5tH,EAAM4tH,cAAcgC,cAE5B,EAIA5vH,EAAMq3K,kBAAoB,SAAUpnL,GAChC,IAAIgf,EAAiBhf,EAAEgf,eAIvB,OAHIjP,EAAM4tH,gBAAkBq5C,GAAUh4J,EAAewlK,cAAez0K,EAAMvP,UACtEuP,EAAM4tH,cAAcgC,gBAEjB,CACX,EACAzhH,GAAgBR,IAChB3N,EAAM81K,aAAewB,GAAYrJ,IACjCjuK,EAAM40K,eAAiB0C,GAAY5I,IACnC1uK,EAAM20K,iBAAmB,IAAI/tJ,GAAiB5mB,EAAO,CAAE00K,aAAc,sBACrE10K,EAAM/D,aAAe,CACjB65K,aAAc91K,EAAM81K,aACpBlB,eAAgB50K,EAAM40K,eACtBD,iBAAkB30K,EAAM20K,kBAE5B30K,EAAM42K,WAAaU,GAAY9I,IAC/BxuK,EAAMi1H,cAAgB,IAAIruG,GAAiB5mB,EAAO,CAAE3J,OAAQ,WAAY40K,gBAAiB,sBAClFjrK,CACX,CAuOA,OAlVA0H,GAAUgvK,EAAWxtK,GA4GrBpB,OAAOsB,eAAestK,EAAUz1K,UAAW,UAAW,CAIlDoI,IAAK,WACD,OAAOpM,KAAKspG,QAChB,EACAj9F,YAAY,EACZC,cAAc,IAKlBmtK,EAAUz1K,UAAUC,kBAAoB,WACpC,IAAIsI,EACA+tK,GAAgC,QAAxB/tK,EAAKvM,KAAKspG,gBAA6B,IAAP/8F,OAAgB,EAASA,EAAG1C,gBAAkB/Q,UpB3ClF,SAAUq2K,EAAOzlK,EAAM4wK,GACnC,IAAIz2H,EAAU,IAAIqrH,GAAaC,GAC/B,GAAmB,qBAARmL,EAAX,CAIA,IAAIp4J,EAAY2hC,EAAQrwD,QAAU8mL,EAAIp7J,cAAc,OACpDgD,EAAUzrB,MAAMC,QAAU,OAC1BwrB,EAAUygF,UAAY36E,GACtBsyJ,EAAI98K,KAAKgiB,YAAY0C,GACrB,IACIitJ,EAAME,SAAS,CAAEl8K,KAAM,OAAQm8K,QAASiL,OACxC12H,EAAQ0rH,YACR1rH,EAAQ8rH,WACR9rH,EAAQmsH,iBAMZ,CALC,QAEGsK,EAAI98K,KAAKkiB,YAAYmkC,EAAQrwD,gBACtBqwD,EAAQrwD,QACfkW,GACJ,CAfA,MAFIylK,EAAME,SAAS,CAAEl8K,KAAM,OAAQm8K,QAASiL,MAkBhD,CoBuBQC,CAAUx6K,KAAK25K,WAAY35K,KAAKy6K,qBAAqB16K,KAAKC,MAAOs6K,GACjEt6K,KAAK05K,oBAAsB15K,KAAK64K,aAAalI,UAAU3wK,KAAKytF,QAAQ1tF,KAAKC,OACzEA,KAAK45K,kBAAoB55K,KAAK25K,WAAWhJ,UAAU3wK,KAAKytF,QAAQ1tF,KAAKC,OACrEvD,OAAO0B,iBAAiB,SAAU6B,KAAKk6K,eAC3C,EAIAT,EAAUz1K,UAAUM,qBAAuB,WACvCtE,KAAK05K,sBACL15K,KAAK45K,oBACsB,OAAvB55K,KAAK2wH,gBACL3wH,KAAK2wH,cAAcrtE,UACnBtjD,KAAK2wH,cAAgB,MAEzBl0H,OAAO2B,oBAAoB,SAAU4B,KAAKk6K,eAC9C,EAIAT,EAAUz1K,UAAUG,mBAAqB,SAAUC,GAC/C,IAAImI,EAAKvM,KAAKhJ,MAAO8a,EAAMvF,EAAGuF,IAA6B4oK,GAAbnuK,EAAG3Y,SAAwBgY,GAAOW,EAAI,CAAC,MAAO,cAC5F,GAA2B,OAAvBvM,KAAK2wH,cAAwB,CAC7B,IAAIgqD,GAAqBC,EAAAA,EAAAA,IAAmB56K,MACxCgkD,EAAehkD,KAAK2wH,cAAc3sE,aAClC62H,EAAgBF,EAAmB/pH,SAAW5M,EAAawM,aAAaI,OACxEkqH,EAAejwK,OAAO8T,QAAQva,GAC7B2+B,QAAO,SAAUg4I,GAAY,MAAwB,QAAhBA,EAAS,IAAgC,aAAhBA,EAAS,EAAoB,IAC3FlkF,MAAK,SAAUkkF,GAChB,IAAI1sK,EAAM0sK,EAAS,GAAI59K,EAAQ49K,EAAS,GACxC,QAASL,EAAYzvK,eAAeoD,IAAQqsK,EAAYrsK,KAASlR,EACrE,IACI09K,IACA76K,KAAK2wH,cAAc3sE,aAAawM,aAAemqH,EAC/C36K,KAAK2wH,cAAc3sE,aAAa7iC,OAAOqvC,aAAemqH,EACjDG,GACD96K,KAAK2wH,cAAc4D,uBAGvBumD,GACA96K,KAAKytF,UAELrpF,EAAU0N,MAAQA,GAClB9R,KAAK2wH,cAAc0D,aAAar0H,KAAKg7K,aAAalpK,GAE1D,CACJ,EAIA2nK,EAAUz1K,UAAU5K,OAAS,WACzB,IAAI2J,EAAQ/C,KACRuM,EAAKvM,KAAKhJ,MAAO2a,EAAKpF,EAAG9V,MAAOA,OAAe,IAAPkb,EAAgB,CAAC,EAAIA,EAAIrd,EAAYiY,EAAGjY,UAAWuE,EAAU0T,EAAG1T,QAASjF,EAAW2Y,EAAG3Y,SAC/HqnL,EAAcpwK,OAAOW,OAAO,CAAC,EAAG/U,EAAO,CAAEomD,SAAU,aACnD/6C,EAAUQ,EAAAA,cAAoBzJ,EAAS,CACvCvE,UAAWA,EACXmC,MAAOwkL,EACP5sK,IAAK,gBACL/L,EAAAA,cAAoB,MAAO,CAAEm1K,aAAcz3K,KAAKu3K,kBAAmBhlL,IAAK,SAAUu+J,GAAM,OAAO/tJ,EAAMumG,SAAWwnD,CAAI,EAAGx8J,UAAW,mBAAqBV,IAC3J,OAAQ0O,EAAAA,cAAoB60K,GAAaj6K,SAAU,CAAEC,MAAO6C,KAAKhB,cAC7DsD,EAAAA,cAAoB21K,GAAe,CAAE5pK,IAAK,kBAC1C/L,EAAAA,cAAoB+2K,GAA2B,CAAEhrK,IAAK,sBACtDvM,EACR,EAIA23K,EAAUz1K,UAAUg3K,aAAe,SAAUlpK,GACzC,IAAI/O,EAAQ/C,KAGZ,MAAqB,cADGvM,IAARqe,EAAoBA,EADWi4J,IAAattK,OAAOuN,iBAAiBjH,EAAMvP,SAASu2G,WAC/B,MAExE,EAIA0vE,EAAUz1K,UAAUk3K,gBAAkB,WAClC,IAAI3uK,EAAKvM,KAAKhJ,MAAO4zH,EAAWr+G,EAAGq+G,SAAUx5D,EAAW7kD,EAAG6kD,SAAU06D,EAAWv/G,EAAGu/G,SAAUl8B,EAAerjF,EAAGqjF,aAAcE,EAAQvjF,EAAGujF,MAAOjQ,EAActzE,EAAGszE,YAAa0+B,EAAehyG,EAAGgyG,aAAcnB,EAAiB7wG,EAAG6wG,eAAgByP,EAAetgH,EAAGsgH,aAAcsuD,EAA0B5uK,EAAG4uK,wBAC1Sv2D,EAAe,CAAC,EAiCpB,YA/BiBnxH,IAAbm3H,IACAhG,EAAagG,SAAWA,QAEXn3H,IAAb29D,IACAwzD,EAAaxzD,SAAWA,QAEX39D,IAAbq4H,IACAlH,EAAakH,SAAWA,QAEPr4H,IAAjBm8F,IACAg1B,EAAah1B,aAAeA,QAElBn8F,IAAVq8F,IACA80B,EAAa90B,MAAQA,QAELr8F,IAAhBosF,IACA+kC,EAAa/kC,YAAcA,QAEVpsF,IAAjB8qH,IACAqG,EAAarG,aAAeA,QAET9qH,IAAnB2pH,IACAwH,EAAaxH,eAAiBA,QAEb3pH,IAAjBo5H,IACAjI,EAAaiI,aAAeA,GAEhCjI,EAAe/5G,OAAOW,OAAOo5G,EAAc5kH,KAAK64K,aAAanI,YACzDyK,IACAv2D,EAAeu2D,EAAwBv2D,IAEpCA,CACX,EAIA60D,EAAUz1K,UAAUypF,QAAU,WAC1B,GAA2B,OAAvBztF,KAAK2wH,cAAwB,CAC7B,IAAIlI,EAAezoH,KAAK25K,WAAWjJ,WAC/B9rD,EAAe5kH,KAAKk7K,kBACpBr7F,EAAc+kC,EAAa/kC,YAC3B7/E,KAAK65K,sBACLj1D,EAAa/kC,aAAc,GAE3B7/E,KAAKhJ,MAAMokL,UACXp7K,KAAKhJ,MAAMokL,UAAUp4K,UAAKvP,EAAWmxH,EAAc6D,EAAczoH,KAAK2wH,eAGtE3wH,KAAK2wH,cAAcyD,WAAWxP,EAAc6D,GAE5CzoH,KAAK65K,sBACLj1D,EAAa/kC,YAAcA,EAC3B7/E,KAAK65K,qBAAsB,EAEnC,CACJ,EAIAJ,EAAUz1K,UAAUy2K,qBAAuB,WACvC,IAAIluK,EAAKvM,KAAKhJ,MAAO8a,EAAMvF,EAAGuF,IAAKupK,EAAmB9uK,EAAG8uK,iBACrDz2D,EAAe5kH,KAAKk7K,kBACxBl7K,KAAK2wH,cAAgB,IAAI0qD,EAAiBr7K,KAAKxM,QAASoxH,EAAc5kH,KAAK25K,WAAWjJ,WAAY,CAC9F1/G,IAAKhxD,KAAKg7K,aAAalpK,GACvBy+C,aAAaqqH,EAAAA,EAAAA,IAAmB56K,MAChC4pB,SAAU5pB,KAAKg4H,cACfj0E,OAAQ/jD,MAEhB,EAKAy5K,EAAUz1K,UAAU+lB,QAAU,SAAUpZ,EAAM3d,GAM1C,IALA,IACIsoL,EtBzRZ,SAAgB3qK,EAAM3I,EAAM+7C,GACxB,GAAI4pH,GAAUh9J,GACV,OAAO,IAAIg9J,GAAUh9J,GAAM3I,EAAM+7C,EAEzC,CsBqR0Bw3H,CAAY5qK,EAAM3d,EADvBgN,KAAKhJ,MAAMwkL,aAEpBl1K,EAAU,KAAOqK,EAAK/T,OAAO,GAAGoY,cAAgBrE,EAAK+J,MAAM,GAC3DsrB,EAAYhmC,KAAK23K,eAAejH,WAChC1mJ,GAAqB,EAChBvV,EAAM,EAAGA,EAAMuxB,EAAU5rC,OAAQqa,IAClCuxB,EAAUvxB,GAAKsV,QAAQpZ,EAAM3d,KAC7Bg3B,GAAqB,GAI7B,OAA2B,IAAvBA,GACGsxJ,GACAt7K,KAAKhJ,MAAMiU,eAAe3E,IAC7BtG,KAAKhJ,MAAMsP,GAAStD,UAAKvP,EAAW6nL,GAC7BA,EAAYtxJ,oBAAsBsxJ,EAAYtxJ,sBAElDA,CACX,EAKAyvJ,EAAUz1K,UAAUomB,iBAAmB,SAAUtB,GAC7C,IAAK,IAAIrU,EAAM,EAAGA,EAAMqU,EAAM1uB,OAAQqa,IAAO,CACzC,IAAIg3J,EAAS3iJ,EAAMrU,GACfnO,EAAU,KAAOmlK,EAAO7uK,OAAO,GAAGoY,cAAgBy2J,EAAO/wJ,MAAM,GACnE,GAAI1a,KAAKhJ,MAAMiU,eAAe3E,GAC1B,OAAO,CAEf,CACA,OAAO,CACX,EAKAmzK,EAAUz1K,UAAUm2K,gBAAkB,SAAUxpK,EAAM3d,GAGlD,IAFA,IAAIgzC,EAAYhmC,KAAK23K,eAAejH,WAChC1mJ,GAAqB,EAChBvV,EAAM,EAAGA,EAAMuxB,EAAU5rC,OAAQqa,IAClCuxB,EAAUvxB,GAAKsV,QAAQpZ,EAAM3d,KAC7Bg3B,GAAqB,GAG7B,OAAOA,CACX,EAIAyvJ,EAAUtyK,UAAY,CAClB2K,IAAK9D,EAAAA,OACL48G,SAAU58G,EAAAA,MAAgB,CAAC,MAAO,YAKtCyrK,EAAUryK,aAAe,CACrBwjH,SAAU,OAEP6uD,CACX,CApV+B,CAoV7Bn3K,EAAAA,YAEFm5K,EAAAA,EAAAA,IAAgBhC,IAChBiC,GAAAA,SAA+BpqH,ICvY/B,IAAI7mD,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAqBzCuwK,GAA6B,SAAU1vK,GAEvC,SAAS0vK,EAAY3kL,EAAO8L,GACxB,IAAIC,EAAQkJ,EAAOjJ,KAAKhD,KAAMhJ,EAAO8L,IAAY9C,KAYjD,OAXA+C,EAAMD,QAAU,KAChBC,EAAMpD,MAAQ,CACVi8K,kBAAmB,MAEvB74K,EAAMi1H,cAAgB,IAAIruG,GAAiB5mB,EAAO,CAC9C3J,OAAQ,aAEZ0J,EAAQ60K,eAAetI,SAAS,CAC5Bl8K,KAAM,MACNm8K,QAASvsK,EAAMi1H,gBAEZj1H,CACX,CAiCA,OAhDA0H,GAAUkxK,EAAa1vK,GAgBvB0vK,EAAY33K,UAAU5K,OAAS,WAC3B,IAAIA,EAAS4G,KAAKhJ,MAAMoC,OACpBwiL,EAAoB57K,KAAKL,MAAMi8K,kBAC/BC,EAAW,KAIf,OAHIziL,GAAUwiL,IACVC,EAAYv5K,EAAAA,cAAoB,MAAO,CAAEhO,UAAW,uBAAwBmC,MAAOmlL,GAAqBxiL,MAErGyiL,CACX,EACAF,EAAY33K,UAAU81K,SAAW,SAAUx9K,GACvC,IAAIiQ,EACAw5C,EAAiC,QAAvBx5C,EAAKvM,KAAK8C,eAA4B,IAAPyJ,OAAgB,EAASA,EAAGssK,aAAanI,WAAW3qH,OAC7Fg4C,EAAc5oG,MAAMC,QAAQ2wD,GAAUA,EAAO,GAAK,KAClD6mC,EAAStwF,EAAMynD,OAAO0qB,UAAUme,OACpC,GAAKmR,GAAoC,UAArBA,EAAY5qG,MAAgD,IAA5By5F,EAAO,GAAGrhD,OAAOnxC,OAArE,CAGA,IAAI6yC,EAAS2/C,EAAO,GAAGrhD,OAAO,GAAG0B,OAC7BnH,EAASmH,EAAOV,YAChB5kB,EAAMslB,EAAO9H,OAAOnf,EAAI8f,EACxBhe,EAAOmlB,EAAO9H,OAAOpf,EAAI+f,EACzBlvC,EAAgB,EAATkvC,EACX9lC,KAAKC,SAAS,CACV27K,kBAAmB,CACfnnL,OAAQmC,EACRkxB,KAAMA,EACNH,IAAKA,EACLnzB,MAAOoC,IAXf,CAcJ,EACA+kL,EAAYz0K,YAAciwK,GACnBwE,CACX,CAlDiC,CAkD/Br5K,EAAAA,WCvEEmI,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EACI6D,GAAkC,SAAUH,EAAGzY,GAC/C,IAAI0F,EAAI,CAAC,EACT,IAAK,IAAIsS,KAAKS,EAAOZ,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,IAAMhY,EAAEqW,QAAQ2B,GAAK,IAC9EtS,EAAEsS,GAAKS,EAAET,IACb,GAAS,MAALS,GAAqD,oBAAjCZ,OAAOgB,sBACtB,KAAIH,EAAI,EAAb,IAAgBV,EAAIH,OAAOgB,sBAAsBJ,GAAIC,EAAIV,EAAE5Q,OAAQsR,IAC3D1Y,EAAEqW,QAAQ2B,EAAEU,IAAM,GAAKb,OAAO7G,UAAU8H,qBAAqB9I,KAAKyI,EAAGT,EAAEU,MACvEhT,EAAEsS,EAAEU,IAAMD,EAAET,EAAEU,IAF4B,CAItD,OAAOhT,CACX,EA6DI8vH,GAAuB,SAAUv8G,GAEjC,SAASu8G,IACL,IAAIzlH,EAAmB,OAAXkJ,GAAmBA,EAAO/D,MAAMlI,KAAM+H,YAAc/H,KAKhE,OAJA+C,EAAM+4K,WAAa,KACnB/4K,EAAMy4K,UAAY,WACd,OAAOz4K,CACX,EACOA,CACX,CAkDA,OA1DA0H,GAAU+9G,EAAOv8G,GASjBpB,OAAOsB,eAAeq8G,EAAMxkH,UAAW,gBAAiB,CAIpDoI,IAAK,WACD,OAAwB,OAApBpM,KAAK87K,WACE97K,KAAK87K,WAAWnrD,cAEpB,IACX,EACAtkH,YAAY,EACZC,cAAc,IAElBzB,OAAOsB,eAAeq8G,EAAMxkH,UAAW,UAAW,CAI9CoI,IAAK,WACD,OAAwB,OAApBpM,KAAK87K,WACE97K,KAAK87K,WAAWrtE,QAEpB,IACX,EACApiG,YAAY,EACZC,cAAc,IAElBzB,OAAOsB,eAAeq8G,EAAMxkH,UAAW,UAAW,CAI9CoI,IAAK,WACD,OAAwB,OAApBpM,KAAK87K,WACE97K,KAAK87K,WAAWtoL,QAEpB,IACX,EACA6Y,YAAY,EACZC,cAAc,IAKlBk8G,EAAMxkH,UAAU5K,OAAS,WACrB,IAAI2J,EAAQ/C,KACRuM,EAAKvM,KAAKhJ,MAAO+kL,EAAoBxvK,EAAGwvK,kBAAmBnoL,EAAW2Y,EAAG3Y,SAAUU,EAAYiY,EAAGjY,UAAW0nL,EAAiBpwK,GAAOW,EAAI,CAAC,oBAAqB,WAAY,cAC/K,OAAQjK,EAAAA,cAAoBm3K,GAAWluK,GAAS,CAAC,EAAGywK,EAAgB,CAAEzpL,IAAK,SAAU0pL,GAAa,OAAOl5K,EAAM+4K,WAAaG,CAAW,EAAGZ,iBAAkBa,GAAYV,UAAWx7K,KAAKw7K,UAAW3iL,QAAS,MAAOvE,UAAWsU,GAAW,mBAAoBtU,KACzPV,EACA0O,EAAAA,cAAoBq5K,GAAa,CAAEviL,OAAQ2iL,IACnD,EACOvzD,CACX,CA5D2B,CA4DzBlmH,EAAAA,WC7JEmI,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EACI6D,GAAkC,SAAUH,EAAGzY,GAC/C,IAAI0F,EAAI,CAAC,EACT,IAAK,IAAIsS,KAAKS,EAAOZ,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,IAAMhY,EAAEqW,QAAQ2B,GAAK,IAC9EtS,EAAEsS,GAAKS,EAAET,IACb,GAAS,MAALS,GAAqD,oBAAjCZ,OAAOgB,sBACtB,KAAIH,EAAI,EAAb,IAAgBV,EAAIH,OAAOgB,sBAAsBJ,GAAIC,EAAIV,EAAE5Q,OAAQsR,IAC3D1Y,EAAEqW,QAAQ2B,EAAEU,IAAM,GAAKb,OAAO7G,UAAU8H,qBAAqB9I,KAAKyI,EAAGT,EAAEU,MACvEhT,EAAEsS,EAAEU,IAAMD,EAAET,EAAEU,IAF4B,CAItD,OAAOhT,CACX,EAQIyjL,GAAwC,SAAUlwK,GAElD,SAASkwK,EAAuBnlL,EAAO8L,GACnC,IAAIC,EAAQkJ,EAAOjJ,KAAKhD,KAAMhJ,EAAO8L,IAAY9C,KAGjD,OAFA+C,EAAM81K,aAAe/1K,EAAQ+1K,aAC7B91K,EAAMq5K,WAAa/B,GAAYrJ,IACxBjuK,CACX,CAgCA,OAtCA0H,GAAU0xK,EAAwBlwK,GAOlCkwK,EAAuBn4K,UAAU5K,OAAS,WACtC,IAAI2J,EAAQ/C,KACRpM,EAAWoM,KAAKhJ,MAAMpD,SAC1B,YAAoBH,IAAbG,EAAyB0O,EAAAA,SAAAA,IAAmB1O,GAAU,SAAUwa,GACnE,OAAI9L,EAAAA,eAAqB8L,GACdrL,EAAMuhD,eAAel2C,GAEzBA,CACX,IAAK,IACT,EACA+tK,EAAuBn4K,UAAUC,kBAAoB,WACjDjE,KAAKqvK,UACT,EACA8M,EAAuBn4K,UAAUG,mBAAqB,WAClDnE,KAAKqvK,UACT,EACA8M,EAAuBn4K,UAAUqrK,SAAW,WACxC,IAAI9iK,EAAKvM,KAAKhJ,MAAOqlL,EAAY9vK,EAAG8vK,UAAWC,EAAyB/vK,EAAG+vK,uBAAwBC,EAAehwK,EAAGgwK,aAAsCjnK,GAAb/I,EAAG3Y,SAAoBgY,GAAOW,EAAI,CAAC,YAAa,yBAA0B,eAAgB,eAC5NgwK,GAAgBv8K,KAAK64K,cAC3BxJ,SAAS,CACXgC,SAAUgL,EACVnL,sBAAuBoL,EACvBhN,QAASzkK,OAAOW,OAAO,CAAC,EAAG8J,EAAStV,KAAKo8K,WAAW1L,aAE5D,EACAyL,EAAuBn4K,UAAUsgD,eAAiB,SAAUl2C,GACxD,IAAIxa,EAAWwa,EAAMpX,MAAMpD,SACvB4oL,EAAyBjxK,GAASA,GAAS,CAAC,EAAG6C,EAAMpX,OAAQ,CAAEulL,aAAcv8K,KAAKo8K,aACtF,OAAO95K,EAAAA,aAAmB8L,EAAOouK,EAAwB5oL,EAC7D,EACAuoL,EAAuBj1K,YAAciwK,GAC9BgF,CACX,CAxC4C,CAwC1C75K,EAAAA,WCpFEiJ,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EAGI00K,GAAe,SAAUzlL,GACzB,OAAQsL,EAAAA,cAAoB65K,GAAwB5wK,GAAS,CAAC,EAAGvU,EAAO,CAAEqlL,UAAW,YACzF,EACAI,GAAar1K,aAAe,CACxBrT,SAAS,GCjBb,IAAI0W,GAAyC,WACzC,IAAIC,EAAgB,SAAUC,EAAGC,GAI7B,OAHAF,EAAgBG,OAAOC,gBAClB,CAAEC,UAAW,cAAgB5V,OAAS,SAAUwV,EAAGC,GAAKD,EAAEI,UAAYH,CAAG,GAC1E,SAAUD,EAAGC,GAAK,IAAK,IAAII,KAAKJ,EAAOC,OAAO7G,UAAUiH,eAAejI,KAAK4H,EAAGI,KAAIL,EAAEK,GAAKJ,EAAEI,GAAI,EAC7FN,EAAcC,EAAGC,EAC5B,EACA,OAAO,SAAUD,EAAGC,GAChB,GAAiB,oBAANA,GAA0B,OAANA,EAC3B,MAAM,IAAIM,UAAU,uBAAyBC,OAAOP,GAAK,iCAE7D,SAASQ,IAAOpL,KAAKqL,YAAcV,CAAG,CADtCD,EAAcC,EAAGC,GAEjBD,EAAE3G,UAAkB,OAAN4G,EAAaC,OAAOS,OAAOV,IAAMQ,EAAGpH,UAAY4G,EAAE5G,UAAW,IAAIoH,EACnF,CACJ,CAd6C,GAezCG,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EAMI20K,GAAkD,SAAUzwK,GAE5D,SAASywK,EAAiC1lL,EAAO8L,GAC7C,IAAIC,EAAQkJ,EAAOjJ,KAAKhD,KAAMhJ,EAAO8L,IAAY9C,KAEjD,OADA+C,EAAM81K,aAAe/1K,EAAQ+1K,aACtB91K,CACX,CAuBA,OA5BA0H,GAAUiyK,EAAkCzwK,GAM5CywK,EAAiC14K,UAAUsgD,eAAiB,SAAUl2C,EAAO9T,GACzE,IAAI1G,EAAWwa,EAAMpX,MAAMpD,SACvB2Y,EAAKvM,KAAKhJ,MAAOqlL,EAAY9vK,EAAG8vK,UAAWE,EAAehwK,EAAGgwK,aAC7DI,EAAsBpxK,GAASA,GAAS,CAAC,EAAG6C,EAAMpX,OAAQ,CAAEslL,uBAAwB,GAAGn0K,OAAOk0K,EAAW,KAAKl0K,OAAO7N,GAAQiiL,aAAcA,IAC/I,OAAOj6K,EAAAA,aAAmB8L,EAAOuuK,EAAqB/oL,EAC1D,EACA8oL,EAAiC14K,UAAU5K,OAAS,WAChD,IAAI2J,EAAQ/C,KACRuM,EAAKvM,KAAKhJ,MAAOqlL,EAAY9vK,EAAG8vK,UAAWE,EAAehwK,EAAGgwK,aAAc3oL,EAAW2Y,EAAG3Y,SAM7F,OALY2oL,GAAgBv8K,KAAK64K,cAC3BxJ,SAAS,CACXgC,SAAUgL,EACV/M,QAAS,KAENhtK,EAAAA,SAAAA,IAAmB1O,GAAU,SAAUwa,EAAO9T,GACjD,OAAIgI,EAAAA,eAAqB8L,GACdrL,EAAMuhD,eAAel2C,EAAO9T,GAEhC8T,CACX,GACJ,EACAsuK,EAAiCx1K,YAAciwK,GACxCuF,CACX,CA9BsD,CA8BpDp6K,EAAAA,WC7DEiJ,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EAGI60K,GAAkB,SAAU5lL,GAC5B,OAAQsL,EAAAA,cAAoB65K,GAAwB5wK,GAAS,CAAC,EAAGvU,GACrE,EACA4lL,GAAgB1pL,YAAc,kBChB9B,IAAIqY,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EAKI80K,GAAc,SAAU7lL,GACxB,OAAQsL,EAAAA,cAAoBo6K,GAAkCnxK,GAAS,CAAC,EAAGvU,EAAO,CAAEqlL,UAAW,WACnG,EACAQ,GAAY11K,UAAY,CACpBvT,SAAU,SAAUoD,EAAOq8K,EAAUyJ,GACjC,OvDPR,SAA0B9lL,EAAOq8K,EAAUyJ,EAAeC,GACtD,IAAItuK,EAAOzX,EAAMq8K,GACjB,GAAI5kK,GACItZ,MAAMC,QAAQqZ,GACd,IAAK,IAAIsjK,EAAK,EAAGiL,EAASvuK,EAAMsjK,EAAKiL,EAAO5iL,OAAQ23K,IAAM,CACtD,IAAI50K,EAAQ6/K,EAAOjL,GACnB,IAAK50K,EAAMhK,MAAQgK,EAAMhK,OAAS4pL,EAC9B,OAAO,IAAI38K,MAAM,GAAG+H,OAAO20K,EAAe,sCAAsC30K,OAAO40K,EAAU7pL,YAAa,KAEtH,CAGR,OAAO,IACX,CuDNe+pL,CAAiBjmL,EAAOq8K,EAAUyJ,EAAeF,GAC5D,GCrBJ,IAAIrxK,GAAsC,WAStC,OARAA,GAAWV,OAAOW,QAAU,SAAS9S,GACjC,IAAK,IAAI+S,EAAGC,EAAI,EAAGC,EAAI5D,UAAU3N,OAAQsR,EAAIC,EAAGD,IAE5C,IAAK,IAAIV,KADTS,EAAI1D,UAAU2D,GACOb,OAAO7G,UAAUiH,eAAejI,KAAKyI,EAAGT,KACzDtS,EAAEsS,GAAKS,EAAET,IAEjB,OAAOtS,CACX,EACO6S,GAASrD,MAAMlI,KAAM+H,UAChC,EAGIm1K,GAAc,SAAUlmL,GACxB,OAAQsL,EAAAA,cAAoB65K,GAAwB5wK,GAAS,CAAC,EAAGvU,EAAO,CAAEqlL,UAAW,WACzF,EACAa,GAAY91K,aAAe,CACvBrT,SAAS,iECUN,SAASopL,GAAgB,GAW/B,IAVG5oL,EAAK,EAALA,MAAM,EAAD,EACLD,UAAAA,OAAS,MAAG,GAAE,EACd2iB,EAAI,EAAJA,KACA8lF,EAAa,EAAbA,cACAj/E,EAAK,EAALA,MACAi+J,EAAiB,EAAjBA,kBAAkB,EAAD,EACjBxsF,OAAAA,OAAM,OAAQ,EACd37F,EAAQ,EAARA,SACApB,EAAO,EAAPA,QAIM4qL,EAAgC,IADpBnmK,EAAK2H,QAAO,SAACy+J,EAAMpnJ,GAAI,OAAKonJ,EAAQpnJ,EAAKnY,EAA4B,GAAE,GAC/C,EAAC,QAAE0Q,MAAO,WAAY1Q,EAAQ,KAAS7G,EAejF,OACI,UAACpa,GAAA,GAAI,gBACDo3G,YAAY,aACZ3/G,UAAS,2BAAsB9B,EAAU,YAAc,GAAE,YAAI8B,IACzD9B,GAAW,CAAEA,QAAAA,IAAS,cAC1B,WAAC8qL,GAAA,EAAQ,WACJ/oL,IAAS,UAACgpL,GAAA,EAAS,UAAEhpL,KACtB,kBAAKD,UAAS,wBAAmBV,EAAW,aAAe,IAAK,WAC5D,iBAAKU,UAAU,eAAc,UACzB,WAAC,GAAK,CAACynL,kBAAmBA,EAAmBnxD,SAAS,MAAK,WAC3C,IAAXr7B,IAAmB,UAACktF,GAAY,CAACrjL,OAvBpC,SAAC0J,GAEnB,MAA6BA,EAA2BoiC,OAASpiC,EAAzDmjD,EAAQ,EAARA,SAAU9oD,EAAK,EAALA,MAEZqgL,EAAuB,KAAVrgL,EAAgB,EAAIA,EAEvC,OACI,4BACK8oD,EAAoB,KAAV9oD,EAAa,YAAQqgL,GAAU,UAAQjpL,EAAK,aAAKipL,KAGxE,KAawB,UAACX,GAAW,WACR,UAACD,GAAe,CAACzpL,KAAK,QAAQ4tH,SAAO,EACjC9pG,KAAMmmK,EACNrgF,cAAeA,EACfj/E,MAAOA,EACP2/J,WAAW,QAAQ7mL,KAAM,GAAIqrH,SAAU,QAE/C,UAACi7D,GAAW,CACRnpL,QAASw7F,EACT1yC,SAAS,SACT1Q,MAAM,SACN8nE,YAAY,WACZjiD,OAAQ,CACJx8B,KAAM,0CAIrB5hC,IACD,iBAAKU,UAAU,eAAc,SACxBV,YAOzB,CAEAupL,GAAiBjqL,YAAc,mBChFxB,IAAMwqL,GAAkF,SAAH,GAC3F,IAAD,IADkGC,EAAW,EAAXA,YAEtFjlL,GAAMF,EAAAA,EAAAA,GAAe,CAAC,8BAA+B,CAAEC,aAAa,IAApEC,EACF0D,GAAWC,EAAAA,EAAAA,KAEXuhL,EAAoBD,EAAY56I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE4qL,mBAAqB5qL,EAAE6qL,eAAiB,EAAE,IACxFC,EAAkBH,EAAY56I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE6qL,gBAAkB,IAAM7qL,EAAE6qL,gBAAkB,EAAE,IAC1FE,EAAcJ,EAAY56I,QAAO,SAAA/vC,GAAC,OAAKA,EAAE4qL,mBAAqB5qL,EAAE6qL,eAAiB,EAAE,IAEnFG,EAAmD,CACrD,CACIC,iBAAkBvlL,EAAE,uCACpBwlL,gBAAiBN,EAAkBxjL,OACnCo0B,MAAO,WAEX,CACIyvJ,iBAAkBvlL,EAAE,iCACpBwlL,gBAAiBH,EAAY3jL,OAC7Bo0B,MAAO,WAEX,CACIyvJ,iBAAkBvlL,EAAE,qCACpBwlL,gBAAiBJ,EAAgB1jL,OACjCo0B,MAAO,YAaf,OACI,WAAC2uJ,GAAgB,CACb5oL,MAAOmE,EAAE,4BACTpE,UAAU,cACV2iB,KAAM+mK,EACNjhF,cAAc,mBACdj/E,MAAM,kBACNi+J,kBAhBkB,WAAH,OACnB,mCACI,gBAAIznL,UAAU,mBAAkB,UAC3Bw6E,EAAAA,EAAAA,KAAIkvG,EAAa3jL,KAAI,SAAArH,GAAC,OAAIA,EAAEkrL,eAAe,QAEhD,oCACD,EAWC1rL,QAAS,kBAAM4J,EAAS,WAAW,EAAC,WACpC,eAAG9H,UAAU,WAAU,SACsF,QADtF,EACqE,QADrE,EAClB0pL,EAAajoJ,MAAK,SAAA/iC,GAAC,OAAIA,EAAEirL,mBAAqBvlL,EAAE,sCAAsC,WAAC,aAAvF,EAAyFwlL,uBAAe,QAAI,KAEjH,gBAAG5pL,UAAU,SAAQ,cAAGoE,EAAE,uCAAsC,SAG5E,ECpDO,SAASylL,GAAkB,GAMjC,IALG5pL,EAAK,EAALA,MAAM,EAAD,EACLD,UAAAA,OAAS,MAAG,GAAE,EACdV,EAAQ,EAARA,SACApB,EAAO,EAAPA,QAGA,OACI,UAACqK,GAAA,GAAI,gBACDo3G,YAAY,aACZ3/G,UAAS,4BAAuB9B,EAAU,YAAc,GAAE,YAAI8B,IAC1D9B,GAAW,CAAEA,QAAAA,IAAS,cAC1B,WAAC8qL,GAAA,EAAQ,WACJ/oL,IAAS,UAACgpL,GAAA,EAAS,UAAEhpL,KACtB,iBAAKD,UAAS,wBAAmBV,EAAW,aAAe,IAAK,SAC3DA,IACD,iBAAKU,UAAU,eAAc,SACxBV,WAOzB,CD6BA8pL,GAAyBxqL,YAAc,2BC3BvCirL,GAAkBjrL,YAAc,oBC3BzB,IAAMkrL,GAA2E,SAAH,GACpF,IAD0FC,EAAQ,EAARA,SAE/E3lL,GAAMF,EAAAA,EAAAA,GAAe,CAAC,8BAA+B,CAAEC,aAAa,IAApEC,EACF0D,GAAWC,EAAAA,EAAAA,KAEXiiL,EAA4BD,EAASt7I,QAAO,SAAA/vC,GAAC,OAAIA,EAAEurL,mBAAkD,sBAA7BvrL,EAAEwrL,sBAA8C,IACxHC,EAA4BJ,EAASt7I,QAAO,SAAA/vC,GAAC,OAAIA,EAAEurL,oBACpB,OAA7BvrL,EAAEwrL,wBAC2B,6BAA7BxrL,EAAEwrL,wBAC2B,4BAA7BxrL,EAAEwrL,uBACL,IAECE,EAA8BL,EAASt7I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE2rL,qBACvB,sBAA7B3rL,EAAEwrL,sBAA8C,IACjDI,EAA8BP,EAASt7I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE2rL,sBACtB,OAA7B3rL,EAAEwrL,wBAC2B,6BAA7BxrL,EAAEwrL,wBAC2B,4BAA7BxrL,EAAEwrL,uBACL,IAECK,EAAiBR,EAASt7I,QAAO,SAAA/vC,GAAC,OAAIA,EAAEurL,iBAAiB,IAAEnkL,OAC3D0kL,EAAmBT,EAASt7I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE2rL,mBAAmB,IAAEvkL,OAErE,OACI,UAAC+jL,GAAiB,CACd5pL,MAAOmE,EAAE,iCACTpE,UAAU,WACV9B,QAAS,kBAAM4J,EAAS,WAAW,EAAC,UACpC,kBAAK9H,UAAU,iBAAgB,WAC3B,kBAAKA,UAAU,MAAK,WAChB,kBAAKA,UAAU,SAAQ,WACnB,eAAGA,UAAU,WAAU,SAAEuqL,KACzB,yBAAKnmL,EAAE,+CAEX,kBAAKpE,UAAU,SAAQ,WACnB,eAAGA,UAAU,qBAAoB,SAAEgqL,EAA0BlkL,UAC7D,yBAAK1B,EAAE,+CAEX,kBAAKpE,UAAU,SAAQ,WACnB,eAAGA,UAAU,oBAAmB,SAAEmqL,EAA0BrkL,UAC5D,yBAAK1B,EAAE,4CAGf,kBAAKpE,UAAU,MAAK,WAChB,kBAAKA,UAAU,SAAQ,WACnB,eAAGA,UAAU,WAAU,SAAEwqL,KACzB,yBAAKpmL,EAAE,iDAEX,kBAAKpE,UAAU,SAAQ,WACnB,eAAGA,UAAU,qBAAoB,SAAEoqL,EAA4BtkL,UAC/D,yBAAK1B,EAAE,+CAEX,kBAAKpE,UAAU,SAAQ,WACnB,eAAGA,UAAU,oBAAmB,SAAEsqL,EAA4BxkL,UAC9D,yBAAK1B,EAAE,+CAM/B,EAEA0lL,GAAsBlrL,YAAc,wBC5D7B,IAAM6rL,GAAwE,SAAH,GACjF,IAAD,QADwFC,EAAmB,EAAnBA,oBAE5EtmL,GAAMF,EAAAA,EAAAA,GAAe,CAAC,8BAA+B,CAAEC,aAAa,IAApEC,EACF0D,GAAWC,EAAAA,EAAAA,KAEX4iL,EAAoBD,EAAoBj8I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE6qL,eAAiB,GAAK7qL,EAAE6qL,gBAAkB,EAAE,IAClGqB,EAAgBF,EAAoBj8I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE6qL,gBAAkB,CAAC,IAErEG,EAAkD,CACpD,CACIC,iBAAkBvlL,EAAE,+CACpBwlL,gBAAiBe,EAAkB7kL,OACnCo0B,MAAO,WAEX,CACIyvJ,iBAAkBvlL,EAAE,2CACpBwlL,gBAAiBgB,EAAc9kL,OAC/Bo0B,MAAO,YAaf,OACI,WAAC2uJ,GAAgB,CACb5oL,MAAOmE,EAAE,oCACTpE,UAAU,sBACV2iB,KAAM+mK,EACNjhF,cAAc,mBACdj/E,MAAM,kBACNi+J,kBAhBkB,WAAH,OACnB,mCACI,gBAAIznL,UAAU,iBAAgB,UACzBw6E,EAAAA,EAAAA,KAAIkvG,EAAa3jL,KAAI,SAAArH,GAAC,OAAIA,EAAEkrL,eAAe,QAEhD,oCACD,EAWC1rL,QAAS,kBAAM4J,EAAS,WAAW,EAAC,WACpC,eAAG9H,UAAU,WAAU,SAC0F,QAD1F,EACyE,QADzE,EAClB0pL,EAAajoJ,MAAK,SAAA/iC,GAAC,OAAIA,EAAEirL,mBAAqBvlL,EAAE,0CAA0C,WAAC,aAA3F,EAA6FwlL,uBAAe,QAAI,KAErH,gBAAG5pL,UAAU,SAAQ,cAAGoE,EAAE,2CAA0C,QACpE,eAAGpE,UAAU,WAAU,SAC8F,QAD9F,EAC6E,QAD7E,EAClB0pL,EAAajoJ,MAAK,SAAA/iC,GAAC,OAAIA,EAAEirL,mBAAqBvlL,EAAE,8CAA8C,WAAC,aAA/F,EAAiGwlL,uBAAe,QAAI,KAEzH,gBAAG5pL,UAAU,SAAQ,cAAGoE,EAAE,+CAA8C,SAIpF,EACAqmL,GAAoB7rL,YAAc,yBCnD3B,IAAMisL,GAA8E,SAAH,GACvF,IAAD,IAD8FC,EAAS,EAATA,UAElF1mL,GAAMF,EAAAA,EAAAA,GAAe,CAAC,8BAA+B,CAAEC,aAAa,IAApEC,EACF0D,GAAWC,EAAAA,EAAAA,KAEXuhL,EAAoBwB,EAAUr8I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE4qL,mBAAqB5qL,EAAE6qL,eAAiB,EAAE,IACtFC,EAAkBsB,EAAUr8I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE6qL,gBAAkB,IAAM7qL,EAAE6qL,gBAAkB,EAAE,IACxFE,EAAcqB,EAAUr8I,QAAO,SAAA/vC,GAAC,OAAKA,EAAE4qL,mBAAqB5qL,EAAE6qL,eAAiB,EAAE,IAEjFG,EAAkD,CACpD,CACIC,iBAAkBvlL,EAAE,qCACpBwlL,gBAAiBN,EAAkBxjL,OACnCo0B,MAAO,WAEX,CACIyvJ,iBAAkBvlL,EAAE,+BACpBwlL,gBAAiBH,EAAY3jL,OAC7Bo0B,MAAO,WAEX,CACIyvJ,iBAAkBvlL,EAAE,mCACpBwlL,gBAAiBJ,EAAgB1jL,OACjCo0B,MAAO,YAaf,OACI,WAAC2uJ,GAAgB,CACb5oL,MAAOmE,EAAE,0BACTpE,UAAU,YACV2iB,KAAM+mK,EACNjhF,cAAc,mBACdj/E,MAAM,kBACNi+J,kBAhBkB,WAAH,OACnB,mCACI,gBAAIznL,UAAU,iBAAgB,UACzBw6E,EAAAA,EAAAA,KAAIkvG,EAAa3jL,KAAI,SAAArH,GAAC,OAAIA,EAAEkrL,eAAe,QAEhD,oCACD,EAWC1rL,QAAS,kBAAM4J,EAAS,WAAW,EAAC,WACpC,eAAG9H,UAAU,WAAU,SACoF,QADpF,EACmE,QADnE,EAClB0pL,EAAajoJ,MAAK,SAAA/iC,GAAC,OAAIA,EAAEirL,mBAAqBvlL,EAAE,oCAAoC,WAAC,aAArF,EAAuFwlL,uBAAe,QAAI,KAE/G,gBAAG5pL,UAAU,SAAQ,cAAGoE,EAAE,qCAAoC,SAG1E,EACAymL,GAAuBjsL,YAAc,yBCpD9B,IAAMmsL,GAAkG,SAAH,GAC3G,IAAD,QADkHC,EAAU,EAAVA,WAEtG5mL,GAAMF,EAAAA,EAAAA,GAAe,CAAC,8BAA+B,CAAEC,aAAa,IAApEC,EACF0D,GAAWC,EAAAA,EAAAA,KAEXkjL,EAAqBD,EAAWv8I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE6qL,eAAiB,GAAK7qL,EAAE6qL,gBAAkB,EAAE,IAC1F2B,EAAaF,EAAWv8I,QAAO,SAAA/vC,GAAC,OAAIA,EAAE6qL,gBAAkB,CAAC,IAEzDG,EAA4C,CAC9C,CACIC,iBAAkBvlL,EAAE,sCACpBwlL,gBAAiBqB,EAAmBnlL,OACpCo0B,MAAO,WAEX,CACIyvJ,iBAAkBvlL,EAAE,+BACpBwlL,gBAAiBsB,EAAWplL,OAC5Bo0B,MAAO,YAaf,OACI,WAAC2uJ,GAAgB,CACb5oL,MAAOmE,EAAE,2BACTpE,UAAU,aACV2iB,KAAM+mK,EACNjhF,cAAc,mBACdj/E,MAAM,kBACNi+J,kBAhBkB,WAAH,OACnB,mCACI,gBAAIznL,UAAU,iBAAgB,UACzBw6E,EAAAA,EAAAA,KAAIkvG,EAAa3jL,KAAI,SAAArH,GAAC,OAAIA,EAAEkrL,eAAe,QAEhD,oCACD,EAWC1rL,QAAS,kBAAM4J,EAAS,WAAW,EAAC,WACpC,eAAG9H,UAAU,WAAU,SAC8E,QAD9E,EAC6D,QAD7D,EAClB0pL,EAAajoJ,MAAK,SAAA/iC,GAAC,OAAIA,EAAEirL,mBAAqBvlL,EAAE,8BAA8B,WAAC,aAA/E,EAAiFwlL,uBAAe,QAAI,KAEzG,gBAAG5pL,UAAU,SAAQ,cAAGoE,EAAE,+BAA8B,QACxD,eAAGpE,UAAU,WAAU,SACqF,QADrF,EACoE,QADpE,EAClB0pL,EAAajoJ,MAAK,SAAA/iC,GAAC,OAAIA,EAAEirL,mBAAqBvlL,EAAE,qCAAqC,WAAC,aAAtF,EAAwFwlL,uBAAe,QAAI,KAEhH,gBAAG5pL,UAAU,SAAQ,cAAGoE,EAAE,sCAAqC,SAG3E,EACA2mL,GAAiCnsL,YAAc,mCC9C/C,IAAM4D,GAAgB,UAgBT2oL,GAAkD,SAAH,GAC3D,IADiE/mL,EAAC,EAADA,EAGxDsb,GAAqBD,EAAAA,EAAAA,GAAsBjd,IACjD,GAAkCK,EAAAA,EAAAA,UAAwB,CACtDioL,UAAW,GACXzB,YAAa,GAEb2B,WAAY,GACZN,oBAAqB,GACrBX,SAAU,GACVqB,UAAU,IACZ,eARKC,EAAS,KAAEC,EAAY,KAmC9B,OAvBA/pL,EAAAA,EAAAA,GAAM,yCAAC,WAAO8B,GAAK,wFAEXA,EAAMpE,QAAQ,CAAD,gCAEoBygB,EAAmB5H,IAAgC,8BAA8B,KAAD,EAAzF,OAAlByzK,EAAkB,gBACW7rK,EAAmB5H,IAAiC,+BAA+B,KAAD,EAA3F,OAApB0zK,EAAoB,gBAEQ9rK,EAAmB5H,IAAoC,kCAAkC,KAAD,EAAjG,OAAnB2zK,EAAmB,iBACkB/rK,EAAmB5H,IAAgC,8BAA8B,KAAD,GAAzF,OAA5B4zK,EAA4B,iBACFhsK,EAAmB5H,IAAgC,8BAA8B,KAAD,GAA1G6zK,EAAiB,OACvBL,EAAa,CACTR,UAAWS,EACXlC,YAAamC,EAEbR,WAAYS,EACZf,oBAAqBgB,EACrB3B,SAAU4B,EACVP,UAAU,IACX,4CAEV,mDApBK,KAwBF,kCACKC,EAAUD,WAAY,UAAC,IAAO,KAC7BC,EAAUD,WACR,UAAC,IAAW,CAACppL,GAAIQ,GAAevC,MAAOmE,EAAE,UAAWgI,UAAU,EAAM,UAChE,WAAC,IAAQ,YACL,UAAC09K,GAAqB,CAACC,SAAUsB,EAAUtB,YAC3C,UAACX,GAAwB,CAACC,YAAagC,EAAUhC,eACjD,UAACwB,GAAsB,CAACC,UAAWO,EAAUP,aAC7C,UAACL,GAAmB,CAACC,oBAAqBW,EAAUX,uBACpD,UAACK,GAAgC,CAACC,WAAYK,EAAUL,oBAOhF,EAEAG,GAAQvsL,YAAc4D,yHCpFhBA,EAAgB,UAETopL,EAA8C,SAAH,GACvD,IAD6DxnL,EAAC,EAADA,EAE1D,OACI,UAAC,IAAW,CAACpC,GAAIQ,EAAevC,MAAOmE,EAAE,UAAWgI,UAAU,EAAM,WAChE,uBAAIhI,EAAE,cACN,4BACI,iBAAMpE,UAAS,eAAU6rL,EAAAA,EAAAA,QACzB,iBAAM7rL,UAAS,eAAU6rL,EAAAA,EAAAA,mBACzB,iBAAM7rL,UAAS,eAAU6rL,EAAAA,EAAAA,gBAE7B,0BACI,cAAG7rL,UAAU,2FAA2F6qB,KAAK,WAAU,UACnH,iBAAM7qB,UAAU,gBAAe,SAAEoE,EAAE,sBAKvD,EAEAwnL,EAAQhtL,YAAc4D,+QCnBTspL,EAAwC,SAAH,GACjD,IADuDxsL,EAAQ,EAARA,SAAUT,EAAI,EAAJA,KAAK,EAAD,EAAEgD,KAAAA,OAAI,OAAQ,EAAE5B,EAAK,EAALA,MAElF,OACI,iBAAKD,UAAS,sBAAiBnB,GAAQktL,KAAK,QAAO,UAC9C9rL,IAAS,gBAAID,UAAU,gBAAe,cAAIC,KACzCX,EACAuC,IAAQ,mBAAQhD,KAAK,SAASmB,UAAU,QAAQ,eAAa,QAAQ,aAAW,QAAO,UACrF,iBAAM,cAAY,OAAM,sBAIxC,aCDagsL,EAAsE,SAAH,GAO/E,IANGhsL,EAAS,EAATA,UACM,GAAD,EAAL+gB,MAAK,EACLkrK,gBAAAA,OAAc,MAAG,WAAO,EAAC,MACzBC,cAAAA,OAAa,MAAG,WAAO,EAAC,EACxBC,EAAS,EAATA,UAGQ/nL,GAAMF,EAAAA,EAAAA,GAAe,8BAArBE,EACR,GAAgCvB,EAAAA,EAAAA,WAAkB,GAAM,eAAjDuoL,EAAQ,KAAEgB,EAAW,KAC5B,GAA0BvpL,EAAAA,EAAAA,UAAiB,IAAG,eAAvCyI,EAAK,KAAE+gL,EAAQ,KAChBptK,GAAwBzY,EAAAA,EAAAA,KACxB8lL,EAAiBC,IAGjBC,EAA0B,yCAAG,8FAAmC,GAA1B1qK,EAAQ,EAARA,SAAUiB,EAAgB,EAAhBA,iBAE7CupK,EAAexqK,GAAU,CAAD,eAEe,OAAxCuqK,EAASjoL,EAAE,6BAA6B,6BAKxC0d,IAAaiB,EAAgB,gBAEiB,OAA9CspK,EAASjoL,EAAE,mCAAmC,0BAQrC,OAHb6nL,IAEAG,GAAY,GACZC,EAAS,IAAI,oBAIeptK,EAAsBwtK,eAAe3qK,EAAUiB,GAAkB,KAAD,GAAlF2pK,EAAS,OAEfP,EAAUO,GAEVR,GAAc,GAAM,mDAIpBG,EAAS,aACTD,GAAY,GACZF,GAAc,GAAO,2DAE5B,gBAnC+B,sCAsChC,OACI,gBAAKlsL,UAAU,kBAAiB,UAC5B,SAAC,KAAI,CACD2sL,SAAUH,EACV1nL,OAAQ,gBAAG8nL,EAAY,EAAZA,aAAY,OACnB,kBAAM5qL,GAAG,qBAAqBhC,UAAWA,EAAW2sL,SAAUC,EAAa,WACvE,UAAC,IAAM,YACH,SAAC,KAAK,CACFvwK,KAAK,WACLvX,OAAQ,gBAAGgb,EAAK,EAALA,MAAK,OACZ,SAAC+sK,EAAA,IAAK,kBACE/sK,GAAK,IACT9f,UAAU,eACVgC,GAAG,WACHnD,KAAK,WACL+7D,MAAOx2D,EAAE,kCACT0oL,UAAU,EACVC,gBAAgB,EAChBC,aAAa,QAAO,KAEhC,gBAAKhtL,UAAU,gBAAe,SACzBoE,EAAE,kCAGX,SAAC,IAAM,WACH,SAAC,KAAK,CACFiY,KAAK,mBACLvX,OAAQ,gBAAGgb,EAAK,EAALA,MAAK,OACZ,SAAC+sK,EAAA,IAAK,kBACE/sK,GAAK,IACT9f,UAAU,eACVgC,GAAG,mBACHnD,KAAK,WACL+7D,MAAOx2D,EAAE,qCACT0oL,UAAU,EACVC,gBAAgB,EAChBC,aAAa,QAAO,OAGpC,SAAC,IAAM,CAAChtL,UAAU,UAAS,UACvB,UAACjC,EAAA,EAAM,CAACc,KAAK,SAASgG,WAAW,UAAUyxJ,UAAY80B,EAAkC,GAAvBhlL,EAAAA,EAAAA,WAA0B,UACvFglL,IAAY,SAAC/oL,EAAA,EAAM,CAACxD,KAAK,qBAAqByD,KAAK,QAAQuC,WAAW,UACtET,EAAE,mBAGVkH,IAAS,SAACwgL,EAAK,CAACjtL,KAAK,SAAQ,SAAEyM,MAC7B,KAI3B,EAEA0gL,EAAmBptL,YAAc,qBAEjC,IAAM2tL,EAAoB,WAAH,OAAS,SAAC3nL,GAI7B,MAFsB,yEAEDkoB,KAAKloB,EAC9B,CAAE,EClHWqoL,EAAuD,SAAH,GAKhE,IAJGjtL,EAAS,EAATA,UACA+gB,EAAK,EAALA,MAAM,EAAD,EACLorK,UAAAA,OAAS,MAAG,kBAAM,IAAI,IAGd/nL,GAAMF,EAAAA,EAAAA,GAAe,8BAArBE,EACR,GAAgDvB,EAAAA,EAAAA,WAAkB,GAAM,eAAjEqqL,EAAgB,KAAEC,EAAmB,KAC5C,GAA0BtqL,EAAAA,EAAAA,WAAkB,GAAM,eAA3CyI,EAAK,KAAE+gL,EAAQ,KAChBptK,GAAwBzY,EAAAA,EAAAA,KAGxB4mL,EAAoB,yCAAG,4FAAkB,GAATC,EAAS,EAATA,WAE9BtsK,EAAM,CAAD,gBAEqB,OAA1BosK,GAAoB,GAAM,kBAIEluK,EAAsBquK,UAAUD,EAAWtsK,GAAO,KAAD,EAAnE2rK,EAAS,OAEfP,EAAUO,GAAW,kDAIrBL,GAAS,GACTc,GAAoB,GAAO,0DAGtC,gBAlByB,sCAoB1B,OACI,SAAC,KAAI,CACDR,SAAUS,EACVtoL,OAAQ,gBAAG8nL,EAAY,EAAZA,aAAY,OACnB,kBAAM5qL,GAAG,eAAehC,UAAWA,EAAW2sL,SAAUC,EAAa,WACjE,UAAC,IAAM,YACH,SAAC,KAAK,CACFvwK,KAAK,YACLvX,OAAQ,gBAAGgb,EAAK,EAALA,MAAK,OACZ,SAAC+sK,EAAA,IAAK,kBACE/sK,GAAK,IACT9f,UAAU,eACVgC,GAAG,YACHnD,KAAK,OACL+7D,MAAOx2D,EAAE,aACT0oL,UAAU,EACVS,kBAAmBnpL,EAAE,iBACrB2oL,gBAAgB,EAChBS,SAAUN,EACVF,aAAa,QAAO,KAEhC,gBAAKhtL,UAAU,UAAS,UACpB,UAACjC,EAAA,EAAM,CAACyvL,SAAUN,EAAkBruL,KAAK,SAASgG,WAAW,UAAUyxJ,UAAY42B,EAA0C,GAAvB9mL,EAAAA,EAAAA,WAA0B,UAC3H8mL,IAAoB,SAAC7qL,EAAA,EAAM,CAACxD,KAAK,qBAAqByD,KAAK,QAAQuC,WAAW,UAC9ET,EAAE,sBAIdkH,IAAS,SAACwgL,EAAK,CAACjtL,KAAK,SAAQ,SAAEuF,EAAE,iBAC/B,GAGvB,EAEA6oL,EAAkBruL,YAAc,eC/DzB,IAAM6uL,EAAuD,SAAH,GAQhE,IAPGztL,EAAS,EAATA,UACAmsL,EAAS,EAATA,UACAuB,EAAK,EAALA,MACAC,EAAgB,EAAhBA,iBAAiB,EAAD,EAChB1B,eAAAA,OAAc,MAAG,WAAO,EAAC,MACzBC,cAAAA,OAAa,MAAG,WAAO,EAAC,EAGhB9nL,GAAMF,EAAAA,EAAAA,GAAe,8BAArBE,EACF6a,GAAwBzY,EAAAA,EAAAA,KAE9B,GAAgD3D,EAAAA,EAAAA,WAAkB,GAAM,eAAjEqqL,EAAgB,KAAEC,EAAmB,KAC5C,GAA0BtqL,EAAAA,EAAAA,WAAkB,GAAM,eAA3CyI,EAAK,KAAE+gL,EAAQ,KAGhBuB,EAAY,yCAAG,8FAGS,OAHAC,EAAQ,EAARA,SAAU/rK,EAAQ,EAARA,SAEpCmqK,IACAkB,GAAoB,GAAM,kBAIgBluK,EAAsB6uK,MAAMD,EAAU/rK,GAAU,KAAD,GAA/Ehe,EAAuB,QAElB8e,UAGP8qK,EAAM5pL,GAIFA,EAAOsb,eAGPuuK,EAAiB7pL,GAKjBqoL,EAAUroL,GAIlBooL,GAAc,GAAM,kDAIpBG,GAAS,GAETc,GAAoB,GAEpBjB,GAAc,GAAO,0DAE5B,gBAtCiB,sCAwClB,OACI,SAAC,KAAI,CACDS,SAAUiB,EACV9oL,OAAQ,gBAAG8nL,EAAY,EAAZA,aAAY,OACnB,kBAAM5qL,GAAG,oBAAoBhC,UAAWA,EAAW2sL,SAAUC,EAAa,WACtE,SAAC,IAAM,WACH,SAAC,KAAK,CACFvwK,KAAK,WACLvX,OAAQ,gBAAGgb,EAAK,EAALA,MAAK,OACZ,SAAC+sK,EAAA,IAAK,kBACE/sK,GAAK,IACT9f,UAAU,eACVgC,GAAG,QACHnD,KAAK,OACL+7D,MAAOx2D,EAAE,eACT0oL,UAAU,EACVS,kBAAmBnpL,EAAE,mBACrB2oL,gBAAgB,EAChBS,SAAUN,EACVF,aAAa,QAAO,OAGpC,UAAC,IAAM,CAAChtL,UAAU,aAAY,WAC1B,SAAC,KAAK,CACFqc,KAAK,WACLvX,OAAQ,gBAAGgb,EAAK,EAALA,MAAK,OACZ,SAAC+sK,EAAA,IAAK,kBACE/sK,GAAK,IACT9f,UAAU,eACVgC,GAAG,WACHnD,KAAK,WACL+7D,MAAOx2D,EAAE,kBACT0oL,UAAU,EACVS,kBAAmBnpL,EAAE,sBACrB2oL,gBAAgB,EAChBS,SAAUN,EACVF,aAAa,QAAO,KAEhC,gBAAKhtL,UAAU,UAAS,UACpB,UAACjC,EAAA,EAAM,CAACyvL,SAAUN,EAAkBruL,KAAK,SAASgG,WAAW,UAAUyxJ,UAAY42B,EAA0C,GAAvB9mL,EAAAA,EAAAA,WAA0B,UAC3HhC,EAAE,YACF8oL,IAAoB,SAAC7qL,EAAA,EAAM,CAACxD,KAAK,qBAAqByD,KAAK,QAAQuC,WAAW,kBAI1FyG,IAAS,SAACwgL,EAAK,CAACjtL,KAAK,SAAQ,SAAEuF,EAAE,aAC/B,GAGvB,EAEAqpL,EAAa7uL,YAAc,2IC5GrB4D,EAAgB,UAOTurL,EAA+C,SAACC,GAGzD,IAAMlmL,GAAWC,EAAAA,EAAAA,KACXwW,GAAW0vK,EAAAA,EAAAA,MAIjB,GAA0BprL,EAAAA,EAAAA,UAAwB,MAAK,eAAhDke,EAAK,KAAEmtK,EAAQ,KACtB,GAAkDrrL,EAAAA,EAAAA,WAAS,GAAM,eAA1DsrL,EAAiB,KAAEC,EAAoB,KAC9C,GAAkCvrL,EAAAA,EAAAA,WAAS,GAAM,eAA1C+f,EAAS,KAAEyrK,EAAY,KAoBxBC,GAAoBvvL,EAAAA,EAAAA,SAAgB,GAEpCktL,EAAiB,WAEnBqC,EAAkBrvL,SAAU,CAChC,EAEMitL,EAAgB,SAACqC,GAEdA,IAEDD,EAAkBrvL,SAAU,EAEpC,EAGA,GAA0B4D,EAAAA,EAAAA,WAAkB,GAAM,eAA3C2rL,EAAK,KAAEC,EAAQ,KAChBC,GAAoB3vL,EAAAA,EAAAA,QAAuB,MAE3CotL,EAAY,SAACwC,GAEfN,EAAaM,EAAQ/rK,WACrBwrK,EAAqBO,EAAQvvK,gBAExBuvK,EAAQ/rK,WAAc+rK,EAAQvvK,gBAE/BqvK,GAAS,EAEjB,EAiCA,OA/BAltL,EAAAA,EAAAA,IAAO,WAGH,IAAMqtL,EAAkBF,EAAkBzvL,QAEpC4vL,EAA6B,SAACjlL,GAEhC,IAAM8iG,EAAc9iG,EAAG0P,OAIvB,GAAIozF,IAAgBkiF,GACbliF,EAAYt5F,UAAU0B,SAAS,WACtC,CAAC,IAAD,EACUzJ,EAAQkT,EAASlT,MAEvBvD,GAAc,OAALuD,QAAK,IAALA,GAAW,QAAN,EAALA,EAAO4jC,YAAI,WAAN,EAAL,EAAa6/I,WAAY,IACtC,CACJ,EAMA,OAJe,OAAfF,QAAe,IAAfA,GAAAA,EAAiB/kL,iBAAiB,gBAAiBglL,GAI5C,WAEY,OAAfD,QAAe,IAAfA,GAAAA,EAAiB9kL,oBAAoB,gBAAiB+kL,EAC1D,CACJ,KAII,gBAAK7uL,UAAU,UAAS,UACpB,iBAAKA,UAAU,eAAc,WACzB,mBAAQA,UAAS,sBAAiBwuL,EAAQ,UAAY,IAAK,UACvD,SAAC,KAAiB,OAEtB,oCAAUA,GAAS,CAAExuL,UAAW,YAAW,eACvC,SAAC,KAAkB,KACnB,iCAAKgC,GAAIQ,EAAevE,IAAKywL,GAAuBF,GAAS,CAAExuL,UAAW,YAAW,eACjF,gBAAK00G,IAAKq6E,EAASC,IAAI,WAAWhvL,UAAU,4BAC5C,gBAAK00G,6iJAAes6E,IAAI,YAAYhvL,UAAU,2BAC9C,gBAAK00G,IAAKu6E,EAAUD,IAAI,YAAYhvL,UAAU,8BAK9C,mBACA,UAAC,IAAM,CAACgC,GAAG,gBAAe,WACtB,SAAC,IAAS,CAAChC,UAAS,mBAAc4iB,GAAaurK,EAAoB,OAAS,IAAK,UAC7E,SAACV,EAAY,CAACxB,eAAgBA,EAAgBC,cAAeA,EAAewB,MAlG9E,SAACwB,GAEvBb,EAAaa,EAAatsK,WAC1BsrK,EAASgB,EAAanuK,MAC1B,EA8FkIorK,UAAWA,EAAWwB,iBA1F/H,SAACuB,GAEtBb,EAAaa,EAAatsK,WAC1BsrK,EAASgB,EAAanuK,OAEtBqtK,GAAqB,EACzB,OAsFwB,UAAC,IAAS,CAACpuL,UAAS,oBAAgB+gB,GAAUotK,EAA6B,GAAT,QAAc,UAC3EvrK,IACG,SAACqqK,EAAiB,CAAClsK,MAAOA,EAAOkrK,eAAgBA,EAAgBC,cAAeA,EAAeC,UAAWA,KAE5GvpK,GAAaurK,IACX,SAACnC,EAAkB,CAACjrK,MAAOA,EAAOkrK,eAAgBA,EAAgBC,cAAeA,EAAeC,UAAWA,sBAS/I,EAEA4B,EAAQnvL,YAAc4D,kICxJlBg/B,EAAM,GACN2tJ,EAAO3tJ,EAAItuB,QACXkT,EAAQob,EAAIpb,MAChB,SAASo8D,EAAS9mE,GAQhB,OAPAyzK,EAAKzgL,KAAK0X,EAAM1X,KAAK+E,UAAW,IAAI,SAAUye,GAC5C,GAAIA,EACF,IAAK,IAAI/X,KAAQ+X,OACG/yB,IAAduc,EAAIvB,KAAqBuB,EAAIvB,GAAQ+X,EAAO/X,GAGtD,IACOuB,CACT,CAGA,IAAI0zK,EAAqB,wCACrBC,EAAkB,SAAyBhzK,EAAMizK,EAAKtuK,GACxD,IAAIuuK,EAAMvuK,GAAW,CAAC,EACtBuuK,EAAIx+J,KAAOw+J,EAAIx+J,MAAQ,IACvB,IAAIloB,EAAQ2mL,mBAAmBF,GAC3BvvK,EAAM,GAAGlM,OAAOwI,EAAM,KAAKxI,OAAOhL,GACtC,GAAI0mL,EAAIE,OAAS,EAAG,CAClB,IAAIA,EAASF,EAAIE,OAAS,EAC1B,GAAI5/J,OAAO8B,MAAM89J,GAAS,MAAM,IAAI3jL,MAAM,6BAC1CiU,GAAO,aAAalM,OAAO2Y,KAAK8K,MAAMm4J,GACxC,CACA,GAAIF,EAAI9rB,OAAQ,CACd,IAAK2rB,EAAmBtiK,KAAKyiK,EAAI9rB,QAC/B,MAAM,IAAI7sJ,UAAU,4BAEtBmJ,GAAO,YAAYlM,OAAO07K,EAAI9rB,OAChC,CACA,GAAI8rB,EAAIx+J,KAAM,CACZ,IAAKq+J,EAAmBtiK,KAAKyiK,EAAIx+J,MAC/B,MAAM,IAAIna,UAAU,0BAEtBmJ,GAAO,UAAUlM,OAAO07K,EAAIx+J,KAC9B,CACA,GAAIw+J,EAAIG,QAAS,CACf,GAAuC,oBAA5BH,EAAIG,QAAQC,YACrB,MAAM,IAAI/4K,UAAU,6BAEtBmJ,GAAO,aAAalM,OAAO07K,EAAIG,QAAQC,cACzC,CAGA,GAFIJ,EAAIK,WAAU7vK,GAAO,cACrBwvK,EAAIM,SAAQ9vK,GAAO,YACnBwvK,EAAIO,SAEN,OADuC,kBAAjBP,EAAIO,SAAwBP,EAAIO,SAASr5J,cAAgB84J,EAAIO,UAEjF,KAAK,EACH/vK,GAAO,oBACP,MACF,IAAK,MACHA,GAAO,iBACP,MACF,IAAK,SACHA,GAAO,oBACP,MACF,IAAK,OACHA,GAAO,kBACP,MACF,QACE,MAAM,IAAInJ,UAAU,8BAG1B,OAAOmJ,CACT,EACIgwK,EACM,SAAgB1zK,EAAMxT,EAAOskE,EAASs2F,GAC5C,IAAIusB,EAAgBv8K,UAAU3N,OAAS,QAAsB3G,IAAjBsU,UAAU,GAAmBA,UAAU,GAAK,CACtFsd,KAAM,IACN++J,SAAU,UAER3iH,IACF6iH,EAAcN,QAAU,IAAIvsK,KAC5B6sK,EAAcN,QAAQO,QAAQD,EAAcN,QAAQnjK,UAAsB,GAAV4gD,EAAe,MAE7Es2F,IAAQusB,EAAcvsB,OAASA,GACnCj/J,SAASurL,OAASV,EAAgBhzK,EAAMmzK,mBAAmB3mL,GAAQmnL,EACrE,EAZED,EAaI,SAAc1zK,GAGlB,IAFA,IAAI6zK,EAAS,GAAGr8K,OAAOwI,EAAM,KACzB48B,EAAKz0C,SAASurL,OAAO98K,MAAM,KACtBmE,EAAI,EAAGA,EAAI6hC,EAAGnzC,OAAQsR,IAAK,CAElC,IADA,IAAIjE,EAAI8lC,EAAG7hC,GACY,MAAhBjE,EAAE7K,OAAO,IACd6K,EAAIA,EAAEu/B,UAAU,EAAGv/B,EAAErN,QAEvB,GAA0B,IAAtBqN,EAAE4B,QAAQm7K,GAAe,OAAO/8K,EAAEu/B,UAAUw9I,EAAOpqL,OAAQqN,EAAErN,OACnE,CACA,OAAO,IACT,EAKEqqL,EAAW,CACb9zK,KAAM,SACN+zK,OAAQ,SAAgBpvK,GACtB,IAAIqvK,EACJ,GAAIrvK,EAAQsvK,cAAoC,qBAAb9rL,SAA0B,CAC3D,IAAI2O,EAAI48K,EAAY/uK,EAAQsvK,cACxBn9K,IAAGk9K,EAAQl9K,EACjB,CACA,OAAOk9K,CACT,EACAE,kBAAmB,SAA2BtkC,EAAKjrI,GAC7CA,EAAQsvK,cAAoC,qBAAb9rL,UACjCurL,EAAc/uK,EAAQsvK,aAAcrkC,EAAKjrI,EAAQwvK,cAAexvK,EAAQyvK,aAAczvK,EAAQgvK,cAElG,GAGEU,EAAc,CAChBr0K,KAAM,cACN+zK,OAAQ,SAAgBpvK,GACtB,IAAIqvK,EACJ,GAAsB,qBAAXloL,OAAwB,CACjC,IAAIwoL,EAASxoL,OAAOoW,SAASoyK,QACxBxoL,OAAOoW,SAASoyK,QAAUxoL,OAAOoW,SAAS+gB,MAAQn3B,OAAOoW,SAAS+gB,KAAKvqB,QAAQ,MAAQ,IAC1F47K,EAASxoL,OAAOoW,SAAS+gB,KAAKoT,UAAUvqC,OAAOoW,SAAS+gB,KAAKvqB,QAAQ,OAIvE,IAFA,IACI+R,EADQ6pK,EAAOj+I,UAAU,GACVz/B,MAAM,KAChBmE,EAAI,EAAGA,EAAI0P,EAAOhhB,OAAQsR,IAAK,CACtC,IAAI6J,EAAM6F,EAAO1P,GAAGrC,QAAQ,KAC5B,GAAIkM,EAAM,EACE6F,EAAO1P,GAAGs7B,UAAU,EAAGzxB,KACrBD,EAAQ4vK,oBAClBP,EAAQvpK,EAAO1P,GAAGs7B,UAAUzxB,EAAM,GAGxC,CACF,CACA,OAAOovK,CACT,GAGEQ,EAAyB,KACzBC,EAAwB,WAC1B,GAA+B,OAA3BD,EAAiC,OAAOA,EAC5C,IACEA,EAAoC,cAAX1oL,QAAkD,OAAxBA,OAAOwZ,aAC1D,IAAIovK,EAAU,wBACd5oL,OAAOwZ,aAAagC,QAAQotK,EAAS,OACrC5oL,OAAOwZ,aAAa8B,WAAWstK,EAGjC,CAFE,MAAOryL,GACPmyL,GAAyB,CAC3B,CACA,OAAOA,CACT,EACIlvK,EAAe,CACjBtF,KAAM,eACN+zK,OAAQ,SAAgBpvK,GACtB,IAAIqvK,EACJ,GAAIrvK,EAAQgwK,oBAAsBF,IAAyB,CACzD,IAAI7kC,EAAM9jJ,OAAOwZ,aAAaC,QAAQZ,EAAQgwK,oBAC1C/kC,IAAKokC,EAAQpkC,EACnB,CACA,OAAOokC,CACT,EACAE,kBAAmB,SAA2BtkC,EAAKjrI,GAC7CA,EAAQgwK,oBAAsBF,KAChC3oL,OAAOwZ,aAAagC,QAAQ3C,EAAQgwK,mBAAoB/kC,EAE5D,GAGEglC,EAA2B,KAC3BC,EAA0B,WAC5B,GAAiC,OAA7BD,EAAmC,OAAOA,EAC9C,IACEA,EAAsC,cAAX9oL,QAAoD,OAA1BA,OAAOgpL,eAC5D,IAAIJ,EAAU,wBACd5oL,OAAOgpL,eAAextK,QAAQotK,EAAS,OACvC5oL,OAAOgpL,eAAe1tK,WAAWstK,EAGnC,CAFE,MAAOryL,GACPuyL,GAA2B,CAC7B,CACA,OAAOA,CACT,EACIE,EAAiB,CACnB90K,KAAM,iBACN+zK,OAAQ,SAAgBpvK,GACtB,IAAIqvK,EACJ,GAAIrvK,EAAQowK,sBAAwBF,IAA2B,CAC7D,IAAIjlC,EAAM9jJ,OAAOgpL,eAAevvK,QAAQZ,EAAQowK,sBAC5CnlC,IAAKokC,EAAQpkC,EACnB,CACA,OAAOokC,CACT,EACAE,kBAAmB,SAA2BtkC,EAAKjrI,GAC7CA,EAAQowK,sBAAwBF,KAClC/oL,OAAOgpL,eAAextK,QAAQ3C,EAAQowK,qBAAsBnlC,EAEhE,GAGEolC,EAAc,CAChBh1K,KAAM,YACN+zK,OAAQ,SAAgBpvK,GACtB,IAAIqvK,EAAQ,GACZ,GAAyB,qBAAdx5J,UAA2B,CACpC,GAAIA,UAAUy6J,UAEZ,IAAK,IAAIl6K,EAAI,EAAGA,EAAIyf,UAAUy6J,UAAUxrL,OAAQsR,IAC9Ci5K,EAAMv1K,KAAK+b,UAAUy6J,UAAUl6K,IAG/Byf,UAAU06J,cACZlB,EAAMv1K,KAAK+b,UAAU06J,cAEnB16J,UAAU26J,UACZnB,EAAMv1K,KAAK+b,UAAU26J,SAEzB,CACA,OAAOnB,EAAMvqL,OAAS,EAAIuqL,OAAQlxL,CACpC,GAGEsyL,EAAU,CACZp1K,KAAM,UACN+zK,OAAQ,SAAgBpvK,GACtB,IAAIqvK,EACAoB,EAAUzwK,EAAQywK,UAAgC,qBAAbjtL,SAA2BA,SAASq3B,gBAAkB,MAI/F,OAHI41J,GAA2C,oBAAzBA,EAAQp9B,eAC5Bg8B,EAAQoB,EAAQp9B,aAAa,SAExBg8B,CACT,GAGEt/J,EAAO,CACT1U,KAAM,OACN+zK,OAAQ,SAAgBpvK,GACtB,IAAIqvK,EACJ,GAAsB,qBAAXloL,OAAwB,CACjC,IAAIqpL,EAAWrpL,OAAOoW,SAASuwK,SAAS36J,MAAM,mBAC9C,GAAIq9J,aAAoB3wL,MACtB,GAA2C,kBAAhCmgB,EAAQ0wK,oBAAkC,CACnD,GAAqD,kBAA1CF,EAASxwK,EAAQ0wK,qBAC1B,OAEFrB,EAAQmB,EAASxwK,EAAQ0wK,qBAAqB5jL,QAAQ,IAAK,GAC7D,MACEuiL,EAAQmB,EAAS,GAAG1jL,QAAQ,IAAK,GAGvC,CACA,OAAOuiL,CACT,GAGEl0B,EAAY,CACd9/I,KAAM,YACN+zK,OAAQ,SAAgBpvK,GAEtB,IAAI2wK,EAAuE,kBAArC3wK,EAAQ2wK,yBAAwC3wK,EAAQ2wK,yBAA2B,EAAI,EAIzHH,EAA6B,qBAAXrpL,QAA0BA,OAAOoW,UAAYpW,OAAOoW,SAASqzK,UAAYzpL,OAAOoW,SAASqzK,SAASz9J,MAAM,0DAG9H,GAAKq9J,EAEL,OAAOA,EAASG,EAClB,GAiBF,IAAIE,EAAuB,WACzB,SAASA,EAAQC,GACf,IAAI9wK,EAAUvN,UAAU3N,OAAS,QAAsB3G,IAAjBsU,UAAU,GAAmBA,UAAU,GAAK,CAAC,GACnFs+K,EAAAA,EAAAA,GAAgBrmL,KAAMmmL,GACtBnmL,KAAK7M,KAAO,mBACZ6M,KAAKsmL,UAAY,CAAC,EAClBtmL,KAAKjI,KAAKquL,EAAU9wK,EACtB,CAsDA,OArDAixK,EAAAA,EAAAA,GAAaJ,EAAS,CAAC,CACrB93K,IAAK,OACLlR,MAAO,SAAcipL,GACnB,IAAI9wK,EAAUvN,UAAU3N,OAAS,QAAsB3G,IAAjBsU,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC/Ey+K,EAAcz+K,UAAU3N,OAAS,QAAsB3G,IAAjBsU,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACvF/H,KAAKomL,SAAWA,EAChBpmL,KAAKsV,QAAUwhE,EAASxhE,EAAStV,KAAKsV,SAAW,CAAC,EA3B/C,CACLmxK,MAAO,CAAC,cAAe,SAAU,eAAgB,iBAAkB,YAAa,WAChFvB,kBAAmB,MACnBN,aAAc,UACdU,mBAAoB,aACpBI,qBAAsB,aAEtBgB,OAAQ,CAAC,gBACTC,gBAAiB,CAAC,YAsBZ3mL,KAAKsV,QAAQsxK,qBAAoB5mL,KAAKsV,QAAQ0wK,oBAAsBhmL,KAAKsV,QAAQsxK,oBACrF5mL,KAAKwmL,YAAcA,EACnBxmL,KAAK6mL,YAAYpC,GACjBzkL,KAAK6mL,YAAY7B,GACjBhlL,KAAK6mL,YAAY5wK,GACjBjW,KAAK6mL,YAAYpB,GACjBzlL,KAAK6mL,YAAYlB,GACjB3lL,KAAK6mL,YAAYd,GACjB/lL,KAAK6mL,YAAYxhK,GACjBrlB,KAAK6mL,YAAYp2B,EACnB,GACC,CACDpiJ,IAAK,cACLlR,MAAO,SAAqB2pL,GAC1B9mL,KAAKsmL,UAAUQ,EAASn2K,MAAQm2K,CAClC,GACC,CACDz4K,IAAK,SACLlR,MAAO,SAAgB4pL,GACrB,IAAIhkL,EAAQ/C,KACP+mL,IAAgBA,EAAiB/mL,KAAKsV,QAAQmxK,OACnD,IAAIO,EAAW,GAQf,OAPAD,EAAev/K,SAAQ,SAAUy/K,GAC/B,GAAIlkL,EAAMujL,UAAUW,GAAe,CACjC,IAAIvC,EAAS3hL,EAAMujL,UAAUW,GAAcvC,OAAO3hL,EAAMuS,SACpDovK,GAA4B,kBAAXA,IAAqBA,EAAS,CAACA,IAChDA,IAAQsC,EAAWA,EAAS7+K,OAAOu8K,GACzC,CACF,IACI1kL,KAAKomL,SAASc,cAAcC,sBAA8BH,EACvDA,EAAS5sL,OAAS,EAAI4sL,EAAS,GAAK,IAC7C,GACC,CACD34K,IAAK,oBACLlR,MAAO,SAA2BojJ,EAAKmmC,GACrC,IAAI5hL,EAAS9E,KACR0mL,IAAQA,EAAS1mL,KAAKsV,QAAQoxK,QAC9BA,IACD1mL,KAAKsV,QAAQqxK,iBAAmB3mL,KAAKsV,QAAQqxK,gBAAgBt9K,QAAQk3I,IAAQ,GACjFmmC,EAAOl/K,SAAQ,SAAU4/K,GACnBtiL,EAAOwhL,UAAUc,IAAYtiL,EAAOwhL,UAAUc,GAAWvC,kBAAkBtkC,EAAKz7I,EAAOwQ,QAC7F,IACF,KAEK6wK,CACT,CA9D2B,GA+D3BA,EAAQhzL,KAAO,mGC3VXk0L,EAAY,CAAC,gBAEjB,SAASC,EAAQ3tK,EAAQ4tK,GAAkB,IAAI93K,EAAO5E,OAAO4E,KAAKkK,GAAS,GAAI9O,OAAOgB,sBAAuB,CAAE,IAAI27K,EAAU38K,OAAOgB,sBAAsB8N,GAAa4tK,IAAkBC,EAAUA,EAAQzkJ,QAAO,SAAU0kJ,GAAO,OAAO58K,OAAO68K,yBAAyB/tK,EAAQ8tK,GAAKp7K,UAAY,KAAMoD,EAAKL,KAAKlH,MAAMuH,EAAM+3K,EAAU,CAAE,OAAO/3K,CAAM,CAExV,SAASk4K,EAAc/5K,GAAU,IAAK,IAAIlC,EAAI,EAAGA,EAAI3D,UAAU3N,OAAQsR,IAAK,CAAE,IAAI8a,EAAyB,MAAhBze,UAAU2D,GAAa3D,UAAU2D,GAAK,CAAC,EAAOA,EAAI,EAAK47K,EAAQz8K,OAAO2b,IAAS,GAAMhf,SAAQ,SAAU6G,IAAOu5K,EAAAA,EAAAA,GAAgBh6K,EAAQS,EAAKmY,EAAOnY,GAAO,IAAexD,OAAOg9K,0BAA6Bh9K,OAAOq4B,iBAAiBt1B,EAAQ/C,OAAOg9K,0BAA0BrhK,IAAmB8gK,EAAQz8K,OAAO2b,IAAShf,SAAQ,SAAU6G,GAAOxD,OAAOsB,eAAeyB,EAAQS,EAAKxD,OAAO68K,yBAAyBlhK,EAAQnY,GAAO,GAAM,CAAE,OAAOT,CAAQ,yBCA/gBk6K,EAAY,mBAWZC,EAAa,SAACC,EAAmBlC,GAEnC,OAAO,IAAI/pL,SAAqB,SAACC,EAASwwB,GAEtC,SAG4C,sBACrBw7J,EAAS,YAAIlC,EAAQ,UACvC7pL,MAAK,SAAAkB,GAEFnB,EAAQmB,EACZ,IAAG,SAAA8X,GAEC,SAG6C,sBACtB+yK,EAAS,YAAIlC,EAAQ,WACvC7pL,MAAK,SAAAkB,GAEF,OAAOA,EAAM8qL,OACjB,IACChsL,MAAK,SAAA4W,GAIF,OAAO8D,MAAM9D,EACjB,IAAG5W,MAAK,SAAA2a,GAEJ,GAAIA,EAASqJ,GAET,OAAOrJ,EAAS1d,OAEf,MAAI0d,EAASnT,OAAS,KAAOmT,EAASnT,OAAS,IAE1C,IAAIrD,MAAM0nL,GAIV,IAAI1nL,MAAMwW,EAASsJ,WAEjC,IAAGjkB,MAAK,SAAA/C,GAEJ8C,EAAQksL,IAAAA,MAAYhvL,GACxB,IAAGivL,OAAM,SAAAlzK,IAKE,OAAHA,QAAG,IAAHA,OAAG,EAAHA,EAAKH,QAASgzK,IAAgB,OAAH7yK,QAAG,IAAHA,OAAG,EAAHA,EAAKxD,WAAYq2K,EAE5Ct7J,EAAOs7J,GAIPt7J,EAAOvX,EAEf,GACR,GACR,GAEJ,EAEamzK,EAAO,WAahB,cACC,oBAXOhC,cAAQ,OAERiC,oBAAc,OAEdC,oBAAc,OAEdC,UAAoB,WAAW,KAEvCp1L,KAAkB,UAId6M,KAAK7M,KAAO,SAChB,CAoDC,OApDA,4BAED,SAAKizL,EAAoBiC,EAAgCC,GAErDtoL,KAAKomL,SAAWA,EAChBpmL,KAAKqoL,eAAiBA,EACtBroL,KAAKsoL,eAAiBA,CAC1B,GAAC,kBAED,SAAKxC,GACJ,IADsBkC,EAAiB,uDAAG,WAAY9hL,EAAsB,uCAOpB,gBAAd8hL,EASvCD,EAAWC,EAAWlC,GACjB7pL,MAAK,SAAAkB,GAEF+I,EAAS,KAAM/I,EACnB,IAAG,SAAA8X,GAEKA,IAAQ6yK,EAGR5hL,EAAS,IAAI9F,MAAM,gDAAD,OAAuC4nL,EAAS,YAAIlC,KAAa,GAKnF5/K,EAAS,IAAI9F,MAAM,8CAAD,OAA0C4nL,EAAS,YAAIlC,KAAa,EAE9F,IAtBA5/K,EAAS,KAAM,CAAC,EAuBxB,GAAC,oBAED,SAAO0/K,EAAqBoC,EAAmB35K,EAAam6K,GAExD,MAAM,IAAIpoL,MAAM,0BACpB,GAAC,kBAED,SAAM0lL,EAAkBkC,EAAmB/wK,GAEvC,MAAM,IAAI7W,MAAM,0BACpB,KAAC,EApEe,GChDb,SAASqoL,EAA2Cj4K,GAEvD,GAAIA,EAAUtd,YACd,CACI,IAAM4N,EAAc0P,EAAUtd,YAC9B,OF3BD,SAAyBw1L,GAC9B,IAAIpzK,EAAUvN,UAAU3N,OAAS,QAAsB3G,IAAjBsU,UAAU,GAAmBA,UAAU,GAAK,CAAC,EACnF,OAAO,SAAgB4gL,GACrB,SAASC,EAAuB/kL,GAC9B,IAAIglL,EAAehlL,EAAKglL,aACpBC,GAAOC,EAAAA,EAAAA,GAAyBllL,EAAMwjL,GAEtC2B,GAAkBxwL,EAAAA,EAAAA,GAAekwL,EAAIf,EAAcA,EAAc,CAAC,EAAGmB,GAAO,CAAC,EAAG,CAClFG,UAAW3zK,EAAQ2zK,aAEjBC,GAAmBC,EAAAA,EAAAA,GAAeH,EAAiB,GACnDtwL,EAAIwwL,EAAiB,GACrBE,EAAOF,EAAiB,GACxBvwL,EAAQuwL,EAAiB,GAEzBG,EAAgB1B,EAAcA,EAAc,CAAC,EAAGmB,GAAO,CAAC,EAAG,CAC7DpwL,EAAGA,EACH0wL,KAAMA,EACNE,OAAQ3wL,IASV,OANI2c,EAAQi0K,SAAWV,EACrBQ,EAAc92L,IAAMs2L,GACVvzK,EAAQi0K,SAAWV,IAC7BQ,EAAcR,aAAeA,IAGxB3pK,EAAAA,EAAAA,eAAcypK,EAAkBU,EACzC,CAWA,OATAT,EAAuB11L,YAAc,0BAA0BiV,QAAOqhL,EAAAA,EAAAA,IAAeb,GAAmB,KACxGC,EAAuBD,iBAAmBA,EAQnCrzK,EAAQi0K,SAAUE,EAAAA,EAAAA,aANR,SAAoBzyL,EAAOzE,GAC1C,OAAO2sB,EAAAA,EAAAA,eAAc0pK,EAAwB/9K,OAAOW,OAAO,CAAC,EAAGxU,EAAO,CACpE6xL,aAAct2L,IAElB,IAEuDq2L,CACzD,CACF,CEdec,CAAkB,QAAD,OAAS5oL,EAAY4Z,MAAM,EAAG,GAAE,YAAI5Z,EAAY4Z,MAAM,EAAG,GAAE,YAAI5Z,EAAW,YAAIA,GAA/F4oL,CAA8Gl5K,EACzH,CAGI,IAAM5Q,EAAK,+BAAsB4Q,EAAUG,KAAI,kEAE/C,MADAzQ,QAAQN,MAAMA,EAAO4Q,GACf,IAAIpQ,MAAMR,EAExB,CAtCAwpL,EAAAA,GAAAA,IAGS,IAAIhB,GAGRuB,IAAIC,GAEJD,IAAIE,EAAAA,IAGJ9xL,KAAK,CACF+xL,YAAa,KACbvB,UAfU,WAiBVwB,cAAe,CACXC,aAAa,KAwBzB,MAAeZ,EAAI,sCCjDZ,IAAKztK,kCAQX,SARWA,GAAAA,EAAAA,EAAsB,WAAtBA,EAAAA,EAAsB,WAAtBA,EAAAA,EAAsB,WAAtBA,EAAAA,EAAsB,WAAtBA,EAAAA,EAAsB,uBAAtBA,EAAAA,EAAsB,6BAQjC,CARWA,IAAAA,EAAsB,0LCI5BsuK,EAAgB,2BAUT3oK,EAAQ,0CAqBjB,WAAYnkB,EAAgC+sL,EAAqB1yK,GAChE,IAAD,EACI,IADJ,gBACQuD,EAAAA,EAAAA,IAAS5d,KAAU4d,EAAAA,EAAAA,IAASmvK,GAE5B,cAAM/sL,EAAO+sL,EAAgB,OAAJ1yK,QAAI,IAAJA,EAAAA,EAAQ,QAEhC,IAAIvhB,EAAAA,EAAAA,UAASkH,GAClB,CACI,IAAM/E,EAAS6xL,EAAc3qK,KAAKniB,GAClC,GAAe,OAAX/E,GAAqC,IAAlBA,EAAOgC,OAE1B,MAAM,IAAIgG,MAAM,kBAAD,OAAmBjD,EAAK,qBAG3C,IAAMgtL,EAAOhmK,OAAO/rB,EAAO,IACrBgyL,EAAQjmK,OAAO/rB,EAAO,IAAM,EAC5B4jE,EAAM73C,OAAO/rB,EAAO,IAE1B,cAAM+xL,EAAMC,EAAOpuH,EACvB,MAGI,OAFevoE,IAAV0J,EAEL,YAAMA,GAIN,aAO2C,OAJ/C,EAAKs+D,SAAS,EAAG,EAAG,EAAG,GAIvB,EAAK4uH,QAAU,EAAKA,QAAU,iBAAM,UAAW,YACnD,CAmEC,OAnEA,+BAED,WAEI,MAAO,UACX,GAEA,oBAIA,SAAOh8K,GAEH,IAAM87K,EAAOh/K,OAAOnL,KAAK67D,eAAeyuH,SAAS,EAAG,KAC9CF,EAAQj/K,OAAOnL,KAAK87D,WAAa,GAAGwuH,SAAS,EAAG,KAChDtuH,EAAM7wD,OAAOnL,KAAKm8D,WAAWmuH,SAAS,EAAG,KAC/C,MAAM,GAAN,OAAUH,EAAI,YAAIC,EAAK,YAAIpuH,EAAG,iBAClC,GAAC,sBAED,WAEI,OAAOh8D,KAAKuqL,QAChB,GAAC,yBAED,WAEI,OAAOvqL,KAAKuqL,QAChB,GAAC,wBAED,WAEI,OAAOvqL,KAAKm8D,SAChB,GAAC,uBAED,WAEI,OAAOn8D,KAAKi8D,QAChB,GAAC,4BAED,WAEI,OAAOj8D,KAAK67D,aAChB,GAAC,yBAED,WAEI,OAAO77D,KAAKw7D,UAChB,GAAC,gCAED,WAEI,OAAOx7D,KAAK08D,iBAChB,GAAC,2BAED,WAEI,OAAO18D,KAAKwqL,YAChB,GAAC,yBAED,WAEI,OAAOxqL,KAAK87D,UAChB,GAAC,2BAED,WAEI,OAAO97D,KAAKw8D,YAChB,KAAC,EA1HgB,EA0HhB,OA1HyB/kD,OAsIjB8J,EAAQ,0CAyBjB,WAAYpkB,EAAgC+sL,EAAqB1yK,EAAe+jD,EAAgBkG,EAAkBD,EAAkBipH,GACnI,IAAD,EAgBoC,OAhBpC,gBAGQ,GAFA1vK,EAAAA,EAAAA,IAAS5d,KAAU4d,EAAAA,EAAAA,IAASmvK,GAE5B,YAAM/sL,EAAO+sL,EAAgB,OAAJ1yK,QAAI,IAAJA,EAAAA,EAAQ,EAAQ,OAAL+jD,QAAK,IAALA,EAAAA,EAAS,EAAU,OAAPkG,QAAO,IAAPA,EAAAA,EAAW,EAAU,OAAPD,QAAO,IAAPA,EAAAA,EAAW,EAAK,OAAFipH,QAAE,IAAFA,EAAAA,EAAM,QAEnEh3L,IAAV0J,EAEL,YAAMA,GAIN,cAKCktL,QAAU,iBAAM,UAAW,YACpC,CAKC,OALA,+BAED,WAEI,MAAO,UACX,KAAC,EAhDgB,EAgDhB,OAhDyB5yK,2QC3HvB,SAASwD,EAAkB9Z,GAE9B,MAA6C,oBAApCA,EAA2BhO,IACxC,CAMO,IAAMu3L,EAAqB,SAAIvpL,GAElC,OAAOhM,MAAMC,QAAS+L,EAA8B8V,YAAkDxjB,IAAxC0N,EAA8Bic,KAChG,EAMO,SAASutK,EAAexpL,GAE3B,OAAOhM,MAAMC,QAAS+L,EAAuB+/C,MACjD,CAMO,SAASvjC,EAAsBxc,GAElC,OAAOhM,MAAMC,QAAQ+L,IAAUA,EAAM,IAAMwpL,EAAYxpL,EAAM,GACjE,CAMO,SAASypL,EAAazpL,GAEzB,OAAQ0pL,EAAAA,EAAAA,eAAc1pL,KAAUikE,EAAAA,EAAAA,SAAQjkE,SACV1N,IAAzB0N,EAAgB0xD,WACSp/D,IAAzB0N,EAAgB2pL,WACWr3L,IAA3B0N,EAAgB4hC,aACStvC,IAAzB0N,EAAgB4tB,WACUt7B,IAA1B0N,EAAgBmc,KACzB,CAMO,SAASytK,EAA4B5pL,GAExC,YAAyD1N,KAA5C,OAAL0N,QAAK,IAALA,OAAK,EAALA,EAAqC+a,QACjD,CAgBO,IAAM8uK,EAAa,SAACj8J,GAEvB,MAAgB,QAATA,GAA2B,SAATA,CAC7B,EAMO,SAASk8J,EAAW9pL,GAEvB,IAAMmlJ,EAAiB,GAYvB,OAXAnlJ,EAAMqG,SAAQ,SAACyuB,GAEP00J,EAAY10J,GAEZqwH,EAAKl3I,KAAI,MAATk3I,GAAI,OAAS2kC,EAAQh1J,EAAKirB,SAI1BolG,EAAKl3I,KAAK6mB,EAElB,IACOqwH,CACX,8QC3GO,SAAS4kC,EAAW/pL,GAEvB,YAAsB1N,IAAf0N,EAAM2T,MAAqC,OAAf3T,EAAM2T,IAC7C,CAYO,SAASq2K,EAAmBhqL,GAE/B,IAAMiqL,EAASjqL,EACf,OAAOkqL,EAAAA,EAAAA,IAASD,IAAuC,WAAtB,OAANA,QAAM,IAANA,OAAM,EAANA,EAAQE,WAAWn4L,YAA0CM,KAAhB,OAAN23L,QAAM,IAANA,OAAM,EAANA,EAAQG,UAC9E,CAMO,SAAS3xK,EAAOzY,GAEnB,OACIA,aAAiBsW,MACC,kBAAVtW,GACsC,kBAA1C0J,OAAO7G,UAAUzD,SAASyC,KAAK7B,EAE3C,CAMO,SAAS4Z,EAAS5Z,GAErB,OAAO4R,IAAAA,SAAW5R,EACtB,CAiBO,SAASoY,EAAWpY,GAEvB,OACIA,aAAiBqqL,UACC,kBAAVrqL,GACsC,sBAA1C0J,OAAO7G,UAAUzD,SAASyC,KAAK7B,EAE3C,CAyBO,SAASumC,EAAQ5R,EAAe21J,EAAkBC,GAErD,GAAID,EAAW,GAAKA,GAAY31J,EAAI17B,OAEhC,OAAO07B,EAGP41J,GAAY51J,EAAI17B,SAEhBsxL,EAAW51J,EAAI17B,OAAS,GAGxBsxL,EAAW,IAEXA,EAAW,GAGf,IAAMtzL,GAAM,OAAO09B,GAInB,OAFA19B,EAAOguC,OAAOslJ,EAAU,EAAGtzL,EAAOguC,OAAOqlJ,EAAU,GAAG,IAE/CrzL,CACX,CAWO,IAgCMkhB,EAAoB,SAAC/c,EAAaoc,GAE3C,GAAKA,EAKL,CACI,IAAMgzK,GAAmC,IAAtBpvL,EAAI8M,QAAQ,KAAc,IAAM,IAC7CzL,EAAciN,OAAO8T,QAAQhG,GAAaiG,QAAO,SAAC9P,EAAK,GAC5D,IAAD,eAD+DT,EAAG,KAAElR,EAAK,KAErE,OAAK2R,EAMK,GAAN,OAAUA,EAAI,YAAIT,EAAG,YAAIlR,GAJnB,GAAN,OAAUkR,EAAG,YAAIlR,EAMzB,GAAG,IACH,MAAM,GAAN,OAAUZ,GAAG,OAAGovL,GAAU,OAAG/tL,EACjC,CAjBI,OAAOrB,CAkBf,sCCzLO,IAAK7B,EAyGAylL,yDAHZ,SAtGYzlL,GAAAA,EAAS,0BAATA,EAAS,wBAATA,EAAS,+BAATA,EAAS,wBAATA,EAAS,iCAATA,EAAS,qCAATA,EAAS,qCAATA,EAAS,wBAATA,EAAS,0BAATA,EAAS,wBAATA,EAAS,0BAATA,EAAS,+BAATA,EAAS,mCAATA,EAAS,mCAATA,EAAS,qCAATA,EAAS,8BAATA,EAAS,+CAATA,EAAS,0BAATA,EAAS,uCAATA,EAAS,uCAATA,EAAS,gCAATA,EAAS,uCAATA,EAAS,uCAATA,EAAS,wBAATA,EAAS,wBAATA,EAAS,kCAATA,EAAS,sBAATA,EAAS,mCAATA,EAAS,qCAATA,EAAS,0BAATA,EAAS,uCAATA,EAAS,wBAATA,EAAS,uCAATA,EAAS,8BAATA,EAAS,mCAATA,EAAS,mCAATA,EAAS,mCAATA,EAAS,gCAATA,EAAS,mCAATA,EAAS,wBAATA,EAAS,wBAATA,EAAS,8BAATA,EAAS,iCAATA,EAAS,gCAATA,EAAS,sCAATA,EAAS,sCAATA,EAAS,uDAATA,EAAS,oBAATA,EAAS,4BAATA,EAAS,8CAATA,EAAS,4BAATA,EAAS,oCAATA,EAAS,wBAATA,EAAS,sBAATA,EAAS,4BAATA,EAAS,4BAATA,EAAS,wBAATA,EAAS,0BAATA,EAAS,wBAATA,EAAS,4BAATA,EAAS,mCAATA,EAAS,sBAATA,EAAS,8CAATA,EAAS,iCAATA,EAAS,sBAATA,EAAS,sBAATA,EAAS,0BAATA,EAAS,0BAATA,EAAS,oCAATA,EAAS,0BAATA,EAAS,qCAATA,EAAS,wBAATA,EAAS,wBAATA,EAAS,4BAATA,EAAS,gCAATA,EAAS,wBAATA,EAAS,0BAATA,EAAS,2CAATA,EAAS,6BAATA,EAAS,0BAATA,EAAS,yCAATA,EAAS,iCAATA,EAAS,sCAATA,EAAS,0BAATA,EAAS,8BAATA,EAAS,qCAATA,EAAS,qCAATA,EAAS,sBAATA,EAAS,8BAATA,EAAS,wBAATA,EAAS,mCAATA,EAAS,kCAATA,EAAS,oDAATA,EAAS,uCAATA,EAAS,+BAATA,EAAS,kCAATA,EAAS,4BAATA,EAAS,gCAsGrB,CAtGYA,IAAAA,EAAS,KA4MpB,SAnGWylL,GAAAA,EAAW,4BAAXA,EAAW,0BAAXA,EAAW,iCAAXA,EAAW,0BAAXA,EAAW,mCAAXA,EAAW,uCAAXA,EAAW,uCAAXA,EAAW,0BAAXA,EAAW,4BAAXA,EAAW,0BAAXA,EAAW,4BAAXA,EAAW,iCAAXA,EAAW,qCAAXA,EAAW,qCAAXA,EAAW,uCAAXA,EAAW,gCAAXA,EAAW,iDAAXA,EAAW,4BAAXA,EAAW,yCAAXA,EAAW,yCAAXA,EAAW,kCAAXA,EAAW,yCAAXA,EAAW,0BAAXA,EAAW,0BAAXA,EAAW,oCAAXA,EAAW,wBAAXA,EAAW,qCAAXA,EAAW,uCAAXA,EAAW,4BAAXA,EAAW,yCAAXA,EAAW,0BAAXA,EAAW,yCAAXA,EAAW,gCAAXA,EAAW,qCAAXA,EAAW,qCAAXA,EAAW,qCAAXA,EAAW,uCAAXA,EAAW,qCAAXA,EAAW,0BAAXA,EAAW,0BAAXA,EAAW,gCAAXA,EAAW,mCAAXA,EAAW,kCAAXA,EAAW,wCAAXA,EAAW,wCAAXA,EAAW,yDAAXA,EAAW,sBAAXA,EAAW,8BAAXA,EAAW,gDAAXA,EAAW,8BAAXA,EAAW,sCAAXA,EAAW,0BAAXA,EAAW,wBAAXA,EAAW,8BAAXA,EAAW,8BAAXA,EAAW,0BAAXA,EAAW,oBAAXA,EAAW,0BAAXA,EAAW,8BAAXA,EAAW,qCAAXA,EAAW,wBAAXA,EAAW,gDAAXA,EAAW,mCAAXA,EAAW,wBAAXA,EAAW,wBAAXA,EAAW,4BAAXA,EAAW,4BAAXA,EAAW,sCAAXA,EAAW,4BAAXA,EAAW,uCAAXA,EAAW,0BAAXA,EAAW,0BAAXA,EAAW,8BAAXA,EAAW,kCAAXA,EAAW,0BAAXA,EAAW,4BAAXA,EAAW,6CAAXA,EAAW,+BAAXA,EAAW,4BAAXA,EAAW,2CAAXA,EAAW,mCAAXA,EAAW,wCAAXA,EAAW,4BAAXA,EAAW,gCAAXA,EAAW,uCAAXA,EAAW,uCAAXA,EAAW,wBAAXA,EAAW,gCAAXA,EAAW,0BAAXA,EAAW,qCAAXA,EAAW,oCAAXA,EAAW,sDAAXA,EAAW,yCAAXA,EAAW,iCAAXA,EAAW,oCAAXA,EAAW,8BAAXA,EAAW,kCAmGtB,CAnGWA,IAAAA,EAAW,+KCzGhB,IAeyBp6J,EAfrB6lK,EAAS,SAAU51J,EAAWpO,EAAOE,GAAQ,OAAO,SAAU3qB,GAAS,OAAO64B,EAAU74B,GAASyqB,EAAMzqB,GAAS2qB,EAAK3qB,EAAQ,CAAG,EAKhI0uL,EAAU,WAEjB,IADA,IAAI7jL,EAAO,GACF+pK,EAAK,EAAGA,EAAKhqK,UAAU3N,OAAQ23K,IACpC/pK,EAAK+pK,GAAMhqK,UAAUgqK,GAEzB,OAAO,SAAU96J,GAAQ,OAAOjP,EAAK8jL,aAAY,SAAUh1F,EAAKi1F,GAAQ,OAAOA,EAAKj1F,EAAM,GAAG7/E,EAAO,CACxG,EAQW+0K,EAAW,SAAUjmK,GAAK,OAAOA,CAAG,KAJfA,ECLL,YCVhBkmK,EAAY,SAAU9uL,GAAS,OAAiB,OAAVA,QAA4B1J,IAAV0J,CAAqB,EAI7E+uL,EAAU,SAAU/uL,GAAS,OAAiB,OAAVA,QAA4B1J,IAAV0J,CAAqB,EAI3E/H,EAAU,SAAU+H,GAAS,OAAOhI,MAAMC,QAAQ+H,EAAQ,EAI1DipB,EAAa,SAAUjpB,GAAS,MAAwB,oBAAVA,CAAsB,EAIpElH,EAAW,SAAUkH,GAAS,MAAwB,kBAAVA,CAAoB,EAYhEgvL,EAAyB,SAAUhvL,GAAS,OAJtB,SAAUA,GAAS,OAAO+uL,EAAQ/uL,IAAkC,IAAxBA,EAAM4yB,OAAO31B,MAAc,CAIzCgyL,CAAoBjvL,EAAQ,EAIhFkvL,EAAY,SAAUlvL,GAAS,OAAQ8oB,MAAM9oB,EAAQ+M,WAAW/M,GAAS,EAIzEyc,EAAS,SAAUzc,GAAS,OAAOA,GAASA,EAAM0jB,OAAS,ECjC3DkqK,EAA8B,SAAUvkK,GAC/C,OAAOylK,EAAUzlK,EAAOtK,QAC5B,ECPIoM,EAAc,CAAC,EACfD,EAAc,sDAElBC,OAAY,GAAe,SAAUtY,GAAO,OAAOA,CAAK,EAIjD,ICmFes8K,ECjEMC,ECtBjBC,EHIAjkK,EAAS,SAAUzK,EAAOujB,GACjC,IAAIhzB,EAAMyP,EAAQujB,EAClB,GAAI/Y,EAAYja,GACZ,OAAOia,EAAYja,GAEvB,IAAIma,EAAS,GAeb,OAdA1K,EAAM1b,QAAQimB,GAAa,SAAUtV,EAAGzY,EAAOouB,EAAe5K,GAC1D0K,EAAOpZ,KAAK68K,EAAU3xL,GAASA,EAASouB,GAAiB5K,EAE7D,IACAwK,EAAYja,GAAO,SAAU2B,GAEzB,IADA,IAAI5X,EAAS4X,EACJyE,EAAM,EAAGA,EAAM+T,EAAOpuB,OAAQqa,IAEnC,GADArc,EAASA,EAAOowB,EAAO/T,KAClBw3K,EAAU7zL,IAAWipC,EACtB,OAAOjpC,EAGf,OAAOA,CACX,EACOkwB,EAAYja,EACvB,ECjBWo+K,EAAS,SAAUz2J,GAAa,OAAO,SAAU3hB,GAExD,IADA,IAAIrM,EAAO,GACF+pK,EAAK,EAAGA,EAAKhqK,UAAU3N,OAAQ23K,IACpC/pK,EAAK+pK,EAAK,GAAKhqK,UAAUgqK,GAE7B,OAAO/7I,IAAc,GAAK3hB,EAAI,GAAKrM,EAAK,GAAKqM,EAAI,GAAKrM,EAAK,EAC/D,CAAG,EAUQ0kL,EAAQ,SAAUngL,GACzB,IAAIuR,EAAQvR,EAAGuR,MAAO3gB,EAAQoP,EAAGpP,MAAOwvL,EAAapgL,EAAGogL,WAAYC,EAAWrgL,EAAGqgL,SAClF,MAAQ,CACJzvL,MAAO,IAAMA,EAAMiF,QAAQ,KAAM,MAAQ,IACzC0b,MAAOA,EACP6uK,WAAYA,EACZC,SAAUA,EAElB,EAIWC,EAAc,SAAUtgL,GAC/B,IAAIuR,EAAQvR,EAAGuR,MAAO3gB,EAAQoP,EAAGpP,MAAOwvL,EAAapgL,EAAGogL,WAAYC,EAAWrgL,EAAGqgL,SAClF,MAAQ,CACJzvL,MAAO,GAAK2mL,mBAAmB3mL,GAC/B2gB,MAAOA,EACP6uK,WAAYA,EACZC,SAAUA,EAElB,EA4BWE,EAAgB,SAAU/mK,GAAK,OAAO9vB,EAAS8vB,EAAE5oB,MAAQ,EC7DhE4vL,EAAW,SAAU1+K,GAAO,OAAO,SAAUlR,GAAS,MAAO,CAACkR,EAAKlR,EAAQ,CAAG,EAC9EgwF,EAAQ,WAAc,OAAO,IAAM,EAEnCnqD,EAAM,SAAUgqJ,GAAY,OAAO,SAAU7vL,GAAS,OAAO8uL,EAAUe,EAAS7vL,GAAS,CAAG,EAC5F8vL,EAAa,SAAUD,GAAY,OAAO,SAAU7vL,GAAS,OAF3C,SAAUA,GAAS,OAAO8uL,EAAU9uL,IAAU/H,EAAQ+H,IAAUA,EAAM/C,OAAS,CAAG,CAEhC8yL,CAAgBF,EAAS7vL,GAAS,CAAG,EACzGgwL,EAAa,SAAUn3J,EAAW3P,GAAM,OAAOulK,EAAO51J,EAAW3P,EAAI8mE,EAAQ,EAK7EigG,EAAoB,SAAUJ,EAAUK,GAAa,OAAO,SAAU1tL,GAAS,OAAQqtL,EAASrtL,GAAOtF,IAAIgzL,GAAW37J,KAAK,IAAO,CAAG,EAQrI47J,EALOzB,EAAQ3jL,WAAM,EAKU,CAAC,CAAC,IAAM,IAAK,CAAC,IAAK,MALZ7N,KAAI,SAAUkS,GAChD,IAAIub,EAAOvb,EAAG,GAAIqb,EAAQrb,EAAG,GAC7B,OAAO,SAAUd,GAAK,OAAOA,EAAErJ,QAAQ,IAAIC,OAAOylB,EAAM,KAAMF,EAAQ,CAC1E,KAGA2lK,GARwBhB,EAQK,IARU,SAAUl4K,GAAO,OAAOA,EAAIqG,MAAM,EAAGrG,EAAIhL,QAAQkjL,GAAQ,GAShGiB,EAAqB,SAAUjhL,GAC/B,IAAIuR,EAAQvR,EAAGuR,MAAOnM,EAAKpF,EAAGuF,IAC9B,OAAOgM,EAAQ,UADiC,IAAPnM,EAAgB,MAAQA,EAErE,EAKIm5K,EAAOviK,EAAO,QACd2vE,EAAa3vE,EAAO,cACpBsqC,EAAOtqC,EAAO,QACdjL,EAAQiL,EAAO,SACfwG,EAAOxG,EAAO,QAAQ,GACtBklK,EAAaL,EAAkBr+J,EAAMy+J,GACrCE,EAAcN,EAAkB9vK,EAAOkwK,GACvCG,EAAmBP,EAAkBl1F,GAXhB,SAAU3rF,GAE/B,OADYA,EAAGuR,MACA,IADmBvR,EAAGiR,SAEzC,IAUIowK,EAAkB/B,GADA,SAAU1uL,GAAS,MAAO,YAAcA,EAAQ,GAAK,GAC5BowL,EAAgBD,EAAsB73K,KAAKiB,WD9BvE,SAAUc,GACzB,OAAO,IAAIC,KAAKA,KAAKo2K,IAAIr2K,EAAKqkD,cAAerkD,EAAKskD,WAAYtkD,EAAK2kD,UAAW3kD,EAAKgkD,WAAYhkD,EAAKgzK,aAAchzK,EAAKglD,aAAchlD,EAAKklD,mBAC9I,IC4CIoxH,EAAgBjC,EAAQkB,EAAS,SA/CtB,SAAUxgL,GACrB,IAAIsmD,EAAOtmD,EAAGsmD,KAAMi4H,EAAOv+K,EAAGu+K,KAC9B,OAAOhqK,KAAK8K,OAAOinC,GAAQ,GAAKi4H,GAAQ,CAC5C,IA6CIiD,EAAgBlC,EAAQkB,EAAS,YAAajC,GAC9CkD,EAAiBnC,EAAQkB,EAAS,SAAUW,GAC5CO,EAAgBpC,EAAQkB,EAAS,QAASU,GAC1CS,EAAsBrC,EAAQkB,EAAS,aAAcY,GACrDQ,EAAgBhB,EAAWnqJ,EAAI6vB,GAAOi7H,GACtCM,EAAoBjB,EAAWnqJ,EAAI8nJ,GAAOiD,GAC1CM,EAAiBlB,EAAWF,EAAW3vK,GAAQ0wK,GAC/CM,EAAsBnB,EAAWnqJ,EAAIk1D,GAAag2F,GAClDK,GAAgB1C,EAAQsB,EAAWF,EAAWl+J,GAAOk/J,IAfrC,SAAUtuL,GAAS,OAAOkL,OAAOW,OAAO,CAAC,EAAG7L,EAAO,CACnEovB,MAAOA,EAAKpvB,IAAU,IAAIojC,QAAO,SAAUx2B,GACvC,IAAIuF,EAAMvF,EAAGuF,IACb,OAAOq6K,EAAuBr6K,EAClC,KACA,IAWA08K,GAAW,SAAUjiL,GACrB,IAAIuR,EAAQvR,EAAGuR,MACf,OAAOquK,EAAuBruK,EAClC,EACI2wK,GAAkB,SAAUliL,GAE5B,OADYA,EAAGuR,MACA,IADkBvR,EAAGqgL,SACJ,IADsBrgL,EAAGpP,KAE7D,EACIuxL,GAAgB9C,GDNK,SAAU7lK,GAAK,OAAOnM,EAAOmM,EAAE5oB,MAAQ,GCMxB0uL,EAAQ4C,IAjC/B,SAAUliL,GACvB,IAAIuR,EAAQvR,EAAGuR,MAAO3gB,EAAQoP,EAAGpP,MAAOwvL,EAAapgL,EAAGogL,WAAYC,EAAWrgL,EAAGqgL,SAClF,MAAQ,CACJzvL,MAAOywL,EAAgBzwL,GACvB2gB,MAAOA,EACP6uK,WAAYA,EACZC,SAAUA,EAElB,IAyB8E6B,IAE1E/8J,GAAO,SAAUnlB,GAEjB,MAAO,IADKA,EAAGoiL,MACM,GACzB,EACIC,GAAY,SAAZA,EAAsB7lF,GAAU,ODRN,SAAU1uG,EAAKq3B,GAAQ,OAAO,SAAUqR,GAElE,OADe0pJ,GAAO,WAAc,OAAO1pJ,EAAO7mB,QAAQ9hB,OAAS,CAAG,GAC/Dy0L,CAASvC,IAAqBA,EAAmBwC,EAAAA,GAA6B,CAAC,IAAK,KAAM,CAAC,IAC9F,OAAQ/rJ,EAAO7mB,QACd7hB,IAAIA,GACJq3B,KAAKA,EAAKqR,IACnB,CAAG,CCEwCgsJ,EAAiB,SAAUhsJ,GAAU,OAAO6oJ,EAAOb,EAA6B6D,EAAU7lF,GALhH,SAAUA,GAAU,OAAOokF,EAAWqB,GAAU5C,EAAOkB,EAAejB,EAAQ4C,GAAiB/B,EAAO3jF,EAAS8jF,EAAcb,GAAW0C,IAAiB,CAKhCM,CAAejmF,GAAtE6iF,CAA+E7oJ,EAAS,GAAGrR,GAAO,EACrLu9J,GAAkB,SAAU1iL,EAAIw8F,GAChC,IAAIhmE,EAASx2B,EAAGw2B,OAChB,GAAIA,GAAUA,EAAO7mB,QAAS,CAC1B,IAAIA,EAAU0yK,GAAU7lF,EAAV6lF,CAAkB7rJ,GAChC,GAAI7mB,EAAQ9hB,OACR,MAAO,CAAC,SAAU8hB,EAE1B,CACA,OAAO,IACX,EACIgzK,GAAQ,SAAUvvL,EAAOopG,GAEzB,YADe,IAAXA,IAAqBA,GAAS,GAC3B,SAAU16F,GAAO,MAAQ,CAC5B,WAAcigL,EAAoB3uL,GAClC,OAAUsvL,GAAgBtvL,EAAOopG,GACjC,MAASslF,EAAe1uL,GACxB,KAAQwuL,EAAcxuL,GACtB,KAAQ4uL,GAAc5uL,GACtB,KAAQyuL,EAAkBzuL,IAC5B0O,EAAO,CACb,EA0GWwQ,GAA4B,SAAUlf,GAAS,OArN5BoQ,EAqNkDlF,OAAO4E,KAAK9P,GACvFtF,IAAI60L,GAAMvvL,IACVojC,OAAOkpJ,GAvNmCl8K,EAAO6O,QAAO,SAAUk4E,EAAKvqF,GACxE,IAAI8B,EAAM9B,EAAG,GAAIpP,EAAQoP,EAAG,GAC5B,OAAOuqF,EAAI3uF,OAAO,CAACkG,EAAM,IAAMlR,GACnC,GAAG,KAoNqBu0B,KAAK,KAvNT,IAAU3hB,CAuNM,EAQzByJ,GAAsB,SAAU7Z,GAAS,OAAiBkL,OAAO4E,KAAK9P,GAC5EtF,IAAI60L,GAAMvvL,GAAO,IACjBojC,OAAOkpJ,GA7NqCrtK,QAAO,SAAUk4E,EAAKvqF,GACnE,IACIoF,EADAtD,EAAM9B,EAAG,GAAIpP,EAAQoP,EAAG,GAE5B,OAAQuiL,EAAAA,GAAiB,CAAC,EAAGh4F,IAAMnlF,EAAK,CAAC,GAAMtD,GAAOlR,EAAOwU,GACjE,GAAG,CAAC,EAyNsB,EEpOtBsX,GAAM,SAAUnL,EAAOlQ,EAAQzQ,GAE/B,OADAyQ,EAAOkQ,GAAS3gB,EACTyQ,CACX,EAEIa,GAAO,SAAUmmC,GAAa,OAAO,SAAU5kC,GAC/C,IAFwBqE,EAEpBlX,EAAQ6S,EAAI4kC,GAChB,OAAIq3I,EAAU9uL,GACHA,EAEJ6S,GANiBqE,EAMDugC,EANevgC,EAAIjS,QAAQ,aAAa,SAAU2Q,EAAGo8K,GAAM,OAAOA,EAAGpkK,aAAe,KAO/G,CAAG,EACCypB,GAAS/lC,GAAK,UACd2gL,GAAsB3gL,GAAK,uBAC3BtR,GAAQsR,GAAK,SACb4gL,GAAU,SAAU9gL,GAAU,OAAO,SAAUwB,GAAU,OAAOlF,OAAO4E,KAAKM,GAAQ6O,OAAOrQ,EAAOxO,KAAK,KAAMgQ,GAAS,CAAC,EAAI,CAAG,EAC9Hu/K,GAAqBD,IAAQ,SAAU7oK,EAAQswE,EAAKh5E,GAAS,OAAOmL,GAAInL,EAAMiN,cAAe+rE,EAAKtwE,EAAO1I,GAAS,IAClHyxK,GAAsBF,IAAQ,SAAU7oK,EAAQswE,EAAKh5E,GAAS,OAAOmL,GAAInL,EAAOg5E,EAAKw4F,GAAmB9oK,EAAO1I,IAAU,IACzH2R,GAAiB,SAAUtyB,EAAOuyB,GAAgB,OAAOu8J,EAAU9uL,GAASA,EAAQuyB,CAAc,EAQlG8/J,GAAiB3D,GAAQ,SAAUt/K,GACnC,IAAIuR,EAAQvR,EAAGuR,MAAO2xK,EAAeljL,EAAGkjL,aAActyL,EAAQoP,EAAGpP,MAAO+6F,EAAa3rF,EAAG2rF,WAAYh3C,EAAQ30C,EAAG20C,MAC/G,MAAQ,CACJg3C,WAAYq3F,GAAoBr3F,GAChCp6E,MAAOA,EACPojC,MAAOuuI,EAAevuI,EAAM7mD,IAAIm1L,IAAkBtuI,EAClD/jD,MAAOA,EAEf,IAfqB,SAAUmgB,GAAS,MAAQ,CAC5C46E,WAAY56E,EAAMuxD,YAAcvxD,EAAM46E,WACtCp6E,MAAOR,EAAMoyK,QAAUpyK,EAAMk3B,QAAUl3B,EAAMQ,MAC7C2xK,aAAcnyK,EAAMqyK,cAAgBryK,EAAMmyK,eAAgB,EAC1DvuI,MAAO5jC,EAAMsyK,OAAStyK,EAAM4jC,MAC5B/jD,MAAOsyB,GAAenS,EAAMuyK,IAAKpgK,GAAenS,EAAMjP,IAAKiP,EAAMngB,QACjE,IAgBOogB,GAAkC,SAAUtG,GAAQ,OAAOA,EAAK5c,IAAIm1L,GAAiB,EAOrF9xK,GAA4B,SAAUzG,GAAQ,OAASA,GAAQ,IAAI2H,QAAO,SAAUk4E,EAAK/wE,GAAK,OAAOkD,GAAIurB,GAAOzuB,GAAI+wE,EAAK7tE,GAAImmK,GAAoBrpK,GAAGgF,cAAe+rE,EAAItiD,GAAOzuB,KAAO,CAAC,EAAG5oB,GAAM4oB,IAAM,GAAG,CAAC,EAAK,ECjDrN+pK,GAAU,SAAUjhK,EAAGjkB,GACvB,OAAIshL,EAAQr9J,GACDA,IAAMjkB,EAAI,GAAK,EAEtBshL,EAAQthL,GACD,EAEPikB,EAAEkhK,cACKlhK,EAAEkhK,cAAcnlL,GAEpBikB,EAAIjkB,EAAI,EAAKikB,EAAIjkB,GAAK,EAAI,CACrC,EACIolL,GAAc,SAAUnhK,EAAGjkB,GAAK,OAAOklL,GAAQllL,EAAGikB,EAAI,EACtDohK,GAAmB,SAAUC,GAC7B,IAAIzhL,EAAO8Z,EAAO2nK,EAAWpyK,OAAO,GACpC,OAAO,SAAU+Q,EAAGjkB,GAAK,OAA2B,QAAnBslL,EAAWp+K,IAAgBg+K,GAAUE,IAAavhL,EAAKogB,GAAIpgB,EAAK7D,GAAK,CAC1G,EACIqvJ,GAAU,SAAU1tJ,EAAIoF,GAAM,OAAO,CAAG,ECVjCw+K,GAAkB,SAAUryK,GACnC,IAAIrP,EAAO8Z,EAAOzK,GAAO,GACrB++B,EAAW,EACf,OAAO,SAAUuzI,EAAKjzL,GAClBizL,EAAItyK,GAASsyK,EAAItyK,IAAU,CAAC,EAC5B,IAAIuyK,EAAa5hL,EAAKtR,GAClBkR,EAbQ,SAAUlR,GAE1B,OADAA,EAAQ8uL,EAAU9uL,IAAUA,EAAM0jB,QAAU1jB,EAAM0jB,UAAY1jB,GAC/C,EACnB,CAUkBmzL,CAAcD,GACpBtgL,EAASqgL,EAAItyK,GAAOzP,IAAQ,CAAEkiL,WAAY1zI,IAAYq7C,WAAY,CAAC,EAAGh3C,MAAO,GAAI/jD,MAAOkzL,GAG5F,OAFAtgL,EAAOmxC,MAAM9xC,KAAKjS,GAClBizL,EAAItyK,GAAOzP,GAAO0B,EACXqgL,CACX,CACJ,EA4EWI,GAAuB,SAAUC,GACxC,IAAIC,EAAYD,EAAYp2L,KAAI,SAAU61L,GACtC,IAAIS,EAAgBpoK,EAAO2nK,EAAWpyK,OAAO,GACzC8yK,GAAiBV,EAAW1yK,WAAa,IAAIuN,cAC7C8lK,EAAoBtoK,EAAOqoK,GAAe,GAC9C,OAAO,SAAUjxL,EAAOxC,GACpB,IAAI2zL,EAAkBnxL,EAAMuwL,EAAWpyK,QAAU,CAAC,EAC9CizK,EAAoBF,EAAkBC,IArEhC,SAAUngL,GAAQ,MAAQ,CAC5CsgE,QAAS,WACL,IAAI9zE,EAAQ,EACRu8C,EAAQ,EACZ,MAAO,CACHs3I,KAAM,SAAUjF,GACRM,EAAUN,IACV5uL,GAAS4uL,EACTryI,KAGAv8C,EAAQ4uL,CAEhB,EACA3zL,OAAQ,WAAc,OAAOi0L,EAAUlvL,GAASA,EAAQu8C,EAAQv8C,CAAO,EAE/E,EACAu8C,MAAO,WACH,IAAI/5C,EAAQ,EACZ,MAAO,CACHqxL,KAAM,WAAc,OAAOrxL,GAAS,EACpCvH,OAAQ,WAAc,OAAOuH,CAAO,EAE5C,EACA6rB,IAAK,WACD,IAAI7rB,EAAQwkB,OAAO8sK,kBACnB,MAAO,CACHD,KAAM,SAAU7zL,IACZwC,EAAQ0sL,EAAU1sL,IAAUia,EAAOja,GAASA,EAAQxC,GACxCA,IAAUkvL,EAAUlvL,IAAUyc,EAAOzc,MAC7CwC,EAAQxC,EAEhB,EACA/E,OAAQ,WAAc,OAAOuH,CAAO,EAE5C,EACAgvB,IAAK,WACD,IAAIhvB,EAAQwkB,OAAO+sK,kBACnB,MAAO,CACHF,KAAM,SAAU7zL,IACZwC,EAAQ0sL,EAAU1sL,IAAUia,EAAOja,GAASA,EAAQxC,GACxCA,IAAUkvL,EAAUlvL,IAAUyc,EAAOzc,MAC7CwC,EAAQxC,EAEhB,EACA/E,OAAQ,WAAc,OAAOuH,CAAO,EAE5C,EACAmvE,IAAK,WACD,IAAInvE,EAAQ,EACZ,MAAO,CACHqxL,KAAM,SAAU7zL,GACZA,EAAQ8uL,EAAU9uL,GAASA,EAAQ,EACnCwC,GAASxC,CACb,EACA/E,OAAQ,WAAc,OAAOuH,CAAO,EAE5C,GACFgR,IAAU,CAYOwgL,CAAgBP,GAIvB,OAHAG,EAAkBC,KAAKL,EAAcxzL,IACrC2zL,EAAgBZ,EAAW1yK,WAAauzK,EACxCpxL,EAAMuwL,EAAWpyK,OAASgzK,EACnBnxL,CACX,CACJ,IACA,OAAO,SAAUA,EAAOxC,GAAS,OAAOuzL,EAAU9xK,QAAO,SAAUwxK,EAAKY,GAAQ,OAAOA,EAAKZ,EAAKjzL,EAAQ,GAAGwC,EAAQ,CACxH,EAOWwI,GAAS,SAAU2tB,EAAK34B,GAE/B,OADA24B,EAAI1mB,KAAKjS,GACF24B,CACX,EAKWz7B,GAAM,SAAUi4B,GAAa,OAAQ,SAAU1T,GAAU,OAAQ,SAAUk4E,EAAKi1F,EAAMzxL,GAAS,OAAOskB,EAAOk4E,EAAKxkE,EAAUy5J,EAAMzxL,GAAS,CAAI,CAAI,EAKnJyoC,GAAS,SAAU/M,GAAa,OAAQ,SAAUpX,GAAU,OAAQ,SAAUk4E,EAAKi1F,GAAQ,OAAO/1J,EAAU+1J,GAAQntK,EAAOk4E,EAAKi1F,GAAQj1F,CAAK,CAAI,CAAI,EAIrJs6F,GAAsB,SAAU5qK,GACvC,OAAOylK,EAAUzlK,EAAO6qK,QAC5B,EACIC,GAAU,SAAUvrK,GACpB,OAAIqrK,GAAoBrrK,GACbA,EAEJ,CACHsrK,QAAStrK,EACTurK,SAAS,EAEjB,EAoBWhyK,GAAO,SAAUgT,EAAW+9C,EAAcp5D,GAEjD,IADA,IAAI7e,EAASi4E,EACJ57D,EAAM,EAAG88K,EAAWt6K,EAAK7c,OAAQqa,EAAM88K,EAAU98K,IAEtD,GADArc,EAASk6B,EAAUl6B,EAAQ6e,EAAKxC,GAAMA,GAClC28K,GAAoBh5L,GAAS,CAC7BA,EAASA,EAAOi5L,QAChB,KACJ,CAEJ,OAAOj5L,CACX,ECjLI4zL,GAAW3xL,IAAI,SAAU0rB,GAAK,OAAOA,CAAG,IA+BjCyrK,GAAc,SAAUv6K,EAAMw5K,EAAagB,QAC9B,IAAhBhB,IAA0BA,EAAc,SACvB,IAAjBgB,IAA2BA,EAAezF,IAC9C,IAAI37G,EAAe,CAAC,EACpB,OAAKogH,EAAYr2L,ODXS,SAAUhC,GAQpC,YAPe,IAAXA,IAAqBA,EAAS,CAAC,GACnCyS,OAAO4E,KAAKrX,GAAQoP,SAAQ,SAAUsW,GAClC,IAAIo6E,EAAa9/F,EAAO0lB,GACxBjT,OAAO4E,KAAKyoF,GAAY1wF,SAAQ,SAAUgW,GACtC06E,EAAW16E,GAAa06E,EAAW16E,GAAWplB,QAClD,GACJ,IACOA,CACX,CCMWs5L,CADMpyK,GAAKmyK,EAAajB,GAAqBC,IAAepgH,EAAcp5D,IAFtEo5D,CAIf,ECNIshH,GAAoB,SAApBA,EAA8BzB,GAC1BA,EAAWh0K,UACXg0K,EAAWh0K,QAAUg0K,EAAWh0K,QAAQ7hB,KAAI,SAAU0oC,GAClD,IApCgB10B,EAoCZjW,EAASyS,OAAOW,OAAO,CAAC,EAAGu3B,GAO/B,OANKgoJ,EAA4BhoJ,IAAW9sC,EAAS8sC,EAAO6pJ,YACxDx0L,EAAOw0L,SAtCoB,CACvC,KAAM,MACN,IAAK,KACL,KAAM,MACN,KAAM,KACN,IAAK,KACL,KAAM,MACNgF,MAAO,KACPrgK,OAAQ,KACRsgK,QAAS,KACTC,GAAI,MACJC,QAAS,KACTC,YAAa,KACbC,iBAAkB,MAClBC,QAAS,UACTC,UAAW,KACXC,cAAe,KACfC,uBAAwB,MACxBC,WAAY,KACZC,oBAAqB,MACrBC,WAAY,aACZC,aAAc,MACdC,OAAQ,SACRC,GAAI,MACJC,KAAM,KACNC,SAAU,KACVC,cAAe,MACfjmC,GAAI,MACJkmC,SAAU,MACVC,UAAW,MACXC,WAAY,MACZC,eAAgB,mBA/BQ7kL,EAsCkB00B,EAAO6pJ,UAN/C7hK,gBAAkB1c,GAQR08K,EAA4BhoJ,IAC5B4uJ,EAAkBv5L,GAEfA,CACX,IAER,EAkBW+6L,GAAmB,SAAUjD,GAKpC,OAJIjE,EAAUiE,KACVA,EAnBkB,SAAUA,GAChC,OAAKnF,EAA4BmF,GAM1BrlL,OAAOW,OAAO,CAAC,EAAG0kL,GALd,CACHh0K,QAAS9mB,EAAQ86L,GAAcA,EAAa,CAACA,GAC7CvB,MAAO,MAInB,CAWqByE,CAAoBlD,GACjCyB,GAAkBzB,IAEfA,CACX,ECrEIvB,GAAQ,CACR,GAAM,CACFxmL,OAAQ,SAAU2uF,EAAKzwE,GAAM,OAAO,SAAUwI,GAAK,OAAOioE,EAAIjoE,IAAMxI,EAAGwI,EAAI,CAAG,EAC9Em9J,SAAU,WAAc,OAAO,CAAO,GAE1C,IAAO,CACH7jL,OAAQ,SAAU2uF,EAAKzwE,GAAM,OAAO,SAAUwI,GAAK,OAAOioE,EAAIjoE,IAAMxI,EAAGwI,EAAI,CAAG,EAC9Em9J,SAAU,WAAc,OAAO,CAAM,IAGzCqH,GAAe,CACfjqL,SAAU,SAAUylB,EAAGjkB,GAAK,OAAQikB,GAAK,IAAIxlB,QAAQuB,IAAM,CAAG,EAC9D0oL,eAAgB,SAAUzkK,EAAGjkB,GAAK,OAAiC,KAAzBikB,GAAK,IAAIxlB,QAAQuB,EAAW,EACtE2oL,eAAgB,SAAU1kK,EAAGjkB,GAAK,OAAQikB,GAAK,IAAIxlB,QAAQuB,GAAIikB,GAAK,IAAIz0B,QAAUwQ,GAAK,IAAIxQ,QAAU,CAAG,EACxGo5L,iBAAkB,SAAU3kK,EAAGjkB,GAAK,OAAwC,KAAhCikB,GAAK,IAAI4kK,YAAY7oL,EAAG,EAAW,EAC/E8oL,SAAU,SAAU7kK,EAAGjkB,GAAK,OAAQikB,GAAK,IAAIxlB,QAAQuB,GAAIikB,GAAK,IAAIz0B,QAAUwQ,GAAK,IAAIxQ,SAAW,CAAG,EACnGu5L,GAAI,SAAU9kK,EAAGjkB,GAAK,OAAOikB,IAAMjkB,CAAG,EACtCgpL,GAAI,SAAU/kK,EAAGjkB,GAAK,OAAOikB,EAAIjkB,CAAG,EACpCipL,IAAK,SAAUhlK,EAAGjkB,GAAK,OAAOikB,GAAKjkB,CAAG,EACtCsnL,QAAS,SAAUrjK,GAAK,MAAa,KAANA,CAAU,EACzC2jK,WAAY,SAAU3jK,GAAK,MAAa,KAANA,CAAU,EAC5CilK,UAAW,SAAUjlK,GAAK,OAAOo9J,EAAUp9J,EAAI,EAC/C6jK,OAAQ,SAAU7jK,GAAK,OAAOq9J,EAAQr9J,EAAI,EAC1CklK,GAAI,SAAUllK,EAAGjkB,GAAK,OAAOikB,EAAIjkB,CAAG,EACpCopL,IAAK,SAAUnlK,EAAGjkB,GAAK,OAAOikB,GAAKjkB,CAAG,EACtCqpL,IAAK,SAAUplK,EAAGjkB,GAAK,OAAOikB,GAAKjkB,CAAG,EACtCspL,WAAY,SAAUrlK,EAAGjkB,GAAK,OAAuC,KAA/BikB,GAAK,IAAI4kK,YAAY7oL,EAAG,EAAU,GAExEupL,GAAa,sBA8CbC,GAAkB,SAAU7nL,GAC5B,IAAIuR,EAAQvR,EAAGuR,MAAO6uK,EAAapgL,EAAGogL,WAAYxvL,EAAQoP,EAAGpP,MAAOyvL,EAAWrgL,EAAGqgL,SAClF9uK,EAASmuK,EAAUnuK,GAAsCA,EAA7B,SAAU+Q,GAAK,OAAOA,CAAG,EACrD89J,GAAaV,EAAUU,IAAcA,EACrC,IAAI0H,EAlCU,SAAU5lL,EAAMtR,EAAOwvL,GACrC,IAAKV,EAAU9uL,GACX,OAAOsR,EAEX,IAAIqoF,EAAMroF,EACV,GAAIxY,EAASkH,GAAQ,CACjB,IAAIqa,EAAO28K,GAAW70K,KAAKniB,GACvBqa,EACAra,EAAQ,IAAIsa,MAAMD,EAAK,IAGvBs/E,EAAM,SAAUjoE,GACZ,IAAI9I,EAAItX,EAAKogB,GACb,MAAiB,kBAAN9I,GAAkB4mK,EAClB5mK,EAAEgF,cAGFshK,EAAUtmK,GAAKA,EAAI,GAAKA,CAEvC,CAER,CACA,OAAInM,EAAOzc,GACA,SAAU0xB,GACb,IAAI9I,EAAI+wE,EAAIjoE,GACZ,OAAOjV,EAAOmM,GAAKA,EAAElF,UAAYkF,CACrC,EAEG+wE,CACX,CAKmBw9F,CAAYluK,EAAWtI,GAASA,EAAQyK,EAAOzK,GAAO,GAAO3gB,EAAOwvL,GACnFxvL,EAlDe,SAAUA,EAAOwvL,GAChC,GAAa,MAATxvL,GAAiBlH,EAASkH,GAAQ,CAClC,IAAIqa,EAAO28K,GAAW70K,KAAKniB,GAC3B,GAAIqa,EACA,OAAO,IAAIC,MAAMD,EAAK,IAAIqJ,UAEzB,GAAI8rK,EACL,OAAOxvL,EAAM4tB,aAErB,MACK,GAAa,MAAT5tB,GAAiByc,EAAOzc,GAC7B,OAAOA,EAAM0jB,UAEjB,OAAO1jB,CACX,CAoCYo3L,CAAap3L,EAAOwvL,GAC5B,IAAI6H,EAAKpuK,EAAWwmK,GAAYA,EAAWyG,GAAazG,GACxD,OAAO,SAAU/9J,GAAK,OAAO2lK,EAAGH,EAASxlK,GAAI1xB,EAAOwvL,EAAa,CACrE,EAIW8H,GAA2B,SAA3BA,EAAqC1xJ,GAC5C,IAAI2xJ,EAAW/F,GAAM5rJ,EAAO4rJ,OAC5B,OAAO5rJ,EAAO7mB,QACT6mB,OAAOkpJ,GACP5xL,KAAI,SAAU0rB,GAAK,OAAOglK,EAA4BhlK,GAAK0uK,EAAyB1uK,GAAKquK,GAAgBruK,EAAI,IAC7GnH,OAAO81K,EAASvsL,OAAQusL,EAAS1I,SAC1C,ECzEW2I,GAAgB,SAAUzE,GACjC,OAAKA,GAA4C,IAA9BA,EAAWh0K,QAAQ9hB,OAG/Bq6L,GAAyBvE,GAFrB,WAAc,OAAO,CAAM,CAG1C,ECpBW0E,GAAkB,SAAUnE,GAEnC,OADAA,EAAcr7L,EAAQq7L,GAAeA,EAAc,CAACA,IACjCp2L,KAAI,SAAU0rB,GAAK,OAAOlb,OAAOW,OAAO,CAAEsG,IAAK,OAASiU,EAAI,GACnF,EACIimK,GAAW3xL,IAAI,SAAU0rB,GAAK,OAAOA,CAAG,IAwBjC8uK,GAAU,SAAVA,EAAoB59K,EAAMw5K,EAAagB,EAAcqD,GAK5D,QAJoB,IAAhBrE,IAA0BA,EAAc,SACvB,IAAjBgB,IAA2BA,EAAezF,SACzB,IAAjB8I,IAA2BA,EAAe79K,KAC9Cw5K,EAAcmE,GAAgBnE,IACbr2L,OACb,OAAO6c,EAEX,IAAIi5K,EAAaO,EAAY,GAEzBthC,EAAO7vI,GAAKmyK,EAAatB,GAAgBD,EAAWpyK,QADrC,CAAC,EAC2D7G,GAC3E7e,EAAS,GAyBb,OAxBAyS,OAAO4E,KAAK0/I,GAAM3nJ,SAAQ,SAAUsW,GAChCjT,OAAO4E,KAAK0/I,EAAKrxI,IAAQtW,SAAQ,SAAUrK,GACvC,IAAImgB,EAAQ6xI,EAAKrxI,GAAO3gB,GACpB43L,EAAkB,CAAC,EACnBC,EAAeF,EACf7I,EAAUiE,EAAWh4F,cACrB88F,EDMM,SAAU/9K,EAAMi5K,GAClC,OAAKjE,EAAUiE,IAAgBnF,EAA4BmF,IAA6C,IAA9BA,EAAWh0K,QAAQ9hB,OAClF6c,EAEJA,EAAK8rB,OAAO4xJ,GAAcxB,GAAiBjD,IACtD,CCX+B+E,CAASH,EAAc,CAClCh3K,MAAOoyK,EAAWpyK,MAClB6uK,YAAY,EACZC,SAAU,KACVzvL,MAAOmgB,EAAMngB,QAEjB43L,EAAkBvD,GAAYwD,EAAc9E,EAAWh4F,aAE3D9/F,EAAOklB,EAAMizK,YAAc,CACvBr4F,WAAY68F,EACZj3K,MAAOA,EACPojC,MAAOuvI,EAAYr2L,OAAS,EACxBy6L,EAAQv3K,EAAM4jC,MAAOuvI,EAAY/1K,MAAM,GAAIsxK,GAAUgJ,GACnD13K,EAAM4jC,MACZ/jD,MAAOmgB,EAAMngB,MAErB,GACJ,IACO/E,CACX,ECxCW22B,GAAO,SAAPA,EAAiB9X,EAAMsS,EAAOC,EAAKsmK,GAC1C,KAAItmK,EAAMD,EAAQ,GAAlB,CAGA,IAAIg8D,EAAOh8D,EAAQC,IAAS,EAC5BuF,EAAK9X,EAAMsS,EAAOg8D,EAAKuqG,GACvB/gK,EAAK9X,EAAMsuE,EAAK/7D,EAAKsmK,GAtCb,SAAU74K,EAAM6Q,EAAM2kB,EAAQ7kB,EAAOkoK,GAI7C,IAHA,IAAIoF,EAAazoJ,EAAS3kB,EACtBqtK,EAAcvtK,EAAQ6kB,EACtBsiG,EAAO,GACFt6H,EAAM,EAAGA,EAAMygL,EAAYzgL,IAChCs6H,EAAK3/H,KAAK6H,EAAK6Q,EAAOrT,IAE1B,IAAI2gL,EAAU,EACVC,EAAU5oJ,EACVo0G,EAAO/4H,EACX,GACQgoK,EAAQ74K,EAAKo+K,GAAUtmD,EAAKqmD,IAAY,GACxCn+K,EAAK4pI,KAAU5pI,EAAKo+K,KACpBF,MAGAl+K,EAAK4pI,KAAU9R,EAAKqmD,KACpBF,WAECC,EAAc,GAAKD,EAAa,GACzC,KAAOA,GACHj+K,EAAK4pI,KAAU9R,EAAKqmD,KACpBF,IAEJ,KAAOC,GACHl+K,EAAK4pI,KAAU5pI,EAAKo+K,KACpBF,GAER,CAWIhmK,CAAMlY,EAAMsS,EAAOg8D,EAAK/7D,EAAKsmK,EAJ7B,CAKJ,ECXWwF,GAAU,SAAUr+K,EAAMw5K,GACjC,GAAIA,EAAY55F,MAAK,SAAU9wE,GAAK,OAAOkmK,EAAUlmK,EAAEjU,IAAM,IAAI,CAC7DmF,EAAOA,EAAKyD,MAAM,GAClB,IAAI84G,ERKwB,SAAUi9D,GAAe,OAAQA,EAChE1tJ,QAAO,SAAUhd,GAAK,OAAOkmK,EAAUlmK,EAAEjU,IAAM,IAC/CzX,KAAI,SAAU61L,GAAc,OAAOD,GAAiBC,EAAa,IACjEtxK,QAAO,SAAUk4E,EAAKi1F,GAAQ,OAAO,SAAUl9J,EAAGjkB,GAAK,OAAOksF,EAAIjoE,EAAGjkB,IAAMmhL,EAAKl9J,EAAGjkB,EAAI,CAAG,GAAGqvJ,GAAW,CQRtFs7B,CAAuB9E,GACtC1hK,GAAK9X,EAAM,EAAGA,EAAK7c,OAAQo5H,EAC/B,CACA,OAAOv8G,CACX,EA+FW5d,GAAU,SAAU4d,EAAMtX,GACjC,IAAI61L,EAAY71L,EAAMkzD,KAAM4iI,EAAY91L,EAAMmrL,KAAM4K,EAAmB/1L,EAAMojC,OAAQhU,EAAOpvB,EAAMovB,KAAMzR,EAAQ3d,EAAM2d,MAClHq4K,EAAkBf,GAAgBt3K,GAAS,IAAInV,OAAO4mB,GAAQ,IAC9D4mK,EAAgBv7L,SAChB6c,EAAOq+K,GAAQr+K,EAAM0+K,IAEzB,IAQIv4K,EARAw4K,EAAa3J,EAAUyJ,IAAqB3yJ,GAAO3oC,OACnDijB,EAAY4uK,EAAU3uK,IAAUA,EAAMljB,OAC1C,IAAKw7L,IAAev4K,EAChB,MAAO,CACHpG,KAAMw+K,EAAYx+K,EAAKyD,MAAM86K,EAAWA,EAAYC,GAAax+K,EACjEmG,MAAOnG,EAAK7c,QAIpB,IACI47B,EADAy7J,EAAe,GAcnB,GAZImE,GAEAx4K,EArEW,SAAUnG,EAAM+e,GAE/B,IADA,IAAI6/J,EAAU,EACLphL,EAAM,EAAG88K,EAAWt6K,EAAK7c,OAAQqa,EAAM88K,EAAU98K,IAClDuhB,EAAU/e,EAAKxC,KACfohL,IAGR,OAAOA,CACX,CA6DgBn8I,CAAMziC,EADd+e,EAAY2+J,GAAcxB,GAAiBuC,KAE3CjE,EAAariL,KAAK2zB,GAAO/M,KAGzB5Y,EAAQnG,EAAK7c,OAEb6xL,EAAUuJ,IAAcvJ,EAAUwJ,KAClChE,EAAariL,KPMH,SAAUsqC,GAAS,OAAQ,SAAU96B,GAAU,OAAQ,SAAUk4E,EAAKi1F,GAAQ,OAAOryI,KAAW,EAAI96B,EAAOk4E,EAAKi1F,GAAQj1F,CAAK,CAAI,CAAI,CON7HjkC,CAAK2iI,IACvB/D,EAAariL,KPLH,SAAUsqC,GAAS,OAAQ,SAAU96B,GAAU,OAAQ,SAAUk4E,EAAKi1F,GAAQ,OAAOryI,KAAU,EAAI96B,EAAOk4E,EAAKi1F,GAAQuF,GAAQx6F,EAAM,CAAI,CAAI,COKrIg0F,CAAK2K,KAEvBhE,EAAar3L,OAAQ,CACrB,IAAIk4B,EAAYu5J,EAAQ3jL,WAAM,EAAQupL,GAClCr5L,EAASilB,EACTw3K,GAAQ59K,EAAMqG,EAAOgV,EAtEd,SAAUrb,EAAM+e,GAC/B,OAAIA,EACO/e,EAAK8rB,OAAO/M,GAEhB/e,CACX,CAiE4C2gD,CAAM3gD,EAAM+e,IAC5C1W,GAAKgT,EAAUnqB,IAAS,GAAI8O,GAChC,MAAO,CAAEA,KAAM7e,EAAQglB,MAAOA,EAClC,CACA,MAAO,CACHnG,KAAMoG,EAAYw3K,GAAQ59K,EAAMqG,GAASrG,EACzCmG,MAAOA,EAEf,GVtKA,SAAWovK,GAIPA,EAAyB,SAAI,WAI7BA,EAA+B,eAAI,iBAInCA,EAA+B,eAAI,iBAInCA,EAAiC,iBAAI,mBAIrCA,EAAyB,SAAI,WAI7BA,EAAwB,QAAI,KAI5BA,EAA4B,YAAI,KAIhCA,EAAmC,mBAAI,MAIvCA,EAAwB,QAAI,UAI5BA,EAA2B,WAAI,aAI/BA,EAA0B,UAAI,YAI9BA,EAAuB,OAAI,SAI3BA,EAAyB,SAAI,KAI7BA,EAAgC,gBAAI,MAIpCA,EAA2B,WAAI,MAI/BA,EAA2B,WAAI,YAClC,CAjED,CAiEGA,IAAmBA,EAAiB,CAAC,0VWtExC,IAylBA,EAzlBkB,CACdsJ,GAAI,CACAnlL,KAAM,KACNq7K,SAAU,CACNj7K,QAAS,CACLglL,gBAAiB,SACjBC,aAAc,MAElBlQ,SAAU,MAEdmQ,UAAW,KACXC,QAAS,CACL1O,QAAS,CACL2O,QAAS,IACT74K,MAAO,IACPpC,KAAM,IACNk7K,YAAa,IACbC,SAAU,IACVC,UAAW,IACXC,YAAa,IACbC,uBAAwB,OACxBC,SAAU,SACVC,SAAU,SACVC,IAAK,MACLC,cAAe,IACfC,kBAAmB,KAEvBV,QAAS,CACL5sD,SAAU,CACN,KAEJr9E,UAAW,CACP,IAGR4qI,WAAY,CACRvtD,SAAU,CACN,OAEJr9E,UAAW,IAEfgvF,QAAS,CACL3R,SAAU,CACN,MAEJr9E,UAAW,CACP,IAGR6qI,SAAU,CACNxtD,SAAU,CACN,MAEJr9E,UAAW,CACP,GAEJ,wBAAyB,MACzB,0BAA2B,OAE/B8qI,WAAY,CACRC,IAAK,CACD/jM,YAAa,gBACb,wBAAyB,gBACzB,0BAA2B,iBAC3BukK,OAAQ,OAEZy/B,IAAK,CACDhkM,YAAa,OACb,wBAAyB,OACzB,0BAA2B,QAC3BukK,OAAQ,SACR,oBAAqB,UAEzB0/B,IAAK,CACDjkM,YAAa,YACb,wBAAyB,YACzB,0BAA2B,aAC3BukK,OAAQ,IACR,oBAAqB,MAG7B2/B,eAAgB,MAChBC,WAAY,CACR9tD,SAAU,CACN,KACA,QAEJr9E,UAAW,CACP,KAIZorI,SAAU,CACNC,UAAW,SACXC,cAAe,MACfjuD,SAAU,CACN5+H,EAAG,QACH8sL,EAAG,kBACH5iL,EAAG,QACHmiI,EAAG,SACHhxH,EAAG,QACHhB,EAAG,SACH0yK,EAAG,4BACHv7K,EAAG,eACHw7K,EAAG,kBACHj/L,EAAG,SACHk/L,EAAG,YACHnsL,EAAG,gCACHosL,EAAG,kCAEPC,gBAAiB,CACbC,KAAM,eACNC,KAAM,eACNC,OAAQ,WACRC,MAAO,WACPC,iBAAkB,CACdC,GAAI,MACJC,IAAK,SACLC,KAAM,YACN3tL,EAAG,IACH4tL,EAAG,MACHC,KAAM,WACNC,MAAO,cACPC,GAAI,MACJC,IAAK,WACLC,IAAK,UACLC,KAAM,cACNC,KAAM,aACNC,GAAI,MACJC,KAAM,cACNC,MAAO,UACPC,OAAQ,aACRC,QAAS,gBACT9nK,EAAG,MACH4lH,EAAG,KACHmiD,GAAI,SACJC,GAAI,QACJC,IAAK,YACLC,IAAK,WACLC,KAAM,cACNC,KAAM,aACNC,IAAK,WACLC,IAAK,UACL3iD,EAAG,IACH4iD,GAAI,MACJC,IAAK,SACLC,IAAK,MACLC,KAAM,QACNC,MAAO,WACPC,MAAO,SACP,kBAAmB,qBACnB,oBAAqB,qBACrBxP,GAAI,QACJzkK,EAAG,IACHk0K,GAAI,MACJC,IAAK,QACLC,KAAM,WACNC,KAAM,QACNC,MAAO,WACPC,OAAQ,cACRC,MAAO,SACPC,KAAM,QACNC,MAAO,SACP,eAAgB,kBAChB,iBAAkB,oBAG1BC,YAAa,CACT5C,KAAM,iBACNC,KAAM,cACNC,OAAQ,YACRC,MAAO,UAEXzxH,YAAa,CACTsxH,KAAM,kBACNC,KAAM,YACNC,OAAQ,WACRC,MAAO,UAEXx2H,KAAM,CACFvgD,OAAQ,CACJy5K,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJzzH,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ+wH,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ2C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,OAEJzzH,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ+wH,MAAO,CACH,KACA,KACA,KACA,KACA,KACA,KACA,MAEJ2C,KAAM,CACF,SACA,SACA,UACA,YACA,WACA,SACA,cAIZj5H,OAAQ,CACJzgD,OAAQ,CACJy5K,YAAa,CACT,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,MACA,OAEJzzH,OAAQ,CACJ,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,KAEJ0zH,KAAM,CACF,UACA,WACA,QACA,QACA,MACA,OACA,OACA,SACA,YACA,UACA,WACA,aAGR,cAAe,CACXD,YAAa,CACT,MACA,MACA,MACA,MACA,M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CA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,KAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,OAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAAK,WAC7B,IAAIjJ,EAAI,IAAIoN,MAAM,uBAAyBs4S,EAAM,KAEjD,MADA1lT,EAAE8hB,KAAO,mBACH9hB,CACP,IAGD,IAAIm7I,EAAM9zI,EAAIq+S,GAAMpiT,EAAK63I,EAAI,GAC7B,OAAOpyI,QAAQgkB,IAAIouH,EAAIzzH,MAAM,GAAGrgB,IAAIs+S,EAAoB3lT,IAAIiJ,MAAK,WAChE,OAAO08S,EAAoBriT,EAC5B,GACD,CACAmiT,EAAoBhpS,KAAO,WAAa,OAAO5E,OAAO4E,KAAKpV,EAAM,EACjEo+S,EAAoBniT,GAAK,MACzBswN,EAAOF,QAAU+xF,yBCtGjB,IAAIp+S,EAAM,CACT,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,OAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAAK,WAC7B,IAAIjJ,EAAI,IAAIoN,MAAM,uBAAyBs4S,EAAM,KAEjD,MADA1lT,EAAE8hB,KAAO,mBACH9hB,CACP,IAGD,IAAIm7I,EAAM9zI,EAAIq+S,GAAMpiT,EAAK63I,EAAI,GAC7B,OAAOpyI,QAAQgkB,IAAIouH,EAAIzzH,MAAM,GAAGrgB,IAAIs+S,EAAoB3lT,IAAIiJ,MAAK,WAChE,OAAO08S,EAAoBriT,EAC5B,GACD,CACAmiT,EAAoBhpS,KAAO,WAAa,OAAO5E,OAAO4E,KAAKpV,EAAM,EACjEo+S,EAAoBniT,GAAK,MACzBswN,EAAOF,QAAU+xF,yBClLjB,IAAIp+S,EAAM,CACT,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,OAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAA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,QAAU+xF,yBCpEjB,IAAIp+S,EAAM,CACT,wBAAyB,CACxB,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,wBAAyB,CACxB,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,MAED,wBAAyB,CACxB,OAED,2CAA4C,CAC3C,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,2CAA4C,CAC3C,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,QAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAAK,WAC7B,IAAIjJ,EAAI,IAAIoN,MAAM,uBAAyBs4S,EAAM,KAEjD,MADA1lT,EAAE8hB,KAAO,mBACH9hB,CACP,IAGD,IAAIm7I,EAAM9zI,EAAIq+S,GAAMpiT,EAAK63I,EAAI,GAC7B,OAAOpyI,QAAQgkB,IAAIouH,EAAIzzH,MAAM,GAAGrgB,IAAIs+S,EAAoB3lT,IAAIiJ,MAAK,WAChE,OAAO08S,EAAoBriT,EAC5B,GACD,CACAmiT,EAAoBhpS,KAAO,WAAa,OAAO5E,OAAO4E,KAAKpV,EAAM,EACjEo+S,EAAoBniT,GAAK,MACzBswN,EAAOF,QAAU+xF,yBClIjB,IAAIp+S,EAAM,CACT,wBAAyB,CACxB,OAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,IAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,KACA,MAED,wBAAyB,CACxB,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,MAED,2CAA4C,CAC3C,OAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,IAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,KACA,MAED,2CAA4C,CAC3C,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,OAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAAK,WAC7B,IAAIjJ,EAAI,IAAIoN,MAAM,uBAAyBs4S,EAAM,KAEjD,MADA1lT,EAAE8hB,KAAO,mBACH9hB,CACP,IAGD,IAAIm7I,EAAM9zI,EAAIq+S,GAAMpiT,EAAK63I,EAAI,GAC7B,OAAOpyI,QAAQgkB,IAAIouH,EAAIzzH,MAAM,GAAGrgB,IAAIs+S,EAAoB3lT,IAAIiJ,MAAK,WAChE,OAAO08S,EAAoBriT,EAC5B,GACD,CACAmiT,EAAoBhpS,KAAO,WAAa,OAAO5E,OAAO4E,KAAKpV,EAAM,EACjEo+S,EAAoBniT,GAAK,MACzBswN,EAAOF,QAAU+xF,yBC1MjB,IAAIp+S,EAAM,CACT,wBAAyB,CACxB,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,KACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,OAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAAK,WAC7B,IAAIjJ,EAAI,IAAIoN,MAAM,uBAAyBs4S,EAAM,KAEjD,MADA1lT,EAAE8hB,KAAO,mBACH9hB,CACP,IAGD,IAAIm7I,EAAM9zI,EAAIq+S,GAAMpiT,EAAK63I,EAAI,GAC7B,OAAOpyI,QAAQgkB,IAAIouH,EAAIzzH,MAAM,GAAGrgB,IAAIs+S,EAAoB3lT,IAAIiJ,MAAK,WAChE,OAAO08S,EAAoBriT,EAC5B,GACD,CACAmiT,EAAoBhpS,KAAO,WAAa,OAAO5E,OAAO4E,KAAKpV,EAAM,EACjEo+S,EAAoBniT,GAAK,MACzBswN,EAAOF,QAAU+xF,yBCtDjB,IAAIp+S,EAAM,CACT,wBAAyB,CACxB,MACA,KAED,2CAA4C,CAC3C,MACA,MAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAAK,WAC7B,IAAIjJ,EAAI,IAAIoN,MAAM,uBAAyBs4S,EAAM,KAEjD,MADA1lT,EAAE8hB,KAAO,mBACH9hB,CACP,IAGD,IAAIm7I,EAAM9zI,EAAIq+S,GAAMpiT,EAAK63I,EAAI,GAC7B,OAAOwqK,EAAoB3lT,EAAEm7I,EAAI,IAAIlyI,MAAK,WACzC,OAAO08S,EAAoBriT,EAC5B,GACD,CACAmiT,EAAoBhpS,KAAO,WAAa,OAAO5E,OAAO4E,KAAKpV,EAAM,EACjEo+S,EAAoBniT,GAAK,MACzBswN,EAAOF,QAAU+xF,yBC1BjB,IAAIp+S,EAAM,CACT,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,OAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAAK,WAC7B,IAAIjJ,EAAI,IAAIoN,MAAM,uBAAyBs4S,EAAM,KAEjD,MADA1lT,EAAE8hB,KAAO,mBACH9hB,CACP,IAGD,IAAIm7I,EAAM9zI,EAAIq+S,GAAMpiT,EAAK63I,EAAI,GAC7B,OAAOpyI,QAAQgkB,IAAIouH,EAAIzzH,MAAM,GAAGrgB,IAAIs+S,EAAoB3lT,IAAIiJ,MAAK,WAChE,OAAO08S,EAAoBriT,EAC5B,GACD,CACAmiT,EAAoBhpS,KAAO,WAAa,OAAO5E,OAAO4E,KAAKpV,EAAM,EACjEo+S,EAAoBniT,GAAK,MACzBswN,EAAOF,QAAU+xF,yBCtGjB,IAAIp+S,EAAM,CACT,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,wBAAyB,CACxB,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,MAED,2CAA4C,CAC3C,MACA,KACA,IACA,KACA,KACA,KACA,KACA,IACA,KACA,KACA,IACA,KACA,KACA,KACA,OAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAAK,WAC7B,IAAIjJ,EAAI,IAAIoN,MAAM,uBAAyBs4S,EAAM,KAEjD,MADA1lT,EAAE8hB,KAAO,mBACH9hB,CACP,IAGD,IAAIm7I,EAAM9zI,EAAIq+S,GAAMpiT,EAAK63I,EAAI,GAC7B,OAAOpyI,QAAQgkB,IAAIouH,EAAIzzH,MAAM,GAAGrgB,IAAIs+S,EAAoB3lT,IAAIiJ,MAAK,WAChE,OAAO08S,EAAoBriT,EAC5B,GACD,CACAmiT,EAAoBhpS,KAAO,WAAa,OAAO5E,OAAO4E,KAAKpV,EAAM,EACjEo+S,EAAoBniT,GAAK,MACzBswN,EAAOF,QAAU+xF,yBCtFjB,IAAIp+S,EAAM,CACT,sDAAuD,CACtD,KAED,sDAAuD,CACtD,OAED,iDAAkD,CACjD,MACA,MAED,iDAAkD,CACjD,MACA,MAED,iDAAkD,CACjD,MACA,MAED,iDAAkD,CACjD,MACA,KAGF,SAASo+S,EAAoBC,GAC5B,IAAIC,EAAoBC,EAAEv+S,EAAKq+S,GAC9B,OAAO38S,QAAQC,UAAUC,MAAK,WAC7B,IAAIjJ,EAAI,IAAIoN,MAAM,uBAAyBs4S,EAAM,KAEjD,MADA1lT,EAAE8hB,KAAO,mBACH9hB,CACP,IAGD,IAAIm7I,EAAM9zI,EAAIq+S,GAAMpiT,EAAK63I,EAAI,GAC7B,OAAOpyI,QAAQgkB,IAAIouH,EAAIzzH,MAAM,GAAGrgB,IAAIs+S,EAAoB3lT,IAAIiJ,MAAK,WAChE,OAAO08S,EAAoBjgT,EAAEpC,EAAI,GAClC,GACD,CACAmiT,EAAoBhpS,KAAO,WAAa,OAAO5E,OAAO4E,KAAKpV,EAAM,EACjEo+S,EAAoBniT,GAAK,MACzBswN,EAAOF,QAAU+xF,yBCxCjB,IAAIp+S,EAAM,CACT,mDAAoD,CACnD,KACA,MAED,mDAAoD,CACnD,MACA,MAED,oDAAqD,CACpD,MACA,MAED,oDAAqD,CACpD,MACA,MAED,uCAAwC,CACvC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,8CAA+C,CAC9C,MACA,MAED,uCAAwC,CACvC,MACA,MAED,uCAAwC,CACvC,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,2CAA4C,CAC3C,MACA,MAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,KAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,GAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,KAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,KACA,MAED,oFAAqF,CACpF,MACA,MAED,oFAAqF,CACpF,KACA,MAED,kDAAmD,CAClD,MACA,KAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,KAED,kDAAmD,CAClD,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,kFAAmF,CAClF,MACA,MAED,kFAAmF,CAClF,MACA,MAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,KAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,KACA,MAED,kDAAmD,CAClD,MACA,KAED,kDAAmD,CAClD,MACA,MAED,4DAA6D,CAC5D,MACA,MAED,4DAA6D,CAC5D,MACA,MAED,8FAA+F,CAC9F,MACA,MAED,8FAA+F,CAC9F,MACA,MAED,0GAA2G,CAC1G,MACA,MAED,0GAA2G,CAC1G,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,4EAA6E,CAC5E,MACA,MAED,oFAAqF,CACpF,KACA,MAED,oFAAqF,CACpF,MACA,MAED,gFAAiF,CAChF,MACA,MAED,gFAAiF,CAChF,MACA,MAED,kDAAmD,CAClD,MACA,IAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,0EAA2E,CAC1E,MACA,MAED,0EAA2E,CAC1E,MACA,KAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,MAED,kDAAmD,CAClD,MACA,KAED,kDAAmD,CAClD,MACA,MAED,gCAAiC,CAChC,MACA,MAED,gCAAiC,CAChC,MACA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","sources":["Components/Core/Button/ButtonComponent.tsx","Components/Core/Dialog/DialogComponent.tsx","Components/Core/Dialog/Hooks/DialogHook.tsx","Components/Core/Dialog/MessageDialogComponent.tsx","Components/Core/Fallback/FallbackLayoutComponent.tsx","Components/Core/Hooks/ConstantHook.ts","Components/Core/Hooks/GetHook.ts","Components/Core/LaunchCard/LaunchCardComponent.tsx","Components/Core/Layout/BlockedProvider.tsx","Components/Core/Layout/DivComponent.tsx","Components/Core/Layout/Hooks/LayoutHook.ts","Components/Core/Layout/NavTopbar/Breadcrumb/InnerBreadcrumbHook.ts","Components/Core/Layout/NavTopbar/Breadcrumb/InnerBreadcrumbProvider.tsx","Components/Core/Layout/Transaction/Hooks/TransactionHook.tsx","Components/Core/Layout/ErrorBoundary.tsx","Components/Core/Layout/Transaction/TransactionComponent.tsx","Components/Core/Layout/Transaction/TransactionPermissionProvider.tsx","Components/Core/Layout/Transaction/TransactionProvider.tsx","Components/Core/Loaders/LoaderHook.ts","Components/Core/Loaders/LoaderProvider.tsx","Components/Core/Hooks/MountHook.ts","Components/Core/Loaders/LoadingComponent.tsx","Components/Core/Notification/Hooks/NotificationHook.tsx","../node_modules/dom-helpers/esm/removeClass.js","../node_modules/react-transition-group/esm/config.js","../node_modules/react-transition-group/esm/TransitionGroupContext.js","../node_modules/react-transition-group/esm/Transition.js","../node_modules/react-transition-group/esm/CSSTransition.js","../node_modules/dom-helpers/esm/addClass.js","../node_modules/dom-helpers/esm/hasClass.js","../node_modules/@progress/kendo-react-animation/dist/es/util.js","../node_modules/@progress/kendo-react-animation/dist/es/AnimationChild.js","../node_modules/react-transition-group/esm/utils/ChildMapping.js","../node_modules/react-transition-group/esm/TransitionGroup.js","../node_modules/@progress/kendo-react-animation/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-animation/dist/es/Animation.js","../node_modules/@progress/kendo-react-animation/dist/es/Fade.js","../node_modules/@progress/kendo-react-notification/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-notification/dist/es/Notification.js","../node_modules/@progress/kendo-react-notification/dist/es/NotificationGroup.js","Components/Core/Notification/NotificationComponent.tsx","Components/Core/Notification/NotificationsProvider.tsx","Components/Core/Routes/Hooks/RouterHook.ts","Components/Core/Services/Hooks/AuthenticationHook.ts","Components/Core/Services/Hooks/BackendFormHook.ts","Components/Core/Services/Hooks/TransactionHook.ts","../node_modules/jwt-decode/lib/atob.js","../node_modules/jwt-decode/lib/base64_url_decode.js","../node_modules/jwt-decode/lib/index.js","Services/DTOs/IResponse.ts","Services/Authentication/AuthenticationService.ts","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseBase.js","../node_modules/@babel/runtime/helpers/esm/classPrivateFieldLooseKey.js","Components/Core/Services/ServiceProvider.tsx","Services/Backend/BackendFileService.ts","Services/Utils/KendoDataStateUtils.ts","Services/Utils/PartialChangesUtils.ts","Services/Backend/BackendFormService.ts","Services/DTOs/Grid/CustomGroupFilterRequest.ts","Services/Backend/BackendGridService.ts","Services/Backend/BackendPuzzleService.ts","Services/Backend/BackendReportService.ts","Services/Backend/BackendSelectorService.ts","Services/Backend/FetchAuthService.ts","Services/Backend/JsonFormatter.ts","Services/Backend/HttpService.ts","Services/Transaction/TransactionService.ts","../node_modules/@progress/kendo-charts/dist/es/common/constants.js","../node_modules/@progress/kendo-charts/dist/es/common/is-array.js","../node_modules/@progress/kendo-charts/dist/es/common/add-class.js","../node_modules/@progress/kendo-charts/dist/es/common/remove-class.js","../node_modules/@progress/kendo-drawing/dist/es/util/defined.js","../node_modules/@progress/kendo-charts/dist/es/common/align-path-to-pixel.js","../node_modules/@progress/kendo-charts/dist/es/common/clockwise.js","../node_modules/@progress/kendo-charts/dist/es/common/is-number.js","../node_modules/@progress/kendo-charts/dist/es/common/is-string.js","../node_modules/@progress/kendo-charts/dist/es/common/convertable-to-number.js","../node_modules/@progress/kendo-charts/dist/es/common/is-function.js","../node_modules/@progress/kendo-charts/dist/es/common/deep-extend.js","../node_modules/@progress/kendo-charts/dist/es/common/is-object.js","../node_modules/@progress/kendo-charts/dist/es/common/style-value.js","../node_modules/@progress/kendo-charts/dist/es/common/element-styles.js","../node_modules/@progress/kendo-charts/dist/es/common/get-spacing.js","../node_modules/@progress/kendo-charts/dist/es/services/template-service.js","../node_modules/@progress/kendo-charts/dist/es/common/get-template.js","../node_modules/@progress/kendo-charts/dist/es/common/getter.js","../node_modules/@progress/kendo-charts/dist/es/common/grep.js","../node_modules/@progress/kendo-charts/dist/es/common/has-classes.js","../node_modules/@progress/kendo-charts/dist/es/common/hash-map.js","../node_modules/@progress/kendo-charts/dist/es/common/in-array.js","../node_modules/@progress/kendo-drawing/dist/es/util/round.js","../node_modules/@progress/kendo-charts/dist/es/common/interpolate-value.js","../node_modules/@progress/kendo-charts/dist/es/common/instance-observer.js","../node_modules/@progress/kendo-charts/dist/es/common/map.js","../node_modules/@progress/kendo-drawing/dist/es/common/support.js","../node_modules/@progress/kendo-charts/dist/es/common/mousewheel-delta.js","../node_modules/@progress/kendo-drawing/dist/es/util/append.js","../node_modules/@progress/kendo-drawing/dist/es/util/arabic-to-roman.js","../node_modules/@progress/kendo-drawing/dist/es/util/create-promise.js","../node_modules/@progress/kendo-drawing/dist/es/util/definition-id.js","../node_modules/@progress/kendo-drawing/dist/es/util/constants.js","../node_modules/@progress/kendo-drawing/dist/es/util/deg.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-utf.js","../node_modules/@progress/kendo-drawing/dist/es/util/encode-base64.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-coordinates.js","../node_modules/@progress/kendo-drawing/dist/es/util/event-element.js","../node_modules/@progress/kendo-drawing/dist/es/util/is-transparent.js","../node_modules/@progress/kendo-drawing/dist/es/util/last.js","../node_modules/@progress/kendo-drawing/dist/es/util/limit-value.js","../node_modules/@progress/kendo-drawing/dist/es/util/merge-sort.js","../node_modules/@progress/kendo-drawing/dist/es/util/now.js","../node_modules/@progress/kendo-drawing/dist/es/util/promise-all.js","../node_modules/@progress/kendo-drawing/dist/es/util/rad.js","../node_modules/@progress/kendo-drawing/dist/es/util/value-or-default.js","../node_modules/@progress/kendo-drawing/dist/es/util/bind-events.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-offset.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-styles.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-size.js","../node_modules/@progress/kendo-drawing/dist/es/util/unbind-events.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-padding.js","../node_modules/@progress/kendo-drawing/dist/es/common/class.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/matrix.js","../node_modules/@progress/kendo-drawing/dist/es/util/element-scale.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/lru-cache.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/util.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/text-metrics.js","../node_modules/@progress/kendo-drawing/dist/es/text-metrics/measure-text.js","../node_modules/@progress/kendo-drawing/dist/es/common/log-to-console.js","../node_modules/@progress/kendo-charts/dist/es/drawing-utils.js","../node_modules/@progress/kendo-charts/dist/es/common/font-loader.js","../node_modules/@progress/kendo-charts/dist/es/common/set-default-options.js","../node_modules/@progress/kendo-charts/dist/es/common/sparse-array-limits.js","../node_modules/@progress/kendo-charts/dist/es/common/find.js","../node_modules/@progress/kendo-charts/dist/es/common/element-scale.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/named-colors.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/parse-color.js","../node_modules/@progress/kendo-drawing/dist/es/common/color/color.js","../node_modules/@progress/kendo-charts/dist/es/common/auto-text-color.js","../node_modules/@progress/kendo-charts/dist/es/common/create-hash-set.js","../node_modules/@progress/kendo-charts/dist/es/common/default-error-handler.js","../node_modules/@progress/kendo-charts/dist/es/common/keys.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-major-unit.js","../node_modules/@progress/kendo-charts/dist/es/core/point.js","../node_modules/@progress/kendo-drawing/dist/es/core/has-observers.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-accessors.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/to-matrix.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/size.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/rect.js","../node_modules/@progress/kendo-charts/dist/es/core/box.js","../node_modules/@progress/kendo-charts/dist/es/core/ring.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/constants.js","../node_modules/@progress/kendo-charts/dist/es/core/sector.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/close-or-less.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/ellipse-extreme-angles.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transformation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/transform.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/arc.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersection.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/geometry-elements-array.js","../node_modules/@progress/kendo-drawing/dist/es/core/options-store.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/element.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/is-out-of-end-point.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/calculate-curve-at.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/to-cubic-polynomial.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/complex-number.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/solve-cubic-equation.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/has-roots-in-range.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/line-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-points.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/segment.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/math/curve-intersections-count.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/points-to-curve.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/paintable.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/measurable.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/shape-map.js","../node_modules/@progress/kendo-drawing/dist/es/parsing/parse-path.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/utils/elements-clippend-bounding-box.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/path.js","../node_modules/@progress/kendo-charts/dist/es/core/shape-builder.js","../node_modules/@progress/kendo-drawing/dist/es/geometry/circle.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-geometry.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/circle.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/traversable.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/group.js","../node_modules/@progress/kendo-drawing/dist/es/animations/easing-functions.js","../node_modules/@progress/kendo-drawing/dist/es/common/animation-frame.js","../node_modules/@progress/kendo-drawing/dist/es/animations/animation-factory.js","../node_modules/@progress/kendo-drawing/dist/es/animations/animation.js","../node_modules/@progress/kendo-charts/dist/es/core/chart-element.js","../node_modules/@progress/kendo-charts/dist/es/core/box-element.js","../node_modules/@progress/kendo-charts/dist/es/core/shape-element.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/stops-array.js","../node_modules/@progress/kendo-drawing/dist/es/mixins/with-options.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient-stop.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/gradient.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/linear-gradient.js","../node_modules/@progress/kendo-drawing/dist/es/gradients/radial-gradient.js","../node_modules/@progress/kendo-charts/dist/es/core/gradients.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/box-diff.js","../node_modules/@progress/kendo-charts/dist/es/core/root-element.js","../node_modules/@progress/kendo-charts/dist/es/core/float-element.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/text.js","../node_modules/@progress/kendo-charts/dist/es/core/text.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/rect-to-box.js","../node_modules/@progress/kendo-charts/dist/es/core/text-box.js","../node_modules/@progress/kendo-charts/dist/es/core/title.js","../node_modules/@progress/kendo-charts/dist/es/core/axis-label.js","../node_modules/@progress/kendo-charts/dist/es/core/note.js","../node_modules/@progress/kendo-charts/dist/es/services/intl-service.js","../node_modules/@progress/kendo-charts/dist/es/services/format-service.js","../node_modules/@progress/kendo-charts/dist/es/services/chart-service.js","../node_modules/@progress/kendo-charts/dist/es/services/dom-events-builder.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-tick.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/create-axis-grid-line.js","../node_modules/@progress/kendo-charts/dist/es/core/axis.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/constants.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/absolute-date-diff.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/add-ticks.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/to-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/add-duration.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/start-of-week.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/floor-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/ceil-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-comparer.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-diff.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/to-time.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-equals.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/date-index.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/duration.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/parse-date.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/parse-dates.js","../node_modules/@progress/kendo-charts/dist/es/date-utils/first-day.js","../node_modules/@progress/kendo-charts/dist/es/core/category-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/constants.js","../node_modules/@progress/kendo-charts/dist/es/core/date-category-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/floor.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/ceil.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/limit-coordinate.js","../node_modules/@progress/kendo-charts/dist/es/core/numeric-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-min.js","../node_modules/@progress/kendo-charts/dist/es/core/utils/auto-axis-max.js","../node_modules/@progress/kendo-charts/dist/es/core/date-value-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/logarithmic-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/mixins/grid-lines-mixin.js","../node_modules/@progress/kendo-charts/dist/es/core/radar-category-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/polar-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/mixins/radar-numeric-axis-mixin.js","../node_modules/@progress/kendo-charts/dist/es/core/radar-numeric-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/radar-logarithmic-axis.js","../node_modules/@progress/kendo-charts/dist/es/core/curve-processor.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-axis.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/find-axis-by-name.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-pane.js","../node_modules/@progress/kendo-charts/dist/es/chart/api-elements/chart-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/count-numbers.js","../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/aggregates.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/get-field.js","../node_modules/@progress/kendo-charts/dist/es/chart/series-binder.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-range-calculator.js","../node_modules/@progress/kendo-charts/dist/es/chart/constants.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/error-bar-base.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/categorical-error-bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/eval-options.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/categories-count.js","../node_modules/@progress/kendo-charts/dist/es/chart/categorical-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/point-events-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/note-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/step-line-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/spline-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/line-chart-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/clip-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/any-has-z-index.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/clip-animation-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/line-chart/line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/step-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/spline-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/area-chart/area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/axis-group-range-tracker.js","../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-label.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/has-gradient-overlay.js","../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/utils.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/cluster-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/stack-wrap.js","../node_modules/@progress/kendo-charts/dist/es/chart/bar-chart/bar-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/are-numbers.js","../node_modules/@progress/kendo-charts/dist/es/chart/candlestick-chart/candlestick-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot.js","../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/vertical-box-plot.js","../node_modules/@progress/kendo-charts/dist/es/chart/box-plot-chart/box-plot-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/error-bars/scatter-error-bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/has-value.js","../node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble.js","../node_modules/@progress/kendo-charts/dist/es/chart/bubble-chart/bubble-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/target.js","../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet.js","../node_modules/@progress/kendo-charts/dist/es/chart/bullet-chart/bullet-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/base-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/crosshair/crosshair.js","../node_modules/@progress/kendo-charts/dist/es/chart/chart-container.js","../node_modules/@progress/kendo-charts/dist/es/chart/pane.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/append-if-not-null.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/segment-visible.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/bind-segments.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/equals-ignore-case.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/filter-series-by-type.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/get-date-field.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/is-date-axis.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/single-item-or-array.js","../node_modules/@progress/kendo-charts/dist/es/chart/utils/create-out-of-range-points.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-base.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/plotarea-events-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/series-aggregator.js","../node_modules/@progress/kendo-charts/dist/es/chart/aggregates/default-aggregates.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-bar-chart/range-bar-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-line-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/spline-range-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/step-range-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/range-area-chart/range-area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/ohlc-chart/ohlc-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/waterfall-chart/waterfall-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/categorical-plotarea.js","../node_modules/@progress/kendo-drawing/dist/es/common/observable.js","../node_modules/@progress/kendo-drawing/dist/es/core/surface.js","../node_modules/@progress/kendo-drawing/dist/es/core/base-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-attribute.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-all-attributes.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-style.js","../node_modules/@progress/kendo-drawing/dist/es/svg/node-map.js","../node_modules/@progress/kendo-drawing/dist/es/svg/constants.js","../node_modules/@progress/kendo-drawing/dist/es/svg/utils/render-svg.js","../node_modules/@progress/kendo-drawing/dist/es/svg/node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-stop-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/linear-gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/radial-gradient-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/clip-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/definition-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/root-node.js","../node_modules/@progress/kendo-drawing/dist/es/core/constants.js","../node_modules/@progress/kendo-drawing/dist/es/svg/path-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/arc-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/circle-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/group-node.js","../node_modules/@progress/kendo-drawing/dist/es/common/html-encode.js","../node_modules/@progress/kendo-drawing/dist/es/svg/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/svg/surface.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/node-map.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/utils/render-path.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/group-node.js","../node_modules/@progress/kendo-drawing/dist/es/common/throttle.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/root-node.js","../node_modules/@progress/kendo-drawing/dist/es/search/quad-root.js","../node_modules/@progress/kendo-drawing/dist/es/search/quad-node.js","../node_modules/@progress/kendo-drawing/dist/es/search/shapes-quad-tree.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/surface-cursor.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/path-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/arc-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/circle-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/image-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/multi-path-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/rect-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/text-node.js","../node_modules/@progress/kendo-drawing/dist/es/canvas/surface.js","../node_modules/@progress/kendo-drawing/dist/es/surface-factory.js","../node_modules/@progress/kendo-drawing/dist/es/surface.js","../node_modules/@progress/kendo-charts/dist/es/chart/highlight.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/accept-key.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/to-chart-axis-ranges.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/pannable.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/zoom-selection.js","../node_modules/@progress/kendo-charts/dist/es/chart/pan-and-zoom/mousewheel-zoom.js","../node_modules/@progress/kendo-drawing/dist/es/alignment/align-start.js","../node_modules/@progress/kendo-drawing/dist/es/alignment/align-start-reverse.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/layout.js","../node_modules/@progress/kendo-drawing/dist/es/alignment/translate-to-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend-item.js","../node_modules/@progress/kendo-charts/dist/es/chart/legend/legend.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/plotarea-factory.js","../node_modules/@progress/kendo-charts/dist/es/chart/selection.js","../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/tooltip/shared-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/bar-chart-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/bubble-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/fade-in-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/animations/pie-animation.js","../node_modules/@progress/kendo-charts/dist/es/chart/scatter-charts/scatter-line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/xy-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/mixins/pie-chart-mixin.js","../node_modules/@progress/kendo-charts/dist/es/chart/pie-chart/pie-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/pie-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/donut-chart/donut-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/donut-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea-base.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-scatter-chart/polar-scatter-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-line-chart/polar-line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/spline-polar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/polar-area-chart/polar-area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/polar-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-line-chart/radar-line-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/spline-radar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-area-chart/radar-area-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-cluster-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/layout/radar-stack-layout.js","../node_modules/@progress/kendo-charts/dist/es/chart/radar-bar-chart/radar-bar-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/radar-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-segment.js","../node_modules/@progress/kendo-charts/dist/es/chart/funnel-chart/funnel-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/funnel-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/color-scale.js","../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/heatmap-point.js","../node_modules/@progress/kendo-charts/dist/es/chart/heatmap-chart/heatmap-chart.js","../node_modules/@progress/kendo-charts/dist/es/chart/plotarea/heatmap-plotarea.js","../node_modules/@progress/kendo-charts/dist/es/chart/register-charts.js","../node_modules/@progress/kendo-charts/dist/es/chart/chart.js","../node_modules/@progress/kendo-charts/dist/es/sparkline/shared-tooltip.js","../node_modules/@progress/kendo-charts/dist/es/sparkline/sparkline.js","../node_modules/@progress/kendo-charts/dist/es/stock/fade-out-animation.js","../node_modules/@progress/kendo-charts/dist/es/stock/navigator-hint.js","../node_modules/@progress/kendo-charts/dist/es/stock/constants.js","../node_modules/@progress/kendo-charts/dist/es/stock/navigator.js","../node_modules/@progress/kendo-charts/dist/es/stock/stock-chart.js","../node_modules/@progress/kendo-charts/dist/es/gauges/constants.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/pad.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/build-label-element.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/get-range.js","../node_modules/@progress/kendo-charts/dist/es/gauges/utils/unpad.js","../node_modules/@progress/kendo-charts/dist/es/gauges/gauge.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-scale.js","../node_modules/@progress/kendo-charts/dist/es/gauges/pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/arrow-linear-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/bar-linear-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/linear/linear-gauge.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/arc.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-scale.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/radial/radial-gauge.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-scale.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer-animation.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/range-pointer.js","../node_modules/@progress/kendo-charts/dist/es/gauges/arc/arc-gauge.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/encoding.js","../node_modules/@progress/kendo-charts/dist/es/gauges/circular/circular-gauge.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code11.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code39.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code39-extended.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code93.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code93-extended.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/postnet.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/code128.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/msi.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/ean13.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/ean8.js","../node_modules/@progress/kendo-charts/dist/es/barcode/encodings/main.js","../node_modules/@progress/kendo-charts/dist/es/barcode/surface-size.js","../node_modules/@progress/kendo-charts/dist/es/barcode/barcode.js","../node_modules/@progress/kendo-charts/dist/es/barcode/barcode-validator.js","../node_modules/@progress/kendo-drawing/dist/es/shapes/image.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/utils.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/free-cell-visitor.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoding-result.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoders/iso-encoder.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoding.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/qr-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/numeric-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/alpha-numeric-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/byte-data-mode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/data-modes/data-mode-instances.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/encoders/utf8-encoder.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/encodings/version-codewords.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/qrcode.js","../node_modules/@progress/kendo-charts/dist/es/qrcode/qrcode-validator.js","../node_modules/@progress/kendo-charts/dist/es/map/datums.js","../node_modules/@progress/kendo-charts/dist/es/map/location.js","../node_modules/@progress/kendo-charts/dist/es/map/crs.js","../node_modules/@progress/kendo-charts/dist/es/map/utils.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/observable.js","../node_modules/@progress/kendo-charts/dist/es/map/attribution.js","../node_modules/@progress/kendo-charts/dist/es/map/navigator.js","../node_modules/@progress/kendo-charts/dist/es/map/zoom.js","../node_modules/@progress/kendo-charts/dist/es/map/extent.js","../node_modules/@progress/kendo-charts/dist/es/map/constants.js","../node_modules/@progress/kendo-charts/dist/es/map/tooltip/tooltip.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/layer.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/tile.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/draggable.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/shape.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/bubble.js","../node_modules/@progress/kendo-charts/dist/es/map/layers/marker.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/fx.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/user-events.js","../node_modules/@progress/kendo-charts/dist/es/map/scroller/scroller.js","../node_modules/@progress/kendo-charts/dist/es/services/map-service.js","../node_modules/@progress/kendo-charts/dist/es/map/map.js","../node_modules/@progress/kendo-charts/dist/es/chart/base-theme.js","../node_modules/@progress/kendo-react-charts/node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@progress/kendo-react-charts/dist/es/utils/main.js","../node_modules/@progress/kendo-react-charts/dist/es/events/dom-events.js","../node_modules/@progress/kendo-react-charts/dist/es/events/dom-events-builder.js","../node_modules/@progress/kendo-react-charts/dist/es/events/base-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/axis-label-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/preventable-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/drag-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/drag-end-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/drag-start-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/legend-item-leave-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/navigator-filter-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/note-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/note-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/plot-area-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/plot-area-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/render-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/select-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/select-end-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/select-start-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/series-click-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/series-hover-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/zoom-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/zoom-end-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/zoom-start-event.js","../node_modules/@progress/kendo-react-charts/dist/es/events/chart-event-builder.js","../node_modules/@progress/kendo-react-charts/dist/es/events/dom-event.js","../node_modules/@progress/kendo-react-charts/dist/es/theming/theme-service.js","../node_modules/@progress/kendo-react-charts/dist/es/store/store.js","../node_modules/@progress/kendo-react-charts/dist/es/store/reducer.js","../node_modules/@progress/kendo-react-charts/node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Point.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/SharedTooltipContent.js","../node_modules/@progress/kendo-react-charts/node_modules/@progress/kendo-react-popup/dist/es/animation.js","../node_modules/@progress/kendo-react-charts/node_modules/@progress/kendo-react-common/dist/es/validate-package.js","../node_modules/@progress/kendo-react-charts/node_modules/@progress/kendo-react-common/dist/es/contexts/ZIndexContext.js","../node_modules/@progress/kendo-react-charts/node_modules/@progress/kendo-react-popup/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-charts/node_modules/@progress/kendo-react-popup/dist/es/PopupWithoutContext.js","../node_modules/@progress/kendo-react-charts/node_modules/@progress/kendo-react-popup/dist/es/util.js","../node_modules/@progress/kendo-react-charts/node_modules/@progress/kendo-react-popup/dist/es/Popup.js","../node_modules/@progress/kendo-react-charts/dist/es/ChartContext.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Popup.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Series.js","../node_modules/@progress/kendo-react-charts/dist/es/Container.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/Crosshair.js","../node_modules/@progress/kendo-react-charts/dist/es/tooltip/CrosshairContainer.js","../node_modules/@progress/kendo-react-charts/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-charts/dist/es/BaseChart.js","../node_modules/@progress/kendo-react-charts/dist/es/DonutCenter.js","../node_modules/@progress/kendo-react-charts/dist/es/Chart.js","../node_modules/@progress/kendo-react-charts/dist/es/components/base/ConfigurationComponent.js","../node_modules/@progress/kendo-react-charts/dist/es/components/Tooltip.js","../node_modules/@progress/kendo-react-charts/dist/es/components/base/CollectionConfigurationComponent.js","../node_modules/@progress/kendo-react-charts/dist/es/components/SeriesItem.js","../node_modules/@progress/kendo-react-charts/dist/es/components/Series.js","../node_modules/@progress/kendo-react-charts/dist/es/components/Legend.js","Components/FMT/I/I00/I000000/Widgets/DonutChartWidgetComponent.tsx","Components/FMT/I/I00/I000000/ConductoresDescargaChartComponent.tsx","Components/FMT/I/I00/I000000/Widgets/BasicoChartWidgetComponent.tsx","Components/FMT/I/I00/I000000/FicherosCargadosChartComponent.tsx","Components/FMT/I/I00/I000000/TarjetasConductoresComponent.tsx","Components/FMT/I/I00/I000000/VehiculosDescargaChartComponent.tsx","Components/FMT/I/I00/I000000/VehiculosPendientesRevisionChartComponent.tsx","Components/FMT/I/I00/I000000/I000000.tsx","Components/FMT/I/I00/I000404/I000404.tsx","Components/Core/Alert/AlertComponent.tsx","Components/FMT/I/I01/I010000/ModifyPasswordFormComponent.tsx","Components/FMT/I/I01/I010000/TwoFactorAuthFormComponent.tsx","Components/FMT/I/I01/I010000/UserPassFormComponent.tsx","Components/FMT/I/I01/I010000/I010000.tsx","../node_modules/i18next-browser-languagedetector/dist/esm/i18nextBrowserLanguageDetector.js","../node_modules/react-i18next/dist/es/withTranslation.js","Libraries/i18next/Backend.ts","Libraries/i18next/I18nextConfig.ts","Services/Enum/CoreValorResultadoEnum.ts","Services/Utils/Dates.ts","Services/Utils/GridUtils.ts","Services/Utils/Utils.ts","Theme/Icons.ts","../node_modules/@progress/kendo-data-query/dist/es/funcs.js","../node_modules/@progress/kendo-data-query/dist/es/odata.operators.js","../node_modules/@progress/kendo-data-query/dist/es/utils.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-descriptor.interface.js","../node_modules/@progress/kendo-data-query/dist/es/accessor.js","../node_modules/@progress/kendo-data-query/dist/es/filter-serialization.common.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/operators.enum.js","../node_modules/@progress/kendo-data-query/dist/es/mvc/deserialization.js","../node_modules/@progress/kendo-data-query/dist/es/sorting/sort-array.operator.js","../node_modules/@progress/kendo-data-query/dist/es/transducers.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/aggregate.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter.operators.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-no-eval.js","../node_modules/@progress/kendo-data-query/dist/es/filtering/filter-expression.factory.js","../node_modules/@progress/kendo-data-query/dist/es/grouping/group.operators.js","../node_modules/@progress/kendo-data-query/dist/es/sorting/sort.js","../node_modules/@progress/kendo-data-query/dist/es/array.operators.js","../node_modules/@progress/kendo-intl/dist/es/cldr/default-data.js","../node_modules/@progress/kendo-intl/dist/es/common/is-string.js","../node_modules/@progress/kendo-intl/dist/es/error-details.js","../node_modules/@progress/kendo-intl/dist/es/errors.js","../node_modules/@progress/kendo-intl/dist/es/cldr/info.js","../node_modules/@progress/kendo-intl/dist/es/common/constants.js","../node_modules/@progress/kendo-intl/dist/es/cldr/load-numbers.js","../node_modules/@progress/kendo-intl/dist/es/cldr/load-dates.js","../node_modules/@progress/kendo-intl/dist/es/cldr/territory.js","../node_modules/@progress/kendo-intl/dist/es/cldr/load-units.js","../node_modules/@progress/kendo-intl/dist/es/cldr/load.js","../node_modules/@progress/kendo-intl/dist/es/cldr/date-field-name.js","../node_modules/@progress/kendo-intl/dist/es/cldr/date-format-names.js","../node_modules/@progress/kendo-intl/dist/es/cldr/parse-range-date.js","../node_modules/@progress/kendo-intl/dist/es/cldr/currency.js","../node_modules/@progress/kendo-intl/dist/es/cldr/constants.js","../node_modules/@progress/kendo-intl/dist/es/cldr/first-day.js","../node_modules/@progress/kendo-intl/dist/es/cldr/weekend-range.js","../node_modules/@progress/kendo-intl/dist/es/cldr/number-symbols.js","../node_modules/@progress/kendo-intl/dist/es/common/is-negative-zero.js","../node_modules/@progress/kendo-intl/dist/es/numbers/format-currency-symbol.js","../node_modules/@progress/kendo-intl/dist/es/numbers/group-integer.js","../node_modules/@progress/kendo-intl/dist/es/numbers/is-currency-style.js","../node_modules/@progress/kendo-intl/dist/es/common/pad.js","../node_modules/@progress/kendo-intl/dist/es/common/round.js","../node_modules/@progress/kendo-intl/dist/es/numbers/standard-number-format.js","../node_modules/@progress/kendo-intl/dist/es/numbers/utils.js","../node_modules/@progress/kendo-intl/dist/es/numbers/custom-number-format.js","../node_modules/@progress/kendo-intl/dist/es/numbers/format-options.js","../node_modules/@progress/kendo-intl/dist/es/numbers/format-number.js","../node_modules/@progress/kendo-intl/dist/es/common/is-number.js","../node_modules/@progress/kendo-intl/dist/es/numbers/parse-number.js","../node_modules/@progress/kendo-intl/dist/es/common/format-string.js","../node_modules/@progress/kendo-intl/dist/es/dates/date-pattern.js","../node_modules/@progress/kendo-intl/dist/es/dates/date-name-type.js","../node_modules/@progress/kendo-intl/dist/es/dates/format-names.js","../node_modules/@progress/kendo-intl/dist/es/common/is-date.js","../node_modules/@progress/kendo-intl/dist/es/dates/constants.js","../node_modules/@progress/kendo-intl/dist/es/dates/format-date.js","../node_modules/@progress/kendo-intl/dist/es/dates/time-utils.js","../node_modules/@progress/kendo-intl/dist/es/dates/parse-date.js","../node_modules/@progress/kendo-intl/dist/es/dates/split-date-format.js","../node_modules/@progress/kendo-intl/dist/es/format.js","../node_modules/@progress/kendo-licensing/dist/index-esm.js","../node_modules/@progress/kendo-popup-common/dist/es/align-point.js","../node_modules/@progress/kendo-popup-common/dist/es/align.js","../node_modules/@progress/kendo-popup-common/dist/es/collision.js","../node_modules/@progress/kendo-popup-common/dist/es/restrict-to-view.js","../node_modules/@progress/kendo-popup-common/dist/es/utils.js","../node_modules/@progress/kendo-popup-common/dist/es/owner-document.js","../node_modules/@progress/kendo-popup-common/dist/es/window.js","../node_modules/@progress/kendo-popup-common/dist/es/document.js","../node_modules/@progress/kendo-popup-common/dist/es/scrollbar-width.js","../node_modules/@progress/kendo-popup-common/dist/es/window-viewport.js","../node_modules/@progress/kendo-popup-common/dist/es/scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset.js","../node_modules/@progress/kendo-popup-common/dist/es/element-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent.js","../node_modules/@progress/kendo-popup-common/dist/es/offset-parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/parent-scroll-position.js","../node_modules/@progress/kendo-popup-common/dist/es/position.js","../node_modules/@progress/kendo-popup-common/dist/es/parents.js","../node_modules/@progress/kendo-popup-common/dist/es/siblings.js","../node_modules/@progress/kendo-popup-common/dist/es/dom-utils.js","../node_modules/@progress/kendo-popup-common/dist/es/add-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/bounding-offset.js","../node_modules/@progress/kendo-popup-common/dist/es/position-with-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/remove-scroll.js","../node_modules/@progress/kendo-popup-common/dist/es/sibling-container.js","../node_modules/@progress/kendo-popup-common/dist/es/align-element.js","../node_modules/@progress/kendo-popup-common/dist/es/position-element.js","../node_modules/@progress/kendo-react-buttons/dist/es/Button.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/ButtonItem.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/popup.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/DropDownButton.js","../node_modules/@progress/kendo-react-buttons/dist/es/ListButton/utils/navigation.js","../node_modules/@progress/kendo-react-buttons/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-common/dist/es/canUseDOM.js","../node_modules/@progress/kendo-react-common/dist/es/classNames.js","../node_modules/@progress/kendo-react-common/dist/es/contexts/ZIndexContext.js","../node_modules/@progress/kendo-react-common/dist/es/events/dispatchEvent.js","../node_modules/@progress/kendo-react-common/dist/es/guid.js","../node_modules/@progress/kendo-react-common/dist/es/hocs/withPropsContext.js","../node_modules/@progress/kendo-react-common/dist/es/hooks/usePropsContext.js","../node_modules/@progress/kendo-react-common/dist/es/keys.js","../node_modules/@progress/kendo-react-common/dist/es/noop.js","../node_modules/@progress/kendo-react-common/dist/es/theme.js","../node_modules/@progress/kendo-react-common/dist/es/validate-package.js","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogTitleBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/Dialog.js","../node_modules/@progress/kendo-react-dialogs/dist/es/DialogActionsBar.js","../node_modules/@progress/kendo-react-dialogs/dist/es/constants.js","../node_modules/@progress/kendo-react-dialogs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-dialogs/dist/es/utils.js","../node_modules/@progress/kendo-react-indicators/dist/es/loader/Loader.js","../node_modules/@progress/kendo-react-indicators/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-indicators/dist/es/skeleton/Skeleton.js","../node_modules/@progress/kendo-react-inputs/dist/es/input/Input.js","../node_modules/@progress/kendo-react-inputs/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-intl/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlService.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationService.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/messages.js","../node_modules/@progress/kendo-react-intl/dist/es/globalization/GlobalizationContext.js","../node_modules/@progress/kendo-react-intl/dist/es/intlUtils.js","../node_modules/@progress/kendo-react-labels/dist/es/messages/index.js","../node_modules/@progress/kendo-react-labels/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-labels/dist/es/FloatingLabel.js","../node_modules/@progress/kendo-react-layout/dist/es/card/Card.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardBody.js","../node_modules/@progress/kendo-react-layout/dist/es/card/CardTitle.js","../node_modules/@progress/kendo-react-layout/dist/es/card/interfaces/Enums.js","../node_modules/@progress/kendo-react-layout/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-popup/dist/es/animation.js","../node_modules/@progress/kendo-react-popup/dist/es/package-metadata.js","../node_modules/@progress/kendo-react-popup/dist/es/PopupWithoutContext.js","../node_modules/@progress/kendo-react-popup/dist/es/util.js","../node_modules/@progress/kendo-react-popup/dist/es/Popup.js","../node_modules/base-64/base64.js","../node_modules/final-form/dist/final-form.es.js","../node_modules/hammerjs/hammer.js","../node_modules/resolve-pathname/esm/resolve-pathname.js","../node_modules/value-equal/esm/value-equal.js","../node_modules/history/esm/history.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/jsonc-simple-parser/dist/detokenize.js","../node_modules/jsonc-simple-parser/dist/index.js","../node_modules/jsonc-simple-parser/dist/lookup.js","../node_modules/jsonc-simple-parser/dist/parse.js","../node_modules/jsonc-simple-parser/dist/stringify.js","../node_modules/jsonc-simple-parser/dist/strip/index.js","../node_modules/jsonc-simple-parser/dist/strip/parser.js","../node_modules/jsonc-simple-parser/dist/strip/tokens.js","../node_modules/jsonc-simple-parser/dist/tokenize/context.js","../node_modules/jsonc-simple-parser/dist/tokenize/grammar.js","../node_modules/jsonc-simple-parser/dist/tokenize/index.js","../node_modules/jsonc-simple-parser/dist/tokenize/parser.js","../node_modules/jsonc-simple-parser/dist/tokenize/tokens.js","../node_modules/jsonc-simple-parser/dist/utils.js","../node_modules/jsonc-simple-parser/dist/validate.js","../node_modules/lodash/_DataView.js","../node_modules/lodash/_Hash.js","../node_modules/lodash/_ListCache.js","../node_modules/lodash/_Map.js","../node_modules/lodash/_MapCache.js","../node_modules/lodash/_Promise.js","../node_modules/lodash/_Set.js","../node_modules/lodash/_SetCache.js","../node_modules/lodash/_Stack.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_Uint8Array.js","../node_modules/lodash/_WeakMap.js","../node_modules/lodash/_arrayFilter.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_arrayMap.js","../node_modules/lodash/_arrayPush.js","../node_modules/lodash/_arrayReduce.js","../node_modules/lodash/_arraySome.js","../node_modules/lodash/_asciiToArray.js","../node_modules/lodash/_asciiWords.js","../node_modules/lodash/_assocIndexOf.js","../node_modules/lodash/_baseAssignValue.js","../node_modules/lodash/_baseFor.js","../node_modules/lodash/_baseForOwn.js","../node_modules/lodash/_baseGet.js","../node_modules/lodash/_baseGetAllKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseHas.js","../node_modules/lodash/_baseHasIn.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsEqual.js","../node_modules/lodash/_baseIsEqualDeep.js","../node_modules/lodash/_baseIsMatch.js","../node_modules/lodash/_baseIsNative.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseIteratee.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseMatches.js","../node_modules/lodash/_baseMatchesProperty.js","../node_modules/lodash/_baseProperty.js","../node_modules/lodash/_basePropertyDeep.js","../node_modules/lodash/_basePropertyOf.js","../node_modules/lodash/_baseSlice.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseToString.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_cacheHas.js","../node_modules/lodash/_castPath.js","../node_modules/lodash/_castSlice.js","../node_modules/lodash/_coreJsData.js","../node_modules/lodash/_createBaseFor.js","../node_modules/lodash/_createCaseFirst.js","../node_modules/lodash/_createCompounder.js","../node_modules/lodash/_deburrLetter.js","../node_modules/lodash/_defineProperty.js","../node_modules/lodash/_equalArrays.js","../node_modules/lodash/_equalByTag.js","../node_modules/lodash/_equalObjects.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getAllKeys.js","../node_modules/lodash/_getMapData.js","../node_modules/lodash/_getMatchData.js","../node_modules/lodash/_getNative.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_getSymbols.js","../node_modules/lodash/_getTag.js","../node_modules/lodash/_getValue.js","../node_modules/lodash/_hasPath.js","../node_modules/lodash/_hasUnicode.js","../node_modules/lodash/_hasUnicodeWord.js","../node_modules/lodash/_hashClear.js","../node_modules/lodash/_hashDelete.js","../node_modules/lodash/_hashGet.js","../node_modules/lodash/_hashHas.js","../node_modules/lodash/_hashSet.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isKey.js","../node_modules/lodash/_isKeyable.js","../node_modules/lodash/_isMasked.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_isStrictComparable.js","../node_modules/lodash/_listCacheClear.js","../node_modules/lodash/_listCacheDelete.js","../node_modules/lodash/_listCacheGet.js","../node_modules/lodash/_listCacheHas.js","../node_modules/lodash/_listCacheSet.js","../node_modules/lodash/_mapCacheClear.js","../node_modules/lodash/_mapCacheDelete.js","../node_modules/lodash/_mapCacheGet.js","../node_modules/lodash/_mapCacheHas.js","../node_modules/lodash/_mapCacheSet.js","../node_modules/lodash/_mapToArray.js","../node_modules/lodash/_matchesStrictComparable.js","../node_modules/lodash/_memoizeCapped.js","../node_modules/lodash/_nativeCreate.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/_setCacheAdd.js","../node_modules/lodash/_setCacheHas.js","../node_modules/lodash/_setToArray.js","../node_modules/lodash/_stackClear.js","../node_modules/lodash/_stackDelete.js","../node_modules/lodash/_stackGet.js","../node_modules/lodash/_stackHas.js","../node_modules/lodash/_stackSet.js","../node_modules/lodash/_stringToArray.js","../node_modules/lodash/_stringToPath.js","../node_modules/lodash/_toKey.js","../node_modules/lodash/_toSource.js","../node_modules/lodash/_unicodeToArray.js","../node_modules/lodash/_unicodeWords.js","../node_modules/lodash/camelCase.js","../node_modules/lodash/capitalize.js","../node_modules/lodash/deburr.js","../node_modules/lodash/eq.js","../node_modules/lodash/get.js","../node_modules/lodash/has.js","../node_modules/lodash/hasIn.js","../node_modules/lodash/identity.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isSymbol.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/lodash.js","../node_modules/lodash/mapKeys.js","../node_modules/lodash/mapValues.js","../node_modules/lodash/memoize.js","../node_modules/lodash/property.js","../node_modules/lodash/snakeCase.js","../node_modules/lodash/stubArray.js","../node_modules/lodash/stubFalse.js","../node_modules/lodash/toString.js","../node_modules/lodash/upperFirst.js","../node_modules/lodash/words.js","../node_modules/object-assign/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/property-expr/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react-final-form/dist/react-final-form.es.js","../node_modules/react-i18next/dist/es/unescape.js","../node_modules/react-i18next/dist/es/context.js","../node_modules/react-i18next/dist/es/useTranslation.js","../node_modules/react-i18next/dist/es/utils.js","../node_modules/react-router/modules/miniCreateReactContext.js","../node_modules/react-router/modules/createContext.js","../node_modules/react-router/modules/createNamedContext.js","../node_modules/react-router/modules/HistoryContext.js","../node_modules/react-router/modules/RouterContext.js","../node_modules/react-router/modules/Router.js","../node_modules/react-router/modules/MemoryRouter.js","../node_modules/react-router/modules/Lifecycle.js","../node_modules/react-router/modules/generatePath.js","../node_modules/react-router/modules/Redirect.js","../node_modules/react-router/modules/matchPath.js","../node_modules/react-router/modules/Route.js","../node_modules/react-router/modules/StaticRouter.js","../node_modules/react-router/modules/Switch.js","../node_modules/react-router/modules/hooks.js","../node_modules/react-router/node_modules/isarray/index.js","../node_modules/react-router/node_modules/path-to-regexp/index.js","../node_modules/react-router/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/react-router/node_modules/react-is/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/reghex/src/codegen.js","../node_modules/reghex/src/parser.js","../node_modules/reghex/src/core.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/toposort/index.js","../node_modules/tslib/tslib.es6.js","../node_modules/nanoclone/src/index.js","../node_modules/yup/es/util/printValue.js","../node_modules/yup/es/locale.js","../node_modules/yup/es/util/isSchema.js","../node_modules/yup/es/Condition.js","../node_modules/yup/es/util/toArray.js","../node_modules/yup/es/ValidationError.js","../node_modules/yup/es/util/runTests.js","../node_modules/yup/es/Reference.js","../node_modules/yup/es/util/createValidation.js","../node_modules/yup/es/util/reach.js","../node_modules/yup/es/util/ReferenceSet.js","../node_modules/yup/es/schema.js","../node_modules/yup/es/mixed.js","../node_modules/yup/es/util/isAbsent.js","../node_modules/yup/es/boolean.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/yup/es/string.js","../node_modules/yup/es/number.js","../node_modules/yup/es/util/isodate.js","../node_modules/yup/es/date.js","../node_modules/yup/es/util/sortFields.js","../node_modules/yup/es/util/sortByKeyOrder.js","../node_modules/yup/es/object.js","../node_modules/yup/es/array.js","../node_modules/yup/es/setLocale.js","../node_modules/yup/es/index.js","Components/FMT/C/C00|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/C/C01|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/F/F00|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/F/F01|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/G/G00|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/G/G01|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/I/I00|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/I/I01|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/R/R00|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/S/S00|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/V/V00|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","Components/FMT/V/V01|lazy|/([a-zA-Z][0-9]{6,6}/.tsx)$","../src|lazy|/^/Components.*/.json$/|include: /(_es%7C_en)/.json$/|groupOptions: {}|namespace object","../src|lazy|/^/Components.*/.jsonc$/|include: /(_es%7C_en)/.jsonc$/|groupOptions: {}|namespace object","../node_modules/@babel/runtime/helpers/taggedTemplateLiteral.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/inheritsLoose.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/i18next/dist/esm/i18next.js","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/tiny-invariant/dist/esm/tiny-invariant.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/css loading","../webpack/runtime/jsonp chunk loading","../node_modules/react-router-dom/modules/BrowserRouter.js","../node_modules/react-router-dom/modules/HashRouter.js","../node_modules/react-router-dom/modules/utils/locationUtils.js","../node_modules/react-router-dom/modules/Link.js","../node_modules/react-router-dom/modules/NavLink.js","Libraries/yup/yupConfig.ts","../node_modules/@progress/kendo-react-intl/dist/es/Localization/loadMessages.js","../node_modules/@progress/kendo-react-intl/dist/es/Localization/LocalizationProvider.js","../node_modules/@progress/kendo-react-intl/dist/es/Intl/IntlProvider.js","Components/Core/Layout/Intli18nProvider.tsx","Components/Core/Layout/NavSidebar/NavSidebarComponent.tsx","../node_modules/@progress/kendo-react-layout/dist/es/card/Avatar.js","Components/Core/Layout/NavTopbar/Breadcrumb/BreadcrumbComponent.tsx","Components/Core/Layout/NavTopbar/FinderComponent.tsx","Components/FMT/V/V00/V00Hook.ts","Components/FMT/C/C00/C00Hook.ts","Components/Core/Layout/NavTopbar/NavTopbarComponent.tsx","Components/Core/Layout/UserSidebar/NotificationPreviewComponent.tsx","Components/Core/Layout/UserSidebar/UserSidebarComponent.tsx","Components/Core/Layout/LayoutComponent.tsx","Components/Core/Routes/PrivateRoute.tsx","Components/Core/Routes/PublicRoute.tsx","Components/FMT/Router.tsx","Components/FMT/C/C00/C00Router.tsx","Components/FMT/C/C01/C01Router.tsx","Components/FMT/C/CRouter.tsx","Components/FMT/F/F00/F00Router.tsx","Components/FMT/F/F01/F01Router.tsx","Components/FMT/F/FRouter.tsx","Components/FMT/G/G00/G00Router.tsx","Components/FMT/G/G01/G01Router.tsx","Components/FMT/G/GRouter.tsx","Components/FMT/I/I00/I00Router.tsx","Components/FMT/I/I01/I01Router.tsx","Components/FMT/I/IRouter.tsx","Components/FMT/R/R00/R00Router.tsx","Components/FMT/R/RRouter.tsx","Components/FMT/S/S00/S00Router.tsx","Components/FMT/S/SRouter.tsx","Components/FMT/V/V00/V00Router.tsx","Components/FMT/V/V01/V01Router.tsx","Components/FMT/V/VRouter.tsx","serviceWorker.ts","index.tsx"],"sourcesContent":["import { Button as ButtonKendo } from '@progress/kendo-react-buttons';\r\nimport { FCRef, forwardRef, MouseEvent, useImperativeHandle, useRef } from 'react';\r\n\r\nimport { useBlockedSetter } from '../Layout/Hooks/LayoutHook';\r\nimport { useLoader } from '../Loaders/LoaderHook';\r\n\r\nimport { ButtonRefType, IButtonProps } from './IButtonProps';\r\n\r\nimport './ButtonTheme.scss';\r\n\r\n/**\r\n * Kendo button wrapper with predefined features.\r\n * By default, it's type is 'button'.\r\n *\r\n * @param {IButtonProps} props\r\n */\r\nexport const Button: FCRef = forwardRef(({\r\n onClick,\r\n ...restProps\r\n}, ref) =>\r\n{\r\n const { showLoader, hideLoader } = useLoader();\r\n const setBlocked = useBlockedSetter();\r\n\r\n const _onClick = async (e: MouseEvent) =>\r\n {\r\n showLoader();\r\n setBlocked(true);\r\n\r\n try\r\n {\r\n onClick && await onClick(e);\r\n }\r\n finally\r\n {\r\n setBlocked(false);\r\n hideLoader();\r\n }\r\n };\r\n\r\n return (\r\n \r\n );\r\n});\r\n\r\nButton.displayName = 'Button';\r\n\r\nconst InnerButton: FCRef = forwardRef(({\r\n type = 'button',\r\n onClick = () => {},\r\n ...restProps\r\n}, ref) =>\r\n{\r\n const buttonRef = useRef(null);\r\n\r\n useImperativeHandle(ref, () => buttonRef.current?.element ?? undefined);\r\n\r\n const _onClick = async (e: MouseEvent) =>\r\n {\r\n try\r\n {\r\n buttonRef.current?.element?.setAttribute('disabled', '');\r\n\r\n await onClick(e);\r\n }\r\n finally\r\n {\r\n buttonRef.current?.element?.removeAttribute('disabled');\r\n }\r\n };\r\n\r\n return (\r\n \r\n { restProps.children }\r\n \r\n );\r\n});\r\n\r\nInnerButton.displayName = 'InnerButton';","import { DialogActionsBar, Dialog as DialogKendo } from '@progress/kendo-react-dialogs';\r\nimport { Loader } from '@progress/kendo-react-indicators';\r\nimport { isString } from 'lodash';\r\nimport { FunctionComponent, VoidFunctionComponent } from 'react';\r\n\r\nimport { useGet } from '../Hooks/GetHook';\r\nimport { BlockedProvider } from '../Layout/BlockedProvider';\r\nimport { useRootElement, useTouchDevice, useBlocked, useBlockedSetter } from '../Layout/Hooks/LayoutHook';\r\nimport { useLoader, useLoading } from '../Loaders/LoaderHook';\r\nimport { LoaderProvider } from '../Loaders/LoaderProvider';\r\nimport { useNotification } from '../Notification/Hooks/NotificationHook';\r\nimport { Notifications } from '../Notification/NotificationComponent';\r\nimport { NotificationsProvider } from '../Notification/NotificationsProvider';\r\n\r\nimport { DialogEngine } from './Hooks/DialogHook';\r\nimport { IDialogProps } from './IDialogProps';\r\n\r\nimport './DialogTheme.scss';\r\n\r\n/**\r\n * Dialog core component.\r\n *\r\n * If you want to control the component programatically, use `useDialogEngine();`\r\n *\r\n * @param {IDialogProps} props\r\n */\r\nexport const Dialog: FunctionComponent = ({\r\n engine,\r\n ...restProps\r\n}: IDialogProps) =>\r\n{\r\n // Control the visibility of his component with the engine if provided\r\n // If the engine is not provided, then this component is always visible and her parent is the reponsible to show or hide.\r\n const visible = engine === undefined ? true : engine.isVisible();\r\n\r\n return (\r\n <>\r\n {visible &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n};\r\n\r\nconst InnerDialog: FunctionComponent = ({\r\n className = '',\r\n title,\r\n width = 'medium',\r\n height = 'medium',\r\n onClose,\r\n onOpen,\r\n actions,\r\n children,\r\n engine,\r\n appendTo = null,\r\n}: IDialogProps) =>\r\n{\r\n const rootElement = useRootElement();\r\n\r\n const widthClassname = width ? `${width === 'medium' ? 'md' : (width === 'large' ? 'lg' : 'sm')}W` : null;\r\n const heightClassname = height ? `${height === 'medium' ? 'md' : (height === 'large' ? 'lg' : 'sm')}H` : null;\r\n\r\n const _children = !Array.isArray(children) ?\r\n [children]\r\n : children;\r\n\r\n const isBlocked = useBlocked();\r\n const touchDevice = useTouchDevice();\r\n\r\n // #region Configure engine with the dialog\r\n\r\n const showNotification = useNotification();\r\n const loader = useLoader();\r\n const setBlocked = useBlockedSetter();\r\n\r\n (engine as DialogEngine | undefined)?.configure({\r\n showNotification,\r\n loader,\r\n setBlocked\r\n });\r\n\r\n // #endregion\r\n\r\n useGet(() =>\r\n {\r\n onOpen?.();\r\n });\r\n\r\n const _actionsBlocker = actions ?\r\n (\r\n { actions }\r\n
\r\n )\r\n : (
);\r\n\r\n return (\r\n \r\n {title}\r\n \r\n \r\n \r\n : title}\r\n onClose={() =>\r\n {\r\n engine?.hide();\r\n onClose?.();\r\n }}\r\n closeIcon={onClose ? true : false}\r\n appendTo={appendTo || rootElement}>\r\n { _children }\r\n {_actionsBlocker}\r\n \r\n );\r\n};\r\n\r\nDialog.displayName = 'Dialog';\r\n\r\nexport const ConfirmationDialogs: VoidFunctionComponent<{id?: string}> = ({ id = 'dialogs-confirmation-id' }: {id?: string}) =>\r\n{\r\n return (\r\n
\r\n );\r\n};\r\n\r\nConfirmationDialogs.displayName = 'ConfirmationDialogs';\r\n\r\n/**\r\n * Loader for the ``\r\n */\r\nexport const DialogLoading: VoidFunctionComponent = () =>\r\n{\r\n const isLoading = useLoading();\r\n return (\r\n \r\n );\r\n};\r\n\r\nDialogLoading.displayName = 'DialogLoading';","import { ComponentType, CSSProperties, ReactNode, useRef, useState } from 'react';\r\nimport { render } from 'react-dom';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { TransactionPermissionDTO } from 'Services/Transaction/ITransactionService';\r\n\r\nimport { Button } from 'Components/Core/Button/ButtonComponent';\r\nimport { useGet } from 'Components/Core/Hooks/GetHook';\r\nimport { TransactionPermissionProvider } from 'Components/Core/Layout/Transaction/TransactionPermissionProvider';\r\nimport { ILoader } from 'Components/Core/Loaders/ILoader';\r\nimport { IShowNotificationProps } from 'Components/Core/Notification/Hooks/NotificationHook';\r\nimport { useTransactionService } from 'Components/Core/Services/Hooks/TransactionHook';\r\n\r\nimport { Dialog } from '../DialogComponent';\r\nimport { IDialogProps, IMessageDialogProps } from '../IDialogProps';\r\nimport { MessageDialog } from '../MessageDialogComponent';\r\n\r\n/**\r\n * Check the permission for the transactionId and set the permissions in the context.\r\n * @param {string} transactionId the transaction id.\r\n */\r\nexport const withDialogPermission = (transactionId: string) => (Component: ComponentType) => (props: T & { children?: ReactNode; }) =>\r\n{\r\n const transactionService = useTransactionService(transactionId);\r\n const [transactionPermission, setTransactionPermission] = useState({\r\n read: false,\r\n modify: false,\r\n allowedTransactionOperationsKeys: [],\r\n allowAllTransactionOperations: false,\r\n loaded: false\r\n });\r\n\r\n useGet(async (mount) =>\r\n {\r\n const userPermission = await transactionService.getPermission();\r\n\r\n if (mount.current)\r\n {\r\n setTransactionPermission({ ...userPermission, loaded: true });\r\n }\r\n\r\n return () =>\r\n {\r\n // When unmounting, do something?\r\n };\r\n });\r\n\r\n return (\r\n \r\n { transactionPermission.loaded && }\r\n \r\n );\r\n};\r\n\r\n// #region Dialog Engine\r\n\r\nexport interface IDialogEngine\r\n{\r\n /**\r\n * Show the component.\r\n * If already visible, do nothing.\r\n */\r\n show: () => void,\r\n /**\r\n * Hide the component.\r\n * If already not visibile, do nothing.\r\n */\r\n hide: () => void;\r\n /**\r\n * Get the state of the dialog visible or invisible.\r\n */\r\n isVisible: () => boolean;\r\n /**\r\n * @see ILoader.showLoader\r\n */\r\n showLoader: () => void;\r\n /**\r\n * @see ILoader.hideLoader\r\n */\r\n hideLoader: () => void;\r\n /**\r\n * Set the state of the dialog blocked layer.\r\n */\r\n setBlocked: (visibility: boolean) => void;\r\n /**\r\n * Show a notification\r\n * @see {useNotification}\r\n */\r\n showNotification: (props?: IShowNotificationProps) => void;\r\n}\r\n\r\nexport interface DialogEngine extends IDialogEngine\r\n{\r\n /**\r\n * Allow to configure the dialog component with engine.\r\n */\r\n configure: (props: ConfigurationDialogEngine) => void;\r\n}\r\n\r\ninterface ConfigurationDialogEngine\r\n{\r\n /**\r\n * Set the showNotification function\r\n */\r\n showNotification: (props?: IShowNotificationProps) => void;\r\n\r\n /**\r\n * Set the loader function\r\n */\r\n loader: ILoader\r\n\r\n /**\r\n * Set the blocked function\r\n */\r\n setBlocked: (visibility: boolean) => void;\r\n}\r\n\r\n/**\r\n * Configure a engine for the `` component.\r\n * With this engine we can use to the `DialogEngine` API.\r\n *\r\n * @param {boolean} init the default status of the dialog (visible or invisible). Default to `false`\r\n * @returns {IDialogEngine} Engine to attach to a `` component.\r\n */\r\nexport const useDialogEngine = (init: boolean = false) : IDialogEngine =>\r\n{\r\n const [visible, setVisible] = useState(init);\r\n\r\n const showNotificationRef = useRef<((props?: IShowNotificationProps) => void)>();\r\n const loaderRef = useRef();\r\n const setBlockedRef = useRef<((blocked: boolean) => void)>();\r\n\r\n const result : DialogEngine = {\r\n show: () =>\r\n {\r\n setVisible(true);\r\n },\r\n hide: () =>\r\n {\r\n setVisible(false);\r\n },\r\n isVisible: () => visible,\r\n showLoader: () => loaderRef.current?.showLoader(),\r\n hideLoader: () => loaderRef.current?.hideLoader(),\r\n setBlocked: (blocked) =>\r\n {\r\n setBlockedRef.current?.(blocked);\r\n },\r\n showNotification: (props?: IShowNotificationProps) =>\r\n {\r\n showNotificationRef.current?.(props);\r\n },\r\n configure: (props: ConfigurationDialogEngine) =>\r\n {\r\n showNotificationRef.current = props.showNotification;\r\n loaderRef.current = props.loader;\r\n }\r\n };\r\n\r\n return result;\r\n};\r\n\r\n// #endregion\r\n\r\n// #region Message Dialog\r\n\r\nexport type IShowMessageDialogProps = Partial> & { onClose?: () => void };\r\n\r\n/**\r\n * Create a message dialog programatically.\r\n *\r\n * Example:\r\n *\r\n * ```ts\r\n * const showGeneralMessageDialog = useShowMessageDialog({ text: 'message' });\r\n * showGeneralMessageDialog();\r\n *\r\n * const showMessageDialog = useShowMessageDialog();\r\n * showMessageDialog({ text: 'custom message', type: 'warning' });\r\n * ```\r\n *\r\n * @param {IShowMessageDialogProps | undefined} props custom props for the dialog to render, by default render a Dialog with type standard\r\n * @param {string | undefined} id element id to attach the Dialog, by default use the `` center component.\r\n * @returns {(renderProps: IShowMessageDialogProps) => void} function to render a Dialog with a content, the renderProps can override the props defined in the hook initialization.\r\n */\r\nexport const useShowMessageDialog = (props: IShowMessageDialogProps = {}, id = 'dialogs-message-id') =>\r\n{\r\n const { t, ready } = useTranslation('/General', { useSuspense: false });\r\n /**\r\n * Show the message dialog with a custom content.\r\n * @param renderProps override the Hooks props with custom props.\r\n */\r\n return (renderProps: IShowMessageDialogProps) =>\r\n {\r\n const wrapper = document.getElementById(id);\r\n\r\n if (wrapper && ready)\r\n {\r\n const InnerMessageDialog = () =>\r\n {\r\n const engine = useDialogEngine(true);\r\n\r\n const finalProps = {\r\n text: '',\r\n engine: engine,\r\n ...props,\r\n ...renderProps\r\n };\r\n\r\n return (\r\n \r\n \r\n }\r\n text={finalProps.text} />\r\n );\r\n };\r\n\r\n render(, wrapper);\r\n }\r\n else\r\n {\r\n if (process.env.NODE_ENV === 'development')\r\n {\r\n console.warn(`The element hasn't been found`);\r\n }\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Creates a 'unavailable feature' message dialog.\r\n * @returns function to render the message dialog.\r\n */\r\nexport const useShowUnavailableFeatureDialog = () =>\r\n{\r\n const { t } = useTranslation('/General');\r\n\r\n const showMessageDialog = useShowMessageDialog({\r\n title: 'TMS',\r\n width: 'small',\r\n height: 'small',\r\n text: [t('/General:unavailableFeature1'), t('/General:unavailableFeature2')]\r\n });\r\n\r\n return () => showMessageDialog({});\r\n};\r\n\r\n// #endregion\r\n\r\n// #region Confirmation Dialog\r\n\r\nexport type IShowConfirmationDialogProps = Partial> & {\r\n /**\r\n * Text message.\r\n */\r\n text?: string | string[];\r\n /**\r\n * Confirmation button types. By default, 'yes|no'.\r\n */\r\n type?: 'accept|cancel' | 'yes|no';\r\n /**\r\n * Confirmation button style. By default, 'primary'.\r\n */\r\n confirmButtonClass?: 'primary' | 'standard' | 'danger';\r\n /**\r\n * Confirmation event handler.\r\n */\r\n onConfirm?: () => (void | Promise);\r\n /**\r\n * Cancel event handler.\r\n */\r\n onCancel?: () => (void | Promise);\r\n};\r\n\r\n/**\r\n * Create a confirmation dialog programatically.\r\n *\r\n * Example:\r\n *\r\n * ```ts\r\n * const showConfiguredConfirmationDialog = useShowConfirmationDialog({ text: 'Show an alert?', onConfirm: () => alert('Hello!') });\r\n * showConfiguredConfirmationDialog();\r\n *\r\n * const showConfirmationDialog = useShowConfirmationDialog();\r\n * showConfirmationDialog({ text: 'This will destroy the world. Do you want to continue?', confirmButtonType: 'danger', onConfirm: () => alert('BOOM!') });\r\n * ```\r\n *\r\n * @param {IShowConfirmationDialogProps} props custom props for the dialog to render.\r\n * @param {string | undefined} id element id to attach the Dialog, by default use the `` center component.\r\n * @returns {(renderProps: IShowConfirmationDialogProps) => void} function to render a Dialog with a content, the renderProps can override the props defined in the hook initialization.\r\n */\r\nexport const useShowConfirmationDialog = (props: IShowConfirmationDialogProps = {}, id = 'dialogs-confirmation-id') =>\r\n{\r\n const { t, ready } = useTranslation('/General', { useSuspense: false });\r\n\r\n return (renderProps: IShowConfirmationDialogProps) =>\r\n {\r\n const wrapper = document.getElementById(id);\r\n\r\n if (wrapper && ready)\r\n {\r\n const InnerDialog = () =>\r\n {\r\n const engine = useDialogEngine(true);\r\n\r\n const {\r\n title = 'TMS',\r\n text,\r\n type = 'yes|no',\r\n confirmButtonClass = 'primary',\r\n onConfirm,\r\n onCancel,\r\n ...restFinalProps\r\n } = { ...props, ...renderProps };\r\n\r\n const _onConfirm = async () =>\r\n {\r\n onConfirm && await onConfirm();\r\n\r\n engine.hide();\r\n };\r\n\r\n const _onCancel = async () =>\r\n {\r\n onCancel && await onCancel();\r\n\r\n engine.hide();\r\n };\r\n\r\n const _messages = Array.isArray(text) ?\r\n text\r\n : (text !== '' ?\r\n [text]\r\n : []);\r\n\r\n const confirmBtnLabel = type === 'accept|cancel' ?\r\n t('/General:confirmation.accept')\r\n : t('/General:confirmation.yes');\r\n\r\n const cancelBtnLabel = type === 'accept|cancel' ?\r\n t('/General:confirmation.cancel')\r\n : t('/General:confirmation.no');\r\n\r\n const commonStyling: CSSProperties = { minWidth: '4rem' };\r\n\r\n return (\r\n 5 ? 'medium' : 'small'}\r\n engine={engine}\r\n {...restFinalProps}\r\n actions={\r\n <>\r\n \r\n {confirmBtnLabel}\r\n \r\n \r\n {cancelBtnLabel}\r\n \r\n \r\n }>\r\n {\r\n _messages.map((element, index) => (\r\n

\r\n {element}\r\n

\r\n ))\r\n }\r\n
\r\n );\r\n };\r\n\r\n render(, wrapper);\r\n }\r\n else\r\n {\r\n if (process.env.NODE_ENV === 'development')\r\n {\r\n console.warn(`The element hasn't been found`);\r\n }\r\n }\r\n };\r\n};\r\n// #endregion","import { IconSolid } from 'Theme/Icons';\r\nimport { FunctionComponent, VoidFunctionComponent } from 'react';\r\n\r\nimport { Dialog } from './DialogComponent';\r\nimport { IMessageDialogProps } from './IDialogProps';\r\n\r\nimport './MessageDialogTheme.scss';\r\n\r\n/**\r\n * Message dialog core component.\r\n * @param {IMessageDialogProps} props\r\n * @returns MessageDialog\r\n */\r\nexport const MessageDialog: FunctionComponent = ({\r\n actions,\r\n className,\r\n text,\r\n title = 'TMS',\r\n type = 'standard',\r\n engine,\r\n width,\r\n height\r\n}) =>\r\n{\r\n const _messages = Array.isArray(text) ?\r\n text\r\n : (text !== '' ?\r\n [text]\r\n : []);\r\n\r\n const _width = width ?? (Array.isArray(text) && _messages.length > 1 ? 'medium' : 'small');\r\n const _height = height ?? (Array.isArray(text) && _messages.length > 1 ? 'medium' : 'small');\r\n\r\n return (\r\n \r\n {type === 'warning' && }\r\n {type === 'error' && }\r\n {title}\r\n }\r\n engine={engine}\r\n className={`message ${className ? className : ''} ${(type !== 'standard') ? type : ''}`}\r\n actions={actions}\r\n width={_width}\r\n height={_height}>\r\n {\r\n _messages.map((element, index) => (\r\n

\r\n {element}\r\n

\r\n ))\r\n }\r\n
\r\n );\r\n};\r\n\r\n/**\r\n * Messages Dialogs center where all are added.\r\n *\r\n * @param {{ id?: string }} props\r\n */\r\nexport const MessageDialogs: VoidFunctionComponent<{ id?: string; }> = ({ id = 'dialogs-message-id' }: { id?: string; }) =>\r\n{\r\n return
;\r\n};","import { Loader, Skeleton } from '@progress/kendo-react-indicators';\r\nimport { HTMLAttributes, VoidFunctionComponent } from 'react';\r\n\r\nimport { useAuthenticationService } from 'Components/Core/Services/Hooks/AuthenticationHook';\r\n\r\nimport { Button } from '../Button/ButtonComponent';\r\nimport { useTouchDevice } from '../Layout/Hooks/LayoutHook';\r\n\r\nimport './FallbackTheme.scss';\r\n\r\nexport const FallbackLayout: VoidFunctionComponent = () =>\r\n{\r\n const authenticationService = useAuthenticationService();\r\n const logged = authenticationService.currentUser !== null;\r\n\r\n return (\r\n <>\r\n {!logged &&\r\n
\r\n \r\n
\r\n }\r\n {logged &&\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n \r\n
\r\n
\r\n
\r\n }\r\n \r\n );\r\n};\r\n\r\nFallbackLayout.displayName = 'FallbackLayout';\r\n\r\nexport const FallbackDiv: VoidFunctionComponent> = ({\r\n className = '',\r\n ...restProps\r\n}) => (\r\n
\r\n
\r\n \r\n
\r\n
\r\n);\r\n\r\nFallbackDiv.displayName = 'FallbackDiv';\r\n\r\nexport const FallbackNavTopBar: VoidFunctionComponent = () =>\r\n{\r\n const touchDevice = useTouchDevice();\r\n\r\n return (\r\n \r\n );\r\n};\r\n\r\nFallbackNavTopBar.displayName = 'FallbackNavTopBar';\r\n\r\nexport const FallbackNavSidebar: VoidFunctionComponent = () => (\r\n \r\n);\r\n\r\nFallbackNavSidebar.displayName = 'FallbackNavSidebar';","import { useRef } from 'react';\r\n\r\n/**\r\n * A simple hook to create a constant value that lives for\r\n * the lifetime of the component.\r\n *\r\n * Plagiarized from https://github.com/Andarist/use-constant\r\n *\r\n * Do NOT reuse this code unless you know what you're doing.\r\n * Use Andarist's hook; it's more fault tolerant to things like\r\n * falsy values.\r\n *\r\n * https://reactjs.org/docs/hooks-faq.html#how-to-create-expensive-objects-lazily\r\n *\r\n * @param {Function} init - A function to generate the value\r\n */\r\nexport function useConstant(init: () => T): T\r\n{\r\n const ref = useRef<{ v: T }>();\r\n if (!ref.current)\r\n {\r\n ref.current = { v: init() };\r\n }\r\n return ref.current.v;\r\n}","import { DependencyList, MutableRefObject, useEffect } from 'react';\r\n\r\n/**\r\n * Execute the read function when the component is loaded for the first time.\r\n *\r\n * Use the deps params to allow the read function to execute again when the deps change.\r\n * @param readFunction the callback with a mount param to indicate if the current component is already mounted or not.\r\n * @param deps, default to `[]`\r\n */\r\nexport const useGet = (readFunction: (mount: MutableRefObject) => Promise void)> | void | (() => void), deps: DependencyList = []) =>\r\n{\r\n useEffect(() =>\r\n {\r\n const mount: MutableRefObject = { current: true };\r\n\r\n const cleanUpPromise = readFunction(mount);\r\n\r\n return () =>\r\n {\r\n if (cleanUpPromise)\r\n {\r\n Promise.resolve(cleanUpPromise)\r\n .then((cleanUpFunction) =>\r\n {\r\n if (cleanUpFunction)\r\n {\r\n cleanUpFunction();\r\n }\r\n });\r\n }\r\n\r\n mount.current = false;\r\n };\r\n // eslint-disable-next-line react-hooks/exhaustive-deps\r\n }, deps);\r\n};","import { Card } from '@progress/kendo-react-layout';\r\nimport { VoidFunctionComponent, MouseEvent, FunctionComponent } from 'react';\r\n\r\nimport { useNavigate } from 'Components/Core/Routes/Hooks/RouterHook';\r\n\r\nimport './LaunchCardTheme.scss';\r\n\r\ninterface ILaunchCardProps\r\n{\r\n /**\r\n * Card title. Mandatory.\r\n */\r\n title: string;\r\n /**\r\n * The transaction id. Mandatory.\r\n */\r\n transactionId: string;\r\n /**\r\n * Click event handler. Optional.\r\n * If implemented, ignores the default handler which uses the `transactionId`\r\n * to navigate to that transaction.\r\n */\r\n onClick?: (event: MouseEvent) => void | Promise;\r\n}\r\n\r\n/**\r\n * Card component for launching actions.\r\n * @param {ILaunchCardProps} props\r\n * @returns LaunchCard\r\n */\r\nexport const LaunchCard: VoidFunctionComponent = ({\r\n title,\r\n transactionId,\r\n onClick\r\n}) =>\r\n{\r\n const navigate = useNavigate();\r\n\r\n const _onClick = onClick ?? ((event: MouseEvent) =>\r\n {\r\n const url = `/${transactionId}/`;\r\n\r\n if (event.ctrlKey)\r\n {\r\n window.open(url);\r\n }\r\n else\r\n {\r\n navigate(url);\r\n }\r\n });\r\n\r\n const functionKey = transactionId.charAt(0);\r\n\r\n return (\r\n \r\n
\r\n {title}\r\n
\r\n
\r\n {transactionId}\r\n
\r\n
\r\n );\r\n};\r\n\r\nLaunchCard.displayName = 'LaunchCard';\r\n\r\ninterface ICardDeckProps\r\n{\r\n className?: string;\r\n}\r\n\r\nexport const CardDeck: FunctionComponent = ({ className, children }) =>\r\n (
\r\n { children }\r\n
);\r\n\r\nCardDeck.displayName = 'CardDeck';","import { createContext, Dispatch, FunctionComponent, SetStateAction, useState } from 'react';\r\n\r\nexport const BlockedSetterContext = createContext>>(() => {});\r\nexport const BlockedGetterContext = createContext(false);\r\n\r\nexport const BlockedProvider: FunctionComponent = ({ children }) =>\r\n{\r\n const [blocked, setBlocked] = useState(false);\r\n\r\n return (\r\n // Double context to avoid rerenders =>\r\n // https://medium.com/@bhavyasaggi/how-did-i-re-render-sharing-state-through-react-context-f271d5890a7b\r\n // https://codesandbox.io/s/dual-context-props-zwk6d?from-embed=&file=/src/ContextProvider.js\r\n // https://codesandbox.io/s/dual-context-props-forked-f7mpjc <= test\r\n \r\n \r\n {children}\r\n \r\n \r\n );\r\n};\r\n\r\nBlockedProvider.displayName = 'BlockedProvider';","import { CSSProperties, FCRef, forwardRef } from 'react';\r\n\r\nimport { IDivProps } from './IDivProps';\r\n\r\nimport './DivTheme.scss';\r\n\r\n/**\r\n * Div component for layout as rows using css flexbox.\r\n * @param {IDivProps} props\r\n * @returns DivRow\r\n */\r\nexport const DivRow : FCRef = forwardRef((props: IDivProps, ref) =>\r\n );\r\n\r\nDivRow.displayName = 'DivRow';\r\n\r\n/**\r\n * Div component for layout as columns using css flexbox.\r\n * Works perfecty inside DivRow components.\r\n * @param {IDivProps} props\r\n * @returns DivColumn\r\n */\r\nexport const DivColumn : FCRef = forwardRef((props: IDivProps, ref) =>\r\n );\r\n\r\nDivColumn.displayName = 'DivColumn';\r\n\r\ntype DivComponentType = IDivProps & { type: 'row' | 'column'; };\r\n\r\nconst DivComponent: FCRef = forwardRef(({\r\n type,\r\n className = '',\r\n width,\r\n minWidth,\r\n style,\r\n children,\r\n ...restProps\r\n}: DivComponentType, ref) =>\r\n{\r\n const _finalStyles: CSSProperties = style ?? {};\r\n\r\n if (width && !_finalStyles.width)\r\n {\r\n _finalStyles.width = width;\r\n }\r\n\r\n if (minWidth && !_finalStyles.minWidth)\r\n {\r\n _finalStyles.minWidth = minWidth;\r\n }\r\n\r\n return (\r\n
\r\n { children }\r\n
\r\n );\r\n});\r\n\r\nDivComponent.displayName = 'DivComponent';","import { isString } from 'lodash';\r\nimport { useContext, useEffect, useState } from 'react';\r\n\r\nimport { useConstant } from 'Components/Core/Hooks/ConstantHook';\r\n\r\nimport { BlockedGetterContext, BlockedSetterContext } from '../BlockedProvider';\r\nimport { ITransactionProps } from '../Transaction/ITransactionProps';\r\n\r\n/**\r\n * Gets the TMS app root html element as a constant.\r\n * @returns HtmlElement\r\n */\r\nexport const useRootElement = () =>\r\n{\r\n const rootElement = useConstant(() => document.getElementById('root-tms') || document.body);\r\n\r\n return rootElement;\r\n};\r\n\r\n/**\r\n * Hook for changing the page title from a string or a TransactionProps object.\r\n * @param transaccion\r\n */\r\nexport function useDocumentTitle(titleOrTransaction: string | ITransactionProps): void\r\n{\r\n useEffect(() =>\r\n {\r\n let documentTitle = '';\r\n\r\n if (isString(titleOrTransaction))\r\n {\r\n documentTitle = `${titleOrTransaction} - `;\r\n }\r\n else\r\n {\r\n if (titleOrTransaction.title !== '')\r\n {\r\n documentTitle += `${titleOrTransaction.title} - `;\r\n }\r\n\r\n if (titleOrTransaction.id !== '')\r\n {\r\n documentTitle += `${titleOrTransaction.id} - `;\r\n }\r\n }\r\n\r\n document.title = `${documentTitle}TMS`;\r\n }, [titleOrTransaction]);\r\n};\r\n\r\n// #region Media queries hooks\r\n\r\n/**\r\n * Hook indicating if app is running from a touch device.\r\n * Inspired by https://medium.com/swlh/using-window-matchmedia-for-media-queries-in-reactjs-97ddc66fca2e\r\n * and https://css-tricks.com/interaction-media-features-and-their-potential-for-incorrect-assumptions/\r\n * @returns {boolean} true if is a touch device. false in other case.\r\n */\r\nexport const useTouchDevice = () =>\r\n{\r\n const queryString = '(pointer: coarse) and (hover: none)';\r\n\r\n const [touchDevice, setTouchDevice] = useState(window.matchMedia(queryString).matches);\r\n\r\n useEffect(() =>\r\n {\r\n const mediaQuery = window.matchMedia(queryString);\r\n\r\n const checkTouchDevice = (ev: MediaQueryListEvent) =>\r\n {\r\n setTouchDevice(ev.matches);\r\n };\r\n\r\n mediaQuery.addEventListener('change', checkTouchDevice);\r\n\r\n return () =>\r\n {\r\n mediaQuery.removeEventListener('change', checkTouchDevice);\r\n };\r\n }, []);\r\n\r\n return touchDevice;\r\n};\r\n\r\ntype BootstrapSize = 'xs' | 'sm' | 'md' | 'lg' | 'xl';\r\n\r\n/**\r\n * Hook indicating if app window is below Bootstrap size breakpoint.\r\n * @param {BootstrapSize} size\r\n * @returns {boolean} true if is below the breakpoint. false in other case.\r\n */\r\nexport const useMediaBreakpointDown = (size: BootstrapSize) =>\r\n{\r\n const queryString: string = `(max-width: ${size === 'sm' ?\r\n '575.98'\r\n : (size === 'md' ?\r\n '767.98'\r\n : (size === 'lg' ?\r\n '991.98'\r\n : (size === 'xl' ?\r\n '1199.98'\r\n : '0' )))}px)`;\r\n\r\n const [deviceSize, setDeviceSize] = useState(window.matchMedia(queryString).matches);\r\n\r\n useEffect(() =>\r\n {\r\n const mediaQuery = window.matchMedia(queryString);\r\n\r\n const onChangeDeviceSize = (event: MediaQueryListEvent) =>\r\n {\r\n setDeviceSize(event.matches);\r\n };\r\n\r\n mediaQuery.addEventListener('change', onChangeDeviceSize);\r\n\r\n return () =>\r\n {\r\n mediaQuery.removeEventListener('change', onChangeDeviceSize);\r\n };\r\n }, [queryString]);\r\n\r\n return deviceSize;\r\n};\r\n\r\n// #endregion\r\n\r\n// #region Blocked layout hooks\r\n\r\n/**\r\n * Hook for getting the blocked state.\r\n * @returns {boolean}\r\n */\r\nexport const useBlocked = () =>\r\n{\r\n return useContext(BlockedGetterContext);\r\n};\r\n\r\n/**\r\n * Hook for setting the blocked state.\r\n * @returns {((blocked: boolean) => void)} setting function\r\n */\r\nexport const useBlockedSetter = () =>\r\n{\r\n return useContext(BlockedSetterContext);\r\n};\r\n\r\n// #endregion","import { useContext } from 'react';\r\n\r\nimport { InnerBreadcrumbContext } from './InnerBreadcrumbProvider';\r\n\r\n/**\r\n * Hook for getting the inner breadcrumb based on context.\r\n * @returns string | Array\r\n */\r\nexport const useInnerBreadcrumb = () =>\r\n{\r\n const { breadcrumb } = useContext(InnerBreadcrumbContext);\r\n return breadcrumb;\r\n};\r\n\r\n/**\r\n * Hook for setting the inner breadcrumb based on context.\r\n * @returns (breadcrumb: string | Array) => {}\r\n */\r\nexport const useInnerBreadcrumbSetter = () =>\r\n{\r\n const { setBreadcrumb } = useContext(InnerBreadcrumbContext);\r\n return setBreadcrumb;\r\n};","import { createContext, useState } from 'react';\r\n\r\nimport { IInnerBreadcrumbContext, IInnerBreadcrumbProviderProps } from './IInnerBreadcrumbProviderProps';\r\n\r\nexport const InnerBreadcrumbContext = createContext({\r\n breadcrumb: [],\r\n setBreadcrumb: (breadcrumb) => {}\r\n});\r\n\r\nexport const InnerBreadcrumbProvider = (props: IInnerBreadcrumbProviderProps) =>\r\n{\r\n const [breadcrumb, setBreadcrumb] = useState>([]);\r\n\r\n const contextValue = {\r\n breadcrumb,\r\n setBreadcrumb\r\n };\r\n\r\n return (\r\n \r\n { props.children }\r\n \r\n );\r\n};","import { ComponentType, useContext, useState } from 'react';\r\nimport { Redirect } from 'react-router-dom';\r\n\r\nimport { TransactionPermissionDTO } from 'Services/Transaction/ITransactionService';\r\n\r\nimport { useGet } from 'Components/Core/Hooks/GetHook';\r\nimport { useLoader } from 'Components/Core/Loaders/LoaderHook';\r\nimport { useTransactionService } from 'Components/Core/Services/Hooks/TransactionHook';\r\n\r\nimport { TransactionPermissionContext, TransactionPermissionProvider } from '../TransactionPermissionProvider';\r\nimport { TransactionContext } from '../TransactionProvider';\r\n// #region Active transaction\r\n/**\r\n * Get the active transaction.\r\n * @returns {TransactionContext}\r\n */\r\nexport const useActiveTransaction = () => useContext(TransactionContext);\r\n// #endregion\r\n// #region Transaction permissions\r\n/**\r\n * Check the permission for the transactionId and set the permissions in the context.\r\n * @param transactionId Transaction identifier.\r\n */\r\nexport const withPermission = (transactionId: string) => (Component: ComponentType) => (props: T) =>\r\n{\r\n const transactionService = useTransactionService(transactionId);\r\n\r\n const [transactionPermission, setTransactionPermission] = useState({\r\n read: false,\r\n modify: false,\r\n allowedTransactionOperationsKeys:[],\r\n allowAllTransactionOperations: false\r\n });\r\n\r\n const loader = useLoader();\r\n const [loading, setLoading] = useState(true);\r\n\r\n useGet(async (mount) =>\r\n {\r\n loader.showLoader();\r\n const userPermission = await transactionService.getPermission();\r\n if (mount.current)\r\n {\r\n setTransactionPermission(userPermission);\r\n setLoading(false);\r\n }\r\n loader.hideLoader();\r\n return () =>\r\n {\r\n // When unmounting, do something?\r\n };\r\n });\r\n\r\n return (\r\n \r\n {!loading &&\r\n <>\r\n {(transactionPermission.read || transactionPermission.modify) &&\r\n \r\n }\r\n {(!transactionPermission.read && !transactionPermission.modify) &&\r\n \r\n }\r\n \r\n }\r\n \r\n );\r\n};\r\n/**\r\n * Get the permission for the current transaction.\r\n * @returns {TransactionPermissionDTO}\r\n */\r\nexport const useTransactionPermission = () =>\r\n{\r\n let permission = useContext(TransactionPermissionContext);\r\n // If the permission is null, it's because the withPermission hook isn't being used.\r\n // Therefore, there isn't a TransactionPermissionContext so we by-pass it.\r\n if (permission === null)\r\n {\r\n permission = {\r\n read: true,\r\n modify: true,\r\n allowedTransactionOperationsKeys: [],\r\n allowAllTransactionOperations: true\r\n };\r\n }\r\n return permission;\r\n};\r\n// #endregion","import { IconSolid } from 'Theme/Icons';\r\nimport { Component, ErrorInfo } from 'react';\r\n\r\nimport { IErrorBoundaryState } from './IErrorBoundaryState';\r\n\r\nimport './ErrorBoundaryTheme.scss';\r\n\r\nexport class ErrorBoundary extends Component<{}, IErrorBoundaryState>\r\n{\r\n constructor(props: {})\r\n {\r\n super(props);\r\n this.state = { error: null, errorInfo: null };\r\n this.globalErrorHandler = this.globalErrorHandler.bind(this); // Bind function once\r\n }\r\n\r\n componentDidMount()\r\n {\r\n window.addEventListener('unhandledrejection', this.globalErrorHandler);\r\n window.addEventListener('error', this.globalErrorHandler);\r\n }\r\n\r\n componentWillUnmount()\r\n {\r\n window.removeEventListener('unhandledrejection', this.globalErrorHandler);\r\n window.removeEventListener('error', this.globalErrorHandler);\r\n }\r\n\r\n componentDidCatch(error: Error, errorInfo: ErrorInfo)\r\n {\r\n // Catch errors in any components below and re-render with error message\r\n this.setState({\r\n error: error,\r\n errorInfo: errorInfo\r\n });\r\n }\r\n\r\n globalErrorHandler(event: Event)\r\n {\r\n console.error('Some Error happens: ', event);\r\n if (event instanceof PromiseRejectionEvent)\r\n {\r\n this.setState({\r\n error: new Error(event.reason),\r\n errorInfo: event.reason\r\n });\r\n }\r\n else\r\n {\r\n this.setState({\r\n error: new Error('unknown error'),\r\n errorInfo: null\r\n });\r\n }\r\n }\r\n\r\n render()\r\n {\r\n if (this.state.errorInfo)\r\n {\r\n // Error path\r\n return (\r\n
\r\n

¡Vaya, algo ha fallado!

\r\n

\r\n

\r\n

\r\n Si quieres, ponnos un ticket contándonos que estabas haciendo e intentaremos solucionar el error lo antes posible.\r\n

\r\n
\r\n {this.state.error && this.state.error.toString()}\r\n
\r\n {this.state.errorInfo.componentStack}\r\n
\r\n
\r\n );\r\n }\r\n // Normally, just render children\r\n return this.props.children;\r\n }\r\n}","import { FunctionComponent, PropsWithChildren, useEffect } from 'react';\r\n\r\nimport { ErrorBoundary } from '../ErrorBoundary';\r\n\r\nimport { useActiveTransaction } from './Hooks/TransactionHook';\r\nimport { ITransactionProps } from './ITransactionProps';\r\n\r\nimport './TransactionTheme.scss';\r\n\r\n/**\r\n * The `` component is the basic layout of all transactions.\r\n *\r\n * Set the title of the transaction for the current transaction id.\r\n *\r\n * @param {ITransactionProps} props\r\n */\r\nexport const Transaction: FunctionComponent = ({\r\n title,\r\n id,\r\n className,\r\n cardMode = true,\r\n children\r\n}: PropsWithChildren) =>\r\n{\r\n // #region Hooks\r\n const { setActiveTransaction } = useActiveTransaction();\r\n // #endregion\r\n\r\n useEffect(() =>\r\n {\r\n setActiveTransaction({ title, id });\r\n }, [title, id, setActiveTransaction]);\r\n\r\n return (\r\n \r\n
\r\n {children}\r\n
\r\n
\r\n );\r\n};\r\n\r\nTransaction.displayName = 'Transaction';","import { createContext, PropsWithChildren } from 'react';\r\n\r\nimport { TransactionPermissionDTO } from 'Services/Transaction/ITransactionService';\r\n\r\nexport const TransactionPermissionContext = createContext(null);\r\n\r\nexport const TransactionPermissionProvider = ({\r\n read,\r\n modify,\r\n allowedTransactionOperationsKeys,\r\n allowAllTransactionOperations,\r\n children\r\n} : PropsWithChildren) =>\r\n{\r\n return \r\n { children }\r\n ;\r\n};","import { FunctionComponent, createContext, useState } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useDocumentTitle } from '../Hooks/LayoutHook';\r\n\r\nimport { ITransactionContext, ITransactionContextProps } from './ITransactionProviderProps';\r\n\r\nexport const TransactionContext = createContext({\r\n activeTransaction: {\r\n id:'',\r\n title: '...'\r\n },\r\n setActiveTransaction: (transaction: ITransactionContextProps | ((prevState: ITransactionContextProps) => ITransactionContextProps)) => {}\r\n});\r\n\r\nexport const TransactionProvider: FunctionComponent = ({ children }) =>\r\n{\r\n const { t } = useTranslation();\r\n\r\n const [activeTransaction, setActiveTransaction] = useState({\r\n id: '',\r\n title: t('loading')\r\n });\r\n\r\n useDocumentTitle(activeTransaction);\r\n\r\n return (\r\n \r\n { children }\r\n \r\n );\r\n};\r\n\r\nTransactionProvider.displayName = 'TransactionProvider';","import { MutableRefObject, useContext, useRef } from 'react';\r\n\r\nimport { ILoader, ILoaderEngine } from './ILoader';\r\nimport { LoaderGetterContext, LoaderSetterContext } from './LoaderProvider';\r\n\r\n/**\r\n * Get the loader status.\r\n * @returns `true` if is loading, `false` otherwise\r\n */\r\nexport const useLoading = (): boolean =>\r\n{\r\n return useContext(LoaderGetterContext);\r\n};\r\n\r\n/**\r\n * Allow to show or hide the loader.\r\n *\r\n * Once `showLoader()` is called it is the developer's responsibility to call `hideLoader()` or the loading will be displayed indefinitely.\r\n * @returns {ILoader}\r\n */\r\nexport const useLoader = (): ILoader =>\r\n{\r\n return useContext(LoaderSetterContext);\r\n};\r\n\r\n/**\r\n * Allow the parent component of the `` to create the engine and use the loader engine\r\n * from the parent without rerendering it.\r\n *\r\n * Usage:\r\n *\r\n * ```tsx\r\n * // Allow to use loaderEngine.showLoader(); and loaderEngine.hideLoader();\r\n * const loaderEngine = useLoaderEngine();\r\n *\r\n * return (\r\n * \r\n * \r\n * \r\n * )\r\n *\r\n * ```\r\n */\r\nexport const useLoaderEngine = () : ILoaderEngine =>\r\n{\r\n const ref = useRef({ isLoading: false, showLoader: () => {}, hideLoader: () => {} });\r\n\r\n return {\r\n ...ref.current,\r\n __ref: ref\r\n } as ILoaderEngine;\r\n};\r\n\r\nexport const isLoaderEngineRef = (param: ILoaderEngine): param is ILoaderEngine & { __ref: MutableRefObject } =>\r\n{\r\n return (param as any).__ref.current !== undefined;\r\n};","import { createContext, forwardRef, FunctionComponent, ReactNode, useImperativeHandle, useRef, useState } from 'react';\r\n\r\nimport { useConstant } from '../Hooks/ConstantHook';\r\nimport { useIsMounted } from '../Hooks/MountHook';\r\n\r\nimport { ILoader, ILoaderEngine } from './ILoader';\r\nimport { isLoaderEngineRef } from './LoaderHook';\r\n\r\nexport const LoaderSetterContext = createContext({ showLoader: () => {}, hideLoader: () => {} });\r\nexport const LoaderGetterContext = createContext(false);\r\n\r\n/**\r\n * The Loader context.\r\n *\r\n * Using the hook `const { showLoader, hideLoader } = useLoader();` any child is capable to change the loader status.\r\n * Using the hook `const isLoading = useLoading();` any child is subscribed to the loader status (loading or not loading) and is rerendered when\r\n * the loader status change.\r\n *\r\n * This provider have the property engine.\r\n * Using the hook `const loaderEngine = useLoaderEngine()` any parent componente can control the loader from outside the\r\n * LoaderProvider\r\n */\r\nexport const LoaderProvider: FunctionComponent<{ engine?: ILoaderEngine }> = ({\r\n engine,\r\n children\r\n}) =>\r\n{\r\n if (engine && !isLoaderEngineRef(engine))\r\n {\r\n throw new Error('❌ the engine props is not a valid `ILoaderEngine`, use the hook `useLoaderEngine` to create it!');\r\n }\r\n return { children };\r\n};\r\n\r\nconst LoaderProviderRef = forwardRef((props, ref) =>\r\n{\r\n const counterRef = useRef(0);\r\n const [isLoading, setLoading] = useState(false);\r\n\r\n const isMounted = useIsMounted();\r\n\r\n const loaderSetter = useConstant(() =>\r\n {\r\n return {\r\n showLoader: () =>\r\n {\r\n counterRef.current += 1;\r\n setLoading(true);\r\n },\r\n hideLoader: () =>\r\n {\r\n // Update the value\r\n counterRef.current -= 1;\r\n if (counterRef.current === 0 && isMounted())\r\n {\r\n setLoading(false);\r\n }\r\n }\r\n };\r\n });\r\n\r\n useImperativeHandle(ref, () =>\r\n {\r\n return {\r\n ...loaderSetter,\r\n isLoading\r\n };\r\n });\r\n\r\n return (\r\n // Double context to avoid rerenders =>\r\n // https://medium.com/@bhavyasaggi/how-did-i-re-render-sharing-state-through-react-context-f271d5890a7b\r\n // https://codesandbox.io/s/dual-context-props-zwk6d?from-embed=&file=/src/ContextProvider.js\r\n // https://codesandbox.io/s/dual-context-props-forked-f7mpjc <= test\r\n \r\n \r\n { props.children }\r\n \r\n \r\n );\r\n});","import { useCallback, useEffect, useRef } from 'react';\r\n\r\n/**\r\n * Check if the component is already mounted.\r\n *\r\n * In React, once a component is unmounted, it is deleted from memory and will never be mounted again. That's why we don't define a state in a disassembled component. Changing the state in an unmounted component will result this error:\r\n * ```\r\n * Warning: Can't perform a React state update on an unmounted component.\r\n * This is a no-op, but it indicates a memory leak in your application.\r\n * To fix, cancel all subscriptions and asynchronous tasks in a useEffect cleanup function.\r\n * The right way to solve this is cleaning effect like the above message said. For example, see useInterval or useEventListener.\r\n * ```\r\n * But, there are some cases like Promise or API calls where it's impossible to know if the component is still mounted at the resolve time.\r\n * This React hook help you to avoid this error with a function that return a boolean, isMounted.\r\n *\r\n * @see https://usehooks-ts.com/react-hook/use-is-mounted\r\n *\r\n * @returns {() => boolean} a function to check if the component is already mounted\r\n */\r\nexport function useIsMounted(): () => boolean\r\n{\r\n const isMounted = useRef(false);\r\n\r\n useEffect(() =>\r\n {\r\n isMounted.current = true;\r\n\r\n return () =>\r\n {\r\n isMounted.current = false;\r\n };\r\n }, []);\r\n\r\n return useCallback(() => isMounted.current, []);\r\n}\r\n","import { HTMLAttributes, VoidFunctionComponent } from 'react';\r\n\r\nimport { FallbackDiv } from '../Fallback/FallbackLayoutComponent';\r\n\r\nexport const Loading: VoidFunctionComponent> = (props) => ();\r\n\r\nLoading.displayName = 'Loading';","import { useCallback } from 'react';\r\nimport { useContext } from 'react';\r\nimport { render, unmountComponentAtNode } from 'react-dom';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { INotificationProps } from '../INotificationProps';\r\nimport { Notification } from '../NotificationComponent';\r\nimport { NotificationsContext } from '../NotificationsProvider';\r\n\r\n/**\r\n * Create a notification programatically.\r\n *\r\n * Example:\r\n *\r\n * ```ts\r\n * const showNotification = useNotification();\r\n * showNotification();\r\n * ```\r\n * @returns {(props: IShowNotificationProps = ({ content: t('notification.saved')) }) => void} function to show the notification with a message. Default: `t('notification.saved')`\r\n */\r\nexport const useNotification = () =>\r\n{\r\n const { t } = useTranslation();\r\n const notificationsId = useContext(NotificationsContext);\r\n\r\n /**\r\n * Show the notification with a message. Default: `{ content: t('notification.saved')) }`\r\n * @param {IShowNotificationProps} props\r\n */\r\n return useCallback((props: IShowNotificationProps = {\r\n content: t('notification.saved')\r\n }) =>\r\n {\r\n const { content, ...restProps } = props;\r\n const wrapper = document.getElementById(notificationsId);\r\n\r\n if (wrapper)\r\n {\r\n render(\r\n unmountComponentAtNode(wrapper)}>\r\n {content}\r\n ,\r\n wrapper);\r\n }\r\n else\r\n {\r\n if (process.env.NODE_ENV === 'development')\r\n {\r\n console.warn(`The element hasn't been found`);\r\n }\r\n }\r\n }, [notificationsId, t]);\r\n};\r\n\r\nexport interface IShowNotificationProps extends Omit {\r\n content?: string;\r\n}","function replaceClassName(origClass, classToRemove) {\n return origClass.replace(new RegExp(\"(^|\\\\s)\" + classToRemove + \"(?:\\\\s|$)\", 'g'), '$1').replace(/\\s+/g, ' ').replace(/^\\s*|\\s*$/g, '');\n}\n/**\n * Removes a CSS class from a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\n\nexport default function removeClass(element, className) {\n if (element.classList) {\n element.classList.remove(className);\n } else if (typeof element.className === 'string') {\n element.className = replaceClassName(element.className, className);\n } else {\n element.setAttribute('class', replaceClassName(element.className && element.className.baseVal || '', className));\n }\n}","export default {\n disabled: false\n};","import React from 'react';\nexport default React.createContext(null);","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport config from './config';\nimport { timeoutsShape } from './utils/PropTypes';\nimport TransitionGroupContext from './TransitionGroupContext';\nexport var UNMOUNTED = 'unmounted';\nexport var EXITED = 'exited';\nexport var ENTERING = 'entering';\nexport var ENTERED = 'entered';\nexport var EXITING = 'exiting';\n/**\n * The Transition component lets you describe a transition from one component\n * state to another _over time_ with a simple declarative API. Most commonly\n * it's used to animate the mounting and unmounting of a component, but can also\n * be used to describe in-place transition states as well.\n *\n * ---\n *\n * **Note**: `Transition` is a platform-agnostic base component. If you're using\n * transitions in CSS, you'll probably want to use\n * [`CSSTransition`](https://reactcommunity.org/react-transition-group/css-transition)\n * instead. It inherits all the features of `Transition`, but contains\n * additional features necessary to play nice with CSS transitions (hence the\n * name of the component).\n *\n * ---\n *\n * By default the `Transition` component does not alter the behavior of the\n * component it renders, it only tracks \"enter\" and \"exit\" states for the\n * components. It's up to you to give meaning and effect to those states. For\n * example we can add styles to a component when it enters or exits:\n *\n * ```jsx\n * import { Transition } from 'react-transition-group';\n *\n * const duration = 300;\n *\n * const defaultStyle = {\n * transition: `opacity ${duration}ms ease-in-out`,\n * opacity: 0,\n * }\n *\n * const transitionStyles = {\n * entering: { opacity: 1 },\n * entered: { opacity: 1 },\n * exiting: { opacity: 0 },\n * exited: { opacity: 0 },\n * };\n *\n * const Fade = ({ in: inProp }) => (\n * \n * {state => (\n *
\n * I'm a fade Transition!\n *
\n * )}\n *
\n * );\n * ```\n *\n * There are 4 main states a Transition can be in:\n * - `'entering'`\n * - `'entered'`\n * - `'exiting'`\n * - `'exited'`\n *\n * Transition state is toggled via the `in` prop. When `true` the component\n * begins the \"Enter\" stage. During this stage, the component will shift from\n * its current transition state, to `'entering'` for the duration of the\n * transition and then to the `'entered'` stage once it's complete. Let's take\n * the following example (we'll use the\n * [useState](https://reactjs.org/docs/hooks-reference.html#usestate) hook):\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n * {state => (\n * // ...\n * )}\n * \n * \n *
\n * );\n * }\n * ```\n *\n * When the button is clicked the component will shift to the `'entering'` state\n * and stay there for 500ms (the value of `timeout`) before it finally switches\n * to `'entered'`.\n *\n * When `in` is `false` the same thing happens except the state moves from\n * `'exiting'` to `'exited'`.\n */\n\nvar Transition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(Transition, _React$Component);\n\n function Transition(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n var parentGroup = context; // In the context of a TransitionGroup all enters are really appears\n\n var appear = parentGroup && !parentGroup.isMounting ? props.enter : props.appear;\n var initialStatus;\n _this.appearStatus = null;\n\n if (props.in) {\n if (appear) {\n initialStatus = EXITED;\n _this.appearStatus = ENTERING;\n } else {\n initialStatus = ENTERED;\n }\n } else {\n if (props.unmountOnExit || props.mountOnEnter) {\n initialStatus = UNMOUNTED;\n } else {\n initialStatus = EXITED;\n }\n }\n\n _this.state = {\n status: initialStatus\n };\n _this.nextCallback = null;\n return _this;\n }\n\n Transition.getDerivedStateFromProps = function getDerivedStateFromProps(_ref, prevState) {\n var nextIn = _ref.in;\n\n if (nextIn && prevState.status === UNMOUNTED) {\n return {\n status: EXITED\n };\n }\n\n return null;\n } // getSnapshotBeforeUpdate(prevProps) {\n // let nextStatus = null\n // if (prevProps !== this.props) {\n // const { status } = this.state\n // if (this.props.in) {\n // if (status !== ENTERING && status !== ENTERED) {\n // nextStatus = ENTERING\n // }\n // } else {\n // if (status === ENTERING || status === ENTERED) {\n // nextStatus = EXITING\n // }\n // }\n // }\n // return { nextStatus }\n // }\n ;\n\n var _proto = Transition.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.updateStatus(true, this.appearStatus);\n };\n\n _proto.componentDidUpdate = function componentDidUpdate(prevProps) {\n var nextStatus = null;\n\n if (prevProps !== this.props) {\n var status = this.state.status;\n\n if (this.props.in) {\n if (status !== ENTERING && status !== ENTERED) {\n nextStatus = ENTERING;\n }\n } else {\n if (status === ENTERING || status === ENTERED) {\n nextStatus = EXITING;\n }\n }\n }\n\n this.updateStatus(false, nextStatus);\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.cancelNextCallback();\n };\n\n _proto.getTimeouts = function getTimeouts() {\n var timeout = this.props.timeout;\n var exit, enter, appear;\n exit = enter = appear = timeout;\n\n if (timeout != null && typeof timeout !== 'number') {\n exit = timeout.exit;\n enter = timeout.enter; // TODO: remove fallback for next major\n\n appear = timeout.appear !== undefined ? timeout.appear : enter;\n }\n\n return {\n exit: exit,\n enter: enter,\n appear: appear\n };\n };\n\n _proto.updateStatus = function updateStatus(mounting, nextStatus) {\n if (mounting === void 0) {\n mounting = false;\n }\n\n if (nextStatus !== null) {\n // nextStatus will always be ENTERING or EXITING.\n this.cancelNextCallback();\n\n if (nextStatus === ENTERING) {\n this.performEnter(mounting);\n } else {\n this.performExit();\n }\n } else if (this.props.unmountOnExit && this.state.status === EXITED) {\n this.setState({\n status: UNMOUNTED\n });\n }\n };\n\n _proto.performEnter = function performEnter(mounting) {\n var _this2 = this;\n\n var enter = this.props.enter;\n var appearing = this.context ? this.context.isMounting : mounting;\n\n var _ref2 = this.props.nodeRef ? [appearing] : [ReactDOM.findDOMNode(this), appearing],\n maybeNode = _ref2[0],\n maybeAppearing = _ref2[1];\n\n var timeouts = this.getTimeouts();\n var enterTimeout = appearing ? timeouts.appear : timeouts.enter; // no enter animation skip right to ENTERED\n // if we are mounting and running this it means appear _must_ be set\n\n if (!mounting && !enter || config.disabled) {\n this.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode);\n });\n return;\n }\n\n this.props.onEnter(maybeNode, maybeAppearing);\n this.safeSetState({\n status: ENTERING\n }, function () {\n _this2.props.onEntering(maybeNode, maybeAppearing);\n\n _this2.onTransitionEnd(enterTimeout, function () {\n _this2.safeSetState({\n status: ENTERED\n }, function () {\n _this2.props.onEntered(maybeNode, maybeAppearing);\n });\n });\n });\n };\n\n _proto.performExit = function performExit() {\n var _this3 = this;\n\n var exit = this.props.exit;\n var timeouts = this.getTimeouts();\n var maybeNode = this.props.nodeRef ? undefined : ReactDOM.findDOMNode(this); // no exit animation skip right to EXITED\n\n if (!exit || config.disabled) {\n this.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n return;\n }\n\n this.props.onExit(maybeNode);\n this.safeSetState({\n status: EXITING\n }, function () {\n _this3.props.onExiting(maybeNode);\n\n _this3.onTransitionEnd(timeouts.exit, function () {\n _this3.safeSetState({\n status: EXITED\n }, function () {\n _this3.props.onExited(maybeNode);\n });\n });\n });\n };\n\n _proto.cancelNextCallback = function cancelNextCallback() {\n if (this.nextCallback !== null) {\n this.nextCallback.cancel();\n this.nextCallback = null;\n }\n };\n\n _proto.safeSetState = function safeSetState(nextState, callback) {\n // This shouldn't be necessary, but there are weird race conditions with\n // setState callbacks and unmounting in testing, so always make sure that\n // we can cancel any pending setState callbacks after we unmount.\n callback = this.setNextCallback(callback);\n this.setState(nextState, callback);\n };\n\n _proto.setNextCallback = function setNextCallback(callback) {\n var _this4 = this;\n\n var active = true;\n\n this.nextCallback = function (event) {\n if (active) {\n active = false;\n _this4.nextCallback = null;\n callback(event);\n }\n };\n\n this.nextCallback.cancel = function () {\n active = false;\n };\n\n return this.nextCallback;\n };\n\n _proto.onTransitionEnd = function onTransitionEnd(timeout, handler) {\n this.setNextCallback(handler);\n var node = this.props.nodeRef ? this.props.nodeRef.current : ReactDOM.findDOMNode(this);\n var doesNotHaveTimeoutOrListener = timeout == null && !this.props.addEndListener;\n\n if (!node || doesNotHaveTimeoutOrListener) {\n setTimeout(this.nextCallback, 0);\n return;\n }\n\n if (this.props.addEndListener) {\n var _ref3 = this.props.nodeRef ? [this.nextCallback] : [node, this.nextCallback],\n maybeNode = _ref3[0],\n maybeNextCallback = _ref3[1];\n\n this.props.addEndListener(maybeNode, maybeNextCallback);\n }\n\n if (timeout != null) {\n setTimeout(this.nextCallback, timeout);\n }\n };\n\n _proto.render = function render() {\n var status = this.state.status;\n\n if (status === UNMOUNTED) {\n return null;\n }\n\n var _this$props = this.props,\n children = _this$props.children,\n _in = _this$props.in,\n _mountOnEnter = _this$props.mountOnEnter,\n _unmountOnExit = _this$props.unmountOnExit,\n _appear = _this$props.appear,\n _enter = _this$props.enter,\n _exit = _this$props.exit,\n _timeout = _this$props.timeout,\n _addEndListener = _this$props.addEndListener,\n _onEnter = _this$props.onEnter,\n _onEntering = _this$props.onEntering,\n _onEntered = _this$props.onEntered,\n _onExit = _this$props.onExit,\n _onExiting = _this$props.onExiting,\n _onExited = _this$props.onExited,\n _nodeRef = _this$props.nodeRef,\n childProps = _objectWithoutPropertiesLoose(_this$props, [\"children\", \"in\", \"mountOnEnter\", \"unmountOnExit\", \"appear\", \"enter\", \"exit\", \"timeout\", \"addEndListener\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"nodeRef\"]);\n\n return (\n /*#__PURE__*/\n // allows for nested Transitions\n React.createElement(TransitionGroupContext.Provider, {\n value: null\n }, typeof children === 'function' ? children(status, childProps) : React.cloneElement(React.Children.only(children), childProps))\n );\n };\n\n return Transition;\n}(React.Component);\n\nTransition.contextType = TransitionGroupContext;\nTransition.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * A React reference to DOM element that need to transition:\n * https://stackoverflow.com/a/51127130/4671932\n *\n * - When `nodeRef` prop is used, `node` is not passed to callback functions\n * (e.g. `onEnter`) because user already has direct access to the node.\n * - When changing `key` prop of `Transition` in a `TransitionGroup` a new\n * `nodeRef` need to be provided to `Transition` with changed `key` prop\n * (see\n * [test/CSSTransition-test.js](https://github.com/reactjs/react-transition-group/blob/13435f897b3ab71f6e19d724f145596f5910581c/test/CSSTransition-test.js#L362-L437)).\n */\n nodeRef: PropTypes.shape({\n current: typeof Element === 'undefined' ? PropTypes.any : function (propValue, key, componentName, location, propFullName, secret) {\n var value = propValue[key];\n return PropTypes.instanceOf(value && 'ownerDocument' in value ? value.ownerDocument.defaultView.Element : Element)(propValue, key, componentName, location, propFullName, secret);\n }\n }),\n\n /**\n * A `function` child can be used instead of a React element. This function is\n * called with the current transition status (`'entering'`, `'entered'`,\n * `'exiting'`, `'exited'`), which can be used to apply context\n * specific props to a component.\n *\n * ```jsx\n * \n * {state => (\n * \n * )}\n * \n * ```\n */\n children: PropTypes.oneOfType([PropTypes.func.isRequired, PropTypes.element.isRequired]).isRequired,\n\n /**\n * Show the component; triggers the enter or exit states\n */\n in: PropTypes.bool,\n\n /**\n * By default the child component is mounted immediately along with\n * the parent `Transition` component. If you want to \"lazy mount\" the component on the\n * first `in={true}` you can set `mountOnEnter`. After the first enter transition the component will stay\n * mounted, even on \"exited\", unless you also specify `unmountOnExit`.\n */\n mountOnEnter: PropTypes.bool,\n\n /**\n * By default the child component stays mounted after it reaches the `'exited'` state.\n * Set `unmountOnExit` if you'd prefer to unmount the component after it finishes exiting.\n */\n unmountOnExit: PropTypes.bool,\n\n /**\n * By default the child component does not perform the enter transition when\n * it first mounts, regardless of the value of `in`. If you want this\n * behavior, set both `appear` and `in` to `true`.\n *\n * > **Note**: there are no special appear states like `appearing`/`appeared`, this prop\n * > only adds an additional enter transition. However, in the\n * > `` component that first enter transition does result in\n * > additional `.appear-*` classes, that way you can choose to style it\n * > differently.\n */\n appear: PropTypes.bool,\n\n /**\n * Enable or disable enter transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * Enable or disable exit transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * The duration of the transition, in milliseconds.\n * Required unless `addEndListener` is provided.\n *\n * You may specify a single timeout for all transitions:\n *\n * ```jsx\n * timeout={500}\n * ```\n *\n * or individually:\n *\n * ```jsx\n * timeout={{\n * appear: 500,\n * enter: 300,\n * exit: 500,\n * }}\n * ```\n *\n * - `appear` defaults to the value of `enter`\n * - `enter` defaults to `0`\n * - `exit` defaults to `0`\n *\n * @type {number | { enter?: number, exit?: number, appear?: number }}\n */\n timeout: function timeout(props) {\n var pt = timeoutsShape;\n if (!props.addEndListener) pt = pt.isRequired;\n\n for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {\n args[_key - 1] = arguments[_key];\n }\n\n return pt.apply(void 0, [props].concat(args));\n },\n\n /**\n * Add a custom transition end trigger. Called with the transitioning\n * DOM node and a `done` callback. Allows for more fine grained transition end\n * logic. Timeouts are still used as a fallback if provided.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * ```jsx\n * addEndListener={(node, done) => {\n * // use the css transitionend event to mark the finish of a transition\n * node.addEventListener('transitionend', done, false);\n * }}\n * ```\n */\n addEndListener: PropTypes.func,\n\n /**\n * Callback fired before the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEnter: PropTypes.func,\n\n /**\n * Callback fired after the \"entering\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * Callback fired after the \"entered\" status is applied. An extra parameter\n * `isAppearing` is supplied to indicate if the enter stage is occurring on the initial mount\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool) -> void\n */\n onEntered: PropTypes.func,\n\n /**\n * Callback fired before the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExit: PropTypes.func,\n\n /**\n * Callback fired after the \"exiting\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExiting: PropTypes.func,\n\n /**\n * Callback fired after the \"exited\" status is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement) -> void\n */\n onExited: PropTypes.func\n} : {}; // Name the function so it is clearer in the documentation\n\nfunction noop() {}\n\nTransition.defaultProps = {\n in: false,\n mountOnEnter: false,\n unmountOnExit: false,\n appear: false,\n enter: true,\n exit: true,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop\n};\nTransition.UNMOUNTED = UNMOUNTED;\nTransition.EXITED = EXITED;\nTransition.ENTERING = ENTERING;\nTransition.ENTERED = ENTERED;\nTransition.EXITING = EXITING;\nexport default Transition;","import _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport addOneClass from 'dom-helpers/addClass';\nimport removeOneClass from 'dom-helpers/removeClass';\nimport React from 'react';\nimport Transition from './Transition';\nimport { classNamesShape } from './utils/PropTypes';\n\nvar _addClass = function addClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return addOneClass(node, c);\n });\n};\n\nvar removeClass = function removeClass(node, classes) {\n return node && classes && classes.split(' ').forEach(function (c) {\n return removeOneClass(node, c);\n });\n};\n/**\n * A transition component inspired by the excellent\n * [ng-animate](https://docs.angularjs.org/api/ngAnimate) library, you should\n * use it if you're using CSS transitions or animations. It's built upon the\n * [`Transition`](https://reactcommunity.org/react-transition-group/transition)\n * component, so it inherits all of its props.\n *\n * `CSSTransition` applies a pair of class names during the `appear`, `enter`,\n * and `exit` states of the transition. The first class is applied and then a\n * second `*-active` class in order to activate the CSS transition. After the\n * transition, matching `*-done` class names are applied to persist the\n * transition state.\n *\n * ```jsx\n * function App() {\n * const [inProp, setInProp] = useState(false);\n * return (\n *
\n * \n *
\n * {\"I'll receive my-node-* classes\"}\n *
\n *
\n * \n *
\n * );\n * }\n * ```\n *\n * When the `in` prop is set to `true`, the child component will first receive\n * the class `example-enter`, then the `example-enter-active` will be added in\n * the next tick. `CSSTransition` [forces a\n * reflow](https://github.com/reactjs/react-transition-group/blob/5007303e729a74be66a21c3e2205e4916821524b/src/CSSTransition.js#L208-L215)\n * between before adding the `example-enter-active`. This is an important trick\n * because it allows us to transition between `example-enter` and\n * `example-enter-active` even though they were added immediately one after\n * another. Most notably, this is what makes it possible for us to animate\n * _appearance_.\n *\n * ```css\n * .my-node-enter {\n * opacity: 0;\n * }\n * .my-node-enter-active {\n * opacity: 1;\n * transition: opacity 200ms;\n * }\n * .my-node-exit {\n * opacity: 1;\n * }\n * .my-node-exit-active {\n * opacity: 0;\n * transition: opacity 200ms;\n * }\n * ```\n *\n * `*-active` classes represent which styles you want to animate **to**, so it's\n * important to add `transition` declaration only to them, otherwise transitions\n * might not behave as intended! This might not be obvious when the transitions\n * are symmetrical, i.e. when `*-enter-active` is the same as `*-exit`, like in\n * the example above (minus `transition`), but it becomes apparent in more\n * complex transitions.\n *\n * **Note**: If you're using the\n * [`appear`](http://reactcommunity.org/react-transition-group/transition#Transition-prop-appear)\n * prop, make sure to define styles for `.appear-*` classes as well.\n */\n\n\nvar CSSTransition = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(CSSTransition, _React$Component);\n\n function CSSTransition() {\n var _this;\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n _this = _React$Component.call.apply(_React$Component, [this].concat(args)) || this;\n _this.appliedClasses = {\n appear: {},\n enter: {},\n exit: {}\n };\n\n _this.onEnter = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument[0],\n appearing = _this$resolveArgument[1];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, appearing ? 'appear' : 'enter', 'base');\n\n if (_this.props.onEnter) {\n _this.props.onEnter(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntering = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument2 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument2[0],\n appearing = _this$resolveArgument2[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.addClass(node, type, 'active');\n\n if (_this.props.onEntering) {\n _this.props.onEntering(maybeNode, maybeAppearing);\n }\n };\n\n _this.onEntered = function (maybeNode, maybeAppearing) {\n var _this$resolveArgument3 = _this.resolveArguments(maybeNode, maybeAppearing),\n node = _this$resolveArgument3[0],\n appearing = _this$resolveArgument3[1];\n\n var type = appearing ? 'appear' : 'enter';\n\n _this.removeClasses(node, type);\n\n _this.addClass(node, type, 'done');\n\n if (_this.props.onEntered) {\n _this.props.onEntered(maybeNode, maybeAppearing);\n }\n };\n\n _this.onExit = function (maybeNode) {\n var _this$resolveArgument4 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument4[0];\n\n _this.removeClasses(node, 'appear');\n\n _this.removeClasses(node, 'enter');\n\n _this.addClass(node, 'exit', 'base');\n\n if (_this.props.onExit) {\n _this.props.onExit(maybeNode);\n }\n };\n\n _this.onExiting = function (maybeNode) {\n var _this$resolveArgument5 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument5[0];\n\n _this.addClass(node, 'exit', 'active');\n\n if (_this.props.onExiting) {\n _this.props.onExiting(maybeNode);\n }\n };\n\n _this.onExited = function (maybeNode) {\n var _this$resolveArgument6 = _this.resolveArguments(maybeNode),\n node = _this$resolveArgument6[0];\n\n _this.removeClasses(node, 'exit');\n\n _this.addClass(node, 'exit', 'done');\n\n if (_this.props.onExited) {\n _this.props.onExited(maybeNode);\n }\n };\n\n _this.resolveArguments = function (maybeNode, maybeAppearing) {\n return _this.props.nodeRef ? [_this.props.nodeRef.current, maybeNode] // here `maybeNode` is actually `appearing`\n : [maybeNode, maybeAppearing];\n };\n\n _this.getClassNames = function (type) {\n var classNames = _this.props.classNames;\n var isStringClassNames = typeof classNames === 'string';\n var prefix = isStringClassNames && classNames ? classNames + \"-\" : '';\n var baseClassName = isStringClassNames ? \"\" + prefix + type : classNames[type];\n var activeClassName = isStringClassNames ? baseClassName + \"-active\" : classNames[type + \"Active\"];\n var doneClassName = isStringClassNames ? baseClassName + \"-done\" : classNames[type + \"Done\"];\n return {\n baseClassName: baseClassName,\n activeClassName: activeClassName,\n doneClassName: doneClassName\n };\n };\n\n return _this;\n }\n\n var _proto = CSSTransition.prototype;\n\n _proto.addClass = function addClass(node, type, phase) {\n var className = this.getClassNames(type)[phase + \"ClassName\"];\n\n var _this$getClassNames = this.getClassNames('enter'),\n doneClassName = _this$getClassNames.doneClassName;\n\n if (type === 'appear' && phase === 'done' && doneClassName) {\n className += \" \" + doneClassName;\n } // This is to force a repaint,\n // which is necessary in order to transition styles when adding a class name.\n\n\n if (phase === 'active') {\n /* eslint-disable no-unused-expressions */\n node && node.scrollTop;\n }\n\n if (className) {\n this.appliedClasses[type][phase] = className;\n\n _addClass(node, className);\n }\n };\n\n _proto.removeClasses = function removeClasses(node, type) {\n var _this$appliedClasses$ = this.appliedClasses[type],\n baseClassName = _this$appliedClasses$.base,\n activeClassName = _this$appliedClasses$.active,\n doneClassName = _this$appliedClasses$.done;\n this.appliedClasses[type] = {};\n\n if (baseClassName) {\n removeClass(node, baseClassName);\n }\n\n if (activeClassName) {\n removeClass(node, activeClassName);\n }\n\n if (doneClassName) {\n removeClass(node, doneClassName);\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n _ = _this$props.classNames,\n props = _objectWithoutPropertiesLoose(_this$props, [\"classNames\"]);\n\n return /*#__PURE__*/React.createElement(Transition, _extends({}, props, {\n onEnter: this.onEnter,\n onEntered: this.onEntered,\n onEntering: this.onEntering,\n onExit: this.onExit,\n onExiting: this.onExiting,\n onExited: this.onExited\n }));\n };\n\n return CSSTransition;\n}(React.Component);\n\nCSSTransition.defaultProps = {\n classNames: ''\n};\nCSSTransition.propTypes = process.env.NODE_ENV !== \"production\" ? _extends({}, Transition.propTypes, {\n /**\n * The animation classNames applied to the component as it appears, enters,\n * exits or has finished the transition. A single name can be provided, which\n * will be suffixed for each stage, e.g. `classNames=\"fade\"` applies:\n *\n * - `fade-appear`, `fade-appear-active`, `fade-appear-done`\n * - `fade-enter`, `fade-enter-active`, `fade-enter-done`\n * - `fade-exit`, `fade-exit-active`, `fade-exit-done`\n *\n * A few details to note about how these classes are applied:\n *\n * 1. They are _joined_ with the ones that are already defined on the child\n * component, so if you want to add some base styles, you can use\n * `className` without worrying that it will be overridden.\n *\n * 2. If the transition component mounts with `in={false}`, no classes are\n * applied yet. You might be expecting `*-exit-done`, but if you think\n * about it, a component cannot finish exiting if it hasn't entered yet.\n *\n * 2. `fade-appear-done` and `fade-enter-done` will _both_ be applied. This\n * allows you to define different behavior for when appearing is done and\n * when regular entering is done, using selectors like\n * `.fade-enter-done:not(.fade-appear-done)`. For example, you could apply\n * an epic entrance animation when element first appears in the DOM using\n * [Animate.css](https://daneden.github.io/animate.css/). Otherwise you can\n * simply use `fade-enter-done` for defining both cases.\n *\n * Each individual classNames can also be specified independently like:\n *\n * ```js\n * classNames={{\n * appear: 'my-appear',\n * appearActive: 'my-active-appear',\n * appearDone: 'my-done-appear',\n * enter: 'my-enter',\n * enterActive: 'my-active-enter',\n * enterDone: 'my-done-enter',\n * exit: 'my-exit',\n * exitActive: 'my-active-exit',\n * exitDone: 'my-done-exit',\n * }}\n * ```\n *\n * If you want to set these classes using CSS Modules:\n *\n * ```js\n * import styles from './styles.css';\n * ```\n *\n * you might want to use camelCase in your CSS file, that way could simply\n * spread them instead of listing them one by one:\n *\n * ```js\n * classNames={{ ...styles }}\n * ```\n *\n * @type {string | {\n * appear?: string,\n * appearActive?: string,\n * appearDone?: string,\n * enter?: string,\n * enterActive?: string,\n * enterDone?: string,\n * exit?: string,\n * exitActive?: string,\n * exitDone?: string,\n * }}\n */\n classNames: classNamesShape,\n\n /**\n * A `` callback fired immediately after the 'enter' or 'appear' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEnter: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter-active' or\n * 'appear-active' class is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntering: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'enter' or\n * 'appear' classes are **removed** and the `done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed.\n *\n * @type Function(node: HtmlElement, isAppearing: bool)\n */\n onEntered: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' class is\n * applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExit: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit-active' is applied.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExiting: PropTypes.func,\n\n /**\n * A `` callback fired immediately after the 'exit' classes\n * are **removed** and the `exit-done` class is added to the DOM node.\n *\n * **Note**: when `nodeRef` prop is passed, `node` is not passed\n *\n * @type Function(node: HtmlElement)\n */\n onExited: PropTypes.func\n}) : {};\nexport default CSSTransition;","import hasClass from './hasClass';\n/**\n * Adds a CSS class to a given element.\n * \n * @param element the element\n * @param className the CSS class name\n */\n\nexport default function addClass(element, className) {\n if (element.classList) element.classList.add(className);else if (!hasClass(element, className)) if (typeof element.className === 'string') element.className = element.className + \" \" + className;else element.setAttribute('class', (element.className && element.className.baseVal || '') + \" \" + className);\n}","/**\n * Checks if a given element has a CSS class.\n * \n * @param element the element\n * @param className the CSS class name\n */\nexport default function hasClass(element, className) {\n if (element.classList) return !!className && element.classList.contains(className);\n return (\" \" + (element.className.baseVal || element.className) + \" \").indexOf(\" \" + className + \" \") !== -1;\n}","/**\n * @hidden\n */\nvar outerHeight = function (element) {\n if (!element || !element.ownerDocument.defaultView) {\n return 0;\n }\n var wnd = element.ownerDocument.defaultView;\n var computedStyles = wnd.getComputedStyle(element);\n var marginTop = parseFloat(computedStyles.marginTop);\n var marginBottom = parseFloat(computedStyles.marginBottom);\n return element.offsetHeight + marginTop + marginBottom;\n};\n/**\n * @hidden\n */\nvar outerWidth = function (element) {\n if (!element || !element.ownerDocument.defaultView) {\n return 0;\n }\n var wnd = element.ownerDocument.defaultView;\n var computedStyles = wnd.getComputedStyle(element);\n var marginLeft = parseFloat(computedStyles.marginLeft);\n var marginRight = parseFloat(computedStyles.marginRight);\n return element.offsetWidth + marginLeft + marginRight;\n};\n/**\n * @hidden\n */\nvar styles = {\n 'animation-container': 'k-animation-container',\n 'animation-container-relative': 'k-animation-container-relative',\n 'animation-container-fixed': 'k-animation-container-fixed',\n 'push-right-enter': 'k-push-right-enter',\n 'push-right-appear': 'k-push-right-appear',\n 'push-right-enter-active': 'k-push-right-enter-active',\n 'push-right-appear-active': 'k-push-right-appear-active',\n 'push-right-exit': 'k-push-right-exit',\n 'push-right-exit-active': 'k-push-right-exit-active',\n 'push-left-enter': 'k-push-left-enter',\n 'push-left-appear': 'k-push-left-appear',\n 'push-left-enter-active': 'k-push-left-enter-active',\n 'push-left-appear-active': 'k-push-left-appear-active',\n 'push-left-exit': 'k-push-left-exit',\n 'push-left-exit-active': 'k-push-left-exit-active',\n 'push-down-enter': 'k-push-down-enter',\n 'push-down-appear': 'k-push-down-appear',\n 'push-down-enter-active': 'k-push-down-enter-active',\n 'push-down-appear-active': 'k-push-down-appear-active',\n 'push-down-exit': 'k-push-down-exit',\n 'push-down-exit-active': 'k-push-down-exit-active',\n 'push-up-enter': 'k-push-up-enter',\n 'push-up-appear': 'k-push-up-appear',\n 'push-up-enter-active': 'k-push-up-enter-active',\n 'push-up-appear-active': 'k-push-up-appear-active',\n 'push-up-exit': 'k-push-up-exit',\n 'push-up-exit-active': 'k-push-up-exit-active',\n 'expand': 'k-expand',\n 'expand-vertical-enter': 'k-expand-vertical-enter',\n 'expand-vertical-appear': 'k-expand-vertical-appear',\n 'expand-vertical-enter-active': 'k-expand-vertical-enter-active',\n 'expand-vertical-appear-active': 'k-expand-vertical-appear-active',\n 'expand-vertical-exit': 'k-expand-vertical-exit',\n 'expand-vertical-exit-active': 'k-expand-vertical-exit-active',\n 'expand-horizontal-enter': 'k-expand-horizontal-enter',\n 'expand-horizontal-appear': 'k-expand-horizontal-appear',\n 'expand-horizontal-enter-active': 'k-expand-horizontal-enter-active',\n 'expand-horizontal-appear-active': 'k-expand-horizontal-appear-active',\n 'expand-horizontal-exit': 'k-expand-horizontal-exit',\n 'expand-horizontal-exit-active': 'k-expand-horizontal-exit-active',\n 'child-animation-container': 'k-child-animation-container',\n 'fade-enter': 'k-fade-enter',\n 'fade-appear': 'k-fade-appear',\n 'fade-enter-active': 'k-fade-enter-active',\n 'fade-appear-active': 'k-fade-appear-active',\n 'fade-exit': 'k-fade-exit',\n 'fade-exit-active': 'k-fade-exit-active',\n 'zoom-in-enter': 'k-zoom-in-enter',\n 'zoom-in-appear': 'k-zoom-in-appear',\n 'zoom-in-enter-active': 'k-zoom-in-enter-active',\n 'zoom-in-appear-active': 'k-zoom-in-appear-active',\n 'zoom-in-exit': 'k-zoom-in-exit',\n 'zoom-in-exit-active': 'k-zoom-in-exit-active',\n 'zoom-out-enter': 'k-zoom-out-enter',\n 'zoom-out-appear': 'k-zoom-out-appear',\n 'zoom-out-enter-active': 'k-zoom-out-enter-active',\n 'zoom-out-appear-active': 'k-zoom-out-appear-active',\n 'zoom-out-exit': 'k-zoom-out-exit',\n 'zoom-out-exit-active': 'k-zoom-out-exit-active',\n 'slide-in-appear': 'k-slide-in-appear',\n 'centered': 'k-centered',\n 'slide-in-appear-active': 'k-slide-in-appear-active',\n 'slide-down-enter': 'k-slide-down-enter',\n 'slide-down-appear': 'k-slide-down-appear',\n 'slide-down-enter-active': 'k-slide-down-enter-active',\n 'slide-down-appear-active': 'k-slide-down-appear-active',\n 'slide-down-exit': 'k-slide-down-exit',\n 'slide-down-exit-active': 'k-slide-down-exit-active',\n 'slide-up-enter': 'k-slide-up-enter',\n 'slide-up-appear': 'k-slide-up-appear',\n 'slide-up-enter-active': 'k-slide-up-enter-active',\n 'slide-up-appear-active': 'k-slide-up-appear-active',\n 'slide-up-exit': 'k-slide-up-exit',\n 'slide-up-exit-active': 'k-slide-up-exit-active',\n 'slide-right-enter': 'k-slide-right-enter',\n 'slide-right-appear': 'k-slide-right-appear',\n 'slide-right-enter-active': 'k-slide-right-enter-active',\n 'slide-right-appear-active': 'k-slide-right-appear-active',\n 'slide-right-exit': 'k-slide-right-exit',\n 'slide-right-exit-active': 'k-slide-right-exit-active',\n 'slide-left-enter': 'k-slide-left-enter',\n 'slide-left-appear': 'k-slide-left-appear',\n 'slide-left-enter-active': 'k-slide-left-enter-active',\n 'slide-left-appear-active': 'k-slide-left-appear-active',\n 'slide-left-exit': 'k-slide-left-exit',\n 'slide-left-exit-active': 'k-slide-left-exit-active',\n 'reveal-vertical-enter': 'k-reveal-vertical-enter',\n 'reveal-vertical-appear': 'k-reveal-vertical-appear',\n 'reveal-vertical-enter-active': 'k-reveal-vertical-enter-active',\n 'reveal-vertical-appear-active': 'k-reveal-vertical-appear-active',\n 'reveal-vertical-exit': 'k-reveal-vertical-exit',\n 'reveal-vertical-exit-active': 'k-reveal-vertical-exit-active',\n 'reveal-horizontal-enter': 'k-reveal-horizontal-enter',\n 'reveal-horizontal-appear': 'k-reveal-horizontal-appear',\n 'reveal-horizontal-enter-active': 'k-reveal-horizontal-enter-active',\n 'reveal-horizontal-appear-active': 'k-reveal-horizontal-appear-active',\n 'reveal-horizontal-exit': 'k-reveal-horizontal-exit',\n 'reveal-horizontal-exit-active': 'k-reveal-horizontal-exit-active'\n};\n/**\n * @hidden\n */\nvar stylesMap = {\n outerHeight: outerHeight,\n outerWidth: outerWidth,\n styles: styles\n};\nexport default stylesMap;\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, noop } from '@progress/kendo-react-common';\nimport { CSSTransition } from 'react-transition-group';\nimport util from './util';\nvar styles = util.styles;\nvar AnimationChild = /** @class */ (function (_super) {\n __extends(AnimationChild, _super);\n function AnimationChild() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.elementRef = React.createRef();\n return _this;\n }\n Object.defineProperty(AnimationChild.prototype, \"element\", {\n /**\n * The element that is being animated.\n */\n get: function () {\n return this.elementRef.current;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n AnimationChild.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, style = _a.style, appear = _a.appear, enter = _a.enter, exit = _a.exit, transitionName = _a.transitionName, transitionEnterDuration = _a.transitionEnterDuration, transitionExitDuration = _a.transitionExitDuration, className = _a.className, onEnter = _a.onEnter, onEntering = _a.onEntering, onEntered = _a.onEntered, onExit = _a.onExit, onExiting = _a.onExiting, onExited = _a.onExited, onAfterExited = _a.onAfterExited, mountOnEnter = _a.mountOnEnter, unmountOnExit = _a.unmountOnExit, animationEnteringStyle = _a.animationEnteringStyle, animationEnteredStyle = _a.animationEnteredStyle, animationExitingStyle = _a.animationExitingStyle, animationExitedStyle = _a.animationExitedStyle, other = __rest(_a, [\"children\", \"style\", \"appear\", \"enter\", \"exit\", \"transitionName\", \"transitionEnterDuration\", \"transitionExitDuration\", \"className\", \"onEnter\", \"onEntering\", \"onEntered\", \"onExit\", \"onExiting\", \"onExited\", \"onAfterExited\", \"mountOnEnter\", \"unmountOnExit\", \"animationEnteringStyle\", \"animationEnteredStyle\", \"animationExitingStyle\", \"animationExitedStyle\"]);\n var childAnimationContainerClassNames = classNames(className, styles['child-animation-container']);\n var defaultStyle = __assign({ transitionDelay: '0ms' }, style);\n var animationStyle = {\n entering: __assign({ transitionDuration: \"\".concat(transitionEnterDuration, \"ms\") }, animationEnteringStyle),\n entered: __assign({}, animationEnteredStyle),\n exiting: __assign({ transitionDuration: \"\".concat(transitionExitDuration, \"ms\") }, animationExitingStyle),\n exited: __assign({}, animationExitedStyle)\n };\n var transitionProps = {\n in: this.props.in,\n appear: appear,\n enter: enter,\n exit: exit,\n mountOnEnter: mountOnEnter,\n unmountOnExit: unmountOnExit,\n timeout: {\n enter: transitionEnterDuration,\n exit: transitionExitDuration\n },\n onEnter: (function () {\n if (onEnter) {\n onEnter.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onEntering: (function () {\n if (onEntering) {\n onEntering.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onEntered: (function () {\n if (onEntered) {\n onEntered.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onExit: (function () {\n if (onExit) {\n onExit.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onExiting: (function () {\n if (onExiting) {\n onExiting.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n onExited: (function () {\n if (onAfterExited) {\n onAfterExited.call(undefined, { animatedElement: _this.element, target: _this });\n }\n if (onExited) {\n onExited.call(undefined, { animatedElement: _this.element, target: _this });\n }\n }),\n classNames: {\n appear: styles[\"\".concat(transitionName, \"-appear\")] || \"\".concat(transitionName, \"-appear\"),\n appearActive: styles[\"\".concat(transitionName, \"-appear-active\")] || \"\".concat(transitionName, \"-appear-active\"),\n enter: styles[\"\".concat(transitionName, \"-enter\")] || \"\".concat(transitionName, \"-enter\"),\n enterActive: styles[\"\".concat(transitionName, \"-enter-active\")] || \"\".concat(transitionName, \"-enter-active\"),\n exit: styles[\"\".concat(transitionName, \"-exit\")] || \"\".concat(transitionName, \"-exit\"),\n exitActive: styles[\"\".concat(transitionName, \"-exit-active\")] || \"\".concat(transitionName, \"-exit-active\")\n }\n };\n return (React.createElement(CSSTransition, __assign({}, transitionProps, other, { nodeRef: this.elementRef }), function (status) {\n return (React.createElement(\"div\", { style: __assign(__assign({}, defaultStyle), animationStyle[status]), className: childAnimationContainerClassNames, ref: _this.elementRef }, children));\n }));\n };\n /**\n * @hidden\n */\n AnimationChild.propTypes = {\n in: PropTypes.bool,\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n transitionName: PropTypes.string.isRequired,\n className: PropTypes.string,\n appear: PropTypes.bool,\n enter: PropTypes.bool,\n exit: PropTypes.bool,\n transitionEnterDuration: PropTypes.number.isRequired,\n transitionExitDuration: PropTypes.number.isRequired,\n mountOnEnter: PropTypes.bool,\n unmountOnExit: PropTypes.bool,\n animationEnteringStyle: PropTypes.object,\n animationEnteredStyle: PropTypes.object,\n animationExitingStyle: PropTypes.object,\n animationExitedStyle: PropTypes.object\n };\n /**\n * @hidden\n */\n AnimationChild.defaultProps = {\n mountOnEnter: true,\n unmountOnExit: false,\n onEnter: noop,\n onEntering: noop,\n onEntered: noop,\n onExit: noop,\n onExiting: noop,\n onExited: noop,\n onAfterExited: noop,\n animationEnteringStyle: {},\n animationEnteredStyle: {},\n animationExitingStyle: {},\n animationExitedStyle: {}\n };\n return AnimationChild;\n}(React.Component));\nexport { AnimationChild };\n","import { Children, cloneElement, isValidElement } from 'react';\n/**\n * Given `this.props.children`, return an object mapping key to child.\n *\n * @param {*} children `this.props.children`\n * @return {object} Mapping of key to child\n */\n\nexport function getChildMapping(children, mapFn) {\n var mapper = function mapper(child) {\n return mapFn && isValidElement(child) ? mapFn(child) : child;\n };\n\n var result = Object.create(null);\n if (children) Children.map(children, function (c) {\n return c;\n }).forEach(function (child) {\n // run the map function here instead so that the key is the computed one\n result[child.key] = mapper(child);\n });\n return result;\n}\n/**\n * When you're adding or removing children some may be added or removed in the\n * same render pass. We want to show *both* since we want to simultaneously\n * animate elements in and out. This function takes a previous set of keys\n * and a new set of keys and merges them with its best guess of the correct\n * ordering. In the future we may expose some of the utilities in\n * ReactMultiChild to make this easy, but for now React itself does not\n * directly have this concept of the union of prevChildren and nextChildren\n * so we implement it here.\n *\n * @param {object} prev prev children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @param {object} next next children as returned from\n * `ReactTransitionChildMapping.getChildMapping()`.\n * @return {object} a key set that contains all keys in `prev` and all keys\n * in `next` in a reasonable order.\n */\n\nexport function mergeChildMappings(prev, next) {\n prev = prev || {};\n next = next || {};\n\n function getValueForKey(key) {\n return key in next ? next[key] : prev[key];\n } // For each key of `next`, the list of keys to insert before that key in\n // the combined list\n\n\n var nextKeysPending = Object.create(null);\n var pendingKeys = [];\n\n for (var prevKey in prev) {\n if (prevKey in next) {\n if (pendingKeys.length) {\n nextKeysPending[prevKey] = pendingKeys;\n pendingKeys = [];\n }\n } else {\n pendingKeys.push(prevKey);\n }\n }\n\n var i;\n var childMapping = {};\n\n for (var nextKey in next) {\n if (nextKeysPending[nextKey]) {\n for (i = 0; i < nextKeysPending[nextKey].length; i++) {\n var pendingNextKey = nextKeysPending[nextKey][i];\n childMapping[nextKeysPending[nextKey][i]] = getValueForKey(pendingNextKey);\n }\n }\n\n childMapping[nextKey] = getValueForKey(nextKey);\n } // Finally, add the keys which didn't appear before any key in `next`\n\n\n for (i = 0; i < pendingKeys.length; i++) {\n childMapping[pendingKeys[i]] = getValueForKey(pendingKeys[i]);\n }\n\n return childMapping;\n}\n\nfunction getProp(child, prop, props) {\n return props[prop] != null ? props[prop] : child.props[prop];\n}\n\nexport function getInitialChildMapping(props, onExited) {\n return getChildMapping(props.children, function (child) {\n return cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n appear: getProp(child, 'appear', props),\n enter: getProp(child, 'enter', props),\n exit: getProp(child, 'exit', props)\n });\n });\n}\nexport function getNextChildMapping(nextProps, prevChildMapping, onExited) {\n var nextChildMapping = getChildMapping(nextProps.children);\n var children = mergeChildMappings(prevChildMapping, nextChildMapping);\n Object.keys(children).forEach(function (key) {\n var child = children[key];\n if (!isValidElement(child)) return;\n var hasPrev = (key in prevChildMapping);\n var hasNext = (key in nextChildMapping);\n var prevChild = prevChildMapping[key];\n var isLeaving = isValidElement(prevChild) && !prevChild.props.in; // item is new (entering)\n\n if (hasNext && (!hasPrev || isLeaving)) {\n // console.log('entering', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: true,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n } else if (!hasNext && hasPrev && !isLeaving) {\n // item is old (exiting)\n // console.log('leaving', key)\n children[key] = cloneElement(child, {\n in: false\n });\n } else if (hasNext && hasPrev && isValidElement(prevChild)) {\n // item hasn't changed transition states\n // copy over the last transition props;\n // console.log('unchanged', key)\n children[key] = cloneElement(child, {\n onExited: onExited.bind(null, child),\n in: prevChild.props.in,\n exit: getProp(child, 'exit', nextProps),\n enter: getProp(child, 'enter', nextProps)\n });\n }\n });\n return children;\n}","import _objectWithoutPropertiesLoose from \"@babel/runtime/helpers/esm/objectWithoutPropertiesLoose\";\nimport _extends from \"@babel/runtime/helpers/esm/extends\";\nimport _assertThisInitialized from \"@babel/runtime/helpers/esm/assertThisInitialized\";\nimport _inheritsLoose from \"@babel/runtime/helpers/esm/inheritsLoose\";\nimport PropTypes from 'prop-types';\nimport React from 'react';\nimport TransitionGroupContext from './TransitionGroupContext';\nimport { getChildMapping, getInitialChildMapping, getNextChildMapping } from './utils/ChildMapping';\n\nvar values = Object.values || function (obj) {\n return Object.keys(obj).map(function (k) {\n return obj[k];\n });\n};\n\nvar defaultProps = {\n component: 'div',\n childFactory: function childFactory(child) {\n return child;\n }\n};\n/**\n * The `` component manages a set of transition components\n * (`` and ``) in a list. Like with the transition\n * components, `` is a state machine for managing the mounting\n * and unmounting of components over time.\n *\n * Consider the example below. As items are removed or added to the TodoList the\n * `in` prop is toggled automatically by the ``.\n *\n * Note that `` does not define any animation behavior!\n * Exactly _how_ a list item animates is up to the individual transition\n * component. This means you can mix and match animations across different list\n * items.\n */\n\nvar TransitionGroup = /*#__PURE__*/function (_React$Component) {\n _inheritsLoose(TransitionGroup, _React$Component);\n\n function TransitionGroup(props, context) {\n var _this;\n\n _this = _React$Component.call(this, props, context) || this;\n\n var handleExited = _this.handleExited.bind(_assertThisInitialized(_this)); // Initial children should all be entering, dependent on appear\n\n\n _this.state = {\n contextValue: {\n isMounting: true\n },\n handleExited: handleExited,\n firstRender: true\n };\n return _this;\n }\n\n var _proto = TransitionGroup.prototype;\n\n _proto.componentDidMount = function componentDidMount() {\n this.mounted = true;\n this.setState({\n contextValue: {\n isMounting: false\n }\n });\n };\n\n _proto.componentWillUnmount = function componentWillUnmount() {\n this.mounted = false;\n };\n\n TransitionGroup.getDerivedStateFromProps = function getDerivedStateFromProps(nextProps, _ref) {\n var prevChildMapping = _ref.children,\n handleExited = _ref.handleExited,\n firstRender = _ref.firstRender;\n return {\n children: firstRender ? getInitialChildMapping(nextProps, handleExited) : getNextChildMapping(nextProps, prevChildMapping, handleExited),\n firstRender: false\n };\n } // node is `undefined` when user provided `nodeRef` prop\n ;\n\n _proto.handleExited = function handleExited(child, node) {\n var currentChildMapping = getChildMapping(this.props.children);\n if (child.key in currentChildMapping) return;\n\n if (child.props.onExited) {\n child.props.onExited(node);\n }\n\n if (this.mounted) {\n this.setState(function (state) {\n var children = _extends({}, state.children);\n\n delete children[child.key];\n return {\n children: children\n };\n });\n }\n };\n\n _proto.render = function render() {\n var _this$props = this.props,\n Component = _this$props.component,\n childFactory = _this$props.childFactory,\n props = _objectWithoutPropertiesLoose(_this$props, [\"component\", \"childFactory\"]);\n\n var contextValue = this.state.contextValue;\n var children = values(this.state.children).map(childFactory);\n delete props.appear;\n delete props.enter;\n delete props.exit;\n\n if (Component === null) {\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, children);\n }\n\n return /*#__PURE__*/React.createElement(TransitionGroupContext.Provider, {\n value: contextValue\n }, /*#__PURE__*/React.createElement(Component, props, children));\n };\n\n return TransitionGroup;\n}(React.Component);\n\nTransitionGroup.propTypes = process.env.NODE_ENV !== \"production\" ? {\n /**\n * `` renders a `
` by default. You can change this\n * behavior by providing a `component` prop.\n * If you use React v16+ and would like to avoid a wrapping `
` element\n * you can pass in `component={null}`. This is useful if the wrapping div\n * borks your css styles.\n */\n component: PropTypes.any,\n\n /**\n * A set of `` components, that are toggled `in` and out as they\n * leave. the `` will inject specific transition props, so\n * remember to spread them through if you are wrapping the `` as\n * with our `` example.\n *\n * While this component is meant for multiple `Transition` or `CSSTransition`\n * children, sometimes you may want to have a single transition child with\n * content that you want to be transitioned out and in when you change it\n * (e.g. routes, images etc.) In that case you can change the `key` prop of\n * the transition child as you change its content, this will cause\n * `TransitionGroup` to transition the child out and back in.\n */\n children: PropTypes.node,\n\n /**\n * A convenience prop that enables or disables appear animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n appear: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables enter animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n enter: PropTypes.bool,\n\n /**\n * A convenience prop that enables or disables exit animations\n * for all children. Note that specifying this will override any defaults set\n * on individual children Transitions.\n */\n exit: PropTypes.bool,\n\n /**\n * You may need to apply reactive updates to a child as it is exiting.\n * This is generally done by using `cloneElement` however in the case of an exiting\n * child the element has already been removed and not accessible to the consumer.\n *\n * If you do need to update a child as it leaves you can provide a `childFactory`\n * to wrap every child, even the ones that are leaving.\n *\n * @type Function(child: ReactElement) -> ReactElement\n */\n childFactory: PropTypes.func\n} : {};\nTransitionGroup.defaultProps = defaultProps;\nexport default TransitionGroup;","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-animation',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666770467,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { AnimationChild } from './AnimationChild';\nimport { TransitionGroup } from 'react-transition-group';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport util from './util';\nvar styles = util.styles;\n// tslint:enable:max-line-length\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(props) {\n var _this = _super.call(this, props) || this;\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n Animation.prototype.render = function () {\n var _a = this.props, id = _a.id, style = _a.style, children = _a.children, component = _a.component, className = _a.className, childFactory = _a.childFactory, stackChildren = _a.stackChildren, componentChildStyle = _a.componentChildStyle, componentChildClassName = _a.componentChildClassName, other = __rest(_a, [\"id\", \"style\", \"children\", \"component\", \"className\", \"childFactory\", \"stackChildren\", \"componentChildStyle\", \"componentChildClassName\"]);\n var transitionProps = {\n id: id,\n style: style,\n component: component,\n childFactory: childFactory,\n className: classNames(styles['animation-container'], styles['animation-container-relative'], className)\n };\n var content = React.Children.map(children || null, function (child) { return (React.createElement(AnimationChild, __assign({}, other, { style: componentChildStyle, className: componentChildClassName }), child)); });\n return (React.createElement(TransitionGroup, __assign({}, transitionProps), content));\n };\n /**\n * @hidden\n */\n Animation.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any,\n transitionName: PropTypes.string.isRequired,\n appear: PropTypes.bool.isRequired,\n enter: PropTypes.bool.isRequired,\n exit: PropTypes.bool.isRequired,\n transitionEnterDuration: PropTypes.number.isRequired,\n transitionExitDuration: PropTypes.number.isRequired\n };\n /**\n * @hidden\n */\n Animation.defaultProps = {\n component: 'div'\n };\n return Animation;\n}(React.Component));\nexport { Animation };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Animation } from './Animation';\n// tslint:enable:max-line-length\nvar Fade = /** @class */ (function (_super) {\n __extends(Fade, _super);\n function Fade() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n Fade.prototype.render = function () {\n var _a = this.props, children = _a.children, other = __rest(_a, [\"children\"]);\n var animationProps = {\n transitionName: 'fade'\n };\n return (React.createElement(Animation, __assign({}, animationProps, other), children));\n };\n /**\n * @hidden\n */\n Fade.propTypes = {\n children: PropTypes.oneOfType([\n PropTypes.arrayOf(PropTypes.node),\n PropTypes.node\n ]),\n childFactory: PropTypes.any,\n className: PropTypes.string,\n component: PropTypes.string,\n id: PropTypes.string,\n style: PropTypes.any\n };\n /**\n * @hidden\n */\n Fade.defaultProps = {\n appear: false,\n enter: true,\n exit: false,\n transitionEnterDuration: 500,\n transitionExitDuration: 500\n };\n return Fade;\n}(React.Component));\nexport { Fade };\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-notification',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666771601,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport * as licensing from '@progress/kendo-licensing';\nimport { packageMetadata } from './package-metadata';\nvar buttonTitle = 'Close';\n/**\n * Represents the [KendoReact Notification component]({% slug overview_notification %}).\n */\nvar Notification = /** @class */ (function (_super) {\n __extends(Notification, _super);\n function Notification(props) {\n var _this = _super.call(this, props) || this;\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \".concat(packageMetadata.name, \"\\n\");\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \".concat(packageMetadata.licensingDocsUrl, \" for more information.\\n\");\n console.warn(message);\n }\n return _this;\n }\n /**\n * @hidden\n */\n Notification.prototype.render = function () {\n var _this = this;\n var _a = this.props, onClose = _a.onClose, className = _a.className, _b = _a.closable, closable = _b === void 0 ? Notification.defaultProps.closable : _b, _c = _a.type, type = _c === void 0 ? Notification.defaultProps.type : _c;\n return (React.createElement(\"div\", { dir: this.props.dir, className: \"k-notification-container\" },\n React.createElement(\"div\", { className: 'k-widget k-notification' +\n (className ? \" \".concat(className) : '') +\n (type.style === 'none' ? '' : \" k-notification-\".concat(type.style)) +\n (closable ? ' k-notification-closable' : ''), style: this.props.style },\n React.createElement(\"div\", { className: \"k-notification-wrap\" },\n type.icon && React.createElement(\"span\", { className: \"k-icon k-i-\".concat(type.style) }),\n React.createElement(\"div\", { className: \"k-notification-content\" }, this.props.children),\n closable && (React.createElement(\"a\", __assign({ className: \"k-icon k-i-close\", title: buttonTitle, onClick: function (event) {\n if (onClose) {\n onClose.call(undefined, {\n target: _this,\n syntheticEvent: event,\n nativeEvent: event.nativeEvent\n });\n }\n } }, (typeof closable !== 'boolean' ? closable : {}))))))));\n };\n /**\n * @hidden\n */\n Notification.propTypes = {\n className: PropTypes.string,\n closable: PropTypes.oneOfType([PropTypes.bool, PropTypes.object]),\n dir: PropTypes.string,\n style: PropTypes.object,\n type: PropTypes.shape({\n style: PropTypes.oneOf(['none', 'success', 'error', 'warning', 'info']),\n icon: PropTypes.bool\n }),\n onClose: PropTypes.func\n };\n /**\n * @hidden\n */\n Notification.defaultProps = {\n closable: false,\n type: {\n style: 'none',\n icon: true\n }\n };\n return Notification;\n}(React.Component));\nexport { Notification };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\n/**\n * Represents the [KendoReact NotificationGroup component]({% slug api_notification_notificationgroup %}).\n */\nvar NotificationGroup = /** @class */ (function (_super) {\n __extends(NotificationGroup, _super);\n function NotificationGroup() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n NotificationGroup.prototype.render = function () {\n var _a = this.props, _b = _a.style, style = _b === void 0 ? {} : _b, className = _a.className;\n return (React.createElement(\"div\", { className: 'k-notification-group' + (className ? \" \".concat(className) : ''), style: __assign({ alignItems: 'center', flexWrap: 'wrap' }, style) }, this.props.children));\n };\n /**\n * @hidden\n */\n NotificationGroup.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object\n };\n return NotificationGroup;\n}(React.Component));\nexport { NotificationGroup };\n","import { Fade } from '@progress/kendo-react-animation';\r\nimport { AnimationEventArguments } from '@progress/kendo-react-animation/dist/npm/AnimationInterface';\r\nimport { NotificationGroup, Notification as NotificationKendo } from '@progress/kendo-react-notification';\r\nimport { useContext, useState } from 'react';\r\nimport { useEffect } from 'react';\r\nimport { PropsWithChildren, ReactElement } from 'react';\r\n\r\nimport { INotificationProps } from './INotificationProps';\r\nimport { NotificationsContext } from './NotificationsProvider';\r\n\r\nimport './NotificationTheme.scss';\r\n\r\n/**\r\n * Notication center where all notifications are added.\r\n * Must be used inside a ``\r\n */\r\nexport function Notifications(): ReactElement<{id?: string}>\r\n{\r\n const notificationId = useContext(NotificationsContext);\r\n return (\r\n
\r\n );\r\n}\r\n\r\n/**\r\n * Notification component.\r\n * @param props\r\n */\r\nexport function Notification({\r\n className,\r\n style,\r\n type = { style: 'success', icon: true },\r\n onExited = () => {},\r\n children\r\n}: PropsWithChildren): ReactElement>\r\n{\r\n const [show, setShow] = useState(true);\r\n\r\n const _children = show ? (\r\n \r\n {children}\r\n \r\n ) : null;\r\n\r\n const _onExited = (event: AnimationEventArguments) => { onExited(event); };\r\n\r\n useEffect(() =>\r\n {\r\n const timeoutId = setTimeout(() =>\r\n {\r\n setShow(false);\r\n }, 2500);\r\n\r\n return () =>\r\n {\r\n clearTimeout(timeoutId);\r\n };\r\n }, []);\r\n\r\n return (\r\n \r\n \r\n {_children}\r\n \r\n \r\n );\r\n};","import { uniqueId } from 'lodash';\r\nimport { createContext, FunctionComponent } from 'react';\r\n\r\nimport { useConstant } from '../Hooks/ConstantHook';\r\n\r\nexport const NotificationsContext = createContext('notifications-id');\r\n\r\nexport const NotificationsProvider: FunctionComponent = ({ children }) =>\r\n{\r\n const notificationsId = useConstant(() => `notification-${uniqueId()}`);\r\n\r\n return (\r\n \r\n { children }\r\n \r\n );\r\n};","import _ from 'lodash';\r\nimport { useHistory } from 'react-router-dom';\r\n\r\n/**\r\n * Migration hook.\r\n * Use the new react-router v6 API with the react-router v5\r\n * @see https://reactrouter.com/docs/en/v6/api#usenavigate\r\n */\r\nexport const useNavigate = () =>\r\n{\r\n const history = useHistory();\r\n return (location: string | number, opts?: { replace: boolean}) =>\r\n {\r\n if (_.isNumber(location))\r\n {\r\n if (location < 0)\r\n {\r\n history.goBack();\r\n }\r\n else\r\n {\r\n history.goForward();\r\n }\r\n }\r\n else\r\n {\r\n if (opts?.replace)\r\n {\r\n history.replace(location);\r\n }\r\n else\r\n {\r\n history.push(location);\r\n }\r\n }\r\n };\r\n};\r\n\r\n/**\r\n * Migration hook.\r\n * Use the new react-router v6 API with the react-router v5\r\n * @see https://reactrouter.com/docs/en/v6/api#usenavigationtype\r\n */\r\nexport const useNavigationType = () =>\r\n{\r\n const { action } = useHistory();\r\n return action;\r\n};","import { ServicesTypes, useService } from '../ServiceProvider';\r\n\r\n/**\r\n * Get a instance of `IAuthenticationService`\r\n *\r\n * @return {IAuthenticationService} AuthenticationService\r\n */\r\nexport const useAuthenticationService = () =>\r\n{\r\n return useService(ServicesTypes.IAuthenticationService);\r\n};\r\n\r\n/**\r\n * Get the current user or do a logout.\r\n */\r\nexport const useCurrentUser = () =>\r\n{\r\n const authenticationService = useAuthenticationService();\r\n\r\n if (!authenticationService.isLogged()\r\n || authenticationService.isCurrentTokenExpired()\r\n || authenticationService.modifyPassword()\r\n || authenticationService.isEnable2FA())\r\n {\r\n authenticationService.logout();\r\n globalThis.location.reload();\r\n }\r\n\r\n const currentUser = authenticationService.currentUser;\r\n\r\n if (currentUser)\r\n {\r\n return currentUser;\r\n }\r\n else\r\n {\r\n throw new Error('AuthenticationService is logged and not token expired but currentUser is `null`');\r\n }\r\n};\r\n","import { IBackendFormService } from 'Services/Backend/IBackendFormService';\r\n\r\nimport { useConstant } from 'Components/Core/Hooks/ConstantHook';\r\n\r\nimport { ServicesTypes, useService } from '../ServiceProvider';\r\n\r\n/**\r\n * Gets an instance of `IBackendFormService` customized for a transaction\r\n * @param transactionId, the transaction controller that will be used\r\n * @returns `IBackendFormService` instance\r\n */\r\nexport const useBackendFormService = (transactionId: string): IBackendFormService =>\r\n{\r\n const backendFormService = useService(ServicesTypes.IBackendFormServiceFactory);\r\n return useConstant(() => backendFormService.get(transactionId));\r\n};","import { ITransactionService } from 'Services/Transaction/ITransactionService';\r\n\r\nimport { useConstant } from 'Components/Core/Hooks/ConstantHook';\r\n\r\nimport { ServicesTypes, useService } from '../ServiceProvider';\r\n\r\n/**\r\n * Get the `ITransactionService` for a transactionId\r\n * @param transactionId - the transaction id\r\n * @returns {ITransactionService}\r\n */\r\nexport const useTransactionService = (transactionId: string): ITransactionService =>\r\n{\r\n const transactionServiceFactory = useService(ServicesTypes.ITransactionServiceFactory);\r\n return useConstant(() => transactionServiceFactory.get(transactionId));\r\n};","/**\n * The code was extracted from:\n * https://github.com/davidchambers/Base64.js\n */\n\nvar chars = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nfunction InvalidCharacterError(message) {\n this.message = message;\n}\n\nInvalidCharacterError.prototype = new Error();\nInvalidCharacterError.prototype.name = \"InvalidCharacterError\";\n\nfunction polyfill(input) {\n var str = String(input).replace(/=+$/, \"\");\n if (str.length % 4 == 1) {\n throw new InvalidCharacterError(\n \"'atob' failed: The string to be decoded is not correctly encoded.\"\n );\n }\n for (\n // initialize result and counters\n var bc = 0, bs, buffer, idx = 0, output = \"\";\n // get next character\n (buffer = str.charAt(idx++));\n // character found in table? initialize bit storage and add its ascii value;\n ~buffer &&\n ((bs = bc % 4 ? bs * 64 + buffer : buffer),\n // and if not first of each 4 characters,\n // convert the first 8 bits to one ascii character\n bc++ % 4) ?\n (output += String.fromCharCode(255 & (bs >> ((-2 * bc) & 6)))) :\n 0\n ) {\n // try to find character in table (0-63, not found => -1)\n buffer = chars.indexOf(buffer);\n }\n return output;\n}\n\nexport default (typeof window !== \"undefined\" &&\n window.atob &&\n window.atob.bind(window)) ||\npolyfill;","import atob from \"./atob\";\n\nfunction b64DecodeUnicode(str) {\n return decodeURIComponent(\n atob(str).replace(/(.)/g, function(m, p) {\n var code = p.charCodeAt(0).toString(16).toUpperCase();\n if (code.length < 2) {\n code = \"0\" + code;\n }\n return \"%\" + code;\n })\n );\n}\n\nexport default function(str) {\n var output = str.replace(/-/g, \"+\").replace(/_/g, \"/\");\n switch (output.length % 4) {\n case 0:\n break;\n case 2:\n output += \"==\";\n break;\n case 3:\n output += \"=\";\n break;\n default:\n throw \"Illegal base64url string!\";\n }\n\n try {\n return b64DecodeUnicode(output);\n } catch (err) {\n return atob(output);\n }\n}","\"use strict\";\n\nimport base64_url_decode from \"./base64_url_decode\";\n\nexport function InvalidTokenError(message) {\n this.message = message;\n}\n\nInvalidTokenError.prototype = new Error();\nInvalidTokenError.prototype.name = \"InvalidTokenError\";\n\nexport default function(token, options) {\n if (typeof token !== \"string\") {\n throw new InvalidTokenError(\"Invalid token specified\");\n }\n\n options = options || {};\n var pos = options.header === true ? 0 : 1;\n try {\n return JSON.parse(base64_url_decode(token.split(\".\")[pos]));\n } catch (e) {\n throw new InvalidTokenError(\"Invalid token specified: \" + e.message);\n }\n}","import { CoreValorResultadoEnum } from 'Services/Enum/CoreValorResultadoEnum';\r\n\r\nexport interface ResponseDTO extends CoreResultDTO\r\n{\r\n status: ResponseStatusEnum;\r\n data: T;\r\n error?: ResponseErrorDTO;\r\n}\r\n\r\nexport interface CoreResultDTO\r\n{\r\n /**\r\n * CoreValorResultadoEnum\r\n * OK = 1,\r\n * KO = 2,\r\n * SI = 3,\r\n * NO = 4,\r\n * No_Aplica = 5,\r\n * No_Requerido = 6\r\n */\r\n result: CoreValorResultadoEnum;\r\n errorDescription?: string;\r\n}\r\n\r\nexport interface CRUDResponseDTO extends ResponseDTO\r\n{\r\n /**\r\n * CRUDOperationEnum\r\n * 1: Create\r\n * 2: Read\r\n * 3: Update\r\n * 4: Delete\r\n */\r\n CRUDOperation: CRUDOperationEnum;\r\n code: Y;\r\n}\r\n\r\nexport interface DataResponseDTO extends ResponseDTO\r\n{\r\n code: Y;\r\n}\r\n\r\nexport interface ReadResponseDTO extends CRUDResponseDTO\r\n{\r\n /**\r\n * 2: Read\r\n */\r\n CRUDOperation: CRUDOperationEnum.Read;\r\n}\r\n\r\nexport interface UpdateResponseDTO extends CRUDResponseDTO\r\n{\r\n /**\r\n * 3: Update\r\n */\r\n CRUDOperation: CRUDOperationEnum.Update;\r\n}\r\n\r\nexport enum ResponseStatusEnum\r\n{\r\n Success = 1,\r\n Error = 2,\r\n}\r\n\r\nexport interface ResponseErrorDTO\r\n{\r\n errorCode: number;\r\n message: string;\r\n}\r\n\r\nexport enum CRUDOperationEnum {\r\n Create = 1,\r\n Read = 2,\r\n Update = 3,\r\n Delete = 4\r\n}\r\n\r\nexport interface EntityCoreDTO\r\n{\r\n code: string;\r\n}","import jwt_decode from 'jwt-decode';\r\n\r\nimport { ResponseDTO, ResponseStatusEnum } from '../DTOs/IResponse';\r\n\r\nimport { AccessResultDTO, AuthDTO, IAuthenticationService, TokenDTO } from './IAuthenticationService';\r\n\r\nconst baseUrl = process.env.REACT_APP_API_ENDPOINT;\r\n\r\nexport class AuthenticationService implements IAuthenticationService\r\n{\r\n private _currentUser : AuthDTO | null = null;\r\n\r\n private keyCurrentUserName: string = 'currentUser';\r\n\r\n private keyJwtToken: string = 'jwt_';\r\n\r\n constructor()\r\n {\r\n const token = localStorage.getItem(`${this.keyJwtToken}_${localStorage.getItem(this.keyCurrentUserName)}`);\r\n\r\n if (token != null)\r\n {\r\n this._currentUser = JSON.parse(token);\r\n }\r\n else\r\n {\r\n this._currentUser = null;\r\n }\r\n }\r\n\r\n get currentUser() : AuthDTO | null { return this._currentUser; }\r\n\r\n async login(userName: string, password: string) : Promise\r\n {\r\n // Get the JWT Token already stored by this userName in order to try to skip the 2FA step.\r\n const jwtTokenLocalStorage = localStorage.getItem(`${this.keyJwtToken}_${userName}`);\r\n const authDTOLocalStorage: AuthDTO | null = jwtTokenLocalStorage != null ? JSON.parse(jwtTokenLocalStorage) : null;\r\n\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${authDTOLocalStorage?.token}` },\r\n body: JSON.stringify({ userName, password })\r\n };\r\n\r\n const response = await fetch(`${baseUrl}I010000/Login`, requestOptions);\r\n\r\n return await this.processLoginResult(response);\r\n }\r\n\r\n async loginQR(qrCode: string): Promise\r\n {\r\n // Get the JWT Token already stored by this qrCode in order to try to skip the 2FA step.\r\n const jwtTokenLocalStorage = localStorage.getItem(`${this.keyJwtToken}_${qrCode}`);\r\n const authDTOLocalStorage: AuthDTO | null = jwtTokenLocalStorage != null ? JSON.parse(jwtTokenLocalStorage) : null;\r\n\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${authDTOLocalStorage?.token}` },\r\n body: JSON.stringify({ userStamp: qrCode })\r\n };\r\n\r\n const response = await fetch(`${baseUrl}I010000/Login`, requestOptions);\r\n\r\n return await this.processLoginResult(response);\r\n }\r\n\r\n /**\r\n * Process the login result checking the user token.\r\n * If the token is a 2FA token, we need to call the `twoFactor` method.\r\n * @param {Response} response\r\n * @returns\r\n */\r\n private async processLoginResult(response: Response)\r\n {\r\n const json = await response.json() as ResponseDTO;\r\n\r\n if (json.status === ResponseStatusEnum.Error)\r\n {\r\n throw new Error(json.error?.message);\r\n }\r\n\r\n if (!json.data.enable2FA)\r\n {\r\n // Store user details and jwt token in local storage to keep user logged in between page refreshes\r\n this.storeCurrentUser(json.data);\r\n }\r\n\r\n return json.data;\r\n }\r\n\r\n async twoFactor(otp: string, token: string) : Promise\r\n {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${token}` },\r\n body: JSON.stringify({ otp })\r\n };\r\n\r\n const response = await fetch(`${baseUrl}I010000/OTP`, requestOptions);\r\n const json = await response.json() as ResponseDTO;\r\n\r\n if (json.status === ResponseStatusEnum.Error)\r\n {\r\n throw new Error(json.error?.message);\r\n }\r\n\r\n // When the user is logged, we must crete a new key in local storage in order to get the last user\r\n this.storeCurrentUser(json.data);\r\n\r\n return json.data;\r\n }\r\n\r\n async setNewPassword(password: string, repeatedPassword: string) : Promise\r\n {\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${this.currentUser?.token}` },\r\n body: JSON.stringify({ password, repeatedPassword })\r\n };\r\n\r\n const response = await fetch(`${baseUrl}I010000/SetNewPassword`, requestOptions);\r\n const json = await response.json() as ResponseDTO;\r\n\r\n if (json.status === ResponseStatusEnum.Error)\r\n {\r\n throw new Error(json.error?.message);\r\n }\r\n\r\n // When the user is logged, we must crete a new key in local storage in order to get the last user\r\n this.storeCurrentUser(json.data);\r\n\r\n return json.data;\r\n }\r\n\r\n async refreshToken(): Promise\r\n {\r\n if (!this.isLogged())\r\n {\r\n throw new Error('Not exists any user logged, use `AuthenticationService#login` first');\r\n }\r\n\r\n if (this.isCurrentTokenExpired())\r\n {\r\n throw new Error('The current user have the token expired, the `refreshToken()` method must be called before the token is expired.');\r\n }\r\n\r\n const requestOptions = {\r\n method: 'POST',\r\n headers: { 'Content-Type': 'application/json', 'Authorization': `Bearer ${this.currentUser?.token}` },\r\n };\r\n\r\n const response = await fetch(`${baseUrl}I010000/RefreshJWT`, requestOptions);\r\n const json = await response.json() as ResponseDTO;\r\n\r\n if (json.status === ResponseStatusEnum.Error)\r\n {\r\n throw new Error(json.error?.message);\r\n }\r\n\r\n this.storeCurrentUser(json.data);\r\n\r\n return json.data;\r\n }\r\n\r\n isLogged() : boolean\r\n {\r\n return this.currentUser != null;\r\n }\r\n\r\n modifyPassword(): boolean\r\n {\r\n return this.currentUser?.modifyPassword || false;\r\n }\r\n\r\n isEnable2FA(): boolean\r\n {\r\n return this.currentUser?.enable2FA || false;\r\n }\r\n\r\n /**\r\n * Check if the user logged has the token expired\r\n *\r\n * @return {boolean}\r\n */\r\n isCurrentTokenExpired(): boolean\r\n {\r\n const token = this.geCurrentToken();\r\n return this.isTokenExpired(token);\r\n }\r\n\r\n /**\r\n * Check if the token parameter is expired\r\n * @param {TokenDTO | null} token\r\n * @return {boolean}\r\n */\r\n isTokenExpired(token: TokenDTO | null): boolean\r\n {\r\n if (token)\r\n {\r\n const date = new Date(0);\r\n date.setUTCSeconds(token.exp);\r\n return date < new Date();\r\n }\r\n\r\n return true;\r\n }\r\n\r\n geCurrentToken(): TokenDTO | null\r\n {\r\n return this.getToken(this.currentUser?.token);\r\n }\r\n\r\n getToken(token: string | null | undefined): TokenDTO | null\r\n {\r\n if (token)\r\n {\r\n return jwt_decode(token);\r\n }\r\n else\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n getAuthHeader() : { Authorization: string} | {}\r\n {\r\n if (this.currentUser && this.currentUser.token)\r\n {\r\n return { Authorization: `Bearer ${this.currentUser.token}` };\r\n }\r\n else\r\n {\r\n return {};\r\n }\r\n }\r\n\r\n logout()\r\n {\r\n if (this.currentUser !== null)\r\n {\r\n this._currentUser = null;\r\n localStorage.removeItem(this.keyCurrentUserName);\r\n // Dont remove the keyJwtToken to avoid 2FA if not expired the next login with this userName.\r\n }\r\n }\r\n\r\n /**\r\n * Store the `AuthDTO` in the local storage and in memory\r\n * @private\r\n * @param {AuthDTO} user\r\n */\r\n private storeCurrentUser(user: AuthDTO)\r\n {\r\n localStorage.setItem(`${this.keyJwtToken}_${user.userName}`, JSON.stringify(user));\r\n localStorage.setItem(`${this.keyCurrentUserName}`, user.userName);\r\n this._currentUser = user;\r\n }\r\n}","export default function _classPrivateFieldBase(receiver, privateKey) {\n if (!Object.prototype.hasOwnProperty.call(receiver, privateKey)) {\n throw new TypeError(\"attempted to use private field on non-instance\");\n }\n return receiver;\n}","var id = 0;\nexport default function _classPrivateFieldKey(name) {\n return \"__private_\" + id++ + \"_\" + name;\n}","import React, { FC, useContext } from 'react';\r\n\r\nimport { AuthenticationService } from 'Services/Authentication/AuthenticationService';\r\nimport { IAuthenticationService } from 'Services/Authentication/IAuthenticationService';\r\nimport { BackendFileServiceFactory } from 'Services/Backend/BackendFileService';\r\nimport { BackendFormServiceFactory } from 'Services/Backend/BackendFormService';\r\nimport { BackendGridServiceFactory } from 'Services/Backend/BackendGridService';\r\nimport { BackendPuzzleServiceFactory } from 'Services/Backend/BackendPuzzleService';\r\nimport { BackendReportServiceImpl } from 'Services/Backend/BackendReportService';\r\nimport { BackendSelectorServiceFactory } from 'Services/Backend/BackendSelectorService';\r\nimport { FetchAuthService } from 'Services/Backend/FetchAuthService';\r\nimport { HttpServiceImpl } from 'Services/Backend/HttpService';\r\nimport { IBackendFileServiceFactory } from 'Services/Backend/IBackendFileService';\r\nimport { IBackendFormServiceFactory } from 'Services/Backend/IBackendFormService';\r\nimport { IBackendGridServiceFactory } from 'Services/Backend/IBackendGridService';\r\nimport { IBackendPuzzleServiceFactory } from 'Services/Backend/IBackendPuzzleService';\r\nimport { IBackendReportService } from 'Services/Backend/IBackendReportService';\r\nimport { IBackendSelectorServiceFactory } from 'Services/Backend/IBackendSelectorService';\r\nimport { IFetchAuthService } from 'Services/Backend/IFetchAuthService';\r\nimport { IHttpService } from 'Services/Backend/IHttpService';\r\nimport { ITransactionServiceFactory } from 'Services/Transaction/ITransactionService';\r\nimport { TransactionServiceFactory } from 'Services/Transaction/TransactionService';\r\n\r\nimport { useConstant } from 'Components/Core/Hooks/ConstantHook';\r\n\r\nexport enum ServicesTypes\r\n{\r\n IAuthenticationService = 'IAuthenticationService',\r\n IFetchAuthService = 'IFetchAuthService',\r\n IHttpService = 'IHttpService',\r\n IBackendFormServiceFactory = 'IBackendFormServiceFactory',\r\n IBackendGridServiceFactory = 'IBackendGridServiceFactory',\r\n IBackendPuzzleServiceFactory = 'IBackendPuzzleServiceFactory',\r\n ITransactionServiceFactory = 'ITransactionServiceFactory',\r\n IBackendSelectorServiceFactory = 'IBackendSelectorServiceFactory',\r\n IBackendReportService = 'IBackendReportService',\r\n IBackendFileServiceFactory = 'IBackendFileServiceFactory'\r\n}\r\n\r\ninterface Services\r\n{\r\n [ServicesTypes.IAuthenticationService] : IAuthenticationService,\r\n [ServicesTypes.IFetchAuthService] : IFetchAuthService,\r\n [ServicesTypes.IHttpService] : IHttpService,\r\n [ServicesTypes.IBackendFormServiceFactory] : IBackendFormServiceFactory,\r\n [ServicesTypes.IBackendGridServiceFactory] : IBackendGridServiceFactory,\r\n [ServicesTypes.ITransactionServiceFactory] : ITransactionServiceFactory,\r\n [ServicesTypes.IBackendPuzzleServiceFactory] : IBackendPuzzleServiceFactory,\r\n [ServicesTypes.IBackendSelectorServiceFactory] : IBackendSelectorServiceFactory,\r\n [ServicesTypes.IBackendReportService] : IBackendReportService,\r\n [ServicesTypes.IBackendFileServiceFactory] : IBackendFileServiceFactory,\r\n}\r\n\r\nexport const ServicesContext = React.createContext(null);\r\n\r\n/**\r\n * Register all services in the context.\r\n * All services are singleton and must be: a class or a factory.\r\n *\r\n * Work like a DI container and register all services in this container.\r\n * We use context to use the react way to access this singletons services but it also must work\r\n * with a simple static class.\r\n */\r\nexport const ServiceProvider: FC = ({ children }) =>\r\n{\r\n const container = useConstant(() =>\r\n {\r\n // Register services and their dependencies\r\n const authService = new AuthenticationService();\r\n const fetchAuthService = new FetchAuthService(authService);\r\n const httpService = new HttpServiceImpl(fetchAuthService);\r\n const backendFormServiceFactory = new BackendFormServiceFactory(httpService);\r\n const backendGridServiceFactory = new BackendGridServiceFactory(httpService, fetchAuthService);\r\n const transactionServiceFactory = new TransactionServiceFactory(httpService);\r\n const backendPuzzleServiceFactory = new BackendPuzzleServiceFactory(httpService);\r\n const backendSelectorServiceFactory = new BackendSelectorServiceFactory(httpService);\r\n const backendReportService = new BackendReportServiceImpl(fetchAuthService);\r\n const backendFileServiceFactory = new BackendFileServiceFactory(fetchAuthService, httpService);\r\n\r\n return {\r\n [ServicesTypes.IAuthenticationService]: authService,\r\n [ServicesTypes.IFetchAuthService]: fetchAuthService,\r\n [ServicesTypes.IHttpService]: httpService,\r\n [ServicesTypes.IBackendFormServiceFactory]: backendFormServiceFactory,\r\n [ServicesTypes.IBackendGridServiceFactory]: backendGridServiceFactory,\r\n [ServicesTypes.IBackendPuzzleServiceFactory]: backendPuzzleServiceFactory,\r\n [ServicesTypes.ITransactionServiceFactory]: transactionServiceFactory,\r\n [ServicesTypes.IBackendSelectorServiceFactory]: backendSelectorServiceFactory,\r\n [ServicesTypes.IBackendReportService]: backendReportService,\r\n [ServicesTypes.IBackendFileServiceFactory]: backendFileServiceFactory,\r\n };\r\n });\r\n\r\n return \r\n { children }\r\n ;\r\n};\r\n\r\n/**\r\n * Get the service from the ServiceContext\r\n * @param type - The service type to get\r\n * @returns The service\r\n */\r\nexport const useService = (type: T) : Services[T] =>\r\n{\r\n const servicesLocator = useContext(ServicesContext);\r\n\r\n if (servicesLocator === null)\r\n {\r\n throw new Error('Not found context for ServiceContext');\r\n }\r\n\r\n const result = servicesLocator[type];\r\n\r\n if (result)\r\n {\r\n return result;\r\n }\r\n\r\n throw new Error(`Not found dependency: ${type} in ServiceContext`);\r\n};","import { ResponseDTO } from 'Services/DTOs/IResponse';\r\nimport { appendQueryParams, isFormData } from 'Services/Utils/Utils';\r\n\r\nimport { IBackendFileService, IBackendFileServiceFactory } from './IBackendFileService';\r\nimport { IFetchAuthService } from './IFetchAuthService';\r\nimport { FormBody, IHttpService, QueryParams } from './IHttpService';\r\n\r\nconst baseUrl = process.env.REACT_APP_API_ENDPOINT;\r\n\r\nexport class BackendFileServiceFactory implements IBackendFileServiceFactory\r\n{\r\n #httpService: IHttpService;\r\n #fetchSecureService: IFetchAuthService;\r\n\r\n constructor(fetchSecureService: IFetchAuthService, httpService: IHttpService)\r\n {\r\n this.#fetchSecureService = fetchSecureService;\r\n this.#httpService = httpService;\r\n }\r\n\r\n get(transactionId: string) : IBackendFileService\r\n {\r\n return new BackendFileServiceImpl(transactionId, this.#fetchSecureService, this.#httpService);\r\n }\r\n}\r\n\r\nclass BackendFileServiceImpl implements IBackendFileService\r\n{\r\n #transactionId: string;\r\n #fetchService: IFetchAuthService;\r\n #httpService: IHttpService;\r\n\r\n constructor(transactionId: string, fetchService: IFetchAuthService, httpService: IHttpService)\r\n {\r\n this.#transactionId = transactionId;\r\n this.#fetchService = fetchService;\r\n this.#httpService = httpService;\r\n }\r\n\r\n async postFile(url: string, body?: FormBody | FormData, queryParams?: QueryParams): Promise\r\n {\r\n const result = await this.#httpService.post>(`${this.#transactionId}/${url}`, body, queryParams);\r\n return result.data;\r\n }\r\n\r\n async getFileUrl(url: string, body?: FormBody | FormData, queryParams?: QueryParams): Promise\r\n {\r\n const finalUrl = this.getUrl(url, queryParams);\r\n const requestInit = this.getRequestInit(body);\r\n\r\n const response = await this.#fetchService.fetch(finalUrl, requestInit);\r\n const blob = await response.blob();\r\n return (window.URL || window.webkitURL).createObjectURL(blob);\r\n }\r\n\r\n async downloadFile(url: string, body?: FormBody | FormData, queryParams?: QueryParams): Promise\r\n {\r\n const finalUrl = this.getUrl(url, queryParams);\r\n const requestInit = this.getRequestInit(body);\r\n\r\n return await this.#fetchService.download(finalUrl, requestInit);\r\n }\r\n\r\n async openFile(url: string, body?: FormBody | FormData, queryParams?: QueryParams): Promise\r\n {\r\n const finalUrl = this.getUrl(url, queryParams);\r\n const requestInit = this.getRequestInit(body);\r\n\r\n return await this.#fetchService.open(finalUrl, requestInit);\r\n }\r\n\r\n private getUrl(url: string, queryParams?: QueryParams): string\r\n {\r\n if (queryParams)\r\n {\r\n return appendQueryParams(`${baseUrl}${this.#transactionId}/${url}`, queryParams);\r\n }\r\n else\r\n {\r\n return `${baseUrl}${this.#transactionId}/${url}`;\r\n }\r\n }\r\n\r\n private getRequestInit(body?: FormBody | FormData)\r\n {\r\n if (body && isFormData(body))\r\n {\r\n return { method: 'POST', body };\r\n }\r\n else\r\n {\r\n return { method: 'POST', body: body ? JSON.stringify(body) : undefined, headers: { 'accept': 'application/json', 'content-type': 'application/json' } };\r\n }\r\n }\r\n}","import { DataSourceRequestState, toDataSourceRequest as kendoToDataSourceRequest, toDataSourceRequestString as kendoToDataSourceRequestString } from '@progress/kendo-data-query';\r\nimport { isArray, isDate } from 'lodash';\r\n\r\n/**\r\n *\r\n * Kendo dont allow to use differents timezones in back and front, and recommend to always use UTC.\r\n * This method wrap the original kendo `toDataSourceRequest` and transform the dates to UTC.\r\n *\r\n * @see https://www.telerik.com/forums/grid-date-filter-value-missing-time-zone\r\n * @see https://docs.telerik.com/aspnet-mvc/html-helpers/data-management/grid/how-to/editing/utc-time-on-both-server-and-client\r\n * @see https://github.com/telerik/kendo-ui-core/issues/5306\r\n *\r\n * @param state\r\n * @returns\r\n */\r\nexport const toDataSourceRequest = (state : DataSourceRequestState): any =>\r\n kendoToDataSourceRequest(fixUTCDates(state));\r\n\r\n/**\r\n *\r\n * Kendo dont allow to use differents timezones in back and front, and recommend to always use UTC.\r\n * This method wrap the original kendo `toDataSourceRequestString` and transform the dates to UTC before parsing it.\r\n *\r\n * @see https://www.telerik.com/forums/grid-date-filter-value-missing-time-zone\r\n * @see https://docs.telerik.com/aspnet-mvc/html-helpers/data-management/grid/how-to/editing/utc-time-on-both-server-and-client\r\n * @see https://github.com/telerik/kendo-ui-core/issues/5306\r\n *\r\n * @param state\r\n * @returns\r\n */\r\nexport const toDataSourceRequestString = (state : DataSourceRequestState): string =>\r\n kendoToDataSourceRequestString(fixUTCDates(state));\r\n\r\n/**\r\n * Create a new local date with the value of the UTC Date passed by params.\r\n * ```ts\r\n * const date = new Date('2015-05-04T22:00:00');\r\n * console.log(date.toString()); // Local date => 'Mon May 04 2015 22:00:00 GMT+0200'\r\n * console.log(date.tooISOString()); // UTC date => '2015-05-04T20:00:00.000Z'\r\n *\r\n * // Transform to UTC local\r\n * const newDate = toUTCLocal(date);\r\n * console.log(newDate.toString()) // New local date => 'Mon May 04 2015 20:00:00 GMT+0200'\r\n * console.log(newDate.tooISOString()) // New UTC date => '2015-05-04T18:00:00.000Z'\r\n * ```\r\n */\r\nconst toUTCLocal = (date: Date) =>\r\n new Date(\r\n date.getUTCFullYear(),\r\n date.getUTCMonth(),\r\n date.getUTCDate(),\r\n date.getUTCHours(),\r\n date.getUTCMinutes(),\r\n date.getUTCSeconds(),\r\n date.getUTCMilliseconds()\r\n );\r\n\r\n/**\r\n * Fix Kendo issue working with dates.\r\n * @param object\r\n * @returns new copy with all dates fixed\r\n */\r\nconst fixUTCDates = (object: any) =>\r\n{\r\n if (isDate(object))\r\n {\r\n // Transform the local date to UTC\r\n return toUTCLocal(object);\r\n }\r\n\r\n if (!object || !(object instanceof Object))\r\n {\r\n return object;\r\n }\r\n\r\n const newObject = isArray(object) ? [...object] : { ...object };\r\n\r\n for (const key in newObject) // Array or Object\r\n {\r\n const value = newObject[key];\r\n\r\n newObject[key] = fixUTCDates(value);\r\n }\r\n\r\n return newObject;\r\n};","import _ from 'lodash';\r\n\r\nimport { ArrayFieldNames, DeepPartialChanges, SimpleValue } from '../TypeUtils';\r\n\r\n/**\r\n * Adds to the element and to all properties of the element that are objects (recursively) the property:\r\n * `columnsWithPendingChangesNames` a list of field names of `T` in pascal case\r\n *\r\n * Note: this is needed for the backend in order to work properly with a `DeepPartial`\r\n *\r\n * @param element a partial element of `T`\r\n * @returns {DeepPartialChanges}\r\n */\r\nexport const WithPartialChanges = function(element: T): DeepPartialChanges\r\n{\r\n const result = _.cloneDeep(element);\r\n const columnsWithPendingChangesNames : ArrayFieldNames = [];\r\n for (const key in result)\r\n {\r\n const value = result[key];\r\n if (!isSimpleValue(value))\r\n {\r\n result[key] = WithPartialChanges(value) as any;\r\n }\r\n const keyPascalCase = camelCase2PascalCase(key);\r\n columnsWithPendingChangesNames.push(keyPascalCase);\r\n }\r\n return {\r\n ...result,\r\n columnsWithPendingChangesNames\r\n } as DeepPartialChanges;\r\n};\r\n\r\n/**\r\n * Transform the camelCase to PascalCase\r\n * @param str - string in camelCase\r\n * @returns a new string in PascalCase\r\n */\r\nconst camelCase2PascalCase = (str: T): Capitalize =>\r\n{\r\n if (!str)\r\n {\r\n return str as Capitalize;\r\n }\r\n return str.charAt(0).toUpperCase() + str.slice(1) as Capitalize;\r\n};\r\n\r\n/**\r\n * Check if the value is an object or not.\r\n * @param value\r\n * @returns `true` if is a `SimpleValue`\r\n */\r\nconst isSimpleValue = (value: any) : value is SimpleValue =>\r\n{\r\n if (value instanceof Object && !Array.isArray(value) && !_.isDate(value))\r\n {\r\n return false;\r\n }\r\n return true;\r\n};","import { isNumber, isString } from 'lodash';\r\n\r\nimport { DataSourceSimpleResult, GridSimpleResult, IGridSimpleState } from 'Services/DTOs/Grid/IGrid';\r\nimport { CRUDResponseDTO, DataResponseDTO, ResponseDTO } from 'Services/DTOs/IResponse';\r\nimport { CoreValorResultadoEnum } from 'Services/Enum/CoreValorResultadoEnum';\r\nimport { isGridSimpleState } from 'Services/Utils/GridUtils';\r\nimport { toDataSourceRequestString } from 'Services/Utils/KendoDataStateUtils';\r\nimport { WithPartialChanges } from 'Services/Utils/PartialChangesUtils';\r\n\r\nimport { DeepPartial, FieldValues } from 'Components/Core/Form/Hooks/Types/Utils';\r\n\r\nimport { IBackendFormService, IBackendFormServiceFactory, UpdateObject } from './IBackendFormService';\r\nimport { IHttpService, QueryParams } from './IHttpService';\r\n\r\nexport class BackendFormServiceFactory implements IBackendFormServiceFactory\r\n{\r\n #httpService: IHttpService;\r\n\r\n constructor(httpService: IHttpService)\r\n {\r\n this.#httpService = httpService;\r\n }\r\n\r\n get(transactionId: string) : IBackendFormService\r\n {\r\n return new BackendFormServiceImpl(transactionId, this.#httpService);\r\n }\r\n}\r\n\r\nexport class BackendFormServiceImpl implements IBackendFormService\r\n{\r\n #transactionId: string;\r\n #httpService: IHttpService;\r\n\r\n constructor(transactionId: string, httpService: IHttpService)\r\n {\r\n this.#transactionId = transactionId;\r\n this.#httpService = httpService;\r\n }\r\n\r\n get(url: string, codigo: string | number, queryParams?: QueryParams): Promise;\r\n get(url: string, gridDataState: IGridSimpleState): Promise>;\r\n get(url: string, queryParams: QueryParams, gridDataState: IGridSimpleState): Promise>;\r\n get(url: string, queryParams?: QueryParams): Promise;\r\n get(url: string, param1?: IGridSimpleState | QueryParams | string | number, param2?: IGridSimpleState | QueryParams): Promise | Promise> | Promise> | Promise\r\n {\r\n if (isNumber(param1) || isString(param1))\r\n {\r\n return this._getEntity(url, param1, param2 as QueryParams | undefined);\r\n }\r\n else if (param1 !== undefined && isGridSimpleState(param1))\r\n {\r\n return this.list(url, param1);\r\n }\r\n else if (param2 !== undefined && isGridSimpleState(param2))\r\n {\r\n return this.list(url, param2, param1);\r\n }\r\n else if (param1 === undefined && param2 === undefined)\r\n {\r\n return this._get(url);\r\n }\r\n else\r\n {\r\n return this._get(url, param1);\r\n }\r\n }\r\n\r\n // #region Get\r\n\r\n private async _get(url: string, params?: QueryParams): Promise\r\n {\r\n const { data } = await this.#httpService.get>(`${this.#transactionId}/${url}`, params);\r\n\r\n return data;\r\n }\r\n\r\n private async _getEntity(url: string, codigo: string | number, params?: QueryParams): Promise\r\n {\r\n const { data } = await this.#httpService.get>(`${this.#transactionId}/${url}`, { code: codigo, ...params });\r\n\r\n return data;\r\n }\r\n\r\n private async list(url: string, gridDataState: IGridSimpleState, queryParams?: QueryParams): Promise>\r\n {\r\n const stateQueryStr = gridDataState ? (url.indexOf('?') < 0 ? '?' : '&') + toDataSourceRequestString(gridDataState) : ''; // Serialize the state.\r\n\r\n const { data: result } = await this.#httpService.get>>(`${this.#transactionId}/${url}${stateQueryStr}`, queryParams);\r\n\r\n if (result.errors)\r\n {\r\n throw new Error(result.errors);\r\n }\r\n\r\n return result;\r\n }\r\n\r\n async create(url: string, data: DeepPartial): Promise>>\r\n {\r\n const finalUrl = `${this.#transactionId}/${url}`;\r\n\r\n const _elem = { ...data };\r\n delete _elem.codigo; // We dont want to send the codigo = \"\" or any other value\r\n\r\n const json = await this.#httpService.post>>(finalUrl, WithPartialChanges(_elem));\r\n\r\n if (json.result !== CoreValorResultadoEnum.OK)\r\n {\r\n throw new Error(json.errorDescription);\r\n }\r\n\r\n return json;\r\n }\r\n\r\n async update(url: string, data: UpdateObject): Promise\r\n {\r\n const { result, errorDescription } = await this.#httpService.put>>(`${this.#transactionId}/${url}`, WithPartialChanges(data));\r\n\r\n if (result !== CoreValorResultadoEnum.OK)\r\n {\r\n throw new Error(errorDescription);\r\n }\r\n }\r\n\r\n async post(url: string, body: FormData): Promise\r\n async post(url: string, body: FieldValues): Promise\r\n {\r\n const { data } = await this.#httpService.post>(`${this.#transactionId}/${url}`, body);\r\n\r\n return data;\r\n }\r\n\r\n async put(url: string, body: FieldValues): Promise\r\n {\r\n const { data } = await this.#httpService.put>(`${this.#transactionId}/${url}`, WithPartialChanges(body));\r\n\r\n return data;\r\n }\r\n\r\n async delete(url: string, codigo: NonNullable, queryParams?: QueryParams): Promise;\r\n async delete(url: string, queryParams?: QueryParams): Promise;\r\n async delete(url: string, param1: string | number | QueryParams | undefined, param2?: undefined | QueryParams): Promise\r\n {\r\n if (isNumber(param1) || isString(param1))\r\n {\r\n return this._deleteEntity(url, param1, param2);\r\n }\r\n else\r\n {\r\n const { data } = await this.#httpService.delete>(`${this.#transactionId}/${url}`, param1);\r\n\r\n return data;\r\n }\r\n }\r\n\r\n async _deleteEntity(url: string, codigo: string | number, queryParams?: QueryParams ): Promise\r\n {\r\n await this.#httpService.delete>>(`${this.#transactionId}/${url}`, { code: codigo, ...queryParams });\r\n\r\n return;\r\n }\r\n\r\n // #endregion\r\n}","import { CustomGroupFilterDTO } from './IPuzzle';\r\n\r\nexport class CustomGroupFilterRequest\r\n{\r\n public customGroupFilters: Array;\r\n\r\n constructor(customGroupFilters: Array)\r\n {\r\n this.customGroupFilters = customGroupFilters;\r\n }\r\n\r\n public static build(filters: Array): CustomGroupFilterRequest\r\n {\r\n return new CustomGroupFilterRequest(filters.map(g => ({ key: g.key, customFilters: g.customFilters.map(f => ({ key: f.key } )) })));\r\n }\r\n}\r\n\r\ninterface CustomGroupFilter\r\n{\r\n key: string;\r\n customFilters: Array;\r\n}\r\n\r\ninterface CustomFilter\r\n{\r\n key: string;\r\n}","import { DataSourceRequestState, translateAggregateResults, translateDataSourceResultGroups } from '@progress/kendo-data-query';\r\nimport { isString } from 'lodash';\r\n\r\nimport { CustomGroupFilterRequest } from 'Services/DTOs/Grid/CustomGroupFilterRequest';\r\nimport { ExcelRequestDTO } from 'Services/DTOs/Grid/IExcel';\r\nimport { DataSourceResult, GridSimpleResult, GridResult, GroupData } from 'Services/DTOs/Grid/IGrid';\r\nimport { CustomGroupFilterDTO } from 'Services/DTOs/Grid/IPuzzle';\r\nimport { ResponseDTO } from 'Services/DTOs/IResponse';\r\nimport { isArrayOfGroupData } from 'Services/Utils/GridUtils';\r\nimport { toDataSourceRequest } from 'Services/Utils/KendoDataStateUtils';\r\nimport { WithPartialChanges } from 'Services/Utils/PartialChangesUtils';\r\n\r\nimport { IBackendGridService, IBackendGridServiceFactory } from './IBackendGridService';\r\nimport { IFetchAuthService } from './IFetchAuthService';\r\nimport { FormBody, IHttpService, QueryParams } from './IHttpService';\r\n\r\nconst baseUrl = process.env.REACT_APP_API_ENDPOINT;\r\n\r\nexport class BackendGridServiceFactory implements IBackendGridServiceFactory\r\n{\r\n #httpService: IHttpService;\r\n #fetchAuthService: IFetchAuthService;\r\n\r\n constructor(httpService: IHttpService, fetchAuthService: IFetchAuthService)\r\n {\r\n this.#httpService = httpService;\r\n this.#fetchAuthService = fetchAuthService;\r\n }\r\n\r\n get(transactionId: string) : IBackendGridService\r\n {\r\n return new BackendGridServiceImpl(transactionId, this.#httpService, this.#fetchAuthService);\r\n }\r\n}\r\n\r\nclass BackendGridServiceImpl implements IBackendGridService\r\n{\r\n #transactionId: string;\r\n #httpService: IHttpService;\r\n #fetchAuthService: IFetchAuthService;\r\n\r\n constructor(transactionId: string, httpService: IHttpService, fetchAuthService: IFetchAuthService)\r\n {\r\n this.#transactionId = transactionId;\r\n this.#httpService = httpService;\r\n this.#fetchAuthService = fetchAuthService;\r\n }\r\n\r\n async get(urlOrGridDataState?: string | DataSourceRequestState, queryParamsOrCustomFilters?: QueryParams | Array): Promise | GridResult>\r\n {\r\n if (isString(urlOrGridDataState))\r\n {\r\n const url = urlOrGridDataState as string;\r\n const queryParams = queryParamsOrCustomFilters as QueryParams;\r\n\r\n const { data } = await this.#httpService.get>(`${this.#transactionId}/${url}`, queryParams);\r\n\r\n return data;\r\n }\r\n else\r\n {\r\n const gridDataState = urlOrGridDataState as DataSourceRequestState;\r\n const customFilters = queryParamsOrCustomFilters as Array;\r\n\r\n if (gridDataState != null)\r\n {\r\n return this._gridList(gridDataState, customFilters);\r\n }\r\n else\r\n {\r\n return this._simpleList() as Promise>;\r\n }\r\n }\r\n }\r\n\r\n async exportExcel({ config, customGroupFilters, data, dataSource }: ExcelRequestDTO): Promise\r\n {\r\n const timeZone = Intl.DateTimeFormat().resolvedOptions().timeZone;\r\n const body: FormBody = {\r\n config: {\r\n ...config,\r\n timeZone\r\n },\r\n data,\r\n dataSource: toDataSourceRequest(dataSource),\r\n customGroupFilters: customGroupFilters ? CustomGroupFilterRequest.build(customGroupFilters) : null // Only want key and customFilters\r\n };\r\n\r\n await this.download('ExportExcel', body);\r\n }\r\n\r\n async download(url: string, body?: FormBody): Promise\r\n {\r\n const requestInit : RequestInit = {\r\n method: 'POST',\r\n body: body ? JSON.stringify(body) : undefined,\r\n headers: { 'accept': 'application/json', 'content-type': 'application/json' }\r\n };\r\n await this.#fetchAuthService.download(`${baseUrl}${this.#transactionId}/${url}`, requestInit);\r\n }\r\n\r\n // #region Grid data functions\r\n private async _simpleList(): Promise>\r\n {\r\n const base_url = `${this.#transactionId}/Get`;\r\n const { data: json } = await this.#httpService.post>>(`${base_url}`);\r\n\r\n return {\r\n data: json.data,\r\n total: json.total\r\n } as GridSimpleResult;\r\n }\r\n\r\n private async _gridList(gridDataState: DataSourceRequestState, customFilters?: Array): Promise | GridResult>\r\n {\r\n const hasGroups = gridDataState.group && gridDataState.group.length;\r\n const base_url = `${this.#transactionId}/GetGrid`;\r\n const customGroupFilters = customFilters ? CustomGroupFilterRequest.build(customFilters) : null; // Only want key and customFilters\r\n\r\n const dataSource = toDataSourceRequest(gridDataState);\r\n\r\n const { data: json } = await this.#httpService.post>>(\r\n base_url,\r\n {\r\n dataSource,\r\n customGroupFilters\r\n });\r\n\r\n if (json.errors)\r\n {\r\n throw new Error(json.errors);\r\n }\r\n\r\n // FIXME: si hay datos aggregados entonces no devuelve array de T\r\n // si no: GroupResult[] con array de T dentro de las propiedades de Items.\r\n const data = hasGroups ? (translateDataSourceResultGroups(json.data) as Array>) : json.data;\r\n const total = json.total;\r\n const aggregate = json.aggregateResults ? translateAggregateResults(json.aggregateResults) : undefined;\r\n\r\n if (aggregate || isArrayOfGroupData(data))\r\n {\r\n return {\r\n data,\r\n total,\r\n aggregate\r\n };\r\n }\r\n else\r\n {\r\n return {\r\n data,\r\n total\r\n };\r\n }\r\n }\r\n // #endregion\r\n\r\n // #region CRUD functions\r\n async post(url: string, data?: FormData): Promise;\r\n async post(url: string, data?: FormBody, queryParams?: QueryParams): Promise\r\n {\r\n const { data: result } = await this.#httpService.post>(`${this.#transactionId}/${url}`, data, queryParams);\r\n return result;\r\n }\r\n\r\n async put(url: string, data?: FormBody, queryParams?: QueryParams): Promise\r\n {\r\n const { data: result } = await this.#httpService.put>(`${this.#transactionId}/${url}`, WithPartialChanges(data), queryParams);\r\n\r\n return result;\r\n }\r\n\r\n async delete(url: string, queryParams?: QueryParams): Promise\r\n {\r\n const { data } = await this.#httpService.delete>(`${this.#transactionId}/${url}`, queryParams);\r\n\r\n return data;\r\n }\r\n // #endregion\r\n}","import { CustomGroupFilterRequest } from 'Services/DTOs/Grid/CustomGroupFilterRequest';\r\nimport { CustomGroupFilterDTO, GridConfigurationDTO, PuzzleConfigurationDTO } from 'Services/DTOs/Grid/IPuzzle';\r\nimport { CRUDResponseDTO, DataResponseDTO, ResponseDTO } from 'Services/DTOs/IResponse';\r\nimport { CoreValorResultadoEnum } from 'Services/Enum/CoreValorResultadoEnum';\r\n\r\nimport { IBackendPuzzleService, IBackendPuzzleServiceFactory } from './IBackendPuzzleService';\r\nimport { IHttpService } from './IHttpService';\r\n\r\nexport class BackendPuzzleServiceFactory implements IBackendPuzzleServiceFactory\r\n{\r\n #httpService: IHttpService;\r\n\r\n constructor(httpService: IHttpService)\r\n {\r\n this.#httpService = httpService;\r\n }\r\n\r\n get(transactionId: string) : IBackendPuzzleService\r\n {\r\n return new BackendPuzzleServiceImpl(transactionId, this.#httpService);\r\n }\r\n}\r\n\r\nclass BackendPuzzleServiceImpl implements IBackendPuzzleService\r\n{\r\n #transactionId: string;\r\n #httpService: IHttpService;\r\n\r\n constructor(transactionId: string, httpService: IHttpService)\r\n {\r\n this.#transactionId = transactionId;\r\n this.#httpService = httpService;\r\n }\r\n\r\n async getGridConfiguration(): Promise\r\n {\r\n const { status, data, errorDescription } = await this.#httpService.get>(`${this.#transactionId}/GetGridConfiguration`);\r\n\r\n if (status !== 1)\r\n {\r\n throw new Error(errorDescription);\r\n }\r\n\r\n return data;\r\n }\r\n\r\n async getFilterListValues(\r\n field: string,\r\n customFilters: Array): Promise>\r\n {\r\n const customFiltersJSON = customFilters && CustomGroupFilterRequest.build(customFilters); // Only want key and customFilters\r\n\r\n const { data } = await this.#httpService.get>>(`${this.#transactionId}/GetFilterListValues`,\r\n {\r\n field,\r\n customGroupFilterRequest: btoa(JSON.stringify(customFiltersJSON))\r\n });\r\n\r\n return data;\r\n };\r\n\r\n async getPuzzle(code: string): Promise\r\n {\r\n const { result, errorDescription, data } = await this.#httpService.get>(`${this.#transactionId}/GetPuzzle`, { code });\r\n\r\n if (result !== CoreValorResultadoEnum.OK)\r\n {\r\n throw new Error(errorDescription);\r\n }\r\n\r\n return data;\r\n };\r\n\r\n async createPuzzle(data: PuzzleConfigurationDTO): Promise\r\n {\r\n const result = await this.#httpService.post>(`${this.#transactionId}/CreatePuzzle`, data);\r\n\r\n if (result.result !== CoreValorResultadoEnum.OK)\r\n {\r\n throw new Error(result.errorDescription);\r\n }\r\n\r\n return result.code;\r\n };\r\n\r\n async updatePuzzle(data: PuzzleConfigurationDTO): Promise\r\n {\r\n const result = await this.#httpService.put>(`${this.#transactionId}/UpdatePuzzle`, data);\r\n\r\n if (result.result !== CoreValorResultadoEnum.OK)\r\n {\r\n throw new Error(result.errorDescription);\r\n }\r\n };\r\n\r\n async deletePuzzle(code: string): Promise\r\n {\r\n const result = await this.#httpService.delete>(`${this.#transactionId}/DeletePuzzle`, { code });\r\n\r\n if (result.result !== CoreValorResultadoEnum.OK)\r\n {\r\n throw new Error(result.errorDescription);\r\n }\r\n };\r\n\r\n async createFavoritePuzzle(code: string): Promise\r\n {\r\n const result = await this.#httpService.post>(`${this.#transactionId}/CreateFavoritePuzzle`, { code });\r\n\r\n if (result.result !== CoreValorResultadoEnum.OK)\r\n {\r\n throw new Error(result.errorDescription);\r\n }\r\n };\r\n\r\n async deleteFavoritePuzzle(code: string): Promise\r\n {\r\n const result = await this.#httpService.delete>(`${this.#transactionId}/DeleteFavoritePuzzle`, { code });\r\n\r\n if (result.result !== CoreValorResultadoEnum.OK)\r\n {\r\n throw new Error(result.errorDescription);\r\n }\r\n };\r\n\r\n async updatePrivacyPuzzle(puzzle: Pick | 'public'>): Promise\r\n {\r\n const result = await this.#httpService.put>(`${this.#transactionId}/UpdatePrivacyPuzzle`, puzzle);\r\n\r\n if (result.result !== CoreValorResultadoEnum.OK)\r\n {\r\n throw new Error(result.errorDescription);\r\n }\r\n };\r\n}","import base64 from 'base-64';\r\n\r\nimport { IReportConfigurationDTO } from 'Services/DTOs/Report/IReport';\r\n\r\nimport { IBackendReportService } from './IBackendReportService';\r\nimport { IFetchAuthService } from './IFetchAuthService';\r\n\r\nconst baseUrlReporting = process.env.REACT_APP_REPORTING_API_ENDPOINT;\r\n\r\nexport class BackendReportServiceImpl implements IBackendReportService\r\n{\r\n #fetchAuthService: IFetchAuthService;\r\n\r\n constructor(fetchAuthService: IFetchAuthService)\r\n {\r\n this.#fetchAuthService = fetchAuthService;\r\n }\r\n\r\n async openReport(url: string, body: IReportConfigurationDTO, download: boolean = false): Promise\r\n {\r\n for (const key in body.ParameterValues)\r\n {\r\n body.ParameterValues[key] = base64.encode(JSON.stringify(body.ParameterValues[key]));\r\n }\r\n\r\n const finalUrl = `${baseUrlReporting}${url}/GetReport`;\r\n\r\n const requestInit: RequestInit = {\r\n method: 'POST',\r\n body: body ? JSON.stringify(body) : undefined,\r\n headers: { 'content-type': 'application/json', 'XMLHttpRequestResponseType': 'blob' }\r\n };\r\n\r\n if (download)\r\n {\r\n return await this.#fetchAuthService.download(finalUrl, requestInit);\r\n }\r\n else\r\n {\r\n return await this.#fetchAuthService.open(finalUrl, requestInit);\r\n }\r\n }\r\n}","import { toDataSourceRequestString } from '@progress/kendo-data-query';\r\n\r\nimport { IBackendSelectorService, IBackendSelectorServiceFactory } from 'Services/Backend/IBackendSelectorService';\r\nimport { CheckedData } from 'Services/DTOs/Checked';\r\nimport { DataSourceSimpleResult, GridSimpleResult, IGridSimpleState } from 'Services/DTOs/Grid/IGrid';\r\nimport { ResponseDTO } from 'Services/DTOs/IResponse';\r\nimport { SelectorDTO } from 'Services/DTOs/SelectorDTO';\r\n\r\nimport { IHttpService, QueryParams } from './IHttpService';\r\n\r\nexport class BackendSelectorServiceFactory implements IBackendSelectorServiceFactory\r\n{\r\n #httpService: IHttpService;\r\n\r\n constructor(httpService: IHttpService)\r\n {\r\n this.#httpService = httpService;\r\n }\r\n\r\n get(transactionId: string) : IBackendSelectorService\r\n {\r\n return new BackendSelectorServiceImpl(transactionId, this.#httpService);\r\n }\r\n}\r\n\r\nclass BackendSelectorServiceImpl implements IBackendSelectorService\r\n{\r\n #transactionId: string;\r\n #httpService: IHttpService;\r\n\r\n constructor(transactionId: string, httpService: IHttpService)\r\n {\r\n this.#transactionId = transactionId;\r\n this.#httpService = httpService;\r\n }\r\n\r\n // #region Get\r\n async get>(url: string, gridDataState: IGridSimpleState): Promise>>;\r\n async get>(url: string, queryParam: QueryParams, gridDataState: IGridSimpleState): Promise>>;\r\n async get>(url: string, queryParamOrGridState: QueryParams | IGridSimpleState, gridDataStateUndefinable?: IGridSimpleState): Promise>>\r\n {\r\n const gridDataState = gridDataStateUndefinable ?\r\n gridDataStateUndefinable\r\n : queryParamOrGridState as IGridSimpleState;\r\n\r\n const queryParams = gridDataStateUndefinable ?\r\n `?${Object.entries(queryParamOrGridState as QueryParams).reduce((prev, [key, value]) => `${prev}${key}=${value}&`, '')}` // Serialize the query params.\r\n : '';\r\n\r\n const stateQueryStr = (queryParams || url.indexOf('?') > 0 ? '&' : '?') + toDataSourceRequestString(gridDataState); // Serialize the state.\r\n\r\n const { data: result } = await this.#httpService.get>>>(`${this.#transactionId}/${url}${queryParams}${stateQueryStr}`);\r\n\r\n if (result.errors)\r\n {\r\n throw new Error(result.errors);\r\n }\r\n\r\n // Wrapping result inside Selected type to add the selected property\r\n const data = result.data.map>(e =>\r\n {\r\n return {\r\n ...e,\r\n // If not defined selected, set to false, otherwise use the selected field from the backend.\r\n checked: e.checked !== undefined ? e.checked : false\r\n };\r\n });\r\n\r\n return {\r\n ...result,\r\n data\r\n };\r\n }\r\n // #endregion\r\n}","import { IAuthenticationService } from 'Services/Authentication/IAuthenticationService';\r\nimport { ResponseDTO } from 'Services/DTOs/IResponse';\r\n\r\nimport { IFetchAuthService } from './IFetchAuthService';\r\n\r\nexport class FetchAuthService implements IFetchAuthService\r\n{\r\n #authenticationService: IAuthenticationService;\r\n\r\n constructor(authenticationService: IAuthenticationService)\r\n {\r\n this.#authenticationService = authenticationService;\r\n }\r\n\r\n // https://stackoverflow.com/questions/46932213/how-to-download-large-file-with-javascript\r\n // https://stackoverflow.com/questions/52817280/problem-downloading-a-pdf-blob-in-javascript\r\n async download(url: RequestInfo, init: RequestInit | undefined): Promise\r\n {\r\n const response = await this.fetch(url, init);\r\n const blob = await response.blob();\r\n const fileUrl = (window.URL || window.webkitURL).createObjectURL(blob);\r\n\r\n const hiddenAnchor = document.createElement('a');\r\n hiddenAnchor.style.display = 'none';\r\n hiddenAnchor.href = fileUrl;\r\n\r\n const contentDisposition = response.headers.get('content-disposition');\r\n if (contentDisposition)\r\n {\r\n const fileNameRegex = /filename[^;=\\n]*=((['\"]).*?\\2|[^;\\n]*)/;\r\n const fileNameRegexResult = fileNameRegex.exec(contentDisposition);\r\n\r\n if (fileNameRegexResult)\r\n {\r\n hiddenAnchor.download = decodeURI(fileNameRegexResult[1].replace(/['\"]/g, ''));\r\n }\r\n }\r\n\r\n document.body.appendChild(hiddenAnchor);\r\n hiddenAnchor.click();\r\n document.body.removeChild(hiddenAnchor);\r\n\r\n (window.URL || window.webkitURL).revokeObjectURL(fileUrl);\r\n }\r\n\r\n // https://stackoverflow.com/questions/46932213/how-to-download-large-file-with-javascript\r\n // https://stackoverflow.com/questions/52817280/problem-downloading-a-pdf-blob-in-javascript\r\n async open(url: RequestInfo, init: RequestInit | undefined): Promise\r\n {\r\n const response = await this.fetch(url, init);\r\n const blob = await response.blob();\r\n const fileUrl = (window.URL || window.webkitURL).createObjectURL(blob);\r\n\r\n const newWindow = window.open('', '_blank');\r\n if (newWindow)\r\n {\r\n newWindow.location.href = fileUrl;\r\n newWindow.onclose = () => (window.URL || window.webkitURL).revokeObjectURL(fileUrl);\r\n }\r\n }\r\n\r\n async fetch(url: RequestInfo, init: RequestInit | undefined): Promise\r\n {\r\n const requestInit: RequestInit = init ?? {};\r\n requestInit.headers = { ...requestInit.headers, ...this.#authenticationService.getAuthHeader() };\r\n\r\n // Do the request & refresh token in parallel\r\n const [response, ] = await Promise.all([fetch(url, requestInit), this.refreshToken()]);\r\n\r\n if (!response.ok)\r\n {\r\n // Login incorrecto o token invalido => Error Forbidden\r\n if ([403].indexOf(response.status) !== -1)\r\n {\r\n // Hacemos el logout\r\n this.logout();\r\n\r\n return new Promise((resolve) =>\r\n {\r\n setTimeout(() => resolve(response), 500);\r\n });\r\n }\r\n // No autorizado o sin permisos\r\n else if ([401].indexOf(response.status) !== -1)\r\n {\r\n // Redireccionamos al CUADRO DE MANDOS\r\n globalThis.location.replace('I000000');\r\n\r\n return new Promise((resolve) =>\r\n {\r\n setTimeout(() => resolve(response), 500);\r\n });\r\n }\r\n // Error\r\n else\r\n {\r\n const err: ResponseDTO = await response.json();\r\n throw new Error(err.error?.message || err.errorDescription || response.statusText);\r\n }\r\n }\r\n return response;\r\n }\r\n\r\n /**\r\n * Check if the token of the current logged user must be refreshed.\r\n *\r\n * If no user logged, then do a logout and reload the page.\r\n *\r\n * If the token cant be refreshed, the do a logout and reload the page.\r\n *\r\n * If the token must be refreshed (< 30 minutes to expire) to the refresh request and store\r\n * the new JWT token generated.\r\n */\r\n private async refreshToken()\r\n {\r\n const expiredDate = this.getAuthExpiredDate();\r\n const createdDate = this.getAuthCreatedDate();\r\n if (!expiredDate || !createdDate)\r\n {\r\n this.logout();\r\n // No se debe alcanzar este error, ya que hemos recargado la pagina\r\n throw new Error('Not authorized');\r\n }\r\n const ttl = diffMinutes(expiredDate, createdDate);\r\n // Simple logic if TTL si more than 1 hour => try to renew when we have 20 minutes left, else 10 minutes left\r\n if (diffMinutes(expiredDate, new Date()) < (ttl > 60 ? 20 : 10))\r\n {\r\n try\r\n {\r\n await this.#authenticationService.refreshToken();\r\n }\r\n catch (err: any)\r\n {\r\n this.logout();\r\n // No se debe alcanzar este error, ya que hemos recargado la pagina\r\n throw new Error(err);\r\n }\r\n }\r\n }\r\n\r\n private logout()\r\n {\r\n\r\n this.#authenticationService.logout();\r\n globalThis.location.reload();\r\n }\r\n\r\n private getAuthExpiredDate()\r\n {\r\n const token = this.#authenticationService.geCurrentToken();\r\n if (token)\r\n {\r\n const date = new Date(0);\r\n date.setUTCSeconds(token.exp);\r\n return date;\r\n }\r\n else\r\n {\r\n return null;\r\n }\r\n }\r\n\r\n private getAuthCreatedDate()\r\n {\r\n const token = this.#authenticationService.geCurrentToken();\r\n if (token)\r\n {\r\n const date = new Date(0);\r\n date.setUTCSeconds(token.nbf);\r\n return date;\r\n }\r\n else\r\n {\r\n return null;\r\n }\r\n }\r\n}\r\n\r\nconst diffMinutes = (dt2: Date, dt1: Date) =>\r\n{\r\n var diff = (dt2.getTime() - dt1.getTime()) / 1000;\r\n diff /= 60;\r\n return Math.abs(Math.round(diff));\r\n};","import { DateOnly, DateTime } from 'Services/Utils/Dates';\r\n\r\nexport interface Format {\r\n /**\r\n * Format all the fields of the data param recursively.\r\n *\r\n * @param {T} data, must be a `Array` or a `Object`.\r\n */\r\n format(data: T): void;\r\n}\r\n\r\nexport class DateFormat implements Format\r\n{\r\n\r\n // Some valid examples:\r\n // 2017-06-22T09:34:12.11 => Local\r\n // 2016-12-31T00:00:00 => Local\r\n // 2021-05-31T22:00:00.0011Z => UTC\r\n // 2021-05-31T22:00:00.0011+01:00 => Offset (+01:00)\r\n private dateRegex = new RegExp(/^(\\d{4})-0?(\\d+)-0?(\\d+)[T ]0?(\\d+):0?(\\d+):0?(\\d+)(\\.\\d+)?(Z|(\\+0?(\\d+):0?(\\d+)))?$/);\r\n\r\n public format(object: T)\r\n {\r\n if (!object || !(object instanceof Object))\r\n {\r\n return;\r\n }\r\n\r\n for (const key in object) // Array or Object\r\n {\r\n const value = object[key];\r\n if (value instanceof Object)\r\n {\r\n this.format(value);\r\n }\r\n\r\n if (typeof value === 'string' && this.dateRegex.test(value))\r\n {\r\n if (value.endsWith('T00:00:00Z') || value.endsWith('T00:00:00.000Z'))\r\n {\r\n object[key] = new DateOnly(value) as any;\r\n }\r\n else\r\n {\r\n object[key] = new DateTime(value) as any;\r\n }\r\n }\r\n }\r\n }\r\n}\r\n\r\nexport class JsonFormatter\r\n{\r\n private formatters: Format[] = [new DateFormat()];\r\n\r\n /**\r\n * Format the data with the available `formatters`.\r\n *\r\n * This method change the data param.\r\n *\r\n * @param {T[] | T} data\r\n */\r\n public format(data: T[] | T)\r\n {\r\n this.formatters.forEach(i =>\r\n {\r\n i.format(data);\r\n });\r\n }\r\n}\r\n","import { ResponseDTO, ResponseStatusEnum } from 'Services/DTOs/IResponse';\r\nimport { appendQueryParams, isFormData } from 'Services/Utils/Utils';\r\n\r\nimport { IFetchAuthService } from './IFetchAuthService';\r\nimport { FormBody, IHttpService, QueryParams } from './IHttpService';\r\nimport { JsonFormatter } from './JsonFormatter';\r\n\r\nconst baseUrl = process.env.REACT_APP_API_ENDPOINT;\r\n\r\nexport class HttpServiceImpl implements IHttpService\r\n{\r\n private jsonFormatter = new JsonFormatter();\r\n private fetchAuthService: IFetchAuthService;\r\n\r\n constructor(fetchAuthService: IFetchAuthService)\r\n {\r\n this.fetchAuthService = fetchAuthService;\r\n }\r\n\r\n async get, U = any>(url: string, queryParams?: QueryParams): Promise\r\n {\r\n const urlFinal = appendQueryParams( `${baseUrl}${url}`, queryParams);\r\n\r\n const init : RequestInit = { method: 'GET', headers: { 'accept': 'application/json' } };\r\n\r\n const response = await this.fetchAuthService.fetch(urlFinal, init);\r\n const json = await response.json() as T;\r\n\r\n if (json.status === ResponseStatusEnum.Error)\r\n {\r\n throw new Error(json.error?.message);\r\n }\r\n\r\n if (json.error)\r\n {\r\n throw new Error(json.error.message);\r\n }\r\n\r\n this.jsonFormatter.format(json.data);\r\n\r\n return json;\r\n }\r\n\r\n async post, U = any>(url: string, body: FormData): Promise\r\n async post, U = any>(url: string, body?: FormBody, queryParams?: QueryParams): Promise\r\n {\r\n let urlFinal;\r\n let init : RequestInit;\r\n\r\n if (body && isFormData(body))\r\n {\r\n urlFinal = `${baseUrl}${url}`;\r\n\r\n init = { method: 'POST', body: body };\r\n }\r\n else\r\n {\r\n urlFinal = appendQueryParams(`${baseUrl}${url}`, queryParams);\r\n\r\n init = { method: 'POST', body: body ? JSON.stringify(body) : undefined, headers: { 'accept': 'application/json', 'content-type': 'application/json' } };\r\n }\r\n\r\n const response = await this.fetchAuthService.fetch(urlFinal, init);\r\n const json = await response.json();\r\n\r\n if (json.status === ResponseStatusEnum.Error)\r\n {\r\n throw new Error(json.error?.message);\r\n }\r\n\r\n this.jsonFormatter.format(json.data);\r\n\r\n return json;\r\n }\r\n\r\n async put, U = any>(url: string, body?: FormBody, queryParams?: QueryParams): Promise\r\n {\r\n const urlFinal = appendQueryParams( `${baseUrl}${url}`, queryParams);\r\n\r\n const init : RequestInit = { method: 'PUT', body: body ? JSON.stringify(body) : undefined, headers: { 'accept': 'application/json', 'content-type': 'application/json' } };\r\n\r\n const response = await this.fetchAuthService.fetch(urlFinal, init);\r\n const json = await response.json() as T;\r\n\r\n if (json.status === ResponseStatusEnum.Error)\r\n {\r\n throw new Error(json.error?.message);\r\n }\r\n\r\n this.jsonFormatter.format(json.data);\r\n\r\n return json;\r\n }\r\n\r\n async delete, U = any>(url: string, queryParams?: QueryParams): Promise\r\n {\r\n const urlFinal = appendQueryParams( `${baseUrl}${url}`, queryParams);\r\n\r\n const init : RequestInit = { method: 'DELETE', headers: { 'accept': 'application/json' } };\r\n\r\n const response = await this.fetchAuthService.fetch(urlFinal, init);\r\n const json = await response.json() as T;\r\n\r\n if (json.status === ResponseStatusEnum.Error)\r\n {\r\n throw new Error(json.error?.message);\r\n }\r\n\r\n if (json.error)\r\n {\r\n throw new Error(json.error.message);\r\n }\r\n\r\n this.jsonFormatter.format(json.data);\r\n\r\n return json;\r\n }\r\n\r\n // #endregion\r\n}","import { IHttpService } from 'Services/Backend/IHttpService';\r\nimport { ResponseDTO } from 'Services/DTOs/IResponse';\r\n\r\nimport { ITransactionService, ITransactionServiceFactory, TransactionPermissionDTO } from './ITransactionService';\r\n\r\nexport class TransactionServiceFactory implements ITransactionServiceFactory\r\n{\r\n #httpService: IHttpService;\r\n\r\n constructor(httpService: IHttpService)\r\n {\r\n this.#httpService = httpService;\r\n }\r\n\r\n get(id: string): ITransactionService\r\n {\r\n return new TransactionServiceImpl(id, this.#httpService);\r\n }\r\n}\r\n\r\nclass TransactionServiceImpl implements ITransactionService\r\n{\r\n #id: string;\r\n #httpService: IHttpService;\r\n\r\n constructor(id: string, httpService: IHttpService)\r\n {\r\n this.#id = id;\r\n this.#httpService = httpService;\r\n }\r\n\r\n getId(): string\r\n {\r\n return this.#id;\r\n }\r\n\r\n async getPermission(): Promise\r\n {\r\n const { data } = await this.#httpService.get>(\r\n `${this.#id}/GetTransactionPermissionDTO`,\r\n { transactionKey:this.#id });\r\n\r\n return {\r\n ...data,\r\n allowedTransactionOperationsKeys: data.allowedTransactionOperationsKeys ?? []\r\n };\r\n }\r\n}","export var ARC = \"arc\";\nexport var AXIS_LABEL_CLICK = \"axisLabelClick\";\nexport var BLACK = \"#000\";\nexport var BOTTOM = \"bottom\";\nexport var CENTER = \"center\";\nexport var CIRCLE = \"circle\";\nexport var COORD_PRECISION = 3;\nexport var CROSS = \"cross\";\nexport var DATE = \"date\";\nexport var DEFAULT_FONT = \"12px sans-serif\";\nexport var DEFAULT_HEIGHT = 400;\nexport var DEFAULT_PRECISION = 10;\nexport var DEFAULT_WIDTH = 600;\nexport var END = \"end\";\nexport var FORMAT_REGEX = /\\{\\d+:?/;\nexport var HEIGHT = \"height\";\nexport var HIGHLIGHT_ZINDEX = 100;\nexport var INSIDE = \"inside\";\nexport var LEFT = \"left\";\nexport var MAX_VALUE = Number.MAX_VALUE;\nexport var MIN_VALUE = -Number.MAX_VALUE;\nexport var NONE = \"none\";\nexport var NOTE_CLICK = \"noteClick\";\nexport var NOTE_HOVER = \"noteHover\";\nexport var NOTE_LEAVE = \"noteLeave\";\nexport var OBJECT = \"object\";\nexport var OUTSIDE = \"outside\";\nexport var RIGHT = \"right\";\nexport var ROUNDED_RECT = \"roundedRect\";\nexport var START = \"start\";\nexport var STRING = \"string\";\nexport var TOP = \"top\";\nexport var TRIANGLE = \"triangle\";\nexport var VALUE = \"value\";\nexport var WHITE = \"#fff\";\nexport var WIDTH = \"width\";\nexport var X = \"x\";\nexport var Y = \"y\";\nexport var DEFAULT_SERIES_OPACITY = 1;\n","export default function isArray(value) {\n return Array.isArray(value);\n}","import isArray from './is-array';\n\nexport default function addClass(element, classes) {\n var classArray = isArray(classes) ? classes : [ classes ];\n\n for (var idx = 0; idx < classArray.length; idx++) {\n var className = classArray[idx];\n if (element.className.indexOf(className) === -1) {\n element.className += \" \" + className;\n }\n }\n}","var SPACE_REGEX = /\\s+/g;\n\nexport default function removeClass(element, className) {\n if (element && element.className) {\n element.className = element.className.replace(className, \"\").replace(SPACE_REGEX, \" \");\n }\n}","var UNDEFINED = \"undefined\";\n\nexport default function defined(value) {\n return typeof value !== UNDEFINED;\n}","import { drawing } from '@progress/kendo-drawing';\n\nexport default function alignPathToPixel(path) {\n var offset = 0.5;\n if (path.options.stroke && drawing.util.defined(path.options.stroke.width)) {\n if (path.options.stroke.width % 2 === 0) {\n offset = 0;\n }\n }\n\n for (var i = 0; i < path.segments.length; i++) {\n path.segments[i].anchor().round(0).translate(offset, offset);\n }\n\n return path;\n}","export default function clockwise(angle1, angle2) {\n // True if angle2 is clockwise of angle1\n // assuming angles grow in clock-wise direction\n // (as in the pie and radar charts)\n return -angle1.x * angle2.y + angle1.y * angle2.x < 0;\n}","export default function isNumber(value) {\n return typeof value === \"number\" && !isNaN(value);\n}","import { STRING } from './constants';\n\nexport default function isString(value) {\n return typeof value === STRING;\n}","import isNumber from './is-number';\nimport isString from './is-string';\n\nexport default function convertableToNumber(value) {\n return isNumber(value) || (isString(value) && isFinite(value));\n}","export default function isFunction(fn) {\n return typeof fn === \"function\";\n}","import isFunction from './is-function';\n\nvar OBJECT = \"object\";\nvar UNDEFINED = \"undefined\";\n\nfunction deepExtendOne(destination, source) {\n\n for (var property in source) {\n var propValue = source[property];\n var propType = typeof propValue;\n\n var propInit = (void 0);\n if (propType === OBJECT && propValue !== null) {\n propInit = propValue.constructor;\n } else {\n propInit = null;\n }\n\n if (propInit && propInit !== Array) {\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 var 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\nexport default function deepExtend(destination) {\n var arguments$1 = arguments;\n\n var length = arguments.length;\n\n for (var i = 1; i < length; i++) {\n deepExtendOne(destination, arguments$1[i]);\n }\n\n return destination;\n}","export default function isObject(value) {\n return typeof value === \"object\";\n}","import isNumber from './is-number';\n\nexport default function styleValue(value) {\n if (isNumber(value)) {\n return value + \"px\";\n }\n return value;\n}","import isObject from './is-object';\nimport isArray from './is-array';\nimport isString from './is-string';\nimport styleValue from './style-value';\n\nvar SIZE_STYLES_REGEX = /width|height|top|left|bottom|right/i;\n\nfunction isSizeField(field) {\n return SIZE_STYLES_REGEX.test(field);\n}\n\nexport default function elementStyles(element, styles) {\n var stylesArray = isString(styles) ? [ styles ] : styles;\n\n if (isArray(stylesArray)) {\n var result = {};\n var style = window.getComputedStyle(element);\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = isSizeField(field) ? parseFloat(style[field]) : style[field];\n }\n\n return result;\n } else if (isObject(styles)) {\n for (var field$1 in styles) {\n element.style[field$1] = styleValue(styles[field$1]);\n }\n }\n}","import { TOP, BOTTOM, LEFT, RIGHT } from './constants';\n\nexport default function getSpacing(value, defaultSpacing) {\n if ( defaultSpacing === void 0 ) defaultSpacing = 0;\n\n var spacing = { top: 0, right: 0, bottom: 0, left: 0 };\n\n if (typeof(value) === \"number\") {\n spacing[TOP] = spacing[RIGHT] = spacing[BOTTOM] = spacing[LEFT] = value;\n } else {\n spacing[TOP] = value[TOP] || defaultSpacing;\n spacing[RIGHT] = value[RIGHT] || defaultSpacing;\n spacing[BOTTOM] = value[BOTTOM] || defaultSpacing;\n spacing[LEFT] = value[LEFT] || defaultSpacing;\n }\n\n return spacing;\n}","var current = {\n compile: function(template) {\n return template;\n }\n};\n\nvar TemplateService = function TemplateService () {};\n\nTemplateService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nTemplateService.compile = function compile (template) {\n return current.compile(template);\n};\n\nexport default TemplateService;\n","import TemplateService from '../services/template-service';\nimport isFunction from './is-function';\n\nexport default function getTemplate(options) {\n if ( options === void 0 ) options = {};\n\n var template;\n if (options.template) {\n options.template = template = TemplateService.compile(options.template);\n } else if (isFunction(options.content)) {\n template = options.content;\n }\n\n return template;\n}\n","import { drawing } from '@progress/kendo-drawing';\n\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\nvar getterCache = {};\n\ngetterCache['undefined'] = function(obj) {\n return obj;\n};\n\nexport default function getter(field) {\n if (getterCache[field]) {\n return getterCache[field];\n }\n\n var fields = [];\n field.replace(FIELD_REGEX, function(match, index, indexAccessor, field) {\n fields.push(drawing.util.defined(index) ? index : (indexAccessor || field));\n });\n\n getterCache[field] = function(obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length && result; idx++) {\n result = result[fields[idx]];\n }\n\n return result;\n };\n\n return getterCache[field];\n}","export default function grep(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (callback(array[idx])) {\n result .push(array[idx]);\n }\n }\n\n return result;\n}","export default function hasClasses(element, classNames) {\n if (element.className) {\n var names = classNames.split(\" \");\n for (var idx = 0; idx < names.length; idx++) {\n if (element.className.indexOf(names[idx]) !== -1) {\n return true;\n }\n }\n }\n}","\nvar HashMap = function HashMap() {\n this._map = {};\n};\n\nHashMap.prototype.get = function get (name) {\n return this._map[this._key(name)];\n};\n\nHashMap.prototype.set = function set (name, value) {\n this._map[this._key(name)] = value;\n};\n\nHashMap.prototype._key = function _key (name) {\n return name instanceof Date ? name.getTime() : name;\n};\n\nexport default HashMap;","export default function inArray(value, array) {\n if (array) {\n return array.indexOf(value) !== -1;\n }\n}","function pow(p) {\n if (p) {\n return Math.pow(10, p);\n }\n\n return 1;\n}\n\nexport default function round(value, precision) {\n var power = pow(precision);\n return Math.round(value * power) / power;\n}","import { drawing } from '@progress/kendo-drawing';\nimport { COORD_PRECISION } from './constants';\n\nexport default function interpolateValue(start, end, progress) {\n return drawing.util.round(start + (end - start) * progress, COORD_PRECISION);\n}","import deepExtend from './deep-extend';\n\nvar TRIGGER = 'trigger';\n\nvar InstanceObserver = function InstanceObserver(observer, handlers) {\n this.observer = observer;\n this.handlerMap = deepExtend({}, this.handlerMap, handlers);\n};\n\nInstanceObserver.prototype.trigger = function trigger (name, args) {\n var ref = this;\n var observer = ref.observer;\n var handlerMap = ref.handlerMap;\n var isDefaultPrevented;\n if (handlerMap[name]) {\n isDefaultPrevented = this.callObserver(handlerMap[name], args);\n } else if (observer[TRIGGER]) {\n isDefaultPrevented = this.callObserver(TRIGGER, name, args);\n }\n\n return isDefaultPrevented;\n};\n\nInstanceObserver.prototype.callObserver = function callObserver (fnName) {\n var args = [], len = arguments.length - 1;\n while ( len-- > 0 ) args[ len ] = arguments[ len + 1 ];\n\n return this.observer[fnName].apply(this.observer, args);\n};\n\nInstanceObserver.prototype.requiresHandlers = function requiresHandlers (names) {\n var this$1 = this;\n\n if (this.observer.requiresHandlers) {\n return this.observer.requiresHandlers(names);\n }\n\n for (var idx = 0; idx < names.length; idx++) {\n if (this$1.handlerMap[names[idx]]) {\n return true;\n }\n }\n};\n\nexport default InstanceObserver;","import { drawing } from '@progress/kendo-drawing';\n\nexport default function map(array, callback) {\n var length = array.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n var value = callback(array[idx]);\n if (drawing.util.defined(value)) {\n result.push(value);\n }\n }\n return result;\n}","function matchUserAgent(userAgent) {\n var browserRxs = {\n edge: /(edge)[ \\/]([\\w.]+)/i,\n webkit: /(chrome)[ \\/]([\\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 var browser = {};\n\n for (var agent in browserRxs) {\n if (browserRxs.hasOwnProperty(agent)) {\n var match = userAgent.match(browserRxs[agent]);\n if (match) {\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 break;\n }\n }\n }\n\n return browser;\n}\n\nvar browser = null;\n\nvar support = {\n get browser() {\n if (typeof window === 'undefined' || browser) {\n return browser;\n }\n\n browser = matchUserAgent(window.navigator.userAgent);\n return browser;\n }\n};\n\nexport default support;\n","import { support } from '@progress/kendo-drawing';\n\nvar browser = support.browser || {};\n\nexport default function mousewheelDelta(e) {\n var delta = 0;\n\n if (e.wheelDelta) {\n delta = -e.wheelDelta / 120;\n\n if (browser.webkit) {\n // Webkit browsers scale the delta by twice the device resolution.\n // Possibly related to https://bugs.webkit.org/show_bug.cgi?id=196339\n //\n // Low device resolutions (e.g. zoom-out to 30%) also behave strangely.\n delta = delta / (2 * Math.max(window.devicePixelRatio, 0.625));\n }\n } else if (e.detail) {\n delta = e.detail / 3;\n }\n\n delta = delta > 0 ? Math.ceil(delta) : Math.floor(delta);\n\n return delta;\n}\n","export default function append(first, second) {\n first.push.apply(first, second);\n return first;\n}","/* eslint-disable key-spacing,no-multi-spaces,no-param-reassign */\n\nvar literals = {\n 1 : \"i\", 10 : \"x\", 100 : \"c\",\n 2 : \"ii\", 20 : \"xx\", 200 : \"cc\",\n 3 : \"iii\", 30 : \"xxx\", 300 : \"ccc\",\n 4 : \"iv\", 40 : \"xl\", 400 : \"cd\",\n 5 : \"v\", 50 : \"l\", 500 : \"d\",\n 6 : \"vi\", 60 : \"lx\", 600 : \"dc\",\n 7 : \"vii\", 70 : \"lxx\", 700 : \"dcc\",\n 8 : \"viii\", 80 : \"lxxx\", 800 : \"dccc\",\n 9 : \"ix\", 90 : \"xc\", 900 : \"cm\",\n 1000 : \"m\"\n};\n\nexport default function arabicToRoman(n) {\n var values = [ 1000,\n 900 , 800, 700, 600, 500, 400, 300, 200, 100,\n 90 , 80 , 70 , 60 , 50 , 40 , 30 , 20 , 10 ,\n 9 , 8 , 7 , 6 , 5 , 4 , 3 , 2 , 1 ];\n\n var roman = \"\";\n while (n > 0) {\n if (n < values[0]) {\n values.shift();\n } else {\n roman += literals[values[0]];\n n -= values[0];\n }\n }\n return roman;\n}","export default function createPromise() {\n var resolveFn, rejectFn;\n var promise = new Promise(function (resolve, reject) {\n resolveFn = function (data) {\n promise._state = \"resolved\";\n resolve(data);\n return promise;\n };\n rejectFn = function (data) {\n promise._state = \"rejected\";\n reject(data);\n\n return promise;\n };\n });\n promise._state = \"pending\";\n promise.resolve = resolveFn;\n promise.reject = rejectFn;\n promise.state = function () { return promise._state; };\n\n return promise;\n}\n","var defId = 1;\n\nexport default function definitionId() {\n return \"kdef\" + defId++;\n}","var DEG_TO_RAD = Math.PI / 180;\nvar MAX_NUM = Number.MAX_VALUE;\nvar MIN_NUM = -Number.MAX_VALUE;\n\nexport { DEG_TO_RAD, MAX_NUM, MIN_NUM };","import { DEG_TO_RAD } from './constants';\n\nexport default function deg(radians) {\n return radians / DEG_TO_RAD;\n}","var fromCharCode = String.fromCharCode;\n\nexport var BOM = '\\xfe\\xff';\n\n// Encodes a string as UTF-8\nexport function encodeUTF8(input) {\n var output = \"\";\n\n for (var i = 0; i < input.length; i++) {\n var code = input.charCodeAt(i);\n\n if (0xD800 <= code && code <= 0xDBFF) {\n var hi = code;\n var low = input.charCodeAt(++i);\n\n if (!isNaN(low)) {\n // Combine high and low surrogate\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/charCodeAt\n code = (hi - 0xD800) * 0x400 +\n (low - 0xDC00) + 0x10000;\n }\n }\n\n if (code < 0x80) {\n // One byte\n output += fromCharCode(code);\n } else if (code < 0x800) {\n // Two bytes\n output += fromCharCode(0xC0 | (code >>> 6));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10000) {\n // Three bytes\n output += fromCharCode(0xE0 | (code >>> 12));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n } else if (code < 0x10FFFF) {\n // Four bytes\n output += fromCharCode(0xF0 | (code >>> 18));\n output += fromCharCode(0x80 | (code >>> 12 & 0x3f));\n output += fromCharCode(0x80 | (code >>> 6 & 0x3f));\n output += fromCharCode(0x80 | (code & 0x3f));\n }\n }\n\n return output;\n}\n\nfunction encodeUnit(codeUnit) {\n return fromCharCode(codeUnit >> 8) + fromCharCode(codeUnit & 0x00ff);\n}\n\n// Encodes a string as UTF-16 big-endian\nexport function encodeUTF16BE(input) {\n var output = '';\n\n for (var i = 0; i < input.length; i++) {\n var c = input.charCodeAt(i);\n\n if (c < 0xFFFF) {\n output += encodeUnit(c);\n } else {\n var lead = ((c - 0x10000) >> 10) + 0xD800;\n var trail = ((c - 0x10000) & 0x3FF) + 0xDC00;\n output += encodeUnit(lead);\n output += encodeUnit(trail);\n }\n }\n\n return output;\n}\n","import { encodeUTF8 } from './encode-utf';\n\nvar KEY_STR = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=\";\n\nexport default function encodeBase64(input) {\n var output = \"\";\n var i = 0;\n\n var utfInput = encodeUTF8(input);\n\n while (i < utfInput.length) {\n var chr1 = utfInput.charCodeAt(i++);\n var chr2 = utfInput.charCodeAt(i++);\n var chr3 = utfInput.charCodeAt(i++);\n\n var enc1 = chr1 >> 2;\n var enc2 = ((chr1 & 3) << 4) | (chr2 >> 4);\n var enc3 = ((chr2 & 15) << 2) | (chr3 >> 6);\n var enc4 = chr3 & 63;\n\n if (isNaN(chr2)) {\n enc3 = enc4 = 64;\n } else if (isNaN(chr3)) {\n enc4 = 64;\n }\n\n output = output +\n KEY_STR.charAt(enc1) + KEY_STR.charAt(enc2) +\n KEY_STR.charAt(enc3) + KEY_STR.charAt(enc4);\n }\n\n return output;\n}","import defined from './defined';\n\nexport default function eventCoordinates(e) {\n if (defined((e.x || {}).location)) {\n return {\n x: e.x.location,\n y: e.y.location\n };\n }\n\n return {\n x: e.pageX || e.clientX || 0,\n y: e.pageY || e.clientY || 0\n };\n}","export default function eventElement(e) {\n if ( e === void 0 ) e = {};\n\n return e.touch ? e.touch.initialTouch : e.target;\n}","import defined from './defined';\n\nexport default function isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}","export default function last(array) {\n if (array) {\n return array[array.length - 1];\n }\n}","export default function limitValue(value, min, max) {\n return Math.max(Math.min(value, max), min);\n}","/* eslint-disable no-multi-spaces, key-spacing, indent, camelcase, space-before-blocks, eqeqeq, brace-style */\n/* eslint-disable space-infix-ops, space-before-function-paren, array-bracket-spacing, object-curly-spacing */\n/* eslint-disable no-nested-ternary, max-params, default-case, no-else-return, no-empty */\n/* eslint-disable no-param-reassign, no-var, block-scoped-var */\n\n// mergeSort is stable.\nexport default function mergeSort(a, cmp) {\n if (a.length < 2) {\n return a.slice();\n }\n function merge(a, b) {\n var r = [], ai = 0, bi = 0, i = 0;\n while (ai < a.length && bi < b.length) {\n if (cmp(a[ai], b[bi]) <= 0) {\n r[i++] = a[ai++];\n } else {\n r[i++] = b[bi++];\n }\n }\n if (ai < a.length) {\n r.push.apply(r, a.slice(ai));\n }\n if (bi < b.length) {\n r.push.apply(r, b.slice(bi));\n }\n return r;\n }\n return (function sort(a) {\n if (a.length <= 1) {\n return a;\n }\n var m = Math.floor(a.length / 2);\n var left = a.slice(0, m);\n var right = a.slice(m);\n left = sort(left);\n right = sort(right);\n return merge(left, right);\n })(a);\n}","var now = Date.now || function() {\n return new Date().getTime();\n};\n\nexport default now;\n","export default function promiseAll(promises) {\n return Promise.all(promises);\n}","import { DEG_TO_RAD } from './constants';\n\nexport default function rad(degrees) {\n return degrees * DEG_TO_RAD;\n}\n","import defined from './defined';\n\nexport default function valueOrDefault(value, defaultValue) {\n return defined(value) ? value : defaultValue;\n}","export default function bindEvents(element, events) {\n for (var eventName in events) {\n var eventNames = eventName.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.addEventListener(eventNames[idx], events[eventName], false);\n }\n }\n}","export default function elementOffset(element) {\n var box = element.getBoundingClientRect();\n\n var documentElement = document.documentElement;\n\n return {\n top: box.top + (window.pageYOffset || documentElement.scrollTop) - (documentElement.clientTop || 0),\n left: box.left + (window.pageXOffset || documentElement.scrollLeft) - (documentElement.clientLeft || 0)\n };\n}","export default function elementStyles(element, styles) {\n var result = {};\n var style = window.getComputedStyle(element) || {};\n var stylesArray = Array.isArray(styles) ? styles : [ styles ];\n\n for (var idx = 0; idx < stylesArray.length; idx++) {\n var field = stylesArray[idx];\n result[field] = style[field];\n }\n\n return result;\n}","import elementStyles from './element-styles';\nimport defined from './defined';\n\nfunction getPixels(value) {\n if (isNaN(value)) {\n return value;\n }\n return value + \"px\";\n}\n\nexport default function elementSize(element, size) {\n if (size) {\n var width = size.width;\n var height = size.height;\n\n if (defined(width)) {\n element.style.width = getPixels(width);\n }\n\n if (defined(height)) {\n element.style.height = getPixels(height);\n }\n\n } else {\n var size$1 = elementStyles(element, [ 'width', 'height' ]);\n\n return {\n width: parseInt(size$1.width, 10),\n height: parseInt(size$1.height, 10)\n };\n }\n}","export default function unbindEvents(element, events) {\n if ( events === void 0 ) events = {};\n\n for (var name in events) {\n var eventNames = name.trim().split(\" \");\n for (var idx = 0; idx < eventNames.length; idx++) {\n element.removeEventListener(eventNames[idx], events[name], false);\n }\n }\n}","import { default as elementStyles } from './element-styles';\n\nexport default function elementPadding(element) {\n var ref = elementStyles(element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n return {\n top: parseFloat(paddingTop),\n left: parseFloat(paddingLeft)\n };\n}\n","var Class = function Class () {};\n\nexport default Class;\n","import { Class } from '../common';\nimport defined from '../util/defined';\nimport rad from '../util/rad';\nimport round from '../util/round';\n\nvar Matrix = (function (Class) {\n function Matrix(a, b, c, d, e, f) {\n if ( a === void 0 ) a = 0;\n if ( b === void 0 ) b = 0;\n if ( c === void 0 ) c = 0;\n if ( d === void 0 ) d = 0;\n if ( e === void 0 ) e = 0;\n if ( f === void 0 ) f = 0;\n\n Class.call(this);\n\n this.a = a;\n this.b = b;\n this.c = c;\n this.d = d;\n this.e = e;\n this.f = f;\n }\n\n if ( Class ) Matrix.__proto__ = Class;\n Matrix.prototype = Object.create( Class && Class.prototype );\n Matrix.prototype.constructor = Matrix;\n\n Matrix.prototype.multiplyCopy = function multiplyCopy (matrix) {\n return new Matrix(\n this.a * matrix.a + this.c * matrix.b,\n this.b * matrix.a + this.d * matrix.b,\n this.a * matrix.c + this.c * matrix.d,\n this.b * matrix.c + this.d * matrix.d,\n this.a * matrix.e + this.c * matrix.f + this.e,\n this.b * matrix.e + this.d * matrix.f + this.f\n );\n };\n\n Matrix.prototype.invert = function invert () {\n var ref = this;\n var a = ref.a;\n var b = ref.b;\n var d = ref.c;\n var e = ref.d;\n var g = ref.e;\n var h = ref.f;\n var det = a * e - b * d;\n\n if (det === 0) {\n return null;\n }\n\n return new Matrix(e / det, -b / det, -d / det, a / det,\n (d * h - e * g) / det, (b * g - a * h) / det);\n };\n\n Matrix.prototype.clone = function clone () {\n return new Matrix(this.a, this.b, this.c, this.d, this.e, this.f);\n };\n\n Matrix.prototype.equals = function equals (other) {\n if (!other) {\n return false;\n }\n\n return this.a === other.a && this.b === other.b &&\n this.c === other.c && this.d === other.d &&\n this.e === other.e && this.f === other.f;\n };\n\n Matrix.prototype.round = function round$1 (precision) {\n this.a = round(this.a, precision);\n this.b = round(this.b, precision);\n this.c = round(this.c, precision);\n this.d = round(this.d, precision);\n this.e = round(this.e, precision);\n this.f = round(this.f, precision);\n\n return this;\n };\n\n Matrix.prototype.toArray = function toArray (precision) {\n var result = [ this.a, this.b, this.c, this.d, this.e, this.f ];\n\n if (defined(precision)) {\n for (var i = 0; i < result.length; i++) {\n result[i] = round(result[i], precision);\n }\n }\n\n return result;\n };\n\n Matrix.prototype.toString = function toString (precision, separator) {\n if ( separator === void 0 ) separator = \",\";\n\n return this.toArray(precision).join(separator);\n };\n\n Matrix.translate = function translate (x, y) {\n return new Matrix(1, 0, 0, 1, x, y);\n };\n\n Matrix.unit = function unit () {\n return new Matrix(1, 0, 0, 1, 0, 0);\n };\n\n Matrix.rotate = function rotate (angle, x, y) {\n var matrix = new Matrix();\n matrix.a = Math.cos(rad(angle));\n matrix.b = Math.sin(rad(angle));\n matrix.c = -matrix.b;\n matrix.d = matrix.a;\n matrix.e = (x - x * matrix.a + y * matrix.b) || 0;\n matrix.f = (y - y * matrix.a - x * matrix.b) || 0;\n\n return matrix;\n };\n\n Matrix.scale = function scale (scaleX, scaleY) {\n return new Matrix(scaleX, 0, 0, scaleY, 0, 0);\n };\n\n return Matrix;\n}(Class));\n\nMatrix.IDENTITY = Matrix.unit();\n\nexport default Matrix;\n","import Matrix from '../geometry/matrix';\n\nvar matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n}\n\nfunction transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","import { Class } from '../common';\n\nvar LRUCache = (function (Class) {\n function LRUCache(size) {\n Class.call(this);\n\n this._size = size;\n this._length = 0;\n this._map = {};\n }\n\n if ( Class ) LRUCache.__proto__ = Class;\n LRUCache.prototype = Object.create( Class && Class.prototype );\n LRUCache.prototype.constructor = LRUCache;\n\n LRUCache.prototype.put = function put (key, value) {\n var map = this._map;\n var entry = { key: key, value: value };\n\n map[key] = entry;\n\n if (!this._head) {\n this._head = this._tail = entry;\n } else {\n this._tail.newer = entry;\n entry.older = this._tail;\n this._tail = entry;\n }\n\n if (this._length >= this._size) {\n map[this._head.key] = null;\n this._head = this._head.newer;\n this._head.older = null;\n } else {\n this._length++;\n }\n };\n\n LRUCache.prototype.get = function get (key) {\n var entry = this._map[key];\n\n if (entry) {\n if (entry === this._head && entry !== this._tail) {\n this._head = entry.newer;\n this._head.older = null;\n }\n\n if (entry !== this._tail) {\n if (entry.older) {\n entry.older.newer = entry.newer;\n entry.newer.older = entry.older;\n }\n\n entry.older = this._tail;\n entry.newer = null;\n\n this._tail.newer = entry;\n this._tail = entry;\n }\n\n return entry.value;\n }\n };\n\n return LRUCache;\n}(Class));\n\nexport default LRUCache;","var REPLACE_REGEX = /\\r?\\n|\\r|\\t/g;\nvar SPACE = ' ';\n\nfunction normalizeText(text) {\n return String(text).replace(REPLACE_REGEX, SPACE);\n}\n\nfunction objectKey(object) {\n var parts = [];\n for (var key in object) {\n parts.push(key + object[key]);\n }\n\n return parts.sort().join(\"\");\n}\n\n// Computes FNV-1 hash\n// See http://en.wikipedia.org/wiki/Fowler%E2%80%93Noll%E2%80%93Vo_hash_function\nfunction hashKey(str) {\n // 32-bit FNV-1 offset basis\n // See http://isthe.com/chongo/tech/comp/fnv/#FNV-param\n var hash = 0x811C9DC5;\n\n for (var i = 0; i < str.length; ++i) {\n hash += (hash << 1) + (hash << 4) + (hash << 7) + (hash << 8) + (hash << 24);\n hash ^= str.charCodeAt(i);\n }\n\n return hash >>> 0;\n}\n\nexport { objectKey, hashKey, normalizeText };","import LRUCache from './lru-cache';\nimport { Class } from '../common';\nimport { objectKey, hashKey, normalizeText } from './util';\n\nfunction zeroSize() {\n return { width: 0, height: 0, baseline: 0 };\n}\n\nvar DEFAULT_OPTIONS = {\n baselineMarkerSize: 1\n};\n\nvar defaultMeasureBox;\n\nif (typeof document !== \"undefined\") {\n defaultMeasureBox = document.createElement(\"div\");\n defaultMeasureBox.style.cssText = \"position: absolute !important; top: -4000px !important; width: auto !important; height: auto !important;\" +\n \"padding: 0 !important; margin: 0 !important; border: 0 !important;\" +\n \"line-height: normal !important; visibility: hidden !important; white-space: pre!important;\";\n}\n\nvar TextMetrics = (function (Class) {\n function TextMetrics(options) {\n Class.call(this);\n\n this._cache = new LRUCache(1000);\n this.options = Object.assign({}, DEFAULT_OPTIONS, options);\n }\n\n if ( Class ) TextMetrics.__proto__ = Class;\n TextMetrics.prototype = Object.create( Class && Class.prototype );\n TextMetrics.prototype.constructor = TextMetrics;\n\n TextMetrics.prototype.measure = function measure (text, style, options) {\n if ( options === void 0 ) options = {};\n\n if (typeof text === 'undefined' || text === null) {\n return zeroSize();\n }\n\n var styleKey = objectKey(style);\n var cacheKey = hashKey(text + styleKey);\n var cachedResult = this._cache.get(cacheKey);\n\n if (cachedResult) {\n return cachedResult;\n }\n\n var size = zeroSize();\n var measureBox = options.box || defaultMeasureBox;\n var baselineMarker = this._baselineMarker().cloneNode(false);\n\n for (var key in style) {\n var value = style[key];\n if (typeof value !== \"undefined\") {\n measureBox.style[key] = value;\n }\n }\n\n var textStr = options.normalizeText !== false ? normalizeText(text) : String(text);\n\n measureBox.textContent = textStr;\n measureBox.appendChild(baselineMarker);\n document.body.appendChild(measureBox);\n\n if (textStr.length) {\n size.width = measureBox.offsetWidth - this.options.baselineMarkerSize;\n size.height = measureBox.offsetHeight;\n size.baseline = baselineMarker.offsetTop + this.options.baselineMarkerSize;\n }\n\n if (size.width > 0 && size.height > 0) {\n this._cache.put(cacheKey, size);\n }\n\n measureBox.parentNode.removeChild(measureBox);\n\n return size;\n };\n\n TextMetrics.prototype._baselineMarker = function _baselineMarker () {\n var marker = document.createElement(\"div\");\n marker.style.cssText = \"display: inline-block; vertical-align: baseline;width: \" +\n this.options.baselineMarkerSize + \"px; height: \" + this.options.baselineMarkerSize + \"px;overflow: hidden;\";\n\n return marker;\n };\n\n return TextMetrics;\n}(Class));\n\nTextMetrics.current = new TextMetrics();\n\nexport default TextMetrics;\n","import TextMetrics from './text-metrics';\n\nexport default function measureText(text, style, measureBox) {\n return TextMetrics.current.measure(text, style, measureBox);\n}\n","/* eslint-disable no-console */\n\nexport default function logToConsole(message) {\n var console = window.console;\n\n if (typeof(console) != \"undefined\" && console.log) {\n console.log(message);\n }\n}","import {\n drawing,\n Class,\n logToConsole\n} from '@progress/kendo-drawing';\n\nvar ref = drawing.util;\nvar append = ref.append;\nvar bindEvents = ref.bindEvents;\nvar defined = ref.defined;\nvar deg = ref.deg;\nvar elementOffset = ref.elementOffset;\nvar elementSize = ref.elementSize;\nvar eventCoordinates = ref.eventCoordinates;\nvar eventElement = ref.eventElement;\nvar hashKey = ref.hashKey;\nvar last = ref.last;\nvar limitValue = ref.limitValue;\nvar objectKey = ref.objectKey;\nvar rad = ref.rad;\nvar round = ref.round;\nvar unbindEvents = ref.unbindEvents;\nvar valueOrDefault = ref.valueOrDefault;\n\nexport {\n append,\n bindEvents,\n Class,\n defined,\n deg,\n elementOffset,\n elementSize,\n eventCoordinates,\n eventElement,\n hashKey,\n last,\n limitValue,\n logToConsole,\n objectKey,\n rad,\n round,\n unbindEvents,\n valueOrDefault\n};\n","import { logToConsole } from '../drawing-utils';\n\nvar FontLoader = function FontLoader () {};\n\nFontLoader.fetchFonts = function fetchFonts (options, fonts, state) {\n if ( state === void 0 ) state = { depth: 0 };\n\n var MAX_DEPTH = 5;\n\n if (!options || state.depth > MAX_DEPTH || !document.fonts) {\n return;\n }\n\n Object.keys(options).forEach(function(key) {\n var value = options[key];\n if (key === \"dataSource\" || key[0] === \"$\" || !value) {\n return;\n }\n\n if (key === \"font\") {\n fonts.push(value);\n } else if (typeof value === \"object\") {\n state.depth++;\n FontLoader.fetchFonts(value, fonts, state);\n state.depth--;\n }\n });\n};\n\nFontLoader.loadFonts = function loadFonts (fonts, callback) {\n var promises = [];\n\n if (fonts.length > 0 && document.fonts) {\n try {\n promises = fonts.map(function(font) {\n return document.fonts.load(font);\n });\n } catch (e) {\n // Silence font-loading errors\n logToConsole(e);\n }\n\n Promise.all(promises).then(callback, callback);\n } else {\n callback();\n }\n};\n\nFontLoader.preloadFonts = function preloadFonts (options, callback) {\n var fonts = [];\n FontLoader.fetchFonts(options, fonts);\n\n FontLoader.loadFonts(fonts, callback);\n};\n\nexport default FontLoader;","import deepExtend from './deep-extend';\n\nexport default function setDefaultOptions(type, options) {\n var proto = type.prototype;\n if (proto.options) {\n proto.options = deepExtend({}, proto.options, options);\n } else {\n proto.options = options;\n }\n}","import { MIN_VALUE, MAX_VALUE } from './constants';\n\nexport default function sparseArrayLimits(arr) {\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var idx = 0, length = arr.length; idx < length; idx++) {\n var value = arr[idx];\n if (value !== null && isFinite(value)) {\n min = Math.min(min, value);\n max = Math.max(max, value);\n }\n }\n\n return {\n min: min === MAX_VALUE ? undefined : min,\n max: max === MIN_VALUE ? undefined : max\n };\n}","export default function find(array, predicate) {\n for (var i = 0; i < array.length; i++) {\n var item = array[i];\n if (predicate(item, i, array)) {\n return item;\n }\n }\n}\n","import { geometry } from '@progress/kendo-drawing';\n\nvar Matrix = geometry.Matrix;\nvar matrixRegexp = /matrix\\((.*)\\)/;\n\nfunction parseMatrix(matrixString) {\n var match = matrixString.match(matrixRegexp);\n if (match === null || match.length !== 2) {\n return Matrix.unit();\n }\n\n var members = match[1].split(',').map(function (x) { return parseFloat(x); });\n return new (Function.prototype.bind.apply( Matrix, [ null ].concat( members) ));\n}\n\nfunction transformMatrix(element) {\n var transform = getComputedStyle(element).transform;\n\n if (transform === 'none') {\n return Matrix.unit();\n }\n\n return parseMatrix(transform);\n}\n\nexport default function elementScale(element) {\n if (!element) {\n return Matrix.unit();\n }\n\n var matrix = transformMatrix(element);\n var parent = element.parentElement;\n while (parent) {\n var parentMatrix = transformMatrix(parent);\n matrix = matrix.multiplyCopy(parentMatrix);\n parent = parent.parentElement;\n }\n\n matrix.b = matrix.c = matrix.e = matrix.f = 0;\n return matrix;\n}\n","var namedColors = {\n aliceblue: \"f0f8ff\", antiquewhite: \"faebd7\", aqua: \"00ffff\",\n aquamarine: \"7fffd4\", azure: \"f0ffff\", beige: \"f5f5dc\",\n bisque: \"ffe4c4\", black: \"000000\", blanchedalmond: \"ffebcd\",\n blue: \"0000ff\", blueviolet: \"8a2be2\", brown: \"a52a2a\",\n burlywood: \"deb887\", cadetblue: \"5f9ea0\", chartreuse: \"7fff00\",\n chocolate: \"d2691e\", coral: \"ff7f50\", cornflowerblue: \"6495ed\",\n cornsilk: \"fff8dc\", crimson: \"dc143c\", cyan: \"00ffff\",\n darkblue: \"00008b\", darkcyan: \"008b8b\", darkgoldenrod: \"b8860b\",\n darkgray: \"a9a9a9\", darkgrey: \"a9a9a9\", darkgreen: \"006400\",\n darkkhaki: \"bdb76b\", darkmagenta: \"8b008b\", darkolivegreen: \"556b2f\",\n darkorange: \"ff8c00\", darkorchid: \"9932cc\", darkred: \"8b0000\",\n darksalmon: \"e9967a\", darkseagreen: \"8fbc8f\", darkslateblue: \"483d8b\",\n darkslategray: \"2f4f4f\", darkslategrey: \"2f4f4f\", darkturquoise: \"00ced1\",\n darkviolet: \"9400d3\", deeppink: \"ff1493\", deepskyblue: \"00bfff\",\n dimgray: \"696969\", dimgrey: \"696969\", dodgerblue: \"1e90ff\",\n firebrick: \"b22222\", floralwhite: \"fffaf0\", forestgreen: \"228b22\",\n fuchsia: \"ff00ff\", gainsboro: \"dcdcdc\", ghostwhite: \"f8f8ff\",\n gold: \"ffd700\", goldenrod: \"daa520\", gray: \"808080\",\n grey: \"808080\", green: \"008000\", greenyellow: \"adff2f\",\n honeydew: \"f0fff0\", hotpink: \"ff69b4\", indianred: \"cd5c5c\",\n indigo: \"4b0082\", ivory: \"fffff0\", khaki: \"f0e68c\",\n lavender: \"e6e6fa\", lavenderblush: \"fff0f5\", lawngreen: \"7cfc00\",\n lemonchiffon: \"fffacd\", lightblue: \"add8e6\", lightcoral: \"f08080\",\n lightcyan: \"e0ffff\", lightgoldenrodyellow: \"fafad2\", lightgray: \"d3d3d3\",\n lightgrey: \"d3d3d3\", lightgreen: \"90ee90\", lightpink: \"ffb6c1\",\n lightsalmon: \"ffa07a\", lightseagreen: \"20b2aa\", lightskyblue: \"87cefa\",\n lightslategray: \"778899\", lightslategrey: \"778899\", lightsteelblue: \"b0c4de\",\n lightyellow: \"ffffe0\", lime: \"00ff00\", limegreen: \"32cd32\",\n linen: \"faf0e6\", magenta: \"ff00ff\", maroon: \"800000\",\n mediumaquamarine: \"66cdaa\", mediumblue: \"0000cd\", mediumorchid: \"ba55d3\",\n mediumpurple: \"9370d8\", mediumseagreen: \"3cb371\", mediumslateblue: \"7b68ee\",\n mediumspringgreen: \"00fa9a\", mediumturquoise: \"48d1cc\", mediumvioletred: \"c71585\",\n midnightblue: \"191970\", mintcream: \"f5fffa\", mistyrose: \"ffe4e1\",\n moccasin: \"ffe4b5\", navajowhite: \"ffdead\", navy: \"000080\",\n oldlace: \"fdf5e6\", olive: \"808000\", olivedrab: \"6b8e23\",\n orange: \"ffa500\", orangered: \"ff4500\", orchid: \"da70d6\",\n palegoldenrod: \"eee8aa\", palegreen: \"98fb98\", paleturquoise: \"afeeee\",\n palevioletred: \"d87093\", papayawhip: \"ffefd5\", peachpuff: \"ffdab9\",\n peru: \"cd853f\", pink: \"ffc0cb\", plum: \"dda0dd\",\n powderblue: \"b0e0e6\", purple: \"800080\", red: \"ff0000\",\n rosybrown: \"bc8f8f\", royalblue: \"4169e1\", saddlebrown: \"8b4513\",\n salmon: \"fa8072\", sandybrown: \"f4a460\", seagreen: \"2e8b57\",\n seashell: \"fff5ee\", sienna: \"a0522d\", silver: \"c0c0c0\",\n skyblue: \"87ceeb\", slateblue: \"6a5acd\", slategray: \"708090\",\n slategrey: \"708090\", snow: \"fffafa\", springgreen: \"00ff7f\",\n steelblue: \"4682b4\", tan: \"d2b48c\", teal: \"008080\",\n thistle: \"d8bfd8\", tomato: \"ff6347\", turquoise: \"40e0d0\",\n violet: \"ee82ee\", wheat: \"f5deb3\", white: \"ffffff\",\n whitesmoke: \"f5f5f5\", yellow: \"ffff00\", yellowgreen: \"9acd32\"\n};\n\nexport default namedColors;","import Class from '../class';\nimport support from '../support';\nimport namedColors from './named-colors';\n\nvar browser = support.browser;\n\nvar matchNamedColor = function (color) {\n var colorNames = Object.keys(namedColors);\n colorNames.push(\"transparent\");\n\n var regexp = new RegExp(\"^(\" + colorNames.join(\"|\") + \")(\\\\W|$)\", \"i\");\n matchNamedColor = function (color) { return regexp.exec(color); };\n\n return regexp.exec(color);\n};\n\nvar BaseColor = (function (Class) {\n function BaseColor() { Class.call(this); }\n\n if ( Class ) BaseColor.__proto__ = Class;\n BaseColor.prototype = Object.create( Class && Class.prototype );\n BaseColor.prototype.constructor = BaseColor;\n BaseColor.prototype.toHSV = function toHSV () { return this; };\n\n BaseColor.prototype.toRGB = function toRGB () { return this; };\n\n BaseColor.prototype.toHex = function toHex (options) { return this.toBytes().toHex(options); };\n\n BaseColor.prototype.toBytes = function toBytes () { return this; };\n\n BaseColor.prototype.toCss = function toCss (options) { return \"#\" + this.toHex(options); };\n\n BaseColor.prototype.toCssRgba = function toCssRgba () {\n var rgb = this.toBytes();\n return (\"rgba(\" + (rgb.r) + \", \" + (rgb.g) + \", \" + (rgb.b) + \", \" + (parseFloat((Number(this.a)).toFixed(3))) + \")\");\n };\n\n BaseColor.prototype.toDisplay = function toDisplay () {\n if (browser.msie && browser.version < 9) {\n return this.toCss(); // no RGBA support; does it support any opacity in colors?\n }\n return this.toCssRgba();\n };\n\n BaseColor.prototype.equals = function equals (c) {\n return c === this || ((c !== null && c !== undefined) && this.toCssRgba() === parseColor(c).toCssRgba());\n };\n\n BaseColor.prototype.diff = function diff (other) {\n if (other === null) {\n return NaN;\n }\n\n var c1 = this.toBytes();\n var c2 = other.toBytes();\n\n return Math.sqrt(Math.pow((c1.r - c2.r) * 0.30, 2) +\n Math.pow((c1.g - c2.g) * 0.59, 2) +\n Math.pow((c1.b - c2.b) * 0.11, 2));\n };\n\n BaseColor.prototype.clone = function clone () {\n var c = this.toBytes();\n if (c === this) {\n c = new Bytes(c.r, c.g, c.b, c.a);\n }\n\n return c;\n };\n\n return BaseColor;\n}(Class));\n\nvar RGB = (function (BaseColor) {\n function RGB(r, g, b, a) {\n BaseColor.call(this);\n\n this.r = r;\n this.g = g;\n this.b = b;\n this.a = a;\n }\n\n if ( BaseColor ) RGB.__proto__ = BaseColor;\n RGB.prototype = Object.create( BaseColor && BaseColor.prototype );\n RGB.prototype.constructor = RGB;\n\n RGB.prototype.toHSV = function toHSV () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var min = Math.min(r, g, b);\n var max = Math.max(r, g, b);\n var delta = max - min;\n var v = max;\n var h, s;\n\n if (delta === 0) {\n return new HSV(0, 0, v, this.a);\n }\n\n if (max !== 0) {\n s = delta / max;\n if (r === max) {\n h = (g - b) / delta;\n } else if (g === max) {\n h = 2 + (b - r) / delta;\n } else {\n h = 4 + (r - g) / delta;\n }\n\n h *= 60;\n if (h < 0) {\n h += 360;\n }\n } else {\n s = 0;\n h = -1;\n }\n\n return new HSV(h, s, v, this.a);\n };\n\n RGB.prototype.toHSL = function toHSL () {\n var ref = this;\n var r = ref.r;\n var g = ref.g;\n var b = ref.b;\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h, s, l = (max + min) / 2;\n\n if (max === min) {\n h = s = 0;\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n switch (max) {\n case r: h = (g - b) / d + (g < b ? 6 : 0); break;\n case g: h = (b - r) / d + 2; break;\n case b: h = (r - g) / d + 4; break;\n default: break;\n }\n }\n\n return new HSL(h * 60, s * 100, l * 100, this.a);\n };\n\n RGB.prototype.toBytes = function toBytes () {\n return new Bytes(this.r * 255, this.g * 255, this.b * 255, this.a);\n };\n\n return RGB;\n}(BaseColor));\n\nvar Bytes = (function (RGB) {\n function Bytes(r, g, b, a) {\n RGB.call(this, Math.round(r), Math.round(g), Math.round(b), a);\n }\n\n if ( RGB ) Bytes.__proto__ = RGB;\n Bytes.prototype = Object.create( RGB && RGB.prototype );\n Bytes.prototype.constructor = Bytes;\n\n Bytes.prototype.toRGB = function toRGB () {\n return new RGB(this.r / 255, this.g / 255, this.b / 255, this.a);\n };\n\n Bytes.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n Bytes.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n Bytes.prototype.toHex = function toHex (options) {\n var value = hex(this.r, 2) + hex(this.g, 2) + hex(this.b, 2);\n\n if (options && options.alpha) {\n value += hex(Math.round(this.a * 255), 2);\n }\n\n return value;\n };\n\n Bytes.prototype.toBytes = function toBytes () {\n return this;\n };\n\n return Bytes;\n}(RGB));\n\nfunction hex(n, width, pad) {\n if ( pad === void 0 ) pad = \"0\";\n\n var result = n.toString(16);\n while (width > result.length) {\n result = pad + result;\n }\n\n return result;\n}\n\nvar HSV = (function (BaseColor) {\n function HSV(h, s, v, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.v = v;\n this.a = a;\n }\n\n if ( BaseColor ) HSV.__proto__ = BaseColor;\n HSV.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSV.prototype.constructor = HSV;\n\n HSV.prototype.toRGB = function toRGB () {\n var ref = this;\n var h = ref.h;\n var s = ref.s;\n var v = ref.v;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = v;\n } else {\n h /= 60;\n\n var i = Math.floor(h);\n var f = h - i;\n var p = v * (1 - s);\n var q = v * (1 - s * f);\n var t = v * (1 - s * (1 - f));\n\n switch (i) {\n case 0: r = v; g = t; b = p; break;\n case 1: r = q; g = v; b = p; break;\n case 2: r = p; g = v; b = t; break;\n case 3: r = p; g = q; b = v; break;\n case 4: r = t; g = p; b = v; break;\n default: r = v; g = p; b = q; break;\n }\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSV.prototype.toHSL = function toHSL () {\n return this.toRGB().toHSL();\n };\n\n HSV.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSV;\n}(BaseColor));\n\nvar HSL = (function (BaseColor) {\n function HSL(h, s, l, a) {\n BaseColor.call(this);\n\n this.h = h;\n this.s = s;\n this.l = l;\n this.a = a;\n }\n\n if ( BaseColor ) HSL.__proto__ = BaseColor;\n HSL.prototype = Object.create( BaseColor && BaseColor.prototype );\n HSL.prototype.constructor = HSL;\n\n HSL.prototype.toRGB = function toRGB () {\n var h = this.h / 360;\n var s = this.s / 100;\n var l = this.l / 100;\n var r, g, b;\n\n if (s === 0) {\n r = g = b = l; // achromatic\n } else {\n var q = l < 0.5 ? l * (1 + s) : l + s - l * s;\n var p = 2 * l - q;\n r = hue2rgb(p, q, h + 1 / 3);\n g = hue2rgb(p, q, h);\n b = hue2rgb(p, q, h - 1 / 3);\n }\n\n return new RGB(r, g, b, this.a);\n };\n\n HSL.prototype.toHSV = function toHSV () {\n return this.toRGB().toHSV();\n };\n\n HSL.prototype.toBytes = function toBytes () {\n return this.toRGB().toBytes();\n };\n\n return HSL;\n}(BaseColor));\n\nfunction hue2rgb(p, q, s) {\n var t = s;\n\n if (t < 0) {\n t += 1;\n }\n\n if (t > 1) {\n t -= 1;\n }\n\n if (t < 1 / 6) {\n return p + (q - p) * 6 * t;\n }\n\n if (t < 1 / 2) {\n return q;\n }\n\n if (t < 2 / 3) {\n return p + (q - p) * (2 / 3 - t) * 6;\n }\n\n return p;\n}\n\nfunction alphaFromHex(a) {\n return parseFloat(parseFloat(parseInt(a, 16) / 255 ).toFixed(3));\n}\n\nexport { RGB, Bytes, HSV, HSL };\n\nexport default function parseColor(value, safe) {\n var m, ret;\n\n if (value == null || value === \"none\") {\n return null;\n }\n\n if (value instanceof BaseColor) {\n return value;\n }\n\n var color = value.toLowerCase();\n if ((m = matchNamedColor(color))) {\n if (m[1] === \"transparent\") {\n color = new RGB(1, 1, 1, 0);\n } else {\n color = parseColor(namedColors[m[1]], safe);\n }\n color.match = [ m[1] ];\n return color;\n }\n if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) {\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16), 1);\n } else if ((m = /^#?([0-9a-f])([0-9a-f])([0-9a-f])([0-9a-f])\\b/i.exec(color))) { // Parse 4 digit hex color\n ret = new Bytes(parseInt(m[1] + m[1], 16),\n parseInt(m[2] + m[2], 16),\n parseInt(m[3] + m[3], 16),\n alphaFromHex(m[4] + m[4]));\n } else if ((m = /^#?([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})([0-9a-f]{2})\\b/i.exec(color))) { // Parse 8 digit hex color\n ret = new Bytes(parseInt(m[1], 16),\n parseInt(m[2], 16),\n parseInt(m[3], 16),\n alphaFromHex(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), 1);\n } else if ((m = /^rgba\\(\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9]+)\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new Bytes(parseInt(m[1], 10),\n parseInt(m[2], 10),\n parseInt(m[3], 10), parseFloat(m[4]));\n } else if ((m = /^rgb\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, 1);\n } else if ((m = /^rgba\\(\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9]*\\.?[0-9]+)%\\s*,\\s*([0-9.]+)\\s*\\)/.exec(color))) {\n ret = new RGB(parseFloat(m[1]) / 100,\n parseFloat(m[2]) / 100,\n parseFloat(m[3]) / 100, parseFloat(m[4]));\n }\n\n if (ret) {\n ret.match = m;\n } else if (!safe) {\n throw new Error(\"Cannot parse color: \" + color);\n }\n\n return ret;\n}\n","import Class from '../class';\nimport namedColors from './named-colors';\nimport { Bytes, RGB, HSV, HSL } from './parse-color';\n\nvar DARK_TRESHOLD = 180;\n\nvar Color = (function (Class) {\n function Color(value) {\n var this$1 = this;\n\n Class.call(this);\n\n if (arguments.length === 1) {\n var formats = Color.formats;\n var resolvedColor = this.resolveColor(value);\n\n for (var idx = 0; idx < formats.length; idx++) {\n var formatRegex = formats[idx].re;\n var processor = formats[idx].process;\n var parts = formatRegex.exec(resolvedColor);\n\n if (parts) {\n var channels = processor(parts);\n this$1.r = channels[0];\n this$1.g = channels[1];\n this$1.b = channels[2];\n }\n }\n } else {\n this.r = arguments[0];\n this.g = arguments[1];\n this.b = arguments[2];\n }\n\n this.r = this.normalizeByte(this.r);\n this.g = this.normalizeByte(this.g);\n this.b = this.normalizeByte(this.b);\n }\n\n if ( Class ) Color.__proto__ = Class;\n Color.prototype = Object.create( Class && Class.prototype );\n Color.prototype.constructor = Color;\n\n Color.prototype.toHex = function toHex () {\n var pad = this.padDigit;\n var r = this.r.toString(16);\n var g = this.g.toString(16);\n var b = this.b.toString(16);\n\n return \"#\" + pad(r) + pad(g) + pad(b);\n };\n\n Color.prototype.resolveColor = function resolveColor (value) {\n var color = value || \"black\";\n\n if (color.charAt(0) === \"#\") {\n color = color.substr(1, 6);\n }\n\n color = color.replace(/ /g, \"\");\n color = color.toLowerCase();\n color = Color.namedColors[color] || color;\n\n return color;\n };\n\n Color.prototype.normalizeByte = function normalizeByte (value) {\n if (value < 0 || isNaN(value)) {\n return 0;\n }\n\n return value > 255 ? 255 : value;\n };\n\n Color.prototype.padDigit = function padDigit (value) {\n return (value.length === 1) ? \"0\" + value : value;\n };\n\n Color.prototype.brightness = function brightness (value) {\n var round = Math.round;\n\n this.r = round(this.normalizeByte(this.r * value));\n this.g = round(this.normalizeByte(this.g * value));\n this.b = round(this.normalizeByte(this.b * value));\n\n return this;\n };\n\n Color.prototype.percBrightness = function percBrightness () {\n return Math.sqrt(0.241 * this.r * this.r + 0.691 * this.g * this.g + 0.068 * this.b * this.b);\n };\n\n Color.prototype.isDark = function isDark () {\n return this.percBrightness() < DARK_TRESHOLD;\n };\n\n Color.fromBytes = function fromBytes (r, g, b, a) {\n return new Bytes(r, g, b, a != null ? a : 1);\n };\n\n Color.fromRGB = function fromRGB (r, g, b, a) {\n return new RGB(r, g, b, a != null ? a : 1);\n };\n\n Color.fromHSV = function fromHSV (h, s, v, a) {\n return new HSV(h, s, v, a != null ? a : 1);\n };\n\n Color.fromHSL = function fromHSL (h, s, l, a) {\n return new HSL(h, s, l, a != null ? a : 1);\n };\n\n return Color;\n}(Class));\n\nColor.formats = [ {\n re: /^rgb\\((\\d{1,3}),\\s*(\\d{1,3}),\\s*(\\d{1,3})\\)$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 10), parseInt(parts[2], 10), parseInt(parts[3], 10)\n ];\n }\n}, {\n re: /^(\\w{2})(\\w{2})(\\w{2})$/,\n process: function(parts) {\n return [\n parseInt(parts[1], 16), parseInt(parts[2], 16), parseInt(parts[3], 16)\n ];\n }\n}, {\n re: /^(\\w{1})(\\w{1})(\\w{1})$/,\n process: function(parts) {\n return [\n parseInt(parts[1] + parts[1], 16),\n parseInt(parts[2] + parts[2], 16),\n parseInt(parts[3] + parts[3], 16)\n ];\n }\n} ];\n\nColor.namedColors = namedColors;\n\nexport default Color;","import { Color } from '@progress/kendo-drawing';\nimport { WHITE, BLACK } from './constants';\n\nfunction autoTextColor(color) {\n var isDark = new Color(color).isDark();\n if (isDark) {\n return WHITE;\n }\n\n return BLACK;\n}\n\nexport default autoTextColor;\n","var DELETED = {};\n\nvar LegacySet = function LegacySet(values) {\n var this$1 = this;\n\n this._index = {};\n this._values = values ? values.slice(0) : [];\n\n for (var i = 0; i < this._values.length; i++) {\n this$1._index[this$1._values[i]] = i;\n }\n};\n\nvar prototypeAccessors = { size: { configurable: true } };\n\nLegacySet.prototype.values = function values () {\n return this._values.filter(function (item) { return item !== DELETED; });\n};\n\nLegacySet.prototype.has = function has (value) {\n return this._index[value] !== undefined;\n};\n\nLegacySet.prototype.add = function add (value) {\n if (!this.has(value)) {\n this._index[value] = this._values.length;\n this._values.push(value);\n }\n};\n\nLegacySet.prototype.delete = function delete$1 (value) {\n var index = this._index[value];\n if (index !== undefined) {\n this._values[index] = DELETED;\n delete this._index[value];\n }\n};\n\nLegacySet.prototype.clear = function clear () {\n this._index = {};\n this._values = [];\n};\n\nprototypeAccessors.size.get = function () {\n return this._values.length;\n};\n\nObject.defineProperties( LegacySet.prototype, prototypeAccessors );\n\nvar SetWrapper = function SetWrapper(values) {\n this._set = new Set(values);\n};\n\nvar prototypeAccessors$1 = { size: { configurable: true } };\n\nSetWrapper.prototype.values = function values () {\n return Array.from(this._set);\n};\n\nSetWrapper.prototype.has = function has (value) {\n return this._set.has(value);\n};\n\nSetWrapper.prototype.add = function add (value) {\n this._set.add(value);\n};\n\nSetWrapper.prototype.delete = function delete$2 (value) {\n this._set.delete(value);\n};\n\nSetWrapper.prototype.clear = function clear () {\n this._set.clear();\n};\n\nprototypeAccessors$1.size.get = function () {\n return this._set.size;\n};\n\nObject.defineProperties( SetWrapper.prototype, prototypeAccessors$1 );\n\n// TODO: Drop LegacySet when removing support for IE10\nvar supportsSet = function () {\n var supported = false;\n\n if (typeof Set === 'function') {\n var set = new Set([1]);\n supported = set.has(1);\n }\n\n return supported;\n};\n\nexport default function createHashSet(values) {\n if (supportsSet()) {\n return new SetWrapper(values);\n }\n\n return new LegacySet(values);\n}\n","export default function defaultErrorHandler(error) {\n throw error;\n}\n","var 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\nexport default keys;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function autoMajorUnit(min, max) {\n var diff = round(max - min, DEFAULT_PRECISION - 1);\n\n if (diff === 0) {\n if (max === 0) {\n return 0.1;\n }\n\n diff = Math.abs(max);\n }\n\n var scale = Math.pow(10, Math.floor(Math.log(diff) / Math.log(10)));\n var relativeValue = round((diff / scale), DEFAULT_PRECISION);\n var scaleMultiplier = 1;\n\n if (relativeValue < 1.904762) {\n scaleMultiplier = 0.2;\n } else if (relativeValue < 4.761904) {\n scaleMultiplier = 0.5;\n } else if (relativeValue < 9.523809) {\n scaleMultiplier = 1;\n } else {\n scaleMultiplier = 2;\n }\n\n return round(scale * scaleMultiplier, DEFAULT_PRECISION);\n}","import { COORD_PRECISION } from '../common/constants';\nimport { Class, rad, round } from '../common';\n\nvar Point = (function (Class) {\n function Point(x, y) {\n Class.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n if ( Class ) Point.__proto__ = Class;\n Point.prototype = Object.create( Class && Class.prototype );\n Point.prototype.constructor = Point;\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.equals = function equals (point) {\n return point && this.x === point.x && this.y === point.y;\n };\n\n Point.prototype.rotate = function rotate (center, degrees) {\n var theta = rad(degrees);\n var cosT = Math.cos(theta);\n var sinT = Math.sin(theta);\n var cx = center.x;\n var cy = center.y;\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = round(\n cx + (x - cx) * cosT + (y - cy) * sinT,\n COORD_PRECISION\n );\n\n this.y = round(\n cy + (y - cy) * cosT - (x - cx) * sinT,\n COORD_PRECISION\n );\n\n return this;\n };\n\n Point.prototype.multiply = function multiply (a) {\n\n this.x *= a;\n this.y *= a;\n\n return this;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.onCircle = function onCircle (center, angle, radius) {\n var radians = rad(angle);\n\n return new Point(\n center.x - radius * Math.cos(radians),\n center.y - radius * Math.sin(radians)\n );\n };\n\n return Point;\n}(Class));\n\n\nexport default Point;","import { Class } from '../common';\n\nvar HasObservers = (function (Class) {\n function HasObservers () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) HasObservers.__proto__ = Class;\n HasObservers.prototype = Object.create( Class && Class.prototype );\n HasObservers.prototype.constructor = HasObservers;\n\n HasObservers.prototype.observers = function observers () {\n this._observers = this._observers || [];\n return this._observers;\n };\n\n HasObservers.prototype.addObserver = function addObserver (element) {\n if (!this._observers) {\n this._observers = [ element ];\n } else {\n this._observers.push(element);\n }\n return this;\n };\n\n HasObservers.prototype.removeObserver = function removeObserver (element) {\n var observers = this.observers();\n var index = observers.indexOf(element);\n if (index !== -1) {\n observers.splice(index, 1);\n }\n return this;\n };\n\n HasObservers.prototype.trigger = function trigger (methodName, event) {\n var observers = this._observers;\n\n if (observers && !this._suspended) {\n for (var idx = 0; idx < observers.length; idx++) {\n var observer = observers[idx];\n if (observer[methodName]) {\n observer[methodName](event);\n }\n }\n }\n return this;\n };\n\n HasObservers.prototype.optionsChange = function optionsChange (e) {\n if ( e === void 0 ) e = {};\n\n e.element = this;\n this.trigger(\"optionsChange\", e);\n };\n\n HasObservers.prototype.geometryChange = function geometryChange () {\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n HasObservers.prototype.suspend = function suspend () {\n this._suspended = (this._suspended || 0) + 1;\n return this;\n };\n\n HasObservers.prototype.resume = function resume () {\n this._suspended = Math.max((this._suspended || 0) - 1, 0);\n return this;\n };\n\n HasObservers.prototype._observerField = function _observerField (field, value) {\n if (this[field]) {\n this[field].removeObserver(this);\n }\n this[field] = value;\n value.addObserver(this);\n };\n\n return HasObservers;\n}(Class));\n\nexport default HasObservers;\n\n","function setAccessor(field) {\n return function(value) {\n if (this[field] !== value) {\n this[field] = value;\n this.geometryChange();\n }\n\n return this;\n };\n}\n\nfunction getAccessor(field) {\n return function() {\n return this[field];\n };\n}\n\nfunction defineAccessors(fn, fields) {\n for (var i = 0; i < fields.length; i++) {\n var name = fields[i];\n var capitalized = name.charAt(0).toUpperCase() +\n name.substring(1, name.length);\n\n fn[\"set\" + capitalized] = setAccessor(name);\n fn[\"get\" + capitalized] = getAccessor(name);\n }\n}\n\nvar withAccessors = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withAccessors;\n","export default function toMatrix(transformation) {\n if (transformation && typeof transformation.matrix === \"function\") {\n return transformation.matrix();\n }\n\n return transformation;\n}","import withAccessors from '../mixins/with-accessors';\nimport HasObservers from '../core/has-observers';\nimport { defined, MIN_NUM, MAX_NUM, round } from '../util';\nimport Matrix from './matrix';\nimport toMatrix from './to-matrix';\n\n\nvar Point = (function (superclass) {\n function Point(x, y) {\n superclass.call(this);\n\n this.x = x || 0;\n this.y = y || 0;\n }\n\n if ( superclass ) Point.__proto__ = superclass;\n Point.prototype = Object.create( superclass && superclass.prototype );\n Point.prototype.constructor = Point;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Point.prototype.equals = function equals (other) {\n return other && other.x === this.x && other.y === this.y;\n };\n\n Point.prototype.clone = function clone () {\n return new Point(this.x, this.y);\n };\n\n Point.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n return this.transform(Matrix.rotate(angle, originPoint.x, originPoint.y));\n };\n\n Point.prototype.translate = function translate (x, y) {\n this.x += x;\n this.y += y;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.translateWith = function translateWith (point) {\n return this.translate(point.x, point.y);\n };\n\n Point.prototype.move = function move (x, y) {\n this.x = this.y = 0;\n return this.translate(x, y);\n };\n\n Point.prototype.scale = function scale (scaleX, scaleY) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n\n this.x *= scaleX;\n this.y *= scaleY;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.scaleCopy = function scaleCopy (scaleX, scaleY) {\n return this.clone().scale(scaleX, scaleY);\n };\n\n Point.prototype.transform = function transform (transformation) {\n var matrix = toMatrix(transformation);\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n this.x = matrix.a * x + matrix.c * y + matrix.e;\n this.y = matrix.b * x + matrix.d * y + matrix.f;\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.transformCopy = function transformCopy (transformation) {\n var point = this.clone();\n\n if (transformation) {\n point.transform(transformation);\n }\n\n return point;\n };\n\n Point.prototype.distanceTo = function distanceTo (point) {\n var dx = this.x - point.x;\n var dy = this.y - point.y;\n\n return Math.sqrt(dx * dx + dy * dy);\n };\n\n Point.prototype.round = function round$1 (digits) {\n this.x = round(this.x, digits);\n this.y = round(this.y, digits);\n\n this.geometryChange();\n\n return this;\n };\n\n Point.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var x = doRound ? round(this.x, digits) : this.x;\n var y = doRound ? round(this.y, digits) : this.y;\n\n return [ x, y ];\n };\n\n Point.prototype.toString = function toString (digits, separator) {\n if ( separator === void 0 ) separator = \" \";\n\n var ref = this;\n var x = ref.x;\n var y = ref.y;\n\n if (defined(digits)) {\n x = round(x, digits);\n y = round(y, digits);\n }\n\n return x + separator + y;\n };\n\n Point.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Point) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Point(arg0[0], arg0[1]);\n }\n\n return new Point(arg0, arg1);\n }\n };\n\n Point.min = function min () {\n var arguments$1 = arguments;\n\n var minX = MAX_NUM;\n var minY = MAX_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n minX = Math.min(point.x, minX);\n minY = Math.min(point.y, minY);\n }\n\n return new Point(minX, minY);\n };\n\n Point.max = function max () {\n var arguments$1 = arguments;\n\n var maxX = MIN_NUM;\n var maxY = MIN_NUM;\n\n for (var i = 0; i < arguments.length; i++) {\n var point = arguments$1[i];\n maxX = Math.max(point.x, maxX);\n maxY = Math.max(point.y, maxY);\n }\n\n return new Point(maxX, maxY);\n };\n\n Point.minPoint = function minPoint () {\n return new Point(MIN_NUM, MIN_NUM);\n };\n\n Point.maxPoint = function maxPoint () {\n return new Point(MAX_NUM, MAX_NUM);\n };\n\n staticAccessors.ZERO.get = function () {\n return new Point(0, 0);\n };\n\n Object.defineProperties( Point, staticAccessors );\n\n return Point;\n}(withAccessors(HasObservers, [ \"x\", \"y\" ])));\n\nexport default Point;\n","import HasObservers from '../core/has-observers';\nimport withAccessors from '../mixins/with-accessors';\nimport { defined, round } from '../util';\n\n\nvar Size = (function (superclass) {\n function Size(width, height) {\n superclass.call(this);\n\n this.width = width || 0;\n this.height = height || 0;\n }\n\n if ( superclass ) Size.__proto__ = superclass;\n Size.prototype = Object.create( superclass && superclass.prototype );\n Size.prototype.constructor = Size;\n\n var staticAccessors = { ZERO: { configurable: true } };\n\n Size.prototype.equals = function equals (other) {\n return other && other.width === this.width && other.height === this.height;\n };\n\n Size.prototype.clone = function clone () {\n return new Size(this.width, this.height);\n };\n\n Size.prototype.toArray = function toArray (digits) {\n var doRound = defined(digits);\n var width = doRound ? round(this.width, digits) : this.width;\n var height = doRound ? round(this.height, digits) : this.height;\n\n return [ width, height ];\n };\n\n Size.create = function create (arg0, arg1) {\n if (defined(arg0)) {\n if (arg0 instanceof Size) {\n return arg0;\n } else if (arguments.length === 1 && arg0.length === 2) {\n return new Size(arg0[0], arg0[1]);\n }\n\n return new Size(arg0, arg1);\n }\n };\n\n staticAccessors.ZERO.get = function () {\n return new Size(0, 0);\n };\n\n Object.defineProperties( Size, staticAccessors );\n\n return Size;\n}(withAccessors(HasObservers, [ \"width\", \"height\" ])));\n\nexport default Size;\n","import HasObservers from '../core/has-observers';\nimport Point from './point';\nimport Size from './size';\n\nvar Rect = (function (HasObservers) {\n function Rect(origin, size, cornerRadius) {\n if ( origin === void 0 ) origin = new Point();\n if ( size === void 0 ) size = new Size();\n if ( cornerRadius === void 0 ) cornerRadius = 0;\n\n HasObservers.call(this);\n\n this.setOrigin(origin);\n this.setSize(size);\n this.setCornerRadius(cornerRadius);\n }\n\n if ( HasObservers ) Rect.__proto__ = HasObservers;\n Rect.prototype = Object.create( HasObservers && HasObservers.prototype );\n Rect.prototype.constructor = Rect;\n\n Rect.prototype.clone = function clone () {\n return new Rect(\n this.origin.clone(),\n this.size.clone()\n );\n };\n\n Rect.prototype.equals = function equals (other) {\n return other &&\n other.origin.equals(this.origin) &&\n other.size.equals(this.size);\n };\n\n Rect.prototype.setOrigin = function setOrigin (value) {\n this._observerField(\"origin\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getOrigin = function getOrigin () {\n return this.origin;\n };\n\n Rect.prototype.setCornerRadius = function setCornerRadius (radius) {\n this.cornerRadius = Array.isArray(radius) ? radius : [ radius, radius ];\n\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getCornerRadius = function getCornerRadius () {\n return this.cornerRadius;\n };\n\n Rect.prototype.setSize = function setSize (value) {\n this._observerField(\"size\", Size.create(value));\n this.geometryChange();\n return this;\n };\n\n Rect.prototype.getSize = function getSize () {\n return this.size;\n };\n\n Rect.prototype.width = function width () {\n return this.size.width;\n };\n\n Rect.prototype.height = function height () {\n return this.size.height;\n };\n\n Rect.prototype.topLeft = function topLeft () {\n return this.origin.clone();\n };\n\n Rect.prototype.bottomRight = function bottomRight () {\n return this.origin.clone().translate(this.width(), this.height());\n };\n\n Rect.prototype.topRight = function topRight () {\n return this.origin.clone().translate(this.width(), 0);\n };\n\n Rect.prototype.bottomLeft = function bottomLeft () {\n return this.origin.clone().translate(0, this.height());\n };\n\n Rect.prototype.center = function center () {\n return this.origin.clone().translate(this.width() / 2, this.height() / 2);\n };\n\n Rect.prototype.bbox = function bbox (matrix) {\n var tl = this.topLeft().transformCopy(matrix);\n var tr = this.topRight().transformCopy(matrix);\n var br = this.bottomRight().transformCopy(matrix);\n var bl = this.bottomLeft().transformCopy(matrix);\n\n return Rect.fromPoints(tl, tr, br, bl);\n };\n\n Rect.prototype.transformCopy = function transformCopy (m) {\n return Rect.fromPoints(\n this.topLeft().transform(m),\n this.bottomRight().transform(m)\n );\n };\n\n Rect.prototype.expand = function expand (x, y) {\n if ( y === void 0 ) y = x;\n\n\n this.size.width += 2 * x;\n this.size.height += 2 * y;\n\n this.origin.translate(-x, -y);\n\n return this;\n };\n\n Rect.prototype.expandCopy = function expandCopy (x, y) {\n return this.clone().expand(x, y);\n };\n\n Rect.prototype.containsPoint = function containsPoint (point) {\n var origin = this.origin;\n var bottomRight = this.bottomRight();\n return !(point.x < origin.x || point.y < origin.y || bottomRight.x < point.x || bottomRight.y < point.y);\n };\n\n Rect.prototype._isOnPath = function _isOnPath (point, width) {\n var rectOuter = this.expandCopy(width, width);\n var rectInner = this.expandCopy(-width, -width);\n\n return rectOuter.containsPoint(point) && !rectInner.containsPoint(point);\n };\n\n Rect.fromPoints = function fromPoints () {\n var topLeft = Point.min.apply(null, arguments);\n var bottomRight = Point.max.apply(null, arguments);\n var size = new Size(\n bottomRight.x - topLeft.x,\n bottomRight.y - topLeft.y\n );\n\n return new Rect(topLeft, size);\n };\n\n Rect.union = function union (a, b) {\n return Rect.fromPoints(\n Point.min(a.topLeft(), b.topLeft()),\n Point.max(a.bottomRight(), b.bottomRight())\n );\n };\n\n Rect.intersect = function intersect (a, b) {\n var rect1 = {\n left: a.topLeft().x,\n top: a.topLeft().y,\n right: a.bottomRight().x,\n bottom: a.bottomRight().y\n };\n\n var rect2 = {\n left: b.topLeft().x,\n top: b.topLeft().y,\n right: b.bottomRight().x,\n bottom: b.bottomRight().y\n };\n\n if (rect1.left <= rect2.right &&\n rect2.left <= rect1.right &&\n rect1.top <= rect2.bottom &&\n rect2.top <= rect1.bottom) {\n return Rect.fromPoints(\n new Point(Math.max(rect1.left, rect2.left), Math.max(rect1.top, rect2.top)),\n new Point(Math.min(rect1.right, rect2.right), Math.min(rect1.bottom, rect2.bottom))\n );\n }\n };\n\n return Rect;\n}(HasObservers));\n\nexport default Rect;\n","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Point from './point';\n\nimport { X, Y, TOP, BOTTOM, LEFT, RIGHT, CENTER, WIDTH, HEIGHT } from '../common/constants';\nimport { Class, defined, getSpacing, inArray, isArray, rad } from '../common';\n\nvar Box = (function (Class) {\n function Box(x1, y1, x2, y2) {\n Class.call(this);\n\n this.x1 = x1 || 0;\n this.y1 = y1 || 0;\n this.x2 = x2 || 0;\n this.y2 = y2 || 0;\n }\n\n if ( Class ) Box.__proto__ = Class;\n Box.prototype = Object.create( Class && Class.prototype );\n Box.prototype.constructor = Box;\n\n Box.prototype.equals = function equals (box) {\n return this.x1 === box.x1 && this.x2 === box.x2 &&\n this.y1 === box.y1 && this.y2 === box.y2;\n };\n\n Box.prototype.width = function width () {\n return this.x2 - this.x1;\n };\n\n Box.prototype.height = function height () {\n return this.y2 - this.y1;\n };\n\n Box.prototype.translate = function translate (dx, dy) {\n this.x1 += dx;\n this.x2 += dx;\n this.y1 += dy;\n this.y2 += dy;\n\n return this;\n };\n\n Box.prototype.move = function move (x, y) {\n var height = this.height();\n var width = this.width();\n\n if (defined(x)) {\n this.x1 = x;\n this.x2 = this.x1 + width;\n }\n\n if (defined(y)) {\n this.y1 = y;\n this.y2 = this.y1 + height;\n }\n\n return this;\n };\n\n Box.prototype.wrap = function wrap (targetBox) {\n this.x1 = Math.min(this.x1, targetBox.x1);\n this.y1 = Math.min(this.y1, targetBox.y1);\n this.x2 = Math.max(this.x2, targetBox.x2);\n this.y2 = Math.max(this.y2, targetBox.y2);\n\n return this;\n };\n\n Box.prototype.wrapPoint = function wrapPoint (point) {\n var arrayPoint = isArray(point);\n var x = arrayPoint ? point[0] : point.x;\n var y = arrayPoint ? point[1] : point.y;\n this.wrap(new Box(x, y, x, y));\n\n return this;\n };\n\n Box.prototype.snapTo = function snapTo (targetBox, axis) {\n\n if (axis === X || !axis) {\n this.x1 = targetBox.x1;\n this.x2 = targetBox.x2;\n }\n\n if (axis === Y || !axis) {\n this.y1 = targetBox.y1;\n this.y2 = targetBox.y2;\n }\n\n return this;\n };\n\n Box.prototype.alignTo = function alignTo (targetBox, anchor) {\n var height = this.height();\n var width = this.width();\n var axis = anchor === TOP || anchor === BOTTOM ? Y : X;\n var offset = axis === Y ? height : width;\n\n if (anchor === CENTER) {\n var targetCenter = targetBox.center();\n var center = this.center();\n\n this.x1 += targetCenter.x - center.x;\n this.y1 += targetCenter.y - center.y;\n } else if (anchor === TOP || anchor === LEFT) {\n this[axis + 1] = targetBox[axis + 1] - offset;\n } else {\n this[axis + 1] = targetBox[axis + 2];\n }\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n };\n\n Box.prototype.shrink = function shrink (dw, dh) {\n\n this.x2 -= dw;\n this.y2 -= dh;\n\n return this;\n };\n\n Box.prototype.expand = function expand (dw, dh) {\n this.shrink(-dw, -dh);\n return this;\n };\n\n Box.prototype.pad = function pad (padding) {\n var spacing = getSpacing(padding);\n\n this.x1 -= spacing.left;\n this.x2 += spacing.right;\n this.y1 -= spacing.top;\n this.y2 += spacing.bottom;\n\n return this;\n };\n\n Box.prototype.unpad = function unpad (padding) {\n var spacing = getSpacing(padding);\n\n spacing.left = -spacing.left;\n spacing.top = -spacing.top;\n spacing.right = -spacing.right;\n spacing.bottom = -spacing.bottom;\n\n return this.pad(spacing);\n };\n\n Box.prototype.clone = function clone () {\n return new Box(this.x1, this.y1, this.x2, this.y2);\n };\n\n Box.prototype.center = function center () {\n return new Point(\n this.x1 + this.width() / 2,\n this.y1 + this.height() / 2\n );\n };\n\n Box.prototype.containsPoint = function containsPoint (point) {\n\n return point.x >= this.x1 && point.x <= this.x2 &&\n point.y >= this.y1 && point.y <= this.y2;\n };\n\n Box.prototype.points = function points () {\n return [\n new Point(this.x1, this.y1),\n new Point(this.x2, this.y1),\n new Point(this.x2, this.y2),\n new Point(this.x1, this.y2)\n ];\n };\n\n Box.prototype.getHash = function getHash () {\n return [ this.x1, this.y1, this.x2, this.y2 ].join(\",\");\n };\n\n Box.prototype.overlaps = function overlaps (box) {\n return !(box.y2 < this.y1 || this.y2 < box.y1 || box.x2 < this.x1 || this.x2 < box.x1);\n };\n\n Box.prototype.rotate = function rotate (rotation) {\n var width = this.width();\n var height = this.height();\n var ref = this.center();\n var cx = ref.x;\n var cy = ref.y;\n\n var r1 = rotatePoint(0, 0, cx, cy, rotation);\n var r2 = rotatePoint(width, 0, cx, cy, rotation);\n var r3 = rotatePoint(width, height, cx, cy, rotation);\n var r4 = rotatePoint(0, height, cx, cy, rotation);\n\n width = Math.max(r1.x, r2.x, r3.x, r4.x) - Math.min(r1.x, r2.x, r3.x, r4.x);\n height = Math.max(r1.y, r2.y, r3.y, r4.y) - Math.min(r1.y, r2.y, r3.y, r4.y);\n\n this.x2 = this.x1 + width;\n this.y2 = this.y1 + height;\n\n return this;\n };\n\n Box.prototype.toRect = function toRect () {\n return new geom.Rect([ this.x1, this.y1 ], [ this.width(), this.height() ]);\n };\n\n Box.prototype.hasSize = function hasSize () {\n return this.width() !== 0 && this.height() !== 0;\n };\n\n Box.prototype.align = function align (targetBox, axis, alignment) {\n var c1 = axis + 1;\n var c2 = axis + 2;\n var sizeFunc = axis === X ? WIDTH : HEIGHT;\n var size = this[sizeFunc]();\n\n if (inArray(alignment, [ LEFT, TOP ])) {\n this[c1] = targetBox[c1];\n this[c2] = this[c1] + size;\n } else if (inArray(alignment, [ RIGHT, BOTTOM ])) {\n this[c2] = targetBox[c2];\n this[c1] = this[c2] - size;\n } else if (alignment === CENTER) {\n this[c1] = targetBox[c1] + (targetBox[sizeFunc]() - size) / 2;\n this[c2] = this[c1] + size;\n }\n };\n\n return Box;\n}(Class));\n\nfunction rotatePoint(x, y, cx, cy, angle) {\n var theta = rad(angle);\n\n return new Point(\n cx + (x - cx) * Math.cos(theta) + (y - cy) * Math.sin(theta),\n cy - (x - cx) * Math.sin(theta) + (y - cy) * Math.cos(theta)\n );\n}\n\nexport default Box;\n","import Box from './box';\nimport Point from './point';\nimport { COORD_PRECISION, MAX_VALUE, MIN_VALUE } from '../common/constants';\nimport { Class, clockwise, rad, round } from '../common';\n\nvar Ring = (function (Class) {\n function Ring(center, innerRadius, radius, startAngle, angle) {\n Class.call(this);\n\n this.center = center;\n this.innerRadius = innerRadius;\n this.radius = radius;\n this.startAngle = startAngle;\n this.angle = angle;\n }\n\n if ( Class ) Ring.__proto__ = Class;\n Ring.prototype = Object.create( Class && Class.prototype );\n Ring.prototype.constructor = Ring;\n\n Ring.prototype.clone = function clone () {\n return new Ring(this.center, this.innerRadius, this.radius, this.startAngle, this.angle);\n };\n\n Ring.prototype.middle = function middle () {\n return this.startAngle + this.angle / 2;\n };\n\n Ring.prototype.setRadius = function setRadius (newRadius, innerRadius) {\n if (innerRadius) {\n this.innerRadius = newRadius;\n } else {\n this.radius = newRadius;\n }\n\n return this;\n };\n\n // TODO: Remove and replace with Point.onCircle\n Ring.prototype.point = function point (angle, innerRadius) {\n var radianAngle = rad(angle);\n var ax = Math.cos(radianAngle);\n var ay = Math.sin(radianAngle);\n var radius = innerRadius ? this.innerRadius : this.radius;\n var x = round(this.center.x - (ax * radius), COORD_PRECISION);\n var y = round(this.center.y - (ay * radius), COORD_PRECISION);\n\n return new Point(x, y);\n };\n\n Ring.prototype.adjacentBox = function adjacentBox (distance, width, height) {\n var sector = this.clone().expand(distance);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n var hw = width / 2;\n var hh = height / 2;\n var sa = Math.sin(rad(midAndle));\n var ca = Math.cos(rad(midAndle));\n var x = midPoint.x - hw;\n var y = midPoint.y - hh;\n\n if (Math.abs(sa) < 0.9) {\n x += hw * -ca / Math.abs(ca);\n }\n\n if (Math.abs(ca) < 0.9) {\n y += hh * -sa / Math.abs(sa);\n }\n\n return new Box(x, y, x + width, y + height);\n };\n\n Ring.prototype.containsPoint = function containsPoint (p) {\n var center = this.center;\n var innerRadius = this.innerRadius;\n var radius = this.radius;\n var startAngle = this.startAngle;\n var endAngle = this.startAngle + this.angle;\n var dx = p.x - center.x;\n var dy = p.y - center.y;\n var vector = new Point(dx, dy);\n var startPoint = this.point(startAngle);\n var startVector = new Point(startPoint.x - center.x, startPoint.y - center.y);\n var endPoint = this.point(endAngle);\n var endVector = new Point(endPoint.x - center.x, endPoint.y - center.y);\n var dist = round(dx * dx + dy * dy, COORD_PRECISION);\n\n return (startVector.equals(vector) || clockwise(startVector, vector)) &&\n !clockwise(endVector, vector) &&\n dist >= innerRadius * innerRadius && dist <= radius * radius;\n };\n\n Ring.prototype.getBBox = function getBBox () {\n var this$1 = this;\n\n var box = new Box(MAX_VALUE, MAX_VALUE, MIN_VALUE, MIN_VALUE);\n var startAngle = round(this.startAngle % 360);\n var endAngle = round((startAngle + this.angle) % 360);\n var innerRadius = this.innerRadius;\n var allAngles = [ 0, 90, 180, 270, startAngle, endAngle ].sort(numericComparer);\n var startAngleIndex = allAngles.indexOf(startAngle);\n var endAngleIndex = allAngles.indexOf(endAngle);\n var angles;\n\n if (startAngle === endAngle) {\n angles = allAngles;\n } else {\n if (startAngleIndex < endAngleIndex) {\n angles = allAngles.slice(startAngleIndex, endAngleIndex + 1);\n } else {\n angles = [].concat(\n allAngles.slice(0, endAngleIndex + 1),\n allAngles.slice(startAngleIndex, allAngles.length)\n );\n }\n }\n\n for (var i = 0; i < angles.length; i++) {\n var point = this$1.point(angles[i]);\n box.wrapPoint(point);\n box.wrapPoint(point, innerRadius);\n }\n\n if (!innerRadius) {\n box.wrapPoint(this.center);\n }\n\n return box;\n };\n\n Ring.prototype.expand = function expand (value) {\n this.radius += value;\n return this;\n };\n\n return Ring;\n}(Class));\n\nfunction numericComparer(a, b) {\n return a - b;\n}\n\nexport default Ring;","var PRECISION = 10;\n\nexport { PRECISION };","import Ring from './ring';\n\nvar Sector = (function (Ring) {\n function Sector(center, radius, startAngle, angle) {\n Ring.call(this, center, 0, radius, startAngle, angle);\n }\n\n if ( Ring ) Sector.__proto__ = Ring;\n Sector.prototype = Object.create( Ring && Ring.prototype );\n Sector.prototype.constructor = Sector;\n\n Sector.prototype.expand = function expand (value) {\n return Ring.prototype.expand.call(this, value);\n };\n\n Sector.prototype.clone = function clone () {\n return new Sector(this.center, this.radius, this.startAngle, this.angle);\n };\n\n Sector.prototype.setRadius = function setRadius (newRadius) {\n this.radius = newRadius;\n\n return this;\n };\n\n return Sector;\n}(Ring));\n\nexport default Sector;","import { PRECISION } from '../constants';\n\nimport { round } from '../../util';\n\nexport default function close(a, b, tolerance) {\n if ( tolerance === void 0 ) tolerance = PRECISION;\n\n return round(Math.abs(a - b), tolerance) === 0;\n}","import close from './close';\n\nexport default function closeOrLess(a, b, tolerance) {\n return a < b || close(a, b, tolerance);\n}","export default function ellipseExtremeAngles(center, rx, ry, matrix) {\n var extremeX = 0;\n var extremeY = 0;\n\n if (matrix) {\n extremeX = Math.atan2(matrix.c * ry, matrix.a * rx);\n if (matrix.b !== 0) {\n extremeY = Math.atan2(matrix.d * ry, matrix.b * rx);\n }\n }\n\n return {\n x: extremeX,\n y: extremeY\n };\n}","import HasObservers from '../core/has-observers';\nimport toMatrix from './to-matrix';\nimport Matrix from './matrix';\nimport Point from './point';\n\nvar Transformation = (function (HasObservers) {\n function Transformation(matrix) {\n if ( matrix === void 0 ) matrix = Matrix.unit();\n\n HasObservers.call(this);\n\n this._matrix = matrix;\n }\n\n if ( HasObservers ) Transformation.__proto__ = HasObservers;\n Transformation.prototype = Object.create( HasObservers && HasObservers.prototype );\n Transformation.prototype.constructor = Transformation;\n\n Transformation.prototype.clone = function clone () {\n return new Transformation(\n this._matrix.clone()\n );\n };\n\n Transformation.prototype.equals = function equals (other) {\n return other &&\n other._matrix.equals(this._matrix);\n };\n\n Transformation.prototype.translate = function translate (x, y) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(x, y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.scale = function scale (scaleX, scaleY, origin) {\n if ( scaleY === void 0 ) scaleY = scaleX;\n if ( origin === void 0 ) origin = null;\n\n var originPoint = origin;\n\n if (originPoint) {\n originPoint = Point.create(originPoint);\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(originPoint.x, originPoint.y));\n }\n\n this._matrix = this._matrix.multiplyCopy(Matrix.scale(scaleX, scaleY));\n\n if (originPoint) {\n this._matrix = this._matrix.multiplyCopy(Matrix.translate(-originPoint.x, -originPoint.y));\n }\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.rotate = function rotate (angle, origin) {\n var originPoint = Point.create(origin) || Point.ZERO;\n\n this._matrix = this._matrix.multiplyCopy(Matrix.rotate(angle, originPoint.x, originPoint.y));\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.multiply = function multiply (transformation) {\n var matrix = toMatrix(transformation);\n\n this._matrix = this._matrix.multiplyCopy(matrix);\n\n this._optionsChange();\n return this;\n };\n\n Transformation.prototype.matrix = function matrix (value) {\n if (value) {\n this._matrix = value;\n this._optionsChange();\n return this;\n }\n\n return this._matrix;\n };\n\n Transformation.prototype._optionsChange = function _optionsChange () {\n this.optionsChange({\n field: \"transform\",\n value: this\n });\n };\n\n return Transformation;\n}(HasObservers));\n\nexport default Transformation;\n","import Transformation from './transformation';\n\nexport default function transform(matrix) {\n if (matrix === null) {\n return null;\n }\n\n if (matrix instanceof Transformation) {\n return matrix;\n }\n\n return new Transformation(matrix);\n}","import HasObservers from '../core/has-observers';\nimport { deg, rad, round } from '../util';\nimport withAccessors from '../mixins/with-accessors';\n\nimport closeOrLess from './math/close-or-less';\nimport lineIntersection from './math/line-intersection';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\n\nimport { PRECISION } from './constants';\nimport Point from './point';\nimport Rect from './rect';\nimport transform from './transform';\n\n\nvar MAX_INTERVAL = 45;\nvar pow = Math.pow;\nvar accessors = [ \"radiusX\", \"radiusY\", \"startAngle\", \"endAngle\", \"anticlockwise\" ];\n\nvar Arc = (function (superclass) {\n function Arc(center, options) {\n if ( center === void 0 ) center = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this);\n\n this.setCenter(center);\n\n this.radiusX = options.radiusX;\n this.radiusY = options.radiusY || options.radiusX;\n this.startAngle = options.startAngle;\n this.endAngle = options.endAngle;\n this.anticlockwise = options.anticlockwise || false;\n this.xRotation = options.xRotation;\n }\n\n if ( superclass ) Arc.__proto__ = superclass;\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n\n Arc.prototype.clone = function clone () {\n return new Arc(this.center, {\n radiusX: this.radiusX,\n radiusY: this.radiusY,\n startAngle: this.startAngle,\n endAngle: this.endAngle,\n anticlockwise: this.anticlockwise\n });\n };\n\n Arc.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Arc.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Arc.prototype.pointAt = function pointAt (angle) {\n var center = this.center;\n var radian = rad(angle);\n\n return new Point(\n center.x + this.radiusX * Math.cos(radian),\n center.y + this.radiusY * Math.sin(radian)\n );\n };\n\n Arc.prototype.curvePoints = function curvePoints () {\n var this$1 = this;\n\n var startAngle = this.startAngle;\n var dir = this.anticlockwise ? -1 : 1;\n var curvePoints = [ this.pointAt(startAngle) ];\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var subIntervalsCount = Math.ceil(intervalAngle / MAX_INTERVAL);\n var subIntervalAngle = intervalAngle / subIntervalsCount;\n var currentAngle = startAngle;\n var transformation;\n if (this.xRotation) {\n transformation = transform().rotate(this.xRotation, this.center);\n }\n\n for (var i = 1; i <= subIntervalsCount; i++) {\n var nextAngle = currentAngle + dir * subIntervalAngle;\n var points = this$1._intervalCurvePoints(currentAngle, nextAngle, transformation);\n\n curvePoints.push(points.cp1, points.cp2, points.p2);\n currentAngle = nextAngle;\n }\n\n return curvePoints;\n };\n\n Arc.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var interval = this._arcInterval();\n var startAngle = interval.startAngle;\n var endAngle = interval.endAngle;\n var extremeAngles = ellipseExtremeAngles(this.center, this.radiusX, this.radiusY, matrix);\n var extremeX = deg(extremeAngles.x);\n var extremeY = deg(extremeAngles.y);\n var endPoint = this.pointAt(endAngle).transformCopy(matrix);\n var currentAngleX = bboxStartAngle(extremeX, startAngle);\n var currentAngleY = bboxStartAngle(extremeY, startAngle);\n var currentPoint = this.pointAt(startAngle).transformCopy(matrix);\n var minPoint = Point.min(currentPoint, endPoint);\n var maxPoint = Point.max(currentPoint, endPoint);\n\n while (currentAngleX < endAngle || currentAngleY < endAngle) {\n var currentPointX = (void 0);\n if (currentAngleX < endAngle) {\n currentPointX = this$1.pointAt(currentAngleX).transformCopy(matrix);\n currentAngleX += 90;\n }\n\n var currentPointY = (void 0);\n if (currentAngleY < endAngle) {\n currentPointY = this$1.pointAt(currentAngleY).transformCopy(matrix);\n currentAngleY += 90;\n }\n\n currentPoint = new Point(currentPointX.x, currentPointY.y);\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Arc.prototype._arcInterval = function _arcInterval () {\n var ref = this;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var anticlockwise = ref.anticlockwise;\n\n if (anticlockwise) {\n var oldStart = startAngle;\n startAngle = endAngle;\n endAngle = oldStart;\n }\n\n if (startAngle > endAngle || (anticlockwise && startAngle === endAngle)) {\n endAngle += 360;\n }\n\n return {\n startAngle: startAngle,\n endAngle: endAngle\n };\n };\n\n Arc.prototype._intervalCurvePoints = function _intervalCurvePoints (startAngle, endAngle, transformation) {\n var p1 = this.pointAt(startAngle);\n var p2 = this.pointAt(endAngle);\n var p1Derivative = this._derivativeAt(startAngle);\n var p2Derivative = this._derivativeAt(endAngle);\n var t = (rad(endAngle) - rad(startAngle)) / 3;\n var cp1 = new Point(p1.x + t * p1Derivative.x, p1.y + t * p1Derivative.y);\n var cp2 = new Point(p2.x - t * p2Derivative.x, p2.y - t * p2Derivative.y);\n if (transformation) {\n p1.transform(transformation);\n p2.transform(transformation);\n cp1.transform(transformation);\n cp2.transform(transformation);\n }\n\n return {\n p1: p1,\n cp1: cp1,\n cp2: cp2,\n p2: p2\n };\n };\n\n Arc.prototype._derivativeAt = function _derivativeAt (angle) {\n var radian = rad(angle);\n\n return new Point(-this.radiusX * Math.sin(radian), this.radiusY * Math.cos(radian));\n };\n\n Arc.prototype.containsPoint = function containsPoint (point) {\n var interval = this._arcInterval();\n var intervalAngle = interval.endAngle - interval.startAngle;\n var ref = this;\n var center = ref.center;\n var radiusX = ref.radiusX;\n var radiusY = ref.radiusY;\n var distance = center.distanceTo(point);\n var angleRad = Math.atan2(point.y - center.y, point.x - center.x);\n var pointRadius = (radiusX * radiusY) /\n Math.sqrt(pow(radiusX, 2) * pow(Math.sin(angleRad), 2) + pow(radiusY, 2) * pow(Math.cos(angleRad), 2));\n var startPoint = this.pointAt(this.startAngle).round(PRECISION);\n var endPoint = this.pointAt(this.endAngle).round(PRECISION);\n var intersection = lineIntersection(center, point.round(PRECISION), startPoint, endPoint);\n var containsPoint;\n\n if (intervalAngle < 180) {\n containsPoint = intersection && closeOrLess(center.distanceTo(intersection), distance) && closeOrLess(distance, pointRadius);\n } else {\n var angle = calculateAngle(center.x, center.y, radiusX, radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n containsPoint = (inAngleRange && closeOrLess(distance, pointRadius)) || (!inAngleRange && (!intersection || intersection.equals(point)));\n }\n return containsPoint;\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point, width) {\n var interval = this._arcInterval();\n var center = this.center;\n var angle = calculateAngle(center.x, center.y, this.radiusX, this.radiusY, point.x, point.y);\n if (angle !== 360) {\n angle = (360 + angle) % 360;\n }\n\n var inAngleRange = interval.startAngle <= angle && angle <= interval.endAngle;\n\n return inAngleRange && this.pointAt(angle).distanceTo(point) <= width;\n };\n\n Arc.fromPoints = function fromPoints (start, end, rx, ry, largeArc, swipe, rotation) {// eslint-disable-line max-params\n var arcParameters = normalizeArcParameters({\n x1: start.x,\n y1: start.y,\n x2: end.x,\n y2: end.y,\n rx: rx,\n ry: ry,\n largeArc: largeArc,\n swipe: swipe,\n rotation: rotation\n });\n\n return new Arc(arcParameters.center, {\n startAngle: arcParameters.startAngle,\n endAngle: arcParameters.endAngle,\n radiusX: arcParameters.radiusX,\n radiusY: arcParameters.radiusY,\n xRotation: arcParameters.xRotation,\n anticlockwise: swipe === 0\n });\n };\n\n return Arc;\n}(withAccessors(HasObservers, accessors)));\n\nfunction calculateAngle(cx, cy, rx, ry, x, y) {\n var cos = round((x - cx) / rx, 3);\n var sin = round((y - cy) / ry, 3);\n\n return round(deg(Math.atan2(sin, cos)));\n}\n\nfunction normalizeArcParameters(parameters) {\n var x1 = parameters.x1;\n var y1 = parameters.y1;\n var x2 = parameters.x2;\n var y2 = parameters.y2;\n var rx = parameters.rx;\n var ry = parameters.ry;\n var largeArc = parameters.largeArc;\n var swipe = parameters.swipe;\n var rotation = parameters.rotation; if ( rotation === void 0 ) rotation = 0;\n\n var radians = rad(rotation);\n var cosine = Math.cos(radians);\n var sine = Math.sin(radians);\n\n var xT = cosine * (x1 - x2) / 2 + sine * (y1 - y2) / 2;\n var yT = -sine * (x1 - x2) / 2 + cosine * (y1 - y2) / 2;\n\n var sign = largeArc !== swipe ? 1 : -1;\n\n var xt2 = Math.pow(xT, 2);\n var yt2 = Math.pow(yT, 2);\n var rx2 = Math.pow(rx, 2);\n var ry2 = Math.pow(ry, 2);\n\n var delta = xt2 / rx2 + yt2 / ry2;\n\n if (delta > 1) {\n delta = Math.sqrt(xt2 / rx2 + yt2 / ry2);\n rx = delta * rx;\n rx2 = Math.pow(rx, 2);\n\n ry = delta * ry;\n ry2 = Math.pow(ry, 2);\n }\n\n var constT = sign * Math.sqrt((rx2 * ry2 - rx2 * yt2 - ry2 * xt2) / (rx2 * yt2 + ry2 * xt2));\n // due to rounding errors the value could become NaN even after radii correction\n if (isNaN(constT)) {\n constT = 0;\n }\n\n var cxT = constT * (rx * yT) / ry;\n var cyT = - constT * (ry * xT) / rx;\n\n var cx = cosine * cxT - sine * cyT + (x1 + x2) / 2;\n var cy = sine * cxT + cosine * cyT + (y1 + y2) / 2;\n\n\n var uX = (xT - cxT) / rx;\n var uY = (yT - cyT) / ry;\n var vX = -(xT + cxT) / rx;\n var vY = -(yT + cyT) / ry;\n\n var startAngle = (uY >= 0 ? 1 : -1) * deg(Math.acos(uX / Math.sqrt(uX * uX + uY * uY)));\n\n var angleCosine = round((uX * vX + uY * vY) / (Math.sqrt(uX * uX + uY * uY) * Math.sqrt(vX * vX + vY * vY)), 10);\n var angle = (uX * vY - uY * vX >= 0 ? 1 : -1) * deg(Math.acos(angleCosine));\n\n if (!swipe && angle > 0) {\n angle -= 360;\n }\n\n if (swipe && angle < 0) {\n angle += 360;\n }\n var endAngle = startAngle + angle;\n var signEndAngle = endAngle >= 0 ? 1 : -1;\n endAngle = (Math.abs(endAngle) % 360) * signEndAngle;\n\n return {\n center: new Point(cx, cy),\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: rx,\n radiusY: ry,\n xRotation: rotation\n };\n}\n\nfunction bboxStartAngle(angle, start) {\n var startAngle = angle;\n\n while (startAngle < start) {\n startAngle += 90;\n }\n\n return startAngle;\n}\n\nexport default Arc;\n","import Point from '../point';\n\nexport default function lineIntersection(p0, p1, p2, p3) {\n var s1x = p1.x - p0.x;\n var s2x = p3.x - p2.x;\n var s1y = p1.y - p0.y;\n var s2y = p3.y - p2.y;\n var nx = p0.x - p2.x;\n var ny = p0.y - p2.y;\n var d = s1x * s2y - s2x * s1y;\n var s = (s1x * ny - s1y * nx) / d;\n var t = (s2x * ny - s2y * nx) / d;\n\n if (s >= 0 && s <= 1 && t >= 0 && t <= 1) {\n return new Point(p0.x + t * s1x, p0.y + t * s1y);\n }\n}","import HasObservers from '../core/has-observers';\n\nvar push = [].push;\nvar pop = [].pop;\nvar splice = [].splice;\nvar shift = [].shift;\nvar slice = [].slice;\nvar unshift = [].unshift;\n\nvar ElementsArray = (function (HasObservers) {\n function ElementsArray(array) {\n if ( array === void 0 ) array = [];\n\n HasObservers.call(this);\n\n this.length = 0;\n this._splice(0, array.length, array);\n }\n\n if ( HasObservers ) ElementsArray.__proto__ = HasObservers;\n ElementsArray.prototype = Object.create( HasObservers && HasObservers.prototype );\n ElementsArray.prototype.constructor = ElementsArray;\n\n ElementsArray.prototype.elements = function elements (value) {\n if (value) {\n this._splice(0, this.length, value);\n\n this._change();\n return this;\n }\n\n return this.slice(0);\n };\n\n ElementsArray.prototype.push = function push$1 () {\n var elements = arguments;\n var result = push.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.slice = function slice$1 () {\n return slice.call(this);\n };\n\n ElementsArray.prototype.pop = function pop$1 () {\n var length = this.length;\n var result = pop.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.splice = function splice (index, howMany) {\n var elements = slice.call(arguments, 2);\n var result = this._splice(index, howMany, elements);\n\n this._change();\n\n return result;\n };\n\n ElementsArray.prototype.shift = function shift$1 () {\n var length = this.length;\n var result = shift.apply(this);\n\n if (length) {\n this._remove([ result ]);\n }\n\n return result;\n };\n\n ElementsArray.prototype.unshift = function unshift$1 () {\n var elements = arguments;\n var result = unshift.apply(this, elements);\n\n this._add(elements);\n\n return result;\n };\n\n ElementsArray.prototype.indexOf = function indexOf (element) {\n var this$1 = this;\n\n var length = this.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (this$1[idx] === element) {\n return idx;\n }\n }\n return -1;\n };\n\n ElementsArray.prototype._splice = function _splice (index, howMany, elements) {\n var result = splice.apply(this, [ index, howMany ].concat(elements));\n\n this._clearObserver(result);\n this._setObserver(elements);\n\n return result;\n };\n\n ElementsArray.prototype._add = function _add (elements) {\n this._setObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._remove = function _remove (elements) {\n this._clearObserver(elements);\n this._change();\n };\n\n ElementsArray.prototype._setObserver = function _setObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].addObserver(this$1);\n }\n };\n\n ElementsArray.prototype._clearObserver = function _clearObserver (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n elements[idx].removeObserver(this$1);\n }\n };\n\n ElementsArray.prototype._change = function _change () {};\n\n return ElementsArray;\n}(HasObservers));\n\nexport default ElementsArray;\n","import ElementsArray from './elements-array';\n\nvar GeometryElementsArray = (function (ElementsArray) {\n function GeometryElementsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) GeometryElementsArray.__proto__ = ElementsArray;\n GeometryElementsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n GeometryElementsArray.prototype.constructor = GeometryElementsArray;\n\n GeometryElementsArray.prototype._change = function _change () {\n this.geometryChange();\n };\n\n return GeometryElementsArray;\n}(ElementsArray));\n\nexport default GeometryElementsArray;","import { Class } from '../common';\nimport HasObservers from './has-observers';\nimport { defined } from '../util';\n\n\nvar toString = {}.toString;\n\nvar OptionsStore = (function (HasObservers) {\n function OptionsStore(options, prefix) {\n var this$1 = this;\n if ( prefix === void 0 ) prefix = \"\";\n\n HasObservers.call(this);\n\n this.prefix = prefix;\n\n for (var field in options) {\n var member = options[field];\n member = this$1._wrap(member, field);\n this$1[field] = member;\n }\n }\n\n if ( HasObservers ) OptionsStore.__proto__ = HasObservers;\n OptionsStore.prototype = Object.create( HasObservers && HasObservers.prototype );\n OptionsStore.prototype.constructor = OptionsStore;\n\n OptionsStore.prototype.get = function get (field) {\n var parts = field.split(\".\");\n var result = this;\n\n while (parts.length && result) {\n var part = parts.shift();\n result = result[part];\n }\n\n return result;\n };\n\n OptionsStore.prototype.set = function set (field, value) {\n var current = this.get(field);\n\n if (current !== value) {\n this._set(field, this._wrap(value, field));\n this.optionsChange({\n field: this.prefix + field,\n value: value\n });\n }\n };\n\n OptionsStore.prototype._set = function _set (field, value) {\n var this$1 = this;\n\n var composite = field.indexOf(\".\") >= 0;\n var parentObj = this;\n var fieldName = field;\n\n if (composite) {\n var parts = fieldName.split(\".\");\n var prefix = this.prefix;\n\n while (parts.length > 1) {\n fieldName = parts.shift();\n prefix += fieldName + \".\";\n\n var obj = parentObj[fieldName];\n\n if (!obj) {\n obj = new OptionsStore({}, prefix);\n obj.addObserver(this$1);\n parentObj[fieldName] = obj;\n }\n parentObj = obj;\n }\n fieldName = parts[0];\n }\n\n parentObj._clear(fieldName);\n parentObj[fieldName] = value;\n };\n\n OptionsStore.prototype._clear = function _clear (field) {\n var current = this[field];\n if (current && current.removeObserver) {\n current.removeObserver(this);\n }\n };\n\n OptionsStore.prototype._wrap = function _wrap (object, field) {\n var type = toString.call(object);\n var wrapped = object;\n\n if (wrapped !== null && defined(wrapped) && type === \"[object Object]\") {\n if (!(object instanceof OptionsStore) && !(object instanceof Class)) {\n wrapped = new OptionsStore(wrapped, this.prefix + field + \".\");\n }\n\n wrapped.addObserver(this);\n }\n\n return wrapped;\n };\n\n return OptionsStore;\n}(HasObservers));\n\nexport default OptionsStore;\n","import OptionsStore from '../core/options-store';\nimport Rect from '../geometry/rect';\nimport Matrix from '../geometry/matrix';\nimport createTransform from '../geometry/transform';\nimport toMatrix from '../geometry/to-matrix';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId, isTransparent, valueOrDefault } from '../util';\n\nvar Element = (function (HasObservers) {\n function Element(options) {\n HasObservers.call(this);\n\n this._initOptions(options);\n }\n\n if ( HasObservers ) Element.__proto__ = HasObservers;\n Element.prototype = Object.create( HasObservers && HasObservers.prototype );\n Element.prototype.constructor = Element;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Rect\";\n };\n\n Element.prototype._initOptions = function _initOptions (options) {\n if ( options === void 0 ) options = {};\n\n var clip = options.clip;\n var transform = options.transform;\n\n if (transform) {\n options.transform = createTransform(transform);\n }\n\n if (clip && !clip.id) {\n clip.id = definitionId();\n }\n\n this.options = new OptionsStore(options);\n this.options.addObserver(this);\n };\n\n Element.prototype.transform = function transform (value) {\n if (defined(value)) {\n this.options.set(\"transform\", createTransform(value));\n } else {\n return this.options.get(\"transform\");\n }\n };\n\n Element.prototype.parentTransform = function parentTransform () {\n var element = this;\n var parentMatrix;\n\n while (element.parent) {\n element = element.parent;\n var transformation = element.transform();\n if (transformation) {\n parentMatrix = transformation.matrix().multiplyCopy(parentMatrix || Matrix.unit());\n }\n }\n\n if (parentMatrix) {\n return createTransform(parentMatrix);\n }\n };\n\n Element.prototype.currentTransform = function currentTransform (parentTransform) {\n if ( parentTransform === void 0 ) parentTransform = this.parentTransform();\n\n var elementTransform = this.transform();\n var elementMatrix = toMatrix(elementTransform);\n\n var parentMatrix = toMatrix(parentTransform);\n var combinedMatrix;\n\n if (elementMatrix && parentMatrix) {\n combinedMatrix = parentMatrix.multiplyCopy(elementMatrix);\n } else {\n combinedMatrix = elementMatrix || parentMatrix;\n }\n\n if (combinedMatrix) {\n return createTransform(combinedMatrix);\n }\n };\n\n Element.prototype.visible = function visible (value) {\n if (defined(value)) {\n this.options.set(\"visible\", value);\n return this;\n }\n\n return this.options.get(\"visible\") !== false;\n };\n\n Element.prototype.clip = function clip (value) {\n var options = this.options;\n if (defined(value)) {\n if (value && !value.id) {\n value.id = definitionId();\n }\n options.set(\"clip\", value);\n return this;\n }\n\n return options.get(\"clip\");\n };\n\n Element.prototype.opacity = function opacity (value) {\n if (defined(value)) {\n this.options.set(\"opacity\", value);\n return this;\n }\n\n return valueOrDefault(this.options.get(\"opacity\"), 1);\n };\n\n Element.prototype.clippedBBox = function clippedBBox (transformation) {\n var bbox = this._clippedBBox(transformation);\n if (bbox) {\n var clip = this.clip();\n return clip ? Rect.intersect(bbox, clip.bbox(transformation)) : bbox;\n }\n };\n\n Element.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var transform = this.currentTransform(parentTransform);\n var transformedPoint = point;\n if (transform) {\n transformedPoint = point.transformCopy(transform.matrix().invert());\n }\n return (this._hasFill() && this._containsPoint(transformedPoint)) || (this._isOnPath && this._hasStroke() && this._isOnPath(transformedPoint));\n }\n return false;\n };\n\n Element.prototype._hasFill = function _hasFill () {\n var fill = this.options.fill;\n return fill && !isTransparent(fill.color);\n };\n\n Element.prototype._hasStroke = function _hasStroke () {\n var stroke = this.options.stroke;\n return stroke && stroke.width > 0 && !isTransparent(stroke.color);\n };\n\n Element.prototype._clippedBBox = function _clippedBBox (transformation) {\n return this.bbox(transformation);\n };\n\n Object.defineProperties( Element.prototype, prototypeAccessors );\n\n return Element;\n}(HasObservers));\n\nexport default Element;\n","import { deg } from '../../util';\nimport transform from '../transform';\n\nexport default function isOutOfEndPoint(endPoint, controlPoint, point) {\n var angle = deg(Math.atan2(controlPoint.y - endPoint.y, controlPoint.x - endPoint.x));\n var rotatedPoint = point.transformCopy(transform().rotate(-angle, endPoint));\n\n return rotatedPoint.x < endPoint.x;\n}","export default function calculateCurveAt(t, field, points) {\n var t1 = 1 - t;\n return Math.pow(t1, 3) * points[0][field] +\n 3 * Math.pow(t1, 2) * t * points[1][field] +\n 3 * Math.pow(t, 2) * t1 * points[2][field] +\n Math.pow(t, 3) * points[3][field];\n}","export default function toCubicPolynomial(points, field) {\n return [ -points[0][field] + 3 * points[1][field] - 3 * points[2][field] + points[3][field],\n 3 * (points[0][field] - 2 * points[1][field] + points[2][field]),\n 3 * (-points[0][field] + points[1][field]),\n points[0][field]\n ];\n}","import { PRECISION } from '../constants';\nimport { Class } from '../../common';\nimport { round } from '../../util';\n\nvar ComplexNumber = (function (Class) {\n function ComplexNumber(real, img) {\n if ( real === void 0 ) real = 0;\n if ( img === void 0 ) img = 0;\n\n Class.call(this);\n\n this.real = real;\n this.img = img;\n }\n\n if ( Class ) ComplexNumber.__proto__ = Class;\n ComplexNumber.prototype = Object.create( Class && Class.prototype );\n ComplexNumber.prototype.constructor = ComplexNumber;\n\n ComplexNumber.prototype.add = function add (cNumber) {\n return new ComplexNumber(round(this.real + cNumber.real, PRECISION), round(this.img + cNumber.img, PRECISION));\n };\n\n ComplexNumber.prototype.addConstant = function addConstant (value) {\n return new ComplexNumber(this.real + value, this.img);\n };\n\n ComplexNumber.prototype.negate = function negate () {\n return new ComplexNumber(-this.real, -this.img);\n };\n\n ComplexNumber.prototype.multiply = function multiply (cNumber) {\n return new ComplexNumber(this.real * cNumber.real - this.img * cNumber.img,\n this.real * cNumber.img + this.img * cNumber.real);\n };\n\n ComplexNumber.prototype.multiplyConstant = function multiplyConstant (value) {\n return new ComplexNumber(this.real * value, this.img * value);\n };\n\n ComplexNumber.prototype.nthRoot = function nthRoot (n) {\n var rad = Math.atan2(this.img, this.real);\n var r = Math.sqrt(Math.pow(this.img, 2) + Math.pow(this.real, 2));\n var nthR = Math.pow(r, 1 / n);\n\n return new ComplexNumber(nthR * Math.cos(rad / n), nthR * Math.sin(rad / n)); //Moivre's formula\n };\n\n ComplexNumber.prototype.equals = function equals (cNumber) {\n return this.real === cNumber.real && this.img === cNumber.img;\n };\n\n ComplexNumber.prototype.isReal = function isReal () {\n return this.img === 0;\n };\n\n return ComplexNumber;\n}(Class));\n\nexport default ComplexNumber;","import ComplexNumber from './complex-number';\nimport { PRECISION } from '../constants';\nimport { round } from '../../util';\n\nfunction numberSign(x) {\n return x < 0 ? -1 : 1;\n}\n\nfunction solveQuadraticEquation(a, b, c) {\n var squareRoot = Math.sqrt(Math.pow(b, 2) - 4 * a * c);\n return [\n (-b + squareRoot) / (2 * a),\n (-b - squareRoot) / (2 * a)\n ];\n}\n\n//Cardano's formula\nexport default function solveCubicEquation(a, b, c, d) {\n if (a === 0) {\n return solveQuadraticEquation(b, c, d);\n }\n\n var p = (3 * a * c - Math.pow(b, 2)) / (3 * Math.pow(a, 2));\n var q = (2 * Math.pow(b, 3) - 9 * a * b * c + 27 * Math.pow(a, 2) * d) / (27 * Math.pow(a, 3));\n var Q = Math.pow(p / 3, 3) + Math.pow(q / 2, 2);\n var i = new ComplexNumber(0,1);\n var b3a = -b / (3 * a);\n var x1, x2, y1, y2, y3, z1, z2;\n\n if (Q < 0) {\n x1 = new ComplexNumber(-q / 2, Math.sqrt(-Q)).nthRoot(3);\n x2 = new ComplexNumber(-q / 2, - Math.sqrt(-Q)).nthRoot(3);\n } else {\n x1 = -q / 2 + Math.sqrt(Q);\n x1 = new ComplexNumber(numberSign(x1) * Math.pow(Math.abs(x1), 1 / 3));\n x2 = -q / 2 - Math.sqrt(Q);\n x2 = new ComplexNumber(numberSign(x2) * Math.pow(Math.abs(x2), 1 / 3));\n }\n\n y1 = x1.add(x2);\n\n z1 = x1.add(x2).multiplyConstant(-1 / 2);\n z2 = x1.add(x2.negate()).multiplyConstant(Math.sqrt(3) / 2);\n\n y2 = z1.add(i.multiply(z2));\n y3 = z1.add(i.negate().multiply(z2));\n\n var result = [];\n\n if (y1.isReal()) {\n result.push(round(y1.real + b3a, PRECISION));\n }\n if (y2.isReal()) {\n result.push(round(y2.real + b3a, PRECISION));\n }\n if (y3.isReal()) {\n result.push(round(y3.real + b3a, PRECISION));\n }\n\n return result;\n}","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\n\nexport default function hasRootsInRange(points, point, field, rootField, range) {\n var polynomial = toCubicPolynomial(points, rootField);\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point[rootField]);\n var intersection;\n\n for (var idx = 0; idx < roots.length; idx++) {\n if (0 <= roots[idx] && roots[idx] <= 1) {\n intersection = calculateCurveAt(roots[idx], field, points);\n if (Math.abs(intersection - point[field]) <= range) {\n return true;\n }\n }\n }\n}","export default function lineIntersectionsCount(a, b, point) {\n var intersects;\n if (a.x !== b.x) {\n var minX = Math.min(a.x, b.x);\n var maxX = Math.max(a.x, b.x);\n var minY = Math.min(a.y, b.y);\n var maxY = Math.max(a.y, b.y);\n var inRange = minX <= point.x && point.x < maxX;\n\n if (minY === maxY) {\n intersects = point.y <= minY && inRange;\n } else {\n intersects = inRange && (((maxY - minY) * ((a.x - b.x) * (a.y - b.y) > 0 ? point.x - minX : maxX - point.x)) / (maxX - minX) + minY - point.y) >= 0;\n }\n }\n\n return intersects ? 1 : 0;\n}","import { defined } from '../util';\nimport Point from '../geometry/point';\n\nfunction pointAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, Point.create(value));\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction definePointAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = pointAccessor(names[i]);\n }\n}\n\nvar withPoints = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n definePointAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withPoints;\n","import HasObservers from '../core/has-observers';\nimport Rect from './rect';\nimport Point from './point';\nimport transform from './transform';\nimport { deg, MIN_NUM, MAX_NUM } from '../util';\nimport isOutOfEndPoint from './math/is-out-of-end-point';\nimport calculateCurveAt from './math/calculate-curve-at';\nimport hasRootsInRange from './math/has-roots-in-range';\nimport curveIntersectionsCount from './math/curve-intersections-count';\nimport lineIntersectionsCount from './math/line-intersections-count';\nimport withPoints from '../mixins/with-points';\n\n\nvar points = [ \"anchor\", \"controlIn\", \"controlOut\" ];\n\nvar Segment = (function (superclass) {\n function Segment(anchor, controlIn, controlOut) {\n superclass.call(this);\n\n this.anchor(anchor || new Point());\n this.controlIn(controlIn);\n this.controlOut(controlOut);\n }\n\n if ( superclass ) Segment.__proto__ = superclass;\n Segment.prototype = Object.create( superclass && superclass.prototype );\n Segment.prototype.constructor = Segment;\n\n Segment.prototype.bboxTo = function bboxTo (toSegment, matrix) {\n var segmentAnchor = this.anchor().transformCopy(matrix);\n var toSegmentAnchor = toSegment.anchor().transformCopy(matrix);\n var rect;\n\n if (this.controlOut() && toSegment.controlIn()) {\n rect = this._curveBoundingBox(\n segmentAnchor, this.controlOut().transformCopy(matrix),\n toSegment.controlIn().transformCopy(matrix), toSegmentAnchor\n );\n } else {\n rect = this._lineBoundingBox(segmentAnchor, toSegmentAnchor);\n }\n\n return rect;\n };\n\n Segment.prototype._lineBoundingBox = function _lineBoundingBox (p1, p2) {\n return Rect.fromPoints(p1, p2);\n };\n\n Segment.prototype._curveBoundingBox = function _curveBoundingBox (p1, cp1, cp2, p2) {\n var points = [ p1, cp1, cp2, p2 ];\n var extremesX = this._curveExtremesFor(points, \"x\");\n var extremesY = this._curveExtremesFor(points, \"y\");\n var xLimits = arrayLimits([ extremesX.min, extremesX.max, p1.x, p2.x ]);\n var yLimits = arrayLimits([ extremesY.min, extremesY.max, p1.y, p2.y ]);\n\n return Rect.fromPoints(new Point(xLimits.min, yLimits.min), new Point(xLimits.max, yLimits.max));\n };\n\n Segment.prototype._curveExtremesFor = function _curveExtremesFor (points, field) {\n var extremes = this._curveExtremes(\n points[0][field], points[1][field],\n points[2][field], points[3][field]\n );\n\n return {\n min: calculateCurveAt(extremes.min, field, points),\n max: calculateCurveAt(extremes.max, field, points)\n };\n };\n\n Segment.prototype._curveExtremes = function _curveExtremes (x1, x2, x3, x4) {\n var a = x1 - 3 * x2 + 3 * x3 - x4;\n var b = - 2 * (x1 - 2 * x2 + x3);\n var c = x1 - x2;\n var sqrt = Math.sqrt(b * b - 4 * a * c);\n var t1 = 0;\n var t2 = 1;\n\n if (a === 0) {\n if (b !== 0) {\n t1 = t2 = -c / b;\n }\n } else if (!isNaN(sqrt)) {\n t1 = (- b + sqrt) / (2 * a);\n t2 = (- b - sqrt) / (2 * a);\n }\n\n var min = Math.max(Math.min(t1, t2), 0);\n if (min < 0 || min > 1) {\n min = 0;\n }\n\n var max = Math.min(Math.max(t1, t2), 1);\n if (max > 1 || max < 0) {\n max = 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n Segment.prototype._intersectionsTo = function _intersectionsTo (segment, point) {\n var intersectionsCount;\n if (this.controlOut() && segment.controlIn()) {\n intersectionsCount = curveIntersectionsCount([ this.anchor(), this.controlOut(), segment.controlIn(), segment.anchor() ], point, this.bboxTo(segment));\n } else {\n intersectionsCount = lineIntersectionsCount(this.anchor(), segment.anchor(), point);\n }\n return intersectionsCount;\n };\n\n Segment.prototype._isOnCurveTo = function _isOnCurveTo (segment, point, width, endSegment) {\n var bbox = this.bboxTo(segment).expand(width, width);\n if (bbox.containsPoint(point)) {\n var p1 = this.anchor();\n var p2 = this.controlOut();\n var p3 = segment.controlIn();\n var p4 = segment.anchor();\n\n if (endSegment === \"start\" && p1.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p1, p2, point);\n } else if (endSegment === \"end\" && p4.distanceTo(point) <= width) {\n return !isOutOfEndPoint(p4, p3, point);\n }\n\n //the approach is not entirely correct but is close and the alternatives are solving a 6th degree polynomial or testing the segment points\n var points = [ p1, p2, p3, p4 ];\n if (hasRootsInRange(points, point, \"x\", \"y\", width) || hasRootsInRange(points, point, \"y\", \"x\", width)) {\n return true;\n }\n var rotation = transform().rotate(45, point);\n var rotatedPoints = [ p1.transformCopy(rotation), p2.transformCopy(rotation), p3.transformCopy(rotation), p4.transformCopy(rotation) ];\n return hasRootsInRange(rotatedPoints, point, \"x\", \"y\", width) || hasRootsInRange(rotatedPoints, point, \"y\", \"x\", width);\n }\n };\n\n Segment.prototype._isOnLineTo = function _isOnLineTo (segment, point, width) {\n var p1 = this.anchor();\n var p2 = segment.anchor();\n var angle = deg(Math.atan2(p2.y - p1.y, p2.x - p1.x));\n var rect = new Rect([ p1.x, p1.y - width / 2 ], [ p1.distanceTo(p2), width ]);\n return rect.containsPoint(point.transformCopy(transform().rotate(-angle, p1)));\n };\n\n Segment.prototype._isOnPathTo = function _isOnPathTo (segment, point, width, endSegment) {\n var isOnPath;\n if (this.controlOut() && segment.controlIn()) {\n isOnPath = this._isOnCurveTo(segment, point, width / 2, endSegment);\n } else {\n isOnPath = this._isOnLineTo(segment, point, width);\n }\n return isOnPath;\n };\n\n return Segment;\n}(withPoints(HasObservers, points)));\n\nfunction arrayLimits(arr) {\n var length = arr.length;\n var min = MAX_NUM;\n var max = MIN_NUM;\n\n for (var i = 0; i < length; i ++) {\n max = Math.max(max, arr[i]);\n min = Math.min(min, arr[i]);\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nexport default Segment;\n","import toCubicPolynomial from './to-cubic-polynomial';\nimport solveCubicEquation from './solve-cubic-equation';\nimport calculateCurveAt from './calculate-curve-at';\nimport close from './close';\n\nexport default function curveIntersectionsCount(points, point, bbox) {\n var polynomial = toCubicPolynomial(points, \"x\");\n var roots = solveCubicEquation(polynomial[0], polynomial[1], polynomial[2], polynomial[3] - point.x);\n var rayIntersection, intersectsRay;\n var count = 0;\n for (var i = 0; i < roots.length; i++) {\n rayIntersection = calculateCurveAt(roots[i], \"y\", points);\n intersectsRay = close(rayIntersection, point.y) || rayIntersection > point.y;\n if (intersectsRay && (((roots[i] === 0 || roots[i] === 1) && bbox.bottomRight().x > point.x) || (0 < roots[i] && roots[i] < 1))) {\n count++;\n }\n }\n\n return count;\n}","import { Point, Segment } from '../../geometry';\nimport { last, round } from '../../util';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\nvar X = \"x\";\nvar Y = \"y\";\n\nexport function pointsToCurve(pointsIn, closed) {\n var points = pointsIn.slice(0);\n var segments = [];\n var length = points.length;\n\n if (length > 2) {\n removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = getTangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new Segment(\n p1,\n secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = getControlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = getTangent(p0, p1, X,Y);\n initialControlPoint = firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = getControlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = getControlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = getTangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new Segment(\n p2,\n secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n}\n\nexport function pointsToClosedCurve(pointsIn) {\n return pointsToCurve(pointsIn, true);\n}\n\nexport function removeDuplicates(idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n}\n\nexport function invertAxis(p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = lineFunction(p0,p1);\n var y2 = calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n}\n\nexport function isLine(p0, p1, p2) {\n var fn = lineFunction(p0, p1);\n var y2 = calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n}\n\nexport function lineFunction(p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n}\n\nexport function getControlPoints(p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (isLine(p0, p1, p2)) {\n tangent = getTangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: isMonotonicByField(p0, p1, p2, X),\n y: isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = getTangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondCP = secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstCP = firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n restrictControlPoint(p0, p1, secondCP, tangent);\n restrictControlPoint(p1, p2, firstCP, tangent);\n }\n\n return [ secondCP, firstCP ];\n}\n\nexport function restrictControlPoint(p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n}\n\nexport function getTangent(p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n}\n\nexport function isMonotonicByField(p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n}\n\nexport function firstControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n}\n\nexport function secondControlPoint(tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n}\n\nexport function point(xValue, yValue, xField, yField) {\n var controlPoint = new Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n}\n\nexport function calculateFunction(fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n}\n\nexport function numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n","import { defined } from '../util';\n\nvar GRADIENT = \"Gradient\";\n\nvar paintable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.fill = function fill (color, opacity) {\n var options = this.options;\n\n if (defined(color)) {\n if (color && color.nodeType !== GRADIENT) {\n var newFill = {\n color: color\n };\n if (defined(opacity)) {\n newFill.opacity = opacity;\n }\n options.set(\"fill\", newFill);\n } else {\n options.set(\"fill\", color);\n }\n\n return this;\n }\n\n return options.get(\"fill\");\n };\n\n anonymous.prototype.stroke = function stroke (color, width, opacity) {\n if (defined(color)) {\n this.options.set(\"stroke.color\", color);\n\n if (defined(width)) {\n this.options.set(\"stroke.width\", width);\n }\n\n if (defined(opacity)) {\n this.options.set(\"stroke.opacity\", opacity);\n }\n\n return this;\n }\n\n return this.options.get(\"stroke\");\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default paintable;\n","import Matrix from '../geometry/matrix';\nimport toMatrix from '../geometry/to-matrix';\n\nvar IDENTITY_MATRIX_HASH = Matrix.IDENTITY.toString();\n\nvar measurable = function (TBase) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n var matrixHash = combinedMatrix ? combinedMatrix.toString() : IDENTITY_MATRIX_HASH;\n var bbox;\n\n if (this._bboxCache && this._matrixHash === matrixHash) {\n bbox = this._bboxCache.clone();\n } else {\n bbox = this._bbox(combinedMatrix);\n this._bboxCache = bbox ? bbox.clone() : null;\n this._matrixHash = matrixHash;\n }\n\n var strokeWidth = this.options.get(\"stroke.width\");\n if (strokeWidth && bbox) {\n bbox.expand(strokeWidth / 2);\n }\n\n return bbox;\n };\n\n anonymous.prototype.geometryChange = function geometryChange () {\n delete this._bboxCache;\n this.trigger(\"geometryChange\", {\n element: this\n });\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default measurable;","import Point from '../geometry/point';\nimport { last } from '../util';\n\nvar ShapeMap = {\n l: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 2) {\n var point = new Point(parameters[i], parameters[i + 1]);\n\n if (options.isRelative) {\n point.translateWith(position);\n }\n\n path.lineTo(point.x, point.y);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n c: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 6) {\n var controlOut = new Point(parameters[i], parameters[i + 1]);\n var controlIn = new Point(parameters[i + 2], parameters[i + 3]);\n var point = new Point(parameters[i + 4], parameters[i + 5]);\n if (options.isRelative) {\n controlIn.translateWith(position);\n controlOut.translateWith(position);\n point.translateWith(position);\n }\n\n path.curveTo(controlOut, controlIn, point);\n\n position.x = point.x;\n position.y = point.y;\n }\n },\n\n v: function(path, options) {\n var value = options.isRelative ? 0 : options.position.x;\n\n toLineParamaters(options.parameters, true, value);\n this.l(path, options);\n },\n\n h: function(path, options) {\n var value = options.isRelative ? 0 : options.position.y;\n\n toLineParamaters(options.parameters, false, value);\n this.l(path, options);\n },\n\n a: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 7) {\n var radiusX = parameters[i];\n var radiusY = parameters[i + 1];\n var rotation = parameters[i + 2];\n var largeArc = parameters[i + 3];\n var swipe = parameters[i + 4];\n var endPoint = new Point(parameters[i + 5], parameters[i + 6]);\n\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n if (position.x !== endPoint.x || position.y !== endPoint.y) {\n path.arcTo(endPoint, radiusX, radiusY, largeArc, swipe, rotation);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n },\n\n s: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var lastControlIn;\n\n if (previousCommand === \"s\" || previousCommand === \"c\") {\n lastControlIn = last(last(path.paths).segments).controlIn();\n }\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlIn = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n var controlOut = (void 0);\n\n if (options.isRelative) {\n controlIn.translateWith(position);\n endPoint.translateWith(position);\n }\n\n if (lastControlIn) {\n controlOut = reflectionPoint(lastControlIn, position);\n } else {\n controlOut = position.clone();\n }\n\n lastControlIn = controlIn;\n\n path.curveTo(controlOut, controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n q: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n\n for (var i = 0; i < parameters.length; i += 4) {\n var controlPoint = new Point(parameters[i], parameters[i + 1]);\n var endPoint = new Point(parameters[i + 2], parameters[i + 3]);\n\n if (options.isRelative) {\n controlPoint.translateWith(position);\n endPoint.translateWith(position);\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n },\n\n t: function(path, options) {\n var parameters = options.parameters;\n var position = options.position;\n var previousCommand = options.previousCommand;\n var controlPoint;\n\n if (previousCommand === \"q\" || previousCommand === \"t\") {\n var lastSegment = last(last(path.paths).segments);\n controlPoint = lastSegment.controlIn().clone()\n .translateWith(position.scaleCopy(-1 / 3))\n .scale(3 / 2);\n }\n\n for (var i = 0; i < parameters.length; i += 2) {\n var endPoint = new Point(parameters[i], parameters[i + 1]);\n if (options.isRelative) {\n endPoint.translateWith(position);\n }\n\n if (controlPoint) {\n controlPoint = reflectionPoint(controlPoint, position);\n } else {\n controlPoint = position.clone();\n }\n\n var cubicControlPoints = quadraticToCubicControlPoints(position, controlPoint, endPoint);\n\n path.curveTo(cubicControlPoints.controlOut, cubicControlPoints.controlIn, endPoint);\n\n position.x = endPoint.x;\n position.y = endPoint.y;\n }\n }\n};\n\nfunction toLineParamaters(parameters, isVertical, value) {\n var insertPosition = isVertical ? 0 : 1;\n\n for (var i = 0; i < parameters.length; i += 2) {\n parameters.splice(i + insertPosition, 0, value);\n }\n}\n\nfunction reflectionPoint(point, center) {\n if (point && center) {\n return center.scaleCopy(2).translate(-point.x, -point.y);\n }\n}\n\nvar third = 1 / 3;\n\nfunction quadraticToCubicControlPoints(position, controlPoint, endPoint) {\n var scaledPoint = controlPoint.clone().scale(2 / 3);\n return {\n controlOut: scaledPoint.clone().translateWith(position.scaleCopy(third)),\n controlIn: scaledPoint.translateWith(endPoint.scaleCopy(third))\n };\n}\n\nexport default ShapeMap;","import Point from '../geometry/point';\nimport ShapeMap from './shape-map';\n\nvar SEGMENT_REGEX = /([a-df-z]{1})([^a-df-z]*)(z)?/gi;\nvar SPLIT_REGEX = /[,\\s]?([+\\-]?(?:\\d*\\.\\d+|\\d+)(?:[eE][+\\-]?\\d+)?)/g;\nvar MOVE = \"m\";\nvar CLOSE = \"z\";\n\nfunction parseParameters(str) {\n var parameters = [];\n str.replace(SPLIT_REGEX, function(match, number) {\n parameters.push(parseFloat(number));\n });\n return parameters;\n}\n\nfunction parsePath(pathInstance, str) {\n var position = new Point();\n var previousCommand;\n\n str.replace(SEGMENT_REGEX, function (match, element, params, closePath) {\n var command = element.toLowerCase();\n var isRelative = command === element;\n var parameters = parseParameters(params.trim());\n\n if (command === MOVE) {\n if (isRelative) {\n position.x += parameters[0];\n position.y += parameters[1];\n } else {\n position.x = parameters[0];\n position.y = parameters[1];\n }\n\n pathInstance.moveTo(position.x, position.y);\n\n if (parameters.length > 2) {\n command = \"l\";\n parameters.splice(0, 2);\n }\n }\n\n if (ShapeMap[command]) {\n ShapeMap[command](\n pathInstance, {\n parameters: parameters,\n position: position,\n isRelative: isRelative,\n previousCommand: previousCommand\n }\n );\n\n if (closePath && closePath.toLowerCase() === CLOSE) {\n pathInstance.close();\n }\n } else if (command !== MOVE) {\n throw new Error(\"Error while parsing SVG path. Unsupported command: \" + command);\n }\n\n previousCommand = command;\n });\n\n return pathInstance;\n}\n\nexport default parsePath;\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsBoundingBox(elements, applyTransform, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = applyTransform ? element.bbox(transformation) : element.rawBBox();\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}\n\n","import Rect from '../../geometry/rect';\n\nexport default function elementsClippedBoundingBox(elements, transformation) {\n var boundingBox;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n if (element.visible()) {\n var elementBoundingBox = element.clippedBBox(transformation);\n if (elementBoundingBox) {\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, elementBoundingBox);\n } else {\n boundingBox = elementBoundingBox;\n }\n }\n }\n }\n\n return boundingBox;\n}","import GeometryElementsArray from './geometry-elements-array';\nimport Element from './element';\nimport { pointsToCurve } from './utils/points-to-curve';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport Arc from '../geometry/arc';\nimport Rect from '../geometry/rect';\nimport Segment from '../geometry/segment';\nimport Point from '../geometry/point';\nimport Size from '../geometry/size';\nimport lineIntersectionsCount from '../geometry/math/line-intersections-count';\nimport { defined, last, rad } from '../util';\nimport parsePath from '../parsing/parse-path';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\nimport limitValue from '../util/limit-value';\n\nvar SPACE = ' ';\nvar printPoints = function (precision) { return function () {\n var points = [], len = arguments.length;\n while ( len-- ) points[ len ] = arguments[ len ];\n\n return points.map(function (p) { return p.toString(precision); }).join(SPACE);\n; } };\nvar segmentType = function (segmentStart, segmentEnd) { return segmentStart.controlOut() && segmentEnd.controlIn() ? 'C' : 'L'; };\n\nexport var Path = (function (superclass) {\n function Path(options) {\n superclass.call(this, options);\n this.segments = new GeometryElementsArray();\n this.segments.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n\n if (!defined(this.options.stroke.lineJoin)) {\n this.options.set('stroke.lineJoin', 'miter');\n }\n }\n }\n\n if ( superclass ) Path.__proto__ = superclass;\n Path.prototype = Object.create( superclass && superclass.prototype );\n Path.prototype.constructor = Path;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return 'Path';\n };\n\n Path.prototype.moveTo = function moveTo (x, y) {\n this.suspend();\n this.segments.elements([]);\n this.resume();\n\n this.lineTo(x, y);\n\n return this;\n };\n\n Path.prototype.lineTo = function lineTo (x, y) {\n var point = defined(y) ? new Point(x, y) : x;\n var segment = new Segment(point);\n\n this.segments.push(segment);\n\n return this;\n };\n\n Path.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var segment = new Segment(point, controlIn);\n this.suspend();\n lastSegment.controlOut(controlOut);\n this.resume();\n\n this.segments.push(segment);\n }\n\n return this;\n };\n\n Path.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var start = rad(startAngle);\n var center = new Point(anchor.x - radiusX * Math.cos(start),\n anchor.y - radiusY * Math.sin(start));\n var arc = new Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radiusX,\n radiusY: radiusY,\n anticlockwise: anticlockwise\n });\n\n this._addArcSegments(arc);\n }\n\n return this;\n };\n\n Path.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.segments.length > 0) {\n var lastSegment = last(this.segments);\n var anchor = lastSegment.anchor();\n var arc = Arc.fromPoints(anchor, Point.create(end), rx, ry, largeArc, swipe, rotation);\n\n this._addArcSegments(arc);\n }\n return this;\n };\n\n Path.prototype._addArcSegments = function _addArcSegments (arc) {\n var this$1 = this;\n\n this.suspend();\n\n var curvePoints = arc.curvePoints();\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n this$1.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n\n this.resume();\n this.geometryChange();\n };\n\n Path.prototype.close = function close () {\n this.options.closed = true;\n this.geometryChange();\n\n return this;\n };\n\n Path.prototype.rawBBox = function rawBBox () {\n return this._bbox();\n };\n\n Path.prototype.toString = function toString (digits) {\n var output = '';\n\n var segments = this.segments;\n var length = segments.length;\n if (length > 0) {\n var parts = [];\n var print = printPoints(digits);\n var currentType;\n\n for (var i = 1; i < length; i++) {\n var type = segmentType(segments[i - 1], segments[i]);\n if (type !== currentType) {\n currentType = type;\n parts.push(type);\n }\n\n if (type === 'L') {\n parts.push(print(segments[i].anchor()));\n } else {\n parts.push(print(\n segments[i - 1].controlOut(), segments[i].controlIn(), segments[i].anchor()\n ));\n }\n }\n\n output = 'M' + print(segments[0].anchor()) + SPACE + parts.join(SPACE);\n if (this.options.closed) {\n output += 'Z';\n }\n }\n\n return output;\n };\n\n Path.prototype._containsPoint = function _containsPoint (point) {\n var segments = this.segments;\n var length = segments.length;\n var intersectionsCount = 0;\n var previous, current;\n\n for (var idx = 1; idx < length; idx++) {\n previous = segments[idx - 1];\n current = segments[idx];\n intersectionsCount += previous._intersectionsTo(current, point);\n }\n\n if (this.options.closed || !segments[0].anchor().equals(segments[length - 1].anchor())) {\n intersectionsCount += lineIntersectionsCount(segments[0].anchor(), segments[length - 1].anchor(), point);\n }\n\n return intersectionsCount % 2 !== 0;\n };\n\n Path.prototype._isOnPath = function _isOnPath (point, width) {\n var segments = this.segments;\n var length = segments.length;\n var pathWidth = width || this.options.stroke.width;\n\n if (length > 1) {\n if (segments[0]._isOnPathTo(segments[1], point, pathWidth, 'start')) {\n return true;\n }\n\n for (var idx = 2; idx <= length - 2; idx++) {\n if (segments[idx - 1]._isOnPathTo(segments[idx], point, pathWidth)) {\n return true;\n }\n }\n\n if (segments[length - 2]._isOnPathTo(segments[length - 1], point, pathWidth, 'end')) {\n return true;\n }\n }\n return false;\n };\n\n Path.prototype._bbox = function _bbox (matrix) {\n var segments = this.segments;\n var length = segments.length;\n var boundingBox;\n\n if (length === 1) {\n var anchor = segments[0].anchor().transformCopy(matrix);\n boundingBox = new Rect(anchor, Size.ZERO);\n } else if (length > 0) {\n for (var i = 1; i < length; i++) {\n var segmentBox = segments[i - 1].bboxTo(segments[i], matrix);\n if (boundingBox) {\n boundingBox = Rect.union(boundingBox, segmentBox);\n } else {\n boundingBox = segmentBox;\n }\n }\n }\n\n return boundingBox;\n };\n\n Path.parse = function parse (str, options) {\n return MultiPath.parse(str, options);\n };\n\n Path.fromRect = function fromRect (rect, options) {\n var path = new Path(options);\n var ref = rect.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n path.moveTo(rect.topLeft())\n .lineTo(rect.topRight())\n .lineTo(rect.bottomRight())\n .lineTo(rect.bottomLeft())\n .close();\n } else {\n var origin = rect.origin;\n var x = origin.x;\n var y = origin.y;\n var width = rect.width();\n var height = rect.height();\n rx = limitValue(rx, 0, width / 2);\n ry = limitValue(ry, 0, height / 2);\n\n path.moveTo(x + rx, y)\n .lineTo(x + width - rx, y)\n .arcTo([ x + width, y + ry ], rx, ry, false)\n .lineTo(x + width, y + height - ry)\n .arcTo([ x + width - rx, y + height ], rx, ry, false)\n .lineTo(x + rx, y + height)\n .arcTo([ x, y + height - ry ], rx, ry, false)\n .lineTo(x, y + ry)\n .arcTo([ x + rx, y ], rx, ry, false);\n }\n\n return path;\n };\n\n Path.fromPoints = function fromPoints (points, options) {\n if (points) {\n var path = new Path(options);\n\n for (var i = 0; i < points.length; i++) {\n var point = Point.create(points[i]);\n if (point) {\n if (i === 0) {\n path.moveTo(point);\n } else {\n path.lineTo(point);\n }\n }\n }\n\n return path;\n }\n };\n\n Path.curveFromPoints = function curveFromPoints (points, options) {\n if (points) {\n var segments = pointsToCurve(points);\n var path = new Path(options);\n path.segments.push.apply(path.segments, segments);\n\n return path;\n }\n };\n\n Path.fromArc = function fromArc (arc, options) {\n var path = new Path(options);\n var startAngle = arc.startAngle;\n var start = arc.pointAt(startAngle);\n path.moveTo(start.x, start.y);\n path.arc(startAngle, arc.endAngle, arc.radiusX, arc.radiusY, arc.anticlockwise);\n return path;\n };\n\n Object.defineProperties( Path.prototype, prototypeAccessors );\n\n return Path;\n}(paintable(measurable(Element))));\n\nexport var MultiPath = (function (superclass) {\n function MultiPath(options) {\n superclass.call(this, options);\n this.paths = new GeometryElementsArray();\n this.paths.addObserver(this);\n\n if (!defined(this.options.stroke)) {\n this.stroke('#000');\n }\n }\n\n if ( superclass ) MultiPath.__proto__ = superclass;\n MultiPath.prototype = Object.create( superclass && superclass.prototype );\n MultiPath.prototype.constructor = MultiPath;\n\n var prototypeAccessors$1 = { nodeType: { configurable: true } };\n\n MultiPath.parse = function parse (str, options) {\n var instance = new MultiPath(options);\n return parsePath(instance, str);\n };\n\n MultiPath.prototype.toString = function toString (digits) {\n var paths = this.paths;\n var output = '';\n\n if (paths.length > 0) {\n var result = [];\n\n for (var i = 0; i < paths.length; i++) {\n result.push(paths[i].toString(digits));\n }\n\n output = result.join(SPACE);\n }\n\n return output;\n };\n\n prototypeAccessors$1.nodeType.get = function () {\n return 'MultiPath';\n };\n\n MultiPath.prototype.moveTo = function moveTo (x, y) {\n var path = new Path();\n path.moveTo(x, y);\n\n this.paths.push(path);\n\n return this;\n };\n\n MultiPath.prototype.lineTo = function lineTo (x, y) {\n if (this.paths.length > 0) {\n last(this.paths).lineTo(x, y);\n }\n\n return this;\n };\n\n MultiPath.prototype.curveTo = function curveTo (controlOut, controlIn, point) {\n if (this.paths.length > 0) {\n last(this.paths).curveTo(controlOut, controlIn, point);\n }\n\n return this;\n };\n\n MultiPath.prototype.arc = function arc (startAngle, endAngle, radiusX, radiusY, anticlockwise) {\n if (this.paths.length > 0) {\n last(this.paths).arc(startAngle, endAngle, radiusX, radiusY, anticlockwise);\n }\n\n return this;\n };\n\n MultiPath.prototype.arcTo = function arcTo (end, rx, ry, largeArc, swipe, rotation) {\n if (this.paths.length > 0) {\n last(this.paths).arcTo(end, rx, ry, largeArc, swipe, rotation);\n }\n\n return this;\n };\n\n MultiPath.prototype.close = function close () {\n if (this.paths.length > 0) {\n last(this.paths).close();\n }\n\n return this;\n };\n\n MultiPath.prototype._bbox = function _bbox (matrix) {\n return elementsBoundingBox(this.paths, true, matrix);\n };\n\n MultiPath.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.paths, false);\n };\n\n MultiPath.prototype._containsPoint = function _containsPoint (point) {\n var paths = this.paths;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._containsPoint(point)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._isOnPath = function _isOnPath (point) {\n var paths = this.paths;\n var width = this.options.stroke.width;\n\n for (var idx = 0; idx < paths.length; idx++) {\n if (paths[idx]._isOnPath(point, width)) {\n return true;\n }\n }\n return false;\n };\n\n MultiPath.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.paths, this.currentTransform(transformation));\n };\n\n Object.defineProperties( MultiPath.prototype, prototypeAccessors$1 );\n\n return MultiPath;\n}(paintable(measurable(Element))));\n\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\nimport { Class } from '../common';\n\nvar DIRECTION_ANGLE = 0.001; //any value that will make the endAngle bigger than the start angle will work here.\n\nvar ShapeBuilder = (function (Class) {\n function ShapeBuilder () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) ShapeBuilder.__proto__ = Class;\n ShapeBuilder.prototype = Object.create( Class && Class.prototype );\n ShapeBuilder.prototype.constructor = ShapeBuilder;\n\n ShapeBuilder.prototype.createRing = function createRing (sector, options) {\n var startAngle = sector.startAngle + 180;\n var endAngle = sector.angle + startAngle;\n\n //required in order to avoid reversing the arc direction in cases like 0.000000000000001 + 100 === 100\n if (sector.angle > 0 && startAngle === endAngle) {\n endAngle += DIRECTION_ANGLE;\n }\n\n var center = new geom.Point(sector.center.x, sector.center.y);\n var radius = Math.max(sector.radius, 0);\n var innerRadius = Math.max(sector.innerRadius, 0);\n var arc = new geom.Arc(center, {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: radius,\n radiusY: radius\n });\n var path = draw.Path.fromArc(arc, options).close();\n\n if (innerRadius) {\n arc.radiusX = arc.radiusY = innerRadius;\n var innerEnd = arc.pointAt(endAngle);\n path.lineTo(innerEnd.x, innerEnd.y);\n path.arc(endAngle, startAngle, innerRadius, innerRadius, true);\n } else {\n path.lineTo(center.x, center.y);\n }\n\n return path;\n };\n\n return ShapeBuilder;\n}(Class));\n\nShapeBuilder.current = new ShapeBuilder();\n\nexport default ShapeBuilder;","import withAccessors from '../mixins/with-accessors';\nimport Point from './point';\nimport Rect from './rect';\nimport ellipseExtremeAngles from './math/ellipse-extreme-angles';\nimport HasObservers from '../core/has-observers';\nimport { rad } from '../util';\n\n\nvar PI_DIV_2 = Math.PI / 2;\n\nvar Circle = (function (superclass) {\n function Circle(center, radius) {\n if ( center === void 0 ) center = new Point();\n if ( radius === void 0 ) radius = 0;\n\n superclass.call(this);\n\n this.setCenter(center);\n this.setRadius(radius);\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n Circle.prototype.setCenter = function setCenter (value) {\n this._observerField(\"center\", Point.create(value));\n this.geometryChange();\n return this;\n };\n\n Circle.prototype.getCenter = function getCenter () {\n return this.center;\n };\n\n Circle.prototype.equals = function equals (other) {\n return other &&\n other.center.equals(this.center) &&\n other.radius === this.radius;\n };\n\n Circle.prototype.clone = function clone () {\n return new Circle(this.center.clone(), this.radius);\n };\n\n Circle.prototype.pointAt = function pointAt (angle) {\n return this._pointAt(rad(angle));\n };\n\n Circle.prototype.bbox = function bbox (matrix) {\n var this$1 = this;\n\n var extremeAngles = ellipseExtremeAngles(this.center, this.radius, this.radius, matrix);\n var minPoint = Point.maxPoint();\n var maxPoint = Point.minPoint();\n\n for (var i = 0; i < 4; i++) {\n var currentPointX = this$1._pointAt(extremeAngles.x + i * PI_DIV_2).transformCopy(matrix);\n var currentPointY = this$1._pointAt(extremeAngles.y + i * PI_DIV_2).transformCopy(matrix);\n var currentPoint = new Point(currentPointX.x, currentPointY.y);\n\n minPoint = Point.min(minPoint, currentPoint);\n maxPoint = Point.max(maxPoint, currentPoint);\n }\n\n return Rect.fromPoints(minPoint, maxPoint);\n };\n\n Circle.prototype._pointAt = function _pointAt (angle) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n\n return new Point(\n center.x + radius * Math.cos(angle),\n center.y + radius * Math.sin(angle)\n );\n };\n\n Circle.prototype.containsPoint = function containsPoint (point) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var inCircle = Math.pow(point.x - center.x, 2) +\n Math.pow(point.y - center.y, 2) <= Math.pow(radius, 2);\n return inCircle;\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point, width) {\n var ref = this;\n var center = ref.center;\n var radius = ref.radius;\n var pointDistance = center.distanceTo(point);\n\n return radius - width <= pointDistance && pointDistance <= radius + width;\n };\n\n return Circle;\n}(withAccessors(HasObservers, [ \"radius\" ])));\n\nexport default Circle;\n","import { defined } from '../util';\n\nfunction geometryAccessor(name) {\n var fieldName = \"_\" + name;\n return function(value) {\n if (defined(value)) {\n this._observerField(fieldName, value);\n this.geometryChange();\n return this;\n }\n\n return this[fieldName];\n };\n}\n\nfunction defineGeometryAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = geometryAccessor(names[i]);\n }\n}\n\nvar withGeometry = function (TBase, names) {\n if ( names === void 0 ) names = [ \"geometry\" ];\n\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineGeometryAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withGeometry;\n","import GeometryCircle from '../geometry/circle';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport { defined } from '../util';\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Circle = (function (superclass) {\n function Circle(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryCircle();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( superclass ) Circle.__proto__ = superclass;\n Circle.prototype = Object.create( superclass && superclass.prototype );\n Circle.prototype.constructor = Circle;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Circle\";\n };\n\n Circle.prototype.rawBBox = function rawBBox () {\n return this._geometry.bbox();\n };\n\n Circle.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Circle.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Circle.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Circle.prototype, prototypeAccessors );\n\n return Circle;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Circle;\n","var traversable = function (TBase, childrenField) { return (\n (function (TBase) {\n function anonymous () {\n TBase.apply(this, arguments);\n }\n\n if ( TBase ) anonymous.__proto__ = TBase;\n anonymous.prototype = Object.create( TBase && TBase.prototype );\n anonymous.prototype.constructor = anonymous;\n\n anonymous.prototype.traverse = function traverse (callback) {\n var children = this[childrenField];\n\n for (var i = 0; i < children.length; i++) {\n var child = children[i];\n\n if (child.traverse) {\n child.traverse(callback);\n } else {\n callback(child);\n }\n }\n\n return this;\n };\n\n return anonymous;\n }(TBase))\n); };\n\nexport default traversable;\n","import Element from './element';\nimport traversable from '../mixins/traversable';\nimport { append } from '../util';\nimport elementsBoundingBox from './utils/elements-bounding-box';\nimport elementsClippedBoundingBox from './utils/elements-clippend-bounding-box';\n\n\nvar Group = (function (superclass) {\n function Group(options) {\n superclass.call(this, options);\n this.children = [];\n }\n\n if ( superclass ) Group.__proto__ = superclass;\n Group.prototype = Object.create( superclass && superclass.prototype );\n Group.prototype.constructor = Group;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Group\";\n };\n\n Group.prototype.childrenChange = function childrenChange (action, items, index) {\n this.trigger(\"childrenChange\",{\n action: action,\n items: items,\n index: index\n });\n };\n\n Group.prototype.append = function append$1 () {\n append(this.children, arguments);\n this._reparent(arguments, this);\n\n this.childrenChange(\"add\", arguments);\n\n return this;\n };\n\n Group.prototype.insert = function insert (index, element) {\n this.children.splice(index, 0, element);\n element.parent = this;\n\n this.childrenChange(\"add\", [ element ], index);\n\n return this;\n };\n\n Group.prototype.insertAt = function insertAt (element, index) {\n return this.insert(index, element);\n };\n\n Group.prototype.remove = function remove (element) {\n var index = this.children.indexOf(element);\n if (index >= 0) {\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.removeAt = function removeAt (index) {\n if (0 <= index && index < this.children.length) {\n var element = this.children[index];\n this.children.splice(index, 1);\n element.parent = null;\n this.childrenChange(\"remove\", [ element ], index);\n }\n\n return this;\n };\n\n Group.prototype.clear = function clear () {\n var items = this.children;\n this.children = [];\n this._reparent(items, null);\n\n this.childrenChange(\"remove\", items, 0);\n\n return this;\n };\n\n Group.prototype.bbox = function bbox (transformation) {\n return elementsBoundingBox(this.children, true, this.currentTransform(transformation));\n };\n\n Group.prototype.rawBBox = function rawBBox () {\n return elementsBoundingBox(this.children, false);\n };\n\n Group.prototype._clippedBBox = function _clippedBBox (transformation) {\n return elementsClippedBoundingBox(this.children, this.currentTransform(transformation));\n };\n\n Group.prototype.currentTransform = function currentTransform (transformation) {\n return Element.prototype.currentTransform.call(this, transformation) || null;\n };\n\n Group.prototype.containsPoint = function containsPoint (point, parentTransform) {\n if (this.visible()) {\n var children = this.children;\n var transform = this.currentTransform(parentTransform);\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].containsPoint(point, transform)) {\n return true;\n }\n }\n }\n return false;\n };\n\n Group.prototype._reparent = function _reparent (elements, newParent) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var child = elements[i];\n var parent = child.parent;\n if (parent && parent !== this$1 && parent.remove) {\n parent.remove(child);\n }\n\n child.parent = newParent;\n }\n };\n\n Object.defineProperties( Group.prototype, prototypeAccessors );\n\n return Group;\n}(traversable(Element, \"children\")));\n\nexport default Group;","export function swing(position) {\n return 0.5 - Math.cos(position * Math.PI) / 2;\n}\n\nexport function linear(position) {\n return position;\n}\n\nexport function easeOutElastic(position, time, start, diff) {\n var s = 1.70158,\n p = 0,\n a = diff;\n\n if (position === 0) {\n return start;\n }\n\n if (position === 1) {\n return start + diff;\n }\n\n if (!p) {\n p = 0.5;\n }\n\n if (a < Math.abs(diff)) {\n a = diff;\n s = p / 4;\n } else {\n s = p / (2 * Math.PI) * Math.asin(diff / a);\n }\n\n return a * Math.pow(2, -10 * position) *\n Math.sin((Number(position) - s) * (1.1 * Math.PI) / p) + diff + start;\n}\n","var animationFrameProxy = function (callback) {\n var wnd = typeof window !== \"undefined\" ? window : {};\n var animationFrame = wnd.requestAnimationFrame ||\n wnd.webkitRequestAnimationFrame ||\n wnd.mozRequestAnimationFrame ||\n wnd.oRequestAnimationFrame ||\n wnd.msRequestAnimationFrame ||\n function(callback) { setTimeout(callback, 1000 / 60); };\n\n animationFrameProxy = function (callback) { return animationFrame.call(wnd, callback); };\n animationFrameProxy(callback);\n};\n\nexport default animationFrameProxy;\n","import { Class } from '../common';\n\nvar instance;\n\nvar AnimationFactory = (function (Class) {\n function AnimationFactory() {\n Class.call(this);\n\n this._items = [];\n }\n\n if ( Class ) AnimationFactory.__proto__ = Class;\n AnimationFactory.prototype = Object.create( Class && Class.prototype );\n AnimationFactory.prototype.constructor = AnimationFactory;\n\n var staticAccessors = { current: { configurable: true } };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new AnimationFactory();\n }\n\n return instance;\n };\n\n AnimationFactory.prototype.register = function register (name, type) {\n this._items.push({\n name: name,\n type: type\n });\n };\n\n AnimationFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match;\n\n if (options && options.type) {\n var type = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name.toLowerCase() === type) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n };\n\n Object.defineProperties( AnimationFactory, staticAccessors );\n\n return AnimationFactory;\n}(Class));\n\nexport default AnimationFactory;\n","import * as easingFunctions from './easing-functions';\nimport { limitValue, now } from '../util';\nimport { animationFrame, Class } from '../common';\nimport AnimationFactory from './animation-factory';\n\nvar Animation = (function (Class) {\n function Animation(element, options) {\n Class.call(this);\n\n this.options = Object.assign({}, this.options, options);\n this.element = element;\n }\n\n if ( Class ) Animation.__proto__ = Class;\n Animation.prototype = Object.create( Class && Class.prototype );\n Animation.prototype.constructor = Animation;\n\n var prototypeAccessors = { options: { configurable: true } };\n\n Animation.create = function create (type, element, options) {\n return AnimationFactory.current.create(type, element, options);\n };\n\n prototypeAccessors.options.get = function () {\n return this._options || {\n duration: 500,\n easing: \"swing\"\n };\n };\n\n prototypeAccessors.options.set = function (value) {\n this._options = value;\n };\n\n Animation.prototype.setup = function setup () {};\n Animation.prototype.step = function step () {};\n\n Animation.prototype.play = function play () {\n var this$1 = this;\n\n var options = this.options;\n var duration = options.duration;\n var delay = options.delay; if ( delay === void 0 ) delay = 0;\n var easing = easingFunctions[options.easing];\n var start = now() + delay;\n var finish = start + duration;\n\n if (duration === 0) {\n this.step(1);\n this.abort();\n } else {\n setTimeout(function () {\n var loop = function () {\n if (this$1._stopped) {\n return;\n }\n\n var wallTime = now();\n\n var time = limitValue(wallTime - start, 0, duration);\n var position = time / duration;\n var easingPosition = easing(position, time, 0, 1, duration);\n\n this$1.step(easingPosition);\n\n if (wallTime < finish) {\n animationFrame(loop);\n } else {\n this$1.abort();\n }\n };\n\n loop();\n }, delay);\n }\n };\n\n Animation.prototype.abort = function abort () {\n this._stopped = true;\n };\n\n Animation.prototype.destroy = function destroy () {\n this.abort();\n };\n\n Object.defineProperties( Animation.prototype, prototypeAccessors );\n\n return Animation;\n}(Class));\n\nexport default Animation;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { WHITE } from '../common/constants';\nimport { Class, deepExtend, defined, valueOrDefault } from '../common';\n\nvar ChartElement = (function (Class) {\n function ChartElement(options) {\n Class.call(this);\n\n this.children = [];\n\n this.options = deepExtend({}, this.options, this.initUserOptions(options));\n }\n\n if ( Class ) ChartElement.__proto__ = Class;\n ChartElement.prototype = Object.create( Class && Class.prototype );\n ChartElement.prototype.constructor = ChartElement;\n\n ChartElement.prototype.initUserOptions = function initUserOptions (options) {\n return options;\n };\n\n ChartElement.prototype.reflow = function reflow (targetBox) {\n var children = this.children;\n var box;\n\n for (var i = 0; i < children.length; i++) {\n var currentChild = children[i];\n currentChild.reflow(targetBox);\n\n box = box ? box.wrap(currentChild.box) : currentChild.box.clone();\n }\n\n this.box = box || targetBox;\n };\n\n ChartElement.prototype.destroy = function destroy () {\n var children = this.children;\n\n if (this.animation) {\n this.animation.destroy();\n }\n\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n };\n\n ChartElement.prototype.getRoot = function getRoot () {\n var parent = this.parent;\n\n return parent ? parent.getRoot() : null;\n };\n\n ChartElement.prototype.getSender = function getSender () {\n var service = this.getService();\n if (service) {\n return service.sender;\n }\n };\n\n ChartElement.prototype.getService = function getService () {\n var element = this;\n while (element) {\n if (element.chartService) {\n return element.chartService;\n }\n element = element.parent;\n }\n };\n\n ChartElement.prototype.translateChildren = function translateChildren (dx, dy) {\n var children = this.children;\n var childrenCount = children.length;\n\n for (var i = 0; i < childrenCount; i++) {\n children[i].box.translate(dx, dy);\n }\n };\n\n ChartElement.prototype.append = function append () {\n var arguments$1 = arguments;\n var this$1 = this;\n\n for (var i = 0; i < arguments.length; i++) {\n var item = arguments$1[i];\n this$1.children.push(item);\n item.parent = this$1;\n }\n };\n\n ChartElement.prototype.renderVisual = function renderVisual () {\n if (this.options.visible === false) {\n return;\n }\n\n this.createVisual();\n\n this.addVisual();\n\n this.renderChildren();\n\n this.createAnimation();\n this.renderComplete();\n };\n\n ChartElement.prototype.addVisual = function addVisual () {\n if (this.visual) {\n this.visual.chartElement = this;\n\n if (this.parent) {\n this.parent.appendVisual(this.visual);\n }\n }\n };\n\n ChartElement.prototype.renderChildren = function renderChildren () {\n var children = this.children;\n var length = children.length;\n for (var i = 0; i < length; i++) {\n children[i].renderVisual();\n }\n };\n\n ChartElement.prototype.createVisual = function createVisual () {\n this.visual = new draw.Group({\n zIndex: this.options.zIndex,\n visible: valueOrDefault(this.options.visible, true)\n });\n };\n\n ChartElement.prototype.createAnimation = function createAnimation () {\n if (this.visual && this.options.animation) {\n this.animation = draw.Animation.create(\n this.visual, this.options.animation\n );\n }\n };\n\n ChartElement.prototype.appendVisual = function appendVisual (childVisual) {\n if (!childVisual.chartElement) {\n childVisual.chartElement = this;\n }\n\n if (childVisual.options.noclip) {\n this.clipRoot().visual.append(childVisual);\n } else if (defined(childVisual.options.zIndex)) {\n this.stackRoot().stackVisual(childVisual);\n } else if (this.isStackRoot) {\n this.stackVisual(childVisual);\n } else if (this.visual) {\n this.visual.append(childVisual);\n } else {\n // Allow chart elements without visuals to\n // pass through child visuals\n this.parent.appendVisual(childVisual);\n }\n };\n\n ChartElement.prototype.clipRoot = function clipRoot () {\n if (this.parent) {\n return this.parent.clipRoot();\n }\n\n return this;\n };\n\n ChartElement.prototype.stackRoot = function stackRoot () {\n if (this.parent) {\n return this.parent.stackRoot();\n }\n\n return this;\n };\n\n ChartElement.prototype.stackVisual = function stackVisual (childVisual) {\n var zIndex = childVisual.options.zIndex || 0;\n var visuals = this.visual.children;\n var length = visuals.length;\n var pos;\n\n for (pos = 0; pos < length; pos++) {\n var sibling = visuals[pos];\n var here = valueOrDefault(sibling.options.zIndex, 0);\n if (here > zIndex) {\n break;\n }\n }\n\n this.visual.insert(pos, childVisual);\n };\n\n ChartElement.prototype.traverse = function traverse (callback) {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n var child = children[i];\n\n callback(child);\n if (child.traverse) {\n child.traverse(callback);\n }\n }\n };\n\n ChartElement.prototype.closest = function closest (match) {\n var element = this;\n var matched = false;\n\n while (element && !matched) {\n matched = match(element);\n\n if (!matched) {\n element = element.parent;\n }\n }\n\n if (matched) {\n return element;\n }\n };\n\n ChartElement.prototype.renderComplete = function renderComplete () {};\n\n ChartElement.prototype.hasHighlight = function hasHighlight () {\n var options = (this.options || {}).highlight;\n return !(!this.createHighlight || (options && options.visible === false));\n };\n\n ChartElement.prototype.toggleHighlight = function toggleHighlight (show, opacity) {\n var this$1 = this;\n\n var options = (this.options || {}).highlight || {};\n var customVisual = options.visual;\n var highlight = this._highlight;\n\n if (!highlight) {\n var highlightOptions = {\n fill: {\n color: WHITE,\n opacity: opacity || 0.2\n },\n stroke: {\n color: WHITE,\n width: 1,\n opacity: opacity || 0.2\n }\n };\n\n if (customVisual) {\n highlight = this._highlight = customVisual(\n Object.assign(this.highlightVisualArgs(), {\n createVisual: function () { return this$1.createHighlight(highlightOptions); },\n sender: this.getSender(),\n series: this.series,\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n runningTotal: this.runningTotal,\n total: this.total\n }\n ));\n\n if (!highlight) {\n return;\n }\n } else {\n highlight = this._highlight = this.createHighlight(highlightOptions);\n }\n\n if (!defined(highlight.options.zIndex)) {\n highlight.options.zIndex = valueOrDefault(options.zIndex, this.options.zIndex);\n }\n\n this.appendVisual(highlight);\n }\n\n highlight.visible(show);\n };\n\n ChartElement.prototype.createGradientOverlay = function createGradientOverlay (element, options, gradientOptions) {\n var overlay = new draw.Path(Object.assign({\n stroke: {\n color: \"none\"\n },\n fill: this.createGradient(gradientOptions),\n closed: element.options.closed\n }, options));\n\n overlay.segments.elements(element.segments.elements());\n\n return overlay;\n };\n\n ChartElement.prototype.createGradient = function createGradient (options) {\n if (this.parent) {\n return this.parent.createGradient(options);\n }\n };\n\n ChartElement.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return true;\n };\n\n return ChartElement;\n}(Class));\n\nChartElement.prototype.options = { };\n\nexport default ChartElement;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { BLACK, LEFT, TOP, X, Y } from '../common/constants';\nimport { getSpacing, setDefaultOptions, valueOrDefault } from '../common';\n\nvar BoxElement = (function (ChartElement) {\n function BoxElement(options) {\n ChartElement.call(this, options);\n\n this.options.margin = getSpacing(this.options.margin);\n this.options.padding = getSpacing(this.options.padding);\n }\n\n if ( ChartElement ) BoxElement.__proto__ = ChartElement;\n BoxElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n BoxElement.prototype.constructor = BoxElement;\n\n BoxElement.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var options = this.options;\n var width = options.width;\n var height = options.height;\n var shrinkToFit = options.shrinkToFit;\n var hasSetSize = width && height;\n var margin = options.margin;\n var padding = options.padding;\n var borderWidth = options.border.width;\n var box;\n\n var reflowPaddingBox = function () {\n this$1.align(targetBox, X, options.align);\n this$1.align(targetBox, Y, options.vAlign);\n this$1.paddingBox = box.clone().unpad(margin).unpad(borderWidth);\n };\n\n var contentBox = targetBox.clone();\n if (hasSetSize) {\n contentBox.x2 = contentBox.x1 + width;\n contentBox.y2 = contentBox.y1 + height;\n }\n\n if (shrinkToFit) {\n contentBox.unpad(margin).unpad(borderWidth).unpad(padding);\n }\n\n ChartElement.prototype.reflow.call(this, contentBox);\n\n if (hasSetSize) {\n box = this.box = new Box(0, 0, width, height);\n } else {\n box = this.box;\n }\n\n if (shrinkToFit && hasSetSize) {\n reflowPaddingBox();\n contentBox = this.contentBox = this.paddingBox.clone().unpad(padding);\n } else {\n contentBox = this.contentBox = box.clone();\n box.pad(padding).pad(borderWidth).pad(margin);\n reflowPaddingBox();\n }\n\n this.translateChildren(\n box.x1 - contentBox.x1 + margin.left + borderWidth + padding.left,\n box.y1 - contentBox.y1 + margin.top + borderWidth + padding.top\n );\n\n var children = this.children;\n for (var i = 0; i < children.length; i++) {\n var item = children[i];\n item.reflow(item.box);\n }\n };\n\n BoxElement.prototype.align = function align (targetBox, axis, alignment) {\n this.box.align(targetBox, axis, alignment);\n };\n\n BoxElement.prototype.hasBox = function hasBox () {\n var options = this.options;\n return options.border.width || options.background;\n };\n\n BoxElement.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options;\n if (options.visible && this.hasBox()) {\n this.visual.append(draw.Path.fromRect(\n this.paddingBox.toRect(),\n this.visualStyle()\n ));\n }\n };\n\n BoxElement.prototype.visualStyle = function visualStyle () {\n var options = this.options;\n var border = options.border || {};\n\n return {\n stroke: {\n width: border.width,\n color: border.color,\n opacity: valueOrDefault(border.opacity, options.opacity),\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n cursor: options.cursor\n };\n };\n\n return BoxElement;\n}(ChartElement));\n\nsetDefaultOptions(BoxElement, {\n align: LEFT,\n vAlign: TOP,\n margin: {},\n padding: {},\n border: {\n color: BLACK,\n width: 0\n },\n background: \"\",\n shrinkToFit: false,\n width: 0,\n height: 0,\n visible: true\n});\n\nexport default BoxElement;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport { round, setDefaultOptions } from '../common';\nimport { CENTER, CIRCLE, COORD_PRECISION, CROSS, ROUNDED_RECT, TRIANGLE } from '../common/constants';\nimport { valueOrDefault } from '../drawing-utils';\nimport BoxElement from './box-element';\n\nvar ShapeElement = (function (BoxElement) {\n function ShapeElement(options, pointData) {\n BoxElement.call(this, options);\n\n this.pointData = pointData;\n }\n\n if ( BoxElement ) ShapeElement.__proto__ = BoxElement;\n ShapeElement.prototype = Object.create( BoxElement && BoxElement.prototype );\n ShapeElement.prototype.constructor = ShapeElement;\n\n ShapeElement.prototype.getElement = function getElement () {\n var ref = this;\n var options = ref.options;\n var box = ref.paddingBox;\n var type = options.type;\n var rotation = options.rotation;\n var center = box.center();\n var halfWidth = box.width() / 2;\n var halfHeight = box.height() / 2;\n\n if (!options.visible || !this.hasBox()) {\n return null;\n }\n\n var style = this.visualStyle();\n var element;\n\n if (type === CIRCLE) {\n element = new draw.Circle(\n new geom.Circle([\n round(box.x1 + halfWidth, COORD_PRECISION),\n round(box.y1 + halfHeight, COORD_PRECISION)\n ], Math.min(halfWidth, halfHeight)),\n style\n );\n } else if (type === TRIANGLE) {\n element = draw.Path.fromPoints([\n [ box.x1 + halfWidth, box.y1 ],\n [ box.x1, box.y2 ],\n [ box.x2, box.y2 ]\n ], style).close();\n } else if (type === CROSS) {\n element = new draw.MultiPath(style);\n\n element.moveTo(box.x1, box.y1).lineTo(box.x2, box.y2);\n element.moveTo(box.x1, box.y2).lineTo(box.x2, box.y1);\n } else {\n var rect = box.toRect();\n if (type === ROUNDED_RECT) {\n var borderRadius = valueOrDefault(options.borderRadius, rect.width() / 5);\n rect.setCornerRadius(borderRadius);\n }\n\n element = draw.Path.fromRect(rect, style);\n }\n\n if (rotation) {\n element.transform(geom.transform()\n .rotate(-rotation, [ center.x, center.y ])\n );\n }\n\n element.options.zIndex = options.zIndex;\n\n return element;\n };\n\n ShapeElement.prototype.createElement = function createElement () {\n var this$1 = this;\n\n var customVisual = this.options.visual;\n var pointData = this.pointData || {};\n var visual;\n\n if (customVisual) {\n visual = customVisual({\n value: pointData.value,\n dataItem: pointData.dataItem,\n sender: this.getSender(),\n series: pointData.series,\n category: pointData.category,\n rect: this.paddingBox.toRect(),\n options: this.visualOptions(),\n createVisual: function () { return this$1.getElement(); }\n });\n } else {\n visual = this.getElement();\n }\n\n return visual;\n };\n\n ShapeElement.prototype.visualOptions = function visualOptions () {\n var options = this.options;\n return {\n background: options.background,\n border: options.border,\n margin: options.margin,\n padding: options.padding,\n type: options.type,\n size: options.width,\n visible: options.visible\n };\n };\n\n ShapeElement.prototype.createVisual = function createVisual () {\n this.visual = this.createElement();\n };\n\n return ShapeElement;\n}(BoxElement));\n\nsetDefaultOptions(ShapeElement, {\n type: CIRCLE,\n align: CENTER,\n vAlign: CENTER\n});\n\nexport default ShapeElement;\n","import ElementsArray from '../shapes/elements-array';\n\nvar StopsArray = (function (ElementsArray) {\n function StopsArray () {\n ElementsArray.apply(this, arguments);\n }\n\n if ( ElementsArray ) StopsArray.__proto__ = ElementsArray;\n StopsArray.prototype = Object.create( ElementsArray && ElementsArray.prototype );\n StopsArray.prototype.constructor = StopsArray;\n\n StopsArray.prototype._change = function _change () {\n this.optionsChange({\n field: \"stops\"\n });\n };\n\n return StopsArray;\n}(ElementsArray));\n\nexport default StopsArray;","import { defined } from '../util';\n\nfunction optionsAccessor(name) {\n return function(value) {\n if (defined(value)) {\n this.options.set(name, value);\n return this;\n }\n\n return this.options.get(name);\n };\n}\n\nfunction defineOptionsAccessors(fn, names) {\n for (var i = 0; i < names.length; i++) {\n fn[names[i]] = optionsAccessor(names[i]);\n }\n}\n\nvar withOptions = function (TBase, names) {\n var result = (function (TBase) {\n function result () {\n TBase.apply(this, arguments);\n }if ( TBase ) result.__proto__ = TBase;\n result.prototype = Object.create( TBase && TBase.prototype );\n result.prototype.constructor = result;\n\n \n\n return result;\n }(TBase));\n defineOptionsAccessors(result.prototype, names);\n\n return result;\n};\n\nexport default withOptions;\n","import OptionsStore from '../core/options-store';\nimport withOptions from '../mixins/with-options';\nimport HasObservers from '../core/has-observers';\nimport { defined } from '../util';\n\n\nvar options = [ \"offset\", \"color\", \"opacity\" ];\n\nvar GradientStop = (function (superclass) {\n function GradientStop(offset, color, opacity) {\n superclass.call(this);\n\n this.options = new OptionsStore({\n offset: offset,\n color: color,\n opacity: defined(opacity) ? opacity : 1\n });\n\n this.options.addObserver(this);\n }\n\n if ( superclass ) GradientStop.__proto__ = superclass;\n GradientStop.prototype = Object.create( superclass && superclass.prototype );\n GradientStop.prototype.constructor = GradientStop;\n\n GradientStop.create = function create (arg) {\n if (defined(arg)) {\n var stop;\n if (arg instanceof GradientStop) {\n stop = arg;\n } else if (arg.length > 1) {\n stop = new GradientStop(arg[0], arg[1], arg[2]);\n } else {\n stop = new GradientStop(arg.offset, arg.color, arg.opacity);\n }\n\n return stop;\n }\n };\n\n return GradientStop;\n}(withOptions(HasObservers, options)));\n\nexport default GradientStop;\n","import StopsArray from './stops-array';\nimport GradientStop from './gradient-stop';\nimport HasObservers from '../core/has-observers';\nimport { defined, definitionId } from '../util';\n\nvar Gradient = (function (HasObservers) {\n function Gradient(options) {\n if ( options === void 0 ) options = {};\n\n HasObservers.call(this);\n\n this.stops = new StopsArray(this._createStops(options.stops));\n this.stops.addObserver(this);\n this._userSpace = options.userSpace;\n this.id = definitionId();\n }\n\n if ( HasObservers ) Gradient.__proto__ = HasObservers;\n Gradient.prototype = Object.create( HasObservers && HasObservers.prototype );\n Gradient.prototype.constructor = Gradient;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Gradient\";\n };\n\n Gradient.prototype.userSpace = function userSpace (value) {\n if (defined(value)) {\n this._userSpace = value;\n this.optionsChange();\n return this;\n }\n\n return this._userSpace;\n };\n\n Gradient.prototype._createStops = function _createStops (stops) {\n if ( stops === void 0 ) stops = [];\n\n var result = [];\n for (var idx = 0; idx < stops.length; idx++) {\n result.push(GradientStop.create(stops[idx]));\n }\n\n return result;\n };\n\n Gradient.prototype.addStop = function addStop (offset, color, opacity) {\n this.stops.push(new GradientStop(offset, color, opacity));\n };\n\n Gradient.prototype.removeStop = function removeStop (stop) {\n var index = this.stops.indexOf(stop);\n if (index >= 0) {\n this.stops.splice(index, 1);\n }\n };\n\n Gradient.prototype.optionsChange = function optionsChange (e) {\n this.trigger(\"optionsChange\", {\n field: \"gradient\" + (e ? \".\" + e.field : \"\"),\n value: this\n });\n };\n\n Gradient.prototype.geometryChange = function geometryChange () {\n this.optionsChange();\n };\n\n Object.defineProperties( Gradient.prototype, prototypeAccessors );\n\n return Gradient;\n}(HasObservers));\n\nexport default Gradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\n\n\nvar points = [ \"start\", \"end\" ];\n\nvar LinearGradient = (function (superclass) {\n function LinearGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.start(options.start || new Point());\n this.end(options.end || new Point(1, 0));\n }\n\n if ( superclass ) LinearGradient.__proto__ = superclass;\n LinearGradient.prototype = Object.create( superclass && superclass.prototype );\n LinearGradient.prototype.constructor = LinearGradient;\n\n return LinearGradient;\n}(withPoints(Gradient, points)));\n\nexport default LinearGradient;\n","import withPoints from '../mixins/with-points';\nimport Point from '../geometry/point';\nimport Gradient from './gradient';\nimport { defined } from '../util';\n\n\nvar RadialGradient = (function (superclass) {\n function RadialGradient(options) {\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.center(options.center || new Point());\n this._radius = defined(options.radius) ? options.radius : 1;\n this._fallbackFill = options.fallbackFill;\n }\n\n if ( superclass ) RadialGradient.__proto__ = superclass;\n RadialGradient.prototype = Object.create( superclass && superclass.prototype );\n RadialGradient.prototype.constructor = RadialGradient;\n\n RadialGradient.prototype.radius = function radius (value) {\n if (defined(value)) {\n this._radius = value;\n this.geometryChange();\n return this;\n }\n\n return this._radius;\n };\n\n RadialGradient.prototype.fallbackFill = function fallbackFill (value) {\n if (defined(value)) {\n this._fallbackFill = value;\n this.optionsChange();\n return this;\n }\n\n return this._fallbackFill;\n };\n\n return RadialGradient;\n}(withPoints(Gradient, [ \"center\" ])));\n\nexport default RadialGradient;\n","import { WHITE } from '../common/constants';\n\nvar LINEAR = \"linear\";\nvar RADIAL = \"radial\";\n\nvar GRADIENTS = {\n glass: {\n type: LINEAR,\n rotation: 0,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.25,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 1,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.55\n }, {\n offset: 0.65,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0.25\n } ]\n },\n roundedBevel: {\n type: RADIAL,\n stops: [ {\n offset: 0.33,\n color: WHITE,\n opacity: 0.06\n }, {\n offset: 0.83,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.95,\n color: WHITE,\n opacity: 0\n } ]\n },\n roundedGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0\n }, {\n offset: 0.5,\n color: WHITE,\n opacity: 0.3\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n sharpGlass: {\n type: RADIAL,\n supportVML: false,\n stops: [ {\n offset: 0,\n color: WHITE,\n opacity: 0.2\n }, {\n offset: 0.15,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.17,\n color: WHITE,\n opacity: 0.35\n }, {\n offset: 0.85,\n color: WHITE,\n opacity: 0.05\n }, {\n offset: 0.87,\n color: WHITE,\n opacity: 0.15\n }, {\n offset: 0.99,\n color: WHITE,\n opacity: 0\n } ]\n },\n bubbleShadow: {\n type: RADIAL,\n center: [ 0.5, 0.5 ],\n radius: 0.5\n }\n};\n\nexport default GRADIENTS;","import Box from '../box';\nimport { grep } from '../../common';\n\nexport default function boxDiff(r, s) {\n if (r.x1 === s.x1 && r.y1 === s.y1 && r.x2 === s.x2 && r.y2 === s.y2) {\n return s;\n }\n\n var a = Math.min(r.x1, s.x1);\n var b = Math.max(r.x1, s.x1);\n var c = Math.min(r.x2, s.x2);\n var d = Math.max(r.x2, s.x2);\n var e = Math.min(r.y1, s.y1);\n var f = Math.max(r.y1, s.y1);\n var g = Math.min(r.y2, s.y2);\n var h = Math.max(r.y2, s.y2);\n var boxes = [];\n\n // X = intersection, 0-7 = possible difference areas\n // h +-+-+-+\n // . |5|6|7|\n // g +-+-+-+\n // . |3|X|4|\n // f +-+-+-+\n // . |0|1|2|\n // e +-+-+-+\n // . a b c d\n\n // we'll always have rectangles 1, 3, 4 and 6\n boxes[0] = new Box(b, e, c, f);\n boxes[1] = new Box(a, f, b, g);\n boxes[2] = new Box(c, f, d, g);\n boxes[3] = new Box(b, g, c, h);\n\n // decide which corners\n if (r.x1 === a && r.y1 === e || s.x1 === a && s.y1 === e) { // corners 0 and 7\n boxes[4] = new Box(a, e, b, f);\n boxes[5] = new Box(c, g, d, h);\n } else { // corners 2 and 5\n boxes[4] = new Box(c, e, d, f);\n boxes[5] = new Box(a, g, b, h);\n }\n\n return grep(boxes, function(box) {\n return box.height() > 0 && box.width() > 0;\n })[0];\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport GRADIENTS from './gradients';\nimport Box from './box';\n\nimport boxDiff from './utils/box-diff';\n\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT, WHITE, BLACK } from '../common/constants';\nimport { getSpacing, objectKey, setDefaultOptions } from '../common';\n\nvar RootElement = (function (ChartElement) {\n function RootElement(options) {\n ChartElement.call(this, options);\n\n var rootOptions = this.options;\n rootOptions.width = parseInt(rootOptions.width, 10);\n rootOptions.height = parseInt(rootOptions.height, 10);\n\n this.gradients = {};\n }\n\n if ( ChartElement ) RootElement.__proto__ = ChartElement;\n RootElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n RootElement.prototype.constructor = RootElement;\n\n RootElement.prototype.reflow = function reflow () {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var currentBox = new Box(0, 0, options.width, options.height);\n\n this.box = currentBox.unpad(options.margin);\n\n for (var i = 0; i < children.length; i++) {\n children[i].reflow(currentBox);\n currentBox = boxDiff(currentBox, children[i].box) || new Box();\n }\n };\n\n RootElement.prototype.createVisual = function createVisual () {\n this.visual = new draw.Group();\n this.createBackground();\n };\n\n RootElement.prototype.createBackground = function createBackground () {\n var options = this.options;\n var border = options.border || {};\n var box = this.box.clone().pad(options.margin).unpad(border.width);\n\n var background = draw.Path.fromRect(box.toRect(), {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n fill: {\n color: options.background,\n opacity: options.opacity\n },\n zIndex: -10\n });\n\n this.visual.append(background);\n };\n\n RootElement.prototype.getRoot = function getRoot () {\n return this;\n };\n\n RootElement.prototype.createGradient = function createGradient (options) {\n var gradients = this.gradients;\n var hashCode = objectKey(options);\n var gradient = GRADIENTS[options.gradient];\n var drawingGradient;\n\n if (gradients[hashCode]) {\n drawingGradient = gradients[hashCode];\n } else {\n var gradientOptions = Object.assign({}, gradient, options);\n if (gradient.type === \"linear\") {\n drawingGradient = new draw.LinearGradient(gradientOptions);\n } else {\n if (options.innerRadius) {\n gradientOptions.stops = innerRadialStops(gradientOptions);\n }\n drawingGradient = new draw.RadialGradient(gradientOptions);\n drawingGradient.supportVML = gradient.supportVML !== false;\n }\n gradients[hashCode] = drawingGradient;\n }\n\n return drawingGradient;\n };\n\n RootElement.prototype.cleanGradients = function cleanGradients () {\n var gradients = this.gradients;\n for (var hashCode in gradients) {\n gradients[hashCode]._observers = [];//add clear observers method in drawing ObserversMixin\n }\n };\n\n RootElement.prototype.size = function size () {\n var options = this.options;\n return new Box(0, 0, options.width, options.height);\n };\n\n return RootElement;\n}(ChartElement));\n\nsetDefaultOptions(RootElement, {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT,\n background: WHITE,\n border: {\n color: BLACK,\n width: 0\n },\n margin: getSpacing(5),\n zIndex: -2\n});\n\nfunction innerRadialStops(options) {\n var stops = options.stops;\n var usedSpace = ((options.innerRadius / options.radius) * 100);\n var length = stops.length;\n var currentStops = [];\n\n for (var i = 0; i < length; i++) {\n var currentStop = Object.assign({}, stops[i]);\n currentStop.offset = (currentStop.offset * (100 - usedSpace) + usedSpace) / 100;\n currentStops.push(currentStop);\n }\n\n return currentStops;\n}\n\nexport default RootElement;","import ChartElement from './chart-element';\nimport Box from './box';\n\nimport { X, Y, WIDTH, HEIGHT, RIGHT, BOTTOM, CENTER } from '../common/constants';\nimport { round, setDefaultOptions } from '../common';\n\nvar FloatElement = (function (ChartElement) {\n function FloatElement(options) {\n ChartElement.call(this, options);\n this._initDirection();\n }\n\n if ( ChartElement ) FloatElement.__proto__ = ChartElement;\n FloatElement.prototype = Object.create( ChartElement && ChartElement.prototype );\n FloatElement.prototype.constructor = FloatElement;\n\n FloatElement.prototype._initDirection = function _initDirection () {\n var options = this.options;\n if (options.vertical) {\n this.groupAxis = X;\n this.elementAxis = Y;\n this.groupSizeField = WIDTH;\n this.elementSizeField = HEIGHT;\n this.groupSpacing = options.spacing;\n this.elementSpacing = options.vSpacing;\n } else {\n this.groupAxis = Y;\n this.elementAxis = X;\n this.groupSizeField = HEIGHT;\n this.elementSizeField = WIDTH;\n this.groupSpacing = options.vSpacing;\n this.elementSpacing = options.spacing;\n }\n };\n\n FloatElement.prototype.reflow = function reflow (targetBox) {\n this.box = targetBox.clone();\n this.reflowChildren();\n };\n\n FloatElement.prototype.reflowChildren = function reflowChildren () {\n var this$1 = this;\n\n var ref = this;\n var box = ref.box;\n var elementAxis = ref.elementAxis;\n var groupAxis = ref.groupAxis;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var ref$1 = this.groupOptions();\n var groups = ref$1.groups;\n var groupsSize = ref$1.groupsSize;\n var maxGroupElementsSize = ref$1.maxGroupElementsSize;\n var groupsCount = groups.length;\n var groupsStart = box[groupAxis + 1] + this.alignStart(groupsSize, box[groupSizeField]());\n\n if (groupsCount) {\n var groupStart = groupsStart;\n\n for (var groupIdx = 0; groupIdx < groupsCount; groupIdx++) {\n var group = groups[groupIdx];\n var groupElements = group.groupElements;\n var elementStart = box[elementAxis + 1];\n var groupElementsCount = groupElements.length;\n\n for (var idx = 0; idx < groupElementsCount; idx++) {\n var element = groupElements[idx];\n var elementSize = this$1.elementSize(element);\n var groupElementStart = groupStart + this$1.alignStart(elementSize[groupSizeField], group.groupSize);\n\n var elementBox = new Box();\n elementBox[groupAxis + 1] = groupElementStart;\n elementBox[groupAxis + 2] = groupElementStart + elementSize[groupSizeField];\n elementBox[elementAxis + 1] = elementStart;\n elementBox[elementAxis + 2] = elementStart + elementSize[elementSizeField];\n\n element.reflow(elementBox);\n\n elementStart += elementSize[elementSizeField] + this$1.elementSpacing;\n }\n groupStart += group.groupSize + this$1.groupSpacing;\n }\n box[groupAxis + 1] = groupsStart;\n box[groupAxis + 2] = groupsStart + groupsSize;\n box[elementAxis + 2] = box[elementAxis + 1] + maxGroupElementsSize;\n }\n };\n\n FloatElement.prototype.alignStart = function alignStart (size, maxSize) {\n var start = 0;\n var align = this.options.align;\n if (align === RIGHT || align === BOTTOM) {\n start = maxSize - size;\n } else if (align === CENTER) {\n start = (maxSize - size) / 2;\n }\n return start;\n };\n\n FloatElement.prototype.groupOptions = function groupOptions () {\n var this$1 = this;\n\n var ref = this;\n var box = ref.box;\n var children = ref.children;\n var elementSizeField = ref.elementSizeField;\n var groupSizeField = ref.groupSizeField;\n var elementSpacing = ref.elementSpacing;\n var groupSpacing = ref.groupSpacing;\n var maxSize = round(box[elementSizeField]());\n var childrenCount = children.length;\n var groups = [];\n\n var groupSize = 0;\n var groupElementsSize = 0;\n var groupsSize = 0;\n var maxGroupElementsSize = 0;\n var groupElements = [];\n\n for (var idx = 0; idx < childrenCount; idx++) {\n var element = children[idx];\n if (!element.box) {\n element.reflow(box);\n }\n\n var elementSize = this$1.elementSize(element);\n if (this$1.options.wrap && round(groupElementsSize + elementSpacing + elementSize[elementSizeField]) > maxSize) {\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSpacing + groupSize;\n groupSize = 0;\n groupElementsSize = 0;\n groupElements = [];\n }\n groupSize = Math.max(groupSize, elementSize[groupSizeField]);\n if (groupElementsSize > 0) {\n groupElementsSize += elementSpacing;\n }\n groupElementsSize += elementSize[elementSizeField];\n groupElements.push(element);\n }\n\n groups.push({\n groupElements: groupElements,\n groupSize: groupSize,\n groupElementsSize: groupElementsSize\n });\n maxGroupElementsSize = Math.max(maxGroupElementsSize, groupElementsSize);\n groupsSize += groupSize;\n\n return {\n groups: groups,\n groupsSize: groupsSize,\n maxGroupElementsSize: maxGroupElementsSize\n };\n };\n\n FloatElement.prototype.elementSize = function elementSize (element) {\n return {\n width: element.box.width(),\n height: element.box.height()\n };\n };\n\n FloatElement.prototype.createVisual = function createVisual () {};\n\n return FloatElement;\n}(ChartElement));\n\nsetDefaultOptions(FloatElement, {\n vertical: true,\n wrap: true,\n vSpacing: 0,\n spacing: 0\n});\n\nexport default FloatElement;","import Element from './element';\nimport Point from '../geometry/point';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport paintable from '../mixins/paintable';\nimport withPoints from '../mixins/with-points';\nimport { defined, measureText } from '../util';\n\n\nvar DEFAULT_FONT = \"12px sans-serif\";\nvar DEFAULT_FILL = \"#000\";\n\nvar Text = (function (superclass) {\n function Text(content, position, options) {\n if ( position === void 0 ) position = new Point();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.content(content);\n this.position(position);\n\n if (!this.options.font) {\n this.options.font = DEFAULT_FONT;\n }\n\n if (!defined(this.options.fill)) {\n this.fill(DEFAULT_FILL);\n }\n }\n\n if ( superclass ) Text.__proto__ = superclass;\n Text.prototype = Object.create( superclass && superclass.prototype );\n Text.prototype.constructor = Text;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Text\";\n };\n\n Text.prototype.content = function content (value) {\n if (defined(value)) {\n this.options.set(\"content\", value);\n return this;\n }\n\n return this.options.get(\"content\");\n };\n\n Text.prototype.measure = function measure () {\n var metrics = measureText(this.content(), {\n font: this.options.get(\"font\")\n });\n\n return metrics;\n };\n\n Text.prototype.rect = function rect () {\n var size = this.measure();\n var pos = this.position().clone();\n return new Rect(pos, [ size.width, size.height ]);\n };\n\n Text.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this.rect().bbox(combinedMatrix);\n };\n\n Text.prototype.rawBBox = function rawBBox () {\n return this.rect().bbox();\n };\n\n Text.prototype._containsPoint = function _containsPoint (point) {\n return this.rect().containsPoint(point);\n };\n\n Object.defineProperties( Text.prototype, prototypeAccessors );\n\n return Text;\n}(paintable(withPoints(Element, [ \"position\" ]))));\n\nexport default Text;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport Box from './box';\n\nimport { DEFAULT_FONT, BLACK } from '../common/constants';\nimport { setDefaultOptions } from '../common';\n\nvar DrawingText = draw.Text;\n\nvar Text = (function (ChartElement) {\n function Text(content, options) {\n ChartElement.call(this, options);\n\n this.content = content;\n\n // Calculate size\n this.reflow(new Box());\n }\n\n if ( ChartElement ) Text.__proto__ = ChartElement;\n Text.prototype = Object.create( ChartElement && ChartElement.prototype );\n Text.prototype.constructor = Text;\n\n Text.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var size = options.size = draw.util.measureText(this.content, { font: options.font });\n\n this.baseline = size.baseline;\n\n this.box = new Box(targetBox.x1, targetBox.y1,\n targetBox.x1 + size.width, targetBox.y1 + size.height);\n };\n\n Text.prototype.createVisual = function createVisual () {\n var ref = this.options;\n var font = ref.font;\n var color = ref.color;\n var opacity = ref.opacity;\n var cursor = ref.cursor;\n\n this.visual = new DrawingText(this.content, this.box.toRect().topLeft(), {\n font: font,\n fill: { color: color, opacity: opacity },\n cursor: cursor\n });\n };\n\n return Text;\n}(ChartElement));\n\nsetDefaultOptions(Text, {\n font: DEFAULT_FONT,\n color: BLACK\n});\n\nexport default Text;\n","import Box from '../box';\n\nexport default function rectToBox(rect) {\n var origin = rect.origin;\n var bottomRight = rect.bottomRight();\n\n return new Box(origin.x, origin.y, bottomRight.x, bottomRight.y);\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport FloatElement from './float-element';\nimport Text from './text';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { getSpacing, deepExtend, defined } from '../common';\nimport { X, Y } from '../common/constants';\n\nvar ROWS_SPLIT_REGEX = /\\n/m;\n\nvar TextBox = (function (BoxElement) {\n function TextBox(content, options, data) {\n BoxElement.call(this, options);\n this.content = content;\n this.data = data;\n\n this._initContainer();\n if (this.options._autoReflow !== false) {\n this.reflow(new Box());\n }\n }\n\n if ( BoxElement ) TextBox.__proto__ = BoxElement;\n TextBox.prototype = Object.create( BoxElement && BoxElement.prototype );\n TextBox.prototype.constructor = TextBox;\n\n TextBox.prototype._initContainer = function _initContainer () {\n var options = this.options;\n var rows = String(this.content).split(ROWS_SPLIT_REGEX);\n var floatElement = new FloatElement({ vertical: true, align: options.align, wrap: false });\n var textOptions = deepExtend({ }, options, { opacity: 1, animation: null });\n\n this.container = floatElement;\n this.append(floatElement);\n\n for (var rowIdx = 0; rowIdx < rows.length; rowIdx++) {\n var text = new Text(rows[rowIdx].trim(), textOptions);\n floatElement.append(text);\n }\n };\n\n TextBox.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var visualFn = options.visual;\n this.container.options.align = options.align;\n\n if (visualFn && !this._boxReflow) {\n var visualBox = targetBox;\n if (!visualBox.hasSize()) {\n this._boxReflow = true;\n this.reflow(visualBox);\n this._boxReflow = false;\n visualBox = this.box;\n }\n var visual = this.visual = visualFn(this.visualContext(visualBox));\n\n if (visual) {\n visualBox = rectToBox(visual.clippedBBox() || new geom.Rect());\n\n visual.options.zIndex = options.zIndex;\n }\n\n this.box = this.contentBox = this.paddingBox = visualBox;\n } else {\n BoxElement.prototype.reflow.call(this, targetBox);\n\n if (options.rotation) {\n var margin = getSpacing(options.margin);\n var box = this.box.unpad(margin);\n\n this.targetBox = targetBox;\n this.normalBox = box.clone();\n\n box = this.rotate();\n box.translate(margin.left - margin.right, margin.top - margin.bottom);\n\n this.rotatedBox = box.clone();\n\n box.pad(margin);\n }\n }\n };\n\n TextBox.prototype.createVisual = function createVisual () {\n var options = this.options;\n\n this.visual = new draw.Group({\n transform: this.rotationTransform(),\n zIndex: options.zIndex,\n noclip: options.noclip\n });\n\n if (this.hasBox()) {\n var box = draw.Path.fromRect(this.paddingBox.toRect(), this.visualStyle());\n this.visual.append(box);\n }\n };\n\n TextBox.prototype.renderVisual = function renderVisual () {\n if (!this.options.visible) {\n return;\n }\n\n if (this.options.visual) {\n var visual = this.visual;\n if (visual && !defined(visual.options.noclip)) {\n visual.options.noclip = this.options.noclip;\n }\n this.addVisual();\n this.createAnimation();\n } else {\n BoxElement.prototype.renderVisual.call(this);\n }\n };\n\n TextBox.prototype.visualContext = function visualContext (targetBox) {\n var this$1 = this;\n\n var context = {\n text: this.content,\n rect: targetBox.toRect(),\n sender: this.getSender(),\n options: this.options,\n createVisual: function () {\n this$1._boxReflow = true;\n this$1.reflow(targetBox);\n this$1._boxReflow = false;\n return this$1.getDefaultVisual();\n }\n };\n if (this.data) {\n Object.assign(context, this.data);\n }\n\n return context;\n };\n\n TextBox.prototype.getDefaultVisual = function getDefaultVisual () {\n this.createVisual();\n this.renderChildren();\n var visual = this.visual;\n delete this.visual;\n return visual;\n };\n\n TextBox.prototype.rotate = function rotate () {\n var options = this.options;\n this.box.rotate(options.rotation);\n this.align(this.targetBox, X, options.align);\n this.align(this.targetBox, Y, options.vAlign);\n return this.box;\n };\n\n TextBox.prototype.rotationTransform = function rotationTransform () {\n var rotation = this.options.rotation;\n if (!rotation) {\n return null;\n }\n\n var ref = this.normalBox.center();\n var cx = ref.x;\n var cy = ref.y;\n var boxCenter = this.rotatedBox.center();\n\n return geom.transform()\n .translate(boxCenter.x - cx, boxCenter.y - cy)\n .rotate(rotation, [ cx, cy ]);\n };\n\n return TextBox;\n}(BoxElement));\n\nexport default TextBox;","import ChartElement from './chart-element';\nimport TextBox from './text-box';\n\nimport { X, BLACK, TOP, CENTER, BOTTOM } from '../common/constants';\nimport { getSpacing, setDefaultOptions } from '../common';\n\nvar Title = (function (ChartElement) {\n function Title(options) {\n ChartElement.call(this, options);\n\n this._textBox = new TextBox(this.options.text, Object.assign({}, this.options, {\n vAlign: this.options.position\n }));\n\n this.append(this._textBox);\n }\n\n if ( ChartElement ) Title.__proto__ = ChartElement;\n Title.prototype = Object.create( ChartElement && ChartElement.prototype );\n Title.prototype.constructor = Title;\n\n Title.prototype.reflow = function reflow (targetBox) {\n ChartElement.prototype.reflow.call(this, targetBox);\n this.box.snapTo(targetBox, X);\n };\n\n Title.buildTitle = function buildTitle (options, defaultOptions) {\n var titleOptions = options;\n\n if (typeof options === \"string\") {\n titleOptions = { text: options };\n }\n\n titleOptions = Object.assign({ visible: true }, defaultOptions, titleOptions);\n\n var title;\n if (titleOptions && titleOptions.visible && titleOptions.text) {\n title = new Title(titleOptions);\n }\n\n return title;\n };\n\n Title.orderTitles = function orderTitles (titles) {\n var items = [].concat(titles);\n var top = items.filter(function (item) { return item && item.options.position !== BOTTOM; });\n var bottom = items.filter(function (item) { return item && item.options.position === BOTTOM; });\n\n collapseVerticalMargins(top);\n collapseVerticalMargins(bottom);\n\n bottom.reverse();\n return top.concat(bottom);\n };\n\n return Title;\n}(ChartElement));\n\nfunction collapseVerticalMargins(items) {\n for (var i = 1; i < items.length; i++) {\n var box = items[i]._textBox;\n var prevBox = items[i - 1]._textBox;\n prevBox.options.margin = Object.assign(getSpacing(prevBox.options.margin), { bottom: 0 });\n box.options.margin = Object.assign(getSpacing(box.options.margin), { top: 0 });\n }\n}\n\nsetDefaultOptions(Title, {\n color: BLACK,\n position: TOP,\n align: CENTER,\n margin: getSpacing(5),\n padding: getSpacing(5)\n});\n\nexport default Title;\n","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport TextBox from './text-box';\nimport Box from './box';\n\nimport rectToBox from './utils/rect-to-box';\n\nimport { AXIS_LABEL_CLICK, CENTER, TOP, BOTTOM, LEFT, DEFAULT_PRECISION, X, Y } from '../common/constants';\n\nimport { eventElement, round, setDefaultOptions } from '../common';\n\nvar AxisLabel = (function (TextBox) {\n function AxisLabel(value, text, index, dataItem, options) {\n TextBox.call(this, text, options);\n\n this.text = text;\n this.value = value;\n this.index = index;\n this.dataItem = dataItem;\n this.reflow(new Box());\n }\n\n if ( TextBox ) AxisLabel.__proto__ = TextBox;\n AxisLabel.prototype = Object.create( TextBox && TextBox.prototype );\n AxisLabel.prototype.constructor = AxisLabel;\n\n AxisLabel.prototype.visualContext = function visualContext (targetBox) {\n var context = TextBox.prototype.visualContext.call(this, targetBox);\n\n context.value = this.value;\n context.dataItem = this.dataItem;\n context.format = this.options.format;\n context.culture = this.options.culture;\n\n return context;\n };\n\n AxisLabel.prototype.click = function click (widget, e) {\n\n widget.trigger(AXIS_LABEL_CLICK, {\n element: eventElement(e),\n value: this.value,\n text: this.text,\n index: this.index,\n dataItem: this.dataItem,\n axis: this.parent.options\n });\n };\n\n AxisLabel.prototype.rotate = function rotate () {\n if (this.options.alignRotation !== CENTER) {\n var box = this.normalBox.toRect();\n var transform = this.rotationTransform();\n\n this.box = rectToBox(box.bbox(transform.matrix()));\n } else {\n TextBox.prototype.rotate.call(this);\n }\n\n return this.box;\n };\n\n AxisLabel.prototype.rotationTransform = function rotationTransform () {\n var options = this.options;\n var rotation = options.rotation;\n if (!rotation) {\n return null;\n }\n\n if (options.alignRotation === CENTER) {\n return TextBox.prototype.rotationTransform.call(this);\n }\n\n var rotationMatrix = geom.transform().rotate(rotation).matrix();\n var box = this.normalBox.toRect();\n var rect = this.targetBox.toRect();\n\n var rotationOrigin = options.rotationOrigin || TOP;\n var alignAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? X : Y;\n var distanceAxis = rotationOrigin === TOP || rotationOrigin === BOTTOM ? Y : X;\n var axisAnchor = rotationOrigin === TOP || rotationOrigin === LEFT ? rect.origin : rect.bottomRight();\n\n var topLeft = box.topLeft().transformCopy(rotationMatrix);\n var topRight = box.topRight().transformCopy(rotationMatrix);\n var bottomRight = box.bottomRight().transformCopy(rotationMatrix);\n var bottomLeft = box.bottomLeft().transformCopy(rotationMatrix);\n var rotatedBox = geom.Rect.fromPoints(topLeft, topRight, bottomRight, bottomLeft);\n\n var translate = {};\n translate[distanceAxis] = rect.origin[distanceAxis] - rotatedBox.origin[distanceAxis];\n\n var distanceLeft = Math.abs(topLeft[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n var distanceRight = Math.abs(topRight[distanceAxis] + translate[distanceAxis] - axisAnchor[distanceAxis]);\n\n var alignStart, alignEnd;\n\n if (round(distanceLeft, DEFAULT_PRECISION) === round(distanceRight, DEFAULT_PRECISION)) {\n alignStart = topLeft;\n alignEnd = topRight;\n } else if (distanceRight < distanceLeft) {\n alignStart = topRight;\n alignEnd = bottomRight;\n } else {\n alignStart = topLeft;\n alignEnd = bottomLeft;\n }\n\n var alignCenter = alignStart[alignAxis] + (alignEnd[alignAxis] - alignStart[alignAxis]) / 2;\n translate[alignAxis] = rect.center()[alignAxis] - alignCenter;\n\n return geom.transform()\n .translate(translate.x, translate.y)\n .rotate(rotation);\n };\n\n return AxisLabel;\n}(TextBox));\n\nsetDefaultOptions(AxisLabel, {\n _autoReflow: false\n});\n\nexport default AxisLabel;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport BoxElement from './box-element';\nimport TextBox from './text-box';\nimport ShapeElement from './shape-element';\nimport Box from './box';\n\nimport { CIRCLE, TOP, BOTTOM, LEFT, RIGHT, CENTER, INSIDE, OUTSIDE, NOTE_CLICK, NOTE_HOVER, NOTE_LEAVE } from '../common/constants';\nimport { alignPathToPixel, defined, deepExtend, eventElement, getTemplate, inArray, setDefaultOptions } from '../common';\n\nvar DEFAULT_ICON_SIZE = 7;\nvar DEFAULT_LABEL_COLOR = \"#fff\";\n\nvar Note = (function (BoxElement) {\n function Note(fields, options, chartService) {\n BoxElement.call(this, options);\n\n this.fields = fields;\n this.chartService = chartService;\n\n this.render();\n }\n\n if ( BoxElement ) Note.__proto__ = BoxElement;\n Note.prototype = Object.create( BoxElement && BoxElement.prototype );\n Note.prototype.constructor = Note;\n\n Note.prototype.hide = function hide () {\n this.options.visible = false;\n };\n\n Note.prototype.show = function show () {\n this.options.visible = true;\n };\n\n Note.prototype.render = function render () {\n var this$1 = this;\n\n var options = this.options;\n\n if (options.visible) {\n var label = options.label;\n var icon = options.icon;\n var box = new Box();\n var childAlias = function () { return this$1; };\n var size = icon.size;\n var text = this.fields.text;\n var width, height;\n\n if (defined(label) && label.visible) {\n var noteTemplate = getTemplate(label);\n if (noteTemplate) {\n text = noteTemplate(this.fields);\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = label.position === INSIDE ? DEFAULT_LABEL_COLOR : icon.background;\n }\n\n this.label = new TextBox(text, deepExtend({}, label));\n this.label.aliasFor = childAlias;\n\n if (label.position === INSIDE && !defined(size)) {\n if (icon.type === CIRCLE) {\n size = Math.max(this.label.box.width(), this.label.box.height());\n } else {\n width = this.label.box.width();\n height = this.label.box.height();\n }\n box.wrap(this.label.box);\n }\n }\n\n icon.width = width || size || DEFAULT_ICON_SIZE;\n icon.height = height || size || DEFAULT_ICON_SIZE;\n\n var marker = new ShapeElement(deepExtend({}, icon));\n marker.aliasFor = childAlias;\n\n this.marker = marker;\n this.append(marker);\n\n if (this.label) {\n this.append(this.label);\n }\n\n marker.reflow(new Box());\n this.wrapperBox = box.wrap(marker.box);\n }\n };\n\n Note.prototype.reflow = function reflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var marker = ref.marker;\n var wrapperBox = ref.wrapperBox;\n var center = targetBox.center();\n var length = options.line.length;\n var position = options.position;\n\n // TODO: Review\n if (options.visible) {\n var lineStart, box, contentBox;\n\n if (inArray(position, [ LEFT, RIGHT ])) {\n if (position === LEFT) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(-length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x1, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x2, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(length, targetBox.center().y - wrapperBox.center().y);\n\n if (options.line.visible) {\n lineStart = [ targetBox.x2, center.y ];\n this.linePoints = [\n lineStart,\n [ contentBox.x1, center.y ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n } else {\n if (position === BOTTOM) {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y2 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y1 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n } else {\n contentBox = wrapperBox.alignTo(targetBox, position).translate(targetBox.center().x - wrapperBox.center().x, -length);\n\n if (options.line.visible) {\n lineStart = [ center.x, targetBox.y1 ];\n this.linePoints = [\n lineStart,\n [ center.x, contentBox.y2 ]\n ];\n box = contentBox.clone().wrapPoint(lineStart);\n }\n }\n }\n\n if (marker) {\n marker.reflow(contentBox);\n }\n\n if (label) {\n label.reflow(contentBox);\n if (marker) {\n if (options.label.position === OUTSIDE) {\n label.box.alignTo(marker.box, position);\n }\n label.reflow(label.box);\n }\n }\n\n this.contentBox = contentBox;\n this.targetBox = targetBox;\n this.box = box || contentBox;\n }\n };\n\n Note.prototype.createVisual = function createVisual () {\n BoxElement.prototype.createVisual.call(this);\n this.visual.options.noclip = this.options.noclip;\n\n if (this.options.visible) {\n this.createLine();\n }\n };\n\n Note.prototype.renderVisual = function renderVisual () {\n var this$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n if (options.visible && customVisual) {\n this.visual = customVisual(Object.assign(this.fields, {\n sender: this.getSender(),\n rect: this.targetBox.toRect(),\n options: {\n background: options.background,\n border: options.background,\n icon: options.icon,\n label: options.label,\n line: options.line,\n position: options.position,\n visible: options.visible\n },\n createVisual: function () {\n this$1.createVisual();\n this$1.renderChildren();\n var defaultVisual = this$1.visual;\n delete this$1.visual;\n return defaultVisual;\n }\n }));\n this.addVisual();\n } else {\n BoxElement.prototype.renderVisual.call(this);\n }\n };\n\n Note.prototype.createLine = function createLine () {\n var options = this.options.line;\n\n if (this.linePoints) {\n var path = draw.Path.fromPoints(this.linePoints, {\n stroke: {\n color: options.color,\n width: options.width,\n dashType: options.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n }\n };\n\n Note.prototype.click = function click (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_CLICK, args)) {\n e.preventDefault();\n }\n };\n\n Note.prototype.over = function over (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(NOTE_HOVER, args)) {\n e.preventDefault();\n }\n };\n\n Note.prototype.out = function out (widget, e) {\n var args = this.eventArgs(e);\n\n widget.trigger(NOTE_LEAVE, args);\n };\n\n Note.prototype.eventArgs = function eventArgs (e) {\n var options = this.options;\n\n return Object.assign(this.fields, {\n element: eventElement(e),\n text: defined(options.label) ? options.label.text : \"\",\n visual: this.visual\n });\n };\n\n return Note;\n}(BoxElement));\n\nsetDefaultOptions(Note, {\n icon: {\n visible: true,\n type: CIRCLE\n },\n label: {\n position: INSIDE,\n visible: true,\n align: CENTER,\n vAlign: CENTER\n },\n line: {\n visible: true\n },\n visible: true,\n position: TOP,\n zIndex: 2\n});\n\nexport default Note;","var defaultImplementation = {\n format: function (format, value) { return value; },\n\n toString: function (value) { return value; },\n\n parseDate: function (value) { return new Date(value); },\n\n firstDay: function () { return 0; }\n};\n\nvar current = defaultImplementation;\n\nvar IntlService = function IntlService () {};\n\nvar staticAccessors = { implementation: { configurable: true } };\n\nIntlService.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nstaticAccessors.implementation.get = function () {\n return current;\n};\n\nObject.defineProperties( IntlService, staticAccessors );\n\nexport default IntlService;\n","import IntlService from './intl-service';\nimport { FORMAT_REGEX } from '../common/constants';\nimport { isString } from '../common';\n\nvar FORMAT_REPLACE_REGEX = /\\{(\\d+)(:[^\\}]+)?\\}/g;\n\nvar FormatService = function FormatService(intlService) {\n this._intlService = intlService;\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n this._intlService = value;\n};\n\nFormatService.prototype.auto = function auto (formatString) {\n var values = [], len = arguments.length - 1;\n while ( len-- > 0 ) values[ len ] = arguments[ len + 1 ];\n\n var intl = this.intl;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n return intl.format.apply(intl, [ formatString ].concat( values ));\n }\n\n return intl.toString(values[0], formatString);\n};\n\nFormatService.prototype.localeAuto = function localeAuto (formatString, values, locale) {\n var intl = this.intl;\n var result;\n\n if (isString(formatString) && formatString.match(FORMAT_REGEX)) {\n result = formatString.replace(FORMAT_REPLACE_REGEX, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return intl.toString(value, placeholderFormat ? placeholderFormat.substring(1) : \"\", locale);\n });\n } else {\n result = intl.toString(values[0], formatString, locale);\n }\n\n return result;\n};\n\nObject.defineProperties( FormatService.prototype, prototypeAccessors );\n\nexport default FormatService;","import IntlService from './intl-service';\nimport FormatService from './format-service';\n\nvar ChartService = function ChartService(chart, context) {\n if ( context === void 0 ) context = {};\n\n this._intlService = context.intlService;\n this.sender = context.sender || chart;\n this.format = new FormatService(context.intlService);\n this.chart = chart;\n this.rtl = Boolean(context.rtl);\n};\n\nvar prototypeAccessors = { intl: { configurable: true } };\n\nprototypeAccessors.intl.get = function () {\n return this._intlService || IntlService.implementation;\n};\n\nprototypeAccessors.intl.set = function (value) {\n this._intlService = value;\n this.format.intl = value;\n};\n\nChartService.prototype.notify = function notify (name, args) {\n if (this.chart) {\n this.chart.trigger(name, args);\n }\n};\n\nChartService.prototype.isPannable = function isPannable (axis) {\n var pannable = ((this.chart || {}).options || {}).pannable;\n return pannable && pannable.lock !== axis;\n};\n\nObject.defineProperties( ChartService.prototype, prototypeAccessors );\n\nexport default ChartService;\n","var current;\n\nvar DomEventsBuilder = function DomEventsBuilder () {};\n\nDomEventsBuilder.register = function register (userImplementation) {\n current = userImplementation;\n};\n\nDomEventsBuilder.create = function create (element, events) {\n if (current) {\n return current.create(element, events);\n }\n};\n\nexport default DomEventsBuilder;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisTick(options, tickOptions) {\n var tickX = options.tickX;\n var tickY = options.tickY;\n var position = options.position;\n\n var tick = new draw.Path({\n stroke: {\n width: tickOptions.width,\n color: tickOptions.color\n }\n });\n\n if (options.vertical) {\n tick.moveTo(tickX, position)\n .lineTo(tickX + tickOptions.size, position);\n } else {\n tick.moveTo(position, tickY)\n .lineTo(position, tickY + tickOptions.size);\n }\n\n alignPathToPixel(tick);\n\n return tick;\n}\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { alignPathToPixel } from '../../common';\n\nexport default function createAxisGridLine(options, gridLine) {\n var lineStart = options.lineStart;\n var lineEnd = options.lineEnd;\n var position = options.position;\n\n var line = new draw.Path({\n stroke: {\n width: gridLine.width,\n color: gridLine.color,\n dashType: gridLine.dashType\n }\n });\n\n if (options.vertical) {\n line.moveTo(lineStart, position)\n .lineTo(lineEnd, position);\n } else {\n line.moveTo(position, lineStart)\n .lineTo(position, lineEnd);\n }\n\n alignPathToPixel(line);\n\n return line;\n}","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport ChartElement from './chart-element';\nimport TextBox from './text-box';\nimport AxisLabel from './axis-label';\nimport Note from './note';\nimport Box from './box';\nimport { ChartService } from '../services';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\n\nimport { NONE, BLACK, CENTER, TOP, BOTTOM, LEFT, RIGHT, OUTSIDE, X, Y, WIDTH, HEIGHT } from '../common/constants';\nimport { alignPathToPixel, deepExtend, getTemplate, grep, defined, isObject, inArray, limitValue, round, setDefaultOptions } from '../common';\n\nvar Axis = (function (ChartElement) {\n function Axis(options, chartService) {\n if ( chartService === void 0 ) chartService = new ChartService();\n\n ChartElement.call(this, options);\n\n this.chartService = chartService;\n\n if (!this.options.visible) {\n this.options = deepExtend({}, this.options, {\n labels: {\n visible: false\n },\n line: {\n visible: false\n },\n margin: 0,\n majorTickSize: 0,\n minorTickSize: 0\n });\n }\n\n this.options.minorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.minorTickType !== NONE\n }, this.options.minorTicks, {\n size: this.options.minorTickSize,\n align: this.options.minorTickType\n });\n\n this.options.majorTicks = deepExtend({}, {\n color: this.options.line.color,\n width: this.options.line.width,\n visible: this.options.majorTickType !== NONE\n }, this.options.majorTicks, {\n size: this.options.majorTickSize,\n align: this.options.majorTickType\n });\n\n this.initFields();\n\n if (!this.options._deferLabels) {\n this.createLabels();\n }\n\n this.createTitle();\n this.createNotes();\n }\n\n if ( ChartElement ) Axis.__proto__ = ChartElement;\n Axis.prototype = Object.create( ChartElement && ChartElement.prototype );\n Axis.prototype.constructor = Axis;\n\n Axis.prototype.initFields = function initFields () {\n };\n\n // abstract labelsCount(): Number\n // abstract createAxisLabel(index, options): AxisLabel\n\n Axis.prototype.labelsRange = function labelsRange () {\n return {\n min: this.options.labels.skip,\n max: this.labelsCount()\n };\n };\n\n Axis.prototype.normalizeLabelRotation = function normalizeLabelRotation (labelOptions) {\n var rotation = labelOptions.rotation;\n\n if (isObject(rotation)) {\n labelOptions.alignRotation = rotation.align;\n labelOptions.rotation = rotation.angle;\n }\n };\n\n Axis.prototype.createLabels = function createLabels () {\n var this$1 = this;\n\n var options = this.options;\n var align = options.vertical ? RIGHT : CENTER;\n var labelOptions = deepExtend({ }, options.labels, {\n align: align,\n zIndex: options.zIndex\n });\n var step = Math.max(1, labelOptions.step);\n\n this.clearLabels();\n\n if (labelOptions.visible) {\n this.normalizeLabelRotation(labelOptions);\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateLabels = true;\n }\n\n var range = this.labelsRange();\n for (var idx = range.min; idx < range.max; idx += step) {\n var labelContext = { index: idx, count: range.max };\n var label = this$1.createAxisLabel(idx, labelOptions, labelContext);\n if (label) {\n this$1.append(label);\n this$1.labels.push(label);\n }\n }\n }\n };\n\n Axis.prototype.clearLabels = function clearLabels () {\n this.children = grep(this.children, function (child) { return !(child instanceof AxisLabel); });\n this.labels = [];\n };\n\n Axis.prototype.clearTitle = function clearTitle () {\n var this$1 = this;\n\n if (this.title) {\n this.children = grep(this.children, function (child) { return child !== this$1.title; });\n this.title = undefined;\n }\n };\n\n Axis.prototype.clear = function clear () {\n this.clearLabels();\n this.clearTitle();\n };\n\n Axis.prototype.lineBox = function lineBox () {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var axisX = mirror ? box.x1 : box.x2;\n var axisY = mirror ? box.y2 : box.y1;\n var lineWidth = options.line.width || 0;\n\n return vertical ?\n new Box(axisX, box.y1, axisX, box.y2 - lineWidth) :\n new Box(box.x1, axisY, box.x2 - lineWidth, axisY);\n };\n\n Axis.prototype.createTitle = function createTitle () {\n var options = this.options;\n var titleOptions = deepExtend({\n rotation: options.vertical ? -90 : 0,\n text: \"\",\n zIndex: 1,\n visualSize: true\n }, options.title);\n\n if (titleOptions.visible && titleOptions.text) {\n var title = new TextBox(titleOptions.text, titleOptions);\n this.append(title);\n this.title = title;\n }\n };\n\n Axis.prototype.createNotes = function createNotes () {\n var this$1 = this;\n\n var options = this.options;\n var notes = options.notes;\n var items = notes.data || [];\n\n this.notes = [];\n\n for (var i = 0; i < items.length; i++) {\n var item = deepExtend({}, notes, items[i]);\n item.value = this$1.parseNoteValue(item.value);\n\n var note = new Note({\n value: item.value,\n text: item.label.text,\n dataItem: item\n }, item, this$1.chartService);\n\n if (note.options.visible) {\n if (defined(note.options.position)) {\n if (options.vertical && !inArray(note.options.position, [ LEFT, RIGHT ])) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else if (!options.vertical && !inArray(note.options.position, [ TOP, BOTTOM ])) {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n } else {\n if (options.vertical) {\n note.options.position = options.reverse ? LEFT : RIGHT;\n } else {\n note.options.position = options.reverse ? BOTTOM : TOP;\n }\n }\n this$1.append(note);\n this$1.notes.push(note);\n }\n }\n };\n\n Axis.prototype.parseNoteValue = function parseNoteValue (value) {\n return value;\n };\n\n Axis.prototype.renderVisual = function renderVisual () {\n ChartElement.prototype.renderVisual.call(this);\n\n this.createPlotBands();\n };\n\n Axis.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n this.createBackground();\n this.createLine();\n };\n\n Axis.prototype.gridLinesVisual = function gridLinesVisual () {\n var gridLines = this._gridLines;\n if (!gridLines) {\n gridLines = this._gridLines = new draw.Group({\n zIndex: -2\n });\n this.appendVisual(this._gridLines);\n }\n\n return gridLines;\n };\n\n Axis.prototype.createTicks = function createTicks (lineGroup) {\n var options = this.options;\n var lineBox = this.lineBox();\n var mirror = options.labels.mirror;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: options.vertical\n };\n\n function render(tickPositions, tickOptions, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, tickOptions.step);\n\n if (tickOptions.visible) {\n for (var i = tickOptions.skip; i < count; i += step) {\n if (defined(skipUnit) && (i % skipUnit === 0)) {\n continue;\n }\n\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPositions[i];\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n }\n }\n\n render(this.getMajorTickPositions(), options.majorTicks);\n render(this.getMinorTickPositions(), options.minorTicks, majorUnit / options.minorUnit);\n };\n\n Axis.prototype.createLine = function createLine () {\n var options = this.options;\n var line = options.line;\n var lineBox = this.lineBox();\n\n if (line.width > 0 && line.visible) {\n var path = new draw.Path({\n stroke: {\n width: line.width,\n color: line.color,\n dashType: line.dashType\n }\n\n /* TODO\n zIndex: line.zIndex,\n */\n });\n\n path.moveTo(lineBox.x1, lineBox.y1)\n .lineTo(lineBox.x2, lineBox.y2);\n\n if (options._alignLines) {\n alignPathToPixel(path);\n }\n\n var group = this._lineGroup = new draw.Group();\n group.append(path);\n\n this.visual.append(group);\n this.createTicks(group);\n }\n };\n\n Axis.prototype.getActualTickSize = function getActualTickSize () {\n var options = this.options;\n var tickSize = 0;\n\n if (options.majorTicks.visible && options.minorTicks.visible) {\n tickSize = Math.max(options.majorTicks.size, options.minorTicks.size);\n } else if (options.majorTicks.visible) {\n tickSize = options.majorTicks.size;\n } else if (options.minorTicks.visible) {\n tickSize = options.minorTicks.size;\n }\n\n return tickSize;\n };\n\n Axis.prototype.createBackground = function createBackground () {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var background = options.background;\n\n if (background) {\n this._backgroundPath = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: background\n },\n stroke: null\n });\n\n this.visual.append(this._backgroundPath);\n }\n };\n\n Axis.prototype.createPlotBands = function createPlotBands () {\n var this$1 = this;\n\n var options = this.options;\n var plotBands = options.plotBands || [];\n var vertical = options.vertical;\n var plotArea = this.plotArea;\n\n if (plotBands.length === 0) {\n return;\n }\n\n var group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n var altAxis = grep(this.pane.axes, function (axis) { return axis.options.vertical !== this$1.options.vertical; })[0];\n\n for (var idx = 0; idx < plotBands.length; idx++) {\n var item = plotBands[idx];\n var slotX = (void 0), slotY = (void 0);\n var labelOptions = item.label;\n var label = (void 0);\n\n if (vertical) {\n slotX = (altAxis || plotArea.axisX).lineBox();\n slotY = this$1.getSlot(item.from, item.to, true);\n } else {\n slotX = this$1.getSlot(item.from, item.to, true);\n slotY = (altAxis || plotArea.axisY).lineBox();\n }\n\n if (labelOptions) {\n labelOptions.vAlign = labelOptions.position || LEFT;\n label = this$1.createPlotBandLabel(\n labelOptions,\n item,\n new Box(\n slotX.x1,\n slotY.y1,\n slotX.x2,\n slotY.y2\n )\n\n );\n }\n\n if (slotX.width() !== 0 && slotY.height() !== 0) {\n var bandRect = new geom.Rect(\n [ slotX.x1, slotY.y1 ],\n [ slotX.width(), slotY.height() ]\n );\n\n var path = draw.Path.fromRect(bandRect, {\n fill: {\n color: item.color,\n opacity: item.opacity\n },\n stroke: null\n });\n\n group.append(path);\n if (label) {\n group.append(label);\n }\n }\n }\n\n this.appendVisual(group);\n };\n\n Axis.prototype.createPlotBandLabel = function createPlotBandLabel (label, item, box) {\n\n if (label.visible === false) {\n return null;\n }\n\n var text = label.text;\n var textbox;\n\n if (defined(label) && label.visible) {\n var labelTemplate = getTemplate(label);\n if (labelTemplate) {\n text = labelTemplate({ text: text, item: item });\n } else if (label.format) {\n text = this.chartService.format.auto(label.format, text);\n }\n\n if (!label.color) {\n label.color = this.options.labels.color;\n }\n }\n\n textbox = new TextBox(text, label);\n textbox.reflow(box);\n textbox.renderVisual();\n\n return textbox.visual;\n };\n\n Axis.prototype.createGridLines = function createGridLines (altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var minorUnit = options.minorUnit;\n var vertical = options.vertical;\n var axisLineVisible = altAxis.options.line.visible;\n var majorUnit = majorGridLines.visible ? options.majorUnit : 0;\n var lineBox = altAxis.lineBox();\n var linePos = lineBox[vertical ? \"y1\" : \"x1\"];\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n\n function render(tickPositions, gridLine, skipUnit) {\n var count = tickPositions.length;\n var step = Math.max(1, gridLine.step);\n\n if (gridLine.visible) {\n for (var i = gridLine.skip; i < count; i += step) {\n var pos = round(tickPositions[i]);\n if (!inArray(pos, majorTicks)) {\n if (i % skipUnit !== 0 && (!axisLineVisible || linePos !== pos)) {\n lineOptions.position = pos;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(pos);\n }\n }\n }\n }\n }\n\n render(this.getMajorTickPositions(), majorGridLines);\n render(this.getMinorTickPositions(), minorGridLines, majorUnit / minorUnit);\n\n return container.children;\n };\n\n Axis.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var title = ref.title;\n var vertical = options.vertical;\n var count = labels.length;\n var sizeFn = vertical ? WIDTH : HEIGHT;\n var titleSize = title ? title.box[sizeFn]() : 0;\n var space = this.getActualTickSize() + options.margin + titleSize;\n var rootBox = (this.getRoot() || {}).box || box;\n var boxSize = rootBox[sizeFn]();\n var maxLabelSize = 0;\n\n for (var i = 0; i < count; i++) {\n var labelSize = labels[i].box[sizeFn]();\n if (labelSize + space <= boxSize) {\n maxLabelSize = Math.max(maxLabelSize, labelSize);\n }\n }\n\n if (vertical) {\n this.box = new Box(\n box.x1, box.y1,\n box.x1 + maxLabelSize + space, box.y2\n );\n } else {\n this.box = new Box(\n box.x1, box.y1,\n box.x2, box.y1 + maxLabelSize + space\n );\n }\n\n this.arrangeTitle();\n this.arrangeLabels();\n this.arrangeNotes();\n };\n\n Axis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n return this.getMajorTickPositions();\n };\n\n Axis.prototype.labelTickIndex = function labelTickIndex (label) {\n return label.index;\n };\n\n Axis.prototype.arrangeLabels = function arrangeLabels () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var tickPositions = this.getLabelsTickPositions();\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1.labelTickIndex(label);\n var labelSize = vertical ? label.box.height() : label.box.width();\n var firstTickPosition = tickPositions[tickIx];\n var nextTickPosition = tickPositions[tickIx + 1];\n var positionStart = (void 0), positionEnd = (void 0);\n\n if (vertical) {\n if (labelsBetweenTicks) {\n var middle = firstTickPosition + (nextTickPosition - firstTickPosition) / 2;\n positionStart = middle - (labelSize / 2);\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n }\n\n positionEnd = positionStart;\n } else {\n if (labelsBetweenTicks) {\n positionStart = firstTickPosition;\n positionEnd = nextTickPosition;\n } else {\n positionStart = firstTickPosition - (labelSize / 2);\n positionEnd = positionStart + labelSize;\n }\n }\n\n this$1.positionLabel(label, mirror, positionStart, positionEnd);\n }\n };\n\n Axis.prototype.positionLabel = function positionLabel (label, mirror, positionStart, positionEnd) {\n if ( positionEnd === void 0 ) positionEnd = positionStart;\n\n var options = this.options;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var labelOffset = this.getActualTickSize() + options.margin;\n var labelBox;\n\n if (vertical) {\n var labelX = lineBox.x2;\n\n if (mirror) {\n labelX += labelOffset;\n label.options.rotationOrigin = LEFT;\n } else {\n labelX -= labelOffset + label.box.width();\n label.options.rotationOrigin = RIGHT;\n }\n\n labelBox = label.box.move(labelX, positionStart);\n } else {\n var labelY = lineBox.y1;\n\n if (mirror) {\n labelY -= labelOffset + label.box.height();\n label.options.rotationOrigin = BOTTOM;\n } else {\n labelY += labelOffset;\n label.options.rotationOrigin = TOP;\n }\n\n labelBox = new Box(\n positionStart, labelY,\n positionEnd, labelY + label.box.height()\n );\n }\n\n label.reflow(labelBox);\n };\n\n Axis.prototype.autoRotateLabelAngle = function autoRotateLabelAngle (labelBox, slotWidth) {\n if (labelBox.width() < slotWidth) {\n return 0;\n }\n\n if (labelBox.height() > slotWidth) {\n return -90;\n }\n\n return -45;\n };\n\n Axis.prototype.autoRotateLabels = function autoRotateLabels () {\n var this$1 = this;\n\n if (!this.options.autoRotateLabels || this.options.vertical) {\n return false;\n }\n\n var tickPositions = this.getMajorTickPositions();\n var labels = this.labels;\n var limit = Math.min(labels.length, tickPositions.length - 1);\n var angle = 0;\n\n for (var idx = 0; idx < limit; idx++) {\n var width = Math.abs(tickPositions[idx + 1] - tickPositions[idx]);\n var labelBox = labels[idx].box;\n var labelAngle = this$1.autoRotateLabelAngle(labelBox, width);\n\n if (labelAngle !== 0) {\n angle = labelAngle;\n }\n\n if (angle === -90) {\n break;\n }\n }\n\n if (angle !== 0) {\n for (var idx$1 = 0; idx$1 < labels.length; idx$1++) {\n labels[idx$1].options.rotation = angle;\n labels[idx$1].reflow(new Box());\n }\n\n return true;\n }\n };\n\n Axis.prototype.arrangeTitle = function arrangeTitle () {\n var ref = this;\n var options = ref.options;\n var title = ref.title;\n var mirror = options.labels.mirror;\n var vertical = options.vertical;\n\n if (title) {\n if (vertical) {\n title.options.align = mirror ? RIGHT : LEFT;\n title.options.vAlign = title.options.position;\n } else {\n title.options.align = title.options.position;\n title.options.vAlign = mirror ? TOP : BOTTOM;\n }\n\n title.reflow(this.box);\n }\n };\n\n Axis.prototype.arrangeNotes = function arrangeNotes () {\n var this$1 = this;\n\n for (var idx = 0; idx < this.notes.length; idx++) {\n var item = this$1.notes[idx];\n var value = item.options.value;\n var slot = (void 0);\n\n if (defined(value)) {\n if (this$1.shouldRenderNote(value)) {\n item.show();\n } else {\n item.hide();\n }\n\n slot = this$1.noteSlot(value);\n } else {\n item.hide();\n }\n\n item.reflow(slot || this$1.lineBox());\n }\n };\n\n Axis.prototype.noteSlot = function noteSlot (value) {\n return this.getSlot(value);\n };\n\n Axis.prototype.alignTo = function alignTo (secondAxis) {\n var lineBox = secondAxis.lineBox();\n var vertical = this.options.vertical;\n var pos = vertical ? Y : X;\n\n this.box.snapTo(lineBox, pos);\n if (vertical) {\n this.box.shrink(0, this.lineBox().height() - lineBox.height());\n } else {\n this.box.shrink(this.lineBox().width() - lineBox.width(), 0);\n }\n this.box[pos + 1] -= this.lineBox()[pos + 1] - lineBox[pos + 1];\n this.box[pos + 2] -= this.lineBox()[pos + 2] - lineBox[pos + 2];\n };\n\n Axis.prototype.axisLabelText = function axisLabelText (value, options, context) {\n var this$1 = this;\n\n var text;\n var tmpl = getTemplate(options);\n var defaultText = function () {\n if (!options.format) {\n return value;\n }\n\n return this$1.chartService.format.localeAuto(\n options.format, [ value ], options.culture\n );\n };\n\n if (tmpl) {\n var templateContext = Object.assign({}, context, {\n get text() { return defaultText(); },\n value: value,\n format: options.format,\n culture: options.culture\n });\n\n text = tmpl(templateContext);\n } else {\n text = defaultText();\n }\n\n return text;\n };\n\n Axis.prototype.slot = function slot (from , to, limit) {\n var slot = this.getSlot(from, to, limit);\n if (slot) {\n return slot.toRect();\n }\n };\n\n Axis.prototype.contentBox = function contentBox () {\n var box = this.box.clone();\n var labels = this.labels;\n if (labels.length) {\n var axis = this.options.vertical ? Y : X;\n if (this.chartService.isPannable(axis)) {\n var offset = this.maxLabelOffset();\n box[axis + 1] -= offset.start;\n box[axis + 2] += offset.end;\n } else {\n if (labels[0].options.visible) {\n box.wrap(labels[0].box);\n }\n var lastLabel = labels[labels.length - 1];\n if (lastLabel.options.visible) {\n box.wrap(lastLabel.box);\n }\n }\n }\n\n return box;\n };\n\n Axis.prototype.maxLabelOffset = function maxLabelOffset () {\n var this$1 = this;\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var labelsBetweenTicks = this.labelsBetweenTicks();\n var tickPositions = this.getLabelsTickPositions();\n var offsetField = vertical ? Y : X;\n var labels = this.labels;\n var startPosition = reverse ? 1 : 0;\n var endPosition = reverse ? 0 : 1;\n var maxStartOffset = 0;\n var maxEndOffset = 0;\n\n for (var idx = 0; idx < labels.length; idx++) {\n var label = labels[idx];\n var tickIx = this$1.labelTickIndex(label);\n var startTick = (void 0), endTick = (void 0);\n\n if (labelsBetweenTicks) {\n startTick = tickPositions[tickIx + startPosition];\n endTick = tickPositions[tickIx + endPosition];\n } else {\n startTick = endTick = tickPositions[tickIx];\n }\n\n maxStartOffset = Math.max(maxStartOffset, startTick - label.box[offsetField + 1]);\n maxEndOffset = Math.max(maxEndOffset, label.box[offsetField + 2] - endTick);\n }\n\n return {\n start: maxStartOffset,\n end: maxEndOffset\n };\n };\n\n Axis.prototype.limitRange = function limitRange (from, to, min, max, offset) {\n var options = this.options;\n\n if ((from < min && offset < 0 && (!defined(options.min) || options.min <= min)) || (max < to && offset > 0 && (!defined(options.max) || max <= options.max))) {\n return null;\n }\n\n if ((to < min && offset > 0) || (max < from && offset < 0)) {\n return {\n min: from,\n max: to\n };\n }\n\n var rangeSize = to - from;\n var minValue = from;\n var maxValue = to;\n\n if (from < min && offset < 0) {\n minValue = limitValue(from, min, max);\n maxValue = limitValue(from + rangeSize, min + rangeSize, max);\n } else if (to > max && offset > 0) {\n maxValue = limitValue(to, min, max);\n minValue = limitValue(to - rangeSize, min, max - rangeSize);\n }\n\n return {\n min: minValue,\n max: maxValue\n };\n };\n\n Axis.prototype.valueRange = function valueRange () {\n return {\n min: this.seriesMin,\n max: this.seriesMax\n };\n };\n\n Axis.prototype.lineDir = function lineDir () {\n /*\n * Axis line direction:\n * * Vertical: up.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n return (vertical ? -1 : 1) * (reverse ? -1 : 1);\n };\n\n Axis.prototype.lineInfo = function lineInfo () {\n var ref = this.options;\n var vertical = ref.vertical;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = this.lineDir();\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n };\n\n Axis.prototype.pointOffset = function pointOffset (point) {\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var relative = axisDir > 0 ? point[axis] - lineBox[axisOrigin] : lineBox[axisOrigin] - point[axis];\n var offset = relative / lineSize;\n\n return offset;\n };\n\n // Computes the axis range change (delta) for a given scale factor.\n // The delta is subtracted from the axis range:\n // * delta > 0 reduces the axis range (zoom-in)\n // * delta < 0 expands the axis range (zoom-out)\n Axis.prototype.scaleToDelta = function scaleToDelta (rawScale, range) {\n // Scale >= 1 would result in axis range of 0.\n // Scale <= -1 would reverse the scale direction.\n var MAX_SCALE = 0.999;\n var scale = limitValue(rawScale, -MAX_SCALE, MAX_SCALE);\n\n var delta;\n if (scale > 0) {\n delta = range * Math.min(1, scale);\n } else {\n delta = range - (range / (1 + scale));\n }\n\n return delta;\n };\n\n Axis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n return !this.options.justified;\n };\n\n //add legacy fields to the options that are no longer generated by default\n Axis.prototype.prepareUserOptions = function prepareUserOptions () {\n };\n\n return Axis;\n}(ChartElement));\n\nsetDefaultOptions(Axis, {\n labels: {\n visible: true,\n rotation: 0,\n mirror: false,\n step: 1,\n skip: 0\n },\n line: {\n width: 1,\n color: BLACK,\n visible: true\n },\n title: {\n visible: true,\n position: CENTER\n },\n majorTicks: {\n align: OUTSIDE,\n size: 4,\n skip: 0,\n step: 1\n },\n minorTicks: {\n align: OUTSIDE,\n size: 3,\n skip: 0,\n step: 1\n },\n axisCrossingValue: 0,\n majorTickType: OUTSIDE,\n minorTickType: NONE,\n majorGridLines: {\n skip: 0,\n step: 1\n },\n minorGridLines: {\n visible: false,\n width: 1,\n color: BLACK,\n skip: 0,\n step: 1\n },\n // TODO: Move to line or labels options\n margin: 5,\n visible: true,\n reverse: false,\n justified: true,\n notes: {\n label: {\n text: \"\"\n }\n },\n\n _alignLines: true,\n _deferLabels: false\n});\n\nexport default Axis;\n","export var MILLISECONDS = \"milliseconds\";\nexport var SECONDS = \"seconds\";\nexport var MINUTES = \"minutes\";\nexport var HOURS = \"hours\";\nexport var DAYS = \"days\";\nexport var WEEKS = \"weeks\";\nexport var MONTHS = \"months\";\nexport var YEARS = \"years\";\n\nexport var TIME_PER_MILLISECOND = 1;\nexport var TIME_PER_SECOND = 1000;\nexport var TIME_PER_MINUTE = 60 * TIME_PER_SECOND;\nexport var TIME_PER_HOUR = 60 * TIME_PER_MINUTE;\nexport var TIME_PER_DAY = 24 * TIME_PER_HOUR;\nexport var TIME_PER_WEEK = 7 * TIME_PER_DAY;\nexport var TIME_PER_MONTH = 31 * TIME_PER_DAY;\nexport var TIME_PER_YEAR = 365 * TIME_PER_DAY;\nexport var TIME_PER_UNIT = {\n \"years\": TIME_PER_YEAR,\n \"months\": TIME_PER_MONTH,\n \"weeks\": TIME_PER_WEEK,\n \"days\": TIME_PER_DAY,\n \"hours\": TIME_PER_HOUR,\n \"minutes\": TIME_PER_MINUTE,\n \"seconds\": TIME_PER_SECOND,\n \"milliseconds\": TIME_PER_MILLISECOND\n};\n\n","import { TIME_PER_MINUTE } from './constants';\n\nexport default function absoluteDateDiff(a, b) {\n var diff = a.getTime() - b;\n var offsetDiff = a.getTimezoneOffset() - b.getTimezoneOffset();\n\n return diff - (offsetDiff * TIME_PER_MINUTE);\n}","export default function addTicks(date, ticks) {\n return new Date(date.getTime() + ticks);\n}","export default function toDate(value) {\n var result;\n\n if (value instanceof Date) {\n result = value;\n } else if (value) {\n result = new Date(value);\n }\n\n return result;\n}","import { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_SECOND, TIME_PER_MINUTE, TIME_PER_HOUR } from './constants';\nimport addTicks from './add-ticks';\nimport toDate from './to-date';\nimport startOfWeek from './start-of-week';\n\nfunction 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\nfunction addHours(date, hours) {\n var roundedDate = new Date(date);\n\n roundedDate.setMinutes(0, 0, 0);\n\n var tzDiff = (date.getTimezoneOffset() - roundedDate.getTimezoneOffset()) * TIME_PER_MINUTE;\n\n return addTicks(roundedDate, tzDiff + hours * TIME_PER_HOUR);\n}\n\nexport default function addDuration(dateValue, value, unit, weekStartDay) {\n var result = dateValue;\n\n if (dateValue) {\n var date = toDate(dateValue);\n var hours = date.getHours();\n\n if (unit === YEARS) {\n result = new Date(date.getFullYear() + value, 0, 1);\n adjustDST(result, 0);\n } else if (unit === MONTHS) {\n result = new Date(date.getFullYear(), date.getMonth() + value, 1);\n adjustDST(result, hours);\n } else if (unit === WEEKS) {\n result = addDuration(startOfWeek(date, weekStartDay), value * 7, DAYS);\n adjustDST(result, hours);\n } else if (unit === DAYS) {\n result = new Date(date.getFullYear(), date.getMonth(), date.getDate() + value);\n adjustDST(result, hours);\n } else if (unit === HOURS) {\n result = addHours(date, value);\n } else if (unit === MINUTES) {\n result = addTicks(date, value * TIME_PER_MINUTE);\n\n if (result.getSeconds() > 0) {\n result.setSeconds(0);\n }\n } else if (unit === SECONDS) {\n result = addTicks(date, value * TIME_PER_SECOND);\n } else if (unit === MILLISECONDS) {\n result = addTicks(date, value);\n }\n\n if (unit !== MILLISECONDS && result.getMilliseconds() > 0) {\n result.setMilliseconds(0);\n }\n }\n\n return result;\n}","import { TIME_PER_DAY } from './constants';\nimport addTicks from './add-ticks';\n\nexport default function startOfWeek(date, weekStartDay) {\n if ( weekStartDay === void 0 ) weekStartDay = 0;\n\n var daysToSubtract = 0;\n var day = date.getDay();\n\n if (!isNaN(day)) {\n while (day !== weekStartDay) {\n if (day === 0) {\n day = 6;\n } else {\n day--;\n }\n\n daysToSubtract++;\n }\n }\n\n return addTicks(date, -daysToSubtract * TIME_PER_DAY);\n}","import addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function floorDate(date, unit, weekStartDay) {\n return addDuration(toDate(date), 0, unit, weekStartDay);\n}","import floorDate from './floor-date';\nimport addDuration from './add-duration';\nimport toDate from './to-date';\n\nexport default function ceilDate(dateValue, unit, weekStartDay) {\n var date = toDate(dateValue);\n\n if (date && floorDate(date, unit, weekStartDay).getTime() === date.getTime()) {\n return date;\n }\n\n return addDuration(date, 1, unit, weekStartDay);\n}","export default function dateComparer(a, b) {\n if (a && b) {\n return a.getTime() - b.getTime();\n }\n\n return -1;\n}","export default function dateDiff(a, b) {\n return a.getTime() - b;\n}","import { isArray } from '../common';\nimport toDate from './to-date';\n\nexport default function toTime(value) {\n if (isArray(value)) {\n var result = [];\n for (var idx = 0; idx < value.length; idx++) {\n result.push(toTime(value[idx]));\n }\n\n return result;\n } else if (value) {\n return toDate(value).getTime();\n }\n}","import toTime from './to-time';\n\nexport default function dateEquals(a, b) {\n if (a && b) {\n return toTime(a) === toTime(b);\n }\n\n return a === b;\n}","import { DAYS, WEEKS, MONTHS, YEARS, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\nimport absoluteDateDiff from './absolute-date-diff';\nimport toDate from './to-date';\n\nfunction timeIndex(date, start, baseUnit) {\n return absoluteDateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n}\n\nexport default function dateIndex(value, start, baseUnit, baseUnitStep) {\n var date = toDate(value);\n var startDate = toDate(start);\n var index;\n\n if (baseUnit === MONTHS) {\n index = (date.getMonth() - startDate.getMonth() + (date.getFullYear() - startDate.getFullYear()) * 12) +\n timeIndex(date, new Date(date.getFullYear(), date.getMonth()), DAYS) / new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n } else if (baseUnit === YEARS) {\n index = date.getFullYear() - startDate.getFullYear() + dateIndex(date, new Date(date.getFullYear(), 0), MONTHS, 1) / 12;\n } else if (baseUnit === DAYS || baseUnit === WEEKS) {\n index = timeIndex(date, startDate, baseUnit);\n } else {\n index = dateDiff(date, start) / TIME_PER_UNIT[baseUnit];\n }\n\n return index / baseUnitStep;\n}\n\n","import { DAYS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_UNIT } from './constants';\nimport dateDiff from './date-diff';\n\nexport default function duration(a, b, unit) {\n var diff;\n\n if (unit === YEARS) {\n diff = b.getFullYear() - a.getFullYear();\n } else if (unit === MONTHS) {\n diff = duration(a, b, YEARS) * 12 + b.getMonth() - a.getMonth();\n } else if (unit === DAYS) {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_DAY);\n } else {\n diff = Math.floor(dateDiff(b, a) / TIME_PER_UNIT[unit]);\n }\n\n return diff;\n}","import { isString } from '../common';\nimport toDate from './to-date';\n\nexport default function parseDate(intlService, date) {\n var result;\n if (isString(date)) {\n result = intlService.parseDate(date) || toDate(date);\n } else {\n result = toDate(date);\n }\n return result;\n}\n","import parseDate from './parse-date';\n\nimport { isArray } from '../common';\n\nexport default function parseDates(intlService, dates) {\n if (isArray(dates)) {\n var result = [];\n for (var idx = 0; idx < dates.length; idx++) {\n result.push(parseDate(intlService, dates[idx]));\n }\n\n return result;\n }\n\n return parseDate(intlService, dates);\n}","import { isNumber } from '../common';\n\nexport default function firstDay(options, intlService) {\n if (isNumber(options.weekStartDay)) {\n return options.weekStartDay;\n }\n\n if (intlService && intlService.firstDay) {\n return intlService.firstDay();\n }\n\n return 0;\n}\n","import Axis from './axis';\nimport AxisLabel from './axis-label';\n\nimport { BLACK, COORD_PRECISION, DEFAULT_PRECISION, X, Y } from '../common/constants';\nimport { defined, isNumber, last, limitValue, round, setDefaultOptions, valueOrDefault, HashMap } from '../common';\nimport { dateEquals } from '../date-utils';\n\nvar MIN_CATEGORY_POINTS_RANGE = 0.01;\nvar MIN_CATEGORY_RANGE = 0.1;\n\nfunction indexOf(value, arr) {\n if (value instanceof Date) {\n var length = arr.length;\n for (var idx = 0; idx < length; idx++) {\n if (dateEquals(arr[idx], value)) {\n return idx;\n }\n }\n\n return -1;\n }\n\n return arr.indexOf(value);\n}\n\nvar CategoryAxis = (function (Axis) {\n function CategoryAxis () {\n Axis.apply(this, arguments);\n }\n\n if ( Axis ) CategoryAxis.__proto__ = Axis;\n CategoryAxis.prototype = Object.create( Axis && Axis.prototype );\n CategoryAxis.prototype.constructor = CategoryAxis;\n\n CategoryAxis.prototype.initFields = function initFields () {\n this._ticks = {};\n };\n\n CategoryAxis.prototype.categoriesHash = function categoriesHash () {\n return \"\";\n };\n\n CategoryAxis.prototype.clone = function clone () {\n var copy = new CategoryAxis(Object.assign({}, this.options, {\n categories: this.options.srcCategories\n }), this.chartService);\n copy.createLabels();\n\n return copy;\n };\n\n CategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n var categories = options.categories || [];\n var definedMin = defined(options.min);\n var definedMax = defined(options.max);\n options.srcCategories = options.categories = categories;\n\n if ((definedMin || definedMax) && categories.length) {\n var min = definedMin ? Math.floor(options.min) : 0;\n var max;\n\n if (definedMax) {\n max = options.justified ? Math.floor(options.max) + 1 : Math.ceil(options.max);\n } else {\n max = categories.length;\n }\n\n options.categories = options.categories.slice(min, max);\n }\n\n return options;\n };\n\n CategoryAxis.prototype.rangeIndices = function rangeIndices () {\n var options = this.options;\n var length = options.categories.length || 1;\n var min = isNumber(options.min) ? options.min % 1 : 0;\n var max;\n\n if (isNumber(options.max) && options.max % 1 !== 0 && options.max < this.totalRange().max) {\n max = length - (1 - options.max % 1);\n } else {\n max = length - (options.justified ? 1 : 0);\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.totalRangeIndices = function totalRangeIndices (limit) {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max;\n\n if (isNumber(options.max)) {\n max = options.max;\n } else if (isNumber(options.min)) {\n max = min + options.categories.length;\n } else {\n max = this.totalRange().max || 1;\n }\n\n if (limit) {\n var totalRange = this.totalRange();\n min = limitValue(min, 0, totalRange.max);\n max = limitValue(max, 0, totalRange.max);\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.range = function range () {\n var options = this.options;\n var min = isNumber(options.min) ? options.min : 0;\n var max = isNumber(options.max) ? options.max : this.totalRange().max;\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.roundedRange = function roundedRange () {\n return this.range();\n };\n\n CategoryAxis.prototype.totalRange = function totalRange () {\n var options = this.options;\n return { min: 0, max: Math.max(this._seriesMax || 0, options.srcCategories.length) - (options.justified ? 1 : 0) };\n };\n\n CategoryAxis.prototype.scaleOptions = function scaleOptions () {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var lineBox = this.lineBox();\n var size = this.options.vertical ? lineBox.height() : lineBox.width();\n var scale = size / ((max - min) || 1);\n\n return {\n scale: scale * (this.options.reverse ? -1 : 1),\n box: lineBox,\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.arrangeLabels = function arrangeLabels () {\n Axis.prototype.arrangeLabels.call(this);\n this.hideOutOfRangeLabels();\n };\n\n CategoryAxis.prototype.hideOutOfRangeLabels = function hideOutOfRangeLabels () {\n var ref = this;\n var box = ref.box;\n var labels = ref.labels;\n\n if (labels.length > 0) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n var firstLabel = labels[0];\n var lastLabel = last(labels);\n\n if (firstLabel.box[valueAxis + 1] > end || firstLabel.box[valueAxis + 2] < start) {\n firstLabel.options.visible = false;\n }\n if (lastLabel.box[valueAxis + 1] > end || lastLabel.box[valueAxis + 2] < start) {\n lastLabel.options.visible = false;\n }\n }\n };\n\n CategoryAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n return this.getTicks().majorTicks;\n };\n\n CategoryAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n return this.getTicks().minorTicks;\n };\n\n CategoryAxis.prototype.getLabelsTickPositions = function getLabelsTickPositions () {\n return this.getTicks().labelTicks;\n };\n\n CategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n var ref = this.rangeIndices();\n var min = ref.min;\n var max = ref.max;\n var limit = Math.ceil(max);\n var current = Math.floor(min);\n var indices = [];\n\n while (current <= limit) {\n indices.push(current);\n current += stepSize;\n }\n\n return indices;\n };\n\n CategoryAxis.prototype.getTickPositions = function getTickPositions (stepSize) {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var pos = box[(vertical ? Y : X) + (reverse ? 2 : 1)];\n var indices = this.tickIndices(stepSize);\n var positions = [];\n\n for (var idx = 0; idx < indices.length; idx++) {\n positions.push(pos + round(scale * (indices[idx] - min), COORD_PRECISION));\n }\n\n return positions;\n };\n\n CategoryAxis.prototype.getTicks = function getTicks () {\n var options = this.options;\n var cache = this._ticks;\n var range = this.rangeIndices();\n var lineBox = this.lineBox();\n var hash = lineBox.getHash() + range.min + \",\" + range.max + options.reverse + options.justified;\n\n if (cache._hash !== hash) {\n var hasMinor = options.minorTicks.visible || options.minorGridLines.visible;\n cache._hash = hash;\n cache.labelTicks = this.getTickPositions(1);\n cache.majorTicks = this.filterOutOfRangePositions(cache.labelTicks, lineBox);\n cache.minorTicks = hasMinor ? this.filterOutOfRangePositions(this.getTickPositions(0.5), lineBox) : [];\n }\n\n return cache;\n };\n\n CategoryAxis.prototype.filterOutOfRangePositions = function filterOutOfRangePositions (positions, lineBox) {\n if (!positions.length) {\n return positions;\n }\n\n var axis = this.options.vertical ? Y : X;\n var inRange = function (position) { return lineBox[axis + 1] <= position && position <= lineBox[axis + 2]; };\n\n var end = positions.length - 1;\n var startIndex = 0;\n while (!inRange(positions[startIndex]) && startIndex <= end) {\n startIndex++;\n }\n\n var endIndex = end;\n\n while (!inRange(positions[endIndex]) && endIndex >= 0) {\n endIndex--;\n }\n\n return positions.slice(startIndex, endIndex + 1);\n };\n\n CategoryAxis.prototype.lineInfo = function lineInfo () {\n var ref = this.options;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n var lineBox = this.lineBox();\n var lineSize = vertical ? lineBox.height() : lineBox.width();\n var axis = vertical ? Y : X;\n var axisDir = reverse ? -1 : 1;\n var startEdge = axisDir === 1 ? 1 : 2;\n var axisOrigin = axis + startEdge.toString();\n var lineStart = lineBox[axisOrigin];\n\n return {\n axis: axis,\n axisOrigin: axisOrigin,\n axisDir: axisDir,\n lineBox: lineBox,\n lineSize: lineSize,\n lineStart: lineStart\n };\n };\n\n CategoryAxis.prototype.lineDir = function lineDir () {\n /*\n * Category axis line direction:\n * * Vertical: down.\n * * Horizontal: right.\n */\n\n var ref = this.options;\n var reverse = ref.reverse;\n return reverse ? -1 : 1;\n };\n\n // TODO: Rename to slotBox, valueSlot, slotByIndex?\n CategoryAxis.prototype.getSlot = function getSlot (from, to, limit) {\n var options = this.options;\n var reverse = options.reverse;\n var justified = options.justified;\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var box = ref.box;\n var min = ref.min;\n var ref$1 = this.lineInfo();\n var valueAxis = ref$1.axis;\n var lineStart = ref$1.lineStart;\n\n var slotBox = box.clone();\n var singleSlot = !defined(to);\n\n var start = valueOrDefault(from, 0);\n var end = valueOrDefault(to, start);\n end = Math.max(end - 1, start);\n\n // Fixes transient bug caused by iOS 6.0 JIT\n // (one can never be too sure)\n end = Math.max(start, end);\n\n var p1 = lineStart + (start - min) * scale;\n var p2 = lineStart + (end + 1 - min) * scale;\n\n if (singleSlot && justified) {\n p2 = p1;\n }\n\n if (limit) {\n p1 = limitValue(p1, box[valueAxis + 1], box[valueAxis + 2]);\n p2 = limitValue(p2, box[valueAxis + 1], box[valueAxis + 2]);\n }\n\n slotBox[valueAxis + 1] = reverse ? p2 : p1;\n slotBox[valueAxis + 2] = reverse ? p1 : p2;\n\n return slotBox;\n };\n\n CategoryAxis.prototype.limitSlot = function limitSlot (slot) {\n var vertical = this.options.vertical;\n var valueAxis = vertical ? Y : X;\n var lineBox = this.lineBox();\n var limittedSlot = slot.clone();\n\n limittedSlot[valueAxis + 1] = limitValue(slot[valueAxis + 1], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n limittedSlot[valueAxis + 2] = limitValue(slot[valueAxis + 2], lineBox[valueAxis + 1], lineBox[valueAxis + 2]);\n\n return limittedSlot;\n };\n\n CategoryAxis.prototype.slot = function slot (from, to, limit) {\n var min = Math.floor(this.options.min || 0);\n var start = from;\n var end = to;\n\n if (typeof start === \"string\") {\n start = this.categoryIndex(start);\n } else if (isNumber(start)) {\n start -= min;\n }\n\n if (typeof end === \"string\") {\n end = this.categoryIndex(end);\n } else if (isNumber(end)) {\n end -= min;\n }\n\n return Axis.prototype.slot.call(this, start, end, limit);\n };\n\n CategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n var ref = this.options;\n var reverse = ref.reverse;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var min = ref$1.min;\n var max = ref$1.max;\n var startValue = reverse ? max : min;\n var lineStart = box[valueAxis + 1];\n var lineEnd = box[valueAxis + 2];\n var pos = point[valueAxis];\n\n if (pos < lineStart || pos > lineEnd) {\n return null;\n }\n\n var value = startValue + (pos - lineStart) / scale;\n var diff = value % 1;\n\n if (justified) {\n value = Math.round(value);\n } else if (diff === 0 && value > 0) {\n value--;\n }\n\n return Math.floor(value);\n };\n\n CategoryAxis.prototype.getCategory = function getCategory (point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.options.categories[index];\n };\n\n CategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n return this.totalIndex(value) - Math.floor(this.options.min || 0);\n };\n\n CategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n var options = this.options;\n\n return (total ? options.srcCategories : options.categories)[index];\n };\n\n CategoryAxis.prototype.categoriesCount = function categoriesCount () {\n return (this.options.categories || []).length;\n };\n\n CategoryAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var range = options.categories.length;\n var scale = size / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n return {\n min: offset,\n max: range + offset\n };\n };\n\n CategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var rangeIndices = this.totalRangeIndices();\n var range = rangeIndices.max - rangeIndices.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = rangeIndices.min + minDelta;\n var max = rangeIndices.max - maxDelta;\n\n if (max - min < MIN_CATEGORY_RANGE) {\n max = min + MIN_CATEGORY_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var ref = this.totalRange();\n var totalMin = ref.min;\n var totalMax = ref.max;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n };\n\n CategoryAxis.prototype.labelsCount = function labelsCount () {\n var labelsRange = this.labelsRange();\n\n return labelsRange.max - labelsRange.min;\n };\n\n CategoryAxis.prototype.labelsRange = function labelsRange () {\n var options = this.options;\n var justified = options.justified;\n var labelOptions = options.labels;\n var ref = this.totalRangeIndices(true);\n var min = ref.min;\n var max = ref.max;\n var start = Math.floor(min);\n\n if (!justified) {\n min = Math.floor(min);\n max = Math.ceil(max);\n } else {\n min = Math.ceil(min);\n max = Math.floor(max);\n }\n\n var skip;\n\n if (min > labelOptions.skip) {\n skip = labelOptions.skip + labelOptions.step * Math.ceil((min - labelOptions.skip) / labelOptions.step);\n } else {\n skip = labelOptions.skip;\n }\n\n return {\n min: skip - start,\n max: (options.categories.length ? max + (justified ? 1 : 0) : 0) - start\n };\n };\n\n CategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var options = this.options;\n var dataItem = options.dataItems ? options.dataItems[index] : null;\n var category = valueOrDefault(options.categories[index], \"\");\n\n labelContext.dataItem = dataItem;\n var text = this.axisLabelText(category, labelOptions, labelContext);\n\n return new AxisLabel(category, text, index, dataItem, labelOptions);\n };\n\n CategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.totalRangeIndices();\n\n return Math.floor(range.min) <= value && value <= Math.ceil(range.max);\n };\n\n CategoryAxis.prototype.noteSlot = function noteSlot (value) {\n var options = this.options;\n var index = value - Math.floor(options.min || 0);\n return this.getSlot(index);\n };\n\n CategoryAxis.prototype.arrangeNotes = function arrangeNotes () {\n Axis.prototype.arrangeNotes.call(this);\n this.hideOutOfRangeNotes();\n };\n\n CategoryAxis.prototype.hideOutOfRangeNotes = function hideOutOfRangeNotes () {\n var ref = this;\n var notes = ref.notes;\n var box = ref.box;\n if (notes && notes.length) {\n var valueAxis = this.options.vertical ? Y : X;\n var start = box[valueAxis + 1];\n var end = box[valueAxis + 2];\n\n for (var idx = 0; idx < notes.length; idx++) {\n var note = notes[idx];\n if (note.box && (end < note.box[valueAxis + 1] || note.box[valueAxis + 2] < start)) {\n note.hide();\n }\n }\n }\n };\n\n CategoryAxis.prototype.pan = function pan (delta) {\n var range = this.totalRangeIndices(true);\n var ref = this.scaleOptions();\n var scale = ref.scale;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n var totalRange = this.totalRange();\n var min = range.min + offset;\n var max = range.max + offset;\n\n return this.limitRange(min, max, 0, totalRange.max, offset);\n };\n\n CategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n var ref = this.options;\n var reverse = ref.reverse;\n var vertical = ref.vertical;\n var valueAxis = vertical ? Y : X;\n var range = this.totalRangeIndices(true);\n var ref$1 = this.scaleOptions();\n var scale = ref$1.scale;\n var box = ref$1.box;\n var lineStart = box[valueAxis + (reverse ? 2 : 1)];\n\n var diffStart = start[valueAxis] - lineStart;\n var diffEnd = end[valueAxis] - lineStart;\n\n var min = range.min + diffStart / scale;\n var max = range.min + diffEnd / scale;\n var rangeMin = Math.min(min, max);\n var rangeMax = Math.max(min, max);\n\n if (rangeMax - rangeMin >= MIN_CATEGORY_POINTS_RANGE) {\n return {\n min: rangeMin,\n max: rangeMax\n };\n }\n };\n\n CategoryAxis.prototype.valueRange = function valueRange () {\n return this.range();\n };\n\n CategoryAxis.prototype.totalIndex = function totalIndex (value) {\n var options = this.options;\n var index = this._categoriesMap ?\n this._categoriesMap.get(value) : indexOf(value, options.srcCategories);\n\n return index;\n };\n\n CategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n var options = this.options;\n var min = 0;\n\n if (isNumber(options.min)) {\n min = Math.floor(options.min);\n }\n\n var max;\n if (isNumber(options.max)) {\n max = options.justified ? Math.floor(options.max) : Math.ceil(options.max) - 1;\n } else {\n max = this.totalCount() - 1;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n CategoryAxis.prototype.mapCategories = function mapCategories () {\n if (!this._categoriesMap) {\n var map = this._categoriesMap = new HashMap();\n var srcCategories = this.options.srcCategories;\n for (var idx = 0; idx < srcCategories.length; idx++) {\n map.set(srcCategories[idx], idx);\n }\n }\n };\n\n CategoryAxis.prototype.totalCount = function totalCount () {\n return Math.max(this.options.srcCategories.length, this._seriesMax || 0);\n };\n\n return CategoryAxis;\n}(Axis));\n\nsetDefaultOptions(CategoryAxis, {\n type: \"category\",\n vertical: false,\n majorGridLines: {\n visible: false,\n width: 1,\n color: BLACK\n },\n labels: {\n zIndex: 1\n },\n justified: false,\n _deferLabels: true\n});\n\nexport default CategoryAxis;\n","var COORDINATE_LIMIT = 300000;\n\nvar DateLabelFormats = {\n milliseconds: \"HH:mm:ss.fff\",\n seconds: \"HH:mm:ss\",\n minutes: \"HH:mm\",\n hours: \"HH:mm\",\n days: \"M/d\",\n weeks: \"M/d\",\n months: \"MMM 'yy\",\n years: \"yyyy\"\n};\n\nvar ZERO_THRESHOLD = 0.2;\n\nexport {\n COORDINATE_LIMIT, DateLabelFormats, ZERO_THRESHOLD\n};","import CategoryAxis from './category-axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { CENTER, DATE, DEFAULT_PRECISION, MAX_VALUE, OBJECT, X, Y } from '../common/constants';\nimport { deepExtend, defined, inArray, last, limitValue, round, setDefaultOptions, sparseArrayLimits } from '../common';\n\nimport { MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS,\n TIME_PER_MINUTE, TIME_PER_HOUR, TIME_PER_DAY, TIME_PER_WEEK,\n TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\nimport { dateComparer, toDate, addTicks, addDuration, dateDiff, absoluteDateDiff,\n dateIndex, dateEquals, toTime, parseDate, parseDates, firstDay } from '../date-utils';\n\nimport { DateLabelFormats } from './constants';\n\nvar AUTO = \"auto\";\nvar BASE_UNITS = [\n MILLISECONDS, SECONDS, MINUTES, HOURS, DAYS, WEEKS, MONTHS, YEARS\n];\nvar FIT = \"fit\";\n\n\nfunction categoryRange(categories) {\n var range = categories._range;\n if (!range) {\n range = categories._range = sparseArrayLimits(categories);\n range.min = toDate(range.min);\n range.max = toDate(range.max);\n }\n\n return range;\n}\n\nvar EmptyDateRange = function EmptyDateRange(options) {\n this.options = options;\n};\n\nEmptyDateRange.prototype.displayIndices = function displayIndices () {\n return {\n min: 0,\n max: 1\n };\n};\n\nEmptyDateRange.prototype.displayRange = function displayRange () {\n return {};\n};\n\nEmptyDateRange.prototype.total = function total () {\n return {};\n};\n\nEmptyDateRange.prototype.valueRange = function valueRange () {\n return {};\n};\n\nEmptyDateRange.prototype.valueIndex = function valueIndex () {\n return -1;\n};\n\nEmptyDateRange.prototype.values = function values () {\n return [];\n};\n\nEmptyDateRange.prototype.totalIndex = function totalIndex () {\n return -1;\n};\n\nEmptyDateRange.prototype.valuesCount = function valuesCount () {\n return 0;\n};\n\nEmptyDateRange.prototype.totalCount = function totalCount () {\n return 0;\n};\n\nEmptyDateRange.prototype.dateAt = function dateAt () {\n return null;\n};\n\nvar DateRange = function DateRange(start, end, options) {\n this.options = options;\n options.baseUnitStep = options.baseUnitStep || 1;\n\n var roundToBaseUnit = options.roundToBaseUnit;\n var justified = options.justified;\n\n this.start = addDuration(start, 0, options.baseUnit, options.weekStartDay);\n var lowerEnd = this.roundToTotalStep(end);\n var expandEnd = !justified && dateEquals(end, lowerEnd) && !options.justifyEnd;\n\n this.end = this.roundToTotalStep(end, !justified, expandEnd ? 1 : 0);\n\n var min = options.min || start;\n this.valueStart = this.roundToTotalStep(min);\n this.displayStart = roundToBaseUnit ? this.valueStart : min;\n\n var max = options.max;\n if (!max) {\n this.valueEnd = lowerEnd;\n this.displayEnd = roundToBaseUnit || expandEnd ? this.end : end;\n } else {\n var next = !justified && dateEquals(max, this.roundToTotalStep(max)) ? -1 : 0;\n this.valueEnd = this.roundToTotalStep(max, false, next);\n this.displayEnd = roundToBaseUnit ? this.roundToTotalStep(max, !justified) : options.max;\n }\n\n if (this.valueEnd < this.valueStart) {\n this.valueEnd = this.valueStart;\n }\n if (this.displayEnd <= this.displayStart) {\n this.displayEnd = this.roundToTotalStep(this.displayStart, false, 1);\n }\n};\n\nDateRange.prototype.displayRange = function displayRange () {\n return {\n min: this.displayStart,\n max: this.displayEnd\n };\n};\n\nDateRange.prototype.displayIndices = function displayIndices () {\n if (!this._indices) {\n var options = this.options;\n\n var baseUnit = options.baseUnit;\n var baseUnitStep = options.baseUnitStep;\n\n var minIdx = dateIndex(this.displayStart, this.valueStart, baseUnit, baseUnitStep);\n var maxIdx = dateIndex(this.displayEnd, this.valueStart, baseUnit, baseUnitStep);\n\n this._indices = { min: minIdx, max: maxIdx };\n }\n\n return this._indices;\n};\n\nDateRange.prototype.total = function total () {\n return {\n min: this.start,\n max: this.end\n };\n};\n\nDateRange.prototype.totalCount = function totalCount () {\n var last = this.totalIndex(this.end);\n\n return last + (this.options.justified ? 1 : 0);\n};\n\nDateRange.prototype.valueRange = function valueRange () {\n return {\n min: this.valueStart,\n max: this.valueEnd\n };\n};\n\nDateRange.prototype.valueIndex = function valueIndex (value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.totalIndex = function totalIndex (value) {\n var options = this.options;\n return Math.floor(dateIndex(value, this.start, options.baseUnit, options.baseUnitStep));\n};\n\nDateRange.prototype.dateIndex = function dateIndex$1 (value) {\n var options = this.options;\n return dateIndex(value, this.valueStart, options.baseUnit, options.baseUnitStep);\n};\n\nDateRange.prototype.valuesCount = function valuesCount () {\n var maxIdx = this.valueIndex(this.valueEnd);\n\n return maxIdx + 1;\n};\n\nDateRange.prototype.values = function values () {\n var values = this._values;\n if (!values) {\n var options = this.options;\n var range = this.valueRange();\n this._values = values = [];\n\n for (var date = range.min; date <= range.max;) {\n values.push(date);\n date = addDuration(date, options.baseUnitStep, options.baseUnit, options.weekStartDay);\n }\n }\n\n return values;\n};\n\nDateRange.prototype.dateAt = function dateAt (index, total) {\n var options = this.options;\n\n return addDuration(total ? this.start : this.valueStart, options.baseUnitStep * index, options.baseUnit, options.weekStartDay);\n};\n\nDateRange.prototype.roundToTotalStep = function roundToTotalStep (value, upper, next) {\n var ref = this.options;\n var baseUnit = ref.baseUnit;\n var baseUnitStep = ref.baseUnitStep;\n var weekStartDay = ref.weekStartDay;\n var start = this.start;\n\n var step = dateIndex(value, start, baseUnit, baseUnitStep);\n var roundedStep = upper ? Math.ceil(step) : Math.floor(step);\n\n if (next) {\n roundedStep += next;\n }\n\n return addDuration(start, roundedStep * baseUnitStep, baseUnit, weekStartDay);\n};\n\nfunction autoBaseUnit(options, startUnit, startStep) {\n var categoryLimits = categoryRange(options.categories);\n var span = (options.max || categoryLimits.max) - (options.min || categoryLimits.min);\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n var autoUnit = options.baseUnit === FIT;\n var autoUnitIx = startUnit ? BASE_UNITS.indexOf(startUnit) : 0;\n var baseUnit = autoUnit ? BASE_UNITS[autoUnitIx++] : options.baseUnit;\n var units = span / TIME_PER_UNIT[baseUnit];\n var totalUnits = units;\n var unitSteps, step, nextStep;\n\n while (!step || units >= maxDateGroups) {\n unitSteps = unitSteps || autoBaseUnitSteps[baseUnit].slice(0);\n\n do {\n nextStep = unitSteps.shift();\n } while (nextStep && startUnit === baseUnit && nextStep < startStep);\n\n if (nextStep) {\n step = nextStep;\n units = totalUnits / step;\n } else if (baseUnit === last(BASE_UNITS)) {\n step = Math.ceil(totalUnits / maxDateGroups);\n break;\n } else if (autoUnit) {\n baseUnit = BASE_UNITS[autoUnitIx++] || last(BASE_UNITS);\n totalUnits = span / TIME_PER_UNIT[baseUnit];\n unitSteps = null;\n } else {\n if (units > maxDateGroups) {\n step = Math.ceil(totalUnits / maxDateGroups);\n }\n break;\n }\n }\n\n options.baseUnitStep = step;\n options.baseUnit = baseUnit;\n}\n\nfunction defaultBaseUnit(options) {\n var categories = options.categories;\n var count = defined(categories) ? categories.length : 0;\n var minDiff = MAX_VALUE;\n var lastCategory, unit;\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n var category = categories[categoryIx];\n\n if (category && lastCategory) {\n var diff = absoluteDateDiff(category, lastCategory);\n if (diff > 0) {\n minDiff = Math.min(minDiff, diff);\n\n if (minDiff >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (minDiff >= TIME_PER_MONTH - TIME_PER_DAY * 3) {\n unit = MONTHS;\n } else if (minDiff >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (minDiff >= TIME_PER_DAY) {\n unit = DAYS;\n } else if (minDiff >= TIME_PER_HOUR) {\n unit = HOURS;\n } else if (minDiff >= TIME_PER_MINUTE) {\n unit = MINUTES;\n } else {\n unit = SECONDS;\n }\n }\n }\n\n lastCategory = category;\n }\n\n options.baseUnit = unit || DAYS;\n}\n\nfunction initUnit(options) {\n var baseUnit = (options.baseUnit || \"\").toLowerCase();\n var useDefault = baseUnit !== FIT && !inArray(baseUnit, BASE_UNITS);\n\n if (useDefault) {\n defaultBaseUnit(options);\n }\n\n if (baseUnit === FIT || options.baseUnitStep === AUTO) {\n autoBaseUnit(options);\n }\n\n return options;\n}\n\nvar DateCategoryAxis = (function (CategoryAxis) {\n function DateCategoryAxis () {\n CategoryAxis.apply(this, arguments);\n }\n\n if ( CategoryAxis ) DateCategoryAxis.__proto__ = CategoryAxis;\n DateCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n DateCategoryAxis.prototype.constructor = DateCategoryAxis;\n\n DateCategoryAxis.prototype.clone = function clone () {\n var copy = new DateCategoryAxis(Object.assign({}, this.options), this.chartService);\n copy.createLabels();\n\n return copy;\n };\n\n DateCategoryAxis.prototype.categoriesHash = function categoriesHash () {\n var start = this.dataRange.total().min;\n return this.options.baseUnit + this.options.baseUnitStep + start;\n };\n\n DateCategoryAxis.prototype.initUserOptions = function initUserOptions (options) {\n return options;\n };\n\n DateCategoryAxis.prototype.initFields = function initFields () {\n CategoryAxis.prototype.initFields.call(this);\n\n var chartService = this.chartService;\n var intlService = chartService.intl;\n var options = this.options;\n\n var categories = options.categories || [];\n if (!categories._parsed) {\n categories = parseDates(intlService, categories);\n categories._parsed = true;\n }\n\n options = deepExtend({\n roundToBaseUnit: true\n }, options, {\n categories: categories,\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n weekStartDay: firstDay(options, intlService)\n });\n\n if (chartService.panning && chartService.isPannable(options.vertical ? Y : X)) {\n options.roundToBaseUnit = false;\n }\n\n options.userSetBaseUnit = options.userSetBaseUnit || options.baseUnit;\n options.userSetBaseUnitStep = options.userSetBaseUnitStep || options.baseUnitStep;\n\n this.options = options;\n options.srcCategories = categories;\n\n if (categories.length > 0) {\n var range = categoryRange(categories);\n var maxDivisions = options.maxDivisions;\n\n this.dataRange = new DateRange(range.min, range.max, initUnit(options));\n\n if (maxDivisions) {\n var dataRange = this.dataRange.displayRange();\n\n var divisionOptions = Object.assign({}, options, {\n justified: true,\n roundToBaseUnit: false,\n baseUnit: 'fit',\n min: dataRange.min,\n max: dataRange.max,\n maxDateGroups: maxDivisions\n });\n\n var dataRangeOptions = this.dataRange.options;\n\n autoBaseUnit(divisionOptions, dataRangeOptions.baseUnit, dataRangeOptions.baseUnitStep);\n\n this.divisionRange = new DateRange(range.min, range.max, divisionOptions);\n } else {\n this.divisionRange = this.dataRange;\n }\n\n } else {\n options.baseUnit = options.baseUnit || DAYS;\n this.dataRange = this.divisionRange = new EmptyDateRange(options);\n }\n\n this.rangeLabels = [];\n };\n\n DateCategoryAxis.prototype.tickIndices = function tickIndices (stepSize) {\n var ref = this;\n var dataRange = ref.dataRange;\n var divisionRange = ref.divisionRange;\n var valuesCount = divisionRange.valuesCount();\n\n if (!this.options.maxDivisions || !valuesCount) {\n return CategoryAxis.prototype.tickIndices.call(this, stepSize);\n }\n\n var indices = [];\n var values = divisionRange.values();\n var offset = 0;\n\n if (!this.options.justified) {\n values = values.concat(divisionRange.dateAt(valuesCount));\n offset = 0.5;//align ticks to the center of not justified categories\n }\n\n for (var idx = 0; idx < values.length; idx++) {\n indices.push(dataRange.dateIndex(values[idx]) + offset);\n if (stepSize !== 1 && idx >= 1) {\n var last = indices.length - 1;\n indices.splice(idx, 0, indices[last - 1] + (indices[last] - indices[last - 1]) * stepSize);\n }\n }\n\n return indices;\n };\n\n DateCategoryAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n var categories = this.options.categories || [];\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0 && categories.length;\n };\n\n DateCategoryAxis.prototype.parseNoteValue = function parseNoteValue (value) {\n return parseDate(this.chartService.intl, value);\n };\n\n DateCategoryAxis.prototype.noteSlot = function noteSlot (value) {\n return this.getSlot(value);\n };\n\n DateCategoryAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var baseUnit = options.baseUnit;\n var weekStartDay = options.weekStartDay;\n var vertical = options.vertical;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / (range.max - range.min);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if (range.min && range.max) {\n var from = addTicks(options.min || range.min, offset);\n var to = addTicks(options.max || range.max, offset);\n\n range = {\n min: addDuration(from, 0, baseUnit, weekStartDay),\n max: addDuration(to, 0, baseUnit, weekStartDay)\n };\n }\n\n return range;\n };\n\n DateCategoryAxis.prototype.labelsRange = function labelsRange () {\n return {\n min: this.options.labels.skip,\n max: this.divisionRange.valuesCount()\n };\n };\n\n DateCategoryAxis.prototype.pan = function pan (delta) {\n if (this.isEmpty()) {\n return null;\n }\n\n var options = this.options;\n var lineBox = this.lineBox();\n var size = options.vertical ? lineBox.height() : lineBox.width();\n var ref = this.dataRange.displayRange();\n var min = ref.min;\n var max = ref.max;\n var totalLimits = this.dataRange.total();\n var scale = size / (max - min);\n var offset = round(delta / scale, DEFAULT_PRECISION) * (options.reverse ? -1 : 1);\n var from = addTicks(min, offset);\n var to = addTicks(max, offset);\n\n var panRange = this.limitRange(toTime(from), toTime(to), toTime(totalLimits.min), toTime(totalLimits.max), offset);\n\n if (panRange) {\n panRange.min = toDate(panRange.min);\n panRange.max = toDate(panRange.max);\n panRange.baseUnit = options.baseUnit;\n panRange.baseUnitStep = options.baseUnitStep || 1;\n panRange.userSetBaseUnit = options.userSetBaseUnit;\n panRange.userSetBaseUnitStep = options.userSetBaseUnitStep;\n\n return panRange;\n }\n };\n\n DateCategoryAxis.prototype.pointsRange = function pointsRange (start, end) {\n if (this.isEmpty()) {\n return null;\n }\n\n var pointsRange = CategoryAxis.prototype.pointsRange.call(this, start, end);\n var datesRange = this.dataRange.displayRange();\n var indicesRange = this.dataRange.displayIndices();\n var scale = dateDiff(datesRange.max, datesRange.min) / (indicesRange.max - indicesRange.min);\n var options = this.options;\n\n var min = addTicks(datesRange.min, pointsRange.min * scale);\n var max = addTicks(datesRange.min, pointsRange.max * scale);\n\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n };\n\n DateCategoryAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n if (this.isEmpty()) {\n return {};\n }\n\n var options = this.options;\n var fit = options.userSetBaseUnit === FIT;\n var totalLimits = this.dataRange.total();\n var ref = this.dataRange.displayRange();\n var rangeMin = ref.min;\n var rangeMax = ref.max;\n\n var position = Math.abs(this.pointOffset(cursor));\n var range = rangeMax - rangeMin;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = Math.round(position * delta);\n var maxDelta = Math.round((1 - position) * delta);\n\n var ref$1 = this.dataRange.options;\n var baseUnit = ref$1.baseUnit;\n var min = new Date(rangeMin.getTime() + minDelta);\n var max = new Date(rangeMax.getTime() - maxDelta);\n\n if (fit) {\n var autoBaseUnitSteps = options.autoBaseUnitSteps;\n var maxDateGroups = options.maxDateGroups;\n\n var maxDiff = last(autoBaseUnitSteps[baseUnit]) * maxDateGroups * TIME_PER_UNIT[baseUnit];\n var rangeDiff = dateDiff(rangeMax, rangeMin);\n var diff = dateDiff(max, min);\n var baseUnitIndex = BASE_UNITS.indexOf(baseUnit);\n var autoBaseUnitStep, ticks;\n\n if (diff < TIME_PER_UNIT[baseUnit] && baseUnit !== MILLISECONDS) {\n baseUnit = BASE_UNITS[baseUnitIndex - 1];\n autoBaseUnitStep = last(autoBaseUnitSteps[baseUnit]);\n ticks = (rangeDiff - (maxDateGroups - 1) * autoBaseUnitStep * TIME_PER_UNIT[baseUnit]) / 2;\n min = addTicks(rangeMin, ticks);\n max = addTicks(rangeMax, -ticks);\n\n } else if (diff > maxDiff && baseUnit !== YEARS) {\n var stepIndex = 0;\n\n do {\n baseUnitIndex++;\n baseUnit = BASE_UNITS[baseUnitIndex];\n stepIndex = 0;\n ticks = 2 * TIME_PER_UNIT[baseUnit];\n do {\n autoBaseUnitStep = autoBaseUnitSteps[baseUnit][stepIndex];\n stepIndex++;\n } while (stepIndex < autoBaseUnitSteps[baseUnit].length && ticks * autoBaseUnitStep < rangeDiff);\n } while (baseUnit !== YEARS && ticks * autoBaseUnitStep < rangeDiff);\n\n ticks = (ticks * autoBaseUnitStep - rangeDiff) / 2;\n if (ticks > 0) {\n min = addTicks(rangeMin, -ticks);\n max = addTicks(rangeMax, ticks);\n min = addTicks(min, limitValue(max, totalLimits.min, totalLimits.max) - max);\n max = addTicks(max, limitValue(min, totalLimits.min, totalLimits.max) - min);\n }\n }\n }\n\n if (min && max && dateDiff(max, min) > 0) {\n return {\n min: min,\n max: max,\n baseUnit: options.userSetBaseUnit || options.baseUnit,\n baseUnitStep: options.userSetBaseUnitStep || options.baseUnitStep\n };\n }\n };\n\n DateCategoryAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var totalLimits = this.dataRange.total();\n var range = this.scaleRange(scale, cursor);\n\n if (range) {\n if (range.min < totalLimits.min) {\n range.min = totalLimits.min;\n }\n if (range.max > totalLimits.max) {\n range.max = totalLimits.max;\n }\n }\n\n return range;\n };\n\n DateCategoryAxis.prototype.range = function range () {\n return this.dataRange.displayRange();\n };\n\n DateCategoryAxis.prototype.createLabels = function createLabels () {\n CategoryAxis.prototype.createLabels.call(this);\n this.createRangeLabels();\n };\n\n DateCategoryAxis.prototype.clearLabels = function clearLabels () {\n CategoryAxis.prototype.clearLabels.call(this);\n this.rangeLabels = [];\n };\n\n DateCategoryAxis.prototype.arrangeLabels = function arrangeLabels () {\n this.arrangeRangeLabels();\n CategoryAxis.prototype.arrangeLabels.call(this);\n };\n\n DateCategoryAxis.prototype.arrangeRangeLabels = function arrangeRangeLabels () {\n var ref = this;\n var options = ref.options;\n var rangeLabels = ref.rangeLabels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var mirror = options.rangeLabels.mirror || options.labels.mirror;\n\n var firstLabel = rangeLabels[0];\n if (firstLabel) {\n var position = vertical ? lineBox.y1 - (firstLabel.box.height() / 2) : lineBox.x1;\n this.positionLabel(firstLabel, mirror, position);\n }\n\n var lastLabel = rangeLabels[1];\n if (lastLabel) {\n var position$1 = vertical ? lineBox.y2 - (lastLabel.box.height() / 2) : lineBox.x2;\n this.positionLabel(lastLabel, mirror, position$1);\n }\n };\n\n DateCategoryAxis.prototype.autoRotateLabels = function autoRotateLabels () {\n CategoryAxis.prototype.autoRotateLabels.call(this);\n this.autoRotateRangeLabels();\n };\n\n DateCategoryAxis.prototype.hideOutOfRangeLabels = function hideOutOfRangeLabels () {\n CategoryAxis.prototype.hideOutOfRangeLabels.call(this);\n this.hideOverlappingLabels();\n };\n\n DateCategoryAxis.prototype.hideOverlappingLabels = function hideOverlappingLabels () {\n var ref = this;\n var rangeLabels = ref.rangeLabels;\n var labels = ref.labels;\n if (rangeLabels.length === 0) {\n return;\n }\n\n function clip(rangeLabel, label) {\n if (!label.options.visible || label.box.overlaps(rangeLabel.box)) {\n label.options.visible = false;\n return true;\n }\n\n return false;\n }\n\n var firstRangeLabel = rangeLabels[0];\n if (firstRangeLabel && firstRangeLabel.options.visible) {\n for (var i = 0; i < labels.length; i++) {\n var overlaps = clip(firstRangeLabel, labels[i]);\n if (!overlaps) {\n break;\n }\n }\n }\n\n var lastRangeLabel = rangeLabels[1];\n if (lastRangeLabel && lastRangeLabel.options.visible) {\n for (var i$1 = labels.length - 1; i$1 > 0; --i$1) {\n var overlaps$1 = clip(lastRangeLabel, labels[i$1]);\n if (!overlaps$1) {\n break;\n }\n }\n }\n };\n\n DateCategoryAxis.prototype.contentBox = function contentBox () {\n var box = CategoryAxis.prototype.contentBox.call(this);\n var rangeLabels = this.rangeLabels;\n\n for (var i = 0; i < rangeLabels.length; i++) {\n var label = rangeLabels[i];\n if (label.options.visible) {\n box.wrap(label.box);\n }\n }\n\n return box;\n };\n\n DateCategoryAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n if ( labelContext === void 0 ) labelContext = {};\n\n var options = this.options;\n var dataItem = options.dataItems && !options.maxDivisions ? options.dataItems[index] : null;\n var date = this.divisionRange.dateAt(index);\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n\n labelOptions.format = labelOptions.format || unitFormat;\n labelContext.dataItem = dataItem;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n if (text) {\n return new AxisLabel(date, text, index, dataItem, labelOptions);\n }\n };\n\n DateCategoryAxis.prototype.createRangeLabels = function createRangeLabels () {\n var this$1 = this;\n\n var ref = this.divisionRange;\n var displayStart = ref.displayStart;\n var displayEnd = ref.displayEnd;\n var options = this.options;\n var labelOptions = Object.assign({}, options.labels, options.rangeLabels, {\n align: CENTER,\n zIndex: options.zIndex\n });\n\n if (labelOptions.visible !== true) {\n return;\n }\n\n this.normalizeLabelRotation(labelOptions);\n labelOptions.alignRotation = CENTER;\n\n if (labelOptions.rotation === \"auto\") {\n labelOptions.rotation = 0;\n options.autoRotateRangeLabels = true;\n }\n\n var unitFormat = labelOptions.dateFormats[this.divisionRange.options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var createLabel = function (index, date, text) {\n if (text) {\n var label = new AxisLabel(date, text, index, null, labelOptions);\n this$1.append(label);\n this$1.rangeLabels.push(label);\n }\n };\n\n var startText = this.axisLabelText(displayStart, labelOptions, { index: 0, count: 2 });\n createLabel(0, displayStart, startText);\n\n var endText = this.axisLabelText(displayEnd, labelOptions, { index: 1, count: 2 });\n createLabel(1, displayEnd, endText);\n };\n\n DateCategoryAxis.prototype.autoRotateRangeLabels = function autoRotateRangeLabels () {\n var this$1 = this;\n\n var labels = this.rangeLabels;\n if (!this.options.autoRotateRangeLabels || this.options.vertical || labels.length !== 2) {\n return;\n }\n\n var rotateLabel = function (label, tickPositions, index) {\n var width = Math.abs(tickPositions[index + 1] - tickPositions[index]) * 2;\n var angle = this$1.autoRotateLabelAngle(label.box, width);\n if (angle !== 0) {\n label.options.rotation = angle;\n label.reflow(new Box());\n }\n };\n\n var tickPositions = this.getMajorTickPositions();\n rotateLabel(labels[0], tickPositions, 0);\n rotateLabel(labels[1], tickPositions, tickPositions.length - 2);\n };\n\n DateCategoryAxis.prototype.categoryIndex = function categoryIndex (value) {\n return this.dataRange.valueIndex(value);\n };\n\n DateCategoryAxis.prototype.slot = function slot (from, to, limit) {\n var dateRange = this.dataRange;\n var start = from;\n var end = to;\n\n if (start instanceof Date) {\n start = dateRange.dateIndex(start);\n }\n\n if (end instanceof Date) {\n end = dateRange.dateIndex(end);\n }\n\n var slot = this.getSlot(start, end, limit);\n if (slot) {\n return slot.toRect();\n }\n };\n\n DateCategoryAxis.prototype.getSlot = function getSlot (a, b, limit) {\n var start = a;\n var end = b;\n\n if (typeof start === OBJECT) {\n start = this.categoryIndex(start);\n }\n\n if (typeof end === OBJECT) {\n end = this.categoryIndex(end);\n }\n\n return CategoryAxis.prototype.getSlot.call(this, start, end, limit);\n };\n\n DateCategoryAxis.prototype.valueRange = function valueRange () {\n var options = this.options;\n var range = categoryRange(options.srcCategories);\n\n return {\n min: toDate(range.min),\n max: toDate(range.max)\n };\n };\n\n DateCategoryAxis.prototype.categoryAt = function categoryAt (index, total) {\n return this.dataRange.dateAt(index, total);\n };\n\n DateCategoryAxis.prototype.categoriesCount = function categoriesCount () {\n return this.dataRange.valuesCount();\n };\n\n DateCategoryAxis.prototype.rangeIndices = function rangeIndices () {\n return this.dataRange.displayIndices();\n };\n\n DateCategoryAxis.prototype.labelsBetweenTicks = function labelsBetweenTicks () {\n return !this.divisionRange.options.justified;\n };\n\n DateCategoryAxis.prototype.prepareUserOptions = function prepareUserOptions () {\n if (this.isEmpty()) {\n return;\n }\n\n this.options.categories = this.dataRange.values();\n };\n\n DateCategoryAxis.prototype.getCategory = function getCategory (point) {\n var index = this.pointCategoryIndex(point);\n\n if (index === null) {\n return null;\n }\n\n return this.dataRange.dateAt(index);\n };\n\n DateCategoryAxis.prototype.totalIndex = function totalIndex (value) {\n return this.dataRange.totalIndex(value);\n };\n\n DateCategoryAxis.prototype.currentRangeIndices = function currentRangeIndices () {\n var range = this.dataRange.valueRange();\n return {\n min: this.dataRange.totalIndex(range.min),\n max: this.dataRange.totalIndex(range.max)\n };\n };\n\n DateCategoryAxis.prototype.totalRange = function totalRange () {\n return this.dataRange.total();\n };\n\n DateCategoryAxis.prototype.totalCount = function totalCount () {\n return this.dataRange.totalCount();\n };\n\n DateCategoryAxis.prototype.isEmpty = function isEmpty () {\n return !this.options.srcCategories.length;\n };\n\n DateCategoryAxis.prototype.roundedRange = function roundedRange () {\n if (this.options.roundToBaseUnit !== false || this.isEmpty()) {\n return this.range();\n }\n\n var options = this.options;\n var datesRange = categoryRange(options.srcCategories);\n\n var dateRange = new DateRange(datesRange.min, datesRange.max, Object.assign({}, options, {\n justified: false,\n roundToBaseUnit: true,\n justifyEnd: options.justified\n }));\n\n return dateRange.displayRange();\n };\n\n return DateCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(DateCategoryAxis, {\n type: DATE,\n labels: {\n dateFormats: DateLabelFormats\n },\n rangeLabels: {\n visible: false\n },\n autoBaseUnitSteps: {\n milliseconds: [ 1, 10, 100 ],\n seconds: [ 1, 2, 5, 15, 30 ],\n minutes: [ 1, 2, 5, 15, 30 ],\n hours: [ 1, 2, 3 ],\n days: [ 1, 2, 3 ],\n weeks: [ 1, 2 ],\n months: [ 1, 2, 3, 6 ],\n years: [ 1, 2, 3, 5, 10, 25, 50 ]\n },\n maxDateGroups: 10\n});\n\nexport default DateCategoryAxis;\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function floor(value, step) {\n return round(Math.floor(value / step) * step, DEFAULT_PRECISION);\n}\n","import { DEFAULT_PRECISION } from '../../common/constants';\nimport { round } from '../../common';\n\nexport default function ceil(value, step) {\n return round(Math.ceil(value / step) * step, DEFAULT_PRECISION);\n}","import { COORDINATE_LIMIT } from '../constants';\n\nexport default function limitCoordinate(value) {\n return Math.max(Math.min(value, COORDINATE_LIMIT), -COORDINATE_LIMIT);\n}","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport { BLACK, DEFAULT_PRECISION, COORD_PRECISION } from '../common/constants';\nimport { deepExtend, defined, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport autoAxisMin from './utils/auto-axis-min';\nimport autoAxisMax from './utils/auto-axis-max';\nimport floor from './utils/floor';\nimport ceil from './utils/ceil';\nimport limitCoordinate from './utils/limit-coordinate';\n\nvar MIN_VALUE_RANGE = Math.pow(10, -DEFAULT_PRECISION + 1);\n\nvar NumericAxis = (function (Axis) {\n function NumericAxis(seriesMin, seriesMax, options, chartService) {\n Axis.call(this, Object.assign({}, options, {\n seriesMin: seriesMin,\n seriesMax: seriesMax\n }), chartService);\n }\n\n if ( Axis ) NumericAxis.__proto__ = Axis;\n NumericAxis.prototype = Object.create( Axis && Axis.prototype );\n NumericAxis.prototype.constructor = NumericAxis;\n\n NumericAxis.prototype.initUserOptions = function initUserOptions (options) {\n var autoOptions = autoAxisOptions(options.seriesMin, options.seriesMax, options);\n this.totalOptions = totalAxisOptions(autoOptions, options);\n\n return axisOptions(autoOptions, options);\n };\n\n NumericAxis.prototype.initFields = function initFields () {\n this.totalMin = this.totalOptions.min;\n this.totalMax = this.totalOptions.max;\n this.totalMajorUnit = this.totalOptions.majorUnit;\n this.seriesMin = this.options.seriesMin;\n this.seriesMax = this.options.seriesMax;\n };\n\n NumericAxis.prototype.clone = function clone () {\n return new NumericAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n };\n\n NumericAxis.prototype.startValue = function startValue () {\n return 0;\n };\n\n NumericAxis.prototype.range = function range () {\n var options = this.options;\n return { min: options.min, max: options.max };\n };\n\n NumericAxis.prototype.getDivisions = function getDivisions (stepValue) {\n if (stepValue === 0) {\n return 1;\n }\n\n var options = this.options;\n var range = options.max - options.min;\n\n return Math.floor(round(range / stepValue, COORD_PRECISION)) + 1;\n };\n\n NumericAxis.prototype.getTickPositions = function getTickPositions (unit, skipUnit) {\n var options = this.options;\n var ref = this.lineInfo();\n var axisDir = ref.axisDir;\n var axisOrigin = ref.axisOrigin;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var range = options.max - options.min;\n var scale = lineSize / range;\n var step = unit * scale;\n var divisions = this.getDivisions(unit);\n var positions = [];\n var pos = lineBox[axisOrigin];\n var skipStep = 0;\n\n if (skipUnit) {\n skipStep = skipUnit / unit;\n }\n\n for (var idx = 0; idx < divisions; idx++) {\n if (idx % skipStep !== 0) {\n positions.push(round(pos, COORD_PRECISION));\n }\n\n pos = pos + step * axisDir;\n }\n\n return positions;\n };\n\n NumericAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n return this.getTickPositions(this.options.majorUnit);\n };\n\n NumericAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n return this.getTickPositions(this.options.minorUnit);\n };\n\n NumericAxis.prototype.getSlot = function getSlot (a, b, limit) {\n if ( limit === void 0 ) limit = false;\n\n var options = this.options;\n var ref = this.lineInfo();\n var axis = ref.axis;\n var axisDir = ref.axisDir;\n var lineBox = ref.lineBox;\n var lineSize = ref.lineSize;\n var lineStart = ref.lineStart;\n var step = axisDir * (lineSize / (options.max - options.min));\n\n var start = valueOrDefault(a, b || 0);\n var end = valueOrDefault(b, a || 0);\n\n if (limit) {\n start = limitValue(start, options.min, options.max);\n end = limitValue(end, options.min, options.max);\n }\n\n var p1 = Math.min(start, end) - options.min;\n var p2 = Math.max(start, end) - options.min;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n };\n\n NumericAxis.prototype.getValue = function getValue (point) {\n var options = this.options;\n var max = Number(options.max);\n var min = Number(options.min);\n var offset = this.pointOffset(point);\n var valueOffset = offset * (max - min);\n\n if (offset < 0 || offset > 1) {\n return null;\n }\n\n var value = min + valueOffset;\n return round(value, DEFAULT_PRECISION);\n };\n\n NumericAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var vertical = options.vertical;\n var reverse = options.reverse;\n var max = options.max;\n var min = options.min;\n var ref = this.lineInfo();\n var lineSize = ref.lineSize;\n var range = max - min;\n var scale = lineSize / range;\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: min + offset,\n max: max + offset,\n offset: offset\n };\n };\n\n NumericAxis.prototype.labelsCount = function labelsCount () {\n return this.getDivisions(this.options.majorUnit);\n };\n\n NumericAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var options = this.options;\n var value = round(options.min + (index * options.majorUnit), DEFAULT_PRECISION);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n };\n\n NumericAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n };\n\n NumericAxis.prototype.pan = function pan (delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n };\n\n NumericAxis.prototype.pointsRange = function pointsRange (start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n if (this.isValidRange(min, max)) {\n return {\n min: min,\n max: max\n };\n }\n };\n\n NumericAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = round(this.options.min + minDelta, DEFAULT_PRECISION);\n var max = round(this.options.max - maxDelta, DEFAULT_PRECISION);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n NumericAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n var range = this.scaleRange(scale, cursor);\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax),\n narrowRange: false\n };\n };\n\n NumericAxis.prototype.isValidRange = function isValidRange (min, max) {\n return max - min > MIN_VALUE_RANGE;\n };\n\n return NumericAxis;\n}(Axis));\n\nfunction autoAxisOptions(seriesMin, seriesMax, options) {\n var narrowRange = options.narrowRange;\n\n var autoMin = autoAxisMin(seriesMin, seriesMax, narrowRange);\n var autoMax = autoAxisMax(seriesMin, seriesMax, narrowRange);\n\n var majorUnit = autoMajorUnit(autoMin, autoMax);\n var autoOptions = {\n majorUnit: majorUnit\n };\n\n if (options.roundToMajorUnit !== false) {\n if (autoMin < 0 && remainderClose(autoMin, majorUnit, 1 / 3)) {\n autoMin -= majorUnit;\n }\n\n if (autoMax > 0 && remainderClose(autoMax, majorUnit, 1 / 3)) {\n autoMax += majorUnit;\n }\n }\n\n autoOptions.min = floor(autoMin, majorUnit);\n autoOptions.max = ceil(autoMax, majorUnit);\n\n return autoOptions;\n}\n\nfunction totalAxisOptions(autoOptions, options) {\n return {\n min: defined(options.min) ? Math.min(autoOptions.min, options.min) : autoOptions.min,\n max: defined(options.max) ? Math.max(autoOptions.max, options.max) : autoOptions.max,\n majorUnit: autoOptions.majorUnit\n };\n}\n\nfunction clearNullValues(options, fields) {\n for (var idx = 0; idx < fields.length; idx++) {\n var field = fields[idx];\n if (options[field] === null) {\n options[field] = undefined;\n }\n }\n}\n\nfunction axisOptions(autoOptions, userOptions) {\n var options = userOptions;\n var userSetMin, userSetMax;\n\n if (userOptions) {\n clearNullValues(userOptions, [ 'min', 'max' ]);\n\n userSetMin = defined(userOptions.min);\n userSetMax = defined(userOptions.max);\n\n var userSetLimits = userSetMin || userSetMax;\n\n if (userSetLimits) {\n if (userOptions.min === userOptions.max) {\n if (userOptions.min > 0) {\n userOptions.min = 0;\n } else {\n userOptions.max = 1;\n }\n }\n }\n\n if (userOptions.majorUnit) {\n autoOptions.min = floor(autoOptions.min, userOptions.majorUnit);\n autoOptions.max = ceil(autoOptions.max, userOptions.majorUnit);\n } else if (userSetLimits) {\n options = deepExtend(autoOptions, userOptions);\n\n // Determine an auto major unit after min/max have been set\n autoOptions.majorUnit = autoMajorUnit(options.min, options.max);\n }\n }\n\n autoOptions.minorUnit = (options.majorUnit || autoOptions.majorUnit) / 5;\n\n var result = deepExtend(autoOptions, options);\n if (result.min >= result.max) {\n if (userSetMin && !userSetMax) {\n result.max = result.min + result.majorUnit;\n } else if (!userSetMin && userSetMax) {\n result.min = result.max - result.majorUnit;\n }\n }\n\n return result;\n}\n\nfunction remainderClose(value, divisor, ratio) {\n var remainder = round(Math.abs(value % divisor), DEFAULT_PRECISION);\n var threshold = divisor * (1 - ratio);\n\n return remainder === 0 || remainder > threshold;\n}\n\nsetDefaultOptions(NumericAxis, {\n type: \"numeric\",\n min: 0,\n max: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n format: \"#.####################\"\n },\n zIndex: 1\n});\n\nexport default NumericAxis;\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMin(min, max, narrow) {\n if (!min && !max) {\n return 0;\n }\n\n var axisMin;\n\n if (min >= 0 && max >= 0) {\n var minValue = min === max ? 0 : min;\n\n var diff = (max - minValue) / max;\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMin = Math.max(0, minValue - ((max - minValue) / 2));\n } else {\n axisMin = min;\n }\n\n return axisMin;\n}\n","import { ZERO_THRESHOLD } from '../constants';\n\nexport default function autoAxisMax(min, max, narrow) {\n if (!min && !max) {\n return 1;\n }\n\n var axisMax;\n\n if (min <= 0 && max <= 0) {\n var maxValue = min === max ? 0 : max;\n\n var diff = Math.abs((maxValue - min) / maxValue);\n if (narrow === false || (!narrow && diff > ZERO_THRESHOLD)) {\n return 0;\n }\n\n axisMax = Math.min(0, maxValue - ((min - maxValue) / 2));\n } else {\n axisMax = max;\n }\n\n return axisMax;\n}","import Axis from './axis';\nimport NumericAxis from './numeric-axis';\nimport AxisLabel from './axis-label';\nimport { DateLabelFormats } from './constants';\n\nimport { BLACK, DATE, COORD_PRECISION, DEFAULT_PRECISION } from '../common/constants';\nimport { setDefaultOptions, deepExtend, limitValue, round } from '../common';\n\nimport autoMajorUnit from './utils/auto-major-unit';\nimport ceil from './utils/ceil';\n\nimport { toDate, toTime, floorDate, ceilDate, duration, addDuration, addTicks, dateDiff, absoluteDateDiff, dateComparer, parseDate, parseDates, firstDay } from '../date-utils';\nimport { HOURS, DAYS, WEEKS, MONTHS, YEARS, TIME_PER_DAY, TIME_PER_WEEK, TIME_PER_MONTH, TIME_PER_YEAR, TIME_PER_UNIT } from '../date-utils/constants';\n\nvar MIN_VALUE_RANGE = 1000;\n\nvar DateValueAxis = (function (Axis) {\n function DateValueAxis(seriesMin, seriesMax, axisOptions, chartService) {\n var min = toDate(seriesMin);\n var max = toDate(seriesMax);\n\n var intlService = chartService.intl;\n var options = axisOptions || {};\n options = deepExtend(options || {}, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n axisCrossingValue: parseDates(intlService, options.axisCrossingValues || options.axisCrossingValue),\n weekStartDay: firstDay(options, intlService)\n });\n options = applyDefaults(min, max, options);\n\n Axis.call(this, options, chartService);\n\n this.intlService = intlService;\n this.seriesMin = min;\n this.seriesMax = max;\n\n var weekStartDay = options.weekStartDay || 0;\n this.totalMin = toTime(floorDate(toTime(min) - 1, options.baseUnit, weekStartDay));\n this.totalMax = toTime(ceilDate(toTime(max) + 1, options.baseUnit, weekStartDay));\n }\n\n if ( Axis ) DateValueAxis.__proto__ = Axis;\n DateValueAxis.prototype = Object.create( Axis && Axis.prototype );\n DateValueAxis.prototype.constructor = DateValueAxis;\n\n DateValueAxis.prototype.clone = function clone () {\n return new DateValueAxis(this.seriesMin, this.seriesMax, Object.assign({}, this.options), this.chartService);\n };\n\n DateValueAxis.prototype.range = function range () {\n var options = this.options;\n return { min: options.min, max: options.max };\n };\n\n DateValueAxis.prototype.getDivisions = function getDivisions (stepValue) {\n var options = this.options;\n\n return Math.floor(\n duration(options.min, options.max, options.baseUnit) / stepValue + 1\n );\n };\n\n DateValueAxis.prototype.getTickPositions = function getTickPositions (step) {\n var options = this.options;\n var ref = this.lineInfo();\n var dir = ref.axisDir;\n var lineSize = ref.lineSize;\n var start = ref.lineStart;\n var divisions = this.getDivisions(step);\n var timeRange = dateDiff(options.max, options.min);\n var scale = lineSize / timeRange;\n var weekStartDay = options.weekStartDay || 0;\n\n var positions = [ start ];\n for (var i = 1; i < divisions; i++) {\n var date = addDuration(options.min, i * step, options.baseUnit, weekStartDay);\n var pos = start + dateDiff(date, options.min) * scale * dir;\n\n positions.push(round(pos, COORD_PRECISION));\n }\n\n return positions;\n };\n\n DateValueAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n return this.getTickPositions(this.options.majorUnit);\n };\n\n DateValueAxis.prototype.getMinorTickPositions = function getMinorTickPositions () {\n return this.getTickPositions(this.options.minorUnit);\n };\n\n DateValueAxis.prototype.getSlot = function getSlot (a, b, limit) {\n return NumericAxis.prototype.getSlot.call(\n this, parseDate(this.intlService, a), parseDate(this.intlService, b), limit\n );\n };\n\n DateValueAxis.prototype.getValue = function getValue (point) {\n var value = NumericAxis.prototype.getValue.call(this, point);\n\n return value !== null ? toDate(value) : null;\n };\n\n DateValueAxis.prototype.labelsCount = function labelsCount () {\n return this.getDivisions(this.options.majorUnit);\n };\n\n DateValueAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var options = this.options;\n var offset = index * options.majorUnit;\n var weekStartDay = options.weekStartDay || 0;\n var date = options.min;\n\n if (offset > 0) {\n date = addDuration(date, offset, options.baseUnit, weekStartDay);\n }\n\n var unitFormat = labelOptions.dateFormats[options.baseUnit];\n labelOptions.format = labelOptions.format || unitFormat;\n\n var text = this.axisLabelText(date, labelOptions, labelContext);\n return new AxisLabel(date, text, index, null, labelOptions);\n };\n\n DateValueAxis.prototype.translateRange = function translateRange (delta) {\n var options = this.options;\n var lineBox = this.lineBox();\n var vertical = options.vertical;\n var reverse = options.reverse;\n var size = vertical ? lineBox.height() : lineBox.width();\n var range = this.range();\n var scale = size / dateDiff(range.max, range.min);\n\n var offset = round(delta / scale, DEFAULT_PRECISION);\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n var from = addTicks(options.min, offset);\n var to = addTicks(options.max, offset);\n\n return {\n min: from,\n max: to,\n offset: offset\n };\n };\n\n DateValueAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n\n return dateComparer(value, range.min) >= 0 && dateComparer(value, range.max) <= 0;\n };\n\n DateValueAxis.prototype.pan = function pan (delta) {\n var range = this.translateRange(delta, true);\n var limittedRange = this.limitRange(toTime(range.min), toTime(range.max), this.totalMin, this.totalMax, range.offset);\n\n if (limittedRange) {\n return {\n min: toDate(limittedRange.min),\n max: toDate(limittedRange.max)\n };\n }\n };\n\n DateValueAxis.prototype.pointsRange = function pointsRange (start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: toDate(min),\n max: toDate(max)\n };\n };\n\n DateValueAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var position = Math.abs(this.pointOffset(cursor));\n var range = this.options.max - this.options.min;\n var delta = this.scaleToDelta(scale, range);\n var minDelta = position * delta;\n var maxDelta = (1 - position) * delta;\n var min = toDate(toTime(this.options.min) + minDelta);\n var max = toDate(toTime(this.options.max) - maxDelta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = toDate(toTime(min) + MIN_VALUE_RANGE);\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n DateValueAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var min = toDate(limitValue(toTime(range.min), this.totalMin, this.totalMax));\n var max = toDate(limitValue(toTime(range.max), this.totalMin, this.totalMax));\n\n return {\n min: min,\n max: max\n };\n };\n\n return DateValueAxis;\n}(Axis));\n\nfunction timeUnits(delta) {\n var unit = HOURS;\n\n if (delta >= TIME_PER_YEAR) {\n unit = YEARS;\n } else if (delta >= TIME_PER_MONTH) {\n unit = MONTHS;\n } else if (delta >= TIME_PER_WEEK) {\n unit = WEEKS;\n } else if (delta >= TIME_PER_DAY) {\n unit = DAYS;\n }\n\n return unit;\n}\n\nfunction applyDefaults(seriesMin, seriesMax, options) {\n var min = options.min || seriesMin;\n var max = options.max || seriesMax;\n var baseUnit = options.baseUnit || (max && min ? timeUnits(absoluteDateDiff(max, min)) : HOURS);\n var baseUnitTime = TIME_PER_UNIT[baseUnit];\n var weekStartDay = options.weekStartDay || 0;\n var autoMin = floorDate(toTime(min) - 1, baseUnit, weekStartDay) || toDate(max);\n var autoMax = ceilDate(toTime(max) + 1, baseUnit, weekStartDay);\n var userMajorUnit = options.majorUnit ? options.majorUnit : undefined;\n var majorUnit = userMajorUnit || ceil(\n autoMajorUnit(autoMin.getTime(), autoMax.getTime()),\n baseUnitTime\n ) / baseUnitTime;\n var actualUnits = duration(autoMin, autoMax, baseUnit);\n var totalUnits = ceil(actualUnits, majorUnit);\n var unitsToAdd = totalUnits - actualUnits;\n var head = Math.floor(unitsToAdd / 2);\n var tail = unitsToAdd - head;\n\n if (!options.baseUnit) {\n delete options.baseUnit;\n }\n\n options.baseUnit = options.baseUnit || baseUnit;\n options.min = options.min || addDuration(autoMin, -head, baseUnit, weekStartDay);\n options.max = options.max || addDuration(autoMax, tail, baseUnit, weekStartDay);\n options.minorUnit = options.minorUnit || majorUnit / 5;\n options.majorUnit = majorUnit;\n\n return options;\n}\n\nsetDefaultOptions(DateValueAxis, {\n type: DATE,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n labels: {\n dateFormats: DateLabelFormats\n }\n});\n\nexport default DateValueAxis;\n","\nimport Axis from './axis';\nimport AxisLabel from './axis-label';\nimport Box from './box';\n\nimport createAxisTick from './utils/create-axis-tick';\nimport createAxisGridLine from './utils/create-axis-grid-line';\nimport limitCoordinate from './utils/limit-coordinate';\n\nimport { DEFAULT_PRECISION, BLACK } from '../common/constants';\nimport { deepExtend, defined, inArray, limitValue, round, setDefaultOptions, valueOrDefault } from '../common';\n\nvar DEFAULT_MAJOR_UNIT = 10;\nvar MIN_VALUE_RANGE = 1e-6;\n\nvar LogarithmicAxis = (function (Axis) {\n function LogarithmicAxis(seriesMin, seriesMax, options, chartService) {\n\n var axisOptions = deepExtend({ majorUnit: DEFAULT_MAJOR_UNIT, min: seriesMin, max: seriesMax }, options);\n var base = axisOptions.majorUnit;\n var autoMax = autoAxisMax(seriesMax, base);\n var autoMin = autoAxisMin(seriesMin, seriesMax, axisOptions);\n var range = initRange(autoMin, autoMax, axisOptions, options);\n\n axisOptions.max = range.max;\n axisOptions.min = range.min;\n axisOptions.minorUnit = options.minorUnit || round(base - 1, DEFAULT_PRECISION);\n\n Axis.call(this, axisOptions, chartService);\n\n this.totalMin = defined(options.min) ? Math.min(autoMin, options.min) : autoMin;\n this.totalMax = defined(options.max) ? Math.max(autoMax, options.max) : autoMax;\n this.logMin = round(log(range.min, base), DEFAULT_PRECISION);\n this.logMax = round(log(range.max, base), DEFAULT_PRECISION);\n this.seriesMin = seriesMin;\n this.seriesMax = seriesMax;\n\n this.createLabels();\n }\n\n if ( Axis ) LogarithmicAxis.__proto__ = Axis;\n LogarithmicAxis.prototype = Object.create( Axis && Axis.prototype );\n LogarithmicAxis.prototype.constructor = LogarithmicAxis;\n\n LogarithmicAxis.prototype.clone = function clone () {\n return new LogarithmicAxis(\n this.seriesMin,\n this.seriesMax,\n Object.assign({}, this.options),\n this.chartService\n );\n };\n\n LogarithmicAxis.prototype.startValue = function startValue () {\n return this.options.min;\n };\n\n LogarithmicAxis.prototype.getSlot = function getSlot (a, b, limit) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var min = options.min;\n var max = options.max;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineBox = ref$1.lineBox;\n var lineSize = ref$1.lineSize;\n var lineStart = ref$1.lineStart;\n var step = axisDir * (lineSize / (logMax - logMin));\n var start = valueOrDefault(a, b || 1);\n var end = valueOrDefault(b, a || 1);\n\n if (start <= 0 || end <= 0) {\n return null;\n }\n\n if (limit) {\n start = limitValue(start, min, max);\n end = limitValue(end, min, max);\n }\n\n start = log(start, base);\n end = log(end, base);\n\n var p1 = Math.min(start, end) - logMin;\n var p2 = Math.max(start, end) - logMin;\n\n var slotBox = new Box(lineBox.x1, lineBox.y1, lineBox.x1, lineBox.y1);\n slotBox[axis + 1] = limitCoordinate(lineStart + step * (axisDir > 0 ? p1 : p2));\n slotBox[axis + 2] = limitCoordinate(lineStart + step * (axisDir > 0 ? p2 : p1));\n\n return slotBox;\n };\n\n LogarithmicAxis.prototype.getValue = function getValue (point) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var base = options.majorUnit;\n var ref$1 = this.lineInfo();\n var axis = ref$1.axis;\n var axisDir = ref$1.axisDir;\n var lineStart = ref$1.lineStart;\n var lineSize = ref$1.lineSize;\n var step = ((logMax - logMin) / lineSize);\n var offset = axisDir * (point[axis] - lineStart);\n var valueOffset = offset * step;\n\n if (offset < 0 || offset > lineSize) {\n return null;\n }\n\n var value = logMin + valueOffset;\n\n return round(Math.pow(base, value), DEFAULT_PRECISION);\n };\n\n LogarithmicAxis.prototype.range = function range () {\n var options = this.options;\n return { min: options.min, max: options.max };\n };\n\n LogarithmicAxis.prototype.translateRange = function translateRange (delta) {\n var ref = this;\n var options = ref.options;\n var logMin = ref.logMin;\n var logMax = ref.logMax;\n var reverse = options.reverse;\n var vertical = options.vertical;\n var base = options.majorUnit;\n var lineBox = this.lineBox();\n var size = vertical ? lineBox.height() : lineBox.width();\n var scale = size / (logMax - logMin);\n var offset = round(delta / scale, DEFAULT_PRECISION);\n\n if ((vertical || reverse) && !(vertical && reverse )) {\n offset = -offset;\n }\n\n return {\n min: Math.pow(base, logMin + offset),\n max: Math.pow(base, logMax + offset),\n offset: offset\n };\n };\n\n LogarithmicAxis.prototype.labelsCount = function labelsCount () {\n var floorMax = Math.floor(this.logMax);\n var count = Math.floor(floorMax - this.logMin) + 1;\n\n return count;\n };\n\n LogarithmicAxis.prototype.getMajorTickPositions = function getMajorTickPositions () {\n var ticks = [];\n\n this.traverseMajorTicksPositions(function (position) {\n ticks.push(position);\n }, { step: 1, skip: 0 });\n\n return ticks;\n };\n\n LogarithmicAxis.prototype.createTicks = function createTicks (lineGroup) {\n var options = this.options;\n var majorTicks = options.majorTicks;\n var minorTicks = options.minorTicks;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var lineBox = this.lineBox();\n var ticks = [];\n var tickLineOptions = {\n // TODO\n // _alignLines: options._alignLines,\n vertical: vertical\n };\n\n function render(tickPosition, tickOptions) {\n tickLineOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickLineOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickLineOptions.position = tickPosition;\n\n lineGroup.append(createAxisTick(tickLineOptions, tickOptions));\n }\n\n if (majorTicks.visible) {\n this.traverseMajorTicksPositions(render, majorTicks);\n }\n\n if (minorTicks.visible) {\n this.traverseMinorTicksPositions(render, minorTicks);\n }\n\n return ticks;\n };\n\n LogarithmicAxis.prototype.createGridLines = function createGridLines (altAxis) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var vertical = options.vertical;\n var lineBox = altAxis.lineBox();\n var lineOptions = {\n lineStart: lineBox[vertical ? \"x1\" : \"y1\"],\n lineEnd: lineBox[vertical ? \"x2\" : \"y2\"],\n vertical: vertical\n };\n var majorTicks = [];\n\n var container = this.gridLinesVisual();\n function render(tickPosition, gridLine) {\n if (!inArray(tickPosition, majorTicks)) {\n lineOptions.position = tickPosition;\n container.append(createAxisGridLine(lineOptions, gridLine));\n\n majorTicks.push(tickPosition);\n }\n }\n\n if (majorGridLines.visible) {\n this.traverseMajorTicksPositions(render, majorGridLines);\n }\n\n if (minorGridLines.visible) {\n this.traverseMinorTicksPositions(render, minorGridLines);\n }\n\n return container.children;\n };\n\n LogarithmicAxis.prototype.traverseMajorTicksPositions = function traverseMajorTicksPositions (callback, tickOptions) {\n var ref = this.lineInfo();\n var lineStart = ref.lineStart;\n var step = ref.step;\n var ref$1 = this;\n var logMin = ref$1.logMin;\n var logMax = ref$1.logMax;\n\n for (var power = Math.ceil(logMin) + tickOptions.skip; power <= logMax; power += tickOptions.step) {\n var position = round(lineStart + step * (power - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n };\n\n LogarithmicAxis.prototype.traverseMinorTicksPositions = function traverseMinorTicksPositions (callback, tickOptions) {\n var this$1 = this;\n\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var ref$1 = this.lineInfo();\n var lineStart = ref$1.lineStart;\n var step = ref$1.step;\n var ref$2 = this;\n var logMin = ref$2.logMin;\n var logMax = ref$2.logMax;\n var start = Math.floor(logMin);\n\n for (var power = start; power < logMax; power++) {\n var minorOptions = this$1._minorIntervalOptions(power);\n for (var idx = tickOptions.skip; idx < minorUnit; idx += tickOptions.step) {\n var value = minorOptions.value + idx * minorOptions.minorStep;\n if (value > max) {\n break;\n }\n if (value >= min) {\n var position = round(lineStart + step * (log(value, base) - logMin), DEFAULT_PRECISION);\n callback(position, tickOptions);\n }\n }\n }\n };\n\n LogarithmicAxis.prototype.createAxisLabel = function createAxisLabel (index, labelOptions, labelContext) {\n var power = Math.ceil(this.logMin + index);\n var value = Math.pow(this.options.majorUnit, power);\n var text = this.axisLabelText(value, labelOptions, labelContext);\n\n return new AxisLabel(value, text, index, null, labelOptions);\n };\n\n LogarithmicAxis.prototype.shouldRenderNote = function shouldRenderNote (value) {\n var range = this.range();\n return range.min <= value && value <= range.max;\n };\n\n LogarithmicAxis.prototype.pan = function pan (delta) {\n var range = this.translateRange(delta);\n return this.limitRange(range.min, range.max, this.totalMin, this.totalMax, range.offset);\n };\n\n LogarithmicAxis.prototype.pointsRange = function pointsRange (start, end) {\n var startValue = this.getValue(start);\n var endValue = this.getValue(end);\n var min = Math.min(startValue, endValue);\n var max = Math.max(startValue, endValue);\n\n return {\n min: min,\n max: max\n };\n };\n\n LogarithmicAxis.prototype.scaleRange = function scaleRange (scale, cursor) {\n var ref = this.options;\n var base = ref.majorUnit;\n var logMin = log(this.options.min, base);\n var logMax = log(this.options.max, base);\n var position = Math.abs(this.pointOffset(cursor));\n var range = logMax - logMin;\n var delta = this.scaleToDelta(scale, range);\n var min = Math.pow(base, logMin + position * delta);\n var max = Math.pow(base, logMax - (1 - position) * delta);\n\n if (max - min < MIN_VALUE_RANGE) {\n max = min + MIN_VALUE_RANGE;\n }\n\n return {\n min: min,\n max: max\n };\n };\n\n LogarithmicAxis.prototype.zoomRange = function zoomRange (scale, cursor) {\n var range = this.scaleRange(scale, cursor);\n var ref = this;\n var totalMin = ref.totalMin;\n var totalMax = ref.totalMax;\n\n return {\n min: limitValue(range.min, totalMin, totalMax),\n max: limitValue(range.max, totalMin, totalMax)\n };\n };\n\n LogarithmicAxis.prototype._minorIntervalOptions = function _minorIntervalOptions (power) {\n var ref = this.options;\n var minorUnit = ref.minorUnit;\n var base = ref.majorUnit;\n var value = Math.pow(base, power);\n var nextValue = Math.pow(base, power + 1);\n var difference = nextValue - value;\n var minorStep = difference / minorUnit;\n\n return {\n value: value,\n minorStep: minorStep\n };\n };\n\n LogarithmicAxis.prototype.lineInfo = function lineInfo () {\n var info = Axis.prototype.lineInfo.call(this);\n info.step = info.axisDir * (info.lineSize / (this.logMax - this.logMin));\n\n return info;\n };\n\n return LogarithmicAxis;\n}(Axis));\n\nfunction initRange(autoMin, autoMax, axisOptions, options) {\n var min = axisOptions.min;\n var max = axisOptions.max;\n\n if (defined(axisOptions.axisCrossingValue) && axisOptions.axisCrossingValue <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.max)) {\n max = autoMax;\n } else if (options.max <= 0) {\n throwNegativeValuesError();\n }\n\n if (!defined(options.min)) {\n min = autoMin;\n } else if (options.min <= 0) {\n throwNegativeValuesError();\n }\n\n return {\n min: min,\n max: max\n };\n}\n\nfunction autoAxisMin(min, max, options) {\n var base = options.majorUnit;\n var autoMin = min;\n if (min <= 0) {\n autoMin = max <= 1 ? Math.pow(base, -2) : 1;\n } else if (!options.narrowRange) {\n autoMin = Math.pow(base, Math.floor(log(min, base)));\n }\n return autoMin;\n}\n\nfunction autoAxisMax(max, base) {\n var logMaxRemainder = round(log(max, base), DEFAULT_PRECISION) % 1;\n var autoMax;\n if (max <= 0) {\n autoMax = base;\n } else if (logMaxRemainder !== 0 && (logMaxRemainder < 0.3 || logMaxRemainder > 0.9)) {\n autoMax = Math.pow(base, log(max, base) + 0.2);\n } else {\n autoMax = Math.pow(base, Math.ceil(log(max, base)));\n }\n\n return autoMax;\n}\n\nfunction throwNegativeValuesError() {\n throw new Error(\"Non positive values cannot be used for a logarithmic axis\");\n}\n\nfunction log(x, base) {\n return Math.log(x) / Math.log(base);\n}\n\nsetDefaultOptions(LogarithmicAxis, {\n type: \"log\",\n majorUnit: DEFAULT_MAJOR_UNIT,\n minorUnit: 1,\n axisCrossingValue: 1,\n vertical: true,\n majorGridLines: {\n visible: true,\n width: 1,\n color: BLACK\n },\n zIndex: 1,\n _deferLabels: true\n});\n\nexport default LogarithmicAxis;\n","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport { append, map } from '../../common';\n\nvar GridLinesMixin = {\n createGridLines: function(altAxis) {\n var options = this.options;\n var radius = Math.abs(this.box.center().y - altAxis.lineBox().y1);\n var gridLines = [];\n var skipMajor = false;\n var majorAngles, minorAngles;\n\n if (options.majorGridLines.visible) {\n majorAngles = this.majorGridLineAngles(altAxis);\n skipMajor = true;\n\n gridLines = this.renderMajorGridLines(\n majorAngles, radius, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n minorAngles = this.minorGridLineAngles(altAxis, skipMajor);\n\n append(gridLines, this.renderMinorGridLines(\n minorAngles, radius, options.minorGridLines, altAxis, skipMajor\n ));\n }\n\n return gridLines;\n },\n\n renderMajorGridLines: function(angles, radius, options) {\n return this.renderGridLines(angles, radius, options);\n },\n\n renderMinorGridLines: function(angles, radius, options, altAxis, skipMajor) {\n var radiusCallback = this.radiusCallback && this.radiusCallback(radius, altAxis, skipMajor);\n return this.renderGridLines(angles, radius, options, radiusCallback);\n },\n\n renderGridLines: function(angles, radius, options, radiusCallback) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n\n var center = this.box.center();\n var circle = new geom.Circle([ center.x, center.y ], radius);\n var container = this.gridLinesVisual();\n\n for (var i = 0; i < angles.length; i++) {\n var line = new draw.Path(style);\n if (radiusCallback) {\n circle.radius = radiusCallback(angles[i]);\n }\n\n line.moveTo(circle.center)\n .lineTo(circle.pointAt(angles[i] + 180));\n\n container.append(line);\n }\n\n return container.children;\n },\n\n gridLineAngles: function(altAxis, size, skip, step, skipAngles) {\n var this$1 = this;\n\n var divs = this.intervals(size, skip, step, skipAngles);\n var options = altAxis.options;\n var altAxisVisible = options.visible && (options.line || {}).visible !== false;\n\n return map(divs, function (d) {\n var alpha = this$1.intervalAngle(d);\n\n if (!altAxisVisible || alpha !== 90) {\n return alpha;\n }\n });\n }\n};\n\nexport default GridLinesMixin;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport CategoryAxis from './category-axis';\nimport ShapeBuilder from './shape-builder';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { COORD_PRECISION, ARC } from '../common/constants';\nimport { deepExtend, getSpacing, inArray, limitValue, map, rad, round, setDefaultOptions } from '../common';\n\nvar RadarCategoryAxis = (function (CategoryAxis) {\n function RadarCategoryAxis () {\n CategoryAxis.apply(this, arguments);\n }\n\n if ( CategoryAxis ) RadarCategoryAxis.__proto__ = CategoryAxis;\n RadarCategoryAxis.prototype = Object.create( CategoryAxis && CategoryAxis.prototype );\n RadarCategoryAxis.prototype.constructor = RadarCategoryAxis;\n\n RadarCategoryAxis.prototype.range = function range () {\n return { min: 0, max: this.options.categories.length };\n };\n\n RadarCategoryAxis.prototype.reflow = function reflow (box) {\n this.box = box;\n this.reflowLabels();\n };\n\n RadarCategoryAxis.prototype.lineBox = function lineBox () {\n return this.box;\n };\n\n RadarCategoryAxis.prototype.reflowLabels = function reflowLabels () {\n var this$1 = this;\n\n var ref = this;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n var measureBox = new Box();\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1.getSlot(skip + i * step).adjacentBox(\n 0, labelBox.width(), labelBox.height()\n ));\n }\n };\n\n RadarCategoryAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n if ( skipAngles === void 0 ) skipAngles = false;\n\n var options = this.options;\n var categories = options.categories.length;\n var divCount = categories / size || 1;\n var divAngle = 360 / divCount;\n var skip = skipOption || 0;\n var step = stepOption || 1;\n var divs = [];\n var angle = 0;\n\n for (var i = skip; i < divCount; i += step) {\n if (options.reverse) {\n angle = 360 - i * divAngle;\n } else {\n angle = i * divAngle;\n }\n\n angle = round(angle, COORD_PRECISION) % 360;\n\n if (!(skipAngles && inArray(angle, skipAngles))) {\n divs.push(angle);\n }\n }\n\n return divs;\n };\n\n RadarCategoryAxis.prototype.majorIntervals = function majorIntervals () {\n return this.intervals(1);\n };\n\n RadarCategoryAxis.prototype.minorIntervals = function minorIntervals () {\n return this.intervals(0.5);\n };\n\n RadarCategoryAxis.prototype.intervalAngle = function intervalAngle (interval) {\n return (360 + interval + this.options.startAngle) % 360;\n };\n\n RadarCategoryAxis.prototype.majorAngles = function majorAngles () {\n var this$1 = this;\n\n return map(this.majorIntervals(), function (interval) { return this$1.intervalAngle(interval); });\n };\n\n RadarCategoryAxis.prototype.createLine = function createLine () {\n return [];\n };\n\n RadarCategoryAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, 1, majorGridLines.skip, majorGridLines.step);\n };\n\n RadarCategoryAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n var ref = this.options;\n var minorGridLines = ref.minorGridLines;\n var majorGridLines = ref.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(1, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, 0.5, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n };\n\n RadarCategoryAxis.prototype.radiusCallback = function radiusCallback (radius, altAxis, skipMajor) {\n if (altAxis.options.type !== ARC) {\n var minorAngle = rad(360 / (this.options.categories.length * 2));\n var minorRadius = Math.cos(minorAngle) * radius;\n var majorAngles = this.majorAngles();\n\n var radiusCallback = function(angle) {\n if (!skipMajor && inArray(angle, majorAngles)) {\n return radius;\n }\n\n return minorRadius;\n };\n return radiusCallback;\n }\n };\n\n RadarCategoryAxis.prototype.createPlotBands = function createPlotBands () {\n var this$1 = this;\n\n var plotBands = this.options.plotBands || [];\n\n var group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var slot = this$1.plotBandSlot(band);\n var singleSlot = this$1.getSlot(band.from);\n\n var head = band.from - Math.floor(band.from);\n slot.startAngle += head * singleSlot.angle;\n\n var tail = Math.ceil(band.to) - band.to;\n slot.angle -= (tail + head) * singleSlot.angle;\n\n var ring = ShapeBuilder.current.createRing(slot, {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n });\n group.append(ring);\n }\n\n this.appendVisual(group);\n };\n\n RadarCategoryAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n return this.getSlot(band.from, band.to - 1);\n };\n\n RadarCategoryAxis.prototype.getSlot = function getSlot (from, to) {\n var options = this.options;\n var justified = options.justified;\n var box = this.box;\n var divs = this.majorAngles();\n var totalDivs = divs.length;\n var slotAngle = 360 / totalDivs;\n var fromValue = from;\n\n if (options.reverse && !justified) {\n fromValue = (fromValue + 1) % totalDivs;\n }\n\n fromValue = limitValue(Math.floor(fromValue), 0, totalDivs - 1);\n var slotStart = divs[fromValue];\n\n if (justified) {\n slotStart = slotStart - slotAngle / 2;\n\n if (slotStart < 0) {\n slotStart += 360;\n }\n }\n\n var toValue = limitValue(Math.ceil(to || fromValue), fromValue, totalDivs - 1);\n var slots = toValue - fromValue + 1;\n var angle = slotAngle * slots;\n\n return new Ring(box.center(), 0, box.height() / 2, slotStart, angle);\n };\n\n RadarCategoryAxis.prototype.slot = function slot (from, to) {\n var slot = this.getSlot(from, to);\n var startAngle = slot.startAngle + 180;\n var endAngle = startAngle + slot.angle;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n };\n\n RadarCategoryAxis.prototype.pointCategoryIndex = function pointCategoryIndex (point) {\n var this$1 = this;\n\n var length = this.options.categories.length;\n var index = null;\n\n for (var i = 0; i < length; i++) {\n var slot = this$1.getSlot(i);\n if (slot.containsPoint(point)) {\n index = i;\n break;\n }\n }\n\n return index;\n };\n\n return RadarCategoryAxis;\n}(CategoryAxis));\n\nsetDefaultOptions(RadarCategoryAxis, {\n startAngle: 90,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n visible: true\n },\n justified: true\n});\ndeepExtend(RadarCategoryAxis.prototype, GridLinesMixin);\n\nexport default RadarCategoryAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport GridLinesMixin from './mixins/grid-lines-mixin';\nimport RadarCategoryAxis from './radar-category-axis';\nimport NumericAxis from './numeric-axis';\nimport Axis from './axis';\nimport Ring from './ring';\nimport Box from './box';\n\nimport { BLACK } from '../common/constants';\nimport { deepExtend, deg, getSpacing, inArray, limitValue, setDefaultOptions } from '../common';\n\nvar PolarAxis = (function (Axis) {\n function PolarAxis(options, chartService) {\n Axis.call(this, options, chartService);\n\n var instanceOptions = this.options;\n\n instanceOptions.minorUnit = instanceOptions.minorUnit || instanceOptions.majorUnit / 2;\n }\n\n if ( Axis ) PolarAxis.__proto__ = Axis;\n PolarAxis.prototype = Object.create( Axis && Axis.prototype );\n PolarAxis.prototype.constructor = PolarAxis;\n\n PolarAxis.prototype.getDivisions = function getDivisions (stepValue) {\n return NumericAxis.prototype.getDivisions.call(this, stepValue) - 1;\n };\n\n PolarAxis.prototype.reflow = function reflow (box) {\n this.box = box;\n this.reflowLabels();\n };\n\n PolarAxis.prototype.reflowLabels = function reflowLabels () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var labels = ref.labels;\n var labelOptions = ref.options.labels;\n var skip = labelOptions.skip || 0;\n var step = labelOptions.step || 1;\n\n var measureBox = new Box();\n var divs = this.intervals(options.majorUnit, skip, step);\n\n for (var i = 0; i < labels.length; i++) {\n labels[i].reflow(measureBox);\n var labelBox = labels[i].box;\n\n labels[i].reflow(this$1.getSlot(divs[i]).adjacentBox(0, labelBox.width(), labelBox.height()));\n }\n };\n\n PolarAxis.prototype.lineBox = function lineBox () {\n return this.box;\n };\n\n PolarAxis.prototype.intervals = function intervals (size, skipOption, stepOption, skipAngles) {\n if ( skipAngles === void 0 ) skipAngles = false;\n\n var min = this.options.min;\n var divisions = this.getDivisions(size);\n var divs = [];\n var skip = skipOption || 0;\n var step = stepOption || 1;\n\n for (var i = skip; i < divisions; i += step) {\n var current = (360 + min + i * size) % 360;\n if (!(skipAngles && inArray(current, skipAngles))) {\n divs.push(current);\n }\n }\n\n return divs;\n };\n\n PolarAxis.prototype.majorIntervals = function majorIntervals () {\n return this.intervals(this.options.majorUnit);\n };\n\n PolarAxis.prototype.minorIntervals = function minorIntervals () {\n return this.intervals(this.options.minorUnit);\n };\n\n PolarAxis.prototype.intervalAngle = function intervalAngle (i) {\n return (540 - i - this.options.startAngle) % 360;\n };\n\n PolarAxis.prototype.createLine = function createLine () {\n return [];\n };\n\n PolarAxis.prototype.majorGridLineAngles = function majorGridLineAngles (altAxis) {\n var majorGridLines = this.options.majorGridLines;\n return this.gridLineAngles(altAxis, this.options.majorUnit, majorGridLines.skip, majorGridLines.step);\n };\n\n PolarAxis.prototype.minorGridLineAngles = function minorGridLineAngles (altAxis, skipMajor) {\n var options = this.options;\n var minorGridLines = options.minorGridLines;\n var majorGridLines = options.majorGridLines;\n var majorGridLineAngles = skipMajor ? this.intervals(options.majorUnit, majorGridLines.skip, majorGridLines.step) : null;\n\n return this.gridLineAngles(altAxis, options.minorUnit, minorGridLines.skip, minorGridLines.step, majorGridLineAngles);\n };\n\n PolarAxis.prototype.plotBandSlot = function plotBandSlot (band) {\n return this.getSlot(band.from, band.to);\n };\n\n PolarAxis.prototype.getSlot = function getSlot (a, b) {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var startAngle = options.startAngle;\n var start = limitValue(a, options.min, options.max);\n var end = limitValue(b || start, start, options.max);\n\n if (options.reverse) {\n start *= -1;\n end *= -1;\n }\n\n start = (540 - start - startAngle) % 360;\n end = (540 - end - startAngle) % 360;\n\n if (end < start) {\n var tmp = start;\n start = end;\n end = tmp;\n }\n\n return new Ring(box.center(), 0, box.height() / 2, start, end - start);\n };\n\n PolarAxis.prototype.slot = function slot (from, to) {\n if ( to === void 0 ) to = from;\n\n var options = this.options;\n var start = 360 - options.startAngle;\n var slot = this.getSlot(from, to);\n var min = Math.min(from, to);\n var max = Math.max(from, to);\n var startAngle, endAngle;\n\n if (options.reverse) {\n startAngle = min;\n endAngle = max;\n } else {\n startAngle = 360 - max;\n endAngle = 360 - min;\n }\n\n startAngle = (startAngle + start) % 360;\n endAngle = (endAngle + start) % 360;\n\n return new geom.Arc([ slot.center.x, slot.center.y ], {\n startAngle: startAngle,\n endAngle: endAngle,\n radiusX: slot.radius,\n radiusY: slot.radius\n });\n };\n\n PolarAxis.prototype.getValue = function getValue (point) {\n var options = this.options;\n var center = this.box.center();\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = Math.round(deg(Math.atan2(dy, dx)));\n var start = options.startAngle;\n\n if (!options.reverse) {\n theta *= -1;\n start *= -1;\n }\n\n return (theta + start + 360) % 360;\n };\n\n PolarAxis.prototype.valueRange = function valueRange () {\n return {\n min: 0,\n max: Math.PI * 2\n };\n };\n\n return PolarAxis;\n}(Axis));\n\nsetDefaultOptions(PolarAxis, {\n type: \"polar\",\n startAngle: 0,\n reverse: false,\n majorUnit: 60,\n min: 0,\n max: 360,\n labels: {\n margin: getSpacing(10)\n },\n majorGridLines: {\n color: BLACK,\n visible: true,\n width: 1\n },\n minorGridLines: {\n color: \"#aaa\"\n }\n});\n\ndeepExtend(PolarAxis.prototype, GridLinesMixin, {\n createPlotBands: RadarCategoryAxis.prototype.createPlotBands,\n majorAngles: RadarCategoryAxis.prototype.majorAngles,\n range: NumericAxis.prototype.range,\n labelsCount: NumericAxis.prototype.labelsCount,\n createAxisLabel: NumericAxis.prototype.createAxisLabel\n});\n\nexport default PolarAxis;","import { geometry as geom, drawing as draw } from '@progress/kendo-drawing';\n\nimport ShapeBuilder from '../shape-builder';\nimport Ring from '../ring';\nimport Point from '../point';\n\nimport { ARC } from '../../common/constants';\nimport { append, deg, rad } from '../../common';\n\nvar RadarNumericAxisMixin = {\n options: {\n majorGridLines: {\n visible: true\n }\n },\n\n createPlotBands: function() {\n var this$1 = this;\n\n var ref = this.options;\n var type = ref.majorGridLines.type;\n var plotBands = ref.plotBands; if ( plotBands === void 0 ) plotBands = [];\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var group = this._plotbandGroup = new draw.Group({\n zIndex: -1\n });\n\n for (var i = 0; i < plotBands.length; i++) {\n var band = plotBands[i];\n var bandStyle = {\n fill: {\n color: band.color,\n opacity: band.opacity\n },\n stroke: {\n opacity: band.opacity\n }\n };\n\n var slot = this$1.getSlot(band.from, band.to, true);\n var ring = new Ring(center, center.y - slot.y2, center.y - slot.y1, 0, 360);\n\n var shape = (void 0);\n if (type === ARC) {\n shape = ShapeBuilder.current.createRing(ring, bandStyle);\n } else {\n shape = draw.Path.fromPoints(this$1.plotBandPoints(ring, majorAngles), bandStyle).close();\n }\n\n group.append(shape);\n }\n\n this.appendVisual(group);\n },\n\n plotBandPoints: function(ring, angles) {\n var innerPoints = [];\n var outerPoints = [];\n var center = [ ring.center.x, ring.center.y ];\n var innerCircle = new geom.Circle(center, ring.innerRadius);\n var outerCircle = new geom.Circle(center, ring.radius);\n\n for (var i = 0; i < angles.length; i++) {\n innerPoints.push(innerCircle.pointAt(angles[i] + 180));\n outerPoints.push(outerCircle.pointAt(angles[i] + 180));\n }\n\n innerPoints.reverse();\n innerPoints.push(innerPoints[0]);\n outerPoints.push(outerPoints[0]);\n\n return outerPoints.concat(innerPoints);\n },\n\n createGridLines: function(altAxis) {\n var options = this.options;\n var majorTicks = this.radarMajorGridLinePositions();\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var gridLines = [];\n\n if (options.majorGridLines.visible) {\n gridLines = this.renderGridLines(\n center, majorTicks, majorAngles, options.majorGridLines\n );\n }\n\n if (options.minorGridLines.visible) {\n var minorTicks = this.radarMinorGridLinePositions();\n append(gridLines, this.renderGridLines(\n center, minorTicks, majorAngles, options.minorGridLines\n ));\n }\n\n return gridLines;\n },\n\n renderGridLines: function(center, ticks, angles, options) {\n var style = {\n stroke: {\n width: options.width,\n color: options.color,\n dashType: options.dashType\n }\n };\n var skip = options.skip; if ( skip === void 0 ) skip = 0;\n var step = options.step; if ( step === void 0 ) step = 0;\n var container = this.gridLinesVisual();\n\n for (var tickIx = skip; tickIx < ticks.length; tickIx += step) {\n var tickRadius = center.y - ticks[tickIx];\n if (tickRadius > 0) {\n var circle = new geom.Circle([ center.x, center.y ], tickRadius);\n if (options.type === ARC) {\n container.append(new draw.Circle(circle, style));\n } else {\n var line = new draw.Path(style);\n for (var angleIx = 0; angleIx < angles.length; angleIx++) {\n line.lineTo(circle.pointAt(angles[angleIx] + 180));\n }\n\n line.close();\n container.append(line);\n }\n }\n }\n\n return container.children;\n },\n\n getValue: function(point) {\n var lineBox = this.lineBox();\n var altAxis = this.plotArea.polarAxis;\n var majorAngles = altAxis.majorAngles();\n var center = altAxis.box.center();\n var radius = point.distanceTo(center);\n var distance = radius;\n\n if (this.options.majorGridLines.type !== ARC && majorAngles.length > 1) {\n var dx = point.x - center.x;\n var dy = point.y - center.y;\n var theta = (deg(Math.atan2(dy, dx)) + 540) % 360;\n\n majorAngles.sort(function(a, b) {\n return angularDistance(a, theta) - angularDistance(b, theta);\n });\n\n // Solve triangle (center, point, axis X) using one side (radius) and two angles.\n // Angles are derived from triangle (center, point, gridline X)\n var midAngle = angularDistance(majorAngles[0], majorAngles[1]) / 2;\n var alpha = angularDistance(theta, majorAngles[0]);\n var gamma = 90 - midAngle;\n var beta = 180 - alpha - gamma;\n\n distance = radius * (Math.sin(rad(beta)) / Math.sin(rad(gamma)));\n }\n\n return this.axisType().prototype.getValue.call(\n this, new Point(lineBox.x1, lineBox.y2 - distance)\n );\n }\n};\n\nfunction angularDistance(a, b) {\n return 180 - Math.abs(Math.abs(a - b) - 180);\n}\n\nexport default RadarNumericAxisMixin;","import NumericAxis from './numeric-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarNumericAxis = (function (NumericAxis) {\n function RadarNumericAxis () {\n NumericAxis.apply(this, arguments);\n }\n\n if ( NumericAxis ) RadarNumericAxis.__proto__ = NumericAxis;\n RadarNumericAxis.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n RadarNumericAxis.prototype.constructor = RadarNumericAxis;\n\n RadarNumericAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n return this.getTickPositions(this.options.majorUnit);\n };\n\n RadarNumericAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n var options = this.options;\n var minorSkipStep = 0;\n\n if (options.majorGridLines.visible) {\n minorSkipStep = options.majorUnit;\n }\n return this.getTickPositions(options.minorUnit, minorSkipStep);\n };\n\n RadarNumericAxis.prototype.axisType = function axisType () {\n return NumericAxis;\n };\n\n return RadarNumericAxis;\n}(NumericAxis));\n\ndeepExtend(RadarNumericAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarNumericAxis;","import LogarithmicAxis from './logarithmic-axis';\nimport RadarNumericAxisMixin from './mixins/radar-numeric-axis-mixin';\n\nimport { deepExtend } from '../common';\n\nvar RadarLogarithmicAxis = (function (LogarithmicAxis) {\n function RadarLogarithmicAxis () {\n LogarithmicAxis.apply(this, arguments);\n }\n\n if ( LogarithmicAxis ) RadarLogarithmicAxis.__proto__ = LogarithmicAxis;\n RadarLogarithmicAxis.prototype = Object.create( LogarithmicAxis && LogarithmicAxis.prototype );\n RadarLogarithmicAxis.prototype.constructor = RadarLogarithmicAxis;\n\n RadarLogarithmicAxis.prototype.radarMajorGridLinePositions = function radarMajorGridLinePositions () {\n var positions = [];\n\n this.traverseMajorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.majorGridLines);\n\n return positions;\n };\n\n RadarLogarithmicAxis.prototype.radarMinorGridLinePositions = function radarMinorGridLinePositions () {\n var positions = [];\n\n this.traverseMinorTicksPositions(function(position) {\n positions.push(position);\n }, this.options.minorGridLines);\n\n return positions;\n };\n\n RadarLogarithmicAxis.prototype.axisType = function axisType () {\n return LogarithmicAxis;\n };\n\n return RadarLogarithmicAxis;\n}(LogarithmicAxis));\n\ndeepExtend(RadarLogarithmicAxis.prototype, RadarNumericAxisMixin);\n\nexport default RadarLogarithmicAxis;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { X, Y } from '../common/constants';\nimport { Class, last, round } from '../common';\n\nvar WEIGHT = 0.333;\nvar EXTREMUM_ALLOWED_DEVIATION = 0.01;\n\nvar CurveProcessor = (function (Class) {\n function CurveProcessor(closed) {\n Class.call(this);\n\n this.closed = closed;\n }\n\n if ( Class ) CurveProcessor.__proto__ = Class;\n CurveProcessor.prototype = Object.create( Class && Class.prototype );\n CurveProcessor.prototype.constructor = CurveProcessor;\n\n CurveProcessor.prototype.process = function process (dataPoints) {\n var this$1 = this;\n\n var points = dataPoints.slice(0);\n var segments = [];\n var closed = this.closed;\n var length = points.length;\n\n if (length > 2) {\n this.removeDuplicates(0, points);\n length = points.length;\n }\n\n if (length < 2 || (length === 2 && points[0].equals(points[1]))) {\n return segments;\n }\n\n var p0 = points[0];\n var p1 = points[1];\n var p2 = points[2];\n\n segments.push(new geom.Segment(p0));\n\n while (p0.equals(points[length - 1])) {\n closed = true;\n points.pop();\n length--;\n }\n\n if (length === 2) {\n var tangent = this.tangent(p0,p1, X, Y);\n\n last(segments).controlOut(\n this.firstControlPoint(tangent, p0, p1, X, Y)\n );\n\n segments.push(new geom.Segment(\n p1,\n this.secondControlPoint(tangent, p0, p1, X, Y)\n ));\n\n return segments;\n }\n\n var initialControlPoint, lastControlPoint;\n\n if (closed) {\n p0 = points[length - 1]; p1 = points[0]; p2 = points[1];\n var controlPoints = this.controlPoints(p0, p1, p2);\n initialControlPoint = controlPoints[1];\n lastControlPoint = controlPoints[0];\n } else {\n var tangent$1 = this.tangent(p0, p1, X,Y);\n initialControlPoint = this.firstControlPoint(tangent$1, p0, p1, X, Y);\n }\n\n var cp0 = initialControlPoint;\n for (var idx = 0; idx <= length - 3; idx++) {\n this$1.removeDuplicates(idx, points);\n length = points.length;\n if (idx + 3 <= length) {\n p0 = points[idx]; p1 = points[idx + 1]; p2 = points[idx + 2];\n var controlPoints$1 = this$1.controlPoints(p0,p1,p2);\n\n last(segments).controlOut(cp0);\n cp0 = controlPoints$1[1];\n\n var cp1 = controlPoints$1[0];\n segments.push(new geom.Segment(p1, cp1));\n }\n }\n\n if (closed) {\n p0 = points[length - 2]; p1 = points[length - 1]; p2 = points[0];\n var controlPoints$2 = this.controlPoints(p0, p1, p2);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p1,\n controlPoints$2[0]\n ));\n\n last(segments).controlOut(controlPoints$2[1]);\n segments.push(new geom.Segment(\n p2,\n lastControlPoint\n ));\n } else {\n var tangent$2 = this.tangent(p1, p2, X, Y);\n\n last(segments).controlOut(cp0);\n segments.push(new geom.Segment(\n p2,\n this.secondControlPoint(tangent$2, p1, p2, X, Y)\n ));\n }\n\n return segments;\n };\n\n CurveProcessor.prototype.removeDuplicates = function removeDuplicates (idx, points) {\n while (points[idx + 1] && (points[idx].equals(points[idx + 1]) || points[idx + 1].equals(points[idx + 2]))) {\n points.splice(idx + 1, 1);\n }\n };\n\n CurveProcessor.prototype.invertAxis = function invertAxis (p0, p1, p2) {\n var invertAxis = false;\n\n if (p0.x === p1.x) {\n invertAxis = true;\n } else if (p1.x === p2.x) {\n if ((p1.y < p2.y && p0.y <= p1.y) || (p2.y < p1.y && p1.y <= p0.y)) {\n invertAxis = true;\n }\n } else {\n var fn = this.lineFunction(p0,p1);\n var y2 = this.calculateFunction(fn, p2.x);\n if (!(p0.y <= p1.y && p2.y <= y2) &&\n !(p1.y <= p0.y && p2.y >= y2)) {\n invertAxis = true;\n }\n }\n\n return invertAxis;\n };\n\n CurveProcessor.prototype.isLine = function isLine (p0, p1, p2) {\n var fn = this.lineFunction(p0, p1);\n var y2 = this.calculateFunction(fn, p2.x);\n\n return (p0.x === p1.x && p1.x === p2.x) || round(y2, 1) === round(p2.y, 1);\n };\n\n CurveProcessor.prototype.lineFunction = function lineFunction (p1, p2) {\n var a = (p2.y - p1.y) / (p2.x - p1.x);\n var b = p1.y - a * p1.x;\n\n return [ b, a ];\n };\n\n CurveProcessor.prototype.controlPoints = function controlPoints (p0, p1, p2) {\n var xField = X;\n var yField = Y;\n var restrict = false;\n var switchOrientation = false;\n var tangent;\n\n if (this.isLine(p0, p1, p2)) {\n tangent = this.tangent(p0, p1, X, Y);\n } else {\n var monotonic = {\n x: this.isMonotonicByField(p0, p1, p2, X),\n y: this.isMonotonicByField(p0, p1, p2, Y)\n };\n\n if (monotonic.x && monotonic.y) {\n tangent = this.tangent(p0, p2, X, Y);\n restrict = true;\n } else {\n if (this.invertAxis(p0, p1, p2)) {\n xField = Y;\n yField = X;\n }\n\n if (monotonic[xField]) {\n tangent = 0;\n } else {\n var sign;\n if ((p2[yField] < p0[yField] && p0[yField] <= p1[yField]) ||\n (p0[yField] < p2[yField] && p1[yField] <= p0[yField])) {\n sign = numberSign((p2[yField] - p0[yField]) * (p1[xField] - p0[xField]));\n } else {\n sign = -numberSign((p2[xField] - p0[xField]) * (p1[yField] - p0[yField]));\n }\n\n tangent = EXTREMUM_ALLOWED_DEVIATION * sign;\n switchOrientation = true;\n }\n }\n }\n\n var secondControlPoint = this.secondControlPoint(tangent, p0, p1, xField, yField);\n\n if (switchOrientation) {\n var oldXField = xField;\n xField = yField;\n yField = oldXField;\n }\n\n var firstControlPoint = this.firstControlPoint(tangent, p1, p2, xField, yField);\n\n if (restrict) {\n this.restrictControlPoint(p0, p1, secondControlPoint, tangent);\n this.restrictControlPoint(p1, p2, firstControlPoint, tangent);\n }\n\n return [ secondControlPoint, firstControlPoint ];\n };\n\n CurveProcessor.prototype.restrictControlPoint = function restrictControlPoint (p1, p2, cp, tangent) {\n if (p1.y < p2.y) {\n if (p2.y < cp.y) {\n cp.x = p1.x + (p2.y - p1.y) / tangent;\n cp.y = p2.y;\n } else if (cp.y < p1.y) {\n cp.x = p2.x - (p2.y - p1.y) / tangent;\n cp.y = p1.y;\n }\n } else {\n if (cp.y < p2.y) {\n cp.x = p1.x - (p1.y - p2.y) / tangent;\n cp.y = p2.y;\n } else if (p1.y < cp.y) {\n cp.x = p2.x + (p1.y - p2.y) / tangent;\n cp.y = p1.y;\n }\n }\n };\n\n CurveProcessor.prototype.tangent = function tangent (p0, p1, xField, yField) {\n var x = p1[xField] - p0[xField];\n var y = p1[yField] - p0[yField];\n var tangent;\n\n if (x === 0) {\n tangent = 0;\n } else {\n tangent = y / x;\n }\n\n return tangent;\n };\n\n CurveProcessor.prototype.isMonotonicByField = function isMonotonicByField (p0, p1, p2, field) {\n return (p2[field] > p1[field] && p1[field] > p0[field]) ||\n (p2[field] < p1[field] && p1[field] < p0[field]);\n };\n\n CurveProcessor.prototype.firstControlPoint = function firstControlPoint (tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t1 + distance, p0[yField] + distance * tangent, xField, yField);\n };\n\n CurveProcessor.prototype.secondControlPoint = function secondControlPoint (tangent, p0, p3, xField, yField) {\n var t1 = p0[xField];\n var t2 = p3[xField];\n var distance = (t2 - t1) * WEIGHT;\n\n return this.point(t2 - distance, p3[yField] - distance * tangent, xField, yField);\n };\n\n CurveProcessor.prototype.point = function point (xValue, yValue, xField, yField) {\n var controlPoint = new geom.Point();\n controlPoint[xField] = xValue;\n controlPoint[yField] = yValue;\n\n return controlPoint;\n };\n\n CurveProcessor.prototype.calculateFunction = function calculateFunction (fn, x) {\n var length = fn.length;\n var result = 0;\n\n for (var i = 0; i < length; i++) {\n result += Math.pow(x,i) * fn[i];\n }\n return result;\n };\n\n return CurveProcessor;\n}(Class));\n\nfunction numberSign(value) {\n return value <= 0 ? -1 : 1;\n}\n\nexport default CurveProcessor;","import { Class } from '../../common';\n\nvar ChartAxis = (function (Class) {\n function ChartAxis(axis) {\n Class.call(this);\n\n this._axis = axis;\n this.options = axis.options;\n }\n\n if ( Class ) ChartAxis.__proto__ = Class;\n ChartAxis.prototype = Object.create( Class && Class.prototype );\n ChartAxis.prototype.constructor = ChartAxis;\n\n ChartAxis.prototype.value = function value (point) {\n var axis = this._axis;\n var value = axis.getCategory ? axis.getCategory(point) : axis.getValue(point);\n\n return value;\n };\n\n ChartAxis.prototype.slot = function slot (from, to, limit) {\n if ( limit === void 0 ) limit = true;\n\n return this._axis.slot(from, to, limit);\n };\n\n ChartAxis.prototype.range = function range () {\n return this._axis.range();\n };\n\n ChartAxis.prototype.valueRange = function valueRange () {\n return this._axis.valueRange();\n };\n\n return ChartAxis;\n}(Class));\n\nexport default ChartAxis;","import ChartAxis from './chart-axis';\n\nexport default function findAxisByName(name, axes) {\n for (var idx = 0; idx < axes.length; idx++) {\n if (axes[idx].options.name === name) {\n axes[idx].prepareUserOptions();\n return new ChartAxis(axes[idx]);\n }\n }\n}","import findAxisByName from './find-axis-by-name';\n\nvar ChartPane = function ChartPane(pane) {\n this.visual = pane.visual;\n this.chartsVisual = pane.chartContainer.visual;\n this._pane = pane;\n};\n\nChartPane.prototype.findAxisByName = function findAxisByName$1 (name) {\n return findAxisByName(name, this._pane.axes);\n};\n\nexport default ChartPane;","import { Class } from '../../common';\n\nvar ChartPlotArea = (function (Class) {\n function ChartPlotArea(plotArea) {\n Class.call(this);\n\n this._plotArea = plotArea;\n this.visual = plotArea.visual;\n this.backgroundVisual = plotArea._bgVisual;\n }\n\n if ( Class ) ChartPlotArea.__proto__ = Class;\n ChartPlotArea.prototype = Object.create( Class && Class.prototype );\n ChartPlotArea.prototype.constructor = ChartPlotArea;\n\n return ChartPlotArea;\n}(Class));\n\nexport default ChartPlotArea;","import { isNumber } from '../../common';\n\nexport default function countNumbers(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var num = values[i];\n if (isNumber(num)) {\n count++;\n }\n }\n\n return count;\n}","import { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined, isNumber } from '../../common';\n\nimport countNumbers from '../utils/count-numbers';\n\nvar Aggregates = {\n min: function(values) {\n var length = values.length;\n var min = MAX_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n min = Math.min(min, value);\n }\n }\n\n return min === MAX_VALUE ? values[0] : min;\n },\n\n max: function(values) {\n var length = values.length;\n var max = MIN_VALUE;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n max = Math.max(max, value);\n }\n }\n\n return max === MIN_VALUE ? values[0] : max;\n },\n\n sum: function(values) {\n var length = values.length;\n var sum = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (isNumber(value)) {\n sum += value;\n }\n }\n\n return sum;\n },\n\n sumOrNull: function(values) {\n var result = null;\n\n if (countNumbers(values)) {\n result = Aggregates.sum(values);\n }\n\n return result;\n },\n\n count: function(values) {\n var length = values.length;\n var count = 0;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n count++;\n }\n }\n\n return count;\n },\n\n avg: function(values) {\n var count = countNumbers(values);\n var result = values[0];\n\n if (count > 0) {\n result = Aggregates.sum(values) / count;\n }\n\n return result;\n },\n\n first: function(values) {\n var length = values.length;\n\n for (var i = 0; i < length; i++) {\n var value = values[i];\n if (value !== null && defined(value)) {\n return value;\n }\n }\n\n return values[0];\n }\n};\n\nexport default Aggregates;","import { getter } from '../../common';\n\nexport default function getField(field, row) {\n if (row === null) {\n return row;\n }\n\n var get = getter(field, true);\n return get(row);\n}","import getField from './utils/get-field';\nimport { VALUE } from '../common/constants';\nimport { Class, defined } from '../common';\n\nvar SeriesBinder = (function (Class) {\n function SeriesBinder() {\n Class.call(this);\n\n this._valueFields = {};\n this._otherFields = {};\n this._nullValue = {};\n this._undefinedValue = {};\n }\n\n if ( Class ) SeriesBinder.__proto__ = Class;\n SeriesBinder.prototype = Object.create( Class && Class.prototype );\n SeriesBinder.prototype.constructor = SeriesBinder;\n\n SeriesBinder.prototype.register = function register (seriesTypes, valueFields, otherFields) {\n var this$1 = this;\n if ( valueFields === void 0 ) valueFields = [ VALUE ];\n if ( otherFields === void 0 ) otherFields = {};\n\n\n for (var i = 0; i < seriesTypes.length; i++) {\n var type = seriesTypes[i];\n\n this$1._valueFields[type] = valueFields;\n this$1._otherFields[type] = otherFields;\n this$1._nullValue[type] = this$1._makeValue(valueFields, null);\n this$1._undefinedValue[type] = this$1._makeValue(valueFields, undefined);\n }\n };\n\n SeriesBinder.prototype.canonicalFields = function canonicalFields (series) {\n return this.valueFields(series).concat(this.otherFields(series));\n };\n\n SeriesBinder.prototype.valueFields = function valueFields (series) {\n return this._valueFields[series.type] || [ VALUE ];\n };\n\n SeriesBinder.prototype.otherFields = function otherFields (series) {\n return this._otherFields[series.type] || [ VALUE ];\n };\n\n SeriesBinder.prototype.bindPoint = function bindPoint (series, pointIx, item) {\n var data = series.data;\n var pointData = defined(item) ? item : data[pointIx];\n var result = { valueFields: { value: pointData } };\n var valueFields = this.valueFields(series);\n var otherFields = this._otherFields[series.type];\n var fields, value;\n\n if (pointData === null) {\n value = this._nullValue[series.type];\n } else if (!defined(pointData)) {\n value = this._undefinedValue[series.type];\n } else if (Array.isArray(pointData)) {\n var fieldData = pointData.slice(valueFields.length);\n value = this._bindFromArray(pointData, valueFields);\n fields = this._bindFromArray(fieldData, otherFields);\n } else if (typeof pointData === \"object\") {\n var srcValueFields = this.sourceFields(series, valueFields);\n var srcPointFields = this.sourceFields(series, otherFields);\n\n value = this._bindFromObject(pointData, valueFields, srcValueFields);\n fields = this._bindFromObject(pointData, otherFields, srcPointFields);\n }\n\n if (defined(value)) {\n if (valueFields.length === 1) {\n result.valueFields.value = value[valueFields[0]];\n } else {\n result.valueFields = value;\n }\n }\n\n result.fields = fields || {};\n\n return result;\n };\n\n SeriesBinder.prototype._makeValue = function _makeValue (fields, initialValue) {\n var value = {};\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n value[fieldName] = initialValue;\n }\n\n return value;\n };\n\n SeriesBinder.prototype._bindFromArray = function _bindFromArray (array, fields) {\n var value = {};\n\n if (fields) {\n var length = Math.min(fields.length, array.length);\n\n for (var i = 0; i < length; i++) {\n value[fields[i]] = array[i];\n }\n }\n\n return value;\n };\n\n SeriesBinder.prototype._bindFromObject = function _bindFromObject (object, fields, srcFields) {\n if ( srcFields === void 0 ) srcFields = fields;\n\n var value = {};\n\n if (fields) {\n var length = fields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = fields[i];\n var srcFieldName = srcFields[i];\n if (srcFieldName !== null) {\n value[fieldName] = getField(srcFieldName, object);\n }\n }\n }\n\n return value;\n };\n\n SeriesBinder.prototype.sourceFields = function sourceFields (series, canonicalFields) {\n var sourceFields = [];\n\n if (canonicalFields) {\n var length = canonicalFields.length;\n\n for (var i = 0; i < length; i++) {\n var fieldName = canonicalFields[i];\n var sourceFieldName = fieldName === VALUE ? \"field\" : fieldName + \"Field\";\n\n sourceFields.push(series[sourceFieldName] !== null ? (series[sourceFieldName] || fieldName) : null);\n }\n }\n\n return sourceFields;\n };\n\n return SeriesBinder;\n}(Class));\n\nSeriesBinder.current = new SeriesBinder();\n\nexport default SeriesBinder;","import SeriesBinder from '../series-binder';\n\nimport { OBJECT } from '../../common/constants';\nimport { Class, defined, getter, isArray, isNumber } from '../../common';\n\nvar STD_ERR = \"stderr\";\nvar STD_DEV = \"stddev\";\nvar percentRegex = /percent(?:\\w*)\\((\\d+)\\)/;\nvar standardDeviationRegex = new RegExp(\"^\" + STD_DEV + \"(?:\\\\((\\\\d+(?:\\\\.\\\\d+)?)\\\\))?$\");\n\nvar ErrorRangeCalculator = (function (Class) {\n function ErrorRangeCalculator(errorValue, series, field) {\n Class.call(this);\n\n this.initGlobalRanges(errorValue, series, field);\n }\n\n if ( Class ) ErrorRangeCalculator.__proto__ = Class;\n ErrorRangeCalculator.prototype = Object.create( Class && Class.prototype );\n ErrorRangeCalculator.prototype.constructor = ErrorRangeCalculator;\n\n ErrorRangeCalculator.prototype.initGlobalRanges = function initGlobalRanges (errorValue, series, field) {\n var data = series.data;\n var deviationMatch = standardDeviationRegex.exec(errorValue);\n\n if (deviationMatch) {\n this.valueGetter = this.createValueGetter(series, field);\n\n var average = this.getAverage(data);\n var deviation = this.getStandardDeviation(data, average, false);\n var multiple = deviationMatch[1] ? parseFloat(deviationMatch[1]) : 1;\n var errorRange = { low: average.value - deviation * multiple, high: average.value + deviation * multiple };\n\n this.globalRange = function() {\n return errorRange;\n };\n } else if (errorValue.indexOf && errorValue.indexOf(STD_ERR) >= 0) {\n this.valueGetter = this.createValueGetter(series, field);\n var standardError = this.getStandardError(data, this.getAverage(data));\n\n this.globalRange = function(value) {\n return { low: value - standardError, high: value + standardError };\n };\n }\n };\n\n ErrorRangeCalculator.prototype.createValueGetter = function createValueGetter (series, field) {\n var data = series.data;\n var binder = SeriesBinder.current;\n var valueFields = binder.valueFields(series);\n var item = defined(data[0]) ? data[0] : {};\n var valueGetter;\n\n if (isArray(item)) {\n var index = field ? valueFields.indexOf(field) : 0;\n valueGetter = getter(\"[\" + index + \"]\");\n } else if (isNumber(item)) {\n valueGetter = getter();\n } else if (typeof item === OBJECT) {\n var srcValueFields = binder.sourceFields(series, valueFields);\n valueGetter = getter(srcValueFields[valueFields.indexOf(field)]);\n }\n\n return valueGetter;\n };\n\n ErrorRangeCalculator.prototype.getErrorRange = function getErrorRange (pointValue, errorValue) {\n var low, high, value;\n\n if (!defined(errorValue)) {\n return null;\n }\n\n if (this.globalRange) {\n return this.globalRange(pointValue);\n }\n\n if (isArray(errorValue)) {\n low = pointValue - errorValue[0];\n high = pointValue + errorValue[1];\n } else if (isNumber(value = parseFloat(errorValue))) {\n low = pointValue - value;\n high = pointValue + value;\n } else if ((value = percentRegex.exec(errorValue))) {\n var percentValue = pointValue * (parseFloat(value[1]) / 100);\n low = pointValue - Math.abs(percentValue);\n high = pointValue + Math.abs(percentValue);\n } else {\n throw new Error(\"Invalid ErrorBar value: \" + errorValue);\n }\n\n return { low: low, high: high };\n };\n\n ErrorRangeCalculator.prototype.getStandardError = function getStandardError (data, average) {\n return this.getStandardDeviation(data, average, true) / Math.sqrt(average.count);\n };\n\n ErrorRangeCalculator.prototype.getStandardDeviation = function getStandardDeviation (data, average, isSample) {\n var this$1 = this;\n\n var length = data.length;\n var total = isSample ? average.count - 1 : average.count;\n var squareDifferenceSum = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n squareDifferenceSum += Math.pow(value - average.value, 2);\n }\n }\n\n return Math.sqrt(squareDifferenceSum / total);\n };\n\n ErrorRangeCalculator.prototype.getAverage = function getAverage (data) {\n var this$1 = this;\n\n var length = data.length;\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < length; idx++) {\n var value = this$1.valueGetter(data[idx]);\n if (isNumber(value)) {\n sum += value;\n count++;\n }\n }\n\n return {\n value: sum / count,\n count: count\n };\n };\n\n return ErrorRangeCalculator;\n}(Class));\n\nexport default ErrorRangeCalculator;","import { support } from '@progress/kendo-drawing';\n\nvar browser = support.browser || {};\n\nvar INITIAL_ANIMATION_DURATION = 600;\nvar FADEIN = \"fadeIn\";\n\nvar GLASS = \"glass\";\nvar BORDER_BRIGHTNESS = 0.8;\nvar TOOLTIP_OFFSET = 5;\nvar START_SCALE = browser.msie ? 0.001 : 0;\nvar ERROR_LOW_FIELD = \"errorLow\";\nvar ERROR_HIGH_FIELD = \"errorHigh\";\nvar X_ERROR_LOW_FIELD = \"xErrorLow\";\nvar X_ERROR_HIGH_FIELD = \"xErrorHigh\";\nvar Y_ERROR_LOW_FIELD = \"yErrorLow\";\nvar Y_ERROR_HIGH_FIELD = \"yErrorHigh\";\nvar LINE_MARKER_SIZE = 8;\nvar ZERO = \"zero\";\nvar INTERPOLATE = \"interpolate\";\nvar GAP = \"gap\";\nvar ABOVE = \"above\";\nvar BELOW = \"below\";\n\nvar SMOOTH = \"smooth\";\nvar STEP = \"step\";\n\nvar AREA = \"area\";\nvar BAR = \"bar\";\nvar BOX_PLOT = \"boxPlot\";\nvar BUBBLE = \"bubble\";\nvar BULLET = \"bullet\";\nvar CANDLESTICK = \"candlestick\";\nvar COLUMN = \"column\";\nvar DONUT = \"donut\";\nvar FUNNEL = \"funnel\";\nvar HEATMAP = \"heatmap\";\nvar HORIZONTAL_WATERFALL = \"horizontalWaterfall\";\nvar LINE = \"line\";\nvar OHLC = \"ohlc\";\nvar PIE = \"pie\";\nvar POLAR_AREA = \"polarArea\";\nvar POLAR_LINE = \"polarLine\";\nvar POLAR_SCATTER = \"polarScatter\";\nvar RADAR_AREA = \"radarArea\";\nvar RADAR_COLUMN = \"radarColumn\";\nvar RADAR_LINE = \"radarLine\";\nvar RANGE_AREA = \"rangeArea\";\nvar RANGE_BAR = \"rangeBar\";\nvar RANGE_COLUMN = \"rangeColumn\";\nvar SCATTER = \"scatter\";\nvar SCATTER_LINE = \"scatterLine\";\nvar VERTICAL_AREA = \"verticalArea\";\nvar VERTICAL_BOX_PLOT = \"verticalBoxPlot\";\nvar VERTICAL_BULLET = \"verticalBullet\";\nvar VERTICAL_LINE = \"verticalLine\";\nvar VERTICAL_RANGE_AREA = \"verticalRangeArea\";\nvar WATERFALL = \"waterfall\";\nvar EQUALLY_SPACED_SERIES = [\n BAR, COLUMN, OHLC, CANDLESTICK, BOX_PLOT, VERTICAL_BOX_PLOT,\n BULLET, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL\n];\n\nvar LEGEND_ITEM_CLICK = \"legendItemClick\";\nvar LEGEND_ITEM_HOVER = \"legendItemHover\";\nvar LEGEND_ITEM_LEAVE = \"legendItemLeave\";\nvar SERIES_CLICK = \"seriesClick\";\nvar SERIES_HOVER = \"seriesHover\";\nvar SERIES_OVER = \"seriesOver\";\nvar SERIES_LEAVE = \"seriesLeave\";\nvar PLOT_AREA_CLICK = \"plotAreaClick\";\nvar PLOT_AREA_HOVER = \"plotAreaHover\";\nvar PLOT_AREA_LEAVE = \"plotAreaLeave\";\nvar DRAG = \"drag\";\nvar DRAG_END = \"dragEnd\";\nvar DRAG_START = \"dragStart\";\nvar ZOOM_START = \"zoomStart\";\nvar ZOOM = \"zoom\";\nvar ZOOM_END = \"zoomEnd\";\nvar SELECT_START = \"selectStart\";\nvar SELECT = \"select\";\nvar SELECT_END = \"selectEnd\";\nvar RENDER = \"render\";\nvar SHOW_TOOLTIP = \"showTooltip\";\nvar HIDE_TOOLTIP = \"hideTooltip\";\nvar PANE_RENDER = \"paneRender\";\n\nvar LOGARITHMIC = \"log\";\nvar CATEGORY = \"category\";\n\nvar INSIDE_END = \"insideEnd\";\nvar INSIDE_BASE = \"insideBase\";\nvar OUTSIDE_END = \"outsideEnd\";\n\nvar MOUSEWHEEL = \"DOMMouseScroll mousewheel\";\nvar MOUSEWHEEL_DELAY = 150;\nvar MOUSEWHEEL_ZOOM_RATE = 0.3;\n\nexport {\n INITIAL_ANIMATION_DURATION, FADEIN,\n LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE,\n SERIES_CLICK, SERIES_HOVER, SERIES_OVER, SERIES_LEAVE, GLASS,\n BORDER_BRIGHTNESS, TOOLTIP_OFFSET,\n START_SCALE, ERROR_LOW_FIELD, ERROR_HIGH_FIELD,\n X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD,\n Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n LINE_MARKER_SIZE, INTERPOLATE, ZERO,\n SMOOTH, STEP, CATEGORY, FUNNEL,\n BAR, CANDLESTICK, PIE, COLUMN, AREA,\n VERTICAL_BULLET, BOX_PLOT, OHLC, WATERFALL, LINE,\n BULLET, VERTICAL_LINE, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA,\n RANGE_COLUMN, VERTICAL_BOX_PLOT, RANGE_BAR, HORIZONTAL_WATERFALL,\n SCATTER, SCATTER_LINE, BUBBLE, RADAR_AREA, RADAR_LINE,\n RADAR_COLUMN, POLAR_LINE, POLAR_AREA, POLAR_SCATTER,\n RENDER, PLOT_AREA_CLICK, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n LOGARITHMIC, DRAG, DRAG_START, DRAG_END, ZOOM_START, ZOOM, ZOOM_END,\n SELECT_START, SELECT, SELECT_END, PANE_RENDER, GAP,\n DONUT, INSIDE_END, INSIDE_BASE, OUTSIDE_END,\n MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE,\n SHOW_TOOLTIP, HIDE_TOOLTIP,\n EQUALLY_SPACED_SERIES, ABOVE, BELOW,\n HEATMAP\n};\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point, Box } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { setDefaultOptions, alignPathToPixel } from '../../common';\n\nvar DEFAULT_ERROR_BAR_WIDTH = 4;\n\nvar ErrorBarBase = (function (ChartElement) {\n function ErrorBarBase(low, high, isVertical, chart, series, options) {\n ChartElement.call(this, options);\n\n this.low = low;\n this.high = high;\n this.isVertical = isVertical;\n this.chart = chart;\n this.series = series;\n }\n\n if ( ChartElement ) ErrorBarBase.__proto__ = ChartElement;\n ErrorBarBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n ErrorBarBase.prototype.constructor = ErrorBarBase;\n\n ErrorBarBase.prototype.reflow = function reflow (targetBox) {\n var endCaps = this.options.endCaps;\n var isVertical = this.isVertical;\n var axis = this.getAxis();\n var valueBox = axis.getSlot(this.low, this.high);\n var centerBox = targetBox.center();\n var capsWidth = this.getCapsWidth(targetBox, isVertical);\n var capValue = isVertical ? centerBox.x : centerBox.y;\n var capStart = capValue - capsWidth;\n var capEnd = capValue + capsWidth;\n var linePoints;\n\n if (isVertical) {\n linePoints = [\n new Point(centerBox.x, valueBox.y1),\n new Point(centerBox.x, valueBox.y2)\n ];\n if (endCaps) {\n linePoints.push(new Point(capStart, valueBox.y1),\n new Point(capEnd, valueBox.y1),\n new Point(capStart, valueBox.y2),\n new Point(capEnd, valueBox.y2));\n }\n this.box = new Box(capStart, valueBox.y1, capEnd, valueBox.y2);\n } else {\n linePoints = [\n new Point(valueBox.x1, centerBox.y),\n new Point(valueBox.x2, centerBox.y)\n ];\n if (endCaps) {\n linePoints.push(new Point(valueBox.x1, capStart),\n new Point(valueBox.x1, capEnd),\n new Point(valueBox.x2, capStart),\n new Point(valueBox.x2, capEnd));\n }\n this.box = new Box(valueBox.x1, capStart, valueBox.x2, capEnd);\n }\n\n this.linePoints = linePoints;\n };\n\n ErrorBarBase.prototype.getCapsWidth = function getCapsWidth (box, isVertical) {\n var boxSize = isVertical ? box.width() : box.height();\n var capsWidth = Math.min(Math.floor(boxSize / 2), DEFAULT_ERROR_BAR_WIDTH) || DEFAULT_ERROR_BAR_WIDTH;\n\n return capsWidth;\n };\n\n ErrorBarBase.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var options = this.options;\n var visual = options.visual;\n\n if (visual) {\n this.visual = visual({\n low: this.low,\n high: this.high,\n rect: this.box.toRect(),\n sender: this.getSender(),\n options: {\n endCaps: options.endCaps,\n color: options.color,\n line: options.line\n },\n createVisual: function () {\n this$1.createDefaultVisual();\n var defaultVisual = this$1.visual;\n delete this$1.visual;\n return defaultVisual;\n }\n });\n } else {\n this.createDefaultVisual();\n }\n };\n\n ErrorBarBase.prototype.createDefaultVisual = function createDefaultVisual () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var linePoints = ref.linePoints;\n var lineOptions = {\n stroke: {\n color: options.color,\n width: options.line.width,\n dashType: options.line.dashType\n }\n };\n\n ChartElement.prototype.createVisual.call(this);\n\n for (var idx = 0; idx < linePoints.length; idx += 2) {\n var line = new draw.Path(lineOptions)\n .moveTo(linePoints[idx].x, linePoints[idx].y)\n .lineTo(linePoints[idx + 1].x, linePoints[idx + 1].y);\n\n alignPathToPixel(line);\n this$1.visual.append(line);\n }\n };\n\n return ErrorBarBase;\n}(ChartElement));\n\nsetDefaultOptions(ErrorBarBase, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n endCaps: true,\n line: {\n width: 2\n },\n zIndex: 1\n});\n\nexport default ErrorBarBase;","import ErrorBarBase from './error-bar-base';\n\nvar CategoricalErrorBar = (function (ErrorBarBase) {\n function CategoricalErrorBar () {\n ErrorBarBase.apply(this, arguments);\n }\n\n if ( ErrorBarBase ) CategoricalErrorBar.__proto__ = ErrorBarBase;\n CategoricalErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n CategoricalErrorBar.prototype.constructor = CategoricalErrorBar;\n\n CategoricalErrorBar.prototype.getAxis = function getAxis () {\n var axis = this.chart.seriesValueAxis(this.series);\n\n return axis;\n };\n\n return CategoricalErrorBar;\n}(ErrorBarBase));\n\nexport default CategoricalErrorBar;","import { inArray, isFunction, isObject, valueOrDefault } from '../../common';\n\nvar MAX_EXPAND_DEPTH = 5;\n\nexport default function evalOptions(options, context, state, dryRun) {\n if ( state === void 0 ) state = {};\n if ( dryRun === void 0 ) dryRun = false;\n\n var defaults = state.defaults = state.defaults || {};\n var depth = state.depth = state.depth || 0;\n var needsEval = false;\n\n state.excluded = state.excluded || [];\n\n if (depth > MAX_EXPAND_DEPTH) {\n return null;\n }\n\n for (var property in options) {\n if (!inArray(property, state.excluded) && options.hasOwnProperty(property)) {\n var propValue = options[property];\n if (isFunction(propValue)) {\n needsEval = true;\n if (!dryRun) {\n options[property] = valueOrDefault(propValue(context), defaults[property]);\n }\n } else if (isObject(propValue)) {\n if (!dryRun) {\n state.defaults = defaults[property];\n }\n state.depth++;\n needsEval = evalOptions(propValue, context, state, dryRun) || needsEval;\n state.depth--;\n }\n }\n }\n\n return needsEval;\n}","export default function categoriesCount(series) {\n var seriesCount = series.length;\n var categories = 0;\n\n for (var i = 0; i < seriesCount; i++) {\n categories = Math.max(categories, series[i].data.length);\n }\n\n return categories;\n}","import ErrorRangeCalculator from './error-bars/error-range-calculator';\nimport CategoricalErrorBar from './error-bars/categorical-error-bar';\n\nimport SeriesBinder from './series-binder';\nimport { ERROR_LOW_FIELD, ERROR_HIGH_FIELD } from './constants';\n\nimport evalOptions from './utils/eval-options';\nimport categoriesCount from './utils/categories-count';\n\nimport { ChartElement, Box } from '../core';\n\nimport { VALUE, STRING, MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { convertableToNumber, deepExtend, defined, isNumber, last, setDefaultOptions, sparseArrayLimits } from '../common';\n\nvar CategoricalChart = (function (ChartElement) {\n function CategoricalChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.categoryAxis = plotArea.seriesCategoryAxis(options.series[0]);\n\n // Value axis ranges grouped by axis name, e.g.:\n // primary: { min: 0, max: 1 }\n this.valueAxisRanges = {};\n\n this.points = [];\n this.categoryPoints = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n\n this.render();\n }\n\n if ( ChartElement ) CategoricalChart.__proto__ = ChartElement;\n CategoricalChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n CategoricalChart.prototype.constructor = CategoricalChart;\n\n CategoricalChart.prototype.render = function render () {\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n CategoricalChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({ }, defaults, {\n vertical: !this.options.invertAxes\n }, series);\n }\n\n return options;\n };\n\n CategoricalChart.prototype.plotValue = function plotValue (point) {\n if (!point) {\n return 0;\n }\n\n if (this.options.isStacked100 && isNumber(point.value)) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n var otherValues = [];\n var categorySum = 0;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n if (other) {\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n\n if ((stack && otherStack) && stack.group !== otherStack.group) {\n continue;\n }\n\n if (isNumber(other.value)) {\n categorySum += Math.abs(other.value);\n otherValues.push(Math.abs(other.value));\n }\n }\n }\n\n if (categorySum > 0) {\n return point.value / categorySum;\n }\n }\n\n return point.value;\n };\n\n CategoricalChart.prototype.plotRange = function plotRange (point, startValue) {\n var this$1 = this;\n if ( startValue === void 0 ) startValue = 0;\n\n var categoryPoints = this.categoryPoints[point.categoryIx];\n\n if (this.options.isStacked) {\n var plotValue = this.plotValue(point);\n var positive = plotValue >= 0;\n var prevValue = startValue;\n var isStackedBar = false;\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n var stack = point.series.stack;\n var otherStack = other.series.stack;\n if (stack && otherStack) {\n if (typeof stack === STRING && stack !== otherStack) {\n continue;\n }\n\n if (stack.group && stack.group !== otherStack.group) {\n continue;\n }\n }\n\n var otherValue = this$1.plotValue(other);\n if ((otherValue >= 0 && positive) ||\n (otherValue < 0 && !positive)) {\n prevValue += otherValue;\n plotValue += otherValue;\n isStackedBar = true;\n\n if (this$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n }\n\n if (isStackedBar) {\n prevValue -= startValue;\n }\n\n return [ prevValue, plotValue ];\n }\n\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, convertableToNumber(point.value) ? point.value : axisCrossingValue ];\n };\n\n CategoricalChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n var this$1 = this;\n\n var min = MAX_VALUE;\n var max = MIN_VALUE;\n\n for (var i = 0; i < this.categoryPoints.length; i++) {\n var categoryPoints = this$1.categoryPoints[i];\n if (!categoryPoints) {\n continue;\n }\n\n for (var pIx = 0; pIx < categoryPoints.length; pIx++) {\n var point = categoryPoints[pIx];\n if (point) {\n if (point.series.stack === stackName || point.series.axis === axisName) {\n var to = this$1.plotRange(point, 0)[1];\n if (defined(to) && isFinite(to)) {\n max = Math.max(max, to);\n min = Math.min(min, to);\n }\n }\n }\n }\n }\n\n return { min: min, max: max };\n };\n\n CategoricalChart.prototype.updateStackRange = function updateStackRange () {\n var this$1 = this;\n\n var ref = this.options;\n var isStacked = ref.isStacked;\n var chartSeries = ref.series;\n var limitsCache = {};\n\n if (isStacked) {\n for (var i = 0; i < chartSeries.length; i++) {\n var series = chartSeries[i];\n var axisName = series.axis;\n var key = axisName + series.stack;\n\n var limits = limitsCache[key];\n if (!limits) {\n limits = this$1.stackLimits(axisName, series.stack);\n\n var errorTotals = this$1.errorTotals;\n if (errorTotals) {\n if (errorTotals.negative.length) {\n limits.min = Math.min(limits.min, sparseArrayLimits(errorTotals.negative).min);\n }\n if (errorTotals.positive.length) {\n limits.max = Math.max(limits.max, sparseArrayLimits(errorTotals.positive).max);\n }\n }\n\n if (limits.min !== MAX_VALUE || limits.max !== MIN_VALUE) {\n limitsCache[key] = limits;\n } else {\n limits = null;\n }\n }\n\n if (limits) {\n this$1.valueAxisRanges[axisName] = limits;\n }\n }\n }\n };\n\n CategoricalChart.prototype.addErrorBar = function addErrorBar (point, data, categoryIx) {\n var value = point.value;\n var series = point.series;\n var seriesIx = point.seriesIx;\n var errorBars = point.options.errorBars;\n var lowValue = data.fields[ERROR_LOW_FIELD];\n var highValue = data.fields[ERROR_HIGH_FIELD];\n var errorRange;\n\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n } else if (errorBars && defined(errorBars.value)) {\n this.seriesErrorRanges = this.seriesErrorRanges || [];\n this.seriesErrorRanges[seriesIx] = this.seriesErrorRanges[seriesIx] ||\n new ErrorRangeCalculator(errorBars.value, series, VALUE);\n\n errorRange = this.seriesErrorRanges[seriesIx].getErrorRange(value, errorBars.value);\n }\n\n if (errorRange) {\n point.low = errorRange.low;\n point.high = errorRange.high;\n this.addPointErrorBar(point, categoryIx);\n }\n };\n\n CategoricalChart.prototype.addPointErrorBar = function addPointErrorBar (point, categoryIx) {\n var isVertical = !this.options.invertAxes;\n var options = point.options.errorBars;\n var series = point.series;\n var low = point.low;\n var high = point.high;\n\n if (this.options.isStacked) {\n var stackedErrorRange = this.stackedErrorRange(point, categoryIx);\n low = stackedErrorRange.low;\n high = stackedErrorRange.high;\n } else {\n var fields = { categoryIx: categoryIx, series: series };\n this.updateRange({ value: low }, fields);\n this.updateRange({ value: high }, fields);\n }\n\n var errorBar = new CategoricalErrorBar(low, high, isVertical, this, series, options);\n point.errorBars = [ errorBar ];\n point.append(errorBar);\n };\n\n CategoricalChart.prototype.stackedErrorRange = function stackedErrorRange (point, categoryIx) {\n var plotValue = this.plotRange(point, 0)[1] - point.value;\n var low = point.low + plotValue;\n var high = point.high + plotValue;\n\n this.errorTotals = this.errorTotals || { positive: [], negative: [] };\n\n if (low < 0) {\n this.errorTotals.negative[categoryIx] = Math.min(this.errorTotals.negative[categoryIx] || 0, low);\n }\n\n if (high > 0) {\n this.errorTotals.positive[categoryIx] = Math.max(this.errorTotals.positive[categoryIx] || 0, high);\n }\n\n return { low: low, high: high };\n };\n\n CategoricalChart.prototype.addValue = function addValue (data, fields) {\n var categoryIx = fields.categoryIx;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n\n var categoryPoints = this.categoryPoints[categoryIx];\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n var seriesPoints = this.seriesPoints[seriesIx];\n if (!seriesPoints) {\n this.seriesPoints[seriesIx] = seriesPoints = [];\n }\n\n var point = this.createPoint(data, fields);\n if (point) {\n Object.assign(point, fields);\n\n point.owner = this;\n point.noteText = data.fields.noteText;\n if (!defined(point.dataItem)) {\n point.dataItem = series.data[categoryIx];\n }\n this.addErrorBar(point, data, categoryIx);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n categoryPoints.push(point);\n\n this.updateRange(data.valueFields, fields);\n };\n\n CategoricalChart.prototype.evalPointOptions = function evalPointOptions (options, value, category, categoryIx, series, seriesIx) {\n var state = { defaults: series._defaults, excluded: [ \"data\", \"aggregate\", \"_events\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, pointOptions);\n evalOptions(pointOptions, {\n value: value,\n category: category,\n index: categoryIx,\n series: series,\n dataItem: series.data[categoryIx]\n }, state);\n }\n\n return pointOptions;\n };\n\n CategoricalChart.prototype.updateRange = function updateRange (data, fields) {\n var axisName = fields.series.axis;\n var value = data.value;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (isFinite(value) && value !== null) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, value);\n axisRange.max = Math.max(axisRange.max, value);\n }\n };\n\n CategoricalChart.prototype.seriesValueAxis = function seriesValueAxis (series) {\n var plotArea = this.plotArea;\n var axisName = series.axis;\n var axis = axisName ? plotArea.namedValueAxes[axisName] : plotArea.valueAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate value axis with name \" + axisName);\n }\n\n return axis;\n };\n\n CategoricalChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var categorySlots = this.categorySlots = [];\n var chartPoints = this.points;\n var categoryAxis = this.categoryAxis;\n var pointIx = 0;\n\n this.traverseDataPoints(function (data, fields) {\n var categoryIx = fields.categoryIx;\n var currentSeries = fields.series;\n\n var valueAxis = this$1.seriesValueAxis(currentSeries);\n var point = chartPoints[pointIx++];\n\n var categorySlot = categorySlots[categoryIx];\n if (!categorySlot) {\n categorySlots[categoryIx] = categorySlot =\n this$1.categorySlot(categoryAxis, categoryIx, valueAxis);\n }\n\n if (point) {\n var plotRange = this$1.plotRange(point, valueAxis.startValue());\n var valueSlot = this$1.valueSlot(valueAxis, plotRange);\n if (valueSlot) {\n var pointSlot = this$1.pointSlot(categorySlot, valueSlot);\n\n point.aboveAxis = this$1.aboveAxis(point, valueAxis);\n point.stackValue = plotRange[1];\n\n if (this$1.options.isStacked100) {\n point.percentage = this$1.plotValue(point);\n }\n\n this$1.reflowPoint(point, pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.reflowCategories(categorySlots);\n if (!this.options.clip && this.options.limitPoints && this.points.length) {\n this.limitPoints();\n }\n\n this.box = targetBox;\n };\n\n CategoricalChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n return valueAxis.getSlot(plotRange[0], plotRange[1], !this.options.clip);\n };\n\n CategoricalChart.prototype.limitPoints = function limitPoints () {\n var this$1 = this;\n\n var categoryPoints = this.categoryPoints;\n var points = categoryPoints[0].concat(last(categoryPoints));\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx]) {\n this$1.limitPoint(points[idx]);\n }\n }\n };\n\n CategoricalChart.prototype.limitPoint = function limitPoint (point) {\n var limittedSlot = this.categoryAxis.limitSlot(point.box);\n if (!limittedSlot.equals(point.box)) {\n point.reflow(limittedSlot);\n }\n };\n\n CategoricalChart.prototype.aboveAxis = function aboveAxis (point, valueAxis) {\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n var value = point.value;\n\n return valueAxis.options.reverse ?\n value < axisCrossingValue : value >= axisCrossingValue;\n };\n\n CategoricalChart.prototype.categoryAxisCrossingValue = function categoryAxisCrossingValue (valueAxis) {\n var categoryAxis = this.categoryAxis;\n var options = valueAxis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n\n return crossingValues[categoryAxis.axisIndex || 0] || 0;\n };\n\n CategoricalChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n point.reflow(pointSlot);\n };\n\n CategoricalChart.prototype.reflowCategories = function reflowCategories () { };\n\n CategoricalChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var options = this.options;\n var invertAxes = options.invertAxes;\n var slotX = invertAxes ? valueSlot : categorySlot;\n var slotY = invertAxes ? categorySlot : valueSlot;\n\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n };\n\n CategoricalChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n };\n\n CategoricalChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var series = this.options.series;\n var count = categoriesCount(series);\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n this$1._outOfRangeCallback(series[seriesIx], \"_outOfRangeMinPoint\", seriesIx, callback);\n }\n\n for (var categoryIx = 0; categoryIx < count; categoryIx++) {\n for (var seriesIx$1 = 0; seriesIx$1 < seriesCount; seriesIx$1++) {\n var currentSeries = series[seriesIx$1];\n var currentCategory = this$1.categoryAxis.categoryAt(categoryIx);\n var pointData = this$1._bindPoint(currentSeries, seriesIx$1, categoryIx);\n\n callback(pointData, {\n category: currentCategory,\n categoryIx: categoryIx,\n categoriesCount: count,\n series: currentSeries,\n seriesIx: seriesIx$1\n });\n }\n }\n\n for (var seriesIx$2 = 0; seriesIx$2 < seriesCount; seriesIx$2++) {\n this$1._outOfRangeCallback(series[seriesIx$2], \"_outOfRangeMaxPoint\", seriesIx$2, callback);\n }\n };\n\n CategoricalChart.prototype._outOfRangeCallback = function _outOfRangeCallback (series, field, seriesIx, callback) {\n var outOfRangePoint = series[field];\n if (outOfRangePoint) {\n var categoryIx = outOfRangePoint.categoryIx;\n var pointData = this._bindPoint(series, seriesIx, categoryIx, outOfRangePoint.item);\n\n callback(pointData, {\n category: outOfRangePoint.category,\n categoryIx: categoryIx,\n series: series,\n seriesIx: seriesIx,\n dataItem: outOfRangePoint.item\n });\n }\n };\n\n CategoricalChart.prototype._bindPoint = function _bindPoint (series, seriesIx, categoryIx, item) {\n if (!this._bindCache) {\n this._bindCache = [];\n }\n\n var bindCache = this._bindCache[seriesIx];\n if (!bindCache) {\n bindCache = this._bindCache[seriesIx] = [];\n }\n\n var data = bindCache[categoryIx];\n if (!data) {\n data = bindCache[categoryIx] = SeriesBinder.current.bindPoint(series, categoryIx, item);\n }\n\n return data;\n };\n\n CategoricalChart.prototype.formatPointValue = function formatPointValue (point, format) {\n if (point.value === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value);\n };\n\n CategoricalChart.prototype.pointValue = function pointValue (data) {\n return data.valueFields.value;\n };\n\n return CategoricalChart;\n}(ChartElement));\n\nsetDefaultOptions(CategoricalChart, {\n series: [],\n invertAxes: false,\n isStacked: false,\n clip: true,\n limitPoints: true\n});\n\nexport default CategoricalChart;\n","import { SERIES_CLICK, SERIES_HOVER, SERIES_LEAVE, SERIES_OVER } from '../constants';\nimport { eventElement } from '../../common';\n\nvar PointEventsMixin = {\n click: function(chart, e) {\n return chart.trigger(\n SERIES_CLICK,\n this.eventArgs(e)\n );\n },\n\n hover: function(chart, e) {\n return chart.trigger(\n SERIES_HOVER,\n this.eventArgs(e)\n );\n },\n\n over: function(chart, e) {\n return chart.trigger(\n SERIES_OVER,\n this.eventArgs(e)\n );\n },\n\n out: function(chart, e) {\n return chart.trigger(\n SERIES_LEAVE,\n this.eventArgs(e)\n );\n },\n\n eventArgs: function(e) {\n return {\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n category: this.category,\n series: this.series,\n dataItem: this.dataItem,\n runningTotal: this.runningTotal,\n total: this.total,\n element: eventElement(e),\n originalEvent: e,\n point: this\n };\n }\n};\n\nexport default PointEventsMixin;","import { Note } from '../../core';\nimport { defined } from '../../common';\n\nvar NoteMixin = {\n createNote: function() {\n var options = this.options.notes;\n var text = this.noteText || options.label.text;\n\n if (options.visible !== false && defined(text) && text !== null) {\n this.note = new Note({\n value: this.value,\n text: text,\n dataItem: this.dataItem,\n category: this.category,\n series: this.series\n }, this.options.notes, this.owner.chartService);\n\n this.append(this.note);\n }\n }\n};\n\nexport default NoteMixin;","import { geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox, ShapeElement, Box, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, BORDER_BRIGHTNESS, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\n\nimport { WHITE, CIRCLE, CENTER, TOP, BOTTOM, LEFT, HIGHLIGHT_ZINDEX } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, valueOrDefault, getSpacing } from '../../common';\n\nvar LinePoint = (function (ChartElement) {\n function LinePoint(value, options) {\n ChartElement.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n }\n\n if ( ChartElement ) LinePoint.__proto__ = ChartElement;\n LinePoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n LinePoint.prototype.constructor = LinePoint;\n\n LinePoint.prototype.render = function render () {\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n if (markers.visible && markers.size) {\n this.marker = this.createMarker();\n this.append(this.marker);\n }\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n var labelText = this.value;\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = this.formatValue(labels.format);\n }\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n }, labels),\n pointData\n );\n this.append(this.label);\n }\n\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n };\n\n LinePoint.prototype.markerBorder = function markerBorder () {\n var options = this.options.markers;\n var background = options.background;\n var border = deepExtend({ color: this.color }, options.border);\n\n if (!defined(border.color)) {\n border.color = new Color(background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n\n return border;\n };\n\n LinePoint.prototype.createVisual = function createVisual () {};\n\n LinePoint.prototype.createMarker = function createMarker () {\n var options = this.options.markers;\n var marker = new ShapeElement({\n type: options.type,\n width: options.size,\n height: options.size,\n rotation: options.rotation,\n background: options.background,\n border: this.markerBorder(),\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n return marker;\n };\n\n LinePoint.prototype.markerBox = function markerBox () {\n if (!this.marker) {\n this.marker = this.createMarker();\n this.marker.reflow(this._childBox);\n }\n\n return this.marker.box;\n };\n\n LinePoint.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var aboveAxis = ref.aboveAxis;\n var vertical = options.vertical;\n\n this.render();\n\n this.box = targetBox;\n var childBox = targetBox.clone();\n\n if (vertical) {\n if (aboveAxis) {\n childBox.y1 -= childBox.height();\n } else {\n childBox.y2 += childBox.height();\n }\n } else {\n if (aboveAxis) {\n childBox.x1 += childBox.width();\n } else {\n childBox.x2 -= childBox.width();\n }\n }\n\n this._childBox = childBox;\n if (this.marker) {\n this.marker.reflow(childBox);\n }\n\n this.reflowLabel(childBox);\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1.errorBars[i].reflow(childBox);\n }\n }\n\n if (this.note) {\n var noteTargetBox = this.markerBox();\n\n if (!(options.markers.visible && options.markers.size)) {\n var center = noteTargetBox.center();\n noteTargetBox = new Box(center.x, center.y, center.x, center.y);\n }\n\n this.note.reflow(noteTargetBox);\n }\n };\n\n LinePoint.prototype.reflowLabel = function reflowLabel (box) {\n var ref = this;\n var options = ref.options;\n var label = ref.label;\n var anchor = options.labels.position;\n\n if (label) {\n anchor = anchor === ABOVE ? TOP : anchor;\n anchor = anchor === BELOW ? BOTTOM : anchor;\n\n label.reflow(box);\n label.box.alignTo(this.markerBox(), anchor);\n label.reflow(label.box);\n }\n };\n\n LinePoint.prototype.createHighlight = function createHighlight () {\n var markers = this.options.highlight.markers;\n var defaultColor = this.markerBorder().color;\n var options = this.options.markers;\n var size = options.size + (options.border.width || 0) + (markers.border.width || 0);\n\n var shadow = new ShapeElement({\n type: options.type,\n width: size,\n height: size,\n rotation: options.rotation,\n background: markers.color || defaultColor,\n border: {\n color: markers.border.color,\n width: markers.border.width,\n opacity: valueOrDefault(markers.border.opacity, 1)\n },\n opacity: valueOrDefault(markers.opacity, 1)\n });\n shadow.reflow(this._childBox);\n\n return shadow.getElement();\n };\n\n LinePoint.prototype.highlightVisual = function highlightVisual () {\n return (this.marker || {}).visual;\n };\n\n LinePoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n var marker = this.marker;\n var visual, rect;\n\n if (marker) {\n rect = marker.paddingBox.toRect();\n visual = marker.visual;\n } else {\n var size = this.options.markers.size;\n var halfSize = size / 2;\n var center = this.box.center();\n rect = new geom.Rect([ center.x - halfSize, center.y - halfSize ], [ size, size ]);\n }\n\n return {\n options: this.options,\n rect: rect,\n visual: visual\n };\n };\n\n LinePoint.prototype.tooltipAnchor = function tooltipAnchor () {\n var markerBox = this.markerBox();\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(markerBox);\n\n if (showTooltip) {\n var x = markerBox.x2 + TOOLTIP_OFFSET;\n var horizontalAlign = LEFT;\n var y, verticalAlign;\n\n if (this.aboveAxis) {\n y = markerBox.y1;\n verticalAlign = BOTTOM;\n } else {\n y = markerBox.y2;\n verticalAlign = TOP;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n };\n\n LinePoint.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n LinePoint.prototype.overlapsBox = function overlapsBox (box) {\n var markerBox = this.markerBox();\n return markerBox.overlaps(box);\n };\n\n LinePoint.prototype.unclipElements = function unclipElements () {\n if (this.label) {\n this.label.options.noclip = true;\n }\n\n if (this.note) {\n this.note.options.noclip = true;\n }\n };\n\n LinePoint.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n series: this.series\n };\n };\n\n return LinePoint;\n}(ChartElement));\n\nLinePoint.prototype.defaults = {\n vertical: true,\n markers: {\n visible: true,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n position: ABOVE,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: \"#fff\",\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n errorBars: {\n line: {\n width: 1\n }\n }\n};\n\ndeepExtend(LinePoint.prototype, PointEventsMixin);\ndeepExtend(LinePoint.prototype, NoteMixin);\n\nexport default LinePoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar LineSegment = (function (ChartElement) {\n function LineSegment(linePoints, series, seriesIx) {\n ChartElement.call(this);\n\n this.linePoints = linePoints;\n this.series = series;\n this.seriesIx = seriesIx;\n }\n\n if ( ChartElement ) LineSegment.__proto__ = ChartElement;\n LineSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n LineSegment.prototype.constructor = LineSegment;\n\n LineSegment.prototype.points = function points () {\n return this.toGeometryPoints(this.linePoints);\n };\n\n LineSegment.prototype.toGeometryPoints = function toGeometryPoints (points) {\n var result = [];\n for (var i = 0, length = points.length; i < length; i++) {\n if (points[i] && points[i].visible !== false) {\n result.push(points[i]._childBox.toRect().center());\n }\n }\n\n return result;\n };\n\n LineSegment.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var customVisual = this.series.visual;\n if (customVisual) {\n this.visual = customVisual({\n points: this.toGeometryPoints(this.linePoints),\n series: this.series,\n sender: this.getSender(),\n createVisual: function () {\n this$1.segmentVisual();\n\n return this$1.visual;\n }\n });\n if (this.visual && !defined(this.visual.options.zIndex)) {\n this.visual.options.zIndex = this.series.zIndex;\n }\n } else {\n this.segmentVisual();\n }\n };\n\n LineSegment.prototype.segmentVisual = function segmentVisual () {\n var ref = this;\n var options = ref.options;\n var series = ref.series;\n var color = series.color;\n var defaults = series._defaults;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var line = draw.Path.fromPoints(this.points(), {\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n if (options.closed) {\n line.close();\n }\n\n this.visual = line;\n };\n\n LineSegment.prototype.aliasFor = function aliasFor (e, coords) {\n return this.parent.getNearestPoint(coords.x, coords.y, this.seriesIx);\n };\n\n return LineSegment;\n}(ChartElement));\n\nsetDefaultOptions(LineSegment, {\n closed: false\n});\n\nexport default LineSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { last } from '../../common';\nimport { X, Y } from '../../common/constants';\n\nvar StepLineMixin = {\n calculateStepPoints: function(points) {\n var categoryAxis = this.parent.plotArea.seriesCategoryAxis(this.series);\n var ref = categoryAxis.options;\n var justified = ref.justified;\n var vertical = ref.vertical;\n var reverse = ref.reverse;\n\n var stepAxis = vertical ? X : Y;\n var axis = vertical ? Y : X;\n var stepDir = reverse ? 2 : 1;\n var dir = stepDir;\n\n var previousPoint = toGeometryPoint(points[0], stepAxis, stepDir, axis, dir);\n var result = [ previousPoint ];\n\n for (var idx = 1; idx < points.length; idx++) {\n var point = toGeometryPoint(points[idx], stepAxis, stepDir, axis, dir);\n\n if (previousPoint[stepAxis] !== point[stepAxis]) {\n var stepPoint = new geom.Point();\n stepPoint[stepAxis] = previousPoint[stepAxis];\n stepPoint[axis] = point[axis];\n\n result.push(stepPoint, point);\n }\n\n previousPoint = point;\n }\n\n if (!justified) {\n result.push(toGeometryPoint(last(points), stepAxis, stepDir, axis, reverse ? 1 : 2));\n } else if (previousPoint !== last(result)) {\n result.push(previousPoint);\n }\n\n return result;\n\n }\n};\n\nfunction toGeometryPoint(lintPoint, stepAxis, stepDir, axis, dir) {\n var box = lintPoint.box;\n var result = new geom.Point();\n\n result[stepAxis] = box[stepAxis + stepDir];\n result[axis] = box[axis + dir];\n\n return result;\n}\n\nexport default StepLineMixin;","import LineSegment from './line-segment';\nimport StepLineMixin from './step-line-mixin';\nimport { deepExtend } from '../../common';\n\nvar StepLineSegment = (function (LineSegment) {\n function StepLineSegment () {\n LineSegment.apply(this, arguments);\n }\n\n if ( LineSegment ) StepLineSegment.__proto__ = LineSegment;\n StepLineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n StepLineSegment.prototype.constructor = StepLineSegment;\n\n StepLineSegment.prototype.points = function points () {\n return this.calculateStepPoints(this.linePoints);\n };\n\n return StepLineSegment;\n}(LineSegment));\n\ndeepExtend(StepLineSegment.prototype, StepLineMixin);\n\nexport default StepLineSegment;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport LineSegment from './line-segment';\n\nimport { CurveProcessor } from '../../core';\n\nimport { isFunction } from '../../common';\n\nvar SplineSegment = (function (LineSegment) {\n function SplineSegment () {\n LineSegment.apply(this, arguments);\n }\n\n if ( LineSegment ) SplineSegment.__proto__ = LineSegment;\n SplineSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n SplineSegment.prototype.constructor = SplineSegment;\n\n SplineSegment.prototype.segmentVisual = function segmentVisual () {\n var series = this.series;\n var defaults = series._defaults;\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var curveProcessor = new CurveProcessor(this.options.closed);\n var segments = curveProcessor.process(this.points());\n var curve = new draw.Path({\n stroke: {\n color: color,\n width: series.width,\n opacity: series.opacity,\n dashType: series.dashType\n },\n zIndex: series.zIndex\n });\n\n curve.segments.push.apply(curve.segments, segments);\n\n this.visual = curve;\n };\n\n return SplineSegment;\n}(LineSegment));\n\nexport default SplineSegment;","import { ZERO, INTERPOLATE } from '../constants';\n\nimport { Point } from '../../core';\nimport { MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar LineChartMixin = {\n renderSegments: function() {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesPoints = ref.seriesPoints;\n var series = options.series;\n var seriesCount = seriesPoints.length;\n var lastSegment;\n\n this._segments = [];\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var sortedPoints = this$1.sortPoints(seriesPoints[seriesIx]);\n var pointCount = sortedPoints.length;\n var linePoints = [];\n\n for (var pointIx = 0; pointIx < pointCount; pointIx++) {\n var point = sortedPoints[pointIx];\n if (point) {\n linePoints.push(point);\n } else if (this$1.seriesMissingValues(currentSeries) !== INTERPOLATE) {\n if (linePoints.length > 1) {\n lastSegment = this$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1._addSegment(lastSegment);\n }\n linePoints = [];\n }\n }\n\n if (linePoints.length > 1) {\n lastSegment = this$1.createSegment(\n linePoints, currentSeries, seriesIx, lastSegment\n );\n this$1._addSegment(lastSegment);\n }\n }\n\n this.children.unshift.apply(this.children, this._segments);\n },\n\n _addSegment: function(segment) {\n this._segments.push(segment);\n segment.parent = this;\n },\n\n sortPoints: function(points) {\n return points;\n },\n\n seriesMissingValues: function(series) {\n var missingValues = series.missingValues;\n var assumeZero = !missingValues && this.options.isStacked;\n\n return assumeZero ? ZERO : missingValues || INTERPOLATE;\n },\n\n getNearestPoint: function(x, y, seriesIx) {\n var target = new Point(x, y);\n var allPoints = this.seriesPoints[seriesIx];\n var nearestPointDistance = MAX_VALUE;\n var nearestPoint;\n\n for (var i = 0; i < allPoints.length; i++) {\n var point = allPoints[i];\n\n if (point && defined(point.value) && point.value !== null && point.visible !== false) {\n var pointBox = point.box;\n var pointDistance = pointBox.center().distanceTo(target);\n\n if (pointDistance < nearestPointDistance) {\n nearestPoint = point;\n nearestPointDistance = pointDistance;\n }\n }\n }\n\n return nearestPoint;\n }\n};\n\nexport default LineChartMixin;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar ClipAnimation = (function (superclass) {\n function ClipAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) ClipAnimation.__proto__ = superclass;\n ClipAnimation.prototype = Object.create( superclass && superclass.prototype );\n ClipAnimation.prototype.constructor = ClipAnimation;\n\n ClipAnimation.prototype.setup = function setup () {\n this._setEnd(this.options.box.x1);\n };\n\n ClipAnimation.prototype.step = function step (pos) {\n var box = this.options.box;\n this._setEnd(interpolateValue(box.x1, box.x2, pos));\n };\n\n ClipAnimation.prototype._setEnd = function _setEnd (x) {\n var element = this.element;\n var segments = element.segments;\n var topRight = segments[1].anchor();\n var bottomRight = segments[2].anchor();\n\n element.suspend();\n topRight.setX(x);\n element.resume();\n bottomRight.setX(x);\n };\n\n return ClipAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(ClipAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(\"clip\", ClipAnimation);\n\nexport default ClipAnimation;","import { defined } from '../../common';\n\nexport default function anyHasZIndex(elements) {\n for (var idx = 0; idx < elements.length; idx++) {\n if (defined(elements[idx].zIndex)) {\n return true;\n }\n }\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport ClipAnimation from '../animations/clip-animation';\nimport anyHasZIndex from '../utils/any-has-z-index';\nimport { defined } from '../../common';\n\nvar ClipAnimationMixin = {\n createAnimation: function() {\n var root = this.getRoot();\n if (root && (root.options || {}).transitions !== false) {\n var box = root.size();\n var clipPath = draw.Path.fromRect(box.toRect());\n this.visual.clip(clipPath);\n this.animation = new ClipAnimation(clipPath, {\n box: box\n });\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation(clipPath);\n }\n }\n },\n\n _setChildrenAnimation: function(clipPath) {\n var points = this.animationPoints();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point && point.visual && defined(point.visual.options.zIndex)) {\n point.visual.clip(clipPath);\n }\n }\n }\n};\n\nexport default ClipAnimationMixin;","import CategoricalChart from '../categorical-chart';\nimport LinePoint from './line-point';\nimport LineSegment from './line-segment';\nimport StepLineSegment from './step-line-segment';\nimport SplineSegment from './spline-segment';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\n\nimport { ZERO, SMOOTH, STEP } from '../constants';\n\nimport { deepExtend, defined, isFunction } from '../../common';\n\nvar LineChart = (function (CategoricalChart) {\n function LineChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) LineChart.__proto__ = CategoricalChart;\n LineChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n LineChart.prototype.constructor = LineChart;\n\n LineChart.prototype.render = function render () {\n\n CategoricalChart.prototype.render.call(this);\n\n this.updateStackRange();\n this.renderSegments();\n };\n\n LineChart.prototype.pointType = function pointType () {\n return LinePoint;\n };\n\n LineChart.prototype.createPoint = function createPoint (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var missingValues = this.seriesMissingValues(series);\n var value = data.valueFields.value;\n\n if (!defined(value) || value === null) {\n if (missingValues === ZERO) {\n value = 0;\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n LineChart.prototype.plotRange = function plotRange (point) {\n var this$1 = this;\n\n var plotValue = this.plotValue(point);\n\n if (this.options.isStacked) {\n var categoryIx = point.categoryIx;\n var categoryPoints = this.categoryPoints[categoryIx];\n\n for (var i = 0; i < categoryPoints.length; i++) {\n var other = categoryPoints[i];\n\n if (point === other) {\n break;\n }\n\n plotValue += this$1.plotValue(other);\n\n if (this$1.options.isStacked100) {\n plotValue = Math.min(plotValue, 1);\n }\n }\n\n }\n\n return [ plotValue, plotValue ];\n };\n\n LineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === STEP) {\n pointType = StepLineSegment;\n } else if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n };\n\n LineChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result.concat(this._segments);\n };\n\n LineChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return false;\n };\n\n return LineChart;\n}(CategoricalChart));\n\ndeepExtend(LineChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default LineChart;\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { append, deepExtend, isFunction, last } from '../../common';\n\nvar AreaSegment = (function (LineSegment) {\n function AreaSegment(linePoints, currentSeries, seriesIx, prevSegment, stackPoints) {\n LineSegment.call(this, linePoints, currentSeries, seriesIx);\n\n this.prevSegment = prevSegment;\n this.stackPoints = stackPoints;\n }\n\n if ( LineSegment ) AreaSegment.__proto__ = LineSegment;\n AreaSegment.prototype = Object.create( LineSegment && LineSegment.prototype );\n AreaSegment.prototype.constructor = AreaSegment;\n\n AreaSegment.prototype.createVisual = function createVisual () {\n var series = this.series;\n var defaults = series._defaults;\n var lineOptions = series.line || {};\n var color = series.color;\n\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n this.visual = new draw.Group({\n zIndex: series.zIndex\n });\n\n this.createFill({\n fill: {\n color: color,\n opacity: series.opacity\n },\n stroke: null\n });\n\n if (lineOptions.width > 0 && lineOptions.visible !== false) {\n this.createStroke({\n stroke: deepExtend({\n color: color,\n opacity: series.opacity,\n lineCap: \"butt\"\n }, lineOptions)\n });\n }\n };\n\n AreaSegment.prototype.strokeSegments = function strokeSegments () {\n var segments = this._strokeSegments;\n\n if (!segments) {\n segments = this._strokeSegments = this.createStrokeSegments();\n }\n\n return segments;\n };\n\n AreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.points());\n };\n\n AreaSegment.prototype.stackSegments = function stackSegments () {\n if (this.prevSegment) {\n return this.prevSegment.createStackSegments(this.stackPoints);\n }\n\n return this.createStackSegments(this.stackPoints);\n };\n\n AreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n return this.segmentsFromPoints(this.toGeometryPoints(stackPoints)).reverse();\n };\n\n AreaSegment.prototype.segmentsFromPoints = function segmentsFromPoints (points) {\n return points.map(function (point) { return new geom.Segment(point); });\n };\n\n AreaSegment.prototype.createStroke = function createStroke (style) {\n var stroke = new draw.Path(style);\n stroke.segments.push.apply(stroke.segments, this.strokeSegments());\n\n this.visual.append(stroke);\n };\n\n AreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n return this.prevSegment || (this.stackPoints && this.stackPoints.length);\n };\n\n AreaSegment.prototype.createFill = function createFill (style) {\n var strokeSegments = this.strokeSegments();\n var fillSegments = strokeSegments.slice(0);\n var hasStackSegments = this.hasStackSegment();\n\n if (hasStackSegments) {\n var stackSegments = this.stackSegments();\n\n append(fillSegments, stackSegments);\n }\n\n var fill = new draw.Path(style);\n fill.segments.push.apply(fill.segments, fillSegments);\n\n if (!hasStackSegments && strokeSegments.length > 1) {\n this.fillToAxes(fill);\n }\n\n this.visual.append(fill);\n };\n\n AreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n var chart = this.parent;\n var invertAxes = chart.options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.series);\n var crossingValue = chart.categoryAxisCrossingValue(valueAxis);\n var endSlot = valueAxis.getSlot(crossingValue, crossingValue, true);\n var segments = this.strokeSegments();\n var firstPoint = segments[0].anchor();\n var lastPoint = last(segments).anchor();\n var end = invertAxes ? endSlot.x1 : endSlot.y1;\n\n if (invertAxes) {\n fillPath.lineTo(end, lastPoint.y)\n .lineTo(end, firstPoint.y);\n } else {\n fillPath.lineTo(lastPoint.x, end)\n .lineTo(firstPoint.x, end);\n }\n };\n\n return AreaSegment;\n}(LineSegment));\n\nexport default AreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport AreaSegment from './area-segment';\n\nimport { deepExtend } from '../../common';\n\nvar StepAreaSegment = (function (AreaSegment) {\n function StepAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) StepAreaSegment.__proto__ = AreaSegment;\n StepAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n StepAreaSegment.prototype.constructor = StepAreaSegment;\n\n StepAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.calculateStepPoints(this.linePoints));\n };\n\n StepAreaSegment.prototype.createStackSegments = function createStackSegments (stackPoints) {\n return this.segmentsFromPoints(this.calculateStepPoints(stackPoints)).reverse();\n };\n\n return StepAreaSegment;\n}(AreaSegment));\n\ndeepExtend(StepAreaSegment.prototype, StepLineMixin);\n\nexport default StepAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport { CurveProcessor } from '../../core';\n\nimport AreaSegment from './area-segment';\n\nvar SplineAreaSegment = (function (AreaSegment) {\n function SplineAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) SplineAreaSegment.__proto__ = AreaSegment;\n SplineAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n SplineAreaSegment.prototype.constructor = SplineAreaSegment;\n\n SplineAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n var curveProcessor = new CurveProcessor(this.options.closed);\n var linePoints = this.points();\n\n return curveProcessor.process(linePoints);\n };\n\n SplineAreaSegment.prototype.createStackSegments = function createStackSegments () {\n var strokeSegments = this.strokeSegments();\n var stackSegments = [];\n for (var idx = strokeSegments.length - 1; idx >= 0; idx--) {\n var segment = strokeSegments[idx];\n stackSegments.push(new geom.Segment(\n segment.anchor(),\n segment.controlOut(),\n segment.controlIn()\n ));\n }\n\n return stackSegments;\n };\n\n return SplineAreaSegment;\n}(AreaSegment));\n\nexport default SplineAreaSegment;","import LineChart from '../line-chart/line-chart';\nimport LinePoint from '../line-chart/line-point';\n\nimport AreaSegment from './area-segment';\nimport StepAreaSegment from './step-area-segment';\nimport SplineAreaSegment from './spline-area-segment';\n\nimport { STEP, SMOOTH, ZERO } from '../constants';\n\nvar AreaChart = (function (LineChart) {\n function AreaChart () {\n LineChart.apply(this, arguments);\n }\n\n if ( LineChart ) AreaChart.__proto__ = LineChart;\n AreaChart.prototype = Object.create( LineChart && LineChart.prototype );\n AreaChart.prototype.constructor = AreaChart;\n\n AreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n\n var stackPoints;\n if (isStacked && seriesIx > 0 && prevSegment) {\n var missingValues = this.seriesMissingValues(currentSeries);\n if (missingValues !== \"gap\") {\n stackPoints = prevSegment.linePoints;\n previousSegment = prevSegment;\n } else {\n stackPoints = this._gapStackPoints(linePoints, seriesIx, style);\n }\n }\n\n var pointType;\n if (style === STEP) {\n pointType = StepAreaSegment;\n } else if (style === SMOOTH) {\n pointType = SplineAreaSegment;\n } else {\n pointType = AreaSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n };\n\n AreaChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n LineChart.prototype.reflow.call(this, targetBox);\n\n var stackPoints = this._stackPoints;\n if (stackPoints) {\n for (var idx = 0; idx < stackPoints.length; idx++) {\n var stackPoint = stackPoints[idx];\n var pointSlot = this$1.categoryAxis.getSlot(stackPoint.categoryIx);\n stackPoint.reflow(pointSlot);\n }\n }\n };\n\n AreaChart.prototype._gapStackPoints = function _gapStackPoints (linePoints, seriesIx, style) {\n var this$1 = this;\n\n var seriesPoints = this.seriesPoints;\n var startIdx = linePoints[0].categoryIx;\n var length = linePoints.length;\n if (startIdx < 0) {\n startIdx = 0;\n length--;\n }\n\n var endIdx = startIdx + length;\n var pointOffset = this.seriesOptions[0]._outOfRangeMinPoint ? 1 : 0;\n var stackPoints = [];\n\n this._stackPoints = this._stackPoints || [];\n for (var categoryIx = startIdx; categoryIx < endIdx; categoryIx++) {\n var pointIx = categoryIx + pointOffset;\n var currentSeriesIx = seriesIx;\n var point = (void 0);\n\n do {\n currentSeriesIx--;\n point = seriesPoints[currentSeriesIx][pointIx];\n } while (currentSeriesIx > 0 && !point);\n\n if (point) {\n if (style !== STEP && categoryIx > startIdx && !seriesPoints[currentSeriesIx][pointIx - 1]) {\n stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx - 1, currentSeriesIx));\n }\n\n stackPoints.push(point);\n\n if (style !== STEP && categoryIx + 1 < endIdx && !seriesPoints[currentSeriesIx][pointIx + 1]) {\n stackPoints.push(this$1._previousSegmentPoint(categoryIx, pointIx, pointIx + 1, currentSeriesIx));\n }\n } else {\n var gapStackPoint = this$1._createGapStackPoint(categoryIx);\n this$1._stackPoints.push(gapStackPoint);\n stackPoints.push(gapStackPoint);\n }\n }\n\n return stackPoints;\n };\n\n AreaChart.prototype._previousSegmentPoint = function _previousSegmentPoint (categoryIx, pointIx, segmentIx, seriesIdx) {\n var seriesPoints = this.seriesPoints;\n var index = seriesIdx;\n var point;\n\n while (index > 0 && !point) {\n index--;\n point = seriesPoints[index][segmentIx];\n }\n\n if (!point) {\n point = this._createGapStackPoint(categoryIx);\n this._stackPoints.push(point);\n } else {\n point = seriesPoints[index][pointIx];\n }\n\n return point;\n };\n\n AreaChart.prototype._createGapStackPoint = function _createGapStackPoint (categoryIx) {\n var options = this.pointOptions({}, 0);\n var point = new LinePoint(0, options);\n point.categoryIx = categoryIx;\n point.series = {};\n\n return point;\n };\n\n AreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues || ZERO;\n };\n\n AreaChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return false;\n };\n\n return AreaChart;\n}(LineChart));\n\nexport default AreaChart;\n","import { MIN_VALUE, MAX_VALUE } from '../common/constants';\nimport { Class } from '../common';\n\nvar AxisGroupRangeTracker = (function (Class) {\n function AxisGroupRangeTracker() {\n Class.call(this);\n\n this.axisRanges = {};\n }\n\n if ( Class ) AxisGroupRangeTracker.__proto__ = Class;\n AxisGroupRangeTracker.prototype = Object.create( Class && Class.prototype );\n AxisGroupRangeTracker.prototype.constructor = AxisGroupRangeTracker;\n\n AxisGroupRangeTracker.prototype.update = function update (chartAxisRanges) {\n var axisRanges = this.axisRanges;\n\n for (var axisName in chartAxisRanges) {\n var chartRange = chartAxisRanges[axisName];\n var range = axisRanges[axisName];\n axisRanges[axisName] = range = range || { min: MAX_VALUE, max: MIN_VALUE };\n\n range.min = Math.min(range.min, chartRange.min);\n range.max = Math.max(range.max, chartRange.max);\n }\n };\n\n AxisGroupRangeTracker.prototype.reset = function reset (axisName) {\n this.axisRanges[axisName] = undefined;\n };\n\n AxisGroupRangeTracker.prototype.query = function query (axisName) {\n return this.axisRanges[axisName];\n };\n\n return AxisGroupRangeTracker;\n}(Class));\n\nexport default AxisGroupRangeTracker;","import { ChartElement, TextBox, Box } from '../../core';\nimport { FADEIN, INITIAL_ANIMATION_DURATION, INSIDE_END, INSIDE_BASE, OUTSIDE_END } from '../constants';\n\nimport { CENTER, TOP, BOTTOM, LEFT, RIGHT, X, Y, BLACK } from '../../common/constants';\nimport { getSpacing, setDefaultOptions } from '../../common';\n\nvar BarLabel = (function (ChartElement) {\n function BarLabel(content, options, pointData) {\n ChartElement.call(this, options);\n\n this.textBox = new TextBox(content, this.options, pointData);\n this.append(this.textBox);\n }\n\n if ( ChartElement ) BarLabel.__proto__ = ChartElement;\n BarLabel.prototype = Object.create( ChartElement && ChartElement.prototype );\n BarLabel.prototype.constructor = BarLabel;\n\n BarLabel.prototype.createVisual = function createVisual () {\n this.textBox.options.noclip = this.options.noclip;\n };\n\n BarLabel.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var vertical = options.vertical;\n var aboveAxis = options.aboveAxis;\n var text = this.children[0];\n var textOptions = text.options;\n var box = text.box;\n var padding = text.options.padding;\n var labelBox = targetBox;\n\n textOptions.align = vertical ? CENTER : LEFT;\n textOptions.vAlign = vertical ? TOP : CENTER;\n\n if (options.position === INSIDE_END) {\n if (vertical) {\n textOptions.vAlign = TOP;\n\n if (!aboveAxis && box.height() < targetBox.height()) {\n textOptions.vAlign = BOTTOM;\n }\n } else {\n textOptions.align = aboveAxis ? RIGHT : LEFT;\n }\n } else if (options.position === CENTER) {\n textOptions.vAlign = CENTER;\n textOptions.align = CENTER;\n } else if (options.position === INSIDE_BASE) {\n if (vertical) {\n textOptions.vAlign = aboveAxis ? BOTTOM : TOP;\n } else {\n textOptions.align = aboveAxis ? LEFT : RIGHT;\n }\n } else if (options.position === OUTSIDE_END) {\n if (vertical) {\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x1, targetBox.y1 - box.height(),\n targetBox.x2, targetBox.y1\n );\n } else {\n labelBox = new Box(\n targetBox.x1, targetBox.y2,\n targetBox.x2, targetBox.y2 + box.height()\n );\n }\n } else {\n textOptions.align = CENTER;\n if (aboveAxis) {\n labelBox = new Box(\n targetBox.x2, targetBox.y1,\n targetBox.x2 + box.width(), targetBox.y2\n );\n } else {\n labelBox = new Box(\n targetBox.x1 - box.width(), targetBox.y1,\n targetBox.x1, targetBox.y2\n );\n }\n }\n }\n\n if (!options.rotation) {\n if (vertical) {\n padding.left = padding.right =\n (labelBox.width() - text.contentBox.width()) / 2;\n } else {\n padding.top = padding.bottom =\n (labelBox.height() - text.contentBox.height()) / 2;\n }\n }\n\n text.reflow(labelBox);\n };\n\n BarLabel.prototype.alignToClipBox = function alignToClipBox (clipBox) {\n var vertical = this.options.vertical;\n var field = vertical ? Y : X;\n var start = field + \"1\";\n var end = field + \"2\";\n var text = this.children[0];\n var parentBox = this.parent.box;\n\n if (parentBox[start] < clipBox[start] || clipBox[end] < parentBox[end]) {\n var targetBox = text.paddingBox.clone();\n targetBox[start] = Math.max(parentBox[start], clipBox[start]);\n targetBox[end] = Math.min(parentBox[end], clipBox[end]);\n\n this.reflow(targetBox);\n }\n };\n\n return BarLabel;\n}(ChartElement));\n\nsetDefaultOptions(BarLabel, {\n position: OUTSIDE_END,\n margin: getSpacing(3),\n padding: getSpacing(4),\n color: BLACK,\n background: \"\",\n border: {\n width: 1,\n color: \"\"\n },\n aboveAxis: true,\n vertical: false,\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n zIndex: 2\n});\n\nexport default BarLabel;","export default function hasGradientOverlay(options) {\n var overlay = options.overlay;\n\n return overlay && overlay.gradient && overlay.gradient !== \"none\";\n}","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport BarLabel from './bar-label';\n\nimport { BORDER_BRIGHTNESS, TOOLTIP_OFFSET } from '../constants';\n\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { ChartElement, Point } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { WHITE, LEFT, RIGHT, BOTTOM, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, valueOrDefault } from '../../common';\n\nvar BAR_ALIGN_MIN_WIDTH = 6;\n\nvar Bar = (function (ChartElement) {\n function Bar(value, options) {\n ChartElement.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.value = value;\n }\n\n if ( ChartElement ) Bar.__proto__ = ChartElement;\n Bar.prototype = Object.create( ChartElement && ChartElement.prototype );\n Bar.prototype.constructor = Bar;\n\n Bar.prototype.render = function render () {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createLabel();\n this.createNote();\n\n if (this.errorBar) {\n this.append(this.errorBar);\n }\n };\n\n Bar.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText,\n deepExtend({\n vertical: options.vertical\n },\n labels\n ), pointData);\n this.append(this.label);\n }\n };\n\n Bar.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n Bar.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n if (this.errorBars) {\n for (var i = 0; i < this.errorBars.length; i++) {\n this$1.errorBars[i].reflow(targetBox);\n }\n }\n };\n\n Bar.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var ref = this;\n var box = ref.box;\n var options = ref.options;\n var customVisual = options.visual;\n\n if (this.visible !== false) {\n ChartElement.prototype.createVisual.call(this);\n\n if (customVisual) {\n var visual = this.rectVisual = customVisual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n sender: this.getSender(),\n series: this.series,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n rect: box.toRect(),\n createVisual: function () {\n var group = new draw.Group();\n this$1.createRect(group);\n return group;\n },\n options: options\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else if (box.width() > 0 && box.height() > 0) {\n this.createRect(this.visual);\n }\n }\n };\n\n Bar.prototype.createRect = function createRect (visual) {\n var options = this.options;\n var border = options.border;\n var strokeOpacity = defined(border.opacity) ? border.opacity : options.opacity;\n var rect = this.box.toRect();\n\n rect.size.width = Math.round(rect.size.width);\n\n var path = this.rectVisual = draw.Path.fromRect(rect, {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: {\n color: this.getBorderColor(),\n width: border.width,\n opacity: strokeOpacity,\n dashType: border.dashType\n }\n });\n\n var width = this.box.width();\n var height = this.box.height();\n\n var size = options.vertical ? width : height;\n\n if (size > BAR_ALIGN_MIN_WIDTH) {\n alignPathToPixel(path);\n\n // Fixes lineJoin issue in firefox when the joined lines are parallel\n if (width < 1 || height < 1) {\n path.options.stroke.lineJoin = \"round\";\n }\n }\n\n visual.append(path);\n\n if (hasGradientOverlay(options)) {\n var overlay = this.createGradientOverlay(path, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay));\n\n visual.append(overlay);\n }\n };\n\n Bar.prototype.createHighlight = function createHighlight (style) {\n var highlight = draw.Path.fromRect(this.box.toRect(), style);\n\n return alignPathToPixel(highlight);\n };\n\n Bar.prototype.highlightVisual = function highlightVisual () {\n return this.rectVisual;\n };\n\n Bar.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n };\n\n Bar.prototype.getBorderColor = function getBorderColor () {\n var color = this.color;\n var border = this.options.border;\n var brightness = border._brightness || BORDER_BRIGHTNESS;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(color).brightness(brightness).toHex();\n }\n\n return borderColor;\n };\n\n Bar.prototype.tooltipAnchor = function tooltipAnchor () {\n var ref = this;\n var options = ref.options;\n var box = ref.box;\n var aboveAxis = ref.aboveAxis;\n var clipBox = this.owner.pane.clipBox() || box;\n var horizontalAlign = LEFT;\n var verticalAlign = TOP;\n var x, y;\n\n if (options.vertical) {\n x = Math.min(box.x2, clipBox.x2) + TOOLTIP_OFFSET;\n if (aboveAxis) {\n y = Math.max(box.y1, clipBox.y1);\n } else {\n y = Math.min(box.y2, clipBox.y2);\n verticalAlign = BOTTOM;\n }\n } else {\n var x1 = Math.max(box.x1, clipBox.x1);\n var x2 = Math.min(box.x2, clipBox.x2);\n\n if (options.isStacked) {\n verticalAlign = BOTTOM;\n if (aboveAxis) {\n horizontalAlign = RIGHT;\n x = x2;\n } else {\n x = x1;\n }\n y = Math.max(box.y1, clipBox.y1) - TOOLTIP_OFFSET;\n } else {\n if (aboveAxis) {\n x = x2 + TOOLTIP_OFFSET;\n } else {\n x = x1 - TOOLTIP_OFFSET;\n horizontalAlign = RIGHT;\n }\n y = Math.max(box.y1, clipBox.y1);\n }\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n };\n\n Bar.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n Bar.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n percentage: this.percentage,\n stackValue: this.stackValue,\n runningTotal: this.runningTotal,\n total: this.total,\n series: this.series\n };\n };\n\n return Bar;\n}(ChartElement));\n\ndeepExtend(Bar.prototype, PointEventsMixin);\ndeepExtend(Bar.prototype, NoteMixin);\n\nBar.prototype.defaults = {\n border: {\n width: 1\n },\n vertical: true,\n overlay: {\n gradient: \"glass\"\n },\n labels: {\n visible: false,\n format: \"{0}\"\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default Bar;","export function forEach(elements, callback) {\n elements.forEach(callback);\n}\n\nexport function forEachReverse(elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx - length - 1);\n }\n}","import { ChartElement } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\nimport { forEach, forEachReverse } from './utils';\n\nvar ClusterLayout = (function (ChartElement) {\n function ClusterLayout(options) {\n ChartElement.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n if ( ChartElement ) ClusterLayout.__proto__ = ChartElement;\n ClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n ClusterLayout.prototype.constructor = ClusterLayout;\n\n ClusterLayout.prototype.reflow = function reflow (box) {\n var ref = this.options;\n var vertical = ref.vertical;\n var gap = ref.gap;\n var spacing = ref.spacing;\n var children = this.children;\n var count = children.length;\n var axis = vertical ? Y : X;\n var slots = count + gap + (spacing * (count - 1));\n var slotSize = (vertical ? box.height() : box.width()) / slots;\n var position = box[axis + 1] + slotSize * (gap / 2);\n\n this.forEach(children, function (child, idx) {\n var childBox = (child.box || box).clone();\n\n childBox[axis + 1] = position;\n childBox[axis + 2] = position + slotSize;\n\n child.reflow(childBox);\n if (idx < count - 1) {\n position += (slotSize * spacing);\n }\n\n position += slotSize;\n });\n };\n\n return ClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(ClusterLayout, {\n vertical: false,\n gap: 0,\n spacing: 0\n});\n\nexport default ClusterLayout;","import { ChartElement, Box } from '../../core';\n\nimport { X, Y } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar StackWrap = (function (ChartElement) {\n function StackWrap () {\n ChartElement.apply(this, arguments);\n }\n\n if ( ChartElement ) StackWrap.__proto__ = ChartElement;\n StackWrap.prototype = Object.create( ChartElement && ChartElement.prototype );\n StackWrap.prototype.constructor = StackWrap;\n\n StackWrap.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var positionAxis = this.options.vertical ? X : Y;\n var children = this.children;\n var childrenCount = children.length;\n var box = this.box = new Box();\n\n for (var i = 0; i < childrenCount; i++) {\n var currentChild = children[i];\n\n if (currentChild.visible !== false) {\n var childBox = currentChild.box.clone();\n childBox.snapTo(targetBox, positionAxis);\n\n if (i === 0) {\n box = this$1.box = childBox.clone();\n }\n\n currentChild.reflow(childBox);\n box.wrap(childBox);\n }\n }\n };\n\n return StackWrap;\n}(ChartElement));\n\nsetDefaultOptions(StackWrap, {\n vertical: true\n});\n\nexport default StackWrap;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport Bar from './bar';\n\nimport CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport StackWrap from '../layout/stack-wrap';\nimport { BAR, OUTSIDE_END, INSIDE_END } from '../constants';\n\nimport anyHasZIndex from '../utils/any-has-z-index';\n\nimport { STRING, X, Y } from '../../common/constants';\nimport { defined, isFunction, setDefaultOptions } from '../../common';\n\nvar BarChart = (function (CategoricalChart) {\n function BarChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) BarChart.__proto__ = CategoricalChart;\n BarChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n BarChart.prototype.constructor = BarChart;\n\n BarChart.prototype.render = function render () {\n CategoricalChart.prototype.render.call(this);\n this.updateStackRange();\n };\n\n BarChart.prototype.pointType = function pointType () {\n return Bar;\n };\n\n BarChart.prototype.clusterType = function clusterType () {\n return ClusterLayout;\n };\n\n BarChart.prototype.stackType = function stackType () {\n return StackWrap;\n };\n\n BarChart.prototype.stackLimits = function stackLimits (axisName, stackName) {\n var limits = CategoricalChart.prototype.stackLimits.call(this, axisName, stackName);\n\n return limits;\n };\n\n BarChart.prototype.createPoint = function createPoint (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var isStacked = options.isStacked;\n var value = this.pointValue(data);\n var pointOptions = this.pointOptions(series, seriesIx);\n\n var labelOptions = pointOptions.labels;\n if (isStacked) {\n if (labelOptions.position === OUTSIDE_END) {\n labelOptions.position = INSIDE_END;\n }\n }\n\n pointOptions.isStacked = isStacked;\n\n var color = data.fields.color || series.color;\n if (value < 0 && pointOptions.negativeColor) {\n color = pointOptions.negativeColor;\n }\n\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var pointType = this.pointType();\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n var clusterType = this.clusterType();\n cluster = new clusterType({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (isStacked) {\n var stackWrap = this.getStackWrap(series, cluster);\n stackWrap.append(point);\n } else {\n cluster.append(point);\n }\n\n return point;\n };\n\n BarChart.prototype.getStackWrap = function getStackWrap (series, cluster) {\n var stack = series.stack;\n var stackGroup = stack ? stack.group || stack : stack;\n var wraps = cluster.children;\n var stackWrap;\n\n if (typeof stackGroup === STRING) {\n for (var i = 0; i < wraps.length; i++) {\n if (wraps[i]._stackGroup === stackGroup) {\n stackWrap = wraps[i];\n break;\n }\n }\n } else {\n stackWrap = wraps[0];\n }\n\n if (!stackWrap) {\n var stackType = this.stackType();\n stackWrap = new stackType({\n vertical: !this.options.invertAxes\n });\n stackWrap._stackGroup = stackGroup;\n cluster.append(stackWrap);\n }\n\n return stackWrap;\n };\n\n BarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx, valueAxis) {\n var options = this.options;\n var categorySlot = categoryAxis.getSlot(categoryIx);\n var startValue = valueAxis.startValue();\n\n if (options.isStacked) {\n var zeroSlot = valueAxis.getSlot(startValue, startValue, true);\n var stackAxis = options.invertAxes ? X : Y;\n categorySlot[stackAxis + 1] = categorySlot[stackAxis + 2] = zeroSlot[stackAxis + 1];\n }\n\n return categorySlot;\n };\n\n BarChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n };\n\n BarChart.prototype.createAnimation = function createAnimation () {\n this._setAnimationOptions();\n CategoricalChart.prototype.createAnimation.call(this);\n\n if (anyHasZIndex(this.options.series)) {\n this._setChildrenAnimation();\n }\n };\n\n BarChart.prototype._setChildrenAnimation = function _setChildrenAnimation () {\n var this$1 = this;\n\n var points = this.points;\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n var pointVisual = point.visual;\n if (pointVisual && defined(pointVisual.options.zIndex)) {\n point.options.animation = this$1.options.animation;\n point.createAnimation();\n }\n }\n };\n\n BarChart.prototype._setAnimationOptions = function _setAnimationOptions () {\n var options = this.options;\n var animation = options.animation || {};\n var origin;\n\n if (options.isStacked) {\n var valueAxis = this.seriesValueAxis(options.series[0]);\n origin = valueAxis.getSlot(valueAxis.startValue());\n } else {\n origin = this.categoryAxis.getSlot(0);\n }\n\n animation.origin = new geom.Point(origin.x1, origin.y1);\n animation.vertical = !options.invertAxes;\n };\n\n return BarChart;\n}(CategoricalChart));\n\nsetDefaultOptions(BarChart, {\n animation: {\n type: BAR\n }\n});\n\nexport default BarChart;","import { drawing as draw, Color } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { WHITE, LEFT, TOP } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar Candlestick = (function (ChartElement) {\n function Candlestick(value, options) {\n ChartElement.call(this, options);\n this.value = value;\n }\n\n if ( ChartElement ) Candlestick.__proto__ = ChartElement;\n Candlestick.prototype = Object.create( ChartElement && ChartElement.prototype );\n Candlestick.prototype.constructor = Candlestick;\n\n Candlestick.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var ocSlot = valueAxis.getSlot(value.open, value.close);\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n\n ocSlot.x1 = lhSlot.x1 = box.x1;\n ocSlot.x2 = lhSlot.x2 = box.x2;\n\n this.realBody = ocSlot;\n\n var mid = lhSlot.center().x;\n var points = [];\n\n points.push([ [ mid, lhSlot.y1 ], [ mid, ocSlot.y1 ] ]);\n points.push([ [ mid, ocSlot.y2 ], [ mid, lhSlot.y2 ] ]);\n\n this.lines = points;\n\n this.box = lhSlot.clone().wrap(ocSlot);\n\n if (!this._rendered) {\n this._rendered = true;\n this.createNote();\n }\n\n this.reflowNote();\n };\n\n Candlestick.prototype.reflowNote = function reflowNote () {\n if (this.note) {\n this.note.reflow(this.box);\n }\n };\n\n Candlestick.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n this._mainVisual = this.mainVisual(this.options);\n this.visual.append(\n this._mainVisual\n );\n\n this.createOverlay();\n };\n\n Candlestick.prototype.mainVisual = function mainVisual (options) {\n var group = new draw.Group();\n\n this.createBody(group, options);\n this.createLines(group, options);\n\n return group;\n };\n\n Candlestick.prototype.createBody = function createBody (container, options) {\n var body = draw.Path.fromRect(this.realBody.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: this.getBorderColor(),\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n alignPathToPixel(body);\n container.append(body);\n\n if (hasGradientOverlay(options)) {\n container.append(this.createGradientOverlay(body, { baseColor: this.color }, deepExtend({\n end: !options.vertical ? [ 0, 1 ] : undefined\n }, options.overlay)));\n }\n };\n\n Candlestick.prototype.createLines = function createLines (container, options) {\n this.drawLines(container, options, this.lines, options.line);\n };\n\n Candlestick.prototype.drawLines = function drawLines (container, options, lines, lineOptions) {\n if (!lines) {\n return;\n }\n\n var lineStyle = {\n stroke: {\n color: lineOptions.color || this.color,\n opacity: valueOrDefault(lineOptions.opacity, options.opacity),\n width: lineOptions.width,\n dashType: lineOptions.dashType,\n lineCap: \"butt\"\n }\n };\n\n for (var i = 0; i < lines.length; i++) {\n var line = draw.Path.fromPoints(lines[i], lineStyle);\n alignPathToPixel(line);\n container.append(line);\n }\n };\n\n Candlestick.prototype.getBorderColor = function getBorderColor () {\n var border = this.options.border;\n var borderColor = border.color;\n\n if (!defined(borderColor)) {\n borderColor = new Color(this.color).brightness(border._brightness).toHex();\n }\n\n return borderColor;\n };\n\n Candlestick.prototype.createOverlay = function createOverlay () {\n var overlay = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null\n });\n\n this.visual.append(overlay);\n };\n\n Candlestick.prototype.createHighlight = function createHighlight () {\n var highlight = this.options.highlight;\n var normalColor = this.color;\n\n this.color = highlight.color || this.color;\n var overlay = this.mainVisual(\n deepExtend({}, this.options, {\n line: {\n color: this.getBorderColor()\n }\n }, highlight)\n );\n this.color = normalColor;\n\n return overlay;\n };\n\n Candlestick.prototype.highlightVisual = function highlightVisual () {\n return this._mainVisual;\n };\n\n Candlestick.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this._mainVisual\n };\n };\n\n Candlestick.prototype.tooltipAnchor = function tooltipAnchor () {\n var box = this.box;\n var clipBox = this.owner.pane.clipBox() || box;\n\n return {\n point: new Point(box.x2 + TOOLTIP_OFFSET, Math.max(box.y1, clipBox.y1) + TOOLTIP_OFFSET),\n align: {\n horizontal: LEFT,\n vertical: TOP\n }\n };\n };\n\n Candlestick.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n Candlestick.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n return Candlestick;\n}(ChartElement));\n\nsetDefaultOptions(Candlestick, {\n vertical: true,\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
{4:d}
Open:{0:C}
High:{1:C}
Low:{2:C}
Close:{3:C}
\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n }\n});\n\ndeepExtend(Candlestick.prototype, PointEventsMixin);\ndeepExtend(Candlestick.prototype, NoteMixin);\n\nexport default Candlestick;","import countNumbers from './count-numbers';\n\nexport default function areNumbers(values) {\n return countNumbers(values) === values.length;\n}","import CategoricalChart from '../categorical-chart';\nimport ClusterLayout from '../layout/cluster-layout';\nimport Candlestick from './candlestick';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport { CANDLESTICK } from '../constants';\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, isFunction } from '../../common';\n\nvar CandlestickChart = (function (CategoricalChart) {\n function CandlestickChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) CandlestickChart.__proto__ = CategoricalChart;\n CandlestickChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n CandlestickChart.prototype.constructor = CandlestickChart;\n\n CandlestickChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n };\n\n CandlestickChart.prototype.addValue = function addValue (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n point.noteText = data.fields.noteText;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n };\n\n CandlestickChart.prototype.pointType = function pointType () {\n return Candlestick;\n };\n\n CandlestickChart.prototype.createPoint = function createPoint (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var pointType = this.pointType();\n var value = data.valueFields;\n var pointOptions = deepExtend({}, series);\n var color = data.fields.color || series.color;\n\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (series.type === CANDLESTICK) {\n if (value.open > value.close) {\n color = data.fields.downColor || series.downColor || series.color;\n }\n }\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.vertical = !this.options.invertAxes;\n\n var point = new pointType(value, pointOptions);\n point.color = color;\n\n return point;\n };\n\n CandlestickChart.prototype.splitValue = function splitValue (value) {\n return [ value.low, value.open, value.close, value.high ];\n };\n\n CandlestickChart.prototype.updateRange = function updateRange (value, fields) {\n var axisName = fields.series.axis;\n var parts = this.splitValue(value);\n var axisRange = this.valueAxisRanges[axisName];\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n };\n\n CandlestickChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.open, value.high,\n value.low, value.close, point.category\n );\n };\n\n CandlestickChart.prototype.animationPoints = function animationPoints () {\n return this.points;\n };\n\n return CandlestickChart;\n}(CategoricalChart));\n\ndeepExtend(CandlestickChart.prototype, ClipAnimationMixin);\n\nexport default CandlestickChart;","import { Color } from '@progress/kendo-drawing';\n\nimport Candlestick from '../candlestick-chart/candlestick';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport { ShapeElement } from '../../core';\n\nimport { LINE_MARKER_SIZE, BORDER_BRIGHTNESS } from '../constants';\n\nimport { CROSS, CIRCLE, WHITE } from '../../common/constants';\nimport { deepExtend, defined, setDefaultOptions } from '../../common';\n\nvar BoxPlot = (function (Candlestick) {\n function BoxPlot(value, options) {\n Candlestick.call(this, value, options);\n\n this.createNote();\n }\n\n if ( Candlestick ) BoxPlot.__proto__ = Candlestick;\n BoxPlot.prototype = Object.create( Candlestick && Candlestick.prototype );\n BoxPlot.prototype.constructor = BoxPlot;\n\n BoxPlot.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var whiskerSlot, boxSlot;\n\n this.boxSlot = boxSlot = valueAxis.getSlot(value.q1, value.q3);\n this.realBody = boxSlot;\n this.reflowBoxSlot(box);\n\n this.whiskerSlot = whiskerSlot = valueAxis.getSlot(value.lower, value.upper);\n this.reflowWhiskerSlot(box);\n\n var medianSlot = valueAxis.getSlot(value.median);\n\n if (value.mean) {\n var meanSlot = valueAxis.getSlot(value.mean);\n this.meanPoints = this.calcMeanPoints(box, meanSlot);\n }\n\n this.whiskerPoints = this.calcWhiskerPoints(boxSlot, whiskerSlot);\n this.medianPoints = this.calcMedianPoints(box, medianSlot);\n\n this.box = whiskerSlot.clone().wrap(boxSlot);\n this.reflowNote();\n };\n\n BoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n this.boxSlot.x1 = box.x1;\n this.boxSlot.x2 = box.x2;\n };\n\n BoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n this.whiskerSlot.x1 = box.x1;\n this.whiskerSlot.x2 = box.x2;\n };\n\n BoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n return [\n [ [ box.x1, meanSlot.y1 ], [ box.x2, meanSlot.y1 ] ]\n ];\n };\n\n BoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().x;\n return [ [\n [ mid - 5, whiskerSlot.y1 ], [ mid + 5, whiskerSlot.y1 ],\n [ mid, whiskerSlot.y1 ], [ mid, boxSlot.y1 ]\n ], [\n [ mid - 5, whiskerSlot.y2 ], [ mid + 5, whiskerSlot.y2 ],\n [ mid, whiskerSlot.y2 ], [ mid, boxSlot.y2 ]\n ] ];\n };\n\n BoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n return [\n [ [ box.x1, medianSlot.y1 ], [ box.x2, medianSlot.y1 ] ]\n ];\n };\n\n BoxPlot.prototype.renderOutliers = function renderOutliers (options) {\n var this$1 = this;\n\n var value = this.value;\n var outliers = value.outliers || [];\n var outerFence = Math.abs(value.q3 - value.q1) * 3;\n var elements = [];\n var markers = options.markers || {};\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i];\n if (outlierValue < value.q3 + outerFence && outlierValue > value.q1 - outerFence) {\n markers = options.outliers;\n } else {\n markers = options.extremes;\n }\n var markersBorder = deepExtend({}, markers.border);\n\n if (!defined(markersBorder.color)) {\n if (defined(this$1.color)) {\n markersBorder.color = this$1.color;\n } else {\n markersBorder.color =\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex();\n }\n }\n\n var shape = new ShapeElement({\n type: markers.type,\n width: markers.size,\n height: markers.size,\n rotation: markers.rotation,\n background: markers.background,\n border: markersBorder,\n opacity: markers.opacity\n });\n\n shape.value = outlierValue;\n\n elements.push(shape);\n }\n\n this.reflowOutliers(elements);\n return elements;\n };\n\n BoxPlot.prototype.reflowOutliers = function reflowOutliers (outliers) {\n var this$1 = this;\n\n var valueAxis = this.owner.seriesValueAxis(this.options);\n var center = this.box.center();\n\n for (var i = 0; i < outliers.length; i++) {\n var outlierValue = outliers[i].value;\n var markerBox = valueAxis.getSlot(outlierValue);\n\n if (this$1.options.vertical) {\n markerBox.move(center.x);\n } else {\n markerBox.move(undefined, center.y);\n }\n\n this$1.box = this$1.box.wrap(markerBox);\n outliers[i].reflow(markerBox);\n }\n };\n\n BoxPlot.prototype.mainVisual = function mainVisual (options) {\n var group = Candlestick.prototype.mainVisual.call(this, options);\n var outliers = this.renderOutliers(options);\n\n for (var i = 0; i < outliers.length; i++) {\n var element = outliers[i].getElement();\n if (element) {\n group.append(element);\n }\n }\n\n return group;\n };\n\n BoxPlot.prototype.createLines = function createLines (container, options) {\n this.drawLines(container, options, this.whiskerPoints, options.whiskers);\n this.drawLines(container, options, this.medianPoints, options.median);\n this.drawLines(container, options, this.meanPoints, options.mean);\n };\n\n BoxPlot.prototype.getBorderColor = function getBorderColor () {\n if ((this.options.border || {}).color) {\n return this.options.border.color;\n }\n\n if (this.color) {\n return this.color;\n }\n\n return Candlestick.prototype.getBorderColor.call(this);\n };\n\n return BoxPlot;\n}(Candlestick));\n\nsetDefaultOptions(BoxPlot, {\n border: {\n _brightness: 0.8\n },\n line: {\n width: 2\n },\n median: {\n color: \"#f6f6f6\"\n },\n mean: {\n width: 2,\n dashType: \"dash\",\n color: \"#f6f6f6\"\n },\n overlay: {\n gradient: \"glass\"\n },\n tooltip: {\n format: \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"\" +\n \"
{6:d}
Lower:{0:C}
Q1:{1:C}
Median:{2:C}
Mean:{5:C}
Q3:{3:C}
Upper:{4:C}
\"\n },\n highlight: {\n opacity: 1,\n border: {\n width: 1,\n opacity: 1\n },\n line: {\n width: 1,\n opacity: 1\n }\n },\n notes: {\n visible: true,\n label: {}\n },\n outliers: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CROSS,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n },\n extremes: {\n visible: true,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n background: WHITE,\n border: {\n width: 2,\n opacity: 1\n },\n opacity: 0\n }\n});\n\ndeepExtend(BoxPlot.prototype, PointEventsMixin);\n\nexport default BoxPlot;","import BoxPlot from './box-plot';\n\nvar VerticalBoxPlot = (function (BoxPlot) {\n function VerticalBoxPlot () {\n BoxPlot.apply(this, arguments);\n }\n\n if ( BoxPlot ) VerticalBoxPlot.__proto__ = BoxPlot;\n VerticalBoxPlot.prototype = Object.create( BoxPlot && BoxPlot.prototype );\n VerticalBoxPlot.prototype.constructor = VerticalBoxPlot;\n\n VerticalBoxPlot.prototype.reflowBoxSlot = function reflowBoxSlot (box) {\n this.boxSlot.y1 = box.y1;\n this.boxSlot.y2 = box.y2;\n };\n\n VerticalBoxPlot.prototype.reflowWhiskerSlot = function reflowWhiskerSlot (box) {\n this.whiskerSlot.y1 = box.y1;\n this.whiskerSlot.y2 = box.y2;\n };\n\n VerticalBoxPlot.prototype.calcMeanPoints = function calcMeanPoints (box, meanSlot) {\n return [\n [ [ meanSlot.x1, box.y1 ], [ meanSlot.x1, box.y2 ] ]\n ];\n };\n\n VerticalBoxPlot.prototype.calcWhiskerPoints = function calcWhiskerPoints (boxSlot, whiskerSlot) {\n var mid = whiskerSlot.center().y;\n return [ [\n [ whiskerSlot.x1, mid - 5 ], [ whiskerSlot.x1, mid + 5 ],\n [ whiskerSlot.x1, mid ], [ boxSlot.x1, mid ]\n ], [\n [ whiskerSlot.x2, mid - 5 ], [ whiskerSlot.x2, mid + 5 ],\n [ whiskerSlot.x2, mid ], [ boxSlot.x2, mid ]\n ] ];\n };\n\n VerticalBoxPlot.prototype.calcMedianPoints = function calcMedianPoints (box, medianSlot) {\n return [\n [ [ medianSlot.x1, box.y1 ], [ medianSlot.x1, box.y2 ] ]\n ];\n };\n\n return VerticalBoxPlot;\n}(BoxPlot));\n\nexport default VerticalBoxPlot;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport VerticalBoxPlot from './vertical-box-plot';\nimport BoxPlot from './box-plot';\nimport ClusterLayout from '../layout/cluster-layout';\n\nimport areNumbers from '../utils/are-numbers';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { defined } from '../../common';\n\nvar BoxPlotChart = (function (CandlestickChart) {\n function BoxPlotChart () {\n CandlestickChart.apply(this, arguments);\n }\n\n if ( CandlestickChart ) BoxPlotChart.__proto__ = CandlestickChart;\n BoxPlotChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n BoxPlotChart.prototype.constructor = BoxPlotChart;\n\n BoxPlotChart.prototype.addValue = function addValue (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var value = data.valueFields;\n var valueParts = this.splitValue(value);\n var hasValue = areNumbers(valueParts);\n var dataItem = series.data[categoryIx];\n var categoryPoints = this.categoryPoints[categoryIx];\n var point;\n\n if (!categoryPoints) {\n this.categoryPoints[categoryIx] = categoryPoints = [];\n }\n\n if (hasValue) {\n point = this.createPoint(data, fields);\n }\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n if (point) {\n this.updateRange(value, fields);\n\n cluster.append(point);\n\n point.categoryIx = categoryIx;\n point.category = category;\n point.series = series;\n point.seriesIx = seriesIx;\n point.owner = this;\n point.dataItem = dataItem;\n }\n\n this.points.push(point);\n categoryPoints.push(point);\n };\n\n BoxPlotChart.prototype.pointType = function pointType () {\n if (this.options.invertAxes) {\n return VerticalBoxPlot;\n }\n\n return BoxPlot;\n };\n\n BoxPlotChart.prototype.splitValue = function splitValue (value) {\n return [\n value.lower, value.q1, value.median,\n value.q3, value.upper\n ];\n };\n\n BoxPlotChart.prototype.updateRange = function updateRange (value, fields) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n var parts = this.splitValue(value).concat(this.filterOutliers(value.outliers));\n\n if (defined(value.mean)) {\n parts = parts.concat(value.mean);\n }\n\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange = this.valueAxisRanges[axisName] = {\n min: Math.min.apply(Math, parts.concat([ axisRange.min ])),\n max: Math.max.apply(Math, parts.concat([ axisRange.max ]))\n };\n };\n\n BoxPlotChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format,\n value.lower, value.q1, value.median,\n value.q3, value.upper, value.mean, point.category\n );\n };\n\n BoxPlotChart.prototype.filterOutliers = function filterOutliers (items) {\n var length = (items || []).length;\n var result = [];\n\n for (var i = 0; i < length; i++) {\n var item = items[i];\n if (defined(item) && item !== null) {\n result.push(item);\n }\n }\n\n return result;\n };\n\n BoxPlotChart.prototype.supportsPointInactiveOpacity = function supportsPointInactiveOpacity () {\n return false;\n };\n\n return BoxPlotChart;\n}(CandlestickChart));\n\nexport default BoxPlotChart;\n","import ErrorBarBase from './error-bar-base';\n\nvar ScatterErrorBar = (function (ErrorBarBase) {\n function ScatterErrorBar () {\n ErrorBarBase.apply(this, arguments);\n }\n\n if ( ErrorBarBase ) ScatterErrorBar.__proto__ = ErrorBarBase;\n ScatterErrorBar.prototype = Object.create( ErrorBarBase && ErrorBarBase.prototype );\n ScatterErrorBar.prototype.constructor = ScatterErrorBar;\n\n ScatterErrorBar.prototype.getAxis = function getAxis () {\n var axes = this.chart.seriesAxes(this.series);\n var axis = this.isVertical ? axes.y : axes.x;\n\n return axis;\n };\n\n return ScatterErrorBar;\n}(ErrorBarBase));\n\nexport default ScatterErrorBar;","import { defined } from '../../common';\n\nexport default function hasValue(value) {\n return defined(value) && value !== null;\n}","import { ChartElement, Box } from '../../core';\n\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport ErrorRangeCalculator from '../error-bars/error-range-calculator';\nimport ScatterErrorBar from '../error-bars/scatter-error-bar';\nimport LinePoint from '../line-chart/line-point';\nimport CategoricalChart from '../categorical-chart';\n\nimport hasValue from '../utils/has-value';\nimport evalOptions from '../utils/eval-options';\n\nimport { deepExtend, isNumber, isString, defined, isFunction, setDefaultOptions } from '../../common';\nimport { X, Y, MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { parseDate } from '../../date-utils';\n\nvar ScatterChart = (function (ChartElement) {\n function ScatterChart(plotArea, options) {\n\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n if ( ChartElement ) ScatterChart.__proto__ = ChartElement;\n ScatterChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n ScatterChart.prototype.constructor = ScatterChart;\n\n ScatterChart.prototype._initFields = function _initFields () {\n // X and Y axis ranges grouped by name, e.g.:\n // primary: { min: 0, max: 1 }\n this.xAxisRanges = {};\n this.yAxisRanges = {};\n\n this.points = [];\n this.seriesPoints = [];\n this.seriesOptions = [];\n this._evalSeries = [];\n };\n\n ScatterChart.prototype.render = function render () {\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n ScatterChart.prototype.addErrorBar = function addErrorBar (point, field, fields) {\n var value = point.value[field];\n var valueErrorField = field + \"Value\";\n var lowField = field + \"ErrorLow\";\n var highField = field + \"ErrorHigh\";\n var seriesIx = fields.seriesIx;\n var series = fields.series;\n var errorBars = point.options.errorBars;\n var lowValue = fields[lowField];\n var highValue = fields[highField];\n\n if (isNumber(value)) {\n var errorRange;\n if (isNumber(lowValue) && isNumber(highValue)) {\n errorRange = { low: lowValue, high: highValue };\n }\n\n if (errorBars && defined(errorBars[valueErrorField])) {\n this.seriesErrorRanges = this.seriesErrorRanges || { x: [], y: [] };\n this.seriesErrorRanges[field][seriesIx] = this.seriesErrorRanges[field][seriesIx] ||\n new ErrorRangeCalculator(errorBars[valueErrorField], series, field);\n\n errorRange = this.seriesErrorRanges[field][seriesIx].getErrorRange(value, errorBars[valueErrorField]);\n }\n\n if (errorRange) {\n this.addPointErrorBar(errorRange, point, field);\n }\n }\n };\n\n ScatterChart.prototype.addPointErrorBar = function addPointErrorBar (errorRange, point, field) {\n var low = errorRange.low;\n var high = errorRange.high;\n var series = point.series;\n var options = point.options.errorBars;\n var isVertical = field === Y;\n var item = {};\n\n point[field + \"Low\"] = low;\n point[field + \"High\"] = high;\n\n point.errorBars = point.errorBars || [];\n var errorBar = new ScatterErrorBar(low, high, isVertical, this, series, options);\n point.errorBars.push(errorBar);\n point.append(errorBar);\n\n item[field] = low;\n this.updateRange(item, series);\n item[field] = high;\n this.updateRange(item, series);\n };\n\n ScatterChart.prototype.addValue = function addValue (value, fields) {\n var x = value.x;\n var y = value.y;\n var seriesIx = fields.seriesIx;\n var series = this.options.series[seriesIx];\n var missingValues = this.seriesMissingValues(series);\n var seriesPoints = this.seriesPoints[seriesIx];\n\n var pointValue = value;\n if (!(hasValue(x) && hasValue(y))) {\n pointValue = this.createMissingValue(pointValue, missingValues);\n }\n\n var point;\n if (pointValue) {\n point = this.createPoint(pointValue, fields);\n if (point) {\n Object.assign(point, fields);\n this.addErrorBar(point, X, fields);\n this.addErrorBar(point, Y, fields);\n }\n this.updateRange(pointValue, fields.series);\n }\n\n this.points.push(point);\n seriesPoints.push(point);\n };\n\n ScatterChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues;\n };\n\n ScatterChart.prototype.createMissingValue = function createMissingValue () {};\n\n ScatterChart.prototype.updateRange = function updateRange (value, series) {\n var intlService = this.chartService.intl;\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var x = value.x;\n var y = value.y;\n var xAxisRange = this.xAxisRanges[xAxisName];\n var yAxisRange = this.yAxisRanges[yAxisName];\n\n if (hasValue(x)) {\n xAxisRange = this.xAxisRanges[xAxisName] =\n xAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(x)) {\n x = parseDate(intlService, x);\n }\n\n xAxisRange.min = Math.min(xAxisRange.min, x);\n xAxisRange.max = Math.max(xAxisRange.max, x);\n }\n\n if (hasValue(y)) {\n yAxisRange = this.yAxisRanges[yAxisName] =\n yAxisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n if (isString(y)) {\n y = parseDate(intlService, y);\n }\n\n yAxisRange.min = Math.min(yAxisRange.min, y);\n yAxisRange.max = Math.max(yAxisRange.max, y);\n }\n };\n\n ScatterChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = { defaults: series._defaults, excluded: [ \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\", \"_outOfRangeMinPoint\", \"_outOfRangeMaxPoint\" ] };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem\n }, state);\n }\n\n return pointOptions;\n };\n\n ScatterChart.prototype.pointType = function pointType () {\n return LinePoint;\n };\n\n ScatterChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n };\n\n ScatterChart.prototype.createPoint = function createPoint (value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new LinePoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n ScatterChart.prototype.seriesAxes = function seriesAxes (series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return {\n x: xAxis,\n y: yAxis\n };\n };\n\n ScatterChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var seriesAxes = this$1.seriesAxes(fields.series);\n var slotX = seriesAxes.x.getSlot(value.x, value.x, limit);\n var slotY = seriesAxes.y.getSlot(value.y, value.y, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n };\n\n ScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n };\n\n ScatterChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var seriesPoints = ref.seriesPoints;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var currentSeriesPoints = seriesPoints[seriesIx];\n if (!currentSeriesPoints) {\n seriesPoints[seriesIx] = [];\n }\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1._bindPoint(currentSeries, seriesIx, pointIx);\n var value = ref$1.valueFields;\n var fields = ref$1.fields;\n\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1\n }, fields));\n }\n }\n };\n\n ScatterChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y);\n };\n\n ScatterChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n };\n\n return ScatterChart;\n}(ChartElement));\nsetDefaultOptions(ScatterChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}\"\n },\n labels: {\n format: \"{0}, {1}\"\n },\n clip: true\n});\ndeepExtend(ScatterChart.prototype, ClipAnimationMixin, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n});\n\nexport default ScatterChart;","import { drawing as draw, geometry as geom, Color } from '@progress/kendo-drawing';\n\nimport LinePoint from '../line-chart/line-point';\nimport { BORDER_BRIGHTNESS } from '../constants';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend } from '../../common';\n\nvar Bubble = (function (LinePoint) {\n function Bubble(value, options) {\n LinePoint.call(this, value, options);\n\n this.category = value.category;\n }\n\n if ( LinePoint ) Bubble.__proto__ = LinePoint;\n Bubble.prototype = Object.create( LinePoint && LinePoint.prototype );\n Bubble.prototype.constructor = Bubble;\n\n Bubble.prototype.createHighlight = function createHighlight () {\n var highlight = this.options.highlight;\n var border = highlight.border;\n var markers = this.options.markers;\n var center = this.box.center();\n var radius = (markers.size + markers.border.width + border.width) / 2;\n var highlightGroup = new draw.Group();\n var shadow = new draw.Circle(new geom.Circle([ center.x, center.y + radius / 5 + border.width / 2 ], radius + border.width / 2), {\n stroke: {\n color: 'none'\n },\n fill: this.createGradient({\n gradient: 'bubbleShadow',\n color: markers.background,\n stops: [ {\n offset: 0,\n color: markers.background,\n opacity: 0.3\n }, {\n offset: 1,\n color: markers.background,\n opacity: 0\n } ]\n })\n });\n var overlay = new draw.Circle(new geom.Circle([ center.x, center.y ], radius), {\n stroke: {\n color: border.color ||\n new Color(markers.background).brightness(BORDER_BRIGHTNESS).toHex(),\n width: border.width,\n opacity: border.opacity\n },\n fill: {\n color: markers.background,\n opacity: highlight.opacity\n }\n });\n\n highlightGroup.append(shadow, overlay);\n\n return highlightGroup;\n };\n\n return Bubble;\n}(LinePoint));\n\nBubble.prototype.defaults = deepExtend({}, Bubble.prototype.defaults, {\n labels: {\n position: CENTER\n },\n highlight: {\n opacity: 1,\n border: {\n color: \"#fff\",\n width: 2,\n opacity: 1\n }\n }\n});\n\nBubble.prototype.defaults.highlight.zIndex = undefined;\n\nexport default Bubble;","import ScatterChart from '../scatter-charts/scatter-chart';\nimport Bubble from './bubble';\n\nimport { INITIAL_ANIMATION_DURATION, BUBBLE } from '../constants';\n\nimport { MIN_VALUE, CIRCLE } from '../../common/constants';\nimport { deepExtend, isFunction, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar BubbleChart = (function (ScatterChart) {\n function BubbleChart () {\n ScatterChart.apply(this, arguments);\n }\n\n if ( ScatterChart ) BubbleChart.__proto__ = ScatterChart;\n BubbleChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n BubbleChart.prototype.constructor = BubbleChart;\n\n BubbleChart.prototype._initFields = function _initFields () {\n this._maxSize = MIN_VALUE;\n ScatterChart.prototype._initFields.call(this);\n };\n\n BubbleChart.prototype.addValue = function addValue (value, fields) {\n if (value.size !== null && (value.size > 0 || (value.size < 0 && fields.series.negativeValues.visible))) {\n this._maxSize = Math.max(this._maxSize, Math.abs(value.size));\n ScatterChart.prototype.addValue.call(this, value, fields);\n } else {\n this.points.push(null);\n this.seriesPoints[fields.seriesIx].push(null);\n }\n };\n\n BubbleChart.prototype.reflow = function reflow (box) {\n this.updateBubblesSize(box);\n ScatterChart.prototype.reflow.call(this, box);\n };\n\n BubbleChart.prototype.pointType = function pointType () {\n return Bubble;\n };\n\n BubbleChart.prototype.createPoint = function createPoint (value, fields) {\n var series = fields.series;\n var pointsCount = series.data.length;\n var delay = fields.pointIx * (INITIAL_ANIMATION_DURATION / pointsCount);\n var animationOptions = {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay,\n type: BUBBLE\n };\n\n var color = fields.color || series.color;\n if (value.size < 0 && series.negativeValues.visible) {\n color = valueOrDefault(\n series.negativeValues.color, color\n );\n }\n\n var pointOptions = deepExtend({\n labels: {\n animation: {\n delay: delay,\n duration: INITIAL_ANIMATION_DURATION - delay\n }\n }\n }, this.pointOptions(series, fields.seriesIx), {\n markers: {\n type: CIRCLE,\n border: series.border,\n opacity: series.opacity,\n animation: animationOptions\n }\n });\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n pointOptions.markers.background = color;\n\n var point = new Bubble(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n BubbleChart.prototype.updateBubblesSize = function updateBubblesSize (box) {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n var boxSize = Math.min(box.width(), box.height());\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesPoints = this$1.seriesPoints[seriesIx];\n var minSize = currentSeries.minSize || Math.max(boxSize * 0.02, 10);\n var maxSize = currentSeries.maxSize || boxSize * 0.2;\n var minR = minSize / 2;\n var maxR = maxSize / 2;\n var minArea = Math.PI * minR * minR;\n var maxArea = Math.PI * maxR * maxR;\n var areaRange = maxArea - minArea;\n var areaRatio = areaRange / this$1._maxSize;\n\n for (var pointIx = 0; pointIx < seriesPoints.length; pointIx++) {\n var point = seriesPoints[pointIx];\n if (point) {\n var area = Math.abs(point.value.size) * areaRatio;\n var radius = Math.sqrt((minArea + area) / Math.PI);\n var baseZIndex = valueOrDefault(point.options.zIndex, 0);\n var zIndex = baseZIndex + (1 - radius / maxR);\n\n deepExtend(point.options, {\n zIndex: zIndex,\n markers: {\n size: radius * 2,\n zIndex: zIndex\n },\n labels: {\n zIndex: zIndex + 1\n }\n });\n }\n }\n }\n };\n\n BubbleChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.size, point.category);\n };\n\n BubbleChart.prototype.createAnimation = function createAnimation () {};\n BubbleChart.prototype.createVisual = function createVisual () {};\n\n return BubbleChart;\n}(ScatterChart));\n\nsetDefaultOptions(BubbleChart, {\n tooltip: {\n format: \"{3}\"\n },\n labels: {\n format: \"{3}\"\n }\n});\n\nexport default BubbleChart;","import { ShapeElement } from '../../core';\nimport { deepExtend } from '../../common';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nvar Target = (function (ShapeElement) {\n\tfunction Target () {\n\t\tShapeElement.apply(this, arguments);\n\t}if ( ShapeElement ) Target.__proto__ = ShapeElement;\n\tTarget.prototype = Object.create( ShapeElement && ShapeElement.prototype );\n\tTarget.prototype.constructor = Target;\n\n\t\n\n\treturn Target;\n}(ShapeElement));\n\ndeepExtend(Target.prototype, PointEventsMixin);\n\nexport default Target;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport Target from './target';\n\nimport { Box, ChartElement } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\nimport Bar from '../bar-chart/bar';\n\nimport { WHITE, TOP, RIGHT } from '../../common/constants';\nimport { alignPathToPixel, deepExtend, defined, getTemplate, setDefaultOptions, valueOrDefault } from '../../common';\n\nimport BarLabel from '../bar-chart/bar-label';\n\nvar Bullet = (function (ChartElement) {\n function Bullet(value, options) {\n ChartElement.call(this, options);\n\n this.aboveAxis = this.options.aboveAxis;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n if ( ChartElement ) Bullet.__proto__ = ChartElement;\n Bullet.prototype = Object.create( ChartElement && ChartElement.prototype );\n Bullet.prototype.constructor = Bullet;\n\n Bullet.prototype.render = function render () {\n var options = this.options;\n\n if (!this._rendered) {\n this._rendered = true;\n\n if (defined(this.value.target)) {\n this.target = new Target({\n type: options.target.shape,\n background: options.target.color || this.color,\n opacity: options.opacity,\n zIndex: options.zIndex,\n border: options.target.border,\n vAlign: TOP,\n align: RIGHT\n });\n\n this.target.value = this.value;\n this.target.dataItem = this.dataItem;\n this.target.series = this.series;\n\n this.append(this.target);\n }\n\n this.createLabel();\n this.createNote();\n }\n };\n\n Bullet.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n this.label = new BarLabel(labelText, labels, pointData);\n this.append(this.label);\n }\n };\n\n Bullet.prototype.reflow = function reflow (box) {\n this.render();\n\n var ref = this;\n var options = ref.options;\n var target = ref.target;\n var chart = ref.owner;\n var invertAxes = options.invertAxes;\n var valueAxis = chart.seriesValueAxis(this.options);\n var categorySlot = chart.categorySlot(chart.categoryAxis, options.categoryIx, valueAxis);\n var targetValueSlot = valueAxis.getSlot(this.value.target);\n var targetSlotX = invertAxes ? targetValueSlot : categorySlot;\n var targetSlotY = invertAxes ? categorySlot : targetValueSlot;\n\n if (target) {\n var targetSlot = new Box(\n targetSlotX.x1, targetSlotY.y1,\n targetSlotX.x2, targetSlotY.y2\n );\n target.options.height = invertAxes ? targetSlot.height() : options.target.line.width;\n target.options.width = invertAxes ? options.target.line.width : targetSlot.width();\n target.reflow(targetSlot);\n }\n\n var label = this.label;\n if (label) {\n label.options.aboveAxis = this.aboveAxis;\n label.reflow(box);\n }\n\n if (this.note) {\n this.note.reflow(box);\n }\n\n this.box = box;\n };\n\n Bullet.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options;\n var body = draw.Path.fromRect(this.box.toRect(), {\n fill: {\n color: this.color,\n opacity: options.opacity\n },\n stroke: null\n });\n\n if (options.border.width > 0) {\n body.options.set(\"stroke\", {\n color: options.border.color || this.color,\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: valueOrDefault(options.border.opacity, options.opacity)\n });\n }\n\n this.bodyVisual = body;\n\n alignPathToPixel(body);\n this.visual.append(body);\n };\n\n Bullet.prototype.createAnimation = function createAnimation () {\n if (this.bodyVisual) {\n this.animation = draw.Animation.create(\n this.bodyVisual, this.options.animation\n );\n }\n };\n\n Bullet.prototype.createHighlight = function createHighlight (style) {\n return draw.Path.fromRect(this.box.toRect(), style);\n };\n\n Bullet.prototype.highlightVisual = function highlightVisual () {\n return this.bodyVisual;\n };\n\n Bullet.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n rect: this.box.toRect(),\n visual: this.bodyVisual,\n options: this.options\n };\n };\n\n Bullet.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n Bullet.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series\n };\n };\n\n Bullet.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n return Bullet;\n}(ChartElement));\n\nBullet.prototype.tooltipAnchor = Bar.prototype.tooltipAnchor;\n\nsetDefaultOptions(Bullet, {\n border: {\n width: 1\n },\n vertical: false,\n opacity: 1,\n target: {\n shape: \"\",\n border: {\n width: 0,\n color: \"green\"\n },\n line: {\n width: 2\n }\n },\n labels: {\n visible: false\n },\n tooltip: {\n format: \"Current: {0}
Target: {1}\"\n },\n notes: {\n label: {}\n }\n});\n\ndeepExtend(Bullet.prototype, PointEventsMixin);\ndeepExtend(Bullet.prototype, NoteMixin);\n\nexport default Bullet;","\nimport CategoricalChart from '../categorical-chart';\nimport BarChart from '../bar-chart/bar-chart';\nimport Bullet from './bullet';\nimport ClusterLayout from '../layout/cluster-layout';\nimport { BAR } from '../constants';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { deepExtend, defined, isArray, isFunction, isObject, setDefaultOptions } from '../../common';\n\nvar BulletChart = (function (CategoricalChart) {\n function BulletChart(plotArea, options) {\n\n wrapData(options);\n\n CategoricalChart.call(this, plotArea, options);\n }\n\n if ( CategoricalChart ) BulletChart.__proto__ = CategoricalChart;\n BulletChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n BulletChart.prototype.constructor = BulletChart;\n\n BulletChart.prototype.reflowCategories = function reflowCategories (categorySlots) {\n var children = this.children;\n var childrenLength = children.length;\n\n for (var i = 0; i < childrenLength; i++) {\n children[i].reflow(categorySlots[i]);\n }\n };\n\n BulletChart.prototype.plotRange = function plotRange (point) {\n var series = point.series;\n var valueAxis = this.seriesValueAxis(series);\n var axisCrossingValue = this.categoryAxisCrossingValue(valueAxis);\n\n return [ axisCrossingValue, point.value.current || axisCrossingValue ];\n };\n\n BulletChart.prototype.createPoint = function createPoint (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var value = data.valueFields;\n\n var bulletOptions = deepExtend({\n vertical: !options.invertAxes,\n overlay: series.overlay,\n categoryIx: categoryIx,\n invertAxes: options.invertAxes\n }, series);\n\n var color = data.fields.color || series.color;\n bulletOptions = this.evalPointOptions(\n bulletOptions, value, category, categoryIx, series, seriesIx\n );\n\n if (isFunction(series.color)) {\n color = bulletOptions.color;\n }\n\n var bullet = new Bullet(value, bulletOptions);\n bullet.color = color;\n\n var cluster = children[categoryIx];\n if (!cluster) {\n cluster = new ClusterLayout({\n vertical: options.invertAxes,\n gap: options.gap,\n spacing: options.spacing,\n rtl: !options.invertAxes && (this.chartService || {}).rtl\n });\n this.append(cluster);\n }\n\n cluster.append(bullet);\n\n return bullet;\n };\n\n BulletChart.prototype.updateRange = function updateRange (value, fields) {\n var current = value.current;\n var target = value.target;\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (defined(current) && !isNaN(current) && defined(target && !isNaN(target))) {\n axisRange = this.valueAxisRanges[axisName] =\n axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, current, target);\n axisRange.max = Math.max(axisRange.max, current, target);\n }\n };\n\n BulletChart.prototype.formatPointValue = function formatPointValue (point, format) {\n return this.chartService.format.auto(format, point.value.current, point.value.target);\n };\n\n BulletChart.prototype.pointValue = function pointValue (data) {\n return data.valueFields.current;\n };\n\n BulletChart.prototype.aboveAxis = function aboveAxis (point) {\n var value = point.value.current;\n\n return value > 0;\n };\n\n BulletChart.prototype.createAnimation = function createAnimation () {\n var this$1 = this;\n\n var points = this.points;\n\n this._setAnimationOptions();\n\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n point.options.animation = this$1.options.animation;\n point.createAnimation();\n }\n };\n\n return BulletChart;\n}(CategoricalChart));\n\nBulletChart.prototype._setAnimationOptions = BarChart.prototype._setAnimationOptions;\n\nsetDefaultOptions(BulletChart, {\n animation: {\n type: BAR\n }\n});\n\nfunction wrapData(options) {\n var series = options.series;\n\n for (var i = 0; i < series.length; i++) {\n var seriesItem = series[i];\n var data = seriesItem.data;\n if (data && !isArray(data[0]) && !isObject(data[0])) {\n seriesItem.data = [ data ];\n }\n }\n}\n\nexport default BulletChart;","import { Color } from '@progress/kendo-drawing';\n\nimport { Class, defined, deepExtend, setDefaultOptions, valueOrDefault, getSpacing, styleValue } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nvar BaseTooltip = (function (Class) {\n function BaseTooltip(chartService, options) {\n Class.call(this);\n\n this.chartService = chartService;\n this.options = deepExtend({}, this.options, options);\n }\n\n if ( Class ) BaseTooltip.__proto__ = Class;\n BaseTooltip.prototype = Object.create( Class && Class.prototype );\n BaseTooltip.prototype.constructor = BaseTooltip;\n\n BaseTooltip.prototype.getStyle = function getStyle (options, point) {\n var background = options.background;\n var border = options.border.color;\n\n if (point) {\n var pointColor = point.color || point.options.color;\n background = valueOrDefault(background, pointColor);\n border = valueOrDefault(border, pointColor);\n }\n\n var padding = getSpacing(options.padding || {}, \"auto\");\n\n return {\n backgroundColor: background,\n borderColor: border,\n font: options.font,\n color: options.color,\n opacity: options.opacity,\n borderWidth: styleValue(options.border.width),\n paddingTop: styleValue(padding.top),\n paddingBottom: styleValue(padding.bottom),\n paddingLeft: styleValue(padding.left),\n paddingRight: styleValue(padding.right)\n };\n };\n\n BaseTooltip.prototype.show = function show (options, tooltipOptions, point) {\n options.format = tooltipOptions.format;\n\n var style = this.getStyle(tooltipOptions, point);\n options.style = style;\n\n var background = new Color(style.backgroundColor);\n if (!defined(tooltipOptions.color) && !background.isDark()) {\n options.className = \"k-chart-tooltip-inverse\";\n }\n\n this.chartService.notify(SHOW_TOOLTIP, options);\n\n this.visible = true;\n };\n\n BaseTooltip.prototype.hide = function hide () {\n if (this.chartService) {\n this.chartService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n };\n\n BaseTooltip.prototype.destroy = function destroy () {\n delete this.chartService;\n };\n\n return BaseTooltip;\n}(Class));\n\nsetDefaultOptions(BaseTooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n\nexport default BaseTooltip;\n","import BaseTooltip from '../tooltip/base-tooltip';\n\nimport { HIDE_TOOLTIP } from '../constants';\nimport { TOP, BOTTOM, LEFT, RIGHT, CENTER, DATE } from '../../common/constants';\nimport { setDefaultOptions } from '../../common';\n\nvar CrosshairTooltip = (function (BaseTooltip) {\n function CrosshairTooltip(chartService, crosshair, options) {\n BaseTooltip.call(this, chartService, options);\n\n this.crosshair = crosshair;\n this.formatService = chartService.format;\n this.initAxisName();\n }\n\n if ( BaseTooltip ) CrosshairTooltip.__proto__ = BaseTooltip;\n CrosshairTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n CrosshairTooltip.prototype.constructor = CrosshairTooltip;\n\n CrosshairTooltip.prototype.initAxisName = function initAxisName () {\n var axis = this.crosshair.axis;\n var plotArea = axis.plotArea;\n var name;\n if (plotArea.categoryAxis) {\n name = axis.getCategory ? \"categoryAxis\" : \"valueAxis\";\n } else {\n name = axis.options.vertical ? \"yAxis\" : \"xAxis\";\n }\n this.axisName = name;\n };\n\n CrosshairTooltip.prototype.showAt = function showAt (point) {\n var ref = this;\n var axis = ref.crosshair.axis;\n var options = ref.options;\n var value = axis[options.stickyMode ? \"getCategory\" : \"getValue\"](point);\n var formattedValue = value;\n\n if (options.format) {\n formattedValue = this.formatService.auto(options.format, value);\n } else if (axis.options.type === DATE) {\n formattedValue = this.formatService.auto(axis.options.labels.dateFormats[axis.options.baseUnit], value);\n }\n\n this.show({\n point: point,\n anchor: this.getAnchor(),\n crosshair: this.crosshair,\n value: formattedValue,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n }, this.options);\n };\n\n CrosshairTooltip.prototype.hide = function hide () {\n this.chartService.notify(HIDE_TOOLTIP, {\n crosshair: this.crosshair,\n axisName: this.axisName,\n axisIndex: this.crosshair.axis.axisIndex\n });\n };\n\n CrosshairTooltip.prototype.getAnchor = function getAnchor () {\n var ref = this;\n var crosshair = ref.crosshair;\n var ref_options = ref.options;\n var position = ref_options.position;\n var padding = ref_options.padding;\n var vertical = !crosshair.axis.options.vertical;\n var lineBox = crosshair.line.bbox();\n var horizontalAlign, verticalAlign, point;\n\n if (vertical) {\n horizontalAlign = CENTER;\n if (position === BOTTOM) {\n verticalAlign = TOP;\n point = lineBox.bottomLeft().translate(0, padding);\n } else {\n verticalAlign = BOTTOM;\n point = lineBox.topLeft().translate(0, -padding);\n }\n } else {\n verticalAlign = CENTER;\n if (position === LEFT) {\n horizontalAlign = RIGHT;\n point = lineBox.topLeft().translate(-padding, 0);\n } else {\n horizontalAlign = LEFT;\n point = lineBox.topRight().translate(padding, 0);\n }\n }\n\n return {\n point: point,\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n };\n\n return CrosshairTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(CrosshairTooltip, {\n padding: 10\n});\n\nexport default CrosshairTooltip;\n\n","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, CategoryAxis } from '../../core';\nimport CrosshairTooltip from './crosshair-tooltip';\n\nimport { BLACK, X, Y } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar Crosshair = (function (ChartElement) {\n function Crosshair(chartService, axis, options) {\n ChartElement.call(this, options);\n\n this.axis = axis;\n this.stickyMode = axis instanceof CategoryAxis;\n\n var tooltipOptions = this.options.tooltip;\n\n if (tooltipOptions.visible) {\n this.tooltip = new CrosshairTooltip(chartService, this,\n deepExtend({}, tooltipOptions, { stickyMode: this.stickyMode })\n );\n }\n }\n\n if ( ChartElement ) Crosshair.__proto__ = ChartElement;\n Crosshair.prototype = Object.create( ChartElement && ChartElement.prototype );\n Crosshair.prototype.constructor = Crosshair;\n\n Crosshair.prototype.showAt = function showAt (point) {\n this.point = point;\n this.moveLine();\n this.line.visible(true);\n\n if (this.tooltip) {\n this.tooltip.showAt(point);\n }\n };\n\n Crosshair.prototype.hide = function hide () {\n this.line.visible(false);\n\n if (this.tooltip) {\n this.tooltip.hide();\n }\n };\n\n Crosshair.prototype.moveLine = function moveLine () {\n var ref = this;\n var axis = ref.axis;\n var point = ref.point;\n var vertical = axis.options.vertical;\n var box = this.getBox();\n var dim = vertical ? Y : X;\n var lineStart = new geom.Point(box.x1, box.y1);\n var lineEnd;\n\n if (vertical) {\n lineEnd = new geom.Point(box.x2, box.y1);\n } else {\n lineEnd = new geom.Point(box.x1, box.y2);\n }\n\n if (point) {\n if (this.stickyMode) {\n var slot = axis.getSlot(axis.pointCategoryIndex(point));\n lineStart[dim] = lineEnd[dim] = slot.center()[dim];\n } else {\n lineStart[dim] = lineEnd[dim] = point[dim];\n }\n }\n\n this.box = box;\n\n this.line.moveTo(lineStart).lineTo(lineEnd);\n };\n\n Crosshair.prototype.getBox = function getBox () {\n var axis = this.axis;\n var axes = axis.pane.axes;\n var length = axes.length;\n var vertical = axis.options.vertical;\n var box = axis.lineBox().clone();\n var dim = vertical ? X : Y;\n var axisLineBox;\n\n for (var i = 0; i < length; i++) {\n var currentAxis = axes[i];\n if (currentAxis.options.vertical !== vertical) {\n if (!axisLineBox) {\n axisLineBox = currentAxis.lineBox().clone();\n } else {\n axisLineBox.wrap(currentAxis.lineBox());\n }\n }\n }\n\n box[dim + 1] = axisLineBox[dim + 1];\n box[dim + 2] = axisLineBox[dim + 2];\n\n return box;\n };\n\n Crosshair.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options;\n this.line = new draw.Path({\n stroke: {\n color: options.color,\n width: options.width,\n opacity: options.opacity,\n dashType: options.dashType\n },\n visible: false\n });\n\n this.moveLine();\n this.visual.append(this.line);\n };\n\n Crosshair.prototype.destroy = function destroy () {\n if (this.tooltip) {\n this.tooltip.destroy();\n }\n\n ChartElement.prototype.destroy.call(this);\n };\n\n return Crosshair;\n}(ChartElement));\n\nsetDefaultOptions(Crosshair, {\n color: BLACK,\n width: 2,\n zIndex: -1,\n tooltip: {\n visible: false\n }\n});\n\nexport default Crosshair;","import { drawing as draw } from '@progress/kendo-drawing';\nimport { alignPathToPixel } from '../common';\n\nimport { ChartElement } from '../core';\n\nvar ChartContainer = (function (ChartElement) {\n function ChartContainer(options, pane) {\n ChartElement.call(this, options);\n this.pane = pane;\n }\n\n if ( ChartElement ) ChartContainer.__proto__ = ChartElement;\n ChartContainer.prototype = Object.create( ChartElement && ChartElement.prototype );\n ChartContainer.prototype.constructor = ChartContainer;\n\n ChartContainer.prototype.shouldClip = function shouldClip () {\n var children = this.children;\n var length = children.length;\n\n for (var i = 0; i < length; i++) {\n if (children[i].options.clip === true) {\n return true;\n }\n }\n return false;\n };\n\n ChartContainer.prototype._clipBox = function _clipBox () {\n return this.pane.chartsBox();\n };\n\n ChartContainer.prototype.createVisual = function createVisual () {\n this.visual = new draw.Group({\n zIndex: 0\n });\n\n if (this.shouldClip()) {\n var clipBox = this.clipBox = this._clipBox();\n var clipRect = clipBox.toRect();\n var clipPath = draw.Path.fromRect(clipRect);\n alignPathToPixel(clipPath);\n\n this.visual.clip(clipPath);\n this.unclipLabels();\n }\n };\n\n ChartContainer.prototype.stackRoot = function stackRoot () {\n return this;\n };\n\n ChartContainer.prototype.unclipLabels = function unclipLabels () {\n var ref = this;\n var charts = ref.children;\n var clipBox = ref.clipBox;\n\n for (var i = 0; i < charts.length; i++) {\n var points = charts[i].points || {};\n var length = points.length;\n\n for (var j = 0; j < length; j++) {\n var point = points[j];\n if (point && point.visible !== false && point.overlapsBox && point.overlapsBox(clipBox)) {\n if (point.unclipElements) {\n point.unclipElements();\n } else {\n var label = point.label;\n var note = point.note;\n\n if (label && label.options.visible) {\n if (label.alignToClipBox) {\n label.alignToClipBox(clipBox);\n }\n label.options.noclip = true;\n }\n\n if (note && note.options.visible) {\n note.options.noclip = true;\n }\n }\n }\n }\n }\n };\n\n ChartContainer.prototype.destroy = function destroy () {\n ChartElement.prototype.destroy.call(this);\n\n delete this.parent;\n };\n\n return ChartContainer;\n}(ChartElement));\n\nChartContainer.prototype.isStackRoot = true;\n\nexport default ChartContainer;","import { ChartElement, BoxElement, Title, Box } from '../core';\nimport { ChartPane } from './api-elements';\nimport ChartContainer from './chart-container';\n\nimport { PANE_RENDER } from './constants';\nimport { TOP, LEFT, X, Y } from '../common/constants';\nimport { append, deepExtend, isObject, last, setDefaultOptions } from '../common';\n\nvar Pane = (function (BoxElement) {\n function Pane(options) {\n BoxElement.call(this, options);\n\n this.id = paneID();\n\n this.createTitle();\n\n this.content = new ChartElement();\n\n this.chartContainer = new ChartContainer({}, this);\n this.append(this.content);\n\n this.axes = [];\n this.charts = [];\n }\n\n if ( BoxElement ) Pane.__proto__ = BoxElement;\n Pane.prototype = Object.create( BoxElement && BoxElement.prototype );\n Pane.prototype.constructor = Pane;\n\n Pane.prototype.createTitle = function createTitle () {\n var titleOptions = this.options.title;\n if (isObject(titleOptions)) {\n titleOptions = deepExtend({}, titleOptions, {\n align: titleOptions.position,\n position: TOP\n });\n }\n\n this.title = Title.buildTitle(titleOptions, Pane.prototype.options.title);\n if (this.title) {\n this.append(this.title);\n }\n };\n\n Pane.prototype.appendAxis = function appendAxis (axis) {\n this.content.append(axis);\n this.axes.push(axis);\n axis.pane = this;\n };\n\n Pane.prototype.appendAxisAt = function appendAxisAt (axis, pos) {\n this.content.append(axis);\n this.axes.splice(pos, 0, axis);\n axis.pane = this;\n };\n\n Pane.prototype.appendChart = function appendChart (chart) {\n if (this.chartContainer.parent !== this.content) {\n this.content.append(this.chartContainer);\n }\n\n this.charts.push(chart);\n this.chartContainer.append(chart);\n chart.pane = this;\n };\n\n Pane.prototype.empty = function empty () {\n var this$1 = this;\n\n var plotArea = this.parent;\n\n if (plotArea) {\n for (var i = 0; i < this.axes.length; i++) {\n plotArea.removeAxis(this$1.axes[i]);\n }\n\n for (var i$1 = 0; i$1 < this.charts.length; i$1++) {\n plotArea.removeChart(this$1.charts[i$1]);\n }\n }\n\n this.axes = [];\n this.charts = [];\n\n this.content.destroy();\n this.content.children = [];\n this.chartContainer.children = [];\n };\n\n Pane.prototype.reflow = function reflow (targetBox) {\n // Content (such as charts) is rendered, but excluded from reflows\n var content;\n if (last(this.children) === this.content) {\n content = this.children.pop();\n }\n\n BoxElement.prototype.reflow.call(this, targetBox);\n\n if (content) {\n this.children.push(content);\n }\n\n if (this.title) {\n this.contentBox.y1 += this.title.box.height();\n }\n };\n\n Pane.prototype.visualStyle = function visualStyle () {\n var style = BoxElement.prototype.visualStyle.call(this);\n style.zIndex = -10;\n\n return style;\n };\n\n Pane.prototype.renderComplete = function renderComplete () {\n if (this.options.visible) {\n this.createGridLines();\n }\n };\n\n Pane.prototype.stackRoot = function stackRoot () {\n return this;\n };\n\n Pane.prototype.clipRoot = function clipRoot () {\n return this;\n };\n\n Pane.prototype.createGridLines = function createGridLines () {\n var axes = this.axes;\n var allAxes = axes.concat(this.parent.axes);\n var vGridLines = [];\n var hGridLines = [];\n\n // TODO\n // Is full combination really necessary?\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var vertical = axis.options.vertical;\n var gridLines = vertical ? vGridLines : hGridLines;\n for (var j = 0; j < allAxes.length; j++) {\n if (gridLines.length === 0) {\n var altAxis = allAxes[j];\n if (vertical !== altAxis.options.vertical) {\n append(gridLines, axis.createGridLines(altAxis));\n }\n }\n }\n }\n };\n\n Pane.prototype.refresh = function refresh () {\n this.visual.clear();\n\n this.content.parent = null;\n this.content.createGradient = this.createGradient.bind(this);\n this.content.renderVisual();\n this.content.parent = this;\n\n if (this.title) {\n this.visual.append(this.title.visual);\n }\n\n this.visual.append(this.content.visual);\n\n this.renderComplete();\n this.notifyRender();\n };\n\n Pane.prototype.chartsBox = function chartsBox () {\n var axes = this.axes;\n var length = axes.length;\n var chartsBox = new Box();\n\n for (var idx = 0; idx < length; idx++) {\n var axis = axes[idx];\n var axisValueField = axis.options.vertical ? Y : X;\n var lineBox = axis.lineBox();\n chartsBox[axisValueField + 1] = lineBox[axisValueField + 1];\n chartsBox[axisValueField + 2] = lineBox[axisValueField + 2];\n }\n\n if (chartsBox.x2 === 0) {\n var allAxes = this.parent.axes;\n var length$1 = allAxes.length;\n\n for (var idx$1 = 0; idx$1 < length$1; idx$1++) {\n var axis$1 = allAxes[idx$1];\n if (!axis$1.options.vertical) {\n var lineBox$1 = axis$1.lineBox();\n chartsBox.x1 = lineBox$1.x1;\n chartsBox.x2 = lineBox$1.x2;\n }\n }\n }\n return chartsBox;\n };\n\n Pane.prototype.clipBox = function clipBox () {\n return this.chartContainer.clipBox;\n };\n\n Pane.prototype.notifyRender = function notifyRender () {\n var service = this.getService();\n if (service) {\n service.notify(PANE_RENDER, {\n pane: new ChartPane(this),\n index: this.paneIndex,\n name: this.options.name\n });\n }\n };\n\n return Pane;\n}(BoxElement));\n\nvar ID = 1;\n\nfunction paneID() {\n return \"pane\" + ID++;\n}\n\nPane.prototype.isStackRoot = true;\n\nsetDefaultOptions(Pane, {\n zIndex: -1,\n shrinkToFit: true,\n title: {\n align: LEFT\n },\n visible: true\n});\n\nexport default Pane;\n","export default function appendIfNotNull(array, element) {\n if (element !== null) {\n array.push(element);\n }\n}","import { defined } from '../../common';\n\nexport default function segmentVisible(series, fields, index) {\n var visible = fields.visible;\n if (defined(visible)) {\n return visible;\n }\n\n var pointVisibility = series.pointVisibility;\n if (pointVisibility) {\n return pointVisibility[index];\n }\n}\n\n","import { isNumber, isString } from '../../common';\nimport SeriesBinder from '../series-binder';\nimport segmentVisible from './segment-visible';\n\nexport default function bindSegments(series) {\n var data = series.data;\n var points = [];\n var sum = 0;\n var count = 0;\n\n for (var idx = 0; idx < data.length; idx++) {\n var pointData = SeriesBinder.current.bindPoint(series, idx);\n var value = pointData.valueFields.value;\n\n\n if (isString(value)) {\n value = parseFloat(value);\n }\n\n if (isNumber(value)) {\n pointData.visible = segmentVisible(series, pointData.fields, idx) !== false;\n\n pointData.value = Math.abs(value);\n points.push(pointData);\n\n if (pointData.visible) {\n sum += pointData.value;\n }\n\n if (value !== 0) {\n count++;\n }\n } else {\n points.push(null);\n }\n }\n\n return {\n total: sum,\n points: points,\n count: count\n };\n}","export default function equalsIgnoreCase(a, b) {\n if (a && b) {\n return a.toLowerCase() === b.toLowerCase();\n }\n\n return a === b;\n}","import { inArray } from '../../common';\n\nexport default function filterSeriesByType(series, types) {\n var result = [];\n\n var seriesTypes = [].concat(types);\n for (var idx = 0; idx < series.length; idx++) {\n var currentSeries = series[idx];\n if (inArray(currentSeries.type, seriesTypes)) {\n result.push(currentSeries);\n }\n }\n\n return result;\n}","import { parseDate } from '../../date-utils';\nimport { getter } from '../../common';\n\nexport default function getDateField(field, row, intlService) {\n if (row === null) {\n return row;\n }\n\n var key = \"_date_\" + field;\n var value = row[key];\n\n if (!value) {\n value = parseDate(intlService, getter(field, true)(row));\n row[key] = value;\n }\n\n return value;\n}","import equalsIgnoreCase from './equals-ignore-case';\n\nimport { DATE } from '../../common/constants';\n\nexport default function isDateAxis(axisOptions, sampleCategory) {\n var type = axisOptions.type;\n var dateCategory = sampleCategory instanceof Date;\n\n return (!type && dateCategory) || equalsIgnoreCase(type, DATE);\n}","export default function singleItemOrArray(array) {\n return array.length === 1 ? array[0] : array;\n}","import { INTERPOLATE, ZERO } from '../constants';\nimport { convertableToNumber } from '../../common';\nimport SeriesBinder from '../series-binder';\n\nvar AREA_REGEX = /area/i;\n\nfunction seriesMissingValues(series) {\n if (series.missingValues) {\n return series.missingValues;\n }\n\n return AREA_REGEX.test(series.type) || series.stack ? ZERO : INTERPOLATE;\n}\n\nfunction hasValue(series, item) {\n var fields = SeriesBinder.current.bindPoint(series, null, item);\n var valueFields = fields.valueFields;\n\n for (var field in valueFields) {\n if (convertableToNumber(valueFields[field])) {\n return true;\n }\n }\n}\n\nfunction findNext(ref) {\n var start = ref.start;\n var dir = ref.dir;\n var min = ref.min;\n var max = ref.max;\n var getter = ref.getter;\n var hasItem = ref.hasItem;\n var series = ref.series;\n\n var pointHasValue, outPoint;\n var idx = start;\n do {\n idx += dir;\n //aggregating and binding the item takes too much time for large number of categories\n //will assume that if the aggregation does not create value for a missing item for one it will not create for others\n if (hasItem(idx)) {\n outPoint = getter(idx);\n pointHasValue = hasValue(series, outPoint.item);\n }\n } while (min <= idx && idx <= max && !pointHasValue);\n\n if (pointHasValue) {\n return outPoint;\n }\n}\n\nexport default function createOutOfRangePoints(series, range, count, getter, hasItem) {\n var min = range.min;\n var max = range.max;\n var hasMinPoint = min > 0 && min < count;\n var hasMaxPoint = max + 1 < count;\n\n if (hasMinPoint || hasMaxPoint) {\n var missingValues = seriesMissingValues(series);\n var minPoint, maxPoint;\n if (missingValues !== INTERPOLATE) {\n if (hasMinPoint) {\n minPoint = getter(min - 1);\n }\n\n if (hasMaxPoint) {\n maxPoint = getter(max + 1);\n }\n } else {\n var outPoint, pointHasValue;\n if (hasMinPoint) {\n outPoint = getter(min - 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n minPoint = findNext({\n start: min,\n dir: -1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n minPoint = outPoint;\n }\n }\n\n if (hasMaxPoint) {\n outPoint = getter(max + 1);\n pointHasValue = hasValue(series, outPoint.item);\n if (!pointHasValue) {\n maxPoint = findNext({\n start: max,\n dir: 1,\n min: 0,\n max: count - 1,\n getter: getter,\n hasItem: hasItem,\n series: series\n });\n } else {\n maxPoint = outPoint;\n }\n }\n }\n\n if (minPoint) {\n series._outOfRangeMinPoint = minPoint;\n }\n\n if (maxPoint) {\n series._outOfRangeMaxPoint = maxPoint;\n }\n }\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box } from '../../core';\nimport Crosshair from '../crosshair/crosshair';\nimport Pane from '../pane';\nimport { hasValue } from '../utils';\n\nimport { WHITE, BLACK, X, Y, COORD_PRECISION, TOP, BOTTOM, LEFT, RIGHT, START, END } from '../../common/constants';\nimport { append, deepExtend, defined, getSpacing, getTemplate, inArray, isFunction, isString, limitValue, round, setDefaultOptions } from '../../common';\n\nvar PlotAreaBase = (function (ChartElement) {\n function PlotAreaBase(series, options, chartService) {\n ChartElement.call(this, options);\n\n this.initFields(series, options);\n this.series = series;\n this.initSeries();\n this.charts = [];\n this.options.legend = this.options.legend || {};\n this.options.legend.items = [];\n this.axes = [];\n this.crosshairs = [];\n this.chartService = chartService;\n this.originalOptions = options;\n\n this.createPanes();\n this.render();\n this.createCrosshairs();\n }\n\n if ( ChartElement ) PlotAreaBase.__proto__ = ChartElement;\n PlotAreaBase.prototype = Object.create( ChartElement && ChartElement.prototype );\n PlotAreaBase.prototype.constructor = PlotAreaBase;\n\n PlotAreaBase.prototype.initFields = function initFields () { };\n\n PlotAreaBase.prototype.initSeries = function initSeries () {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n series[i].index = i;\n }\n };\n\n PlotAreaBase.prototype.createPanes = function createPanes () {\n var this$1 = this;\n\n var titleOptions = this.options.title || {};\n var paneDefaults = this.options.paneDefaults;\n var paneOptions = this.options.panes || [];\n var panesLength = Math.max(paneOptions.length, 1);\n var panes = [];\n\n var defaults = deepExtend({\n title: {\n color: titleOptions.color\n }\n }, paneDefaults);\n\n for (var i = 0; i < panesLength; i++) {\n var options = deepExtend({}, defaults, paneOptions[i]);\n if (isString(options.title)) {\n options.title = deepExtend({ text: options.title }, defaults.title);\n }\n\n var currentPane = new Pane(options);\n currentPane.paneIndex = i;\n\n panes.push(currentPane);\n this$1.append(currentPane);\n }\n\n this.panes = panes;\n };\n\n PlotAreaBase.prototype.crosshairOptions = function crosshairOptions (axis) {\n return axis.options.crosshair;\n };\n\n PlotAreaBase.prototype.createCrosshairs = function createCrosshairs (panes) {\n var this$1 = this;\n if ( panes === void 0 ) panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n for (var j = 0; j < pane.axes.length; j++) {\n var axis = pane.axes[j];\n var options = this$1.crosshairOptions(axis);\n if (options && options.visible) {\n var currentCrosshair = new Crosshair(this$1.chartService, axis, options);\n\n this$1.crosshairs.push(currentCrosshair);\n pane.content.append(currentCrosshair);\n }\n }\n }\n };\n\n PlotAreaBase.prototype.removeCrosshairs = function removeCrosshairs (pane) {\n var crosshairs = this.crosshairs;\n var axes = pane.axes;\n\n for (var i = crosshairs.length - 1; i >= 0; i--) {\n for (var j = 0; j < axes.length; j++) {\n if (crosshairs[i].axis === axes[j]) {\n crosshairs.splice(i, 1);\n break;\n }\n }\n }\n };\n\n PlotAreaBase.prototype.hideCrosshairs = function hideCrosshairs () {\n var crosshairs = this.crosshairs;\n for (var idx = 0; idx < crosshairs.length; idx++) {\n crosshairs[idx].hide();\n }\n };\n\n PlotAreaBase.prototype.findPane = function findPane (name) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].options.name === name) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane || panes[0];\n };\n\n PlotAreaBase.prototype.findPointPane = function findPointPane (point) {\n var panes = this.panes;\n var matchingPane;\n\n for (var i = 0; i < panes.length; i++) {\n if (panes[i].box.containsPoint(point)) {\n matchingPane = panes[i];\n break;\n }\n }\n\n return matchingPane;\n };\n\n PlotAreaBase.prototype.appendAxis = function appendAxis (axis) {\n var pane = this.findPane(axis.options.pane);\n\n pane.appendAxis(axis);\n this.axes.push(axis);\n axis.plotArea = this;\n };\n\n PlotAreaBase.prototype.removeAxis = function removeAxis (axisToRemove) {\n var this$1 = this;\n\n var filteredAxes = [];\n\n for (var i = 0; i < this.axes.length; i++) {\n var axis = this$1.axes[i];\n if (axisToRemove !== axis) {\n filteredAxes.push(axis);\n } else {\n axis.destroy();\n }\n }\n\n this.axes = filteredAxes;\n };\n\n PlotAreaBase.prototype.appendChart = function appendChart (chart, pane) {\n this.charts.push(chart);\n if (pane) {\n pane.appendChart(chart);\n } else {\n this.append(chart);\n }\n };\n\n PlotAreaBase.prototype.removeChart = function removeChart (chartToRemove) {\n var this$1 = this;\n\n var filteredCharts = [];\n\n for (var i = 0; i < this.charts.length; i++) {\n var chart = this$1.charts[i];\n if (chart !== chartToRemove) {\n filteredCharts.push(chart);\n } else {\n chart.destroy();\n }\n }\n\n this.charts = filteredCharts;\n };\n\n PlotAreaBase.prototype.addToLegend = function addToLegend (series) {\n var count = series.length;\n var legend = this.options.legend;\n var labels = legend.labels || {};\n var inactiveItems = legend.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n var data = [];\n\n for (var i = 0; i < count; i++) {\n var currentSeries = series[i];\n var seriesVisible = currentSeries.visible !== false;\n if (currentSeries.visibleInLegend === false) {\n continue;\n }\n\n var text = currentSeries.name;\n var labelTemplate = seriesVisible ? getTemplate(labels) : getTemplate(inactiveItemsLabels) || getTemplate(labels);\n if (labelTemplate) {\n text = labelTemplate({\n text: hasValue(text) ? text : \"\",\n series: currentSeries\n });\n }\n\n var defaults = currentSeries._defaults;\n var color = currentSeries.color;\n if (isFunction(color) && defaults) {\n color = defaults.color;\n }\n\n var itemLabelOptions = (void 0), markerColor = (void 0);\n if (seriesVisible) {\n itemLabelOptions = {};\n markerColor = color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = inactiveItems.markers.color;\n }\n\n if (hasValue(text) && text !== \"\") {\n data.push({\n text: text,\n labels: itemLabelOptions,\n markerColor: markerColor,\n series: currentSeries,\n active: seriesVisible\n });\n }\n }\n\n append(legend.items, data);\n };\n\n PlotAreaBase.prototype.groupAxes = function groupAxes (panes) {\n var xAxes = [];\n var yAxes = [];\n\n for (var paneIx = 0; paneIx < panes.length; paneIx++) {\n var paneAxes = panes[paneIx].axes;\n for (var axisIx = 0; axisIx < paneAxes.length; axisIx++) {\n var axis = paneAxes[axisIx];\n if (axis.options.vertical) {\n yAxes.push(axis);\n } else {\n xAxes.push(axis);\n }\n }\n }\n\n return { x: xAxes, y: yAxes, any: xAxes.concat(yAxes) };\n };\n\n PlotAreaBase.prototype.groupSeriesByPane = function groupSeriesByPane () {\n var this$1 = this;\n\n var series = this.series;\n var seriesByPane = {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var pane = this$1.seriesPaneName(currentSeries);\n\n if (seriesByPane[pane]) {\n seriesByPane[pane].push(currentSeries);\n } else {\n seriesByPane[pane] = [ currentSeries ];\n }\n }\n\n return seriesByPane;\n };\n\n PlotAreaBase.prototype.filterVisibleSeries = function filterVisibleSeries (series) {\n var result = [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (currentSeries.visible !== false) {\n result.push(currentSeries);\n }\n }\n\n return result;\n };\n\n PlotAreaBase.prototype.reflow = function reflow (targetBox) {\n var options = this.options.plotArea;\n var panes = this.panes;\n var margin = getSpacing(options.margin);\n\n this.box = targetBox.clone().unpad(margin);\n this.reflowPanes();\n\n this.detachLabels();\n this.reflowAxes(panes);\n this.reflowCharts(panes);\n };\n\n PlotAreaBase.prototype.redraw = function redraw (panes) {\n var this$1 = this;\n\n var panesArray = [].concat(panes);\n this.initSeries();\n\n //prevents leak during partial redraws. the cached gradients observers retain reference to the destroyed elements.\n var root = this.getRoot();\n if (root) {\n root.cleanGradients();\n }\n\n for (var i = 0; i < panesArray.length; i++) {\n this$1.removeCrosshairs(panesArray[i]);\n panesArray[i].empty();\n }\n\n this.render(panesArray);\n this.detachLabels();\n this.reflowAxes(this.panes);\n this.reflowCharts(panesArray);\n\n this.createCrosshairs(panesArray);\n\n for (var i$1 = 0; i$1 < panesArray.length; i$1++) {\n panesArray[i$1].refresh();\n }\n };\n\n PlotAreaBase.prototype.axisCrossingValues = function axisCrossingValues (axis, crossingAxes) {\n var options = axis.options;\n var crossingValues = [].concat(\n options.axisCrossingValues || options.axisCrossingValue\n );\n var valuesToAdd = crossingAxes.length - crossingValues.length;\n var defaultValue = crossingValues[0] || 0;\n\n for (var i = 0; i < valuesToAdd; i++) {\n crossingValues.push(defaultValue);\n }\n\n return crossingValues;\n };\n\n PlotAreaBase.prototype.alignAxisTo = function alignAxisTo (axis, targetAxis, crossingValue, targetCrossingValue) {\n var slot = axis.getSlot(crossingValue, crossingValue, true);\n var slotEdge = axis.options.reverse ? 2 : 1;\n var targetSlot = targetAxis.getSlot(targetCrossingValue, targetCrossingValue, true);\n var targetEdge = targetAxis.options.reverse ? 2 : 1;\n var axisBox = axis.box.translate(\n targetSlot[X + targetEdge] - slot[X + slotEdge],\n targetSlot[Y + targetEdge] - slot[Y + slotEdge]\n );\n\n if (axis.pane !== targetAxis.pane) {\n axisBox.translate(0, axis.pane.box.y1 - targetAxis.pane.box.y1);\n }\n\n axis.reflow(axisBox);\n };\n\n PlotAreaBase.prototype.alignAxes = function alignAxes (xAxes, yAxes) {\n var this$1 = this;\n\n var xAnchor = xAxes[0];\n var yAnchor = yAxes[0];\n var xAnchorCrossings = this.axisCrossingValues(xAnchor, yAxes);\n var yAnchorCrossings = this.axisCrossingValues(yAnchor, xAxes);\n var leftAnchors = {};\n var rightAnchors = {};\n var topAnchors = {};\n var bottomAnchors = {};\n\n for (var i = 0; i < yAxes.length; i++) {\n var axis = yAxes[i];\n var pane = axis.pane;\n var paneId = pane.id;\n var visible = axis.options.visible !== false;\n\n // Locate pane anchor, if any, and use its axisCrossingValues\n var anchor = paneAnchor(xAxes, pane) || xAnchor;\n var anchorCrossings = xAnchorCrossings;\n\n if (anchor !== xAnchor) {\n anchorCrossings = this$1.axisCrossingValues(anchor, yAxes);\n }\n\n this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n if (axis.options._overlap) {\n continue;\n }\n\n if (round(axis.lineBox().x1) === round(anchor.lineBox().x1)) {\n // Push the axis to the left the previous y-axis so they don't overlap\n if (leftAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(leftAnchors[paneId].box, LEFT)\n .translate(-axis.options.margin, 0)\n );\n }\n\n if (visible) {\n leftAnchors[paneId] = axis;\n }\n }\n\n if (round(axis.lineBox().x2) === round(anchor.lineBox().x2)) {\n // Flip the labels on the right if we're at the right end of the pane\n if (!axis._mirrored) {\n axis.options.labels.mirror = !axis.options.labels.mirror;\n axis._mirrored = true;\n }\n\n this$1.alignAxisTo(axis, anchor, yAnchorCrossings[i], anchorCrossings[i]);\n\n // Push the axis to the right the previous y-axis so they don't overlap\n if (rightAnchors[paneId]) {\n axis.reflow(axis.box\n .alignTo(rightAnchors[paneId].box, RIGHT)\n .translate(axis.options.margin, 0)\n );\n }\n\n if (visible) {\n rightAnchors[paneId] = axis;\n }\n }\n\n if (i !== 0 && yAnchor.pane === axis.pane) {\n axis.alignTo(yAnchor);\n axis.reflow(axis.box);\n }\n }\n\n for (var i$1 = 0; i$1 < xAxes.length; i$1++) {\n var axis$1 = xAxes[i$1];\n var pane$1 = axis$1.pane;\n var paneId$1 = pane$1.id;\n var visible$1 = axis$1.options.visible !== false;\n\n // Locate pane anchor and use its axisCrossingValues\n var anchor$1 = paneAnchor(yAxes, pane$1) || yAnchor;\n var anchorCrossings$1 = yAnchorCrossings;\n if (anchor$1 !== yAnchor) {\n anchorCrossings$1 = this$1.axisCrossingValues(anchor$1, xAxes);\n }\n\n this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n if (axis$1.options._overlap) {\n continue;\n }\n\n if (round(axis$1.lineBox().y1) === round(anchor$1.lineBox().y1)) {\n // Flip the labels on top if we're at the top of the pane\n if (!axis$1._mirrored) {\n axis$1.options.labels.mirror = !axis$1.options.labels.mirror;\n axis$1._mirrored = true;\n }\n this$1.alignAxisTo(axis$1, anchor$1, xAnchorCrossings[i$1], anchorCrossings$1[i$1]);\n\n // Push the axis above the previous x-axis so they don't overlap\n if (topAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(topAnchors[paneId$1].box, TOP)\n .translate(0, -axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n topAnchors[paneId$1] = axis$1;\n }\n }\n\n if (round(axis$1.lineBox().y2, COORD_PRECISION) === round(anchor$1.lineBox().y2, COORD_PRECISION)) {\n // Push the axis below the previous x-axis so they don't overlap\n if (bottomAnchors[paneId$1]) {\n axis$1.reflow(axis$1.box\n .alignTo(bottomAnchors[paneId$1].box, BOTTOM)\n .translate(0, axis$1.options.margin)\n );\n }\n\n if (visible$1) {\n bottomAnchors[paneId$1] = axis$1;\n }\n }\n\n if (i$1 !== 0) {\n axis$1.alignTo(xAnchor);\n axis$1.reflow(axis$1.box);\n }\n }\n };\n\n PlotAreaBase.prototype.shrinkAxisWidth = function shrinkAxisWidth (panes) {\n var axes = this.groupAxes(panes).any;\n var axisBox = axisGroupBox(axes);\n var overflowX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n\n if (currentPane.axes.length > 0) {\n overflowX = Math.max(\n overflowX,\n axisBox.width() - currentPane.contentBox.width()\n );\n }\n }\n\n if (overflowX !== 0) {\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis = axes[i$1];\n\n if (!currentAxis.options.vertical) {\n currentAxis.reflow(currentAxis.box.shrink(overflowX, 0));\n }\n }\n }\n };\n\n PlotAreaBase.prototype.shrinkAxisHeight = function shrinkAxisHeight (panes) {\n var shrinked;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var axes = currentPane.axes;\n var overflowY = Math.max(0, axisGroupBox(axes).height() - currentPane.contentBox.height());\n\n if (overflowY !== 0) {\n for (var j = 0; j < axes.length; j++) {\n var currentAxis = axes[j];\n\n if (currentAxis.options.vertical) {\n currentAxis.reflow(\n currentAxis.box.shrink(0, overflowY)\n );\n }\n }\n shrinked = true;\n }\n }\n\n return shrinked;\n };\n\n PlotAreaBase.prototype.fitAxes = function fitAxes (panes) {\n var axes = this.groupAxes(panes).any;\n var offsetX = 0;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n var paneAxes = currentPane.axes;\n var paneBox = currentPane.contentBox;\n\n if (paneAxes.length > 0) {\n var axisBox = axisGroupBox(paneAxes);\n // OffsetY is calculated and applied per pane\n var offsetY = Math.max(paneBox.y1 - axisBox.y1, paneBox.y2 - axisBox.y2);\n\n // OffsetX is calculated and applied globally\n offsetX = Math.max(offsetX, paneBox.x1 - axisBox.x1);\n\n\n for (var j = 0; j < paneAxes.length; j++) {\n var currentAxis = paneAxes[j];\n\n currentAxis.reflow(\n currentAxis.box.translate(0, offsetY)\n );\n }\n }\n }\n\n for (var i$1 = 0; i$1 < axes.length; i$1++) {\n var currentAxis$1 = axes[i$1];\n\n currentAxis$1.reflow(\n currentAxis$1.box.translate(offsetX, 0)\n );\n }\n };\n\n PlotAreaBase.prototype.reflowAxes = function reflowAxes (panes) {\n var this$1 = this;\n\n var axes = this.groupAxes(panes);\n\n for (var i = 0; i < panes.length; i++) {\n this$1.reflowPaneAxes(panes[i]);\n }\n\n if (axes.x.length > 0 && axes.y.length > 0) {\n this.alignAxes(axes.x, axes.y);\n this.shrinkAxisWidth(panes);\n\n this.autoRotateAxisLabels(axes);\n\n this.alignAxes(axes.x, axes.y);\n if (this.shrinkAxisWidth(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.shrinkAxisHeight(panes);\n this.alignAxes(axes.x, axes.y);\n\n if (this.shrinkAxisHeight(panes)) {\n this.alignAxes(axes.x, axes.y);\n }\n\n this.fitAxes(panes);\n }\n };\n\n PlotAreaBase.prototype.autoRotateAxisLabels = function autoRotateAxisLabels (groupedAxes) {\n var this$1 = this;\n\n var ref = this;\n var panes = ref.panes;\n var axes = allPaneAxes(panes);\n var rotated;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n if (axis.autoRotateLabels()) {\n rotated = true;\n }\n }\n\n if (rotated) {\n for (var idx$1 = 0; idx$1 < panes.length; idx$1++) {\n this$1.reflowPaneAxes(panes[idx$1]);\n }\n\n if (groupedAxes.x.length > 0 && groupedAxes.y.length > 0) {\n this.alignAxes(groupedAxes.x, groupedAxes.y);\n this.shrinkAxisWidth(panes);\n }\n }\n };\n\n PlotAreaBase.prototype.reflowPaneAxes = function reflowPaneAxes (pane) {\n var axes = pane.axes;\n var length = axes.length;\n\n if (length > 0) {\n for (var i = 0; i < length; i++) {\n axes[i].reflow(pane.contentBox);\n }\n }\n };\n\n PlotAreaBase.prototype.reflowCharts = function reflowCharts (panes) {\n var charts = this.charts;\n var count = charts.length;\n var box = this.box;\n\n for (var i = 0; i < count; i++) {\n var chartPane = charts[i].pane;\n if (!chartPane || inArray(chartPane, panes)) {\n charts[i].reflow(box);\n }\n }\n };\n\n PlotAreaBase.prototype.reflowPanes = function reflowPanes () {\n var ref = this;\n var box = ref.box;\n var panes = ref.panes;\n var panesLength = panes.length;\n var remainingHeight = box.height();\n var remainingPanes = panesLength;\n var autoHeightPanes = 0;\n var top = box.y1;\n\n for (var i = 0; i < panesLength; i++) {\n var currentPane = panes[i];\n var height = currentPane.options.height;\n\n currentPane.options.width = box.width();\n\n if (!currentPane.options.height) {\n autoHeightPanes++;\n } else {\n if (height.indexOf && height.indexOf(\"%\")) {\n var percents = parseInt(height, 10) / 100;\n currentPane.options.height = percents * box.height();\n }\n\n currentPane.reflow(box.clone());\n\n remainingHeight -= currentPane.options.height;\n }\n }\n\n for (var i$1 = 0; i$1 < panesLength; i$1++) {\n var currentPane$1 = panes[i$1];\n\n if (!currentPane$1.options.height) {\n currentPane$1.options.height = remainingHeight / autoHeightPanes;\n }\n }\n\n for (var i$2 = 0; i$2 < panesLength; i$2++) {\n var currentPane$2 = panes[i$2];\n var paneBox = box\n .clone()\n .move(box.x1, top);\n\n currentPane$2.reflow(paneBox);\n\n remainingPanes--;\n top += currentPane$2.options.height;\n }\n };\n\n PlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n var axes = this.axes;\n var axesCount = axes.length;\n var box;\n\n for (var i = 0; i < axesCount; i++) {\n var axisA = axes[i];\n\n for (var j = 0; j < axesCount; j++) {\n var axisB = axes[j];\n\n if (axisA.options.vertical !== axisB.options.vertical) {\n var lineBox = axisA.lineBox().clone().wrap(axisB.lineBox());\n\n if (!box) {\n box = lineBox;\n } else {\n box = box.wrap(lineBox);\n }\n }\n }\n }\n\n return box || this.box;\n };\n\n PlotAreaBase.prototype.chartsBoxes = function chartsBoxes () {\n var panes = this.panes;\n var boxes = [];\n\n for (var idx = 0; idx < panes.length; idx++) {\n boxes.push(panes[idx].chartsBox());\n }\n\n return boxes;\n };\n\n PlotAreaBase.prototype.addBackgroundPaths = function addBackgroundPaths (multipath) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n multipath.paths.push(draw.Path.fromRect(boxes[idx].toRect()));\n }\n };\n\n PlotAreaBase.prototype.backgroundContainsPoint = function backgroundContainsPoint (point) {\n var boxes = this.chartsBoxes();\n for (var idx = 0; idx < boxes.length; idx++) {\n if (boxes[idx].containsPoint(point)) {\n return true;\n }\n }\n };\n\n PlotAreaBase.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var options = this.options.plotArea;\n var opacity = options.opacity;\n var background = options.background;\n var border = options.border; if ( border === void 0 ) border = {};\n if (isTransparent(background)) {\n background = WHITE;\n opacity = 0;\n }\n\n var bg = this._bgVisual = new draw.MultiPath({\n fill: {\n color: background,\n opacity: opacity\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n },\n zIndex: -1\n });\n\n this.addBackgroundPaths(bg);\n\n this.appendVisual(bg);\n };\n\n PlotAreaBase.prototype.pointsByCategoryIndex = function pointsByCategoryIndex (categoryIndex) {\n var charts = this.charts;\n var result = [];\n\n if (categoryIndex !== null) {\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n if (chart.pane.options.name === \"_navigator\") {\n continue;\n }\n\n var points = charts[i].categoryPoints[categoryIndex];\n if (points && points.length) {\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && defined(point.value) && point.value !== null) {\n result.push(point);\n }\n }\n }\n }\n }\n\n return result;\n };\n\n PlotAreaBase.prototype.pointsBySeriesIndex = function pointsBySeriesIndex (seriesIndex) {\n return this.filterPoints(function(point) {\n return point.series.index === seriesIndex;\n });\n };\n\n PlotAreaBase.prototype.pointsBySeriesName = function pointsBySeriesName (name) {\n return this.filterPoints(function(point) {\n return point.series.name === name;\n });\n };\n\n PlotAreaBase.prototype.filterPoints = function filterPoints (callback) {\n var charts = this.charts;\n var result = [];\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n result.push(point);\n }\n }\n }\n\n return result;\n };\n\n PlotAreaBase.prototype.findPoint = function findPoint (callback) {\n var charts = this.charts;\n\n for (var i = 0; i < charts.length; i++) {\n var chart = charts[i];\n var points = chart.points;\n for (var j = 0; j < points.length; j++) {\n var point = points[j];\n if (point && point.visible !== false && callback(point)) {\n return point;\n }\n }\n }\n };\n\n PlotAreaBase.prototype.paneByPoint = function paneByPoint (point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n if (pane.box.containsPoint(point)) {\n return pane;\n }\n }\n };\n\n PlotAreaBase.prototype.detachLabels = function detachLabels () {\n var axes = this.groupAxes(this.panes);\n var xAxes = axes.x;\n var yAxes = axes.y;\n\n this.detachAxisGroupLabels(yAxes, xAxes);\n this.detachAxisGroupLabels(xAxes, yAxes);\n };\n\n PlotAreaBase.prototype.detachAxisGroupLabels = function detachAxisGroupLabels (axes, crossingAxes) {\n var this$1 = this;\n\n var labelAxisCount = 0;\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var pane = axis.pane;\n var anchor = paneAnchor(crossingAxes, pane) || crossingAxes[0];\n var axisIndex = i + labelAxisCount;\n var labelAxis = this$1.createLabelAxis(axis, axisIndex, anchor);\n\n if (labelAxis) {\n labelAxisCount++;\n\n var pos = pane.axes.indexOf(axis) + labelAxisCount;\n pane.appendAxisAt(labelAxis, pos);\n }\n }\n };\n\n PlotAreaBase.prototype.createLabelAxis = function createLabelAxis (axis, axisIndex, anchor) {\n var labelOptions = axis.options.labels;\n var position = labelOptions.position;\n var onAxis = position !== END && position !== START;\n var visible = labelOptions.visible;\n\n if (onAxis || visible === false) {\n return null;\n }\n\n var allAxes = this.groupAxes(this.panes);\n var crossingAxes = anchor.options.vertical ? allAxes.x : allAxes.y;\n var anchorCrossings = this.axisCrossingValues(anchor, crossingAxes);\n var end = position === END;\n var range = anchor.range();\n var edge = end ? range.max : range.min;\n var crossingValue = limitValue(anchorCrossings[axisIndex], range.min, range.max);\n\n if (crossingValue - edge === 0) {\n return null;\n }\n\n anchorCrossings.splice(axisIndex + 1, 0, edge);\n anchor.options.axisCrossingValues = anchorCrossings;\n\n var labelAxis = axis.clone();\n axis.clear();\n\n labelAxis.options.name = undefined;\n labelAxis.options.line.visible = false;\n\n labelAxis.options.crosshair = undefined;\n labelAxis.options.notes = undefined;\n labelAxis.options.plotBands = undefined;\n\n return labelAxis;\n };\n\n return PlotAreaBase;\n}(ChartElement));\n\nfunction isSingleAxis(axis) {\n return !axis.pane.axes.some(function (a) { return a.options.vertical === axis.options.vertical && a !== axis && a.options.visible !== false; }\n );\n}\n\nfunction axisGroupBox(axes) {\n var length = axes.length;\n var box;\n\n for (var i = 0; i < length; i++) {\n var axis = axes[i];\n var visible = axis.options.visible !== false;\n if (visible || isSingleAxis(axis)) {\n var axisBox = visible ? axis.contentBox() : axis.lineBox();\n\n if (!box) {\n box = axisBox.clone();\n } else {\n box.wrap(axisBox);\n }\n }\n }\n\n return box || new Box();\n}\n\nfunction paneAnchor(axes, pane) {\n for (var i = 0; i < axes.length; i++) {\n var anchor = axes[i];\n if (anchor && anchor.pane === pane) {\n return anchor;\n }\n }\n}\n\nfunction isTransparent(color) {\n return color === \"\" || color === null || color === \"none\" || color === \"transparent\" || !defined(color);\n}\n\nvar allPaneAxes = function (panes) { return panes.reduce(function (acc, pane) { return acc.concat(pane.axes); }, []); };\n\nsetDefaultOptions(PlotAreaBase, {\n series: [],\n plotArea: {\n margin: {}\n },\n background: \"\",\n border: {\n color: BLACK,\n width: 0\n },\n paneDefaults: {\n title: {}\n },\n legend: {\n inactiveItems: {\n labels: {\n color: \"#919191\"\n },\n markers: {\n color: \"#919191\"\n }\n }\n }\n});\n\nexport default PlotAreaBase;\n","import { PLOT_AREA_HOVER, PLOT_AREA_CLICK } from '../constants';\n\nvar PlotAreaEventsMixin = {\n hover: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_HOVER);\n },\n\n click: function(chart, e) {\n this._dispatchEvent(chart, e, PLOT_AREA_CLICK);\n }\n};\n\nexport default PlotAreaEventsMixin;","import Aggregates from './aggregates';\n\nimport { Class, defined, inArray, isArray, isFunction, isNumber, isObject } from '../../common';\n\nvar SeriesAggregator = (function (Class) {\n function SeriesAggregator(series, binder, defaultAggregates) {\n Class.call(this);\n\n var canonicalFields = binder.canonicalFields(series);\n var valueFields = binder.valueFields(series);\n var sourceFields = binder.sourceFields(series, canonicalFields);\n var seriesFields = this._seriesFields = [];\n var defaults = defaultAggregates.query(series.type);\n var rootAggregate = series.aggregate || defaults;\n\n this._series = series;\n this._binder = binder;\n\n for (var i = 0; i < canonicalFields.length; i++) {\n var field = canonicalFields[i];\n var fieldAggregate = (void 0);\n\n if (isObject(rootAggregate)) {\n fieldAggregate = rootAggregate[field];\n } else if (i === 0 || inArray(field, valueFields)) {\n fieldAggregate = rootAggregate;\n } else {\n break;\n }\n\n if (fieldAggregate) {\n seriesFields.push({\n canonicalName: field,\n name: sourceFields[i],\n transform: isFunction(fieldAggregate) ? fieldAggregate : Aggregates[fieldAggregate]\n });\n }\n }\n }\n\n if ( Class ) SeriesAggregator.__proto__ = Class;\n SeriesAggregator.prototype = Object.create( Class && Class.prototype );\n SeriesAggregator.prototype.constructor = SeriesAggregator;\n\n SeriesAggregator.prototype.aggregatePoints = function aggregatePoints (srcPoints, group) {\n var this$1 = this;\n\n var ref = this;\n var series = ref._series;\n var seriesFields = ref._seriesFields;\n var data = this._bindPoints(srcPoints || []);\n var firstDataItem = data.dataItems[0];\n var result = {};\n\n if (firstDataItem && !isNumber(firstDataItem) && !isArray(firstDataItem)) {\n var fn = function() {};\n fn.prototype = firstDataItem;\n result = new fn();\n }\n\n for (var i = 0; i < seriesFields.length; i++) {\n var field = seriesFields[i];\n var srcValues = this$1._bindField(data.values, field.canonicalName);\n var value = field.transform(srcValues, series, data.dataItems, group);\n\n if (value !== null && isObject(value) && !defined(value.length) && !(value instanceof Date)) {\n result = value;\n break;\n } else {\n if (defined(value)) {\n setValue(field.name, result, value);\n }\n }\n }\n\n return result;\n };\n\n SeriesAggregator.prototype._bindPoints = function _bindPoints (points) {\n var ref = this;\n var binder = ref._binder;\n var series = ref._series;\n var values = [];\n var dataItems = [];\n\n for (var i = 0; i < points.length; i++) {\n var pointIx = points[i];\n\n values.push(binder.bindPoint(series, pointIx));\n dataItems.push(series.data[pointIx]);\n }\n\n return {\n values: values,\n dataItems: dataItems\n };\n };\n\n SeriesAggregator.prototype._bindField = function _bindField (data, field) {\n var values = [];\n var count = data.length;\n\n for (var i = 0; i < count; i++) {\n var item = data[i];\n var valueFields = item.valueFields;\n var value = (void 0);\n\n if (defined(valueFields[field])) {\n value = valueFields[field];\n } else {\n value = item.fields[field];\n }\n\n values.push(value);\n }\n\n return values;\n };\n\n return SeriesAggregator;\n}(Class));\n\nfunction setValue(fieldName, target, value) {\n var parentObj = target;\n var field = fieldName;\n\n if (fieldName.indexOf(\".\") > -1) {\n var parts = fieldName.split(\".\");\n\n while (parts.length > 1) {\n field = parts.shift();\n if (!defined(parentObj[field])) {\n parentObj[field] = {};\n }\n parentObj = parentObj[field];\n }\n field = parts.shift();\n }\n\n parentObj[field] = value;\n}\n\nexport default SeriesAggregator;","import { Class } from '../../common';\n\nvar DefaultAggregates = (function (Class) {\n function DefaultAggregates() {\n Class.call(this);\n\n this._defaults = {};\n }\n\n if ( Class ) DefaultAggregates.__proto__ = Class;\n DefaultAggregates.prototype = Object.create( Class && Class.prototype );\n DefaultAggregates.prototype.constructor = DefaultAggregates;\n\n DefaultAggregates.prototype.register = function register (seriesTypes, aggregates) {\n var this$1 = this;\n\n for (var i = 0; i < seriesTypes.length; i++) {\n this$1._defaults[seriesTypes[i]] = aggregates;\n }\n };\n\n DefaultAggregates.prototype.query = function query (seriesType) {\n return this._defaults[seriesType];\n };\n\n return DefaultAggregates;\n}(Class));\n\nDefaultAggregates.current = new DefaultAggregates();\n\nexport default DefaultAggregates;","import Bar from '../bar-chart/bar';\nimport BarLabel from '../bar-chart/bar-label';\n\nimport { deepExtend, getTemplate } from '../../common';\n\nvar RangeBar = (function (Bar) {\n function RangeBar () {\n Bar.apply(this, arguments);\n }\n\n if ( Bar ) RangeBar.__proto__ = Bar;\n RangeBar.prototype = Object.create( Bar && Bar.prototype );\n RangeBar.prototype.constructor = RangeBar;\n\n RangeBar.prototype.createLabel = function createLabel () {\n var labels = this.options.labels;\n var fromOptions = deepExtend({}, labels, labels.from);\n var toOptions = deepExtend({}, labels, labels.to);\n\n if (fromOptions.visible) {\n this.labelFrom = this._createLabel(fromOptions);\n this.append(this.labelFrom);\n }\n\n if (toOptions.visible) {\n this.labelTo = this._createLabel(toOptions);\n this.append(this.labelTo);\n }\n };\n\n RangeBar.prototype._createLabel = function _createLabel (options) {\n var labelTemplate = getTemplate(options);\n var pointData = this.pointData();\n\n var labelText;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(options.format);\n }\n\n return new BarLabel(labelText,\n deepExtend({\n vertical: this.options.vertical\n },\n options\n ), pointData);\n };\n\n RangeBar.prototype.reflow = function reflow (targetBox) {\n this.render();\n\n var ref = this;\n var labelFrom = ref.labelFrom;\n var labelTo = ref.labelTo;\n var value = ref.value;\n\n this.box = targetBox;\n\n if (labelFrom) {\n labelFrom.options.aboveAxis = value.from > value.to;\n labelFrom.reflow(targetBox);\n }\n\n if (labelTo) {\n labelTo.options.aboveAxis = value.to > value.from;\n labelTo.reflow(targetBox);\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n };\n\n return RangeBar;\n}(Bar));\n\nRangeBar.prototype.defaults = deepExtend({}, RangeBar.prototype.defaults, {\n labels: {\n format: \"{0} - {1}\"\n },\n tooltip: {\n format: \"{1}\"\n }\n});\n\nexport default RangeBar;","import BarChart from '../bar-chart/bar-chart';\nimport RangeBar from './range-bar';\nimport CategoricalChart from '../categorical-chart';\n\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\n\nvar RangeBarChart = (function (BarChart) {\n function RangeBarChart () {\n BarChart.apply(this, arguments);\n }\n\n if ( BarChart ) RangeBarChart.__proto__ = BarChart;\n RangeBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n RangeBarChart.prototype.constructor = RangeBarChart;\n\n RangeBarChart.prototype.pointType = function pointType () {\n return RangeBar;\n };\n\n RangeBarChart.prototype.pointValue = function pointValue (data) {\n return data.valueFields;\n };\n\n RangeBarChart.prototype.formatPointValue = function formatPointValue (point, format) {\n if (point.value.from === null && point.value.to === null) {\n return \"\";\n }\n\n return this.chartService.format.auto(format, point.value.from, point.value.to);\n };\n\n RangeBarChart.prototype.plotRange = function plotRange (point) {\n if (!point) {\n return 0;\n }\n\n return [ point.value.from, point.value.to ];\n };\n\n RangeBarChart.prototype.updateRange = function updateRange (value, fields) {\n var axisName = fields.series.axis;\n var from = value.from;\n var to = value.to;\n var axisRange = this.valueAxisRanges[axisName];\n\n if (value !== null && isNumber(from) && isNumber(to)) {\n axisRange = this.valueAxisRanges[axisName] = axisRange || { min: MAX_VALUE, max: MIN_VALUE };\n\n axisRange.min = Math.min(axisRange.min, from);\n axisRange.max = Math.max(axisRange.max, from);\n\n axisRange.min = Math.min(axisRange.min, to);\n axisRange.max = Math.max(axisRange.max, to);\n }\n };\n\n RangeBarChart.prototype.aboveAxis = function aboveAxis (point) {\n var value = point.value;\n return value.from < value.to;\n };\n\n return RangeBarChart;\n}(BarChart));\n\nRangeBarChart.prototype.plotLimits = CategoricalChart.prototype.plotLimits;\n\nexport default RangeBarChart;","import LinePoint from '../line-chart/line-point';\n\nvar RangeLinePoint = (function (LinePoint) {\n function RangeLinePoint () {\n LinePoint.apply(this, arguments);\n }\n\n if ( LinePoint ) RangeLinePoint.__proto__ = LinePoint;\n RangeLinePoint.prototype = Object.create( LinePoint && LinePoint.prototype );\n RangeLinePoint.prototype.constructor = RangeLinePoint;\n\n RangeLinePoint.prototype.aliasFor = function aliasFor () {\n return this.parent;\n };\n\n return RangeLinePoint;\n}(LinePoint));\n\nexport default RangeLinePoint;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Point } from '../../core';\nimport RangeLinePoint from './range-line-point';\nimport PointEventsMixin from '../mixins/point-events-mixin';\nimport NoteMixin from '../mixins/note-mixin';\n\nimport { LINE_MARKER_SIZE, FADEIN, INITIAL_ANIMATION_DURATION, TOOLTIP_OFFSET, ABOVE, BELOW } from '../constants';\nimport { WHITE, CIRCLE, HIGHLIGHT_ZINDEX, LEFT, RIGHT, BOTTOM, CENTER } from '../../common/constants';\nimport { deepExtend, valueOrDefault, getSpacing } from '../../common';\n\nvar AUTO = 'auto';\nvar DEFAULT_FROM_FORMAT = '{0}';\nvar DEFAULT_TO_FORMAT = '{1}';\n\nvar RangeAreaPoint = (function (ChartElement) {\n function RangeAreaPoint(value, options) {\n ChartElement.call(this);\n\n this.value = value;\n this.options = options;\n this.aboveAxis = valueOrDefault(this.options.aboveAxis, true);\n this.tooltipTracking = true;\n this.initLabelsFormat();\n }\n\n if ( ChartElement ) RangeAreaPoint.__proto__ = ChartElement;\n RangeAreaPoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n RangeAreaPoint.prototype.constructor = RangeAreaPoint;\n\n RangeAreaPoint.prototype.render = function render () {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n var ref = this.options;\n var markers = ref.markers;\n var labels = ref.labels;\n var value = this.value;\n\n var fromPoint = this.fromPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.from,\n markers: markers.from\n }));\n\n var toPoint = this.toPoint = new RangeLinePoint(value, deepExtend({}, this.options, {\n labels: labels.to,\n markers: markers.to\n }));\n\n this.copyFields(fromPoint);\n this.copyFields(toPoint);\n\n this.append(fromPoint);\n this.append(toPoint);\n };\n\n RangeAreaPoint.prototype.reflow = function reflow (targetBox) {\n this.render();\n\n var fromBox = targetBox.from;\n var toBox = targetBox.to;\n\n this.positionLabels(fromBox, toBox);\n\n this.fromPoint.reflow(fromBox);\n this.toPoint.reflow(toBox);\n\n this.box = this.fromPoint.markerBox().clone().wrap(this.toPoint.markerBox());\n };\n\n RangeAreaPoint.prototype.createHighlight = function createHighlight () {\n var group = new draw.Group();\n group.append(this.fromPoint.createHighlight());\n group.append(this.toPoint.createHighlight());\n\n return group;\n };\n\n RangeAreaPoint.prototype.highlightVisual = function highlightVisual () {\n return this.visual;\n };\n\n RangeAreaPoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n from: this.fromPoint.highlightVisualArgs(),\n to: this.toPoint.highlightVisualArgs()\n };\n };\n\n RangeAreaPoint.prototype.tooltipAnchor = function tooltipAnchor () {\n var clipBox = this.owner.pane.clipBox();\n var showTooltip = !clipBox || clipBox.overlaps(this.box);\n\n if (showTooltip) {\n var box = this.box;\n var center = box.center();\n var horizontalAlign = LEFT;\n var x, y, verticalAlign;\n\n if (this.options.vertical) {\n x = center.x;\n y = box.y1 - TOOLTIP_OFFSET;\n verticalAlign = BOTTOM;\n } else {\n x = box.x2 + TOOLTIP_OFFSET;\n y = center.y;\n verticalAlign = CENTER;\n }\n\n return {\n point: new Point(x, y),\n align: {\n horizontal: horizontalAlign,\n vertical: verticalAlign\n }\n };\n }\n };\n\n RangeAreaPoint.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n RangeAreaPoint.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n RangeAreaPoint.prototype.unclipElements = function unclipElements () {\n this.fromPoint.unclipElements();\n this.toPoint.unclipElements();\n };\n\n RangeAreaPoint.prototype.initLabelsFormat = function initLabelsFormat () {\n var labels = this.options.labels;\n if (!labels.format) {\n if (!labels.from || !labels.from.format) {\n labels.from = Object.assign({}, labels.from, {\n format: DEFAULT_FROM_FORMAT\n });\n }\n\n if (!labels.to || !labels.to.format) {\n labels.to = Object.assign({}, labels.to, {\n format: DEFAULT_TO_FORMAT\n });\n }\n }\n };\n\n RangeAreaPoint.prototype.positionLabels = function positionLabels (fromBox, toBox) {\n var ref = this.options;\n var labels = ref.labels;\n var vertical = ref.vertical;\n\n if (labels.position === AUTO) {\n var fromLabelPosition, toLabelPosition;\n if (vertical) {\n if (toBox.y1 <= fromBox.y1) {\n toLabelPosition = ABOVE;\n fromLabelPosition = BELOW;\n } else {\n toLabelPosition = BELOW;\n fromLabelPosition = ABOVE;\n }\n } else {\n if (toBox.x1 <= fromBox.x1) {\n toLabelPosition = LEFT;\n fromLabelPosition = RIGHT;\n } else {\n toLabelPosition = RIGHT;\n fromLabelPosition = LEFT;\n }\n }\n\n if (!labels.from || !labels.from.position) {\n this.fromPoint.options.labels.position = fromLabelPosition;\n }\n\n if (!labels.to || !labels.to.position) {\n this.toPoint.options.labels.position = toLabelPosition;\n }\n }\n };\n\n RangeAreaPoint.prototype.copyFields = function copyFields (point) {\n point.dataItem = this.dataItem;\n point.category = this.category;\n point.series = this.series;\n point.color = this.color;\n point.owner = this.owner;\n };\n\n return RangeAreaPoint;\n}(ChartElement));\n\ndeepExtend(RangeAreaPoint.prototype, PointEventsMixin);\ndeepExtend(RangeAreaPoint.prototype, NoteMixin);\n\nRangeAreaPoint.prototype.defaults = {\n markers: {\n visible: false,\n background: WHITE,\n size: LINE_MARKER_SIZE,\n type: CIRCLE,\n border: {\n width: 2\n },\n opacity: 1\n },\n labels: {\n visible: false,\n margin: getSpacing(3),\n padding: getSpacing(4),\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n },\n position: AUTO\n },\n notes: {\n label: {}\n },\n highlight: {\n markers: {\n border: {\n color: WHITE,\n width: 2\n }\n },\n zIndex: HIGHLIGHT_ZINDEX\n },\n tooltip: {\n format: '{0} - {1}'\n }\n};\n\nexport default RangeAreaPoint;\n","import { drawing as draw } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar RangeAreaSegment = (function (AreaSegment) {\n function RangeAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) RangeAreaSegment.__proto__ = AreaSegment;\n RangeAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n RangeAreaSegment.prototype.constructor = RangeAreaSegment;\n\n RangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.toGeometryPoints(this.toPoints()));\n };\n\n RangeAreaSegment.prototype.stackSegments = function stackSegments () {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.toGeometryPoints(this.fromPoints().reverse()));\n }\n\n return fromSegments;\n };\n\n RangeAreaSegment.prototype.createStroke = function createStroke (style) {\n var toPath = new draw.Path(style);\n var fromPath = new draw.Path(style);\n\n toPath.segments.push.apply(toPath.segments, this.strokeSegments());\n fromPath.segments.push.apply(fromPath.segments, this.stackSegments());\n\n this.visual.append(toPath);\n this.visual.append(fromPath);\n };\n\n RangeAreaSegment.prototype.hasStackSegment = function hasStackSegment () {\n return true;\n };\n\n RangeAreaSegment.prototype.fromPoints = function fromPoints () {\n return this.linePoints.map(function (point) { return point.fromPoint; });\n };\n\n RangeAreaSegment.prototype.toPoints = function toPoints () {\n return this.linePoints.map(function (point) { return point.toPoint; });\n };\n\n return RangeAreaSegment;\n}(AreaSegment));\n\nexport default RangeAreaSegment;","import { CurveProcessor } from '../../core';\n\nimport RangeAreaSegment from './range-area-segment';\n\nvar SplineRangeAreaSegment = (function (RangeAreaSegment) {\n function SplineRangeAreaSegment () {\n RangeAreaSegment.apply(this, arguments);\n }\n\n if ( RangeAreaSegment ) SplineRangeAreaSegment.__proto__ = RangeAreaSegment;\n SplineRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n SplineRangeAreaSegment.prototype.constructor = SplineRangeAreaSegment;\n\n SplineRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.createCurveSegments(this.toPoints());\n };\n\n SplineRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.createCurveSegments(this.fromPoints().reverse());\n }\n\n return fromSegments;\n };\n\n SplineRangeAreaSegment.prototype.createCurveSegments = function createCurveSegments (points) {\n var curveProcessor = new CurveProcessor();\n\n return curveProcessor.process(this.toGeometryPoints(points));\n };\n\n return SplineRangeAreaSegment;\n}(RangeAreaSegment));\n\nexport default SplineRangeAreaSegment;","import StepLineMixin from '../line-chart/step-line-mixin';\nimport RangeAreaSegment from './range-area-segment';\nimport { deepExtend } from '../../common';\n\nvar StepRangeAreaSegment = (function (RangeAreaSegment) {\n function StepRangeAreaSegment () {\n RangeAreaSegment.apply(this, arguments);\n }\n\n if ( RangeAreaSegment ) StepRangeAreaSegment.__proto__ = RangeAreaSegment;\n StepRangeAreaSegment.prototype = Object.create( RangeAreaSegment && RangeAreaSegment.prototype );\n StepRangeAreaSegment.prototype.constructor = StepRangeAreaSegment;\n\n StepRangeAreaSegment.prototype.createStrokeSegments = function createStrokeSegments () {\n return this.segmentsFromPoints(this.calculateStepPoints(this.toPoints()));\n };\n\n StepRangeAreaSegment.prototype.stackSegments = function stackSegments () {\n var fromSegments = this.fromSegments;\n if (!this.fromSegments) {\n fromSegments = this.fromSegments = this.segmentsFromPoints(this.calculateStepPoints(this.fromPoints()));\n fromSegments.reverse();\n }\n\n return fromSegments;\n };\n\n return StepRangeAreaSegment;\n}(RangeAreaSegment));\n\ndeepExtend(StepRangeAreaSegment.prototype, StepLineMixin);\n\nexport default StepRangeAreaSegment;","import CategoricalChart from '../categorical-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport ClipAnimationMixin from '../mixins/clip-animation-mixin';\nimport RangeAreaPoint from './range-area-point';\nimport RangeAreaSegment from './range-area-segment';\nimport SplineRangeAreaSegment from './spline-range-area-segment';\nimport StepRangeAreaSegment from './step-range-area-segment';\n\nimport { Box } from '../../core';\nimport { ZERO } from '../constants';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\nimport { isNumber } from '../../common';\nimport { deepExtend, isFunction } from '../../common';\nimport { hasValue } from '../utils';\n\nvar RangeAreaChart = (function (CategoricalChart) {\n function RangeAreaChart () {\n CategoricalChart.apply(this, arguments);\n }\n\n if ( CategoricalChart ) RangeAreaChart.__proto__ = CategoricalChart;\n RangeAreaChart.prototype = Object.create( CategoricalChart && CategoricalChart.prototype );\n RangeAreaChart.prototype.constructor = RangeAreaChart;\n\n RangeAreaChart.prototype.render = function render () {\n CategoricalChart.prototype.render.call(this);\n\n this.renderSegments();\n };\n\n RangeAreaChart.prototype.pointType = function pointType () {\n return RangeAreaPoint;\n };\n\n RangeAreaChart.prototype.createPoint = function createPoint (data, fields) {\n var categoryIx = fields.categoryIx;\n var category = fields.category;\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var value = data.valueFields;\n\n if (!hasValue(value.from) && !hasValue(value.to)) {\n if (this.seriesMissingValues(series) === ZERO) {\n value = {\n from: 0,\n to: 0\n };\n } else {\n return null;\n }\n }\n\n var pointOptions = this.pointOptions(series, seriesIx);\n pointOptions = this.evalPointOptions(\n pointOptions, value, category, categoryIx, series, seriesIx\n );\n\n var color = data.fields.color || series.color;\n if (isFunction(series.color)) {\n color = pointOptions.color;\n }\n\n var point = new RangeAreaPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n RangeAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segmentType;\n if (style === \"smooth\") {\n segmentType = SplineRangeAreaSegment;\n } else if (style === \"step\") {\n segmentType = StepRangeAreaSegment;\n } else {\n segmentType = RangeAreaSegment;\n }\n\n return new segmentType(linePoints, currentSeries, seriesIx);\n };\n\n RangeAreaChart.prototype.plotRange = function plotRange (point, startValue) {\n if (!point) {\n return [ startValue, startValue ];\n }\n\n return [ point.value.from, point.value.to ];\n };\n\n RangeAreaChart.prototype.valueSlot = function valueSlot (valueAxis, plotRange) {\n var fromSlot = valueAxis.getSlot(plotRange[0], plotRange[0], !this.options.clip);\n var toSlot = valueAxis.getSlot(plotRange[1], plotRange[1], !this.options.clip);\n if (fromSlot && toSlot) {\n return {\n from: fromSlot,\n to: toSlot\n };\n }\n };\n\n RangeAreaChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var from = valueSlot.from;\n var to = valueSlot.to;\n var fromSlot, toSlot;\n\n if (this.options.invertAxes) {\n fromSlot = new Box(from.x1, categorySlot.y1, from.x2, categorySlot.y2);\n toSlot = new Box(to.x1, categorySlot.y1, to.x2, categorySlot.y2);\n } else {\n fromSlot = new Box(categorySlot.x1, from.y1, categorySlot.x2, from.y2);\n toSlot = new Box(categorySlot.x1, to.y1, categorySlot.x2, to.y2);\n }\n\n return {\n from: fromSlot,\n to: toSlot\n };\n };\n\n RangeAreaChart.prototype.addValue = function addValue (data, fields) {\n var valueFields = data.valueFields;\n if (!isNumber(valueFields.from)) {\n valueFields.from = valueFields.to;\n }\n\n if (!isNumber(valueFields.to)) {\n valueFields.to = valueFields.from;\n }\n\n CategoricalChart.prototype.addValue.call(this, data, fields);\n };\n\n RangeAreaChart.prototype.updateRange = function updateRange (value, fields) {\n if (value !== null && isNumber(value.from) && isNumber(value.to)) {\n var axisName = fields.series.axis;\n var axisRange = this.valueAxisRanges[axisName] = this.valueAxisRanges[axisName] || { min: MAX_VALUE, max: MIN_VALUE };\n var from = value.from;\n var to = value.to;\n\n axisRange.min = Math.min(axisRange.min, from, to);\n axisRange.max = Math.max(axisRange.max, from, to);\n }\n };\n\n RangeAreaChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n\n return this.chartService.format.auto(format, value.from, value.to);\n };\n\n RangeAreaChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n result.push((point.fromPoint || {}).marker);\n result.push((point.toPoint || {}).marker);\n }\n }\n\n return result.concat(this._segments);\n };\n\n return RangeAreaChart;\n}(CategoricalChart));\n\ndeepExtend(RangeAreaChart.prototype, LineChartMixin, ClipAnimationMixin);\n\nexport default RangeAreaChart;\n","import Candlestick from '../candlestick-chart/candlestick';\n\nvar OHLCPoint = (function (Candlestick) {\n function OHLCPoint () {\n Candlestick.apply(this, arguments);\n }\n\n if ( Candlestick ) OHLCPoint.__proto__ = Candlestick;\n OHLCPoint.prototype = Object.create( Candlestick && Candlestick.prototype );\n OHLCPoint.prototype.constructor = OHLCPoint;\n\n OHLCPoint.prototype.reflow = function reflow (box) {\n var ref = this;\n var options = ref.options;\n var value = ref.value;\n var chart = ref.owner;\n var valueAxis = chart.seriesValueAxis(options);\n var oPoints = [];\n var cPoints = [];\n var lhPoints = [];\n\n var lhSlot = valueAxis.getSlot(value.low, value.high);\n var oSlot = valueAxis.getSlot(value.open, value.open);\n var cSlot = valueAxis.getSlot(value.close, value.close);\n\n oSlot.x1 = cSlot.x1 = lhSlot.x1 = box.x1;\n oSlot.x2 = cSlot.x2 = lhSlot.x2 = box.x2;\n\n var mid = lhSlot.center().x;\n\n oPoints.push([ oSlot.x1, oSlot.y1 ]);\n oPoints.push([ mid, oSlot.y1 ]);\n cPoints.push([ mid, cSlot.y1 ]);\n cPoints.push([ cSlot.x2, cSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y1 ]);\n lhPoints.push([ mid, lhSlot.y2 ]);\n\n this.lines = [\n oPoints, cPoints, lhPoints\n ];\n\n this.box = lhSlot.clone().wrap(oSlot.clone().wrap(cSlot));\n\n this.reflowNote();\n };\n\n OHLCPoint.prototype.createBody = function createBody () {};\n\n return OHLCPoint;\n}(Candlestick));\n\nexport default OHLCPoint;","import CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport OHLCPoint from './ohlc-point';\n\nvar OHLCChart = (function (CandlestickChart) {\n function OHLCChart () {\n CandlestickChart.apply(this, arguments);\n }\n\n if ( CandlestickChart ) OHLCChart.__proto__ = CandlestickChart;\n OHLCChart.prototype = Object.create( CandlestickChart && CandlestickChart.prototype );\n OHLCChart.prototype.constructor = OHLCChart;\n\n OHLCChart.prototype.pointType = function pointType () {\n return OHLCPoint;\n };\n\n return OHLCChart;\n}(CandlestickChart));\n\nexport default OHLCChart;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement } from '../../core';\n\nimport { FADEIN, INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { alignPathToPixel, setDefaultOptions } from '../../common';\n\nvar WaterfallSegment = (function (ChartElement) {\n function WaterfallSegment(from, to, series) {\n ChartElement.call(this);\n\n this.from = from;\n this.to = to;\n this.series = series;\n }\n\n if ( ChartElement ) WaterfallSegment.__proto__ = ChartElement;\n WaterfallSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n WaterfallSegment.prototype.constructor = WaterfallSegment;\n\n WaterfallSegment.prototype.linePoints = function linePoints () {\n var from = this.from;\n var ref = this;\n var fromBox = ref.from.box;\n var toBox = ref.to.box;\n var points = [];\n\n if (from.isVertical) {\n var y = from.aboveAxis ? fromBox.y1 : fromBox.y2;\n points.push(\n [ fromBox.x1, y ],\n [ toBox.x2, y ]\n );\n } else {\n var x = from.aboveAxis ? fromBox.x2 : fromBox.x1;\n points.push(\n [ x, fromBox.y1 ],\n [ x, toBox.y2 ]\n );\n }\n\n return points;\n };\n\n WaterfallSegment.prototype.createVisual = function createVisual () {\n ChartElement.prototype.createVisual.call(this);\n\n var line = this.series.line || {};\n\n var path = draw.Path.fromPoints(this.linePoints(), {\n stroke: {\n color: line.color,\n width: line.width,\n opacity: line.opacity,\n dashType: line.dashType\n }\n });\n\n alignPathToPixel(path);\n this.visual.append(path);\n };\n\n return WaterfallSegment;\n}(ChartElement));\n\nsetDefaultOptions(WaterfallSegment, {\n animation: {\n type: FADEIN,\n delay: INITIAL_ANIMATION_DURATION\n }\n});\n\nexport default WaterfallSegment;","import BarChart from '../bar-chart/bar-chart';\nimport SeriesBinder from '../series-binder';\nimport WaterfallSegment from './waterfall-segment';\n\nimport categoriesCount from '../utils/categories-count';\n\nimport { isNumber } from '../../common';\n\nvar WaterfallChart = (function (BarChart) {\n function WaterfallChart () {\n BarChart.apply(this, arguments);\n }\n\n if ( BarChart ) WaterfallChart.__proto__ = BarChart;\n WaterfallChart.prototype = Object.create( BarChart && BarChart.prototype );\n WaterfallChart.prototype.constructor = WaterfallChart;\n\n WaterfallChart.prototype.render = function render () {\n BarChart.prototype.render.call(this);\n this.createSegments();\n };\n\n WaterfallChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var series = this.options.series;\n var totalCategories = categoriesCount(series);\n var isVertical = !this.options.invertAxes;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var total = 0;\n var runningTotal = 0;\n\n for (var categoryIx = 0; categoryIx < totalCategories; categoryIx++) {\n var data = SeriesBinder.current.bindPoint(currentSeries, categoryIx);\n var value = data.valueFields.value;\n var summary = data.fields.summary;\n var from = total;\n var to = (void 0);\n\n if (summary) {\n if (summary.toLowerCase() === \"total\") {\n data.valueFields.value = total;\n from = 0;\n to = total;\n } else {\n data.valueFields.value = runningTotal;\n to = from - runningTotal;\n runningTotal = 0;\n }\n } else if (isNumber(value)) {\n runningTotal += value;\n total += value;\n to = total;\n }\n\n callback(data, {\n category: this$1.categoryAxis.categoryAt(categoryIx),\n categoryIx: categoryIx,\n series: currentSeries,\n seriesIx: seriesIx,\n total: total,\n runningTotal: runningTotal,\n from: from,\n to: to,\n isVertical: isVertical\n });\n }\n }\n };\n\n WaterfallChart.prototype.updateRange = function updateRange (value, fields) {\n BarChart.prototype.updateRange.call(this, { value: fields.to }, fields);\n };\n\n WaterfallChart.prototype.aboveAxis = function aboveAxis (point) {\n return point.value >= 0;\n };\n\n WaterfallChart.prototype.plotRange = function plotRange (point) {\n return [ point.from, point.to ];\n };\n\n WaterfallChart.prototype.createSegments = function createSegments () {\n var this$1 = this;\n\n var series = this.options.series;\n var seriesPoints = this.seriesPoints;\n var segments = this.segments = [];\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var points = seriesPoints[seriesIx];\n\n if (points) {\n var prevPoint = (void 0);\n for (var pointIx = 0; pointIx < points.length; pointIx++) {\n var point = points[pointIx];\n\n if (point && prevPoint) {\n var segment = new WaterfallSegment(prevPoint, point, currentSeries);\n segments.push(segment);\n this$1.append(segment);\n }\n\n prevPoint = point;\n }\n }\n }\n };\n\n return WaterfallChart;\n}(BarChart));\n\nexport default WaterfallChart;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesAggregator from '../aggregates/series-aggregator';\nimport DefaultAggregates from '../aggregates/default-aggregates';\nimport SeriesBinder from '../series-binder';\nimport BarChart from '../bar-chart/bar-chart';\nimport RangeBarChart from '../range-bar-chart/range-bar-chart';\nimport BulletChart from '../bullet-chart/bullet-chart';\nimport LineChart from '../line-chart/line-chart';\nimport AreaChart from '../area-chart/area-chart';\nimport RangeAreaChart from '../range-area-chart/range-area-chart';\nimport OHLCChart from '../ohlc-chart/ohlc-chart';\nimport CandlestickChart from '../candlestick-chart/candlestick-chart';\nimport BoxPlotChart from '../box-plot-chart/box-plot-chart';\nimport WaterfallChart from '../waterfall-chart/waterfall-chart';\n\nimport { CategoryAxis, DateCategoryAxis, NumericAxis, LogarithmicAxis, Point } from '../../core';\n\nimport { appendIfNotNull, categoriesCount, createOutOfRangePoints, equalsIgnoreCase, filterSeriesByType,\n getDateField, getField, isDateAxis, singleItemOrArray } from '../utils';\n\nimport { BAR, COLUMN, BULLET, VERTICAL_BULLET, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n RANGE_AREA, VERTICAL_RANGE_AREA, RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL,\n BOX_PLOT, VERTICAL_BOX_PLOT, OHLC, CANDLESTICK, LOGARITHMIC, STEP, EQUALLY_SPACED_SERIES } from '../constants';\n\nimport { DATE, MAX_VALUE } from '../../common/constants';\nimport { setDefaultOptions, inArray, isNumber, deepExtend, defined, eventElement, grep } from '../../common';\n\nvar AREA_SERIES = [ AREA, VERTICAL_AREA, RANGE_AREA, VERTICAL_RANGE_AREA ];\nvar OUT_OF_RANGE_SERIES = [ LINE, VERTICAL_LINE ].concat(AREA_SERIES);\n\nvar CategoricalPlotArea = (function (PlotAreaBase) {\n function CategoricalPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) CategoricalPlotArea.__proto__ = PlotAreaBase;\n CategoricalPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n CategoricalPlotArea.prototype.constructor = CategoricalPlotArea;\n\n CategoricalPlotArea.prototype.initFields = function initFields (series) {\n var this$1 = this;\n\n this.namedCategoryAxes = {};\n this.namedValueAxes = {};\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n\n if (series.length > 0) {\n this.invertAxes = inArray(\n series[0].type, [ BAR, BULLET, VERTICAL_LINE, VERTICAL_AREA, VERTICAL_RANGE_AREA,\n RANGE_BAR, HORIZONTAL_WATERFALL, VERTICAL_BOX_PLOT ]\n );\n\n for (var i = 0; i < series.length; i++) {\n var stack = series[i].stack;\n if (stack && stack.type === \"100%\") {\n this$1.stack100 = true;\n break;\n }\n }\n }\n\n };\n\n CategoricalPlotArea.prototype.render = function render (panes) {\n if ( panes === void 0 ) panes = this.panes;\n\n this.createCategoryAxes(panes);\n this.aggregateCategories(panes);\n this.createCategoryAxesLabels(panes);\n this.createCharts(panes);\n this.createValueAxes(panes);\n };\n\n CategoricalPlotArea.prototype.removeAxis = function removeAxis (axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n if (axis instanceof CategoryAxis) {\n delete this.namedCategoryAxes[axisName];\n } else {\n this.valueAxisRangeTracker.reset(axisName);\n delete this.namedValueAxes[axisName];\n }\n\n if (axis === this.categoryAxis) {\n delete this.categoryAxis;\n }\n\n if (axis === this.valueAxis) {\n delete this.valueAxis;\n }\n };\n\n CategoricalPlotArea.prototype.createCharts = function createCharts (panes) {\n var this$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1.addToLegend(paneSeries);\n\n var visibleSeries = this$1.filterVisibleSeries(paneSeries);\n if (!visibleSeries) {\n continue;\n }\n\n var groups = this$1.groupSeriesByCategoryAxis(visibleSeries);\n for (var groupIx = 0; groupIx < groups.length; groupIx++) {\n this$1.createChartGroup(groups[groupIx], pane);\n }\n }\n };\n\n CategoricalPlotArea.prototype.createChartGroup = function createChartGroup (series, pane) {\n this.createAreaChart(\n filterSeriesByType(series, [ AREA, VERTICAL_AREA ]), pane\n );\n\n this.createRangeAreaChart(\n filterSeriesByType(series, [ RANGE_AREA, VERTICAL_RANGE_AREA ]), pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ COLUMN, BAR ]), pane\n );\n\n this.createRangeBarChart(\n filterSeriesByType(series, [ RANGE_COLUMN, RANGE_BAR ]), pane\n );\n\n this.createBulletChart(\n filterSeriesByType(series, [ BULLET, VERTICAL_BULLET ]), pane\n );\n\n this.createCandlestickChart(\n filterSeriesByType(series, CANDLESTICK), pane\n );\n\n this.createBoxPlotChart(\n filterSeriesByType(series, [ BOX_PLOT, VERTICAL_BOX_PLOT ]), pane\n );\n\n this.createOHLCChart(\n filterSeriesByType(series, OHLC), pane\n );\n\n this.createWaterfallChart(\n filterSeriesByType(series, [ WATERFALL, HORIZONTAL_WATERFALL ]), pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ LINE, VERTICAL_LINE ]), pane\n );\n };\n\n CategoricalPlotArea.prototype.aggregateCategories = function aggregateCategories (panes) {\n var this$1 = this;\n\n var series = this.srcSeries || this.series;\n var processedSeries = [];\n this._currentPointsCache = {};\n this._seriesPointsCache = this._seriesPointsCache || {};\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var categoryAxis = this$1.seriesCategoryAxis(currentSeries);\n var axisPane = this$1.findPane(categoryAxis.options.pane);\n var dateAxis = equalsIgnoreCase(categoryAxis.options.type, DATE);\n\n if ((dateAxis || currentSeries.categoryField) && inArray(axisPane, panes)) {\n currentSeries = this$1.aggregateSeries(currentSeries, categoryAxis);\n } else {\n currentSeries = this$1.filterSeries(currentSeries, categoryAxis);\n }\n\n processedSeries.push(currentSeries);\n }\n\n this._seriesPointsCache = this._currentPointsCache;\n this._currentPointsCache = null;\n\n this.srcSeries = series;\n this.series = processedSeries;\n };\n\n CategoricalPlotArea.prototype.filterSeries = function filterSeries (series, categoryAxis) {\n var dataLength = (series.data || {}).length;\n categoryAxis._seriesMax = Math.max(categoryAxis._seriesMax || 0, dataLength);\n\n if (!(isNumber(categoryAxis.options.min) || isNumber(categoryAxis.options.max))) {\n return series;\n }\n\n var range = categoryAxis.currentRangeIndices();\n var outOfRangePoints = inArray(series.type, OUT_OF_RANGE_SERIES);\n var currentSeries = deepExtend({}, series);\n\n currentSeries.data = (currentSeries.data || []).slice(range.min, range.max + 1);\n\n if (outOfRangePoints) {\n createOutOfRangePoints(currentSeries, range, dataLength, function (idx) { return ({\n item: series.data[idx],\n category: categoryAxis.categoryAt(idx, true),\n categoryIx: idx - range.min\n }); }, function (idx) { return defined(series.data[idx]); });\n }\n\n return currentSeries;\n };\n\n CategoricalPlotArea.prototype.clearSeriesPointsCache = function clearSeriesPointsCache () {\n this._seriesPointsCache = {};\n };\n\n CategoricalPlotArea.prototype.seriesSourcePoints = function seriesSourcePoints (series, categoryAxis) {\n var this$1 = this;\n\n var key = (series.index) + \";\" + (categoryAxis.categoriesHash());\n if (this._seriesPointsCache[key]) {\n this._currentPointsCache[key] = this._seriesPointsCache[key];\n return this._seriesPointsCache[key];\n }\n\n var axisOptions = categoryAxis.options;\n var srcCategories = axisOptions.srcCategories;\n var dateAxis = equalsIgnoreCase(axisOptions.type, DATE);\n var srcData = series.data;\n var getFn = dateAxis ? getDateField : getField;\n var result = [];\n if (!dateAxis) {\n categoryAxis.mapCategories();//fixes major performance issue caused by searching for the index for large data\n }\n\n for (var idx = 0; idx < srcData.length; idx++) {\n var category = (void 0);\n if (series.categoryField) {\n category = getFn(series.categoryField, srcData[idx], this$1.chartService.intl);\n } else {\n category = srcCategories[idx];\n }\n\n if (defined(category) && category !== null) {\n var categoryIx = categoryAxis.totalIndex(category);\n result[categoryIx] = result[categoryIx] || { items: [], category: category };\n result[categoryIx].items.push(idx);\n }\n }\n\n this._currentPointsCache[key] = result;\n\n return result;\n };\n\n CategoricalPlotArea.prototype.aggregateSeries = function aggregateSeries (series, categoryAxis) {\n var srcData = series.data;\n if (!srcData.length) {\n return series;\n }\n\n var srcPoints = this.seriesSourcePoints(series, categoryAxis);\n var result = deepExtend({}, series);\n var aggregator = new SeriesAggregator(deepExtend({}, series), SeriesBinder.current, DefaultAggregates.current);\n var data = result.data = [];\n var dataItems = categoryAxis.options.dataItems || [];\n\n var range = categoryAxis.currentRangeIndices();\n var categoryItem = function (idx) {\n var categoryIdx = idx - range.min;\n var point = srcPoints[idx];\n if (!point) {\n point = srcPoints[idx] = {};\n }\n\n point.categoryIx = categoryIdx;\n\n if (!point.item) {\n var category = categoryAxis.categoryAt(idx, true);\n point.category = category;\n point.item = aggregator.aggregatePoints(point.items, category);\n }\n\n return point;\n };\n\n for (var idx = range.min; idx <= range.max; idx++) {\n var point = categoryItem(idx);\n data[point.categoryIx] = point.item;\n\n if (point.items && point.items.length) {\n dataItems[point.categoryIx] = point.item;\n }\n }\n\n if (inArray(result.type, OUT_OF_RANGE_SERIES)) {\n createOutOfRangePoints(result, range, categoryAxis.totalCount(), categoryItem, function (idx) { return srcPoints[idx]; });\n }\n\n categoryAxis.options.dataItems = dataItems;\n\n return result;\n };\n\n CategoricalPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n var series = chart.options.series;\n var categoryAxis = this.seriesCategoryAxis(series[0]);\n var categories = categoryAxis.options.categories;\n var categoriesToAdd = Math.max(0, categoriesCount(series) - categories.length);\n\n if (categoriesToAdd > 0) {//consider setting an option to axis instead of adding fake categories\n categories = categoryAxis.options.categories = categoryAxis.options.categories.slice(0);\n while (categoriesToAdd--) {\n categories.push(\"\");\n }\n }\n\n this.valueAxisRangeTracker.update(chart.valueAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n };\n\n // TODO: Refactor, optionally use series.pane option\n CategoricalPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n var options = this.options;\n var axisName = series.axis;\n var axisOptions = [].concat(options.valueAxis);\n var axis = grep(axisOptions, function(a) { return a.name === axisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = (panes[0] || {}).name || \"default\";\n var paneName = (axis || {}).pane || defaultPaneName;\n\n return paneName;\n };\n\n CategoricalPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis (series) {\n var axisName = series.categoryAxis;\n var axis = axisName ? this.namedCategoryAxes[axisName] : this.categoryAxis;\n\n if (!axis) {\n throw new Error(\"Unable to locate category axis with name \" + axisName);\n }\n\n return axis;\n };\n\n CategoricalPlotArea.prototype.stackableChartOptions = function stackableChartOptions (firstSeries, pane) {\n var stack = firstSeries.stack;\n var isStacked100 = stack && stack.type === \"100%\";\n var clip = pane.options.clip;\n\n return {\n isStacked: stack,\n isStacked100: isStacked100,\n clip: clip\n };\n };\n\n CategoricalPlotArea.prototype.groupSeriesByCategoryAxis = function groupSeriesByCategoryAxis (series) {\n var categoryAxes = [];\n var unique = {};\n for (var idx = 0; idx < series.length; idx++) {\n var name = series[idx].categoryAxis || \"$$default$$\";\n if (!unique.hasOwnProperty(name)) {\n unique[name] = true;\n categoryAxes.push(name);\n }\n }\n\n var groups = [];\n for (var axisIx = 0; axisIx < categoryAxes.length; axisIx++) {\n var axis = categoryAxes[axisIx];\n var axisSeries = groupSeries(series, axis, axisIx);\n if (axisSeries.length === 0) {\n continue;\n }\n\n groups.push(axisSeries);\n }\n\n return groups;\n };\n\n CategoricalPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var barChart = new BarChart(this, Object.assign({\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(barChart, pane);\n };\n\n CategoricalPlotArea.prototype.createRangeBarChart = function createRangeBarChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var rangeColumnChart = new RangeBarChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(rangeColumnChart, pane);\n };\n\n CategoricalPlotArea.prototype.createBulletChart = function createBulletChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var bulletChart = new BulletChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(bulletChart, pane);\n };\n\n CategoricalPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var lineChart = new LineChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(lineChart, pane);\n };\n\n CategoricalPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var areaChart = new AreaChart(this, Object.assign({\n invertAxes: this.invertAxes,\n series: series\n }, this.stackableChartOptions(firstSeries, pane)));\n\n this.appendChart(areaChart, pane);\n };\n\n CategoricalPlotArea.prototype.createRangeAreaChart = function createRangeAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var rangeAreaChart = new RangeAreaChart(this, {\n invertAxes: this.invertAxes,\n series: series,\n clip: pane.options.clip\n });\n\n this.appendChart(rangeAreaChart, pane);\n };\n\n CategoricalPlotArea.prototype.createOHLCChart = function createOHLCChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new OHLCChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n };\n\n CategoricalPlotArea.prototype.createCandlestickChart = function createCandlestickChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new CandlestickChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n };\n\n CategoricalPlotArea.prototype.createBoxPlotChart = function createBoxPlotChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var chart = new BoxPlotChart(this, {\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n series: series,\n spacing: firstSeries.spacing,\n clip: pane.options.clip\n });\n\n this.appendChart(chart, pane);\n };\n\n CategoricalPlotArea.prototype.createWaterfallChart = function createWaterfallChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var waterfallChart = new WaterfallChart(this, {\n series: series,\n invertAxes: this.invertAxes,\n gap: firstSeries.gap,\n spacing: firstSeries.spacing\n });\n\n this.appendChart(waterfallChart, pane);\n };\n\n CategoricalPlotArea.prototype.axisRequiresRounding = function axisRequiresRounding (categoryAxisName, categoryAxisIndex) {\n var this$1 = this;\n\n var centeredSeries = filterSeriesByType(this.series, EQUALLY_SPACED_SERIES);\n\n for (var seriesIx = 0; seriesIx < this.series.length; seriesIx++) {\n var currentSeries = this$1.series[seriesIx];\n if (inArray(currentSeries.type, AREA_SERIES)) {\n var line = currentSeries.line;\n if (line && line.style === STEP) {\n centeredSeries.push(currentSeries);\n }\n }\n }\n\n for (var seriesIx$1 = 0; seriesIx$1 < centeredSeries.length; seriesIx$1++) {\n var seriesAxis = centeredSeries[seriesIx$1].categoryAxis || \"\";\n if (seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) {\n return true;\n }\n }\n };\n\n CategoricalPlotArea.prototype.aggregatedAxis = function aggregatedAxis (categoryAxisName, categoryAxisIndex) {\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var seriesAxis = series[seriesIx].categoryAxis || \"\";\n if ((seriesAxis === categoryAxisName || (!seriesAxis && categoryAxisIndex === 0)) && series[seriesIx].categoryField) {\n return true;\n }\n }\n };\n\n CategoricalPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n if (axes[i] instanceof CategoryAxis) {\n axes[i].createLabels();\n }\n }\n };\n\n CategoricalPlotArea.prototype.createCategoryAxes = function createCategoryAxes (panes) {\n var this$1 = this;\n\n var invertAxes = this.invertAxes;\n var definitions = [].concat(this.options.categoryAxis);\n var axes = [];\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var categories = axisOptions.categories; if ( categories === void 0 ) categories = [];\n axisOptions = deepExtend({\n vertical: invertAxes,\n reverse: !invertAxes && this$1.chartService.rtl,\n axisCrossingValue: invertAxes ? MAX_VALUE : 0\n }, axisOptions);\n\n if (!defined(axisOptions.justified)) {\n axisOptions.justified = this$1.isJustified();\n }\n\n if (this$1.axisRequiresRounding(name, i)) {\n axisOptions.justified = false;\n }\n\n var categoryAxis = (void 0);\n\n if (isDateAxis(axisOptions, categories[0])) {\n categoryAxis = new DateCategoryAxis(axisOptions, this$1.chartService);\n } else {\n categoryAxis = new CategoryAxis(axisOptions, this$1.chartService);\n }\n\n definitions[i].categories = categoryAxis.options.srcCategories;\n\n if (name) {\n if (this$1.namedCategoryAxes[name]) {\n throw new Error((\"Category axis with name \" + name + \" is already defined\"));\n }\n this$1.namedCategoryAxes[name] = categoryAxis;\n }\n\n categoryAxis.axisIndex = i;\n axes.push(categoryAxis);\n this$1.appendAxis(categoryAxis);\n }\n }\n\n var primaryAxis = this.categoryAxis || axes[0];\n this.categoryAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisY = primaryAxis;\n } else {\n this.axisX = primaryAxis;\n }\n };\n\n CategoricalPlotArea.prototype.isJustified = function isJustified () {\n var series = this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n if (!inArray(currentSeries.type, AREA_SERIES)) {\n return false;\n }\n }\n\n return true;\n };\n\n CategoricalPlotArea.prototype.createValueAxes = function createValueAxes (panes) {\n var this$1 = this;\n\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var definitions = [].concat(this.options.valueAxis);\n var invertAxes = this.invertAxes;\n var baseOptions = { vertical: !invertAxes, reverse: invertAxes && this.chartService.rtl };\n var axes = [];\n\n if (this.stack100) {\n baseOptions.roundToMajorUnit = false;\n baseOptions.labels = { format: \"P0\" };\n }\n\n for (var i = 0; i < definitions.length; i++) {\n var axisOptions = definitions[i];\n var axisPane = this$1.findPane(axisOptions.pane);\n\n if (inArray(axisPane, panes)) {\n var name = axisOptions.name;\n var defaultAxisRange = equalsIgnoreCase(axisOptions.type, LOGARITHMIC) ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(name) || defaultRange || defaultAxisRange;\n\n if (i === 0 && range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var axisType = (void 0);\n if (equalsIgnoreCase(axisOptions.type, LOGARITHMIC)) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n var valueAxis = new axisType(range.min, range.max,\n deepExtend({}, baseOptions, axisOptions),\n this$1.chartService\n );\n\n if (name) {\n if (this$1.namedValueAxes[name]) {\n throw new Error((\"Value axis with name \" + name + \" is already defined\"));\n }\n this$1.namedValueAxes[name] = valueAxis;\n }\n valueAxis.axisIndex = i;\n\n axes.push(valueAxis);\n this$1.appendAxis(valueAxis);\n }\n }\n\n var primaryAxis = this.valueAxis || axes[0];\n this.valueAxis = primaryAxis;\n\n if (invertAxes) {\n this.axisX = primaryAxis;\n } else {\n this.axisY = primaryAxis;\n }\n };\n\n CategoricalPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var pane = this.pointPane(point);\n var categories = [];\n var values = [];\n\n if (!pane) {\n return;\n }\n\n var allAxes = pane.axes;\n for (var i = 0; i < allAxes.length; i++) {\n var axis = allAxes[i];\n if (axis.getValue) {\n appendIfNotNull(values, axis.getValue(point));\n } else {\n appendIfNotNull(categories, axis.getCategory(point));\n }\n }\n\n if (categories.length === 0) {\n appendIfNotNull(categories, this.categoryAxis.getCategory(point));\n }\n\n if (categories.length > 0 && values.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n category: singleItemOrArray(categories),\n value: singleItemOrArray(values)\n });\n }\n };\n\n CategoricalPlotArea.prototype.pointPane = function pointPane (point) {\n var panes = this.panes;\n\n for (var i = 0; i < panes.length; i++) {\n var currentPane = panes[i];\n if (currentPane.contentBox.containsPoint(point)) {\n return currentPane;\n }\n }\n };\n\n CategoricalPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n updateAxisOptions(this.options, axis, options);\n updateAxisOptions(this.originalOptions, axis, options);\n };\n\n return CategoricalPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axis, options) {\n var axesOptions = axis instanceof CategoryAxis ? [].concat(targetOptions.categoryAxis) : [].concat(targetOptions.valueAxis);\n deepExtend(axesOptions[axis.axisIndex], options);\n}\n\nfunction groupSeries(series, axis, axisIx) {\n return grep(series, function(s) {\n return (axisIx === 0 && !s.categoryAxis) || (s.categoryAxis === axis);\n });\n}\n\nsetDefaultOptions(CategoricalPlotArea, {\n categoryAxis: {},\n valueAxis: {}\n});\n\ndeepExtend(CategoricalPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default CategoricalPlotArea;","import Class from './class';\n\nvar Observable = (function (Class) {\n function Observable() {\n Class.call(this);\n\n this._events = {};\n }\n\n if ( Class ) Observable.__proto__ = Class;\n Observable.prototype = Object.create( Class && Class.prototype );\n Observable.prototype.constructor = Observable;\n\n Observable.prototype.bind = function bind (eventName, handlers, one) {\n var arguments$1 = arguments;\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n var length = eventNames.length;\n\n if (handlers === undefined) {\n for (var field in eventName) {\n this$1.bind(field, eventName[field]);\n }\n return this;\n }\n\n var loop = function ( idx ) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n if (one) {\n var original = handler;\n handler = function () { // eslint-disable-line no-loop-func\n this$1.unbind(eventName$1, handler);\n original.apply(this$1, arguments$1);\n };\n handler.original = original;\n }\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.push(handler);\n }\n };\n\n for (var idx = 0; idx < length; idx++) loop( idx );\n\n return this;\n };\n\n Observable.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable.prototype.first = function first (eventName, handlers) {\n var this$1 = this;\n\n var eventNames = getArray(eventName);\n var handlersIsFunction = isFunction(handlers);\n\n for (var idx = 0, length = eventNames.length; idx < length; idx++) {\n var eventName$1 = eventNames[idx];\n\n var handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n var events = this$1._events[eventName$1] = this$1._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return this;\n };\n\n Observable.prototype.trigger = function trigger (eventName, e) {\n var this$1 = this;\n if ( e === void 0 ) e = {};\n\n var events = this._events[eventName];\n\n if (events) {\n var length = events.length;\n\n e.sender = this;\n e._defaultPrevented = false;\n e.preventDefault = preventDefault;\n e.isDefaultPrevented = isDefaultPrevented;\n\n events = events.slice();\n\n for (var idx = 0; idx < length; idx++) {\n events[idx].call(this$1, e);\n }\n\n return e._defaultPrevented === true;\n }\n\n return false;\n };\n\n Observable.prototype.unbind = function unbind (eventName, handler) {\n var events = this._events[eventName];\n\n if (eventName === undefined) {\n this._events = {};\n } else if (events) {\n if (handler) {\n for (var 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 this._events[eventName] = [];\n }\n }\n\n return this;\n };\n\n return Observable;\n}(Class));\n\nfunction isFunction(value) {\n return typeof value === \"function\";\n}\n\nfunction getArray(value) {\n return typeof value === \"string\" ? [ value ] : value;\n}\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nfunction isDefaultPrevented() {\n return this._defaultPrevented === true;\n}\n\nexport default Observable;","import Group from '../shapes/group';\nimport Point from '../geometry/point';\nimport { Observable } from '../common';\nimport { eventElement, eventCoordinates, elementPadding, elementScale, elementSize, elementOffset } from '../util';\n\nvar events = [\n \"click\",\n \"mouseenter\",\n \"mouseleave\",\n \"mousemove\",\n \"resize\"\n];\n\nvar Surface = (function (Observable) {\n function Surface(element, options) {\n Observable.call(this);\n\n this.options = Object.assign({}, options);\n this.element = element;\n this.element._kendoExportVisual = this.exportVisual.bind(this);\n\n this._click = this._handler(\"click\");\n this._mouseenter = this._handler(\"mouseenter\");\n this._mouseleave = this._handler(\"mouseleave\");\n this._mousemove = this._handler(\"mousemove\");\n\n this._visual = new Group();\n\n elementSize(element, this.options);\n\n this.bind(events, this.options);\n\n this._enableTracking();\n }\n\n if ( Observable ) Surface.__proto__ = Observable;\n Surface.prototype = Object.create( Observable && Observable.prototype );\n Surface.prototype.constructor = Surface;\n\n Surface.prototype.draw = function draw (element) {\n this._visual.children.push(element);\n };\n\n Surface.prototype.clear = function clear () {\n this._visual.children = [];\n };\n\n Surface.prototype.destroy = function destroy () {\n this._visual = null;\n this.element._kendoExportVisual = null;\n this.unbind();\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n var this$1 = this;\n\n var domNode = eventElement(e);\n var node;\n\n while (!node && domNode) {\n node = domNode._kendoNode;\n if (domNode === this$1.element) {\n break;\n }\n\n domNode = domNode.parentElement;\n }\n\n if (node) {\n return node.srcElement;\n }\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n return this._visual;\n };\n\n Surface.prototype.getSize = function getSize () {\n return elementSize(this.element);\n };\n\n Surface.prototype.currentSize = function currentSize (size) {\n if (size) {\n this._size = size;\n } else {\n return this._size;\n }\n };\n\n Surface.prototype.setSize = function setSize (size) {\n elementSize(this.element, size);\n\n this.currentSize(size);\n this._resize();\n };\n\n Surface.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this.currentSize();\n\n if (force || (size.width > 0 || size.height > 0) && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this.currentSize(size);\n this._resize(size, force);\n this.trigger(\"resize\", size);\n }\n };\n\n Surface.prototype.size = function size (value) {\n if (!value) {\n return this.getSize();\n }\n\n this.setSize(value);\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n this._suspendedTracking = true;\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n this._suspendedTracking = false;\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {};\n\n Surface.prototype._resize = function _resize () {};\n\n Surface.prototype._handler = function _handler (eventName) {\n var this$1 = this;\n\n return function (e) {\n var node = this$1.eventTarget(e);\n if (node && !this$1._suspendedTracking) {\n this$1.trigger(eventName, {\n element: node,\n originalEvent: e,\n type: eventName\n });\n }\n };\n };\n\n Surface.prototype._elementOffset = function _elementOffset () {\n var element = this.element;\n var padding = elementPadding(element);\n var ref = elementOffset(element);\n var left = ref.left;\n var top = ref.top;\n\n return {\n left: left + padding.left,\n top: top + padding.top\n };\n };\n\n Surface.prototype._surfacePoint = function _surfacePoint (e) {\n var offset = this._elementOffset();\n var coord = eventCoordinates(e);\n var x = coord.x - offset.left;\n var y = coord.y - offset.top;\n\n var inverseTransform = elementScale(this.element).invert();\n var point = new Point(\n x,\n y\n ).transform(inverseTransform);\n\n return point;\n };\n\n return Surface;\n}(Observable));\n\nexport default Surface;\n","import { Class } from '../common';\n\nvar BaseNode = (function (Class) {\n function BaseNode(srcElement) {\n Class.call(this);\n\n this.childNodes = [];\n this.parent = null;\n\n if (srcElement) {\n this.srcElement = srcElement;\n this.observe();\n }\n }\n\n if ( Class ) BaseNode.__proto__ = Class;\n BaseNode.prototype = Object.create( Class && Class.prototype );\n BaseNode.prototype.constructor = BaseNode;\n\n BaseNode.prototype.destroy = function destroy () {\n var this$1 = this;\n\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n this$1.childNodes[i].destroy();\n }\n\n this.parent = null;\n };\n\n BaseNode.prototype.load = function load () {};\n\n BaseNode.prototype.observe = function observe () {\n if (this.srcElement) {\n this.srcElement.addObserver(this);\n }\n };\n\n BaseNode.prototype.append = function append (node) {\n this.childNodes.push(node);\n node.parent = this;\n };\n\n BaseNode.prototype.insertAt = function insertAt (node, pos) {\n this.childNodes.splice(pos, 0, node);\n node.parent = this;\n };\n\n BaseNode.prototype.remove = function remove (index, count) {\n var this$1 = this;\n\n var end = index + count;\n for (var i = index; i < end; i++) {\n this$1.childNodes[i].removeSelf();\n }\n this.childNodes.splice(index, count);\n };\n\n BaseNode.prototype.removeSelf = function removeSelf () {\n this.clear();\n this.destroy();\n };\n\n BaseNode.prototype.clear = function clear () {\n this.remove(0, this.childNodes.length);\n };\n\n BaseNode.prototype.invalidate = function invalidate () {\n if (this.parent) {\n this.parent.invalidate();\n }\n };\n\n BaseNode.prototype.geometryChange = function geometryChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.optionsChange = function optionsChange () {\n this.invalidate();\n };\n\n BaseNode.prototype.childrenChange = function childrenChange (e) {\n if (e.action === \"add\") {\n this.load(e.items, e.index);\n } else if (e.action === \"remove\") {\n this.remove(e.index, e.items.length);\n }\n\n this.invalidate();\n };\n\n return BaseNode;\n}(Class));\n\nexport default BaseNode;","import { defined } from '../../util';\n\nexport default function renderAttr(name, value) {\n return (defined(value) && value !== null) ? (\" \" + name + \"=\\\"\" + value + \"\\\" \") : \"\";\n}","import renderAttr from './render-attribute';\n\nexport default function renderAllAttr(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n output += renderAttr(attrs[i][0], attrs[i][1]);\n }\n\n return output;\n}","import { defined } from '../../util';\n\nexport default function renderStyle(attrs) {\n var output = \"\";\n for (var i = 0; i < attrs.length; i++) {\n var value = attrs[i][1];\n if (defined(value)) {\n output += attrs[i][0] + \":\" + value + \";\";\n }\n }\n\n if (output !== \"\") {\n return output;\n }\n}","var NODE_MAP = {};\n\nexport default NODE_MAP;","var SVG_NS = \"http://www.w3.org/2000/svg\";\nvar NONE = \"none\";\nvar POINT_DIGITS = 3;\n\nexport { SVG_NS, NONE, POINT_DIGITS };","import { SVG_NS } from '../constants';\n\nvar renderSVG = function(container, svg) {\n container.innerHTML = svg;\n};\n\nif (typeof document !== \"undefined\") {\n var testFragment = \"\";\n var testContainer = document.createElement(\"div\");\n var hasParser = typeof DOMParser !== \"undefined\";\n\n testContainer.innerHTML = testFragment;\n\n if (hasParser && testContainer.firstChild.namespaceURI !== SVG_NS) {\n renderSVG = function(container, svg) {\n var parser = new DOMParser();\n var chartDoc = parser.parseFromString(svg, \"text/xml\");\n var importedDoc = document.adoptNode(chartDoc.documentElement);\n\n container.innerHTML = \"\";\n container.appendChild(importedDoc);\n };\n }\n}\n\nexport default renderSVG;","import BaseNode from '../core/base-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\nimport renderStyle from './utils/render-style';\nimport NODE_MAP from './node-map';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS, NONE } from './constants';\nimport { support } from '../common';\nimport { defined } from '../util';\n\nvar TRANSFORM = \"transform\";\nvar DefinitionMap = {\n clip: \"clip-path\",\n fill: \"fill\"\n};\n\nfunction isDefinition(type, value) {\n return type === \"clip\" || (type === \"fill\" && (!value || value.nodeType === \"Gradient\"));\n}\n\nfunction baseUrl() {\n var base = document.getElementsByTagName(\"base\")[0];\n var href = document.location.href;\n var url = \"\";\n\n if (base && !(support.browser || {}).msie) {\n var hashIndex = href.indexOf(\"#\");\n if (hashIndex !== -1) {\n href = href.substring(0, hashIndex);\n }\n\n url = href;\n }\n\n return url;\n}\n\nvar Node = (function (BaseNode) {\n function Node(srcElement, options) {\n BaseNode.call(this, srcElement);\n this.definitions = {};\n\n this.options = options;\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.destroy = function destroy () {\n if (this.element) {\n this.element._kendoNode = null;\n this.element = null;\n }\n\n this.clearDefinitions();\n BaseNode.prototype.destroy.call(this);\n };\n\n Node.prototype.load = function load (elements, pos) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, this$1.options);\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n\n childNode.createDefinitions();\n\n if (children && children.length > 0) {\n childNode.load(children);\n }\n\n var element = this$1.element;\n if (element) {\n childNode.attachTo(element, pos);\n }\n }\n };\n\n Node.prototype.root = function root () {\n var root = this;\n\n while (root.parent) {\n root = root.parent;\n }\n\n return root;\n };\n\n Node.prototype.attachTo = function attachTo (domElement, pos) {\n var container = document.createElement(\"div\");\n renderSVG(container,\n \"\" +\n this.render() +\n \"\"\n );\n\n var element = container.firstChild.firstChild;\n if (element) {\n if (defined(pos)) {\n domElement.insertBefore(element, domElement.childNodes[pos] || null);\n } else {\n domElement.appendChild(element);\n }\n this.setElement(element);\n }\n };\n\n Node.prototype.setElement = function setElement (element) {\n if (this.element) {\n this.element._kendoNode = null;\n }\n\n this.element = element;\n this.element._kendoNode = this;\n\n var nodes = this.childNodes;\n for (var i = 0; i < nodes.length; i++) {\n var childElement = element.childNodes[i];\n nodes[i].setElement(childElement);\n }\n };\n\n Node.prototype.clear = function clear () {\n this.clearDefinitions();\n\n if (this.element) {\n this.element.innerHTML = \"\";\n }\n\n var children = this.childNodes;\n for (var i = 0; i < children.length; i++) {\n children[i].destroy();\n }\n\n this.childNodes = [];\n };\n\n Node.prototype.removeSelf = function removeSelf () {\n if (this.element) {\n var parentNode = this.element.parentNode;\n if (parentNode) {\n parentNode.removeChild(this.element);\n }\n this.element = null;\n }\n\n BaseNode.prototype.removeSelf.call(this);\n };\n\n Node.prototype.template = function template () {\n return this.renderChildren();\n };\n\n Node.prototype.render = function render () {\n return this.template();\n };\n\n Node.prototype.renderChildren = function renderChildren () {\n var nodes = this.childNodes;\n var output = \"\";\n\n for (var i = 0; i < nodes.length; i++) {\n output += nodes[i].render();\n }\n\n return output;\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n var field = e.field;\n var value = e.value;\n\n if (field === \"visible\") {\n this.css(\"display\", value ? \"\" : NONE);\n } else if (DefinitionMap[field] && isDefinition(field, value)) {\n this.updateDefinition(field, value);\n } else if (field === \"opacity\") {\n this.attr(\"opacity\", value);\n } else if (field === \"cursor\") {\n this.css(\"cursor\", value);\n } else if (field === \"id\") {\n if (value) {\n this.attr(\"id\", value);\n } else {\n this.removeAttr(\"id\");\n }\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.attr = function attr (name, value) {\n if (this.element) {\n this.element.setAttribute(name, value);\n }\n };\n\n Node.prototype.allAttr = function allAttr (attrs) {\n var this$1 = this;\n\n for (var i = 0; i < attrs.length; i++) {\n this$1.attr(attrs[i][0], attrs[i][1]);\n }\n };\n\n Node.prototype.css = function css (name, value) {\n if (this.element) {\n this.element.style[name] = value;\n }\n };\n\n Node.prototype.allCss = function allCss (styles) {\n var this$1 = this;\n\n for (var i = 0; i < styles.length; i++) {\n this$1.css(styles[i][0], styles[i][1]);\n }\n };\n\n Node.prototype.removeAttr = function removeAttr (name) {\n if (this.element) {\n this.element.removeAttribute(name);\n }\n };\n\n Node.prototype.mapTransform = function mapTransform (transform) {\n var attrs = [];\n if (transform) {\n attrs.push([\n TRANSFORM,\n \"matrix(\" + transform.matrix().toString(6) + \")\"\n ]);\n }\n\n return attrs;\n };\n\n Node.prototype.renderTransform = function renderTransform () {\n return renderAllAttr(\n this.mapTransform(this.srcElement.transform())\n );\n };\n\n Node.prototype.transformChange = function transformChange (value) {\n if (value) {\n this.allAttr(this.mapTransform(value));\n } else {\n this.removeAttr(TRANSFORM);\n }\n };\n\n Node.prototype.mapStyle = function mapStyle () {\n var options = this.srcElement.options;\n var style = [ [ \"cursor\", options.cursor ] ];\n\n if (options.visible === false) {\n style.push([ \"display\", NONE ]);\n }\n\n return style;\n };\n\n Node.prototype.renderStyle = function renderStyle$1 () {\n return renderAttr(\"style\", renderStyle(this.mapStyle(true)));\n };\n\n Node.prototype.renderOpacity = function renderOpacity () {\n return renderAttr(\"opacity\", this.srcElement.options.opacity);\n };\n\n Node.prototype.renderId = function renderId () {\n return renderAttr(\"id\", this.srcElement.options.id);\n };\n\n Node.prototype.createDefinitions = function createDefinitions () {\n var srcElement = this.srcElement;\n var definitions = this.definitions;\n if (srcElement) {\n var options = srcElement.options;\n var hasDefinitions;\n\n for (var field in DefinitionMap) {\n var definition = options.get(field);\n if (definition && isDefinition(field, definition)) {\n definitions[field] = definition;\n hasDefinitions = true;\n }\n }\n if (hasDefinitions) {\n this.definitionChange({\n action: \"add\",\n definitions: definitions\n });\n }\n }\n };\n\n Node.prototype.definitionChange = function definitionChange (e) {\n if (this.parent) {\n this.parent.definitionChange(e);\n }\n };\n\n Node.prototype.updateDefinition = function updateDefinition (type, value) {\n var definitions = this.definitions;\n var current = definitions[type];\n var attr = DefinitionMap[type];\n var definition = {};\n if (current) {\n definition[type] = current;\n this.definitionChange({\n action: \"remove\",\n definitions: definition\n });\n delete definitions[type];\n }\n\n if (!value) {\n if (current) {\n this.removeAttr(attr);\n }\n } else {\n definition[type] = value;\n this.definitionChange({\n action: \"add\",\n definitions: definition\n });\n definitions[type] = value;\n this.attr(attr, this.refUrl(value.id));\n }\n };\n\n Node.prototype.clearDefinitions = function clearDefinitions () {\n var definitions = this.definitions;\n\n this.definitionChange({\n action: \"remove\",\n definitions: definitions\n });\n this.definitions = {};\n };\n\n Node.prototype.renderDefinitions = function renderDefinitions () {\n return renderAllAttr(this.mapDefinitions());\n };\n\n Node.prototype.mapDefinitions = function mapDefinitions () {\n var this$1 = this;\n\n var definitions = this.definitions;\n var attrs = [];\n\n for (var field in definitions) {\n attrs.push([ DefinitionMap[field], this$1.refUrl(definitions[field].id) ]);\n }\n\n return attrs;\n };\n\n Node.prototype.refUrl = function refUrl (id) {\n var skipBaseHref = (this.options || {}).skipBaseHref;\n var baseHref = this.baseUrl().replace(/'/g, \"\\\\'\");\n var base = skipBaseHref ? '' : baseHref;\n return (\"url(\" + base + \"#\" + id + \")\");\n };\n\n Node.prototype.baseUrl = function baseUrl$1 () {\n return baseUrl();\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;\n","import Node from './node';\nimport renderAttr from './utils/render-attribute';\n\nvar GradientStopNode = (function (Node) {\n function GradientStopNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GradientStopNode.__proto__ = Node;\n GradientStopNode.prototype = Object.create( Node && Node.prototype );\n GradientStopNode.prototype.constructor = GradientStopNode;\n\n GradientStopNode.prototype.template = function template () {\n return (\"\");\n };\n\n GradientStopNode.prototype.renderOffset = function renderOffset () {\n return renderAttr(\"offset\", this.srcElement.offset());\n };\n\n GradientStopNode.prototype.mapStyle = function mapStyle () {\n var srcElement = this.srcElement;\n return [\n [ \"stop-color\", srcElement.color() ],\n [ \"stop-opacity\", srcElement.opacity() ]\n ];\n };\n\n GradientStopNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"offset\") {\n this.attr(e.field, e.value);\n } else if (e.field === \"color\" || e.field === \"opacity\") {\n this.css(\"stop-\" + e.field, e.value);\n }\n };\n\n return GradientStopNode;\n}(Node));\n\nexport default GradientStopNode;","import GradientStopNode from './gradient-stop-node';\nimport BaseNode from '../core/base-node';\nimport Node from './node';\nimport renderAllAttr from './utils/render-all-attributes';\n\nvar GradientNode = (function (Node) {\n function GradientNode(srcElement) {\n Node.call(this, srcElement);\n\n this.id = srcElement.id;\n\n this.loadStops();\n }\n\n if ( Node ) GradientNode.__proto__ = Node;\n GradientNode.prototype = Object.create( Node && Node.prototype );\n GradientNode.prototype.constructor = GradientNode;\n\n GradientNode.prototype.loadStops = function loadStops () {\n var this$1 = this;\n\n var stops = this.srcElement.stops;\n var element = this.element;\n\n for (var idx = 0; idx < stops.length; idx++) {\n var stopNode = new GradientStopNode(stops[idx]);\n this$1.append(stopNode);\n if (element) {\n stopNode.attachTo(element);\n }\n }\n };\n\n GradientNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"gradient.stops\") {\n BaseNode.prototype.clear.call(this);\n this.loadStops();\n } else if (e.field === \"gradient\") {\n this.allAttr(this.mapCoordinates());\n }\n };\n\n GradientNode.prototype.renderCoordinates = function renderCoordinates () {\n return renderAllAttr(this.mapCoordinates());\n };\n\n GradientNode.prototype.mapSpace = function mapSpace () {\n return [ \"gradientUnits\", this.srcElement.userSpace() ? \"userSpaceOnUse\" : \"objectBoundingBox\" ];\n };\n\n return GradientNode;\n}(Node));\n\nexport default GradientNode;","import GradientNode from './gradient-node';\n\nvar LinearGradientNode = (function (GradientNode) {\n function LinearGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) LinearGradientNode.__proto__ = GradientNode;\n LinearGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n LinearGradientNode.prototype.constructor = LinearGradientNode;\n\n LinearGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n LinearGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var start = srcElement.start();\n var end = srcElement.end();\n var attrs = [\n [ \"x1\", start.x ],\n [ \"y1\", start.y ],\n [ \"x2\", end.x ],\n [ \"y2\", end.y ],\n this.mapSpace()\n ];\n\n return attrs;\n };\n\n return LinearGradientNode;\n}(GradientNode));\n\nexport default LinearGradientNode;","import GradientNode from './gradient-node';\n\nvar RadialGradientNode = (function (GradientNode) {\n function RadialGradientNode () {\n GradientNode.apply(this, arguments);\n }\n\n if ( GradientNode ) RadialGradientNode.__proto__ = GradientNode;\n RadialGradientNode.prototype = Object.create( GradientNode && GradientNode.prototype );\n RadialGradientNode.prototype.constructor = RadialGradientNode;\n\n RadialGradientNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n RadialGradientNode.prototype.mapCoordinates = function mapCoordinates () {\n var srcElement = this.srcElement;\n var center = srcElement.center();\n var radius = srcElement.radius();\n var attrs = [\n [ \"cx\", center.x ],\n [ \"cy\", center.y ],\n [ \"r\", radius ],\n this.mapSpace()\n ];\n return attrs;\n };\n\n return RadialGradientNode;\n}(GradientNode));\n\nexport default RadialGradientNode;","import Node from './node';\n\nvar ClipNode = (function (Node) {\n function ClipNode(srcElement) {\n Node.call(this);\n\n this.srcElement = srcElement;\n this.id = srcElement.id;\n\n this.load([ srcElement ]);\n }\n\n if ( Node ) ClipNode.__proto__ = Node;\n ClipNode.prototype = Object.create( Node && Node.prototype );\n ClipNode.prototype.constructor = ClipNode;\n\n ClipNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n return ClipNode;\n}(Node));\n\nexport default ClipNode;","import LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport LinearGradientNode from './linear-gradient-node';\nimport RadialGradientNode from './radial-gradient-node';\nimport Node from './node';\nimport ClipNode from './clip-node';\n\nvar DefinitionNode = (function (Node) {\n function DefinitionNode() {\n Node.call(this);\n this.definitionMap = {};\n }\n\n if ( Node ) DefinitionNode.__proto__ = Node;\n DefinitionNode.prototype = Object.create( Node && Node.prototype );\n DefinitionNode.prototype.constructor = DefinitionNode;\n\n DefinitionNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n };\n\n DefinitionNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n DefinitionNode.prototype.definitionChange = function definitionChange (e) {\n var definitions = e.definitions;\n var action = e.action;\n\n if (action === \"add\") {\n this.addDefinitions(definitions);\n } else if (action === \"remove\") {\n this.removeDefinitions(definitions);\n }\n };\n\n DefinitionNode.prototype.createDefinition = function createDefinition (type, item) {\n var nodeType;\n if (type === \"clip\") {\n nodeType = ClipNode;\n } else if (type === \"fill\") {\n if (item instanceof LinearGradient) {\n nodeType = LinearGradientNode;\n } else if (item instanceof RadialGradient) {\n nodeType = RadialGradientNode;\n }\n }\n return new nodeType(item);\n };\n\n DefinitionNode.prototype.addDefinitions = function addDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.addDefinition(field, definitions[field]);\n }\n };\n\n DefinitionNode.prototype.addDefinition = function addDefinition (type, srcElement) {\n var ref = this;\n var element = ref.element;\n var definitionMap = ref.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n if (!mapItem) {\n var node = this.createDefinition(type, srcElement);\n definitionMap[id] = {\n element: node,\n count: 1\n };\n this.append(node);\n if (element) {\n node.attachTo(this.element);\n }\n } else {\n mapItem.count++;\n }\n };\n\n DefinitionNode.prototype.removeDefinitions = function removeDefinitions (definitions) {\n var this$1 = this;\n\n for (var field in definitions) {\n this$1.removeDefinition(definitions[field]);\n }\n };\n\n DefinitionNode.prototype.removeDefinition = function removeDefinition (srcElement) {\n var definitionMap = this.definitionMap;\n var id = srcElement.id;\n var mapItem = definitionMap[id];\n\n if (mapItem) {\n mapItem.count--;\n if (mapItem.count === 0) {\n this.remove(this.childNodes.indexOf(mapItem.element), 1);\n delete definitionMap[id];\n }\n }\n };\n\n return DefinitionNode;\n}(Node));\n\nexport default DefinitionNode;","import BaseNode from '../core/base-node';\nimport Node from './node';\nimport DefinitionNode from './definition-node';\n\nvar RootNode = (function (Node) {\n function RootNode(options) {\n Node.call(this);\n this.options = options;\n this.defs = new DefinitionNode();\n }\n\n if ( Node ) RootNode.__proto__ = Node;\n RootNode.prototype = Object.create( Node && Node.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.attachTo = function attachTo (domElement) {\n this.element = domElement;\n this.defs.attachTo(domElement.firstElementChild);\n };\n\n RootNode.prototype.clear = function clear () {\n BaseNode.prototype.clear.call(this);\n };\n\n RootNode.prototype.template = function template () {\n return this.defs.render() + this.renderChildren();\n };\n\n RootNode.prototype.definitionChange = function definitionChange (e) {\n this.defs.definitionChange(e);\n };\n\n return RootNode;\n}(Node));\n\nexport default RootNode;","var DASH_ARRAYS = {\n dot: [ 1.5, 3.5 ],\n dash: [ 4, 3.5 ],\n longdash: [ 8, 3.5 ],\n dashdot: [ 3.5, 3.5, 1.5, 3.5 ],\n longdashdot: [ 8, 3.5, 1.5, 3.5 ],\n longdashdotdot: [ 8, 3.5, 1.5, 3.5, 1.5, 3.5 ]\n};\n\nvar SOLID = \"solid\";\nvar BUTT = \"butt\";\n\nexport { DASH_ARRAYS, SOLID, BUTT };","import Node from './node';\nimport { defined, isTransparent } from '../util';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport { NONE, POINT_DIGITS } from './constants';\nimport renderAllAttr from './utils/render-all-attributes';\nimport renderAttr from './utils/render-attribute';\n\nvar ATTRIBUTE_MAP = {\n \"fill.opacity\": \"fill-opacity\",\n \"stroke.color\": \"stroke\",\n \"stroke.width\": \"stroke-width\",\n \"stroke.opacity\": \"stroke-opacity\"\n};\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.geometryChange = function geometryChange () {\n this.attr(\"d\", this.renderData());\n this.invalidate();\n };\n\n PathNode.prototype.optionsChange = function optionsChange (e) {\n switch (e.field) {\n case \"fill\":\n if (e.value) {\n this.allAttr(this.mapFill(e.value));\n } else {\n this.removeAttr(\"fill\");\n }\n break;\n\n case \"fill.color\":\n this.allAttr(this.mapFill({ color: e.value }));\n break;\n\n case \"stroke\":\n if (e.value) {\n this.allAttr(this.mapStroke(e.value));\n } else {\n this.removeAttr(\"stroke\");\n }\n break;\n\n case \"transform\":\n this.transformChange(e.value);\n break;\n\n default:\n var name = ATTRIBUTE_MAP[e.field];\n if (name) {\n this.attr(name, e.value);\n }\n break;\n }\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n PathNode.prototype.content = function content () {\n if (this.element) {\n this.element.textContent = this.srcElement.content();\n }\n };\n\n PathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || undefined;\n };\n\n PathNode.prototype.mapStroke = function mapStroke (stroke) {\n var attrs = [];\n\n if (stroke && !isTransparent(stroke.color)) {\n attrs.push([ \"stroke\", stroke.color ]);\n attrs.push([ \"stroke-width\", stroke.width ]);\n attrs.push([ \"stroke-linecap\", this.renderLinecap(stroke) ]);\n attrs.push([ \"stroke-linejoin\", stroke.lineJoin ]);\n\n if (defined(stroke.opacity)) {\n attrs.push([ \"stroke-opacity\", stroke.opacity ]);\n }\n\n if (defined(stroke.dashType)) {\n attrs.push([ \"stroke-dasharray\", this.renderDashType(stroke) ]);\n }\n } else {\n attrs.push([ \"stroke\", NONE ]);\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderStroke = function renderStroke () {\n return renderAllAttr(\n this.mapStroke(this.srcElement.options.stroke)\n );\n };\n\n PathNode.prototype.renderDashType = function renderDashType (stroke) {\n var dashType = stroke.dashType;\n var width = stroke.width; if ( width === void 0 ) width = 1;\n\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType.toLowerCase()];\n var result = [];\n\n for (var i = 0; i < dashArray.length; i++) {\n result.push(dashArray[i] * width);\n }\n\n return result.join(\" \");\n }\n };\n\n PathNode.prototype.renderLinecap = function renderLinecap (stroke) {\n var dashType = stroke.dashType;\n var lineCap = stroke.lineCap;\n\n return (dashType && dashType !== \"solid\") ? BUTT : lineCap;\n };\n\n PathNode.prototype.mapFill = function mapFill (fill) {\n var attrs = [];\n if (!(fill && fill.nodeType === \"Gradient\")) {\n if (fill && !isTransparent(fill.color)) {\n attrs.push([ \"fill\", fill.color ]);\n\n if (defined(fill.opacity)) {\n attrs.push([ \"fill-opacity\", fill.opacity ]);\n }\n } else {\n attrs.push([ \"fill\", NONE ]);\n }\n }\n\n return attrs;\n };\n\n PathNode.prototype.renderFill = function renderFill () {\n return renderAllAttr(\n this.mapFill(this.srcElement.options.fill)\n );\n };\n\n PathNode.prototype.template = function template () {\n return \"\";\n };\n\n return PathNode;\n}(Node));\n\nexport default PathNode;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderData = function renderData () {\n return this.srcElement.toPath().toString(POINT_DIGITS);\n };\n\n return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.geometryChange = function geometryChange () {\n var center = this.center();\n this.attr(\"cx\", center.x);\n this.attr(\"cy\", center.y);\n this.attr(\"r\", this.radius());\n this.invalidate();\n };\n\n CircleNode.prototype.center = function center () {\n return this.srcElement.geometry().center;\n };\n\n CircleNode.prototype.radius = function radius () {\n return this.srcElement.geometry().radius;\n };\n\n CircleNode.prototype.template = function template () {\n return \"\";\n };\n\n return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import Node from './node';\n\nvar GroupNode = (function (Node) {\n function GroupNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) GroupNode.__proto__ = Node;\n GroupNode.prototype = Object.create( Node && Node.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.template = function template () {\n return (\"\" + (this.renderChildren()) + \"\");\n };\n\n GroupNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\") {\n this.transformChange(e.value);\n }\n\n Node.prototype.optionsChange.call(this, e);\n };\n\n return GroupNode;\n}(Node));\n\nexport default GroupNode;\n","var ampRegExp = /&/g;\nvar ltRegExp = //g;\n\nexport default function htmlEncode(value) {\n return String(value).replace(ampRegExp, \"&\").replace(ltRegExp, \"<\").replace(gtRegExp, \">\").replace(quoteRegExp, \""\").replace(aposRegExp, \"'\");\n}","import PathNode from './path-node';\nimport renderAllAttr from './utils/render-all-attributes';\nimport { htmlEncode } from '../common';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.geometryChange = function geometryChange () {\n this.allAttr(this.mapPosition());\n this.invalidate();\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.allAttr(this.mapSource());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n ImageNode.prototype.mapPosition = function mapPosition () {\n var rect = this.srcElement.rect();\n var tl = rect.topLeft();\n\n return [\n [ \"x\", tl.x ],\n [ \"y\", tl.y ],\n [ \"width\", rect.width() + \"px\" ],\n [ \"height\", rect.height() + \"px\" ]\n ];\n };\n\n ImageNode.prototype.renderPosition = function renderPosition () {\n return renderAllAttr(this.mapPosition());\n };\n\n ImageNode.prototype.mapSource = function mapSource (encode) {\n var src = this.srcElement.src();\n\n if (encode) {\n src = htmlEncode(src);\n }\n\n return [ [ \"xlink:href\", src ] ];\n };\n\n ImageNode.prototype.renderSource = function renderSource () {\n return renderAllAttr(this.mapSource(true));\n };\n\n ImageNode.prototype.template = function template () {\n return \"\" +\n \"\";\n };\n\n return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import { POINT_DIGITS } from './constants';\nimport PathNode from './path-node';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderData = function renderData () {\n return this.srcElement.toString(POINT_DIGITS) || 'undefined';\n };\n\n return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","import PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.geometryChange = function geometryChange () {\n var geometry = this.srcElement.geometry();\n this.attr(\"x\", geometry.origin.x);\n this.attr(\"y\", geometry.origin.y);\n this.attr(\"width\", geometry.size.width);\n this.attr(\"height\", geometry.size.height);\n this.attr(\"rx\", geometry.cornerRadius[0]);\n this.attr(\"ry\", geometry.cornerRadius[1]);\n this.invalidate();\n };\n\n RectNode.prototype.size = function size () {\n return this.srcElement.geometry().size;\n };\n\n RectNode.prototype.origin = function origin () {\n return this.srcElement.geometry().origin;\n };\n\n RectNode.prototype.rx = function rx () {\n return this.srcElement.geometry().cornerRadius[0];\n };\n\n RectNode.prototype.ry = function ry () {\n return this.srcElement.geometry().cornerRadius[1];\n };\n\n RectNode.prototype.template = function template () {\n return \"\";\n };\n\n return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import PathNode from './path-node';\nimport renderStyle from './utils/render-style';\nimport renderAttr from './utils/render-attribute';\nimport { htmlEncode, support } from '../common';\nimport { normalizeText } from '../text-metrics';\n\nvar ENTITY_REGEX = /&(?:[a-zA-Z]+|#\\d+);/g;\n\nfunction decodeEntities(text) {\n if (!text || typeof text !== \"string\" || !ENTITY_REGEX.test(text)) {\n return text;\n }\n\n var element = decodeEntities._element;\n ENTITY_REGEX.lastIndex = 0;\n\n return text.replace(ENTITY_REGEX, function (match) {\n element.innerHTML = match;\n\n return element.textContent || element.innerText;\n });\n}\n\nif (typeof document !== \"undefined\") {\n decodeEntities._element = document.createElement(\"span\");\n}\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.geometryChange = function geometryChange () {\n var pos = this.pos();\n this.attr(\"x\", pos.x);\n this.attr(\"y\", pos.y);\n this.invalidate();\n };\n\n TextNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"font\") {\n this.attr(\"style\", renderStyle(this.mapStyle()));\n this.geometryChange();\n } else if (e.field === \"content\") {\n PathNode.prototype.content.call(this, this.srcElement.content());\n }\n\n PathNode.prototype.optionsChange.call(this, e);\n };\n\n TextNode.prototype.mapStyle = function mapStyle (encode) {\n var style = PathNode.prototype.mapStyle.call(this, encode);\n var font = this.srcElement.options.font;\n\n if (encode) {\n font = htmlEncode(font);\n }\n\n style.push([ \"font\", font ], [ \"white-space\", \"pre\" ]);\n\n return style;\n };\n\n TextNode.prototype.pos = function pos () {\n var pos = this.srcElement.position();\n var size = this.srcElement.measure();\n return pos.clone().setY(pos.y + size.baseline);\n };\n\n TextNode.prototype.renderContent = function renderContent () {\n var content = this.srcElement.content();\n content = decodeEntities(content);\n content = htmlEncode(content);\n\n return normalizeText(content);\n };\n\n TextNode.prototype.renderTextAnchor = function renderTextAnchor () {\n var anchor;\n\n if ((this.options || {}).rtl && !(support.browser.msie || support.browser.edge)) {\n anchor = 'end';\n }\n\n return renderAttr(\"text-anchor\", anchor);\n };\n\n TextNode.prototype.template = function template () {\n return \"\" + (this.renderContent()) + \"\";\n };\n\n return TextNode;\n}(PathNode));\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport RootNode from './root-node';\nimport Group from '../shapes/group';\nimport transform from '../geometry/transform';\nimport renderSVG from './utils/render-svg';\nimport { SVG_NS } from './constants';\nimport { bindEvents, unbindEvents, elementStyles } from '../util';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\nvar RTL = 'rtl';\n\nfunction alignToScreen(element) {\n var ctm;\n\n try {\n ctm = element.getScreenCTM ? element.getScreenCTM() : null;\n } catch (e) { } // eslint-disable-line no-empty\n\n if (ctm) {\n var left = - ctm.e % 1;\n var top = - ctm.f % 1;\n var style = element.style;\n\n if (left !== 0 || top !== 0) {\n style.left = left + \"px\";\n style.top = top + \"px\";\n }\n }\n}\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this._root = new RootNode(Object.assign({\n rtl: elementStyles(element, 'direction').direction === RTL\n }, this.options));\n\n renderSVG(this.element, this._template(''));\n\n this._rootElement = this.element.firstElementChild;\n this._rootElement.style.width = '100%';\n this._rootElement.style.height = '100%';\n this._rootElement.style.overflow = 'hidden';\n\n alignToScreen(this._rootElement);\n\n this._root.attachTo(this._rootElement);\n\n bindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n\n this.resize();\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var prototypeAccessors = { type: { configurable: true } };\n\n prototypeAccessors.type.get = function () {\n return \"svg\";\n };\n\n Surface.prototype.destroy = function destroy () {\n if (this._root) {\n this._root.destroy();\n this._root = null;\n this._rootElement = null;\n unbindEvents(this.element, {\n click: this._click,\n mouseover: this._mouseenter,\n mouseout: this._mouseleave,\n mousemove: this._mousemove\n });\n }\n\n BaseSurface.prototype.destroy.call(this);\n };\n\n Surface.prototype.translate = function translate (offset) {\n var viewBox = (Math.round(offset.x)) + \" \" + (Math.round(offset.y)) + \" \" + (this._size.width) + \" \" + (this._size.height);\n\n this._offset = offset;\n this._rootElement.setAttribute(\"viewBox\", viewBox);\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ]);\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n };\n\n Surface.prototype.svg = function svg () {\n return \"\" + this._template();\n };\n\n Surface.prototype.exportVisual = function exportVisual () {\n var ref = this;\n var visual = ref._visual;\n var offset = ref._offset;\n\n if (offset) {\n var wrap = new Group();\n wrap.children.push(visual);\n\n wrap.transform(\n transform().translate(-offset.x, -offset.y)\n );\n\n visual = wrap;\n }\n\n return visual;\n };\n\n Surface.prototype._resize = function _resize () {\n if (this._offset) {\n this.translate(this._offset);\n }\n };\n\n Surface.prototype._template = function _template (svgStyles) {\n var styles = typeof svgStyles === 'string' ? svgStyles :\n \"style='width: 100%; height: 100%; overflow: hidden;' \";\n return (\"\" + (this._root.render()) + \"\");\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","var NODE_MAP = {};\n\nexport default NODE_MAP;","\nexport default function renderPath(ctx, path) {\n var segments = path.segments;\n\n if (segments.length === 0) {\n return;\n }\n\n var segment = segments[0];\n var anchor = segment.anchor();\n ctx.moveTo(anchor.x, anchor.y);\n\n for (var i = 1; i < segments.length; i++) {\n segment = segments[i];\n anchor = segment.anchor();\n\n var prevSeg = segments[i - 1];\n var prevOut = prevSeg.controlOut();\n var controlIn = segment.controlIn();\n\n if (prevOut && controlIn) {\n ctx.bezierCurveTo(prevOut.x, prevOut.y,\n controlIn.x, controlIn.y,\n anchor.x, anchor.y);\n } else {\n ctx.lineTo(anchor.x, anchor.y);\n }\n }\n\n if (path.options.closed) {\n ctx.closePath();\n }\n}","import BaseNode from '../core/base-node';\nimport NODE_MAP from './node-map';\nimport renderPath from './utils/render-path';\nimport { defined } from '../util';\n\nvar Node = (function (BaseNode) {\n function Node(srcElement) {\n BaseNode.call(this, srcElement);\n if (srcElement) {\n this.initClip();\n }\n }\n\n if ( BaseNode ) Node.__proto__ = BaseNode;\n Node.prototype = Object.create( BaseNode && BaseNode.prototype );\n Node.prototype.constructor = Node;\n\n Node.prototype.initClip = function initClip () {\n var clip = this.srcElement.clip();\n if (clip) {\n this.clip = clip;\n clip.addObserver(this);\n }\n };\n\n Node.prototype.clear = function clear () {\n if (this.srcElement) {\n this.srcElement.removeObserver(this);\n }\n\n this.clearClip();\n\n BaseNode.prototype.clear.call(this);\n };\n\n Node.prototype.clearClip = function clearClip () {\n if (this.clip) {\n this.clip.removeObserver(this);\n delete this.clip;\n }\n };\n\n Node.prototype.setClip = function setClip (ctx) {\n if (this.clip) {\n ctx.beginPath();\n renderPath(ctx, this.clip);\n ctx.clip();\n }\n };\n\n Node.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"clip\") {\n this.clearClip();\n this.initClip();\n }\n\n BaseNode.prototype.optionsChange.call(this, e);\n };\n\n Node.prototype.setTransform = function setTransform (ctx) {\n if (this.srcElement) {\n var transform = this.srcElement.transform();\n if (transform) {\n ctx.transform.apply(ctx, transform.matrix().toArray(6));\n }\n }\n };\n\n Node.prototype.loadElements = function loadElements (elements, pos, cors) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var srcElement = elements[i];\n var children = srcElement.children;\n\n var childNode = new NODE_MAP[srcElement.nodeType](srcElement, cors);\n\n if (children && children.length > 0) {\n childNode.load(children, pos, cors);\n }\n\n if (defined(pos)) {\n this$1.insertAt(childNode, pos);\n } else {\n this$1.append(childNode);\n }\n }\n };\n\n Node.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n\n this.invalidate();\n };\n\n Node.prototype.setOpacity = function setOpacity (ctx) {\n if (this.srcElement) {\n var opacity = this.srcElement.opacity();\n if (defined(opacity)) {\n this.globalAlpha(ctx, opacity);\n }\n }\n };\n\n Node.prototype.globalAlpha = function globalAlpha (ctx, value) {\n var opactity = value;\n if (opactity && ctx.globalAlpha) {\n opactity *= ctx.globalAlpha;\n }\n ctx.globalAlpha = opactity;\n };\n\n Node.prototype.visible = function visible () {\n var src = this.srcElement;\n return !src || (src && src.options.visible !== false);\n };\n\n return Node;\n}(BaseNode));\n\nexport default Node;","import Node from './node';\nimport traversable from '../mixins/traversable';\n\n\nvar GroupNode = (function (superclass) {\n function GroupNode () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) GroupNode.__proto__ = superclass;\n GroupNode.prototype = Object.create( superclass && superclass.prototype );\n GroupNode.prototype.constructor = GroupNode;\n\n GroupNode.prototype.renderTo = function renderTo (ctx) {\n if (!this.visible()) {\n return;\n }\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n var childNodes = this.childNodes;\n for (var i = 0; i < childNodes.length; i++) {\n var child = childNodes[i];\n if (child.visible()) {\n child.renderTo(ctx);\n }\n }\n\n ctx.restore();\n };\n\n return GroupNode;\n}(traversable(Node, \"childNodes\")));\n\nexport default GroupNode;\n","import now from '../util/now';\n\nexport default function throttle(fn, delay) {\n var lastExecTime = 0;\n var timeout;\n\n if (!delay || delay <= 0) {\n return fn;\n }\n\n var throttled = function() {\n var elapsed = now() - lastExecTime;\n var args = arguments;\n\n var exec = function() {\n fn.apply(null, args);\n lastExecTime = now();\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","import GroupNode from './group-node';\nimport traversable from '../mixins/traversable';\nimport { animationFrame, throttle } from '../common';\n\n\nvar FRAME_DELAY = 1000 / 60;\n\nvar RootNode = (function (superclass) {\n function RootNode(canvas, size) {\n superclass.call(this);\n\n this.canvas = canvas;\n this.size = size;\n this.ctx = canvas.getContext(\"2d\");\n\n var invalidateHandler = this._invalidate.bind(this);\n this.invalidate = throttle(function () {\n animationFrame(invalidateHandler);\n }, FRAME_DELAY);\n }\n\n if ( superclass ) RootNode.__proto__ = superclass;\n RootNode.prototype = Object.create( superclass && superclass.prototype );\n RootNode.prototype.constructor = RootNode;\n\n RootNode.prototype.destroy = function destroy () {\n superclass.prototype.destroy.call(this);\n this.canvas = null;\n this.ctx = null;\n };\n\n RootNode.prototype.load = function load (elements, pos, cors) {\n this.loadElements(elements, pos, cors);\n this._invalidate();\n };\n\n RootNode.prototype._rescale = function _rescale (scale) {\n var ref = this;\n var canvas = ref.canvas;\n var size = ref.size;\n canvas.width = size.width * scale;\n canvas.height = size.height * scale;\n this.ctx.scale(scale, scale);\n };\n\n RootNode.prototype._devicePixelRatio = function _devicePixelRatio () {\n if (typeof window.devicePixelRatio === 'number') {\n return window.devicePixelRatio;\n }\n\n return 1;\n };\n\n RootNode.prototype._invalidate = function _invalidate (options) {\n if (!this.ctx) {\n return;\n }\n\n var fixedScale = options && options.fixedScale;\n var scale = fixedScale ? 1 : this._devicePixelRatio();\n this._rescale(scale);\n\n this.ctx.clearRect(0, 0, this.canvas.width, this.canvas.height);\n this.renderTo(this.ctx);\n };\n\n return RootNode;\n}(traversable(GroupNode, \"childNodes\")));\n\nexport default RootNode;\n","import { Class } from '../common';\n\nvar QuadRoot = (function (Class) {\n function QuadRoot() {\n Class.call(this);\n\n this.shapes = [];\n }\n\n if ( Class ) QuadRoot.__proto__ = Class;\n QuadRoot.prototype = Object.create( Class && Class.prototype );\n QuadRoot.prototype.constructor = QuadRoot;\n\n QuadRoot.prototype._add = function _add (shape, bbox) {\n this.shapes.push({\n bbox: bbox,\n shape: shape\n });\n shape._quadNode = this;\n };\n\n QuadRoot.prototype.pointShapes = function pointShapes (point) {\n var shapes = this.shapes;\n var length = shapes.length;\n var result = [];\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].bbox.containsPoint(point)) {\n result.push(shapes[idx].shape);\n }\n }\n return result;\n };\n\n QuadRoot.prototype.insert = function insert (shape, bbox) {\n this._add(shape, bbox);\n };\n\n QuadRoot.prototype.remove = function remove (shape) {\n var shapes = this.shapes;\n var length = shapes.length;\n\n for (var idx = 0; idx < length; idx++) {\n if (shapes[idx].shape === shape) {\n shapes.splice(idx, 1);\n break;\n }\n }\n };\n\n return QuadRoot;\n}(Class));\n\nexport default QuadRoot;","import QuadRoot from './quad-root';\nimport { Rect } from '../geometry';\nimport { append } from '../util';\n\nvar QuadNode = (function (QuadRoot) {\n function QuadNode(rect) {\n QuadRoot.call(this);\n this.children = [];\n this.rect = rect;\n }\n\n if ( QuadRoot ) QuadNode.__proto__ = QuadRoot;\n QuadNode.prototype = Object.create( QuadRoot && QuadRoot.prototype );\n QuadNode.prototype.constructor = QuadNode;\n\n QuadNode.prototype.inBounds = function inBounds (rect) {\n var nodeRect = this.rect;\n var nodeBottomRight = nodeRect.bottomRight();\n var bottomRight = rect.bottomRight();\n var inBounds = nodeRect.origin.x <= rect.origin.x && nodeRect.origin.y <= rect.origin.y && bottomRight.x <= nodeBottomRight.x &&\n bottomRight.y <= nodeBottomRight.y;\n return inBounds;\n };\n\n QuadNode.prototype.pointShapes = function pointShapes (point) {\n var children = this.children;\n var length = children.length;\n var result = QuadRoot.prototype.pointShapes.call(this, point);\n for (var idx = 0; idx < length; idx++) {\n append(result, children[idx].pointShapes(point));\n }\n return result;\n };\n\n QuadNode.prototype.insert = function insert (shape, bbox) {\n var children = this.children;\n var inserted = false;\n\n if (this.inBounds(bbox)) {\n if (this.shapes.length < 4) {\n this._add(shape, bbox);\n } else {\n if (!children.length) {\n this._initChildren();\n }\n\n for (var idx = 0; idx < children.length; idx++) {\n if (children[idx].insert(shape, bbox)) {\n inserted = true;\n break;\n }\n }\n\n if (!inserted) {\n this._add(shape, bbox);\n }\n }\n inserted = true;\n }\n\n return inserted;\n };\n\n QuadNode.prototype._initChildren = function _initChildren () {\n var ref = this;\n var rect = ref.rect;\n var children = ref.children;\n var center = rect.center();\n var halfWidth = rect.width() / 2;\n var halfHeight = rect.height() / 2;\n\n children.push(\n new QuadNode(new Rect([ rect.origin.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, rect.origin.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ rect.origin.x, center.y ], [ halfWidth, halfHeight ])),\n new QuadNode(new Rect([ center.x, center.y ], [ halfWidth, halfHeight ]))\n );\n };\n\n return QuadNode;\n}(QuadRoot));\n\nexport default QuadNode;","import QuadRoot from './quad-root';\nimport QuadNode from './quad-node';\nimport { Rect } from '../geometry';\nimport { Class } from '../common';\nimport { append } from '../util';\n\nvar ROOT_SIZE = 3000;\nvar LEVEL_STEP = 10000;\nvar MAX_LEVEL = 75;\n\nvar ShapesQuadTree = (function (Class) {\n function ShapesQuadTree() {\n Class.call(this);\n\n this.initRoots();\n }\n\n if ( Class ) ShapesQuadTree.__proto__ = Class;\n ShapesQuadTree.prototype = Object.create( Class && Class.prototype );\n ShapesQuadTree.prototype.constructor = ShapesQuadTree;\n\n ShapesQuadTree.prototype.initRoots = function initRoots () {\n this.rootMap = {};\n this.root = new QuadRoot();\n this.rootElements = [];\n };\n\n ShapesQuadTree.prototype.clear = function clear () {\n var this$1 = this;\n\n var rootElements = this.rootElements;\n for (var idx = 0; idx < rootElements.length; idx++) {\n this$1.remove(rootElements[idx]);\n }\n this.initRoots();\n };\n\n ShapesQuadTree.prototype.pointShape = function pointShape (point) {\n var sectorRoot = ( this.rootMap[ Math.floor( point.x / ROOT_SIZE ) ] || {} )[ Math.floor( point.y / ROOT_SIZE ) ];\n var result = this.root.pointShapes(point);\n\n if (sectorRoot) {\n result = result.concat(sectorRoot.pointShapes(point));\n }\n\n this.assignZindex(result);\n\n result.sort(zIndexComparer);\n for (var idx = 0; idx < result.length; idx++) {\n if (result[idx].containsPoint(point)) {\n return result[idx];\n }\n }\n };\n\n ShapesQuadTree.prototype.assignZindex = function assignZindex (elements) {\n var this$1 = this;\n\n for (var idx = 0; idx < elements.length; idx++) {\n var element = elements[idx];\n var zIndex = 0;\n var levelWeight = Math.pow(LEVEL_STEP, MAX_LEVEL);\n var parents = [];\n\n while (element) {\n parents.push(element);\n element = element.parent;\n }\n\n while (parents.length) {\n element = parents.pop();\n zIndex += ((element.parent ? element.parent.children : this$1.rootElements).indexOf(element) + 1) * levelWeight;\n levelWeight /= LEVEL_STEP;\n }\n\n elements[idx]._zIndex = zIndex;\n }\n };\n\n ShapesQuadTree.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"transform\" || e.field === \"stroke.width\") {\n this.bboxChange(e.element);\n }\n };\n\n ShapesQuadTree.prototype.geometryChange = function geometryChange (e) {\n this.bboxChange(e.element);\n };\n\n ShapesQuadTree.prototype.bboxChange = function bboxChange (element) {\n var this$1 = this;\n\n if (element.nodeType === \"Group\") {\n for (var idx = 0; idx < element.children.length; idx++) {\n this$1.bboxChange(element.children[idx]);\n }\n } else {\n if (element._quadNode) {\n element._quadNode.remove(element);\n }\n this._insertShape(element);\n }\n };\n\n ShapesQuadTree.prototype.add = function add (elements) {\n var elementsArray = Array.isArray(elements) ? elements.slice(0) : [ elements ];\n\n append(this.rootElements, elementsArray);\n this._insert(elementsArray);\n };\n\n ShapesQuadTree.prototype.childrenChange = function childrenChange (e) {\n var this$1 = this;\n\n if (e.action === \"remove\") {\n for (var idx = 0; idx < e.items.length; idx++) {\n this$1.remove(e.items[idx]);\n }\n } else {\n this._insert(Array.prototype.slice.call(e.items, 0));\n }\n };\n\n ShapesQuadTree.prototype._insert = function _insert (elements) {\n var this$1 = this;\n\n var element;\n\n while (elements.length > 0) {\n element = elements.pop();\n element.addObserver(this$1);\n if (element.nodeType === \"Group\") {\n append(elements, element.children);\n } else {\n this$1._insertShape(element);\n }\n }\n };\n\n ShapesQuadTree.prototype._insertShape = function _insertShape (shape) {\n var bbox = shape.bbox();\n if (bbox) {\n var sectors = this.getSectors(bbox);\n var x = sectors[0][0];\n var y = sectors[1][0];\n\n if (this.inRoot(sectors)) {\n this.root.insert(shape, bbox);\n } else {\n var rootMap = this.rootMap;\n if (!rootMap[x]) {\n rootMap[x] = {};\n }\n\n if (!rootMap[x][y]) {\n rootMap[x][y] = new QuadNode(\n new Rect([ x * ROOT_SIZE, y * ROOT_SIZE ], [ ROOT_SIZE, ROOT_SIZE ])\n );\n }\n\n rootMap[x][y].insert(shape, bbox);\n }\n }\n };\n\n ShapesQuadTree.prototype.remove = function remove (element) {\n var this$1 = this;\n\n element.removeObserver(this);\n\n if (element.nodeType === \"Group\") {\n var children = element.children;\n for (var idx = 0; idx < children.length; idx++) {\n this$1.remove(children[idx]);\n }\n } else if (element._quadNode) {\n element._quadNode.remove(element);\n delete element._quadNode;\n }\n };\n\n ShapesQuadTree.prototype.inRoot = function inRoot (sectors) {\n return sectors[0].length > 1 || sectors[1].length > 1;\n };\n\n ShapesQuadTree.prototype.getSectors = function getSectors (rect) {\n var bottomRight = rect.bottomRight();\n var bottomX = Math.floor(bottomRight.x / ROOT_SIZE);\n var bottomY = Math.floor(bottomRight.y / ROOT_SIZE);\n var sectors = [ [], [] ];\n for (var x = Math.floor(rect.origin.x / ROOT_SIZE); x <= bottomX; x++) {\n sectors[0].push(x);\n }\n for (var y = Math.floor(rect.origin.y / ROOT_SIZE); y <= bottomY; y++) {\n sectors[1].push(y);\n }\n return sectors;\n };\n\n return ShapesQuadTree;\n}(Class));\n\nfunction zIndexComparer(x1, x2) {\n if (x1._zIndex < x2._zIndex) {\n return 1;\n }\n if (x1._zIndex > x2._zIndex) {\n return -1;\n }\n\n return 0;\n}\n\nexport default ShapesQuadTree;","import { defined } from '../util';\n\nvar SurfaceCursor = function SurfaceCursor(surface) {\n surface.bind(\"mouseenter\", this._mouseenter.bind(this));\n surface.bind(\"mouseleave\", this._mouseleave.bind(this));\n\n this.element = surface.element;\n};\n\nSurfaceCursor.prototype.clear = function clear () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype.destroy = function destroy () {\n this._resetCursor();\n delete this.element;\n};\n\nSurfaceCursor.prototype._mouseenter = function _mouseenter (e) {\n var cursor = this._shapeCursor(e);\n\n if (!cursor) {\n this._resetCursor();\n } else {\n if (!this._current) {\n this._defaultCursor = this._getCursor();\n }\n\n this._setCursor(cursor);\n }\n};\n\nSurfaceCursor.prototype._mouseleave = function _mouseleave () {\n this._resetCursor();\n};\n\nSurfaceCursor.prototype._shapeCursor = function _shapeCursor (e) {\n var shape = e.element;\n\n while (shape && !defined(shape.options.cursor)) {\n shape = shape.parent;\n }\n\n if (shape) {\n return shape.options.cursor;\n }\n};\n\nSurfaceCursor.prototype._getCursor = function _getCursor () {\n if (this.element) {\n return this.element.style.cursor;\n }\n};\n\nSurfaceCursor.prototype._setCursor = function _setCursor (cursor) {\n if (this.element) {\n this.element.style.cursor = cursor;\n this._current = cursor;\n }\n};\n\nSurfaceCursor.prototype._resetCursor = function _resetCursor () {\n if (this._current) {\n this._setCursor(this._defaultCursor || \"\");\n delete this._current;\n }\n};\n\nexport default SurfaceCursor;\n\n","import Node from './node';\nimport { parseColor } from '../common';\nimport { isTransparent, valueOrDefault } from '../util';\nimport LinearGradient from '../gradients/linear-gradient';\nimport RadialGradient from '../gradients/radial-gradient';\nimport { DASH_ARRAYS, SOLID, BUTT } from '../core/constants';\nimport renderPath from './utils/render-path';\n\nfunction addGradientStops(gradient, stops) {\n for (var idx = 0; idx < stops.length; idx++) {\n var stop = stops[idx];\n var color = parseColor(stop.color());\n\n color.a *= stop.opacity();\n\n gradient.addColorStop(stop.offset(), color.toCssRgba());\n }\n}\n\nvar PathNode = (function (Node) {\n function PathNode () {\n Node.apply(this, arguments);\n }\n\n if ( Node ) PathNode.__proto__ = Node;\n PathNode.prototype = Object.create( Node && Node.prototype );\n PathNode.prototype.constructor = PathNode;\n\n PathNode.prototype.renderTo = function renderTo (ctx) {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n this.renderPoints(ctx, this.srcElement);\n\n this.setLineDash(ctx);\n this.setLineCap(ctx);\n this.setLineJoin(ctx);\n\n this.setFill(ctx);\n this.setStroke(ctx);\n\n ctx.restore();\n };\n\n PathNode.prototype.setFill = function setFill (ctx) {\n var fill = this.srcElement.options.fill;\n var hasFill = false;\n\n if (fill) {\n if (fill.nodeType === \"Gradient\") {\n this.setGradientFill(ctx, fill);\n hasFill = true;\n } else if (!isTransparent(fill.color)) {\n ctx.fillStyle = fill.color;\n\n ctx.save();\n this.globalAlpha(ctx, fill.opacity);\n ctx.fill();\n ctx.restore();\n\n hasFill = true;\n }\n }\n\n return hasFill;\n };\n\n PathNode.prototype.setGradientFill = function setGradientFill (ctx, fill) {\n var bbox = this.srcElement.rawBBox();\n var gradient;\n\n if (fill instanceof LinearGradient) {\n var start = fill.start();\n var end = fill.end();\n gradient = ctx.createLinearGradient(start.x, start.y, end.x, end.y);\n } else if (fill instanceof RadialGradient) {\n var center = fill.center();\n gradient = ctx.createRadialGradient(center.x, center.y, 0, center.x, center.y, fill.radius());\n }\n\n addGradientStops(gradient, fill.stops);\n\n ctx.save();\n\n if (!fill.userSpace()) {\n ctx.transform(bbox.width(), 0, 0, bbox.height(), bbox.origin.x, bbox.origin.y);\n }\n ctx.fillStyle = gradient;\n ctx.fill();\n\n ctx.restore();\n };\n\n PathNode.prototype.setStroke = function setStroke (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && !isTransparent(stroke.color) && stroke.width > 0) {\n ctx.strokeStyle = stroke.color;\n ctx.lineWidth = valueOrDefault(stroke.width, 1);\n\n ctx.save();\n this.globalAlpha(ctx, stroke.opacity);\n ctx.stroke();\n ctx.restore();\n\n return true;\n }\n };\n\n PathNode.prototype.dashType = function dashType () {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.dashType) {\n return stroke.dashType.toLowerCase();\n }\n };\n\n PathNode.prototype.setLineDash = function setLineDash (ctx) {\n var dashType = this.dashType();\n if (dashType && dashType !== SOLID) {\n var dashArray = DASH_ARRAYS[dashType];\n if (ctx.setLineDash) {\n ctx.setLineDash(dashArray);\n } else {\n ctx.mozDash = dashArray;\n ctx.webkitLineDash = dashArray;\n }\n }\n };\n\n PathNode.prototype.setLineCap = function setLineCap (ctx) {\n var dashType = this.dashType();\n var stroke = this.srcElement.options.stroke;\n if (dashType && dashType !== SOLID) {\n ctx.lineCap = BUTT;\n } else if (stroke && stroke.lineCap) {\n ctx.lineCap = stroke.lineCap;\n }\n };\n\n PathNode.prototype.setLineJoin = function setLineJoin (ctx) {\n var stroke = this.srcElement.options.stroke;\n if (stroke && stroke.lineJoin) {\n ctx.lineJoin = stroke.lineJoin;\n }\n };\n\n PathNode.prototype.renderPoints = function renderPoints (ctx, path) {\n renderPath(ctx, path);\n };\n\n return PathNode;\n}(Node));\n\nexport default PathNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar ArcNode = (function (PathNode) {\n function ArcNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) ArcNode.__proto__ = PathNode;\n ArcNode.prototype = Object.create( PathNode && PathNode.prototype );\n ArcNode.prototype.constructor = ArcNode;\n\n ArcNode.prototype.renderPoints = function renderPoints (ctx) {\n var path = this.srcElement.toPath();\n renderPath(ctx, path);\n };\n\n return ArcNode;\n}(PathNode));\n\nexport default ArcNode;\n","import PathNode from './path-node';\n\nvar CircleNode = (function (PathNode) {\n function CircleNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) CircleNode.__proto__ = PathNode;\n CircleNode.prototype = Object.create( PathNode && PathNode.prototype );\n CircleNode.prototype.constructor = CircleNode;\n\n CircleNode.prototype.renderPoints = function renderPoints (ctx) {\n var ref = this.srcElement.geometry();\n var center = ref.center;\n var radius = ref.radius;\n\n ctx.arc(center.x, center.y, radius, 0, Math.PI * 2);\n };\n\n return CircleNode;\n}(PathNode));\n\nexport default CircleNode;\n","import PathNode from './path-node';\nimport { createPromise } from '../util';\n\nvar ImageNode = (function (PathNode) {\n function ImageNode(srcElement, cors) {\n PathNode.call(this, srcElement);\n\n this.onLoad = this.onLoad.bind(this);\n this.onError = this.onError.bind(this);\n\n this.loading = createPromise();\n\n var img = this.img = new Image();\n var src = srcElement.src();\n\n if (cors && !(/^data:/i.test(src))) {\n img.crossOrigin = cors;\n }\n\n if (src) {\n img.src = src;\n }\n\n if (img.complete) {\n this.onLoad();\n } else {\n img.onload = this.onLoad;\n img.onerror = this.onError;\n }\n }\n\n if ( PathNode ) ImageNode.__proto__ = PathNode;\n ImageNode.prototype = Object.create( PathNode && PathNode.prototype );\n ImageNode.prototype.constructor = ImageNode;\n\n ImageNode.prototype.renderTo = function renderTo (ctx) {\n if (this.loading.state() === \"resolved\") {\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n\n this.drawImage(ctx);\n\n ctx.restore();\n }\n };\n\n ImageNode.prototype.optionsChange = function optionsChange (e) {\n if (e.field === \"src\") {\n this.loading = createPromise();\n this.img.src = this.srcElement.src();\n } else {\n PathNode.prototype.optionsChange.call(this, e);\n }\n };\n\n ImageNode.prototype.onLoad = function onLoad () {\n this.loading.resolve();\n this.invalidate();\n };\n\n ImageNode.prototype.onError = function onError () {\n this.loading.reject(new Error(\n \"Unable to load image '\" + this.img.src +\n \"'. Check for connectivity and verify CORS headers.\"\n ));\n };\n\n ImageNode.prototype.drawImage = function drawImage (ctx) {\n var rect = this.srcElement.rect();\n var topLeft = rect.topLeft();\n\n ctx.drawImage(\n this.img, topLeft.x, topLeft.y, rect.width(), rect.height()\n );\n };\n\n return ImageNode;\n}(PathNode));\n\nexport default ImageNode;\n","import PathNode from './path-node';\nimport renderPath from './utils/render-path';\n\nvar MultiPathNode = (function (PathNode) {\n function MultiPathNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) MultiPathNode.__proto__ = PathNode;\n MultiPathNode.prototype = Object.create( PathNode && PathNode.prototype );\n MultiPathNode.prototype.constructor = MultiPathNode;\n\n MultiPathNode.prototype.renderPoints = function renderPoints (ctx) {\n var paths = this.srcElement.paths;\n for (var i = 0; i < paths.length; i++) {\n renderPath(ctx, paths[i]);\n }\n };\n\n return MultiPathNode;\n}(PathNode));\n\nexport default MultiPathNode;\n","import { Path } from '../shapes/path';\nimport PathNode from './path-node';\n\nvar RectNode = (function (PathNode) {\n function RectNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) RectNode.__proto__ = PathNode;\n RectNode.prototype = Object.create( PathNode && PathNode.prototype );\n RectNode.prototype.constructor = RectNode;\n\n RectNode.prototype.renderPoints = function renderPoints (ctx) {\n var geometry = this.srcElement.geometry();\n var ref = geometry.cornerRadius;\n var rx = ref[0];\n var ry = ref[1];\n\n if (rx === 0 && ry === 0) {\n var origin = geometry.origin;\n var size = geometry.size;\n ctx.rect(origin.x, origin.y, size.width, size.height);\n } else {\n PathNode.prototype.renderPoints.call(this, ctx, Path.fromRect(geometry));\n }\n };\n\n return RectNode;\n}(PathNode));\n\nexport default RectNode;\n","import PathNode from './path-node';\n\nvar TextNode = (function (PathNode) {\n function TextNode () {\n PathNode.apply(this, arguments);\n }\n\n if ( PathNode ) TextNode.__proto__ = PathNode;\n TextNode.prototype = Object.create( PathNode && PathNode.prototype );\n TextNode.prototype.constructor = TextNode;\n\n TextNode.prototype.renderTo = function renderTo (ctx) {\n var text = this.srcElement;\n var pos = text.position();\n var size = text.measure();\n\n ctx.save();\n\n this.setTransform(ctx);\n this.setClip(ctx);\n this.setOpacity(ctx);\n\n ctx.beginPath();\n\n ctx.font = text.options.font;\n ctx.textAlign = 'left';\n\n if (this.setFill(ctx)) {\n ctx.fillText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n if (this.setStroke(ctx)) {\n this.setLineDash(ctx);\n ctx.strokeText(text.content(), pos.x, pos.y + size.baseline);\n }\n\n ctx.restore();\n };\n\n return TextNode;\n}(PathNode));\n\n\nexport default TextNode;\n","import BaseSurface from '../core/surface';\nimport { createPromise, promiseAll, bindEvents, elementSize, unbindEvents } from '../util';\nimport RootNode from './root-node';\nimport ShapesQuadTree from '../search/shapes-quad-tree';\nimport SurfaceCursor from './surface-cursor';\n\nimport ArcNode from './arc-node';\nimport CircleNode from './circle-node';\nimport GroupNode from './group-node';\nimport ImageNode from './image-node';\nimport MultiPathNode from './multi-path-node';\nimport PathNode from './path-node';\nimport RectNode from './rect-node';\nimport TextNode from './text-node';\nimport NODE_MAP from './node-map';\n\nNODE_MAP.Arc = ArcNode;\nNODE_MAP.Circle = CircleNode;\nNODE_MAP.Group = GroupNode;\nNODE_MAP.Image = ImageNode;\nNODE_MAP.MultiPath = MultiPathNode;\nNODE_MAP.Path = PathNode;\nNODE_MAP.Rect = RectNode;\nNODE_MAP.Text = TextNode;\n\n\nvar Surface = (function (BaseSurface) {\n function Surface(element, options) {\n BaseSurface.call(this, element, options);\n\n this.element.innerHTML = this._template(this);\n\n var canvas = this.element.firstElementChild;\n canvas.style.width = '100%';\n canvas.style.height = '100%';\n\n var size = elementSize(element);\n\n canvas.width = size.width;\n canvas.height = size.height;\n\n this._rootElement = canvas;\n\n this._root = new RootNode(canvas, size);\n\n this._mouseTrackHandler = this._trackMouse.bind(this);\n\n bindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var prototypeAccessors = { type: { configurable: true } };\n\n prototypeAccessors.type.get = function () {\n return \"canvas\";\n };\n\n Surface.prototype.destroy = function destroy () {\n BaseSurface.prototype.destroy.call(this);\n\n if (this._root) {\n this._root.destroy();\n this._root = null;\n }\n\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n\n if (this._cursor) {\n this._cursor.destroy();\n delete this._cursor;\n }\n\n unbindEvents(this.element, {\n click: this._mouseTrackHandler,\n mousemove: this._mouseTrackHandler\n });\n };\n\n Surface.prototype.draw = function draw (element) {\n BaseSurface.prototype.draw.call(this, element);\n this._root.load([ element ], undefined, this.options.cors);\n\n if (this._searchTree) {\n this._searchTree.add([ element ]);\n }\n };\n\n Surface.prototype.clear = function clear () {\n BaseSurface.prototype.clear.call(this);\n this._root.clear();\n\n if (this._searchTree) {\n this._searchTree.clear();\n }\n\n if (this._cursor) {\n this._cursor.clear();\n }\n };\n\n Surface.prototype.eventTarget = function eventTarget (e) {\n if (this._searchTree) {\n var point = this._surfacePoint(e);\n var shape = this._searchTree.pointShape(point);\n return shape;\n }\n };\n\n Surface.prototype.image = function image () {\n var ref = this;\n var root = ref._root;\n var rootElement = ref._rootElement;\n var loadingStates = [];\n\n root.traverse(function (childNode) {\n if (childNode.loading) {\n loadingStates.push(childNode.loading);\n }\n });\n\n var promise = createPromise();\n var resolveDataURL = function () {\n root._invalidate({ fixedScale: true });\n\n try {\n var data = rootElement.toDataURL();\n promise.resolve(data);\n } catch (e) {\n promise.reject(e);\n }\n };\n\n promiseAll(loadingStates).then(resolveDataURL, resolveDataURL);\n\n return promise;\n };\n\n Surface.prototype.suspendTracking = function suspendTracking () {\n BaseSurface.prototype.suspendTracking.call(this);\n if (this._searchTree) {\n this._searchTree.clear();\n delete this._searchTree;\n }\n };\n\n Surface.prototype.resumeTracking = function resumeTracking () {\n BaseSurface.prototype.resumeTracking.call(this);\n if (!this._searchTree) {\n this._searchTree = new ShapesQuadTree();\n\n var childNodes = this._root.childNodes;\n var rootElements = [];\n for (var idx = 0; idx < childNodes.length; idx++) {\n rootElements.push(childNodes[idx].srcElement);\n }\n this._searchTree.add(rootElements);\n }\n };\n\n Surface.prototype._resize = function _resize () {\n this._rootElement.width = this._size.width;\n this._rootElement.height = this._size.height;\n\n this._root.size = this._size;\n this._root.invalidate();\n };\n\n Surface.prototype._template = function _template () {\n return \"\";\n };\n\n Surface.prototype._enableTracking = function _enableTracking () {\n this._searchTree = new ShapesQuadTree();\n this._cursor = new SurfaceCursor(this);\n\n BaseSurface.prototype._enableTracking.call(this);\n };\n\n Surface.prototype._trackMouse = function _trackMouse (e) {\n if (this._suspendedTracking) {\n return;\n }\n\n var shape = this.eventTarget(e);\n\n if (e.type !== \"click\") {\n var currentShape = this._currentShape;\n if (currentShape && currentShape !== shape) {\n this.trigger(\"mouseleave\", {\n element: currentShape,\n originalEvent: e,\n type: \"mouseleave\"\n });\n }\n\n if (shape && currentShape !== shape) {\n this.trigger(\"mouseenter\", {\n element: shape,\n originalEvent: e,\n type: \"mouseenter\"\n });\n }\n\n this.trigger(\"mousemove\", {\n element: shape,\n originalEvent: e,\n type: \"mousemove\"\n });\n\n this._currentShape = shape;\n } else if (shape) {\n this.trigger(\"click\", {\n element: shape,\n originalEvent: e,\n type: \"click\"\n });\n }\n };\n\n Object.defineProperties( Surface.prototype, prototypeAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n","import { Class, logToConsole } from './common';\nimport SVGSurface from './svg/surface';\nimport CanvasSurface from './canvas/surface';\n\nvar instance;\nvar support;\n\nvar hasDocument = function () { return typeof document !== \"undefined\"; };\n\nvar supportsCanvas = function () { return hasDocument() &&\n document.createElement(\"canvas\").getContext; };\n\nvar supportsSVG = function () { return hasDocument() &&\n document.implementation.hasFeature(\"http://www.w3.org/TR/SVG11/feature#BasicStructure\", \"1.1\"); };\n\nvar SurfaceFactory = (function (Class) {\n function SurfaceFactory() {\n Class.call(this);\n\n this._items = [ {\n name: \"svg\",\n type: SVGSurface\n }, {\n name: \"canvas\",\n type: CanvasSurface\n } ];\n }\n\n if ( Class ) SurfaceFactory.__proto__ = Class;\n SurfaceFactory.prototype = Object.create( Class && Class.prototype );\n SurfaceFactory.prototype.constructor = SurfaceFactory;\n\n var staticAccessors = { support: { configurable: true },current: { configurable: true } };\n\n staticAccessors.support.get = function () {\n if (!support) {\n support = {\n canvas: supportsCanvas(),\n svg: supportsSVG()\n };\n }\n\n return support;\n };\n\n staticAccessors.current.get = function () {\n if (!instance) {\n instance = new SurfaceFactory();\n }\n\n return instance;\n };\n\n SurfaceFactory.prototype.create = function create (element, options) {\n var items = this._items;\n var match = items[0];\n\n if (options && options.type) {\n var preferred = options.type.toLowerCase();\n for (var i = 0; i < items.length; i++) {\n if (items[i].name === preferred) {\n match = items[i];\n break;\n }\n }\n }\n\n if (match) {\n return new match.type(element, options);\n }\n\n logToConsole(\n \"Warning: Unable to create Kendo UI Drawing Surface. Possible causes:\\n\" +\n \"- The browser does not support SVG and Canvas. User agent: \" + (navigator.userAgent));\n };\n\n Object.defineProperties( SurfaceFactory, staticAccessors );\n\n return SurfaceFactory;\n}(Class));\n\nexport default SurfaceFactory;\n\n","import BaseSurface from './core/surface';\nimport SurfaceFactory from './surface-factory';\n\nvar Surface = (function (BaseSurface) {\n function Surface () {\n BaseSurface.apply(this, arguments);\n }\n\n if ( BaseSurface ) Surface.__proto__ = BaseSurface;\n Surface.prototype = Object.create( BaseSurface && BaseSurface.prototype );\n Surface.prototype.constructor = Surface;\n\n var staticAccessors = { support: { configurable: true } };\n\n staticAccessors.support.get = function () {\n return SurfaceFactory.support;\n };\n\n Surface.create = function create (element, options) {\n return SurfaceFactory.current.create(element, options);\n };\n\n Object.defineProperties( Surface, staticAccessors );\n\n return Surface;\n}(BaseSurface));\n\nexport default Surface;\n\n","import { Class } from '../common';\n\nvar Highlight = (function (Class) {\n function Highlight() {\n Class.call(this);\n\n this._points = [];\n }\n\n if ( Class ) Highlight.__proto__ = Class;\n Highlight.prototype = Object.create( Class && Class.prototype );\n Highlight.prototype.constructor = Highlight;\n\n Highlight.prototype.destroy = function destroy () {\n this._points = [];\n };\n\n Highlight.prototype.show = function show (points, opacity) {\n var this$1 = this;\n\n var arrayPoints = [].concat(points);\n this.hide();\n\n for (var i = 0; i < arrayPoints.length; i++) {\n var point = arrayPoints[i];\n if (point && point.toggleHighlight && point.hasHighlight()) {\n this$1.togglePointHighlight(point, true, opacity);\n this$1._points.push(point);\n }\n }\n };\n\n Highlight.prototype.togglePointHighlight = function togglePointHighlight (point, show, opacity) {\n var toggleHandler = (point.options.highlight || {}).toggle;\n if (toggleHandler) {\n var eventArgs = {\n category: point.category,\n series: point.series,\n dataItem: point.dataItem,\n value: point.value,\n stackValue: point.stackValue,\n preventDefault: preventDefault,\n visual: point.highlightVisual(),\n show: show\n };\n toggleHandler(eventArgs);\n if (!eventArgs._defaultPrevented) {\n point.toggleHighlight(show, opacity);\n }\n } else {\n point.toggleHighlight(show, opacity);\n }\n };\n\n Highlight.prototype.hide = function hide () {\n var this$1 = this;\n\n var points = this._points;\n while (points.length) {\n this$1.togglePointHighlight(points.pop(), false);\n }\n };\n\n Highlight.prototype.isHighlighted = function isHighlighted (element) {\n var points = this._points;\n\n for (var i = 0; i < points.length; i++) {\n var point = points[i];\n if (element === point) {\n return true;\n }\n }\n\n return false;\n };\n\n return Highlight;\n}(Class));\n\nfunction preventDefault() {\n this._defaultPrevented = true;\n}\n\nexport default Highlight;","export default function acceptKey(e, mouseKey) {\n var key = (mouseKey || \"\").toLowerCase();\n var event = e.event;\n var accept = (key === \"none\" && !(event.ctrlKey || event.shiftKey || event.altKey)) || event[key + \"Key\"];\n\n return accept;\n}","export default function toChartAxisRanges(axisRanges) {\n var ranges = {};\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n if (axisRange.axis.options.name) {\n ranges[axisRange.axis.options.name] = {\n min: axisRange.range.min,\n max: axisRange.range.max\n };\n }\n }\n return ranges;\n}","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\n\nvar Pannable = (function (Class) {\n function Pannable(plotArea, options) {\n Class.call(this);\n\n this.plotArea = plotArea;\n this.options = deepExtend({}, this.options, options);\n }\n\n if ( Class ) Pannable.__proto__ = Class;\n Pannable.prototype = Object.create( Class && Class.prototype );\n Pannable.prototype.constructor = Pannable;\n\n Pannable.prototype.start = function start (e) {\n this._active = acceptKey(e, this.options.key);\n return this._active;\n };\n\n Pannable.prototype.move = function move (e) {\n if (this._active) {\n var axisRanges = this.axisRanges = this._panAxes(e, X).concat(this._panAxes(e, Y));\n if (axisRanges.length) {\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n }\n }\n };\n\n Pannable.prototype.end = function end () {\n var active = this._active;\n this._active = false;\n\n return active;\n };\n\n Pannable.prototype.pan = function pan () {\n var ref = this;\n var plotArea = ref.plotArea;\n var axisRanges = ref.axisRanges;\n if (axisRanges.length) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var range = axisRanges[idx];\n plotArea.updateAxisOptions(range.axis, range.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n };\n\n Pannable.prototype.destroy = function destroy () {\n delete this.plotArea;\n };\n\n Pannable.prototype._panAxes = function _panAxes (e, position) {\n var plotArea = this.plotArea;\n var delta = -e[position].delta;\n var lock = (this.options.lock || \"\").toLowerCase();\n var updatedAxes = [];\n\n if (delta !== 0 && (lock || \"\").toLowerCase() !== position) {\n var axes = plotArea.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n\n if (position === X && !axis.options.vertical || position === Y && axis.options.vertical) {\n var range = axis.pan(delta);\n\n if (range) {\n range.limitRange = true;\n updatedAxes.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n }\n\n return updatedAxes;\n };\n\n return Pannable;\n}(Class));\n\nPannable.prototype.options = {\n key: \"none\",\n lock: \"none\"\n};\n\nexport default Pannable;","import acceptKey from './accept-key';\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend, elementStyles, elementOffset, defined } from '../../common';\n\nvar ZoomSelection = (function (Class) {\n function ZoomSelection(chart, options) {\n Class.call(this);\n\n this.chart = chart;\n this.options = deepExtend({}, this.options, options);\n this.createElement();\n }\n\n if ( Class ) ZoomSelection.__proto__ = Class;\n ZoomSelection.prototype = Object.create( Class && Class.prototype );\n ZoomSelection.prototype.constructor = ZoomSelection;\n\n ZoomSelection.prototype.createElement = function createElement () {\n var marquee = this._marquee = document.createElement(\"div\");\n marquee.className = \"k-marquee\";\n var marqueeColor = document.createElement(\"div\");\n marqueeColor.className = \"k-marquee-color\";\n marquee.appendChild(marqueeColor);\n };\n\n ZoomSelection.prototype.removeElement = function removeElement () {\n if (this._marquee.parentNode) {\n this._marquee.parentNode.removeChild(this._marquee);\n }\n };\n\n ZoomSelection.prototype.setStyles = function setStyles (styles) {\n elementStyles(this._marquee, styles);\n };\n\n ZoomSelection.prototype.start = function start (e) {\n if (acceptKey(e, this.options.key)) {\n var chart = this.chart;\n var point = chart._eventCoordinates(e);\n var zoomPane = this._zoomPane = chart._plotArea.paneByPoint(point);\n var clipBox = zoomPane ? zoomPane.chartsBox().clone() : null;\n\n if (zoomPane && clipBox) {\n var offset = this._elementOffset();\n\n clipBox.translate(offset.left, offset.top);\n this._zoomPaneClipBox = clipBox;\n\n document.body.appendChild(this._marquee);\n this.setStyles({\n left: e.pageX + 1,\n top: e.pageY + 1,\n width: 0,\n height: 0\n });\n\n return true;\n }\n }\n return false;\n };\n\n ZoomSelection.prototype._elementOffset = function _elementOffset () {\n var chartElement = this.chart.element;\n var ref = elementStyles(chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n var offset = elementOffset(chartElement);\n\n return {\n left: paddingLeft + offset.left,\n top: paddingTop + offset.top\n };\n };\n\n ZoomSelection.prototype.move = function move (e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n this.setStyles(this._selectionPosition(e));\n }\n };\n\n ZoomSelection.prototype.end = function end (e) {\n var zoomPane = this._zoomPane;\n if (zoomPane) {\n var elementOffset = this._elementOffset();\n var selectionPosition = this._selectionPosition(e);\n selectionPosition.left -= elementOffset.left;\n selectionPosition.top -= elementOffset.top;\n\n var start = { x: selectionPosition.left, y: selectionPosition.top };\n var end = { x: selectionPosition.left + selectionPosition.width, y: selectionPosition.top + selectionPosition.height };\n this._updateAxisRanges(start, end);\n\n this.removeElement();\n delete this._zoomPane;\n\n return toChartAxisRanges(this.axisRanges);\n }\n };\n\n ZoomSelection.prototype.zoom = function zoom () {\n var axisRanges = this.axisRanges;\n if (axisRanges && axisRanges.length) {\n var plotArea = this.chart._plotArea;\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n };\n\n ZoomSelection.prototype.destroy = function destroy () {\n this.removeElement();\n delete this._marquee;\n delete this.chart;\n };\n\n ZoomSelection.prototype._updateAxisRanges = function _updateAxisRanges (start, end) {\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n\n var axes = this._zoomPane.axes;\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && defined(axis.axisIndex)) {\n var range = axis.pointsRange(start, end);\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n };\n\n ZoomSelection.prototype._selectionPosition = function _selectionPosition (e) {\n var clipBox = this._zoomPaneClipBox;\n var startLocation = {\n x: e.x.startLocation,\n y: e.y.startLocation\n };\n var pageX = e.x.location;\n var pageY = e.y.location;\n var lock = (this.options.lock || \"\").toLowerCase();\n var left = Math.min(startLocation.x, pageX);\n var top = Math.min(startLocation.y, pageY);\n var width = Math.abs(startLocation.x - pageX);\n var height = Math.abs(startLocation.y - pageY);\n\n if (lock === X) {\n left = clipBox.x1;\n width = clipBox.width();\n }\n if (lock === Y) {\n top = clipBox.y1;\n height = clipBox.height();\n }\n\n if (pageX > clipBox.x2) {\n width = clipBox.x2 - startLocation.x;\n }\n\n if (pageX < clipBox.x1) {\n width = startLocation.x - clipBox.x1;\n }\n\n if (pageY > clipBox.y2) {\n height = clipBox.y2 - startLocation.y;\n }\n\n if (pageY < clipBox.y1) {\n height = startLocation.y - clipBox.y1;\n }\n\n return {\n left: Math.max(left, clipBox.x1),\n top: Math.max(top, clipBox.y1),\n width: width,\n height: height\n };\n };\n\n return ZoomSelection;\n}(Class));\n\nZoomSelection.prototype.options = {\n key: \"shift\",\n lock: \"none\"\n};\n\nexport default ZoomSelection;","\nimport toChartAxisRanges from './to-chart-axis-ranges';\n\nimport { X, Y } from '../../common/constants';\nimport { Class, deepExtend } from '../../common';\nimport { limitValue } from '../../drawing-utils';\n\n// Limit the zoom rate between 1% and 90% per mousewheel event.\n// At zoom rates close to 100% the axis range quickly becomes 0.\nvar MIN_RATE = 0.01;\nvar MAX_RATE = 0.9;\nvar DEFAULT_RATE = 0.3;\n\nvar MousewheelZoom = (function (Class) {\n function MousewheelZoom(chart, options) {\n Class.call(this);\n\n this.chart = chart;\n this.options = deepExtend({\n rate: DEFAULT_RATE\n }, this.options, options);\n }\n\n if ( Class ) MousewheelZoom.__proto__ = Class;\n MousewheelZoom.prototype = Object.create( Class && Class.prototype );\n MousewheelZoom.prototype.constructor = MousewheelZoom;\n\n MousewheelZoom.prototype.updateRanges = function updateRanges (delta, coords) {\n var this$1 = this;\n\n var lock = (this.options.lock || \"\").toLowerCase();\n var axisRanges = [];\n var axes = this.chart._plotArea.axes;\n\n for (var idx = 0; idx < axes.length; idx++) {\n var axis = axes[idx];\n var vertical = axis.options.vertical;\n\n if (!(lock === X && !vertical) && !(lock === Y && vertical) && axis.zoomRange) {\n var rate = limitValue(this$1.options.rate, MIN_RATE, MAX_RATE);\n var range = axis.zoomRange(-delta * rate, coords);\n\n if (range) {\n axisRanges.push({\n axis: axis,\n range: range\n });\n }\n }\n }\n\n this.axisRanges = axisRanges;\n return toChartAxisRanges(axisRanges);\n };\n\n MousewheelZoom.prototype.zoom = function zoom () {\n var axisRanges = this.axisRanges;\n var plotArea = this.chart._plotArea;\n\n if (axisRanges && axisRanges.length && plotArea.updateAxisOptions) {\n for (var idx = 0; idx < axisRanges.length; idx++) {\n var axisRange = axisRanges[idx];\n plotArea.updateAxisOptions(axisRange.axis, axisRange.range);\n }\n plotArea.redraw(plotArea.panes);\n }\n };\n\n MousewheelZoom.prototype.destroy = function destroy () {\n delete this.chart;\n };\n\n return MousewheelZoom;\n}(Class));\n\nexport default MousewheelZoom;\n","\nexport default function alignStart(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis];\n } else if (align === \"end\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","\nexport default function alignStartReverse(size, rect, align, axis, sizeField) {\n var start;\n if (align === \"start\") {\n start = rect.origin[axis] + rect.size[sizeField] - size;\n } else if (align === \"end\") {\n start = rect.origin[axis];\n } else {\n start = rect.origin[axis] + (rect.size[sizeField] - size) / 2;\n }\n\n return start;\n}","import Group from './group';\nimport Size from '../geometry/size';\nimport Rect from '../geometry/rect';\nimport Point from '../geometry/point';\nimport createTransform from '../geometry/transform';\nimport translateToPoint from '../alignment/translate-to-point';\nimport alignStart from '../alignment/align-start';\nimport alignStartReverse from '../alignment/align-start-reverse';\n\nvar DEFAULT_OPTIONS = {\n alignContent: \"start\",\n justifyContent: \"start\",\n alignItems: \"start\",\n spacing: 0,\n orientation: \"horizontal\",\n lineSpacing: 0,\n wrap: true,\n revers: false\n};\n\nvar forEach = function (elements, callback) {\n elements.forEach(callback);\n};\n\nvar forEachReverse = function (elements, callback) {\n var length = elements.length;\n\n for (var idx = length - 1; idx >= 0; idx--) {\n callback(elements[idx], idx);\n }\n};\n\nvar Layout = (function (Group) {\n function Layout(rect, options) {\n Group.call(this, Object.assign({}, DEFAULT_OPTIONS, options));\n this._rect = rect;\n this._fieldMap = {};\n }\n\n if ( Group ) Layout.__proto__ = Group;\n Layout.prototype = Object.create( Group && Group.prototype );\n Layout.prototype.constructor = Layout;\n\n Layout.prototype.rect = function rect (value) {\n if (value) {\n this._rect = value;\n return this;\n }\n\n return this._rect;\n };\n\n Layout.prototype._initMap = function _initMap () {\n var options = this.options;\n var fieldMap = this._fieldMap;\n if (options.orientation === \"horizontal\") {\n fieldMap.sizeField = \"width\";\n fieldMap.groupsSizeField = \"height\";\n fieldMap.groupAxis = \"x\";\n fieldMap.groupsAxis = \"y\";\n } else {\n fieldMap.sizeField = \"height\";\n fieldMap.groupsSizeField = \"width\";\n fieldMap.groupAxis = \"y\";\n fieldMap.groupsAxis = \"x\";\n }\n\n if (options.reverse) {\n this.forEach = forEachReverse;\n this.justifyAlign = alignStartReverse;\n } else {\n this.forEach = forEach;\n this.justifyAlign = alignStart;\n }\n };\n\n Layout.prototype.reflow = function reflow () {\n var this$1 = this;\n\n if (!this._rect || this.children.length === 0) {\n return;\n }\n this._initMap();\n\n if (this.options.transform) {\n this.transform(null);\n }\n\n var options = this.options;\n var rect = this._rect;\n var ref = this._initGroups();\n var groups = ref.groups;\n var groupsSize = ref.groupsSize;\n var ref$1 = this._fieldMap;\n var sizeField = ref$1.sizeField;\n var groupsSizeField = ref$1.groupsSizeField;\n var groupAxis = ref$1.groupAxis;\n var groupsAxis = ref$1.groupsAxis;\n var groupOrigin = new Point();\n var elementOrigin = new Point();\n var size = new Size();\n var groupStart = alignStart(groupsSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var elementStart, group, groupBox;\n\n var arrangeElements = function (bbox, idx) {\n var element = group.elements[idx];\n\n elementOrigin[groupAxis] = elementStart;\n elementOrigin[groupsAxis] = alignStart(bbox.size[groupsSizeField], groupBox, options.alignItems, groupsAxis, groupsSizeField);\n translateToPoint(elementOrigin, bbox, element);\n elementStart += bbox.size[sizeField] + options.spacing;\n };\n\n for (var groupIdx = 0; groupIdx < groups.length; groupIdx++) {\n group = groups[groupIdx];\n groupOrigin[groupAxis] = elementStart = this$1.justifyAlign(group.size, rect, options.justifyContent, groupAxis, sizeField);\n groupOrigin[groupsAxis] = groupStart;\n size[sizeField] = group.size;\n size[groupsSizeField] = group.lineSize;\n groupBox = new Rect(groupOrigin, size);\n this$1.forEach(group.bboxes, arrangeElements);\n\n groupStart += group.lineSize + options.lineSpacing;\n }\n\n if (!options.wrap && group.size > rect.size[sizeField]) {\n var scale = rect.size[sizeField] / groupBox.size[sizeField];\n var scaledStart = groupBox.topLeft().scale(scale, scale);\n var scaledSize = groupBox.size[groupsSizeField] * scale;\n var newStart = alignStart(scaledSize, rect, options.alignContent, groupsAxis, groupsSizeField);\n var transform = createTransform();\n if (groupAxis === \"x\") {\n transform.translate(rect.origin.x - scaledStart.x, newStart - scaledStart.y);\n } else {\n transform.translate(newStart - scaledStart.x, rect.origin.y - scaledStart.y);\n }\n transform.scale(scale, scale);\n\n this.transform(transform);\n }\n };\n\n Layout.prototype._initGroups = function _initGroups () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var lineSpacing = options.lineSpacing;\n var wrap = options.wrap;\n var spacing = options.spacing;\n var sizeField = this._fieldMap.sizeField;\n var group = this._newGroup();\n var groups = [];\n var addGroup = function() {\n groups.push(group);\n groupsSize += group.lineSize + lineSpacing;\n };\n var groupsSize = -lineSpacing;\n\n for (var idx = 0; idx < children.length; idx++) {\n var element = children[idx];\n var bbox = children[idx].clippedBBox();\n if (element.visible() && bbox) {\n if (wrap && group.size + bbox.size[sizeField] + spacing > this$1._rect.size[sizeField]) {\n if (group.bboxes.length === 0) {\n this$1._addToGroup(group, bbox, element);\n addGroup();\n group = this$1._newGroup();\n } else {\n addGroup();\n group = this$1._newGroup();\n this$1._addToGroup(group, bbox, element);\n }\n } else {\n this$1._addToGroup(group, bbox, element);\n }\n }\n }\n\n if (group.bboxes.length) {\n addGroup();\n }\n\n return {\n groups: groups,\n groupsSize: groupsSize\n };\n };\n\n Layout.prototype._addToGroup = function _addToGroup (group, bbox, element) {\n group.size += bbox.size[this._fieldMap.sizeField] + this.options.spacing;\n group.lineSize = Math.max(bbox.size[this._fieldMap.groupsSizeField], group.lineSize);\n group.bboxes.push(bbox);\n group.elements.push(element);\n };\n\n Layout.prototype._newGroup = function _newGroup () {\n return {\n lineSize: 0,\n size: -this.options.spacing,\n bboxes: [],\n elements: []\n };\n };\n\n return Layout;\n}(Group));\n\nexport default Layout;","import createTransform from '../geometry/transform';\n\nexport default function translateToPoint(point, bbox, element) {\n var transofrm = element.transform() || createTransform();\n var matrix = transofrm.matrix();\n matrix.e += point.x - bbox.origin.x;\n matrix.f += point.y - bbox.origin.y;\n\n transofrm.matrix(matrix);\n element.transform(transofrm);\n}","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, rectToBox } from '../../core';\n\nvar LegendLayout = (function (ChartElement) {\n function LegendLayout(options, chartService) {\n ChartElement.call(this, options);\n\n this.chartService = chartService;\n }\n\n if ( ChartElement ) LegendLayout.__proto__ = ChartElement;\n LegendLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n LegendLayout.prototype.constructor = LegendLayout;\n\n LegendLayout.prototype.render = function render () {\n var ref = this;\n var children = ref.children;\n var options = ref.options;\n var vertical = options.vertical;\n\n this.visual = new draw.Layout(null, {\n spacing: vertical ? 0 : options.spacing,\n lineSpacing: vertical ? options.spacing : 0,\n orientation: vertical ? \"vertical\" : \"horizontal\",\n reverse: options.rtl,\n alignItems: vertical ? \"start\" : \"center\"\n });\n\n for (var idx = 0; idx < children.length; idx++) {\n var legendItem = children[idx];\n legendItem.reflow(new Box());\n legendItem.renderVisual();\n }\n };\n\n LegendLayout.prototype.reflow = function reflow (box) {\n this.visual.rect(box.toRect());\n this.visual.reflow();\n var bbox = this.visual.clippedBBox();\n\n if (bbox) {\n this.box = rectToBox(bbox);\n } else {\n this.box = new Box();\n }\n };\n\n LegendLayout.prototype.renderVisual = function renderVisual () {\n this.addVisual();\n };\n\n LegendLayout.prototype.createVisual = function createVisual () {};\n\n return LegendLayout;\n}(ChartElement));\n\nexport default LegendLayout;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { BoxElement, FloatElement, ShapeElement, TextBox } from '../../core';\nimport { LEGEND_ITEM_CLICK, LEGEND_ITEM_HOVER, LEGEND_ITEM_LEAVE } from '../constants';\nimport { CENTER, WHITE } from '../../common/constants';\nimport { deepExtend, eventElement } from '../../common';\n\nvar LegendItem = (function (BoxElement) {\n function LegendItem(options) {\n BoxElement.call(this, options);\n\n this.createContainer();\n if (!options.rtl) {\n this.createMarker();\n this.createLabel();\n } else {\n this.createLabel();\n this.createMarker();\n }\n }\n\n if ( BoxElement ) LegendItem.__proto__ = BoxElement;\n LegendItem.prototype = Object.create( BoxElement && BoxElement.prototype );\n LegendItem.prototype.constructor = LegendItem;\n\n LegendItem.prototype.createContainer = function createContainer () {\n this.container = new FloatElement({ vertical: false, wrap: false, align: CENTER, spacing: this.options.spacing });\n this.append(this.container);\n };\n\n LegendItem.prototype.createMarker = function createMarker () {\n this.container.append(new ShapeElement(this.markerOptions()));\n };\n\n LegendItem.prototype.markerOptions = function markerOptions () {\n var options = this.options;\n var markerColor = options.markerColor;\n return deepExtend({}, options.markers, {\n background: markerColor,\n border: {\n color: markerColor\n }\n });\n };\n\n LegendItem.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labelOptions = deepExtend({}, options.labels);\n\n this.container.append(new TextBox(options.text, labelOptions));\n };\n\n LegendItem.prototype.renderComplete = function renderComplete () {\n BoxElement.prototype.renderComplete.call(this);\n\n var cursor = this.options.cursor || {};\n var eventSink = this._itemOverlay = draw.Path.fromRect(this.container.box.toRect(), {\n fill: {\n color: WHITE,\n opacity: 0\n },\n stroke: null,\n cursor: cursor.style || cursor\n });\n\n this.appendVisual(eventSink);\n };\n\n LegendItem.prototype.click = function click (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_CLICK, args) && e && e.type === 'contextmenu') {\n e.preventDefault();\n }\n };\n\n LegendItem.prototype.over = function over (widget, e) {\n var args = this.eventArgs(e);\n\n if (!widget.trigger(LEGEND_ITEM_HOVER, args)) {\n widget._legendItemHover(args.seriesIndex, args.pointIndex);\n }\n\n // Don't trigger point hover for legend items\n return true;\n };\n\n LegendItem.prototype.out = function out (widget, e) {\n widget._unsetActivePoint();\n\n widget.trigger(LEGEND_ITEM_LEAVE, this.eventArgs(e));\n };\n\n LegendItem.prototype.eventArgs = function eventArgs (e) {\n var options = this.options;\n\n return {\n element: eventElement(e),\n text: options.text,\n series: options.series,\n seriesIndex: options.series.index,\n pointIndex: options.pointIndex\n };\n };\n\n LegendItem.prototype.renderVisual = function renderVisual () {\n var this$1 = this;\n\n var options = this.options;\n var customVisual = options.visual;\n\n if (customVisual) {\n this.visual = customVisual({\n active: options.active,\n series: options.series,\n sender: this.getSender(),\n pointIndex: options.pointIndex,\n options: {\n markers: this.markerOptions(),\n labels: options.labels\n },\n createVisual: function () {\n this$1.createVisual();\n this$1.renderChildren();\n this$1.renderComplete();\n\n var defaultVisual = this$1.visual;\n\n delete this$1.visual;\n\n return defaultVisual;\n }\n });\n this.addVisual();\n } else {\n BoxElement.prototype.renderVisual.call(this);\n }\n };\n\n return LegendItem;\n}(BoxElement));\n\nexport default LegendItem;\n","\nimport { ChartElement, BoxElement, Box, TextBox, FloatElement } from '../../core';\nimport LegendLayout from './legend-layout';\nimport LegendItem from './legend-item';\n\nimport { TOP, RIGHT, BOTTOM, LEFT, CENTER, X, Y, BLACK } from '../../common/constants';\nimport { deepExtend, defined, getTemplate, getSpacing, inArray, setDefaultOptions } from '../../common';\n\nvar HORIZONTAL = \"horizontal\";\nvar POINTER = \"pointer\";\nvar CUSTOM = \"custom\";\n\nvar Legend = (function (ChartElement) {\n function Legend(options, chartService) {\n if ( chartService === void 0 ) chartService = {};\n\n ChartElement.call(this, options);\n\n this.chartService = chartService;\n\n if (!inArray(this.options.position, [ TOP, RIGHT, BOTTOM, LEFT, CUSTOM ])) {\n this.options.position = RIGHT;\n }\n\n this.createContainers();\n\n this.createLegendTitle(options.title);\n\n this.createItems();\n }\n\n if ( ChartElement ) Legend.__proto__ = ChartElement;\n Legend.prototype = Object.create( ChartElement && ChartElement.prototype );\n Legend.prototype.constructor = Legend;\n\n Legend.prototype.createContainers = function createContainers () {\n var options = this.options;\n var position = options.position;\n var userAlign = options.align;\n var align = position;\n var vAlign = CENTER;\n\n if (position === CUSTOM) {\n align = LEFT;\n } else if (inArray(position, [ TOP, BOTTOM ])) {\n if (userAlign === \"start\") {\n align = LEFT;\n } else if (userAlign === \"end\") {\n align = RIGHT;\n } else {\n align = CENTER;\n }\n vAlign = position;\n } else if (userAlign) {\n if (userAlign === \"start\") {\n vAlign = TOP;\n } else if (userAlign === \"end\") {\n vAlign = BOTTOM;\n }\n }\n\n this.container = new BoxElement({\n margin: options.margin,\n padding: options.padding,\n background: options.background,\n border: options.border,\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n\n if (this.hasTitle()) {\n this.itemsContainer = new BoxElement({\n vAlign: vAlign,\n align: align,\n zIndex: options.zIndex,\n shrinkToFit: true\n });\n } else {\n this.itemsContainer = this.container;\n }\n\n this.append(this.container);\n };\n\n Legend.prototype.createItems = function createItems () {\n var chartService = this.getService();\n var options = this.options;\n var vertical = this.isVertical();\n var innerElement = new LegendLayout({\n vertical: vertical,\n spacing: options.spacing,\n rtl: chartService.rtl\n }, chartService);\n var items = options.items;\n\n if (options.reverse) {\n items = items.slice(0).reverse();\n }\n\n var count = items.length;\n\n for (var i = 0; i < count; i++) {\n var item = items[i];\n\n innerElement.append(new LegendItem(deepExtend({}, {\n markers: options.markers,\n labels: options.labels,\n rtl: chartService.rtl\n }, options.item, item)));\n }\n\n innerElement.render();\n this.itemsContainer.append(innerElement);\n };\n\n Legend.prototype.isVertical = function isVertical () {\n var ref = this.options;\n var orientation = ref.orientation;\n var position = ref.position;\n var vertical = (position === CUSTOM && orientation !== HORIZONTAL) ||\n (defined(orientation) ? orientation !== HORIZONTAL : inArray(position, [ LEFT, RIGHT ]));\n\n return vertical;\n };\n\n Legend.prototype.hasItems = function hasItems () {\n return this.container.children[0].children.length > 0;\n };\n\n Legend.prototype.reflow = function reflow (targetBox) {\n var options = this.options;\n var legendBox = targetBox.clone();\n\n if (!this.hasItems()) {\n this.box = legendBox;\n return;\n }\n\n if (options.position === CUSTOM) {\n this.containerCustomReflow(legendBox);\n this.box = legendBox;\n } else {\n this.containerReflow(legendBox);\n }\n\n if (this.hasTitle()) {\n this.title.reflow(new Box(this.container.box.x1, this.title.box.y1, this.container.box.x2, this.title.box.y2));\n }\n };\n\n Legend.prototype.containerReflow = function containerReflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var position = options.position;\n var width = options.width;\n var height = options.height;\n var pos = position === TOP || position === BOTTOM ? X : Y;\n var vertical = this.isVertical();\n var alignTarget = targetBox.clone();\n var containerBox = targetBox.clone();\n\n if (position === LEFT || position === RIGHT) {\n containerBox.y1 = alignTarget.y1 = 0;\n }\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n containerBox.align(alignTarget, Y, container.options.vAlign);\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n containerBox.align(alignTarget, X, container.options.align);\n }\n\n container.reflow(containerBox);\n containerBox = container.box;\n\n var box = containerBox.clone();\n\n if (options.offsetX || options.offsetY) {\n containerBox.translate(options.offsetX, options.offsetY);\n container.reflow(containerBox);\n }\n\n box[pos + 1] = targetBox[pos + 1];\n box[pos + 2] = targetBox[pos + 2];\n\n this.box = box;\n };\n\n Legend.prototype.containerCustomReflow = function containerCustomReflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var container = ref.container;\n var offsetX = options.offsetX;\n var offsetY = options.offsetY;\n var width = options.width;\n var height = options.height;\n var vertical = this.isVertical();\n var containerBox = targetBox.clone();\n\n if (vertical && height) {\n containerBox.y2 = containerBox.y1 + height;\n } else if (!vertical && width) {\n containerBox.x2 = containerBox.x1 + width;\n }\n container.reflow(containerBox);\n containerBox = container.box;\n\n container.reflow(new Box(\n offsetX, offsetY,\n offsetX + containerBox.width(), offsetY + containerBox.height()\n ));\n };\n\n Legend.prototype.renderVisual = function renderVisual () {\n if (this.hasItems()) {\n ChartElement.prototype.renderVisual.call(this);\n }\n };\n\n Legend.prototype.createLegendTitle = function createLegendTitle (title) {\n var titleOptions = deepExtend({}, {\n color: BLACK,\n position: TOP,\n align: CENTER\n }, title);\n var text = titleOptions.text;\n\n if (!title || title.visible === false) {\n return;\n }\n\n if (defined(titleOptions) && titleOptions.visible) {\n var labelTemplate = getTemplate(titleOptions);\n if (labelTemplate) {\n text = labelTemplate({ text: text });\n } else if (titleOptions.format) {\n text = this.chartService.format.auto(titleOptions.format, text);\n }\n }\n\n this.title = new TextBox(text, titleOptions);\n\n this.createTitleLayout();\n\n this.appendTitleLayoutContent();\n };\n\n Legend.prototype.createTitleLayout = function createTitleLayout () {\n this.layout = new FloatElement({\n vertical: true,\n wrap: false\n });\n\n this.container.append(this.layout);\n };\n\n Legend.prototype.hasTitle = function hasTitle () {\n return Boolean(this.options.title && this.options.title.visible !== false);\n };\n\n Legend.prototype.appendTitleLayoutContent = function appendTitleLayoutContent () {\n var options = this.options;\n\n if (options.title.position === BOTTOM) {\n this.layout.append(this.itemsContainer);\n this.layout.append(this.title);\n } else {\n this.layout.append(this.title);\n this.layout.append(this.itemsContainer);\n }\n };\n\n return Legend;\n}(ChartElement));\n\nsetDefaultOptions(Legend, {\n position: RIGHT,\n items: [],\n offsetX: 0,\n offsetY: 0,\n margin: getSpacing(5),\n padding: getSpacing(5),\n border: {\n color: BLACK,\n width: 0\n },\n item: {\n cursor: POINTER,\n spacing: 6\n },\n spacing: 6,\n background: \"\",\n zIndex: 1,\n markers: {\n border: {\n width: 0\n },\n width: 15,\n height: 3,\n type: \"rect\",\n align: LEFT,\n vAlign: CENTER\n }\n});\n\nexport default Legend;\n","import filterSeriesByType from '../utils/filter-series-by-type';\nimport { Class } from '../../common';\n\nvar PlotAreaFactory = (function (Class) {\n function PlotAreaFactory() {\n Class.call(this);\n\n this._registry = [];\n }\n\n if ( Class ) PlotAreaFactory.__proto__ = Class;\n PlotAreaFactory.prototype = Object.create( Class && Class.prototype );\n PlotAreaFactory.prototype.constructor = PlotAreaFactory;\n\n PlotAreaFactory.prototype.register = function register (type, seriesTypes) {\n this._registry.push({\n type: type,\n seriesTypes: seriesTypes\n });\n };\n\n PlotAreaFactory.prototype.create = function create (srcSeries, options, chartService) {\n var registry = this._registry;\n var match = registry[0];\n var series;\n\n for (var idx = 0; idx < registry.length; idx++) {\n var entry = registry[idx];\n series = filterSeriesByType(srcSeries, entry.seriesTypes);\n\n if (series.length > 0) {\n match = entry;\n break;\n }\n }\n\n return new match.type(series, options, chartService);\n };\n\n return PlotAreaFactory;\n}(Class));\n\nPlotAreaFactory.current = new PlotAreaFactory();\n\nexport default PlotAreaFactory;","import { DomEventsBuilder } from '../services';\n\nimport { DateCategoryAxis, Point } from '../core';\n\nimport { MOUSEWHEEL_DELAY, MOUSEWHEEL, SELECT_START, SELECT, SELECT_END } from './constants';\n\nimport { LEFT, RIGHT, MIN_VALUE, MAX_VALUE, X } from '../common/constants';\nimport { addClass, Class, removeClass, deepExtend, elementStyles, eventElement, setDefaultOptions, limitValue, round, bindEvents, unbindEvents, mousewheelDelta, hasClasses } from '../common';\nimport { parseDate } from '../date-utils';\n\nvar ZOOM_ACCELERATION = 3;\nvar SELECTOR_HEIGHT_ADJUST = 0.1;\n\nfunction createDiv(className) {\n var element = document.createElement(\"div\");\n if (className) {\n element.className = className;\n }\n\n return element;\n}\n\nfunction closestHandle(element) {\n var current = element;\n while (current && !hasClasses(current, \"k-handle\")) {\n current = current.parentNode;\n }\n\n return current;\n}\n\nvar Selection = (function (Class) {\n function Selection(chart, categoryAxis, options, observer) {\n Class.call(this);\n\n var chartElement = chart.element;\n\n this.options = deepExtend({}, this.options, options);\n this.chart = chart;\n this.observer = observer;\n this.chartElement = chartElement;\n this.categoryAxis = categoryAxis;\n this._dateAxis = this.categoryAxis instanceof DateCategoryAxis;\n\n this.initOptions();\n\n this.visible = this.options.visible && chartElement.offsetHeight;\n\n if (this.visible) {\n this.createElements();\n\n this.set(this._index(this.options.from), this._index(this.options.to));\n\n this.bindEvents();\n }\n }\n\n if ( Class ) Selection.__proto__ = Class;\n Selection.prototype = Object.create( Class && Class.prototype );\n Selection.prototype.constructor = Selection;\n\n Selection.prototype.onPane = function onPane (pane) {\n return this.categoryAxis.pane === pane;\n };\n\n Selection.prototype.createElements = function createElements () {\n var options = this.options;\n var wrapper = this.wrapper = createDiv(\"k-selector\");\n elementStyles(wrapper, {\n top: options.offset.top,\n left: options.offset.left,\n width: options.width,\n height: options.height,\n direction: 'ltr'\n });\n var selection = this.selection = createDiv(\"k-selection\");\n this.leftMask = createDiv(\"k-mask\");\n this.rightMask = createDiv(\"k-mask\");\n\n wrapper.appendChild(this.leftMask);\n wrapper.appendChild(this.rightMask);\n wrapper.appendChild(selection);\n\n selection.appendChild(createDiv(\"k-selection-bg\"));\n\n var leftHandle = this.leftHandle = createDiv(\"k-handle k-left-handle\");\n var rightHandle = this.rightHandle = createDiv(\"k-handle k-right-handle\");\n leftHandle.appendChild(createDiv());\n rightHandle.appendChild(createDiv());\n\n selection.appendChild(leftHandle);\n selection.appendChild(rightHandle);\n\n this.chartElement.appendChild(wrapper);\n var selectionStyles = elementStyles(selection, [ \"borderLeftWidth\", \"borderRightWidth\", \"height\" ]);\n var leftHandleHeight = elementStyles(leftHandle, \"height\").height;\n var rightHandleHeight = elementStyles(rightHandle, \"height\").height;\n\n options.selection = {\n border: {\n left: selectionStyles.borderLeftWidth,\n right: selectionStyles.borderRightWidth\n }\n };\n\n elementStyles(leftHandle, {\n top: (selectionStyles.height - leftHandleHeight) / 2\n });\n\n elementStyles(rightHandle, {\n top: (selectionStyles.height - rightHandleHeight) / 2\n });\n\n wrapper.style.cssText = wrapper.style.cssText;\n };\n\n Selection.prototype.bindEvents = function bindEvents$1 () {\n var obj;\n\n if (this.options.mousewheel !== false) {\n this._mousewheelHandler = this._mousewheel.bind(this);\n bindEvents(this.wrapper, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n }\n\n this._domEvents = DomEventsBuilder.create(this.wrapper, {\n stopPropagation: true, // applicable for the jQuery UserEvents\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n press: this._press.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n };\n\n Selection.prototype.initOptions = function initOptions () {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var box = categoryAxis.pane.chartsBox();\n var intlService = this.chart.chartService.intl;\n\n if (this._dateAxis) {\n deepExtend(options, {\n min: parseDate(intlService, options.min),\n max: parseDate(intlService, options.max),\n from: parseDate(intlService, options.from),\n to: parseDate(intlService, options.to)\n });\n }\n\n var ref$1 = elementStyles(this.chartElement, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref$1.paddingLeft;\n var paddingTop = ref$1.paddingTop;\n\n this.options = deepExtend({}, {\n width: box.width(),\n height: box.height() + SELECTOR_HEIGHT_ADJUST, //workaround for sub-pixel hover on the paths in chrome\n padding: {\n left: paddingLeft,\n top: paddingTop\n },\n offset: {\n left: box.x1 + paddingLeft,\n top: box.y1 + paddingTop\n },\n from: options.min,\n to: options.max\n }, options);\n };\n\n Selection.prototype.destroy = function destroy () {\n var obj;\n\n if (this._domEvents) {\n this._domEvents.destroy();\n delete this._domEvents;\n }\n\n clearTimeout(this._mwTimeout);\n this._state = null;\n\n if (this.wrapper) {\n if (this._mousewheelHandler) {\n unbindEvents(this.wrapper, ( obj = {}, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj ));\n this._mousewheelHandler = null;\n }\n this.chartElement.removeChild(this.wrapper);\n this.wrapper = null;\n }\n };\n\n Selection.prototype._rangeEventArgs = function _rangeEventArgs (range) {\n\n return {\n axis: this.categoryAxis.options,\n from: this._value(range.from),\n to: this._value(range.to)\n };\n };\n\n Selection.prototype._start = function _start (e) {\n var options = this.options;\n var target = eventElement(e);\n\n if (this._state || !target) {\n return;\n }\n\n this.chart._unsetActivePoint();\n this._state = {\n moveTarget: closestHandle(target) || target,\n startLocation: e.x ? e.x.location : 0,\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n\n var args = this._rangeEventArgs({\n from: this._index(options.from),\n to: this._index(options.to)\n });\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n }\n };\n\n Selection.prototype._press = function _press (e) {\n var handle;\n if (this._state) {\n handle = this._state.moveTarget;\n } else {\n handle = closestHandle(eventElement(e));\n }\n if (handle) {\n addClass(handle, \"k-handle-active\");\n }\n };\n\n Selection.prototype._move = function _move (e) {\n if (!this._state) {\n return;\n }\n\n var ref = this;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var target = state.moveTarget;\n var reverse = categoryAxis.options.reverse;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var delta = state.startLocation - e.x.location;\n var oldRange = { from: range.from, to: range.to };\n var span = range.to - range.from;\n var scale = elementStyles(this.wrapper, \"width\").width / (categoryAxis.categoriesCount() - 1);\n var offset = Math.round(delta / scale) * (reverse ? -1 : 1);\n\n if (!target) {\n return;\n }\n\n var leftHandle = hasClasses(target, \"k-left-handle\");\n var rightHandle = hasClasses(target, \"k-right-handle\");\n\n if (hasClasses(target, \"k-selection k-selection-bg\")) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n range.to = Math.min(\n range.from + span,\n max\n );\n } else if ((leftHandle && !reverse) || (rightHandle && reverse)) {\n range.from = Math.min(\n Math.max(min, from - offset),\n max - 1\n );\n range.to = Math.max(range.from + 1, range.to);\n } else if ((leftHandle && reverse) || (rightHandle && !reverse)) {\n range.to = Math.min(\n Math.max(min + 1, to - offset),\n max\n );\n range.from = Math.min(range.to - 1, range.from);\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.move(range.from, range.to);\n this.trigger(SELECT, this._rangeEventArgs(range));\n }\n };\n\n Selection.prototype._end = function _end () {\n if (this._state) {\n var moveTarget = this._state.moveTarget;\n if (moveTarget) {\n removeClass(moveTarget, \"k-handle-active\");\n }\n\n var range = this._state.range;\n this.set(range.from, range.to);\n this.trigger(SELECT_END, this._rangeEventArgs(range));\n\n delete this._state;\n }\n };\n\n Selection.prototype._tap = function _tap (e) {\n var ref = this;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var coords = this.chart._eventCoordinates(e);\n var categoryIx = categoryAxis.pointCategoryIndex(new Point(coords.x, categoryAxis.box.y1));\n var from = this._index(options.from);\n var to = this._index(options.to);\n var min = this._index(options.min);\n var max = this._index(options.max);\n var span = to - from;\n var mid = from + span / 2;\n var range = {};\n var rightClick = e.event.which === 3;\n var offset = Math.round(mid - categoryIx);\n\n if (this._state || rightClick) {\n return;\n }\n\n\n this.chart._unsetActivePoint();\n\n if (!categoryAxis.options.justified) {\n offset--;\n }\n\n range.from = Math.min(\n Math.max(min, from - offset),\n max - span\n );\n\n range.to = Math.min(range.from + span, max);\n\n this._start(e);\n if (this._state) {\n this._state.range = range;\n this.trigger(SELECT, this._rangeEventArgs(range));\n this._end();\n }\n };\n\n Selection.prototype._mousewheel = function _mousewheel (e) {\n var this$1 = this;\n\n var delta = mousewheelDelta(e);\n\n this._start({ target: this.selection });\n\n if (this._state) {\n var range = this._state.range;\n\n e.preventDefault();\n e.stopPropagation();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (this.options.mousewheel.reverse) {\n delta *= -1;\n }\n\n if (this.expand(delta)) {\n this.trigger(SELECT, {\n axis: this.categoryAxis.options,\n delta: delta,\n originalEvent: e,\n from: this._value(range.from),\n to: this._value(range.to)\n });\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1._end();\n }, MOUSEWHEEL_DELAY);\n }\n };\n\n Selection.prototype._gesturestart = function _gesturestart (e) {\n var options = this.options;\n\n this._state = {\n range: {\n from: this._index(options.from),\n to: this._index(options.to)\n }\n };\n var args = this._rangeEventArgs(this._state.range);\n\n if (this.trigger(SELECT_START, args)) {\n this._state = null;\n } else {\n e.preventDefault();\n }\n };\n\n Selection.prototype._gestureend = function _gestureend () {\n if (this._state) {\n this.trigger(SELECT_END, this._rangeEventArgs(this._state.range));\n delete this._state;\n }\n };\n\n Selection.prototype._gesturechange = function _gesturechange (e) {\n var ref = this;\n var chart = ref.chart;\n var state = ref._state;\n var options = ref.options;\n var categoryAxis = ref.categoryAxis;\n var range = state.range;\n var p0 = chart._toModelCoordinates(e.touches[0].x.location).x;\n var p1 = chart._toModelCoordinates(e.touches[1].x.location).x;\n var left = Math.min(p0, p1);\n var right = Math.max(p0, p1);\n\n e.preventDefault();\n\n range.from = categoryAxis.pointCategoryIndex(new Point(left)) || options.min;\n\n range.to = categoryAxis.pointCategoryIndex(new Point(right)) || options.max;\n\n this.move(range.from, range.to);\n\n this.trigger(SELECT, this._rangeEventArgs(range));\n };\n\n Selection.prototype._index = function _index (value) {\n var index = value;\n\n if (value instanceof Date) {\n index = this.categoryAxis.categoryIndex(value);\n }\n\n return index;\n };\n\n Selection.prototype._value = function _value (index) {\n var value = index;\n if (this._dateAxis) {\n value = this.categoryAxis.categoryAt(index);\n if (value > this.options.max) {\n value = this.options.max;\n }\n }\n\n return value;\n };\n\n Selection.prototype._slot = function _slot (value) {\n var categoryAxis = this.categoryAxis;\n var index = this._index(value);\n\n return categoryAxis.getSlot(index, index, true);\n };\n\n Selection.prototype.move = function move (from, to) {\n var options = this.options;\n var reverse = this.categoryAxis.options.reverse;\n var offset = options.offset;\n var padding = options.padding;\n var border = options.selection.border;\n var left = reverse ? to : from;\n var right = reverse ? from : to;\n var edge = 'x' + (reverse ? 2 : 1);\n\n var box = this._slot(left);\n var leftMaskWidth = round(box[edge] - offset.left + padding.left);\n\n elementStyles(this.leftMask, {\n width: leftMaskWidth\n });\n elementStyles(this.selection, {\n left: leftMaskWidth\n });\n\n box = this._slot(right);\n\n var rightMaskWidth = round(options.width - (box[edge] - offset.left + padding.left));\n elementStyles(this.rightMask, {\n width: rightMaskWidth\n });\n\n var distance = options.width - rightMaskWidth;\n if (distance !== options.width) {\n distance += border.right;\n }\n\n elementStyles(this.rightMask, {\n left: distance\n });\n elementStyles(this.selection, {\n width: Math.max(options.width - (leftMaskWidth + rightMaskWidth) - border.right, 0)\n });\n };\n\n Selection.prototype.set = function set (from, to) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var fromValue = limitValue(this._index(from), min, max);\n var toValue = limitValue(this._index(to), fromValue + 1, max);\n\n if (options.visible) {\n this.move(fromValue, toValue);\n }\n\n options.from = this._value(fromValue);\n options.to = this._value(toValue);\n };\n\n Selection.prototype.expand = function expand (delta) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var zDir = options.mousewheel.zoom;\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n if (this._state) {\n range = this._state.range;\n }\n\n if (zDir !== RIGHT) {\n range.from = limitValue(\n limitValue(from - delta, 0, to - 1),\n min, max\n );\n }\n\n if (zDir !== LEFT) {\n range.to = limitValue(\n limitValue(to + delta, range.from + 1, max),\n min,\n max\n );\n }\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n };\n\n Selection.prototype.zoom = function zoom (delta, coords) {\n var options = this.options;\n var min = this._index(options.min);\n var max = this._index(options.max);\n var from = this._index(options.from);\n var to = this._index(options.to);\n var range = { from: from, to: to };\n var oldRange = deepExtend({}, range);\n\n var ref = this.categoryAxis.options;\n var reverse = ref.reverse;\n var origin = X + (reverse ? '2' : '1');\n var lineBox = this.categoryAxis.lineBox();\n var relative = Math.abs(lineBox[origin] - coords[X]);\n var size = lineBox.width();\n var position = round(relative / size, 2);\n var minDelta = round(position * delta);\n var maxDelta = round((1 - position) * delta);\n\n if (this._state) {\n range = this._state.range;\n }\n\n range.from = limitValue(\n limitValue(from - minDelta, 0, to - 1),\n min, max\n );\n\n range.to = limitValue(\n limitValue(to + maxDelta, range.from + 1, max),\n min,\n max\n );\n\n if (range.from !== oldRange.from || range.to !== oldRange.to) {\n this.set(range.from, range.to);\n return true;\n }\n };\n\n Selection.prototype.trigger = function trigger (name, args) {\n return (this.observer || this.chart).trigger(name, args);\n };\n\n return Selection;\n}(Class));\n\nsetDefaultOptions(Selection, {\n visible: true,\n mousewheel: {\n zoom: \"both\"\n },\n min: MIN_VALUE,\n max: MAX_VALUE\n});\n\nexport default Selection;\n","import BaseTooltip from './base-tooltip';\n\nimport { deepExtend } from '../../common';\n\nvar Tooltip = (function (BaseTooltip) {\n function Tooltip () {\n BaseTooltip.apply(this, arguments);\n }\n\n if ( BaseTooltip ) Tooltip.__proto__ = BaseTooltip;\n Tooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n Tooltip.prototype.constructor = Tooltip;\n\n Tooltip.prototype.show = function show (point) {\n if (!point || !point.tooltipAnchor || (this._current && this._current === point)) {\n return;\n }\n\n var options = deepExtend({}, this.options, point.options.tooltip);\n var anchor = point.tooltipAnchor();\n\n if (anchor) {\n this._current = point;\n BaseTooltip.prototype.show.call(this, {\n point: point,\n anchor: anchor\n }, options, point);\n } else {\n this.hide();\n }\n };\n\n Tooltip.prototype.hide = function hide () {\n delete this._current;\n BaseTooltip.prototype.hide.call(this);\n };\n\n return Tooltip;\n}(BaseTooltip));\n\nexport default Tooltip;","import BaseTooltip from './base-tooltip';\nimport { Point } from '../../core';\n\nimport { grep, setDefaultOptions } from '../../common';\n\nvar SharedTooltip = (function (BaseTooltip) {\n function SharedTooltip(plotArea, options) {\n BaseTooltip.call(this, plotArea.chartService, options);\n\n this.plotArea = plotArea;\n this.formatService = plotArea.chartService.format;\n }\n\n if ( BaseTooltip ) SharedTooltip.__proto__ = BaseTooltip;\n SharedTooltip.prototype = Object.create( BaseTooltip && BaseTooltip.prototype );\n SharedTooltip.prototype.constructor = SharedTooltip;\n\n SharedTooltip.prototype.showAt = function showAt (points, coords) {\n var tooltipPoints = grep(points, function(point) {\n var tooltip = point.series.tooltip;\n var excluded = tooltip && tooltip.visible === false;\n\n return !excluded;\n });\n\n if (tooltipPoints.length > 0) {\n var point = tooltipPoints[0];\n var slot = this.plotArea.categoryAxis.getSlot(point.categoryIx);\n\n var anchor = coords ? this._slotAnchor(coords, slot) : this._defaultAnchor(point, slot);\n\n this.show({\n anchor: anchor,\n shared: true,\n points: points,\n category: point.category,\n categoryText: this.formatService.auto(this.options.categoryFormat, point.category),\n series: this.plotArea.series\n }, this.options);\n }\n };\n\n SharedTooltip.prototype._slotAnchor = function _slotAnchor (point, slot) {\n var axis = this.plotArea.categoryAxis;\n var align = {\n horizontal: \"left\",\n vertical: \"center\"\n };\n\n if (!axis.options.vertical) {\n point.x = slot.center().x;\n }\n\n return {\n point: point,\n align: align\n };\n };\n\n SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n var box = point.owner.pane.chartsBox();\n var vertical = this.plotArea.categoryAxis.options.vertical;\n var center = box.center();\n var slotCenter = slot.center();\n var align = {\n horizontal: \"center\",\n vertical: \"center\"\n };\n\n var centerPoint;\n if (vertical) {\n centerPoint = new Point(center.x, slotCenter.y);\n } else {\n centerPoint = new Point(slotCenter.x, center.y);\n }\n\n return {\n point: centerPoint,\n align: align\n };\n };\n\n return SharedTooltip;\n}(BaseTooltip));\n\nsetDefaultOptions(SharedTooltip, {\n categoryFormat: '{0:d}'\n});\n\nexport default SharedTooltip;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { INITIAL_ANIMATION_DURATION, BAR, START_SCALE } from '../constants';\n\nimport { X, Y } from '../../common/constants';\nimport { interpolateValue, setDefaultOptions } from '../../common';\n\nvar BarChartAnimation = (function (superclass) {\n function BarChartAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) BarChartAnimation.__proto__ = superclass;\n BarChartAnimation.prototype = Object.create( superclass && superclass.prototype );\n BarChartAnimation.prototype.constructor = BarChartAnimation;\n\n BarChartAnimation.prototype.setup = function setup () {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var bbox = element.bbox();\n\n if (bbox) {\n this.origin = options.origin;\n var axis = options.vertical ? Y : X;\n\n var fromScale = this.fromScale = new geom.Point(1, 1);\n fromScale[axis] = START_SCALE;\n\n element.transform(geom.transform()\n .scale(fromScale.x, fromScale.y)\n );\n } else {\n this.abort();\n }\n };\n\n BarChartAnimation.prototype.step = function step (pos) {\n var scaleX = interpolateValue(this.fromScale.x, 1, pos);\n var scaleY = interpolateValue(this.fromScale.y, 1, pos);\n\n this.element.transform(geom.transform()\n .scale(scaleX, scaleY, this.origin)\n );\n };\n\n BarChartAnimation.prototype.abort = function abort () {\n superclass.prototype.abort.call(this);\n this.element.transform(null);\n };\n\n return BarChartAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BarChartAnimation, {\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(BAR, BarChartAnimation);\n\nexport default BarChartAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, BUBBLE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar BubbleAnimation = (function (superclass) {\n function BubbleAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) BubbleAnimation.__proto__ = superclass;\n BubbleAnimation.prototype = Object.create( superclass && superclass.prototype );\n BubbleAnimation.prototype.constructor = BubbleAnimation;\n\n BubbleAnimation.prototype.setup = function setup () {\n var center = this.center = this.element.bbox().center();\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, center)\n );\n };\n\n BubbleAnimation.prototype.step = function step (pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.center)\n );\n };\n\n return BubbleAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(BubbleAnimation, {\n easing: \"easeOutElastic\"\n});\n\ndraw.AnimationFactory.current.register(BUBBLE, BubbleAnimation);\n\nexport default BubbleAnimation;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { FADEIN } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar FadeInAnimation = (function (superclass) {\n function FadeInAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) FadeInAnimation.__proto__ = superclass;\n FadeInAnimation.prototype = Object.create( superclass && superclass.prototype );\n FadeInAnimation.prototype.constructor = FadeInAnimation;\n\n FadeInAnimation.prototype.setup = function setup () {\n this.fadeTo = this.element.opacity();\n this.element.opacity(0);\n };\n\n FadeInAnimation.prototype.step = function step (pos) {\n this.element.opacity(pos * this.fadeTo);\n };\n\n return FadeInAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(FadeInAnimation, {\n duration: 200,\n easing: \"linear\"\n});\n\ndraw.AnimationFactory.current.register(FADEIN, FadeInAnimation);\n\nexport default FadeInAnimation;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { START_SCALE, INITIAL_ANIMATION_DURATION, PIE } from '../constants';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PieAnimation = (function (superclass) {\n function PieAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) PieAnimation.__proto__ = superclass;\n PieAnimation.prototype = Object.create( superclass && superclass.prototype );\n PieAnimation.prototype.constructor = PieAnimation;\n\n PieAnimation.prototype.setup = function setup () {\n this.element.transform(geom.transform()\n .scale(START_SCALE, START_SCALE, this.options.center)\n );\n };\n\n PieAnimation.prototype.step = function step (pos) {\n this.element.transform(geom.transform()\n .scale(pos, pos, this.options.center)\n );\n };\n\n return PieAnimation;\n}(draw.Animation));\n\nsetDefaultOptions(PieAnimation, {\n easing: \"easeOutElastic\",\n duration: INITIAL_ANIMATION_DURATION\n});\n\ndraw.AnimationFactory.current.register(PIE, PieAnimation);\n\nexport default PieAnimation;","import ScatterChart from './scatter-chart';\nimport LineChartMixin from '../mixins/line-chart-mixin';\nimport LineSegment from '../line-chart/line-segment';\nimport SplineSegment from '../line-chart/spline-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nimport { deepExtend } from '../../common';\n\nvar ScatterLineChart = (function (ScatterChart) {\n function ScatterLineChart () {\n ScatterChart.apply(this, arguments);\n }\n\n if ( ScatterChart ) ScatterLineChart.__proto__ = ScatterChart;\n ScatterLineChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n ScatterLineChart.prototype.constructor = ScatterLineChart;\n\n ScatterLineChart.prototype.render = function render () {\n ScatterChart.prototype.render.call(this);\n\n this.renderSegments();\n };\n\n ScatterLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n return new pointType(linePoints, currentSeries, seriesIx);\n };\n\n ScatterLineChart.prototype.animationPoints = function animationPoints () {\n var points = ScatterChart.prototype.animationPoints.call(this);\n return points.concat(this._segments);\n };\n\n ScatterLineChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n if (missingValues === ZERO) {\n var missingValue = {\n x: value.x,\n y: value.y\n };\n if (!hasValue(missingValue.x)) {\n missingValue.x = 0;\n }\n if (!hasValue(missingValue.y)) {\n missingValue.y = 0;\n }\n return missingValue;\n }\n };\n\n return ScatterLineChart;\n}(ScatterChart));\n\ndeepExtend(ScatterLineChart.prototype, LineChartMixin);\n\nexport default ScatterLineChart;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport ScatterChart from '../scatter-charts/scatter-chart';\nimport ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport BubbleChart from '../bubble-chart/bubble-chart';\nimport SeriesBinder from '../series-binder';\n\nimport { NumericAxis, LogarithmicAxis, DateValueAxis, Point } from '../../core';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\nimport equalsIgnoreCase from '../utils/equals-ignore-case';\nimport singleItemOrArray from '../utils/single-item-or-array';\n\nimport { SCATTER, SCATTER_LINE, BUBBLE, LOGARITHMIC } from '../constants';\n\nimport { DATE } from '../../common/constants';\nimport { deepExtend, eventElement, grep, inArray, setDefaultOptions } from '../../common';\n\nvar XYPlotArea = (function (PlotAreaBase) {\n function XYPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) XYPlotArea.__proto__ = PlotAreaBase;\n XYPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n XYPlotArea.prototype.constructor = XYPlotArea;\n\n XYPlotArea.prototype.initFields = function initFields () {\n this.namedXAxes = {};\n this.namedYAxes = {};\n\n this.xAxisRangeTracker = new AxisGroupRangeTracker();\n this.yAxisRangeTracker = new AxisGroupRangeTracker();\n };\n\n XYPlotArea.prototype.render = function render (panes) {\n var this$1 = this;\n if ( panes === void 0 ) panes = this.panes;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1.addToLegend(paneSeries);\n var filteredSeries = this$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1.createScatterChart(\n filterSeriesByType(filteredSeries, SCATTER),\n pane\n );\n\n this$1.createScatterLineChart(\n filterSeriesByType(filteredSeries, SCATTER_LINE),\n pane\n );\n\n this$1.createBubbleChart(\n filterSeriesByType(filteredSeries, BUBBLE),\n pane\n );\n }\n\n this.createAxes(panes);\n };\n\n XYPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n this.xAxisRangeTracker.update(chart.xAxisRanges);\n this.yAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n };\n\n XYPlotArea.prototype.removeAxis = function removeAxis (axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n this.yAxisRangeTracker.reset(axisName);\n delete this.namedYAxes[axisName];\n } else {\n this.xAxisRangeTracker.reset(axisName);\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n };\n\n // TODO: Refactor, optionally use series.pane option\n XYPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n };\n\n XYPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n };\n\n XYPlotArea.prototype.createScatterLineChart = function createScatterLineChart (series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new ScatterLineChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n };\n\n XYPlotArea.prototype.createBubbleChart = function createBubbleChart (series, pane) {\n if (series.length > 0) {\n this.appendChart(\n new BubbleChart(this, { series: series, clip: pane.options.clip }),\n pane\n );\n }\n };\n\n XYPlotArea.prototype.createXYAxis = function createXYAxis (options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var tracker = vertical ? this.yAxisRangeTracker : this.xAxisRangeTracker;\n var axisOptions = deepExtend({ reverse: !vertical && this.chartService.rtl }, options, { vertical: vertical });\n var isLog = equalsIgnoreCase(axisOptions.type, LOGARITHMIC);\n var defaultRange = tracker.query();\n var defaultAxisRange = isLog ? { min: 0.1, max: 1 } : { min: 0, max: 1 };\n var range = tracker.query(axisName) || defaultRange || defaultAxisRange;\n var typeSamples = [ axisOptions.min, axisOptions.max ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n if (axisIndex === 0 && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateValueAxis;\n } else if (isLog) {\n axisType = LogarithmicAxis;\n } else {\n axisType = NumericAxis;\n }\n\n var axis = new axisType(range.min, range.max, axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n\n return axis;\n };\n\n XYPlotArea.prototype.createAxes = function createAxes (panes) {\n var this$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n };\n\n XYPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n var currentValue = axis.getValue(point);\n if (currentValue !== null) {\n values.push(currentValue);\n }\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n };\n\n XYPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n };\n\n return XYPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(XYPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(XYPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default XYPlotArea;","import { drawing as draw, geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, ShapeBuilder, TextBox, Box } from '../../core';\n\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { OUTSIDE_END, INSIDE_END, PIE, FADEIN, TOOLTIP_OFFSET } from '../constants';\nimport hasGradientOverlay from '../utils/has-gradient-overlay';\n\nimport { TOP, BOTTOM, LEFT, RIGHT, DEFAULT_FONT, CIRCLE, WHITE, CENTER, DEFAULT_PRECISION } from '../../common/constants';\nimport { autoTextColor, setDefaultOptions, getSpacing, getTemplate, deepExtend, round, rad } from '../../common';\n\nvar PieSegment = (function (ChartElement) {\n function PieSegment(value, sector, options) {\n ChartElement.call(this, options);\n\n this.value = value;\n this.sector = sector;\n }\n\n if ( ChartElement ) PieSegment.__proto__ = ChartElement;\n PieSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n PieSegment.prototype.constructor = PieSegment;\n\n PieSegment.prototype.render = function render () {\n var labels = this.options.labels;\n var chartService = this.owner.chartService;\n var labelText = this.value;\n\n if (this._rendered || this.visible === false) {\n return;\n }\n this._rendered = true;\n\n var labelTemplate = getTemplate(labels);\n var pointData = this.pointData();\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else if (labels.format) {\n labelText = chartService.format.auto(labels.format, labelText);\n }\n\n if (labels.visible && (labelText || labelText === 0)) {\n if (labels.position === CENTER || labels.position === INSIDE_END) {\n if (!labels.color) {\n labels.color = autoTextColor(this.options.color);\n }\n if (!labels.background) {\n labels.background = this.options.color;\n }\n } else {\n var themeLabels = chartService.theme.seriesDefaults.labels;\n labels.color = labels.color || themeLabels.color;\n labels.background = labels.background || themeLabels.background;\n }\n\n\n this.label = new TextBox(labelText, deepExtend({}, labels, {\n align: CENTER,\n vAlign: \"\",\n animation: {\n type: FADEIN,\n delay: this.animationDelay\n }\n }), pointData);\n\n this.append(this.label);\n }\n };\n\n PieSegment.prototype.reflow = function reflow (targetBox) {\n this.render();\n this.box = targetBox;\n this.reflowLabel();\n };\n\n PieSegment.prototype.reflowLabel = function reflowLabel () {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var labelsDistance = labelsOptions.distance;\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n var labelWidth = label.box.width();\n var lp;\n\n if (labelsOptions.position === CENTER) {\n sector.radius = Math.abs((sector.radius - labelHeight) / 2) + labelHeight;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else if (labelsOptions.position === INSIDE_END) {\n sector.radius = sector.radius - labelHeight / 2;\n lp = sector.point(angle);\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n var x1;\n lp = sector.clone().expand(labelsDistance).point(angle);\n if (lp.x >= sector.center.x) {\n x1 = lp.x + labelWidth;\n label.orientation = RIGHT;\n } else {\n x1 = lp.x - labelWidth;\n label.orientation = LEFT;\n }\n label.reflow(new Box(x1, lp.y - labelHeight, lp.x, lp.y));\n }\n }\n };\n\n PieSegment.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n\n ChartElement.prototype.createVisual.call(this);\n\n if (this.value) {\n if (options.visual) {\n var startAngle = (sector.startAngle + 180) % 360;\n var visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n center: new geom.Point(sector.center.x, sector.center.y),\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n startAngle: startAngle,\n endAngle: startAngle + sector.angle,\n options: options,\n sender: this.getSender(),\n createVisual: function () {\n var group = new draw.Group();\n this$1.createSegmentVisual(group);\n\n return group;\n }\n });\n\n if (visual) {\n this.visual.append(visual);\n }\n } else {\n this.createSegmentVisual(this.visual);\n }\n }\n };\n\n PieSegment.prototype.createSegmentVisual = function createSegmentVisual (group) {\n var ref = this;\n var sector = ref.sector;\n var options = ref.options;\n var borderOptions = options.border || {};\n var border = borderOptions.width > 0 ? {\n stroke: {\n color: borderOptions.color,\n width: borderOptions.width,\n opacity: borderOptions.opacity,\n dashType: borderOptions.dashType\n }\n } : {};\n var color = options.color;\n var fill = {\n color: color,\n opacity: options.opacity\n };\n var visual = this.createSegment(sector, deepExtend({\n fill: fill,\n stroke: {\n opacity: options.opacity\n },\n zIndex: options.zIndex\n }, border));\n\n group.append(visual);\n\n if (hasGradientOverlay(options)) {\n group.append(this.createGradientOverlay(visual, {\n baseColor: color,\n fallbackFill: fill\n }, deepExtend({\n center: [ sector.center.x, sector.center.y ],\n innerRadius: sector.innerRadius,\n radius: sector.radius,\n userSpace: true\n }, options.overlay)));\n }\n };\n\n PieSegment.prototype.createSegment = function createSegment (sector, options) {\n if (options.singleSegment) {\n return new draw.Circle(new geom.Circle(new geom.Point(sector.center.x, sector.center.y), sector.radius), options);\n }\n\n return ShapeBuilder.current.createRing(sector, options);\n };\n\n PieSegment.prototype.createAnimation = function createAnimation () {\n var ref = this;\n var options = ref.options;\n var center = ref.sector.center;\n\n deepExtend(options, {\n animation: {\n center: [ center.x, center.y ],\n delay: this.animationDelay\n }\n });\n\n ChartElement.prototype.createAnimation.call(this);\n };\n\n PieSegment.prototype.createHighlight = function createHighlight (options) {\n var highlight = this.options.highlight || {};\n var border = highlight.border || {};\n\n return this.createSegment(this.sector, deepExtend({}, options, {\n fill: {\n color: highlight.color,\n opacity: highlight.opacity\n },\n stroke: {\n opacity: border.opacity,\n width: border.width,\n color: border.color\n }\n }));\n };\n\n PieSegment.prototype.highlightVisual = function highlightVisual () {\n return this.visual.children[0];\n };\n\n PieSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n var sector = this.sector;\n\n return {\n options: this.options,\n radius: sector.radius,\n innerRadius: sector.innerRadius,\n center: new geom.Point(sector.center.x, sector.center.y),\n startAngle: sector.startAngle,\n endAngle: sector.angle + sector.startAngle,\n visual: this.visual\n };\n };\n\n PieSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n var sector = this.sector.clone().expand(TOOLTIP_OFFSET);\n var midAndle = sector.middle();\n var midPoint = sector.point(midAndle);\n\n return {\n point: midPoint,\n align: tooltipAlignment(midAndle + 180)\n };\n };\n\n PieSegment.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n PieSegment.prototype.pointData = function pointData () {\n return {\n dataItem: this.dataItem,\n category: this.category,\n value: this.value,\n series: this.series,\n percentage: this.percentage\n };\n };\n\n return PieSegment;\n}(ChartElement));\n\nvar RAD_30 = round(rad(30), DEFAULT_PRECISION);\nvar RAD_60 = round(rad(60), DEFAULT_PRECISION);\n\nfunction tooltipAlignment(angle) {\n var radians = rad(angle);\n var sine = round(Math.sin(radians), DEFAULT_PRECISION);\n var cosine = round(Math.cos(radians), DEFAULT_PRECISION);\n\n\n var horizontal;\n if (Math.abs(sine) > RAD_60) {\n horizontal = CENTER;\n } else if (cosine < 0) {\n horizontal = RIGHT;\n } else {\n horizontal = LEFT;\n }\n\n var vertical;\n if (Math.abs(sine) < RAD_30) {\n vertical = CENTER;\n } else if (sine < 0) {\n vertical = BOTTOM;\n } else {\n vertical = TOP;\n }\n\n return {\n horizontal: horizontal,\n vertical: vertical\n };\n}\n\nsetDefaultOptions(PieSegment, {\n color: WHITE,\n overlay: {\n gradient: \"roundedBevel\"\n },\n border: {\n width: 0.5\n },\n labels: {\n visible: false,\n distance: 35,\n font: DEFAULT_FONT,\n margin: getSpacing(0.5),\n align: CIRCLE,\n zIndex: 1,\n position: OUTSIDE_END\n },\n animation: {\n type: PIE\n },\n highlight: {\n visible: true,\n border: {\n width: 1\n }\n },\n visible: true\n});\n\ndeepExtend(PieSegment.prototype, PointEventsMixin);\n\nexport default PieSegment;\n","import { getTemplate } from '../../common';\nimport { hasValue } from '../utils';\n\nvar PieChartMixin = {\n createLegendItem: function(value, point, options) {\n var legendOptions = this.options.legend || {};\n var labelsOptions = legendOptions.labels || {};\n var inactiveItems = legendOptions.inactiveItems || {};\n var inactiveItemsLabels = inactiveItems.labels || {};\n\n if (options && options.visibleInLegend !== false) {\n var pointVisible = options.visible !== false;\n var labelTemplate = pointVisible ? getTemplate(labelsOptions) :\n getTemplate(inactiveItemsLabels) || getTemplate(labelsOptions);\n var text = options.category;\n\n if (labelTemplate) {\n text = labelTemplate({\n text: text,\n series: options.series,\n dataItem: options.dataItem,\n percentage: options.percentage,\n value: value\n });\n }\n\n var itemLabelOptions, markerColor;\n if (pointVisible) {\n itemLabelOptions = {};\n markerColor = point.color;\n } else {\n itemLabelOptions = {\n color: inactiveItemsLabels.color,\n font: inactiveItemsLabels.font\n };\n markerColor = (inactiveItems.markers || {}).color;\n }\n\n if (hasValue(text) && text !== \"\") {\n this.legendItems.push({\n active: pointVisible,\n pointIndex: options.index,\n text: text,\n series: options.series,\n markerColor: markerColor,\n labels: itemLabelOptions\n });\n }\n }\n }\n};\n\nexport default PieChartMixin;","import { drawing as draw, geometry } from '@progress/kendo-drawing';\n\nimport PieSegment from './pie-segment';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport { ChartElement, Ring, Box, Point } from '../../core';\n\nimport { OUTSIDE_END, FADEIN, COLUMN } from '../constants';\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CIRCLE, RIGHT, CENTER } from '../../common/constants';\nimport { deepExtend, defined, find, isFunction, last, round, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar PIE_SECTOR_ANIM_DELAY = 70;\n\nvar PieChart = (function (ChartElement) {\n function PieChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this.points = [];\n this.legendItems = [];\n this.render();\n }\n\n if ( ChartElement ) PieChart.__proto__ = ChartElement;\n PieChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n PieChart.prototype.constructor = PieChart;\n\n PieChart.prototype.render = function render () {\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n PieChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n var colorsCount = seriesColors.length;\n var series = options.series;\n var seriesCount = series.length;\n\n for (var seriesIx = 0; seriesIx < seriesCount; seriesIx++) {\n var currentSeries = series[seriesIx];\n var data = currentSeries.data;\n var ref$1 = bindSegments(currentSeries);\n var total = ref$1.total;\n var points = ref$1.points;\n var count = ref$1.count;\n var anglePerValue = 360 / total;\n var constantAngle = (void 0);\n if (!isFinite(anglePerValue)) {\n constantAngle = 360 / count;\n }\n var currentAngle = (void 0);\n\n if (defined(currentSeries.startAngle)) {\n currentAngle = currentSeries.startAngle;\n } else {\n currentAngle = options.startAngle;\n }\n\n if (seriesIx !== seriesCount - 1) {\n if (currentSeries.labels.position === OUTSIDE_END) {\n currentSeries.labels.position = CENTER;\n }\n }\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n var value = pointData.value;\n var visible = pointData.visible;\n var angle = value !== 0 ? (constantAngle || (value * anglePerValue)) : 0;\n var explode = data.length !== 1 && Boolean(fields.explode);\n\n if (!isFunction(currentSeries.color)) {\n currentSeries.color = fields.color || seriesColors[i % colorsCount];\n }\n\n callback(value, new Ring(null, 0, 0, currentAngle, angle), {\n owner: this$1,\n category: defined(fields.category) ? fields.category : \"\",\n index: i,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: data[i],\n percentage: total !== 0 ? value / total : 0,\n explode: explode,\n visibleInLegend: fields.visibleInLegend,\n visible: visible,\n zIndex: seriesCount - seriesIx,\n animationDelay: this$1.animationDelay(i, seriesIx, seriesCount)\n });\n\n if (visible !== false) {\n currentAngle += angle;\n }\n }\n }\n };\n\n PieChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n category: fields.category,\n percentage: fields.percentage\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"visual\", \"toggle\" ] });\n };\n\n PieChart.prototype.addValue = function addValue (value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new PieSegment(value, sector, segmentOptions);\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n };\n\n PieChart.prototype.reflow = function reflow (targetBox) {\n var ref = this;\n var options = ref.options;\n var points = ref.points;\n var seriesConfigs = ref.seriesConfigs; if ( seriesConfigs === void 0 ) seriesConfigs = [];\n var count = points.length;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var newBox = new Box(box.x1, box.y1, box.x1 + minWidth, box.y1 + minWidth);\n var newBoxCenter = newBox.center();\n var boxCenter = box.center();\n var seriesCount = options.series.length;\n var leftSideLabels = [];\n var rightSideLabels = [];\n var padding = valueOrDefault(options.padding, defaultPadding);\n\n this.targetBox = targetBox;\n\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n newBox.translate(boxCenter.x - newBoxCenter.x, boxCenter.y - newBoxCenter.y);\n\n var radius = halfMinWidth - padding;\n var center = new Point(\n radius + newBox.x1 + padding,\n radius + newBox.y1 + padding\n );\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var seriesIndex = segment.seriesIx;\n sector.radius = radius;\n sector.center = center;\n\n if (seriesConfigs.length) {\n var seriesConfig = seriesConfigs[seriesIndex];\n sector.innerRadius = seriesConfig.innerRadius;\n sector.radius = seriesConfig.radius;\n }\n\n if (seriesIndex === seriesCount - 1 && segment.explode) {\n sector.center = sector.clone().setRadius(sector.radius * 0.15).point(sector.middle());\n }\n\n segment.reflow(newBox);\n\n var label = segment.label;\n if (label) {\n if (label.options.position === OUTSIDE_END) {\n if (seriesIndex === seriesCount - 1) {\n if (label.orientation === RIGHT) {\n rightSideLabels.push(label);\n } else {\n leftSideLabels.push(label);\n }\n }\n }\n }\n }\n\n if (leftSideLabels.length > 0) {\n leftSideLabels.sort(this.labelComparator(true));\n this.leftLabelsReflow(leftSideLabels);\n }\n\n if (rightSideLabels.length > 0) {\n rightSideLabels.sort(this.labelComparator(false));\n this.rightLabelsReflow(rightSideLabels);\n }\n\n this.box = newBox;\n };\n\n PieChart.prototype.leftLabelsReflow = function leftLabelsReflow (labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n };\n\n PieChart.prototype.rightLabelsReflow = function rightLabelsReflow (labels) {\n var distances = this.distanceBetweenLabels(labels);\n\n this.distributeLabels(distances, labels);\n };\n\n PieChart.prototype.distanceBetweenLabels = function distanceBetweenLabels (labels) {\n var segment = last(this.points);\n var sector = segment.sector;\n var count = labels.length - 1;\n var lr = sector.radius + segment.options.labels.distance;\n var distances = [];\n var firstBox = labels[0].box;\n var distance = round(firstBox.y1 - (sector.center.y - lr - firstBox.height() - firstBox.height() / 2));\n\n distances.push(distance);\n\n for (var i = 0; i < count; i++) {\n var secondBox = labels[i + 1].box;\n\n firstBox = labels[i].box;\n distance = round(secondBox.y1 - firstBox.y2);\n distances.push(distance);\n }\n distance = round(sector.center.y + lr - labels[count].box.y2 - labels[count].box.height() / 2);\n distances.push(distance);\n\n return distances;\n };\n\n PieChart.prototype.distributeLabels = function distributeLabels (distances, labels) {\n var this$1 = this;\n\n var count = distances.length;\n var left, right, remaining;\n\n for (var i = 0; i < count; i++) {\n remaining = -distances[i];\n left = right = i;\n\n while (remaining > 0 && (left >= 0 || right < count)) {\n remaining = this$1._takeDistance(distances, i, --left, remaining);\n remaining = this$1._takeDistance(distances, i, ++right, remaining);\n }\n }\n\n this.reflowLabels(distances, labels);\n };\n\n PieChart.prototype._takeDistance = function _takeDistance (distances, anchor, position, amount) {\n var result = amount;\n if (distances[position] > 0) {\n var available = Math.min(distances[position], result);\n result -= available;\n distances[position] -= available;\n distances[anchor] += available;\n }\n\n return result;\n };\n\n PieChart.prototype.reflowLabels = function reflowLabels (distances, labels) {\n var this$1 = this;\n\n var segment = last(this.points);\n var sector = segment.sector;\n var labelOptions = segment.options.labels;\n var labelsCount = labels.length;\n var labelDistance = labelOptions.distance;\n var boxY = sector.center.y - (sector.radius + labelDistance) - labels[0].box.height();\n var boxX;\n\n distances[0] += 2;\n for (var i = 0; i < labelsCount; i++) {\n var label = labels[i];\n var box = label.box;\n\n boxY += distances[i];\n boxX = this$1.hAlignLabel(\n box.x2,\n sector.clone().expand(labelDistance),\n boxY,\n boxY + box.height(),\n label.orientation === RIGHT);\n\n if (label.orientation === RIGHT) {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.radius + sector.center.x + labelDistance;\n }\n label.reflow(new Box(boxX + box.width(), boxY, boxX, boxY));\n } else {\n if (labelOptions.align !== CIRCLE) {\n boxX = sector.center.x - sector.radius - labelDistance;\n }\n label.reflow(new Box(boxX - box.width(), boxY, boxX, boxY));\n }\n\n boxY += box.height();\n }\n };\n\n PieChart.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var ref = this;\n var connectors = ref.options.connectors;\n var points = ref.points;\n var count = points.length;\n var space = 4;\n\n ChartElement.prototype.createVisual.call(this);\n\n this._connectorLines = [];\n\n for (var i = 0; i < count; i++) {\n var segment = points[i];\n var sector = segment.sector;\n var label = segment.label;\n var angle = sector.middle();\n var connectorsColor = (segment.options.connectors || {}).color || connectors.color;\n\n if (label) {\n var connectorLine = new draw.Path({\n stroke: {\n color: connectorsColor,\n width: connectors.width\n },\n animation: {\n type: FADEIN,\n delay: segment.animationDelay\n }\n });\n\n if (label.options.position === OUTSIDE_END) {\n var box = label.box;\n var centerPoint = sector.center;\n var start = sector.point(angle);\n var middle = new Point(box.x1, box.center().y);\n var sr = (void 0), end = (void 0), crossing = (void 0);\n\n start = sector.clone().expand(connectors.padding).point(angle);\n connectorLine.moveTo(start.x, start.y);\n // TODO: Extract into a method to remove duplication\n if (label.orientation === RIGHT) {\n end = new Point(box.x1 - connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x - space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.min(crossing.x, middle.x);\n\n if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x < sector.center.x) {\n sr = sector.center.x + sector.radius + space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr < middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x + space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n } else {\n end = new Point(box.x2 + connectors.padding, box.center().y);\n crossing = intersection(centerPoint, start, middle, end);\n middle = new Point(end.x + space, end.y);\n crossing = crossing || middle;\n crossing.x = Math.max(crossing.x, middle.x);\n\n if (this$1.pointInCircle(crossing, sector.center, sector.radius + space) ||\n crossing.x > sector.center.x) {\n sr = sector.center.x - sector.radius - space;\n if (segment.options.labels.align !== COLUMN) {\n if (sr > middle.x) {\n connectorLine.lineTo(sr, start.y);\n } else {\n connectorLine.lineTo(start.x - space * 2, start.y);\n }\n } else {\n connectorLine.lineTo(sr, start.y);\n }\n connectorLine.lineTo(middle.x, end.y);\n } else {\n crossing.y = end.y;\n connectorLine.lineTo(crossing.x, crossing.y);\n }\n }\n\n connectorLine.lineTo(end.x, end.y);\n\n this$1._connectorLines.push(connectorLine);\n this$1.visual.append(connectorLine);\n }\n }\n }\n };\n\n PieChart.prototype.renderVisual = function renderVisual () {\n ChartElement.prototype.renderVisual.call(this);\n\n if (find(this.options.series, function (options) { return options.autoFit; })) {\n var targetBox = this.targetBox;\n var pieCenter = this.box.center();\n var bbox = this.visual.bbox();\n if (!bbox) {\n return;\n }\n\n var bboxBottom = bbox.bottomRight();\n\n var scale = Math.min(\n (pieCenter.y - targetBox.y1) / (pieCenter.y - bbox.origin.y),\n (targetBox.y2 - pieCenter.y) / (bboxBottom.y - pieCenter.y),\n (pieCenter.x - targetBox.x1) / (pieCenter.x - bbox.origin.x),\n (targetBox.x2 - pieCenter.x) / (bboxBottom.x - pieCenter.x)\n );\n\n if (scale < 1) {\n this.visual.transform(geometry.transform().scale(scale, scale, [ pieCenter.x, pieCenter.y ]));\n }\n }\n };\n\n PieChart.prototype.labelComparator = function labelComparator (reverse) {\n var reverseValue = reverse ? -1 : 1;\n\n return function(a, b) {\n var first = (a.parent.sector.middle() + 270) % 360;\n var second = (b.parent.sector.middle() + 270) % 360;\n return (first - second) * reverseValue;\n };\n };\n\n PieChart.prototype.hAlignLabel = function hAlignLabel (originalX, sector, y1, y2, direction) {\n var radius = sector.radius;\n var sector_center = sector.center;\n var cx = sector_center.x;\n var cy = sector_center.y;\n var t = Math.min(Math.abs(cy - y1), Math.abs(cy - y2));\n\n if (t > radius) {\n return originalX;\n }\n\n return cx + Math.sqrt((radius * radius) - (t * t)) * (direction ? 1 : -1);\n };\n\n PieChart.prototype.pointInCircle = function pointInCircle (point, center, radius) {\n return Math.pow(center.x - point.x, 2) + Math.pow(center.y - point.y, 2) < Math.pow(radius, 2);\n };\n\n PieChart.prototype.formatPointValue = function formatPointValue (point, format) {\n return this.chartService.format.auto(format, point.value);\n };\n\n PieChart.prototype.animationDelay = function animationDelay (categoryIndex) {\n return categoryIndex * PIE_SECTOR_ANIM_DELAY;\n };\n\n PieChart.prototype.stackRoot = function stackRoot () {\n return this;\n };\n\n return PieChart;\n}(ChartElement));\n\nfunction intersection(a1, a2, b1, b2) {\n var uat = (b2.x - b1.x) * (a1.y - b1.y) - (b2.y - b1.y) * (a1.x - b1.x);\n var ub = (b2.y - b1.y) * (a2.x - a1.x) - (b2.x - b1.x) * (a2.y - a1.y);\n\n var result;\n if (ub !== 0) {\n var ua = (uat / ub);\n\n result = new Point(\n a1.x + ua * (a2.x - a1.x),\n a1.y + ua * (a2.y - a1.y)\n );\n }\n\n return result;\n}\n\nsetDefaultOptions(PieChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n },\n inactiveItems: {\n markers: {},\n labels: {}\n }\n});\n\ndeepExtend(PieChart.prototype, PieChartMixin);\n\nPieChart.prototype.isStackRoot = true;\n\nexport default PieChart;\n","import PlotAreaBase from './plotarea-base';\nimport PieChart from '../pie-chart/pie-chart';\n\nimport { append } from '../../common';\n\nvar PiePlotArea = (function (PlotAreaBase) {\n function PiePlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) PiePlotArea.__proto__ = PlotAreaBase;\n PiePlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n PiePlotArea.prototype.constructor = PiePlotArea;\n\n PiePlotArea.prototype.render = function render () {\n this.createPieChart(this.series);\n };\n\n PiePlotArea.prototype.createPieChart = function createPieChart (series) {\n var firstSeries = series[0];\n var pieChart = new PieChart(this, {\n series: series,\n padding: firstSeries.padding,\n startAngle: firstSeries.startAngle,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(pieChart);\n };\n\n PiePlotArea.prototype.appendChart = function appendChart (chart, pane) {\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n append(this.options.legend.items, chart.legendItems);\n };\n\n return PiePlotArea;\n}(PlotAreaBase));\n\nexport default PiePlotArea;","import PieSegment from '../pie-chart/pie-segment';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { PIE } from '../constants';\n\nimport { ShapeBuilder, Box } from '../../core';\n\nimport { CENTER } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar DonutSegment = (function (PieSegment) {\n function DonutSegment () {\n PieSegment.apply(this, arguments);\n }\n\n if ( PieSegment ) DonutSegment.__proto__ = PieSegment;\n DonutSegment.prototype = Object.create( PieSegment && PieSegment.prototype );\n DonutSegment.prototype.constructor = DonutSegment;\n\n DonutSegment.prototype.reflowLabel = function reflowLabel () {\n var ref = this;\n var labelsOptions = ref.options.labels;\n var label = ref.label;\n var sector = this.sector.clone();\n var angle = sector.middle();\n\n if (label) {\n var labelHeight = label.box.height();\n if (labelsOptions.position === CENTER) {\n sector.radius -= (sector.radius - sector.innerRadius) / 2;\n\n var lp = sector.point(angle);\n\n label.reflow(new Box(lp.x, lp.y - labelHeight / 2, lp.x, lp.y));\n } else {\n PieSegment.prototype.reflowLabel.call(this);\n }\n }\n };\n\n DonutSegment.prototype.createSegment = function createSegment (sector, options) {\n return ShapeBuilder.current.createRing(sector, options);\n };\n\n return DonutSegment;\n}(PieSegment));\n\nsetDefaultOptions(DonutSegment, {\n overlay: {\n gradient: \"roundedGlass\"\n },\n labels: {\n position: CENTER\n },\n animation: {\n type: PIE\n }\n});\n\ndeepExtend(DonutSegment.prototype, PointEventsMixin);\n\n\nexport default DonutSegment;\n","import PieChart from '../pie-chart/pie-chart';\nimport DonutSegment from './donut-segment';\n\nimport { INITIAL_ANIMATION_DURATION } from '../constants';\n\nimport { deepExtend, defined, setDefaultOptions, valueOrDefault } from '../../common';\n\nvar DONUT_SECTOR_ANIM_DELAY = 50;\n\nvar DonutChart = (function (PieChart) {\n function DonutChart () {\n PieChart.apply(this, arguments);\n }\n\n if ( PieChart ) DonutChart.__proto__ = PieChart;\n DonutChart.prototype = Object.create( PieChart && PieChart.prototype );\n DonutChart.prototype.constructor = DonutChart;\n\n DonutChart.prototype.addValue = function addValue (value, sector, fields) {\n var segmentOptions = deepExtend({}, fields.series, { index: fields.index });\n this.evalSegmentOptions(segmentOptions, value, fields);\n\n this.createLegendItem(value, segmentOptions, fields);\n\n if (fields.visible === false) {\n return;\n }\n\n var segment = new DonutSegment(value, sector, segmentOptions);\n\n Object.assign(segment, fields);\n this.append(segment);\n this.points.push(segment);\n };\n\n DonutChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var options = this.options;\n var box = targetBox.clone();\n var space = 5;\n var minWidth = Math.min(box.width(), box.height());\n var halfMinWidth = minWidth / 2;\n var defaultPadding = minWidth - minWidth * 0.85;\n var series = options.series;\n var seriesCount = series.length;\n\n var padding = valueOrDefault(options.padding, defaultPadding);\n padding = padding > halfMinWidth - space ? halfMinWidth - space : padding;\n\n var totalSize = halfMinWidth - padding;\n var seriesWithoutSize = 0;\n var holeSize;\n\n for (var i = 0; i < seriesCount; i++) {\n var currentSeries = series[i];\n if (i === 0) {\n if (defined(currentSeries.holeSize)) {\n holeSize = currentSeries.holeSize;\n totalSize -= currentSeries.holeSize;\n }\n }\n\n if (defined(currentSeries.size)) {\n totalSize -= currentSeries.size;\n } else {\n seriesWithoutSize++;\n }\n\n if (defined(currentSeries.margin) && i !== seriesCount - 1) {\n totalSize -= currentSeries.margin;\n }\n }\n\n if (!defined(holeSize)) {\n var currentSize = (halfMinWidth - padding) / (seriesCount + 0.75);\n holeSize = currentSize * 0.75;\n totalSize -= holeSize;\n }\n\n var innerRadius = holeSize;\n var margin = 0;\n var size, radius;\n\n this.seriesConfigs = [];\n\n for (var i$1 = 0; i$1 < seriesCount; i$1++) {\n var currentSeries$1 = series[i$1];\n size = valueOrDefault(currentSeries$1.size, totalSize / seriesWithoutSize);\n innerRadius += margin;\n radius = innerRadius + size;\n this$1.seriesConfigs.push({ innerRadius: innerRadius, radius: radius });\n margin = currentSeries$1.margin || 0;\n innerRadius = radius;\n }\n\n PieChart.prototype.reflow.call(this, targetBox);\n };\n\n DonutChart.prototype.animationDelay = function animationDelay (categoryIndex, seriesIndex, seriesCount) {\n return categoryIndex * DONUT_SECTOR_ANIM_DELAY +\n (INITIAL_ANIMATION_DURATION * (seriesIndex + 1) / (seriesCount + 1));\n };\n\n return DonutChart;\n}(PieChart));\n\n\nsetDefaultOptions(DonutChart, {\n startAngle: 90,\n connectors: {\n width: 2,\n color: \"#939393\",\n padding: 8\n }\n});\n\nexport default DonutChart;\n","import PiePlotArea from './pie-plotarea';\nimport DonutChart from '../donut-chart/donut-chart';\n\nvar DonutPlotArea = (function (PiePlotArea) {\n function DonutPlotArea () {\n PiePlotArea.apply(this, arguments);\n }\n\n if ( PiePlotArea ) DonutPlotArea.__proto__ = PiePlotArea;\n DonutPlotArea.prototype = Object.create( PiePlotArea && PiePlotArea.prototype );\n DonutPlotArea.prototype.constructor = DonutPlotArea;\n\n DonutPlotArea.prototype.render = function render () {\n this.createDonutChart(this.series);\n };\n\n DonutPlotArea.prototype.createDonutChart = function createDonutChart (series) {\n var firstSeries = series[0];\n var donutChart = new DonutChart(this, {\n series: series,\n padding: firstSeries.padding,\n connectors: firstSeries.connectors,\n legend: this.options.legend\n });\n\n this.appendChart(donutChart);\n };\n\n return DonutPlotArea;\n}(PiePlotArea));\n\nexport default DonutPlotArea;","import PlotAreaBase from './plotarea-base';\nimport AxisGroupRangeTracker from '../axis-group-range-tracker';\nimport { RadarLogarithmicAxis, RadarNumericAxis } from '../../core';\n\nimport { LOGARITHMIC } from '../constants';\n\nimport { getSpacing } from '../../common';\nimport { Y, CENTER } from '../../common/constants';\n\nvar DEFAULT_PADDING = 0.15;\n\nvar PolarPlotAreaBase = (function (PlotAreaBase) {\n function PolarPlotAreaBase () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) PolarPlotAreaBase.__proto__ = PlotAreaBase;\n PolarPlotAreaBase.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n PolarPlotAreaBase.prototype.constructor = PolarPlotAreaBase;\n\n PolarPlotAreaBase.prototype.initFields = function initFields () {\n this.valueAxisRangeTracker = new AxisGroupRangeTracker();\n };\n\n PolarPlotAreaBase.prototype.render = function render () {\n this.addToLegend(this.series);\n this.createPolarAxis();\n this.createCharts();\n this.createValueAxis();\n };\n\n PolarPlotAreaBase.prototype.alignAxes = function alignAxes () {\n var axis = this.valueAxis;\n var range = axis.range();\n var crossingValue = axis.options.reverse ? range.max : range.min;\n var slot = axis.getSlot(crossingValue);\n var center = this.polarAxis.getSlot(0).center;\n var axisBox = axis.box.translate(\n center.x - slot.x1,\n center.y - slot.y1\n );\n\n axis.reflow(axisBox);\n };\n\n PolarPlotAreaBase.prototype.createValueAxis = function createValueAxis () {\n var tracker = this.valueAxisRangeTracker;\n var defaultRange = tracker.query();\n var axisOptions = this.valueAxisOptions({\n roundToMajorUnit: false,\n zIndex: -1\n });\n var axisType, axisDefaultRange;\n\n if (axisOptions.type === LOGARITHMIC) {\n axisType = RadarLogarithmicAxis;\n axisDefaultRange = { min: 0.1, max: 1 };\n } else {\n axisType = RadarNumericAxis;\n axisDefaultRange = { min: 0, max: 1 };\n }\n\n var range = tracker.query(name) || defaultRange || axisDefaultRange;\n\n if (range && defaultRange) {\n range.min = Math.min(range.min, defaultRange.min);\n range.max = Math.max(range.max, defaultRange.max);\n }\n\n var valueAxis = new axisType(\n range.min, range.max,\n axisOptions,\n this.chartService\n );\n\n this.valueAxis = valueAxis;\n this.appendAxis(valueAxis);\n };\n\n PolarPlotAreaBase.prototype.reflowAxes = function reflowAxes () {\n var ref = this;\n var options = ref.options.plotArea;\n var valueAxis = ref.valueAxis;\n var polarAxis = ref.polarAxis;\n var box = ref.box;\n var defaultPadding = Math.min(box.width(), box.height()) * DEFAULT_PADDING;\n var padding = getSpacing(options.padding || {}, defaultPadding);\n var paddingBox = box.clone().unpad(padding);\n var axisBox = paddingBox.clone();\n\n axisBox.y2 = axisBox.y1 + Math.min(axisBox.width(), axisBox.height());\n axisBox.align(paddingBox, Y, CENTER);\n\n var valueAxisBox = axisBox.clone().shrink(0, axisBox.height() / 2);\n\n polarAxis.reflow(axisBox);\n valueAxis.reflow(valueAxisBox);\n var heightDiff = valueAxis.lineBox().height() - valueAxis.box.height();\n valueAxis.reflow(valueAxis.box.unpad({ top: heightDiff }));\n\n this.axisBox = axisBox;\n this.alignAxes(axisBox);\n };\n\n PolarPlotAreaBase.prototype.backgroundBox = function backgroundBox () {\n return this.box;\n };\n\n PolarPlotAreaBase.prototype.detachLabels = function detachLabels () {};\n\n return PolarPlotAreaBase;\n}(PlotAreaBase));\n\nexport default PolarPlotAreaBase;\n","import ScatterChart from '../scatter-charts/scatter-chart';\n\nimport { Point, Box } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarScatterChart = (function (ScatterChart) {\n function PolarScatterChart () {\n ScatterChart.apply(this, arguments);\n }\n\n if ( ScatterChart ) PolarScatterChart.__proto__ = ScatterChart;\n PolarScatterChart.prototype = Object.create( ScatterChart && ScatterChart.prototype );\n PolarScatterChart.prototype.constructor = PolarScatterChart;\n\n PolarScatterChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n var valueRadius = slotX.center.y - slotY.y1;\n var slot = Point.onCircle(slotX.center, slotX.startAngle, valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n };\n\n return PolarScatterChart;\n}(ScatterChart));\n\nsetDefaultOptions(PolarScatterChart, {\n clip: false\n});\n\nexport default PolarScatterChart;","import ScatterLineChart from '../scatter-charts/scatter-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar PolarLineChart = (function (ScatterLineChart) {\n function PolarLineChart () {\n ScatterLineChart.apply(this, arguments);\n }if ( ScatterLineChart ) PolarLineChart.__proto__ = ScatterLineChart;\n PolarLineChart.prototype = Object.create( ScatterLineChart && ScatterLineChart.prototype );\n PolarLineChart.prototype.constructor = PolarLineChart;\n\n \n\n return PolarLineChart;\n}(ScatterLineChart));\n\nPolarLineChart.prototype.pointSlot = PolarScatterChart.prototype.pointSlot;\n\nsetDefaultOptions(PolarLineChart, {\n clip: false\n});\n\nexport default PolarLineChart;","import SplineAreaSegment from '../area-chart/spline-area-segment';\nimport { CurveProcessor } from '../../core';\n\nvar SplinePolarAreaSegment = (function (SplineAreaSegment) {\n function SplinePolarAreaSegment () {\n SplineAreaSegment.apply(this, arguments);\n }\n\n if ( SplineAreaSegment ) SplinePolarAreaSegment.__proto__ = SplineAreaSegment;\n SplinePolarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n SplinePolarAreaSegment.prototype.constructor = SplinePolarAreaSegment;\n\n SplinePolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n var center = this._polarAxisCenter();\n fillPath.lineTo(center.x, center.y);\n };\n\n SplinePolarAreaSegment.prototype._polarAxisCenter = function _polarAxisCenter () {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n return center;\n };\n\n SplinePolarAreaSegment.prototype.strokeSegments = function strokeSegments () {\n var segments = this._strokeSegments;\n\n if (!segments) {\n var center = this._polarAxisCenter();\n var curveProcessor = new CurveProcessor(false);\n var linePoints = this.points();\n\n linePoints.push(center);\n segments = this._strokeSegments = curveProcessor.process(linePoints);\n segments.pop();\n }\n\n return segments;\n };\n\n return SplinePolarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplinePolarAreaSegment;","import { geometry as geom } from '@progress/kendo-drawing';\nimport AreaSegment from '../area-chart/area-segment';\n\nvar PolarAreaSegment = (function (AreaSegment) {\n function PolarAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) PolarAreaSegment.__proto__ = AreaSegment;\n PolarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n PolarAreaSegment.prototype.constructor = PolarAreaSegment;\n\n PolarAreaSegment.prototype.fillToAxes = function fillToAxes (fillPath) {\n var polarAxis = this.parent.plotArea.polarAxis;\n var center = polarAxis.box.center();\n var centerSegment = new geom.Segment([ center.x, center.y ]);\n\n fillPath.segments.unshift(centerSegment);\n fillPath.segments.push(centerSegment);\n };\n\n return PolarAreaSegment;\n}(AreaSegment));\n\nexport default PolarAreaSegment;","import PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport SplinePolarAreaSegment from './spline-polar-area-segment';\nimport PolarAreaSegment from './polar-area-segment';\n\nimport { SMOOTH, INTERPOLATE, ZERO, GAP } from '../constants';\n\nimport hasValue from '../utils/has-value';\n\nvar PolarAreaChart = (function (PolarLineChart) {\n function PolarAreaChart () {\n PolarLineChart.apply(this, arguments);\n }\n\n if ( PolarLineChart ) PolarAreaChart.__proto__ = PolarLineChart;\n PolarAreaChart.prototype = Object.create( PolarLineChart && PolarLineChart.prototype );\n PolarAreaChart.prototype.constructor = PolarAreaChart;\n\n PolarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = (currentSeries.line || {}).style;\n var segment;\n\n if (style === SMOOTH) {\n segment = new SplinePolarAreaSegment(linePoints, currentSeries, seriesIx);\n } else {\n segment = new PolarAreaSegment(linePoints, currentSeries, seriesIx);\n }\n return segment;\n };\n\n PolarAreaChart.prototype.createMissingValue = function createMissingValue (value, missingValues) {\n var missingValue;\n\n if (hasValue(value.x) && missingValues !== INTERPOLATE) {\n missingValue = {\n x: value.x,\n y: value.y\n };\n if (missingValues === ZERO) {\n missingValue.y = 0;\n }\n }\n\n return missingValue;\n };\n\n PolarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues || ZERO;\n };\n\n PolarAreaChart.prototype._hasMissingValuesGap = function _hasMissingValuesGap () {\n var this$1 = this;\n\n var series = this.options.series;\n\n for (var idx = 0; idx < series.length; idx++) {\n if (this$1.seriesMissingValues(series[idx]) === GAP) {\n return true;\n }\n }\n };\n\n PolarAreaChart.prototype.sortPoints = function sortPoints (points) {\n var this$1 = this;\n\n points.sort(xComparer);\n\n if (this._hasMissingValuesGap()) {\n for (var idx = 0; idx < points.length; idx++) {\n var point = points[idx];\n if (point) {\n var value = point.value;\n if (!hasValue(value.y) && this$1.seriesMissingValues(point.series) === GAP) {\n delete points[idx];\n }\n }\n }\n }\n\n return points;\n };\n\n return PolarAreaChart;\n}(PolarLineChart));\n\nfunction xComparer(a, b) {\n return a.value.x - b.value.x;\n}\n\nexport default PolarAreaChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport PlotAreaBase from './plotarea-base';\nimport PolarLineChart from '../polar-line-chart/polar-line-chart';\nimport PolarScatterChart from '../polar-scatter-chart/polar-scatter-chart';\nimport PolarAreaChart from '../polar-area-chart/polar-area-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { PolarAxis, Point } from '../../core';\n\nimport { POLAR_AREA, POLAR_LINE, POLAR_SCATTER } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { deepExtend, eventElement, setDefaultOptions } from '../../common';\n\nvar PolarPlotArea = (function (PolarPlotAreaBase) {\n function PolarPlotArea () {\n PolarPlotAreaBase.apply(this, arguments);\n }\n\n if ( PolarPlotAreaBase ) PolarPlotArea.__proto__ = PolarPlotAreaBase;\n PolarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n PolarPlotArea.prototype.constructor = PolarPlotArea;\n\n PolarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n var polarAxis = new PolarAxis(this.options.xAxis, this.chartService);\n\n this.polarAxis = polarAxis;\n this.axisX = polarAxis;\n this.appendAxis(polarAxis);\n };\n\n PolarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n return deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n }, this.options.yAxis);\n };\n\n PolarPlotArea.prototype.createValueAxis = function createValueAxis () {\n PolarPlotAreaBase.prototype.createValueAxis.call(this);\n this.axisY = this.valueAxis;\n };\n\n PolarPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n this.valueAxisRangeTracker.update(chart.yAxisRanges);\n\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n };\n\n PolarPlotArea.prototype.createCharts = function createCharts () {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createLineChart(\n filterSeriesByType(series, [ POLAR_LINE ]),\n pane\n );\n\n this.createScatterChart(\n filterSeriesByType(series, [ POLAR_SCATTER ]),\n pane\n );\n\n this.createAreaChart(\n filterSeriesByType(series, [ POLAR_AREA ]),\n pane\n );\n };\n\n PolarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new PolarLineChart(this, { series: series });\n\n this.appendChart(lineChart, pane);\n };\n\n PolarPlotArea.prototype.createScatterChart = function createScatterChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var scatterChart = new PolarScatterChart(this, { series: series });\n\n this.appendChart(scatterChart, pane);\n };\n\n PolarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new PolarAreaChart(this, { series: series });\n\n this.appendChart(areaChart, pane);\n };\n\n PolarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var xValue = this.axisX.getValue(point);\n var yValue = this.axisY.getValue(point);\n\n if (xValue !== null && yValue !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n x: xValue,\n y: yValue\n });\n }\n };\n\n PolarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n return PolarPlotArea;\n}(PolarPlotAreaBase));\n\nsetDefaultOptions(PolarPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(PolarPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default PolarPlotArea;","import LineChart from '../line-chart/line-chart';\nimport SplineSegment from '../line-chart/spline-segment';\nimport LineSegment from '../line-chart/line-segment';\n\nimport { Point, Box } from '../../core';\n\nimport { SMOOTH, INTERPOLATE } from '../constants';\n\nimport { setDefaultOptions, last } from '../../common';\n\nfunction groupBySeriesIx(segments) {\n var seriesSegments = [];\n for (var idx = 0; idx < segments.length; idx++) {\n var segment = segments[idx];\n seriesSegments[segment.seriesIx] = seriesSegments[segment.seriesIx] || [];\n seriesSegments[segment.seriesIx].push(segment);\n }\n\n return seriesSegments;\n}\n\nvar RadarLineChart = (function (LineChart) {\n function RadarLineChart () {\n LineChart.apply(this, arguments);\n }\n\n if ( LineChart ) RadarLineChart.__proto__ = LineChart;\n RadarLineChart.prototype = Object.create( LineChart && LineChart.prototype );\n RadarLineChart.prototype.constructor = RadarLineChart;\n\n RadarLineChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var valueRadius = categorySlot.center.y - valueSlot.y1;\n var slot = Point.onCircle(categorySlot.center, categorySlot.middle(), valueRadius);\n\n return new Box(slot.x, slot.y, slot.x, slot.y);\n };\n\n RadarLineChart.prototype.renderSegments = function renderSegments () {\n LineChart.prototype.renderSegments.call(this);\n\n if (this._segments && this._segments.length > 1) {\n var seriesSegments = groupBySeriesIx(this._segments);\n\n for (var idx = 0; idx < seriesSegments.length; idx++) {\n var segments = seriesSegments[idx];\n if (segments && segments.length > 1) {\n var firstPoint = segments[0].linePoints[0];\n var lastSegment = last(segments);\n var lastPoint = last(lastSegment.linePoints);\n var isFirstDataPoint = firstPoint.categoryIx === 0;\n var isLastDataPoint = lastPoint.categoryIx === lastPoint.categoriesCount - 1;\n if (isFirstDataPoint && isLastDataPoint) {\n last(segments).linePoints.push(firstPoint);\n }\n }\n }\n }\n };\n\n RadarLineChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx) {\n var style = currentSeries.style;\n var pointType;\n\n if (style === SMOOTH) {\n pointType = SplineSegment;\n } else {\n pointType = LineSegment;\n }\n\n var segment = new pointType(linePoints, currentSeries, seriesIx);\n var missingValues = this.seriesMissingValues(currentSeries);\n\n if (linePoints.length === currentSeries.data.length || missingValues === INTERPOLATE) {\n segment.options.closed = true;\n }\n\n return segment;\n };\n\n return RadarLineChart;\n}(LineChart));\n\nsetDefaultOptions(RadarLineChart, {\n clip: false,\n limitPoints: false\n});\n\nexport default RadarLineChart;\n","import SplineAreaSegment from '../area-chart/spline-area-segment';\n\nvar SplineRadarAreaSegment = (function (SplineAreaSegment) {\n function SplineRadarAreaSegment () {\n SplineAreaSegment.apply(this, arguments);\n }\n\n if ( SplineAreaSegment ) SplineRadarAreaSegment.__proto__ = SplineAreaSegment;\n SplineRadarAreaSegment.prototype = Object.create( SplineAreaSegment && SplineAreaSegment.prototype );\n SplineRadarAreaSegment.prototype.constructor = SplineRadarAreaSegment;\n\n SplineRadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n return SplineRadarAreaSegment;\n}(SplineAreaSegment));\n\nexport default SplineRadarAreaSegment;","import AreaSegment from '../area-chart/area-segment';\n\nvar RadarAreaSegment = (function (AreaSegment) {\n function RadarAreaSegment () {\n AreaSegment.apply(this, arguments);\n }\n\n if ( AreaSegment ) RadarAreaSegment.__proto__ = AreaSegment;\n RadarAreaSegment.prototype = Object.create( AreaSegment && AreaSegment.prototype );\n RadarAreaSegment.prototype.constructor = RadarAreaSegment;\n\n RadarAreaSegment.prototype.fillToAxes = function fillToAxes () {};\n\n return RadarAreaSegment;\n}(AreaSegment));\n\nexport default RadarAreaSegment;","import RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport SplineRadarAreaSegment from './spline-radar-area-segment';\nimport RadarAreaSegment from './radar-area-segment';\n\nimport { SMOOTH, ZERO } from '../constants';\n\nvar RadarAreaChart = (function (RadarLineChart) {\n function RadarAreaChart () {\n RadarLineChart.apply(this, arguments);\n }\n\n if ( RadarLineChart ) RadarAreaChart.__proto__ = RadarLineChart;\n RadarAreaChart.prototype = Object.create( RadarLineChart && RadarLineChart.prototype );\n RadarAreaChart.prototype.constructor = RadarAreaChart;\n\n RadarAreaChart.prototype.createSegment = function createSegment (linePoints, currentSeries, seriesIx, prevSegment) {\n var isStacked = this.options.isStacked;\n var style = (currentSeries.line || {}).style;\n var previousSegment;\n var stackPoints;\n var segment;\n\n if (isStacked && seriesIx > 0 && prevSegment) {\n stackPoints = prevSegment.linePoints.slice(0);\n previousSegment = prevSegment;\n }\n\n if (style === SMOOTH) {\n segment = new SplineRadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n segment.options.closed = true;\n } else {\n linePoints.push(linePoints[0]);\n segment = new RadarAreaSegment(linePoints, currentSeries, seriesIx, previousSegment, stackPoints);\n }\n\n return segment;\n };\n\n RadarAreaChart.prototype.seriesMissingValues = function seriesMissingValues (series) {\n return series.missingValues || ZERO;\n };\n\n return RadarAreaChart;\n}(RadarLineChart));\n\nexport default RadarAreaChart;","import DonutSegment from '../donut-chart/donut-segment';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarSegment = (function (DonutSegment) {\n function RadarSegment(value, options) {\n DonutSegment.call(this, value, null, options);\n }\n\n if ( DonutSegment ) RadarSegment.__proto__ = DonutSegment;\n RadarSegment.prototype = Object.create( DonutSegment && DonutSegment.prototype );\n RadarSegment.prototype.constructor = RadarSegment;\n\n return RadarSegment;\n}(DonutSegment));\n\nsetDefaultOptions(RadarSegment, {\n overlay: {\n gradient: \"none\"\n },\n labels: {\n distance: 10\n }\n});\n\nexport default RadarSegment;","import { ChartElement } from '../../core';\n\nimport { setDefaultOptions } from '../../common';\n\nimport { forEach, forEachReverse } from './utils';\n\nvar RadarClusterLayout = (function (ChartElement) {\n function RadarClusterLayout(options) {\n ChartElement.call(this, options);\n\n this.forEach = options.rtl ? forEachReverse : forEach;\n }\n\n if ( ChartElement ) RadarClusterLayout.__proto__ = ChartElement;\n RadarClusterLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n RadarClusterLayout.prototype.constructor = RadarClusterLayout;\n\n RadarClusterLayout.prototype.reflow = function reflow (sector) {\n var ref = this;\n var options = ref.options;\n var children = ref.children;\n var gap = options.gap;\n var spacing = options.spacing;\n var count = children.length;\n var slots = count + gap + (spacing * (count - 1));\n var slotAngle = sector.angle / slots;\n var angle = sector.startAngle + slotAngle * (gap / 2);\n\n this.forEach(children, function (child) {\n var slotSector = sector.clone();\n slotSector.startAngle = angle;\n slotSector.angle = slotAngle;\n\n if (child.sector) {\n slotSector.radius = child.sector.radius;\n }\n\n child.reflow(slotSector);\n child.sector = slotSector;\n\n angle += slotAngle + (slotAngle * spacing);\n });\n };\n\n return RadarClusterLayout;\n}(ChartElement));\n\nsetDefaultOptions(RadarClusterLayout, {\n gap: 1,\n spacing: 0\n});\n\nexport default RadarClusterLayout;","import { ChartElement, Box } from '../../core';\n\nvar RadarStackLayout = (function (ChartElement) {\n function RadarStackLayout () {\n ChartElement.apply(this, arguments);\n }\n\n if ( ChartElement ) RadarStackLayout.__proto__ = ChartElement;\n RadarStackLayout.prototype = Object.create( ChartElement && ChartElement.prototype );\n RadarStackLayout.prototype.constructor = RadarStackLayout;\n\n RadarStackLayout.prototype.reflow = function reflow (sector) {\n var ref = this;\n var reverse = ref.options.reverse;\n var children = ref.children;\n var childrenCount = children.length;\n var first = reverse ? childrenCount - 1 : 0;\n var step = reverse ? -1 : 1;\n\n this.box = new Box();\n\n for (var i = first; i >= 0 && i < childrenCount; i += step) {\n var childSector = children[i].sector;\n childSector.startAngle = sector.startAngle;\n childSector.angle = sector.angle;\n }\n };\n\n return RadarStackLayout;\n}(ChartElement));\n\nexport default RadarStackLayout;","import BarChart from '../bar-chart/bar-chart';\nimport RadarSegment from './radar-segment';\nimport RadarClusterLayout from '../layout/radar-cluster-layout';\nimport RadarStackLayout from '../layout/radar-stack-layout';\nimport CategoricalChart from '../categorical-chart';\n\nimport { setDefaultOptions } from '../../common';\n\nvar RadarBarChart = (function (BarChart) {\n function RadarBarChart () {\n BarChart.apply(this, arguments);\n }\n\n if ( BarChart ) RadarBarChart.__proto__ = BarChart;\n RadarBarChart.prototype = Object.create( BarChart && BarChart.prototype );\n RadarBarChart.prototype.constructor = RadarBarChart;\n\n RadarBarChart.prototype.pointType = function pointType () {\n return RadarSegment;\n };\n\n RadarBarChart.prototype.clusterType = function clusterType () {\n return RadarClusterLayout;\n };\n\n RadarBarChart.prototype.stackType = function stackType () {\n return RadarStackLayout;\n };\n\n RadarBarChart.prototype.categorySlot = function categorySlot (categoryAxis, categoryIx) {\n return categoryAxis.getSlot(categoryIx);\n };\n\n RadarBarChart.prototype.pointSlot = function pointSlot (categorySlot, valueSlot) {\n var slot = categorySlot.clone();\n var y = categorySlot.center.y;\n\n slot.radius = y - valueSlot.y1;\n slot.innerRadius = y - valueSlot.y2;\n\n return slot;\n };\n\n RadarBarChart.prototype.reflowPoint = function reflowPoint (point, pointSlot) {\n point.sector = pointSlot;\n point.reflow();\n };\n\n RadarBarChart.prototype.createAnimation = function createAnimation () {\n this.options.animation.center = this.box.toRect().center();\n BarChart.prototype.createAnimation.call(this);\n };\n\n return RadarBarChart;\n}(BarChart));\n\nRadarBarChart.prototype.reflow = CategoricalChart.prototype.reflow;\n\nsetDefaultOptions(RadarBarChart, {\n clip: false,\n limitPoints: false,\n animation: {\n type: \"pie\"\n }\n});\n\nexport default RadarBarChart;","import PolarPlotAreaBase from './polar-plotarea-base';\nimport CategoricalPlotArea from './categorical-plotarea';\nimport RadarAreaChart from '../radar-area-chart/radar-area-chart';\nimport RadarLineChart from '../radar-line-chart/radar-line-chart';\nimport RadarBarChart from '../radar-bar-chart/radar-bar-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\n\nimport { RadarCategoryAxis, Point } from '../../core';\n\nimport { RADAR_AREA, RADAR_LINE, RADAR_COLUMN } from '../constants';\n\nimport filterSeriesByType from '../utils/filter-series-by-type';\n\nimport { ARC } from '../../common/constants';\nimport { eventElement, deepExtend, setDefaultOptions } from '../../common';\n\nvar RadarPlotArea = (function (PolarPlotAreaBase) {\n function RadarPlotArea () {\n PolarPlotAreaBase.apply(this, arguments);\n }\n\n if ( PolarPlotAreaBase ) RadarPlotArea.__proto__ = PolarPlotAreaBase;\n RadarPlotArea.prototype = Object.create( PolarPlotAreaBase && PolarPlotAreaBase.prototype );\n RadarPlotArea.prototype.constructor = RadarPlotArea;\n\n RadarPlotArea.prototype.createPolarAxis = function createPolarAxis () {\n var categoryAxis = new RadarCategoryAxis(this.options.categoryAxis, this.chartService);\n\n this.polarAxis = categoryAxis;\n this.categoryAxis = categoryAxis;\n this.appendAxis(categoryAxis);\n this.aggregateCategories();\n this.createCategoryAxesLabels();\n };\n\n RadarPlotArea.prototype.valueAxisOptions = function valueAxisOptions (defaults) {\n if (this._hasBarCharts) {\n deepExtend(defaults, {\n majorGridLines: { type: ARC },\n minorGridLines: { type: ARC }\n });\n }\n\n if (this._isStacked100) {\n deepExtend(defaults, {\n roundToMajorUnit: false,\n labels: { format: \"P0\" }\n });\n }\n\n return deepExtend(defaults, this.options.valueAxis);\n };\n\n RadarPlotArea.prototype.aggregateCategories = function aggregateCategories () {\n // No separate panes in radar charts\n CategoricalPlotArea.prototype.aggregateCategories.call(this, this.panes);\n };\n\n RadarPlotArea.prototype.createCategoryAxesLabels = function createCategoryAxesLabels () {\n CategoricalPlotArea.prototype.createCategoryAxesLabels.call(this, this.panes);\n };\n\n RadarPlotArea.prototype.filterSeries = function filterSeries (currentSeries) {\n // Not supported for radar charts\n return currentSeries;\n };\n\n RadarPlotArea.prototype.createCharts = function createCharts () {\n var series = this.filterVisibleSeries(this.series);\n var pane = this.panes[0];\n\n this.createAreaChart(\n filterSeriesByType(series, [ RADAR_AREA ]),\n pane\n );\n\n this.createLineChart(\n filterSeriesByType(series, [ RADAR_LINE ]),\n pane\n );\n\n this.createBarChart(\n filterSeriesByType(series, [ RADAR_COLUMN ]),\n pane\n );\n };\n\n RadarPlotArea.prototype.chartOptions = function chartOptions (series) {\n var options = { series: series };\n var firstSeries = series[0];\n if (firstSeries) {\n var filteredSeries = this.filterVisibleSeries(series);\n var stack = firstSeries.stack;\n options.isStacked = stack && filteredSeries.length > 1;\n options.isStacked100 = stack && stack.type === \"100%\" && filteredSeries.length > 1;\n\n if (options.isStacked100) {\n this._isStacked100 = true;\n }\n }\n\n return options;\n };\n\n RadarPlotArea.prototype.createAreaChart = function createAreaChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var areaChart = new RadarAreaChart(this, this.chartOptions(series));\n this.appendChart(areaChart, pane);\n };\n\n RadarPlotArea.prototype.createLineChart = function createLineChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var lineChart = new RadarLineChart(this, this.chartOptions(series));\n this.appendChart(lineChart, pane);\n };\n\n RadarPlotArea.prototype.createBarChart = function createBarChart (series, pane) {\n if (series.length === 0) {\n return;\n }\n\n var firstSeries = series[0];\n var options = this.chartOptions(series);\n options.gap = firstSeries.gap;\n options.spacing = firstSeries.spacing;\n\n var barChart = new RadarBarChart(this, options);\n this.appendChart(barChart, pane);\n\n this._hasBarCharts = true;\n };\n\n RadarPlotArea.prototype.seriesCategoryAxis = function seriesCategoryAxis () {\n return this.categoryAxis;\n };\n\n RadarPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var category = this.categoryAxis.getCategory(point);\n var value = this.valueAxis.getValue(point);\n\n if (category !== null && value !== null) {\n chart.trigger(eventType, {\n element: eventElement(e),\n category: category,\n value: value\n });\n }\n };\n\n RadarPlotArea.prototype.createCrosshairs = function createCrosshairs () {};\n\n return RadarPlotArea;\n}(PolarPlotAreaBase));\n\ndeepExtend(RadarPlotArea.prototype, PlotAreaEventsMixin, {\n appendChart: CategoricalPlotArea.prototype.appendChart,\n aggregateSeries: CategoricalPlotArea.prototype.aggregateSeries,\n seriesSourcePoints: CategoricalPlotArea.prototype.seriesSourcePoints\n});\n\nsetDefaultOptions(RadarPlotArea, {\n categoryAxis: {\n categories: []\n },\n valueAxis: {}\n});\n\nexport default RadarPlotArea;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { ChartElement, Box, Point } from '../../core';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nimport { WHITE } from '../../common/constants';\nimport { deepExtend, setDefaultOptions } from '../../common';\n\nvar FunnelSegment = (function (ChartElement) {\n function FunnelSegment(value, options, segmentOptions) {\n ChartElement.call(this, options);\n\n this.value = value;\n this.options.index = segmentOptions.index;\n }\n\n if ( ChartElement ) FunnelSegment.__proto__ = ChartElement;\n FunnelSegment.prototype = Object.create( ChartElement && ChartElement.prototype );\n FunnelSegment.prototype.constructor = FunnelSegment;\n\n FunnelSegment.prototype.reflow = function reflow (chartBox) {\n var points = this.points;\n var label = this.children[0];\n\n this.box = new Box(points[0].x, points[0].y, points[1].x, points[2].y);\n\n if (label) {\n label.reflow(new Box(chartBox.x1, points[0].y, chartBox.x2, points[2].y));\n }\n };\n\n FunnelSegment.prototype.createVisual = function createVisual () {\n var this$1 = this;\n\n var options = this.options;\n var visual;\n\n ChartElement.prototype.createVisual.call(this);\n\n if (options.visual) {\n visual = options.visual({\n category: this.category,\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n percentage: this.percentage,\n points: this.points,\n options: options,\n sender: this.getSender(),\n createVisual: function () { return this$1.createPath(); }\n });\n } else {\n visual = this.createPath();\n }\n\n if (visual) {\n this.visual.append(visual);\n }\n };\n\n FunnelSegment.prototype.createPath = function createPath () {\n var options = this.options;\n var border = options.border;\n var path = draw.Path.fromPoints(this.points, {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: {\n color: border.color,\n opacity: border.opacity,\n width: border.width\n }\n }).close();\n\n return path;\n };\n\n FunnelSegment.prototype.createHighlight = function createHighlight (style) {\n return draw.Path.fromPoints(this.points, style);\n };\n\n FunnelSegment.prototype.highlightVisual = function highlightVisual () {\n return this.visual.children[0];\n };\n\n FunnelSegment.prototype.highlightVisualArgs = function highlightVisualArgs () {\n var path = draw.Path.fromPoints(this.points).close();\n\n return {\n options: this.options,\n path: path\n };\n };\n\n FunnelSegment.prototype.tooltipAnchor = function tooltipAnchor () {\n var box = this.box;\n return {\n point: new Point(box.center().x, box.y1),\n align: {\n horizontal: \"center\",\n vertical: \"top\"\n }\n };\n };\n\n FunnelSegment.prototype.formatValue = function formatValue (format) {\n var point = this;\n return point.owner.formatPointValue(point, format);\n };\n\n return FunnelSegment;\n}(ChartElement));\n\nsetDefaultOptions(FunnelSegment, {\n color: WHITE,\n border: {\n width: 1\n }\n});\n\ndeepExtend(FunnelSegment.prototype, PointEventsMixin);\n\nexport default FunnelSegment;","import { geometry as geom } from '@progress/kendo-drawing';\n\nimport { ChartElement, TextBox } from '../../core';\nimport PieChartMixin from '../mixins/pie-chart-mixin';\nimport FunnelSegment from './funnel-segment';\n\nimport { bindSegments, evalOptions } from '../utils';\n\nimport { CENTER, LEFT } from '../../common/constants';\nimport { autoTextColor, deepExtend, isFunction, getTemplate, limitValue, setDefaultOptions } from '../../common';\n\nvar FunnelChart = (function (ChartElement) {\n function FunnelChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.points = [];\n this.labels = [];\n this.legendItems = [];\n this.render();\n }\n\n if ( ChartElement ) FunnelChart.__proto__ = ChartElement;\n FunnelChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n FunnelChart.prototype.constructor = FunnelChart;\n\n FunnelChart.prototype.formatPointValue = function formatPointValue (point, format) {\n return this.chartService.format.auto(format,point.value);\n };\n\n FunnelChart.prototype.render = function render () {\n var this$1 = this;\n\n var ref = this;\n var options = ref.options;\n var seriesColors = ref.plotArea.options.seriesColors; if ( seriesColors === void 0 ) seriesColors = [];\n var series = options.series[0];\n var data = series.data;\n\n if (!data) {\n return;\n }\n\n var ref$1 = bindSegments(series);\n var total = ref$1.total;\n var points = ref$1.points;\n\n for (var i = 0; i < points.length; i++) {\n var pointData = points[i];\n\n if (!pointData) {\n continue;\n }\n\n var fields = pointData.fields;\n\n if (!isFunction(series.color)) {\n series.color = fields.color || seriesColors[i % seriesColors.length];\n }\n\n fields = deepExtend({\n index: i,\n owner: this$1,\n series: series,\n dataItem: data[i],\n percentage: pointData.value / total\n }, fields, { visible: pointData.visible });\n\n var value = pointData.valueFields.value;\n var segment = this$1.createSegment(value, fields);\n var label = this$1.createLabel(value, fields);\n\n if (segment && label) {\n segment.append(label);\n }\n }\n };\n\n FunnelChart.prototype.evalSegmentOptions = function evalSegmentOptions (options, value, fields) {\n var series = fields.series;\n\n evalOptions(options, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n index: fields.index\n }, { defaults: series._defaults, excluded: [ \"data\", \"content\", \"template\", \"toggle\", \"visual\" ] });\n };\n\n FunnelChart.prototype.createSegment = function createSegment (value, fields) {\n var seriesOptions = deepExtend({}, fields.series);\n this.evalSegmentOptions(seriesOptions, value, fields);\n\n this.createLegendItem(value, seriesOptions, fields);\n\n if (fields.visible !== false) {\n\n var segment = new FunnelSegment(value, seriesOptions, fields);\n Object.assign(segment, fields);\n\n this.append(segment);\n this.points.push(segment);\n\n return segment;\n }\n };\n\n FunnelChart.prototype.createLabel = function createLabel (value, fields) {\n var series = fields.series;\n var dataItem = fields.dataItem;\n var labels = deepExtend({}, this.options.labels, series.labels);\n var text = value;\n\n if (labels.visible) {\n var labelTemplate = getTemplate(labels);\n var data = {\n dataItem: dataItem,\n value: value,\n percentage: fields.percentage,\n category: fields.category,\n series: series\n };\n if (labelTemplate) {\n text = labelTemplate(data);\n } else if (labels.format) {\n text = this.plotArea.chartService.format.auto(labels.format, text);\n }\n\n if (!labels.color) {\n labels.color = autoTextColor(series.color);\n if (!labels.background) {\n labels.background = series.color;\n }\n }\n\n this.evalSegmentOptions(labels, value, fields);\n var textBox = new TextBox(text, deepExtend({\n vAlign: labels.position\n }, labels), data);\n\n this.labels.push(textBox);\n\n return textBox;\n }\n };\n\n FunnelChart.prototype.labelPadding = function labelPadding () {\n var labels = this.labels;\n var padding = { left: 0, right: 0 };\n\n for (var i = 0; i < labels.length; i++) {\n var label = labels[i];\n var align = label.options.align;\n if (align !== CENTER) {\n var width = labels[i].box.width();\n\n if (align === LEFT) {\n padding.left = Math.max(padding.left, width);\n } else {\n padding.right = Math.max(padding.right, width);\n }\n }\n }\n\n return padding;\n };\n\n FunnelChart.prototype.dynamicSlopeReflow = function dynamicSlopeReflow (box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var firstSegment = segments[0];\n var maxSegment = firstSegment;\n\n for (var idx = 0; idx < segments.length; idx++) {\n if (segments[idx].percentage > maxSegment.percentage) {\n maxSegment = segments[idx];\n }\n }\n\n var lastUpperSide = (firstSegment.percentage / maxSegment.percentage) * width;\n var previousOffset = (width - lastUpperSide) / 2;\n var previousHeight = 0;\n\n for (var idx$1 = 0; idx$1 < count; idx$1++) {\n var percentage = segments[idx$1].percentage;\n var nextSegment = segments[idx$1 + 1];\n var nextPercentage = (nextSegment ? nextSegment.percentage : percentage);\n var points = segments[idx$1].points = [];\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n var offset = (void 0);\n\n if (!percentage) {\n offset = nextPercentage ? 0 : width / 2;\n } else {\n offset = (width - lastUpperSide * (nextPercentage / percentage)) / 2;\n }\n\n offset = limitValue(offset, 0, width);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + offset, box.y1 + height + previousHeight));\n\n previousOffset = offset;\n previousHeight += height + options.segmentSpacing;\n lastUpperSide = limitValue(width - 2 * offset, 0, width);\n }\n };\n\n FunnelChart.prototype.constantSlopeReflow = function constantSlopeReflow (box, width, totalHeight) {\n var ref = this;\n var options = ref.options;\n var segments = ref.points;\n var count = segments.length;\n var decreasingWidth = options.neckRatio <= 1;\n var neckRatio = decreasingWidth ? options.neckRatio * width : width;\n var previousOffset = decreasingWidth ? 0 : (width - width / options.neckRatio) / 2;\n var topMostWidth = decreasingWidth ? width : width - previousOffset * 2;\n var finalNarrow = (topMostWidth - neckRatio) / 2;\n var previousHeight = 0;\n\n for (var idx = 0; idx < count; idx++) {\n var points = segments[idx].points = [];\n var percentage = segments[idx].percentage;\n var offset = (options.dynamicHeight) ? (finalNarrow * percentage) : (finalNarrow / count);\n var height = (options.dynamicHeight) ? (totalHeight * percentage) : (totalHeight / count);\n\n points.push(new geom.Point(box.x1 + previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset, box.y1 + previousHeight));\n points.push(new geom.Point(box.x1 + width - previousOffset - offset, box.y1 + height + previousHeight));\n points.push(new geom.Point(box.x1 + previousOffset + offset,box.y1 + height + previousHeight));\n previousOffset += offset;\n previousHeight += height + options.segmentSpacing;\n }\n };\n\n FunnelChart.prototype.reflow = function reflow (chartBox) {\n var points = this.points;\n var count = points.length;\n\n if (!count) {\n return;\n }\n\n var options = this.options;\n var box = chartBox.clone().unpad(this.labelPadding());\n var totalHeight = box.height() - options.segmentSpacing * (count - 1);\n var width = box.width();\n\n if (options.dynamicSlope) {\n this.dynamicSlopeReflow(box, width, totalHeight);\n } else {\n this.constantSlopeReflow(box, width, totalHeight);\n }\n\n for (var idx = 0; idx < count; idx++) {\n points[idx].reflow(chartBox);\n }\n };\n\n return FunnelChart;\n}(ChartElement));\n\nsetDefaultOptions(FunnelChart, {\n neckRatio: 0.3,\n width: 300,\n dynamicSlope: false,\n dynamicHeight: true,\n segmentSpacing: 0,\n labels: {\n visible: false,\n align: CENTER,\n position: CENTER,\n zIndex: 1\n }\n});\n\ndeepExtend(FunnelChart.prototype, PieChartMixin);\n\nexport default FunnelChart;\n","import PlotAreaBase from './plotarea-base';\nimport FunnelChart from '../funnel-chart/funnel-chart';\n\nimport { append } from '../../common';\n\nvar FunnelPlotArea = (function (PlotAreaBase) {\n function FunnelPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) FunnelPlotArea.__proto__ = PlotAreaBase;\n FunnelPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n FunnelPlotArea.prototype.constructor = FunnelPlotArea;\n\n FunnelPlotArea.prototype.render = function render () {\n this.createFunnelChart(this.series);\n };\n\n FunnelPlotArea.prototype.createFunnelChart = function createFunnelChart (series) {\n var firstSeries = series[0];\n var funnelChart = new FunnelChart(this, {\n series: series,\n legend: this.options.legend,\n neckRatio: firstSeries.neckRatio,\n dynamicHeight: firstSeries.dynamicHeight,\n dynamicSlope: firstSeries.dynamicSlope,\n segmentSpacing: firstSeries.segmentSpacing,\n highlight: firstSeries.highlight\n });\n\n this.appendChart(funnelChart);\n };\n\n FunnelPlotArea.prototype.appendChart = function appendChart (chart, pane) {\n PlotAreaBase.prototype.appendChart.call(this, chart, pane);\n append(this.options.legend.items, chart.legendItems);\n };\n\n return FunnelPlotArea;\n}(PlotAreaBase));\n\nexport default FunnelPlotArea;","import { parseColor } from '@progress/kendo-drawing';\n\n// Linear color scale from the given color to white minus minimum lightness offset.\nvar colorScale = function (color, minLightnessOffset) {\n if ( minLightnessOffset === void 0 ) minLightnessOffset = 0.05;\n\n var baseColor = parseColor(color);\n var offset = 1 - minLightnessOffset;\n\n return function (value) {\n var hsl = baseColor.toHSL();\n var range = 100 - hsl.l;\n var point = offset - value;\n hsl.l += Math.min(point * range, range);\n\n return hsl.toCss();\n };\n};\n\nexport default colorScale;\n","import { autoTextColor, deepExtend, getTemplate, valueOrDefault } from '../../common';\nimport { CENTER, ROUNDED_RECT, BOTTOM, WHITE } from '../../common/constants';\nimport { ChartElement, Point, rectToBox, ShapeElement, TextBox } from '../../core';\nimport { TOOLTIP_OFFSET } from '../constants';\nimport NoteMixin from '../mixins/note-mixin';\nimport PointEventsMixin from '../mixins/point-events-mixin';\n\nvar HeatmapPoint = (function (ChartElement) {\n function HeatmapPoint(value, options) {\n ChartElement.call(this);\n\n this.options = options;\n this.color = options.color || WHITE;\n this.value = value;\n }\n\n if ( ChartElement ) HeatmapPoint.__proto__ = ChartElement;\n HeatmapPoint.prototype = Object.create( ChartElement && ChartElement.prototype );\n HeatmapPoint.prototype.constructor = HeatmapPoint;\n\n HeatmapPoint.prototype.render = function render () {\n if (this._rendered) {\n return;\n }\n\n this._rendered = true;\n\n this.createMarker();\n this.createLabel();\n this.createNote();\n };\n\n HeatmapPoint.prototype.createLabel = function createLabel () {\n var options = this.options;\n var labels = options.labels;\n\n if (labels.visible) {\n var pointData = this.pointData();\n var labelTemplate = getTemplate(labels);\n var labelText;\n var labelColor = labels.color;\n\n if (labelTemplate) {\n labelText = labelTemplate(pointData);\n } else {\n labelText = this.formatValue(labels.format);\n }\n\n if (!labelColor) {\n labelColor = autoTextColor(this.color);\n }\n\n this.label = new TextBox(labelText,\n deepExtend({\n align: CENTER,\n vAlign: CENTER,\n margin: {\n left: 5,\n right: 5\n },\n zIndex: valueOrDefault(labels.zIndex, this.series.zIndex)\n },\n labels, {\n color: labelColor\n }),\n pointData\n );\n this.append(this.label);\n }\n };\n\n HeatmapPoint.prototype.formatValue = function formatValue (format) {\n return this.owner.formatPointValue(this, format);\n };\n\n HeatmapPoint.prototype.reflow = function reflow (targetBox) {\n this.render();\n\n var label = this.label;\n\n this.box = targetBox;\n\n if (label) {\n label.reflow(this.markerBox());\n }\n\n if (this.note) {\n this.note.reflow(targetBox);\n }\n\n this.marker.reflow(this.markerBox());\n };\n\n HeatmapPoint.prototype.markerBox = function markerBox () {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var rect = this.box.toRect();\n var type = valueOrDefault(markers.type, 'rect');\n var isRoundRect = type === ROUNDED_RECT;\n var borderWidth = valueOrDefault(border.width, isRoundRect ? 1 : 0);\n var halfBorderWidth = Math.round(borderWidth / 2);\n\n if (markers.size) {\n var center = rect.center();\n rect.size.width = rect.size.height = markers.size;\n rect.origin.x = Math.round(center.x - rect.size.width / 2);\n rect.origin.y = Math.round(center.y - rect.size.height / 2);\n }\n\n rect.size.width -= borderWidth;\n rect.size.height -= borderWidth;\n rect.origin.y += halfBorderWidth + 0.5;\n rect.origin.x += halfBorderWidth + 0.5;\n\n return rectToBox(rect);\n };\n\n HeatmapPoint.prototype.markerBorder = function markerBorder () {\n var options = this.options;\n var markers = options.markers;\n var border = markers.border;\n var opacity = valueOrDefault(border.opacity, options.opacity);\n\n return {\n color: border.color || this.color,\n width: border.width,\n opacity: opacity,\n dashType: border.dashType\n };\n };\n\n HeatmapPoint.prototype.createMarker = function createMarker () {\n var options = this.options;\n var markerOptions = options.markers;\n var marker = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex),\n animation: options.animation,\n visual: options.visual\n }, {\n dataItem: this.dataItem,\n value: this.value,\n series: this.series,\n category: this.category\n });\n\n this.marker = marker;\n this.append(marker);\n };\n\n HeatmapPoint.prototype.createHighlight = function createHighlight (style) {\n var options = this.options;\n var markerOptions = this.options.highlight.markers || this.options.markers;\n\n var highlight = new ShapeElement({\n type: valueOrDefault(markerOptions.type, 'rect'),\n width: markerOptions.size,\n height: markerOptions.size,\n rotation: markerOptions.rotation,\n background: markerOptions.color || this.color,\n border: this.markerBorder(),\n borderRadius: markerOptions.borderRadius,\n opacity: this.series.opacity || options.opacity,\n zIndex: valueOrDefault(options.zIndex, this.series.zIndex)\n });\n\n highlight.reflow(this.markerBox());\n var visual = highlight.getElement();\n\n visual.options.fill = style.fill;\n visual.options.stroke = style.stroke;\n\n return visual;\n };\n\n HeatmapPoint.prototype.highlightVisual = function highlightVisual () {\n return this.rectVisual;\n };\n\n HeatmapPoint.prototype.highlightVisualArgs = function highlightVisualArgs () {\n return {\n options: this.options,\n rect: this.box.toRect(),\n visual: this.rectVisual\n };\n };\n\n HeatmapPoint.prototype.tooltipAnchor = function tooltipAnchor () {\n var left = this.box.center().x;\n var top = this.box.y1 - TOOLTIP_OFFSET;\n\n return {\n point: new Point(left, top),\n align: {\n horizontal: CENTER,\n vertical: BOTTOM\n }\n };\n };\n\n HeatmapPoint.prototype.overlapsBox = function overlapsBox (box) {\n return this.box.overlaps(box);\n };\n\n HeatmapPoint.prototype.unclipElements = function unclipElements () {\n /* noop, clip labels */\n };\n\n HeatmapPoint.prototype.pointData = function pointData () {\n return {\n x: this.value.x,\n y: this.value.y,\n value: this.value.value,\n dataItem: this.dataItem,\n series: this.series\n };\n };\n\n return HeatmapPoint;\n}(ChartElement));\n\ndeepExtend(HeatmapPoint.prototype, PointEventsMixin);\ndeepExtend(HeatmapPoint.prototype, NoteMixin);\n\nHeatmapPoint.prototype.defaults = {\n markers: {\n type: 'rect',\n borderRadius: 4,\n border: {\n color: 'transparent'\n }\n },\n padding: { top: 1 },\n labels: {\n visible: false,\n padding: 3\n },\n opacity: 1,\n notes: {\n label: {}\n }\n};\n\nexport default HeatmapPoint;\n","import { deepExtend, defined, isFunction, setDefaultOptions } from '../../common';\nimport { MAX_VALUE, MIN_VALUE } from '../../common/constants';\nimport { Box, ChartElement } from '../../core';\nimport CategoricalChart from '../categorical-chart';\nimport evalOptions from '../utils/eval-options';\nimport colorScale from './color-scale';\nimport HeatmapPoint from './heatmap-point';\n\nvar HeatmapChart = (function (ChartElement) {\n function HeatmapChart(plotArea, options) {\n ChartElement.call(this, options);\n\n this.plotArea = plotArea;\n this.chartService = plotArea.chartService;\n this._initFields();\n\n this.render();\n }\n\n if ( ChartElement ) HeatmapChart.__proto__ = ChartElement;\n HeatmapChart.prototype = Object.create( ChartElement && ChartElement.prototype );\n HeatmapChart.prototype.constructor = HeatmapChart;\n\n HeatmapChart.prototype._initFields = function _initFields () {\n this.points = [];\n this.seriesOptions = [];\n this.valueRange = { min: MAX_VALUE, max: MIN_VALUE };\n this._evalSeries = [];\n };\n\n HeatmapChart.prototype.render = function render () {\n this.setRange();\n this.traverseDataPoints(this.addValue.bind(this));\n };\n\n HeatmapChart.prototype.setRange = function setRange () {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$1 = this$1._bindPoint(currentSeries, seriesIx, pointIx);\n var valueFields = ref$1.valueFields;\n if (defined(valueFields.value) && valueFields.value !== null) {\n this$1.valueRange.min = Math.min(this$1.valueRange.min, valueFields.value);\n this$1.valueRange.max = Math.max(this$1.valueRange.max, valueFields.value);\n }\n }\n }\n };\n\n HeatmapChart.prototype.addValue = function addValue (value, fields) {\n var point;\n if (value && defined(value.value) && value.value !== null) {\n point = this.createPoint(value, fields);\n if (point) {\n Object.assign(point, fields);\n }\n }\n\n this.points.push(point);\n };\n\n HeatmapChart.prototype.evalPointOptions = function evalPointOptions (options, value, fields) {\n var series = fields.series;\n var seriesIx = fields.seriesIx;\n var state = { defaults: series._defaults, excluded: [ \"data\", \"tooltip\", \"content\", \"template\", \"visual\", \"toggle\" ] };\n\n var doEval = this._evalSeries[seriesIx];\n if (!defined(doEval)) {\n this._evalSeries[seriesIx] = doEval = evalOptions(options, {}, state, true);\n }\n\n var pointOptions = options;\n if (doEval) {\n pointOptions = deepExtend({}, options);\n evalOptions(pointOptions, {\n value: value,\n series: series,\n dataItem: fields.dataItem,\n min: this.valueRange.min,\n max: this.valueRange.max\n }, state);\n }\n\n return pointOptions;\n };\n\n HeatmapChart.prototype.pointType = function pointType () {\n return HeatmapPoint;\n };\n\n HeatmapChart.prototype.pointOptions = function pointOptions (series, seriesIx) {\n var options = this.seriesOptions[seriesIx];\n if (!options) {\n var defaults = this.pointType().prototype.defaults;\n this.seriesOptions[seriesIx] = options = deepExtend({}, defaults, {\n markers: {\n opacity: series.opacity\n },\n tooltip: {\n format: this.options.tooltip.format\n },\n labels: {\n format: this.options.labels.format\n }\n }, series);\n }\n\n return options;\n };\n\n HeatmapChart.prototype.createPoint = function createPoint (value, fields) {\n var series = fields.series;\n var pointOptions = this.pointOptions(series, fields.seriesIx);\n var color = fields.color || series.color;\n\n pointOptions = this.evalPointOptions(pointOptions, value, fields);\n\n if (isFunction(series.color)) {\n color = pointOptions.color;\n } else if (this.valueRange.max !== 0) {\n var scale = colorScale(color);\n color = scale(value.value / this.valueRange.max);\n }\n\n var point = new HeatmapPoint(value, pointOptions);\n point.color = color;\n\n this.append(point);\n\n return point;\n };\n\n HeatmapChart.prototype.seriesAxes = function seriesAxes (series) {\n var xAxisName = series.xAxis;\n var yAxisName = series.yAxis;\n var plotArea = this.plotArea;\n var xAxis = xAxisName ? plotArea.namedXAxes[xAxisName] : plotArea.axisX;\n var yAxis = yAxisName ? plotArea.namedYAxes[yAxisName] : plotArea.axisY;\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n };\n\n HeatmapChart.prototype.reflow = function reflow (targetBox) {\n var this$1 = this;\n\n var chartPoints = this.points;\n var limit = !this.options.clip;\n var pointIx = 0;\n\n\n this.traverseDataPoints(function (value, fields) {\n var point = chartPoints[pointIx++];\n var ref = this$1.seriesAxes(fields.series);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n var indexX = xAxis.categoryIndex(value.x);\n var indexY = yAxis.categoryIndex(value.y);\n var slotX = xAxis.getSlot(indexX, indexX, limit);\n var slotY = yAxis.getSlot(indexY, indexY, limit);\n\n if (point) {\n if (slotX && slotY) {\n var pointSlot = this$1.pointSlot(slotX, slotY);\n point.reflow(pointSlot);\n } else {\n point.visible = false;\n }\n }\n });\n\n this.box = targetBox;\n };\n\n HeatmapChart.prototype.pointSlot = function pointSlot (slotX, slotY) {\n return new Box(slotX.x1, slotY.y1, slotX.x2, slotY.y2);\n };\n\n HeatmapChart.prototype.traverseDataPoints = function traverseDataPoints (callback) {\n var this$1 = this;\n\n var ref = this;\n var series = ref.options.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var ref$1 = this$1.seriesAxes(currentSeries);\n var xAxis = ref$1.xAxis;\n var yAxis = ref$1.yAxis;\n var xRange = xAxis.currentRangeIndices();\n var yRange = yAxis.currentRangeIndices();\n\n for (var pointIx = 0; pointIx < currentSeries.data.length; pointIx++) {\n var ref$2 = this$1._bindPoint(currentSeries, seriesIx, pointIx);\n var value = ref$2.valueFields;\n var fields = ref$2.fields;\n var xIndex = xAxis.totalIndex(value.x);\n var yIndex = yAxis.totalIndex(value.y);\n var xIn = xRange.min <= xIndex && xIndex <= xRange.max;\n var yIn = yRange.min <= yIndex && yIndex <= yRange.max;\n\n if (xIn && yIn) {\n callback(value, deepExtend({\n pointIx: pointIx,\n series: currentSeries,\n seriesIx: seriesIx,\n dataItem: currentSeries.data[pointIx],\n owner: this$1\n }, fields));\n }\n }\n }\n };\n\n HeatmapChart.prototype.formatPointValue = function formatPointValue (point, format) {\n var value = point.value;\n return this.chartService.format.auto(format, value.x, value.y, value.value);\n };\n\n HeatmapChart.prototype.animationPoints = function animationPoints () {\n var points = this.points;\n var result = [];\n for (var idx = 0; idx < points.length; idx++) {\n result.push((points[idx] || {}).marker);\n }\n return result;\n };\n\n return HeatmapChart;\n}(ChartElement));\nsetDefaultOptions(HeatmapChart, {\n series: [],\n tooltip: {\n format: \"{0}, {1}: {2}\"\n },\n labels: {\n format: \"{2}\"\n },\n clip: true\n});\ndeepExtend(HeatmapChart.prototype, {\n _bindPoint: CategoricalChart.prototype._bindPoint\n});\n\nexport default HeatmapChart;\n","import { deepExtend, eventElement, grep, inArray, setDefaultOptions, createHashSet } from '../../common';\nimport { DATE } from '../../common/constants';\nimport { CategoryAxis, DateCategoryAxis, Point } from '../../core';\nimport { HEATMAP } from '../constants';\nimport HeatmapChart from '../heatmap-chart/heatmap-chart';\nimport PlotAreaEventsMixin from '../mixins/plotarea-events-mixin';\nimport SeriesBinder from '../series-binder';\nimport { appendIfNotNull, equalsIgnoreCase, filterSeriesByType, singleItemOrArray } from '../utils';\nimport PlotAreaBase from './plotarea-base';\n\n\nvar HeatmapPlotArea = (function (PlotAreaBase) {\n function HeatmapPlotArea () {\n PlotAreaBase.apply(this, arguments);\n }\n\n if ( PlotAreaBase ) HeatmapPlotArea.__proto__ = PlotAreaBase;\n HeatmapPlotArea.prototype = Object.create( PlotAreaBase && PlotAreaBase.prototype );\n HeatmapPlotArea.prototype.constructor = HeatmapPlotArea;\n\n HeatmapPlotArea.prototype.initFields = function initFields () {\n this.namedXAxes = {};\n this.namedYAxes = {};\n };\n\n HeatmapPlotArea.prototype.render = function render (panes) {\n if ( panes === void 0 ) panes = this.panes;\n\n this.bindCategories();\n this.createAxes(panes);\n this.createCharts(panes);\n this.createAxisLabels();\n };\n\n HeatmapPlotArea.prototype.bindCategories = function bindCategories () {\n var this$1 = this;\n\n var series = this.srcSeries || this.series;\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var data = currentSeries.data || [];\n var ref = this$1.seriesAxes(currentSeries);\n var xAxis = ref.xAxis;\n var yAxis = ref.yAxis;\n\n var xCategories = createHashSet(xAxis.categories || []);\n var yCategories = createHashSet(yAxis.categories || []);\n\n for (var pointIndex = 0; pointIndex < data.length; pointIndex++) {\n var ref$1 = SeriesBinder.current.bindPoint(currentSeries, pointIndex).valueFields;\n var x = ref$1.x;\n var y = ref$1.y;\n\n if (!xCategories.has(x)) {\n xCategories.add(x);\n }\n\n if (!yCategories.has(y)) {\n yCategories.add(y);\n }\n }\n\n xAxis.categories = xCategories.values();\n yAxis.categories = yCategories.values();\n }\n };\n\n HeatmapPlotArea.prototype.createCharts = function createCharts (panes) {\n var this$1 = this;\n\n var seriesByPane = this.groupSeriesByPane();\n\n for (var i = 0; i < panes.length; i++) {\n var pane = panes[i];\n var paneSeries = seriesByPane[pane.options.name || \"default\"] || [];\n this$1.addToLegend(paneSeries);\n var filteredSeries = this$1.filterVisibleSeries(paneSeries);\n\n if (!filteredSeries) {\n continue;\n }\n\n this$1.createHeatmapChart(\n filterSeriesByType(filteredSeries, [ HEATMAP ]),\n pane\n );\n }\n };\n\n HeatmapPlotArea.prototype.createHeatmapChart = function createHeatmapChart (series, pane) {\n var chart = new HeatmapChart(this, {\n series: series\n });\n\n this.appendChart(chart, pane);\n };\n\n HeatmapPlotArea.prototype.seriesPaneName = function seriesPaneName (series) {\n var options = this.options;\n var xAxisName = series.xAxis;\n var xAxisOptions = [].concat(options.xAxis);\n var xAxis = grep(xAxisOptions, function(a) { return a.name === xAxisName; })[0];\n var yAxisName = series.yAxis;\n var yAxisOptions = [].concat(options.yAxis);\n var yAxis = grep(yAxisOptions, function(a) { return a.name === yAxisName; })[0];\n var panes = options.panes || [ {} ];\n var defaultPaneName = panes[0].name || \"default\";\n var paneName = (xAxis || {}).pane || (yAxis || {}).pane || defaultPaneName;\n\n return paneName;\n };\n\n HeatmapPlotArea.prototype.seriesAxes = function seriesAxes (series) {\n var xAxis;\n var yAxis;\n\n var options = this.options;\n\n var xAxisOptions = [].concat(options.xAxis);\n var xAxisName = series.xAxis;\n if (xAxisName) {\n xAxis = xAxisOptions.find(function (axis) { return axis.name === xAxisName; });\n } else {\n xAxis = xAxisOptions[0];\n }\n\n var yAxisOptions = [].concat(options.yAxis);\n var yAxisName = series.yAxis;\n if (yAxisName) {\n yAxis = yAxisOptions.find(function (axis) { return axis.name === yAxisName; });\n } else {\n yAxis = yAxisOptions[0];\n }\n\n if (!xAxis) {\n throw new Error(\"Unable to locate X axis with name \" + xAxisName);\n }\n\n if (!yAxis) {\n throw new Error(\"Unable to locate Y axis with name \" + yAxisName);\n }\n\n return { xAxis: xAxis, yAxis: yAxis };\n };\n\n HeatmapPlotArea.prototype.createAxisLabels = function createAxisLabels () {\n var axes = this.axes;\n for (var i = 0; i < axes.length; i++) {\n axes[i].createLabels();\n }\n };\n\n HeatmapPlotArea.prototype.createXYAxis = function createXYAxis (options, vertical, axisIndex) {\n var axisName = options.name;\n var namedAxes = vertical ? this.namedYAxes : this.namedXAxes;\n var axisOptions = Object.assign({\n axisCrossingValue: 0\n }, options, {\n vertical: vertical,\n reverse: (vertical || this.chartService.rtl) ? !options.reverse : options.reverse,\n justified: false\n });\n var firstCategory = axisOptions.categories ? axisOptions.categories[0] : null;\n var typeSamples = [ axisOptions.min, axisOptions.max, firstCategory ];\n var series = this.series;\n\n for (var seriesIx = 0; seriesIx < series.length; seriesIx++) {\n var currentSeries = series[seriesIx];\n var seriesAxisName = currentSeries[vertical ? \"yAxis\" : \"xAxis\"];\n if ((seriesAxisName === axisOptions.name) || (axisIndex === 0 && !seriesAxisName)) {\n var firstPointValue = SeriesBinder.current.bindPoint(currentSeries, 0).valueFields;\n typeSamples.push(firstPointValue[vertical ? \"y\" : \"x\"]);\n\n break;\n }\n }\n\n var inferredDate;\n\n for (var i = 0; i < typeSamples.length; i++) {\n if (typeSamples[i] instanceof Date) {\n inferredDate = true;\n break;\n }\n }\n\n var axisType;\n if (equalsIgnoreCase(axisOptions.type, DATE) || (!axisOptions.type && inferredDate)) {\n axisType = DateCategoryAxis;\n } else {\n axisType = CategoryAxis;\n }\n\n var axis = new axisType(axisOptions, this.chartService);\n axis.axisIndex = axisIndex;\n\n if (axisName) {\n if (namedAxes[axisName]) {\n throw new Error(((vertical ? \"Y\" : \"X\") + \" axis with name \" + axisName + \" is already defined\"));\n }\n namedAxes[axisName] = axis;\n }\n\n this.appendAxis(axis);\n axis.mapCategories();\n\n return axis;\n };\n\n HeatmapPlotArea.prototype.createAxes = function createAxes (panes) {\n var this$1 = this;\n\n var options = this.options;\n var xAxesOptions = [].concat(options.xAxis);\n var xAxes = [];\n var yAxesOptions = [].concat(options.yAxis);\n var yAxes = [];\n\n for (var idx = 0; idx < xAxesOptions.length; idx++) {\n var axisPane = this$1.findPane(xAxesOptions[idx].pane);\n if (inArray(axisPane, panes)) {\n xAxes.push(this$1.createXYAxis(xAxesOptions[idx], false, idx));\n }\n }\n\n for (var idx$1 = 0; idx$1 < yAxesOptions.length; idx$1++) {\n var axisPane$1 = this$1.findPane(yAxesOptions[idx$1].pane);\n if (inArray(axisPane$1, panes)) {\n yAxes.push(this$1.createXYAxis(yAxesOptions[idx$1], true, idx$1));\n }\n }\n\n this.axisX = this.axisX || xAxes[0];\n this.axisY = this.axisY || yAxes[0];\n };\n\n HeatmapPlotArea.prototype.removeAxis = function removeAxis (axis) {\n var axisName = axis.options.name;\n\n PlotAreaBase.prototype.removeAxis.call(this, axis);\n\n if (axis.options.vertical) {\n delete this.namedYAxes[axisName];\n } else {\n delete this.namedXAxes[axisName];\n }\n\n if (axis === this.axisX) {\n delete this.axisX;\n }\n\n if (axis === this.axisY) {\n delete this.axisY;\n }\n };\n\n HeatmapPlotArea.prototype._dispatchEvent = function _dispatchEvent (chart, e, eventType) {\n var coords = chart._eventCoordinates(e);\n var point = new Point(coords.x, coords.y);\n var allAxes = this.axes;\n var length = allAxes.length;\n var xValues = [];\n var yValues = [];\n\n for (var i = 0; i < length; i++) {\n var axis = allAxes[i];\n var values = axis.options.vertical ? yValues : xValues;\n appendIfNotNull(values, axis.getCategory(point));\n }\n\n if (xValues.length > 0 && yValues.length > 0) {\n chart.trigger(eventType, {\n element: eventElement(e),\n originalEvent: e,\n x: singleItemOrArray(xValues),\n y: singleItemOrArray(yValues)\n });\n }\n };\n\n HeatmapPlotArea.prototype.updateAxisOptions = function updateAxisOptions$1 (axis, options) {\n var vertical = axis.options.vertical;\n var axes = this.groupAxes(this.panes);\n var index = (vertical ? axes.y : axes.x).indexOf(axis);\n\n updateAxisOptions(this.options, index, vertical, options);\n updateAxisOptions(this.originalOptions, index, vertical, options);\n };\n\n HeatmapPlotArea.prototype.crosshairOptions = function crosshairOptions (axis) {\n // Stack the crosshair above the series points.\n return Object.assign({}, axis.options.crosshair, { zIndex: 0 });\n };\n\n return HeatmapPlotArea;\n}(PlotAreaBase));\n\nfunction updateAxisOptions(targetOptions, axisIndex, vertical, options) {\n var axisOptions = ([].concat(vertical ? targetOptions.yAxis : targetOptions.xAxis))[axisIndex];\n deepExtend(axisOptions, options);\n}\n\nsetDefaultOptions(HeatmapPlotArea, {\n xAxis: {},\n yAxis: {}\n});\n\ndeepExtend(HeatmapPlotArea.prototype, PlotAreaEventsMixin);\n\nexport default HeatmapPlotArea;\n","import PlotAreaFactory from './plotarea/plotarea-factory';\nimport SeriesBinder from './series-binder';\nimport DefaultAggregates from './aggregates/default-aggregates';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport XYPlotArea from './plotarea/xy-plotarea';\nimport PiePlotArea from './plotarea/pie-plotarea';\nimport DonutPlotArea from './plotarea/donut-plotarea';\nimport PolarPlotArea from './plotarea/polar-plotarea';\nimport RadarPlotArea from './plotarea/radar-plotarea';\nimport FunnelPlotArea from './plotarea/funnel-plotarea';\nimport HeatmapPlotArea from './plotarea/heatmap-plotarea';\n\nimport { COLUMN, DONUT, PIE, FUNNEL, BAR, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT, RANGE_COLUMN,\n RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, SCATTER, SCATTER_LINE, BUBBLE,\n POLAR_AREA, POLAR_LINE, POLAR_SCATTER, RADAR_AREA, RADAR_COLUMN, RADAR_LINE, CATEGORY,\n RANGE_AREA, VERTICAL_RANGE_AREA, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD,\n ERROR_LOW_FIELD, ERROR_HIGH_FIELD, HEATMAP } from './constants';\nimport { X, Y, VALUE } from '../common/constants';\n\nvar COLOR = \"color\";\nvar FIRST = \"first\";\nvar FROM = \"from\";\nvar MAX = \"max\";\nvar MIN = \"min\";\nvar NOTE_TEXT = \"noteText\";\nvar SUMMARY_FIELD = \"summary\";\nvar TO = \"to\";\n\nPlotAreaFactory.current.register(CategoricalPlotArea, [\n BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA,\n CANDLESTICK, OHLC, BULLET, VERTICAL_BULLET, BOX_PLOT, VERTICAL_BOX_PLOT,\n RANGE_COLUMN, RANGE_BAR, WATERFALL, HORIZONTAL_WATERFALL, RANGE_AREA, VERTICAL_RANGE_AREA\n]);\n\nPlotAreaFactory.current.register(XYPlotArea, [\n SCATTER, SCATTER_LINE, BUBBLE\n]);\n\nPlotAreaFactory.current.register(PiePlotArea, [ PIE ]);\nPlotAreaFactory.current.register(DonutPlotArea, [ DONUT ]);\nPlotAreaFactory.current.register(FunnelPlotArea, [ FUNNEL ]);\n\nPlotAreaFactory.current.register(PolarPlotArea, [ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ]);\nPlotAreaFactory.current.register(RadarPlotArea, [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ]);\n\nPlotAreaFactory.current.register(HeatmapPlotArea, [ HEATMAP ]);\n\nSeriesBinder.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, ERROR_LOW_FIELD, ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n [ FROM, TO ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ WATERFALL, HORIZONTAL_WATERFALL ],\n [ VALUE ], [ CATEGORY, COLOR, NOTE_TEXT, SUMMARY_FIELD ]\n);\n\nSeriesBinder.current.register([ POLAR_AREA, POLAR_LINE, POLAR_SCATTER ], [ X, Y ], [ COLOR ]);\nSeriesBinder.current.register([ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ], [ VALUE ], [ COLOR ]);\n\nSeriesBinder.current.register(\n [ FUNNEL ],\n [ VALUE ], [ CATEGORY, COLOR, \"visibleInLegend\", \"visible\" ]\n);\n\nDefaultAggregates.current.register(\n [ BAR, COLUMN, LINE, VERTICAL_LINE, AREA, VERTICAL_AREA, WATERFALL, HORIZONTAL_WATERFALL ],\n { value: MAX, color: FIRST, noteText: FIRST, errorLow: MIN, errorHigh: MAX }\n);\n\nDefaultAggregates.current.register(\n [ RANGE_COLUMN, RANGE_BAR, RANGE_AREA, VERTICAL_RANGE_AREA ],\n { from: MIN, to: MAX, color: FIRST, noteText: FIRST }\n);\n\nDefaultAggregates.current.register(\n [ RADAR_AREA, RADAR_COLUMN, RADAR_LINE ],\n { value: MAX, color: FIRST }\n);\n\nSeriesBinder.current.register(\n [ SCATTER, SCATTER_LINE, BUBBLE ],\n [ X, Y ], [ COLOR, NOTE_TEXT, X_ERROR_LOW_FIELD, X_ERROR_HIGH_FIELD, Y_ERROR_LOW_FIELD, Y_ERROR_HIGH_FIELD ]\n);\n\nSeriesBinder.current.register(\n [ BUBBLE ], [ X, Y, \"size\" ], [ COLOR, CATEGORY, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ HEATMAP ],\n [ X, Y, VALUE ], [ COLOR, NOTE_TEXT ]\n);\n\nSeriesBinder.current.register(\n [ CANDLESTICK, OHLC ],\n [ \"open\", \"high\", \"low\", \"close\" ], [ CATEGORY, COLOR, \"downColor\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ CANDLESTICK, OHLC ],\n { open: MAX, high: MAX, low: MIN, close: MAX,\n color: FIRST, downColor: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n [ \"lower\", \"q1\", \"median\", \"q3\", \"upper\", \"mean\", \"outliers\" ], [ CATEGORY, COLOR, NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ BOX_PLOT, VERTICAL_BOX_PLOT ],\n { lower: MAX, q1: MAX, median: MAX, q3: MAX, upper: MAX, mean: MAX, outliers: FIRST,\n color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ BULLET, VERTICAL_BULLET ],\n [ \"current\", \"target\" ], [ CATEGORY, COLOR, \"visibleInLegend\", NOTE_TEXT ]\n);\n\nDefaultAggregates.current.register(\n [ BULLET, VERTICAL_BULLET ],\n { current: MAX, target: MAX, color: FIRST, noteText: FIRST }\n);\n\nSeriesBinder.current.register(\n [ PIE, DONUT ],\n [ VALUE ], [ CATEGORY, COLOR, \"explode\", \"visibleInLegend\", \"visible\" ]\n);\n","import { drawing as draw, throttle, geometry } from '@progress/kendo-drawing';\n\nimport { RootElement, Title, CategoryAxis, Point } from '../core';\n\nimport Highlight from './highlight';\nimport Pannable from './pan-and-zoom/pannable';\nimport ZoomSelection from './pan-and-zoom/zoom-selection';\nimport MousewheelZoom from './pan-and-zoom/mousewheel-zoom';\nimport Legend from './legend/legend';\nimport PlotAreaFactory from './plotarea/plotarea-factory';\nimport Selection from './selection';\nimport SeriesBinder from './series-binder';\nimport Tooltip from './tooltip/tooltip';\nimport SharedTooltip from './tooltip/shared-tooltip';\nimport CategoricalPlotArea from './plotarea/categorical-plotarea';\nimport PlotAreaBase from './plotarea/plotarea-base';\nimport { ChartService, DomEventsBuilder } from '../services';\nimport getField from './utils/get-field';\nimport isDateAxis from './utils/is-date-axis';\nimport getDateField from './utils/get-date-field';\nimport { ChartPane, ChartPlotArea, findAxisByName } from './api-elements';\n\nimport { X, Y, VALUE, DEFAULT_WIDTH, DEFAULT_HEIGHT, DEFAULT_SERIES_OPACITY } from '../common/constants';\nimport { addClass, Class, setDefaultOptions, deepExtend, defined, find, isObject, isFunction, elementSize, elementOffset,\n elementScale, elementStyles, eventCoordinates, bindEvents, unbindEvents, mousewheelDelta, FontLoader, inArray, last, round,\n HashMap, valueOrDefault } from '../common';\n\nimport { dateComparer } from '../date-utils';\n\nimport { DRAG_START, DRAG, DRAG_END, ZOOM_START, ZOOM, ZOOM_END, SELECT_START, SELECT, SELECT_END, PLOT_AREA_HOVER, PLOT_AREA_LEAVE,\n RENDER, CATEGORY, PIE, DONUT, FUNNEL, COLUMN, MOUSEWHEEL, MOUSEWHEEL_DELAY, MOUSEWHEEL_ZOOM_RATE, SHOW_TOOLTIP, SERIES_HOVER } from './constants';\n\nimport './animations';\nimport './register-charts';\n\nvar AXIS_NAMES = [ CATEGORY, VALUE, X, Y ];\n\nvar MOUSEMOVE = \"mousemove\";\nvar CONTEXTMENU = \"contextmenu\";\nvar MOUSELEAVE = \"mouseleave\";\nvar MOUSEMOVE_DELAY = 20;\n\nvar Chart = (function (Class) {\n function Chart(element, userOptions, themeOptions, context) {\n var this$1 = this;\n if ( context === void 0 ) context = {};\n\n Class.call(this);\n\n this.observers = [];\n this.addObserver(context.observer);\n this.chartService = new ChartService(this, context);\n this.chartService.theme = themeOptions;\n\n this._initElement(element);\n\n var options = deepExtend({}, this.options, userOptions);\n this._originalOptions = deepExtend({}, options);\n this._theme = themeOptions;\n this._initTheme(options, themeOptions);\n\n this._initHandlers();\n this._initSurface();\n\n this.bindCategories();\n FontLoader.preloadFonts(userOptions, function () {\n this$1.fontLoaded = true;\n if (!this$1._destroyed) {\n this$1.trigger('init');\n this$1._redraw();\n this$1._attachEvents();\n }\n });\n }\n\n if ( Class ) Chart.__proto__ = Class;\n Chart.prototype = Object.create( Class && Class.prototype );\n Chart.prototype.constructor = Chart;\n\n Chart.prototype._initElement = function _initElement (element) {\n this._setElementClass(element);\n element.style.position = \"relative\";\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n this.element = element;\n };\n\n Chart.prototype._setElementClass = function _setElementClass (element) {\n addClass(element, \"k-chart\");\n };\n\n Chart.prototype._initTheme = function _initTheme (options, themeOptions) {\n var seriesCopies = [];\n var series = options.series || [];\n\n for (var i = 0; i < series.length; i++) {\n seriesCopies.push(Object.assign({}, series[i]));\n }\n options.series = seriesCopies;\n\n resolveAxisAliases(options);\n this.applyDefaults(options, themeOptions);\n\n // Clean up default if not overriden by data attributes\n if (options.seriesColors === null) {\n delete options.seriesColors;\n }\n\n this.options = deepExtend({}, themeOptions, options);\n this.applySeriesColors();\n };\n\n Chart.prototype.getSize = function getSize () {\n var chartArea = this.options.chartArea || {};\n var width = chartArea.width ? parseInt(chartArea.width, 10) : Math.floor(this.element.offsetWidth);\n var height = chartArea.height ? parseInt(chartArea.height, 10) : Math.floor(this.element.offsetHeight);\n\n return {\n width: width,\n height: height\n };\n };\n\n Chart.prototype.resize = function resize (force) {\n var size = this.getSize();\n var currentSize = this._size;\n var hasSize = size.width > 0 || size.height > 0;\n\n if (force || hasSize && (!currentSize || size.width !== currentSize.width || size.height !== currentSize.height)) {\n this._size = size;\n this._resize(size, force);\n this.trigger(\"resize\", size);\n } else if (hasSize && this._selections && find(this._selections, function (s) { return !s.visible; })) {\n this._destroySelections();\n this._setupSelection();\n }\n };\n\n Chart.prototype._resize = function _resize () {\n this._noTransitionsRedraw();\n };\n\n Chart.prototype.redraw = function redraw (paneName) {\n this.applyDefaults(this.options);\n this.applySeriesColors();\n\n if (paneName) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPane(paneName);\n plotArea.redraw(pane);\n } else {\n this._redraw();\n }\n };\n\n Chart.prototype.getAxis = function getAxis (name) {\n return findAxisByName(name, this._plotArea.axes);\n };\n\n Chart.prototype.findAxisByName = function findAxisByName (name) {\n return this.getAxis(name);\n };\n\n Chart.prototype.findPaneByName = function findPaneByName (name) {\n var panes = this._plotArea.panes;\n\n for (var idx = 0; idx < panes.length; idx++) {\n if (panes[idx].options.name === name) {\n return new ChartPane(panes[idx]);\n }\n }\n };\n\n Chart.prototype.findPaneByIndex = function findPaneByIndex (idx) {\n var panes = this._plotArea.panes;\n if (panes[idx]) {\n return new ChartPane(panes[idx]);\n }\n };\n\n Chart.prototype.plotArea = function plotArea () {\n return new ChartPlotArea(this._plotArea);\n };\n\n Chart.prototype.toggleHighlight = function toggleHighlight (show, filter) {\n var plotArea = this._plotArea;\n var firstSeries = (plotArea.srcSeries || plotArea.series || [])[0];\n var points;\n\n if (isFunction(filter)) {\n points = plotArea.filterPoints(filter);\n } else {\n var seriesName, categoryName;\n if (isObject(filter)) {\n seriesName = filter.series;\n categoryName = filter.category;\n } else {\n seriesName = categoryName = filter;\n }\n\n if (firstSeries.type === DONUT) {\n points = pointByCategoryName(plotArea.pointsBySeriesName(seriesName), categoryName);\n } else if (firstSeries.type === PIE || firstSeries.type === FUNNEL) {\n points = pointByCategoryName((plotArea.charts[0] || {}).points, categoryName);\n } else {\n points = plotArea.pointsBySeriesName(seriesName);\n }\n }\n\n if (points) {\n this.togglePointsHighlight(show, points);\n }\n };\n\n Chart.prototype.togglePointsHighlight = function togglePointsHighlight (show, points) {\n var highlight = this._highlight;\n for (var idx = 0; idx < points.length; idx++) {\n highlight.togglePointHighlight(points[idx], show);\n }\n };\n\n Chart.prototype.showTooltip = function showTooltip (filter) {\n var shared = this._sharedTooltip();\n var ref = this;\n var tooltip = ref._tooltip;\n var plotArea = ref._plotArea;\n var point, categoryIndex;\n\n if (isFunction(filter)) {\n point = plotArea.findPoint(filter);\n if (point && shared) {\n categoryIndex = point.categoryIx;\n }\n } else if (shared && defined(filter)) {\n categoryIndex = plotArea.categoryAxis.categoryIndex(filter);\n }\n\n if (shared) {\n if (categoryIndex >= 0) {\n var points = this._plotArea.pointsByCategoryIndex(categoryIndex);\n tooltip.showAt(points);\n }\n } else if (point) {\n tooltip.show(point);\n }\n };\n\n Chart.prototype.hideTooltip = function hideTooltip () {\n this._tooltip.hide();\n };\n\n Chart.prototype._initSurface = function _initSurface () {\n var surface = this.surface;\n var wrap = this._surfaceWrap();\n\n var chartArea = this.options.chartArea || {};\n if (chartArea.width) {\n elementSize(wrap, { width: chartArea.width });\n }\n if (chartArea.height) {\n elementSize(wrap, { height: chartArea.height });\n }\n\n if (!surface || surface.options.type !== this.options.renderAs) {\n this._destroySurface();\n\n this.surface = draw.Surface.create(wrap, {\n type: this.options.renderAs\n });\n\n this.surface.bind(\"mouseenter\", this._surfaceMouseenterHandler);\n this.surface.bind(\"mouseleave\", this._surfaceMouseleaveHandler);\n\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n };\n\n Chart.prototype._surfaceWrap = function _surfaceWrap () {\n return this.element;\n };\n\n Chart.prototype._redraw = function _redraw () {\n var model = this._getModel();\n this._size = {\n width: model.options.width,\n height: model.options.height\n };\n\n this._destroyView();\n\n this._model = model;\n this._plotArea = model._plotArea;\n\n model.renderVisual();\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.setup();\n }\n });\n }\n\n this._initSurface();\n this.surface.draw(model.visual);\n\n if (this.options.transitions !== false) {\n model.traverse(function(element) {\n if (element.animation) {\n element.animation.play();\n }\n });\n }\n\n this._tooltip = this._createTooltip();\n this._highlight = new Highlight();\n this._setupSelection();\n this._createPannable();\n this._createZoomSelection();\n this._createMousewheelZoom();\n\n this.trigger(RENDER);\n triggerPaneRender(this._plotArea.panes);\n\n if (!this._navState) {\n this._cancelDomEvents();\n }\n };\n\n Chart.prototype.exportVisual = function exportVisual (exportOptions) {\n var visual;\n if (exportOptions && (exportOptions.width || exportOptions.height || exportOptions.options)) {\n var currentOptions = this.options;\n var options = deepExtend({}, exportOptions.options, {\n chartArea: {\n width: exportOptions.width,\n height: exportOptions.height\n }\n });\n\n clearMissingValues(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions, options);\n this._initTheme(this.options, this._theme);\n this.bindCategories();\n\n var model = this._getModel();\n\n model.renderVisual();\n triggerPaneRender(model._plotArea.panes);\n\n visual = model.visual;\n\n this.options = currentOptions;\n } else {\n visual = this.surface.exportVisual();\n }\n\n return visual;\n };\n\n Chart.prototype._sharedTooltip = function _sharedTooltip () {\n return this._plotArea instanceof CategoricalPlotArea && this.options.tooltip && this.options.tooltip.shared;\n };\n\n Chart.prototype._createPannable = function _createPannable () {\n var options = this.options;\n if (options.pannable !== false) {\n this._pannable = new Pannable(this._plotArea, options.pannable);\n }\n };\n\n Chart.prototype._createZoomSelection = function _createZoomSelection () {\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n if (zoomable !== false && selection !== false) {\n this._zoomSelection = new ZoomSelection(this, selection);\n }\n };\n\n Chart.prototype._createMousewheelZoom = function _createMousewheelZoom () {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel;\n if (zoomable !== false && mousewheel !== false) {\n this._mousewheelZoom = new MousewheelZoom(this, mousewheel);\n }\n };\n\n Chart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n var pannable = this.options.pannable;\n var zoomable = this.options.zoomable;\n var selection = (zoomable || {}).selection;\n var mousewheel = (zoomable || {}).mousewheel;\n var allowDrag = !pannable && (zoomable === false || selection === false) && !this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ]);\n var allowZoom = (zoomable === false || mousewheel === false) && !this.requiresHandlers([ ZOOM_START, ZOOM, ZOOM_END ]);\n var element = this.element;\n\n if (this._dragZoomEnabled && allowDrag && allowZoom) {\n element.style.touchAction = this._touchAction || '';\n this._dragZoomEnabled = false;\n } else if (!this._dragZoomEnabled && !(allowDrag && allowZoom)) {\n element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n\n this._toggleDomEvents(!allowDrag, !allowZoom);\n };\n\n Chart.prototype._toggleDomEvents = function _toggleDomEvents (drag, zoom) {\n var domEvents = this.domEvents;\n if (!domEvents) {\n return;\n }\n\n if (domEvents.toggleDrag) {\n domEvents.toggleDrag(drag);\n }\n\n if (domEvents.toggleZoom) {\n domEvents.toggleZoom(zoom);\n }\n };\n\n Chart.prototype._createTooltip = function _createTooltip () {\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var tooltip;\n\n if (this._sharedTooltip()) {\n tooltip = this._createSharedTooltip(tooltipOptions);\n } else {\n tooltip = new Tooltip(this.chartService, tooltipOptions);\n }\n\n return tooltip;\n };\n\n Chart.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n return new SharedTooltip(this._plotArea, options);\n };\n\n Chart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n applyAxisDefaults(options, themeOptions);\n applySeriesDefaults(options, themeOptions);\n };\n\n Chart.prototype.applySeriesColors = function applySeriesColors () {\n var options = this.options;\n var series = options.series;\n var colors = options.seriesColors || [];\n\n for (var i = 0; i < series.length; i++) {\n var currentSeries = series[i];\n var seriesColor = colors[i % colors.length];\n var defaults = currentSeries._defaults;\n\n currentSeries.color = currentSeries.color || seriesColor;\n if (defaults) {\n defaults.color = defaults.color || seriesColor;\n }\n }\n };\n\n Chart.prototype._getModel = function _getModel () {\n var options = this.options;\n var plotArea = this._createPlotArea();\n var model = new RootElement(this._modelOptions());\n model.chart = this;\n model._plotArea = plotArea;\n\n var title = Title.buildTitle(options.title);\n var subtitle = Title.buildTitle(options.subtitle, {\n align: options.title.align,\n position: options.title.position\n });\n model.append.apply(model, Title.orderTitles([title, subtitle]));\n\n if (options.legend && options.legend.visible) {\n model.append(new Legend(plotArea.options.legend, this.chartService));\n }\n model.append(plotArea);\n model.reflow();\n\n return model;\n };\n\n Chart.prototype._modelOptions = function _modelOptions () {\n var options = this.options;\n var size = this.getSize();\n\n return deepExtend({\n transitions: options.transitions,\n width: size.width || DEFAULT_WIDTH,\n height: size.height || DEFAULT_HEIGHT\n }, options.chartArea);\n };\n\n Chart.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n var options = this.options;\n\n var plotArea = PlotAreaFactory.current.create(skipSeries ? [] : options.series, options, this.chartService);\n\n return plotArea;\n };\n\n Chart.prototype._setupSelection = function _setupSelection () {\n var this$1 = this;\n\n var ref = this;\n var axes = ref._plotArea.axes;\n var selections = this._selections = [];\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var options = axis.options;\n if (axis instanceof CategoryAxis && options.select && !options.vertical) {\n var range = axis.range();\n\n var selection = new Selection(this$1, axis,\n deepExtend({ min: range.min, max: range.max }, options.select)\n );\n\n selections.push(selection);\n }\n }\n };\n\n Chart.prototype._selectStart = function _selectStart (e) {\n return this.trigger(SELECT_START, e);\n };\n\n Chart.prototype._select = function _select (e) {\n return this.trigger(SELECT, e);\n };\n\n Chart.prototype._selectEnd = function _selectEnd (e) {\n return this.trigger(SELECT_END, e);\n };\n\n Chart.prototype._initHandlers = function _initHandlers () {\n this._clickHandler = this._click.bind(this);\n this._mousewheelHandler = this._mousewheel.bind(this);\n this._mouseleaveHandler = this._mouseleave.bind(this);\n this._surfaceMouseenterHandler = this._mouseover.bind(this);\n this._surfaceMouseleaveHandler = this._mouseout.bind(this);\n\n this._mousemove = throttle(\n this._mousemove.bind(this),\n MOUSEMOVE_DELAY\n );\n };\n\n Chart.prototype.addObserver = function addObserver (observer) {\n if (observer) {\n this.observers.push(observer);\n }\n };\n\n Chart.prototype.removeObserver = function removeObserver (observer) {\n var index = this.observers.indexOf(observer);\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n };\n\n Chart.prototype.requiresHandlers = function requiresHandlers (eventNames) {\n var observers = this.observers;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n };\n\n Chart.prototype.trigger = function trigger (name, args) {\n if ( args === void 0 ) args = {};\n\n if (name === SHOW_TOOLTIP) {\n args.anchor.point = this._toDocumentCoordinates(args.anchor.point);\n }\n args.sender = this;\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n };\n\n Chart.prototype._attachEvents = function _attachEvents () {\n var obj, obj$1;\n\n var element = this.element;\n\n this._touchAction = element.style.touchAction;\n\n bindEvents(element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n\n this.domEvents = DomEventsBuilder.create(this.element, {\n start: this._start.bind(this),\n move: this._move.bind(this),\n end: this._end.bind(this),\n tap: this._tap.bind(this),\n gesturestart: this._gesturestart.bind(this),\n gesturechange: this._gesturechange.bind(this),\n gestureend: this._gestureend.bind(this)\n });\n\n this._toggleDragZoomEvents();\n };\n\n Chart.prototype._mouseleave = function _mouseleave (e) {\n if (this._hoveredPoint) {\n this._hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (this._plotAreaHovered) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n };\n\n Chart.prototype._cancelDomEvents = function _cancelDomEvents () {\n if (this.domEvents && this.domEvents.cancel) {\n this.domEvents.cancel();\n }\n };\n\n Chart.prototype._gesturestart = function _gesturestart (e) {\n if (this._mousewheelZoom && !this._stopChartHandlers(e)) {\n this._gestureDistance = e.distance;\n this._unsetActivePoint();\n this.surface.suspendTracking();\n }\n };\n\n Chart.prototype._gestureend = function _gestureend (e) {\n if (this._zooming && !this._stopChartHandlers(e)) {\n if (this.surface) {\n this.surface.resumeTracking();\n }\n this._zooming = false;\n this.trigger(ZOOM_END, {});\n }\n };\n\n Chart.prototype._gesturechange = function _gesturechange (e) {\n var mousewheelZoom = this._mousewheelZoom;\n\n if (mousewheelZoom && !this._stopChartHandlers(e)) {\n e.preventDefault();\n var previousGestureDistance = this._gestureDistance;\n var scaleDelta = -e.distance / previousGestureDistance + 1;\n\n if (Math.abs(scaleDelta) >= 0.1) {\n scaleDelta = Math.round(scaleDelta * 10);\n\n this._gestureDistance = e.distance;\n var args = { delta: scaleDelta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n var coords = this._eventCoordinates(e);\n\n if (!this._zooming) {\n this._zooming = true;\n }\n\n var ranges = args.axisRanges = mousewheelZoom.updateRanges(scaleDelta, coords);\n if (ranges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n }\n }\n }\n };\n\n Chart.prototype._mouseout = function _mouseout (e) {\n if (e.element) {\n var element = this._drawingChartElement(e.element, e);\n\n if (element && element.leave) {\n element.leave(this, e.originalEvent);\n }\n }\n };\n\n Chart.prototype._start = function _start (e) {\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n\n if (this.requiresHandlers([ DRAG_START, DRAG, DRAG_END ])) {\n this._startNavigation(e, coords, DRAG_START);\n }\n\n if (this._pannable && this._pannable.start(e)) {\n this.surface.suspendTracking();\n this._unsetActivePoint();\n this._suppressHover = true;\n this.chartService.panning = true;\n }\n\n if (this._zoomSelection) {\n if (this._zoomSelection.start(e)) {\n this.trigger(ZOOM_START, { axisRanges: axisRanges(this._plotArea.axes), originalEvent: e });\n }\n }\n };\n\n Chart.prototype._move = function _move (e) {\n var ref = this;\n var state = ref._navState;\n var pannable = ref._pannable;\n\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n if (pannable) {\n var ranges = pannable.move(e);\n\n if (ranges && !this.trigger(DRAG, { axisRanges: ranges, originalEvent: e })) {\n pannable.pan();\n }\n } else if (state) {\n var ranges$1 = {};\n var axes = state.axes;\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n var axis = currentAxis.options.vertical ? e.y : e.x;\n var delta = axis.startLocation - axis.location;\n\n if (delta !== 0) {\n ranges$1[currentAxis.options.name] = currentAxis.translateRange(delta);\n }\n }\n }\n\n state.axisRanges = ranges$1;\n this.trigger(DRAG, {\n axisRanges: ranges$1,\n originalEvent: e\n });\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.move(e);\n }\n };\n\n Chart.prototype._end = function _end (e) {\n if (this._stopChartHandlers(e)) {\n return;\n }\n\n var pannable = this._pannable;\n if (pannable && pannable.end(e)) {\n this.surface.resumeTracking();\n this.trigger(DRAG_END, {\n axisRanges: axisRanges(this._plotArea.axes),\n originalEvent: e\n });\n this._suppressHover = false;\n this.chartService.panning = false;\n } else {\n this._endNavigation(e, DRAG_END);\n }\n\n if (this._zoomSelection) {\n var ranges = this._zoomSelection.end(e);\n if (ranges && !this.trigger(ZOOM, { axisRanges: ranges, originalEvent: e })) {\n this._zoomSelection.zoom();\n this.trigger(ZOOM_END, { axisRanges: ranges, originalEvent: e });\n }\n }\n };\n\n Chart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n var selections = this._selections || [];\n if (!selections.length) {\n return false;\n }\n\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n if (pane) {\n for (var idx = 0; idx < selections.length; idx++) {\n if (selections[idx].onPane(pane)) {\n return true;\n }\n }\n }\n };\n\n Chart.prototype._mousewheelZoomRate = function _mousewheelZoomRate () {\n var zoomable = this.options.zoomable;\n var mousewheel = (zoomable || {}).mousewheel || {};\n return valueOrDefault(mousewheel.rate, MOUSEWHEEL_ZOOM_RATE);\n };\n\n Chart.prototype._mousewheel = function _mousewheel (e) {\n var this$1 = this;\n\n var delta = mousewheelDelta(e);\n var mousewheelZoom = this._mousewheelZoom;\n var coords = this._eventCoordinates(e);\n\n if (this._stopChartHandlers(e) || !this._plotArea.backgroundContainsPoint(coords)) {\n return;\n }\n\n if (mousewheelZoom) {\n var args = { delta: delta, axisRanges: axisRanges(this._plotArea.axes), originalEvent: e };\n if (this._zooming || !this.trigger(ZOOM_START, args)) {\n e.preventDefault();\n\n if (!this._zooming) {\n this._unsetActivePoint();\n this.surface.suspendTracking();\n this._zooming = true;\n }\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n args.axisRanges = mousewheelZoom.updateRanges(delta, coords);\n if (args.axisRanges && !this.trigger(ZOOM, args)) {\n mousewheelZoom.zoom();\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1.trigger(ZOOM_END, args);\n this$1._zooming = false;\n if (this$1.surface) {\n this$1.surface.resumeTracking();\n }\n }, MOUSEWHEEL_DELAY);\n }\n } else {\n var state = this._navState;\n if (!state) {\n var prevented = this._startNavigation(e, coords, ZOOM_START);\n if (!prevented) {\n state = this._navState;\n }\n }\n\n if (state) {\n var totalDelta = state.totalDelta || delta;\n state.totalDelta = totalDelta + delta;\n\n var axes = this._navState.axes;\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var currentAxis = axes[i];\n var axisName = currentAxis.options.name;\n if (axisName) {\n ranges[axisName] = currentAxis.scaleRange(-totalDelta * this$1._mousewheelZoomRate(), coords);\n }\n }\n\n this.trigger(ZOOM, {\n delta: delta,\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (this._mwTimeout) {\n clearTimeout(this._mwTimeout);\n }\n\n this._mwTimeout = setTimeout(function () {\n this$1._endNavigation(e, ZOOM_END);\n }, MOUSEWHEEL_DELAY);\n }\n }\n };\n\n Chart.prototype._startNavigation = function _startNavigation (e, coords, chartEvent) {\n var plotArea = this._model._plotArea;\n var pane = plotArea.findPointPane(coords);\n var axes = plotArea.axes.slice(0);\n\n if (!pane) {\n return;\n }\n\n var ranges = axisRanges(axes);\n\n var prevented = this.trigger(chartEvent, {\n axisRanges: ranges,\n originalEvent: e\n });\n\n if (prevented) {\n this._cancelDomEvents();\n } else {\n this._suppressHover = true;\n this._unsetActivePoint();\n this._navState = {\n axisRanges: ranges,\n pane: pane,\n axes: axes\n };\n }\n };\n\n Chart.prototype._endNavigation = function _endNavigation (e, chartEvent) {\n if (this._navState) {\n this.trigger(chartEvent, {\n axisRanges: this._navState.axisRanges,\n originalEvent: e\n });\n this._suppressHover = false;\n this._navState = null;\n }\n };\n\n Chart.prototype._getChartElement = function _getChartElement (e, match) {\n var element = this.surface.eventTarget(e);\n if (element) {\n return this._drawingChartElement(element, e, match);\n }\n };\n\n Chart.prototype._drawingChartElement = function _drawingChartElement (element, e, match) {\n var current = element;\n var chartElement;\n while (current && !chartElement) {\n chartElement = current.chartElement;\n current = current.parent;\n }\n\n if (chartElement) {\n if (chartElement.aliasFor) {\n chartElement = chartElement.aliasFor(e, this._eventCoordinates(e));\n }\n\n if (match) {\n chartElement = chartElement.closest(match);\n if (chartElement && chartElement.aliasFor) {\n chartElement = chartElement.aliasFor();\n }\n }\n\n return chartElement;\n }\n };\n\n Chart.prototype._eventCoordinates = function _eventCoordinates (e) {\n var coordinates = eventCoordinates(e);\n return this._toModelCoordinates(coordinates.x, coordinates.y);\n };\n\n Chart.prototype._elementPadding = function _elementPadding () {\n if (!this._padding) {\n var ref = elementStyles(this.element, [ \"paddingLeft\", \"paddingTop\" ]);\n var paddingLeft = ref.paddingLeft;\n var paddingTop = ref.paddingTop;\n this._padding = {\n top: paddingTop,\n left: paddingLeft\n };\n }\n\n return this._padding;\n };\n\n Chart.prototype._toDocumentCoordinates = function _toDocumentCoordinates (point) {\n var padding = this._elementPadding();\n var offset = elementOffset(this.element);\n\n return {\n left: round(point.x + padding.left + offset.left),\n top: round(point.y + padding.top + offset.top)\n };\n };\n\n // TODO: Breaking change due to peer version change\n // Reuse by exposing _surfacePoint on Surface\n Chart.prototype._toModelCoordinates = function _toModelCoordinates (clientX, clientY) {\n var element = this.element;\n var offset = elementOffset(element);\n var padding = this._elementPadding();\n var inverseTransform = elementScale(element).invert();\n var point = new geometry.Point(\n clientX - offset.left - padding.left,\n clientY - offset.top - padding.top\n ).transform(inverseTransform);\n\n return new Point(point.x, point.y);\n };\n\n Chart.prototype._tap = function _tap (e) {\n var this$1 = this;\n\n var drawingElement = this.surface.eventTarget(e);\n var element = this._drawingChartElement(drawingElement, e);\n var sharedTooltip = this._sharedTooltip();\n\n if (!this._startHover(drawingElement, e) && !sharedTooltip) {\n this._unsetActivePoint();\n }\n\n if (sharedTooltip) {\n this._trackSharedTooltip(this._eventCoordinates(e), e, true);\n }\n\n this._propagateClick(element, e);\n\n //part of fix for hover issue on windows touch\n this.handlingTap = true;\n setTimeout(function () {\n this$1.handlingTap = false;\n }, 0);\n };\n\n Chart.prototype._click = function _click (e) {\n var element = this._getChartElement(e);\n this._propagateClick(element, e);\n };\n\n Chart.prototype._propagateClick = function _propagateClick (element, e) {\n var this$1 = this;\n\n var current = element;\n while (current) {\n if (current.click) {\n current.click(this$1, e);\n }\n\n current = current.parent;\n }\n };\n\n Chart.prototype._startHover = function _startHover (element, e) {\n if (this._suppressHover) {\n return false;\n }\n\n var point = this._drawingChartElement(element, e, function(element) {\n return (element.hover || element.over) && !(element instanceof PlotAreaBase);\n });\n\n this._showInactiveOpacity(point, e);\n\n return point;\n };\n\n Chart.prototype._displayTooltip = function _displayTooltip (point) {\n var tooltipOptions = deepExtend({}, this.options.tooltip, point.options.tooltip);\n if (tooltipOptions.visible) {\n this._tooltip.show(point);\n }\n };\n\n Chart.prototype._displayInactiveOpacity = function _displayInactiveOpacity (activePoint, multipleSeries, highlightPoints) {\n var chartInstance = this._activeChartInstance = this._chartInstanceFromPoint(activePoint);\n if (!chartInstance) {\n return;\n }\n\n if (multipleSeries) {\n this._updateSeriesOpacity(activePoint);\n this._applySeriesOpacity(chartInstance.children, null, true);\n this._applySeriesOpacity(chartInstance.children, activePoint.series);\n this._highlight.show(highlightPoints || activePoint);\n } else {\n var inactivePoints;\n\n if (!chartInstance.supportsPointInactiveOpacity()) {\n this._highlight.show(activePoint);\n return;\n }\n\n inactivePoints = this._getInactivePoints(activePoint, chartInstance);\n\n if (inactivePoints && inactivePoints.length) {\n this._highlight.show(inactivePoints, 1 - this._getInactiveOpacityForSeries(activePoint.series));\n }\n }\n };\n\n Chart.prototype._getInactivePoints = function _getInactivePoints (activePoint, chartInstance) {\n var allPoints = this._getAllPointsOfType(chartInstance, activePoint.constructor);\n\n return allPoints.filter(function (point) { return point !== activePoint; });\n };\n\n Chart.prototype._getAllPointsOfType = function _getAllPointsOfType (container, type) {\n var this$1 = this;\n\n var points = [];\n\n for (var i = 0; i < container.children.length; i++) {\n var element = container.children[i];\n\n if (element.constructor === type) {\n points.push(element);\n } else if (element.children && element.children.length) {\n points = points.concat(this$1._getAllPointsOfType(element, type));\n }\n }\n\n return points;\n };\n\n Chart.prototype._updateHoveredPoint = function _updateHoveredPoint (point, e) {\n var hoveredPoint = this._hoveredPoint;\n\n if (hoveredPoint && hoveredPoint !== point) {\n hoveredPoint.out(this, e);\n this._hoveredPoint = null;\n }\n\n if (point && hoveredPoint !== point && point.over) {\n this._hoveredPoint = point;\n point.over(this, e);\n }\n };\n\n Chart.prototype._updateSeriesOpacity = function _updateSeriesOpacity (point, resetOpacity) {\n var this$1 = this;\n\n var plotArea = this._plotArea;\n var length = plotArea.series.length;\n\n for (var i = 0; i < length; i++) {\n var currSeries = plotArea.series[i];\n var defaultOpacity = this$1._getDefaultOpacityForSeries(currSeries);\n var inactiveOpacity = this$1._getInactiveOpacityForSeries(currSeries);\n\n if (!resetOpacity && currSeries !== point.series) {\n currSeries.defaultOpacity = defaultOpacity;\n currSeries.opacity = inactiveOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = inactiveOpacity;\n }\n } else {\n currSeries.opacity = defaultOpacity;\n\n if (currSeries.line) {\n currSeries.line.opacity = defaultOpacity;\n }\n }\n }\n };\n\n Chart.prototype._applySeriesOpacity = function _applySeriesOpacity (elements, activeSeries, reset, series) {\n var this$1 = this;\n\n for (var i = 0; i < elements.length; i++) {\n var element = elements[i];\n var currSeries = element.series || series;\n var shouldHighlight = currSeries && (currSeries.highlight || {}).visible;\n\n if (shouldHighlight && element.visual) {\n var opacity = series ? series.opacity : element.series.opacity;\n if (currSeries !== activeSeries || reset) {\n element.visual.opacity(reset ? 1 : opacity);\n }\n }\n\n if (element.children && element.children.length) {\n this$1._applySeriesOpacity(element.children, activeSeries, reset, element.series);\n }\n }\n };\n\n Chart.prototype._chartInstanceFromPoint = function _chartInstanceFromPoint (point) {\n var chartInstance = point.parent;\n\n while (chartInstance && !chartInstance.plotArea) {\n chartInstance = chartInstance.parent;\n }\n\n return chartInstance;\n };\n\n Chart.prototype._showInactiveOpacity = function _showInactiveOpacity (point, e) {\n var activePoint = this._activePoint;\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n\n this._updateHoveredPoint(point, e);\n\n if (point && activePoint !== point && point.hover) {\n this._activePoint = point;\n\n if (!this._sharedTooltip() && !point.hover(this, e)) {\n this._displayTooltip(point);\n\n if (hasInactiveOpacity) {\n this._displayInactiveOpacity(point, multipleSeries);\n } else {\n this._highlight.show(point);\n }\n }\n }\n\n return point;\n };\n\n Chart.prototype._hideInactiveOpacity = function _hideInactiveOpacity (point) {\n var multipleSeries = this._plotArea.series.length > 1;\n var hasInactiveOpacity = this._hasInactiveOpacity();\n if (hasInactiveOpacity) {\n if (multipleSeries && this._activeChartInstance) {\n this._updateSeriesOpacity(point, true);\n this._applySeriesOpacity(this._activeChartInstance.children, null, true);\n this._activeChartInstance = null;\n }\n this._highlight && this._highlight.hide();\n this._activePoint = null;\n }\n };\n\n Chart.prototype._hasInactiveOpacity = function _hasInactiveOpacity () {\n var hasDefaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity !== undefined;\n var hasInactiveOpacity = this.options.series.filter(function (s) { return s.highlight.inactiveOpacity !== undefined; } ).length > 0;\n return hasDefaultInactiveOpacity || hasInactiveOpacity;\n };\n\n Chart.prototype._getInactiveOpacityForSeries = function _getInactiveOpacityForSeries (series) {\n var defaultInactiveOpacity = this.options.seriesDefaults.highlight.inactiveOpacity;\n var seriesInactiveOpacity = series.highlight.inactiveOpacity;\n return seriesInactiveOpacity || defaultInactiveOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n };\n\n Chart.prototype._getDefaultOpacityForSeries = function _getDefaultOpacityForSeries (series) {\n return series.defaultOpacity || series.opacity || DEFAULT_SERIES_OPACITY;\n };\n\n Chart.prototype._mouseover = function _mouseover (e) {\n var obj;\n\n var point = this._startHover(e.element, e.originalEvent);\n\n if (point && point.tooltipTracking && !this._mouseMoveTrackHandler && !this._sharedTooltip()) {\n this._mouseMoveTrackHandler = this._mouseMoveTracking.bind(this);\n bindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n }\n };\n\n Chart.prototype._mouseMoveTracking = function _mouseMoveTracking (e) {\n var obj;\n\n var ref = this;\n var options = ref.options;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n var point = ref._activePoint;\n var coords = this._eventCoordinates(e);\n\n if (this._plotArea.box.containsPoint(coords)) {\n if (point && point.tooltipTracking && point.series && point.parent.getNearestPoint) {\n var seriesPoint = point.parent.getNearestPoint(coords.x, coords.y, point.seriesIx);\n if (seriesPoint && seriesPoint !== point) {\n this._activePoint = seriesPoint;\n\n if (!seriesPoint.hover(this, e)) {\n var tooltipOptions = deepExtend({}, options.tooltip, seriesPoint.options.tooltip);\n if (tooltipOptions.visible) {\n tooltip.show(seriesPoint);\n }\n\n highlight.show(seriesPoint);\n }\n }\n }\n } else {\n unbindEvents(document, ( obj = {}, obj[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj ));\n this._unsetActivePoint();\n this._mouseMoveTrackHandler = null;\n\n this._hideInactiveOpacity(point);\n }\n };\n\n Chart.prototype._mousemove = function _mousemove (e) {\n var coords = this._eventCoordinates(e);\n var plotArea = this._plotArea;\n\n this._trackCrosshairs(coords);\n\n if (plotArea.hover) {\n var overPlotArea = plotArea.backgroundContainsPoint(coords);\n if (overPlotArea) {\n this._plotAreaHovered = true;\n this._plotArea.hover(this, e);\n } else if (this._plotAreaHovered && !overPlotArea) {\n this._plotAreaHovered = false;\n this.trigger(PLOT_AREA_LEAVE);\n }\n }\n\n if (this._sharedTooltip()) {\n this._trackSharedTooltip(coords, e);\n }\n };\n\n Chart.prototype._trackCrosshairs = function _trackCrosshairs (coords) {\n var crosshairs = this._plotArea.crosshairs;\n\n for (var i = 0; i < crosshairs.length; i++) {\n var current = crosshairs[i];\n\n if (current.box.containsPoint(coords)) {\n current.showAt(coords);\n } else {\n current.hide();\n }\n }\n };\n\n Chart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords, e, toggle) {\n if (this._suppressHover) {\n return;\n }\n\n var ref = this;\n var tooltipOptions = ref.options.tooltip;\n var plotArea = ref._plotArea;\n var categoryAxis = ref._plotArea.categoryAxis;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n if (plotArea.backgroundContainsPoint(coords)) {\n var index = categoryAxis.pointCategoryIndex(coords);\n if (index !== this._tooltipCategoryIx || (!this._sharedHighlight && toggle)) {\n var points = plotArea.pointsByCategoryIndex(index);\n var pointArgs = points.map(function(point) {\n return point.eventArgs(e);\n });\n var hoverArgs = pointArgs[0] || {};\n hoverArgs.categoryPoints = pointArgs;\n\n if (points.length > 0 && !this.trigger(SERIES_HOVER, hoverArgs)) {\n if (tooltipOptions.visible) {\n tooltip.showAt(points, coords);\n }\n\n highlight.show(points);\n\n this._sharedHighlight = true;\n } else {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = index;\n } else if (toggle && this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._sharedHighlight = false;\n }\n } else if (this._sharedHighlight) {\n highlight.hide();\n tooltip.hide();\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n }\n };\n\n Chart.prototype.hideElements = function hideElements (options) {\n var plotArea = this._plotArea;\n this._mousemove.cancel();\n\n plotArea.hideCrosshairs();\n\n this._unsetActivePoint(options);\n };\n\n Chart.prototype._unsetActivePoint = function _unsetActivePoint (options) {\n var ref = this;\n var tooltip = ref._tooltip;\n var highlight = ref._highlight;\n\n this._activePoint = null;\n this._hoveredPoint = null;\n\n if (tooltip && !(options && options.keepTooltipOpen)) {\n tooltip.hide();\n }\n\n this._tooltipCategoryIx = null;\n this._sharedHighlight = false;\n\n if (highlight) {\n highlight.hide();\n }\n };\n\n Chart.prototype._deferRedraw = function _deferRedraw () {\n this._redraw();\n };\n\n Chart.prototype._clearRedrawTimeout = function _clearRedrawTimeout () {\n if (this._redrawTimeout) {\n clearInterval(this._redrawTimeout);\n this._redrawTimeout = null;\n }\n };\n\n Chart.prototype.bindCategories = function bindCategories () {\n var this$1 = this;\n\n var options = this.options;\n var definitions = [].concat(options.categoryAxis);\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.autoBind !== false) {\n this$1.bindCategoryAxisFromSeries(axis, axisIx);\n }\n }\n };\n\n Chart.prototype.bindCategoryAxisFromSeries = function bindCategoryAxisFromSeries (axis, axisIx) {\n var this$1 = this;\n\n var series = this.options.series;\n var seriesLength = series.length;\n var uniqueCategories = new HashMap();//perf improvement in case type category with dates\n var items = [];\n var bindable = false;\n var dateAxis;\n\n for (var seriesIx = 0; seriesIx < seriesLength; seriesIx++) {\n var s = series[seriesIx];\n var onAxis = s.categoryAxis === axis.name || (!s.categoryAxis && axisIx === 0);\n var data = s.data;\n var dataLength = data.length;\n var bind = s.categoryField && onAxis;\n bindable = bind || bindable;\n\n if (bind && dataLength > 0) {\n dateAxis = isDateAxis(axis, getField(s.categoryField, data[0]));\n\n var getFn = dateAxis ? getDateField : getField;\n\n for (var dataIx = 0; dataIx < dataLength; dataIx++) {\n var dataRow = data[dataIx];\n var category = getFn(s.categoryField, dataRow, this$1.chartService.intl);\n\n if (dateAxis || !uniqueCategories.get(category)) {\n items.push([ category, dataRow ]);\n\n if (!dateAxis) {\n uniqueCategories.set(category, true);\n }\n }\n }\n }\n }\n\n if (items.length > 0) {\n if (dateAxis) {\n items = uniqueDates(items, function(a, b) {\n return dateComparer(a[0], b[0]);\n });\n }\n\n var result = transpose(items);\n axis.categories = result[0];\n } else if (bindable) {\n axis.categories = [];\n }\n };\n\n Chart.prototype._isBindable = function _isBindable (series) {\n var valueFields = SeriesBinder.current.valueFields(series);\n var result = true;\n\n for (var i = 0; i < valueFields.length; i++) {\n var field = valueFields[i];\n if (field === VALUE) {\n field = \"field\";\n } else {\n field = field + \"Field\";\n }\n\n if (!defined(series[field])) {\n result = false;\n break;\n }\n }\n\n return result;\n };\n\n Chart.prototype._noTransitionsRedraw = function _noTransitionsRedraw () {\n var options = this.options;\n var transitionsState;\n\n if (options.transitions !== false) {\n options.transitions = false;\n transitionsState = true;\n }\n\n this._redraw();\n\n if (transitionsState) {\n options.transitions = true;\n }\n };\n\n Chart.prototype._legendItemHover = function _legendItemHover (seriesIndex, pointIndex) {\n var ref = this;\n var plotArea = ref._plotArea;\n var highlight = ref._highlight;\n var currentSeries = (plotArea.srcSeries || plotArea.series)[seriesIndex];\n var items;\n\n if (inArray(currentSeries.type, [ PIE, DONUT, FUNNEL ])) {\n items = plotArea.findPoint(function(point) {\n return point.series.index === seriesIndex && point.index === pointIndex;\n });\n } else {\n items = plotArea.pointsBySeriesIndex(seriesIndex);\n }\n\n if (this._hasInactiveOpacity() && currentSeries.visible && items) {\n var multipleSeries = plotArea.series.length > 1;\n var point = items.length ? items[0] : items;\n\n this._displayInactiveOpacity(point, multipleSeries, items);\n } else {\n highlight.show(items);\n }\n };\n\n Chart.prototype._shouldAttachMouseMove = function _shouldAttachMouseMove () {\n return this._plotArea.crosshairs.length || (this._tooltip && this._sharedTooltip()) || this.requiresHandlers([ PLOT_AREA_HOVER, PLOT_AREA_LEAVE ]);\n };\n\n Chart.prototype.updateMouseMoveHandler = function updateMouseMoveHandler () {\n var obj, obj$1;\n\n unbindEvents(this.element, ( obj = {}, obj[ MOUSEMOVE ] = this._mousemove, obj ));\n\n if (this._shouldAttachMouseMove()) {\n bindEvents(this.element, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mousemove, obj$1 ));\n }\n };\n\n Chart.prototype.applyOptions = function applyOptions (options, theme) {\n clearMissingValues(this._originalOptions, options);\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n if (theme) {\n this._theme = theme;\n this.chartService.theme = theme;\n }\n this._initTheme(this.options, this._theme);\n\n this._toggleDragZoomEvents();\n };\n\n Chart.prototype.setOptions = function setOptions (options, theme) {\n this.applyOptions(options, theme);\n this.bindCategories();\n this.redraw();\n this.updateMouseMoveHandler();\n };\n\n Chart.prototype.setDirection = function setDirection (rtl) {\n this.chartService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this._destroySurface();\n }\n };\n\n Chart.prototype.setIntlService = function setIntlService (intl) {\n this.chartService.intl = intl;\n };\n\n Chart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n this._noTransitionsRedraw();\n };\n\n Chart.prototype.destroy = function destroy () {\n var obj, obj$1;\n\n this._destroyed = true;\n\n unbindEvents(this.element, ( obj = {}, obj[ CONTEXTMENU ] = this._clickHandler, obj[ MOUSEWHEEL ] = this._mousewheelHandler, obj[ MOUSEMOVE ] = this._mousemove, obj[ MOUSELEAVE ] = this._mouseleaveHandler, obj ));\n\n if (this.domEvents) {\n this.domEvents.destroy();\n delete this.domEvents;\n }\n\n if (this._mouseMoveTrackHandler) {\n unbindEvents(document, ( obj$1 = {}, obj$1[ MOUSEMOVE ] = this._mouseMoveTrackHandler, obj$1 ));\n }\n\n this._destroyView();\n\n this._destroySurface();\n\n this._clearRedrawTimeout();\n };\n\n Chart.prototype._destroySurface = function _destroySurface () {\n var surface = this.surface;\n if (surface) {\n surface.unbind(\"mouseenter\", this._surfaceMouseenterHandler);\n surface.unbind(\"mouseleave\", this._surfaceMouseleaveHandler);\n surface.destroy();\n\n this.surface = null;\n }\n };\n\n Chart.prototype._destroySelections = function _destroySelections () {\n var selections = this._selections;\n\n if (selections) {\n while (selections.length > 0) {\n selections.shift().destroy();\n }\n }\n };\n\n Chart.prototype._destroyView = function _destroyView () {\n var model = this._model;\n\n if (model) {\n model.destroy();\n this._model = null;\n }\n\n this._unsetActivePoint();\n\n this._destroySelections();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this._highlight) {\n this._highlight.destroy();\n }\n\n if (this._zoomSelection) {\n this._zoomSelection.destroy();\n delete this._zoomSelection;\n }\n\n if (this._pannable) {\n this._pannable.destroy();\n delete this._pannable;\n }\n\n if (this._mousewheelZoom) {\n this._mousewheelZoom.destroy();\n delete this._mousewheelZoom;\n }\n };\n\n return Chart;\n}(Class));\n\nfunction resolveAxisAliases(options) {\n var aliases = AXIS_NAMES;\n\n for (var idx = 0; idx < aliases.length; idx++) {\n var alias = aliases[idx] + \"Axes\";\n if (options[alias]) {\n options[aliases[idx] + \"Axis\"] = options[alias];\n delete options[alias];\n }\n }\n}\n\nfunction pointByCategoryName(points, name) {\n if (points) {\n for (var idx = 0; idx < points.length; idx++) {\n if (points[idx].category === name) {\n return [ points[idx] ];\n }\n }\n }\n}\n\nfunction applyAxisDefaults(options, themeOptions) {\n var themeAxisDefaults = ((themeOptions || {}).axisDefaults) || {};\n var axisName, axisDefaults, axes;\n\n function mapAxisOptions(axisOptions) {\n var axisColor = (axisOptions || {}).color || axisDefaults.color;\n var result = deepExtend({},\n themeAxisDefaults,\n themeAxisDefaults[axisName],\n axisDefaults,\n axisDefaults[axisName], {\n line: { color: axisColor },\n labels: { color: axisColor },\n title: { color: axisColor }\n },\n axisOptions\n );\n\n delete result[axisName];\n\n return result;\n }\n\n for (var idx = 0; idx < AXIS_NAMES.length; idx++) {\n axisName = AXIS_NAMES[idx] + \"Axis\";\n axisDefaults = options.axisDefaults || {};\n axes = [].concat(options[axisName]);\n\n axes = axes.map(mapAxisOptions);\n\n options[axisName] = axes.length > 1 ? axes : axes[0];\n }\n}\n\nfunction applySeriesDefaults(options, themeOptions) {\n var series = options.series;\n var seriesLength = series.length;\n var seriesDefaults = options.seriesDefaults;\n var commonDefaults = deepExtend({}, options.seriesDefaults);\n var themeSeriesDefaults = themeOptions ? deepExtend({}, themeOptions.seriesDefaults) : {};\n var commonThemeDefaults = deepExtend({}, themeSeriesDefaults);\n\n cleanupNestedSeriesDefaults(commonDefaults);\n cleanupNestedSeriesDefaults(commonThemeDefaults);\n\n for (var i = 0; i < seriesLength; i++) {\n var seriesType = series[i].type || options.seriesDefaults.type;\n\n var baseOptions = deepExtend(\n { data: [] },\n commonThemeDefaults,\n themeSeriesDefaults[seriesType],\n { tooltip: options.tooltip },\n commonDefaults,\n seriesDefaults[seriesType]\n );\n\n series[i]._defaults = baseOptions;\n series[i] = deepExtend({}, baseOptions, series[i]);\n series[i].data = series[i].data || [];\n }\n}\n\nfunction cleanupNestedSeriesDefaults(seriesDefaults) {\n delete seriesDefaults.bar;\n delete seriesDefaults.column;\n delete seriesDefaults.rangeColumn;\n delete seriesDefaults.line;\n delete seriesDefaults.verticalLine;\n delete seriesDefaults.pie;\n delete seriesDefaults.donut;\n delete seriesDefaults.area;\n delete seriesDefaults.verticalArea;\n delete seriesDefaults.scatter;\n delete seriesDefaults.scatterLine;\n delete seriesDefaults.bubble;\n delete seriesDefaults.candlestick;\n delete seriesDefaults.ohlc;\n delete seriesDefaults.boxPlot;\n delete seriesDefaults.bullet;\n delete seriesDefaults.verticalBullet;\n delete seriesDefaults.polarArea;\n delete seriesDefaults.polarLine;\n delete seriesDefaults.radarArea;\n delete seriesDefaults.radarLine;\n delete seriesDefaults.waterfall;\n}\n\n\nfunction axisRanges(axes) {\n var ranges = {};\n\n for (var i = 0; i < axes.length; i++) {\n var axis = axes[i];\n var axisName = axis.options.name;\n if (axisName) {\n ranges[axisName] = axis.range();\n }\n }\n\n return ranges;\n}\n\nfunction sortDates(dates, comparer) {\n if ( comparer === void 0 ) comparer = dateComparer;\n\n for (var i = 1, length = dates.length; i < length; i++) {\n if (comparer(dates[i], dates[i - 1]) < 0) {\n dates.sort(comparer);\n break;\n }\n }\n\n return dates;\n}\n\nfunction uniqueDates(srcDates, comparer) {\n if ( comparer === void 0 ) comparer = dateComparer;\n\n var dates = sortDates(srcDates, comparer);\n var length = dates.length;\n var result = length > 0 ? [ dates[0] ] : [];\n\n for (var i = 1; i < length; i++) {\n if (comparer(dates[i], last(result)) !== 0) {\n result.push(dates[i]);\n }\n }\n\n return result;\n}\n\nfunction transpose(rows) {\n var rowCount = rows.length;\n var result = [];\n\n for (var rowIx = 0; rowIx < rowCount; rowIx++) {\n var row = rows[rowIx];\n var colCount = row.length;\n\n for (var colIx = 0; colIx < colCount; colIx++) {\n result[colIx] = result[colIx] || [];\n result[colIx].push(row[colIx]);\n }\n }\n\n return result;\n}\n\nvar DATA_FIELDS = [ 'data', 'categories' ];\n\nfunction clearMissingValues(originalOptions, options) {\n for (var field in options) {\n if (!inArray(field, DATA_FIELDS) && options.hasOwnProperty(field)) {\n var fieldValue = options[field];\n var originalValue = originalOptions[field];\n if (defined(originalValue)) {\n var nullValue = fieldValue === null;\n if ((nullValue || !defined(fieldValue))) {\n delete originalOptions[field];\n if (nullValue) {\n delete options[field];\n }\n } else if (originalValue && isObject(fieldValue)) {\n if (isObject(originalValue)) {\n clearMissingValues(originalValue, fieldValue);\n }\n }\n }\n }\n }\n}\n\nfunction triggerPaneRender(panes) {\n for (var idx = 0; idx < panes.length; idx++) {\n panes[idx].notifyRender();\n }\n}\n\nsetDefaultOptions(Chart, {\n renderAs: \"\",\n chartArea: {},\n legend: {\n visible: true,\n labels: {}\n },\n categoryAxis: {},\n seriesDefaults: {\n type: COLUMN,\n data: [],\n highlight: {\n visible: true\n },\n labels: {},\n negativeValues: {\n visible: false\n }\n },\n series: [],\n seriesColors: null,\n tooltip: {\n visible: false\n },\n transitions: true,\n valueAxis: {},\n plotArea: {},\n title: {},\n xAxis: {},\n yAxis: {},\n panes: [ {} ],\n pannable: false,\n zoomable: false\n});\n\nexport default Chart;\n","import { SharedTooltip as ChartSharedTooltip } from '../chart';\nimport { Point } from '../core';\nvar TOP_OFFSET = -2;\n\nvar SharedTooltip = (function (ChartSharedTooltip) {\n function SharedTooltip () {\n ChartSharedTooltip.apply(this, arguments);\n }\n\n if ( ChartSharedTooltip ) SharedTooltip.__proto__ = ChartSharedTooltip;\n SharedTooltip.prototype = Object.create( ChartSharedTooltip && ChartSharedTooltip.prototype );\n SharedTooltip.prototype.constructor = SharedTooltip;\n\n SharedTooltip.prototype._slotAnchor = function _slotAnchor (coords, slot) {\n var axis = this.plotArea.categoryAxis;\n var vertical = axis.options.vertical;\n var align = vertical ? {\n horizontal: \"left\",\n vertical: \"center\"\n } : {\n horizontal: \"center\",\n vertical: \"bottom\"\n };\n\n var point;\n\n if (vertical) {\n point = new Point(this.plotArea.box.x2, slot.center().y);\n } else {\n point = new Point(slot.center().x, TOP_OFFSET);\n }\n\n return {\n point: point,\n align: align\n };\n };\n\n SharedTooltip.prototype._defaultAnchor = function _defaultAnchor (point, slot) {\n return this._slotAnchor({}, slot);\n };\n\n return SharedTooltip;\n}(ChartSharedTooltip));\n\nexport default SharedTooltip;","import { Chart } from '../chart';\nimport { BAR, BULLET, PIE, COLUMN, VERTICAL_BULLET } from '../chart/constants';\nimport{ addClass, deepExtend, elementSize, getSpacing, inArray, isArray, isNumber, setDefaultOptions } from '../common';\nimport SharedTooltip from './shared-tooltip';\n\nvar DEAULT_BAR_WIDTH = 150;\nvar DEAULT_BULLET_WIDTH = 150;\nvar NO_CROSSHAIR = [ BAR, BULLET ];\n\nfunction hide(children) {\n var state = [];\n for (var idx = 0; idx < children.length; idx++) {\n var child = children[idx];\n state[idx] = child.style.display;\n child.style.display = \"none\";\n }\n\n return state;\n}\n\nfunction show(children, state) {\n for (var idx = 0; idx < children.length; idx++) {\n children[idx].style.display = state[idx];\n }\n}\n\nfunction wrapNumber(value) {\n return isNumber(value) ? [ value ] : value;\n}\n\nvar Sparkline = (function (Chart) {\n function Sparkline () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) Sparkline.__proto__ = Chart;\n Sparkline.prototype = Object.create( Chart && Chart.prototype );\n Sparkline.prototype.constructor = Sparkline;\n\n Sparkline.prototype._setElementClass = function _setElementClass (element) {\n addClass(element, 'k-sparkline');\n };\n\n Sparkline.prototype._initElement = function _initElement (element) {\n Chart.prototype._initElement.call(this, element);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n };\n\n Sparkline.prototype._resize = function _resize () {\n var element = this.element;\n var state = hide(element.childNodes);\n\n this._initialWidth = Math.floor(elementSize(element).width);\n\n show(element.childNodes, state);\n\n Chart.prototype._resize.call(this);\n };\n\n Sparkline.prototype._modelOptions = function _modelOptions () {\n var chartOptions = this.options;\n var stage = this._surfaceWrap();\n var displayState = hide(stage.childNodes);\n\n var space = document.createElement('span');\n space.innerHTML = ' ';\n\n stage.appendChild(space);\n\n var options = deepExtend({\n width: this._autoWidth,\n height: elementSize(stage).height,\n transitions: chartOptions.transitions\n }, chartOptions.chartArea, {\n inline: true,\n align: false\n });\n\n elementSize(stage, {\n width: options.width,\n height: options.height\n });\n\n stage.removeChild(space);\n\n show(stage.childNodes, displayState);\n\n if (this.surface) {\n this.surface.resize();\n }\n\n return options;\n };\n\n Sparkline.prototype._surfaceWrap = function _surfaceWrap () {\n if (!this.stage) {\n var stage = this.stage = document.createElement('span');\n this.element.appendChild(stage);\n }\n return this.stage;\n };\n\n Sparkline.prototype._createPlotArea = function _createPlotArea (skipSeries) {\n var plotArea = Chart.prototype._createPlotArea.call(this, skipSeries);\n this._autoWidth = this._initialWidth || this._calculateWidth(plotArea);\n\n return plotArea;\n };\n\n Sparkline.prototype._calculateWidth = function _calculateWidth (plotArea) {\n var options = this.options;\n var margin = getSpacing(options.chartArea.margin);\n var charts = plotArea.charts;\n var stage = this._surfaceWrap();\n var total = 0;\n\n\n for (var i = 0; i < charts.length; i++) {\n var currentChart = charts[i];\n var firstSeries = (currentChart.options.series || [])[0];\n if (!firstSeries) {\n continue;\n }\n\n if (firstSeries.type === BAR) {\n return DEAULT_BAR_WIDTH;\n }\n\n if (firstSeries.type === BULLET) {\n return DEAULT_BULLET_WIDTH;\n }\n\n if (firstSeries.type === PIE) {\n return elementSize(stage).height;\n }\n\n var categoryAxis = currentChart.categoryAxis;\n if (categoryAxis) {\n var pointsCount = categoryAxis.categoriesCount() *\n (!currentChart.options.isStacked && inArray(firstSeries.type, [ COLUMN, VERTICAL_BULLET ]) ? currentChart.seriesOptions.length : 1);\n\n total = Math.max(total, pointsCount);\n }\n }\n\n var size = total * options.pointWidth;\n if (size > 0) {\n size += margin.left + margin.right;\n }\n\n return size;\n };\n\n Sparkline.prototype._createSharedTooltip = function _createSharedTooltip (options) {\n return new SharedTooltip(this._plotArea, options);\n };\n\n Sparkline.normalizeOptions = function normalizeOptions (userOptions) {\n var options = wrapNumber(userOptions);\n\n if (isArray(options)) {\n options = { seriesDefaults: { data: options } };\n } else {\n options = deepExtend({}, options);\n }\n\n if (!options.series) {\n options.series = [ { data: wrapNumber(options.data) } ];\n }\n\n deepExtend(options, {\n seriesDefaults: {\n type: options.type\n }\n });\n\n if (inArray(options.series[0].type, NO_CROSSHAIR) ||\n inArray(options.seriesDefaults.type, NO_CROSSHAIR)) {\n options = deepExtend({}, {\n categoryAxis: {\n crosshair: {\n visible: false\n }\n }\n }, options);\n }\n\n return options;\n };\n\n return Sparkline;\n}(Chart));\n\nsetDefaultOptions(Sparkline, {\n chartArea: {\n margin: 2\n },\n axisDefaults: {\n visible: false,\n majorGridLines: {\n visible: false\n },\n valueAxis: {\n narrowRange: true\n }\n },\n seriesDefaults: {\n type: \"line\",\n area: {\n line: {\n width: 0.5\n }\n },\n bar: {\n stack: true\n },\n padding: 2,\n width: 0.5,\n overlay: {\n gradient: null\n },\n highlight: {\n visible: false\n },\n border: {\n width: 0\n },\n markers: {\n size: 2,\n visible: false\n }\n },\n tooltip: {\n visible: true,\n shared: true\n },\n categoryAxis: {\n crosshair: {\n visible: true,\n tooltip: {\n visible: false\n }\n }\n },\n legend: {\n visible: false\n },\n transitions: false,\n\n pointWidth: 5,\n\n panes: [ { clip: false } ]\n});\n\nexport default Sparkline;","import { drawing as draw } from '@progress/kendo-drawing';\n\nimport { interpolateValue, elementStyles } from '../common';\n\nvar FadeOutAnimation = (function (superclass) {\n function FadeOutAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) FadeOutAnimation.__proto__ = superclass;\n FadeOutAnimation.prototype = Object.create( superclass && superclass.prototype );\n FadeOutAnimation.prototype.constructor = FadeOutAnimation;\n\n FadeOutAnimation.prototype.setup = function setup () {\n this._initialOpacity = parseFloat(elementStyles(this.element, 'opacity').opacity);\n };\n\n FadeOutAnimation.prototype.step = function step (pos) {\n elementStyles(this.element, {\n opacity: String(interpolateValue(this._initialOpacity, 0, pos))\n });\n };\n\n FadeOutAnimation.prototype.abort = function abort () {\n superclass.prototype.abort.call(this);\n elementStyles(this.element, {\n display: 'none',\n opacity: String(this._initialOpacity)\n });\n };\n\n FadeOutAnimation.prototype.cancel = function cancel () {\n superclass.prototype.abort.call(this);\n elementStyles(this.element, {\n opacity: String(this._initialOpacity)\n });\n };\n\n return FadeOutAnimation;\n}(draw.Animation));\n\nexport default FadeOutAnimation;","import { Class, deepExtend, elementStyles, getTemplate, setDefaultOptions } from '../common';\nimport { toDate, toTime } from '../date-utils';\nimport FadeOutAnimation from './fade-out-animation';\n\nfunction createDiv(className, style) {\n var div = document.createElement(\"div\");\n div.className = className;\n if (style) {\n div.style.cssText = style;\n }\n\n return div;\n}\n\nvar NavigatorHint = (function (Class) {\n function NavigatorHint(container, chartService, options) {\n Class.call(this);\n\n this.options = deepExtend({}, this.options, options);\n this.container = container;\n this.chartService = chartService;\n\n var padding = elementStyles(container, [ \"paddingLeft\", \"paddingTop\" ]);\n this.chartPadding = {\n top: padding.paddingTop,\n left: padding.paddingLeft\n };\n\n this.createElements();\n container.appendChild(this.element);\n }\n\n if ( Class ) NavigatorHint.__proto__ = Class;\n NavigatorHint.prototype = Object.create( Class && Class.prototype );\n NavigatorHint.prototype.constructor = NavigatorHint;\n\n NavigatorHint.prototype.createElements = function createElements () {\n var element = this.element = createDiv('k-navigator-hint', 'display: none; position: absolute; top: 1px; left: 1px;');\n var tooltip = this.tooltip = createDiv('k-tooltip k-chart-tooltip');\n var scroll = this.scroll = createDiv('k-scroll');\n\n tooltip.innerHTML = ' ';\n\n element.appendChild(tooltip);\n element.appendChild(scroll);\n };\n\n NavigatorHint.prototype.show = function show (from, to, bbox) {\n var ref = this;\n var element = ref.element;\n var options = ref.options;\n var scroll = ref.scroll;\n var tooltip = ref.tooltip;\n var middle = toDate(toTime(from) + toTime(to - from) / 2);\n var scrollWidth = bbox.width() * 0.4;\n var minPos = bbox.center().x - scrollWidth;\n var maxPos = bbox.center().x;\n var posRange = maxPos - minPos;\n var range = options.max - options.min;\n var scale = posRange / range;\n var offset = middle - options.min;\n var text = this.chartService.intl.format(options.format, from, to);\n var template = getTemplate(options);\n\n this.clearHideTimeout();\n\n if (!this._visible) {\n elementStyles(element, {\n visibility: 'hidden',\n display: 'block'\n });\n this._visible = true;\n }\n\n if (template) {\n text = template({\n from: from,\n to: to\n });\n }\n\n tooltip.innerHTML = text;\n elementStyles(tooltip, {\n left: bbox.center().x - tooltip.offsetWidth / 2,\n top: bbox.y1\n });\n\n var tooltipStyle = elementStyles(tooltip, [ 'marginTop', 'borderTopWidth', 'height' ]);\n\n elementStyles(scroll, {\n width: scrollWidth,\n left: minPos + offset * scale,\n top: bbox.y1 + tooltipStyle.marginTop + tooltipStyle.borderTopWidth + tooltipStyle.height / 2\n });\n\n elementStyles(element, {\n visibility: 'visible'\n });\n };\n\n NavigatorHint.prototype.clearHideTimeout = function clearHideTimeout () {\n if (this._hideTimeout) {\n clearTimeout(this._hideTimeout);\n }\n\n if (this._hideAnimation) {\n this._hideAnimation.cancel();\n }\n };\n\n NavigatorHint.prototype.hide = function hide () {\n var this$1 = this;\n\n this.clearHideTimeout();\n\n this._hideTimeout = setTimeout(function () {\n this$1._visible = false;\n this$1._hideAnimation = new FadeOutAnimation(this$1.element);\n this$1._hideAnimation.setup();\n this$1._hideAnimation.play();\n }, this.options.hideDelay);\n };\n\n NavigatorHint.prototype.destroy = function destroy () {\n this.clearHideTimeout();\n if (this.container) {\n this.container.removeChild(this.element);\n }\n delete this.container;\n delete this.chartService;\n delete this.element;\n delete this.tooltip;\n delete this.scroll;\n };\n\n return NavigatorHint;\n}(Class));\n\nsetDefaultOptions(NavigatorHint, {\n format: \"{0:d} - {1:d}\",\n hideDelay: 500\n});\n\nexport default NavigatorHint;","var NAVIGATOR_PANE = \"_navigator\";\nvar NAVIGATOR_AXIS = NAVIGATOR_PANE;\n\nexport { NAVIGATOR_AXIS, NAVIGATOR_PANE };","import NavigatorHint from './navigator-hint';\nimport { Selection, filterSeriesByType } from '../chart';\nimport { DRAG, DRAG_END, EQUALLY_SPACED_SERIES, ZOOM, ZOOM_END } from '../chart/constants';\nimport { DateCategoryAxis } from '../core';\nimport { addDuration, parseDate, toDate, toTime } from '../date-utils';\nimport { Class, deepExtend, defined, getTemplate, InstanceObserver, last, limitValue, valueOrDefault } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nvar ZOOM_ACCELERATION = 3;\n\nvar Navigator = (function (Class) {\n function Navigator(chart) {\n var obj;\n\n Class.call(this);\n\n this.chart = chart;\n var options = this.options = deepExtend({}, this.options, chart.options.navigator);\n var select = options.select;\n if (select) {\n select.from = this.parseDate(select.from);\n select.to = this.parseDate(select.to);\n }\n\n if (!defined(options.hint.visible)) {\n options.hint.visible = options.visible;\n }\n\n this.chartObserver = new InstanceObserver(this, ( obj = {}, obj[DRAG] = '_drag', obj[DRAG_END] = '_dragEnd', obj[ZOOM] = '_zoom', obj[ZOOM_END] = '_zoomEnd', obj ));\n chart.addObserver(this.chartObserver);\n }\n\n if ( Class ) Navigator.__proto__ = Class;\n Navigator.prototype = Object.create( Class && Class.prototype );\n Navigator.prototype.constructor = Navigator;\n\n Navigator.prototype.parseDate = function parseDate$1 (value) {\n return parseDate(this.chart.chartService.intl, value);\n };\n\n Navigator.prototype.clean = function clean () {\n if (this.selection) {\n this.selection.destroy();\n this.selection = null;\n }\n\n if (this.hint) {\n this.hint.destroy();\n this.hint = null;\n }\n };\n\n Navigator.prototype.destroy = function destroy () {\n if (this.chart) {\n this.chart.removeObserver(this.chartObserver);\n delete this.chart;\n }\n\n this.clean();\n };\n\n Navigator.prototype.redraw = function redraw () {\n this._redrawSelf();\n this.initSelection();\n };\n\n Navigator.prototype.initSelection = function initSelection () {\n var ref = this;\n var chart = ref.chart;\n var options = ref.options;\n var axis = this.mainAxis();\n var ref$1 = axis.roundedRange();\n var min = ref$1.min;\n var max = ref$1.max;\n var ref$2 = options.select;\n var from = ref$2.from;\n var to = ref$2.to;\n var mousewheel = ref$2.mousewheel;\n var axisClone = clone(axis);\n\n if (axis.categoriesCount() === 0) {\n return;\n }\n\n this.clean();\n\n // \"Freeze\" the selection axis position until the next redraw\n axisClone.box = axis.box;\n\n this.selection = new Selection(chart, axisClone, {\n min: min,\n max: max,\n from: from || min,\n to: to || max,\n mousewheel: valueOrDefault(mousewheel, { zoom: \"left\" }),\n visible: options.visible\n }, new InstanceObserver(this, {\n selectStart: '_selectStart',\n select: '_select',\n selectEnd: '_selectEnd'\n }));\n\n if (options.hint.visible) {\n this.hint = new NavigatorHint(chart.element, chart.chartService, {\n min: min,\n max: max,\n template: getTemplate(options.hint),\n format: options.hint.format\n });\n }\n };\n\n Navigator.prototype.setRange = function setRange () {\n var plotArea = this.chart._createPlotArea(true);\n var axis = plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n\n var ref = axis.roundedRange();\n var min = ref.min;\n var max = ref.max;\n\n var select = this.options.select || {};\n var from = select.from || min;\n if (from < min) {\n from = min;\n }\n\n var to = select.to || max;\n if (to > max) {\n to = max;\n }\n\n this.options.select = deepExtend({}, select, {\n from: from,\n to: to\n });\n\n this.filterAxes();\n };\n\n Navigator.prototype._redrawSelf = function _redrawSelf (silent) {\n var plotArea = this.chart._plotArea;\n\n if (plotArea) {\n plotArea.redraw(last(plotArea.panes), silent);\n }\n };\n\n Navigator.prototype.redrawSlaves = function redrawSlaves () {\n var chart = this.chart;\n var plotArea = chart._plotArea;\n var slavePanes = plotArea.panes.slice(0, -1);\n\n // Update the original series and categoryAxis before partial refresh.\n plotArea.srcSeries = chart.options.series;\n plotArea.options.categoryAxis = chart.options.categoryAxis;\n plotArea.clearSeriesPointsCache();\n\n plotArea.redraw(slavePanes);\n };\n\n Navigator.prototype._drag = function _drag (e) {\n var ref = this;\n var chart = ref.chart;\n var selection = ref.selection;\n var coords = chart._eventCoordinates(e.originalEvent);\n var navigatorAxis = this.mainAxis();\n var naviRange = navigatorAxis.roundedRange();\n var inNavigator = navigatorAxis.pane.box.containsPoint(coords);\n var axis = chart._plotArea.categoryAxis;\n var range = e.axisRanges[axis.options.name];\n var select = this.options.select;\n var duration;\n\n if (!range || inNavigator || !selection) {\n return;\n }\n\n if (select.from && select.to) {\n duration = toTime(select.to) - toTime(select.from);\n } else {\n duration = toTime(selection.options.to) - toTime(selection.options.from);\n }\n\n var from = toDate(limitValue(\n toTime(range.min),\n naviRange.min, toTime(naviRange.max) - duration\n ));\n\n var to = toDate(limitValue(\n toTime(from) + duration,\n toTime(naviRange.min) + duration, naviRange.max\n ));\n\n this.options.select = { from: from, to: to };\n\n if (this.options.liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(from, to);\n\n this.showHint(from, to);\n };\n\n Navigator.prototype._dragEnd = function _dragEnd () {\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n if (this.hint) {\n this.hint.hide();\n }\n };\n\n Navigator.prototype.readSelection = function readSelection () {\n var ref = this;\n var ref_selection_options = ref.selection.options;\n var from = ref_selection_options.from;\n var to = ref_selection_options.to;\n var select = ref.options.select;\n\n select.from = from;\n select.to = to;\n };\n\n Navigator.prototype.filterAxes = function filterAxes () {\n var ref = this;\n var select = ref.options.select; if ( select === void 0 ) select = { };\n var chart = ref.chart;\n var allAxes = chart.options.categoryAxis;\n var from = select.from;\n var to = select.to;\n\n for (var idx = 0; idx < allAxes.length; idx++) {\n var axis = allAxes[idx];\n if (axis.pane !== NAVIGATOR_PANE) {\n axis.min = from;\n axis.max = to;\n }\n }\n };\n\n Navigator.prototype.filter = function filter () {\n var ref = this;\n var chart = ref.chart;\n var select = ref.options.select;\n\n if (!chart.requiresHandlers([ \"navigatorFilter\" ])) {\n return;\n }\n\n var mainAxis = this.mainAxis();\n var args = {\n from: select.from,\n to: select.to\n };\n\n if (mainAxis.options.type !== 'category') {\n var axisOptions = new DateCategoryAxis(deepExtend({\n baseUnit: \"fit\"\n }, chart.options.categoryAxis[0], {\n categories: [ select.from, select.to ]\n }), chart.chartService).options;\n\n args.from = addDuration(axisOptions.min, -axisOptions.baseUnitStep, axisOptions.baseUnit);\n args.to = addDuration(axisOptions.max, axisOptions.baseUnitStep, axisOptions.baseUnit);\n }\n\n this.chart.trigger(\"navigatorFilter\", args);\n };\n\n Navigator.prototype._zoom = function _zoom (e) {\n var ref = this;\n var axis = ref.chart._plotArea.categoryAxis;\n var selection = ref.selection;\n var ref_options = ref.options;\n var select = ref_options.select;\n var liveDrag = ref_options.liveDrag;\n var mainAxis = this.mainAxis();\n var delta = e.delta;\n\n if (!selection) {\n return;\n }\n\n var fromIx = mainAxis.categoryIndex(selection.options.from);\n var toIx = mainAxis.categoryIndex(selection.options.to);\n var coords = this.chart._eventCoordinates(e.originalEvent);\n\n e.originalEvent.preventDefault();\n\n if (Math.abs(delta) > 1) {\n delta *= ZOOM_ACCELERATION;\n }\n\n if (toIx - fromIx > 1) {\n selection.zoom(delta, coords);\n this.readSelection();\n } else {\n axis.options.min = select.from;\n select.from = axis.scaleRange(-e.delta * this.chart._mousewheelZoomRate(), coords).min;\n }\n\n if (liveDrag) {\n this.filterAxes();\n this.redrawSlaves();\n }\n\n selection.set(select.from, select.to);\n\n this.showHint(this.options.select.from, this.options.select.to);\n };\n\n Navigator.prototype._zoomEnd = function _zoomEnd (e) {\n this._dragEnd(e);\n };\n\n Navigator.prototype.showHint = function showHint (from, to) {\n var plotArea = this.chart._plotArea;\n\n if (this.hint) {\n this.hint.show(from, to, plotArea.backgroundBox());\n }\n };\n\n Navigator.prototype._selectStart = function _selectStart (e) {\n return this.chart._selectStart(e);\n };\n\n Navigator.prototype._select = function _select (e) {\n this.showHint(e.from, e.to);\n\n return this.chart._select(e);\n };\n\n Navigator.prototype._selectEnd = function _selectEnd (e) {\n if (this.hint) {\n this.hint.hide();\n }\n\n this.readSelection();\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n return this.chart._selectEnd(e);\n };\n\n Navigator.prototype.mainAxis = function mainAxis () {\n var plotArea = this.chart._plotArea;\n\n if (plotArea) {\n return plotArea.namedCategoryAxes[NAVIGATOR_AXIS];\n }\n };\n\n Navigator.prototype.select = function select (from, to) {\n var select = this.options.select;\n\n if (from && to) {\n select.from = this.parseDate(from);\n select.to = this.parseDate(to);\n\n this.filterAxes();\n this.filter();\n this.redrawSlaves();\n\n this.selection.set(from, to);\n }\n\n return {\n from: select.from,\n to: select.to\n };\n };\n\n Navigator.setup = function setup (options, themeOptions) {\n if ( options === void 0 ) options = {};\n if ( themeOptions === void 0 ) themeOptions = {};\n\n if (options.__navi) {\n return;\n }\n options.__navi = true;\n\n var naviOptions = deepExtend({}, themeOptions.navigator, options.navigator);\n var panes = options.panes = [].concat(options.panes);\n var paneOptions = deepExtend({}, naviOptions.pane, { name: NAVIGATOR_PANE });\n\n if (!naviOptions.visible) {\n paneOptions.visible = false;\n paneOptions.height = 0.1;\n }\n\n panes.push(paneOptions);\n\n Navigator.attachAxes(options, naviOptions);\n Navigator.attachSeries(options, naviOptions, themeOptions);\n };\n\n Navigator.attachAxes = function attachAxes (options, naviOptions) {\n var series = naviOptions.series || [];\n var categoryAxes = options.categoryAxis = [].concat(options.categoryAxis);\n var valueAxes = options.valueAxis = [].concat(options.valueAxis);\n\n var equallySpacedSeries = filterSeriesByType(series, EQUALLY_SPACED_SERIES);\n var justifyAxis = equallySpacedSeries.length === 0;\n\n var base = deepExtend({\n type: \"date\",\n pane: NAVIGATOR_PANE,\n roundToBaseUnit: !justifyAxis,\n justified: justifyAxis,\n _collapse: false,\n majorTicks: { visible: true },\n tooltip: { visible: false },\n labels: { step: 1 },\n autoBind: naviOptions.autoBindElements,\n autoBaseUnitSteps: {\n minutes: [ 1 ],\n hours: [ 1, 2 ],\n days: [ 1, 2 ],\n weeks: [],\n months: [ 1 ],\n years: [ 1 ]\n }\n });\n var user = naviOptions.categoryAxis;\n\n categoryAxes.push(\n deepExtend({}, base, {\n maxDateGroups: 200\n }, user, {\n name: NAVIGATOR_AXIS,\n title: null,\n baseUnit: \"fit\",\n baseUnitStep: \"auto\",\n labels: { visible: false },\n majorTicks: { visible: false }\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_labels\",\n maxDateGroups: 20,\n baseUnitStep: \"auto\",\n labels: { position: \"\" },\n plotBands: [],\n autoBaseUnitSteps: {\n minutes: []\n },\n _overlap: true\n }), deepExtend({}, base, user, {\n name: NAVIGATOR_AXIS + \"_ticks\",\n maxDateGroups: 200,\n majorTicks: {\n width: 0.5\n },\n plotBands: [],\n title: null,\n labels: { visible: false, mirror: true },\n _overlap: true\n })\n );\n\n valueAxes.push(deepExtend({\n name: NAVIGATOR_AXIS,\n pane: NAVIGATOR_PANE,\n majorGridLines: {\n visible: false\n },\n visible: false\n }, naviOptions.valueAxis));\n };\n\n Navigator.attachSeries = function attachSeries (options, naviOptions, themeOptions) {\n var series = options.series = options.series || [];\n var navigatorSeries = [].concat(naviOptions.series || []);\n var seriesColors = themeOptions.seriesColors;\n var defaults = naviOptions.seriesDefaults;\n\n for (var idx = 0; idx < navigatorSeries.length; idx++) {\n series.push(\n deepExtend({\n color: seriesColors[idx % seriesColors.length],\n categoryField: naviOptions.dateField,\n visibleInLegend: false,\n tooltip: {\n visible: false\n }\n }, defaults, navigatorSeries[idx], {\n axis: NAVIGATOR_AXIS,\n categoryAxis: NAVIGATOR_AXIS,\n autoBind: naviOptions.autoBindElements\n })\n );\n }\n };\n\n return Navigator;\n}(Class));\n\nfunction ClonedObject() { }\nfunction clone(obj) {\n ClonedObject.prototype = obj;\n return new ClonedObject();\n}\n\nexport default Navigator;\n","import { Chart } from '../chart';\n\nimport Navigator from './navigator';\nimport { DEFAULT_WIDTH } from '../common/constants';\nimport { addClass, deepExtend, elementSize, grep, setDefaultOptions } from '../common';\nimport { NAVIGATOR_AXIS, NAVIGATOR_PANE } from './constants';\n\nvar AUTO_CATEGORY_WIDTH = 28;\n\nvar StockChart = (function (Chart) {\n function StockChart () {\n Chart.apply(this, arguments);\n }\n\n if ( Chart ) StockChart.__proto__ = Chart;\n StockChart.prototype = Object.create( Chart && Chart.prototype );\n StockChart.prototype.constructor = StockChart;\n\n StockChart.prototype.applyDefaults = function applyDefaults (options, themeOptions) {\n var width = elementSize(this.element).width || DEFAULT_WIDTH;\n var theme = themeOptions;\n\n var stockDefaults = {\n seriesDefaults: {\n categoryField: options.dateField\n },\n axisDefaults: {\n categoryAxis: {\n name: \"default\",\n majorGridLines: {\n visible: false\n },\n labels: {\n step: 2\n },\n majorTicks: {\n visible: false\n },\n maxDateGroups: Math.floor(width / AUTO_CATEGORY_WIDTH)\n }\n }\n };\n\n if (theme) {\n theme = deepExtend({}, theme, stockDefaults);\n }\n\n Navigator.setup(options, theme);\n\n Chart.prototype.applyDefaults.call(this, options, theme);\n };\n\n StockChart.prototype._setElementClass = function _setElementClass (element) {\n addClass(element, 'k-chart k-stockchart');\n };\n\n StockChart.prototype.setOptions = function setOptions (options) {\n this.destroyNavigator();\n Chart.prototype.setOptions.call(this, options);\n };\n\n StockChart.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n var transitions = this.options.transitions;\n\n this.options.transitions = false;\n this._fullRedraw();\n this.options.transitions = transitions;\n };\n\n StockChart.prototype._resize = function _resize () {\n this.noTransitionsRedraw();\n };\n\n StockChart.prototype._redraw = function _redraw () {\n var navigator = this.navigator;\n\n if (!this._dirty() && navigator && navigator.options.partialRedraw) {\n navigator.redrawSlaves();\n } else {\n this._fullRedraw();\n }\n };\n\n StockChart.prototype._dirty = function _dirty () {\n var options = this.options;\n var series = [].concat(options.series, options.navigator.series);\n var seriesCount = grep(series, function(s) { return s && s.visible; }).length;\n var dirty = this._seriesCount !== seriesCount;\n this._seriesCount = seriesCount;\n\n return dirty;\n };\n\n StockChart.prototype._fullRedraw = function _fullRedraw () {\n var navigator = this.navigator;\n\n if (!navigator) {\n navigator = this.navigator = new Navigator(this);\n this.trigger(\"navigatorCreated\", { navigator: navigator });\n }\n\n navigator.clean();\n navigator.setRange();\n\n Chart.prototype._redraw.call(this);\n\n navigator.initSelection();\n };\n\n StockChart.prototype._trackSharedTooltip = function _trackSharedTooltip (coords) {\n var plotArea = this._plotArea;\n var pane = plotArea.paneByPoint(coords);\n\n if (pane && pane.options.name === NAVIGATOR_PANE) {\n this._unsetActivePoint();\n } else {\n Chart.prototype._trackSharedTooltip.call(this, coords);\n }\n };\n\n StockChart.prototype.bindCategories = function bindCategories () {\n Chart.prototype.bindCategories.call(this);\n this.copyNavigatorCategories();\n };\n\n StockChart.prototype.copyNavigatorCategories = function copyNavigatorCategories () {\n var definitions = [].concat(this.options.categoryAxis);\n var categories;\n\n for (var axisIx = 0; axisIx < definitions.length; axisIx++) {\n var axis = definitions[axisIx];\n if (axis.name === NAVIGATOR_AXIS) {\n categories = axis.categories;\n } else if (categories && axis.pane === NAVIGATOR_PANE) {\n axis.categories = categories;\n }\n }\n };\n\n StockChart.prototype.destroyNavigator = function destroyNavigator () {\n if (this.navigator) {\n this.navigator.destroy();\n this.navigator = null;\n }\n };\n\n StockChart.prototype.destroy = function destroy () {\n this.destroyNavigator();\n Chart.prototype.destroy.call(this);\n };\n\n StockChart.prototype._stopChartHandlers = function _stopChartHandlers (e) {\n var coords = this._eventCoordinates(e);\n var pane = this._plotArea.paneByPoint(coords);\n\n return Chart.prototype._stopChartHandlers.call(this, e) || (pane && pane.options.name === NAVIGATOR_PANE);\n };\n\n StockChart.prototype._toggleDragZoomEvents = function _toggleDragZoomEvents () {\n if (!this._dragZoomEnabled) {\n this.element.style.touchAction = \"none\";\n\n this._dragZoomEnabled = true;\n }\n };\n\n return StockChart;\n}(Chart));\n\nsetDefaultOptions(StockChart, {\n dateField: \"date\",\n axisDefaults: {\n categoryAxis: {\n type: \"date\",\n baseUnit: \"fit\",\n justified: true\n },\n valueAxis: {\n narrowRange: true,\n labels: {\n format: \"C\"\n }\n }\n },\n navigator: {\n select: {},\n seriesDefaults: {\n markers: {\n visible: false\n },\n tooltip: {\n visible: true\n },\n line: {\n width: 2\n }\n },\n hint: {},\n visible: true\n },\n tooltip: {\n visible: true\n },\n legend: {\n visible: false\n }\n});\n\nexport default StockChart;","var ANGULAR_SPEED = 150;\nvar LINEAR_SPEED = 250;\nvar ARROW = \"arrow\";\nvar ARROW_POINTER = \"arrowPointer\";\nvar BAR_POINTER = \"barPointer\";\nvar DEFAULT_HEIGHT = 200;\nvar DEFAULT_LINE_WIDTH = 0.5;\nvar DEFAULT_WIDTH = 200;\nvar DEGREE = Math.PI / 180;\nvar INSIDE = \"inside\";\nvar LINEAR = \"linear\";\nvar OUTSIDE = \"outside\";\nvar RADIAL_POINTER = \"radialPointer\";\nvar RADIAL_RANGE_POINTER = \"radialRangePointer\";\n\nexport {\n ANGULAR_SPEED, LINEAR_SPEED, ARROW, ARROW_POINTER, BAR_POINTER,\n DEFAULT_HEIGHT, DEFAULT_LINE_WIDTH, DEFAULT_WIDTH,\n DEGREE, INSIDE, LINEAR, OUTSIDE, RADIAL_POINTER, RADIAL_RANGE_POINTER\n};","import { getSpacing } from '../../common';\n\nexport default function pad(bbox, value) {\n var origin = bbox.getOrigin();\n var size = bbox.getSize();\n var spacing = getSpacing(value);\n\n bbox.setOrigin([ origin.x - spacing.left, origin.y - spacing.top ]);\n bbox.setSize([ size.width + (spacing.left + spacing.right), size.height + (spacing.top + spacing.bottom) ]);\n\n return bbox;\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport pad from './pad';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\nvar Text = drawing.Text;\n\nexport default function buildLabelElement(label, options) {\n var labelBox = label.box;\n var textBox = label.children[0].box;\n var border = options.border || {};\n var background = options.background || \"\";\n\n var wrapper = Path.fromRect(new geo.Rect([ labelBox.x1, labelBox.y1 ], [ labelBox.width(), labelBox.height() ]), {\n stroke: {}\n });\n\n var text = new Text(label.text, new geo.Point(textBox.x1, textBox.y1), {\n font: options.font,\n fill: { color: options.color }\n });\n\n var styleGeometry = pad(text.bbox().clone(), options.padding);\n\n var styleBox = Path.fromRect(styleGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n opacity: border.opacity,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: background\n }\n });\n\n var elements = new Group();\n elements.append(wrapper);\n elements.append(styleBox);\n elements.append(text);\n\n return elements;\n}","import { defined } from '../../common';\nimport { MIN_VALUE, MAX_VALUE } from '../../common/constants';\n\nexport default function getRange(range, min, max) {\n var from = defined(range.from) ? range.from : MIN_VALUE;\n var to = defined(range.to) ? range.to : MAX_VALUE;\n\n range.from = Math.max(Math.min(to, from), min);\n range.to = Math.min(Math.max(to, from), max);\n\n return range;\n}","import { getSpacing } from '../../common';\nimport pad from './pad';\n\nexport default function unpad(bbox, value) {\n var spacing = getSpacing(value);\n\n spacing.left = -spacing.left; spacing.top = -spacing.top;\n spacing.right = -spacing.right; spacing.bottom = -spacing.bottom;\n\n return pad(bbox, spacing);\n}","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { Class, elementSize, setDefaultOptions, deepExtend, isArray, isNumber } from '../common';\nimport { DEFAULT_WIDTH, DEFAULT_HEIGHT } from './constants';\nimport { ChartService } from '../services';\nimport { unpad } from './utils';\n\nvar DEFAULT_MARGIN = 5;\nvar Path = drawing.Path;\nvar Surface = drawing.Surface;\n\nvar Gauge = (function (Class) {\n function Gauge(element, userOptions, theme, context) {\n if ( context === void 0 ) context = {};\n\n Class.call(this);\n\n this.element = element;\n this.theme = theme;\n this.contextService = new ChartService(this, context);\n this._originalOptions = deepExtend({}, this.options, userOptions);\n this.options = deepExtend({}, this._originalOptions);\n this._initTheme(theme);\n\n this.redraw();\n }\n\n if ( Class ) Gauge.__proto__ = Class;\n Gauge.prototype = Object.create( Class && Class.prototype );\n Gauge.prototype.constructor = Gauge;\n\n Gauge.prototype.destroy = function destroy () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n }\n\n delete this.element;\n delete this.surfaceElement;\n };\n\n Gauge.prototype.value = function value (pointerValue) {\n var pointer = this.pointers[0];\n\n if (arguments.length === 0) {\n return pointer.value();\n }\n\n pointer.value(pointerValue);\n this._setValueOptions(pointerValue);\n };\n\n Gauge.prototype._draw = function _draw () {\n var surface = this.surface;\n\n surface.clear();\n surface.draw(this._visuals);\n };\n\n Gauge.prototype.exportVisual = function exportVisual () {\n return this._visuals;\n };\n\n Gauge.prototype.allValues = function allValues (values) {\n var pointers = this.pointers;\n var allValues = [];\n\n if (arguments.length === 0) {\n for (var i = 0; i < pointers.length; i++) {\n allValues.push(pointers[i].value());\n }\n\n return allValues;\n }\n\n if (isArray(values)) {\n for (var i$1 = 0; i$1 < values.length; i$1++) {\n if (isNumber(values[i$1])) {\n pointers[i$1].value(values[i$1]);\n }\n }\n }\n\n this._setValueOptions(values);\n };\n\n Gauge.prototype._setValueOptions = function _setValueOptions (values) {\n var pointers = [].concat(this.options.pointer);\n var arrayValues = [].concat(values);\n\n for (var i = 0; i < arrayValues.length; i++) {\n pointers[i].value = arrayValues[i];\n }\n };\n\n Gauge.prototype.resize = function resize () {\n this.noTransitionsRedraw();\n };\n\n Gauge.prototype.noTransitionsRedraw = function noTransitionsRedraw () {\n var transitions = this.options.transitions;\n\n this._toggleTransitions(false);\n\n this.redraw();\n\n this._toggleTransitions(transitions);\n };\n\n Gauge.prototype.redraw = function redraw () {\n var size = this._surfaceSize();\n var wrapper = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._initSurface();\n\n this.gaugeArea = this._createGaugeArea();\n\n this._createModel();\n\n var bbox = unpad(wrapper.bbox(), this._gaugeAreaMargin);\n this.reflow(bbox);\n };\n\n Gauge.prototype.setOptions = function setOptions (options, theme) {\n this._originalOptions = deepExtend(this._originalOptions, options);\n this.options = deepExtend({}, this._originalOptions);\n\n this._initTheme(theme);\n\n this.redraw();\n };\n\n Gauge.prototype.setDirection = function setDirection (rtl) {\n this.contextService.rtl = Boolean(rtl);\n if (this.surface && this.surface.type === 'svg') {\n this.surface.destroy();\n this.surface = null;\n }\n };\n\n Gauge.prototype.setIntlService = function setIntlService (intl) {\n this.contextService.intl = intl;\n };\n\n Gauge.prototype._initTheme = function _initTheme (theme) {\n var currentTheme = theme || this.theme || {};\n this.theme = currentTheme;\n\n this.options = deepExtend({}, currentTheme, this.options);\n var options = this.options;\n var pointer = options.pointer;\n\n if (isArray(pointer)) {\n var pointers = [];\n for (var i = 0; i < pointer.length; i++) {\n pointers.push(deepExtend({}, currentTheme.pointer, pointer[i]));\n }\n options.pointer = pointers;\n }\n };\n\n Gauge.prototype._createGaugeArea = function _createGaugeArea () {\n var options = this.options.gaugeArea;\n var size = this.surface.size();\n var border = options.border || {};\n var areaGeometry = new geo.Rect([ 0, 0 ], [ size.width, size.height ]);\n\n this._gaugeAreaMargin = options.margin || DEFAULT_MARGIN;\n\n if (border.width > 0) {\n areaGeometry = unpad(areaGeometry, border.width);\n }\n\n var gaugeArea = Path.fromRect(areaGeometry, {\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType,\n lineJoin: \"round\",\n lineCap: \"round\"\n },\n fill: {\n color: options.background\n }\n });\n\n return gaugeArea;\n };\n\n Gauge.prototype._initSurface = function _initSurface () {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n var element = this._surfaceElement();\n var size = this._surfaceSize();\n\n elementSize(element, size);\n\n if (!surface || surface.options.type !== options.renderAs) {\n if (surface) {\n surface.destroy();\n }\n\n this.surface = Surface.create(element, {\n type: options.renderAs\n });\n } else {\n this.surface.clear();\n this.surface.resize();\n }\n };\n\n Gauge.prototype._surfaceSize = function _surfaceSize () {\n var options = this.options;\n var size = this._getSize();\n\n if (options.gaugeArea) {\n deepExtend(size, options.gaugeArea);\n }\n\n return size;\n };\n\n Gauge.prototype._surfaceElement = function _surfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.element.appendChild(this.surfaceElement);\n }\n\n return this.surfaceElement;\n };\n\n Gauge.prototype.getSize = function getSize () {\n return this._getSize();\n };\n\n Gauge.prototype._getSize = function _getSize () {\n var element = this.element;\n var defaultSize = this._defaultSize();\n var width = element.offsetWidth;\n var height = element.offsetHeight;\n\n if (!width) {\n width = defaultSize.width;\n }\n\n if (!height) {\n height = defaultSize.height;\n }\n\n return { width: width, height: height };\n };\n\n Gauge.prototype._defaultSize = function _defaultSize () {\n return {\n width: DEFAULT_WIDTH,\n height: DEFAULT_HEIGHT\n };\n };\n\n Gauge.prototype._toggleTransitions = function _toggleTransitions (value) {\n var this$1 = this;\n\n this.options.transitions = value;\n for (var i = 0; i < this.pointers.length; i++) {\n this$1.pointers[i].options.animation.transitions = value;\n }\n };\n\n return Gauge;\n}(Class));\n\nsetDefaultOptions(Gauge, {\n plotArea: {},\n theme: \"default\",\n renderAs: \"\",\n pointer: {},\n scale: {},\n gaugeArea: {}\n});\n\nexport default Gauge;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined } from '../../common';\nimport { BLACK } from '../../common/constants';\nimport { NumericAxis } from '../../core';\nimport { DEFAULT_LINE_WIDTH, INSIDE } from '../constants';\nimport { autoMajorUnit } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nvar Path = drawing.Path;\nvar Group = drawing.Group;\nvar Point = geo.Point;\n\nfunction renderAxisTick(tickRenderOptions, tickOptions) {\n var position = tickRenderOptions.position;\n var tickX = tickRenderOptions.tickX;\n var tickY = tickRenderOptions.tickY;\n var start, end;\n\n if (tickRenderOptions.vertical) {\n start = new Point(tickX, position);\n end = new Point(tickX + tickOptions.size, position);\n } else {\n start = new Point(position, tickY);\n end = new Point(position, tickY + tickOptions.size);\n }\n\n var tickPath = new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(start).lineTo(end);\n\n return tickPath;\n}\n\nfunction renderTicks(tickGroup, tickPositions, tickRenderOptions, tickOptions) {\n var count = tickPositions.length;\n\n if (tickOptions.visible) {\n var mirror = tickRenderOptions.mirror;\n var lineBox = tickRenderOptions.lineBox;\n for (var i = tickOptions.skip; i < count; i += tickOptions.step) {\n if (i % tickOptions.skipUnit === 0) {\n continue;\n }\n\n tickRenderOptions.tickX = mirror ? lineBox.x2 : lineBox.x2 - tickOptions.size;\n tickRenderOptions.tickY = mirror ? lineBox.y1 - tickOptions.size : lineBox.y1;\n tickRenderOptions.position = tickPositions[i];\n\n tickGroup.append(renderAxisTick(tickRenderOptions, tickOptions));\n }\n }\n}\n\nvar LinearScale = (function (NumericAxis) {\n function LinearScale(options, service) {\n var scaleOptions = options || {};\n if (!defined(scaleOptions.reverse) && scaleOptions.vertical === false && (service || {}).rtl) {\n scaleOptions = Object.assign({}, scaleOptions, {\n reverse: true\n });\n }\n\n NumericAxis.call(this, 0, 1, scaleOptions, service);\n\n this.options.minorUnit = this.options.minorUnit || this.options.majorUnit / 10;\n }\n\n if ( NumericAxis ) LinearScale.__proto__ = NumericAxis;\n LinearScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n LinearScale.prototype.constructor = LinearScale;\n\n LinearScale.prototype.initUserOptions = function initUserOptions (options) {\n var scaleOptions = deepExtend({}, this.options, options);\n scaleOptions = deepExtend({}, scaleOptions , { labels: { mirror: scaleOptions.mirror } });\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n\n return scaleOptions;\n };\n\n LinearScale.prototype.initFields = function initFields () {\n };\n\n LinearScale.prototype.render = function render () {\n var elements = this.elements = new Group();\n var labels = this.renderLabels();\n var scaleLine = this.renderLine();\n var scaleTicks = this.renderTicks();\n var ranges = this.renderRanges();\n\n elements.append(scaleLine, labels, scaleTicks, ranges);\n\n return elements;\n };\n\n LinearScale.prototype.renderRanges = function renderRanges () {\n var this$1 = this;\n\n var options = this.options;\n var min = options.min;\n var max = options.max;\n var vertical = options.vertical;\n var mirror = options.labels.mirror;\n var ranges = options.ranges || [];\n var elements = new Group();\n var count = ranges.length;\n var rangeSize = options.rangeSize || options.minorTicks.size / 2;\n\n for (var i = 0; i < count; i++) {\n var range = getRange(ranges[i], min, max);\n var slot = this$1.getSlot(range.from, range.to);\n var slotX = vertical ? this$1.lineBox() : slot;\n var slotY = vertical ? slot : this$1.lineBox();\n if (vertical) {\n slotX.x1 -= rangeSize * (mirror ? -1 : 1);\n } else {\n slotY.y2 += rangeSize * (mirror ? -1 : 1);\n }\n\n elements.append(Path.fromRect(new geo.Rect([ slotX.x1, slotY.y1 ], [ slotX.x2 - slotX.x1, slotY.y2 - slotY.y1 ]), {\n fill: { color: range.color, opacity: range.opacity },\n stroke: { }\n }));\n }\n\n return elements;\n };\n\n LinearScale.prototype.renderLabels = function renderLabels () {\n var ref = this;\n var labels = ref.labels;\n var options = ref.options;\n var elements = new Group();\n\n for (var i = 0; i < labels.length; i++) {\n elements.append(buildLabelElement(labels[i], options.labels));\n }\n\n return elements;\n };\n\n LinearScale.prototype.renderLine = function renderLine () {\n var line = this.options.line;\n var lineBox = this.lineBox();\n var elements = new Group();\n\n if (line.width > 0 && line.visible) {\n var linePath = new Path({\n stroke: {\n color: line.color,\n dashType: line.dashType,\n width: line.width\n }\n });\n\n linePath.moveTo(lineBox.x1, lineBox.y1).lineTo(lineBox.x2, lineBox.y2);\n elements.append(linePath);\n }\n\n return elements;\n };\n\n LinearScale.prototype.renderTicks = function renderTicks$1 () {\n var ticks = new Group();\n var options = this.options;\n var majorUnit = options.majorTicks.visible ? options.majorUnit : 0;\n var tickRenderOptions = {\n vertical: options.vertical,\n mirror: options.labels.mirror,\n lineBox: this.lineBox()\n };\n\n renderTicks(ticks, this.getMajorTickPositions(), tickRenderOptions, options.majorTicks);\n renderTicks(ticks, this.getMinorTickPositions(), tickRenderOptions, deepExtend({}, {\n skipUnit: majorUnit / options.minorUnit\n }, options.minorTicks));\n\n return ticks;\n };\n\n return LinearScale;\n}(NumericAxis));\n\nsetDefaultOptions(LinearScale, {\n min: 0,\n max: 50,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n line: {\n width: DEFAULT_LINE_WIDTH\n },\n\n labels: {\n position: INSIDE,\n padding: 2\n },\n mirror: false,\n _alignLines: false\n});\n\nexport default LinearScale;","import { Class, setDefaultOptions, defined, deepExtend, limitValue } from '../common';\nimport { BLACK } from '../common/constants';\n\nvar Pointer = (function (Class) {\n function Pointer(scale, userOptions) {\n Class.call(this);\n\n var ref = scale.options;\n var min = ref.min;\n var max = ref.max;\n var options = this.options = deepExtend({}, this.options, userOptions);\n\n options.fill = options.color;\n\n this.scale = scale;\n\n if (defined(options.value)) {\n options.value = limitValue(options.value, min, max);\n } else {\n options.value = min;\n }\n }\n\n if ( Class ) Pointer.__proto__ = Class;\n Pointer.prototype = Object.create( Class && Class.prototype );\n Pointer.prototype.constructor = Pointer;\n\n Pointer.prototype.value = function value (newValue) {\n var options = this.options;\n var value = options.value;\n\n if (arguments.length === 0) {\n return value;\n }\n\n var ref = this.scale.options;\n var min = ref.min;\n var max = ref.max;\n\n options._oldValue = defined(options._oldValue) ? options.value : min;\n options.value = limitValue(newValue, min, max);\n\n if (this.elements) {\n this.repaint();\n }\n };\n\n return Pointer;\n}(Class));\n\nsetDefaultOptions(Pointer, {\n color: BLACK\n});\n\nexport default Pointer;","import { setDefaultOptions, deepExtend, defined, getSpacing } from '../../common';\nimport { Box } from '../../core';\nimport { BLACK } from '../../common/constants';\nimport { BAR_POINTER } from '../constants';\nimport Pointer from '../pointer';\n\nvar LinearPointer = (function (Pointer) {\n function LinearPointer(scale, options) {\n Pointer.call(this, scale, options);\n\n this.options = deepExtend({\n track: {\n visible: defined(options.track)\n }\n }, this.options);\n }\n\n if ( Pointer ) LinearPointer.__proto__ = Pointer;\n LinearPointer.prototype = Object.create( Pointer && Pointer.prototype );\n LinearPointer.prototype.constructor = LinearPointer;\n\n LinearPointer.prototype.reflow = function reflow () {\n var ref = this;\n var options = ref.options;\n var scale = ref.scale;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var scaleLine = scale.lineBox();\n var trackSize = options.track.size || options.size;\n var pointerHalfSize = options.size / 2;\n var margin = getSpacing(options.margin);\n var space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n var pointerBox, pointerRangeBox, trackBox;\n\n space = mirror ? -space : space;\n\n if (vertical) {\n trackBox = new Box(\n scaleLine.x1 + space, scaleLine.y1,\n scaleLine.x1 + space, scaleLine.y2);\n\n if (mirror) {\n trackBox.x1 -= trackSize;\n } else {\n trackBox.x2 += trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x2 + space, scaleLine.y1 - pointerHalfSize,\n scaleLine.x2 + space, scaleLine.y2 + pointerHalfSize\n );\n pointerBox = pointerRangeBox;\n }\n } else {\n trackBox = new Box(\n scaleLine.x1, scaleLine.y1 - space,\n scaleLine.x2, scaleLine.y1 - space);\n\n if (mirror) {\n trackBox.y2 += trackSize;\n } else {\n trackBox.y1 -= trackSize;\n }\n\n if (options.shape !== BAR_POINTER) {\n pointerRangeBox = new Box(\n scaleLine.x1 - pointerHalfSize, scaleLine.y1 - space,\n scaleLine.x2 + pointerHalfSize, scaleLine.y1 - space\n );\n pointerBox = pointerRangeBox;\n }\n }\n\n this.trackBox = trackBox;\n this.pointerRangeBox = pointerRangeBox;\n this.box = pointerBox || trackBox.clone().pad(options.border.width);\n };\n\n LinearPointer.prototype.getElementOptions = function getElementOptions () {\n var options = this.options;\n\n return {\n fill: {\n color: options.color,\n opacity: options.opacity\n },\n stroke: defined(options.border) ? {\n color: options.border.width ? options.border.color || options.color : \"\",\n width: options.border.width,\n dashType: options.border.dashType,\n opacity: options.opacity\n } : null\n };\n };\n\n LinearPointer.prototype._margin = function _margin () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var margin = getSpacing(options.margin);\n\n var space = vertical ?\n margin[mirror ? \"left\" : \"right\"] :\n margin[mirror ? \"bottom\" : \"top\"];\n\n return space;\n };\n\n return LinearPointer;\n}(Pointer));\n\nsetDefaultOptions(LinearPointer, {\n shape: BAR_POINTER,\n\n track: {\n border: {\n width: 1\n }\n },\n\n color: BLACK,\n border: {\n width: 1\n },\n opacity: 1,\n\n margin: getSpacing(3),\n animation: {\n type: BAR_POINTER\n },\n visible: true\n});\n\nexport default LinearPointer;","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ARROW_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar ArrowLinearPointerAnimation = (function (superclass) {\n function ArrowLinearPointerAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) ArrowLinearPointerAnimation.__proto__ = superclass;\n ArrowLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n ArrowLinearPointerAnimation.prototype.constructor = ArrowLinearPointerAnimation;\n\n ArrowLinearPointerAnimation.prototype.setup = function setup () {\n var options = this.options;\n var margin = options.margin;\n var from = options.from;\n var to = options.to;\n var vertical = options.vertical;\n var axis = vertical ? \"x1\" : \"y1\";\n\n if (options.mirror === vertical) {\n from[axis] -= margin; to[axis] -= margin;\n } else {\n from[axis] += margin; to[axis] += margin;\n }\n\n var fromScale = this.fromScale = new geometry.Point(from.x1, from.y1);\n var toScale = this.toScale = new geometry.Point(to.x1, to.y1);\n\n if (options.duration !== 0) {\n options.duration = Math.max((fromScale.distanceTo(toScale) / options.duration) * 1000, 1);\n }\n };\n\n ArrowLinearPointerAnimation.prototype.step = function step (pos) {\n var translateX = interpolateValue(this.fromScale.x, this.toScale.x, pos);\n var translateY = interpolateValue(this.fromScale.y, this.toScale.y, pos);\n\n this.element.transform(geometry.transform().translate(translateX, translateY));\n };\n\n return ArrowLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(ArrowLinearPointerAnimation, {\n easing: LINEAR,\n duration: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(ARROW_POINTER, ArrowLinearPointerAnimation);\n\nexport default ArrowLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { ARROW_POINTER } from '../constants';\nimport LinearPointer from './linear-pointer';\nimport ArrowLinearPointerAnimation from './arrow-linear-pointer-animation';\n\nvar Point = geo.Point;\nvar Path = drawing.Path;\n\nvar ArrowLinearPointer = (function (LinearPointer) {\n function ArrowLinearPointer(scale, options) {\n LinearPointer.call(this, scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.6;\n }\n }\n\n if ( LinearPointer ) ArrowLinearPointer.__proto__ = LinearPointer;\n ArrowLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n ArrowLinearPointer.prototype.constructor = ArrowLinearPointer;\n\n ArrowLinearPointer.prototype.pointerShape = function pointerShape () {\n var ref = this;\n var scale = ref.scale;\n var size = ref.options.size;\n var halfSize = size / 2;\n var sign = (scale.options.mirror ? -1 : 1);\n var shape;\n\n if (scale.options.vertical) {\n shape = [\n new Point(0, 0 - halfSize), new Point(0 - sign * size, 0), new Point(0, 0 + halfSize)\n ];\n } else {\n shape = [\n new Point(0 - halfSize, 0), new Point(0, 0 + sign * size), new Point(0 + halfSize, 0)\n ];\n }\n\n return shape;\n };\n\n ArrowLinearPointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var animation = new ArrowLinearPointerAnimation(this.elements, deepExtend(options.animation, {\n vertical: scale.options.vertical,\n mirror: scale.options.mirror,\n margin: this._margin(options.margin),\n from: scale.getSlot(options._oldValue),\n to: scale.getSlot(options.value)\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n };\n\n ArrowLinearPointer.prototype.render = function render () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var elementOptions = this.getElementOptions();\n var shape = this.pointerShape(options.value);\n\n options.animation.type = ARROW_POINTER;\n\n var elements = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n }).moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).close();\n\n var slot = scale.getSlot(options.value);\n elements.transform(geo.transform().translate(slot.x1, slot.y1));\n\n this.elements = elements;\n\n return elements;\n };\n\n return ArrowLinearPointer;\n}(LinearPointer));\n\nexport default ArrowLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport { BAR_POINTER, LINEAR_SPEED, LINEAR } from '../constants';\n\nvar BarLinearPointerAnimation = (function (superclass) {\n function BarLinearPointerAnimation () {\n superclass.apply(this, arguments);\n }\n\n if ( superclass ) BarLinearPointerAnimation.__proto__ = superclass;\n BarLinearPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n BarLinearPointerAnimation.prototype.constructor = BarLinearPointerAnimation;\n\n BarLinearPointerAnimation.prototype.setup = function setup () {\n var options = this.options;\n var axis = this.axis = options.vertical ? Y : X;\n var to = this.to = options.newPoints[0][axis];\n var from = this.from = options.oldPoints[0][axis];\n\n if (options.duration !== 0) {\n options.duration = Math.max((Math.abs(to - from) / options.speed) * 1000, 1);\n }\n\n this._set(from);\n };\n\n BarLinearPointerAnimation.prototype.step = function step (pos) {\n var value = interpolateValue(this.from, this.to, pos);\n this._set(value);\n };\n\n BarLinearPointerAnimation.prototype._set = function _set (value) {\n var setter = \"set\" + this.axis.toUpperCase();\n var points = this.options.newPoints;\n\n points[0][setter](value);\n points[1][setter](value);\n };\n\n return BarLinearPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(BarLinearPointerAnimation, {\n easing: LINEAR,\n speed: LINEAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(BAR_POINTER, BarLinearPointerAnimation);\n\nexport default BarLinearPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { deepExtend, defined } from '../../common';\nimport { X, Y } from '../../common/constants';\nimport LinearPointer from './linear-pointer';\nimport BarLinearPointerAnimation from './bar-linear-pointer-animation';\n\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar BarLinearPointer = (function (LinearPointer) {\n function BarLinearPointer(scale, options) {\n LinearPointer.call(this, scale, options);\n\n if (!defined(this.options.size)) {\n this.options.size = this.scale.options.majorTicks.size * 0.3;\n }\n }\n\n if ( LinearPointer ) BarLinearPointer.__proto__ = LinearPointer;\n BarLinearPointer.prototype = Object.create( LinearPointer && LinearPointer.prototype );\n BarLinearPointer.prototype.constructor = BarLinearPointer;\n\n BarLinearPointer.prototype.pointerShape = function pointerShape (value) {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var ref$1 = scale.options;\n var mirror = ref$1.mirror;\n var vertical = ref$1.vertical;\n var dir = mirror === vertical ? -1 : 1;\n var size = options.size * dir;\n var minSlot = scale.getSlot(scale.options.min);\n var slot = scale.getSlot(value);\n var axis = vertical ? Y : X;\n var sizeAxis = vertical ? X : Y;\n var margin = this._margin() * dir;\n\n var p1 = new geo.Point();\n p1[axis] = minSlot[axis + \"1\"];\n p1[sizeAxis] = minSlot[sizeAxis + \"1\"];\n\n var p2 = new geo.Point();\n p2[axis] = slot[axis + \"1\"];\n p2[sizeAxis] = slot[sizeAxis + \"1\"];\n\n if (vertical) {\n p1.translate(margin, 0);\n p2.translate(margin, 0);\n } else {\n p1.translate(0, margin);\n p2.translate(0, margin);\n }\n\n var p3 = p2.clone();\n var p4 = p1.clone();\n\n if (vertical) {\n p3.translate(size, 0);\n p4.translate(size, 0);\n } else {\n p3.translate(0, size);\n p4.translate(0, size);\n }\n\n return [ p1, p2, p3, p4 ];\n };\n\n BarLinearPointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var shape = this.pointerShape(options.value);\n var pointerPath = this.pointerPath;\n var oldShape = this.pointerShape(options._oldValue);\n\n pointerPath.moveTo(shape[0]).lineTo(shape[1]).lineTo(shape[2]).lineTo(shape[3]).close();\n\n var animation = new BarLinearPointerAnimation(pointerPath, deepExtend(options.animation, {\n reverse: scale.options.reverse,\n vertical: scale.options.vertical,\n oldPoints: [ oldShape[1], oldShape[2] ],\n newPoints: [ shape[1], shape[2] ]\n }));\n\n if (options.animation.transitions === false) {\n animation.options.duration = 0;\n }\n\n animation.setup();\n animation.play();\n };\n\n BarLinearPointer.prototype.render = function render () {\n var group = new Group();\n var elementOptions = this.getElementOptions();\n\n if (this.options.track.visible) {\n group.append(this.renderTrack());\n }\n\n var pointer = this.pointerPath = new Path({\n stroke: elementOptions.stroke,\n fill: elementOptions.fill\n });\n\n group.append(pointer);\n\n this.elements = group;\n\n return group;\n };\n\n BarLinearPointer.prototype.renderTrack = function renderTrack () {\n var trackOptions = this.options.track;\n var border = trackOptions.border || {};\n var trackBox = this.trackBox.clone().pad(border.width || 0);\n\n return new Path.fromRect(trackBox.toRect(), {\n fill: {\n color: trackOptions.color,\n opacity: trackOptions.opacity\n },\n stroke: {\n color: border.width ? border.color || trackOptions.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n };\n\n return BarLinearPointer;\n}(LinearPointer));\n\nexport default BarLinearPointer;","import { drawing } from '@progress/kendo-drawing';\nimport { Box } from '../../core';\nimport { setDefaultOptions, deepExtend, isArray } from '../../common';\nimport { ARROW, DEFAULT_WIDTH, DEFAULT_HEIGHT } from '../constants';\nimport Gauge from '../gauge';\nimport LinearScale from './linear-scale';\nimport ArrowLinearPointer from './arrow-linear-pointer';\nimport BarLinearPointer from './bar-linear-pointer';\n\nvar DEFAULT_MIN_WIDTH = 60;\nvar DEFAULT_MIN_HEIGHT = 60;\n\nvar Group = drawing.Group;\n\nvar LinearGauge = (function (Gauge) {\n function LinearGauge () {\n Gauge.apply(this, arguments);\n }\n\n if ( Gauge ) LinearGauge.__proto__ = Gauge;\n LinearGauge.prototype = Object.create( Gauge && Gauge.prototype );\n LinearGauge.prototype.constructor = LinearGauge;\n\n LinearGauge.prototype.reflow = function reflow (bbox) {\n var pointers = this.pointers;\n var bboxX = bbox.origin.x;\n var bboxY = bbox.origin.y;\n\n var box = new Box(bboxX, bboxY, bboxX + bbox.width(), bboxY + bbox.height());\n\n this.scale.reflow(box);\n this._shrinkScaleWidth(box);\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow();\n }\n\n this.bbox = this._getBox(box);\n this._alignElements();\n this._shrinkElements();\n this._buildVisual();\n this._draw();\n };\n\n LinearGauge.prototype._buildVisual = function _buildVisual () {\n var visuals = new Group();\n var scaleElements = this.scale.render();\n var pointers = this.pointers;\n\n visuals.append(this.gaugeArea);\n visuals.append(scaleElements);\n\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n visuals.append(current.render());\n current.value(current.options.value);\n }\n\n this._visuals = visuals;\n };\n\n LinearGauge.prototype._createModel = function _createModel () {\n var this$1 = this;\n\n var options = this.options;\n var scale = this.scale = new LinearScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n var pointers = options.pointer;\n pointers = isArray(pointers) ? pointers : [ pointers ];\n\n for (var i = 0; i < pointers.length; i++) {\n var currentOptions = deepExtend({}, pointers[i], {\n animation: {\n transitions: options.transitions\n }\n });\n var pointerType = currentOptions.shape === ARROW ? ArrowLinearPointer : BarLinearPointer;\n\n this$1.pointers.push(new pointerType(scale, currentOptions));\n }\n };\n\n LinearGauge.prototype._defaultSize = function _defaultSize () {\n var vertical = this.options.scale.vertical;\n\n return {\n width: vertical ? DEFAULT_MIN_WIDTH : DEFAULT_WIDTH,\n height: vertical ? DEFAULT_HEIGHT : DEFAULT_MIN_HEIGHT\n };\n };\n\n LinearGauge.prototype._getBox = function _getBox (box) {\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var boxCenter = box.center();\n var plotAreaBox = pointers[0].box.clone().wrap(scale.box);\n\n for (var i = 0; i < pointers.length; i++) {\n plotAreaBox.wrap(pointers[i].box.clone());\n }\n\n var size;\n if (scale.options.vertical) {\n size = plotAreaBox.width() / 2;\n plotAreaBox = new Box(\n boxCenter.x - size, box.y1,\n boxCenter.x + size, box.y2\n );\n } else {\n size = plotAreaBox.height() / 2;\n plotAreaBox = new Box(\n box.x1, boxCenter.y - size,\n box.x2, boxCenter.y + size\n );\n }\n\n return plotAreaBox;\n };\n\n LinearGauge.prototype._alignElements = function _alignElements () {\n var this$1 = this;\n\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var scaleBox = scale.box;\n var box = pointers[0].box.clone().wrap(scale.box);\n var plotAreaBox = this.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n box.wrap(pointers[i].box.clone());\n }\n\n var diff;\n if (scale.options.vertical) {\n diff = plotAreaBox.center().x - box.center().x;\n scale.reflow(new Box(\n scaleBox.x1 + diff, plotAreaBox.y1,\n scaleBox.x2 + diff, plotAreaBox.y2\n ));\n } else {\n diff = plotAreaBox.center().y - box.center().y;\n scale.reflow(new Box(\n scaleBox.x1, scaleBox.y1 + diff,\n scaleBox.x2, scaleBox.y2 + diff\n ));\n }\n\n for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n pointers[i$1].reflow(this$1.bbox);\n }\n };\n\n LinearGauge.prototype._shrinkScaleWidth = function _shrinkScaleWidth (bbox) {\n var ref = this;\n var scale = ref.scale;\n if (!scale.options.vertical) {\n var overflow = scale.contentBox().width() - bbox.width();\n if (overflow > 0) {\n scale.box.shrink(overflow, 0);\n scale.box.alignTo(bbox, 'center');\n scale.reflow(scale.box);\n }\n }\n };\n\n LinearGauge.prototype._shrinkElements = function _shrinkElements () {\n var this$1 = this;\n\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n var scaleBox = scale.box.clone();\n var pos = scale.options.vertical ? \"y\" : \"x\";\n var pointerBox = pointers[0].box;\n\n for (var i = 0; i < pointers.length; i++) {\n pointerBox.wrap(pointers[i].box.clone());\n }\n\n scaleBox[pos + 1] += Math.max(scaleBox[pos + 1] - pointerBox[pos + 1], 0);\n scaleBox[pos + 2] -= Math.max(pointerBox[pos + 2] - scaleBox[pos + 2], 0);\n\n scale.reflow(scaleBox);\n\n for (var i$1 = 0; i$1 < pointers.length; i$1++) {\n pointers[i$1].reflow(this$1.bbox);\n }\n };\n\n return LinearGauge;\n}(Gauge));\n\nsetDefaultOptions(LinearGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n },\n scale: {\n vertical: true\n }\n});\n\nexport default LinearGauge;","import GeometryArc from '../geometry/arc';\nimport Element from './element';\nimport { Path } from './path';\nimport paintable from '../mixins/paintable';\nimport measurable from '../mixins/measurable';\nimport withGeometry from '../mixins/with-geometry';\nimport { defined } from '../util';\n\n\nvar DEFAULT_STROKE = \"#000\";\n\nvar Arc = (function (superclass) {\n function Arc(geometry, options) {\n if ( geometry === void 0 ) geometry = new GeometryArc();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.geometry(geometry);\n\n if (!defined(this.options.stroke)) {\n this.stroke(DEFAULT_STROKE);\n }\n }\n\n if ( superclass ) Arc.__proto__ = superclass;\n Arc.prototype = Object.create( superclass && superclass.prototype );\n Arc.prototype.constructor = Arc;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Arc\";\n };\n\n Arc.prototype._bbox = function _bbox (matrix) {\n return this._geometry.bbox(matrix);\n };\n\n Arc.prototype.rawBBox = function rawBBox () {\n return this.geometry().bbox();\n };\n\n Arc.prototype.toPath = function toPath () {\n var path = new Path();\n var curvePoints = this.geometry().curvePoints();\n\n if (curvePoints.length > 0) {\n path.moveTo(curvePoints[0].x, curvePoints[0].y);\n\n for (var i = 1; i < curvePoints.length; i += 3) {\n path.curveTo(curvePoints[i], curvePoints[i + 1], curvePoints[i + 2]);\n }\n }\n\n return path;\n };\n\n Arc.prototype._containsPoint = function _containsPoint (point) {\n return this.geometry().containsPoint(point);\n };\n\n Arc.prototype._isOnPath = function _isOnPath (point) {\n return this.geometry()._isOnPath(point, this.options.stroke.width / 2);\n };\n\n Object.defineProperties( Arc.prototype, prototypeAccessors );\n\n return Arc;\n}(paintable(measurable(withGeometry(Element)))));\n\nexport default Arc;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, defined, round, getSpacing } from '../../common';\nimport { BLACK, COORD_PRECISION } from '../../common/constants';\nimport { autoMajorUnit, Box, NumericAxis } from '../../core';\nimport { buildLabelElement, getRange } from '../utils';\n\nimport { DEGREE, DEFAULT_LINE_WIDTH, INSIDE, OUTSIDE } from '../constants';\n\nvar GEO_ARC_ADJUST_ANGLE = 180;\n\nvar Arc = drawing.Arc;\nvar Path = drawing.Path;\nvar Group = drawing.Group;\n\nfunction drawTicks(arc, tickAngles, unit, tickOptions) {\n var ticks = new Group();\n var center = arc.center;\n var radius = arc.getRadiusX();\n\n if (tickOptions.visible) {\n for (var i = 0; i < tickAngles.length; i++) {\n var tickStart = arc.pointAt(tickAngles[i]);\n var tickEnd = new geo.Point(center.x + radius - tickOptions.size, center.y).rotate(tickAngles[i], center);\n\n ticks.append(new Path({\n stroke: {\n color: tickOptions.color,\n width: tickOptions.width\n }\n }).moveTo(tickStart).lineTo(tickEnd));\n }\n }\n\n return ticks;\n}\n\nfunction rangeSegment(from, to, color, opacity) {\n return { from: from, to: to, color: color, opacity: opacity };\n}\n\nvar RadialScale = (function (NumericAxis) {\n function RadialScale(options, service) {\n NumericAxis.call(this, 0, 1, options, service);\n }\n\n if ( NumericAxis ) RadialScale.__proto__ = NumericAxis;\n RadialScale.prototype = Object.create( NumericAxis && NumericAxis.prototype );\n RadialScale.prototype.constructor = RadialScale;\n\n RadialScale.prototype.initUserOptions = function initUserOptions (options) {\n var scaleOptions = deepExtend({}, this.options, options);\n scaleOptions.majorUnit = scaleOptions.majorUnit || autoMajorUnit(scaleOptions.min, scaleOptions.max);\n scaleOptions.minorUnit = scaleOptions.minorUnit || scaleOptions.majorUnit / 10;\n\n return scaleOptions;\n };\n\n RadialScale.prototype.initFields = function initFields () {\n };\n\n RadialScale.prototype.render = function render (center, radius) {\n var arc = this.renderArc(center, radius);\n\n this.bbox = arc.bbox();\n this.labelElements = this.renderLabels();\n this.ticks = this.renderTicks();\n this.ranges = this.renderRanges();\n };\n\n RadialScale.prototype.reflow = function reflow (bbox) {\n var center = bbox.center();\n var radius = Math.min(bbox.height(), bbox.width()) / 2;\n\n if (defined(this.bbox)) {\n this.bbox = this.arc.bbox();\n this.radius(this.arc.getRadiusX());\n this.repositionRanges();\n this.renderLabels();\n } else {\n return this.render(center, radius);\n }\n };\n\n RadialScale.prototype.slotAngle = function slotAngle (value) {\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var reverse = ref.reverse;\n var startAngle = ref.startAngle;\n var endAngle = ref.endAngle;\n var angle = endAngle - startAngle;\n var result;\n\n if (reverse) {\n result = endAngle - (value - min) / (max - min) * angle;\n } else {\n result = ((value - min) / (max - min) * angle) + startAngle;\n }\n\n return result + GEO_ARC_ADJUST_ANGLE;\n };\n\n RadialScale.prototype.hasRanges = function hasRanges () {\n var ranges = this.options.ranges;\n\n return ranges && ranges.length;\n };\n\n RadialScale.prototype.ticksSize = function ticksSize () {\n var ref = this.options;\n var majorTicks = ref.majorTicks;\n var minorTicks = ref.minorTicks;\n var size = 0;\n if (majorTicks.visible) {\n size = majorTicks.size;\n }\n\n if (minorTicks.visible) {\n size = Math.max(minorTicks.size, size);\n }\n\n return size;\n };\n\n RadialScale.prototype.labelsCount = function labelsCount () {\n var count = NumericAxis.prototype.labelsCount.call(this);\n var options = this.options;\n var angle = options.endAngle - options.startAngle;\n\n if (angle >= 360 && (options.max % options.majorUnit === 0)) {\n count -= 1;\n }\n\n return count;\n };\n\n RadialScale.prototype.renderLabels = function renderLabels () {\n var this$1 = this;\n\n var options = this.options;\n var arc = this.arc.clone();\n var radius = arc.getRadiusX();\n var tickAngles = this.tickAngles(arc, options.majorUnit);\n var rangeSize = options.rangeSize = options.rangeSize || radius * 0.1;\n var labelsGroup = new Group();\n\n var rangeDistance = radius * 0.05;\n if (defined(options.rangeDistance)) {\n rangeDistance = options.rangeDistance;\n } else {\n options.rangeDistance = rangeDistance;\n }\n\n var labelsOptions = options.labels;\n var isInside = labelsOptions.position === INSIDE;\n var hasLabelElements = defined(this.labelElements);\n\n if (isInside) {\n radius -= this.ticksSize();\n\n if (this.hasRanges() && !hasLabelElements) {\n radius -= rangeSize + rangeDistance;\n }\n arc.setRadiusX(radius).setRadiusY(radius);\n }\n\n var labels = this.labels;\n var count = labels.length;\n var padding = getSpacing(labelsOptions.padding);\n var paddingWidth = (padding.left + padding.right) / 2;\n var paddingHeight = (padding.top + padding.bottom) / 2;\n\n for (var i = 0; i < count; i++) {\n var label = labels[i];\n var halfWidth = label.box.width() / 2;\n var halfHeight = label.box.height() / 2;\n var angle = tickAngles[i];\n var labelAngle = (angle - GEO_ARC_ADJUST_ANGLE) * DEGREE;\n\n var lp = arc.pointAt(angle);\n var cx = lp.x + (Math.cos(labelAngle) * (halfWidth + paddingWidth) * (isInside ? 1 : -1));\n var cy = lp.y + (Math.sin(labelAngle) * (halfHeight + paddingHeight) * (isInside ? 1 : -1));\n\n label.reflow(new Box(cx - halfWidth, cy - halfHeight, cx + halfWidth, cy + halfHeight));\n var labelPos = new geo.Point(label.box.x1, label.box.y1);\n\n var labelElement = (void 0);\n if (!hasLabelElements) {\n labelElement = buildLabelElement(label, options.labels);\n labelsGroup.append(labelElement);\n } else {\n labelElement = this$1.labelElements.children[i];\n var prevLabelPos = labelElement.bbox().origin;\n\n var labelTransform = labelElement.transform() || geo.transform();\n labelTransform.translate(labelPos.x - prevLabelPos.x, labelPos.y - prevLabelPos.y);\n labelElement.transform(labelTransform);\n }\n\n this$1.bbox = geo.Rect.union(this$1.bbox, labelElement.bbox());\n }\n\n return labelsGroup;\n };\n\n RadialScale.prototype.repositionRanges = function repositionRanges () {\n var ranges = this.ranges.children;\n\n if (ranges.length > 0) {\n var ref = this.options;\n var rangeDistance = ref.rangeDistance;\n var rangeSize = ref.rangeSize;\n var rangeRadius = this.getRangeRadius();\n\n if (this.options.labels.position === INSIDE) {\n rangeRadius += rangeSize + rangeDistance;\n }\n\n var newRadius = rangeRadius + (rangeSize / 2);\n\n for (var i = 0; i < ranges.length; i++) {\n ranges[i]._geometry.setRadiusX(newRadius).setRadiusY(newRadius);\n }\n\n this.bbox = geo.Rect.union(this.bbox, this.ranges.bbox());\n }\n };\n\n RadialScale.prototype.renderRanges = function renderRanges () {\n var this$1 = this;\n\n var segments = this.rangeSegments();\n var segmentsCount = segments.length;\n var result = new Group();\n\n if (segmentsCount) {\n var ref = this.options;\n var rangeSize = ref.rangeSize;\n var reverse = ref.reverse;\n var rangeDistance = ref.rangeDistance;\n var rangeRadius = this.getRangeRadius();\n\n // move the ticks with a range distance and a range size\n this.radius(this.radius() - rangeSize - rangeDistance);\n\n for (var i = 0; i < segmentsCount; i++) {\n var segment = segments[i];\n var from = this$1.slotAngle(segment[reverse ? \"to\" : \"from\"]);\n var to = this$1.slotAngle(segment[!reverse ? \"to\" : \"from\"]);\n\n if (to - from !== 0) {\n result.append(this$1.createRange(from, to, rangeRadius, segment));\n }\n }\n }\n\n return result;\n };\n\n RadialScale.prototype.createRange = function createRange (startAngle, endAngle, rangeRadius, options) {\n var rangeSize = this.options.rangeSize;\n var rangeGeom = new geo.Arc(this.arc.center, {\n radiusX: rangeRadius + (rangeSize / 2),\n radiusY: rangeRadius + (rangeSize / 2),\n startAngle: startAngle,\n endAngle: endAngle\n });\n\n return new Arc(rangeGeom, {\n stroke: {\n width: rangeSize,\n color: options.color,\n opacity: options.opacity,\n lineCap: options.lineCap\n }\n });\n };\n\n RadialScale.prototype.rangeSegments = function rangeSegments () {\n var options = this.options;\n var ranges = options.ranges || [];\n var count = ranges.length;\n var segments = [];\n\n if (count) {\n var min = options.min;\n var max = options.max;\n var defaultColor = options.rangePlaceholderColor;\n segments.push(rangeSegment(min, max, defaultColor));\n\n for (var i = 0; i < count; i++) {\n var range = getRange(ranges[i], min, max);\n var segmentsCount = segments.length;\n\n for (var j = 0; j < segmentsCount; j++) {\n var segment = segments[j];\n\n if (segment.from <= range.from && range.from <= segment.to) {\n segments.push(rangeSegment(range.from, range.to, range.color, range.opacity));\n\n if (segment.from <= range.to && range.to <= segment.to) {\n segments.push(rangeSegment(range.to, segment.to, defaultColor, range.opacity));\n }\n\n segment.to = range.from;\n\n break;\n }\n }\n }\n }\n\n return segments;\n };\n\n RadialScale.prototype.getRangeRadius = function getRangeRadius () {\n var ref = this;\n var arc = ref.arc;\n var options = ref.options;\n var rangeSize = options.rangeSize;\n var rangeDistance = options.rangeDistance;\n var majorTickSize = options.majorTicks.size;\n var radius;\n\n if (options.labels.position === OUTSIDE) {\n radius = arc.getRadiusX() - majorTickSize - rangeDistance - rangeSize;\n } else {\n radius = arc.getRadiusX() - rangeSize;\n }\n\n return radius;\n };\n\n RadialScale.prototype.renderArc = function renderArc (center, radius) {\n var options = this.options;\n\n var arc = this.arc = new geo.Arc(center, {\n radiusX: radius,\n radiusY: radius,\n startAngle: options.startAngle + GEO_ARC_ADJUST_ANGLE,\n endAngle: options.endAngle + GEO_ARC_ADJUST_ANGLE\n });\n\n return arc;\n };\n\n RadialScale.prototype.renderTicks = function renderTicks () {\n var ref = this;\n var arc = ref.arc;\n var options = ref.options;\n var tickArc = arc.clone();\n\n this.majorTickAngles = this.tickAngles(arc, options.majorUnit);\n this.majorTicks = drawTicks(tickArc, this.majorTickAngles, options.majorUnit, options.majorTicks);\n\n var allTicks = new Group();\n allTicks.append(this.majorTicks);\n\n var majorTickSize = options.majorTicks.size;\n var minorTickSize = options.minorTicks.size;\n\n this._tickDifference = majorTickSize - minorTickSize;\n\n if (options.labels.position === OUTSIDE) {\n var radius = tickArc.getRadiusX();\n tickArc.setRadiusX(radius - majorTickSize + minorTickSize)\n .setRadiusY(radius - majorTickSize + minorTickSize);\n }\n\n this.minorTickAngles = this.normalizeTickAngles(this.tickAngles(arc, options.minorUnit));\n this.minorTicks = drawTicks(tickArc, this.minorTickAngles, options.minorUnit, options.minorTicks);\n allTicks.append(this.minorTicks);\n\n return allTicks;\n };\n\n RadialScale.prototype.normalizeTickAngles = function normalizeTickAngles (angles) {\n var options = this.options;\n var skip = options.majorUnit / options.minorUnit;\n\n for (var i = angles.length - 1; i >= 0; i--) {\n if (i % skip === 0) {\n angles.splice(i, 1);\n }\n }\n\n return angles;\n };\n\n RadialScale.prototype.tickAngles = function tickAngles (ring, stepValue) {\n var options = this.options;\n var reverse = options.reverse;\n var range = options.max - options.min;\n var angle = ring.endAngle - ring.startAngle;\n var tickCount = range / stepValue;\n var pos = ring.startAngle;\n var step = angle / tickCount;\n\n if (reverse) {\n pos += angle;\n step = -step;\n }\n\n if (angle >= 360 && (options.max % stepValue === 0)) {\n tickCount -= 1;\n }\n\n var positions = [];\n for (var i = 0; i < tickCount; i++) {\n positions.push(round(pos, COORD_PRECISION));\n pos += step;\n }\n\n if (round(pos) <= ring.endAngle) {\n positions.push(pos);\n }\n\n return positions;\n };\n\n RadialScale.prototype.radius = function radius (value) {\n if (value) {\n this.arc.setRadiusX(value).setRadiusY(value);\n this.repositionTicks(this.majorTicks.children, this.majorTickAngles);\n this.repositionTicks(this.minorTicks.children, this.minorTickAngles, true);\n } else {\n return this.arc.getRadiusX();\n }\n };\n\n RadialScale.prototype.repositionTicks = function repositionTicks (ticks, tickAngles, minor) {\n var diff = minor ? (this._tickDifference || 0) : 0;\n var tickArc = this.arc;\n var radius = tickArc.getRadiusX();\n\n if (minor && this.options.labels.position === OUTSIDE && diff !== 0) {\n tickArc = this.arc.clone();\n tickArc.setRadiusX(radius - diff).setRadiusY(radius - diff);\n }\n\n for (var i = 0; i < ticks.length; i++) {\n var newPoint = tickArc.pointAt(tickAngles[i]);\n var segments = ticks[i].segments;\n var xDiff = newPoint.x - segments[0].anchor().x;\n var yDiff = newPoint.y - segments[0].anchor().y;\n\n ticks[i].transform(new geo.transform().translate(xDiff, yDiff));\n }\n };\n\n return RadialScale;\n}(NumericAxis));\n\nsetDefaultOptions(RadialScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n size: 15,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n minorTicks: {\n size: 10,\n align: INSIDE,\n color: BLACK,\n width: DEFAULT_LINE_WIDTH,\n visible: true\n },\n\n startAngle: -30,\n endAngle: 210,\n\n labels: {\n position: INSIDE,\n padding: 2\n }\n});\n\nexport default RadialScale;\n","import { geometry, drawing } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_POINTER } from '../constants';\n\nvar RadialPointerAnimation = (function (superclass) {\n function RadialPointerAnimation(element, options) {\n superclass.call(this, element, options);\n\n var animationOptions = this.options;\n\n animationOptions.duration = Math.max((Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000, 1);\n }\n\n if ( superclass ) RadialPointerAnimation.__proto__ = superclass;\n RadialPointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n RadialPointerAnimation.prototype.constructor = RadialPointerAnimation;\n\n RadialPointerAnimation.prototype.step = function step (pos) {\n var options = this.options;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n\n this.element.transform(geometry.transform().rotate(angle, options.center));\n };\n\n return RadialPointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RadialPointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_POINTER, RadialPointerAnimation);\n\nexport default RadialPointerAnimation;","import { geometry as geo, drawing } from '@progress/kendo-drawing';\n\nimport { setDefaultOptions, deepExtend, limitValue } from '../../common';\nimport { ANGULAR_SPEED, DEGREE, DEFAULT_LINE_WIDTH, RADIAL_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RadialPointerAnimation from './radial-pointer-animation';\n\nvar CAP_SIZE = 0.05;\nvar Circle = drawing.Circle;\nvar Group = drawing.Group;\nvar Path = drawing.Path;\n\nvar RadialPointer = (function (Pointer) {\n function RadialPointer () {\n Pointer.apply(this, arguments);\n }\n\n if ( Pointer ) RadialPointer.__proto__ = Pointer;\n RadialPointer.prototype = Object.create( Pointer && Pointer.prototype );\n RadialPointer.prototype.constructor = RadialPointer;\n\n RadialPointer.prototype.setAngle = function setAngle (angle) {\n this.elements.transform(geo.transform().rotate(angle, this.center));\n };\n\n RadialPointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n\n if (options.animation.transitions === false) {\n this.setAngle(newAngle);\n } else {\n new RadialPointerAnimation(this.elements, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n })).play();\n }\n };\n\n RadialPointer.prototype.render = function render () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var elements = new Group();\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n elements.append(this._renderNeedle(), this._renderCap());\n\n this.elements = elements;\n this.setAngle(DEGREE);\n\n return elements;\n };\n\n RadialPointer.prototype.reflow = function reflow (arc) {\n var center = this.center = arc.center;\n var length = limitValue(this.options.length || 1, 0.1, 1.5);\n var radius = this.radius = arc.getRadiusX() * length;\n var capSize = this.capSize = Math.round(radius * this.options.cap.size);\n\n this.bbox = geo.Rect.fromPoints(new geo.Point(center.x - capSize, center.y - capSize),\n new geo.Point(center.x + capSize, center.y + capSize));\n };\n\n RadialPointer.prototype._renderNeedle = function _renderNeedle () {\n var minorTickSize = this.scale.options.minorTicks.size;\n var center = this.center;\n var needleColor = this.options.color;\n\n var needlePath = new Path({\n fill: { color: needleColor },\n stroke: { color: needleColor, width: DEFAULT_LINE_WIDTH }\n });\n\n needlePath.moveTo(center.x + this.radius - minorTickSize, center.y)\n .lineTo(center.x, center.y - (this.capSize / 2))\n .lineTo(center.x, center.y + (this.capSize / 2))\n .close();\n\n return needlePath;\n };\n\n RadialPointer.prototype._renderCap = function _renderCap () {\n var options = this.options;\n var capColor = options.cap.color || options.color;\n var circle = new geo.Circle(this.center, this.capSize);\n\n var cap = new Circle(circle, {\n fill: { color: capColor },\n stroke: { color: capColor }\n });\n\n return cap;\n };\n\n return RadialPointer;\n}(Pointer));\n\nsetDefaultOptions(RadialPointer, {\n cap: {\n size: CAP_SIZE\n },\n arrow: {\n width: 16,\n height: 14\n },\n animation: {\n type: RADIAL_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RadialPointer;\n","import { geometry as geo, drawing } from '@progress/kendo-drawing';\nimport { setDefaultOptions, deepExtend, round, isArray } from '../../common';\nimport { COORD_PRECISION } from '../../common/constants';\nimport Gauge from '../gauge';\nimport RadialScale from './radial-scale';\nimport RadialPointer from './radial-pointer';\n\nvar Group = drawing.Group;\n\nvar RadialGauge = (function (Gauge) {\n function RadialGauge () {\n Gauge.apply(this, arguments);\n }\n\n if ( Gauge ) RadialGauge.__proto__ = Gauge;\n RadialGauge.prototype = Object.create( Gauge && Gauge.prototype );\n RadialGauge.prototype.constructor = RadialGauge;\n\n RadialGauge.prototype.reflow = function reflow (bbox) {\n var this$1 = this;\n\n var pointers = this.pointers;\n this.scale.reflow(bbox);\n this._initialPlotArea = this.scale.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(this$1.scale.arc);\n this$1._initialPlotArea = geo.Rect.union(this$1._initialPlotArea, pointers[i].bbox);\n }\n\n this.fitScale(bbox);\n this.alignScale(bbox);\n this._buildVisual(this.gaugeArea, pointers, this.scale);\n this._draw();\n };\n\n RadialGauge.prototype._buildVisual = function _buildVisual (gaugeArea, pointers, scale) {\n var visuals = this._visuals = new Group();\n\n visuals.append(gaugeArea);\n visuals.append(scale.ticks);\n visuals.append(scale.ranges);\n this._buildPointers(pointers);\n visuals.append(scale.labelElements);\n };\n\n RadialGauge.prototype._buildPointers = function _buildPointers (pointers) {\n var this$1 = this;\n\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n current.render();\n this$1._visuals.append(current.elements);\n\n current.value(current.options.value);\n }\n };\n\n RadialGauge.prototype.fitScale = function fitScale (bbox) {\n var this$1 = this;\n\n var arc = this.scale.arc;\n var plotAreaBox = this._initialPlotArea;\n var step = Math.abs(this.getDiff(plotAreaBox, bbox));\n var min = round(step, COORD_PRECISION);\n var max = round(-step, COORD_PRECISION);\n var minDiff, midDiff, maxDiff, mid, oldDiff;\n var staleFlag = 0;\n var i = 0;\n\n while (i++ < 100) {\n staleFlag = (oldDiff === maxDiff) ? (staleFlag + 1) : 0;\n\n if (staleFlag > 5) {\n break;\n }\n\n if (min !== mid) {\n minDiff = this$1.getPlotBox(min, bbox, arc);\n if (0 <= minDiff && minDiff <= 2) {\n break;\n }\n }\n\n if (max !== mid) {\n maxDiff = this$1.getPlotBox(max, bbox, arc);\n if (0 <= maxDiff && maxDiff <= 2) {\n break;\n }\n }\n\n if (minDiff > 0 && maxDiff > 0) {\n mid = min * 2;\n } else if (minDiff < 0 && maxDiff < 0) {\n mid = max * 2;\n } else {\n mid = round(((min + max) / 2) || 1, COORD_PRECISION);\n }\n\n midDiff = this$1.getPlotBox(mid, bbox, arc);\n if (0 <= midDiff && midDiff <= 2) {\n break;\n }\n\n oldDiff = maxDiff;\n\n if (midDiff > 0) {\n max = mid;\n maxDiff = midDiff;\n } else {\n min = mid;\n minDiff = midDiff;\n }\n }\n };\n\n RadialGauge.prototype.getPlotBox = function getPlotBox (step, bbox, arc) {\n var this$1 = this;\n\n var scale = this.scale;\n var pointers = this.pointers;\n var radius = arc.getRadiusX();\n var scaleArc = arc.clone();\n\n scaleArc.setRadiusX(radius + step).setRadiusY(radius + step);\n\n scale.arc = scaleArc;\n scale.reflow(bbox);\n this.plotBbox = scale.bbox;\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scaleArc);\n this$1.plotBbox = geo.Rect.union(this$1.plotBbox, pointers[i].bbox);\n }\n\n return this.getDiff(this.plotBbox, bbox);\n };\n\n RadialGauge.prototype.getDiff = function getDiff (plotBox, box) {\n return Math.min(box.width() - plotBox.width(), box.height() - plotBox.height());\n };\n\n RadialGauge.prototype.alignScale = function alignScale (bbox) {\n var this$1 = this;\n\n var plotBoxCenter = this.plotBbox.center();\n var boxCenter = bbox.center();\n var paddingX = plotBoxCenter.x - boxCenter.x;\n var paddingY = plotBoxCenter.y - boxCenter.y;\n var ref = this;\n var scale = ref.scale;\n var pointers = ref.pointers;\n\n scale.arc.center.x -= paddingX;\n scale.arc.center.y -= paddingY;\n\n scale.reflow(bbox);\n\n for (var i = 0; i < pointers.length; i++) {\n pointers[i].reflow(scale.arc);\n this$1.plotBbox = geo.Rect.union(scale.bbox, pointers[i].bbox);\n }\n };\n\n RadialGauge.prototype._createModel = function _createModel () {\n var this$1 = this;\n\n var options = this.options;\n var pointers = options.pointer;\n var scale = this.scale = new RadialScale(options.scale, this.contextService);\n\n this.pointers = [];\n\n var pointersArr = isArray(pointers) ? pointers : [ pointers ];\n for (var i = 0; i < pointersArr.length; i++) {\n var current = new RadialPointer(scale, deepExtend({}, pointersArr[i], {\n animation: {\n transitions: options.transitions\n }\n }));\n\n this$1.pointers.push(current);\n }\n };\n\n return RadialGauge;\n}(Gauge));\n\nsetDefaultOptions(RadialGauge, {\n transitions: true,\n gaugeArea: {\n background: \"\"\n }\n});\n\nexport default RadialGauge;","import RadialScale from '../radial/radial-scale';\nimport { setDefaultOptions } from '../../common';\n\nvar ArcScale = (function (RadialScale) {\n function ArcScale () {\n RadialScale.apply(this, arguments);\n }\n\n if ( RadialScale ) ArcScale.__proto__ = RadialScale;\n ArcScale.prototype = Object.create( RadialScale && RadialScale.prototype );\n ArcScale.prototype.constructor = ArcScale;\n\n ArcScale.prototype.rangeSegments = function rangeSegments () {\n var ref = this.options;\n var min = ref.min;\n var max = ref.max;\n var rangePlaceholderColor = ref.rangePlaceholderColor;\n var rangeLineCap = ref.rangeLineCap;\n\n return [ { from: min, to: max, color: rangePlaceholderColor, lineCap: rangeLineCap } ];\n };\n\n ArcScale.prototype.hasRanges = function hasRanges () {\n return true;\n };\n\n ArcScale.prototype.placeholderRangeAngle = function placeholderRangeAngle (angle) {\n var geometry = this.ranges.children[0].geometry();\n\n if (this.options.reverse) {\n geometry.setEndAngle(angle);\n } else {\n geometry.setStartAngle(angle);\n }\n };\n\n ArcScale.prototype.addRange = function addRange (from, to, options) {\n var reverse = this.options.reverse;\n\n var startAngle = this.slotAngle(reverse ? to : from);\n var endAngle = this.slotAngle(reverse ? from : to);\n\n var range = this.createRange(startAngle, endAngle, this.getRangeRadius(), options);\n\n this.ranges.append(range);\n\n return range;\n };\n\n return ArcScale;\n}(RadialScale));\n\nsetDefaultOptions(ArcScale, {\n min: 0,\n max: 100,\n\n majorTicks: {\n visible: false\n },\n\n minorTicks: {\n visible: false\n },\n\n labels: {\n visible: false\n },\n\n startAngle: 0,\n endAngle: 180,\n rangeLineCap: 'round'\n});\n\nexport default ArcScale;","import { drawing, Color } from '@progress/kendo-drawing';\nimport { interpolateValue, setDefaultOptions, round, limitValue } from '../../common';\nimport { ANGULAR_SPEED, LINEAR, RADIAL_RANGE_POINTER } from '../constants';\n\nvar MAX_DURATION = 800;\n\nvar RangePointerAnimation = (function (superclass) {\n function RangePointerAnimation(element, options) {\n superclass.call(this, element, options);\n\n var animationOptions = this.options;\n var duration = (Math.abs(animationOptions.newAngle - animationOptions.oldAngle) / animationOptions.duration) * 1000;\n animationOptions.duration = limitValue(duration, ANGULAR_SPEED, MAX_DURATION);\n\n var startColor = element.elements.options.get(\"stroke.color\");\n var color = element.currentColor();\n if (startColor !== color) {\n this.startColor = new Color(startColor);\n this.color = new Color(color);\n }\n }\n\n if ( superclass ) RangePointerAnimation.__proto__ = superclass;\n RangePointerAnimation.prototype = Object.create( superclass && superclass.prototype );\n RangePointerAnimation.prototype.constructor = RangePointerAnimation;\n\n RangePointerAnimation.prototype.step = function step (pos) {\n var ref = this;\n var options = ref.options;\n var startColor = ref.startColor;\n var color = ref.color;\n var angle = interpolateValue(options.oldAngle, options.newAngle, pos);\n this.element.angle(angle);\n\n if (color) {\n var r = round(interpolateValue(startColor.r, color.r, pos));\n var g = round(interpolateValue(startColor.g, color.g, pos));\n var b = round(interpolateValue(startColor.b, color.b, pos));\n\n this.element.stroke(new Color(r, g, b).toHex());\n }\n };\n\n return RangePointerAnimation;\n}(drawing.Animation));\n\nsetDefaultOptions(RangePointerAnimation, {\n easing: LINEAR,\n duration: ANGULAR_SPEED\n});\n\ndrawing.AnimationFactory.current.register(RADIAL_RANGE_POINTER, RangePointerAnimation);\n\nexport default RangePointerAnimation;","import { setDefaultOptions, deepExtend, isNumber } from '../../common';\nimport { ANGULAR_SPEED, RADIAL_RANGE_POINTER } from '../constants';\nimport Pointer from '../pointer';\nimport RangePointerAnimation from './range-pointer-animation';\n\nvar RangePointer = (function (Pointer) {\n function RangePointer () {\n Pointer.apply(this, arguments);\n }\n\n if ( Pointer ) RangePointer.__proto__ = Pointer;\n RangePointer.prototype = Object.create( Pointer && Pointer.prototype );\n RangePointer.prototype.constructor = RangePointer;\n\n RangePointer.prototype.repaint = function repaint () {\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n var oldAngle = scale.slotAngle(options._oldValue);\n var newAngle = scale.slotAngle(options.value);\n\n if (this.animation) {\n this.animation.abort();\n }\n\n if (options.animation.transitions === false) {\n this.angle(newAngle);\n this.stroke(this.currentColor());\n } else {\n this.animation = new RangePointerAnimation(this, deepExtend(options.animation, {\n oldAngle: oldAngle,\n newAngle: newAngle\n }));\n\n this.animation.play();\n }\n };\n\n RangePointer.prototype.angle = function angle (value) {\n var geometry = this.elements.geometry();\n if (this.scale.options.reverse) {\n geometry.setStartAngle(value);\n } else {\n geometry.setEndAngle(value);\n }\n this.scale.placeholderRangeAngle(value);\n };\n\n RangePointer.prototype.stroke = function stroke (value) {\n this.elements.stroke(value);\n };\n\n RangePointer.prototype.render = function render () {\n if (this.elements) {\n return;\n }\n\n var ref = this;\n var scale = ref.scale;\n var options = ref.options;\n\n if (options.animation !== false) {\n deepExtend(options.animation, {\n startAngle: 0,\n center: scale.arc.center,\n reverse: scale.options.reverse\n });\n }\n\n this.elements = scale.addRange(scale.options.min, this.options.value, {\n color: this.currentColor(),\n opacity: options.opacity,\n lineCap: scale.options.rangeLineCap\n });\n };\n\n RangePointer.prototype.currentColor = function currentColor () {\n var ref = this.scale.options;\n var min = ref.min;\n var max = ref.max;\n var ref$1 = this.options;\n var colors = ref$1.colors;\n var color = ref$1.color;\n var value = ref$1.value;\n var currentValue = isNumber(value) ? value : min;\n\n if (colors) {\n for (var idx = 0; idx < colors.length; idx++) {\n var ref$2 = colors[idx];\n var rangeColor = ref$2.color;\n var from = ref$2.from; if ( from === void 0 ) from = min;\n var to = ref$2.to; if ( to === void 0 ) to = max;\n\n if (from <= currentValue && currentValue <= to) {\n return rangeColor;\n }\n }\n }\n\n return color;\n };\n\n RangePointer.prototype.reflow = function reflow () {\n this.render();\n\n this.bbox = this.elements.bbox();\n };\n\n return RangePointer;\n}(Pointer));\n\nsetDefaultOptions(RangePointer, {\n animation: {\n type: RADIAL_RANGE_POINTER,\n duration: ANGULAR_SPEED\n }\n});\n\nexport default RangePointer;\n","import RadialGauge from '../radial/radial-gauge';\nimport ArcScale from './arc-scale';\nimport RangePointer from './range-pointer';\n\nimport { deepExtend } from '../../common';\n\n\nvar ArcGauge = (function (RadialGauge) {\n function ArcGauge () {\n RadialGauge.apply(this, arguments);\n }\n\n if ( RadialGauge ) ArcGauge.__proto__ = RadialGauge;\n ArcGauge.prototype = Object.create( RadialGauge && RadialGauge.prototype );\n ArcGauge.prototype.constructor = ArcGauge;\n\n ArcGauge.prototype._initTheme = function _initTheme (theme) {\n RadialGauge.prototype._initTheme.call(this, theme);\n\n this.options.color = this.options.color || (this.theme.pointer || {}).color;\n };\n\n ArcGauge.prototype._createModel = function _createModel () {\n var options = this.options;\n var scale = this.scale = new ArcScale(options.scale, this.contextService);\n\n var pointer = new RangePointer(scale, deepExtend({}, {\n colors: options.colors,\n color: options.color,\n value: options.value,\n opacity: options.opacity,\n animation: {\n transitions: options.transitions\n }\n }));\n\n this.pointers = [ pointer ];\n };\n\n ArcGauge.prototype._buildPointers = function _buildPointers (pointers) {\n for (var i = 0; i < pointers.length; i++) {\n var current = pointers[i];\n current.render();\n\n current.value(current.options.value);\n }\n };\n\n ArcGauge.prototype._setValueOptions = function _setValueOptions (value) {\n this.options.value = value;\n };\n\n ArcGauge.prototype.currentColor = function currentColor () {\n var pointer = this.pointers[0];\n if (pointer) {\n return pointer.currentColor();\n }\n };\n\n ArcGauge.prototype.centerLabelPosition = function centerLabelPosition (width, height) {\n var size = this.getSize();\n var center = this.scale.arc.center;\n\n var left = center.x - width / 2;\n var top = center.y - height / 2;\n\n if (width < size.width) {\n var right = left + width;\n\n left = Math.max(left, 0);\n\n if (right > size.width) {\n left -= right - size.width;\n }\n }\n\n if (height < size.height) {\n var bbox = this.scale.bbox;\n var yLimit = bbox.bottomRight().y;\n var bottom = top + height;\n\n top = Math.max(top, bbox.origin.y);\n\n if (bottom > yLimit) {\n top -= bottom - yLimit;\n }\n }\n\n return {\n left: left,\n top: top\n };\n };\n\n return ArcGauge;\n}(RadialGauge));\n\nexport default ArcGauge;","import {\n Class,\n defined,\n setDefaultOptions\n} from '../../common';\n\nvar DEFAULT_QUIET_ZONE_LENGTH = 10;\n\nexport var Encoding = (function (Class) {\n function Encoding(options) {\n Class.call(this);\n this.setOptions(options);\n this.initProperties();\n }\n\n if ( Class ) Encoding.__proto__ = Class;\n Encoding.prototype = Object.create( Class && Class.prototype );\n Encoding.prototype.constructor = Encoding;\n\n Encoding.prototype.initProperties = function initProperties () { };\n\n Encoding.prototype.setOptions = function setOptions (options) {\n this.options = Object.assign({}, this.options, options);\n this.quietZoneLength = this.options.addQuietZone ? 2 * this.options.quietZoneLength : 0;\n };\n\n Encoding.prototype.encode = function encode (value, width, height) {\n var convertedValue = defined(value) ? String(value) : value;\n\n this.initValue(convertedValue, width, height);\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n this.addData();\n\n if (this.options.addQuietZone) {\n this.addQuietZone();\n }\n\n return {\n baseUnit: this.baseUnit,\n pattern: this.pattern\n };\n };\n\n Encoding.prototype.initValue = function initValue () { };\n\n Encoding.prototype.addQuietZone = function addQuietZone () {\n this.pattern.push(this.options.quietZoneLength || DEFAULT_QUIET_ZONE_LENGTH);\n };\n\n Encoding.prototype.addData = function addData () { };\n\n Encoding.prototype.invalidCharacterError = function invalidCharacterError (character) {\n throw new Error((\"Character \\\"\" + character + \"\\\" is not valid for symbology \" + (this.name) + \".\"));\n };\n\n return Encoding;\n}(Class));\n\nsetDefaultOptions(Encoding, {\n quietZoneLength: DEFAULT_QUIET_ZONE_LENGTH,\n addQuietZone: true,\n addCheckSum: true\n});\n","import ArcGauge from '../arc/arc-gauge';\n\nvar defaultStartAngle = 90;\n\nvar CircularGauge = (function (ArcGauge) {\n function CircularGauge () {\n ArcGauge.apply(this, arguments);\n }\n\n if ( ArcGauge ) CircularGauge.__proto__ = ArcGauge;\n CircularGauge.prototype = Object.create( ArcGauge && ArcGauge.prototype );\n CircularGauge.prototype.constructor = CircularGauge;\n\n CircularGauge.prototype._createModel = function _createModel () {\n var scaleOptions = this.options.scale;\n if (typeof scaleOptions.startAngle !== 'number') {\n scaleOptions.startAngle = defaultStartAngle;\n }\n\n scaleOptions.endAngle = scaleOptions.startAngle + 360;\n\n ArcGauge.prototype._createModel.call(this);\n };\n\n return CircularGauge;\n}(ArcGauge));\n\nexport default CircularGauge;\n","import { Encoding } from './encoding';\nimport { setDefaultOptions } from '../../common';\n\nvar extend = Object.assign;\n\nexport var Code11 = (function (Encoding) {\n function Code11 () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Code11.__proto__ = Encoding;\n Code11.prototype = Object.create( Encoding && Encoding.prototype );\n Code11.prototype.constructor = Code11;\n\n Code11.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 11\",\n characterMap: [\"111121\", \"211121\", \"121121\", \"221111\", \"112121\", \"212111\", \"122111\", \"111221\", \"211211\", \"211111\", \"112111\"],\n cCheckSumTotal: 10,\n kCheckSumTotal: 9,\n kCheckSumMinLength: 10,\n checkSumMod: 11,\n DASH_VALUE: 10,\n DASH: \"-\",\n START: \"112211\",\n STOP: \"11221\"\n });\n };\n\n Code11.prototype.initValue = function initValue (value, width) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.totalUnits = 0;\n };\n\n Code11.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addPattern(this.START);\n\n for (var i = 0; i < value.length; i++) {\n this$1.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n };\n\n Code11.prototype.setBaseUnit = function setBaseUnit () {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n };\n\n Code11.prototype.addCheckSum = function addCheckSum () {\n var value = this.value;\n var length = value.length;\n var cValue = this.getWeightedSum(value, length, this.cCheckSumTotal) % this.checkSumMod;\n\n this.checksum = String(cValue);\n this.addPattern(this.characterMap[cValue]);\n\n length++;\n\n if (length >= this.kCheckSumMinLength) {\n var kValue = (cValue + this.getWeightedSum(value, length, this.kCheckSumTotal)) % this.checkSumMod;\n this.checksum += kValue;\n this.addPattern(this.characterMap[kValue]);\n }\n };\n\n Code11.prototype.getWeightedSum = function getWeightedSum (value, length, total) {\n var this$1 = this;\n\n var weightedSum = 0;\n\n for (var i = 0; i < value.length; i++) {\n weightedSum += this$1.weightedValue(this$1.getValue(value.charAt(i)), length, i, total);\n }\n\n return weightedSum;\n };\n\n Code11.prototype.weightedValue = function weightedValue (value, length, index, total) {\n var weight = (length - index) % total || total;\n return weight * value;\n };\n\n Code11.prototype.getValue = function getValue (character) {\n if (!isNaN(character)) {\n return parseInt(character, 10);\n } else if (character !== this.DASH) {\n this.invalidCharacterError(character);\n }\n\n return this.DASH_VALUE;\n };\n\n Code11.prototype.addCharacter = function addCharacter (character) {\n var value = this.getValue(character);\n var pattern = this.characterMap[value];\n\n this.addPattern(pattern);\n };\n\n Code11.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this$1.pattern.push(value);\n this$1.totalUnits += value;\n }\n };\n\n return Code11;\n}(Encoding));\n\nsetDefaultOptions(Code11, {\n addCheckSum: true\n});\n","import { setDefaultOptions } from '../../common';\nimport { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var Code39Base = (function (Encoding) {\n function Code39Base () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Code39Base.__proto__ = Encoding;\n Code39Base.prototype = Object.create( Encoding && Encoding.prototype );\n Code39Base.prototype.constructor = Code39Base;\n\n Code39Base.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n minBaseUnitLength: 0.7\n });\n };\n\n Code39Base.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addStart();\n\n for (var idx = 0; idx < value.length; idx++) {\n this$1.addCharacter(value.charAt(idx));\n }\n\n if (this.options.addCheckSum) {\n this.pushCheckSum();\n }\n\n this.addStop();\n this.prepareValues();\n };\n\n Code39Base.prototype.addCharacter = function addCharacter (character) {\n var characterData = this.characterMap[character];\n\n if (!characterData) {\n this.invalidCharacterError(character);\n }\n\n this.addBase(characterData);\n };\n\n Code39Base.prototype.addBase = function addBase () { };\n\n return Code39Base;\n}(Encoding));\n\nexport var Code39 = (function (Code39Base) {\n function Code39 () {\n Code39Base.apply(this, arguments);\n }\n\n if ( Code39Base ) Code39.__proto__ = Code39Base;\n Code39.prototype = Object.create( Code39Base && Code39Base.prototype );\n Code39.prototype.constructor = Code39;\n\n Code39.prototype.initProperties = function initProperties () {\n Code39Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 39\",\n checkSumMod: 43,\n minRatio: 2.5,\n maxRatio: 3,\n gapWidth: 1,\n splitCharacter: \"|\",\n patternMappings: {\n \"b\": \"1|\",\n \"w\": \"1|\",\n \"B\": \"ratio|\",\n \"W\": \"ratio|\"\n },\n characterMap: {\n \"0\": { \"pattern\": \"bwbWBwBwb\", \"value\": 0 },\n \"1\": { \"pattern\": \"BwbWbwbwB\", \"value\": 1 },\n \"2\": { \"pattern\": \"bwBWbwbwB\", \"value\": 2 },\n \"3\": { \"pattern\": \"BwBWbwbwb\", \"value\": 3 },\n \"4\": { \"pattern\": \"bwbWBwbwB\", \"value\": 4 },\n \"5\": { \"pattern\": \"BwbWBwbwb\", \"value\": 5 },\n \"6\": { \"pattern\": \"bwBWBwbwb\", \"value\": 6 },\n \"7\": { \"pattern\": \"bwbWbwBwB\", \"value\": 7 },\n \"8\": { \"pattern\": \"BwbWbwBwb\", \"value\": 8 },\n \"9\": { \"pattern\": \"bwBWbwBwb\", \"value\": 9 },\n \"A\": { \"pattern\": \"BwbwbWbwB\", \"value\": 10 },\n \"B\": { \"pattern\": \"bwBwbWbwB\", \"value\": 11 },\n \"C\": { \"pattern\": \"BwBwbWbwb\", \"value\": 12 },\n \"D\": { \"pattern\": \"bwbwBWbwB\", \"value\": 13 },\n \"E\": { \"pattern\": \"BwbwBWbwb\", \"value\": 14 },\n \"F\": { \"pattern\": \"bwBwBWbwb\", \"value\": 15 },\n \"G\": { \"pattern\": \"bwbwbWBwB\", \"value\": 16 },\n \"H\": { \"pattern\": \"BwbwbWBwb\", \"value\": 17 },\n \"I\": { \"pattern\": \"bwBwbWBwb\", \"value\": 18 },\n \"J\": { \"pattern\": \"bwbwBWBwb\", \"value\": 19 },\n \"K\": { \"pattern\": \"BwbwbwbWB\", \"value\": 20 },\n \"L\": { \"pattern\": \"bwBwbwbWB\", \"value\": 21 },\n \"M\": { \"pattern\": \"BwBwbwbWb\", \"value\": 22 },\n \"N\": { \"pattern\": \"bwbwBwbWB\", \"value\": 23 },\n \"O\": { \"pattern\": \"BwbwBwbWb\", \"value\": 24 },\n \"P\": { \"pattern\": \"bwBwBwbWb\", \"value\": 25 },\n \"Q\": { \"pattern\": \"bwbwbwBWB\", \"value\": 26 },\n \"R\": { \"pattern\": \"BwbwbwBWb\", \"value\": 27 },\n \"S\": { \"pattern\": \"bwBwbwBWb\", \"value\": 28 },\n \"T\": { \"pattern\": \"bwbwBwBWb\", \"value\": 29 },\n \"U\": { \"pattern\": \"BWbwbwbwB\", \"value\": 30 },\n \"V\": { \"pattern\": \"bWBwbwbwB\", \"value\": 31 },\n \"W\": { \"pattern\": \"BWBwbwbwb\", \"value\": 32 },\n \"X\": { \"pattern\": \"bWbwBwbwB\", \"value\": 33 },\n \"Y\": { \"pattern\": \"BWbwBwbwb\", \"value\": 34 },\n \"Z\": { \"pattern\": \"bWBwBwbwb\", \"value\": 35 },\n \"-\": { \"pattern\": \"bWbwbwBwB\", \"value\": 36 },\n \".\": { \"pattern\": \"BWbwbwBwb\", \"value\": 37 },\n \" \": { \"pattern\": \"bWBwbwBwb\", \"value\": 38 },\n \"$\": { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n \"/\": { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n \"+\": { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n \"%\": { \"pattern\": \"bwbWbWbWb\", \"value\": 42 },\n START: { pattern: \"bWbwBwBwb\" }\n }\n });\n };\n\n Code39.prototype.initValue = function initValue (value, width, height) {\n this.width = width;\n this.height = height;\n this.value = value;\n this.dataLength = value.length;\n this.pattern = [];\n this.patternString = \"\";\n };\n\n Code39.prototype.prepareValues = function prepareValues () {\n var this$1 = this;\n\n var minBaseUnit = this.minBaseUnitLength;\n var minRatio = this.minRatio;\n var minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n var baseUnit;\n var ratio = this.maxRatio;\n\n if (this.height < minHeight) {\n throw new Error((\"Insufficient height for Code39 encoding: the current height is \" + (this.height) + \"px and the minimum height is \" + minHeight + \"px.\"));\n }\n\n baseUnit = this.getBaseUnit(ratio);\n\n while (baseUnit < minBaseUnit && ratio > minRatio) {\n ratio = parseFloat((ratio - 0.1).toFixed(1));\n baseUnit = this$1.getBaseUnit(ratio);\n }\n\n if (baseUnit < minBaseUnit) {\n var minWidth = Math.ceil(this.getBaseWidth(minRatio) * minBaseUnit);\n throw new Error((\"Insufficient width for Code39 encoding: the current width is \" + (this.width) + \"px and the minimum width for value \\\"\" + (this.value) + \"\\\" is \" + minWidth + \"px.\"));\n }\n\n this.ratio = ratio;\n this.baseUnit = baseUnit;\n this.patternString = this.patternString.substring(0, this.patternString.length - 1);\n this.pattern = this.pattern.concat(this.patternString.replace(/ratio/g, ratio).split(this.splitCharacter));\n };\n\n Code39.prototype.getBaseUnit = function getBaseUnit (ratio) {\n return this.width / this.getBaseWidth(ratio);\n };\n\n Code39.prototype.getBaseWidth = function getBaseWidth (ratio) {\n var characterLength = 3 * (ratio + 2);\n return this.quietZoneLength + characterLength * (this.dataLength + 2) + this.gapWidth * (this.dataLength + 1);\n };\n\n Code39.prototype.addStart = function addStart () {\n this.addPattern(this.characterMap.START.pattern);\n this.addCharacterGap();\n };\n\n Code39.prototype.addBase = function addBase (character) {\n this.addPattern(character.pattern);\n this.addCharacterGap();\n };\n\n Code39.prototype.addStop = function addStop () {\n this.addPattern(this.characterMap.START.pattern);\n };\n\n Code39.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n for (var i = 0; i < pattern.length; i++) {\n this$1.patternString += this$1.patternMappings[pattern.charAt(i)];\n }\n };\n\n Code39.prototype.addCharacterGap = function addCharacterGap () {\n this.patternString += this.gapWidth + this.splitCharacter;\n };\n\n return Code39;\n}(Code39Base));\n\nsetDefaultOptions(Code39, {\n addCheckSum: false\n});\n","import { Code39 } from './code39';\nimport deepExtend from '../../common/deep-extend';\n\nexport var Code39ExtendedBase = {\n addCharacter: function addCharacter(character) {\n if (this.characterMap[character]) {\n this.addBase(this.characterMap[character]);\n } else if (character.charCodeAt(0) > 127) {\n this.invalidCharacterError(character);\n } else {\n this.addExtended(character.charCodeAt(0));\n }\n },\n\n addExtended: function addExtended(code) {\n var this$1 = this;\n\n var patterns;\n\n for (var i = 0; i < this.extendedMappings.length; i++) {\n patterns = this$1.extendedMappings[i].call(this$1, code);\n\n if (patterns) {\n for (var patternIndex = 0; patternIndex < patterns.length; patternIndex++) {\n var pattern = patterns[patternIndex];\n this$1.addBase(pattern);\n }\n\n this$1.dataLength += patterns.length - 1;\n return;\n }\n }\n },\n\n extendedMappings: [\n function(code) {\n if (97 <= code && code <= 122) {\n return [this.characterMap[this.shiftCharacters[0]], this.characterMap[String.fromCharCode(code - 32)]];\n }\n },\n function(code) {\n if (33 <= code && code <= 58) {\n return [this.characterMap[this.shiftCharacters[1]], this.characterMap[String.fromCharCode(code + 32)]];\n }\n },\n function(code) {\n if (1 <= code && code <= 26) {\n return [this.characterMap[this.shiftCharacters[2]], this.characterMap[String.fromCharCode(code + 64)]];\n }\n },\n function(code) {\n var this$1 = this;\n\n var result;\n var dataCharacter;\n\n if (!this.specialAsciiCodes[code]) {\n dataCharacter = Math.floor(code / 32) * 6 + (code - 27) % 32 + 64;\n result = [this.characterMap[this.shiftCharacters[3]], this.characterMap[String.fromCharCode(dataCharacter)]];\n } else {\n result = [];\n\n for (var i = 0; i < this.specialAsciiCodes[code].length; i++) {\n result.push(this$1.characterMap[this$1.shiftCharacters[3]]);\n result.push(this$1.characterMap[this$1.specialAsciiCodes[code][i]]);\n }\n }\n\n return result;\n }\n ],\n specialAsciiCodes: {\n \"0\": [\"U\"],\n \"64\": [\"V\"],\n \"96\": [\"W\"],\n \"127\": [\"T\", \"X\", \"Y\", \"Z\"]\n },\n shiftValuesAsciiCodes: {\n \"39\": 36,\n \"40\": 47,\n \"41\": 43,\n \"42\": 37\n },\n characterMap: {\n \"+\": false,\n \"/\": false,\n \"$\": false,\n \"%\": false\n },\n shiftCharacters: [\"SHIFT0\", \"SHIFT1\", \"SHIFT2\", \"SHIFT3\"]\n};\n\nexport var Code39Extended = (function (Code39) {\n function Code39Extended () {\n Code39.apply(this, arguments);\n }\n\n if ( Code39 ) Code39Extended.__proto__ = Code39;\n Code39Extended.prototype = Object.create( Code39 && Code39.prototype );\n Code39Extended.prototype.constructor = Code39Extended;\n\n Code39Extended.prototype.initProperties = function initProperties () {\n Code39.prototype.initProperties.call(this);\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 39 extended\",\n characterMap: {\n SHIFT0: { \"pattern\": \"bWbwbWbWb\", \"value\": 41 },\n SHIFT1: { \"pattern\": \"bWbWbwbWb\", \"value\": 40 },\n SHIFT2: { \"pattern\": \"bWbWbWbwb\", \"value\": 39 },\n SHIFT3: { \"pattern\": \"bwbWbWbWb\", \"value\": 42 }\n }\n });\n };\n\n return Code39Extended;\n}(Code39));\n","import { Code39Base } from './code39';\n\nvar extend = Object.assign;\n\nexport var Code93 = (function (Code39Base) {\n function Code93 () {\n Code39Base.apply(this, arguments);\n }\n\n if ( Code39Base ) Code93.__proto__ = Code39Base;\n Code93.prototype = Object.create( Code39Base && Code39Base.prototype );\n Code93.prototype.constructor = Code93;\n\n Code93.prototype.initProperties = function initProperties () {\n Code39Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 93\",\n cCheckSumTotal: 20,\n kCheckSumTotal: 15,\n checkSumMod: 47,\n characterMap: {\n \"0\": { \"pattern\": \"131112\", \"value\": 0 },\n \"1\": { \"pattern\": \"111213\", \"value\": 1 },\n \"2\": { \"pattern\": \"111312\", \"value\": 2 },\n \"3\": { \"pattern\": \"111411\", \"value\": 3 },\n \"4\": { \"pattern\": \"121113\", \"value\": 4 },\n \"5\": { \"pattern\": \"121212\", \"value\": 5 },\n \"6\": { \"pattern\": \"121311\", \"value\": 6 },\n \"7\": { \"pattern\": \"111114\", \"value\": 7 },\n \"8\": { \"pattern\": \"131211\", \"value\": 8 },\n \"9\": { \"pattern\": \"141111\", \"value\": 9 },\n \"A\": { \"pattern\": \"211113\", \"value\": 10 },\n \"B\": { \"pattern\": \"211212\", \"value\": 11 },\n \"C\": { \"pattern\": \"211311\", \"value\": 12 },\n \"D\": { \"pattern\": \"221112\", \"value\": 13 },\n \"E\": { \"pattern\": \"221211\", \"value\": 14 },\n \"F\": { \"pattern\": \"231111\", \"value\": 15 },\n \"G\": { \"pattern\": \"112113\", \"value\": 16 },\n \"H\": { \"pattern\": \"112212\", \"value\": 17 },\n \"I\": { \"pattern\": \"112311\", \"value\": 18 },\n \"J\": { \"pattern\": \"122112\", \"value\": 19 },\n \"K\": { \"pattern\": \"132111\", \"value\": 20 },\n \"L\": { \"pattern\": \"111123\", \"value\": 21 },\n \"M\": { \"pattern\": \"111222\", \"value\": 22 },\n \"N\": { \"pattern\": \"111321\", \"value\": 23 },\n \"O\": { \"pattern\": \"121122\", \"value\": 24 },\n \"P\": { \"pattern\": \"131121\", \"value\": 25 },\n \"Q\": { \"pattern\": \"212112\", \"value\": 26 },\n \"R\": { \"pattern\": \"212211\", \"value\": 27 },\n \"S\": { \"pattern\": \"211122\", \"value\": 28 },\n \"T\": { \"pattern\": \"211221\", \"value\": 29 },\n \"U\": { \"pattern\": \"221121\", \"value\": 30 },\n \"V\": { \"pattern\": \"222111\", \"value\": 31 },\n \"W\": { \"pattern\": \"112122\", \"value\": 32 },\n \"X\": { \"pattern\": \"112221\", \"value\": 33 },\n \"Y\": { \"pattern\": \"122121\", \"value\": 34 },\n \"Z\": { \"pattern\": \"123111\", \"value\": 35 },\n \"-\": { \"pattern\": \"121131\", \"value\": 36 },\n \".\": { \"pattern\": \"311112\", \"value\": 37 },\n \" \": { \"pattern\": \"311211\", \"value\": 38 },\n \"$\": { \"pattern\": \"321111\", \"value\": 39 },\n \"/\": { \"pattern\": \"112131\", \"value\": 40 },\n \"+\": { \"pattern\": \"113121\", \"value\": 41 },\n \"%\": { \"pattern\": \"211131\", \"value\": 42 },\n SHIFT0: { \"pattern\": \"122211\", \"value\": 46 },\n SHIFT1: { \"pattern\": \"311121\", \"value\": 45 },\n SHIFT2: { \"pattern\": \"121221\", \"value\": 43 },\n SHIFT3: { \"pattern\": \"312111\", \"value\": 44 },\n START: { \"pattern\": \"111141\" },\n TERMINATION_BAR: \"1\"\n }\n });\n };\n\n Code93.prototype.initValue = function initValue (value, width, height) {\n this.value = value;\n this.width = width;\n this.height = height;\n this.pattern = [];\n this.values = [];\n this.dataLength = value.length;\n };\n\n Code93.prototype.prepareValues = function prepareValues () {\n var minHeight = Math.ceil(Math.max(0.15 * this.width, 24));\n\n if (this.height < minHeight) {\n throw new Error((\"Insufficient height for Code93 encoding: the current height is \" + (this.height) + \"px, the minimum required height is \" + minHeight + \"px.\"));\n }\n\n this.setBaseUnit();\n\n if (this.baseUnit < this.minBaseUnitLength) {\n var minWidth = Math.ceil(this.minBaseUnitLength * (this.width / this.baseUnit));\n throw new Error((\"Insufficient width for Code93 encoding: the current width is \" + (this.width) + \"px and the minimum required width for value \\\"\" + (this.value) + \"\\\" is \" + minWidth + \"px.\"));\n }\n };\n\n Code93.prototype.setBaseUnit = function setBaseUnit () {\n var checkSumLength = 2;\n\n this.baseUnit = this.width / (9 * (this.dataLength + 2 + checkSumLength) + this.quietZoneLength + 1);\n };\n\n Code93.prototype.addStart = function addStart () {\n var pattern = this.characterMap.START.pattern;\n this.addPattern(pattern);\n };\n\n Code93.prototype.addStop = function addStop () {\n this.addStart();\n this.pattern.push(this.characterMap.TERMINATION_BAR);\n };\n\n Code93.prototype.addBase = function addBase (charData) {\n this.addPattern(charData.pattern);\n this.values.push(charData.value);\n };\n\n Code93.prototype.pushCheckSum = function pushCheckSum () {\n var this$1 = this;\n\n var checkValues = this._getCheckValues();\n var charData;\n\n this.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n charData = this$1.characterMap[this$1._findCharacterByValue(checkValues[i])];\n this$1.addPattern(charData.pattern);\n }\n };\n\n Code93.prototype._getCheckValues = function _getCheckValues () {\n var this$1 = this;\n\n var values = this.values;\n var length = values.length;\n var wightedSum = 0;\n var cValue;\n var kValue;\n var idx;\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this$1.weightedValue(values[idx], length - idx, this$1.cCheckSumTotal);\n }\n\n cValue = wightedSum % this.checkSumMod;\n\n wightedSum = this.weightedValue(cValue, 1, this.kCheckSumTotal);\n\n for (idx = length - 1; idx >= 0; idx--) {\n wightedSum += this$1.weightedValue(values[idx], length - idx + 1, this$1.kCheckSumTotal);\n }\n\n kValue = wightedSum % this.checkSumMod;\n return [cValue, kValue];\n };\n\n Code93.prototype._findCharacterByValue = function _findCharacterByValue (value) {\n var this$1 = this;\n\n for (var character in this$1.characterMap) {\n if (this$1.characterMap[character].value === value) {\n return character;\n }\n }\n };\n\n Code93.prototype.weightedValue = function weightedValue (value, index, total) {\n return (index % total || total) * value;\n };\n\n Code93.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this$1.pattern.push(value);\n }\n };\n\n return Code93;\n}(Code39Base));\n","import { Code93 } from './code93';\nimport { Code39ExtendedBase } from './code39-extended';\nimport deepExtend from '../../common/deep-extend';\n\nexport var Code93Extended = (function (Code93) {\n function Code93Extended () {\n Code93.apply(this, arguments);\n }\n\n if ( Code93 ) Code93Extended.__proto__ = Code93;\n Code93Extended.prototype = Object.create( Code93 && Code93.prototype );\n Code93Extended.prototype.constructor = Code93Extended;\n\n Code93Extended.prototype.initProperties = function initProperties () {\n Code93.prototype.initProperties.call(this);\n\n deepExtend(this, Code39ExtendedBase, {\n name: \"Code 93 extended\",\n pushCheckSum: function() {\n var this$1 = this;\n\n var checkValues = this._getCheckValues();\n var value;\n\n this.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n value = checkValues[i];\n\n if (this$1.shiftValuesAsciiCodes[value]) {\n this$1.addExtended(this$1.shiftValuesAsciiCodes[value]);\n } else {\n var characterByValue = this$1._findCharacterByValue(value);\n this$1.addPattern(this$1.characterMap[characterByValue].pattern);\n }\n }\n }\n });\n };\n\n return Code93Extended;\n}(Code93));\n","import { Encoding } from './encoding';\nimport inArray from '../../common/in-array';\n\nvar numberRegex = /^\\d+$/;\nvar extend = Object.assign;\n\nexport var Postnet = (function (Encoding) {\n function Postnet () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Postnet.__proto__ = Encoding;\n Postnet.prototype = Object.create( Encoding && Encoding.prototype );\n Postnet.prototype.constructor = Postnet;\n\n Postnet.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Postnet\",\n START: \"2\",\n VALID_CODE_LENGTHS: [5, 9, 11],\n DIGIT_SEPARATOR: \"-\",\n characterMap: [\"22111\", \"11122\", \"11212\", \"11221\", \"12112\", \"12121\", \"12211\", \"21112\", \"21121\", \"21211\"]\n });\n };\n\n Postnet.prototype.initValue = function initValue (value, width, height) {\n this.height = height;\n this.width = width;\n this.baseHeight = height / 2;\n this.value = value.replace(new RegExp(this.DIGIT_SEPARATOR, \"g\"), \"\");\n this.pattern = [];\n this.validate(this.value);\n this.checkSum = 0;\n this.setBaseUnit();\n };\n\n Postnet.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addPattern(this.START);\n\n for (var i = 0; i < value.length; i++) {\n this$1.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.START);\n this.pattern.pop();\n };\n\n Postnet.prototype.addCharacter = function addCharacter (character) {\n var pattern = this.characterMap[character];\n this.checkSum += parseInt(character, 10);\n this.addPattern(pattern);\n };\n\n Postnet.prototype.addCheckSum = function addCheckSum () {\n this.checksum = (10 - (this.checkSum % 10)) % 10;\n this.addCharacter(this.checksum);\n };\n\n Postnet.prototype.setBaseUnit = function setBaseUnit () {\n var startStopLength = 3;\n\n this.baseUnit = this.width / ((this.value.length + 1) * 10 + startStopLength + this.quietZoneLength);\n };\n\n Postnet.prototype.validate = function validate (value) {\n if (!numberRegex.test(value)) {\n this.invalidCharacterError(value.match(/[^0-9]/)[0]);\n }\n\n if (!inArray(value.length, this.VALID_CODE_LENGTHS)) {\n throw new Error(\"Invalid value length. Valid lengths for the Postnet symbology are \" + this.VALID_CODE_LENGTHS.join(\",\") + \".\");\n }\n };\n\n Postnet.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n var y1;\n\n for (var i = 0; i < pattern.length; i++) {\n y1 = this$1.height - this$1.baseHeight * pattern.charAt(i);\n this$1.pattern.push({ width: 1, y1: y1, y2: this$1.height });\n this$1.pattern.push(1);\n }\n };\n\n return Postnet;\n}(Encoding));\n","import { Class } from '../../common';\nimport { Encoding } from './encoding';\nimport deepExtend from '../../common/deep-extend';\nimport inArray from '../../common/in-array';\n\nvar numberRegex = /^\\d+$/;\nvar alphanumericRegex = /^[a-z0-9]+$/i;\nvar extend = Object.assign;\n\nexport var State128 = (function (Class) {\n function State128(encoding) {\n Class.call(this);\n this.encoding = encoding;\n this.initProperties();\n }\n\n if ( Class ) State128.__proto__ = Class;\n State128.prototype = Object.create( Class && Class.prototype );\n State128.prototype.constructor = State128;\n\n State128.prototype.initProperties = function initProperties () { };\n\n State128.prototype.addStart = function addStart () { };\n\n State128.prototype.is = function is () { };\n\n State128.prototype.isCode = function isCode () {\n return false;\n };\n\n State128.prototype.move = function move () { };\n\n State128.prototype.pushState = function pushState () { };\n\n return State128;\n}(Class));\n\nexport var State128AB = (function (State128) {\n function State128AB(encoding, states) {\n State128.call(this, encoding);\n this.states = states;\n this._initMoves(states);\n }\n\n if ( State128 ) State128AB.__proto__ = State128;\n State128AB.prototype = Object.create( State128 && State128.prototype );\n State128AB.prototype.constructor = State128AB;\n\n State128AB.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n deepExtend(this, {\n FNC4: \"FNC4\",\n SHIFT: 98\n });\n };\n\n State128AB.prototype.addStart = function addStart () {\n this.encoding.addPattern(this.START);\n };\n\n State128AB.prototype.is = function is (value, index) {\n var code = value.charCodeAt(index);\n return this.isCode(code);\n };\n\n State128AB.prototype.move = function move (encodingState) {\n var idx = 0;\n\n while (!this._moves[idx].call(this, encodingState) && idx < this._moves.length) {\n idx++;\n }\n };\n\n State128AB.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var states = this.states,\n value = encodingState.value,\n maxLength = value.length,\n code;\n\n if (inArray(\"C\", states)) {\n var numberMatch = value.substr(encodingState.index).match(/\\d{4,}/g);\n\n if (numberMatch) {\n maxLength = value.indexOf(numberMatch[0], encodingState.index);\n }\n }\n\n while ((code = encodingState.value.charCodeAt(encodingState.index)) >= 0 &&\n this.isCode(code) &&\n encodingState.index < maxLength) {\n this$1.encoding.addPattern(this$1.getValue(code));\n encodingState.index++;\n }\n };\n\n State128AB.prototype._initMoves = function _initMoves (states) {\n this._moves = [];\n\n if (inArray(this.FNC4, states)) {\n this._moves.push(this._moveFNC);\n }\n\n if (inArray(this.shiftKey, states)) {\n this._moves.push(this._shiftState);\n }\n\n this._moves.push(this._moveState);\n };\n\n State128AB.prototype._moveFNC = function _moveFNC (encodingState) {\n if (encodingState.fnc) {\n encodingState.fnc = false;\n return encodingState.previousState === this.key;\n }\n };\n\n State128AB.prototype._shiftState = function _shiftState (encodingState) {\n if (encodingState.previousState === this.shiftKey &&\n (encodingState.index + 1 >= encodingState.value.length ||\n this.encoding[this.shiftKey].is(encodingState.value, encodingState.index + 1))) {\n this.encoding.addPattern(this.SHIFT);\n encodingState.shifted = true;\n return true;\n }\n };\n\n State128AB.prototype._moveState = function _moveState () {\n this.encoding.addPattern(this.MOVE);\n return true;\n };\n\n return State128AB;\n}(State128));\n\nvar states128 = {};\n\nstates128.A = (function (State128AB) {\n function State128A () {\n State128AB.apply(this, arguments);\n }\n\n if ( State128AB ) State128A.__proto__ = State128AB;\n State128A.prototype = Object.create( State128AB && State128AB.prototype );\n State128A.prototype.constructor = State128A;\n\n State128A.prototype.initProperties = function initProperties () {\n State128AB.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"A\",\n shiftKey: \"B\",\n MOVE: 101,\n START: 103\n });\n };\n\n State128A.prototype.isCode = function isCode (code) {\n return 0 <= code && code < 96;\n };\n\n State128A.prototype.getValue = function getValue (code) {\n if (code < 32) {\n return code + 64;\n }\n\n return code - 32;\n };\n\n return State128A;\n}(State128AB));\n\nstates128.B = (function (State128AB) {\n function State128B () {\n State128AB.apply(this, arguments);\n }\n\n if ( State128AB ) State128B.__proto__ = State128AB;\n State128B.prototype = Object.create( State128AB && State128AB.prototype );\n State128B.prototype.constructor = State128B;\n\n State128B.prototype.initProperties = function initProperties () {\n State128AB.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"B\",\n shiftKey: \"A\",\n MOVE: 100,\n START: 104\n });\n };\n\n State128B.prototype.isCode = function isCode (code) {\n return 32 <= code && code < 128;\n };\n\n State128B.prototype.getValue = function getValue (code) {\n return code - 32;\n };\n\n return State128B;\n}(State128AB));\n\nstates128.C = (function (State128) {\n function State128C () {\n State128.apply(this, arguments);\n }\n\n if ( State128 ) State128C.__proto__ = State128;\n State128C.prototype = Object.create( State128 && State128.prototype );\n State128C.prototype.constructor = State128C;\n\n State128C.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"C\",\n MOVE: 99,\n START: 105\n });\n };\n\n State128C.prototype.addStart = function addStart () {\n this.encoding.addPattern(this.START);\n };\n\n State128C.prototype.is = function is (value, index) {\n var next4 = getSubstring(value, index, 4);\n return (index + 4 <= value.length || value.length === 2) && numberRegex.test(next4);\n };\n\n State128C.prototype.move = function move () {\n this.encoding.addPattern(this.MOVE);\n };\n\n State128C.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var code;\n\n while ((code = getSubstring(encodingState.value, encodingState.index, 2)) &&\n numberRegex.test(code) && code.length === 2) {\n this$1.encoding.addPattern(parseInt(code, 10));\n encodingState.index += 2;\n }\n };\n\n State128C.prototype.getValue = function getValue (code) {\n return code;\n };\n\n return State128C;\n}(State128));\n\nstates128.FNC4 = (function (State128) {\n function State128FNC4(encoding, states) {\n State128.call(this, encoding);\n this._initSubStates(states);\n }\n\n if ( State128 ) State128FNC4.__proto__ = State128;\n State128FNC4.prototype = Object.create( State128 && State128.prototype );\n State128FNC4.prototype.constructor = State128FNC4;\n\n State128FNC4.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"FNC4\",\n dependentStates: [\"A\", \"B\"]\n });\n };\n\n State128FNC4.prototype.addStart = function addStart (encodingState) {\n var code = encodingState.value.charCodeAt(0) - 128,\n subState = this._getSubState(code);\n\n this.encoding[subState].addStart();\n };\n\n State128FNC4.prototype.is = function is (value, index) {\n var code = value.charCodeAt(index);\n return this.isCode(code);\n };\n\n State128FNC4.prototype.isCode = function isCode (code) {\n return 128 <= code && code < 256;\n };\n\n State128FNC4.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var subState = this._initSubState(encodingState),\n encoding = this.encoding,\n length = subState.value.length;\n var code;\n\n encodingState.index += length;\n\n if (length < 3) {\n for (; subState.index < length; subState.index++) {\n code = subState.value.charCodeAt(subState.index);\n subState.state = this$1._getSubState(code);\n\n if (subState.previousState !== subState.state) {\n subState.previousState = subState.state;\n encoding[subState.state].move(subState);\n }\n\n encoding.addPattern(encoding[subState.state].MOVE);\n encoding.addPattern(encoding[subState.state].getValue(code));\n }\n } else {\n if (subState.state !== subState.previousState) {\n encoding[subState.state].move(subState);\n }\n\n this._pushStart(subState);\n encoding.pushData(subState, this.subStates);\n\n if (encodingState.index < encodingState.value.length) {\n this._pushStart(subState);\n }\n }\n\n encodingState.fnc = true;\n encodingState.state = subState.state;\n };\n\n State128FNC4.prototype._pushStart = function _pushStart (subState) {\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n this.encoding.addPattern(this.encoding[subState.state].MOVE);\n };\n\n State128FNC4.prototype._initSubState = function _initSubState (encodingState) {\n var subState = {\n value: this._getAll(encodingState.value, encodingState.index),\n index: 0\n };\n\n subState.state = this._getSubState(subState.value.charCodeAt(0));\n subState.previousState = encodingState.previousState === this.key ?\n subState.state :\n encodingState.previousState;\n\n return subState;\n };\n\n State128FNC4.prototype._initSubStates = function _initSubStates (states) {\n var this$1 = this;\n\n this.subStates = [];\n\n for (var i = 0; i < states.length; i++) {\n if (inArray(states[i], this$1.dependentStates)) {\n this$1.subStates.push(states[i]);\n }\n }\n };\n\n State128FNC4.prototype._getSubState = function _getSubState (code) {\n var this$1 = this;\n\n for (var i = 0; i < this.subStates.length; i++) {\n if (this$1.encoding[this$1.subStates[i]].isCode(code)) {\n return this$1.subStates[i];\n }\n }\n };\n\n State128FNC4.prototype._getAll = function _getAll (value, index) {\n var code;\n var result = \"\";\n var i = index;\n\n while ((code = value.charCodeAt(i++)) && this.isCode(code)) {\n result += String.fromCharCode(code - 128);\n }\n\n return result;\n };\n\n return State128FNC4;\n}(State128));\n\nstates128.FNC1 = (function (State128) {\n function States128FNC1(encoding, states) {\n State128.call(this, encoding);\n this.states = states;\n }\n\n if ( State128 ) States128FNC1.__proto__ = State128;\n States128FNC1.prototype = Object.create( State128 && State128.prototype );\n States128FNC1.prototype.constructor = States128FNC1;\n\n States128FNC1.prototype.initProperties = function initProperties () {\n State128.prototype.initProperties.call(this);\n\n extend(this, {\n key: \"FNC1\",\n startState: \"C\",\n startAI: \"(\",\n endAI: \")\",\n dependentStates: [\"C\", \"B\"],\n applicationIdentifiers: {\n \"22\": { max: 29, type: \"alphanumeric\" },\n \"402\": { length: 17 },\n \"7004\": { max: 4, type: \"alphanumeric\" },\n \"242\": { max: 6, type: \"alphanumeric\" },\n \"8020\": { max: 25, type: \"alphanumeric\" },\n \"703\": { min: 3, max: 30, type: \"alphanumeric\" },\n \"8008\": { min: 8, max: 12, type: \"alphanumeric\" },\n \"253\": { min: 13, max: 17, type: \"alphanumeric\" },\n \"8003\": { min: 14, max: 30, type: \"alphanumeric\" },\n multiKey: [{\n ids: [\"15\", \"17\", \"8005\", \"8100\"],\n ranges: [\n [11, 13],\n [310, 316],\n [320, 336],\n [340, 369]\n ],\n type: { length: 6 }\n }, {\n ids: [\"240\", \"241\", \"250\", \"251\", \"400\", \"401\", \"403\", \"7002\", \"8004\", \"8007\", \"8110\"],\n ranges: [[90 - 99]],\n type: { max: 30, type: \"alphanumeric\" }\n }, {\n ids: [\"7001\"],\n ranges: [[410, 414]],\n type: { length: 13 }\n }, {\n ids: [\"10\", \"21\", \"254\", \"420\", \"8002\"],\n type: { max: 20, type: \"alphanumeric\" }\n }, {\n ids: [\"00\", \"8006\", \"8017\", \"8018\"],\n type: { length: 18 }\n }, {\n ids: [\"01\", \"02\", \"8001\"],\n type: { length: 14 }\n }, {\n ids: [\"422\"],\n ranges: [\n [424, 426]\n ],\n type: { length: 3 }\n }, {\n ids: [\"20\", \"8102\"],\n type: { length: 2 }\n }, {\n ids: [\"30\", \"37\"],\n type: { max: 8, type: \"alphanumeric\" }\n }, {\n ids: [\"390\", \"392\"],\n type: { max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"421\", \"423\"],\n type: { min: 3, max: 15, type: \"alphanumeric\" }\n }, {\n ids: [\"391\", \"393\"],\n type: { min: 3, max: 18, type: \"alphanumeric\" }\n }, {\n ids: [\"7003\", \"8101\"],\n type: { length: 10 }\n }]\n },\n START: 102\n });\n };\n\n\n States128FNC1.prototype.addStart = function addStart () {\n this.encoding[this.startState].addStart();\n };\n\n States128FNC1.prototype.is = function is () {\n return inArray(this.key, this.states);\n };\n\n States128FNC1.prototype.pushState = function pushState (encodingState) {\n var this$1 = this;\n\n var encoding = this.encoding,\n value = encodingState.value.replace(/\\s/g, \"\"),\n regexSeparators = new RegExp(\"[\" + this.startAI + this.endAI + \"]\", \"g\"),\n index = encodingState.index,\n subState = {\n state: this.startState\n },\n current,\n nextStart,\n separatorLength;\n\n encoding.addPattern(this.START);\n\n var trueCondition = true;\n\n while (trueCondition) {\n subState.index = 0;\n\n separatorLength = value.charAt(index) === this$1.startAI ? 2 : 0;\n current = separatorLength > 0 ? this$1.getBySeparator(value, index) : this$1.getByLength(value, index);\n\n if (current.ai.length) {\n nextStart = index + separatorLength + current.id.length + current.ai.length;\n } else {\n nextStart = value.indexOf(this$1.startAI, index + 1);\n\n if (nextStart < 0) {\n if (index + current.ai.max + current.id.length + separatorLength < value.length) {\n throw new Error(\"Separators are required after variable length identifiers\");\n }\n\n nextStart = value.length;\n }\n }\n\n subState.value = value.substring(index, nextStart).replace(regexSeparators, \"\");\n this$1.validate(current, subState.value);\n encoding.pushData(subState, this$1.dependentStates);\n\n if (nextStart >= value.length) {\n break;\n }\n\n index = nextStart;\n\n if (subState.state !== this$1.startState) {\n encoding[this$1.startState].move(subState);\n subState.state = this$1.startState;\n }\n\n if (!current.ai.length) {\n encoding.addPattern(this$1.START);\n }\n }\n\n encodingState.index = encodingState.value.length;\n };\n\n States128FNC1.prototype.validate = function validate (current, value) {\n var code = value.substr(current.id.length),\n ai = current.ai;\n\n if (!ai.type && !numberRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is numeric only but contains non numeric character(s).\");\n }\n\n if (ai.type === \"alphanumeric\" && !alphanumericRegex.test(code)) {\n throw new Error(\"Application identifier \" + current.id + \" is alphanumeric only but contains non alphanumeric character(s).\");\n }\n\n if (ai.length && ai.length !== code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be \" + ai.length + \" characters long.\");\n }\n\n if (ai.min && ai.min > code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at least \" + ai.min + \" characters long.\");\n }\n\n if (ai.max && ai.max < code.length) {\n throw new Error(\"Application identifier \" + current.id + \" must be at most \" + ai.max + \" characters long.\");\n }\n };\n\n States128FNC1.prototype.getByLength = function getByLength (value, index) {\n var this$1 = this;\n\n var id;\n var applicationIdentifier;\n\n for (var i = 2; i <= 4; i++) {\n id = getSubstring(value, index, i);\n applicationIdentifier = this$1.getApplicationIdentifier(id) || this$1.getApplicationIdentifier(id.substring(0, id.length - 1));\n if (applicationIdentifier) {\n return {\n id: id,\n ai: applicationIdentifier\n };\n }\n }\n this.unsupportedAIError(id);\n };\n\n States128FNC1.prototype.unsupportedAIError = function unsupportedAIError (id) {\n throw new Error(\"'\" + id + \"' is not a supported Application Identifier\");\n };\n\n States128FNC1.prototype.getBySeparator = function getBySeparator (value, index) {\n var start = value.indexOf(this.startAI, index),\n end = value.indexOf(this.endAI, start),\n id = value.substring(start + 1, end),\n ai = this.getApplicationIdentifier(id) || this.getApplicationIdentifier(id.substr(id.length - 1));\n\n if (!ai) {\n this.unsupportedAIError(id);\n }\n\n return {\n ai: ai,\n id: id\n };\n };\n\n States128FNC1.prototype.getApplicationIdentifier = function getApplicationIdentifier (id) {\n var applicationIdentifier = this.applicationIdentifiers,\n multiKey = applicationIdentifier.multiKey;\n\n if (applicationIdentifier[id]) {\n return applicationIdentifier[id];\n }\n\n for (var i = 0; i < multiKey.length; i++) {\n if (multiKey[i].ids && inArray(id, multiKey[i].ids)) {\n return multiKey[i].type;\n } else if (multiKey[i].ranges) {\n var ranges = multiKey[i].ranges;\n\n for (var j = 0; j < ranges.length; j++) {\n if (ranges[j][0] <= id && id <= ranges[j][1]) {\n return multiKey[i].type;\n }\n }\n }\n }\n };\n\n return States128FNC1;\n}(State128));\n\nexport var Code128Base = (function (Encoding) {\n function Code128Base(options) {\n Encoding.call(this, options);\n this._initStates();\n }\n\n if ( Encoding ) Code128Base.__proto__ = Encoding;\n Code128Base.prototype = Object.create( Encoding && Encoding.prototype );\n Code128Base.prototype.constructor = Code128Base;\n\n Code128Base.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n characterMap: [\n 212222, 222122, 222221, 121223, 121322, 131222, 122213, 122312, 132212, 221213,\n 221312, 231212, 112232, 122132, 122231, 113222, 123122, 123221, 223211, 221132,\n 221231, 213212, 223112, 312131, 311222, 321122, 321221, 312212, 322112, 322211,\n 212123, 212321, 232121, 111323, 131123, 131321, 112313, 132113, 132311, 211313,\n 231113, 231311, 112133, 112331, 132131, 113123, 113321, 133121, 313121, 211331,\n 231131, 213113, 213311, 213131, 311123, 311321, 331121, 312113, 312311, 332111,\n 314111, 221411, 431111, 111224, 111422, 121124, 121421, 141122, 141221, 112214,\n 112412, 122114, 122411, 142112, 142211, 241211, 221114, 413111, 241112, 134111,\n 111242, 121142, 121241, 114212, 124112, 124211, 411212, 421112, 421211, 212141,\n 214121, 412121, 111143, 111341, 131141, 114113, 114311, 411113, 411311, 113141,\n 114131, 311141, 411131, 211412, 211214, 211232, 2331112\n ],\n STOP: 106\n });\n };\n\n Code128Base.prototype._initStates = function _initStates () {\n var this$1 = this;\n\n for (var i = 0; i < this.states.length; i++) {\n this$1[this$1.states[i]] = new states128[this$1.states[i]](this$1, this$1.states);\n }\n };\n\n Code128Base.prototype.initValue = function initValue (value, width, height) {\n this.pattern = [];\n this.value = value;\n this.width = width;\n this.height = height;\n this.checkSum = 0;\n this.totalUnits = 0;\n this.index = 0;\n this.position = 1;\n };\n\n Code128Base.prototype.addData = function addData () {\n var encodingState = {\n value: this.value,\n index: 0,\n state: \"\"\n };\n\n if (this.value.length === 0) {\n return;\n }\n\n encodingState.state =\n encodingState.previousState = this.getNextState(encodingState, this.states);\n\n this.addStart(encodingState);\n\n this.pushData(encodingState, this.states);\n\n this.addCheckSum();\n this.addStop();\n this.setBaseUnit();\n };\n\n Code128Base.prototype.pushData = function pushData (encodingState, states) {\n var this$1 = this;\n\n var trueCondition = true;\n\n while (trueCondition) {\n this$1[encodingState.state].pushState(encodingState);\n\n if (encodingState.index >= encodingState.value.length) {\n break;\n }\n\n if (!encodingState.shifted) {\n encodingState.previousState = encodingState.state;\n encodingState.state = this$1.getNextState(encodingState, states);\n this$1[encodingState.state].move(encodingState);\n } else {\n var temp = encodingState.state;\n encodingState.state = encodingState.previousState;\n encodingState.previousState = temp;\n encodingState.shifted = false;\n }\n }\n };\n\n Code128Base.prototype.addStart = function addStart (encodingState) {\n this[encodingState.state].addStart(encodingState);\n this.position = 1;\n };\n\n Code128Base.prototype.addCheckSum = function addCheckSum () {\n this.checksum = this.checkSum % 103;\n this.addPattern(this.checksum);\n };\n\n Code128Base.prototype.addStop = function addStop () {\n this.addPattern(this.STOP);\n };\n\n Code128Base.prototype.setBaseUnit = function setBaseUnit () {\n this.baseUnit = this.width / (this.totalUnits + this.quietZoneLength);\n };\n\n Code128Base.prototype.addPattern = function addPattern (code) {\n var this$1 = this;\n\n var pattern = this.characterMap[code].toString();\n var value;\n\n for (var i = 0; i < pattern.length; i++) {\n value = parseInt(pattern.charAt(i), 10);\n this$1.pattern.push(value);\n this$1.totalUnits += value;\n }\n this.checkSum += code * this.position++;\n };\n\n Code128Base.prototype.getNextState = function getNextState (encodingState, states) {\n var this$1 = this;\n\n for (var i = 0; i < states.length; i++) {\n if (this$1[states[i]].is(encodingState.value, encodingState.index)) {\n return states[i];\n }\n }\n\n this.invalidCharacterError(encodingState.value.charAt(encodingState.index));\n };\n\n return Code128Base;\n}(Encoding));\n\nexport var Code128a = (function (Code128Base) {\n function Code128a () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128a.__proto__ = Code128Base;\n Code128a.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128a.prototype.constructor = Code128a;\n\n Code128a.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128 A\",\n states: [\"A\"]\n });\n };\n\n return Code128a;\n}(Code128Base));\n\nexport var Code128b = (function (Code128Base) {\n function Code128b () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128b.__proto__ = Code128Base;\n Code128b.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128b.prototype.constructor = Code128b;\n\n Code128b.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128 B\",\n states: [\"B\"]\n });\n };\n\n return Code128b;\n}(Code128Base));\n\nexport var Code128c = (function (Code128Base) {\n function Code128c () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128c.__proto__ = Code128Base;\n Code128c.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128c.prototype.constructor = Code128c;\n\n Code128c.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128 C\",\n states: [\"C\"]\n });\n };\n\n return Code128c;\n}(Code128Base));\n\nexport var Code128 = (function (Code128Base) {\n function Code128 () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) Code128.__proto__ = Code128Base;\n Code128.prototype = Object.create( Code128Base && Code128Base.prototype );\n Code128.prototype.constructor = Code128;\n\n Code128.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code 128\",\n states: [\"C\", \"B\", \"A\", \"FNC4\"]\n });\n };\n\n return Code128;\n}(Code128Base));\n\nexport var CodeGS1128 = (function (Code128Base) {\n function CodeGS1128 () {\n Code128Base.apply(this, arguments);\n }\n\n if ( Code128Base ) CodeGS1128.__proto__ = Code128Base;\n CodeGS1128.prototype = Object.create( Code128Base && Code128Base.prototype );\n CodeGS1128.prototype.constructor = CodeGS1128;\n\n CodeGS1128.prototype.initProperties = function initProperties () {\n Code128Base.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"Code GS1-128\",\n states: [\"FNC1\", \"C\", \"B\"]\n });\n };\n\n return CodeGS1128;\n}(Code128Base));\n\nfunction getSubstring(value, index, count) {\n return value.substring(index, index + count);\n}\n","import { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var MsiBase = (function (Encoding) {\n function MsiBase () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) MsiBase.__proto__ = Encoding;\n MsiBase.prototype = Object.create( Encoding && Encoding.prototype );\n MsiBase.prototype.constructor = MsiBase;\n\n MsiBase.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n characterMap: [\n \"12121212\",\n \"12121221\",\n \"12122112\",\n \"12122121\",\n \"12211212\",\n \"12211221\",\n \"12212112\",\n \"12212121\",\n \"21121212\",\n \"21121221\"\n ],\n START: \"21\",\n STOP: \"121\",\n checkSumType: \"\",\n checkSums: checkSums\n });\n };\n\n MsiBase.prototype.initValue = function initValue (value, width) {\n this.pattern = [];\n this.value = value;\n this.checkSumLength = 0;\n this.width = width;\n };\n\n MsiBase.prototype.setBaseUnit = function setBaseUnit () {\n var startStopLength = 7;\n\n this.baseUnit = this.width /\n (12 * (this.value.length + this.checkSumLength) + this.quietZoneLength + startStopLength);\n };\n\n MsiBase.prototype.addData = function addData () {\n var this$1 = this;\n\n var value = this.value;\n\n this.addPattern(this.START);\n\n for (var i = 0; i < value.length; i++) {\n this$1.addCharacter(value.charAt(i));\n }\n\n if (this.options.addCheckSum) {\n this.addCheckSum();\n }\n\n this.addPattern(this.STOP);\n this.setBaseUnit();\n };\n\n MsiBase.prototype.addCharacter = function addCharacter (character) {\n var pattern = this.characterMap[character];\n\n if (!pattern) {\n this.invalidCharacterError(character);\n }\n\n this.addPattern(pattern);\n };\n\n MsiBase.prototype.addPattern = function addPattern (pattern) {\n var this$1 = this;\n\n for (var i = 0; i < pattern.length; i++) {\n this$1.pattern.push(parseInt(pattern.charAt(i), 10));\n }\n };\n\n MsiBase.prototype.addCheckSum = function addCheckSum () {\n var this$1 = this;\n\n var checkSumFunction = this.checkSums[this.checkSumType];\n var checkValues = checkSumFunction.call(this.checkSums, this.value);\n\n this.checksum = checkValues.join(\"\");\n\n for (var i = 0; i < checkValues.length; i++) {\n this$1.checkSumLength++;\n this$1.addPattern(this$1.characterMap[checkValues[i]]);\n }\n };\n\n return MsiBase;\n}(Encoding));\n\nexport var MsiMod10 = (function (MsiBase) {\n function MsiMod10 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod10.__proto__ = MsiBase;\n MsiMod10.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod10.prototype.constructor = MsiMod10;\n\n MsiMod10.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo10\",\n checkSumType: \"Modulo10\"\n });\n };\n\n return MsiMod10;\n}(MsiBase));\n\nexport var MsiMod11 = (function (MsiBase) {\n function MsiMod11 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod11.__proto__ = MsiBase;\n MsiMod11.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod11.prototype.constructor = MsiMod11;\n\n MsiMod11.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo11\",\n checkSumType: \"Modulo11\"\n });\n };\n\n return MsiMod11;\n}(MsiBase));\n\nexport var MsiMod1010 = (function (MsiBase) {\n function MsiMod1010 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod1010.__proto__ = MsiBase;\n MsiMod1010.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod1010.prototype.constructor = MsiMod1010;\n\n MsiMod1010.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo10 Modulo10\",\n checkSumType: \"Modulo10Modulo10\"\n });\n };\n\n return MsiMod1010;\n}(MsiBase));\n\nexport var MsiMod1110 = (function (MsiBase) {\n function MsiMod1110 () {\n MsiBase.apply(this, arguments);\n }\n\n if ( MsiBase ) MsiMod1110.__proto__ = MsiBase;\n MsiMod1110.prototype = Object.create( MsiBase && MsiBase.prototype );\n MsiMod1110.prototype.constructor = MsiMod1110;\n\n MsiMod1110.prototype.initProperties = function initProperties () {\n MsiBase.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"MSI Modulo11 Modulo10\",\n checkSumType: \"Modulo11Modulo10\"\n });\n };\n\n return MsiMod1110;\n}(MsiBase));\n\nvar checkSums = {\n Modulo10: function Modulo10(value) {\n var checkValues = [0, \"\"],\n odd = value.length % 2,\n idx,\n evenSum,\n oddSum;\n\n for (idx = 0; idx < value.length; idx++) {\n checkValues[(idx + odd) % 2] += parseInt(value.charAt(idx), 10);\n }\n\n oddSum = checkValues[0];\n evenSum = (checkValues[1] * 2).toString();\n\n for (idx = 0; idx < evenSum.length; idx++) {\n oddSum += parseInt(evenSum.charAt(idx), 10);\n }\n\n return [(10 - (oddSum % 10)) % 10];\n },\n Modulo11: function Modulo11(value) {\n var weightedSum = 0,\n mod = 11,\n length = value.length,\n weight,\n checkValue;\n\n for (var i = 0; i < length; i++) {\n weight = ((length - i) % 6 || 6) + 1;\n weightedSum += weight * value.charAt(i);\n }\n\n checkValue = (mod - weightedSum % mod) % mod;\n\n if (checkValue !== 10) {\n return [checkValue];\n }\n\n return [1, 0];\n },\n Modulo11Modulo10: function Modulo11Modulo10(value) {\n var checkValues = this.Modulo11(value),\n mod11Value;\n mod11Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod11Value));\n },\n Modulo10Modulo10: function Modulo10Modulo10(value) {\n var checkValues = this.Modulo10(value),\n mod10Value;\n mod10Value = value + checkValues[0];\n\n return checkValues.concat(this.Modulo10(mod10Value));\n }\n};\n","import { Encoding } from './encoding';\n\nvar extend = Object.assign;\n\nexport var Ean13 = (function (Encoding) {\n function Ean13 () {\n Encoding.apply(this, arguments);\n }\n\n if ( Encoding ) Ean13.__proto__ = Encoding;\n Ean13.prototype = Object.create( Encoding && Encoding.prototype );\n Ean13.prototype.constructor = Ean13;\n\n Ean13.prototype.initProperties = function initProperties () {\n Encoding.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"EAN 13\",\n keyTable: [\n '000000',\n '001011',\n '001101',\n '001110',\n '010011',\n '011001',\n '011100',\n '010101',\n '010110',\n '011010'\n ],\n characterMap: {\n digits: [\n [3, 2, 1, 1],\n [2, 2, 2, 1],\n [2, 1, 2, 2],\n [1, 4, 1, 1],\n [1, 1, 3, 2],\n [1, 2, 3, 1],\n [1, 1, 1, 4],\n [1, 3, 1, 2],\n [1, 2, 1, 3],\n [3, 1, 1, 2]\n ],\n start: [1, 1, 1],\n middle: [1, 1, 1, 1, 1]\n }\n });\n };\n\n Ean13.prototype.initValue = function initValue (value, width, height) {\n var valueAsString = String(value);\n\n if (valueAsString.length !== 12 || /\\D/.test(valueAsString)) {\n throw new Error('The value of the \"EAN13\" encoding should be 12 symbols');\n }\n\n this.pattern = [];\n this.options.height = height;\n this.baseUnit = width / (95 + this.quietZoneLength);\n this.value = valueAsString;\n this.checksum = this.calculateChecksum();\n this.leftKey = valueAsString[0];\n this.leftPart = valueAsString.substr(1, 6);\n this.rightPart = valueAsString.substr(7) + this.checksum;\n };\n\n Ean13.prototype.addData = function addData () {\n this.addPieces(this.characterMap.start);\n this.addSide(this.leftPart, this.leftKey);\n this.addPieces(this.characterMap.middle);\n this.addSide(this.rightPart);\n this.addPieces(this.characterMap.start);\n };\n\n Ean13.prototype.addSide = function addSide (leftPart, key) {\n var this$1 = this;\n\n for (var i = 0; i < leftPart.length; i++) {\n if (key && parseInt(this$1.keyTable[key].charAt(i), 10)) {\n this$1.addPieces(Array.prototype.slice.call(this$1.characterMap.digits[leftPart.charAt(i)]).reverse(), true);\n } else {\n this$1.addPieces(this$1.characterMap.digits[leftPart.charAt(i)], true);\n }\n }\n };\n\n Ean13.prototype.addPieces = function addPieces (arrToAdd, limitedHeight) {\n var this$1 = this;\n\n for (var i = 0; i < arrToAdd.length; i++) {\n if (limitedHeight) {\n this$1.pattern.push({\n y1: 0,\n y2: this$1.options.height * 0.95,\n width: arrToAdd[i]\n });\n } else {\n this$1.pattern.push(arrToAdd[i]);\n }\n }\n };\n\n Ean13.prototype.calculateChecksum = function calculateChecksum () {\n var odd = 0,\n even = 0,\n value = this.value.split(\"\").reverse().join(\"\");\n\n for (var i = 0; i < value.length; i++) {\n if (i % 2) {\n even += parseInt(value.charAt(i), 10);\n } else {\n odd += parseInt(value.charAt(i), 10);\n }\n }\n\n var checksum = (10 - ((3 * odd + even) % 10)) % 10;\n\n return checksum;\n };\n\n return Ean13;\n}(Encoding));\n","import { Ean13 } from './ean13';\n\nvar extend = Object.assign;\n\nexport var Ean8 = (function (Ean13) {\n function Ean8 () {\n Ean13.apply(this, arguments);\n }\n\n if ( Ean13 ) Ean8.__proto__ = Ean13;\n Ean8.prototype = Object.create( Ean13 && Ean13.prototype );\n Ean8.prototype.constructor = Ean8;\n\n Ean8.prototype.initProperties = function initProperties () {\n Ean13.prototype.initProperties.call(this);\n\n extend(this, {\n name: \"EAN 8\"\n });\n };\n\n Ean8.prototype.initValue = function initValue (value, width, height) {\n if (value.length !== 7 || /\\D/.test(value)) {\n throw new Error('Invalid value provided');\n }\n\n this.value = value;\n this.options.height = height;\n this.checksum = this.calculateChecksum(this.value);\n this.leftPart = this.value.substr(0, 4);\n this.rightPart = this.value.substr(4) + this.checksum;\n this.pattern = [];\n this.baseUnit = width / (67 + this.quietZoneLength);\n };\n\n return Ean8;\n}(Ean13));\n","import { Code11 } from './code11';\nimport { Code39 } from './code39';\nimport { Code39Extended } from './code39-extended';\nimport { Code93 } from './code93';\nimport { Code93Extended } from './code93-extended';\nimport { Postnet } from './postnet';\n\nimport {\n Code128,\n Code128a,\n Code128b,\n Code128c,\n CodeGS1128\n} from './code128';\n\nimport {\n MsiMod10,\n MsiMod11,\n MsiMod1010,\n MsiMod1110\n} from './msi';\n\nimport { Ean8 } from './ean8';\nimport { Ean13 } from './ean13';\n\nexport var Encodings = {\n code11: Code11,\n\n code39: Code39,\n code39extended: Code39Extended,\n\n code93: Code93,\n code93extended: Code93Extended,\n\n code128: Code128,\n code128a: Code128a,\n code128b: Code128b,\n code128c: Code128c\n};\nEncodings[\"gs1-128\"] = CodeGS1128;\nEncodings.msimod10 = MsiMod10;\nEncodings.msimod11 = MsiMod11;\nEncodings.msimod1010 = MsiMod1010;\nEncodings.msimod1110 = MsiMod1110;\nEncodings.postnet = Postnet;\nEncodings.ean8 = Ean8;\nEncodings.ean13 = Ean13;\n","export function surfaceSize(element, surfaceType) {\n var display = element.style.display;\n if (surfaceType === 'canvas') {\n // The Canvas default size is different from SVG for\n // inline-block containers such as the Barcode and QR Code.\n //\n // Switch to display: block to get same dimensions.\n element.style.display = 'block';\n }\n\n var size = {\n width: element.clientWidth,\n height: element.clientHeight\n };\n\n element.style.display = display;\n\n return size;\n}\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n addClass,\n setDefaultOptions,\n deepExtend,\n getSpacing,\n isObject,\n defaultErrorHandler\n} from '../common';\n\nimport {\n Box,\n TextBox\n} from '../core';\n\nimport { Encodings } from './encodings/main';\nimport { surfaceSize } from './surface-size';\n\nvar DEFAULT_BARCODE_WIDTH = 300;\nvar DEFAULT_BARCODE_HEIGHT = 100;\n\nvar Barcode = (function (Class) {\n function Barcode(element, options, errorHandler) {\n if ( errorHandler === void 0 ) errorHandler = defaultErrorHandler;\n\n Class.call(this);\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n this._setOptions(options);\n\n if (options && defined(options.value)) {\n this.redraw();\n }\n }\n\n if ( Class ) Barcode.__proto__ = Class;\n Barcode.prototype = Object.create( Class && Class.prototype );\n Barcode.prototype.constructor = Barcode;\n\n Barcode.prototype.destroy = function destroy () {\n this._destroySurface();\n };\n\n Barcode.prototype._initElement = function _initElement () {\n addClass(this.element, \"k-barcode\");\n };\n\n Barcode.prototype._initSurface = function _initSurface () {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n };\n\n Barcode.prototype._createSurface = function _createSurface () {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n };\n\n Barcode.prototype._destroySurface = function _destroySurface () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n };\n\n Barcode.prototype._initSurfaceElement = function _initSurfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = 'relative';\n this.element.appendChild(this.surfaceElement);\n }\n };\n\n Barcode.prototype._destroySurfaceElement = function _destroySurfaceElement () {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n };\n\n Barcode.prototype.setOptions = function setOptions (options) {\n this._setOptions(options);\n this._initSurface();\n this.redraw();\n };\n\n Barcode.prototype.redraw = function redraw () {\n var size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size.width,\n height: size.height\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n };\n\n Barcode.prototype.getSize = function getSize () {\n return {\n width: this.element.offsetWidth,\n height: this.element.offsetHeight\n };\n };\n\n Barcode.prototype._resize = function _resize () {\n this.redraw();\n };\n\n Barcode.prototype.createVisual = function createVisual () {\n this.visual = this._render();\n };\n\n Barcode.prototype._render = function _render () {\n var options = this.options;\n var value = options.value;\n var textOptions = options.text;\n var textMargin = getSpacing(textOptions.margin);\n var size = this._getSize();\n var border = options.border || {};\n var encoding = this.encoding;\n var contentBox = new Box(0, 0, size.width, size.height).unpad(border.width).unpad(options.padding);\n var barHeight = contentBox.height();\n var encodedValue;\n var textToDisplay;\n var textHeight;\n var visual = new draw.Group();\n\n this.contentBox = contentBox;\n visual.append(this._getBackground(size));\n\n if (textOptions.visible) {\n textHeight = draw.util.measureText(value, { font: textOptions.font }).height;\n barHeight -= textHeight + textMargin.top + textMargin.bottom;\n }\n\n try {\n encodedValue = encoding.encode(value, contentBox.width(), barHeight);\n } catch (error) {\n this.onError(error);\n return visual;\n }\n\n if (textOptions.visible) {\n textToDisplay = value;\n\n if (options.checksum && defined(encoding.checksum)) {\n textToDisplay += \" \" + encoding.checksum;\n }\n\n visual.append(this._getText(textToDisplay));\n }\n\n this.barHeight = barHeight;\n this._bandsGroup = this._getBands(encodedValue.pattern, encodedValue.baseUnit);\n visual.append(this._bandsGroup);\n\n return visual;\n };\n\n Barcode.prototype.exportVisual = function exportVisual () {\n return this._render();\n };\n\n Barcode.prototype._getSize = function _getSize () {\n var element = this.element;\n var elementSize = surfaceSize(element, this.options.renderAs);\n var size = new geom.Size(DEFAULT_BARCODE_WIDTH, DEFAULT_BARCODE_HEIGHT);\n\n if (elementSize.width > 0) {\n size.width = elementSize.width;\n }\n\n if (elementSize.height > 0) {\n size.height = elementSize.height;\n }\n\n if (this.options.width) {\n size.width = this.options.width;\n }\n\n if (this.options.height) {\n size.height = this.options.height;\n }\n\n return size;\n };\n\n Barcode.prototype.value = function value (value$1) {\n if (!defined(value$1)) {\n return this.options.value;\n }\n\n this.options.value = String(value$1);\n this.redraw();\n };\n\n Barcode.prototype._getBands = function _getBands (pattern, baseUnit) {\n var this$1 = this;\n\n var contentBox = this.contentBox;\n var offsetX = contentBox.x1;\n var stepX;\n var patternItem;\n var group = new draw.Group();\n\n for (var i = 0; i < pattern.length; i++) {\n patternItem = isObject(pattern[i]) ? pattern[i] : {\n width: pattern[i],\n y1: 0,\n y2: this$1.barHeight\n };\n\n stepX = patternItem.width * baseUnit;\n\n if (i % 2) {\n var rect = geom.Rect.fromPoints(\n new geom.Point(offsetX, patternItem.y1 + contentBox.y1),\n new geom.Point(offsetX + stepX, patternItem.y2 + contentBox.y1)\n );\n\n var path = draw.Path.fromRect(rect, {\n fill: {\n color: this$1.options.color\n },\n stroke: null\n });\n\n group.append(path);\n }\n\n offsetX += stepX;\n }\n\n return group;\n };\n\n Barcode.prototype._getBackground = function _getBackground (size) {\n var options = this.options;\n var border = options.border || {};\n var box = new Box(0, 0, size.width, size.height).unpad(border.width / 2);\n var path = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: options.background\n },\n stroke: {\n color: border.width ? border.color : \"\",\n width: border.width,\n dashType: border.dashType\n }\n });\n\n return path;\n };\n\n Barcode.prototype._getText = function _getText (value) {\n var textOptions = this.options.text;\n var text = this._textbox = new TextBox(value, {\n font: textOptions.font,\n color: textOptions.color,\n align: \"center\",\n vAlign: \"bottom\",\n margin: textOptions.margin\n });\n\n text.reflow(this.contentBox);\n text.renderVisual();\n\n return text.visual;\n };\n\n Barcode.prototype._setOptions = function _setOptions (options) {\n this.type = (options.type || this.options.type).toLowerCase();\n\n if (this.type === \"upca\") {\n this.type = \"ean13\";\n options.value = '0' + options.value;\n }\n\n if (this.type === \"upce\") {\n this.type = \"ean8\";\n options.value = '0' + options.value;\n }\n\n if (!Encodings[this.type]) {\n throw new Error((\"Encoding '\" + (this.type) + \"' is not supported.\"));\n }\n\n this.encoding = new Encodings[this.type]();\n\n this.options = deepExtend({}, this.options, options);\n };\n\n return Barcode;\n}(Class));\n\nsetDefaultOptions(Barcode, {\n name: \"Barcode\",\n renderAs: \"svg\",\n value: \"\",\n type: \"code39\",\n checksum: false,\n width: 0,\n height: 0,\n color: \"black\",\n background: \"white\",\n text: {\n visible: true,\n font: \"16px Consolas, Monaco, Sans Mono, monospace, sans-serif\",\n color: \"black\",\n margin: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n },\n border: {\n width: 0,\n dashType: \"solid\",\n color: \"black\"\n },\n padding: {\n top: 0,\n bottom: 0,\n left: 0,\n right: 0\n }\n});\n\nexport default Barcode;\n","import { Encodings } from './encodings/main';\n\nvar validate = function (encoding, size, prefix) { return function (value) {\n try {\n encoding.encode(\n prefix + value,\n size.width,\n size.height\n );\n } catch (error) {\n return {\n valid: false,\n error: error\n };\n }\n\n return {\n valid: true\n };\n}; };\n\n// A default size for encodings, so the validator can check only the value if no size is provided.\nvar fallbackSize = { width: 500, height: 100 };\n\nfunction barcodeValidator(type, size) {\n if ( size === void 0 ) size = fallbackSize;\n\n if (!type) {\n throw new Error(\"Please specify barcode type to validate.\");\n }\n\n var resolvedType = type.toLowerCase();\n var prefix = '';\n if (resolvedType === 'upca') {\n resolvedType = 'ean13';\n prefix = '0';\n } else if (resolvedType === 'upce') {\n resolvedType = 'ean8';\n prefix = '0';\n }\n\n if (!Encodings[resolvedType]) {\n throw new Error((\"Encoding '\" + type + \"' is not supported.\"));\n }\n\n var encoding = new Encodings[resolvedType]();\n return validate(encoding, size, prefix);\n}\n\nexport default barcodeValidator;\n","import withGeometry from '../mixins/with-geometry';\nimport Element from './element';\nimport Rect from '../geometry/rect';\nimport toMatrix from '../geometry/to-matrix';\nimport { defined } from '../util';\n\n\nvar Image = (function (superclass) {\n function Image(src, rect, options) {\n if ( rect === void 0 ) rect = new Rect();\n if ( options === void 0 ) options = {};\n\n superclass.call(this, options);\n\n this.src(src);\n this.rect(rect);\n }\n\n if ( superclass ) Image.__proto__ = superclass;\n Image.prototype = Object.create( superclass && superclass.prototype );\n Image.prototype.constructor = Image;\n\n var prototypeAccessors = { nodeType: { configurable: true } };\n\n prototypeAccessors.nodeType.get = function () {\n return \"Image\";\n };\n\n Image.prototype.src = function src (value) {\n if (defined(value)) {\n this.options.set(\"src\", value);\n return this;\n }\n\n return this.options.get(\"src\");\n };\n\n Image.prototype.bbox = function bbox (transformation) {\n var combinedMatrix = toMatrix(this.currentTransform(transformation));\n return this._rect.bbox(combinedMatrix);\n };\n\n Image.prototype.rawBBox = function rawBBox () {\n return this._rect.bbox();\n };\n\n Image.prototype._containsPoint = function _containsPoint (point) {\n return this._rect.containsPoint(point);\n };\n\n Image.prototype._hasFill = function _hasFill () {\n return this.src();\n };\n\n Object.defineProperties( Image.prototype, prototypeAccessors );\n\n return Image;\n}(withGeometry(Element, [ \"rect\" ])));\n\nexport default Image;","export var extend = Object.assign;\n\nexport function splitInto(str, chunkLength) {\n var result = [];\n var idx = 0;\n\n while (idx < str.length) {\n result.push(str.substring(idx, idx + chunkLength));\n idx += chunkLength;\n }\n\n return result;\n}\n\nexport function toBitsString(value, length) {\n var bitString = Number(value).toString(2);\n\n if (bitString.length < length) {\n bitString = new Array(length - bitString.length + 1).join(0) + bitString;\n }\n\n return bitString;\n}\n\nexport function toDecimal(value) {\n return parseInt(value, 2);\n}\n\n","import { Class } from '../../common';\n\nexport var FreeCellVisitor = (function (Class) {\n function FreeCellVisitor(matrix) {\n Class.call(this);\n\n this.matrix = matrix;\n this.row = matrix.length - 1;\n this.column = matrix.length - 1;\n this.startColumn = this.column;\n this.dir = -1;\n this.c = 0;\n }\n\n if ( Class ) FreeCellVisitor.__proto__ = Class;\n FreeCellVisitor.prototype = Object.create( Class && Class.prototype );\n FreeCellVisitor.prototype.constructor = FreeCellVisitor;\n\n FreeCellVisitor.prototype.move = function move () {\n this.row += this.dir * this.c;\n this.c ^= 1;\n this.column = this.startColumn - this.c;\n };\n\n FreeCellVisitor.prototype.getNextCell = function getNextCell () {\n var this$1 = this;\n\n while (this.matrix[this.row][this.column] !== undefined) {\n this$1.move();\n\n if (this$1.row < 0 || this$1.row >= this$1.matrix.length) {\n this$1.dir = -this$1.dir;\n this$1.startColumn -= this$1.startColumn !== 8 ? 2 : 3;\n this$1.column = this$1.startColumn;\n this$1.row = this$1.dir < 0 ? this$1.matrix.length - 1 : 0;\n }\n }\n\n return {\n row: this.row,\n column: this.column\n };\n };\n\n FreeCellVisitor.prototype.getNextRemainderCell = function getNextRemainderCell () {\n this.move();\n\n if (this.matrix[this.row][this.column] === undefined) {\n return {\n row: this.row,\n column: this.column\n };\n }\n };\n\n return FreeCellVisitor;\n}(Class));\n","import { Class } from '../../common';\n\nexport var EncodingResult = (function (Class) {\n function EncodingResult(dataString, version) {\n Class.call(this);\n\n this.dataString = dataString;\n this.version = version;\n }\n\n if ( Class ) EncodingResult.__proto__ = Class;\n EncodingResult.prototype = Object.create( Class && Class.prototype );\n EncodingResult.prototype.constructor = EncodingResult;\n\n return EncodingResult;\n}(Class));\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport {\n getModes,\n getVersion,\n getDataCodewordsCount,\n getDataString\n} from '../encoding';\n\nexport var IsoEncoder = (function (Class) {\n function IsoEncoder () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) IsoEncoder.__proto__ = Class;\n IsoEncoder.prototype = Object.create( Class && Class.prototype );\n IsoEncoder.prototype.constructor = IsoEncoder;\n\n IsoEncoder.prototype.getEncodingResult = function getEncodingResult (inputString, errorCorrectionLevel) {\n var modes = getModes(inputString),\n dataCodewordsCount = getDataCodewordsCount(modes),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = getDataString(modes, version);\n\n return new EncodingResult(dataString, version);\n };\n\n return IsoEncoder;\n}(Class));\n","import {\n toBitsString,\n toDecimal\n} from '../utils';\nimport { FreeCellVisitor } from './free-cell-visitor';\nimport { IsoEncoder } from './encoders/iso-encoder';\nimport { Utf8Encoder } from './encoders/utf8-encoder';\nimport { VersionsCodewordsInformation } from './version-codewords';\nimport { DataModeInstances } from './data-modes/data-mode-instances';\n\nvar terminator = \"0000\",\n NUMERIC = \"numeric\",\n ALPHA_NUMERIC = \"alphanumeric\",\n BYTE = \"byte\",\n powersOfTwo = { \"1\": 0 },\n powersOfTwoResult = { \"0\": 1 },\n irregularAlignmentPatternsStartDistance = {\n 15: 20, 16: 20, 18: 24, 19: 24, 22: 20,\n 24: 22, 26: 24, 28: 20, 30: 20, 31: 24,\n 32: 28, 33: 24, 36: 18, 37: 22, 39: 20, 40: 24\n },\n finderPattern = [1, 0, 1, 1, 1],\n alignmentPattern = [1, 0, 1],\n errorCorrectionPatterns = { L: \"01\", M: \"00\", Q: \"11\", H: \"10\" },\n formatMaskPattern = \"101010000010010\",\n formatGeneratorPolynomial = \"10100110111\",\n versionGeneratorPolynomial = \"1111100100101\",\n paddingCodewords = [\"11101100\", \"00010001\"],\n finderPatternValue = 93,\n /* eslint-disable arrow-body-style */\n /* eslint-disable no-unused-vars */\n maskPatternConditions = [\n function (row, column) { return (row + column) % 2 === 0; },\n function (row, column) { return row % 2 === 0; },\n function (row, column) { return column % 3 === 0; },\n function (row, column) { return (row + column) % 3 === 0; },\n function (row, column) { return (Math.floor(row / 2) + Math.floor(column / 3)) % 2 === 0; },\n function (row, column) { return ((row * column) % 2) + ((row * column) % 3) === 0; },\n function (row, column) { return (((row * column) % 2) + ((row * column) % 3)) % 2 === 0; },\n function (row, column) { return (((row + column) % 2) + ((row * column) % 3)) % 2 === 0; }\n ],\n /* eslint-enable no-unused-vars */\n /* eslint-enable arrow-body-style */\n numberRegex = /^\\d+/,\n alphaPattern = \"A-Z0-9 $%*+./:-\",\n alphaExclusiveSet = \"A-Z $%*+./:-\",\n alphaRegex = new RegExp(\"^[\" + alphaExclusiveSet + \"]+\"),\n alphaNumericRegex = new RegExp(\"^[\" + alphaPattern + \"]+\"),\n byteRegex = new RegExp(\"^[^\" + alphaPattern + \"]+\"),\n initMinNumericBeforeAlpha = 8,\n initMinNumericBeforeByte = 5,\n initMinAlphaBeforeByte = 8,\n minNumericBeforeAlpha = 17,\n minNumericBeforeByte = 9,\n minAlphaBeforeByte = 16;\n\nexport var generatorPolynomials = [[1, 0], [1, 25, 0]];\n\nexport function fillFunctionCell(matrices, bit, x, y) {\n for (var i = 0; i < matrices.length; i++) {\n matrices[i][x][y] = bit;\n }\n}\n\nexport function fillDataCell(matrices, bit, x, y) {\n for (var i = 0; i < maskPatternConditions.length; i++) {\n matrices[i][x][y] = maskPatternConditions[i](x, y) ? bit ^ 1 : parseInt(bit, 10);\n }\n}\n\nexport function fillData(matrices, blocks) {\n var cellVisitor = new FreeCellVisitor(matrices[0]),\n block,\n codewordIdx,\n cell;\n\n for (var blockIdx = 0; blockIdx < blocks.length; blockIdx++) {\n block = blocks[blockIdx];\n codewordIdx = 0;\n\n while (block.length > 0) {\n for (var i = 0; i < block.length; i++) {\n for (var j = 0; j < 8; j++) {\n cell = cellVisitor.getNextCell();\n fillDataCell(matrices, block[i][codewordIdx].charAt(j), cell.row, cell.column);\n }\n }\n\n codewordIdx++;\n\n while (block[0] && codewordIdx === block[0].length) {\n block.splice(0, 1);\n }\n }\n }\n\n while ((cell = cellVisitor.getNextRemainderCell())) {\n fillDataCell(matrices, 0, cell.row, cell.column);\n }\n}\n\nexport function padDataString(initialDataString, totalDataCodewords) {\n var dataBitsCount = totalDataCodewords * 8,\n terminatorIndex = 0,\n paddingCodewordIndex = 0;\n var dataString = initialDataString;\n\n while (dataString.length < dataBitsCount && terminatorIndex < terminator.length) {\n dataString += terminator.charAt(terminatorIndex++);\n }\n\n if (dataString.length % 8 !== 0) {\n dataString += new Array(9 - dataString.length % 8).join(\"0\");\n }\n\n while (dataString.length < dataBitsCount) {\n dataString += paddingCodewords[paddingCodewordIndex];\n paddingCodewordIndex ^= 1;\n }\n\n return dataString;\n}\n\nexport function generatePowersOfTwo() {\n var result;\n var power;\n\n for (power = 1; power < 255; power++) {\n result = powersOfTwoResult[power - 1] * 2;\n if (result > 255) {\n result = result ^ 285;\n }\n\n powersOfTwoResult[power] = result;\n powersOfTwo[result] = power;\n }\n\n result = (powersOfTwoResult[power - 1] * 2) ^ 285;\n powersOfTwoResult[power] = result;\n powersOfTwoResult[-1] = 0;\n}\n\nexport function xorPolynomials(x, y) {\n var result = [],\n idx = x.length - 2;\n\n for (var i = idx; i >= 0; i--) {\n result[i] = x[i] ^ y[i];\n }\n\n return result;\n}\n\nexport function multiplyPolynomials(x, y) {\n var result = [];\n\n for (var i = 0; i < x.length; i++) {\n for (var j = 0; j < y.length; j++) {\n if (result[i + j] === undefined) {\n result[i + j] = (x[i] + (y[j] >= 0 ? y[j] : 0)) % 255;\n } else {\n result[i + j] = powersOfTwo[powersOfTwoResult[result[i + j]] ^ powersOfTwoResult[(x[i] + y[j]) % 255]];\n }\n }\n }\n\n return result;\n}\n\nexport function generateGeneratorPolynomials() {\n var maxErrorCorrectionCodeWordsCount = 68;\n\n for (var idx = 2; idx <= maxErrorCorrectionCodeWordsCount; idx++) {\n var firstPolynomial = generatorPolynomials[idx - 1],\n secondPolynomial = [idx, 0];\n\n generatorPolynomials[idx] = multiplyPolynomials(firstPolynomial, secondPolynomial);\n }\n}\n\n//possibly generate on demand\ngeneratePowersOfTwo();\ngenerateGeneratorPolynomials();\n\nexport function multiplyByConstant(polynomial, power) {\n var result = [],\n idx = polynomial.length - 1;\n\n do {\n result[idx] = powersOfTwoResult[(polynomial[idx] + power) % 255];\n idx--;\n }\n while (polynomial[idx] !== undefined);\n\n return result;\n}\n\nexport function generateErrorCodewords(data, errorCodewordsCount) {\n var generator = generatorPolynomials[errorCodewordsCount - 1],\n result = new Array(errorCodewordsCount).concat(data),\n generatorPolynomial = new Array(result.length - generator.length).concat(generator),\n steps = data.length,\n errorCodewords = [],\n divisor,\n idx;\n\n for (idx = 0; idx < steps; idx++) {\n divisor = multiplyByConstant(generatorPolynomial, powersOfTwo[result[result.length - 1]]);\n generatorPolynomial.splice(0, 1);\n\n result = xorPolynomials(divisor, result);\n }\n\n for (idx = result.length - 1; idx >= 0; idx--) {\n errorCodewords[errorCodewordsCount - 1 - idx] = toBitsString(result[idx], 8);\n }\n\n return errorCodewords;\n}\n\nexport function getBlocks(dataStream, versionCodewordsInformation) {\n var codewordStart = 0,\n dataBlocks = [],\n errorBlocks = [],\n dataBlock,\n versionGroups = versionCodewordsInformation.groups,\n blockCodewordsCount,\n groupBlocksCount,\n messagePolynomial,\n codeword;\n\n for (var groupIdx = 0; groupIdx < versionGroups.length; groupIdx++) {\n groupBlocksCount = versionGroups[groupIdx][0];\n\n for (var blockIdx = 0; blockIdx < groupBlocksCount; blockIdx++) {\n blockCodewordsCount = versionGroups[groupIdx][1];\n dataBlock = [];\n messagePolynomial = [];\n\n for (var codewordIdx = 1; codewordIdx <= blockCodewordsCount; codewordIdx++) {\n codeword = dataStream.substring(codewordStart, codewordStart + 8);\n dataBlock.push(codeword);\n messagePolynomial[blockCodewordsCount - codewordIdx] = toDecimal(codeword);\n codewordStart += 8;\n }\n\n dataBlocks.push(dataBlock);\n errorBlocks.push(generateErrorCodewords(messagePolynomial,\n versionCodewordsInformation.errorCodewordsPerBlock));\n }\n }\n return [dataBlocks, errorBlocks];\n}\n\nexport function chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode) {\n var numeric = numberRegex.exec(str),\n numericMatch = numeric ? numeric[0] : \"\",\n alpha = alphaRegex.exec(str),\n alphaMatch = alpha ? alpha[0] : \"\",\n alphaNumeric = alphaNumericRegex.exec(str),\n alphaNumericMatch = alphaNumeric ? alphaNumeric[0] : \"\",\n mode,\n modeString;\n\n if (numericMatch &&\n (numericMatch.length >= minNumericBeforeAlpha || str.length === numericMatch.length ||\n (numericMatch.length >= minNumericBeforeByte && !alphaNumericRegex.test(str.charAt(numericMatch.length))))) {\n mode = NUMERIC;\n modeString = numericMatch;\n } else if (alphaNumericMatch && (str.length === alphaNumericMatch.length ||\n alphaNumericMatch.length >= minAlphaBeforeByte || previousMode === ALPHA_NUMERIC)) {\n mode = ALPHA_NUMERIC;\n modeString = numericMatch || alphaMatch;\n } else {\n mode = BYTE;\n\n if (alphaNumericMatch) {\n modeString = alphaNumericMatch + byteRegex.exec(str.substring(alphaNumericMatch.length))[0];\n } else {\n modeString = byteRegex.exec(str)[0];\n }\n }\n\n return {\n mode: mode,\n modeString: modeString\n };\n}\n\nexport function getModes(inputString) {\n var modes = [],\n previousMode,\n idx = 0;\n var str = inputString;\n\n modes.push(chooseMode(str, initMinNumericBeforeAlpha, initMinNumericBeforeByte, initMinAlphaBeforeByte, previousMode));\n previousMode = modes[0].mode;\n str = str.substr(modes[0].modeString.length);\n\n while (str.length > 0) {\n var nextMode = chooseMode(str, minNumericBeforeAlpha, minNumericBeforeByte, minAlphaBeforeByte, previousMode);\n\n if (nextMode.mode !== previousMode) {\n previousMode = nextMode.mode;\n modes.push(nextMode);\n idx++;\n } else {\n modes[idx].modeString += nextMode.modeString;\n }\n\n str = str.substr(nextMode.modeString.length);\n }\n\n return modes;\n}\n\nexport function getDataCodewordsCount(modes) {\n var length = 0,\n mode;\n\n for (var i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n length += mode.getStringBitsLength(modes[i].modeString.length);\n }\n\n return Math.ceil(length / 8);\n}\n\nexport function getVersion(dataCodewordsCount, errorCorrectionLevel) {\n var x = 0,\n y = VersionsCodewordsInformation.length - 1,\n version = Math.floor(VersionsCodewordsInformation.length / 2);\n\n do {\n if (dataCodewordsCount < VersionsCodewordsInformation[version][errorCorrectionLevel].totalDataCodewords) {\n y = version;\n } else {\n x = version;\n }\n\n version = x + Math.floor((y - x) / 2);\n } while (y - x > 1);\n\n if (dataCodewordsCount <= VersionsCodewordsInformation[x][errorCorrectionLevel].totalDataCodewords) {\n return version + 1;\n }\n\n return y + 1;\n}\n\nexport function getDataString(modes, version) {\n var dataString = \"\",\n mode;\n\n for (var i = 0; i < modes.length; i++) {\n mode = DataModeInstances[modes[i].mode];\n dataString += mode.encode(modes[i].modeString, version);\n }\n\n return dataString;\n}\n\n//fix case all zeros\nexport function encodeFormatInformation(format) {\n var formatNumber = toDecimal(format),\n encodedString,\n result = \"\";\n\n if (formatNumber === 0) {\n return \"101010000010010\";\n }\n\n encodedString = encodeBCH(toDecimal(format), formatGeneratorPolynomial, 15);\n\n for (var i = 0; i < encodedString.length; i++) {\n result += encodedString.charAt(i) ^ formatMaskPattern.charAt(i);\n }\n\n return result;\n}\n\nexport function encodeBCH(value, generatorPolynomial, codeLength) {\n var generatorNumber = toDecimal(generatorPolynomial),\n polynomialLength = generatorPolynomial.length - 1,\n valueNumber = value << polynomialLength,\n length = codeLength - polynomialLength,\n valueString = toBitsString(value, length),\n result = dividePolynomials(valueNumber, generatorNumber);\n\n result = valueString + toBitsString(result, polynomialLength);\n\n return result;\n}\n\nexport function dividePolynomials(numberX, numberY) {\n var yLength = numberY.toString(2).length,\n xLength = numberX.toString(2).length;\n var x = numberX;\n\n do {\n x ^= numberY << xLength - yLength;\n xLength = x.toString(2).length;\n }\n while (xLength >= yLength);\n\n return x;\n}\n\nexport function getNumberAt(str, idx) {\n return parseInt(str.charAt(idx), 10);\n}\n\nexport function initMatrices(version) {\n var matrices = [],\n modules = 17 + 4 * version;\n\n for (var i = 0; i < maskPatternConditions.length; i++) {\n matrices[i] = new Array(modules);\n\n for (var j = 0; j < modules; j++) {\n matrices[i][j] = new Array(modules);\n }\n }\n\n return matrices;\n}\n\nexport function addFormatInformation(matrices, formatString) {\n var matrix = matrices[0],\n x,\n y,\n idx = 0,\n length = formatString.length;\n\n for (x = 0, y = 8; x <= 8; x++) {\n if (x !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n for (x = 8, y = 7; y >= 0; y--) {\n if (y !== 6) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n }\n\n idx = 0;\n\n for (y = matrix.length - 1, x = 8; y >= matrix.length - 8; y--) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n\n fillFunctionCell(matrices, 1, matrix.length - 8, 8);\n\n for (x = matrix.length - 7, y = 8; x < matrix.length; x++) {\n fillFunctionCell(matrices, getNumberAt(formatString, length - 1 - idx++), x, y);\n }\n}\n\nexport function encodeVersionInformation(version) {\n return encodeBCH(version, versionGeneratorPolynomial, 18);\n}\n\nexport function addVersionInformation(matrices, dataString) {\n var matrix = matrices[0],\n modules = matrix.length,\n x1 = 0,\n y1 = modules - 11,\n x2 = modules - 11,\n y2 = 0,\n quotient,\n mod,\n value;\n\n for (var idx = 0; idx < dataString.length; idx++) {\n quotient = Math.floor(idx / 3);\n mod = idx % 3;\n value = getNumberAt(dataString, dataString.length - idx - 1);\n\n fillFunctionCell(matrices, value, x1 + quotient, y1 + mod);\n fillFunctionCell(matrices, value, x2 + mod, y2 + quotient);\n }\n}\n\nexport function addCentricPattern(matrices, pattern, x, y) {\n var size = pattern.length + 2,\n length = pattern.length + 1,\n value;\n\n for (var i = 0; i < pattern.length; i++) {\n for (var j = i; j < size - i; j++) {\n value = pattern[i];\n\n fillFunctionCell(matrices, value, x + j, y + i);\n fillFunctionCell(matrices, value, x + i, y + j);\n fillFunctionCell(matrices, value, x + length - j, y + length - i);\n fillFunctionCell(matrices, value, x + length - i, y + length - j);\n }\n }\n}\n\nexport function addFinderSeparator(matrices, direction, x, y) {\n var nextX = x,\n nextY = y,\n matrix = matrices[0];\n\n do {\n fillFunctionCell(matrices, 0, nextX, y);\n fillFunctionCell(matrices, 0, x, nextY);\n nextX += direction[0];\n nextY += direction[1];\n }\n while (nextX >= 0 && nextX < matrix.length);\n}\n\nexport function addFinderPatterns(matrices) {\n var modules = matrices[0].length;\n\n addCentricPattern(matrices, finderPattern, 0, 0);\n addFinderSeparator(matrices, [-1, -1], 7, 7);\n addCentricPattern(matrices, finderPattern, modules - 7, 0);\n addFinderSeparator(matrices, [1, -1], modules - 8, 7);\n addCentricPattern(matrices, finderPattern, 0, modules - 7);\n addFinderSeparator(matrices, [-1, 1], 7, modules - 8);\n}\n\nexport function addAlignmentPatterns(matrices, version) {\n if (version < 2) {\n return;\n }\n\n var matrix = matrices[0],\n modules = matrix.length,\n pointsCount = Math.floor(version / 7),\n points = [6],\n startDistance,\n distance,\n idx = 0;\n\n if ((startDistance = irregularAlignmentPatternsStartDistance[version])) {\n distance = (modules - 13 - startDistance) / pointsCount;\n } else {\n startDistance = distance = (modules - 13) / (pointsCount + 1);\n }\n\n points.push(points[idx++] + startDistance);\n\n while ((points[idx] + distance) < modules) {\n points.push(points[idx++] + distance);\n }\n\n for (var i = 0; i < points.length; i++) {\n for (var j = 0; j < points.length; j++) {\n if (matrix[points[i]][points[j]] === undefined) {\n addCentricPattern(matrices, alignmentPattern, points[i] - 2, points[j] - 2);\n }\n }\n }\n}\n\nexport function addTimingFunctions(matrices) {\n var row = 6,\n column = 6,\n value = 1,\n modules = matrices[0].length;\n\n for (var i = 8; i < modules - 8; i++) {\n fillFunctionCell(matrices, value, row, i);\n fillFunctionCell(matrices, value, i, column);\n value ^= 1;\n }\n}\n\nexport function scoreMaskMatrixes(matrices) {\n var scores = [],\n previousBits = [],\n darkModules = [],\n patterns = [],\n adjacentSameBits = [],\n matrix,\n i,\n row = 0,\n column = 1,\n modulesLength = matrices[0].length;\n\n for (i = 0; i < matrices.length; i++) {\n scores[i] = 0;\n darkModules[i] = 0;\n adjacentSameBits[i] = [0, 0];\n patterns[i] = [0, 0];\n previousBits[i] = [];\n }\n\n for (var rowIndex = 0; rowIndex < modulesLength; rowIndex++) {\n for (var columnIndex = 0; columnIndex < modulesLength; columnIndex++) {\n for (var matrixIndex = 0; matrixIndex < matrices.length; matrixIndex++) {\n matrix = matrices[matrixIndex];\n darkModules[matrixIndex] += parseInt(matrix[rowIndex][columnIndex], 10);\n\n if (previousBits[matrixIndex][row] === matrix[rowIndex][columnIndex] &&\n rowIndex + 1 < modulesLength &&\n columnIndex - 1 >= 0 &&\n matrix[rowIndex + 1][columnIndex] === previousBits[matrixIndex][row] &&\n matrix[rowIndex + 1][columnIndex - 1] === previousBits[matrixIndex][row]) {\n scores[matrixIndex] += 3;\n }\n\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, row, matrix[rowIndex][columnIndex]);\n scoreFinderPatternOccurance(matrixIndex, patterns, scores, column, matrix[columnIndex][rowIndex]);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[rowIndex][columnIndex], adjacentSameBits, row);\n scoreAdjacentSameBits(matrixIndex, scores, previousBits, matrix[columnIndex][rowIndex], adjacentSameBits, column);\n }\n }\n }\n\n var total = modulesLength * modulesLength,\n minIdx,\n min = Number.MAX_VALUE;\n\n for (i = 0; i < scores.length; i++) {\n scores[i] += calculateDarkModulesRatioScore(darkModules[i], total);\n\n if (scores[i] < min) {\n min = scores[i];\n minIdx = i;\n }\n }\n\n return minIdx;\n}\n\nexport function scoreFinderPatternOccurance(idx, patterns, scores, rowColumn, bit) {\n patterns[idx][rowColumn] = ((patterns[idx][rowColumn] << 1) ^ bit) % 128;\n\n if (patterns[idx][rowColumn] === finderPatternValue) {\n scores[idx] += 40;\n }\n}\n\nexport function scoreAdjacentSameBits(idx, scores, previousBits, bit, adjacentBits, rowColumn) {\n if (previousBits[idx][rowColumn] === bit) {\n adjacentBits[idx][rowColumn]++;\n } else {\n previousBits[idx][rowColumn] = bit;\n\n if (adjacentBits[idx][rowColumn] >= 5) {\n scores[idx] += 3 + adjacentBits[idx][rowColumn] - 5;\n }\n\n adjacentBits[idx][rowColumn] = 1;\n }\n}\n\nexport function calculateDarkModulesRatioScore(darkModules, total) {\n var percent = Math.floor((darkModules / total) * 100),\n mod5 = percent % 5,\n previous = Math.abs(percent - mod5 - 50),\n next = Math.abs(percent + 5 - mod5 - 50),\n score = 10 * Math.min(previous / 5, next / 5);\n\n return score;\n}\n\nexport function createQRCodeDataEncoder(encoding) {\n if (encoding && encoding.toLowerCase().indexOf(\"utf_8\") >= 0) {\n return new Utf8Encoder();\n }\n\n return new IsoEncoder();\n}\n\nexport function encodeData(inputString, errorCorrectionLevel, encoding) {\n var encoder = createQRCodeDataEncoder(encoding),\n encodingResult = encoder.getEncodingResult(inputString, errorCorrectionLevel),\n version = encodingResult.version,\n versionInformation = VersionsCodewordsInformation[version - 1][errorCorrectionLevel],\n dataString = padDataString(encodingResult.dataString, versionInformation.totalDataCodewords),\n blocks = getBlocks(dataString, versionInformation),\n matrices = initMatrices(version);\n\n addFinderPatterns(matrices);\n addAlignmentPatterns(matrices, version);\n addTimingFunctions(matrices);\n\n if (version >= 7) {\n addVersionInformation(matrices, toBitsString(0, 18));\n }\n\n addFormatInformation(matrices, toBitsString(0, 15));\n fillData(matrices, blocks);\n\n var minIdx = scoreMaskMatrixes(matrices),\n optimalMatrix = matrices[minIdx];\n\n if (version >= 7) {\n addVersionInformation([optimalMatrix], encodeVersionInformation(version));\n }\n\n var formatString = errorCorrectionPatterns[errorCorrectionLevel] + toBitsString(minIdx, 3);\n addFormatInformation([optimalMatrix], encodeFormatInformation(formatString));\n\n return optimalMatrix;\n}\n","import { Class } from '../../../common';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport var QRDataMode = (function (Class) {\n function QRDataMode() {\n Class.call(this);\n\n this.initProperties();\n }\n\n if ( Class ) QRDataMode.__proto__ = Class;\n QRDataMode.prototype = Object.create( Class && Class.prototype );\n QRDataMode.prototype.constructor = QRDataMode;\n\n QRDataMode.prototype.initProperties = function initProperties () {\n extend(this, {\n modeIndicator: \"\",\n bitsInCharacterCount: []\n });\n };\n\n QRDataMode.prototype.getVersionIndex = function getVersionIndex (version) {\n if (version < 10) {\n return 0;\n } else if (version > 26) {\n return 2;\n }\n\n return 1;\n };\n\n QRDataMode.prototype.getBitsCharacterCount = function getBitsCharacterCount (version) {\n return this.bitsInCharacterCount[this.getVersionIndex(version || 40)];\n };\n\n QRDataMode.prototype.getModeCountString = function getModeCountString (length, version) {\n return this.modeIndicator + toBitsString(length, this.getBitsCharacterCount(version));\n };\n\n QRDataMode.prototype.encode = function encode () { };\n\n QRDataMode.prototype.getStringBitsLength = function getStringBitsLength () { };\n\n QRDataMode.prototype.getValue = function getValue () { };\n\n return QRDataMode;\n}(Class));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport var NumericQRDataMode = (function (QRDataMode) {\n function NumericQRDataMode () {\n QRDataMode.apply(this, arguments);\n }\n\n if ( QRDataMode ) NumericQRDataMode.__proto__ = QRDataMode;\n NumericQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n NumericQRDataMode.prototype.constructor = NumericQRDataMode;\n\n NumericQRDataMode.prototype.initProperties = function initProperties () {\n QRDataMode.prototype.initProperties.call(this);\n\n extend(this, {\n bitsInCharacterCount: [10, 12, 14],\n modeIndicator: \"0001\"\n });\n };\n\n NumericQRDataMode.prototype.getValue = function getValue (character) {\n return parseInt(character, 10);\n };\n\n NumericQRDataMode.prototype.encode = function encode (str, version) {\n var mode = this,\n parts = splitInto(str, 3),\n result = mode.getModeCountString(str.length, version);\n var i;\n\n for (i = 0; i < parts.length - 1; i++) {\n result += toBitsString(parts[i], 10);\n }\n\n return result + toBitsString(parts[i], 1 + 3 * parts[i].length);\n };\n\n NumericQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n var mod3 = inputLength % 3;\n return 4 + this.getBitsCharacterCount(version) + 10 * Math.floor(inputLength / 3) + 3 * mod3 + (mod3 === 0 ? 0 : 1);\n };\n\n return NumericQRDataMode;\n}(QRDataMode));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString,\n splitInto\n} from '../../utils';\n\nexport var AlphaNumericQRDataMode = (function (QRDataMode) {\n function AlphaNumericQRDataMode () {\n QRDataMode.apply(this, arguments);\n }\n\n if ( QRDataMode ) AlphaNumericQRDataMode.__proto__ = QRDataMode;\n AlphaNumericQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n AlphaNumericQRDataMode.prototype.constructor = AlphaNumericQRDataMode;\n\n AlphaNumericQRDataMode.prototype.initProperties = function initProperties () {\n QRDataMode.prototype.initProperties.call(this);\n\n extend(this, {\n characters: {\n \"0\": 0,\n \"1\": 1,\n \"2\": 2,\n \"3\": 3,\n \"4\": 4,\n \"5\": 5,\n \"6\": 6,\n \"7\": 7,\n \"8\": 8,\n \"9\": 9,\n \"A\": 10,\n \"B\": 11,\n \"C\": 12,\n \"D\": 13,\n \"E\": 14,\n \"F\": 15,\n \"G\": 16,\n \"H\": 17,\n \"I\": 18,\n \"J\": 19,\n \"K\": 20,\n \"L\": 21,\n \"M\": 22,\n \"N\": 23,\n \"O\": 24,\n \"P\": 25,\n \"Q\": 26,\n \"R\": 27,\n \"S\": 28,\n \"T\": 29,\n \"U\": 30,\n \"V\": 31,\n \"W\": 32,\n \"X\": 33,\n \"Y\": 34,\n \"Z\": 35,\n \" \": 36,\n \"$\": 37,\n \"%\": 38,\n \"*\": 39,\n \"+\": 40,\n \"-\": 41,\n \".\": 42,\n \"/\": 43,\n \":\": 44\n },\n bitsInCharacterCount: [9, 11, 13],\n modeIndicator: \"0010\"\n });\n };\n\n AlphaNumericQRDataMode.prototype.getValue = function getValue (character) {\n return this.characters[character];\n };\n\n AlphaNumericQRDataMode.prototype.encode = function encode (str, version) {\n var this$1 = this;\n\n var\n parts = splitInto(str, 2),\n result = this.getModeCountString(str.length, version),\n value;\n var i;\n\n for (i = 0; i < parts.length - 1; i++) {\n value = 45 * this$1.getValue(parts[i].charAt(0)) + this$1.getValue(parts[i].charAt(1));\n result += toBitsString(value, 11);\n }\n\n value = parts[i].length === 2 ?\n 45 * this.getValue(parts[i].charAt(0)) + this.getValue(parts[i].charAt(1)) :\n this.getValue(parts[i].charAt(0));\n\n return result + toBitsString(value, 1 + 5 * parts[i].length);\n };\n\n AlphaNumericQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 11 * Math.floor(inputLength / 2) + 6 * (inputLength % 2);\n };\n\n return AlphaNumericQRDataMode;\n}(QRDataMode));\n","import { QRDataMode } from './qr-data-mode';\nimport { extend } from '../../utils';\nimport {\n toBitsString\n} from '../../utils';\n\nexport var ByteQRDataMode = (function (QRDataMode) {\n function ByteQRDataMode () {\n QRDataMode.apply(this, arguments);\n }\n\n if ( QRDataMode ) ByteQRDataMode.__proto__ = QRDataMode;\n ByteQRDataMode.prototype = Object.create( QRDataMode && QRDataMode.prototype );\n ByteQRDataMode.prototype.constructor = ByteQRDataMode;\n\n ByteQRDataMode.prototype.initProperties = function initProperties () {\n QRDataMode.prototype.initProperties.call(this);\n\n extend(this, {\n bitsInCharacterCount: [8, 16, 16],\n modeIndicator: \"0100\"\n });\n };\n\n ByteQRDataMode.prototype.getValue = function getValue (character) {\n var code = character.charCodeAt(0);\n\n if (code <= 127 || (160 <= code && code <= 255)) {\n return code;\n }\n\n throw new Error((\"Unsupported character in QR Code: \\\"\" + character + \"\\\".\"));\n };\n\n ByteQRDataMode.prototype.encode = function encode (str, version) {\n var mode = this,\n result = mode.getModeCountString(str.length, version);\n\n for (var i = 0; i < str.length; i++) {\n result += toBitsString(mode.getValue(str.charAt(i)), 8);\n }\n\n return result;\n };\n\n ByteQRDataMode.prototype.getStringBitsLength = function getStringBitsLength (inputLength, version) {\n return 4 + this.getBitsCharacterCount(version) + 8 * inputLength;\n };\n\n return ByteQRDataMode;\n}(QRDataMode));\n","import { NumericQRDataMode } from './numeric-data-mode';\nimport { AlphaNumericQRDataMode } from './alpha-numeric-data-mode';\nimport { ByteQRDataMode } from './byte-data-mode';\n\nvar NUMERIC = \"numeric\";\nvar ALPHA_NUMERIC = \"alphanumeric\";\nvar BYTE = \"byte\";\n\nexport var DataModeInstances = {};\nDataModeInstances[NUMERIC] = new NumericQRDataMode();\nDataModeInstances[ALPHA_NUMERIC] = new AlphaNumericQRDataMode();\nDataModeInstances[BYTE] = new ByteQRDataMode();\n","import { Class } from '../../../common';\nimport { EncodingResult } from '../encoding-result';\nimport { DataModeInstances } from '../data-modes/data-mode-instances';\nimport { extend } from '../../utils';\nimport { toBitsString } from '../../utils';\nimport { getVersion } from '../encoding';\n\nvar BYTE = \"byte\";\n\nexport var Utf8Encoder = (function (Class) {\n function Utf8Encoder() {\n Class.call(this);\n\n this.initProperties();\n\n this.mode = DataModeInstances[this.encodingMode];\n }\n\n if ( Class ) Utf8Encoder.__proto__ = Class;\n Utf8Encoder.prototype = Object.create( Class && Class.prototype );\n Utf8Encoder.prototype.constructor = Utf8Encoder;\n\n Utf8Encoder.prototype.initProperties = function initProperties () {\n extend(this, {\n encodingMode: BYTE,\n utfBOM: \"111011111011101110111111\",\n initialModeCountStringLength: 20,\n ranges: [128, 2048, 65536, 2097152, 67108864]\n });\n };\n\n Utf8Encoder.prototype.getEncodingResult = function getEncodingResult (inputString, errorCorrectionLevel) {\n var data = this.encode(inputString),\n dataCodewordsCount = this.getDataCodewordsCount(data),\n version = getVersion(dataCodewordsCount, errorCorrectionLevel),\n dataString = this.mode.getModeCountString(data.length / 8, version) + data;\n\n return new EncodingResult(dataString, version);\n };\n\n Utf8Encoder.prototype.getDataCodewordsCount = function getDataCodewordsCount (data) {\n var dataLength = data.length,\n dataCodewordsCount = Math.ceil((this.initialModeCountStringLength + dataLength) / 8);\n\n return dataCodewordsCount;\n };\n\n Utf8Encoder.prototype.encode = function encode (str) {\n var this$1 = this;\n\n var result = this.utfBOM;\n\n for (var i = 0; i < str.length; i++) {\n result += this$1.encodeCharacter(str.charCodeAt(i));\n }\n\n return result;\n };\n\n Utf8Encoder.prototype.encodeCharacter = function encodeCharacter (code) {\n var bytesCount = this.getBytesCount(code),\n bc = bytesCount - 1,\n result = \"\";\n\n if (bytesCount === 1) {\n result = toBitsString(code, 8);\n } else {\n var significantOnes = 8 - bytesCount;\n\n for (var i = 0; i < bc; i++) {\n result = toBitsString(code >> (i * 6) & 63 | 128, 8) + result;\n }\n\n result = ((code >> bc * 6) | ((255 >> significantOnes) << significantOnes)).toString(2) + result;\n }\n\n return result;\n };\n\n Utf8Encoder.prototype.getBytesCount = function getBytesCount (code) {\n var ranges = this.ranges;\n\n for (var i = 0; i < ranges.length; i++) {\n if (code < ranges[i]) {\n return i + 1;\n }\n }\n };\n\n return Utf8Encoder;\n}(Class));\n","export var VersionsCodewordsInformation = [{\n L: {\n groups: [\n [1, 19]\n ],\n totalDataCodewords: 19,\n errorCodewordsPerBlock: 7\n },\n M: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 10\n },\n Q: {\n groups: [\n [1, 13]\n ],\n totalDataCodewords: 13,\n errorCodewordsPerBlock: 13\n },\n H: {\n groups: [\n [1, 9]\n ],\n totalDataCodewords: 9,\n errorCodewordsPerBlock: 17\n }\n}, {\n L: {\n groups: [\n [1, 34]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 10\n },\n M: {\n groups: [\n [1, 28]\n ],\n totalDataCodewords: 28,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [1, 22]\n ],\n totalDataCodewords: 22,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [1, 16]\n ],\n totalDataCodewords: 16,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [1, 55]\n ],\n totalDataCodewords: 55,\n errorCodewordsPerBlock: 15\n },\n M: {\n groups: [\n [1, 44]\n ],\n totalDataCodewords: 44,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [2, 17]\n ],\n totalDataCodewords: 34,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 13]\n ],\n totalDataCodewords: 26,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [1, 80]\n ],\n totalDataCodewords: 80,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [2, 32]\n ],\n totalDataCodewords: 64,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 24]\n ],\n totalDataCodewords: 48,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [4, 9]\n ],\n totalDataCodewords: 36,\n errorCodewordsPerBlock: 16\n }\n}, {\n L: {\n groups: [\n [1, 108]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [2, 43]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [2, 15],\n [2, 16]\n ],\n totalDataCodewords: 62,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [2, 11],\n [2, 12]\n ],\n totalDataCodewords: 46,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [2, 68]\n ],\n totalDataCodewords: 136,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 27]\n ],\n totalDataCodewords: 108,\n errorCodewordsPerBlock: 16\n },\n Q: {\n groups: [\n [4, 19]\n ],\n totalDataCodewords: 76,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [4, 15]\n ],\n totalDataCodewords: 60,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [2, 78]\n ],\n totalDataCodewords: 156,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [4, 31]\n ],\n totalDataCodewords: 124,\n errorCodewordsPerBlock: 18\n },\n Q: {\n groups: [\n [2, 14],\n [4, 15]\n ],\n totalDataCodewords: 88,\n errorCodewordsPerBlock: 18\n },\n H: {\n groups: [\n [4, 13],\n [1, 14]\n ],\n totalDataCodewords: 66,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 97]\n ],\n totalDataCodewords: 194,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [2, 38],\n [2, 39]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 18],\n [2, 19]\n ],\n totalDataCodewords: 110,\n errorCodewordsPerBlock: 22\n },\n H: {\n groups: [\n [4, 14],\n [2, 15]\n ],\n totalDataCodewords: 86,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [2, 116]\n ],\n totalDataCodewords: 232,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 36],\n [2, 37]\n ],\n totalDataCodewords: 182,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 16],\n [4, 17]\n ],\n totalDataCodewords: 132,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [4, 12],\n [4, 13]\n ],\n totalDataCodewords: 100,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 68],\n [2, 69]\n ],\n totalDataCodewords: 274,\n errorCodewordsPerBlock: 18\n },\n M: {\n groups: [\n [4, 43],\n [1, 44]\n ],\n totalDataCodewords: 216,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [6, 19],\n [2, 20]\n ],\n totalDataCodewords: 154,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [6, 15],\n [2, 16]\n ],\n totalDataCodewords: 122,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 81]\n ],\n totalDataCodewords: 324,\n errorCodewordsPerBlock: 20\n },\n M: {\n groups: [\n [1, 50],\n [4, 51]\n ],\n totalDataCodewords: 254,\n errorCodewordsPerBlock: 30\n },\n Q: {\n groups: [\n [4, 22],\n [4, 23]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [3, 12],\n [8, 13]\n ],\n totalDataCodewords: 140,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [2, 92],\n [2, 93]\n ],\n totalDataCodewords: 370,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [6, 36],\n [2, 37]\n ],\n totalDataCodewords: 290,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [4, 20],\n [6, 21]\n ],\n totalDataCodewords: 206,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [7, 14],\n [4, 15]\n ],\n totalDataCodewords: 158,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 107]\n ],\n totalDataCodewords: 428,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 37],\n [1, 38]\n ],\n totalDataCodewords: 334,\n errorCodewordsPerBlock: 22\n },\n Q: {\n groups: [\n [8, 20],\n [4, 21]\n ],\n totalDataCodewords: 244,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [12, 11],\n [4, 12]\n ],\n totalDataCodewords: 180,\n errorCodewordsPerBlock: 22\n }\n}, {\n L: {\n groups: [\n [3, 115],\n [1, 116]\n ],\n totalDataCodewords: 461,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 40],\n [5, 41]\n ],\n totalDataCodewords: 365,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [11, 16],\n [5, 17]\n ],\n totalDataCodewords: 261,\n errorCodewordsPerBlock: 20\n },\n H: {\n groups: [\n [11, 12],\n [5, 13]\n ],\n totalDataCodewords: 197,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 87],\n [1, 88]\n ],\n totalDataCodewords: 523,\n errorCodewordsPerBlock: 22\n },\n M: {\n groups: [\n [5, 41],\n [5, 42]\n ],\n totalDataCodewords: 415,\n errorCodewordsPerBlock: 24\n },\n Q: {\n groups: [\n [5, 24],\n [7, 25]\n ],\n totalDataCodewords: 295,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 12],\n [7, 13]\n ],\n totalDataCodewords: 223,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [5, 98],\n [1, 99]\n ],\n totalDataCodewords: 589,\n errorCodewordsPerBlock: 24\n },\n M: {\n groups: [\n [7, 45],\n [3, 46]\n ],\n totalDataCodewords: 453,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 19],\n [2, 20]\n ],\n totalDataCodewords: 325,\n errorCodewordsPerBlock: 24\n },\n H: {\n groups: [\n [3, 15],\n [13, 16]\n ],\n totalDataCodewords: 253,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [1, 107],\n [5, 108]\n ],\n totalDataCodewords: 647,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [10, 46],\n [1, 47]\n ],\n totalDataCodewords: 507,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 22],\n [15, 23]\n ],\n totalDataCodewords: 367,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [17, 15]\n ],\n totalDataCodewords: 283,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [5, 120],\n [1, 121]\n ],\n totalDataCodewords: 721,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [9, 43],\n [4, 44]\n ],\n totalDataCodewords: 563,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [1, 23]\n ],\n totalDataCodewords: 397,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [2, 14],\n [19, 15]\n ],\n totalDataCodewords: 313,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [3, 113],\n [4, 114]\n ],\n totalDataCodewords: 795,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 44],\n [11, 45]\n ],\n totalDataCodewords: 627,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 21],\n [4, 22]\n ],\n totalDataCodewords: 445,\n errorCodewordsPerBlock: 26\n },\n H: {\n groups: [\n [9, 13],\n [16, 14]\n ],\n totalDataCodewords: 341,\n errorCodewordsPerBlock: 26\n }\n}, {\n L: {\n groups: [\n [3, 107],\n [5, 108]\n ],\n totalDataCodewords: 861,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [3, 41],\n [13, 42]\n ],\n totalDataCodewords: 669,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [15, 24],\n [5, 25]\n ],\n totalDataCodewords: 485,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [15, 15],\n [10, 16]\n ],\n totalDataCodewords: 385,\n errorCodewordsPerBlock: 28\n }\n}, {\n L: {\n groups: [\n [4, 116],\n [4, 117]\n ],\n totalDataCodewords: 932,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 42]\n ],\n totalDataCodewords: 714,\n errorCodewordsPerBlock: 26\n },\n Q: {\n groups: [\n [17, 22],\n [6, 23]\n ],\n totalDataCodewords: 512,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [19, 16],\n [6, 17]\n ],\n totalDataCodewords: 406,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [2, 111],\n [7, 112]\n ],\n totalDataCodewords: 1006,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [17, 46]\n ],\n totalDataCodewords: 782,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [16, 25]\n ],\n totalDataCodewords: 568,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [34, 13]\n ],\n totalDataCodewords: 442,\n errorCodewordsPerBlock: 24\n }\n}, {\n L: {\n groups: [\n [4, 121],\n [5, 122]\n ],\n totalDataCodewords: 1094,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [4, 47],\n [14, 48]\n ],\n totalDataCodewords: 860,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [14, 25]\n ],\n totalDataCodewords: 614,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [16, 15],\n [14, 16]\n ],\n totalDataCodewords: 464,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 117],\n [4, 118]\n ],\n totalDataCodewords: 1174,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 45],\n [14, 46]\n ],\n totalDataCodewords: 914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [11, 24],\n [16, 25]\n ],\n totalDataCodewords: 664,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [30, 16],\n [2, 17]\n ],\n totalDataCodewords: 514,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 106],\n [4, 107]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 26\n },\n M: {\n groups: [\n [8, 47],\n [13, 48]\n ],\n totalDataCodewords: 1000,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [7, 24],\n [22, 25]\n ],\n totalDataCodewords: 718,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [13, 16]\n ],\n totalDataCodewords: 538,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [10, 114],\n [2, 115]\n ],\n totalDataCodewords: 1370,\n errorCodewordsPerBlock: 28\n },\n M: {\n groups: [\n [19, 46],\n [4, 47]\n ],\n totalDataCodewords: 1062,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [28, 22],\n [6, 23]\n ],\n totalDataCodewords: 754,\n errorCodewordsPerBlock: 28\n },\n H: {\n groups: [\n [33, 16],\n [4, 17]\n ],\n totalDataCodewords: 596,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [8, 122],\n [4, 123]\n ],\n totalDataCodewords: 1468,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [22, 45],\n [3, 46]\n ],\n totalDataCodewords: 1128,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [8, 23],\n [26, 24]\n ],\n totalDataCodewords: 808,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [12, 15],\n [28, 16]\n ],\n totalDataCodewords: 628,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [3, 117],\n [10, 118]\n ],\n totalDataCodewords: 1531,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [3, 45],\n [23, 46]\n ],\n totalDataCodewords: 1193,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [4, 24],\n [31, 25]\n ],\n totalDataCodewords: 871,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [31, 16]\n ],\n totalDataCodewords: 661,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [7, 116],\n [7, 117]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [21, 45],\n [7, 46]\n ],\n totalDataCodewords: 1267,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [1, 23],\n [37, 24]\n ],\n totalDataCodewords: 911,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [26, 16]\n ],\n totalDataCodewords: 701,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [5, 115],\n [10, 116]\n ],\n totalDataCodewords: 1735,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [19, 47],\n [10, 48]\n ],\n totalDataCodewords: 1373,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [15, 24],\n [25, 25]\n ],\n totalDataCodewords: 985,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [25, 16]\n ],\n totalDataCodewords: 745,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [3, 116]\n ],\n totalDataCodewords: 1843,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [2, 46],\n [29, 47]\n ],\n totalDataCodewords: 1455,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [42, 24],\n [1, 25]\n ],\n totalDataCodewords: 1033,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [23, 15],\n [28, 16]\n ],\n totalDataCodewords: 793,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115]\n ],\n totalDataCodewords: 1955,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [10, 46],\n [23, 47]\n ],\n totalDataCodewords: 1541,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [10, 24],\n [35, 25]\n ],\n totalDataCodewords: 1115,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [19, 15],\n [35, 16]\n ],\n totalDataCodewords: 845,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 115],\n [1, 116]\n ],\n totalDataCodewords: 2071,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [21, 47]\n ],\n totalDataCodewords: 1631,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [29, 24],\n [19, 25]\n ],\n totalDataCodewords: 1171,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [11, 15],\n [46, 16]\n ],\n totalDataCodewords: 901,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [13, 115],\n [6, 116]\n ],\n totalDataCodewords: 2191,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [14, 46],\n [23, 47]\n ],\n totalDataCodewords: 1725,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [44, 24],\n [7, 25]\n ],\n totalDataCodewords: 1231,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [59, 16],\n [1, 17]\n ],\n totalDataCodewords: 961,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [12, 121],\n [7, 122]\n ],\n totalDataCodewords: 2306,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [12, 47],\n [26, 48]\n ],\n totalDataCodewords: 1812,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [39, 24],\n [14, 25]\n ],\n totalDataCodewords: 1286,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [22, 15],\n [41, 16]\n ],\n totalDataCodewords: 986,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [6, 121],\n [14, 122]\n ],\n totalDataCodewords: 2434,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [6, 47],\n [34, 48]\n ],\n totalDataCodewords: 1914,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [46, 24],\n [10, 25]\n ],\n totalDataCodewords: 1354,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [2, 15],\n [64, 16]\n ],\n totalDataCodewords: 1054,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [17, 122],\n [4, 123]\n ],\n totalDataCodewords: 2566,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [29, 46],\n [14, 47]\n ],\n totalDataCodewords: 1992,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [49, 24],\n [10, 25]\n ],\n totalDataCodewords: 1426,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [24, 15],\n [46, 16]\n ],\n totalDataCodewords: 1096,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [4, 122],\n [18, 123]\n ],\n totalDataCodewords: 2702,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [13, 46],\n [32, 47]\n ],\n totalDataCodewords: 2102,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [48, 24],\n [14, 25]\n ],\n totalDataCodewords: 1502,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [42, 15],\n [32, 16]\n ],\n totalDataCodewords: 1142,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [20, 117],\n [4, 118]\n ],\n totalDataCodewords: 2812,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [40, 47],\n [7, 48]\n ],\n totalDataCodewords: 2216,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [43, 24],\n [22, 25]\n ],\n totalDataCodewords: 1582,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [10, 15],\n [67, 16]\n ],\n totalDataCodewords: 1222,\n errorCodewordsPerBlock: 30\n }\n}, {\n L: {\n groups: [\n [19, 118],\n [6, 119]\n ],\n totalDataCodewords: 2956,\n errorCodewordsPerBlock: 30\n },\n M: {\n groups: [\n [18, 47],\n [31, 48]\n ],\n totalDataCodewords: 2334,\n errorCodewordsPerBlock: 28\n },\n Q: {\n groups: [\n [34, 24],\n [34, 25]\n ],\n totalDataCodewords: 1666,\n errorCodewordsPerBlock: 30\n },\n H: {\n groups: [\n [20, 15],\n [61, 16]\n ],\n totalDataCodewords: 1276,\n errorCodewordsPerBlock: 30\n }\n}];\n","import {\n geometry as geom,\n drawing as draw\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n addClass,\n setDefaultOptions,\n deepExtend,\n defaultErrorHandler\n} from '../common';\n\nimport { Box } from '../core';\nimport { encodeData } from './encodings/encoding';\nimport { extend } from './utils';\n\nimport { surfaceSize } from '../barcode/surface-size';\n\nvar round = Math.round;\nvar crossPattern = [[0, 1], [1, 1], [1, 2], [2, 2], [2, 1], [3, 1], [3, 0], [2, 0], [2, -1], [1, -1], [1, 0]];\nvar squarePattern = [[0, 1], [1, 1], [1, 0]];\n\nvar QRCodeDefaults = {\n DEFAULT_SIZE: 200,\n QUIET_ZONE_LENGTH: 4,\n DEFAULT_ERROR_CORRECTION_LEVEL: \"L\",\n DEFAULT_BACKGROUND: \"#fff\",\n DEFAULT_DARK_MODULE_COLOR: \"#000\",\n MIN_BASE_UNIT_SIZE: 1,\n DEFAULT_LOGO_SIZE: 7\n};\n\nvar QRCode = (function (Class) {\n function QRCode(element, options, errorHandler) {\n if ( errorHandler === void 0 ) errorHandler = defaultErrorHandler;\n\n Class.call(this);\n\n this.options = deepExtend({}, this.options, options);\n this.element = element;\n this.wrapper = this.element;\n this.onError = errorHandler;\n\n this._initElement();\n this._initSurface();\n\n this.setOptions(options);\n }\n\n if ( Class ) QRCode.__proto__ = Class;\n QRCode.prototype = Object.create( Class && Class.prototype );\n QRCode.prototype.constructor = QRCode;\n\n QRCode.prototype.destroy = function destroy () {\n this._destroySurface();\n };\n\n QRCode.prototype._initElement = function _initElement () {\n addClass(this.element, \"k-qrcode\");\n };\n\n QRCode.prototype._initSurface = function _initSurface () {\n var ref = this;\n var options = ref.options;\n var surface = ref.surface;\n\n if (!surface || surface.options.type !== options.renderAs) {\n this._destroySurface();\n this._initSurfaceElement();\n this.surface = this._createSurface();\n }\n };\n\n QRCode.prototype._createSurface = function _createSurface () {\n return draw.Surface.create(this.surfaceElement, {\n type: this.options.renderAs\n });\n };\n\n QRCode.prototype._destroySurface = function _destroySurface () {\n if (this.surface) {\n this.surface.destroy();\n this.surface = null;\n this._destroySurfaceElement();\n }\n };\n\n QRCode.prototype._initSurfaceElement = function _initSurfaceElement () {\n if (!this.surfaceElement) {\n this.surfaceElement = document.createElement('div');\n this.surfaceElement.style.position = \"relative\";\n this.element.appendChild(this.surfaceElement);\n }\n };\n\n QRCode.prototype._destroySurfaceElement = function _destroySurfaceElement () {\n if (this.surfaceElement && this.surfaceElement.parentNode) {\n this.surfaceElement.parentNode.removeChild(this.surfaceElement);\n this.surfaceElement = null;\n }\n };\n\n QRCode.prototype.redraw = function redraw () {\n var size = this._getSize();\n\n this.surface.clear();\n\n this.surface.setSize({\n width: size,\n height: size\n });\n\n this.createVisual();\n\n this.surface.draw(this.visual);\n };\n\n QRCode.prototype.getSize = function getSize () {\n var element = this.element;\n var elementWidth = element.clientWidth;\n var elementHeight = element.clientHeight;\n var size = { width: 0, height: 0 };\n\n if (elementWidth > 0) {\n size.width = elementWidth;\n }\n\n if (elementHeight) {\n size.height = elementHeight;\n }\n\n return size;\n };\n\n QRCode.prototype._resize = function _resize () {\n this.redraw();\n };\n\n QRCode.prototype.createVisual = function createVisual () {\n this.visual = this._render();\n };\n\n QRCode.prototype.exportVisual = function exportVisual () {\n return this._render();\n };\n\n QRCode.prototype._render = function _render () {\n var value = this._value,\n baseUnit,\n border = this.options.border || {},\n padding = this.options.padding || 0,\n borderWidth = border.width || 0,\n quietZoneSize,\n matrix,\n size,\n dataSize,\n contentSize;\n\n border.width = borderWidth;\n\n var visual = new draw.Group();\n\n try {\n if (value) {\n matrix = encodeData(value, this.options.errorCorrection, this.options.encoding);\n size = this._getSize();\n contentSize = size - 2 * (borderWidth + padding);\n baseUnit = this._calculateBaseUnit(contentSize, matrix.length);\n dataSize = matrix.length * baseUnit;\n quietZoneSize = borderWidth + padding + (contentSize - dataSize) / 2;\n\n visual.append(this._renderBackground(size, border));\n visual.append(this._renderMatrix(matrix, baseUnit, quietZoneSize));\n\n if (this._hasCustomLogo()) {\n visual.append(this._renderLogo(size, baseUnit));\n } else if (this._isSwiss()) {\n visual.append(this._renderSwissCode(size, baseUnit));\n }\n }\n } catch (error) {\n this.onError(error);\n }\n\n return visual;\n };\n\n QRCode.prototype._renderLogo = function _renderLogo (qrSize, baseUnit) {\n var image;\n var imageRect;\n var center = round(qrSize / 2);\n var logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n var logoUrl = this.options.overlay.imageUrl;\n var position = {\n x: center - logoSize.width / 2,\n y: center - logoSize.height / 2\n };\n\n imageRect = new geom.Rect(\n new geom.Point(position.x, position.y),\n new geom.Size(logoSize.width, logoSize.height)\n );\n\n image = new draw.Image(logoUrl, imageRect);\n\n return image;\n };\n\n QRCode.prototype._renderSwissCode = function _renderSwissCode (qrSize, baseUnit) {\n var logoSize = this._getLogoSize(baseUnit * QRCodeDefaults.DEFAULT_LOGO_SIZE);\n logoSize = Math.max(logoSize.width, logoSize.height);\n var crossSize = logoSize / 4;\n var crossOffset = crossSize / 2;\n var center = qrSize / 2;\n var start = {};\n var visual = new draw.Group();\n\n start.x = start.y = Math.ceil(center - baseUnit - logoSize / 2);\n visual.append(this._renderShape(start, Math.ceil(logoSize + baseUnit * 2), squarePattern, \"#fff\"));\n\n start.x = start.y = center - logoSize / 2;\n visual.append(this._renderShape(start, logoSize, squarePattern, this.options.color));\n\n start.x = center + crossOffset - logoSize / 2;\n start.y = center + crossOffset + crossSize - logoSize / 2;\n visual.append(this._renderShape(start, crossSize, crossPattern, \"#fff\"));\n\n return visual;\n };\n\n QRCode.prototype._renderShape = function _renderShape (start, step, pattern, color) {\n var path = new draw.MultiPath({\n fill: {\n color: color\n },\n stroke: null\n });\n\n path.moveTo(start.x, start.y);\n\n for (var i = 0; i < pattern.length; i++) {\n path.lineTo(start.x + step * pattern[i][0], start.y + step * pattern[i][1]);\n }\n\n path.close();\n\n return path;\n };\n\n QRCode.prototype._getSize = function _getSize () {\n var size;\n\n if (this.options.size) {\n size = parseInt(this.options.size, 10);\n } else {\n var element = this.element;\n var elementSize = surfaceSize(element, this.options.renderAs);\n var min = Math.min(elementSize.width, elementSize.height);\n\n if (min > 0) {\n size = min;\n } else {\n size = QRCodeDefaults.DEFAULT_SIZE;\n }\n }\n\n return size;\n };\n\n QRCode.prototype._calculateBaseUnit = function _calculateBaseUnit (size, matrixSize) {\n var baseUnit = Math.floor(size / matrixSize);\n\n if (baseUnit < QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n var minSize = Math.ceil(matrixSize * QRCodeDefaults.MIN_BASE_UNIT_SIZE);\n this.onError(new Error(\n (\"Insufficient size for QR Code: the current size is \" + size + \"px and the minimum size is \" + minSize + \"px.\")\n ));\n } else if (baseUnit * matrixSize >= size &&\n baseUnit - 1 >= QRCodeDefaults.MIN_BASE_UNIT_SIZE) {\n baseUnit--;\n }\n\n return baseUnit;\n };\n\n QRCode.prototype._renderMatrix = function _renderMatrix (matrix, baseUnit, quietZoneSize) {\n var path = new draw.MultiPath({\n fill: {\n color: this.options.color\n },\n stroke: null\n });\n\n for (var row = 0; row < matrix.length; row++) {\n var y = quietZoneSize + row * baseUnit;\n var column = 0;\n\n while (column < matrix.length) {\n while (matrix[row][column] === 0 && column < matrix.length) {\n column++;\n }\n\n if (column < matrix.length) {\n var x = column;\n while (matrix[row][column] === 1) {\n column++;\n }\n\n var x1 = round(quietZoneSize + x * baseUnit);\n var y1 = round(y);\n var x2 = round(quietZoneSize + column * baseUnit);\n var y2 = round(y + baseUnit);\n\n path.moveTo(x1, y1)\n .lineTo(x1, y2)\n .lineTo(x2, y2)\n .lineTo(x2, y1)\n .close();\n }\n }\n }\n\n return path;\n };\n\n QRCode.prototype._renderBackground = function _renderBackground (size, border) {\n var box = new Box(0, 0, size, size).unpad(border.width / 2);\n var background = draw.Path.fromRect(box.toRect(), {\n fill: {\n color: this.options.background\n },\n stroke: {\n color: border.color,\n width: border.width\n }\n });\n\n return background;\n };\n\n QRCode.prototype.setOptions = function setOptions (options) {\n var newOptions = options || {};\n this.options = extend(this.options, newOptions);\n\n if (options.value !== undefined) {\n this._value = String(this.options.value);\n }\n\n this._initSurface();\n this.redraw();\n };\n\n QRCode.prototype.value = function value (value$1) {\n if (value$1 === undefined) {\n return this._value;\n }\n\n this._value = String(value$1);\n\n this.redraw();\n };\n\n QRCode.prototype._hasCustomLogo = function _hasCustomLogo () {\n return Boolean(this.options.overlay.imageUrl);\n };\n\n QRCode.prototype._isSwiss = function _isSwiss () {\n return this.options.overlay.type === \"swiss\";\n };\n\n QRCode.prototype._getLogoSize = function _getLogoSize (defautLogoSize) {\n var width = this.options.overlay.width;\n var height = this.options.overlay.height;\n\n if (!width && !height) {\n width = height = defautLogoSize;\n } else if (width && !height) {\n height = width;\n } else if (!width && height) {\n width = height;\n }\n\n return {\n width: width,\n height: height\n };\n };\n\n return QRCode;\n}(Class));\n\nsetDefaultOptions(QRCode, {\n name: \"QRCode\",\n renderAs: \"svg\",\n encoding: \"ISO_8859_1\",\n value: \"\",\n errorCorrection: QRCodeDefaults.DEFAULT_ERROR_CORRECTION_LEVEL,\n background: QRCodeDefaults.DEFAULT_BACKGROUND,\n color: QRCodeDefaults.DEFAULT_DARK_MODULE_COLOR,\n size: \"\",\n padding: 0,\n border: {\n color: \"\",\n width: 0\n },\n overlay: {\n type: \"image\",\n imageUrl: \"\",\n width: 0,\n height: 0\n }\n});\n\nexport default QRCode;\n","import { encodeData } from './encodings/encoding';\n\nvar ISO = 'ISO_8859_1';\n\nfunction qrcodeValidator(encoding) {\n if ( encoding === void 0 ) encoding = ISO;\n\n return function(value) {\n try {\n encodeData(value, 'L', encoding);\n } catch (error) {\n return {\n valid: false,\n error: error\n };\n }\n\n return {\n valid: true\n };\n };\n}\n\nexport default qrcodeValidator;\n","// Coordinate reference system\n// World Geodetic System of 1984\nvar WGS84 = {\n a: 6378137, // Semi-major radius\n b: 6356752.314245179, // Semi-minor radius\n f: 0.0033528106647474805, // Flattening\n e: 0.08181919084262149 // Eccentricity\n};\n\n// Geographic coordinate systems use a spheroid to calculate positions on the earth.\n// A datum defines the position of the spheroid relative to the center of the earth\n// it provides a frame of reference for measuring locations on the surface of the earth\n// and defines the origin and orientation of latitude and longitude lines.\nexport var datums = {\n WGS84: WGS84\n};\n","import {\n Class,\n deepExtend,\n deg,\n rad,\n round,\n defined\n} from '../common';\n\nimport {\n datums\n} from './datums';\n\nfunction toSquare(value) {\n return value * value;\n}\n\n\nvar math = Math,\n abs = math.abs,\n atan = math.atan,\n atan2 = math.atan2,\n cos = math.cos,\n sin = math.sin,\n tan = math.tan;\n\nexport var Location = (function (Class) {\n function Location(lat, lng) {\n Class.call(this);\n\n this.initProperties();\n\n if (arguments.length === 1) {\n this.lat = lat[0];\n this.lng = lat[1];\n } else {\n this.lat = lat;\n this.lng = lng;\n }\n }\n\n if ( Class ) Location.__proto__ = Class;\n Location.prototype = Object.create( Class && Class.prototype );\n Location.prototype.constructor = Location;\n\n Location.prototype.initProperties = function initProperties () {\n deepExtend(this, {\n DISTANCE_ITERATIONS: 100,\n DISTANCE_CONVERGENCE: 1e-12,\n DISTANCE_PRECISION: 2,\n FORMAT: '{0:N6}{1:N6}'\n });\n };\n\n Location.prototype.toArray = function toArray () {\n return [\n this.lat,\n this.lng\n ];\n };\n\n Location.prototype.equals = function equals (loc) {\n return loc && loc.lat === this.lat && loc.lng === this.lng;\n };\n\n Location.prototype.clone = function clone () {\n return new Location(this.lat, this.lng);\n };\n\n Location.prototype.round = function round$1 (precision) {\n this.lng = round(this.lng, precision);\n this.lat = round(this.lat, precision);\n return this;\n };\n\n Location.prototype.wrap = function wrap () {\n this.lng = this.lng % 180;\n this.lat = this.lat % 90;\n return this;\n };\n\n Location.prototype.distanceTo = function distanceTo (dest, datum) {\n return this.greatCircleTo(dest, datum).distance;\n };\n\n Location.prototype.destination = function destination (distance, initialBearing, initialDatum) {\n var bearing = rad(initialBearing);\n var datum = initialDatum || datums.WGS84;\n var fromLat = rad(this.lat);\n var fromLng = rad(this.lng);\n var dToR = distance / datum.a;\n var lat = math.asin(sin(fromLat) * cos(dToR) + cos(fromLat) * sin(dToR) * cos(bearing));\n var lng = fromLng + atan2(sin(bearing) * sin(dToR) * cos(fromLat), cos(dToR) - sin(fromLat) * sin(lat));\n\n return new Location(deg(lat), deg(lng));\n };\n\n Location.prototype.greatCircleTo = function greatCircleTo (initialDest, initialDatum) {\n var this$1 = this;\n\n var dest = Location.create(dest);\n var datum = initialDatum || datums.WGS84;\n\n if (!dest || this.clone().round(8).equals(dest.clone().round(8))) {\n return {\n distance: 0,\n azimuthFrom: 0,\n azimuthTo: 0\n };\n }\n\n // See http://en.wikipedia.org/wiki/Vincenty's_formulae#Notation\n // o == sigma\n // A == alpha\n\n var a = datum.a;\n var b = datum.b;\n var f = datum.f;\n var L = rad(dest.lng - this.lng);\n var U1 = atan((1 - f) * tan(rad(this.lat)));\n var sinU1 = sin(U1);\n var cosU1 = cos(U1);\n var U2 = atan((1 - f) * tan(rad(dest.lat)));\n var sinU2 = sin(U2);\n var cosU2 = cos(U2);\n var lambda = L;\n var prevLambda;\n var i = this.DISTANCE_ITERATIONS;\n var converged = false;\n var sinLambda;\n var cosLambda;\n var sino;\n var cosA2;\n var coso;\n var cos2om;\n var sigma;\n\n while (!converged && i-- > 0) {\n sinLambda = sin(lambda);\n cosLambda = cos(lambda);\n sino = math.sqrt(toSquare(cosU2 * sinLambda) + toSquare(cosU1 * sinU2 - sinU1 * cosU2 * cosLambda));\n coso = sinU1 * sinU2 + cosU1 * cosU2 * cosLambda;\n sigma = atan2(sino, coso);\n\n var sinA = cosU1 * cosU2 * sinLambda / sino;\n cosA2 = 1 - toSquare(sinA);\n cos2om = 0;\n\n if (cosA2 !== 0) {\n cos2om = coso - 2 * sinU1 * sinU2 / cosA2;\n }\n\n prevLambda = lambda;\n var C = f / 16 * cosA2 * (4 + f * (4 - 3 * cosA2));\n lambda = L + (1 - C) * f * sinA * (sigma + C * sino * (cos2om + C * coso * (-1 + 2 * toSquare(cos2om))));\n converged = abs(lambda - prevLambda) <= this$1.DISTANCE_CONVERGENCE;\n }\n\n var u2 = cosA2 * (toSquare(a) - toSquare(b)) / toSquare(b);\n var A = 1 + u2 / 16384 * (4096 + u2 * (-768 + u2 * (320 - 175 * u2)));\n var B = u2 / 1024 * (256 + u2 * (-128 + u2 * (74 - 47 * u2)));\n var deltao = B * sino * (cos2om + B / 4 * (coso * (-1 + 2 * toSquare(cos2om)) - B / 6 * cos2om * (-3 + 4 * toSquare(sino)) * (-3 + 4 * toSquare(cos2om))));\n\n var azimuthFrom = atan2(cosU2 * sinLambda, cosU1 * sinU2 - sinU1 * cosU2 * cosLambda);\n var azimuthTo = atan2(cosU1 * sinLambda, -sinU1 * cosU2 + cosU1 * sinU2 * cosLambda);\n\n return {\n distance: round(b * A * (sigma - deltao), this.DISTANCE_PRECISION),\n azimuthFrom: deg(azimuthFrom),\n azimuthTo: deg(azimuthTo)\n };\n };\n\n // IE < 9 doesn't allow to override toString on definition\n Location.prototype.toString = function toString () {\n // return kendo.format(this.FORMAT, this.lat, this.lng);\n return String(this.lat) + \",\" + String(this.lng);\n };\n\n Location.fromLngLat = function fromLngLat (lngAndLat) {\n return new Location(lngAndLat[1], lngAndLat[0]);\n };\n\n Location.fromLatLng = function fromLatLng (lngAndLat) {\n return new Location(lngAndLat[0], lngAndLat[1]);\n };\n\n Location.create = function create (a, b) {\n if (defined(a)) {\n if (a instanceof Location) {\n return a.clone();\n } else if (arguments.length === 1 && a.length === 2) {\n return Location.fromLatLng(a);\n }\n\n return new Location(a, b);\n }\n };\n\n return Location;\n}(Class));\n","import {\n geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n setDefaultOptions,\n limitValue,\n rad,\n deg,\n deepExtend\n} from '../common';\n\nimport {\n Location\n} from './location';\n\nimport {\n datums\n} from './datums';\n\n\nvar math = Math,\n atan = math.atan,\n exp = math.exp,\n pow = math.pow,\n sin = math.sin,\n log = math.log,\n tan = math.tan,\n Point = g.Point;\n\nvar PI = math.PI,\n PI_DIV_2 = PI / 2,\n PI_DIV_4 = PI / 4,\n DEG_TO_RAD = PI / 180;\n\nvar WGS84 = datums.WGS84;\n\n// WGS 84 / World Mercator\nexport var Mercator = (function (Class) {\n function Mercator(options) {\n Class.call(this);\n this.initProperties();\n this._initOptions(options);\n }\n\n if ( Class ) Mercator.__proto__ = Class;\n Mercator.prototype = Object.create( Class && Class.prototype );\n Mercator.prototype.constructor = Mercator;\n\n Mercator.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Mercator.prototype.initProperties = function initProperties () {\n // super.initProperties();\n\n deepExtend(this, {\n MAX_LNG: 180,\n MAX_LAT: 85.0840590501,\n INVERSE_ITERATIONS: 15,\n INVERSE_CONVERGENCE: 1e-12\n });\n };\n\n Mercator.prototype.forward = function forward (loc, clamp) {\n var proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lat = limitValue(loc.lat, -proj.MAX_LAT, proj.MAX_LAT),\n lng = clamp ? limitValue(loc.lng, -proj.MAX_LNG, proj.MAX_LNG) : loc.lng,\n x = rad(lng - lng0) * r,\n y = proj._projectLat(lat);\n return new Point(x, y);\n };\n Mercator.prototype._projectLat = function _projectLat (lat) {\n var datum = this.options.datum,\n ecc = datum.e,\n r = datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2),\n con = ecc * sin(y),\n p = pow((1 - con) / (1 + con), ecc / 2);\n\n // See: http://en.wikipedia.org/wiki/Mercator_projection#Generalization_to_the_ellipsoid\n return r * log(ts * p);\n };\n Mercator.prototype.inverse = function inverse (point, clamp) {\n var proj = this,\n options = proj.options,\n datum = options.datum,\n r = datum.a,\n lng0 = options.centralMeridian,\n lng = point.x / (DEG_TO_RAD * r) + lng0,\n lat = limitValue(proj._inverseY(point.y), -proj.MAX_LAT, proj.MAX_LAT);\n if (clamp) {\n lng = limitValue(lng, -proj.MAX_LNG, proj.MAX_LNG);\n }\n return new Location(lat, lng);\n };\n Mercator.prototype._inverseY = function _inverseY (y) {\n var proj = this,\n datum = proj.options.datum,\n r = datum.a,\n ecc = datum.e,\n ecch = ecc / 2,\n ts = exp(-y / r),\n phi = PI_DIV_2 - 2 * atan(ts),\n i;\n for (i = 0; i <= proj.INVERSE_ITERATIONS; i++) {\n var con = ecc * sin(phi),\n p = pow((1 - con) / (1 + con), ecch),\n dphi = PI_DIV_2 - 2 * atan(ts * p) - phi;\n phi += dphi;\n if (math.abs(dphi) <= proj.INVERSE_CONVERGENCE) {\n break;\n }\n }\n return deg(phi);\n };\n\n return Mercator;\n}(Class));\n\nsetDefaultOptions(Mercator, {\n centralMeridian: 0,\n datum: WGS84\n});\n\n\n// WGS 84 / Pseudo-Mercator\n// Used by Google Maps, Bing, OSM, etc.\n// Spherical projection of ellipsoidal coordinates.\nexport var SphericalMercator = (function (Mercator) {\n function SphericalMercator () {\n Mercator.apply(this, arguments);\n }\n\n if ( Mercator ) SphericalMercator.__proto__ = Mercator;\n SphericalMercator.prototype = Object.create( Mercator && Mercator.prototype );\n SphericalMercator.prototype.constructor = SphericalMercator;\n\n SphericalMercator.prototype.initProperties = function initProperties () {\n Mercator.prototype.initProperties.call(this);\n\n deepExtend(this, {\n MAX_LAT: 85.0511287798\n });\n };\n\n SphericalMercator.prototype._projectLat = function _projectLat (lat) {\n var r = this.options.datum.a,\n y = rad(lat),\n ts = tan(PI_DIV_4 + y / 2);\n return r * log(ts);\n };\n\n SphericalMercator.prototype._inverseY = function _inverseY (y) {\n var r = this.options.datum.a,\n ts = exp(-y / r);\n return deg(PI_DIV_2 - 2 * atan(ts));\n };\n\n return SphericalMercator;\n}(Mercator));\n\nexport var Equirectangular = (function (Class) {\n function Equirectangular () {\n Class.apply(this, arguments);\n }\n\n if ( Class ) Equirectangular.__proto__ = Class;\n Equirectangular.prototype = Object.create( Class && Class.prototype );\n Equirectangular.prototype.constructor = Equirectangular;\n\n Equirectangular.prototype.forward = function forward (loc) {\n return new Point(loc.lng, loc.lat);\n };\n Equirectangular.prototype.inverse = function inverse (point) {\n return new Location(point.y, point.x);\n };\n\n return Equirectangular;\n}(Class));\n\n// This is the projected coordinate system used for rendering maps in Google Maps, OpenStreetMap, etc\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Certain Web mapping and visualisation applications. It is not a recognised geodetic system: for that see ellipsoidal Mercator CRS code 3395 (WGS 84 / World Mercator).\n// Remarks: Uses spherical development of ellipsoidal coordinates. Relative to WGS 84 / World Mercator (CRS code 3395) errors of 0.7 percent in scale and differences in northing of up to 43km in the map (equivalent to 21km on the ground) may arise.\n// Area of use: World between 85.06°S and 85.06°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (X,Y). Orientations: east, north. UoM: m.\n// https://epsg.io/3857\nexport var EPSG3857 = (function (Class) {\n function EPSG3857() {\n Class.call(this);\n var crs = this,\n proj = crs._proj = new SphericalMercator();\n var c = this.c = 2 * PI * proj.options.datum.a;\n\n // transfrom matrix\n // Scale circumference to 1, mirror Y and shift origin to top left\n this._tm = g.transform().translate(0.5, 0.5).scale(1 / c, -1 / c);\n\n // Inverse transform matrix\n this._itm = g.transform().scale(c, -c).translate(-0.5, -0.5);\n }\n\n if ( Class ) EPSG3857.__proto__ = Class;\n EPSG3857.prototype = Object.create( Class && Class.prototype );\n EPSG3857.prototype.constructor = EPSG3857;\n\n // Location <-> Point (screen coordinates for a given scale)\n EPSG3857.prototype.toPoint = function toPoint (loc, scale, clamp) {\n var point = this._proj.forward(loc, clamp);\n return point.transform(this._tm).scale(scale || 1);\n };\n EPSG3857.prototype.toLocation = function toLocation (point, scale, clamp) {\n var newPoint = point.clone().scale(1 / (scale || 1)).transform(this._itm);\n return this._proj.inverse(newPoint, clamp);\n };\n\n return EPSG3857;\n}(Class));\n\n// Unit: metre\n// Geodetic CRS: WGS 84\n// Scope: Very small scale mapping.\n// Remarks: Euro-centric view of world excluding polar areas.\n// Area of use: World between 80°S and 84°N.\n// Coordinate system: Cartesian 2D CS. Axes: easting, northing (E,N). Orientations: east, north. UoM: m.\n// https://epsg.io/3395\nexport var EPSG3395 = (function (Class) {\n function EPSG3395() {\n Class.call(this);\n this._proj = new Mercator();\n }\n\n if ( Class ) EPSG3395.__proto__ = Class;\n EPSG3395.prototype = Object.create( Class && Class.prototype );\n EPSG3395.prototype.constructor = EPSG3395;\n EPSG3395.prototype.toPoint = function toPoint (loc) {\n return this._proj.forward(loc);\n };\n EPSG3395.prototype.toLocation = function toLocation (point) {\n return this._proj.inverse(point);\n };\n\n return EPSG3395;\n}(Class));\n\n// Unit: degree\n// Geodetic CRS: WGS 84\n// Scope: Horizontal component of 3D system. Used by the GPS satellite navigation system and for NATO military geodetic surveying.\n// Area of use: World.\n// Coordinate system: Ellipsoidal 2D CS. Axes: latitude, longitude. Orientations: north, east. UoM: degree\n// https://epsg.io/4326\nexport var EPSG4326 = (function (Class) {\n function EPSG4326() {\n Class.call(this);\n this._proj = new Equirectangular();\n }\n\n if ( Class ) EPSG4326.__proto__ = Class;\n EPSG4326.prototype = Object.create( Class && Class.prototype );\n EPSG4326.prototype.constructor = EPSG4326;\n EPSG4326.prototype.toPoint = function toPoint (loc) {\n return this._proj.forward(loc);\n };\n EPSG4326.prototype.toLocation = function toLocation (point) {\n return this._proj.inverse(point);\n };\n\n return EPSG4326;\n}(Class));\n","import {\n isFunction,\n isArray\n} from '../common';\n\n/* eslint-disable arrow-body-style */\n\nvar defineProperty = Object.defineProperty;\n\nexport var extend = Object.assign;\n\nexport var convertToHtml = function (html) {\n var div = document.createElement(\"div\");\n div.innerHTML = html;\n return div.firstChild;\n};\n\nexport var appendHtml = function (html, element) {\n var div = document.createElement('div');\n div.innerHTML = html;\n\n // use childNodes instead of children\n // to cover text nodes as well\n while (div.childNodes.length > 0) {\n element.appendChild(div.childNodes[0]);\n }\n};\n\nexport var removeChildren = function (element) {\n while (element.firstChild) {\n element.removeChild(element.firstChild);\n }\n};\n\nexport var prepend = function (element, originElement) {\n originElement.insertBefore(element, originElement.firstChild);\n};\n\nexport var wrapInner = function (parent, wrapper) {\n parent.appendChild(wrapper);\n\n while (parent.firstChild !== wrapper) {\n wrapper.appendChild(parent.firstChild);\n }\n};\n\nexport var toHyphens = function (str) {\n var result = str.replace(/([a-z][A-Z])/g, function(g) {\n return g.charAt(0) + '-' + g.charAt(1).toLowerCase();\n });\n\n return result;\n};\n\nexport var toPixels = function (value) {\n var result;\n\n if (value && String(value).endsWith(\"px\")) {\n result = value;\n } else {\n result = String(value) + \"px\";\n }\n\n return result;\n};\n\nvar 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 = testRegex(agent, formFactorRxs, false);\n os.browser = testRegex(ua, browserRxs, \"default\");\n os.name = testRegex(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\n\n break;\n }\n }\n }\n\n return os;\n};\n\nfunction testRegex(agent, regexes, dflt) {\n for (var regex in regexes) {\n if (regexes.hasOwnProperty(regex) && regexes[regex].test(agent)) {\n return regex;\n }\n }\n return dflt !== undefined ? dflt : agent;\n}\n\nexport var hasNativeScrolling = function (userAgent) {\n var os = detectOS(userAgent);\n return os.ios || os.android;\n};\n\nvar detectBrowser = function (userAgent) {\n var browser = false,\n match = [],\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 = userAgent.match(browserRxs[agent]);\n\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 break;\n }\n }\n }\n\n return browser;\n};\n\nexport var getEventMap = function () {\n var eventMap = {\n down: \"touchstart mousedown\",\n move: \"mousemove touchmove\",\n up: \"mouseup touchend touchcancel\",\n cancel: \"mouseleave touchcancel\"\n };\n\n var support = getSupportedFeatures();\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 return eventMap;\n};\n\nexport var getSupportedFeatures = function () {\n var os = detectOS(navigator.userAgent);\n var browser = detectBrowser(navigator.userAgent);\n\n var chrome = browser.chrome,\n mobileChrome = browser.crios,\n mozilla = browser.mozilla,\n safari = browser.safari;\n\n var support = {};\n\n support.mobileOS = os;\n support.touch = \"ontouchstart\" in window;\n support.pointers = !chrome && !mobileChrome && !mozilla && !safari && window.PointerEvent;\n support.msPointers = !chrome && window.MSPointerEvent;\n support.mouseAndTouchPresent = support.touch && !(support.mobileOS.ios || support.mobileOS.android);\n support.eventCapture = document.documentElement.addEventListener;\n\n var table = document.createElement(\"table\");\n\n var transitions = support.transitions = false,\n transforms = support.transforms = false;\n\n var STRING = \"string\";\n\n [\"Moz\", \"webkit\", \"O\", \"ms\"].forEach(function(prefix) {\n var 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.delayedClick = function() {\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 (support.mobileOS.ios) {\n return true;\n }\n\n if (support.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 var meta = document.querySelector(\"meta[name=viewport]\");\n var contentAttr = meta ? meta.getAttribute(\"content\") : \"\";\n return !contentAttr.match(/user-scalable=no/i);\n }\n }\n\n return false;\n };\n\n return support;\n};\n\nexport var ownsElement = function (parent, element) {\n if (!element) {\n return false;\n }\n\n var node = element.parentNode;\n\n while (node !== null) {\n if (node === parent) {\n return true;\n }\n\n node = node.parentNode;\n }\n\n return false;\n};\n\nexport var contains = function (parent, element) {\n return parent === element || ownsElement(parent, element);\n};\n\nexport var proxy = function (method, context) {\n return method.bind(context);\n};\n\nfunction isString(value) {\n return typeof(value) === \"string\";\n}\n\nexport var on = function (element, events, filter, handler, useCapture) {\n addEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport var addEventListeners = function (element, events, filter, handler, useCapture) {\n var eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n addEventListener(element, eventName, filter, handler, useCapture);\n });\n};\n\nexport var addEventListener = function (element, event, filter, handler, useCapture) {\n var eventHandler = handler;\n var eventFilter;\n\n if (filter && isFunction(filter) && !handler) {\n eventHandler = filter;\n } else if (filter && isString(filter) && isFunction(eventHandler)) {\n eventFilter = filter;\n }\n\n element.addEventListener(event, function(e) {\n var closestMatchingTarget = e.target ? e.target.closest(eventFilter) : null;\n\n if (!eventFilter ||\n (eventFilter && e.target && closestMatchingTarget)) {\n var currentTarget = eventFilter ? closestMatchingTarget : e.currentTarget;\n\n // reassign the property as it is a getters only\n defineProperty(e, \"currentTarget\", { value: currentTarget });\n // keep a reference to the top-level target\n defineProperty(e, \"delegateTarget\", { value: element });\n\n eventHandler(e);\n }\n }, Boolean(useCapture));\n};\n\nexport var off = function (element, events, filter, handler, useCapture) {\n removeEventListeners(element, events, filter, handler, useCapture);\n};\n\nexport var removeEventListeners = function (element, events, handler, useCapture) {\n var eventNames = isArray(events) ? events : (events || \"\").split(\" \");\n\n eventNames.forEach(function(eventName) {\n removeEventListener(element, eventName, handler, useCapture);\n });\n};\n\nexport var removeEventListener = function (element, event, handler, useCapture) {\n element.removeEventListener(event, handler, Boolean(useCapture));\n};\n\nexport var applyEventMap = function (events) {\n var eventMap = getEventMap(navigator.userAgent);\n function queryEventMap(e) {\n return eventMap[e] || e;\n }\n\n var eventRegEx = /([^ ]+)/g;\n var appliedEvents = events.replace(eventRegEx, queryEventMap);\n\n return appliedEvents;\n};\n\nexport var setDefaultEvents = function (type, events) {\n var proto = type.prototype;\n\n if (proto.events) {\n events.forEach(function (event) {\n if (proto.events.indexOf(event) < 0) {\n proto.events.push(event);\n }\n });\n } else {\n proto.events = events;\n }\n};\n\nexport var wheelDeltaY = function (jQueryEvent) {\n var e = jQueryEvent.originalEvent || jQueryEvent;\n var deltaY = e.wheelDeltaY;\n var delta;\n\n if (e.wheelDelta) { // Webkit and IE\n if (deltaY === undefined || 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\nexport var guid = function () {\n var id = \"\";\n var i;\n var random;\n\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\n\n if (i === 8 || i === 12 || i === 16 || i === 20) {\n id += \"-\";\n }\n\n id += (i === 12 ? 4 : (i === 16 ? (random & 3 | 8) : random)).toString(16); // eslint-disable-line no-nested-ternary\n }\n\n return id;\n};\n\nexport var now = function () {\n return Number(new Date());\n};\n\nexport var noop = function () {};\n\n/* eslint-enable arrow-body-style */\n","import {\n Class\n} from '../../common';\n\nvar STRING = \"string\";\nvar FUNCTION = \"function\";\n\nvar preventDefault = function() {\n this._defaultPrevented = true;\n};\n\nvar isDefaultPrevented = function() {\n return this._defaultPrevented === true;\n};\n\nexport var Observable = (function (Class) {\n function Observable() {\n Class.call(this);\n this._events = {};\n }\n\n if ( Class ) Observable.__proto__ = Class;\n Observable.prototype = Object.create( Class && Class.prototype );\n Observable.prototype.constructor = Observable;\n\n Observable.prototype.destroy = function destroy () {\n this.unbind();\n };\n\n Observable.prototype.bind = function bind (event, handlers, one) {\n var that = this,\n idx,\n eventNames = typeof event === STRING ? [event] : event || [],\n length,\n original,\n handler,\n handlersIsFunction = typeof handlers === FUNCTION,\n events;\n\n if (handlers === undefined) {\n for (idx in event) {\n that.bind(idx, event[idx]);\n }\n\n return that;\n }\n\n /* eslint-disable no-loop-func */\n var loop = function ( ) {\n var 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\n handler.original = original;\n }\n\n events = that._events[eventName] = that._events[eventName] || [];\n events.push(handler);\n }\n };\n\n for (idx = 0, length = eventNames.length; idx < length; idx++) loop( );\n /* eslint-enable no-loop-func */\n\n return that;\n };\n\n Observable.prototype.one = function one (eventNames, handlers) {\n return this.bind(eventNames, handlers, true);\n };\n\n Observable.prototype.first = function first (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 var eventName$1 = eventNames[idx];\n\n handler = handlersIsFunction ? handlers : handlers[eventName$1];\n\n if (handler) {\n events = that._events[eventName$1] = that._events[eventName$1] || [];\n events.unshift(handler);\n }\n }\n\n return that;\n };\n\n Observable.prototype.trigger = function trigger (eventName, eventArgs) {\n var that = this,\n events = that._events[eventName],\n idx,\n length;\n\n if (events) {\n var e = eventArgs || {};\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 Observable.prototype.unbind = function unbind (eventName, handler) {\n var that = this,\n events = that._events[eventName],\n idx;\n\n if (eventName === undefined) {\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 Observable.prototype._setEvents = function _setEvents (options) {\n var this$1 = this;\n\n var length = (this.events || []).length;\n\n for (var idx = 0; idx < length; idx ++) {\n var e = this$1.events[idx];\n\n if (this$1.options[e] && options[e]) {\n this$1.unbind(e, this$1.options[e]);\n\n if (this$1._events && this$1._events[e]) {\n delete this$1._events[e];\n }\n }\n }\n\n this.bind(this.events, options);\n };\n\n return Observable;\n}(Class));\n","import {\n addClass,\n defined,\n valueOrDefault,\n deepExtend,\n setDefaultOptions\n} from '../common';\n\nimport {\n appendHtml,\n removeChildren\n} from './utils';\n\nimport { Observable } from './scroller/observable';\n\nexport var Attribution = (function (Observable) {\n function Attribution(element, options) {\n Observable.call(this);\n this.element = element;\n\n this._initOptions(options);\n this.items = [];\n\n addClass(this.element, 'k-widget k-attribution');\n }\n\n if ( Observable ) Attribution.__proto__ = Observable;\n Attribution.prototype = Object.create( Observable && Observable.prototype );\n Attribution.prototype.constructor = Attribution;\n\n Attribution.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Attribution.prototype.filter = function filter (extent, zoom) {\n this._extent = extent;\n this._zoom = zoom;\n this._render();\n };\n\n Attribution.prototype.add = function add (item) {\n var newItem = item;\n\n if (defined(item)) {\n if (typeof item === 'string') {\n newItem = {\n text: item\n };\n }\n\n this.items.push(newItem);\n this._render();\n }\n };\n\n Attribution.prototype.remove = function remove (text) {\n var this$1 = this;\n\n var result = [];\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this$1.items[i];\n\n if (item.text !== text) {\n result.push(item);\n }\n }\n\n this.items = result;\n this._render();\n };\n\n Attribution.prototype.clear = function clear () {\n this.items = [];\n removeChildren(this.element);\n };\n\n Attribution.prototype._render = function _render () {\n var this$1 = this;\n\n var result = [];\n\n for (var i = 0; i < this.items.length; i++) {\n var item = this$1.items[i];\n var text = this$1._itemText(item);\n\n if (text !== '') {\n result.push(text);\n }\n }\n\n if (result.length > 0) {\n removeChildren(this.element);\n\n var html = result.join(this.options.separator);\n appendHtml(html, this.element);\n\n this.showElement();\n } else {\n this.hideElement();\n }\n };\n\n Attribution.prototype.hideElement = function hideElement () {\n this.element.style.display = \"none\";\n };\n\n Attribution.prototype.showElement = function showElement () {\n this.element.style.display = \"\";\n };\n\n Attribution.prototype._itemText = function _itemText (item) {\n var text = '';\n var inZoomLevel = this._inZoomLevel(item.minZoom, item.maxZoom);\n var inArea = this._inArea(item.extent);\n\n if (inZoomLevel && inArea) {\n text += item.text;\n }\n\n return text;\n };\n\n Attribution.prototype._inZoomLevel = function _inZoomLevel (min, max) {\n var result = true;\n var newMin = valueOrDefault(min, -Number.MAX_VALUE);\n var newMax = valueOrDefault(max, Number.MAX_VALUE);\n\n result = this._zoom > newMin && this._zoom < newMax;\n return result;\n };\n\n Attribution.prototype._inArea = function _inArea (area) {\n var result = true;\n\n if (area) {\n result = area.contains(this._extent);\n }\n\n return result;\n };\n\n return Attribution;\n}(Observable));\n\nsetDefaultOptions(Attribution, {\n name: 'Attribution',\n separator: ' | '\n});\n","import {\n deepExtend,\n addClass,\n keys,\n setDefaultOptions\n} from '../common';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport {\n proxy,\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nvar PAN = \"pan\";\n\nvar directionsMap = {\n up: {\n className: \"k-navigator-n\",\n iconClass: \"k-i-caret-alt-up\"\n },\n down: {\n className: \"k-navigator-s\",\n iconClass: \"k-i-caret-alt-down\"\n },\n right: {\n className: \"k-navigator-e\",\n iconClass: \"k-i-caret-alt-right\"\n },\n left: {\n className: \"k-navigator-w\",\n iconClass: \"k-i-caret-alt-left\"\n }\n};\n\nfunction createButton(direction) {\n var html =\n '';\n\n return convertToHtml(html);\n}\n\nexport var Navigator = (function (Observable) {\n function Navigator(element, options) {\n Observable.call(this);\n\n this.element = element;\n this._initOptions(options);\n\n var navigateUpButton = createButton(\"up\");\n var navigateRightlButton = createButton(\"right\");\n var navigateDownButton = createButton(\"down\");\n var navigateLeftButton = createButton(\"left\");\n\n this.element.appendChild(navigateUpButton);\n this.element.appendChild(navigateRightlButton);\n this.element.appendChild(navigateDownButton);\n this.element.appendChild(navigateLeftButton);\n\n addClass(this.element, 'k-widget k-navigator');\n\n on(this.element, \"click\", \".k-button\", proxy(this._click, this));\n\n var parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n this._tabindex(this._keyroot);\n\n this._keydownHandler = proxy(this._keydown, this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n if ( Observable ) Navigator.__proto__ = Observable;\n Navigator.prototype = Object.create( Observable && Observable.prototype );\n Navigator.prototype.constructor = Navigator;\n\n Navigator.prototype.destroy = function destroy () {\n this.dispose();\n };\n\n // originates from the kendo.jquery version\n Navigator.prototype.dispose = function dispose () {\n off(this._keyroot, \"keydown\", this._keydownHandler);\n };\n\n Navigator.prototype._tabindex = function _tabindex (target) {\n var targetElement = target || this.wrapper || this.element;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n };\n\n Navigator.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Navigator.prototype._pan = function _pan (x, y) {\n var panStep = this.options.panStep;\n\n this.trigger(PAN, {\n x: x * panStep,\n y: y * panStep\n });\n };\n\n Navigator.prototype._click = function _click (e) {\n var x = 0;\n var y = 0;\n var button = e.currentTarget;\n\n if (button.matches('.k-navigator-n')) {\n y = 1;\n } else if (button.matches('.k-navigator-s')) {\n y = -1;\n } else if (button.matches('.k-navigator-e')) {\n x = 1;\n } else if (button.matches('.k-navigator-w')) {\n x = -1;\n }\n\n this._pan(x, y);\n\n e.preventDefault();\n };\n\n /* eslint-disable indent */\n Navigator.prototype._keydown = function _keydown (e) {\n switch (e.which) {\n case keys.UP:\n this._pan(0, 1);\n e.preventDefault();\n break;\n case keys.DOWN:\n this._pan(0, -1);\n e.preventDefault();\n break;\n case keys.RIGHT:\n this._pan(1, 0);\n e.preventDefault();\n break;\n case keys.LEFT:\n this._pan(-1, 0);\n e.preventDefault();\n break;\n default:\n break;\n }\n };\n\n return Navigator;\n}(Observable));\n\nsetDefaultOptions(Navigator, {\n name: 'Navigator',\n panStep: 1\n});\n\n\nsetDefaultEvents(Navigator, [\n PAN\n]);\n","import {\n deepExtend,\n addClass,\n keys,\n hasClasses,\n setDefaultOptions\n} from '../common';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport {\n on,\n off,\n setDefaultEvents,\n convertToHtml\n} from './utils';\n\nfunction createButton(direction, iconClass) {\n var html =\n '';\n\n return convertToHtml(html);\n}\n\nvar PLUS = 187;\nvar MINUS = 189;\nvar FF_PLUS = 61;\nvar FF_MINUS = 173;\nvar CHANGE = \"change\";\n\nexport var ZoomControl = (function (Observable) {\n function ZoomControl(element, options) {\n Observable.call(this);\n this.element = element;\n this._initOptions(options);\n\n var zoomInButton = createButton('in', 'k-i-plus');\n var zoomOutButton = createButton('out', 'k-i-minus');\n\n this.element.appendChild(zoomInButton);\n this.element.appendChild(zoomOutButton);\n\n addClass(this.element, 'k-widget k-zoom-control k-button-group k-group-horizontal');\n\n this._clickHandler = this._click.bind(this);\n on(this.element, \"click\", \".k-button\", this._clickHandler);\n\n var parentElement = this.element.parentNode.closest(\"[data-role]\");\n\n this._keyroot = parentElement ? parentElement : this.element;\n\n this._tabindex(this._keyroot);\n\n this._keydownHandler = this._keydown.bind(this);\n on(this._keyroot, \"keydown\", this._keydownHandler);\n }\n\n if ( Observable ) ZoomControl.__proto__ = Observable;\n ZoomControl.prototype = Object.create( Observable && Observable.prototype );\n ZoomControl.prototype.constructor = ZoomControl;\n\n ZoomControl.prototype.destroy = function destroy () {\n if (this.element) {\n off(this.element, \"click\", this._clickHandler);\n }\n\n if (this._keyroot) {\n off(this._keyroot, 'keydown', this._keydownHandler);\n }\n };\n\n ZoomControl.prototype._tabindex = function _tabindex (target) {\n var targetElement = target || this.wrapper || this.element;\n\n var element = this.element,\n TABINDEX = \"tabindex\",\n tabindex = targetElement.getAttribute(TABINDEX) || element.getAttribute(TABINDEX);\n\n element.removeAttribute(TABINDEX);\n\n targetElement.setAttribute(TABINDEX, !isNaN(tabindex) ? tabindex : 0);\n };\n\n ZoomControl.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n ZoomControl.prototype._change = function _change (direction) {\n var zoomStep = this.options.zoomStep;\n this.trigger(CHANGE, { delta: direction * zoomStep });\n };\n\n ZoomControl.prototype._click = function _click (e) {\n var button = e.currentTarget;\n var direction = 1;\n\n if (hasClasses(button, 'k-zoom-out')) {\n direction = -1;\n }\n\n this._change(direction);\n e.preventDefault();\n };\n\n /* eslint-disable indent */\n ZoomControl.prototype._keydown = function _keydown (e) {\n switch (e.which) {\n case keys.NUMPAD_PLUS:\n case PLUS:\n case FF_PLUS:\n this._change(1);\n break;\n case keys.NUMPAD_MINUS:\n case MINUS:\n case FF_MINUS:\n this._change(-1);\n break;\n default:\n break;\n }\n };\n\n return ZoomControl;\n}(Observable));\n\nsetDefaultOptions(ZoomControl, {\n name: 'ZoomControl',\n zoomStep: 1\n});\n\nsetDefaultEvents(ZoomControl, [\n CHANGE\n]);\n","import {\n Class,\n valueOrDefault\n} from '../common';\n\nimport { Location } from './location';\n\nvar math = Math,\n max = math.max,\n min = math.min;\n\nexport var Extent = (function (Class) {\n function Extent(initialNw, initialSe) {\n Class.call(this);\n var nw = Location.create(initialNw);\n var se = Location.create(initialSe);\n\n if (nw.lng + 180 > se.lng + 180 && nw.lat + 90 < se.lat + 90) {\n this.se = nw;\n this.nw = se;\n } else {\n this.se = se;\n this.nw = nw;\n }\n }\n\n if ( Class ) Extent.__proto__ = Class;\n Extent.prototype = Object.create( Class && Class.prototype );\n Extent.prototype.constructor = Extent;\n\n var staticAccessors = { World: { configurable: true } };\n\n Extent.prototype.contains = function contains (loc) {\n var nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n return loc &&\n lng + 180 >= nw.lng + 180 && lng + 180 <= se.lng + 180 &&\n lat + 90 >= se.lat + 90 && lat + 90 <= nw.lat + 90;\n };\n\n Extent.prototype.center = function center () {\n var nw = this.nw;\n var se = this.se;\n var lng = nw.lng + (se.lng - nw.lng) / 2;\n var lat = nw.lat + (se.lat - nw.lat) / 2;\n\n return new Location(lat, lng);\n };\n\n Extent.prototype.containsAny = function containsAny (locs) {\n var this$1 = this;\n\n var result = false;\n\n for (var i = 0; i < locs.length; i++) {\n result = result || this$1.contains(locs[i]);\n }\n\n return result;\n };\n\n Extent.prototype.include = function include (loc) {\n var nw = this.nw, se = this.se, lng = valueOrDefault(loc.lng, loc[1]), lat = valueOrDefault(loc.lat, loc[0]);\n\n nw.lng = min(nw.lng, lng);\n nw.lat = max(nw.lat, lat);\n se.lng = max(se.lng, lng);\n se.lat = min(se.lat, lat);\n };\n\n Extent.prototype.includeAll = function includeAll (locs) {\n var this$1 = this;\n\n for (var i = 0; i < locs.length; i++) {\n this$1.include(locs[i]);\n }\n };\n\n Extent.prototype.edges = function edges () {\n var nw = this.nw, se = this.se;\n\n return {\n nw: this.nw,\n ne: new Location(nw.lat, se.lng),\n se: this.se,\n sw: new Location(se.lat, nw.lng)\n };\n };\n\n Extent.prototype.toArray = function toArray () {\n var nw = this.nw, se = this.se;\n\n return [\n nw,\n new Location(nw.lat, se.lng),\n se,\n new Location(se.lat, nw.lng)\n ];\n };\n\n Extent.prototype.overlaps = function overlaps (extent) {\n return this.containsAny(extent.toArray()) ||\n extent.containsAny(this.toArray());\n };\n\n Extent.create = function create (a, b) {\n if (a instanceof Extent) {\n return a;\n } else if (a && b) {\n return new Extent(a, b);\n } else if (a && a.length === 4 && !b) {\n return new Extent([\n a[0],\n a[1]\n ], [\n a[2],\n a[3]\n ]);\n }\n };\n\n staticAccessors.World.get = function () {\n return new Extent([ 90, -180 ], [ -90, 180 ]);\n };\n\n Object.defineProperties( Extent, staticAccessors );\n\n return Extent;\n}(Class));\n","export var SHOW_TOOLTIP = 'showTooltip';\nexport var HIDE_TOOLTIP = 'hideTooltip';\nexport var CENTER_CHANGE = 'centerChange';\nexport var ZOOM_CHANGE = 'zoomChange';\nexport var INIT = 'init';\n","import { Class, deepExtend, setDefaultOptions } from '../../common';\nimport { SHOW_TOOLTIP, HIDE_TOOLTIP } from '../constants';\n\nexport var Tooltip = (function (Class) {\n function Tooltip(widgetService, options) {\n Class.call(this);\n\n this.widgetService = widgetService;\n this.options = deepExtend({}, this.options, options);\n this.offset = { x: 0, y: 0 };\n }\n\n if ( Class ) Tooltip.__proto__ = Class;\n Tooltip.prototype = Object.create( Class && Class.prototype );\n Tooltip.prototype.constructor = Tooltip;\n\n var prototypeAccessors = { anchor: { configurable: true } };\n\n Tooltip.prototype.show = function show (anchor, args) {\n if (this.location === args.location) {\n return;\n }\n\n this.anchor = anchor;\n this.location = args.location;\n\n this.widgetService.notify(SHOW_TOOLTIP,\n Object.assign({ anchor: this.anchor }, args)\n );\n\n this.visible = true;\n };\n\n Tooltip.prototype.hide = function hide () {\n if (this.widgetService) {\n this.widgetService.notify(HIDE_TOOLTIP);\n }\n\n this.visible = false;\n this.location = null;\n };\n\n prototypeAccessors.anchor.get = function () {\n return this._anchor;\n };\n\n prototypeAccessors.anchor.set = function (anchor) {\n var documentPoint = this.widgetService.widget._toDocumentCoordinates({\n x: anchor.left - this.offset.x,\n y: anchor.top - this.offset.y\n });\n\n this._anchor = {\n left: documentPoint.left,\n top: documentPoint.top\n };\n };\n\n Tooltip.prototype.destroy = function destroy () {\n this.widgetService = null;\n };\n\n Object.defineProperties( Tooltip.prototype, prototypeAccessors );\n\n return Tooltip;\n}(Class));\n\nsetDefaultOptions(Tooltip, {\n border: {\n width: 1\n },\n opacity: 1\n});\n","import {\n Class,\n addClass,\n deepExtend,\n defined\n} from '../../common';\n\nimport {\n Extent\n} from './../extent';\n\nimport {\n getSupportedFeatures\n} from '../utils';\n\nexport var Layer = (function (Class) {\n function Layer(map, options) {\n Class.call(this);\n\n this.support = getSupportedFeatures();\n\n this._initOptions(options);\n this.map = map;\n\n var element = document.createElement(\"div\");\n addClass(element, \"k-layer\");\n element.style.zIndex = this.options.zIndex;\n element.style.opacity = this.options.opacity;\n\n this.element = element;\n\n map.scrollElement.appendChild(this.element);\n\n this._beforeReset = this._beforeReset.bind(this);\n this._reset = this._reset.bind(this);\n this._resize = this._resize.bind(this);\n this._panEnd = this._panEnd.bind(this);\n\n this._activate();\n this._updateAttribution();\n }\n\n if ( Class ) Layer.__proto__ = Class;\n Layer.prototype = Object.create( Class && Class.prototype );\n Layer.prototype.constructor = Layer;\n\n Layer.prototype.destroy = function destroy () {\n this._deactivate();\n };\n\n Layer.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Layer.prototype.show = function show () {\n this.reset();\n this._activate();\n this._applyExtent(true);\n };\n\n Layer.prototype.hide = function hide () {\n this._deactivate();\n this._setVisibility(false);\n };\n\n Layer.prototype.reset = function reset () {\n this._beforeReset();\n this._reset();\n };\n\n Layer.prototype._reset = function _reset () {\n this._applyExtent();\n };\n\n Layer.prototype._beforeReset = function _beforeReset () {\n\n };\n\n Layer.prototype._resize = function _resize () {\n\n };\n\n Layer.prototype._panEnd = function _panEnd () {\n this._applyExtent();\n };\n\n Layer.prototype._applyExtent = function _applyExtent () {\n var options = this.options;\n var zoom = this.map.zoom();\n var matchMinZoom = !defined(options.minZoom) || zoom >= options.minZoom;\n var matchMaxZoom = !defined(options.maxZoom) || zoom <= options.maxZoom;\n var extent = Extent.create(options.extent);\n var inside = !extent || extent.overlaps(this.map.extent());\n\n this._setVisibility(matchMinZoom && matchMaxZoom && inside);\n };\n\n Layer.prototype._setVisibility = function _setVisibility (visible) {\n this.element.style.display = visible ? '' : 'none';\n };\n\n Layer.prototype._activate = function _activate () {\n var map = this.map;\n\n this._deactivate();\n\n map.bind('beforeReset', this._beforeReset);\n map.bind('reset', this._reset);\n map.bind('resize', this._resize);\n map.bind('panEnd', this._panEnd);\n };\n\n Layer.prototype._deactivate = function _deactivate () {\n var map = this.map;\n\n map.unbind('beforeReset', this._beforeReset);\n map.unbind('reset', this._reset);\n map.unbind('resize', this._resize);\n map.unbind('panEnd', this._panEnd);\n };\n\n Layer.prototype._updateAttribution = function _updateAttribution () {\n var attribution = this.map.attribution;\n\n if (attribution) {\n attribution.add(this.options.attribution);\n }\n };\n\n Layer.prototype._readData = function _readData () {\n var data = this.options.data || [];\n return data;\n };\n\n Layer.prototype._hasData = function _hasData () {\n return this._data && this._data.length > 0;\n };\n\n Layer.prototype._layerIndex = function _layerIndex () {\n var layers = this.map.layers || [];\n return layers.indexOf(this);\n };\n\n return Layer;\n}(Class));\n","import {\n geometry as g,\n throttle\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n deepExtend,\n round,\n limitValue,\n hashKey,\n setDefaultOptions,\n isFunction\n} from '../../common';\n\nimport { removeChildren } from '../utils';\n\nimport { Layer } from './layer';\n\nimport TemplateService from '../../services/template-service';\n\nvar math = Math,\n Point = g.Point;\n\nfunction compileTemplate(template) {\n if (isFunction(template)) {\n return template;\n }\n\n return TemplateService.compile(template);\n}\n\nfunction roundPoint(point) {\n return new Point(round(point.x), round(point.y));\n}\n\nfunction renderSize(size) {\n var newSize = size;\n\n if (typeof(size) !== \"string\") {\n newSize += \"px\";\n }\n\n return newSize;\n}\n\nexport var TileLayer = (function (Layer) {\n function TileLayer(map, options) {\n Layer.call(this, map, options);\n\n if (typeof this.options.subdomains === 'string') {\n this.options.subdomains = this.options.subdomains.split('');\n }\n\n var viewType = this._viewType();\n this._view = new viewType(this.element, this.options);\n }\n\n if ( Layer ) TileLayer.__proto__ = Layer;\n TileLayer.prototype = Object.create( Layer && Layer.prototype );\n TileLayer.prototype.constructor = TileLayer;\n\n TileLayer.prototype.destroy = function destroy () {\n Layer.prototype.destroy.call(this);\n this._view.destroy();\n this._view = null;\n };\n\n TileLayer.prototype._beforeReset = function _beforeReset () {\n var map = this.map;\n var origin = map.locationToLayer(map.extent().nw).round();\n this._view.viewOrigin(origin);\n };\n\n TileLayer.prototype._reset = function _reset () {\n Layer.prototype._reset.call(this);\n this._updateView();\n this._view.reset();\n };\n\n TileLayer.prototype._viewType = function _viewType () {\n return TileView;\n };\n\n TileLayer.prototype._activate = function _activate () {\n Layer.prototype._activate.call(this);\n\n if (!this.support.mobileOS) {\n if (!this._pan) {\n this._pan = throttle(this._render.bind(this), 100);\n }\n\n this.map.bind('pan', this._pan);\n }\n };\n\n TileLayer.prototype._deactivate = function _deactivate () {\n Layer.prototype._deactivate.call(this);\n\n if (this._pan) {\n this.map.unbind('pan', this._pan);\n }\n };\n\n TileLayer.prototype._updateView = function _updateView () {\n var view = this._view,\n map = this.map,\n extent = map.extent(),\n extentToPoint = {\n nw: map.locationToLayer(extent.nw).round(),\n se: map.locationToLayer(extent.se).round()\n };\n\n view.center(map.locationToLayer(map.center()));\n view.extent(extentToPoint);\n view.zoom(map.zoom());\n };\n\n TileLayer.prototype._resize = function _resize () {\n this._render();\n };\n\n TileLayer.prototype._panEnd = function _panEnd (e) {\n Layer.prototype._panEnd.call(this, e);\n this._render();\n };\n\n TileLayer.prototype._render = function _render () {\n this._updateView();\n this._view.render();\n };\n\n return TileLayer;\n}(Layer));\n\nsetDefaultOptions(TileLayer, {\n tileSize: 256,\n subdomains: ['a', 'b', 'c'],\n urlTemplate: '',\n zIndex: 1\n});\n\nexport var TileView = (function (Class) {\n function TileView(element, options) {\n Class.call(this);\n this.element = element;\n this._initOptions(options);\n this.pool = new TilePool();\n }\n\n if ( Class ) TileView.__proto__ = Class;\n TileView.prototype = Object.create( Class && Class.prototype );\n TileView.prototype.constructor = TileView;\n\n TileView.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n TileView.prototype.center = function center (center$1) {\n this._center = center$1;\n };\n\n TileView.prototype.extent = function extent (extent$1) {\n this._extent = extent$1;\n };\n\n TileView.prototype.viewOrigin = function viewOrigin (origin) {\n this._viewOrigin = origin;\n };\n\n TileView.prototype.zoom = function zoom (zoom$1) {\n this._zoom = zoom$1;\n };\n\n TileView.prototype.pointToTileIndex = function pointToTileIndex (point) {\n return new Point(math.floor(point.x / this.options.tileSize), math.floor(point.y / this.options.tileSize));\n };\n\n TileView.prototype.tileCount = function tileCount () {\n var size = this.size(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n nw = this._extent.nw,\n point = this.indexToPoint(firstTileIndex).translate(-nw.x, -nw.y);\n\n return {\n x: math.ceil((math.abs(point.x) + size.width) / this.options.tileSize),\n y: math.ceil((math.abs(point.y) + size.height) / this.options.tileSize)\n };\n };\n\n TileView.prototype.size = function size () {\n var nw = this._extent.nw,\n se = this._extent.se,\n diff = se.clone().translate(-nw.x, -nw.y);\n\n return {\n width: diff.x,\n height: diff.y\n };\n };\n\n TileView.prototype.indexToPoint = function indexToPoint (index) {\n var x = index.x,\n y = index.y;\n\n return new Point(x * this.options.tileSize, y * this.options.tileSize);\n };\n\n TileView.prototype.subdomainText = function subdomainText () {\n var subdomains = this.options.subdomains;\n return subdomains[this.subdomainIndex++ % subdomains.length];\n };\n\n TileView.prototype.destroy = function destroy () {\n removeChildren(this.element);\n this.pool.empty();\n };\n\n TileView.prototype.reset = function reset () {\n this.pool.reset();\n this.subdomainIndex = 0;\n this.render();\n };\n\n TileView.prototype.render = function render () {\n var this$1 = this;\n\n var size = this.tileCount(),\n firstTileIndex = this.pointToTileIndex(this._extent.nw),\n tile, x, y;\n\n for (x = 0; x < size.x; x++) {\n for (y = 0; y < size.y; y++) {\n tile = this$1.createTile({\n x: firstTileIndex.x + x,\n y: firstTileIndex.y + y\n });\n\n if (!tile.visible) {\n tile.show();\n }\n }\n }\n };\n\n TileView.prototype.createTile = function createTile (currentIndex) {\n var options = this.tileOptions(currentIndex);\n var tile = this.pool.get(this._center, options);\n\n if (!tile.element.parentNode) {\n this.element.append(tile.element);\n }\n\n return tile;\n };\n\n TileView.prototype.tileOptions = function tileOptions (currentIndex) {\n var index = this.wrapIndex(currentIndex),\n point = this.indexToPoint(currentIndex),\n origin = this._viewOrigin,\n offset = point.clone().translate(-origin.x, -origin.y);\n\n return {\n index: index,\n currentIndex: currentIndex,\n point: point,\n offset: roundPoint(offset),\n zoom: this._zoom,\n size: this.options.tileSize,\n subdomain: this.subdomainText(),\n urlTemplate: this.options.urlTemplate,\n errorUrlTemplate: this.options.errorUrlTemplate\n };\n };\n\n TileView.prototype.wrapIndex = function wrapIndex (index) {\n var boundary = math.pow(2, this._zoom);\n\n return {\n x: this.wrapValue(index.x, boundary),\n y: limitValue(index.y, 0, boundary - 1)\n };\n };\n\n TileView.prototype.wrapValue = function wrapValue (value, boundary) {\n var remainder = math.abs(value) % boundary;\n var wrappedValue = value;\n\n if (value >= 0) {\n wrappedValue = remainder;\n } else {\n wrappedValue = boundary - (remainder === 0 ? boundary : remainder);\n }\n\n return wrappedValue;\n };\n\n return TileView;\n}(Class));\n\nexport var ImageTile = (function (Class) {\n function ImageTile(id, options) {\n Class.call(this);\n this.id = id;\n this.visible = true;\n this._initOptions(options);\n this.createElement();\n this.show();\n }\n\n if ( Class ) ImageTile.__proto__ = Class;\n ImageTile.prototype = Object.create( Class && Class.prototype );\n ImageTile.prototype.constructor = ImageTile;\n\n ImageTile.prototype.destroy = function destroy () {\n var element = this.element;\n var parentNode = element ? element.parentNode : null;\n\n if (element) {\n if (parentNode) {\n parentNode.removeChild(element);\n }\n\n this.element = null;\n }\n };\n\n ImageTile.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n ImageTile.prototype.createElement = function createElement () {\n var el = document.createElement(\"img\");\n var size = this.options.size + \"px\";\n el.style.position = \"absolute\";\n el.style.display = \"block\";\n el.style.width = el.style.maxWidth = size;\n el.style.height = el.style.maxHeight = size;\n\n this.element = el;\n\n // todo\n // add on error handler\n\n // this.element =\n // $('\\'\\'')\n // .css({\n // width: this.options.size,\n // height: this.options.size\n // })\n // .on('error', proxy(function(e) {\n // if (this.errorUrl()) {\n // e.target.setAttribute('src', this.errorUrl());\n // } else {\n // e.target.removeAttribute('src');\n // }\n // }, this));\n };\n\n ImageTile.prototype.show = function show () {\n var element = this.element;\n element.style.top = renderSize(this.options.offset.y);\n element.style.left = renderSize(this.options.offset.x);\n\n var url = this.url();\n\n if (url) {\n element.setAttribute('src', url);\n }\n\n element.style.visibility = 'visible';\n this.visible = true;\n };\n\n ImageTile.prototype.hide = function hide () {\n this.element.style.visibility = 'hidden';\n this.visible = false;\n };\n\n ImageTile.prototype.url = function url () {\n var urlResult = compileTemplate(this.options.urlTemplate);\n return urlResult(this.urlOptions());\n };\n\n ImageTile.prototype.errorUrl = function errorUrl () {\n var urlResult = compileTemplate(this.options.errorUrlTemplate);\n return urlResult(this.urlOptions());\n };\n\n ImageTile.prototype.urlOptions = function urlOptions () {\n var options = this.options;\n\n return {\n zoom: options.zoom,\n subdomain: options.subdomain,\n z: options.zoom,\n x: options.index.x,\n y: options.index.y,\n s: options.subdomain,\n quadkey: options.quadkey,\n q: options.quadkey,\n culture: options.culture,\n c: options.culture\n };\n };\n\n return ImageTile;\n}(Class));\n\nsetDefaultOptions(ImageTile, {\n urlTemplate: '',\n errorUrlTemplate: ''\n});\n\nexport var TilePool = (function (Class) {\n function TilePool() {\n Class.call(this);\n this._items = [];\n }\n\n if ( Class ) TilePool.__proto__ = Class;\n TilePool.prototype = Object.create( Class && Class.prototype );\n TilePool.prototype.constructor = TilePool;\n\n TilePool.prototype.get = function get (center, options) {\n if (this._items.length >= this.options.maxSize) {\n this._remove(center);\n }\n\n return this._create(options);\n };\n\n TilePool.prototype.empty = function empty () {\n var items = this._items;\n\n for (var i = 0; i < items.length; i++) {\n items[i].destroy();\n }\n\n this._items = [];\n };\n\n TilePool.prototype.reset = function reset () {\n var items = this._items;\n\n for (var i = 0; i < items.length; i++) {\n items[i].hide();\n }\n };\n\n TilePool.prototype._create = function _create (options) {\n var items = this._items;\n var tile;\n var id = hashKey(options.point.toString() + options.offset.toString() + options.zoom + options.urlTemplate);\n\n for (var i = 0; i < items.length; i++) {\n if (items[i].id === id) {\n tile = items[i];\n break;\n }\n }\n\n if (tile) {\n tile.show();\n } else {\n tile = new ImageTile(id, options);\n this._items.push(tile);\n }\n\n return tile;\n };\n\n TilePool.prototype._remove = function _remove (center) {\n var items = this._items;\n var maxDist = -1;\n var index = -1;\n\n for (var i = 0; i < items.length; i++) {\n var dist = items[i].options.point.distanceTo(center);\n\n if (dist > maxDist && !items[i].visible) {\n index = i;\n maxDist = dist;\n }\n }\n\n if (index !== -1) {\n items[index].destroy();\n items.splice(index, 1);\n }\n };\n\n return TilePool;\n}(Class));\n\nsetDefaultOptions(TilePool, {\n maxSize: 100\n});\n","import {\n Class,\n elementOffset\n} from '../../common';\n\nimport {\n Observable\n} from './observable';\n\nimport {\n getEventMap,\n proxy,\n getSupportedFeatures\n} from '../utils';\n\nvar extend = Object.assign;\n\nvar CHANGE = 'change';\n\nexport var TapCapture = (function (Observable) {\n function TapCapture(element, options) {\n Observable.call(this);\n var that = this,\n domElement = element[0] || element;\n\n that.capture = false;\n\n var eventMap = getEventMap(navigator.userAgent);\n\n if (domElement.addEventListener) {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._press, that), true);\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.addEventListener(event, proxy(that._release, that), true);\n });\n } else {\n eventMap.down.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._press, that));\n });\n eventMap.up.split(' ').forEach(function(event) {\n domElement.attachEvent(event, proxy(that._release, that));\n });\n }\n\n that.bind([\n 'press',\n 'release'\n ], options || {});\n }\n\n if ( Observable ) TapCapture.__proto__ = Observable;\n TapCapture.prototype = Object.create( Observable && Observable.prototype );\n TapCapture.prototype.constructor = TapCapture;\n\n TapCapture.prototype.captureNext = function captureNext () {\n this.capture = true;\n };\n\n TapCapture.prototype.cancelCapture = function cancelCapture () {\n this.capture = false;\n };\n\n TapCapture.prototype._press = function _press (e) {\n var that = this;\n\n that.trigger('press');\n\n if (that.capture) {\n e.preventDefault();\n }\n };\n\n TapCapture.prototype._release = function _release (e) {\n var that = this;\n\n that.trigger('release');\n\n if (that.capture) {\n e.preventDefault();\n that.cancelCapture();\n }\n };\n\n return TapCapture;\n}(Observable));\n\nexport var PaneDimension = (function (Observable) {\n function PaneDimension(options) {\n Observable.call(this);\n var that = this;\n that.forcedEnabled = false;\n extend(that, options);\n that.scale = 1;\n\n if (that.horizontal) {\n that.measure = 'offsetWidth';\n that.scrollSize = 'scrollWidth';\n that.axis = 'x';\n } else {\n that.measure = 'offsetHeight';\n that.scrollSize = 'scrollHeight';\n that.axis = 'y';\n }\n }\n\n if ( Observable ) PaneDimension.__proto__ = Observable;\n PaneDimension.prototype = Object.create( Observable && Observable.prototype );\n PaneDimension.prototype.constructor = PaneDimension;\n\n PaneDimension.prototype.makeVirtual = function makeVirtual () {\n extend(this, {\n virtual: true,\n forcedEnabled: true,\n _virtualMin: 0,\n _virtualMax: 0\n });\n };\n\n PaneDimension.prototype.virtualSize = function virtualSize (min, max) {\n if (this._virtualMin !== min || this._virtualMax !== max) {\n this._virtualMin = min;\n this._virtualMax = max;\n this.update();\n }\n };\n\n PaneDimension.prototype.outOfBounds = function outOfBounds (offset) {\n return offset > this.max || offset < this.min;\n };\n\n PaneDimension.prototype.forceEnabled = function forceEnabled () {\n this.forcedEnabled = true;\n };\n\n PaneDimension.prototype.getSize = function getSize () {\n return this.container[this.measure];\n };\n\n PaneDimension.prototype.getTotal = function getTotal () {\n return this.element[this.scrollSize];\n };\n\n PaneDimension.prototype.rescale = function rescale (scale) {\n this.scale = scale;\n };\n\n PaneDimension.prototype.update = function update (silent) {\n var that = this,\n total = that.virtual ? that._virtualMax : that.getTotal(),\n scaledTotal = total * that.scale,\n size = that.getSize();\n\n if (total === 0 && !that.forcedEnabled) {\n return;\n }\n\n that.max = that.virtual ? -that._virtualMin : 0;\n that.size = size;\n that.total = scaledTotal;\n that.min = Math.min(that.max, size - scaledTotal);\n that.minScale = size / total;\n that.centerOffset = (scaledTotal - size) / 2;\n that.enabled = that.forcedEnabled || scaledTotal > size;\n\n if (!silent) {\n that.trigger(CHANGE, that);\n }\n };\n\n return PaneDimension;\n}(Observable));\n\nexport var PaneDimensions = (function (Observable) {\n function PaneDimensions(options) {\n Observable.call(this);\n var that = this;\n\n that.x = new PaneDimension(extend({\n horizontal: true\n }, options));\n\n that.y = new PaneDimension(extend({\n horizontal: false\n }, options));\n\n that.container = options.container;\n that.forcedMinScale = options.minScale;\n that.maxScale = options.maxScale || 100;\n that.bind(CHANGE, options);\n }\n\n if ( Observable ) PaneDimensions.__proto__ = Observable;\n PaneDimensions.prototype = Object.create( Observable && Observable.prototype );\n PaneDimensions.prototype.constructor = PaneDimensions;\n\n PaneDimensions.prototype.rescale = function rescale (newScale) {\n this.x.rescale(newScale);\n this.y.rescale(newScale);\n this.refresh();\n };\n\n PaneDimensions.prototype.centerCoordinates = function centerCoordinates () {\n return {\n x: Math.min(0, -this.x.centerOffset),\n y: Math.min(0, -this.y.centerOffset)\n };\n };\n\n PaneDimensions.prototype.refresh = function refresh () {\n var that = this;\n that.x.update();\n that.y.update();\n that.enabled = that.x.enabled || that.y.enabled;\n that.minScale = that.forcedMinScale || Math.min(that.x.minScale, that.y.minScale);\n that.fitScale = Math.max(that.x.minScale, that.y.minScale);\n that.trigger(CHANGE);\n };\n\n return PaneDimensions;\n}(Observable));\n\nexport var PaneAxis = (function (Observable) {\n function PaneAxis(options) {\n Observable.call(this);\n extend(this, options);\n }\n\n if ( Observable ) PaneAxis.__proto__ = Observable;\n PaneAxis.prototype = Object.create( Observable && Observable.prototype );\n PaneAxis.prototype.constructor = PaneAxis;\n\n PaneAxis.prototype.outOfBounds = function outOfBounds () {\n return this.dimension.outOfBounds(this.movable[this.axis]);\n };\n\n PaneAxis.prototype.dragMove = function dragMove (delta) {\n var that = this,\n dimension = that.dimension,\n axis = that.axis,\n movable = that.movable,\n position = movable[axis] + delta;\n\n if (!dimension.enabled) {\n return;\n }\n\n var dragDelta = delta;\n\n if (position < dimension.min && delta < 0 || position > dimension.max && delta > 0) {\n dragDelta *= that.resistance;\n }\n\n movable.translateAxis(axis, dragDelta);\n that.trigger(CHANGE, that);\n };\n\n return PaneAxis;\n}(Observable));\n\nexport var Pane = (function (Class) {\n function Pane(options) {\n Class.call(this);\n\n var that = this,\n x, y,\n resistance,\n movable;\n\n extend(that, {\n elastic: true\n }, options);\n\n resistance = that.elastic ? 0.5 : 0;\n movable = that.movable;\n\n that.x = x = new PaneAxis({\n axis: 'x',\n dimension: that.dimensions.x,\n resistance: resistance,\n movable: movable\n });\n\n that.y = y = new PaneAxis({\n axis: 'y',\n dimension: that.dimensions.y,\n resistance: resistance,\n movable: movable\n });\n\n that.userEvents.bind([\n 'press',\n 'move',\n 'end',\n 'gesturestart',\n 'gesturechange'\n ], {\n gesturestart: function gesturestart(e) {\n that.gesture = e;\n\n that.offset = elementOffset(that.dimensions.container);\n },\n press: function press(e) {\n var closestAnchor = e.event.target.closest('a');\n\n if (closestAnchor && closestAnchor.matches('[data-navigate-on-press=true]')) {\n e.sender.cancel();\n }\n },\n gesturechange: function gesturechange(e) {\n var previousGesture = that.gesture,\n previousCenter = previousGesture.center,\n center = e.center,\n scaleDelta = e.distance / previousGesture.distance,\n minScale = that.dimensions.minScale,\n maxScale = that.dimensions.maxScale,\n coordinates;\n if (movable.scale <= minScale && scaleDelta < 1) {\n scaleDelta += (1 - scaleDelta) * 0.8;\n }\n\n if (movable.scale * scaleDelta >= maxScale) {\n scaleDelta = maxScale / movable.scale;\n }\n\n var offsetX = movable.x + that.offset.left,\n offsetY = movable.y + that.offset.top;\n coordinates = {\n x: (offsetX - previousCenter.x) * scaleDelta + center.x - offsetX,\n y: (offsetY - previousCenter.y) * scaleDelta + center.y - offsetY\n };\n\n movable.scaleWith(scaleDelta);\n\n x.dragMove(coordinates.x);\n y.dragMove(coordinates.y);\n\n that.dimensions.rescale(movable.scale);\n that.gesture = e;\n\n e.preventDefault();\n },\n move: function move(e) {\n if (e.event.target.tagName.match(/textarea|input/i)) {\n return;\n }\n\n if (x.dimension.enabled || y.dimension.enabled) {\n x.dragMove(e.x.delta);\n y.dragMove(e.y.delta);\n e.preventDefault();\n } else {\n e.touch.skip();\n }\n },\n end: function end(e) {\n e.preventDefault();\n }\n });\n }\n\n if ( Class ) Pane.__proto__ = Class;\n Pane.prototype = Object.create( Class && Class.prototype );\n Pane.prototype.constructor = Pane;\n\n return Pane;\n}(Class));\n\nvar translate = function(x, y, scale) {\n return 'translate3d(' + x + 'px,' + y + 'px,0) scale(' + scale + ')';\n};\n\nexport var Movable = (function (Observable) {\n function Movable(element) {\n Observable.call(this);\n\n var that = this;\n\n that.support = getSupportedFeatures();\n this.transformStyle = this.support.transitions.prefix + 'Transform';\n that.element = element;\n that.element.style.webkitTransformOrigin = 'left top';\n that.x = 0;\n that.y = 0;\n that.scale = 1;\n\n var coordinates = translate(that.x, that.y, that.scale);\n that.element.style[this.transformStyle] = coordinates;\n\n that._saveCoordinates(coordinates);\n }\n\n if ( Observable ) Movable.__proto__ = Observable;\n Movable.prototype = Object.create( Observable && Observable.prototype );\n Movable.prototype.constructor = Movable;\n\n Movable.prototype.translateAxis = function translateAxis (axis, by) {\n this[axis] += by;\n this.refresh();\n };\n\n Movable.prototype.scaleTo = function scaleTo (scale) {\n this.scale = scale;\n this.refresh();\n };\n\n Movable.prototype.scaleWith = function scaleWith (scaleDelta) {\n this.scale *= scaleDelta;\n this.refresh();\n };\n\n Movable.prototype.translate = function translate (coordinates) {\n this.x += coordinates.x;\n this.y += coordinates.y;\n this.refresh();\n };\n\n Movable.prototype.moveAxis = function moveAxis (axis, value) {\n this[axis] = value;\n this.refresh();\n };\n\n Movable.prototype.moveTo = function moveTo (coordinates) {\n extend(this, coordinates);\n this.refresh();\n };\n\n Movable.prototype.refresh = function refresh () {\n var that = this,\n x = that.x,\n y = that.y,\n newCoordinates;\n\n if (that.round) {\n x = Math.round(x);\n y = Math.round(y);\n }\n\n newCoordinates = translate(x, y, that.scale);\n\n if (newCoordinates !== that.coordinates) {\n that.element.style[this.transformStyle] = newCoordinates;\n\n that._saveCoordinates(newCoordinates);\n that.trigger(CHANGE);\n }\n };\n\n Movable.prototype._saveCoordinates = function _saveCoordinates (coordinates) {\n this.coordinates = coordinates;\n };\n\n return Movable;\n}(Observable));\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n last,\n setDefaultOptions\n} from '../../common';\n\nimport {\n proxy\n} from '../utils';\n\nimport {\n Layer\n} from './layer';\n\nimport {\n Movable\n} from '../scroller/draggable';\n\nimport {\n Location\n} from '../location';\n\nvar Group = d.Group;\n\nexport var ShapeLayer = (function (Layer) {\n function ShapeLayer(map, options) {\n Layer.call(this, map, options);\n\n this._pan = proxy(this._pan, this);\n\n this.surface = d.Surface.create(this.element, {\n width: map.scrollElement.clientWidth,\n height: map.scrollElement.clientHeight\n });\n\n this._initRoot();\n this.movable = new Movable(this.surface.element);\n this._markers = [];\n\n this._click = this._handler('shapeClick');\n this.surface.bind('click', this._click);\n this._mouseleave = this._handler('shapeMouseLeave');\n this.surface.bind('mouseleave', this._mouseleave);\n this.surface.bind('mouseenter', this._mouseenter.bind(this));\n }\n\n if ( Layer ) ShapeLayer.__proto__ = Layer;\n ShapeLayer.prototype = Object.create( Layer && Layer.prototype );\n ShapeLayer.prototype.constructor = ShapeLayer;\n\n ShapeLayer.prototype.destroy = function destroy () {\n Layer.prototype.destroy.call(this);\n\n this.surface.destroy();\n };\n\n ShapeLayer.prototype._reset = function _reset () {\n Layer.prototype._reset.call(this);\n\n this._translateSurface();\n\n this._data = this._readData();\n\n if (this._hasData()) {\n this._load(this._data);\n }\n };\n\n ShapeLayer.prototype._initRoot = function _initRoot () {\n this._root = new Group();\n this.surface.draw(this._root);\n };\n\n ShapeLayer.prototype._beforeReset = function _beforeReset () {\n this.surface.clear();\n this._initRoot();\n };\n\n ShapeLayer.prototype._resize = function _resize () {\n this.surface.size(this.map.size());\n };\n\n ShapeLayer.prototype._readData = function _readData () {\n var data = Layer.prototype._readData.call(this);\n\n if (data.type === \"FeatureCollection\") {\n return data.features;\n }\n\n if (data.type === \"GeometryCollection\") {\n return data.geometries;\n }\n\n return data;\n };\n\n ShapeLayer.prototype._load = function _load (data) {\n var this$1 = this;\n\n this._data = data;\n this._clearMarkers();\n\n if (!this._loader) {\n this._loader = new GeoJsonLoader(this.map, this.options.style, this);\n }\n\n var container = new Group();\n\n for (var i = 0; i < data.length; i++) {\n var shape = this$1._loader.parse(data[i]);\n\n if (shape) {\n container.append(shape);\n }\n }\n\n this._root.clear();\n this._root.append(container);\n };\n\n ShapeLayer.prototype.shapeCreated = function shapeCreated (shape) {\n var cancelled = false;\n\n // the GeoJSON loader builds \"Point\" type as a circle\n // use the circle shape type as and indicator for rendering a marker\n // keep the behavior under a setting as this is supported by kendo jQuery Map\n // but we opted out of this in blazor\n if (shape instanceof d.Circle && this.map.options.renderPointsAsMarkers) {\n cancelled = defined(this._createMarker(shape));\n }\n\n if (!cancelled) {\n var args = {\n layer: this,\n shape: shape\n };\n\n cancelled = this.map.trigger('shapeCreated', args);\n }\n\n return cancelled;\n };\n\n ShapeLayer.prototype.featureCreated = function featureCreated (e) {\n e.layer = this;\n this.map.trigger('shapeFeatureCreated', e);\n };\n\n ShapeLayer.prototype._createMarker = function _createMarker (shape) {\n var marker = this.map.markers.bind({\n location: shape.location\n }, shape.dataItem);\n\n if (marker) {\n this._markers.push(marker);\n }\n\n return marker;\n };\n\n ShapeLayer.prototype._clearMarkers = function _clearMarkers () {\n var this$1 = this;\n\n for (var i = 0; i < this._markers.length; i++) {\n this$1.map.markers.remove(this$1._markers[i]);\n }\n\n this._markers = [];\n };\n\n ShapeLayer.prototype._pan = function _pan () {\n if (!this._panning) {\n this._panning = true;\n this.surface.suspendTracking();\n }\n };\n\n ShapeLayer.prototype._panEnd = function _panEnd (e) {\n Layer.prototype._panEnd.call(this, e);\n this._translateSurface();\n this.surface.resumeTracking();\n this._panning = false;\n };\n\n ShapeLayer.prototype._translateSurface = function _translateSurface () {\n var map = this.map;\n var nw = map.locationToView(map.extent().nw);\n\n if (this.surface.translate) {\n this.surface.translate(nw);\n this.movable.moveTo({\n x: nw.x,\n y: nw.y\n });\n }\n };\n\n ShapeLayer.prototype._eventArgs = function _eventArgs (e) {\n return {\n layer: this,\n layerIndex: this._layerIndex(),\n shape: e.element,\n shapeIndex: (this._data || []).indexOf(e.element.dataItem),\n originalEvent: e.originalEvent\n };\n };\n\n ShapeLayer.prototype._handler = function _handler (eventName) {\n var this$1 = this;\n\n return function (e) {\n if (e.element) {\n this$1.map.trigger(eventName, this$1._eventArgs(e));\n }\n };\n };\n\n ShapeLayer.prototype._mouseenter = function _mouseenter (e) {\n if (!e.element) {\n return;\n }\n\n this.map.trigger('shapeMouseEnter', this._eventArgs(e));\n\n var shape = e.element;\n var anchor = this._tooltipAnchor(e);\n this.map._tooltip.show(anchor, this._tooltipContext(shape));\n };\n\n ShapeLayer.prototype._tooltipContext = function _tooltipContext (shape) {\n return {\n type: 'shape',\n layerIndex: this._layerIndex(),\n className: 'k-map-shape-tooltip',\n dataItem: shape.dataItem,\n location: shape.location\n };\n };\n\n ShapeLayer.prototype._tooltipAnchor = function _tooltipAnchor (e) {\n var cursor = this.map.eventOffset(e.originalEvent);\n return {\n top: cursor.y,\n left: cursor.x\n };\n };\n\n ShapeLayer.prototype._activate = function _activate () {\n Layer.prototype._activate.call(this);\n this._panHandler = proxy(this._pan, this);\n this.map.bind('pan', this.panHandler);\n };\n\n ShapeLayer.prototype._deactivate = function _deactivate () {\n Layer.prototype._deactivate.call(this);\n this.map.unbind('pan', this._panHandler);\n };\n\n return ShapeLayer;\n}(Layer));\n\nsetDefaultOptions(ShapeLayer, {\n autoBind: true,\n zIndex: 100\n});\n\nvar GeoJsonLoader = (function (Class) {\n function GeoJsonLoader(locator, defaultStyle, observer) {\n Class.call(this);\n this.observer = observer;\n this.locator = locator;\n this.style = defaultStyle;\n }\n\n if ( Class ) GeoJsonLoader.__proto__ = Class;\n GeoJsonLoader.prototype = Object.create( Class && Class.prototype );\n GeoJsonLoader.prototype.constructor = GeoJsonLoader;\n\n GeoJsonLoader.prototype.parse = function parse (item) {\n var root = new Group();\n var unwrap = true;\n\n if (item.type === 'Feature') {\n unwrap = false;\n this._loadGeometryTo(root, item.geometry, item);\n this._featureCreated(root, item);\n } else {\n this._loadGeometryTo(root, item, item);\n }\n\n if (unwrap && root.children.length < 2) {\n root = root.children[0];\n }\n\n return root;\n };\n\n GeoJsonLoader.prototype._shapeCreated = function _shapeCreated (shape) {\n var cancelled = false;\n\n if (this.observer && this.observer.shapeCreated) {\n cancelled = this.observer.shapeCreated(shape);\n }\n\n return cancelled;\n };\n\n GeoJsonLoader.prototype._featureCreated = function _featureCreated (group, dataItem) {\n if (this.observer && this.observer.featureCreated) {\n this.observer.featureCreated({\n group: group,\n dataItem: dataItem,\n properties: dataItem.properties\n });\n }\n };\n\n /* eslint-disable indent */\n GeoJsonLoader.prototype._loadGeometryTo = function _loadGeometryTo (container, geometry, dataItem) {\n var this$1 = this;\n\n var coords = geometry.coordinates;\n var i;\n var path;\n\n switch (geometry.type) {\n case 'LineString':\n path = this._loadPolygon(container, [coords], dataItem);\n this._setLineFill(path);\n break;\n case 'MultiLineString':\n for (i = 0; i < coords.length; i++) {\n path = this$1._loadPolygon(container, [coords[i]], dataItem);\n this$1._setLineFill(path);\n }\n break;\n case 'Polygon':\n this._loadPolygon(container, coords, dataItem);\n break;\n case 'MultiPolygon':\n for (i = 0; i < coords.length; i++) {\n this$1._loadPolygon(container, coords[i], dataItem);\n }\n break;\n case 'Point':\n this._loadPoint(container, coords, dataItem);\n break;\n case 'MultiPoint':\n for (i = 0; i < coords.length; i++) {\n this$1._loadPoint(container, coords[i], dataItem);\n }\n break;\n default:\n break;\n }\n };\n /* eslint-disable indent */\n\n GeoJsonLoader.prototype._setLineFill = function _setLineFill (path) {\n var segments = path.segments;\n\n if (segments.length < 4 || !segments[0].anchor().equals(last(segments).anchor())) {\n path.options.fill = null;\n }\n };\n\n GeoJsonLoader.prototype._loadShape = function _loadShape (container, shape) {\n if (!this._shapeCreated(shape)) {\n container.append(shape);\n }\n\n return shape;\n };\n\n GeoJsonLoader.prototype._loadPolygon = function _loadPolygon (container, rings, dataItem) {\n var shape = this._buildPolygon(rings);\n shape.dataItem = dataItem;\n shape.location = this.locator.viewToLocation(shape.bbox().center());\n return this._loadShape(container, shape);\n };\n\n GeoJsonLoader.prototype._buildPolygon = function _buildPolygon (rings) {\n var this$1 = this;\n\n var type = rings.length > 1 ? d.MultiPath : d.Path;\n var path = new type(this.style);\n\n for (var i = 0; i < rings.length; i++) {\n for (var j = 0; j < rings[i].length; j++) {\n var point = this$1.locator.locationToView(Location.fromLngLat(rings[i][j]));\n if (j === 0) {\n path.moveTo(point.x, point.y);\n } else {\n path.lineTo(point.x, point.y);\n }\n }\n }\n\n return path;\n };\n\n GeoJsonLoader.prototype._loadPoint = function _loadPoint (container, coords, dataItem) {\n var location = Location.fromLngLat(coords);\n var point = this.locator.locationToView(location);\n var circle = new g.Circle(point, 10);\n var shape = new d.Circle(circle, this.style);\n\n shape.dataItem = dataItem;\n shape.location = location;\n\n return this._loadShape(container, shape);\n };\n\n return GeoJsonLoader;\n}(Class));\n","import {\n geometry as g,\n drawing as d\n} from '@progress/kendo-drawing';\n\nimport {\n Class,\n defined,\n isFunction,\n getter,\n setDefaultOptions\n} from '../../common';\n\nimport {\n ShapeLayer\n} from './shape';\n\nimport {\n Location\n} from '../location';\n\nexport var BubbleLayer = (function (ShapeLayer) {\n function BubbleLayer () {\n ShapeLayer.apply(this, arguments);\n }\n\n if ( ShapeLayer ) BubbleLayer.__proto__ = ShapeLayer;\n BubbleLayer.prototype = Object.create( ShapeLayer && ShapeLayer.prototype );\n BubbleLayer.prototype.constructor = BubbleLayer;\n\n BubbleLayer.prototype._readData = function _readData () {\n var data = this.options.data || [];\n return data;\n };\n\n BubbleLayer.prototype._load = function _load (data) {\n var this$1 = this;\n\n this._data = data;\n this.surface.clear();\n\n if (data.length === 0) {\n return;\n }\n\n var options = this.options;\n var getValue = getter(options.valueField);\n\n var newData = data.slice(0);\n newData.sort(function(a, b) {\n return getValue(b) - getValue(a);\n });\n\n var scaleType = this._scaleType();\n var scale;\n var getLocation = getter(this.options.locationField);\n\n for (var i = 0; i < newData.length; i++) {\n var dataItem = newData[i];\n var location = getLocation(dataItem);\n var value = getValue(dataItem);\n\n if (defined(location) && defined(value)) {\n if (!scale) {\n scale = new scaleType([\n 0,\n value\n ], [\n options.minSize,\n options.maxSize\n ]);\n }\n\n location = Location.create(location);\n\n var center = this$1.map.locationToView(location);\n var size = scale.map(value);\n var symbol = this$1._createSymbol({\n center: center,\n size: size,\n style: options.style,\n dataItem: dataItem,\n location: location\n });\n\n symbol.dataItem = dataItem;\n symbol.location = location;\n symbol.value = value;\n\n this$1._drawSymbol(symbol);\n }\n }\n };\n\n BubbleLayer.prototype._scaleType = function _scaleType () {\n var scale = this.options.scale;\n\n if (isFunction(scale)) {\n return scale;\n }\n\n return Scales[scale];\n };\n\n BubbleLayer.prototype._createSymbol = function _createSymbol (args) {\n var symbol = this.options.symbol;\n\n if (!isFunction(symbol)) {\n symbol = Symbols[symbol];\n }\n\n return symbol(args);\n };\n\n BubbleLayer.prototype._drawSymbol = function _drawSymbol (shape) {\n var args = {\n layer: this,\n shape: shape\n };\n\n var cancelled = this.map.trigger('shapeCreated', args);\n\n if (!cancelled) {\n this.surface.draw(shape);\n }\n };\n\n BubbleLayer.prototype._tooltipContext = function _tooltipContext (shape) {\n return {\n type: 'bubble',\n layerIndex: this._layerIndex(),\n className: 'k-map-bubble-tooltip',\n dataItem: shape.dataItem,\n location: shape.location,\n value: shape.value\n };\n };\n\n BubbleLayer.prototype._tooltipAnchor = function _tooltipAnchor (e) {\n var shape = e.element;\n var center = shape.bbox().center();\n\n return {\n top: center.y,\n left: center.x\n };\n };\n\n return BubbleLayer;\n}(ShapeLayer));\n\nsetDefaultOptions(BubbleLayer, {\n // autoBind: true,\n locationField: 'location',\n valueField: 'value',\n minSize: 0,\n maxSize: 100,\n scale: 'sqrt',\n symbol: 'circle',\n // ensure bubble layers are displayed over tile and shape layers\n zIndex: 200\n});\n\nvar SqrtScale = (function (Class) {\n function SqrtScale(domain, range) {\n Class.call(this);\n\n this._domain = domain;\n this._range = range;\n\n var domainRange = Math.sqrt(domain[1]) - Math.sqrt(domain[0]);\n var outputRange = range[1] - range[0];\n\n this._ratio = outputRange / domainRange;\n }\n\n if ( Class ) SqrtScale.__proto__ = Class;\n SqrtScale.prototype = Object.create( Class && Class.prototype );\n SqrtScale.prototype.constructor = SqrtScale;\n\n SqrtScale.prototype.map = function map (value) {\n var rel = (Math.sqrt(value) - Math.sqrt(this._domain[0])) * this._ratio;\n return this._range[0] + rel;\n };\n\n return SqrtScale;\n}(Class));\n\nvar Scales = {\n sqrt: SqrtScale\n};\n\nvar Symbols = {\n circle: function(args) {\n var geo = new g.Circle(args.center, args.size / 2);\n return new d.Circle(geo, args.style);\n },\n\n square: function(args) {\n var path = new d.Path(args.style);\n var halfSize = args.size / 2;\n var center = args.center;\n path.moveTo(center.x - halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y - halfSize).lineTo(center.x + halfSize, center.y + halfSize).lineTo(center.x - halfSize, center.y + halfSize).close();\n return path;\n }\n};\n","import {\n Class,\n addClass,\n isArray,\n getter,\n deepExtend,\n setDefaultOptions\n} from '../../common';\n\nimport { Layer } from './layer';\nimport { Location } from '../location';\n\nimport {\n proxy,\n on,\n off,\n toHyphens,\n toPixels\n} from '../utils';\n\nvar CLICK = \"click\";\nvar MOUSE_ENTER = \"mouseenter\";\nvar MOUSE_LEAVE = \"mouseleave\";\n\nvar extend = Object.assign;\nvar MARKER_CLASS = \".k-marker\";\n\nexport var MarkerLayer = (function (Layer) {\n function MarkerLayer(map, options) {\n Layer.call(this, map, options);\n\n this._markerClickHandler = proxy(this._markerClick, this);\n on(this.element, CLICK, MARKER_CLASS, this._markerClickHandler);\n\n this.items = [];\n\n this._load(this._readData());\n }\n\n if ( Layer ) MarkerLayer.__proto__ = Layer;\n MarkerLayer.prototype = Object.create( Layer && Layer.prototype );\n MarkerLayer.prototype.constructor = MarkerLayer;\n\n MarkerLayer.prototype.destroy = function destroy () {\n Layer.prototype.destroy.call(this);\n off(this.element, CLICK, this._markerClickHandler);\n this.clear();\n };\n\n MarkerLayer.prototype.add = function add (args) {\n var this$1 = this;\n\n if (isArray(args)) {\n for (var i = 0; i < args.length; i++) {\n this$1._addOne(args[i]);\n }\n } else {\n return this._addOne(args);\n }\n };\n\n MarkerLayer.prototype.remove = function remove (marker) {\n marker.destroy();\n var index = (this.items || []).indexOf(marker);\n\n if (index > -1) {\n this.items.splice(index, 1);\n }\n };\n\n MarkerLayer.prototype.clear = function clear () {\n var this$1 = this;\n\n for (var i = 0; i < this.items.length; i++) {\n this$1.items[i].destroy();\n }\n\n this.items = [];\n };\n\n MarkerLayer.prototype.update = function update (marker) {\n var location = marker.location();\n\n if (location) {\n marker.showAt(this.map.locationToView(location));\n\n var args = {\n marker: marker,\n layer: this\n };\n\n this.map.trigger('markerActivate', args);\n }\n };\n\n MarkerLayer.prototype._reset = function _reset () {\n var this$1 = this;\n\n Layer.prototype._reset.call(this);\n\n var items = this.items;\n\n for (var i = 0; i < items.length; i++) {\n this$1.update(items[i]);\n }\n };\n\n MarkerLayer.prototype.bind = function bind (options, dataItem) {\n var marker = Marker.create(options, this.options);\n marker.dataItem = dataItem;\n\n var args = {\n marker: marker,\n layer: this\n };\n\n var cancelled = this.map.trigger('markerCreated', args);\n\n if (!cancelled) {\n this.add(marker);\n return marker;\n }\n };\n\n MarkerLayer.prototype._addOne = function _addOne (arg) {\n var marker = Marker.create(arg, this.options);\n marker.addTo(this);\n return marker;\n };\n\n MarkerLayer.prototype._readData = function _readData () {\n var data = this.options.data || [];\n return data;\n };\n\n MarkerLayer.prototype._load = function _load (data) {\n var this$1 = this;\n\n this._data = data;\n this.clear();\n\n var getLocation = getter(this.options.locationField);\n var getTitle = getter(this.options.titleField);\n\n for (var i = 0; i < data.length; i++) {\n var dataItem = data[i];\n\n this$1.bind({\n location: getLocation(dataItem),\n title: getTitle(dataItem)\n }, dataItem);\n }\n };\n\n MarkerLayer.prototype._markerClick = function _markerClick (e) {\n var marker = e.target._kendoNode;\n\n var args = {\n // marker: $(e.target).data('kendoMarker'),\n // marker: e.target.getAttribute(\"data-kendoMarker\"),\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker),\n originalEvent: e\n };\n\n this.map.trigger('markerClick', args);\n };\n\n MarkerLayer.prototype._markerMouseEnter = function _markerMouseEnter (e) {\n var args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseEnter\", args);\n };\n\n MarkerLayer.prototype._markerMouseLeave = function _markerMouseLeave (e) {\n var args = this._createMarkerEventArgs(e);\n this.map.trigger(\"markerMouseLeave\", args);\n };\n\n MarkerLayer.prototype._createMarkerEventArgs = function _createMarkerEventArgs (e) {\n var marker = e.marker;\n\n var args = extend({}, {\n layer: this,\n layerIndex: this._layerIndex(),\n marker: marker,\n markerIndex: (this.items || []).indexOf(marker)\n }, e);\n\n return args;\n };\n\n return MarkerLayer;\n}(Layer));\n\nsetDefaultOptions(MarkerLayer, {\n zIndex: 1000,\n autoBind: true,\n locationField: 'location',\n titleField: 'title'\n});\n\nexport var Marker = (function (Class) {\n function Marker(options) {\n Class.call(this);\n this.options = options || {};\n }\n\n if ( Class ) Marker.__proto__ = Class;\n Marker.prototype = Object.create( Class && Class.prototype );\n Marker.prototype.constructor = Marker;\n\n Marker.prototype.destroy = function destroy () {\n this.layer = null;\n this.unbindEvents();\n this.hide();\n };\n\n Marker.prototype.addTo = function addTo (parent) {\n this.layer = parent.markers || parent;\n this.layer.items.push(this);\n this.layer.update(this);\n };\n\n Marker.prototype.location = function location (value) {\n if (value) {\n this.options.location = Location.create(value).toArray();\n\n if (this.layer) {\n this.layer.update(this);\n }\n\n return this;\n }\n\n return Location.create(this.options.location);\n };\n\n Marker.prototype.showAt = function showAt (point) {\n this.render();\n\n this._anchor = { left: Math.round(point.x), top: Math.round(point.y) };\n this.element.style.left = toPixels(this._anchor.left);\n this.element.style.top = toPixels(this._anchor.top);\n };\n\n Marker.prototype.hide = function hide () {\n if (this.element) {\n this.element.remove();\n this.element = null;\n }\n };\n\n Marker.prototype.bindEvents = function bindEvents () {\n if (!this.element) {\n return;\n }\n\n this._mouseEnterHandler = proxy(this._mouseEnter, this);\n on(this.element, MOUSE_ENTER, MARKER_CLASS, this._mouseEnterHandler);\n this._mouseLeaveHandler = proxy(this._mouseLeave, this);\n on(this.element, MOUSE_LEAVE, MARKER_CLASS, this._mouseLeaveHandler);\n };\n\n Marker.prototype.unbindEvents = function unbindEvents () {\n if (!this.element) {\n return;\n }\n\n off(this.element, MOUSE_ENTER, this._mouseEnterHandler);\n off(this.element, MOUSE_LEAVE, this._mouseLeaveHandler);\n };\n\n Marker.prototype.render = function render () {\n if (!this.element) {\n var options = this.options;\n var layer = this.layer;\n\n var element = document.createElement('span');\n addClass(element, 'k-marker k-icon k-i-marker-' + toHyphens(options.shape || 'pin'));\n\n if (options.title) {\n element.setAttribute(\"title\", options.title);\n }\n\n var attributes = options.attributes || {};\n Object.keys(attributes).forEach(function(key) {\n element.setAttribute(key, attributes[key]);\n });\n\n element._kendoNode = this;\n element.style.zIndex = options.zIndex;\n\n this.element = element;\n\n if (layer) {\n layer.element.appendChild(this.element);\n }\n\n this.bindEvents();\n }\n };\n\n Marker.prototype._mouseEnter = function _mouseEnter (e) {\n var args = this._createEventArgs(e);\n this.layer._markerMouseEnter(args);\n\n this.layer.map._tooltip.show({\n top: this._anchor.top - this.element.offsetHeight,\n left: this._anchor.left\n }, this._tooltipContext());\n };\n\n Marker.prototype._tooltipContext = function _tooltipContext () {\n return {\n type: 'marker',\n layerIndex: this.layer._layerIndex(),\n className: 'k-map-marker-tooltip',\n dataItem: this.dataItem,\n title: this.options.title,\n location: this.location()\n };\n };\n\n Marker.prototype._mouseLeave = function _mouseLeave (e) {\n var args = this._createEventArgs(e);\n this.layer._markerMouseLeave(args);\n };\n\n Marker.prototype._createEventArgs = function _createEventArgs (e) {\n var args = {\n marker: this,\n originalEvent: e\n };\n\n return args;\n };\n\n Marker.create = function create (arg, defaults) {\n if (arg instanceof Marker) {\n return arg;\n }\n\n return new Marker(deepExtend({}, defaults, arg));\n };\n\n return Marker;\n}(Class));\n","import {\n Class\n} from '../../common';\n\nimport {\n proxy,\n now\n} from '../utils';\n\nvar extend = Object.assign;\n\nfunction animationFrame(callback) {\n window.requestAnimationFrame(callback);\n}\n\nexport var Animation = (function (Class) {\n function Animation() {\n Class.call(this);\n var that = this;\n\n that._tickProxy = proxy(that._tick, that);\n that._started = false;\n }\n\n if ( Class ) Animation.__proto__ = Class;\n Animation.prototype = Object.create( Class && Class.prototype );\n Animation.prototype.constructor = Animation;\n\n Animation.prototype.tick = function tick () { };\n Animation.prototype.done = function done () { };\n Animation.prototype.onEnd = function onEnd () { };\n Animation.prototype.onCancel = function onCancel () { };\n\n Animation.prototype.start = function start () {\n if (!this.enabled()) {\n return;\n }\n\n if (!this.done()) {\n this._started = true;\n animationFrame(this._tickProxy);\n } else {\n this.onEnd();\n }\n };\n\n Animation.prototype.enabled = function enabled () {\n return true;\n };\n\n Animation.prototype.cancel = function cancel () {\n this._started = false;\n this.onCancel();\n };\n\n Animation.prototype._tick = function _tick () {\n var that = this;\n\n if (!that._started) {\n return;\n }\n\n that.tick();\n\n if (!that.done()) {\n animationFrame(that._tickProxy);\n } else {\n that._started = false;\n that.onEnd();\n }\n };\n\n return Animation;\n}(Class));\n\nexport var Transition = (function (Animation) {\n function Transition(options) {\n Animation.call(this);\n extend(this, options);\n }\n\n if ( Animation ) Transition.__proto__ = Animation;\n Transition.prototype = Object.create( Animation && Animation.prototype );\n Transition.prototype.constructor = Transition;\n\n Transition.prototype.done = function done () {\n return this.timePassed() >= this.duration;\n };\n\n Transition.prototype.timePassed = function timePassed () {\n return Math.min(this.duration, now() - this.startDate);\n };\n\n Transition.prototype.moveTo = function moveTo (options) {\n var that = this,\n movable = that.movable;\n\n that.initial = movable[that.axis];\n that.delta = options.location - that.initial;\n that.duration = typeof options.duration === 'number' ? options.duration : 300;\n that.tick = that._easeProxy(options.ease);\n that.startDate = now();\n that.start();\n };\n\n Transition.prototype._easeProxy = function _easeProxy (ease) {\n var that = this;\n\n return function() {\n that.movable.moveAxis(that.axis, ease(that.timePassed(), that.initial, that.delta, that.duration));\n };\n };\n\n Transition.easeOutExpo = function easeOutExpo (t, b, c, d) {\n return t === d ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;\n };\n\n return Transition;\n}(Animation));\n","import {\n Class,\n grep\n} from '../../common';\n\nimport {\n proxy,\n noop,\n applyEventMap,\n getEventMap,\n on,\n off,\n now,\n getSupportedFeatures\n} from '../utils';\n\nimport {\n Observable\n} from './observable';\n\nvar extend = Object.assign;\n\nvar preventDefault = function (e) {\n e.preventDefault();\n};\n\nvar\n DEFAULT_MIN_HOLD = 800,\n CLICK_DELAY = 300,\n // DEFAULT_THRESHOLD = support.browser.msie ? 5 : 0,\n DEFAULT_THRESHOLD = 0,\n PRESS = 'press',\n HOLD = 'hold',\n SELECT = 'select',\n START = 'start',\n MOVE = 'move',\n END = 'end',\n CANCEL = 'cancel',\n TAP = 'tap',\n DOUBLETAP = 'doubleTap',\n RELEASE = 'release',\n GESTURESTART = 'gesturestart',\n GESTURECHANGE = 'gesturechange',\n GESTUREEND = 'gestureend',\n GESTURETAP = 'gesturetap';\n\nvar THRESHOLD = {\n 'api': 0,\n 'touch': 0,\n 'mouse': 9,\n 'pointer': 9\n};\n\nfunction touchDelta(touch1, touch2) {\n var x1 = touch1.x.location,\n y1 = touch1.y.location,\n x2 = touch2.x.location,\n y2 = touch2.y.location,\n dx = x1 - x2,\n dy = y1 - y2;\n\n return {\n center: {\n x: (x1 + x2) / 2,\n y: (y1 + y2) / 2\n },\n distance: Math.sqrt(dx * dx + dy * dy)\n };\n}\n\nfunction getTouches(e) {\n var support = getSupportedFeatures();\n var touches = [],\n originalEvent = e.originalEvent || e,\n currentTarget = e.currentTarget,\n idx = 0,\n length, changedTouches, touch;\n\n if (e.api) {\n touches.push({\n id: 2,\n event: e,\n target: e.target,\n currentTarget: e.target,\n location: e,\n type: 'api'\n });\n } else if (e.type.match(/touch/)) {\n changedTouches = originalEvent ? originalEvent.changedTouches : [];\n\n for (length = changedTouches.length; idx < length; idx++) {\n touch = changedTouches[idx];\n touches.push({\n location: touch,\n event: e,\n target: touch.target,\n currentTarget: currentTarget,\n id: touch.identifier,\n type: 'touch'\n });\n }\n } else if (support.pointers || support.msPointers) {\n touches.push({\n location: originalEvent,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n id: originalEvent.pointerId,\n type: 'pointer'\n });\n } else {\n touches.push({\n id: 1,\n event: e,\n target: e.target,\n currentTarget: currentTarget,\n location: e,\n type: 'mouse'\n });\n }\n\n return touches;\n}\nexport var TouchAxis = (function (Class) {\n function TouchAxis(axis, location) {\n Class.call(this);\n var that = this;\n\n that.support = getSupportedFeatures();\n that.invalidZeroEvents = this.support.mobileOS && this.support.mobileOS.android;\n that.axis = axis;\n that._updateLocationData(location);\n that.startLocation = that.location;\n that.velocity = that.delta = 0;\n that.timeStamp = now();\n }\n\n if ( Class ) TouchAxis.__proto__ = Class;\n TouchAxis.prototype = Object.create( Class && Class.prototype );\n TouchAxis.prototype.constructor = TouchAxis;\n\n TouchAxis.prototype.move = function move (location) {\n var that = this,\n offset = location['page' + that.axis],\n timeStamp = now(),\n timeDelta = timeStamp - that.timeStamp || 1;\n\n if (!offset && this.invalidZeroEvents) {\n return;\n }\n\n that.delta = offset - that.location;\n that._updateLocationData(location);\n that.initialDelta = offset - that.startLocation;\n that.velocity = that.delta / timeDelta;\n that.timeStamp = timeStamp;\n };\n\n TouchAxis.prototype._updateLocationData = function _updateLocationData (location) {\n var that = this,\n axis = that.axis;\n\n that.location = location['page' + axis];\n that.client = location['client' + axis];\n that.screen = location['screen' + axis];\n };\n\n return TouchAxis;\n}(Class));\n\nexport var Touch = (function (Class) {\n function Touch(userEvents, target, touchInfo) {\n Class.call(this);\n\n extend(this, {\n x: new TouchAxis('X', touchInfo.location),\n y: new TouchAxis('Y', touchInfo.location),\n type: touchInfo.type,\n useClickAsTap: userEvents.useClickAsTap,\n threshold: userEvents.threshold || THRESHOLD[touchInfo.type],\n userEvents: userEvents,\n target: target,\n currentTarget: touchInfo.currentTarget,\n initialTouch: touchInfo.target,\n id: touchInfo.id,\n pressEvent: touchInfo,\n _clicks: userEvents._clicks,\n supportDoubleTap: userEvents.supportDoubleTap,\n _moved: false,\n _finished: false\n });\n }\n\n if ( Class ) Touch.__proto__ = Class;\n Touch.prototype = Object.create( Class && Class.prototype );\n Touch.prototype.constructor = Touch;\n\n Touch.prototype.press = function press () {\n // this._holdTimeout = setTimeout($.proxy(this, '_hold'), this.userEvents.minHold);\n this._holdTimeout = setTimeout(proxy(this._hold, this), this.userEvents.minHold);\n this._trigger(PRESS, this.pressEvent);\n };\n\n Touch.prototype._tap = function _tap (touchInfo) {\n var that = this;\n\n that.userEvents._clicks++;\n\n if (that.userEvents._clicks === 1) {\n that._clickTimeout = setTimeout(function() {\n if (that.userEvents._clicks === 1) {\n that._trigger(TAP, touchInfo);\n } else {\n that._trigger(DOUBLETAP, touchInfo);\n }\n\n that.userEvents._clicks = 0;\n }, CLICK_DELAY);\n }\n };\n\n Touch.prototype._hold = function _hold () {\n this._trigger(HOLD, this.pressEvent);\n };\n\n /* eslint-disable consistent-return */\n Touch.prototype.move = function move (touchInfo) {\n var that = this;\n var preventMove = touchInfo.type !== 'api' && that.userEvents._shouldNotMove;\n\n if (that._finished || preventMove) {\n return;\n }\n\n that.x.move(touchInfo.location);\n that.y.move(touchInfo.location);\n\n if (!that._moved) {\n if (that._withinIgnoreThreshold()) {\n return;\n }\n\n if (!UserEvents.current || UserEvents.current === that.userEvents) {\n that._start(touchInfo);\n } else {\n return that.dispose();\n }\n }\n\n if (!that._finished) {\n that._trigger(MOVE, touchInfo);\n }\n };\n /* eslint-enable consistent-return */\n\n Touch.prototype.end = function end (touchInfo) {\n this.endTime = now();\n\n if (this._finished) {\n return;\n }\n\n this._finished = true;\n this._trigger(RELEASE, touchInfo);\n\n if (this._moved) {\n this._trigger(END, touchInfo);\n } else {\n if (!this.useClickAsTap) {\n if (this.supportDoubleTap) {\n this._tap(touchInfo);\n } else {\n this._trigger(TAP, touchInfo);\n }\n }\n }\n\n clearTimeout(this._holdTimeout);\n this.dispose();\n };\n\n Touch.prototype.dispose = function dispose () {\n var userEvents = this.userEvents,\n activeTouches = userEvents.touches || [];\n\n this._finished = true;\n this.pressEvent = null;\n\n clearTimeout(this._holdTimeout);\n // activeTouches.splice($.inArray(this, activeTouches), 1);\n var activeTouchIndex = activeTouches.indexOf(this);\n activeTouches.splice(activeTouchIndex, 1);\n };\n\n Touch.prototype.skip = function skip () {\n this.dispose();\n };\n\n Touch.prototype.cancel = function cancel () {\n this.dispose();\n };\n\n Touch.prototype.isMoved = function isMoved () {\n return this._moved;\n };\n\n Touch.prototype._start = function _start (touchInfo) {\n clearTimeout(this._holdTimeout);\n this.startTime = now();\n this._moved = true;\n this._trigger(START, touchInfo);\n };\n\n Touch.prototype._trigger = function _trigger (name, touchInfo) {\n var that = this,\n jQueryEvent = touchInfo.event,\n data = {\n touch: that,\n x: that.x,\n y: that.y,\n target: that.target,\n event: jQueryEvent\n };\n if (that.userEvents.notify(name, data)) {\n jQueryEvent.preventDefault();\n }\n };\n\n Touch.prototype._withinIgnoreThreshold = function _withinIgnoreThreshold () {\n var xDelta = this.x.initialDelta,\n yDelta = this.y.initialDelta;\n return Math.sqrt(xDelta * xDelta + yDelta * yDelta) <= this.threshold;\n };\n\n return Touch;\n}(Class));\n\nfunction withEachUpEvent(callback) {\n var eventMap = getEventMap(navigator.userAgent);\n var downEvents = eventMap.up.split(' '),\n idx = 0,\n length = downEvents.length;\n\n for (; idx < length; idx++) {\n callback(downEvents[idx]);\n }\n}\n\nexport var UserEvents = (function (Observable) {\n function UserEvents(element, options) {\n Observable.call(this);\n var that = this;\n var filter;\n\n var support = getSupportedFeatures();\n this.support = support;\n\n /* eslint-disable no-param-reassign */\n options = options || {};\n /* eslint-enable no-param-reassign */\n this.options = options;\n\n filter = that.filter = options.filter;\n that.threshold = options.threshold || DEFAULT_THRESHOLD;\n that.minHold = options.minHold || DEFAULT_MIN_HOLD;\n that.touches = [];\n that._maxTouches = options.multiTouch ? 2 : 1;\n that.allowSelection = options.allowSelection;\n that.captureUpIfMoved = options.captureUpIfMoved;\n that.useClickAsTap = !options.fastTap && !support.delayedClick();\n that._clicks = 0;\n that.supportDoubleTap = options.supportDoubleTap;\n\n var enableGlobalSurface = !support.touch || support.mouseAndTouchPresent;\n\n extend(that, {\n element: element,\n surface: options.global && enableGlobalSurface ?\n element.ownerDocument.documentElement :\n options.surface || element,\n stopPropagation: options.stopPropagation,\n pressed: false\n });\n\n this._surfaceMoveHandler = proxy(this._move, this);\n on(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n\n this._surfaceEndHandler = proxy(this._end, this);\n on(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n this._elementStartHandler = proxy(this._start, this);\n on(element, applyEventMap('down'), filter, this._elementStartHandler);\n\n if (that.useClickAsTap) {\n this._elementClickHandler = proxy(this._click, this);\n on(element, applyEventMap('click'), filter, this._elementClickHandler);\n }\n\n if (support.pointers || support.msPointers) {\n if (support.browser.version < 11) {\n var defaultAction = 'pinch-zoom double-tap-zoom';\n\n element.style['-ms-touch-action'] =\n options.touchAction && options.touchAction !== 'none' ?\n defaultAction + ' ' + options.touchAction :\n defaultAction;\n\n } else {\n element.style['touch-action'] = options.touchAction || 'none';\n }\n }\n if (options.preventDragEvent) {\n this._elementDragStartHandler = preventDefault;\n on(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n // element.on(kendo.applyEventMap('mousedown'), filter, {\n // root: element\n // } '_select');\n\n // todo: use root\n this._elementSelectHandler = proxy(this._select, this);\n on(element, applyEventMap('mousedown'), filter, this._elementSelectHandler);\n\n if (that.captureUpIfMoved && support.eventCapture) {\n var surfaceElement = that.surface,\n preventIfMovingProxy = proxy(that.preventIfMoving, that);\n\n withEachUpEvent(function(eventName) {\n surfaceElement.addEventListener(eventName, preventIfMovingProxy, true);\n });\n }\n\n that.bind([\n PRESS,\n HOLD,\n TAP,\n DOUBLETAP,\n START,\n MOVE,\n END,\n RELEASE,\n CANCEL,\n GESTURESTART,\n GESTURECHANGE,\n GESTUREEND,\n GESTURETAP,\n SELECT\n ], options);\n }\n\n if ( Observable ) UserEvents.__proto__ = Observable;\n UserEvents.prototype = Object.create( Observable && Observable.prototype );\n UserEvents.prototype.constructor = UserEvents;\n\n UserEvents.prototype.preventIfMoving = function preventIfMoving (e) {\n if (this._isMoved()) {\n e.preventDefault();\n }\n };\n\n UserEvents.prototype.destroy = function destroy () {\n var that = this;\n var options = this.options;\n var element = this.element;\n\n if (that._destroyed) {\n return;\n }\n\n that._destroyed = true;\n\n if (that.captureUpIfMoved && this.support.eventCapture) {\n var surfaceElement = that.surface;\n withEachUpEvent(function(eventName) {\n surfaceElement.removeEventListener(eventName, that.preventIfMoving);\n });\n }\n\n off(that.surface, applyEventMap('move'), this._surfaceMoveHandler);\n off(that.surface, applyEventMap('up cancel'), this._surfaceEndHandler);\n\n off(element, applyEventMap('down'), this._elementStartHandler);\n\n if (that.useClickAsTap) {\n off(element, applyEventMap('click'), this._elementClickHandler);\n }\n\n if (options.preventDragEvent) {\n off(element, applyEventMap('dragstart'), this._elementDragStartHandler);\n }\n\n off(element, applyEventMap('mousedown'), this._elementSelectHandler);\n\n that._disposeAll();\n that.unbind();\n\n delete that.surface;\n delete that.element;\n delete that.currentTarget;\n };\n\n UserEvents.prototype.capture = function capture () {\n UserEvents.current = this;\n };\n\n UserEvents.prototype.cancel = function cancel () {\n this._disposeAll();\n this.trigger(CANCEL);\n };\n\n /* eslint-disable indent */\n UserEvents.prototype.notify = function notify (event, data) {\n var that = this,\n touches = that.touches;\n var eventName = event;\n\n if (this._isMultiTouch()) {\n switch (eventName) {\n case MOVE:\n eventName = GESTURECHANGE;\n break;\n case END:\n eventName = GESTUREEND;\n break;\n case TAP:\n eventName = GESTURETAP;\n break;\n default:\n break;\n }\n\n extend(data, {\n touches: touches\n }, touchDelta(touches[0], touches[1]));\n }\n\n return this.trigger(eventName, extend(data, {\n type: eventName\n }));\n };\n /* eslint-enable indent */\n\n UserEvents.prototype.press = function press (x, y, target) {\n this._apiCall('_start', x, y, target);\n };\n\n UserEvents.prototype.move = function move (x, y) {\n this._apiCall('_move', x, y);\n };\n\n UserEvents.prototype.end = function end (x, y) {\n this._apiCall('_end', x, y);\n };\n\n UserEvents.prototype._isMultiTouch = function _isMultiTouch () {\n return this.touches.length > 1;\n };\n\n UserEvents.prototype._maxTouchesReached = function _maxTouchesReached () {\n return this.touches.length >= this._maxTouches;\n };\n\n UserEvents.prototype._disposeAll = function _disposeAll () {\n var touches = this.touches;\n while (touches.length > 0) {\n touches.pop().dispose();\n }\n };\n\n UserEvents.prototype._isMoved = function _isMoved () {\n return grep(this.touches, function(touch) {\n return touch.isMoved();\n }).length;\n };\n\n UserEvents.prototype._select = function _select (e) {\n if (!this.allowSelection || this.trigger(SELECT, { event: e })) {\n e.preventDefault();\n }\n };\n\n UserEvents.prototype._start = function _start (e) {\n var that = this,\n idx = 0,\n filter = that.filter,\n target,\n touches = getTouches(e),\n length = touches.length,\n touch,\n which = e.which;\n\n if (which && which > 1 || that._maxTouchesReached()) {\n return;\n }\n\n UserEvents.current = null;\n that.currentTarget = e.currentTarget;\n\n if (that.stopPropagation) {\n e.stopPropagation();\n }\n\n for (; idx < length; idx++) {\n if (that._maxTouchesReached()) {\n break;\n }\n\n touch = touches[idx];\n\n if (filter) {\n target = touch.currentTarget;\n } else {\n target = that.element;\n }\n\n if (target && target.length === 0) {\n continue;\n }\n\n touch = new Touch(that, target, touch);\n that.touches.push(touch);\n touch.press();\n\n if (that._isMultiTouch()) {\n that.notify('gesturestart', {});\n }\n }\n };\n\n UserEvents.prototype._move = function _move (e) {\n this._eachTouch('move', e);\n };\n\n UserEvents.prototype._end = function _end (e) {\n this._eachTouch('end', e);\n };\n\n UserEvents.prototype._click = function _click (e) {\n var data = {\n touch: {\n initialTouch: e.target,\n target: e.currentTarget,\n endTime: now(),\n x: {\n location: e.pageX,\n client: e.clientX\n },\n y: {\n location: e.pageY,\n client: e.clientY\n }\n },\n x: e.pageX,\n y: e.pageY,\n target: e.currentTarget,\n event: e,\n type: 'tap'\n };\n\n if (this.trigger('tap', data)) {\n e.preventDefault();\n }\n };\n\n UserEvents.prototype._eachTouch = function _eachTouch (methodName, e) {\n var that = this,\n dict = {},\n touches = getTouches(e),\n activeTouches = that.touches,\n idx,\n touch,\n touchInfo,\n matchingTouch;\n\n for (idx = 0; idx < activeTouches.length; idx++) {\n touch = activeTouches[idx];\n dict[touch.id] = touch;\n }\n\n for (idx = 0; idx < touches.length; idx++) {\n touchInfo = touches[idx];\n matchingTouch = dict[touchInfo.id];\n\n if (matchingTouch) {\n matchingTouch[methodName](touchInfo);\n }\n }\n };\n\n UserEvents.prototype._apiCall = function _apiCall (type, x, y, target) {\n this[type]({\n api: true,\n pageX: x,\n pageY: y,\n clientX: x,\n clientY: y,\n target: target || this.element,\n stopPropagation: noop,\n preventDefault: noop\n });\n };\n\n UserEvents.defaultThreshold = function defaultThreshold (value) {\n DEFAULT_THRESHOLD = value;\n };\n\n UserEvents.minHold = function minHold (value) {\n DEFAULT_MIN_HOLD = value;\n };\n\n return UserEvents;\n}(Observable));\n","// todo: extract to a separate place\n\nimport {\n Class,\n deepExtend,\n addClass,\n isFunction,\n setDefaultOptions\n} from '../../common';\n\nimport {\n convertToHtml,\n prepend,\n wrapInner,\n contains,\n hasNativeScrolling,\n on,\n off,\n proxy,\n wheelDeltaY,\n setDefaultEvents\n} from '../utils';\n\nimport {\n Transition,\n Animation\n} from './fx';\n\nimport {\n Pane,\n PaneDimensions,\n Movable,\n TapCapture\n} from './draggable';\n\nimport {\n UserEvents\n} from './user-events';\n\nimport {\n Observable\n} from './observable';\n\nvar\n extend = Object.assign,\n abs = Math.abs,\n SNAPBACK_DURATION = 500,\n SCROLLBAR_OPACITY = 0.7,\n FRICTION = 0.96,\n VELOCITY_MULTIPLIER = 10,\n MAX_VELOCITY = 55,\n OUT_OF_BOUNDS_FRICTION = 0.5,\n ANIMATED_SCROLLER_PRECISION = 5,\n // SCROLLER_RELEASE_CLASS = 'km-scroller-release',\n // SCROLLER_REFRESH_CLASS = 'km-scroller-refresh',\n PULL = 'pull',\n CHANGE = 'change',\n RESIZE = 'resize',\n SCROLL = 'scroll',\n MOUSE_WHEEL_ID = 2;\n\nvar ZoomSnapBack = (function (Animation) {\n function ZoomSnapBack(options) {\n Animation.call(this, options);\n var that = this;\n extend(that, options);\n that.userEvents.bind('gestureend', that.start.bind(this));\n that.tapCapture.bind('press', that.cancel.bind(this));\n }\n\n if ( Animation ) ZoomSnapBack.__proto__ = Animation;\n ZoomSnapBack.prototype = Object.create( Animation && Animation.prototype );\n ZoomSnapBack.prototype.constructor = ZoomSnapBack;\n\n ZoomSnapBack.prototype.enabled = function enabled () {\n return this.movable.scale < this.dimensions.minScale;\n };\n\n ZoomSnapBack.prototype.done = function done () {\n return this.dimensions.minScale - this.movable.scale < 0.01;\n };\n\n ZoomSnapBack.prototype.tick = function tick () {\n var movable = this.movable;\n movable.scaleWith(1.1);\n this.dimensions.rescale(movable.scale);\n };\n\n ZoomSnapBack.prototype.onEnd = function onEnd () {\n var movable = this.movable;\n movable.scaleTo(this.dimensions.minScale);\n this.dimensions.rescale(movable.scale);\n };\n\n return ZoomSnapBack;\n}(Animation));\n\nvar DragInertia = (function (Animation) {\n function DragInertia(options) {\n Animation.call(this);\n var that = this;\n\n extend(that, options, {\n transition: new Transition({\n axis: options.axis,\n movable: options.movable,\n onEnd: function onEnd() {\n that._end();\n }\n })\n });\n\n that.tapCapture.bind('press', function() {\n that.cancel();\n });\n\n that.userEvents.bind('end', proxy(that.start, that));\n that.userEvents.bind('gestureend', proxy(that.start, that));\n that.userEvents.bind('tap', proxy(that.onEnd, that));\n }\n\n if ( Animation ) DragInertia.__proto__ = Animation;\n DragInertia.prototype = Object.create( Animation && Animation.prototype );\n DragInertia.prototype.constructor = DragInertia;\n\n DragInertia.prototype.onCancel = function onCancel () {\n this.transition.cancel();\n };\n\n DragInertia.prototype.freeze = function freeze (location) {\n var that = this;\n that.cancel();\n that._moveTo(location);\n };\n\n DragInertia.prototype.onEnd = function onEnd () {\n var that = this;\n if (that.paneAxis.outOfBounds()) {\n that._snapBack();\n } else {\n that._end();\n }\n };\n\n DragInertia.prototype.done = function done () {\n return abs(this.velocity) < 1;\n };\n\n DragInertia.prototype.start = function start (e) {\n var that = this,\n velocity;\n if (!that.dimension.enabled) {\n return;\n }\n if (that.paneAxis.outOfBounds()) {\n if (that.transition._started) {\n that.transition.cancel();\n that.velocity = Math.min(e.touch[that.axis].velocity * that.velocityMultiplier, MAX_VELOCITY);\n Animation.prototype.start.call(this);\n } else {\n that._snapBack();\n }\n } else {\n velocity = e.touch.id === MOUSE_WHEEL_ID ? 0 : e.touch[that.axis].velocity;\n that.velocity = Math.max(Math.min(velocity * that.velocityMultiplier, MAX_VELOCITY), -MAX_VELOCITY);\n that.tapCapture.captureNext();\n Animation.prototype.start.call(this);\n }\n };\n\n DragInertia.prototype.tick = function tick () {\n var that = this,\n dimension = that.dimension,\n friction = that.paneAxis.outOfBounds() ? OUT_OF_BOUNDS_FRICTION : that.friction,\n delta = that.velocity *= friction,\n location = that.movable[that.axis] + delta;\n\n if (!that.elastic && dimension.outOfBounds(location)) {\n location = Math.max(Math.min(location, dimension.max), dimension.min);\n that.velocity = 0;\n }\n\n that.movable.moveAxis(that.axis, location);\n };\n\n DragInertia.prototype._end = function _end () {\n this.tapCapture.cancelCapture();\n this.end();\n };\n\n DragInertia.prototype._snapBack = function _snapBack () {\n var that = this,\n dimension = that.dimension,\n snapBack = that.movable[that.axis] > dimension.max ? dimension.max : dimension.min;\n\n that._moveTo(snapBack);\n };\n\n DragInertia.prototype._moveTo = function _moveTo (location) {\n this.transition.moveTo({\n location: location,\n duration: SNAPBACK_DURATION,\n ease: Transition.easeOutExpo\n });\n };\n\n return DragInertia;\n}(Animation));\n\nvar AnimatedScroller = (function (Animation) {\n function AnimatedScroller(options) {\n Animation.call(this, options);\n var that = this;\n\n extend(that, options, {\n origin: {},\n destination: {},\n offset: {}\n });\n }\n\n if ( Animation ) AnimatedScroller.__proto__ = Animation;\n AnimatedScroller.prototype = Object.create( Animation && Animation.prototype );\n AnimatedScroller.prototype.constructor = AnimatedScroller;\n\n AnimatedScroller.prototype.tick = function tick () {\n this._updateCoordinates();\n this.moveTo(this.origin);\n };\n\n AnimatedScroller.prototype.done = function done () {\n return abs(this.offset.y) < ANIMATED_SCROLLER_PRECISION && abs(this.offset.x) < ANIMATED_SCROLLER_PRECISION;\n };\n\n AnimatedScroller.prototype.onEnd = function onEnd () {\n this.moveTo(this.destination);\n if (this.callback) {\n this.callback.call();\n }\n };\n\n AnimatedScroller.prototype.setCoordinates = function setCoordinates (from, to) {\n this.offset = {};\n this.origin = from;\n this.destination = to;\n };\n\n /* eslint-disable no-param-reassign */\n AnimatedScroller.prototype.setCallback = function setCallback (callback) {\n if (callback && isFunction(callback)) {\n this.callback = callback;\n } else {\n callback = undefined;\n }\n };\n /* eslint-enable no-param-reassign */\n\n AnimatedScroller.prototype._updateCoordinates = function _updateCoordinates () {\n this.offset = {\n x: (this.destination.x - this.origin.x) / 4,\n y: (this.destination.y - this.origin.y) / 4\n };\n this.origin = {\n y: this.origin.y + this.offset.y,\n x: this.origin.x + this.offset.x\n };\n };\n\n return AnimatedScroller;\n}(Animation));\n\nvar ScrollBar = (function (Class) {\n function ScrollBar(options) {\n Class.call(this);\n var that = this,\n horizontal = options.axis === 'x';\n\n var orientation = (horizontal ? 'horizontal' : 'vertical');\n var element = convertToHtml('
');\n\n extend(that, options, {\n element: element,\n elementSize: 0,\n movable: new Movable(element),\n scrollMovable: options.movable,\n alwaysVisible: options.alwaysVisible,\n size: horizontal ? 'width' : 'height'\n });\n\n that.scrollMovable.bind(CHANGE, that.refresh.bind(that));\n\n that.container.appendChild(element);\n\n if (options.alwaysVisible) {\n that.show();\n }\n }\n\n if ( Class ) ScrollBar.__proto__ = Class;\n ScrollBar.prototype = Object.create( Class && Class.prototype );\n ScrollBar.prototype.constructor = ScrollBar;\n\n ScrollBar.prototype.refresh = function refresh () {\n var that = this,\n axis = that.axis,\n dimension = that.dimension,\n paneSize = dimension.size,\n scrollMovable = that.scrollMovable,\n sizeRatio = paneSize / dimension.total,\n position = Math.round(-scrollMovable[axis] * sizeRatio),\n size = Math.round(paneSize * sizeRatio);\n if (sizeRatio >= 1) {\n this.element.style.display = \"none\";\n } else {\n this.element.style.display = \"\";\n }\n if (position + size > paneSize) {\n size = paneSize - position;\n } else if (position < 0) {\n size += position;\n position = 0;\n }\n if (that.elementSize !== size) {\n that.element.style[that.size] = size + 'px';\n that.elementSize = size;\n }\n that.movable.moveAxis(axis, position);\n };\n\n ScrollBar.prototype.show = function show () {\n this.element.style.opacity = SCROLLBAR_OPACITY;\n this.element.style.visibility = \"visible\";\n };\n\n ScrollBar.prototype.hide = function hide () {\n if (!this.alwaysVisible) {\n this.element.style.opacity = 0;\n }\n };\n\n return ScrollBar;\n}(Class));\n\n// export class Scroller extends Class {\nexport var Scroller = (function (Observable) {\n function Scroller(element, options) {\n Observable.call(this);\n var that = this;\n this.element = element;\n\n this._initOptions(options);\n\n var hasScrolling = hasNativeScrolling(navigator.userAgent);\n that._native = that.options.useNative && hasScrolling;\n var scrollHeader = convertToHtml('
');\n\n if (that._native) {\n addClass(element, 'km-native-scroller');\n prepend(scrollHeader, element);\n\n extend(that, {\n scrollElement: element,\n fixedContainer: element.children[0]\n });\n\n return;\n }\n\n element.style.overflow = \"hidden\";\n addClass(element, 'km-scroll-wrapper');\n\n var scrollContainer = convertToHtml('
');\n wrapInner(element, scrollContainer);\n prepend(scrollHeader, element);\n\n var inner = element.children[1],\n tapCapture = new TapCapture(element),\n movable = new Movable(inner),\n\n dimensions = new PaneDimensions({\n element: inner,\n container: element,\n forcedEnabled: that.options.zoom\n }),\n avoidScrolling = this.options.avoidScrolling,\n\n userEvents = new UserEvents(element, {\n touchAction: 'pan-y',\n fastTap: true,\n allowSelection: true,\n preventDragEvent: true,\n captureUpIfMoved: true,\n multiTouch: that.options.zoom,\n supportDoubleTap: that.options.supportDoubleTap,\n start: function start(e) {\n dimensions.refresh();\n var velocityX = abs(e.x.velocity),\n velocityY = abs(e.y.velocity),\n horizontalSwipe = velocityX * 2 >= velocityY,\n originatedFromFixedContainer = contains(that.fixedContainer, e.event.target),\n verticalSwipe = velocityY * 2 >= velocityX;\n if (!originatedFromFixedContainer && !avoidScrolling(e) && that.enabled && (dimensions.x.enabled && horizontalSwipe || dimensions.y.enabled && verticalSwipe)) {\n userEvents.capture();\n } else {\n userEvents.cancel();\n }\n }\n }),\n\n pane = new Pane({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n elastic: that.options.elastic\n }),\n\n zoomSnapBack = new ZoomSnapBack({\n movable: movable,\n dimensions: dimensions,\n userEvents: userEvents,\n tapCapture: tapCapture\n }),\n\n animatedScroller = new AnimatedScroller({\n moveTo: function moveTo(coordinates) {\n that.scrollTo(coordinates.x, coordinates.y);\n }\n });\n\n movable.bind(CHANGE, function() {\n that.scrollTop = -movable.y;\n that.scrollLeft = -movable.x;\n that.trigger(SCROLL, {\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n });\n\n if (that.options.mousewheelScrolling) {\n this._wheelScrollHandler = this._wheelScroll.bind(this);\n on(element, 'DOMMouseScroll mousewheel', this._wheelScrollHandler);\n }\n\n extend(that, {\n movable: movable,\n dimensions: dimensions,\n zoomSnapBack: zoomSnapBack,\n animatedScroller: animatedScroller,\n userEvents: userEvents,\n pane: pane,\n tapCapture: tapCapture,\n pulled: false,\n enabled: true,\n scrollElement: inner,\n scrollTop: 0,\n scrollLeft: 0,\n fixedContainer: element.children[0]\n });\n\n that._initAxis('x');\n that._initAxis('y');\n\n that._wheelEnd = function() {\n that._wheel = false;\n that.userEvents.end(0, that._wheelY);\n };\n\n dimensions.refresh();\n\n if (that.options.pullToRefresh) {\n that._initPullToRefresh();\n }\n }\n\n if ( Observable ) Scroller.__proto__ = Observable;\n Scroller.prototype = Object.create( Observable && Observable.prototype );\n Scroller.prototype.constructor = Scroller;\n\n Scroller.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Scroller.prototype._wheelScroll = function _wheelScroll (e) {\n if (e.ctrlKey) {\n return;\n }\n if (!this._wheel) {\n this._wheel = true;\n this._wheelY = 0;\n this.userEvents.press(0, this._wheelY);\n }\n\n clearTimeout(this._wheelTimeout);\n this._wheelTimeout = setTimeout(this._wheelEnd, 50);\n var delta = wheelDeltaY(e);\n\n if (delta) {\n this._wheelY += delta;\n this.userEvents.move(0, this._wheelY);\n }\n\n e.preventDefault();\n };\n\n Scroller.prototype.makeVirtual = function makeVirtual () {\n this.dimensions.y.makeVirtual();\n };\n\n Scroller.prototype.virtualSize = function virtualSize (min, max) {\n this.dimensions.y.virtualSize(min, max);\n };\n\n Scroller.prototype.height = function height () {\n return this.dimensions.y.size;\n };\n\n Scroller.prototype.scrollHeight = function scrollHeight () {\n return this.scrollElement.scrollHeight;\n };\n\n Scroller.prototype.scrollWidth = function scrollWidth () {\n return this.scrollElement.scrollWidth;\n };\n\n Scroller.prototype._resize = function _resize () {\n if (!this._native) {\n this.contentResized();\n }\n };\n\n Scroller.prototype.setOptions = function setOptions (options) {\n var that = this;\n\n this._initOptions(options);\n\n if (options.pullToRefresh) {\n that._initPullToRefresh();\n }\n };\n\n Scroller.prototype.reset = function reset () {\n if (this._native) {\n this.scrollElement.scrollTop(0);\n } else {\n this.movable.moveTo({\n x: 0,\n y: 0\n });\n this._scale(1);\n }\n };\n\n Scroller.prototype.contentResized = function contentResized () {\n this.dimensions.refresh();\n if (this.pane.x.outOfBounds()) {\n this.movable.moveAxis('x', this.dimensions.x.min);\n }\n if (this.pane.y.outOfBounds()) {\n this.movable.moveAxis('y', this.dimensions.y.min);\n }\n };\n\n Scroller.prototype.zoomOut = function zoomOut () {\n var dimensions = this.dimensions;\n dimensions.refresh();\n this._scale(dimensions.fitScale);\n this.movable.moveTo(dimensions.centerCoordinates());\n };\n\n Scroller.prototype.enable = function enable () {\n this.enabled = true;\n };\n\n Scroller.prototype.disable = function disable () {\n this.enabled = false;\n };\n\n Scroller.prototype.scrollTo = function scrollTo (x, y) {\n if (this._native) {\n this.scrollElement.scrollLeft(abs(x));\n this.scrollElement.scrollTop(abs(y));\n } else {\n this.dimensions.refresh();\n this.movable.moveTo({\n x: x,\n y: y\n });\n }\n };\n\n Scroller.prototype.animatedScrollTo = function animatedScrollTo (x, y, callback) {\n var from, to;\n if (this._native) {\n this.scrollTo(x, y);\n } else {\n from = {\n x: this.movable.x,\n y: this.movable.y\n };\n to = {\n x: x,\n y: y\n };\n this.animatedScroller.setCoordinates(from, to);\n this.animatedScroller.setCallback(callback);\n this.animatedScroller.start();\n }\n };\n\n // kept for API compatibility, not used\n Scroller.prototype.pullHandled = function pullHandled () {\n // let that = this;\n\n // removeClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n // that.hintContainer.innerHTML = that.pullTemplate({}));\n\n // that.yinertia.onEnd();\n // that.xinertia.onEnd();\n // that.userEvents.cancel();\n };\n\n Scroller.prototype.destroy = function destroy () {\n var element = this.element;\n\n off(element, 'DOMMouseScroll mousewheel', this._wheelScrollHandler);\n\n if (this.userEvents) {\n this.userEvents.destroy();\n }\n };\n\n Scroller.prototype._scale = function _scale (scale) {\n this.dimensions.rescale(scale);\n this.movable.scaleTo(scale);\n };\n\n Scroller.prototype._initPullToRefresh = function _initPullToRefresh () {\n };\n\n // kept for API compatibility, not used\n Scroller.prototype._dragEnd = function _dragEnd () {\n // let that = this;\n\n // if (!that.pulled) {\n // return;\n // }\n\n // that.pulled = false;\n\n // removeClass(that.refreshHint, SCROLLER_RELEASE_CLASS);\n // addClass(that.refreshHint, SCROLLER_REFRESH_CLASS);\n\n // that.hintContainer.innerHTML = that.refreshTemplate({});\n\n // that.yinertia.freeze(that.options.pullOffset / 2);\n // that.trigger('pull');\n };\n\n // kept for API compatibility, not used\n Scroller.prototype._paneChange = function _paneChange () {\n // let that = this;\n // if (that.movable.y / OUT_OF_BOUNDS_FRICTION > that.options.pullOffset) {\n // if (!that.pulled) {\n // that.pulled = true;\n // that.refreshHint.removeClass(SCROLLER_REFRESH_CLASS).addClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.releaseTemplate({}));\n // that.hintContainer.html(that.releaseTemplate({}));\n // }\n // } else if (that.pulled) {\n // that.pulled = false;\n // that.refreshHint.removeClass(SCROLLER_RELEASE_CLASS);\n // that.hintContainer.html(that.pullTemplate({}));\n // }\n };\n\n Scroller.prototype._initAxis = function _initAxis (axis) {\n var that = this,\n movable = that.movable,\n dimension = that.dimensions[axis],\n tapCapture = that.tapCapture,\n paneAxis = that.pane[axis],\n scrollBar = new ScrollBar({\n axis: axis,\n movable: movable,\n dimension: dimension,\n container: that.element,\n alwaysVisible: that.options.visibleScrollHints\n });\n\n dimension.bind(CHANGE, function() {\n scrollBar.refresh();\n });\n\n paneAxis.bind(CHANGE, function() {\n scrollBar.show();\n });\n\n that[axis + 'inertia'] = new DragInertia({\n axis: axis,\n paneAxis: paneAxis,\n movable: movable,\n tapCapture: tapCapture,\n userEvents: that.userEvents,\n dimension: dimension,\n elastic: that.options.elastic,\n friction: that.options.friction || FRICTION,\n velocityMultiplier: that.options.velocityMultiplier || VELOCITY_MULTIPLIER,\n end: function end() {\n scrollBar.hide();\n that.trigger('scrollEnd', {\n axis: axis,\n scrollTop: that.scrollTop,\n scrollLeft: that.scrollLeft\n });\n }\n });\n };\n\n return Scroller;\n}(Observable));\n\nsetDefaultOptions(Scroller, {\n name: 'Scroller',\n zoom: false,\n pullOffset: 140,\n visibleScrollHints: false,\n elastic: true,\n useNative: false,\n mousewheelScrolling: true,\n avoidScrolling: function avoidScrolling() {\n return false;\n },\n pullToRefresh: false,\n messages: {\n pullTemplate: 'Pull to refresh',\n releaseTemplate: 'Release to refresh',\n refreshTemplate: 'Refreshing'\n }\n});\n\nsetDefaultEvents(Scroller, [\n PULL,\n SCROLL,\n RESIZE\n]);\n\n","var MapService = function MapService(widget, context) {\n if ( context === void 0 ) context = {};\n\n this.sender = context.sender || widget;\n this.widget = widget;\n this.rtl = Boolean(context.rtl);\n};\n\nMapService.prototype.notify = function notify (name, args) {\n if (this.widget) {\n this.widget.trigger(name, args);\n }\n};\n\nexport default MapService;\n","import {\n geometry as g\n} from '@progress/kendo-drawing';\n\nimport {\n addClass,\n setDefaultOptions,\n valueOrDefault,\n defined,\n mousewheelDelta,\n limitValue,\n deepExtend,\n elementOffset,\n isArray,\n round\n} from '../common';\n\nimport {\n EPSG3857\n} from './crs';\n\nimport {\n Attribution\n} from './attribution';\n\nimport {\n Navigator\n} from './navigator';\n\nimport {\n ZoomControl\n} from './zoom';\n\nimport {\n Location\n} from './location';\n\nimport {\n Extent\n} from './extent';\n\nimport { Tooltip } from './tooltip/tooltip';\n\nimport {\n TileLayer\n} from './layers/tile';\n\nimport {\n BubbleLayer\n} from './layers/bubble';\n\nimport {\n ShapeLayer\n} from './layers/shape';\n\nimport {\n MarkerLayer\n} from './layers/marker';\n\nimport {\n removeChildren,\n setDefaultEvents,\n toHyphens,\n proxy,\n now,\n on,\n off,\n getSupportedFeatures,\n convertToHtml\n} from './utils';\n\nimport {\n Scroller\n} from './scroller/scroller';\n\nimport {\n Observable\n} from './scroller/observable';\n\nimport MapService from './../services/map-service';\n\nimport { CENTER_CHANGE, INIT, ZOOM_CHANGE } from './constants';\n\nvar math = Math,\n min = math.min,\n pow = math.pow,\n Point = g.Point,\n MARKER = \"marker\",\n LOCATION = \"location\",\n FRICTION = 0.9,\n FRICTION_MOBILE = 0.93,\n MOUSEWHEEL = 'DOMMouseScroll mousewheel',\n VELOCITY_MULTIPLIER = 5,\n DEFAULT_ZOOM_RATE = 1;\n\nvar layersMap = {\n bubble: BubbleLayer,\n shape: ShapeLayer,\n tile: TileLayer\n};\nlayersMap[MARKER] = MarkerLayer;\n\nfunction renderPos(pos) {\n var result = [];\n\n if (pos) {\n var parts = toHyphens(pos).split(\"-\");\n\n for (var i = 0; i < parts.length; i++) {\n result.push(\"k-pos-\" + parts[i]);\n }\n }\n\n return result.join(\" \");\n}\n\nvar Map = (function (Observable) {\n function Map(element, options, themeOptions, context) {\n if ( options === void 0 ) options = {};\n if ( themeOptions === void 0 ) themeOptions = {};\n if ( context === void 0 ) context = {};\n\n Observable.call(this);\n\n this._init(element, options, themeOptions, context);\n }\n\n if ( Observable ) Map.__proto__ = Observable;\n Map.prototype = Object.create( Observable && Observable.prototype );\n Map.prototype.constructor = Map;\n\n Map.prototype.destroy = function destroy () {\n var this$1 = this;\n\n this.scroller.destroy();\n\n if (this._tooltip) {\n this._tooltip.destroy();\n }\n\n if (this.navigator) {\n this.navigator.destroy();\n }\n if (this.attribution) {\n this.attribution.destroy();\n }\n if (this.zoomControl) {\n this.zoomControl.destroy();\n }\n\n if (isArray(this.markers)) {\n this.markers.forEach(function (markerLayer) {\n markerLayer.destroy();\n });\n } else {\n this.markers.destroy();\n }\n\n for (var i = 0; i < this.layers.length; i++) {\n this$1.layers[i].destroy();\n }\n\n off(this.element, MOUSEWHEEL, this._mousewheelHandler);\n\n Observable.prototype.destroy.call(this);\n };\n\n Map.prototype._init = function _init (element, options, themeOptions, context) {\n if ( options === void 0 ) options = {};\n if ( themeOptions === void 0 ) themeOptions = {};\n if ( context === void 0 ) context = {};\n\n this.support = getSupportedFeatures();\n this.context = context;\n\n this.initObserver(context);\n this.initServices(context);\n this._notifyObserver(INIT);\n\n this._initOptions(options);\n this._setEvents(options);\n this.crs = new EPSG3857();\n\n this._initElement(element);\n\n this._viewOrigin = this._getOrigin();\n\n this._tooltip = this._createTooltip();\n this._initScroller();\n this._initMarkers();\n this._initControls();\n this._initLayers();\n this._reset();\n\n this._mousewheelHandler = this._mousewheel.bind(this);\n on(this.element, MOUSEWHEEL, this._mousewheelHandler);\n };\n\n Map.prototype._initOptions = function _initOptions (options) {\n this.options = deepExtend({}, this.options, options);\n };\n\n Map.prototype._initElement = function _initElement (element) {\n this.element = element;\n\n addClass(element, \"k-map\");\n element.style.position = \"relative\";\n element.setAttribute(\"data-role\", \"map\");\n removeChildren(element);\n\n var div = convertToHtml(\"
\");\n this.element.appendChild(div);\n };\n\n Map.prototype.initServices = function initServices (context) {\n if ( context === void 0 ) context = {};\n\n this.widgetService = new MapService(this, context);\n };\n\n Map.prototype.initObserver = function initObserver (context) {\n if ( context === void 0 ) context = {};\n\n this.observers = [];\n this.addObserver(context.observer);\n };\n\n Map.prototype.addObserver = function addObserver (observer) {\n if (observer) {\n this.observers.push(observer);\n }\n };\n\n Map.prototype.removeObserver = function removeObserver (observer) {\n var index = this.observers.indexOf(observer);\n\n if (index >= 0) {\n this.observers.splice(index, 1);\n }\n };\n\n Map.prototype.requiresHandlers = function requiresHandlers (eventNames) {\n var observers = this.observers;\n\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].requiresHandlers(eventNames)) {\n return true;\n }\n }\n };\n\n Map.prototype.trigger = function trigger (name, args) {\n if ( args === void 0 ) args = {};\n\n args.sender = this;\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n if (!isDefaultPrevented) {\n Observable.prototype.trigger.call(this, name, args);\n }\n\n return isDefaultPrevented;\n };\n\n Map.prototype._notifyObserver = function _notifyObserver (name, args) {\n if ( args === void 0 ) args = {};\n\n args.sender = this;\n\n var observers = this.observers;\n var isDefaultPrevented = false;\n\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, args)) {\n isDefaultPrevented = true;\n }\n }\n\n return isDefaultPrevented;\n };\n\n Map.prototype.zoom = function zoom (level) {\n var options = this.options;\n var result;\n\n if (defined(level)) {\n var zoomLevel = math.round(limitValue(level, options.minZoom, options.maxZoom));\n\n if (options.zoom !== zoomLevel) {\n options.zoom = zoomLevel;\n this.widgetService.notify(ZOOM_CHANGE, { zoom: options.zoom });\n\n this._reset();\n }\n result = this;\n } else {\n result = options.zoom;\n }\n\n return result;\n };\n\n Map.prototype.center = function center (center$1) {\n var result;\n\n if (center$1) {\n var current = Location.create(center$1);\n var previous = Location.create(this.options.center);\n if (!current.equals(previous)) {\n this.options.center = current.toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n this._reset();\n }\n\n result = this;\n } else {\n result = Location.create(this.options.center);\n }\n\n return result;\n };\n\n Map.prototype.extent = function extent (extent$1) {\n var result;\n\n if (extent$1) {\n this._setExtent(extent$1);\n result = this;\n } else {\n result = this._getExtent();\n }\n\n return result;\n };\n\n Map.prototype.setOptions = function setOptions (options) {\n if ( options === void 0 ) options = {};\n\n var element = this.element;\n\n this.destroy();\n removeChildren(element);\n this._init(element, options, {}, this.context);\n\n this._reset();\n };\n\n Map.prototype.locationToLayer = function locationToLayer (location, zoom) {\n var clamp = !this.options.wraparound;\n var locationObject = Location.create(location);\n\n return this.crs.toPoint(locationObject, this._layerSize(zoom), clamp);\n };\n\n Map.prototype.layerToLocation = function layerToLocation (point, zoom) {\n var clamp = !this.options.wraparound;\n var pointObject = Point.create(point);\n\n return this.crs.toLocation(pointObject, this._layerSize(zoom), clamp);\n };\n\n Map.prototype.locationToView = function locationToView (location) {\n var locationObject = Location.create(location);\n var origin = this.locationToLayer(this._viewOrigin);\n var point = this.locationToLayer(locationObject);\n\n return point.translateWith(origin.scale(-1));\n };\n\n Map.prototype.viewToLocation = function viewToLocation (point, zoom) {\n var origin = this.locationToLayer(this._getOrigin(), zoom);\n var pointObject = Point.create(point);\n var pointResult = pointObject.clone().translateWith(origin);\n\n return this.layerToLocation(pointResult, zoom);\n };\n\n Map.prototype.eventOffset = function eventOffset (e) {\n var x;\n var y;\n var offset = elementOffset(this.element);\n\n if ((e.x && e.x[LOCATION]) || (e.y && e.y[LOCATION])) {\n x = e.x[LOCATION] - offset.left;\n y = e.y[LOCATION] - offset.top;\n } else {\n var event = e.originalEvent || e;\n x = valueOrDefault(event.pageX, event.clientX) - offset.left;\n y = valueOrDefault(event.pageY, event.clientY) - offset.top;\n }\n\n var point = new g.Point(x, y);\n\n return point;\n };\n\n Map.prototype.eventToView = function eventToView (e) {\n var cursor = this.eventOffset(e);\n return this.locationToView(this.viewToLocation(cursor));\n };\n\n Map.prototype.eventToLayer = function eventToLayer (e) {\n return this.locationToLayer(this.eventToLocation(e));\n };\n\n Map.prototype.eventToLocation = function eventToLocation (e) {\n var cursor = this.eventOffset(e);\n return this.viewToLocation(cursor);\n };\n\n Map.prototype.viewSize = function viewSize () {\n var element = this.element;\n var scale = this._layerSize();\n var width = element.clientWidth;\n\n if (!this.options.wraparound) {\n width = min(scale, width);\n }\n\n return {\n width: width,\n height: min(scale, element.clientHeight)\n };\n };\n\n Map.prototype.exportVisual = function exportVisual () {\n this._reset();\n return false;\n };\n\n Map.prototype.hideTooltip = function hideTooltip () {\n if (this._tooltip) {\n this._tooltip.hide();\n }\n };\n\n Map.prototype._setOrigin = function _setOrigin (origin, zoom) {\n var size = this.viewSize(),\n topLeft;\n\n var originLocation = this._origin = Location.create(origin);\n topLeft = this.locationToLayer(originLocation, zoom);\n topLeft.x += size.width / 2;\n topLeft.y += size.height / 2;\n this.options.center = this.layerToLocation(topLeft, zoom).toArray();\n this.widgetService.notify(CENTER_CHANGE, { center: this.options.center });\n\n return this;\n };\n\n Map.prototype._getOrigin = function _getOrigin (invalidate) {\n var size = this.viewSize(),\n topLeft;\n\n if (invalidate || !this._origin) {\n topLeft = this.locationToLayer(this.center());\n topLeft.x -= size.width / 2;\n topLeft.y -= size.height / 2;\n this._origin = this.layerToLocation(topLeft);\n }\n\n return this._origin;\n };\n\n Map.prototype._setExtent = function _setExtent (newExtent) {\n var this$1 = this;\n\n var raw = Extent.create(newExtent);\n var se = raw.se.clone();\n\n if (this.options.wraparound && se.lng < 0 && newExtent.nw.lng > 0) {\n se.lng = 180 + (180 + se.lng);\n }\n\n var extent = new Extent(raw.nw, se);\n this.center(extent.center());\n var width = this.element.clientWidth;\n var height = this.element.clientHeight;\n var zoom;\n\n for (zoom = this.options.maxZoom; zoom >= this.options.minZoom; zoom--) {\n var topLeft = this$1.locationToLayer(extent.nw, zoom);\n var bottomRight = this$1.locationToLayer(extent.se, zoom);\n var layerWidth = math.abs(bottomRight.x - topLeft.x);\n var layerHeight = math.abs(bottomRight.y - topLeft.y);\n\n if (layerWidth <= width && layerHeight <= height) {\n break;\n }\n }\n\n this.zoom(zoom);\n };\n\n Map.prototype._getExtent = function _getExtent () {\n var nw = this._getOrigin();\n var bottomRight = this.locationToLayer(nw);\n var size = this.viewSize();\n\n bottomRight.x += size.width;\n bottomRight.y += size.height;\n\n var se = this.layerToLocation(bottomRight);\n\n return new Extent(nw, se);\n };\n\n Map.prototype._zoomAround = function _zoomAround (pivot, level) {\n this._setOrigin(this.layerToLocation(pivot, level), level);\n this.zoom(level);\n };\n\n Map.prototype._initControls = function _initControls () {\n var controls = this.options.controls;\n if (controls.attribution) {\n this._createAttribution(controls.attribution);\n }\n\n if (!this.support.mobileOS) {\n if (controls.navigator) {\n this._createNavigator(controls.navigator);\n }\n\n if (controls.zoom) {\n this._createZoomControl(controls.zoom);\n }\n }\n };\n\n Map.prototype._createControlElement = function _createControlElement (options, defaultPosition) {\n var pos = options.position || defaultPosition;\n var posSelector = '.' + renderPos(pos).replace(' ', '.');\n var wrap = this.element.querySelector('.k-map-controls' + posSelector) || [];\n\n if (wrap.length === 0) {\n var div$1 = document.createElement(\"div\");\n addClass(div$1, 'k-map-controls ' + renderPos(pos));\n wrap = div$1;\n this.element.appendChild(wrap);\n }\n\n var div = document.createElement(\"div\");\n\n wrap.appendChild(div);\n\n return div;\n };\n\n Map.prototype._createAttribution = function _createAttribution (options) {\n var element = this._createControlElement(options, 'bottomRight');\n this.attribution = new Attribution(element, options);\n };\n\n Map.prototype._createNavigator = function _createNavigator (options) {\n var element = this._createControlElement(options, 'topLeft');\n var navigator = this.navigator = new Navigator(element, options);\n\n this._navigatorPan = this._navigatorPan.bind(this);\n navigator.bind('pan', this._navigatorPan);\n\n this._navigatorCenter = this._navigatorCenter.bind(this);\n navigator.bind('center', this._navigatorCenter);\n };\n\n Map.prototype._navigatorPan = function _navigatorPan (e) {\n var scroller = this.scroller;\n var x = scroller.scrollLeft + e.x;\n var y = scroller.scrollTop - e.y;\n var bounds = this._virtualSize;\n var width = this.element.clientWidth;\n var height = this.element.clientHeight;\n\n // TODO: Move limits to scroller\n x = limitValue(x, bounds.x.min, bounds.x.max - width);\n y = limitValue(y, bounds.y.min, bounds.y.max - height);\n\n this.scroller.one('scroll', proxy(this._scrollEnd, this));\n\n this.scroller.scrollTo(-x, -y);\n };\n\n Map.prototype._navigatorCenter = function _navigatorCenter () {\n this.center(this.options.center);\n };\n\n Map.prototype._createZoomControl = function _createZoomControl (options) {\n var element = this._createControlElement(options, 'topLeft');\n var zoomControl = this.zoomControl = new ZoomControl(element, options);\n\n this._zoomControlChange = this._zoomControlChange.bind(this);\n zoomControl.bind('change', this._zoomControlChange);\n };\n\n Map.prototype._zoomControlChange = function _zoomControlChange (e) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n this.zoom(this.zoom() + e.delta);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n };\n\n Map.prototype._initScroller = function _initScroller () {\n var friction = this.support.mobileOS ? FRICTION_MOBILE : FRICTION;\n var zoomable = this.options.zoomable !== false;\n var scroller = this.scroller = new Scroller(this.element.children[0], {\n friction: friction,\n velocityMultiplier: VELOCITY_MULTIPLIER,\n zoom: zoomable,\n mousewheelScrolling: false,\n supportDoubleTap: true\n });\n\n scroller.bind('scroll', proxy(this._scroll, this));\n scroller.bind('scrollEnd', proxy(this._scrollEnd, this));\n\n scroller.userEvents.bind('gesturestart', proxy(this._scaleStart, this));\n scroller.userEvents.bind('gestureend', proxy(this._scale, this));\n scroller.userEvents.bind('doubleTap', proxy(this._doubleTap, this));\n scroller.userEvents.bind('tap', proxy(this._tap, this));\n\n this.scrollElement = scroller.scrollElement;\n };\n\n Map.prototype._initLayers = function _initLayers () {\n var this$1 = this;\n\n var defs = this.options.layers,\n layers = this.layers = [];\n\n for (var i = 0; i < defs.length; i++) {\n var options = defs[i];\n\n var layer = this$1._createLayer(options);\n layers.push(layer);\n }\n };\n\n Map.prototype._createLayer = function _createLayer (options) {\n var type = options.type || 'shape';\n var layerDefaults = this.options.layerDefaults[type];\n var layerOptions = type === MARKER ?\n deepExtend({}, this.options.markerDefaults, options) :\n deepExtend({}, layerDefaults, options);\n\n var layerConstructor = layersMap[type];\n var layer = new layerConstructor(this, layerOptions);\n\n if (type === MARKER) {\n this.markers = layer;\n }\n\n return layer;\n };\n\n Map.prototype._createTooltip = function _createTooltip () {\n return new Tooltip(this.widgetService, this.options.tooltip);\n };\n\n /* eslint-disable arrow-body-style */\n Map.prototype._initMarkers = function _initMarkers () {\n var markerLayers = (this.options.layers || []).filter(function (x) {\n return x && x.type === MARKER;\n });\n\n if (markerLayers.length > 0) {\n // render the markers from options.layers\n // instead of options.markers\n return;\n }\n\n this.markers = new MarkerLayer(this, this.options.markerDefaults);\n this.markers.add(this.options.markers);\n };\n /* eslint-enable arrow-body-style */\n\n Map.prototype._scroll = function _scroll (e) {\n var origin = this.locationToLayer(this._viewOrigin).round();\n var movable = e.sender.movable;\n var offset = new g.Point(movable.x, movable.y).scale(-1).scale(1 / movable.scale);\n\n origin.x += offset.x;\n origin.y += offset.y;\n this._scrollOffset = offset;\n\n this._tooltip.offset = offset;\n this.hideTooltip();\n\n this._setOrigin(this.layerToLocation(origin));\n\n this.trigger('pan', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n };\n\n Map.prototype._scrollEnd = function _scrollEnd (e) {\n if (!this._scrollOffset || !this._panComplete()) {\n return;\n }\n\n this._scrollOffset = null;\n this._panEndTimestamp = now();\n\n this.trigger('panEnd', {\n originalEvent: e,\n origin: this._getOrigin(),\n center: this.center()\n });\n };\n\n Map.prototype._panComplete = function _panComplete () {\n return now() - (this._panEndTimestamp || 0) > 50;\n };\n\n Map.prototype._scaleStart = function _scaleStart (e) {\n if (this.trigger('zoomStart', { originalEvent: e })) {\n var touch = e.touches[1];\n\n if (touch) {\n touch.cancel();\n }\n }\n };\n\n Map.prototype._scale = function _scale (e) {\n var scale = this.scroller.movable.scale;\n var zoom = this._scaleToZoom(scale);\n var gestureCenter = new g.Point(e.center.x, e.center.y);\n var centerLocation = this.viewToLocation(gestureCenter, zoom);\n var centerPoint = this.locationToLayer(centerLocation, zoom);\n var originPoint = centerPoint.translate(-gestureCenter.x, -gestureCenter.y);\n\n this._zoomAround(originPoint, zoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n };\n\n Map.prototype._scaleToZoom = function _scaleToZoom (scaleDelta) {\n var scale = this._layerSize() * scaleDelta;\n var tiles = scale / this.options.minSize;\n var zoom = math.log(tiles) / math.log(2);\n\n return math.round(zoom);\n };\n\n Map.prototype._reset = function _reset () {\n if (this.attribution) {\n this.attribution.filter(this.center(), this.zoom());\n }\n\n this._viewOrigin = this._getOrigin(true);\n\n this._resetScroller();\n this.hideTooltip();\n\n this.trigger('beforeReset');\n this.trigger('reset');\n };\n\n Map.prototype._resetScroller = function _resetScroller () {\n var scroller = this.scroller;\n var x = scroller.dimensions.x;\n var y = scroller.dimensions.y;\n var scale = this._layerSize();\n var nw = this.extent().nw;\n var topLeft = this.locationToLayer(nw).round();\n\n scroller.movable.round = true;\n scroller.reset();\n scroller.userEvents.cancel();\n\n var zoom = this.zoom();\n\n scroller.dimensions.forcedMinScale = pow(2, this.options.minZoom - zoom);\n scroller.dimensions.maxScale = pow(2, this.options.maxZoom - zoom);\n\n var xBounds = {\n min: -topLeft.x,\n max: scale - topLeft.x\n };\n\n var yBounds = {\n min: -topLeft.y,\n max: scale - topLeft.y\n };\n\n if (this.options.wraparound) {\n xBounds.max = 20 * scale;\n xBounds.min = -xBounds.max;\n }\n\n if (this.options.pannable === false) {\n var viewSize = this.viewSize();\n xBounds.min = yBounds.min = 0;\n xBounds.max = viewSize.width;\n yBounds.max = viewSize.height;\n }\n\n x.makeVirtual();\n y.makeVirtual();\n\n x.virtualSize(xBounds.min, xBounds.max);\n y.virtualSize(yBounds.min, yBounds.max);\n\n this._virtualSize = {\n x: xBounds,\n y: yBounds\n };\n };\n\n // kept for API compatibility, not used\n Map.prototype._renderLayers = function _renderLayers () {\n };\n\n Map.prototype._layerSize = function _layerSize (zoom) {\n var newZoom = valueOrDefault(zoom, this.options.zoom);\n return this.options.minSize * pow(2, newZoom);\n };\n\n Map.prototype._tap = function _tap (e) {\n if (!this._panComplete()) {\n return;\n }\n\n var cursor = this.eventOffset(e);\n this.hideTooltip();\n\n this.trigger('click', {\n originalEvent: e,\n location: this.viewToLocation(cursor)\n });\n };\n\n Map.prototype._doubleTap = function _doubleTap (e) {\n var options = this.options;\n\n if (options.zoomable !== false) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n var toZoom = this.zoom() + DEFAULT_ZOOM_RATE;\n var cursor = this.eventOffset(e);\n var location = this.viewToLocation(cursor);\n var postZoom = this.locationToLayer(location, toZoom);\n var origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n };\n\n Map.prototype._mousewheel = function _mousewheel (e) {\n e.preventDefault();\n var delta = mousewheelDelta(e) > 0 ? -1 : 1;\n var options = this.options;\n var fromZoom = this.zoom();\n var toZoom = limitValue(fromZoom + delta, options.minZoom, options.maxZoom);\n\n if (options.zoomable !== false && toZoom !== fromZoom) {\n if (!this.trigger('zoomStart', { originalEvent: e })) {\n var cursor = this.eventOffset(e);\n var location = this.viewToLocation(cursor);\n var postZoom = this.locationToLayer(location, toZoom);\n var origin = postZoom.translate(-cursor.x, -cursor.y);\n\n this._zoomAround(origin, toZoom);\n\n this.trigger('zoomEnd', {\n originalEvent: e\n });\n }\n }\n };\n\n Map.prototype._toDocumentCoordinates = function _toDocumentCoordinates (point) {\n var offset = elementOffset(this.element);\n\n return {\n left: round(point.x + offset.left),\n top: round(point.y + offset.top)\n };\n };\n\n return Map;\n}(Observable));\n\nsetDefaultOptions(Map, {\n name: 'Map',\n controls: {\n attribution: true,\n navigator: {\n panStep: 100\n },\n zoom: true\n },\n layers: [],\n layerDefaults: {\n shape: {\n style: {\n fill: {\n color: '#fff'\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n bubble: {\n style: {\n fill: {\n color: '#fff',\n opacity: 0.5\n },\n stroke: {\n color: '#aaa',\n width: 0.5\n }\n }\n },\n marker: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n }\n },\n center: [\n 0,\n 0\n ],\n zoom: 3,\n minSize: 256,\n minZoom: 1,\n maxZoom: 19,\n markers: [],\n markerDefaults: {\n shape: 'pinTarget',\n tooltip: {\n position: 'top'\n }\n },\n wraparound: true,\n // If set to true, GeoJSON layer \"Point\" features will be rendered as markers.\n // Otherwise, the points will be rendered as circles.\n // Defaults to `true` for KUI/jQuery, `false` everywhere else.\n renderPointsAsMarkers: false\n});\n\nsetDefaultEvents(Map, [\n 'beforeReset',\n 'click',\n 'markerActivate',\n 'markerClick',\n 'markerCreated',\n\n // Events for implementing custom tooltips.\n 'markerMouseEnter',\n 'markerMouseLeave',\n\n 'pan',\n 'panEnd',\n 'reset',\n 'shapeClick',\n 'shapeCreated',\n 'shapeFeatureCreated',\n 'shapeMouseEnter',\n 'shapeMouseLeave',\n 'zoomEnd',\n 'zoomStart'\n]);\n\nexport default Map;\n","var BAR_GAP = 1.5;\nvar BAR_SPACING = 0.4;\nvar BLACK = '#000';\nvar SANS = 'Arial, Helvetica, sans-serif';\nvar SANS11 = \"11px \" + SANS;\nvar SANS12 = '12px ' + SANS;\nvar SANS16 = '16px ' + SANS;\nvar TRANSPARENT = 'transparent';\nvar WHITE = '#fff';\n\nvar notes = function () { return ({\n icon: {\n border: {\n width: 1\n }\n },\n label: {\n font: SANS12,\n padding: 3\n },\n line: {\n length: 10,\n width: 2\n },\n visible: true\n}); };\n\nvar axisDefaults = function () { return ({\n labels: {\n font: SANS12\n },\n notes: notes(),\n title: {\n font: SANS16,\n margin: 5\n }\n}); };\n\nvar areaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n}); };\n\nvar rangeAreaSeries = function () { return ({\n highlight: {\n markers: {\n border: {}\n }\n },\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.4\n}); };\n\nvar barSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n}); };\n\nvar boxPlotSeries = function () { return ({\n outliersField: \"\",\n meanField: \"\",\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n whiskers: {\n width: 3\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n }\n },\n mean: {\n width: 2\n },\n median: {\n width: 2\n },\n spacing: 0.3,\n whiskers: {\n width: 2\n }\n}); };\n\nvar bubbleSeries = function () { return ({\n border: {\n width: 0\n },\n labels: {\n background: TRANSPARENT\n },\n opacity: 0.6\n}); };\n\nvar bulletSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING,\n target: {\n color: \"#ff0000\"\n }\n}); };\n\nvar candlestickSeries = function () { return ({\n border: {\n _brightness: 0.8,\n width: 1\n },\n downColor: WHITE,\n gap: 1,\n highlight: {\n border: {\n opacity: 1,\n width: 2\n },\n line: {\n width: 2\n }\n },\n line: {\n color: BLACK,\n width: 1\n },\n spacing: 0.3\n}); };\n\nvar columnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n}); };\n\nvar donutSeries = function () { return ({\n margin: 1\n}); };\n\nvar lineSeries = function () { return ({\n width: 2\n}); };\n\nvar ohlcSeries = function () { return ({\n gap: 1,\n highlight: {\n line: {\n opacity: 1,\n width: 3\n }\n },\n line: {\n width: 1\n },\n spacing: 0.3\n}); };\n\nvar radarAreaSeries = function () { return ({\n line: {\n opacity: 1,\n width: 0\n },\n markers: {\n size: 6,\n visible: false\n },\n opacity: 0.5\n}); };\n\nvar radarLineSeries = function () { return ({\n markers: {\n visible: false\n },\n width: 2\n}); };\n\nvar rangeBarSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n}); };\n\nvar rangeColumnSeries = function () { return ({\n gap: BAR_GAP,\n spacing: BAR_SPACING\n}); };\n\nvar scatterLineSeries = function () { return ({\n width: 1\n}); };\n\nvar waterfallSeries = function () { return ({\n gap: 0.5,\n line: {\n color: BLACK,\n width: 1\n },\n spacing: BAR_SPACING\n}); };\n\nvar pieSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n}); };\n\nvar funnelSeries = function () { return ({\n labels: {\n background: '',\n color: '',\n padding: {\n top: 5,\n bottom: 5,\n left: 7,\n right: 7\n }\n }\n}); };\n\nvar heatmapSeries = function () { return ({\n labels: {\n color: '',\n background: TRANSPARENT,\n visible: true\n },\n highlight: {\n border: {\n width: 0\n }\n }\n}); };\n\nvar seriesDefaults = function (options) { return ({\n visible: true,\n labels: {\n font: SANS11\n },\n overlay: options.gradients ? {} : {\n gradient: \"none\"\n },\n area: areaSeries(),\n rangeArea: rangeAreaSeries(),\n verticalRangeArea: rangeAreaSeries(),\n bar: barSeries(),\n boxPlot: boxPlotSeries(),\n bubble: bubbleSeries(),\n bullet: bulletSeries(),\n candlestick: candlestickSeries(),\n column: columnSeries(),\n heatmap: heatmapSeries(),\n pie: pieSeries(),\n donut: donutSeries(),\n funnel: funnelSeries(),\n horizontalWaterfall: waterfallSeries(),\n line: lineSeries(),\n notes: notes(),\n ohlc: ohlcSeries(),\n radarArea: radarAreaSeries(),\n radarLine: radarLineSeries(),\n polarArea: radarAreaSeries(),\n polarLine: radarLineSeries(),\n rangeBar: rangeBarSeries(),\n rangeColumn: rangeColumnSeries(),\n scatterLine: scatterLineSeries(),\n verticalArea: areaSeries(),\n verticalBoxPlot: boxPlotSeries(),\n verticalBullet: bulletSeries(),\n verticalLine: lineSeries(),\n waterfall: waterfallSeries()\n}); };\n\nvar title = function () { return ({\n font: SANS16\n}); };\n\nvar subtitle = function () { return ({\n font: SANS12\n}); };\n\nvar legend = function () { return ({\n labels: {\n font: SANS12\n }\n}); };\n\nexport var baseTheme = function (options) {\n if ( options === void 0 ) options = {};\n\n return ({\n axisDefaults: axisDefaults(),\n categoryAxis: {\n majorGridLines: {\n visible: true\n }\n },\n navigator: {\n pane: {\n height: 90,\n margin: {\n top: 10\n }\n }\n },\n seriesDefaults: seriesDefaults(options),\n title: title(),\n subtitle: subtitle(),\n legend: legend()\n});\n};\n\n","/**\n * @hidden\n */\nexport var canUseDOM = Boolean(\n// from fbjs\ntypeof window !== 'undefined' &&\n window.document &&\n window.document.createElement);\n","/**\n * @hidden\n */\nfunction hasParent(element, parent) {\n var current = element;\n while (current && current !== parent) {\n current = current.parentNode;\n }\n return current ? true : false;\n}\n/**\n * @hidden\n */\nfunction validateChildren(props, propName, componentName, childType) {\n var prop = props[propName];\n if (prop) {\n if (Array.isArray(prop)) {\n for (var _i = 0, prop_1 = prop; _i < prop_1.length; _i++) {\n var value = prop_1[_i];\n if (!value.type || value.type !== childType) {\n return new Error(\"\".concat(componentName, \" children should be Array of type \").concat(childType.displayName, \".\"));\n }\n }\n }\n }\n return null;\n}\n/**\n * @hidden\n */\nvar toggle = function (flag) { return flag === undefined ? false : !flag; };\nexport { hasParent, validateChildren, toggle };\n","var getTouch = function (domEvent) {\n return {\n x: {\n location: domEvent.pageX\n },\n y: {\n location: domEvent.pageY\n }\n };\n};\nvar eventArgs = function (e, previousArgs) {\n var pointers = e.pointers;\n var pointer = pointers[0];\n var xLocation = pointer.pageX;\n var yLocation = pointer.pageY;\n var distance = 0;\n if (pointers.length > 1) {\n var pointer1 = pointers[0];\n var pointer2 = pointers[1];\n distance = Math.sqrt(Math.pow(pointer1.pageX - pointer2.pageX, 2) +\n Math.pow(pointer1.pageY - pointer2.pageY, 2));\n }\n return {\n distance: distance,\n event: e.srcEvent,\n preventDefault: function () {\n e.preventDefault();\n },\n target: e.target,\n touches: pointers.map(getTouch),\n type: e.type,\n x: {\n delta: previousArgs ? xLocation - previousArgs.x.location : 0,\n initialDelta: e.deltaX,\n location: xLocation,\n startLocation: xLocation - e.deltaX\n },\n y: {\n delta: previousArgs ? yLocation - previousArgs.y.location : 0,\n initialDelta: e.deltaY,\n location: yLocation,\n startLocation: yLocation - e.deltaY\n }\n };\n};\nfunction shouldBindGroup(groupNames, events) {\n for (var idx = 0; idx < groupNames.length; idx++) {\n if (events[groupNames[idx]]) {\n return true;\n }\n }\n return false;\n}\nvar eventGroups = [{\n end: 'panend',\n move: 'panmove',\n start: 'panstart'\n }, {\n gesturechange: 'pinchmove',\n gestureend: 'pinchend',\n gesturestart: 'pinchstart'\n }, {\n press: 'press'\n }, {\n tap: 'tap'\n }];\n/**\n * @hidden\n */\nvar DomEvents = /** @class */ (function () {\n function DomEvents(hammerInstance, events) {\n this.hammerInstance = hammerInstance;\n this.eventHandlers = {};\n this.tap = this.tap.bind(this);\n this.press = this.press.bind(this);\n this.panstart = this.panstart.bind(this);\n this.panmove = this.panmove.bind(this);\n this.panend = this.panend.bind(this);\n this.pinchstart = this.pinchstart.bind(this);\n this.pinchmove = this.pinchmove.bind(this);\n this.pinchend = this.pinchend.bind(this);\n if (events) {\n this.bind(events);\n }\n }\n DomEvents.prototype.tap = function (e) {\n this.trigger('tap', e);\n };\n DomEvents.prototype.press = function (e) {\n this.trigger('press', e);\n };\n DomEvents.prototype.panstart = function (e) {\n delete this.previous;\n this.previous = this.trigger('start', e);\n };\n DomEvents.prototype.panmove = function (e) {\n this.previous = this.trigger('move', e);\n };\n DomEvents.prototype.panend = function (e) {\n this.trigger('end', e);\n delete this.previous;\n };\n DomEvents.prototype.pinchstart = function (e) {\n this.trigger('gesturestart', e);\n };\n DomEvents.prototype.pinchmove = function (e) {\n this.trigger('gesturechange', e);\n };\n DomEvents.prototype.pinchend = function (e) {\n this.trigger('gestureend', e);\n };\n DomEvents.prototype.trigger = function (name, e) {\n var args = eventArgs(e, this.previous);\n if (this.eventHandlers[name]) {\n this.eventHandlers[name](args);\n }\n return args;\n };\n DomEvents.prototype.bind = function (events) {\n if (events === void 0) { events = {}; }\n this.unbind();\n this.eventHandlers = events;\n for (var idx = 0; idx < eventGroups.length; idx++) {\n var eventGroup = eventGroups[idx];\n var groupNames = Object.keys(eventGroup);\n if (shouldBindGroup(groupNames, events)) {\n for (var nameIdx = 0; nameIdx < groupNames.length; nameIdx++) {\n var name_1 = eventGroup[groupNames[nameIdx]];\n this.hammerInstance.on(name_1, this[name_1]);\n }\n }\n }\n };\n DomEvents.prototype.unbind = function () {\n if (this.hammerInstance) {\n this.hammerInstance.off();\n }\n this.eventHandlers = {};\n };\n DomEvents.prototype.destroy = function () {\n if (this.hammerInstance) {\n this.hammerInstance.destroy();\n delete this.hammerInstance;\n }\n delete this.eventHandlers;\n };\n DomEvents.prototype.toggleDrag = function (enable) {\n this.toggle('pan', enable);\n };\n DomEvents.prototype.toggleZoom = function (enable) {\n this.toggle('pinch', enable);\n };\n DomEvents.prototype.toggle = function (recognizer, enable) {\n if (this.hammerInstance) {\n var instanceRecognizer = this.hammerInstance.get(recognizer);\n instanceRecognizer.set({\n enable: enable\n });\n }\n };\n return DomEvents;\n}());\nexport { DomEvents };\n","import { DomEvents } from './dom-events';\nvar MISSING_HAMMER_MESSAGE = 'Hammerjs is not loaded.' +\n 'Solution: http://www.telerik.com/kendo-react-ui/components/charts/troubleshooting/#toc-installation';\n/**\n * @hidden\n */\nvar DomEventsBuilder = /** @class */ (function () {\n function DomEventsBuilder() {\n }\n DomEventsBuilder.create = function (element, events) {\n if (typeof window !== 'undefined') {\n var HAMMER = window.Hammer;\n if (!HAMMER) {\n if (process.env.NODE_ENV !== 'production') {\n console.warn(MISSING_HAMMER_MESSAGE);\n }\n return;\n }\n var hammerInstance = new HAMMER(element, {\n recognizers: [\n [HAMMER.Tap],\n [HAMMER.Pan],\n [HAMMER.Pinch],\n [HAMMER.Press, { time: 0 }]\n ]\n });\n return new DomEvents(hammerInstance, events);\n }\n };\n return DomEventsBuilder;\n}());\nexport { DomEventsBuilder };\n","/**\n * @hidden\n */\nvar BaseEvent = /** @class */ (function () {\n /**\n * @hidden\n */\n function BaseEvent(target) {\n this.target = target;\n }\n return BaseEvent;\n}());\nexport { BaseEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `axisLabelClick` event.\n */\nvar AxisLabelClickEvent = /** @class */ (function (_super) {\n __extends(AxisLabelClickEvent, _super);\n /**\n * @hidden\n */\n function AxisLabelClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axis = e.axis;\n _this.dataItem = e.dataItem;\n _this.index = e.index;\n _this.text = e.text;\n _this.value = e.value;\n return _this;\n }\n return AxisLabelClickEvent;\n}(BaseEvent));\nexport { AxisLabelClickEvent };\n// tslint:enable:max-line-length\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * @hidden\n */\nvar PreventableEvent = /** @class */ (function (_super) {\n __extends(PreventableEvent, _super);\n function PreventableEvent() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.prevented = false;\n return _this;\n }\n /* eslint-disable max-len */\n /**\n * Prevents the default action for a specified event. In this way, the source component suppresses the built-in behavior that follows the event.\n */\n PreventableEvent.prototype.preventDefault = function () {\n this.prevented = true;\n };\n /**\n * Returns `true` if the event was prevented by any of its subscribers.\n *\n * @returns `true` if the default action was prevented.\n * Otherwise, returns `false`.\n */\n PreventableEvent.prototype.isDefaultPrevented = function () {\n return this.prevented;\n };\n return PreventableEvent;\n}(BaseEvent));\nexport { PreventableEvent };\n// tslint:enable:max-line-length\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `drag` event.\n */\nvar DragEvent = /** @class */ (function (_super) {\n __extends(DragEvent, _super);\n /**\n * @hidden\n */\n function DragEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return DragEvent;\n}(PreventableEvent));\nexport { DragEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `dragEnd` event.\n */\nvar DragEndEvent = /** @class */ (function (_super) {\n __extends(DragEndEvent, _super);\n /**\n * @hidden\n */\n function DragEndEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return DragEndEvent;\n}(BaseEvent));\nexport { DragEndEvent };\n// tslint:enable:max-line-length\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `dragStart` event.\n */\nvar DragStartEvent = /** @class */ (function (_super) {\n __extends(DragStartEvent, _super);\n /**\n * @hidden\n */\n function DragStartEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return DragStartEvent;\n}(PreventableEvent));\nexport { DragStartEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemHover` event.\n */\nvar LegendItemHoverEvent = /** @class */ (function (_super) {\n __extends(LegendItemHoverEvent, _super);\n /**\n * @hidden\n */\n function LegendItemHoverEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.series = e.series;\n _this.seriesIndex = e.seriesIndex;\n _this.pointIndex = e.pointIndex;\n _this.text = e.text;\n return _this;\n }\n /**\n * If called, the series highlight is not shown as a result of hovering over the legend item.\n */\n LegendItemHoverEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n };\n return LegendItemHoverEvent;\n}(PreventableEvent));\nexport { LegendItemHoverEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemClick` event.\n */\nvar LegendItemClickEvent = /** @class */ (function (_super) {\n __extends(LegendItemClickEvent, _super);\n /**\n * @hidden\n */\n function LegendItemClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.series = e.series;\n _this.seriesIndex = e.seriesIndex;\n _this.pointIndex = e.pointIndex;\n _this.text = e.text;\n return _this;\n }\n /**\n * If called, the series visibility is not toggled as a result of clicking the legend item.\n */\n LegendItemClickEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n };\n return LegendItemClickEvent;\n}(PreventableEvent));\nexport { LegendItemClickEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `legendItemLeave` event.\n */\nvar LegendItemLeaveEvent = /** @class */ (function (_super) {\n __extends(LegendItemLeaveEvent, _super);\n /**\n * @hidden\n */\n function LegendItemLeaveEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.series = e.series;\n _this.seriesIndex = e.seriesIndex;\n _this.pointIndex = e.pointIndex;\n _this.text = e.text;\n return _this;\n }\n /**\n * @hidden\n */\n LegendItemLeaveEvent.prototype.preventDefault = function () {\n _super.prototype.preventDefault.call(this);\n };\n return LegendItemLeaveEvent;\n}(PreventableEvent));\nexport { LegendItemLeaveEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * The arguments for the `navigatorFilter` event.\n */\nvar NavigatorFilterEvent = /** @class */ (function (_super) {\n __extends(NavigatorFilterEvent, _super);\n /**\n * Constructs the event arguments from a raw object.\n */\n function NavigatorFilterEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.from = e.from;\n _this.to = e.to;\n return _this;\n }\n return NavigatorFilterEvent;\n}(BaseEvent));\nexport { NavigatorFilterEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `noteClick` event.\n */\nvar NoteClickEvent = /** @class */ (function (_super) {\n __extends(NoteClickEvent, _super);\n /**\n * @hidden\n */\n function NoteClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.dataItem = e.dataItem;\n _this.series = e.series;\n _this.value = e.value;\n _this.visual = e.visual;\n return _this;\n }\n return NoteClickEvent;\n}(BaseEvent));\nexport { NoteClickEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `noteHover` event.\n */\nvar NoteHoverEvent = /** @class */ (function (_super) {\n __extends(NoteHoverEvent, _super);\n /**\n * @hidden\n */\n function NoteHoverEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.dataItem = e.dataItem;\n _this.series = e.series;\n _this.value = e.value;\n _this.visual = e.visual;\n return _this;\n }\n return NoteHoverEvent;\n}(BaseEvent));\nexport { NoteHoverEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `plotAreaClick` event.\n */\nvar PlotAreaClickEvent = /** @class */ (function (_super) {\n __extends(PlotAreaClickEvent, _super);\n /**\n * @hidden\n */\n function PlotAreaClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.nativeEvent = e.originalEvent;\n _this.value = e.value;\n _this.x = e.x;\n _this.y = e.y;\n return _this;\n }\n return PlotAreaClickEvent;\n}(BaseEvent));\nexport { PlotAreaClickEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `plotAreaHover` event.\n */\nvar PlotAreaHoverEvent = /** @class */ (function (_super) {\n __extends(PlotAreaHoverEvent, _super);\n /**\n * @hidden\n */\n function PlotAreaHoverEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.nativeEvent = e.originalEvent;\n _this.value = e.value;\n _this.x = e.x;\n _this.y = e.y;\n return _this;\n }\n return PlotAreaHoverEvent;\n}(BaseEvent));\nexport { PlotAreaHoverEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `render` event.\n */\nvar RenderEvent = /** @class */ (function (_super) {\n __extends(RenderEvent, _super);\n /**\n * @hidden\n */\n function RenderEvent(_e, sender) {\n return _super.call(this, sender) || this;\n }\n return RenderEvent;\n}(BaseEvent));\nexport { RenderEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `select` event.\n */\nvar SelectEvent = /** @class */ (function (_super) {\n __extends(SelectEvent, _super);\n /**\n * @hidden\n */\n function SelectEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axis = e.axis;\n _this.from = e.from;\n _this.to = e.to;\n return _this;\n }\n return SelectEvent;\n}(PreventableEvent));\nexport { SelectEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/**\n * Arguments for the `selectEnd` event.\n */\nvar SelectEndEvent = /** @class */ (function (_super) {\n __extends(SelectEndEvent, _super);\n /**\n * @hidden\n */\n function SelectEndEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axis = e.axis;\n _this.from = e.from;\n _this.to = e.to;\n return _this;\n }\n return SelectEndEvent;\n}(BaseEvent));\nexport { SelectEndEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/**\n * Arguments for the `selectStart` event.\n */\nvar SelectStartEvent = /** @class */ (function (_super) {\n __extends(SelectStartEvent, _super);\n /**\n * @hidden\n */\n function SelectStartEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axis = e.axis;\n _this.from = e.from;\n _this.to = e.to;\n return _this;\n }\n return SelectStartEvent;\n}(PreventableEvent));\nexport { SelectStartEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `seriesClick` event.\n */\nvar SeriesClickEvent = /** @class */ (function (_super) {\n __extends(SeriesClickEvent, _super);\n // tslint:enable:max-line-length\n /**\n * @hidden\n */\n function SeriesClickEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.dataItem = e.dataItem;\n _this.nativeEvent = e.originalEvent;\n _this.percentage = e.percentage;\n _this.point = e.point;\n _this.series = e.series;\n _this.stackValue = e.stackValue;\n _this.value = e.value;\n return _this;\n }\n return SeriesClickEvent;\n}(BaseEvent));\nexport { SeriesClickEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `seriesHover` event.\n */\nvar SeriesHoverEvent = /** @class */ (function (_super) {\n __extends(SeriesHoverEvent, _super);\n /**\n * @hidden\n */\n function SeriesHoverEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.category = e.category;\n _this.categoryPoints = e.categoryPoints;\n _this.dataItem = e.dataItem;\n _this.nativeEvent = e.originalEvent;\n _this.percentage = e.percentage;\n _this.point = e.point;\n _this.series = e.series;\n _this.stackValue = e.stackValue;\n _this.value = e.value;\n return _this;\n }\n return SeriesHoverEvent;\n}(PreventableEvent));\nexport { SeriesHoverEvent };\n// tslint:enable:max-line-length\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `zoom` event.\n */\nvar ZoomEvent = /** @class */ (function (_super) {\n __extends(ZoomEvent, _super);\n // tslint:enable:max-line-length\n /**\n * @hidden\n */\n function ZoomEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.delta = e.delta;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return ZoomEvent;\n}(PreventableEvent));\nexport { ZoomEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { BaseEvent } from './base-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `zoomEnd` event.\n */\nvar ZoomEndEvent = /** @class */ (function (_super) {\n __extends(ZoomEndEvent, _super);\n // tslint:enable:max-line-length\n /**\n * @hidden\n */\n function ZoomEndEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return ZoomEndEvent;\n}(BaseEvent));\nexport { ZoomEndEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport { PreventableEvent } from './preventable-event';\n/* eslint-disable max-len */\n/**\n * Arguments for the `zoomStart` event.\n */\nvar ZoomStartEvent = /** @class */ (function (_super) {\n __extends(ZoomStartEvent, _super);\n // tslint:enable:max-line-length\n /**\n * @hidden\n */\n function ZoomStartEvent(e, target) {\n var _this = _super.call(this, target) || this;\n _this.axisRanges = e.axisRanges;\n _this.nativeEvent = e.originalEvent;\n return _this;\n }\n return ZoomStartEvent;\n}(PreventableEvent));\nexport { ZoomStartEvent };\n","import { AxisLabelClickEvent } from './axis-label-click-event';\nimport { DragEvent } from './drag-event';\nimport { DragEndEvent } from './drag-end-event';\nimport { DragStartEvent } from './drag-start-event';\nimport { LegendItemHoverEvent } from './legend-item-hover-event';\nimport { LegendItemClickEvent } from './legend-item-click-event';\nimport { LegendItemLeaveEvent } from './legend-item-leave-event';\nimport { NavigatorFilterEvent } from './navigator-filter-event';\nimport { NoteClickEvent } from './note-click-event';\nimport { NoteHoverEvent } from './note-hover-event';\nimport { PlotAreaClickEvent } from './plot-area-click-event';\nimport { PlotAreaHoverEvent } from './plot-area-hover-event';\nimport { RenderEvent } from './render-event';\nimport { SelectEvent } from './select-event';\nimport { SelectEndEvent } from './select-end-event';\nimport { SelectStartEvent } from './select-start-event';\nimport { SeriesClickEvent } from './series-click-event';\nimport { SeriesHoverEvent } from './series-hover-event';\nimport { ZoomEvent } from './zoom-event';\nimport { ZoomEndEvent } from './zoom-end-event';\nimport { ZoomStartEvent } from './zoom-start-event';\nvar EVENT_MAP = {\n axisLabelClick: AxisLabelClickEvent,\n drag: DragEvent,\n dragEnd: DragEndEvent,\n dragStart: DragStartEvent,\n legendItemHover: LegendItemHoverEvent,\n legendItemClick: LegendItemClickEvent,\n legendItemLeave: LegendItemLeaveEvent,\n navigatorFilter: NavigatorFilterEvent,\n noteClick: NoteClickEvent,\n noteHover: NoteHoverEvent,\n plotAreaClick: PlotAreaClickEvent,\n plotAreaHover: PlotAreaHoverEvent,\n render: RenderEvent,\n select: SelectEvent,\n selectEnd: SelectEndEvent,\n selectStart: SelectStartEvent,\n seriesClick: SeriesClickEvent,\n seriesHover: SeriesHoverEvent,\n zoom: ZoomEvent,\n zoomEnd: ZoomEndEvent,\n zoomStart: ZoomStartEvent\n};\n/**\n * @hidden\n */\nfunction create(name, args, sender) {\n if (EVENT_MAP[name]) {\n return new EVENT_MAP[name](args, sender);\n }\n}\nexport { create };\n","/**\n * @hidden\n */\nvar DomEvent = /** @class */ (function () {\n /**\n * @hidden\n */\n function DomEvent(sender, e) {\n this.sender = sender;\n this.syntheticEvent = e;\n }\n return DomEvent;\n}());\nexport { DomEvent };\nfunction toDomEvent(sender, e) {\n return new DomEvent(sender, e);\n}\nexport { toDomEvent };\n","import { chartBaseTheme } from '@progress/kendo-charts';\nvar font = function (style) { return \"\".concat(style.fontWeight, \" \").concat(style.fontSize, \" \").concat(style.fontFamily); };\nvar computedBackgroundColor = function (element) { return window.getComputedStyle(element).backgroundColor; };\nvar letterPos = function (letter) { return letter.toLowerCase().charCodeAt(0) - 'a'.charCodeAt(0); };\nvar seriesPos = function (name) {\n var alpha = name.match(/series-([a-z])$/);\n if (alpha !== null) {\n return letterPos(alpha[1]);\n }\n var num = name.split('--series-')[1];\n return parseInt(num, 10) - 1;\n};\nvar SERIES_COLORS = 30;\nvar seriesTemplate = function () {\n var result = \"\\n
\\n
\\n
\\n
\\n
\\n
\\n\";\n for (var i = 0; i < SERIES_COLORS; i++) {\n result += \"\\n
\");\n }\n return result;\n};\nvar template = \"\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n
\\n
\\n
\\n
\\n\\n
\\n
\\n \".concat(seriesTemplate(), \"\\n
\\n\");\n/**\n * @hidden\n */\nvar ThemeService = /** @class */ (function () {\n function ThemeService(store) {\n this.store = store;\n }\n ThemeService.prototype.setStyle = function (field, value) {\n this.store.dispatch({ type: 'set', payload: { field: field, value: value } });\n };\n ThemeService.prototype.setColors = function () {\n this.mapColor('axisDefaults.crosshair.color', 'chart-crosshair-background');\n this.mapColor('axisDefaults.labels.color', 'normal-text-color');\n this.mapColor('axisDefaults.line.color', 'chart-major-lines');\n this.mapColor('axisDefaults.majorGridLines.color', 'chart-major-lines');\n this.mapColor('axisDefaults.minorGridLines.color', 'chart-minor-lines');\n this.mapColor('axisDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('axisDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('axisDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('axisDefaults.title.color', 'normal-text-color');\n this.mapColor('chartArea.background', 'background');\n this.mapColor('legend.inactiveItems.labels.color', 'chart-inactive');\n this.mapColor('legend.inactiveItems.markers.color', 'chart-inactive');\n this.mapColor('legend.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.boxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.boxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.boxPlot.whiskers.color', 'primary');\n this.mapColor('seriesDefaults.bullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.downColor', 'normal-text-color');\n this.mapColor('seriesDefaults.candlestick.line.color', 'normal-text-color');\n this.mapColor('seriesDefaults.errorBars.color', 'chart-error-bars-background');\n this.mapColor('seriesDefaults.horizontalWaterfall.line.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.icon.border.color', 'chart-major-lines');\n this.mapColor('seriesDefaults.labels.background', 'background');\n this.mapColor('seriesDefaults.labels.color', 'normal-text-color');\n this.mapColor('seriesDefaults.notes.icon.background', 'chart-notes-background');\n this.mapColor('seriesDefaults.notes.icon.border.color', 'chart-notes-border');\n this.mapColor('seriesDefaults.notes.line.color', 'chart-notes-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.downColor', 'chart-major-lines');\n this.mapColor('seriesDefaults.verticalBoxPlot.mean.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.median.color', 'base');\n this.mapColor('seriesDefaults.verticalBoxPlot.whiskers.color', 'primary');\n this.mapColor('seriesDefaults.verticalBullet.target.color', 'normal-text-color');\n this.mapColor('seriesDefaults.waterfall.line.color', 'chart-major-lines');\n this.mapColor('title.color', 'normal-text-color');\n this.mapColor('subtitle.color', 'normal-text-color');\n var opacity = parseFloat(this.queryStyle('chart-area-opacity').opacity);\n if (!isNaN(opacity)) {\n this.setStyle('seriesDefaults.area.opacity', opacity);\n this.setStyle('seriesDefaults.radarArea.opacity', opacity);\n this.setStyle('seriesDefaults.verticalArea.opacity', opacity);\n this.setStyle('seriesDefaults.labels.opacity', opacity);\n }\n this.setInactiveOpacity(['area', 'verticalArea'], 'chart-area-inactive-opacity');\n this.setInactiveOpacity(['line', 'verticalLine'], 'chart-line-inactive-opacity');\n };\n ThemeService.prototype.setFonts = function () {\n var defaultFont = font(this.queryStyle('chart-font'));\n var titleFont = font(this.queryStyle('chart-title-font'));\n var paneTitleFont = font(this.queryStyle('chart-pane-title-font'));\n var labelFont = font(this.queryStyle('chart-label-font'));\n this.setStyle('axisDefaults.labels.font', labelFont);\n this.setStyle('axisDefaults.notes.label.font', defaultFont);\n this.setStyle('axisDefaults.title.font', defaultFont);\n this.setStyle('legend.labels.font', defaultFont);\n this.setStyle('seriesDefaults.labels.font', labelFont);\n this.setStyle('seriesDefaults.notes.label.font', defaultFont);\n this.setStyle('title.font', titleFont);\n this.setStyle('subtitle.font', paneTitleFont);\n this.setStyle('paneDefaults.title.font', paneTitleFont);\n };\n ThemeService.prototype.setSeriesColors = function () {\n var element = this.element;\n var series = [].slice.call(element.querySelectorAll('.k-var--series div'));\n var unsetColor = computedBackgroundColor(element.querySelector('.k-var--series-unset'));\n var seriesColors = series.reduce(function (arr, el) {\n var pos = seriesPos(el.className);\n var color = computedBackgroundColor(el);\n if (color !== unsetColor) {\n arr[pos] = color;\n }\n return arr;\n }, [] // Will populate the series colors in this array\n );\n this.setStyle('seriesColors', seriesColors);\n };\n ThemeService.prototype.mapColor = function (key, varName) {\n this.setStyle(key, this.queryStyle(varName).backgroundColor);\n };\n ThemeService.prototype.queryStyle = function (varName) {\n var element = this.element;\n return window.getComputedStyle(element.querySelector(\".k-var--\".concat(varName)));\n };\n ThemeService.prototype.setInactiveOpacity = function (seriesTypes, selector) {\n var _this = this;\n var inactiveOpacity = parseFloat(this.queryStyle(selector).opacity);\n if (!isNaN(inactiveOpacity) && inactiveOpacity < 1) {\n seriesTypes.forEach(function (type) {\n return _this.setStyle(\"seriesDefaults.\".concat(type, \".highlight.inactiveOpacity\"), inactiveOpacity);\n });\n }\n };\n return ThemeService;\n}());\n/**\n * @hidden\n */\nvar loadTheme = function (store, done, doc) {\n var service = new ThemeService(store);\n if (typeof doc === 'undefined') {\n store.dispatch({ type: 'push', payload: chartBaseTheme() });\n return;\n }\n var container = service.element = doc.createElement('div');\n container.style.display = 'none';\n container.innerHTML = template;\n doc.body.appendChild(container);\n try {\n store.dispatch({ type: 'push', payload: chartBaseTheme() });\n service.setColors();\n service.setFonts();\n service.setSeriesColors();\n }\n finally {\n doc.body.removeChild(service.element);\n delete service.element;\n done();\n }\n};\nexport { loadTheme };\n","import { canUseDOM } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var THROTTLE_MS = 1000 / 60;\n/**\n * @hidden\n */\nvar createStore = function (reducer) {\n var state;\n var timerId;\n var listeners = [];\n var getState = function () { return state; };\n var dispatch = function (action) {\n state = reducer(state, action);\n if (canUseDOM) {\n window.clearTimeout(timerId);\n timerId = window.setTimeout(function () { return listeners.forEach(function (l) { return l(); }); }, THROTTLE_MS);\n }\n };\n var subscribe = function (listener) {\n listeners.push(listener);\n return function () { return listeners = listeners.filter(function (l) { return l !== listener; }); };\n };\n dispatch({});\n return { getState: getState, dispatch: dispatch, subscribe: subscribe };\n};\nexport default createStore;\n","var __spreadArray = (this && this.__spreadArray) || function (to, from, pack) {\n if (pack || arguments.length === 2) for (var i = 0, l = from.length, ar; i < l; i++) {\n if (ar || !(i in from)) {\n if (!ar) ar = Array.prototype.slice.call(from, 0, i);\n ar[i] = from[i];\n }\n }\n return to.concat(ar || Array.prototype.slice.call(from));\n};\n/**\n * @hidden\n */\nvar optionsReducer = function (currentState, action) {\n if (action.chartCollectionIdxKey) {\n return reducers.collectionConfigurationItem(currentState, action);\n }\n else if (action.chartKey) {\n return reducers.configurationItem(currentState, action);\n }\n else {\n return {};\n }\n};\n/**\n * @hidden\n */\nvar themeReducer = function (currentState, action) {\n if (action.type) {\n switch (action.type) {\n case 'set':\n return reducers.themeItem(currentState, action);\n case 'push':\n return Object.assign(currentState, action.payload);\n default:\n return currentState;\n }\n }\n else {\n return {};\n }\n};\n/**\n * @hidden\n */\nvar observersReducer = function (currentState, action) {\n if (action.type) {\n switch (action.type) {\n case 'add':\n return __spreadArray(__spreadArray([], currentState, true), [action.payload], false);\n case 'remove':\n return currentState.filter(function (element) { return element !== action.payload; });\n default:\n return currentState;\n }\n }\n else {\n return [];\n }\n};\n/**\n * @hidden\n */\nvar reducers = {\n configurationItem: function (currentState, action) {\n var _a;\n return Object.assign(currentState, (_a = {},\n _a[action.chartKey] = action.payload,\n _a));\n },\n collectionConfigurationItem: function (currentState, action) {\n var _a;\n var inCollection = false;\n var _b = action.chartCollectionIdxKey.split('_'), collectionName = _b[0], collectionIdx = _b[1];\n var collection = currentState[collectionName].map(function (item, index) {\n if (parseInt(collectionIdx, 10) === index) {\n inCollection = true;\n return action.payload;\n }\n return item;\n });\n if (inCollection === false) {\n collection.splice(parseInt(collectionIdx, 10), 0, action.payload);\n }\n return Object.assign(currentState, (_a = {},\n _a[collectionName] = collection,\n _a));\n },\n themeItem: function (currentState, action) {\n var store = {};\n var nextStore = Object.assign(store, currentState);\n var _a = action.payload, field = _a.field, value = _a.value;\n var parts = field.split('.');\n var key = parts.shift();\n while (parts.length > 0) {\n store = store[key] = store[key] || {};\n key = parts.shift();\n }\n store[key] = value;\n return nextStore;\n }\n};\nexport { optionsReducer, themeReducer, observersReducer };\n","/**\n * @hidden\n */\nexport var classNames = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = {};\n var addLeafKeys = function (arg) { return typeof arg === 'object' ? Object\n .keys(arg)\n .forEach(function (key) {\n result[key] = arg[key];\n }) : result[arg] = true; };\n ;\n var addKeys = function (list) { return list\n .filter(function (arg) { return arg !== true && !!arg; })\n .map(function (arg) {\n return Array.isArray(arg) ?\n addKeys(arg) :\n addLeafKeys(arg);\n }); };\n ;\n addKeys(args);\n return Object\n .keys(result)\n .map(function (key) { return (result[key] && key) || null; })\n .filter(function (el) { return el !== null; })\n .join(' ');\n};\n","/**\n * The point that is passed to the tooltip component.\n */\nvar TooltipPoint = /** @class */ (function () {\n /**\n * @hidden\n */\n function TooltipPoint(point, format) {\n this.value = point.value;\n this.category = point.category;\n this.categoryIndex = point.categoryIx;\n this.series = point.series;\n this.dataItem = point.dataItem;\n this.percentage = point.percentage;\n this.runningTotal = point.runningTotal;\n this.total = point.total;\n this.low = point.low;\n this.high = point.high;\n this.xLow = point.xLow;\n this.xHigh = point.xHigh;\n this.yLow = point.yLow;\n this.yHigh = point.yHigh;\n this.point = point;\n this.format = ((point.options || {}).tooltip || {}).format || format;\n }\n Object.defineProperty(TooltipPoint.prototype, \"formattedValue\", {\n get: function () {\n return this.format ? this.point.formatValue(this.format) : String(this.value);\n },\n enumerable: false,\n configurable: true\n });\n return TooltipPoint;\n}());\nexport { TooltipPoint };\n","import * as React from 'react';\nvar TOOLTIP_MARKER_CLASS = 'k-chart-shared-tooltip-marker';\n/**\n * @hidden\n */\nvar SharedTooltipContent = function (props) {\n var categoryText = props.categoryText, colorMarker = props.colorMarker, colspan = props.colspan, nameColumn = props.nameColumn, points = props.points;\n var pointsMap = function (point, idx) {\n return (React.createElement(\"tr\", { key: idx },\n colorMarker && (React.createElement(\"td\", null,\n React.createElement(\"span\", { className: TOOLTIP_MARKER_CLASS, style: { backgroundColor: point.series.color } }))),\n nameColumn && (React.createElement(\"td\", null, point.series.name)),\n React.createElement(\"td\", { dangerouslySetInnerHTML: { __html: point.formattedValue } })));\n };\n return (React.createElement(\"table\", null,\n React.createElement(\"thead\", null,\n React.createElement(\"tr\", null,\n React.createElement(\"th\", { colSpan: colspan }, categoryText))),\n React.createElement(\"tbody\", null, points.map(pointsMap))));\n};\nexport { SharedTooltipContent };\n","var clearSlide = function (element) {\n element.style.transitionDuration = '';\n Array.from(element.classList).forEach(function (c) {\n if (c.startsWith('k-slide-')) {\n element.classList.remove(c);\n }\n });\n};\nvar firefox = typeof window !== 'undefined' &&\n /Firefox/.test(window.navigator.userAgent);\n/**\n * @hidden\n */\nexport var slide = function (element, direction, duration, type, callback) {\n if (duration === 0) {\n return callback();\n }\n var slideClass = 'k-slide-' + direction + '-' + type;\n var slideActiveClass = slideClass + '-active';\n var transitionend = function (e) {\n // if event is attached using react,\n // the animation does not work well in firefox,\n // when the show/hide button is toggled quickly.\n if (e.target === element) {\n element.removeEventListener('transitionend', transitionend);\n clearSlide(element);\n if (type === 'exit') {\n element.style.display = 'none';\n }\n else {\n element.style.display = '';\n }\n callback();\n }\n };\n element.addEventListener('transitionend', transitionend);\n var ownerDocument = element.ownerDocument;\n if (!ownerDocument) {\n return;\n }\n var defaultView = ownerDocument.defaultView;\n if (!defaultView) {\n return;\n }\n var animate = function () {\n clearSlide(element);\n element.classList.add(slideClass);\n defaultView.requestAnimationFrame(function () {\n element.style.transitionDuration = duration + 'ms';\n element.classList.add(slideActiveClass);\n });\n };\n if (firefox) {\n defaultView.requestAnimationFrame(animate);\n }\n else {\n animate();\n }\n};\n","import * as licensing from '@progress/kendo-licensing';\n/**\n * @hidden\n */\nexport function validatePackage(packageMetadata) {\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \".concat(packageMetadata.name, \"\\n\");\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \".concat(packageMetadata.licensingDocsUrl, \" for more information.\\n\");\n console.warn(message);\n }\n}\n","import * as React from 'react';\n/** @hidden */\nexport var ZIndexContext = React.createContext(0);\n/** @hidden */\nexport var useZIndexContext = function () { return React.useContext(ZIndexContext); };\nZIndexContext.displayName = 'KendoReactZIndexContext';\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-popup',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1674668194,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { slide } from './animation';\nimport { canUseDOM, ZIndexContext, validatePackage, classNames } from '@progress/kendo-react-common';\nimport { AlignPoint, alignElement, domUtils, positionElement, Collision as CollisionEnum } from '@progress/kendo-popup-common';\nimport { throttle, FRAME_DURATION } from './util';\nimport { packageMetadata } from './package-metadata';\nvar DEFAULT_POPUP_ZINDEX = 100;\nvar ZINDEX_POPUP_STEP = 1;\nfunction isEquivalent(a, b) {\n if (a === b) {\n return true;\n }\n if (!!a !== !!b) {\n return false;\n }\n var aProps = Object.getOwnPropertyNames(a);\n var bProps = Object.getOwnPropertyNames(b);\n if (aProps.length !== bProps.length) {\n return false;\n }\n for (var i = 0; i < aProps.length; i++) {\n var propName = aProps[i];\n if (a[propName] !== b[propName]) {\n return false;\n }\n }\n return true;\n}\nvar DEFAULT_OFFSET = {\n left: -1000,\n top: 0\n};\nvar Status;\n(function (Status) {\n Status[\"hiding\"] = \"hiding\";\n Status[\"hidden\"] = \"hidden\";\n Status[\"showing\"] = \"showing\";\n Status[\"shown\"] = \"shown\";\n Status[\"reposition\"] = \"reposition\";\n})(Status || (Status = {}));\nvar ANIMATION_CONTAINER = 'k-animation-container';\nvar ANIMATION_CONTAINER_SHOWN = 'k-animation-container-shown';\nvar ANIMATION_CONTAINER_RELATIVE = 'k-animation-container-relative';\nvar ANIMATION_CONTAINER_CHILD = 'k-child-animation-container';\nvar K_POPUP = 'k-popup';\n/**\n * @hidden\n */\nvar PopupWithoutContext = /** @class */ (function (_super) {\n __extends(PopupWithoutContext, _super);\n function PopupWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.context = 0;\n /**\n * @hidden\n */\n _this.state = { current: Status.hidden, previous: Status.hidden, props: {} };\n _this._popup = null;\n _this.show = function (popup) {\n _this.setPosition(popup);\n _this.animate(popup.firstChild, 'enter', _this.onOpened);\n _this.setState({ current: Status.shown, previous: _this.state.current });\n };\n _this.setPosition = function (popup) {\n var _a = _this.props, anchorAlign = _a.anchorAlign, popupAlign = _a.popupAlign, collision = _a.collision, offset = _a.offset, anchor = _a.anchor, margin = _a.margin, scale = _a.scale, positionMode = _a.positionMode;\n var _b = popup.style, width = _b.width, height = _b.height;\n // Calculations are wrong if popup does not have set size\n popup.style.width = popup.offsetWidth + 'px';\n popup.style.height = popup.offsetHeight + 'px';\n var alignedOffset = alignElement({\n anchor: anchor,\n anchorAlign: anchorAlign,\n element: popup,\n elementAlign: popupAlign,\n offset: offset,\n margin: margin,\n positionMode: positionMode,\n scale: scale\n });\n var position = positionElement({\n anchor: anchor,\n anchorAlign: anchorAlign,\n element: popup,\n elementAlign: popupAlign,\n collisions: collision,\n currentLocation: alignedOffset,\n margin: _this.props.margin\n });\n popup.style.top = position.offset.top + 'px';\n popup.style.left = position.offset.left + 'px';\n popup.style.width = width;\n popup.style.height = height;\n _this._collisions = {\n fit: position.fit,\n fitted: position.fitted,\n flip: position.flip,\n flipped: position.flipped\n };\n if (_this.props.onPosition) {\n var event_1 = {\n target: _this,\n flipped: position.flipped,\n fitted: position.fitted\n };\n _this.props.onPosition.call(undefined, event_1);\n }\n };\n _this.onOpened = function () {\n var element = _this._popup;\n if (!element) {\n return;\n }\n if (_this.props.show) {\n element.classList.add(ANIMATION_CONTAINER_SHOWN);\n }\n _this.attachRepositionHandlers(element);\n if (_this.props.onOpen) {\n _this.props.onOpen.call(undefined, { target: _this });\n }\n };\n _this.animate = function (element, type, callback) {\n if (!_this.props.popupAlign) {\n return;\n }\n var animationDirection;\n var _a = _this.props.popupAlign, horizontal = _a.horizontal, vertical = _a.vertical;\n if (horizontal === 'left' && vertical === 'center') {\n animationDirection = 'right';\n }\n else if (horizontal === 'right' && vertical === 'center') {\n animationDirection = 'left';\n }\n else if (vertical === 'top') {\n animationDirection = 'down';\n }\n else {\n animationDirection = 'up';\n }\n var flipPositions = {\n down: 'up',\n up: 'down',\n left: 'right',\n right: 'left'\n };\n if (_this._collisions && _this._collisions.flipped) {\n animationDirection = flipPositions[animationDirection];\n }\n slide(element, animationDirection, _this.animationDuration[type], type, callback);\n };\n _this.onClosing = function (popup) {\n if (!_this.props.show) {\n popup.classList.remove(ANIMATION_CONTAINER_SHOWN);\n }\n _this.detachRepositionHandlers();\n };\n _this.onClosed = function () {\n if (_this.state.current === Status.hiding && _this.state.previous === Status.shown) {\n _this.setState({ current: Status.hidden, previous: _this.state.current });\n }\n if (_this.props.onClose) {\n _this.props.onClose.call(undefined, { target: _this });\n }\n };\n _this.getCurrentZIndex = function () {\n return _this.context ? _this.context + ZINDEX_POPUP_STEP : DEFAULT_POPUP_ZINDEX;\n };\n validatePackage(packageMetadata);\n _this.reposition = throttle(_this.reposition.bind(_this), FRAME_DURATION);\n return _this;\n }\n Object.defineProperty(PopupWithoutContext.prototype, \"element\", {\n /**\n * Represents the Popup DOM element.\n */\n get: function () {\n return this._popup;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n PopupWithoutContext.getDerivedStateFromProps = function (props, state) {\n var show = props.show, anchor = props.anchor, anchorAlign = props.anchorAlign, appendTo = props.appendTo, collision = props.collision, popupAlign = props.popupAlign, className = props.className, popupClass = props.popupClass, style = props.style, offset = props.offset, contentKey = props.contentKey;\n var nextState = __assign(__assign({}, state), { props: {\n show: show,\n anchor: anchor,\n anchorAlign: anchorAlign,\n appendTo: appendTo,\n collision: collision,\n popupAlign: popupAlign,\n className: className,\n popupClass: popupClass,\n style: style,\n offset: offset,\n contentKey: contentKey\n } });\n if (props.show) {\n if (state.current === Status.hidden || state.current === Status.hiding) {\n return __assign(__assign({}, nextState), { current: Status.showing, previous: state.current });\n }\n if (state.current === Status.showing) {\n return __assign(__assign({}, nextState), { current: Status.shown, previous: state.current });\n }\n if (state.current === Status.shown &&\n (!isEquivalent(offset, state.props.offset) ||\n !isEquivalent(anchorAlign, state.props.anchorAlign) ||\n !isEquivalent(appendTo, state.props.appendTo) ||\n !isEquivalent(collision, state.props.collision) ||\n !isEquivalent(popupAlign, state.props.popupAlign) ||\n !isEquivalent(style, state.props.style) ||\n anchor !== state.props.anchor ||\n popupClass !== state.props.popupClass ||\n className !== state.props.className)) {\n return __assign(__assign({}, nextState), { current: Status.reposition, previous: state.current });\n }\n return nextState;\n }\n if (state.current === Status.hiding || state.current === Status.hidden) {\n return __assign(__assign({}, nextState), { current: Status.hidden, previous: state.current });\n }\n return __assign(__assign({}, nextState), { current: Status.hiding, previous: state.current });\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.current === Status.showing && this._popup) {\n this.show(this._popup);\n }\n else if (this.state.current === Status.hiding && this._popup) {\n this.onClosing(this._popup);\n this.animate(this._popup.firstChild, 'exit', this.onClosed);\n }\n else if (this.state.current === Status.reposition && this.state.previous === Status.shown) {\n this.setState({ current: Status.shown, previous: this.state.current });\n }\n else if (this.state.current === Status.shown &&\n prevProps.contentKey !== this.props.contentKey && this._popup) {\n this.setPosition(this._popup);\n }\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.componentDidMount = function () {\n if (this.state.current === Status.showing && this._popup) {\n this.show(this._popup);\n }\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.componentWillUnmount = function () {\n this.detachRepositionHandlers();\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, className = _a.className, popupClass = _a.popupClass, show = _a.show, id = _a.id, positionMode = _a.positionMode;\n var calculatedAppendTo = this.props.appendTo ?\n this.props.appendTo :\n canUseDOM ?\n (this.props.anchor && this.props.anchor.ownerDocument ? this.props.anchor.ownerDocument.body : document.body)\n : undefined;\n if (this.state.current === Status.reposition && this.state.previous === Status.shown && this._popup) {\n this.setPosition(this._popup);\n }\n var style = Object.assign({}, { position: positionMode, top: 0, left: -10000 }, this.props.style || {});\n var closing = this.state.current === Status.hiding;\n if ((show || closing) && calculatedAppendTo) {\n var currentZIndex = this.getCurrentZIndex();\n var popupElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n React.createElement(\"div\", { className: classNames(ANIMATION_CONTAINER, ANIMATION_CONTAINER_RELATIVE, className), id: id, ref: function (e) { return _this._popup = e; }, style: __assign({ zIndex: currentZIndex }, style) },\n React.createElement(\"div\", { className: classNames(K_POPUP, popupClass, ANIMATION_CONTAINER_CHILD), style: { transitionDelay: '0ms' } }, children))));\n return this.props.appendTo !== null ?\n ReactDOM.createPortal(popupElement, calculatedAppendTo) :\n popupElement;\n }\n return null;\n };\n Object.defineProperty(PopupWithoutContext.prototype, \"animationDuration\", {\n get: function () {\n var animate = this.props.animate;\n var enter = 0;\n var exit = 0;\n if (animate) {\n if (animate === true) {\n enter = exit = 300;\n }\n else {\n enter = animate.openDuration || 0;\n exit = animate.closeDuration || 0;\n }\n }\n return { enter: enter, exit: exit };\n },\n enumerable: false,\n configurable: true\n });\n PopupWithoutContext.prototype.attachRepositionHandlers = function (element) {\n var _this = this;\n this.detachRepositionHandlers();\n this._scrollableParents = domUtils.scrollableParents(this.props.anchor || element);\n if (this._scrollableParents) {\n this._scrollableParents.map(function (p) { return p.addEventListener('scroll', _this.reposition); });\n }\n window.addEventListener('resize', this.reposition);\n };\n PopupWithoutContext.prototype.detachRepositionHandlers = function () {\n var _this = this;\n if (this._scrollableParents) {\n this._scrollableParents.map(function (p) { return p.removeEventListener('scroll', _this.reposition); });\n this._scrollableParents = undefined;\n }\n window.removeEventListener('resize', this.reposition);\n };\n PopupWithoutContext.prototype.reposition = function () {\n this.setState({ current: Status.reposition, previous: this.state.current });\n };\n /**\n * @hidden\n */\n PopupWithoutContext.propTypes = {\n anchor: function (props) {\n var anchor = props.anchor;\n if (anchor && typeof anchor.nodeType !== 'number') {\n return new Error('Invalid prop `anchor` supplied to `Kendo React Popup`. Validation failed.');\n }\n return null;\n },\n appendTo: function (props) {\n var element = props.appendTo;\n if (element && typeof element.nodeType !== 'number') {\n return new Error('Invalid prop `appendTo` supplied to `Kendo React Popup`. Validation failed.');\n }\n return null;\n },\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.object\n ]),\n id: PropTypes.string,\n popupClass: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.object\n ]),\n collision: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n CollisionEnum.fit,\n CollisionEnum.flip,\n CollisionEnum.none\n ]),\n vertical: PropTypes.oneOf([\n CollisionEnum.fit,\n CollisionEnum.flip,\n CollisionEnum.none\n ])\n }),\n anchorAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n AlignPoint.left,\n AlignPoint.center,\n AlignPoint.right\n ]),\n vertical: PropTypes.oneOf([\n AlignPoint.top,\n AlignPoint.center,\n AlignPoint.bottom\n ])\n }),\n popupAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n AlignPoint.left,\n AlignPoint.center,\n AlignPoint.right\n ]),\n vertical: PropTypes.oneOf([\n AlignPoint.top,\n AlignPoint.center,\n AlignPoint.bottom\n ])\n }),\n offset: PropTypes.shape({\n left: PropTypes.number,\n top: PropTypes.number\n }),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node\n ]),\n show: PropTypes.bool,\n animate: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })\n ]),\n margin: PropTypes.shape({\n horizontal: PropTypes.number,\n vertical: PropTypes.number\n }),\n positionMode: PropTypes.oneOf([\n 'fixed',\n 'absolute'\n ]),\n scale: PropTypes.number,\n style: PropTypes.object,\n onClose: PropTypes.func,\n onPosition: PropTypes.func,\n onOpen: PropTypes.func\n };\n /**\n * @hidden\n */\n PopupWithoutContext.defaultProps = {\n collision: {\n horizontal: CollisionEnum.fit,\n vertical: CollisionEnum.flip\n },\n anchorAlign: {\n horizontal: AlignPoint.left,\n vertical: AlignPoint.bottom\n },\n popupAlign: {\n horizontal: AlignPoint.left,\n vertical: AlignPoint.top\n },\n offset: DEFAULT_OFFSET,\n animate: true,\n show: false,\n margin: {\n horizontal: 0,\n vertical: 0\n },\n positionMode: 'absolute'\n };\n /**\n * @hidden\n */\n PopupWithoutContext.contextType = ZIndexContext;\n /**\n * @hidden\n */\n PopupWithoutContext.displayName = 'PopupComponent';\n return PopupWithoutContext;\n}(React.Component));\nexport { PopupWithoutContext };\n","/**\n * @hidden\n */\nexport var isDifferentOffset = function (oldOffset, newOffset) {\n var oldLeft = oldOffset.left, oldTop = oldOffset.top;\n var newLeft = newOffset.left, newTop = newOffset.top;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nexport var hasBoundingRect = function (elem) { return !!elem.getBoundingClientRect; };\n/**\n * @hidden\n */\nexport var FRAME_DURATION = 1000 / 60; // 1000ms divided by 60fps\n/**\n * @hidden\n */\nexport var throttle = function (func, wait, options) {\n if (options === void 0) { options = {}; }\n var timeout, context, args, result;\n var previous = 0;\n options = options || {};\n var later = function () {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = undefined;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n var throttled = function () {\n var now = new Date().getTime();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n context = undefined; // this\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n }\n else if (!timeout && options.trailing !== false) {\n timeout = window.setTimeout(later, remaining);\n }\n return result;\n };\n return throttled;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { PopupWithoutContext } from './PopupWithoutContext';\n/**\n * The PopupPropsContext. It allows to configure the Popup props from a wrapper component.\n *\n * @example\n * ```jsx-no-run\n * ({ ...props, appendTo: document.querySelector('myPopupsContainer') })}>\n * \n * \n * \n * ```\n */\nexport var PopupPropsContext = React.createContext(function (props) { return props; });\n/**\n * The KendoReact Popup component.\n */\nexport var Popup = React.forwardRef(function (props, ref) {\n var contextPropsCallback = React.useContext(PopupPropsContext);\n var popupProps = contextPropsCallback.call(undefined, props);\n return (React.createElement(PopupWithoutContext, __assign({ ref: ref }, popupProps)));\n});\nPopup.displayName = 'Popup';\n","import * as React from 'react';\n/**\n * @hidden\n */\nexport var ChartContext = React.createContext(null);\nChartContext.displayName = 'ChartContext';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { toDomEvent } from './../events/dom-event';\nimport { hasParent } from '../utils/main';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { ChartContext } from '../ChartContext';\nvar COLLISION = { horizontal: 'fit', vertical: 'fit' };\nvar TOOLTIP_CLASS = 'k-chart-tooltip';\nvar POPUP_WRAPPER_CLASS = 'k-chart-tooltip-wrapper';\n/**\n * @hidden\n */\nvar TooltipPopup = /** @class */ (function (_super) {\n __extends(TooltipPopup, _super);\n function TooltipPopup(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.context = null;\n _this.element = null;\n _this.onChartMouseLeave = function (e) {\n var syntheticEvent = e.syntheticEvent;\n if (hasParent(syntheticEvent.relatedTarget, _this.element)) {\n /* prevent default behavior so that the tooltip won't be hidden */\n return true;\n }\n return false;\n };\n _this.onMouseLeave = function (e) {\n var domEvent = toDomEvent(_this, e);\n var isDefaultPrevented = _this.context.childrenObserver.trigger('onMouseLeave', domEvent);\n if (isDefaultPrevented) {\n e.preventDefault();\n }\n };\n _this.chartObserver = new InstanceObserver(_this, {\n onMouseLeave: 'onChartMouseLeave'\n });\n context.observersStore.dispatch({\n type: 'add',\n payload: _this.chartObserver\n });\n return _this;\n }\n TooltipPopup.prototype.render = function () {\n var _this = this;\n var _a = this.props, popupShown = _a.popupShown, popupAlign = _a.popupAlign, popupOffset = _a.popupOffset, popupStyles = _a.popupStyles, popupContent = _a.popupContent, className = _a.className;\n var wrapperClass = [TOOLTIP_CLASS, className].join(' ').trim();\n var popupComponent = (React.createElement(Popup, { animate: false, popupAlign: popupAlign, offset: popupOffset, show: popupShown, collision: COLLISION, className: POPUP_WRAPPER_CLASS },\n React.createElement(\"div\", { className: wrapperClass, style: popupStyles, onMouseLeave: this.onMouseLeave, ref: function (el) { return _this.element = el; } }, popupContent())));\n return popupComponent;\n };\n TooltipPopup.prototype.componentWillUnmount = function () {\n this.context.observersStore.dispatch({\n type: 'remove',\n payload: this.chartObserver\n });\n };\n TooltipPopup.contextType = ChartContext;\n return TooltipPopup;\n}(React.Component));\nexport { TooltipPopup };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { TooltipPoint } from './Point';\nimport { SharedTooltipContent } from './SharedTooltipContent';\nimport { TooltipPopup } from './Popup';\nimport { ChartContext } from '../ChartContext';\nvar SHARED_TOOLTIP_CLASS = 'k-chart-shared-tooltip';\nvar INVERSE_TOOLTIP_CLASS = 'k-chart-tooltip-inverse';\n/**\n * @hidden\n */\nvar SeriesTooltip = /** @class */ (function (_super) {\n __extends(SeriesTooltip, _super);\n function SeriesTooltip() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.context = null;\n _this.state = {\n popupShown: false\n };\n _this.chartObserver = null;\n return _this;\n }\n SeriesTooltip.prototype.componentDidMount = function () {\n // This is moved here as calls to the listed methods contains setState which is restricted before component mount\n this.chartObserver = new InstanceObserver(this, {\n showTooltip: 'onShowTooltip',\n hideTooltip: 'onHideTooltip'\n });\n this.context.observersStore.dispatch({\n type: 'add',\n payload: this.chartObserver\n });\n };\n SeriesTooltip.prototype.render = function () {\n var _a;\n var _this = this;\n var _b = this.state, popupContext = _b.popupContext, shared = _b.shared, className = _b.className, tooltipProps = __rest(_b, [\"popupContext\", \"shared\", \"className\"]);\n var tooltipContent = this.state.popupShown ? function () {\n var render = _this.findRenderFunction();\n if (shared) {\n return render !== null ? render(popupContext) :\n (React.createElement(SharedTooltipContent, __assign({}, popupContext)));\n }\n else {\n var point = popupContext.point;\n var seriesRenderer = _this.findRenderFunctionByIndex(point.series.index);\n if (seriesRenderer !== null) {\n return seriesRenderer(popupContext);\n }\n else if (render !== null) {\n return render(popupContext);\n }\n else {\n return (React.createElement(\"span\", { dangerouslySetInnerHTML: { __html: popupContext.point.formattedValue } }));\n }\n }\n } : Function.prototype;\n var popupContainerClassName = classNames((_a = {},\n _a[SHARED_TOOLTIP_CLASS] = shared,\n _a[INVERSE_TOOLTIP_CLASS] = !!className,\n _a));\n return (React.createElement(TooltipPopup, __assign({}, tooltipProps, { popupContent: tooltipContent, className: popupContainerClassName })));\n };\n SeriesTooltip.prototype.componentWillUnmount = function () {\n this.context.observersStore.dispatch({\n type: 'remove',\n payload: this.chartObserver\n });\n };\n SeriesTooltip.prototype.onShowTooltip = function (e) {\n var anchor = e.anchor, style = e.style, shared = e.shared, className = e.className, crosshair = e.crosshair;\n var context;\n if (crosshair) {\n return;\n }\n if (shared) {\n context = this.createSharedTooltipContext(e);\n }\n else {\n context = this.createTooltipContext(e);\n }\n this.setState({\n popupShown: true,\n popupAlign: anchor.align,\n popupOffset: anchor.point,\n popupContext: context,\n popupStyles: style,\n className: className,\n shared: shared\n });\n };\n SeriesTooltip.prototype.onHideTooltip = function () {\n this.setState({\n popupShown: false,\n popupStyles: {},\n className: undefined\n });\n };\n SeriesTooltip.prototype.createSharedTooltipContext = function (e) {\n var points = e.points, categoryText = e.categoryText;\n var nameColumn = points.filter(function (point) { return typeof point.series.name !== 'undefined'; }).length > 0;\n var colorMarker = e.series.length > 1;\n var colspan = 1;\n if (nameColumn) {\n colspan++;\n }\n if (colorMarker) {\n colspan++;\n }\n return {\n categoryText: categoryText,\n colorMarker: colorMarker,\n colspan: colspan,\n nameColumn: nameColumn,\n points: e.points.map(function (point) { return new TooltipPoint(point, e.format); })\n };\n };\n SeriesTooltip.prototype.createTooltipContext = function (e) {\n var point = e.point, format = e.format;\n return { point: new TooltipPoint(point, format) };\n };\n SeriesTooltip.prototype.findRenderFunctionByIndex = function (seriesIdx) {\n var series = this.context.optionsStore.getState().series;\n if (series !== undefined\n && Array.isArray(series)\n && series[seriesIdx] !== undefined\n && series[seriesIdx].hasOwnProperty('tooltip')\n && series[seriesIdx].tooltip.hasOwnProperty('render')) {\n return series[seriesIdx].tooltip.render;\n }\n return null;\n };\n SeriesTooltip.prototype.findRenderFunction = function () {\n var tooltip = this.context.optionsStore.getState().tooltip;\n if (tooltip !== undefined\n && tooltip.hasOwnProperty('render')) {\n return tooltip.render;\n }\n return null;\n };\n SeriesTooltip.contextType = ChartContext;\n return SeriesTooltip;\n}(React.Component));\nexport { SeriesTooltip };\n","/**\n * @hidden\n */\nvar Container = function (props) { return (props.children); };\nContainer.displayName = 'Container';\n/* eslint-disable max-len */\n/**\n * To provide support for React versions which do not support `React.Fragment`, the following component acts as its replacement. Returning an array is not an option as it blocks unit testing until [https://github.com/airbnb/enzyme/pull/1498#issuecomment-378413134](https://github.com/airbnb/enzyme/pull/1498#issuecomment-378413134) is released.\n */\nexport { Container };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { TooltipPopup } from './Popup';\nimport { ChartContext } from '../ChartContext';\nvar CROSSHAIR_TOOLTIP_CLASS = 'k-chart-crosshair-tooltip';\nvar INVERSE_TOOLTIP_CLASS = 'k-chart-tooltip-inverse';\n/**\n * @hidden\n */\nvar CrosshairTooltip = /** @class */ (function (_super) {\n __extends(CrosshairTooltip, _super);\n function CrosshairTooltip(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.context = null;\n _this.state = {\n popupShown: false\n };\n _this.chartObserver = new InstanceObserver(_this, {\n showTooltip: 'onShowTooltip',\n hideTooltip: 'onHideTooltip'\n });\n context.observersStore.dispatch({\n type: 'add',\n payload: _this.chartObserver\n });\n return _this;\n }\n CrosshairTooltip.prototype.render = function () {\n var _a;\n var _b = this.state, popupContend = _b.popupContend, className = _b.className, tooltipProps = __rest(_b, [\"popupContend\", \"className\"]);\n var tooltipContent = this.state.popupShown ? function () { return popupContend; } : Function.prototype;\n var popupContainerClassName = classNames((_a = {},\n _a[CROSSHAIR_TOOLTIP_CLASS] = true,\n _a[INVERSE_TOOLTIP_CLASS] = !!className,\n _a));\n return (React.createElement(TooltipPopup, __assign({}, tooltipProps, { popupContent: tooltipContent, className: popupContainerClassName })));\n };\n CrosshairTooltip.prototype.componentWillUnmount = function () {\n var _a;\n (_a = this.context) === null || _a === void 0 ? void 0 : _a.observersStore.dispatch({\n type: 'remove',\n payload: this.chartObserver\n });\n };\n CrosshairTooltip.prototype.onShowTooltip = function (e) {\n var anchor = e.anchor, style = e.style, className = e.className, crosshair = e.crosshair, axisName = e.axisName, axisIndex = e.axisIndex, value = e.value;\n var _a = this.props, name = _a.name, index = _a.index;\n if (!crosshair) {\n return;\n }\n if (axisName === name && axisIndex === index) {\n this.setState({\n popupShown: true,\n popupAlign: anchor.align,\n popupOffset: anchor.point,\n popupContend: value,\n popupStyles: style,\n className: className\n });\n }\n };\n CrosshairTooltip.prototype.onHideTooltip = function () {\n this.setState({\n popupShown: false,\n popupStyles: {},\n className: undefined\n });\n };\n CrosshairTooltip.contextType = ChartContext;\n return CrosshairTooltip;\n}(React.Component));\nexport { CrosshairTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { Container } from './../Container';\nimport { CrosshairTooltip } from './Crosshair';\nimport { ChartContext } from '../ChartContext';\nvar AXES = ['categoryAxis', 'valueAxis', 'xAxis', 'yAxis'];\nfunction mapTooltips(options) {\n var map = {};\n for (var idx = 0; idx < AXES.length; idx++) {\n var tooltips = axesCrosshairTooltipOptions(options, AXES[idx]);\n for (var tooltipIdx = 0; tooltipIdx < tooltips.length; tooltipIdx++) {\n var tooltip = tooltips[tooltipIdx];\n map[tooltip.name + tooltip.index] = tooltip;\n }\n }\n return map;\n}\nfunction axesCrosshairTooltipOptions(options, name) {\n var result = [];\n if (options[name]) {\n var axes = [].concat(options[name]);\n for (var idx = 0; idx < axes.length; idx++) {\n var tooltip = (axes[idx].crosshair || {}).tooltip;\n if (tooltip && tooltip.visible) {\n result.push({\n index: idx,\n name: name\n });\n }\n }\n }\n return result;\n}\n/**\n * @hidden\n */\nvar CrosshairTooltipContainer = /** @class */ (function (_super) {\n __extends(CrosshairTooltipContainer, _super);\n function CrosshairTooltipContainer() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.context = null;\n _this.state = {\n tooltips: {}\n };\n _this.storeUnsubscriber = Function.prototype;\n _this.subscriber = function () {\n var _a;\n _this.setState({\n tooltips: mapTooltips((_a = _this.context) === null || _a === void 0 ? void 0 : _a.optionsStore.getState())\n });\n };\n return _this;\n }\n CrosshairTooltipContainer.prototype.componentDidMount = function () {\n // This is moved here as calls to the listed methods contains setState which is restricted before component mount\n this.storeUnsubscriber = this.context.optionsStore.subscribe(this.subscriber);\n };\n CrosshairTooltipContainer.prototype.render = function () {\n var tooltips = this.state.tooltips;\n var childrenMap = Object.keys(tooltips).map(function (key) { return (React.createElement(CrosshairTooltip, __assign({}, tooltips[key], { key: key }))); });\n return React.createElement(Container, null, childrenMap);\n };\n CrosshairTooltipContainer.prototype.componentWillUnmount = function () {\n this.storeUnsubscriber();\n };\n CrosshairTooltipContainer.contextType = ChartContext;\n return CrosshairTooltipContainer;\n}(React.Component));\nexport { CrosshairTooltipContainer };\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-charts',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1674668263,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { registerForIntl, provideIntlService } from '@progress/kendo-react-intl';\nimport { DomEventsBuilder as ChartDomEventsBuilder, InstanceObserver } from '@progress/kendo-charts';\nimport { canUseDOM } from '@progress/kendo-react-common';\nimport { hasParent } from './utils/main';\nimport { DomEventsBuilder } from './events/dom-events-builder';\nimport { create as createEvent } from './events/chart-event-builder';\nimport { toDomEvent } from './events/dom-event';\nimport { loadTheme } from './theming/theme-service';\nimport createStore from './store/store';\nimport { optionsReducer, themeReducer, observersReducer } from './store/reducer';\nimport { toggle } from './utils/main';\nimport './defaults';\nimport { SeriesTooltip } from './tooltip/Series';\nimport { CrosshairTooltipContainer } from './tooltip/CrosshairContainer';\nimport { ChartContext } from './ChartContext';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * @hidden\n */\nvar BaseChart = /** @class */ (function (_super) {\n __extends(BaseChart, _super);\n function BaseChart(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.chartInstance = null;\n /**\n * @hidden\n */\n _this.surface = null;\n _this._element = null;\n _this.optionsStore = {};\n _this.optionsUnsubscriber = Function.prototype;\n _this.themeStore = {};\n _this.themeUnsubscriber = Function.prototype;\n _this.observersStore = {};\n _this.suppressTransitions = false;\n /* Chart handlers */\n /**\n * @hidden\n */\n _this.onRender = function (e) {\n if (_this.chartInstance !== null) {\n _this.surface = e.sender.surface;\n _this.trigger('render', e);\n }\n };\n /**\n * @hidden\n */\n _this.onLegendItemClick = function (e) {\n if (_this.chartInstance !== null) {\n /**\n * In \"controlled\" state the user should toggle the series data visibility\n */\n if (_this.props.onLegendItemClick) {\n _this.trigger('legendItemClick', e);\n }\n else {\n var series = _this.optionsStore.getState().series;\n if (!series) {\n return;\n }\n var payload = {};\n var seriesIndex = e.seriesIndex, pointIndex = e.pointIndex;\n var seriesByIndex = series[seriesIndex];\n if (pointIndex === undefined) {\n payload = Object.assign({}, seriesByIndex, { visible: toggle(seriesByIndex.visible) });\n }\n else {\n var pv = seriesByIndex.pointVisibility = seriesByIndex.pointVisibility || [];\n pv[pointIndex] = toggle(pv[pointIndex]);\n payload = Object.assign({}, seriesByIndex);\n }\n _this.optionsStore.dispatch({\n chartCollectionIdxKey: \"series_\".concat(seriesIndex),\n payload: payload\n });\n _this.suppressTransitions = true;\n }\n }\n };\n /* Dom event handlers */\n /**\n * @hidden\n */\n _this.onWindowResize = function () {\n if (_this.chartInstance !== null) {\n _this.chartInstance.resize();\n }\n };\n /**\n * @hidden\n */\n _this.onChartMouseLeave = function (e) {\n var domEvent = toDomEvent(_this, e);\n var isDefaultPrevented = _this.triggerDomEvent('onMouseLeave', domEvent);\n if (isDefaultPrevented) {\n e.preventDefault();\n }\n else if (_this.chartInstance !== null) {\n _this.chartInstance.hideElements();\n }\n };\n /**\n * @hidden\n */\n _this.onChildMouseLeave = function (e) {\n var syntheticEvent = e.syntheticEvent;\n if (_this.chartInstance && !hasParent(syntheticEvent.relatedTarget, _this.element)) {\n _this.chartInstance.hideElements();\n }\n return false;\n };\n validatePackage(packageMetadata);\n _this.optionsStore = createStore(optionsReducer);\n _this.observersStore = createStore(observersReducer);\n _this.childrenObserver = new InstanceObserver(_this, { onMouseLeave: 'onChildMouseLeave' });\n _this.contextValue = {\n optionsStore: _this.optionsStore,\n observersStore: _this.observersStore,\n childrenObserver: _this.childrenObserver\n };\n _this.themeStore = createStore(themeReducer);\n _this.chartObserver = new InstanceObserver(_this, { render: 'onRender', legendItemClick: 'onLegendItemClick' });\n return _this;\n }\n Object.defineProperty(BaseChart.prototype, \"element\", {\n /**\n * @hidden\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n BaseChart.prototype.componentDidMount = function () {\n var _a;\n var doc = ((_a = this._element) === null || _a === void 0 ? void 0 : _a.ownerDocument) || document;\n loadTheme(this.themeStore, this.instantiateCoreChart.bind(this), doc);\n this.optionsUnsubscriber = this.optionsStore.subscribe(this.refresh.bind(this));\n this.themeUnsubscriber = this.themeStore.subscribe(this.refresh.bind(this));\n window.addEventListener('resize', this.onWindowResize);\n };\n /**\n * @hidden\n */\n BaseChart.prototype.componentWillUnmount = function () {\n this.optionsUnsubscriber();\n this.themeUnsubscriber();\n if (this.chartInstance !== null) {\n this.chartInstance.destroy();\n this.chartInstance = null;\n }\n window.removeEventListener('resize', this.onWindowResize);\n };\n /**\n * @hidden\n */\n BaseChart.prototype.componentDidUpdate = function (prevProps) {\n var _a = this.props, dir = _a.dir, children = _a.children, spreadProps = __rest(_a, [\"dir\", \"children\"]);\n if (this.chartInstance !== null) {\n var currentIntlService = provideIntlService(this);\n var chartService = this.chartInstance.chartService;\n var localeChanged = currentIntlService.locale !== chartService._intlService.locale;\n var shouldUpdate = Object.entries(prevProps)\n .filter(function (keyValue) { return (keyValue[0] !== 'dir' && keyValue[0] !== 'children'); })\n .some(function (keyValue) {\n var key = keyValue[0], value = keyValue[1];\n return !(spreadProps.hasOwnProperty(key) && spreadProps[key] === value);\n });\n if (localeChanged) {\n this.chartInstance.chartService._intlService = currentIntlService;\n this.chartInstance.chartService.format._intlService = currentIntlService;\n if (!shouldUpdate) {\n this.chartInstance.noTransitionsRedraw();\n }\n }\n if (shouldUpdate) {\n this.refresh();\n }\n if (prevProps.dir !== dir) {\n this.chartInstance.setDirection(this.getDirection(dir));\n }\n }\n };\n /**\n * @hidden\n */\n BaseChart.prototype.render = function () {\n var _this = this;\n var _a = this.props, _b = _a.style, style = _b === void 0 ? {} : _b, className = _a.className, wrapper = _a.wrapper, children = _a.children;\n var chartStyles = Object.assign({}, style, { position: 'relative' });\n var content = React.createElement(wrapper, {\n className: className,\n style: chartStyles,\n key: 'chartElement'\n }, (React.createElement(\"div\", { onMouseLeave: this.onChartMouseLeave, ref: function (el) { return _this._element = el; }, className: \"k-chart-surface\" }, children)));\n return (React.createElement(ChartContext.Provider, { value: this.contextValue },\n React.createElement(SeriesTooltip, { key: \"seriesTooltip\" }),\n React.createElement(CrosshairTooltipContainer, { key: \"crosshairTooltips\" }),\n content));\n };\n /**\n * @hidden\n */\n BaseChart.prototype.getDirection = function (dir) {\n var _this = this;\n var directionFromWindow = function () { return canUseDOM && window.getComputedStyle(_this.element).direction; };\n var direction = dir !== undefined ? dir : (directionFromWindow() || 'ltr');\n return direction === 'rtl';\n };\n /**\n * @hidden\n */\n BaseChart.prototype.getChartOptions = function () {\n var _a = this.props, renderAs = _a.renderAs, pannable = _a.pannable, zoomable = _a.zoomable, paneDefaults = _a.paneDefaults, panes = _a.panes, transitions = _a.transitions, seriesColors = _a.seriesColors, seriesDefaults = _a.seriesDefaults, axisDefaults = _a.axisDefaults, deriveOptionsFromParent = _a.deriveOptionsFromParent;\n var chartOptions = {};\n // undefined clears chart defaults which leads to several issues\n if (renderAs !== undefined) {\n chartOptions.renderAs = renderAs;\n }\n if (pannable !== undefined) {\n chartOptions.pannable = pannable;\n }\n if (zoomable !== undefined) {\n chartOptions.zoomable = zoomable;\n }\n if (paneDefaults !== undefined) {\n chartOptions.paneDefaults = paneDefaults;\n }\n if (panes !== undefined) {\n chartOptions.panes = panes;\n }\n if (transitions !== undefined) {\n chartOptions.transitions = transitions;\n }\n if (seriesColors !== undefined) {\n chartOptions.seriesColors = seriesColors;\n }\n if (seriesDefaults !== undefined) {\n chartOptions.seriesDefaults = seriesDefaults;\n }\n if (axisDefaults !== undefined) {\n chartOptions.axisDefaults = axisDefaults;\n }\n chartOptions = Object.assign(chartOptions, this.optionsStore.getState());\n if (deriveOptionsFromParent) {\n chartOptions = deriveOptionsFromParent(chartOptions);\n }\n return chartOptions;\n };\n /**\n * @hidden\n */\n BaseChart.prototype.refresh = function () {\n if (this.chartInstance !== null) {\n var themeOptions = this.themeStore.getState();\n var chartOptions = this.getChartOptions();\n var transitions = chartOptions.transitions;\n if (this.suppressTransitions) {\n chartOptions.transitions = false;\n }\n if (this.props.onRefresh) {\n this.props.onRefresh.call(undefined, chartOptions, themeOptions, this.chartInstance);\n }\n else {\n this.chartInstance.setOptions(chartOptions, themeOptions);\n }\n if (this.suppressTransitions) {\n chartOptions.transitions = transitions;\n this.suppressTransitions = false;\n }\n }\n };\n /**\n * @hidden\n */\n BaseChart.prototype.instantiateCoreChart = function () {\n var _a = this.props, dir = _a.dir, chartConstructor = _a.chartConstructor;\n var chartOptions = this.getChartOptions();\n this.chartInstance = new chartConstructor(this.element, chartOptions, this.themeStore.getState(), {\n rtl: this.getDirection(dir),\n intlService: provideIntlService(this),\n observer: this.chartObserver,\n sender: this\n });\n };\n /* Triggers public dom event handlers */\n /**\n * @hidden\n */\n BaseChart.prototype.trigger = function (name, e) {\n var target = this.props.getTarget();\n var eventObject = createEvent(name, e, target);\n var handler = 'on' + name.charAt(0).toUpperCase() + name.slice(1);\n var observers = this.observersStore.getState();\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, e)) {\n isDefaultPrevented = true;\n }\n }\n /* We have not prevented the event internally, now pass it to the user */\n if (isDefaultPrevented === false\n && eventObject\n && this.props.hasOwnProperty(handler)) {\n this.props[handler].call(undefined, eventObject);\n return eventObject.isDefaultPrevented && eventObject.isDefaultPrevented();\n }\n return isDefaultPrevented;\n };\n /* Used by (event)InstanceObserver to check the wrapper for supported events */\n /**\n * @hidden\n */\n BaseChart.prototype.requiresHandlers = function (names) {\n for (var idx = 0; idx < names.length; idx++) {\n var name_1 = names[idx];\n var handler = 'on' + name_1.charAt(0).toUpperCase() + name_1.slice(1);\n if (this.props.hasOwnProperty(handler)) {\n return true;\n }\n }\n return false;\n };\n /* Triggers private dom event handlers */\n /**\n * @hidden\n */\n BaseChart.prototype.triggerDomEvent = function (name, e) {\n var observers = this.observersStore.getState();\n var isDefaultPrevented = false;\n for (var idx = 0; idx < observers.length; idx++) {\n if (observers[idx].trigger(name, e)) {\n isDefaultPrevented = true;\n }\n }\n return isDefaultPrevented;\n };\n /**\n * @hidden\n */\n BaseChart.propTypes = {\n dir: PropTypes.string,\n renderAs: PropTypes.oneOf(['svg', 'canvas'])\n };\n /**\n * @hidden\n */\n BaseChart.defaultProps = {\n renderAs: 'svg'\n };\n return BaseChart;\n}(React.Component));\nexport { BaseChart };\nregisterForIntl(BaseChart);\nChartDomEventsBuilder.register(DomEventsBuilder);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport { InstanceObserver } from '@progress/kendo-charts';\nimport { ChartContext } from './ChartContext';\n/**\n * @hidden\n */\nvar DonutCenter = /** @class */ (function (_super) {\n __extends(DonutCenter, _super);\n function DonutCenter(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.context = null;\n _this.state = {\n donutCenterStyles: null\n };\n _this.chartObserver = new InstanceObserver(_this, {\n render: 'onRender'\n });\n context.observersStore.dispatch({\n type: 'add',\n payload: _this.chartObserver\n });\n return _this;\n }\n DonutCenter.prototype.render = function () {\n var render = this.props.render;\n var donutCenterStyles = this.state.donutCenterStyles;\n var renderer = null;\n if (render && donutCenterStyles) {\n renderer = (React.createElement(\"div\", { className: \"k-chart-donut-center\", style: donutCenterStyles }, render()));\n }\n return renderer;\n };\n DonutCenter.prototype.onRender = function (event) {\n var _a;\n var series = (_a = this.context) === null || _a === void 0 ? void 0 : _a.optionsStore.getState().series;\n var firstSeries = Array.isArray(series) ? series[0] : null;\n var charts = event.sender._plotArea.charts;\n if (!firstSeries || firstSeries.type !== 'donut' || charts[0].points.length === 0) {\n return;\n }\n var sector = charts[0].points[0].sector;\n var radius = sector.innerRadius;\n var top = sector.center.y - radius;\n var left = sector.center.x - radius;\n var size = radius * 2;\n this.setState({\n donutCenterStyles: {\n height: size,\n left: left,\n top: top,\n width: size\n }\n });\n };\n DonutCenter.contextType = ChartContext;\n return DonutCenter;\n}(React.Component));\nexport { DonutCenter };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport { BaseChart } from './BaseChart';\nimport { DonutCenter } from './DonutCenter';\nimport { Chart as KendoChart } from '@progress/kendo-charts';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Represents the [KendoReact Chart component]({% slug overview_chart_charts %}).\n *\n * @example\n * ```jsx\n * import {\n * Chart,\n * ChartSeries,\n * ChartSeriesItem,\n * ChartCategoryAxis,\n * ChartCategoryAxisItem,\n * ChartTitle,\n * ChartLegend\n * } from '@progress/kendo-react-charts';\n *\n * const categories = [ 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 ];\n * const series = [ {\n * name: 'India',\n * data: [ 3.907, 7.943, 7.848, 9.284, 9.263, 9.801, 3.890, 8.238, 9.552, 6.855 ]\n * }, {\n * name: 'Russian Federation',\n * data: [ 4.743, 7.295, 7.175, 6.376, 8.153, 8.535, 5.247, -7.832, 4.3, 4.3 ]\n * }, {\n * name: 'Germany',\n * data: [ 0.010, -0.375, 1.161, 0.684, 3.7, 3.269, 1.083, -5.127, 3.690, 2.995 ]\n * }, {\n * name: 'World',\n * data: [ 1.988, 2.733, 3.994, 3.464, 4.001, 3.939, 1.333, -2.245, 4.339, 2.727 ]\n * } ];\n *\n * const ChartContainer = () => (\n * \n * \n * \n * \n * \n * \n * \n * {series.map((item, idx) => (\n * ))}\n * \n * \n * );\n *\n * ReactDOM.render(\n * ,\n * document.querySelector('my-app')\n * );\n * ```\n */\nvar Chart = /** @class */ (function (_super) {\n __extends(Chart, _super);\n function Chart() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this._baseChart = null;\n _this.getTarget = function () {\n return _this;\n };\n return _this;\n }\n Object.defineProperty(Chart.prototype, \"chartInstance\", {\n /**\n * @hidden\n */\n get: function () {\n if (this._baseChart !== null) {\n return this._baseChart.chartInstance;\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"surface\", {\n /**\n * The Drawing `Surface` of the Chart.\n */\n get: function () {\n if (this._baseChart !== null) {\n return this._baseChart.surface;\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Chart.prototype, \"element\", {\n /**\n * The DOM element of the Chart.\n */\n get: function () {\n if (this._baseChart !== null) {\n return this._baseChart.element;\n }\n return null;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Chart.prototype.render = function () {\n var _this = this;\n var _a = this.props, donutCenterRender = _a.donutCenterRender, children = _a.children, className = _a.className, baseChartProps = __rest(_a, [\"donutCenterRender\", \"children\", \"className\"]);\n return (React.createElement(BaseChart, __assign({}, baseChartProps, { ref: function (baseChart) { return _this._baseChart = baseChart; }, chartConstructor: KendoChart, getTarget: this.getTarget, wrapper: \"div\", className: classNames('k-chart k-widget', className) }),\n children,\n React.createElement(DonutCenter, { render: donutCenterRender })));\n };\n return Chart;\n}(React.Component));\nexport { Chart };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport createStore from './../../store/store';\nimport { optionsReducer } from './../../store/reducer';\nimport { ChartContext } from '../../ChartContext';\n/**\n * @hidden\n */\nvar ConfigurationComponent = /** @class */ (function (_super) {\n __extends(ConfigurationComponent, _super);\n function ConfigurationComponent(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.optionsStore = context.optionsStore;\n _this.childStore = createStore(optionsReducer);\n return _this;\n }\n ConfigurationComponent.prototype.render = function () {\n var _this = this;\n var children = this.props.children;\n return children !== undefined ? React.Children.map(children, function (child) {\n if (React.isValidElement(child)) {\n return _this.renderChildren(child);\n }\n return child;\n }) : null;\n };\n ConfigurationComponent.prototype.componentDidMount = function () {\n this.dispatch();\n };\n ConfigurationComponent.prototype.componentDidUpdate = function () {\n this.dispatch();\n };\n ConfigurationComponent.prototype.dispatch = function () {\n var _a = this.props, _chartKey = _a._chartKey, _chartCollectionIdxKey = _a._chartCollectionIdxKey, _parentStore = _a._parentStore, children = _a.children, options = __rest(_a, [\"_chartKey\", \"_chartCollectionIdxKey\", \"_parentStore\", \"children\"]);\n var store = _parentStore || this.optionsStore;\n store.dispatch({\n chartKey: _chartKey,\n chartCollectionIdxKey: _chartCollectionIdxKey,\n payload: Object.assign({}, options, this.childStore.getState())\n });\n };\n ConfigurationComponent.prototype.renderChildren = function (child) {\n var children = child.props.children;\n var configurationItemProps = __assign(__assign({}, child.props), { _parentStore: this.childStore });\n return React.cloneElement(child, configurationItemProps, children);\n };\n ConfigurationComponent.contextType = ChartContext;\n return ConfigurationComponent;\n}(React.Component));\nexport { ConfigurationComponent };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ConfigurationComponent } from './base/ConfigurationComponent';\nvar ChartTooltip = function (props) {\n return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"tooltip\" })));\n};\nChartTooltip.defaultProps = {\n visible: true\n};\nexport { ChartTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ChartContext } from '../../ChartContext';\n/**\n * @hidden\n */\nvar CollectionConfigurationComponent = /** @class */ (function (_super) {\n __extends(CollectionConfigurationComponent, _super);\n function CollectionConfigurationComponent(props, context) {\n var _this = _super.call(this, props, context) || this;\n _this.optionsStore = context.optionsStore;\n return _this;\n }\n CollectionConfigurationComponent.prototype.renderChildren = function (child, index) {\n var children = child.props.children;\n var _a = this.props, _chartKey = _a._chartKey, _parentStore = _a._parentStore;\n var collectionItemProps = __assign(__assign({}, child.props), { _chartCollectionIdxKey: \"\".concat(_chartKey, \"_\").concat(index), _parentStore: _parentStore });\n return React.cloneElement(child, collectionItemProps, children);\n };\n CollectionConfigurationComponent.prototype.render = function () {\n var _this = this;\n var _a = this.props, _chartKey = _a._chartKey, _parentStore = _a._parentStore, children = _a.children;\n var store = _parentStore || this.optionsStore;\n store.dispatch({\n chartKey: _chartKey,\n payload: []\n });\n return React.Children.map(children, function (child, index) {\n if (React.isValidElement(child)) {\n return _this.renderChildren(child, index);\n }\n return child;\n });\n };\n CollectionConfigurationComponent.contextType = ChartContext;\n return CollectionConfigurationComponent;\n}(React.Component));\nexport { CollectionConfigurationComponent };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ConfigurationComponent } from './base/ConfigurationComponent';\nvar ChartSeriesItem = function (props) {\n return (React.createElement(ConfigurationComponent, __assign({}, props)));\n};\nChartSeriesItem.displayName = 'ChartSeriesItem';\nexport { ChartSeriesItem };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { CollectionConfigurationComponent } from './base/CollectionConfigurationComponent';\nimport { ChartSeriesItem } from './SeriesItem';\nimport { validateChildren } from '../utils/main';\nvar ChartSeries = function (props) {\n return (React.createElement(CollectionConfigurationComponent, __assign({}, props, { _chartKey: \"series\" })));\n};\nChartSeries.propTypes = {\n children: function (props, propName, componentName) {\n return validateChildren(props, propName, componentName, ChartSeriesItem);\n }\n};\nexport { ChartSeries };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { ConfigurationComponent } from './base/ConfigurationComponent';\nvar ChartLegend = function (props) {\n return (React.createElement(ConfigurationComponent, __assign({}, props, { _chartKey: \"legend\" })));\n};\nChartLegend.defaultProps = {\n visible: true\n};\nexport { ChartLegend };\n","import { Chart, ChartLegend, ChartSeries, ChartSeriesItem, ChartTooltip, SharedTooltipContext, TooltipContext } from '@progress/kendo-react-charts';\r\nimport { Card, CardBody, CardTitle } from '@progress/kendo-react-layout';\r\nimport 'hammerjs';\r\nimport { ReactElement, ReactNode } from 'react';\r\n\r\nimport './DonutChartWidgetTheme.scss';\r\n\r\nexport interface ChartElementDTO {\r\n color: string | null;\r\n}\r\n\r\ninterface IDonutChartWidgetProps\r\n{\r\n title?: string;\r\n className?: string;\r\n data: T[]\r\n categoryField: keyof T;\r\n field: keyof T;\r\n /**\r\n * When set, the prop is used to render the Donut Center template.\r\n */\r\n donutCenterRender?: () => ReactElement;\r\n legend?: boolean;\r\n children?: ReactNode;\r\n onClick?: () => void;\r\n}\r\n\r\nexport function DonutChartWidget({\r\n title,\r\n className = '',\r\n data,\r\n categoryField,\r\n field,\r\n donutCenterRender,\r\n legend = false,\r\n children,\r\n onClick\r\n}: IDonutChartWidgetProps): ReactElement>\r\n{\r\n const sumaTotal = data.reduce((suma, item) => suma + (item[field] as unknown as number), 0);\r\n const valorPorDefecto = sumaTotal === 0 ? [{ color: '#BDBABB', [field]: 0.1 }] : data;\r\n\r\n const renderTooltip = (context: TooltipContext | SharedTooltipContext) =>\r\n {\r\n const { category, value } = (context as TooltipContext).point || context;\r\n\r\n const valorFinal = value === 0.1 ? 0 : value;\r\n\r\n return (\r\n
\r\n {category}{value !== 0.1 ? `: ${valorFinal}` : `${title}: ${valorFinal}`}\r\n
\r\n );\r\n };\r\n\r\n return (\r\n \r\n \r\n {title && {title}}\r\n
\r\n
\r\n \r\n {legend !== true && }\r\n \r\n \r\n \r\n \r\n \r\n
\r\n {children &&\r\n
\r\n {children}\r\n
\r\n }\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nDonutChartWidget.displayName = 'DonutChartWidget';","import { sum } from 'lodash';\r\nimport { VoidFunctionComponent } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useNavigate } from 'Components/Core/Routes/Hooks/RouterHook';\r\n\r\nimport { DescargaConductorDTO, GraficaDescargaConductorDTO } from './I000000DTO';\r\nimport { DonutChartWidget } from './Widgets/DonutChartWidgetComponent';\r\n\r\ninterface IConductoresDescargaChartProps\r\n{\r\n conductores: Array;\r\n}\r\n\r\nexport const ConductoresDescargaChart: VoidFunctionComponent = ({ conductores }) =>\r\n{\r\n const { t } = useTranslation(['/FMT/I/I00/I000000/I000000'], { useSuspense: false });\r\n const navigate = useNavigate();\r\n\r\n const pendienteDescarga = conductores.filter(e => e.pendienteDescarga && e.diasPendientes > 28);\r\n const quedanCincoDias = conductores.filter(e => e.diasPendientes >= 23 && e.diasPendientes <= 28);\r\n const descargados = conductores.filter(e => !e.pendienteDescarga && e.diasPendientes < 23);\r\n\r\n const datosGrafica: Array = [\r\n {\r\n denominacionTipo: t('widgetConductores.pendienteDescarga'),\r\n numeroElementos: pendienteDescarga.length,\r\n color: '#C7001E',\r\n },\r\n {\r\n denominacionTipo: t('widgetConductores.descargados'),\r\n numeroElementos: descargados.length,\r\n color: '#53C700'\r\n },\r\n {\r\n denominacionTipo: t('widgetConductores.faltanCincoDias'),\r\n numeroElementos: quedanCincoDias.length,\r\n color: '#f8B85E'\r\n }\r\n ];\r\n\r\n const donutCenterRender = () => (\r\n <>\r\n
\r\n {sum(datosGrafica.map(e => e.numeroElementos))}\r\n
\r\n

Total

\r\n \r\n );\r\n\r\n return (\r\n \r\n title={t('widgetConductores.titulo')}\r\n className='conductores'\r\n data={datosGrafica}\r\n categoryField='denominacionTipo'\r\n field='numeroElementos'\r\n donutCenterRender={donutCenterRender}\r\n onClick={() => navigate('/C000000')}>\r\n

\r\n {datosGrafica.find(e => e.denominacionTipo === t('widgetConductores.pendienteDescarga'))?.numeroElementos ?? 0}\r\n

\r\n

{t('widgetConductores.pendienteDescarga')}

\r\n \r\n );\r\n};\r\nConductoresDescargaChart.displayName = 'ConductoresDescargaChart';\r\n","import { Card, CardBody, CardTitle } from '@progress/kendo-react-layout';\r\nimport 'hammerjs';\r\nimport { ReactElement, ReactNode } from 'react';\r\n\r\nimport './BasicoChartWidgetTheme.scss';\r\n\r\ninterface IBasicoChartWidgetProps {\r\n title?: string;\r\n className?: string;\r\n children?: ReactNode;\r\n onClick?: () => void;\r\n}\r\n\r\nexport function BasicoChartWidget({\r\n title,\r\n className = '',\r\n children,\r\n onClick\r\n}: IBasicoChartWidgetProps): ReactElement\r\n{\r\n return (\r\n \r\n \r\n {title && {title}}\r\n
\r\n {children &&\r\n
\r\n {children}\r\n
\r\n }\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nBasicoChartWidget.displayName = 'BasicoChartWidget';\r\n","import { VoidFunctionComponent } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useNavigate } from 'Components/Core/Routes/Hooks/RouterHook';\r\n\r\nimport { FicherosCargadosDTO } from './I000000DTO';\r\nimport { BasicoChartWidget } from './Widgets/BasicoChartWidgetComponent';\r\n\r\ninterface IGraficaFicherosChartProps {\r\n ficheros: Array;\r\n}\r\n\r\nexport const FicherosCargadosChart: VoidFunctionComponent = ({ ficheros }) =>\r\n{\r\n const { t } = useTranslation(['/FMT/I/I00/I000000/I000000'], { useSuspense: false });\r\n const navigate = useNavigate();\r\n\r\n const ficherosSinDatosVehiculos = ficheros.filter(e => e.ficherosVehiculos && e.tipoCoreValorResultado === 'Bloques sin datos');\r\n const ficherosErroneosVehiculos = ficheros.filter(e => e.ficherosVehiculos\r\n && (e.tipoCoreValorResultado === 'KO' ||\r\n e.tipoCoreValorResultado === 'Firma digital errónea' ||\r\n e.tipoCoreValorResultado === 'Error al tratar fichero'\r\n ));\r\n\r\n const ficherosSinDatosConductores = ficheros.filter(e => e.ficherosConductores\r\n && e.tipoCoreValorResultado === 'Bloques sin datos');\r\n const ficherosErroneosConductores = ficheros.filter(e => e.ficherosConductores\r\n && (e.tipoCoreValorResultado === 'KO' ||\r\n e.tipoCoreValorResultado === 'Firma digital errónea' ||\r\n e.tipoCoreValorResultado === 'Error al tratar fichero'\r\n ));\r\n\r\n const totalVehiculos = ficheros.filter(e => e.ficherosVehiculos).length;\r\n const totalConductores = ficheros.filter(e => e.ficherosConductores).length;\r\n\r\n return (\r\n navigate('/F000000')}>\r\n
\r\n
\r\n
\r\n

{totalVehiculos}

\r\n

{t('widgetFicherosCargados.totalVehiculos')}

\r\n
\r\n
\r\n

{ficherosSinDatosVehiculos.length}

\r\n

{t('widgetFicherosCargados.bloqueSinDatos')}

\r\n
\r\n
\r\n

{ficherosErroneosVehiculos.length}

\r\n

{t('widgetFicherosCargados.erroneos')}

\r\n
\r\n
\r\n
\r\n
\r\n

{totalConductores}

\r\n

{t('widgetFicherosCargados.totalConductores')}

\r\n
\r\n
\r\n

{ficherosSinDatosConductores.length}

\r\n

{t('widgetFicherosCargados.bloqueSinDatos')}

\r\n
\r\n
\r\n

{ficherosErroneosConductores.length}

\r\n

{t('widgetFicherosCargados.erroneos')}

\r\n
\r\n
\r\n
\r\n \r\n );\r\n};\r\n\r\nFicherosCargadosChart.displayName = 'FicherosCargadosChart';\r\n","import { sum } from 'lodash';\r\nimport { VoidFunctionComponent } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useNavigate } from 'Components/Core/Routes/Hooks/RouterHook';\r\n\r\nimport { GraficaTarjetaConductorDTO, TarjetaConductorDTO } from './I000000DTO';\r\nimport { DonutChartWidget } from './Widgets/DonutChartWidgetComponent';\r\n\r\ninterface ITarjetasConductoresProps\r\n{\r\n tarjetasConductores: Array;\r\n}\r\n\r\nexport const TarjetasConductores: VoidFunctionComponent = ({ tarjetasConductores }) =>\r\n{\r\n const { t } = useTranslation(['/FMT/I/I00/I000000/I000000'], { useSuspense: false });\r\n const navigate = useNavigate();\r\n\r\n const pendientesRenovar = tarjetasConductores.filter(e => e.diasPendientes > 0 && e.diasPendientes <= 60);\r\n const plazoCaducado = tarjetasConductores.filter(e => e.diasPendientes <= 0);\r\n\r\n const datosGrafica: Array = [\r\n {\r\n denominacionTipo: t('widgetTarjetasConductores.pendientesRenovar'),\r\n numeroElementos: pendientesRenovar.length,\r\n color: '#f8B85E'\r\n },\r\n {\r\n denominacionTipo: t('widgetTarjetasConductores.plazoCaducado'),\r\n numeroElementos: plazoCaducado.length,\r\n color: '#C7001E'\r\n }\r\n ];\r\n\r\n const donutCenterRender = () => (\r\n <>\r\n
\r\n {sum(datosGrafica.map(e => e.numeroElementos))}\r\n
\r\n

Total

\r\n \r\n );\r\n\r\n return (\r\n \r\n title={t('widgetTarjetasConductores.titulo')}\r\n className='tarjetasConductores'\r\n data={datosGrafica}\r\n categoryField='denominacionTipo'\r\n field='numeroElementos'\r\n donutCenterRender={donutCenterRender}\r\n onClick={() => navigate('/C000002')}>\r\n

\r\n {datosGrafica.find(e => e.denominacionTipo === t('widgetTarjetasConductores.plazoCaducado'))?.numeroElementos ?? 0}\r\n

\r\n

{t('widgetTarjetasConductores.plazoCaducado')}

\r\n

\r\n {datosGrafica.find(e => e.denominacionTipo === t('widgetTarjetasConductores.pendientesRenovar'))?.numeroElementos ?? 0}\r\n

\r\n

{t('widgetTarjetasConductores.pendientesRenovar')}

\r\n \r\n\r\n );\r\n};\r\nTarjetasConductores.displayName = 'VehiculosDescargaChart';\r\n","import { sum } from 'lodash';\r\nimport { VoidFunctionComponent } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useNavigate } from 'Components/Core/Routes/Hooks/RouterHook';\r\n\r\nimport { DescargaVehiculoDTO, GraficaDescargaVehiculoDTO } from './I000000DTO';\r\nimport { DonutChartWidget } from './Widgets/DonutChartWidgetComponent';\r\n\r\ninterface IVehiculosDescargaChartProps\r\n{\r\n vehiculos: Array;\r\n}\r\n\r\nexport const VehiculosDescargaChart: VoidFunctionComponent = ({ vehiculos }) =>\r\n{\r\n const { t } = useTranslation(['/FMT/I/I00/I000000/I000000'], { useSuspense: false });\r\n const navigate = useNavigate();\r\n\r\n const pendienteDescarga = vehiculos.filter(e => e.pendienteDescarga && e.diasPendientes > 90);\r\n const quedanCincoDias = vehiculos.filter(e => e.diasPendientes >= 85 && e.diasPendientes <= 90);\r\n const descargados = vehiculos.filter(e => !e.pendienteDescarga && e.diasPendientes < 85);\r\n\r\n const datosGrafica: Array = [\r\n {\r\n denominacionTipo: t('widgetVehiculos.pendienteDescarga'),\r\n numeroElementos: pendienteDescarga.length,\r\n color: '#C7001E',\r\n },\r\n {\r\n denominacionTipo: t('widgetVehiculos.descargados'),\r\n numeroElementos: descargados.length,\r\n color: '#53C700'\r\n },\r\n {\r\n denominacionTipo: t('widgetVehiculos.faltanCincoDias'),\r\n numeroElementos: quedanCincoDias.length,\r\n color: '#f8B85E'\r\n }\r\n ];\r\n\r\n const donutCenterRender = () => (\r\n <>\r\n
\r\n {sum(datosGrafica.map(e => e.numeroElementos))}\r\n
\r\n

Total

\r\n \r\n );\r\n\r\n return (\r\n \r\n title={t('widgetVehiculos.titulo')}\r\n className='vehiculos'\r\n data={datosGrafica}\r\n categoryField='denominacionTipo'\r\n field='numeroElementos'\r\n donutCenterRender={donutCenterRender}\r\n onClick={() => navigate('/V000000')}>\r\n

\r\n {datosGrafica.find(e => e.denominacionTipo === t('widgetVehiculos.pendienteDescarga'))?.numeroElementos ?? 0}\r\n

\r\n

{t('widgetVehiculos.pendienteDescarga')}

\r\n \r\n );\r\n};\r\nVehiculosDescargaChart.displayName = 'VehiculosDescargaChart';\r\n","import { sum } from 'lodash';\r\nimport { VoidFunctionComponent } from 'react';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { useNavigate } from 'Components/Core/Routes/Hooks/RouterHook';\r\n\r\nimport { GraficaRevisionesDTO, GraficaDescargaVehiculoDTO, RevisionesPendientesDTO } from './I000000DTO';\r\nimport { DonutChartWidget } from './Widgets/DonutChartWidgetComponent';\r\n\r\ninterface IVehiculosPendientesRevisionChartProps\r\n{\r\n revisiones: Array;\r\n}\r\n\r\nexport const VehiculosPendientesRevisionChart: VoidFunctionComponent = ({ revisiones }) =>\r\n{\r\n const { t } = useTranslation(['/FMT/I/I00/I000000/I000000'], { useSuspense: false });\r\n const navigate = useNavigate();\r\n\r\n const pendientesRevision = revisiones.filter(e => e.diasPendientes > 0 && e.diasPendientes <= 60);\r\n const fueraPlazo = revisiones.filter(e => e.diasPendientes <= 0);\r\n\r\n const datosGrafica: Array = [\r\n {\r\n denominacionTipo: t('widgetRevisiones.pendientesRevisar'),\r\n numeroElementos: pendientesRevision.length,\r\n color: '#f8B85E'\r\n },\r\n {\r\n denominacionTipo: t('widgetRevisiones.fueraPlazo'),\r\n numeroElementos: fueraPlazo.length,\r\n color: '#C7001E'\r\n }\r\n ];\r\n\r\n const donutCenterRender = () => (\r\n <>\r\n
\r\n {sum(datosGrafica.map(e => e.numeroElementos))}\r\n
\r\n

Total

\r\n \r\n );\r\n\r\n return (\r\n \r\n title={t('widgetRevisiones.titulo')}\r\n className='revisiones'\r\n data={datosGrafica}\r\n categoryField='denominacionTipo'\r\n field='numeroElementos'\r\n donutCenterRender={donutCenterRender}\r\n onClick={() => navigate('/V000002')}>\r\n

\r\n {datosGrafica.find(e => e.denominacionTipo === t('widgetRevisiones.fueraPlazo'))?.numeroElementos ?? 0}\r\n

\r\n

{t('widgetRevisiones.fueraPlazo')}

\r\n

\r\n {datosGrafica.find(e => e.denominacionTipo === t('widgetRevisiones.pendientesRevisar'))?.numeroElementos ?? 0}\r\n

\r\n

{t('widgetRevisiones.pendientesRevisar')}

\r\n \r\n );\r\n};\r\nVehiculosPendientesRevisionChart.displayName = 'VehiculosPendientesRevisionChart';\r\n","import { useState, VoidFunctionComponent } from 'react';\r\nimport { WithTranslation } from 'react-i18next';\r\n\r\nimport { useGet } from 'Components/Core/Hooks/GetHook';\r\nimport { CardDeck } from 'Components/Core/LaunchCard/LaunchCardComponent';\r\nimport { Transaction } from 'Components/Core/Layout/Transaction/TransactionComponent';\r\nimport { Loading } from 'Components/Core/Loaders/LoadingComponent';\r\nimport { useBackendFormService } from 'Components/Core/Services/Hooks/BackendFormHook';\r\n\r\nimport { ConductoresDescargaChart } from './ConductoresDescargaChartComponent';\r\nimport { FicherosCargadosChart } from './FicherosCargadosChartComponent';\r\nimport { RevisionesPendientesDTO, DescargaConductorDTO, DescargaVehiculoDTO, TarjetaConductorDTO, FicherosCargadosDTO } from './I000000DTO';\r\nimport { TarjetasConductores } from './TarjetasConductoresComponent';\r\nimport { VehiculosDescargaChart } from './VehiculosDescargaChartComponent';\r\nimport { VehiculosPendientesRevisionChart } from './VehiculosPendientesRevisionChartComponent';\r\n\r\nimport './I000000Theme.scss';\r\n\r\nconst transactionId = 'I000000';\r\n\r\ninterface IContenidoDTO {\r\n vehiculos: Array;\r\n conductores: Array;\r\n /* Licencias: Array;*/\r\n revisiones: Array\r\n tarjetasConductores: Array\r\n ficheros: Array;\r\n cargando: boolean;\r\n}\r\n\r\n/**\r\n * I000000: Transacción de Home/Inicio.\r\n * @author Diego Crenes Carrera, diego.crenes[at]airgrup.com\r\n */\r\nexport const I000000: VoidFunctionComponent = ({ t }: WithTranslation) =>\r\n{\r\n // #region Hooks\r\n const backendFormService = useBackendFormService(transactionId);\r\n const [contenido, setContenido] = useState({\r\n vehiculos: [],\r\n conductores: [],\r\n /* Licencias: [],*/\r\n revisiones: [],\r\n tarjetasConductores: [],\r\n ficheros: [],\r\n cargando: true\r\n });\r\n // #endregion\r\n\r\n // Primera llamada asíncrona al back para cargar automáticamente la lista de funciones\r\n useGet(async (mount) =>\r\n {\r\n if (mount.current)\r\n {\r\n const resultadoVehiculos = await backendFormService.get>('ObtenerDescargaVehiculoDTO');\r\n const resultadoConductores = await backendFormService.get>('ObtenerDescargaConductorDTO');\r\n /* Const resultadoLicencias = await backendFormService.get>('ObtenerLicenciaDTO');*/\r\n const resultadoRevisiones = await backendFormService.get>('ObtenerRevisionesPendientesDTO');\r\n const resultadoTarjetasConductores = await backendFormService.get>('ObtenerTarjetaConduntorDTO');\r\n const resultadoFicheros = await backendFormService.get>('ObtenerFicherosCargadosDTO');\r\n setContenido({\r\n vehiculos: resultadoVehiculos,\r\n conductores: resultadoConductores,\r\n /* Licencias: resultadoLicencias,*/\r\n revisiones: resultadoRevisiones,\r\n tarjetasConductores: resultadoTarjetasConductores,\r\n ficheros: resultadoFicheros,\r\n cargando: false\r\n });\r\n }\r\n });\r\n\r\n /* Para cuando se reactive le widget de Licencia */\r\n return (\r\n <>\r\n {contenido.cargando && }\r\n {!contenido.cargando &&\r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n \r\n }\r\n \r\n );\r\n // #endregion\r\n};\r\n\r\nI000000.displayName = transactionId;","import { IconRegular } from 'Theme/Icons';\r\nimport { FunctionComponent } from 'react';\r\nimport { WithTranslation } from 'react-i18next';\r\n\r\nimport { Transaction } from 'Components/Core/Layout/Transaction/TransactionComponent';\r\n\r\nimport './I000404Theme.scss';\r\n\r\nconst transactionId = 'I000404';\r\n\r\nexport const I000404: FunctionComponent = ({ t }: WithTranslation) =>\r\n{\r\n return (\r\n \r\n

{t('mensaje')}

\r\n
\r\n \r\n \r\n \r\n
\r\n \r\n
\r\n );\r\n};\r\n\r\nI000404.displayName = transactionId;","import { FunctionComponent } from 'react';\r\n\r\nimport { IAlertProps } from './IAlertProps';\r\n\r\n/**\r\n * Show a message like in bootstrap\r\n * @see https://getbootstrap.com/docs/4.0/components/alerts/\r\n *\r\n * @param props {IAlertProps}\r\n */\r\nexport const Alert: FunctionComponent = ({ children, type, hide = false, title }: IAlertProps) =>\r\n{\r\n return (\r\n
\r\n {title &&

{ title }

}\r\n { children }\r\n { hide && }\r\n
\r\n );\r\n};","import { Button } from '@progress/kendo-react-buttons';\r\nimport { Loader } from '@progress/kendo-react-indicators';\r\nimport { Input } from '@progress/kendo-react-inputs';\r\nimport { IconSolid } from 'Theme/Icons';\r\nimport { VoidFunctionComponent, useState } from 'react';\r\nimport { Field, Form } from 'react-final-form';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { Alert } from 'Components/Core/Alert/AlertComponent';\r\nimport { DivRow } from 'Components/Core/Layout/DivComponent';\r\nimport { useAuthenticationService } from 'Components/Core/Services/Hooks/AuthenticationHook';\r\n\r\nimport { IModifyPasswordFormProps } from './ILoginFormProps';\r\n\r\ninterface IModifyPasswordFormDTO\r\n{\r\n password: string;\r\n repeatedPassword: string;\r\n}\r\n\r\nexport const ModifyPasswordForm: VoidFunctionComponent = ({\r\n className,\r\n token,\r\n onBeforeSubmit = () => {},\r\n onAfterSubmit = () => {},\r\n onSuccess\r\n}) =>\r\n{\r\n const { t } = useTranslation('/FMT/I/I01/I010000/I010000');\r\n const [cargando, setCargando] = useState(false);\r\n const [error, setError] = useState('');\r\n const authenticationService = useAuthenticationService();\r\n const verifyPassword = useVerifyPassword();\r\n\r\n // #region Formulario cambio de contraseña\r\n const onSubmitModifyPasswordForm = async ({ password, repeatedPassword }: IModifyPasswordFormDTO) =>\r\n {\r\n if (!verifyPassword(password))\r\n {\r\n setError(t('ModifyPasswordForm.error'));\r\n\r\n return;\r\n }\r\n\r\n if (password !== repeatedPassword)\r\n {\r\n setError(t('ModifyPasswordForm.errorRepeat'));\r\n\r\n return;\r\n }\r\n\r\n onBeforeSubmit();\r\n\r\n setCargando(true);\r\n setError('');\r\n\r\n try\r\n {\r\n const resultado = await authenticationService.setNewPassword(password, repeatedPassword);\r\n\r\n onSuccess(resultado);\r\n\r\n onAfterSubmit(true);\r\n }\r\n catch (e)\r\n {\r\n setError('otp.error');\r\n setCargando(false);\r\n onAfterSubmit(false);\r\n }\r\n };\r\n // #endregion\r\n\r\n return (\r\n
\r\n (\r\n
\r\n \r\n (\r\n \r\n )}/>\r\n
\r\n {t('ModifyPasswordForm.rules')}\r\n
\r\n
\r\n \r\n (\r\n \r\n )}/>\r\n \r\n \r\n \r\n \r\n {error && {error}}\r\n
\r\n )}/>\r\n
\r\n );\r\n};\r\n\r\nModifyPasswordForm.displayName = 'ModifyPasswordForm';\r\n\r\nconst useVerifyPassword = () => (text: string) =>\r\n{\r\n const passwordRegex = /^(?=.*[A-Z])(?=.*[a-z])(?=.*\\d)(?=.*[@$!%*?&_])[A-Za-z\\d@$!%*?&_]{8,}$/;\r\n\r\n return passwordRegex.test(text);\r\n};","import { Button } from '@progress/kendo-react-buttons';\r\nimport { Loader } from '@progress/kendo-react-indicators';\r\nimport { Input } from '@progress/kendo-react-inputs';\r\nimport { IconSolid } from 'Theme/Icons';\r\nimport { FunctionComponent, useState } from 'react';\r\nimport { Field, Form } from 'react-final-form';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { Alert } from 'Components/Core/Alert/AlertComponent';\r\nimport { DivRow } from 'Components/Core/Layout/DivComponent';\r\nimport { useAuthenticationService } from 'Components/Core/Services/Hooks/AuthenticationHook';\r\n\r\nimport { I2FAFormProps } from './ILoginFormProps';\r\n\r\ninterface IOTPData {\r\n otpCodigo: string;\r\n}\r\n\r\nexport const TwoFactorAuthForm : FunctionComponent = ({\r\n className,\r\n token,\r\n onSuccess = () => null,\r\n}) =>\r\n{\r\n const { t } = useTranslation('/FMT/I/I01/I010000/I010000');\r\n const [deshabilitarForm, setDeshabilitarForm] = useState(false);\r\n const [error, setError] = useState(false);\r\n const authenticationService = useAuthenticationService();\r\n\r\n // Evento de envío del código 2FA\r\n const onSubmitLogin2FAForm = async ({ otpCodigo } : IOTPData) =>\r\n {\r\n if (token)\r\n {\r\n setDeshabilitarForm(true);\r\n\r\n try\r\n {\r\n const resultado = await authenticationService.twoFactor(otpCodigo, token);\r\n\r\n onSuccess(resultado);\r\n }\r\n catch (e)\r\n {\r\n setError(true);\r\n setDeshabilitarForm(false);\r\n }\r\n }\r\n };\r\n\r\n return (\r\n (\r\n
\r\n \r\n (\r\n \r\n )}/>\r\n
\r\n \r\n
\r\n
\r\n {error && {t('otp.error')}}\r\n
\r\n )}/>\r\n );\r\n};\r\n\r\nTwoFactorAuthForm.displayName = 'Login2FAForm';","import { Button } from '@progress/kendo-react-buttons';\r\nimport { Loader } from '@progress/kendo-react-indicators';\r\nimport { Input } from '@progress/kendo-react-inputs';\r\nimport { IconSolid } from 'Theme/Icons';\r\nimport { FunctionComponent, useState } from 'react';\r\nimport { Field, Form } from 'react-final-form';\r\nimport { useTranslation } from 'react-i18next';\r\n\r\nimport { AccessResultDTO } from 'Services/Authentication/IAuthenticationService';\r\n\r\nimport { Alert } from 'Components/Core/Alert/AlertComponent';\r\nimport { DivRow } from 'Components/Core/Layout/DivComponent';\r\nimport { useAuthenticationService } from 'Components/Core/Services/Hooks/AuthenticationHook';\r\n\r\nimport { IUserPassFormProps } from './ILoginFormProps';\r\n\r\ninterface IUserPassData {\r\n username: string;\r\n password: string;\r\n}\r\n\r\nexport const UserPassForm : FunctionComponent = ({\r\n className,\r\n onSuccess,\r\n on2FA,\r\n onModifyPassword,\r\n onBeforeSubmit = () => {},\r\n onAfterSubmit = () => {}\r\n}) =>\r\n{\r\n const { t } = useTranslation('/FMT/I/I01/I010000/I010000');\r\n const authenticationService = useAuthenticationService();\r\n\r\n const [deshabilitarForm, setDeshabilitarForm] = useState(false);\r\n const [error, setError] = useState(false);\r\n\r\n // Evento de envío de datos del usuario\r\n const onSubmitForm = async ({ username, password }: IUserPassData) =>\r\n {\r\n onBeforeSubmit();\r\n setDeshabilitarForm(true);\r\n\r\n try\r\n {\r\n const result: AccessResultDTO = await authenticationService.login(username, password);\r\n\r\n if (result.enable2FA)\r\n {\r\n // Pantalla 2FA actual\r\n on2FA(result);\r\n }\r\n else\r\n {\r\n if (result.modifyPassword)\r\n {\r\n // Pantalla nueva cambio password (con textbox 2FA DESACTIVADO E INVISBLE)\r\n onModifyPassword(result);\r\n }\r\n else\r\n {\r\n // Acceso normal\r\n onSuccess(result);\r\n }\r\n }\r\n\r\n onAfterSubmit(true);\r\n }\r\n catch (e)\r\n {\r\n setError(true);\r\n\r\n setDeshabilitarForm(false);\r\n\r\n onAfterSubmit(false);\r\n }\r\n };\r\n\r\n return (\r\n (\r\n
\r\n \r\n (\r\n \r\n )}/>\r\n \r\n \r\n (\r\n \r\n )}/>\r\n
\r\n \r\n
\r\n
\r\n {error && {t('error')}}\r\n
\r\n )} />\r\n );\r\n};\r\n\r\nUserPassForm.displayName = 'LoginUserPassForm';\r\n","import { FunctionComponent, useState, useRef } from 'react';\r\nimport { WithTranslation } from 'react-i18next';\r\nimport { useLocation } from 'react-router-dom';\r\n\r\nimport { AccessResultDTO, AuthDTO } from 'Services/Authentication/IAuthenticationService';\r\n\r\nimport { FallbackNavSidebar, FallbackNavTopBar } from 'Components/Core/Fallback/FallbackLayoutComponent';\r\nimport { useGet } from 'Components/Core/Hooks/GetHook';\r\nimport { DivColumn, DivRow } from 'Components/Core/Layout/DivComponent';\r\nimport { useNavigate } from 'Components/Core/Routes/Hooks/RouterHook';\r\n\r\nimport { ModifyPasswordForm } from './ModifyPasswordFormComponent';\r\nimport tmsLogo2 from './TMS-gris.png';\r\nimport { TwoFactorAuthForm } from './TwoFactorAuthFormComponent';\r\nimport { UserPassForm } from './UserPassFormComponent';\r\nimport tmsLogo3 from './letras-gris.png';\r\nimport tmsLogo from './logo-verde.png';\r\n\r\nimport './I010000Theme.scss';\r\n\r\nconst transactionId = 'I010000';\r\n\r\n/**\r\n * Pantalla de login a la aplicación\r\n * @author Diego Crenes Carrera, diego.crenes[at]airgrup.com\r\n * @author Javier Arnáiz González, javier.arnaiz[at]airgrup.com\r\n */\r\nexport const I010000 : FunctionComponent = (translation: WithTranslation) =>\r\n{\r\n // #region Hooks\r\n const navigate = useNavigate();\r\n const location = useLocation();\r\n // #endregion\r\n\r\n // #region Autenticación en dos pasos\r\n const [token, setToken] = useState(null);\r\n const [modificarPassword, setModificarPassword] = useState(false);\r\n const [enable2FA, setEnable2FA] = useState(false);\r\n\r\n const on2FAUserPassForm = (accessResult: AccessResultDTO) =>\r\n {\r\n setEnable2FA(accessResult.enable2FA);\r\n setToken(accessResult.token);\r\n };\r\n // #endregion\r\n\r\n // #region Cambio de contraseña\r\n const onModifyPassword = (accessResult: AccessResultDTO) =>\r\n {\r\n setEnable2FA(accessResult.enable2FA);\r\n setToken(accessResult.token);\r\n\r\n setModificarPassword(true);\r\n };\r\n // #endregion\r\n\r\n // #region Eventos de submit\r\n const haciendoSubmitRef = useRef(false);\r\n\r\n const onBeforeSubmit = () =>\r\n {\r\n haciendoSubmitRef.current = true;\r\n };\r\n\r\n const onAfterSubmit = (success: boolean) =>\r\n {\r\n if (!success)\r\n {\r\n haciendoSubmitRef.current = false;\r\n }\r\n };\r\n // #endregion\r\n // #region Exito en login\r\n const [exito, setExito] = useState(false);\r\n const divTransaccionRef = useRef(null);\r\n\r\n const onSuccess = (usuario: AuthDTO) =>\r\n {\r\n setEnable2FA(usuario.enable2FA);\r\n setModificarPassword(usuario.modifyPassword);\r\n\r\n if (!usuario.enable2FA && !usuario.modifyPassword)\r\n {\r\n setExito(true);\r\n }\r\n };\r\n\r\n useGet(() =>\r\n {\r\n // #region Evento de transición de login a 2FA\r\n const _divTransaccion = divTransaccionRef.current;\r\n\r\n const onTransitionEndDivUserPass = (ev: TransitionEvent) =>\r\n {\r\n const eventTarget = ev.target as HTMLDivElement;\r\n\r\n // Navegamos a Home una vez que haya terminado\r\n // la animación de transición llamada 'sucess'\r\n if (eventTarget === _divTransaccion\r\n && eventTarget.classList.contains('success'))\r\n {\r\n const state = location.state as { from: Location } | undefined;\r\n\r\n navigate(state?.from?.pathname || '/');\r\n }\r\n };\r\n\r\n _divTransaccion?.addEventListener('transitionend', onTransitionEndDivUserPass);\r\n // #endregion\r\n\r\n // Eliminamos los eventos cuando se desmonte el componente\r\n return () =>\r\n {\r\n _divTransaccion?.removeEventListener('transitionend', onTransitionEndDivUserPass);\r\n };\r\n });\r\n // #endregion\r\n\r\n return (\r\n
\r\n
\r\n
\r\n \r\n
\r\n
\r\n \r\n
\r\n \"TMS\r\n \"TMS\r\n \"TMS\r\n {/*

\r\n TMS\r\n Tachograph Management System\r\n

*/}\r\n

\r\n \r\n \r\n \r\n \r\n \r\n {enable2FA &&\r\n \r\n }\r\n {!enable2FA && modificarPassword &&\r\n \r\n }\r\n \r\n \r\n
\r\n
\r\n
\r\n
\r\n );\r\n};\r\n\r\nI010000.displayName = transactionId;","import _classCallCheck from '@babel/runtime/helpers/esm/classCallCheck';\nimport _createClass from '@babel/runtime/helpers/esm/createClass';\n\nvar arr = [];\nvar each = arr.forEach;\nvar slice = arr.slice;\nfunction defaults(obj) {\n each.call(slice.call(arguments, 1), function (source) {\n if (source) {\n for (var prop in source) {\n if (obj[prop] === undefined) obj[prop] = source[prop];\n }\n }\n });\n return obj;\n}\n\n// eslint-disable-next-line no-control-regex\nvar fieldContentRegExp = /^[\\u0009\\u0020-\\u007e\\u0080-\\u00ff]+$/;\nvar serializeCookie = function serializeCookie(name, val, options) {\n var opt = options || {};\n opt.path = opt.path || '/';\n var value = encodeURIComponent(val);\n var str = \"\".concat(name, \"=\").concat(value);\n if (opt.maxAge > 0) {\n var maxAge = opt.maxAge - 0;\n if (Number.isNaN(maxAge)) throw new Error('maxAge should be a Number');\n str += \"; Max-Age=\".concat(Math.floor(maxAge));\n }\n if (opt.domain) {\n if (!fieldContentRegExp.test(opt.domain)) {\n throw new TypeError('option domain is invalid');\n }\n str += \"; Domain=\".concat(opt.domain);\n }\n if (opt.path) {\n if (!fieldContentRegExp.test(opt.path)) {\n throw new TypeError('option path is invalid');\n }\n str += \"; Path=\".concat(opt.path);\n }\n if (opt.expires) {\n if (typeof opt.expires.toUTCString !== 'function') {\n throw new TypeError('option expires is invalid');\n }\n str += \"; Expires=\".concat(opt.expires.toUTCString());\n }\n if (opt.httpOnly) str += '; HttpOnly';\n if (opt.secure) str += '; Secure';\n if (opt.sameSite) {\n var sameSite = typeof opt.sameSite === 'string' ? opt.sameSite.toLowerCase() : opt.sameSite;\n switch (sameSite) {\n case true:\n str += '; SameSite=Strict';\n break;\n case 'lax':\n str += '; SameSite=Lax';\n break;\n case 'strict':\n str += '; SameSite=Strict';\n break;\n case 'none':\n str += '; SameSite=None';\n break;\n default:\n throw new TypeError('option sameSite is invalid');\n }\n }\n return str;\n};\nvar cookie = {\n create: function create(name, value, minutes, domain) {\n var cookieOptions = arguments.length > 4 && arguments[4] !== undefined ? arguments[4] : {\n path: '/',\n sameSite: 'strict'\n };\n if (minutes) {\n cookieOptions.expires = new Date();\n cookieOptions.expires.setTime(cookieOptions.expires.getTime() + minutes * 60 * 1000);\n }\n if (domain) cookieOptions.domain = domain;\n document.cookie = serializeCookie(name, encodeURIComponent(value), cookieOptions);\n },\n read: function read(name) {\n var nameEQ = \"\".concat(name, \"=\");\n var ca = document.cookie.split(';');\n for (var i = 0; i < ca.length; i++) {\n var c = ca[i];\n while (c.charAt(0) === ' ') {\n c = c.substring(1, c.length);\n }\n if (c.indexOf(nameEQ) === 0) return c.substring(nameEQ.length, c.length);\n }\n return null;\n },\n remove: function remove(name) {\n this.create(name, '', -1);\n }\n};\nvar cookie$1 = {\n name: 'cookie',\n lookup: function lookup(options) {\n var found;\n if (options.lookupCookie && typeof document !== 'undefined') {\n var c = cookie.read(options.lookupCookie);\n if (c) found = c;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupCookie && typeof document !== 'undefined') {\n cookie.create(options.lookupCookie, lng, options.cookieMinutes, options.cookieDomain, options.cookieOptions);\n }\n }\n};\n\nvar querystring = {\n name: 'querystring',\n lookup: function lookup(options) {\n var found;\n if (typeof window !== 'undefined') {\n var search = window.location.search;\n if (!window.location.search && window.location.hash && window.location.hash.indexOf('?') > -1) {\n search = window.location.hash.substring(window.location.hash.indexOf('?'));\n }\n var query = search.substring(1);\n var params = query.split('&');\n for (var i = 0; i < params.length; i++) {\n var pos = params[i].indexOf('=');\n if (pos > 0) {\n var key = params[i].substring(0, pos);\n if (key === options.lookupQuerystring) {\n found = params[i].substring(pos + 1);\n }\n }\n }\n }\n return found;\n }\n};\n\nvar hasLocalStorageSupport = null;\nvar localStorageAvailable = function localStorageAvailable() {\n if (hasLocalStorageSupport !== null) return hasLocalStorageSupport;\n try {\n hasLocalStorageSupport = window !== 'undefined' && window.localStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.localStorage.setItem(testKey, 'foo');\n window.localStorage.removeItem(testKey);\n } catch (e) {\n hasLocalStorageSupport = false;\n }\n return hasLocalStorageSupport;\n};\nvar localStorage = {\n name: 'localStorage',\n lookup: function lookup(options) {\n var found;\n if (options.lookupLocalStorage && localStorageAvailable()) {\n var lng = window.localStorage.getItem(options.lookupLocalStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupLocalStorage && localStorageAvailable()) {\n window.localStorage.setItem(options.lookupLocalStorage, lng);\n }\n }\n};\n\nvar hasSessionStorageSupport = null;\nvar sessionStorageAvailable = function sessionStorageAvailable() {\n if (hasSessionStorageSupport !== null) return hasSessionStorageSupport;\n try {\n hasSessionStorageSupport = window !== 'undefined' && window.sessionStorage !== null;\n var testKey = 'i18next.translate.boo';\n window.sessionStorage.setItem(testKey, 'foo');\n window.sessionStorage.removeItem(testKey);\n } catch (e) {\n hasSessionStorageSupport = false;\n }\n return hasSessionStorageSupport;\n};\nvar sessionStorage = {\n name: 'sessionStorage',\n lookup: function lookup(options) {\n var found;\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n var lng = window.sessionStorage.getItem(options.lookupSessionStorage);\n if (lng) found = lng;\n }\n return found;\n },\n cacheUserLanguage: function cacheUserLanguage(lng, options) {\n if (options.lookupSessionStorage && sessionStorageAvailable()) {\n window.sessionStorage.setItem(options.lookupSessionStorage, lng);\n }\n }\n};\n\nvar navigator$1 = {\n name: 'navigator',\n lookup: function lookup(options) {\n var found = [];\n if (typeof navigator !== 'undefined') {\n if (navigator.languages) {\n // chrome only; not an array, so can't use .push.apply instead of iterating\n for (var i = 0; i < navigator.languages.length; i++) {\n found.push(navigator.languages[i]);\n }\n }\n if (navigator.userLanguage) {\n found.push(navigator.userLanguage);\n }\n if (navigator.language) {\n found.push(navigator.language);\n }\n }\n return found.length > 0 ? found : undefined;\n }\n};\n\nvar htmlTag = {\n name: 'htmlTag',\n lookup: function lookup(options) {\n var found;\n var htmlTag = options.htmlTag || (typeof document !== 'undefined' ? document.documentElement : null);\n if (htmlTag && typeof htmlTag.getAttribute === 'function') {\n found = htmlTag.getAttribute('lang');\n }\n return found;\n }\n};\n\nvar path = {\n name: 'path',\n lookup: function lookup(options) {\n var found;\n if (typeof window !== 'undefined') {\n var language = window.location.pathname.match(/\\/([a-zA-Z-]*)/g);\n if (language instanceof Array) {\n if (typeof options.lookupFromPathIndex === 'number') {\n if (typeof language[options.lookupFromPathIndex] !== 'string') {\n return undefined;\n }\n found = language[options.lookupFromPathIndex].replace('/', '');\n } else {\n found = language[0].replace('/', '');\n }\n }\n }\n return found;\n }\n};\n\nvar subdomain = {\n name: 'subdomain',\n lookup: function lookup(options) {\n // If given get the subdomain index else 1\n var lookupFromSubdomainIndex = typeof options.lookupFromSubdomainIndex === 'number' ? options.lookupFromSubdomainIndex + 1 : 1;\n // get all matches if window.location. is existing\n // first item of match is the match itself and the second is the first group macht which sould be the first subdomain match\n // is the hostname no public domain get the or option of localhost\n var language = typeof window !== 'undefined' && window.location && window.location.hostname && window.location.hostname.match(/^(\\w{2,5})\\.(([a-z0-9-]{1,63}\\.[a-z]{2,6})|localhost)/i);\n\n // if there is no match (null) return undefined\n if (!language) return undefined;\n // return the given group match\n return language[lookupFromSubdomainIndex];\n }\n};\n\nfunction getDefaults() {\n return {\n order: ['querystring', 'cookie', 'localStorage', 'sessionStorage', 'navigator', 'htmlTag'],\n lookupQuerystring: 'lng',\n lookupCookie: 'i18next',\n lookupLocalStorage: 'i18nextLng',\n lookupSessionStorage: 'i18nextLng',\n // cache user language\n caches: ['localStorage'],\n excludeCacheFor: ['cimode']\n // cookieMinutes: 10,\n // cookieDomain: 'myDomain'\n };\n}\nvar Browser = /*#__PURE__*/function () {\n function Browser(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n _classCallCheck(this, Browser);\n this.type = 'languageDetector';\n this.detectors = {};\n this.init(services, options);\n }\n _createClass(Browser, [{\n key: \"init\",\n value: function init(services) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var i18nOptions = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : {};\n this.services = services;\n this.options = defaults(options, this.options || {}, getDefaults());\n\n // backwards compatibility\n if (this.options.lookupFromUrlIndex) this.options.lookupFromPathIndex = this.options.lookupFromUrlIndex;\n this.i18nOptions = i18nOptions;\n this.addDetector(cookie$1);\n this.addDetector(querystring);\n this.addDetector(localStorage);\n this.addDetector(sessionStorage);\n this.addDetector(navigator$1);\n this.addDetector(htmlTag);\n this.addDetector(path);\n this.addDetector(subdomain);\n }\n }, {\n key: \"addDetector\",\n value: function addDetector(detector) {\n this.detectors[detector.name] = detector;\n }\n }, {\n key: \"detect\",\n value: function detect(detectionOrder) {\n var _this = this;\n if (!detectionOrder) detectionOrder = this.options.order;\n var detected = [];\n detectionOrder.forEach(function (detectorName) {\n if (_this.detectors[detectorName]) {\n var lookup = _this.detectors[detectorName].lookup(_this.options);\n if (lookup && typeof lookup === 'string') lookup = [lookup];\n if (lookup) detected = detected.concat(lookup);\n }\n });\n if (this.services.languageUtils.getBestMatchFromCodes) return detected; // new i18next v19.5.0\n return detected.length > 0 ? detected[0] : null; // a little backward compatibility\n }\n }, {\n key: \"cacheUserLanguage\",\n value: function cacheUserLanguage(lng, caches) {\n var _this2 = this;\n if (!caches) caches = this.options.caches;\n if (!caches) return;\n if (this.options.excludeCacheFor && this.options.excludeCacheFor.indexOf(lng) > -1) return;\n caches.forEach(function (cacheName) {\n if (_this2.detectors[cacheName]) _this2.detectors[cacheName].cacheUserLanguage(lng, _this2.options);\n });\n }\n }]);\n return Browser;\n}();\nBrowser.type = 'languageDetector';\n\nexport { Browser as default };\n","import _defineProperty from \"@babel/runtime/helpers/defineProperty\";\nimport _slicedToArray from \"@babel/runtime/helpers/slicedToArray\";\nimport _objectWithoutProperties from \"@babel/runtime/helpers/objectWithoutProperties\";\nvar _excluded = [\"forwardedRef\"];\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) { symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); } keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty(target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\nimport { createElement, forwardRef as forwardRefReact } from 'react';\nimport { useTranslation } from './useTranslation';\nimport { getDisplayName } from './utils';\nexport function withTranslation(ns) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n return function Extend(WrappedComponent) {\n function I18nextWithTranslation(_ref) {\n var forwardedRef = _ref.forwardedRef,\n rest = _objectWithoutProperties(_ref, _excluded);\n\n var _useTranslation = useTranslation(ns, _objectSpread(_objectSpread({}, rest), {}, {\n keyPrefix: options.keyPrefix\n })),\n _useTranslation2 = _slicedToArray(_useTranslation, 3),\n t = _useTranslation2[0],\n i18n = _useTranslation2[1],\n ready = _useTranslation2[2];\n\n var passDownProps = _objectSpread(_objectSpread({}, rest), {}, {\n t: t,\n i18n: i18n,\n tReady: ready\n });\n\n if (options.withRef && forwardedRef) {\n passDownProps.ref = forwardedRef;\n } else if (!options.withRef && forwardedRef) {\n passDownProps.forwardedRef = forwardedRef;\n }\n\n return createElement(WrappedComponent, passDownProps);\n }\n\n I18nextWithTranslation.displayName = \"withI18nextTranslation(\".concat(getDisplayName(WrappedComponent), \")\");\n I18nextWithTranslation.WrappedComponent = WrappedComponent;\n\n var forwardRef = function forwardRef(props, ref) {\n return createElement(I18nextWithTranslation, Object.assign({}, props, {\n forwardedRef: ref\n }));\n };\n\n return options.withRef ? forwardRefReact(forwardRef) : I18nextWithTranslation;\n };\n}","import { BackendModule, InitOptions, ReadCallback, ResourceKey, ResourceLanguage, Services } from 'i18next';\r\nimport JSONC from 'jsonc-simple-parser';\r\n\r\nexport interface BackendOptions {\r\n\r\n}\r\n\r\nconst NOT_FOUND = 'MODULE_NOT_FOUND';\r\n\r\n/**\r\n * Load a i18n file for a namespace and a lang.\r\n *\r\n * @param {string} namespace starting with a slash\r\n * @param {string} language `'en'` or `'es'` are the supported values\r\n * @return a `ResourceKey` if the file is found.\r\n * If not found return a rejected promise with a string `'MODULE_NOT_FOUND'`.\r\n * If something wrong happens return a rejected promise with a `Error` exception.\r\n */\r\nconst importI18n = (namespace: string, language: string): Promise =>\r\n{\r\n return new Promise((resolve, reject) =>\r\n {\r\n import(\r\n // eslint-disable-next-line capitalized-comments\r\n /* webpackMode: \"lazy\" */\r\n /* webpackInclude: /(_es|_en)\\.json$/ */\r\n `../../Components${namespace}_${language}.json`)\r\n .then(value =>\r\n {\r\n resolve(value);\r\n }, err =>\r\n {\r\n import(\r\n // eslint-disable-next-line capitalized-comments\r\n /* webpackMode: \"lazy\" */\r\n /* webpackInclude: /(_es|_en)\\.jsonc$/ */\r\n `../../Components${namespace}_${language}.jsonc`)\r\n .then(value =>\r\n {\r\n return value.default;\r\n })\r\n .then(location =>\r\n {\r\n // Webpack with CRA dont allow to add custom resolver for jsonc or json5 files,\r\n // We must load with `fetch` and process the content manually with `JSONC.parse`\r\n return fetch(location);\r\n }).then(response =>\r\n {\r\n if (response.ok)\r\n {\r\n return response.text();\r\n }\r\n else if (response.status > 400 && response.status < 500)\r\n {\r\n throw new Error(NOT_FOUND);\r\n }\r\n else\r\n {\r\n throw new Error(response.statusText);\r\n }\r\n }).then(text =>\r\n {\r\n resolve(JSONC.parse(text));\r\n }).catch(err =>\r\n {\r\n // If err is thrown by import(...) then it have a code\r\n // If err is thrown by fetch() then it have a message\r\n // Otherwise is a uncontrolled error\r\n if (err?.code === NOT_FOUND || err?.message === NOT_FOUND)\r\n {\r\n reject(NOT_FOUND);\r\n }\r\n else\r\n {\r\n reject(err);\r\n }\r\n });\r\n });\r\n });\r\n\r\n};\r\n\r\nexport class Backend implements BackendModule\r\n{\r\n\r\n private services?: Services;\r\n\r\n private backendOptions?: BackendOptions;\r\n\r\n private i18nextOptions?: InitOptions;\r\n\r\n private defaultNS: string = '/General';\r\n\r\n type: 'backend' = 'backend';\r\n\r\n constructor()\r\n {\r\n this.type = 'backend';\r\n }\r\n\r\n init(services: Services, backendOptions: BackendOptions, i18nextOptions: InitOptions): void\r\n {\r\n this.services = services;\r\n this.backendOptions = backendOptions;\r\n this.i18nextOptions = i18nextOptions;\r\n }\r\n\r\n read(language: string, namespace: string = '/General', callback: ReadCallback): void\r\n {\r\n if (process.env.NODE_ENV === 'development')\r\n {\r\n console.log('Loading lang...', language, namespace);\r\n }\r\n\r\n if (process.env.NODE_ENV === 'test' || namespace === 'translation')\r\n {\r\n // Ignore...\r\n callback(null, {});\r\n return;\r\n }\r\n\r\n // Import files relatives to .src/Componnets/\r\n // All namespace must start with a slash '/'\r\n importI18n(namespace, language)\r\n .then(value =>\r\n {\r\n callback(null, value);\r\n }, err =>\r\n {\r\n if (err === NOT_FOUND)\r\n {\r\n // Resource not found we dont want to retry\r\n callback(new Error(`⚠️ Lang not found: ./src/Components${namespace}_${language}`), false);\r\n }\r\n else\r\n {\r\n // Something wrong, we want to retry\r\n callback(new Error(`❌ Error loading lang: ./src/Components${namespace}_${language}`), true);\r\n }\r\n });\r\n }\r\n\r\n create(languages: string[], namespace: string, key: string, fallbackValue: string): void\r\n {\r\n throw new Error('Method not implemented.');\r\n }\r\n\r\n save?(language: string, namespace: string, data: ResourceLanguage): void\r\n {\r\n throw new Error('Method not implemented.');\r\n }\r\n}","import i18n from 'i18next';\r\nimport LanguageDetector from 'i18next-browser-languagedetector';\r\nimport { initReactI18next } from 'react-i18next';\r\nimport { WithTranslation, withTranslation as _withTransalation } from 'react-i18next';\r\n\r\nimport { Backend } from './Backend';\r\n\r\nconst defaultNS = '/General';\r\n\r\ni18n\r\n // Load translation using http -> see /public/locales\r\n // learn more: https://github.com/i18next/i18next-http-backend\r\n .use(new Backend())\r\n // Detect user language\r\n // learn more: https://github.com/i18next/i18next-browser-languageDetector\r\n .use(LanguageDetector)\r\n // Pass the i18n instance to react-i18next.\r\n .use(initReactI18next)\r\n // Init i18next\r\n // for all options read: https://www.i18next.com/overview/configuration-options\r\n .init({\r\n fallbackLng: 'en',\r\n defaultNS: defaultNS,\r\n // Debug: true,\r\n interpolation: {\r\n escapeValue: false, // Not needed for react as it escapes by default\r\n }\r\n });\r\n\r\n/**\r\n * Add the translation namespace to the FMT transaction.\r\n *\r\n * @param component\r\n */\r\nexport function withTranslation

(component: React.ComponentType

)\r\n{\r\n if (component.displayName)\r\n {\r\n const transaction = component.displayName;\r\n return _withTransalation(`/FMT/${transaction.slice(0, 1)}/${transaction.slice(0, 3)}/${transaction}/${transaction}`)(component);\r\n }\r\n else\r\n {\r\n const error = `❌ El componente ${component.name} debe tener displayName para utilizar el HoC \\`withTranslation\\``;\r\n console.error(error, component);\r\n throw new Error(error);\r\n }\r\n};\r\n\r\nexport default i18n;","export enum CoreValorResultadoEnum\r\n{\r\n OK = 1,\r\n KO = 2,\r\n SI = 3,\r\n NO = 4,\r\n NoAplica = 5,\r\n NoRequerido = 6\r\n}","import { isString } from 'lodash';\r\n\r\nimport { isNumber } from './Utils';\r\n\r\nconst dateOnlyRegex = /^(\\d{4})-0?(\\d+)-0?(\\d+)/;\r\n\r\ninterface IDateOnly\r\n{\r\n getType: () => 'DateOnly'\r\n}\r\n\r\n/**\r\n * A Date without time.\r\n */\r\nexport class DateOnly extends Date implements IDateOnly\r\n{\r\n /**\r\n * Creates a new DateOnly with the current local date\r\n */\r\n constructor();\r\n /**\r\n * Creates a new DateOnly with:\r\n * - the timestamp in milliseconds if is a `number` but resetting the time to 00:00:00.000\r\n * - the ISO-8601 date if is a `string` but ignoring the time and the timezone.\r\n * - the same date and time that the parameter if is a `Date` but resetting the time to 00:00:00.000\r\n * @param value\r\n */\r\n constructor(value: number | string | Date);\r\n /**\r\n * Creates a new DateOnly.\r\n * @param year The full year designation is required for cross-century date accuracy. If year is between 0 and 99 is used, then year is assumed to be 1900 + year.\r\n * @param monthIndex The month as a number between 0 and 11 (January to December).\r\n * @param date The date as a number between 1 and 31. By default 1\r\n */\r\n constructor(year: number, monthIndex: number, date?: number);\r\n constructor(value?: number | string | Date, monthIndex?: number, date?: number)\r\n {\r\n if (isNumber(value) && isNumber(monthIndex))\r\n {\r\n super(value, monthIndex, date ?? 1);\r\n }\r\n else if (isString(value))\r\n {\r\n const result = dateOnlyRegex.exec(value);\r\n if (result === null || result.length !== 4)\r\n {\r\n throw new Error(`Invalid date: '${value}' for \\`DateOnly\\``);\r\n }\r\n\r\n const year = Number(result[1]);\r\n const month = Number(result[2]) - 1;\r\n const day = Number(result[3]);\r\n\r\n super(year, month, day);\r\n }\r\n else if (value !== undefined)\r\n {\r\n super(value);\r\n }\r\n else\r\n {\r\n super();\r\n }\r\n\r\n this.setHours(0, 0, 0, 0);\r\n\r\n // FIXME: https://github.com/storybookjs/storybook/issues/16168\r\n // https://github.com/storybookjs/storybook/issues/12019\r\n this.getType = this.getType = () => 'DateOnly';\r\n }\r\n\r\n public getType(): 'DateOnly'\r\n {\r\n return 'DateOnly';\r\n }\r\n\r\n /**\r\n * Format to JSON.\r\n * FIXME: Dont send T00:00:00.000Z, send => yyyy-MM-dd\r\n */\r\n toJSON(key?: any): string\r\n {\r\n const year = String(this.getFullYear()).padStart(4, '0');\r\n const month = String(this.getMonth() + 1).padStart(2, '0');\r\n const day = String(this.getDate()).padStart(2, '0');\r\n return `${year}-${month}-${day}T00:00:00.000Z`;\r\n }\r\n\r\n toString(): string\r\n {\r\n return this.toJSON();\r\n }\r\n\r\n toUTCString(): string\r\n {\r\n return this.toJSON();\r\n }\r\n\r\n getUTCDate(): number\r\n {\r\n return this.getDate();\r\n }\r\n\r\n getUTCDay(): number\r\n {\r\n return this.getDay();\r\n }\r\n\r\n getUTCFullYear(): number\r\n {\r\n return this.getFullYear();\r\n }\r\n\r\n getUTCHours(): number\r\n {\r\n return this.getHours();\r\n }\r\n\r\n getUTCMilliseconds(): number\r\n {\r\n return this.getMilliseconds();\r\n }\r\n\r\n getUTCMinutes(): number\r\n {\r\n return this.getMinutes();\r\n }\r\n\r\n getUTCMonth(): number\r\n {\r\n return this.getMonth();\r\n }\r\n\r\n getUTCSeconds(): number\r\n {\r\n return this.getSeconds();\r\n }\r\n\r\n}\r\n\r\ninterface IDateTime\r\n{\r\n getType: () => 'DateTime'\r\n}\r\n\r\n/**\r\n * A Date with date and time in local timezone\r\n */\r\nexport class DateTime extends Date implements IDateTime\r\n{\r\n /**\r\n * Creates a new DateTime with the current local date & time\r\n */\r\n constructor();\r\n /**\r\n * Creates a new DateTime with:\r\n * - the timestamp in milliseconds if is a `number`\r\n * - the ISO-8601 date if is a `string`\r\n * - the same date and time that the parameter if is a `Date`\r\n * @param value\r\n */\r\n constructor(value: number | string | Date);\r\n /**\r\n * Creates a new DateTime.\r\n * @param year The full year designation is required for cross-century date accuracy. If year is between 0 and 99 is used, then year is assumed to be 1900 + year.\r\n * @param monthIndex The month as a number between 0 and 11 (January to December).\r\n * @param date The date as a number between 1 and 31. By default 1.\r\n * @param hours Must be supplied if minutes is supplied. A number from 0 to 23 (midnight to 11pm) that specifies the hour. By default 0.\r\n * @param minutes Must be supplied if seconds is supplied. A number from 0 to 59 that specifies the minutes. By default 0.\r\n * @param seconds Must be supplied if milliseconds is supplied. A number from 0 to 59 that specifies the seconds. By default 0.\r\n * @param ms A number from 0 to 999 that specifies the milliseconds. By default 0.\r\n */\r\n constructor(year: number, monthIndex: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number);\r\n constructor(value?: number | string | Date, monthIndex?: number, date?: number, hours?: number, minutes?: number, seconds?: number, ms?: number)\r\n {\r\n if (isNumber(value) && isNumber(monthIndex))\r\n {\r\n super(value, monthIndex, date ?? 1, hours ?? 0, minutes ?? 0, seconds ?? 0, ms ?? 0);\r\n }\r\n else if (value !== undefined)\r\n {\r\n super(value);\r\n }\r\n else\r\n {\r\n super();\r\n }\r\n\r\n // FIXME: https:// Github.com/storybookjs/storybook/issues/16168\r\n // https://github.com/storybookjs/storybook/issues/12019\r\n this.getType = () => 'DateTime';\r\n }\r\n\r\n public getType(): 'DateTime'\r\n {\r\n return 'DateTime';\r\n }\r\n}","import { AggregateDescriptor, CompositeFilterDescriptor, State } from '@progress/kendo-data-query';\r\nimport { isEmpty, isPlainObject } from 'lodash';\r\n\r\nimport { NonUndefined } from 'Components/Core/Form/Hooks/Types/Utils';\r\nimport { SortType } from 'Components/Core/Grid/Column/IColumnProps';\r\n\r\nimport { GridSimpleResult, GroupData, IGridSimpleState } from '../DTOs/Grid/IGrid';\r\n\r\n// #region Typeguards\r\n\r\n/**\r\n * Check if the param is a `State`\r\n * @param param any\r\n */\r\nexport function isState(param: NonUndefined): param is State\r\n{\r\n const state = param as State;\r\n const keys: Array = ['filter', 'group', 'skip', 'sort', 'take'];\r\n return keys.length > 0 && keys.filter((e: keyof State) => state[e] !== undefined).length > 0;\r\n}\r\n\r\n/**\r\n * Check if the param is a `IGridSimpleState`\r\n * @param param any\r\n */\r\nexport function isGridSimpleState(param: NonUndefined): param is IGridSimpleState\r\n{\r\n return (param as IGridSimpleState).type === 'GridSimpleState';\r\n}\r\n\r\n/**\r\n * Check if the `param` is a `GridResult`.\r\n * @param param any\r\n */\r\nexport const isGridSimpleResult = (param: any): param is GridSimpleResult =>\r\n{\r\n return Array.isArray((param as GridSimpleResult).data) && (param as GridSimpleResult).total !== undefined;\r\n};\r\n\r\n/**\r\n * Check if the param is a `GroupData`\r\n * @param param any\r\n */\r\nexport function isGroupData(param: T | GroupData): param is GroupData\r\n{\r\n return Array.isArray((param as GroupData).items);\r\n}\r\n\r\n/**\r\n * Check if the param is a `Array>`\r\n * @param param any\r\n */\r\nexport function isArrayOfGroupData(param: Array | Array>): param is Array>\r\n{\r\n return Array.isArray(param) && param[0] && isGroupData(param[0]);\r\n}\r\n\r\n/**\r\n * Check if the param is a `State`\r\n * @param param any\r\n */\r\nexport function isKendoState(param: any): param is State\r\n{\r\n return (isPlainObject(param) && isEmpty(param)) ||\r\n (param as State).skip !== undefined ||\r\n (param as State).take !== undefined ||\r\n (param as State).filter !== undefined ||\r\n (param as State).sort !== undefined ||\r\n (param as State).group !== undefined;\r\n}\r\n\r\n/**\r\n * Check if the param is a `CompositeFilterDescriptor`\r\n * @param param any\r\n */\r\nexport function isCompositeFilterDescriptor(param: any): param is CompositeFilterDescriptor\r\n{\r\n return (param as CompositeFilterDescriptor)?.filters !== undefined;\r\n}\r\n\r\n/**\r\n * Check if the param is a `AggregateDescriptor`\r\n * @param param any\r\n */\r\nexport function isAggregateDescriptor(param: any): param is AggregateDescriptor\r\n{\r\n return (param as AggregateDescriptor)?.aggregate !== undefined;\r\n}\r\n\r\n/**\r\n * Check if the sort param is of type `SortType`\r\n * @param sort any\r\n * @returns\r\n */\r\nexport const isSortType = (sort: any): sort is SortType =>\r\n{\r\n return sort === 'asc' || sort === 'desc';\r\n};\r\n// #endregion\r\n\r\n/**\r\n * If the param is an Array of GroupData (array with arrays inside it), return all items inside it in a single level deep.\r\n */\r\nexport function flatten(param: Array | Array>): Array\r\n{\r\n const flat: Array = [];\r\n param.forEach((item: T | GroupData) =>\r\n {\r\n if (isGroupData(item))\r\n {\r\n flat.push(...flatten(item.items));\r\n }\r\n else\r\n {\r\n flat.push(item);\r\n }\r\n });\r\n return flat;\r\n}\r\n","import _ from 'lodash';\r\nimport { isSchema, SchemaOf } from 'yup';\r\n\r\nimport { QueryParams } from 'Services/Backend/IHttpService';\r\n\r\n// #region Typeguards\r\nexport function hasCodigo(param: any): param is T & { codigo: string | number }\r\n{\r\n return param.codigo !== undefined && param.codigo !== null;\r\n}\r\n\r\nexport function hasCode(param: any): param is T & { code: string | number }\r\n{\r\n return param.code !== undefined && param.code !== null;\r\n}\r\n\r\nexport function isCodigoNull(param: any): param is T & { codigo: null }\r\n{\r\n return param.codigo === null;\r\n}\r\n\r\n/**\r\n * Check if the param is a `SchemaOf>`\r\n * @param param - any schema\r\n * @returns\r\n */\r\nexport function isArraySchemaOf(param: any): param is SchemaOf>\r\n{\r\n const schema = param as SchemaOf> | undefined;\r\n return isSchema(schema) && schema?.describe().type === 'array' && schema?.innerType !== undefined;\r\n}\r\n\r\n/**\r\n * Check if the param is a `Date`\r\n * @param param any\r\n */\r\nexport function isDate(param: any): param is Date\r\n{\r\n return (\r\n param instanceof Date ||\r\n (typeof param === 'object' &&\r\n Object.prototype.toString.call(param) === '[object Date]')\r\n );\r\n}\r\n\r\n/**\r\n * Check if the param is a `number`\r\n * @param param any\r\n */\r\nexport function isNumber(param: any): param is number\r\n{\r\n return _.isFinite(param);\r\n}\r\n\r\n/**\r\n * Type guard for any key, `k`.\r\n * Marks `k` as a key of `T` if `k` is in `obj`.\r\n * @param obj object to query for key `k`\r\n * @param k key to check existence in `obj`\r\n */\r\nexport function isKeyOf(obj: T, k: keyof any): k is keyof T\r\n{\r\n return k in obj;\r\n}\r\n\r\n/**\r\n * Check if the param is a `FormData`\r\n * @param param any\r\n */\r\nexport function isFormData(param: any): param is FormData\r\n{\r\n return (\r\n param instanceof FormData ||\r\n (typeof param === 'object' &&\r\n Object.prototype.toString.call(param) === '[object FormData]')\r\n );\r\n}\r\n// #endregion\r\n\r\n// #region String\r\n/**\r\n * Converts the first character of string to upper case and the remaining to lower case.\r\n */\r\nexport function capitalize(s: T): Capitalize\r\n{\r\n return s.charAt(0).toUpperCase() + s.slice(1) as Capitalize;\r\n}\r\n// #endregion\r\n\r\n// #region Array\r\n/**\r\n * Move an element in the array.\r\n * Keep the others elements in the same position.\r\n * @param {Array} arr the array to reorder\r\n * @param {number} oldIndex the index to move to another position.\r\n * If the index is greater than the length of the array, this method do nothing.\r\n * @param {number} newIndex the target index of the element.\r\n * If the index is greater than the length of the array, the element will be moved to the last position of the array.\r\n *\r\n * @return new array with the new elements reordered\r\n */\r\nexport function move(arr: Array, oldIndex: number, newIndex: number): Array\r\n{\r\n if (oldIndex < 0 || oldIndex >= arr.length)\r\n {\r\n return arr;\r\n }\r\n\r\n if (newIndex >= arr.length)\r\n {\r\n newIndex = arr.length - 1;\r\n }\r\n\r\n if (newIndex < 0)\r\n {\r\n newIndex = 0;\r\n }\r\n\r\n const result = [...arr];\r\n\r\n result.splice(newIndex, 0, result.splice(oldIndex, 1)[0]);\r\n\r\n return result;\r\n};\r\n// #endregion\r\n\r\n// #region Color\r\n/**\r\n * Converts a hexadecimal color into the rgba format.\r\n * @link https://gist.github.com/danieliser/b4b24c9f772066bcf0a6\r\n * @param hexCode\r\n * @param opacity\r\n * @returns\r\n */\r\nexport const convertHexToRGBA = (hexCode: string, opacity = 1): string =>\r\n{\r\n let hex = hexCode.replace('#', '');\r\n\r\n if (hex.length === 3)\r\n {\r\n hex = `${hex[0]}${hex[0]}${hex[1]}${hex[1]}${hex[2]}${hex[2]}`;\r\n }\r\n\r\n const r = parseInt(hex.substring(0, 2), 16);\r\n const g = parseInt(hex.substring(2, 4), 16);\r\n const b = parseInt(hex.substring(4, 6), 16);\r\n\r\n /* Backward compatibility for whole number based opacity values. */\r\n if (opacity > 1 && opacity <= 100)\r\n {\r\n opacity = opacity / 100;\r\n }\r\n\r\n return `rgba(${r},${g},${b},${opacity})`;\r\n};\r\n// #endregion\r\n\r\n// #region Http utils\r\n\r\n/**\r\n * Get the url with the query params.\r\n *\r\n * @param {string} url the base url, with or without any query parameters.\r\n * @param {QueryParams} queryParams object with the params to append to the url\r\n * @returns {string} the complete url with all the query parameters.\r\n */\r\nexport const appendQueryParams = (url: string, queryParams?: QueryParams): string =>\r\n{\r\n if (!queryParams)\r\n {\r\n return url;\r\n }\r\n else\r\n {\r\n const appendInit = url.indexOf('?') !== -1 ? '&' : '?';\r\n const queryString = Object.entries(queryParams).reduce((prev, [key, value]) =>\r\n {\r\n if (!prev)\r\n {\r\n return `${key}=${value}`;\r\n }\r\n else\r\n {\r\n return `${prev}&${key}=${value}`;\r\n }\r\n }, '');\r\n return `${url}${appendInit}${queryString}`;\r\n }\r\n};\r\n\r\n// #endregion","/**\r\n * Solid icons classes from https://fontawesome.com/\r\n */\r\nexport enum IconSolid\r\n{\r\n trash = 'fa-solid fa-trash',\r\n undo = 'fa-solid fa-undo',\r\n undoAlt = 'fa-solid fa-undo-alt',\r\n user = 'fa-solid fa-user',\r\n userGear = 'fa-solid fa-user-gear',\r\n userSecret = 'fa-solid fa-user-secret',\r\n userCircle = 'fa-solid fa-user-circle',\r\n gear = 'fa-solid fa-gear',\r\n users = 'fa-solid fa-users',\r\n plus = 'fa-solid fa-plus',\r\n minus = 'fa-solid fa-minus',\r\n angleUp = 'fa-solid fa-angle-up',\r\n angleDown = 'fa-solid fa-angle-down',\r\n angleLeft = 'fa-solid fa-angle-left',\r\n angleRight = 'fa-solid fa-angle-right',\r\n running = 'fa-solid fa-running',\r\n extenalLinkAlt = 'fa-solid fa-external-link-alt',\r\n clock = 'fa-solid fa-clock',\r\n checkSquare = 'fa-solid fa-check-square',\r\n checkCircle = 'fa-solid fa-check-circle',\r\n calendar = 'fa-solid fa-calendar',\r\n calendarAlt = 'fa-solid fa-calendar-alt',\r\n calendarDay = 'fa-solid fa-calendar-day',\r\n star = 'fa-solid fa-star',\r\n lock = 'fa-solid fa-lock',\r\n lock_open = 'fa-solid fa-lock-open',\r\n key = 'fa-solid fa-key',\r\n fileLines = 'fa-solid fa-file-lines',\r\n fileExport = 'fa-solid fa-file-export',\r\n times = 'fa-solid fa-times',\r\n timesCircle = 'fa-solid fa-times-circle',\r\n edit = 'fa-solid fa-edit',\r\n puzzlePiece = 'fa-solid fa-puzzle-piece',\r\n columns = 'fa-solid fa-columns',\r\n fileExcel = 'fa-solid fa-file-excel',\r\n ellipsisV = 'fa-solid fa-ellipsis-v',\r\n arrowLeft = 'fa-solid fa-arrow-left',\r\n arrowRight = 'fas fa-arrow-right',\r\n ticketAlt = 'fa-solid fa-ticket-alt',\r\n bars = 'fa-solid fa-bars',\r\n home = 'fa-solid fa-home',\r\n sitemap = 'fa-solid fa-sitemap',\r\n mailBulk = 'fa-solid fa-mail-bulk',\r\n language = 'fa-solid fa-language',\r\n signOutAlt = 'fa-solid fa-sign-out-alt',\r\n exclamation = 'fa-solid fa-exclamation',\r\n exclamationTriangle = 'fa-solid fa-exclamation-triangle',\r\n th = 'fa-solid fa-th',\r\n filter = 'fa-solid fa-filter',\r\n sortAmountDown = 'fa-solid fa-sort-amount-down',\r\n indent = 'fa-solid fa-indent',\r\n chalkboard = 'fa-solid fa-chalkboard',\r\n bolt = 'fa-solid fa-bolt',\r\n bug = 'fa-solid fa-bug',\r\n search = 'fa-solid fa-search',\r\n qrcode = 'fa-solid fa-qrcode',\r\n play = 'fa-solid fa-play',\r\n pause = 'fa-solid fa-pause',\r\n stop = 'fa-solid fa-stop',\r\n circle = 'fa-solid fa-circle',\r\n chartArea = 'fa-solid fa-chart-area',\r\n meh = 'fa-solid fa-meh',\r\n mehRollingEyes = 'fa-solid fa-meh-rolling-eyes',\r\n mehBlank = 'fa-solid fa-meh-blank',\r\n box = 'fa-solid fa-box',\r\n tag = 'fa-solid fa-tag',\r\n check = 'fa-solid fa-check',\r\n skull = 'fa-solid fa-skull',\r\n exchange = 'fa-solid fa-exchange-alt',\r\n print = 'fa-solid fa-print',\r\n layerGroup = 'fa-solid fa-layer-group',\r\n list = 'fa-solid fa-list',\r\n cube = 'fa-solid fa-cube',\r\n wrench = 'fa-solid fa-wrench',\r\n industry = 'fa-solid fa-industry',\r\n file = 'fa-solid fa-file',\r\n truck = 'fa-solid fa-truck',\r\n flagCheckered = 'fa-solid fa-flag-checkered',\r\n thList = 'fa-solid fa-th-list',\r\n plane = 'fa-solid fa-plane',\r\n vectorSquare ='fa-solid fa-vector-square',\r\n chartPie = 'fa-solid fa-chart-pie',\r\n certificate = 'fa-solid fa-certificate',\r\n image = 'fa-solid fa-image',\r\n barcode = 'fa-solid fa-barcode',\r\n searchPlus = 'fa-solid fa-search-plus',\r\n infoCircle = 'fa-solid fa-info-circle',\r\n eye = 'fa-solid fa-eye',\r\n glasses = 'fa-solid fa-glasses',\r\n book = 'fa-solid fa-book',\r\n gaugeHigh = 'fa-solid fa-gauge-high',\r\n newspaper = 'fa-solid fa-newspaper',\r\n usersBetweenLines = 'fa-solid fa-users-between-lines',\r\n peopleGroup = 'fa-solid fa-people-group',\r\n userTie = 'fa-solid fa-user-tie',\r\n briefcase = 'fa-solid fa-briefcase',\r\n upload = 'fa-solid fa-upload',\r\n download = 'fa-solid fa-download'\r\n}\r\n\r\n/**\r\n * Regular icons classes from https://fontawesome.com/\r\n */\r\nexport enum IconRegular\r\n{\r\n trash = 'fa-regular fa-trash',\r\n undo = 'fa-regular fa-undo',\r\n undoAlt = 'fa-regular fa-undo-alt',\r\n user = 'fa-regular fa-user',\r\n userGear = 'fa-regular fa-user-gear',\r\n userSecret = 'fa-regular fa-user-secret',\r\n userCircle = 'fa-regular fa-user-circle',\r\n gear = 'fa-regular fa-gear',\r\n users = 'fa-regular fa-users',\r\n plus = 'fa-regular fa-plus',\r\n minus = 'fa-regular fa-minus',\r\n angleUp = 'fa-regular fa-angle-up',\r\n angleDown = 'fa-regular fa-angle-down',\r\n angleLeft = 'fa-regular fa-angle-left',\r\n angleRight = 'fa-regular fa-angle-right',\r\n running = 'fa-regular fa-running',\r\n extenalLinkAlt = 'fa-regular fa-external-link-alt',\r\n clock = 'fa-regular fa-clock',\r\n checkSquare = 'fa-regular fa-check-square',\r\n checkCircle = 'fa-regular fa-check-circle',\r\n calendar = 'fa-regular fa-calendar',\r\n calendarAlt = 'fa-regular fa-calendar-alt',\r\n star = 'fa-regular fa-star',\r\n lock = 'fa-regular fa-lock',\r\n lock_open = 'fa-regular fa-lock-open',\r\n key = 'fa-regular fa-key',\r\n fileLines = 'fa-regular fa-file-lines',\r\n fileExport = 'fa-regular fa-file-export',\r\n times = 'fa-regular fa-times',\r\n timesCircle = 'fa-regular fa-times-circle',\r\n edit = 'fa-regular fa-edit',\r\n puzzlePiece = 'fa-regular fa-puzzle-piece',\r\n columns = 'fa-regular fa-columns',\r\n fileExcel = 'fa-regular fa-file-excel',\r\n ellipsisV = 'fa-regular fa-ellipsis-v',\r\n arrowLeft = 'fa-regular fa-arrow-left',\r\n arrowRight = 'fa-regular fa-arrow-right',\r\n ticketAlt = 'fa-regular fa-ticket-alt',\r\n bars = 'fa-regular fa-bars',\r\n home = 'fa-regular fa-home',\r\n sitemap = 'fa-regular fa-sitemap',\r\n mailBulk = 'fa-regular fa-mail-bulk',\r\n language = 'fa-regular fa-language',\r\n signOutAlt = 'fa-regular fa-sign-out-alt',\r\n exclamation = 'fa-regular fa-exclamation',\r\n exclamationTriangle = 'fa-regular fa-exclamation-triangle',\r\n th = 'fa-regular fa-th',\r\n filter = 'fa-regular fa-filter',\r\n sortAmountDown = 'fa-regular fa-sort-amount-down',\r\n indent = 'fa-regular fa-indent',\r\n chalkboard = 'fa-regular fa-chalkboard',\r\n bolt = 'fa-regular fa-bolt',\r\n bug = 'fa-regular fa-bug',\r\n search = 'fa-regular fa-search',\r\n qrcode = 'fa-regular fa-qrcode',\r\n play = 'fa-regular fa-play',\r\n pause = 'lr la-pause',\r\n stop = 'fa-regular fa-stop',\r\n circle = 'fa-regular fa-circle',\r\n chartArea = 'fa-regular fa-chart-area',\r\n meh = 'fa-regular fa-meh',\r\n mehRollingEyes = 'fa-regular fa-meh-rolling-eyes',\r\n mehBlank = 'fa-regular fa-meh-blank',\r\n box = 'fa-regular fa-box',\r\n tag = 'fa-regular fa-tag',\r\n check = 'fa-regular fa-check',\r\n skull = 'fa-regular fa-skull',\r\n exchange = 'fa-regular fa-exchange-alt',\r\n print = 'fa-regular fa-print',\r\n layerGroup = 'fa-regular fa-layer-group',\r\n list = 'fa-regular fa-list',\r\n cube = 'fa-regular fa-cube',\r\n wrench = 'fa-regular fa-wrench',\r\n industry = 'fa-regular fa-industry',\r\n file = 'fa-regular fa-file',\r\n truck = 'fa-regular fa-truck',\r\n flagCheckered = 'fa-regular fa-flag-checkered',\r\n thList = 'fa-regular fa-th-list',\r\n plane = 'fa-regular fa-plane',\r\n vectorSquare ='fa-regular fa-vector-square',\r\n chartPie = 'fa-regular fa-chart-pie',\r\n certificate = 'fa-regular fa-certificate',\r\n image = 'fa-regular fa-image',\r\n barcode = 'fa-regular fa-barcode',\r\n searchPlus = 'fa-regular fa-search-plus',\r\n infoCircle = 'fa-regular fa-info-circle',\r\n eye = 'fa-regular fa-eye',\r\n glasses = 'fa-regular fa-glasses',\r\n book = 'fa-regular fa-book',\r\n gaugeHigh = 'fa-regular fa-gauge-high',\r\n newspaper = 'fa-regular fa-newspaper',\r\n usersBetweenLines = 'fa-regular fa-users-between-lines',\r\n peopleGroup = 'fa-regular fa-people-group',\r\n userTie= 'fa-regular fa-user-tie',\r\n briefcase = 'fa-regular fa-briefcase',\r\n upload = 'fa-regular fa-upload',\r\n download = 'fa-regular fa-download'\r\n}\r\n\r\nexport type Icon = IconSolid | IconRegular","/**\n * @hidden\n */\nexport var ifElse = function (predicate, right, left) { return function (value) { return predicate(value) ? right(value) : left(value); }; };\n/**\n * @hidden\n * Performs the right-to-left function composition. Functions should have a unary.\n */\nexport var compose = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return function (data) { return args.reduceRight(function (acc, curr) { return curr(acc); }, data); };\n};\n/**\n * @hidden\n */\nexport var constant = function (x) { return function () { return x; }; };\n/**\n * @hidden\n */\nexport var identity = function (x) { return x; };\n","import * as tslib_1 from \"tslib\";\nimport { isPresent, isNotNullOrEmptyString } from './utils';\nimport { serializeFilter } from './odata-filtering.operators';\nimport { ifElse, constant } from './funcs';\nvar serializeSort = function (orderby) {\n var str = orderby\n .filter(function (sort) { return isPresent(sort.dir); })\n .map(function (sort) {\n var order = sort.field.replace(/\\./g, \"/\");\n return sort.dir === \"desc\" ? order + \" desc\" : order;\n }).join(\",\");\n return str ? \"$orderby=\" + str : str;\n};\nvar emptyString = constant('');\nvar concat = function (a) { return function (b) { return a + b; }; };\nvar serializeKey = function (strings, val) { return ifElse(isPresent, concat(strings[0]), emptyString)(val); };\nvar rules = function (settings, state) { return function (key) { return ({\n \"filter\": serializeFilter(state.filter || {}, settings),\n \"skip\": serializeKey(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"$skip=\", \"\"], [\"$skip=\", \"\"])), state.skip),\n \"sort\": serializeSort(state.sort || []),\n \"take\": serializeKey(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"$top=\", \"\"], [\"$top=\", \"\"])), state.take)\n}[key]); }; };\n// tslint:enable:max-line-length\n/**\n * Converts a [State]({% slug api_kendo-data-query_state %}) into an OData v4 compatible string.\n *\n * @param {State} state - The state that will be serialized.\n * @param {ODataSettings} settings - The settings that are used during the serialization.\n * @returns {string} - The serialized state.\n */\nexport var toODataString = function (state, settings) {\n if (settings === void 0) { settings = {}; }\n return (Object.keys(state)\n .map(rules(settings, state))\n .filter(isNotNullOrEmptyString)\n .join('&'));\n};\nvar templateObject_1, templateObject_2;\n","/**\n * @hidden\n */\nexport var isPresent = function (value) { return value !== null && value !== undefined; };\n/**\n * @hidden\n */\nexport var isBlank = function (value) { return value === null || value === undefined; };\n/**\n * @hidden\n */\nexport var isArray = function (value) { return Array.isArray(value); };\n/**\n * @hidden\n */\nexport var isFunction = function (value) { return typeof value === 'function'; };\n/**\n * @hidden\n */\nexport var isString = function (value) { return typeof value === 'string'; };\n/**\n * @hidden\n */\nexport var isTruthy = function (value) { return !!value; };\n/**\n * @hidden\n */\nexport var isNullOrEmptyString = function (value) { return isBlank(value) || value.trim().length === 0; };\n/**\n * @hidden\n */\nexport var isNotNullOrEmptyString = function (value) { return !isNullOrEmptyString(value); };\n/**\n * @hidden\n */\nexport var isNumeric = function (value) { return !isNaN(value - parseFloat(value)); };\n/**\n * @hidden\n */\nexport var isDate = function (value) { return value && value.getTime; };\n","import { isPresent } from '../utils';\n// tslint:enable:max-line-length\n/**\n * @hidden\n * Type guard for `CompositeFilterDescriptor`.\n */\nexport var isCompositeFilterDescriptor = function (source) {\n return isPresent(source.filters);\n};\n","import { isPresent } from './utils';\nvar getterCache = {};\nvar FIELD_REGEX = /\\[(?:(\\d+)|['\"](.*?)['\"])\\]|((?:(?!\\[.*?\\]|\\.).)+)/g;\n// tslint:disable-next-line:no-string-literal\ngetterCache['undefined'] = function (obj) { return obj; };\n/**\n * @hidden\n */\nexport var getter = function (field, safe) {\n var key = field + safe;\n if (getterCache[key]) {\n return getterCache[key];\n }\n var fields = [];\n field.replace(FIELD_REGEX, function (_, index, indexAccessor, field) {\n fields.push(isPresent(index) ? index : (indexAccessor || field));\n return undefined;\n });\n getterCache[key] = function (obj) {\n var result = obj;\n for (var idx = 0; idx < fields.length; idx++) {\n result = result[fields[idx]];\n if (!isPresent(result) && safe) {\n return result;\n }\n }\n return result;\n };\n return getterCache[key];\n};\n","import * as tslib_1 from \"tslib\";\nimport { isString, isDate } from './utils';\n/**\n * @hidden\n * Creates a single arity function which wraps the value based on the provided predicate.\n * @example\n * ```\n * wrapIf(() => ignoreCase) `tolower(${field})`\n * //ignoreCase=true -> tolower(${field})`\n * //ignoreCase=false -> ${field}`\n * ```\n */\nexport var wrapIf = function (predicate) { return function (str) {\n var args = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n args[_i - 1] = arguments[_i];\n }\n return predicate() ? \"\" + str[0] + args[0] + str[1] : args[0];\n}; };\n/**\n * @hidden\n */\nexport var toUTC = function (date) {\n return new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n};\n/**\n * @hidden\n */\nexport var quote = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"'\" + value.replace(/'/g, \"''\") + \"'\",\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var encodeValue = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: \"\" + encodeURIComponent(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var toLower = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n field: wrapIf(function () { return ignoreCase; })(templateObject_1 || (templateObject_1 = tslib_1.__makeTemplateObject([\"tolower(\", \")\"], [\"tolower(\", \")\"])), field),\n value: value,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var normalizeField = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: value,\n field: field.replace(/\\./g, \"/\"),\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\n/**\n * @hidden\n */\nexport var isStringValue = function (x) { return isString(x.value); };\n/**\n * @hidden\n */\nexport var isDateValue = function (x) { return isDate(x.value); };\n/**\n * @hidden\n */\nexport var serializeFilters = function (map, join) { return function (filter) {\n var brackets = wrapIf(function () { return filter.filters.length > 1; });\n return brackets(templateObject_2 || (templateObject_2 = tslib_1.__makeTemplateObject([\"(\", \")\"], [\"(\",\n \")\"])), filter.filters\n .map(map)\n .join(join(filter)));\n}; };\nvar templateObject_1, templateObject_2;\n","import * as tslib_1 from \"tslib\";\nimport { isCompositeFilterDescriptor } from '../filtering/filter-descriptor.interface';\nimport { isPresent, isNotNullOrEmptyString, isArray } from '../utils';\nimport { getter } from '../accessor';\nimport { compose, ifElse, identity } from '../funcs';\nimport { isStringValue, isDateValue, quote, serializeFilters, toUTC, encodeValue } from '../filter-serialization.common';\nvar toQueryString = function (values) { return values.reduce(function (acc, _a) {\n var key = _a[0], value = _a[1];\n return acc.concat([key + \"=\" + value]);\n}, []); };\nvar toObject = function (values) { return values.reduce(function (acc, _a) {\n var key = _a[0], value = _a[1];\n var _b;\n return (tslib_1.__assign({}, acc, (_b = {}, _b[key] = value, _b)));\n}, {}); };\nvar pairwise = function (key) { return function (value) { return [key, value]; }; };\nvar empty = function () { return null; };\nvar isNotEmptyArray = function (value) { return isPresent(value) && isArray(value) && value.length > 0; };\nvar has = function (accessor) { return function (value) { return isPresent(accessor(value)); }; };\nvar isNotEmpty = function (accessor) { return function (value) { return isNotEmptyArray(accessor(value)); }; };\nvar runOrEmpty = function (predicate, fn) { return ifElse(predicate, fn, empty); };\nvar calcPage = function (_a) {\n var skip = _a.skip, take = _a.take;\n return Math.floor((skip || 0) / take) + 1;\n};\nvar formatDescriptors = function (accessor, formatter) { return function (state) { return (accessor(state).map(formatter).join(\"~\")); }; };\nvar removeAfter = function (what) { return function (str) { return str.slice(0, str.indexOf(what)); }; };\nvar replace = function (patterns) {\n return compose.apply(void 0, patterns.map(function (_a) {\n var left = _a[0], right = _a[1];\n return function (s) { return s.replace(new RegExp(left, \"g\"), right); };\n }));\n};\nvar sanitizeDateLiterals = replace([[\"\\\"\", \"\"], [\":\", \"-\"]]);\nvar removeAfterDot = removeAfter(\".\");\nvar directionFormatter = function (_a) {\n var field = _a.field, _b = _a.dir, dir = _b === void 0 ? \"asc\" : _b;\n return field + \"-\" + dir;\n};\nvar aggregateFormatter = function (_a) {\n var field = _a.field, aggregate = _a.aggregate;\n return field + \"-\" + aggregate;\n};\nvar take = getter(\"take\");\nvar aggregates = getter(\"aggregates\");\nvar skip = getter(\"skip\");\nvar group = getter(\"group\");\nvar sort = getter(\"sort\", true);\nvar formatSort = formatDescriptors(sort, directionFormatter);\nvar formatGroup = formatDescriptors(group, directionFormatter);\nvar formatAggregates = formatDescriptors(aggregates, aggregateFormatter);\nvar prefixDateValue = function (value) { return \"datetime'\" + value + \"'\"; };\nvar formatDateValue = compose(prefixDateValue, removeAfterDot, sanitizeDateLiterals, JSON.stringify, toUTC);\nvar formatDate = function (_a) {\n var field = _a.field, value = _a.value, ignoreCase = _a.ignoreCase, operator = _a.operator;\n return ({\n value: formatDateValue(value),\n field: field,\n ignoreCase: ignoreCase,\n operator: operator\n });\n};\nvar normalizeSort = function (state) { return Object.assign({}, state, {\n sort: (sort(state) || []).filter(function (_a) {\n var dir = _a.dir;\n return isNotNullOrEmptyString(dir);\n })\n}); };\nvar transformSkip = compose(pairwise('page'), calcPage);\nvar transformTake = compose(pairwise('pageSize'), take);\nvar transformGroup = compose(pairwise('group'), formatGroup);\nvar transformSort = compose(pairwise('sort'), formatSort);\nvar transformAggregates = compose(pairwise('aggregate'), formatAggregates);\nvar serializePage = runOrEmpty(has(skip), transformSkip);\nvar serializePageSize = runOrEmpty(has(take), transformTake);\nvar serializeGroup = runOrEmpty(isNotEmpty(group), transformGroup);\nvar serializeAggregates = runOrEmpty(has(aggregates), transformAggregates);\nvar serializeSort = compose(runOrEmpty(isNotEmpty(sort), transformSort), normalizeSort);\nvar hasField = function (_a) {\n var field = _a.field;\n return isNotNullOrEmptyString(field);\n};\nvar filterFormatter = function (_a) {\n var field = _a.field, operator = _a.operator, value = _a.value;\n return field + \"~\" + operator + \"~\" + value;\n};\nvar dateFormatter = ifElse(isDateValue, compose(filterFormatter, formatDate), filterFormatter);\nvar typedFormatter = function (encode) { return runOrEmpty(hasField, ifElse(isStringValue, compose(filterFormatter, quote, encode ? encodeValue : identity), dateFormatter)); };\nvar join = function (_a) {\n var logic = _a.logic;\n return \"~\" + logic + \"~\";\n};\nvar serialize = function (encode) { return serializeFilters(function (filter) { return ifElse(isCompositeFilterDescriptor, serialize(encode), typedFormatter(encode))(filter); }, join); };\nvar serializeFilter = function (_a, encode) {\n var filter = _a.filter;\n if (filter && filter.filters) {\n var filters = serialize(encode)(filter);\n if (filters.length) {\n return ['filter', filters];\n }\n }\n return null;\n};\nvar rules = function (state, encode) {\n if (encode === void 0) { encode = true; }\n return function (key) { return ({\n \"aggregates\": serializeAggregates(state),\n \"filter\": serializeFilter(state, encode),\n \"group\": serializeGroup(state),\n \"skip\": serializePage(state),\n \"sort\": serializeSort(state),\n \"take\": serializePageSize(state)\n }[key]); };\n};\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into a string\n * that is comparable with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {string} - The serialized state.\n *\n * @example\n * {% platform_content angular %}\n * ```ts\n * import {\n * toDataSourceRequestString,\n * translateDataSourceResultGroups,\n * translateAggregateResults\n * } from '@progress/kendo-data-query';\n *\n * export class Service {\n * private BASE_URL: string = '...';\n *\n * constructor(private http: Http) { }\n *\n * // Omitted for brevity...\n *\n * private fetch(state: DataSourceRequestState): Observable {\n * const queryStr = `${toDataSourceRequestString(state)}`; //serialize the state\n * const hasGroups = state.group && state.group.length;\n *\n * return this.http\n * .get(`${this.BASE_URL}?${queryStr}`) //send the state to the server\n * .map(response => response.json())\n * .map(({Data, Total, AggregateResults}) => // process the response\n * ({\n * //if there are groups convert them to compatible format\n * data: hasGroups ? translateDataSourceResultGroups(Data) : Data,\n * total: Total,\n * // convert the aggregates if such exists\n * aggregateResult: translateAggregateResults(AggregateResults)\n * })\n * );\n * }\n * }\n * ```\n * {% endplatform_content %}\n *\n * {% platform_content react %}\n * ```jsx\n * import React from 'react';\n * import { toDataSourceRequestString, translateDataSourceResultGroups } from '@progress/kendo-data-query';\n *\n * export function withState(WrappedGrid) {\n * return class StatefullGrid extends React.Component {\n * constructor(props) {\n * super(props);\n * this.state = { dataState: { skip: 0, take: 20 } };\n * }\n *\n * render() {\n * return (\n * \n * );\n * }\n *\n * componentDidMount() {\n * this.fetchData(this.state.dataState);\n * }\n *\n * dataStateChange = (changeEvent) => {\n * this.setState({ dataState: changeEvent.data });\n * this.fetchData(changeEvent.data);\n * }\n *\n * fetchData(dataState) {\n * const queryStr = `${toDataSourceRequestString(dataState)}`; // Serialize the state\n * const hasGroups = dataState.group && dataState.group.length;\n *\n * const base_url = 'api/Products';\n * const init = { method: 'GET', accept: 'application/json', headers: {} };\n *\n * fetch(`${base_url}?${queryStr}`, init)\n * .then(response => response.json())\n * .then(({ data, total }) => {\n * this.setState({\n * data: hasGroups ? translateDataSourceResultGroups(data) : data,\n * total,\n * dataState\n * });\n * });\n * }\n * }\n * }\n * ```\n * {% endplatform_content %}\n */\nexport var toDataSourceRequestString = function (state) { return (toQueryString(Object.keys(state)\n .map(rules(state))\n .filter(isPresent)).join('&')); };\n/**\n * Converts a [DataSourceRequestState]({% slug api_kendo-data-query_datasourcerequeststate %}) into an object\n * that is compatible with the `DataSourceRequest` format in UI for ASP.NET MVC.\n *\n * @param {DataRequestState} state - The state that will be serialized.\n * @returns {any} - The serialized state.\n */\nexport var toDataSourceRequest = function (state) { return (toObject(Object.keys(state)\n .map(rules(state, false))\n .filter(isPresent))); };\n","/**\n * Represents the list of supported [`FilterDescriptor`]({% slug api_kendo-data-query_filterdescriptor %}) operators.\n * Allows restricting `FilterDescriptor.operator` definition to available values only.\n */\nexport var FilterOperator;\n(function (FilterOperator) {\n /**\n * The `contains` operator.\n */\n FilterOperator[\"Contains\"] = \"contains\";\n /**\n * The `doesnotcontain` operator.\n */\n FilterOperator[\"DoesNotContain\"] = \"doesnotcontain\";\n /**\n * The `doesnotendwith` operator.\n */\n FilterOperator[\"DoesNotEndWith\"] = \"doesnotendwith\";\n /**\n * The `doesnotstartwith` operator.\n */\n FilterOperator[\"DoesNotStartWith\"] = \"doesnotstartwith\";\n /**\n * The `endswith` operator.\n */\n FilterOperator[\"EndsWith\"] = \"endswith\";\n /**\n * The `eq` operator.\n */\n FilterOperator[\"EqualTo\"] = \"eq\";\n /**\n * The `gt` operator.\n */\n FilterOperator[\"GreaterThan\"] = \"gt\";\n /**\n * The `gte` operator.\n */\n FilterOperator[\"GreaterThanOrEqual\"] = \"gte\";\n /**\n * The `isempty` operator.\n */\n FilterOperator[\"IsEmpty\"] = \"isempty\";\n /**\n * The `isnotempty` operator.\n */\n FilterOperator[\"IsNotEmpty\"] = \"isnotempty\";\n /**\n * The `isnotnull` operator.\n */\n FilterOperator[\"IsNotNull\"] = \"isnotnull\";\n /**\n * The `isnull` operator.\n */\n FilterOperator[\"IsNull\"] = \"isnull\";\n /**\n * The `lt` operator.\n */\n FilterOperator[\"LessThan\"] = \"lt\";\n /**\n * The `lte` operator.\n */\n FilterOperator[\"LessThanOrEqual\"] = \"lte\";\n /**\n * The `neq` operator.\n */\n FilterOperator[\"NotEqualTo\"] = \"neq\";\n /**\n * The `startswith` operator.\n */\n FilterOperator[\"StartsWith\"] = \"startswith\";\n})(FilterOperator || (FilterOperator = {}));\n","import { isPresent } from '../utils';\nimport { compose } from '../funcs';\n// tslint:enable:max-line-length\nvar set = function (field, target, value) {\n target[field] = value;\n return target;\n};\nvar toCamelCase = function (str) { return str.replace(/(^[A-Z])/g, function (_, g1) { return g1.toLowerCase(); }); };\nvar prop = function (fieldName) { return function (obj) {\n var value = obj[fieldName];\n if (isPresent(value)) {\n return value;\n }\n return obj[toCamelCase(fieldName)];\n}; };\nvar member = prop(\"Member\");\nvar aggregateMethodName = prop(\"AggregateMethodName\");\nvar value = prop(\"Value\");\nvar convert = function (mapper) { return function (values) { return Object.keys(values).reduce(mapper.bind(null, values), {}); }; };\nvar translateAggregate = convert(function (source, acc, field) { return set(field.toLowerCase(), acc, source[field]); });\nvar translateAggregates = convert(function (source, acc, field) { return set(field, acc, translateAggregate(source[field])); });\nvar valueOrDefault = function (value, defaultValue) { return isPresent(value) ? value : defaultValue; };\nvar normalizeGroup = function (group) { return ({\n aggregates: group.Aggregates || group.aggregates,\n field: group.Member || group.member || group.field,\n hasSubgroups: group.HasSubgroups || group.hasSubgroups || false,\n items: group.Items || group.items,\n value: valueOrDefault(group.Key, valueOrDefault(group.key, group.value))\n}); };\nvar translateGroup = compose(function (_a) {\n var field = _a.field, hasSubgroups = _a.hasSubgroups, value = _a.value, aggregates = _a.aggregates, items = _a.items;\n return ({\n aggregates: translateAggregates(aggregates),\n field: field,\n items: hasSubgroups ? items.map(translateGroup) : items,\n value: value\n });\n}, normalizeGroup);\n// tslint:disable:max-line-length\n/**\n * Converts the grouped result, which is returned into the `Data` field of the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `Data` field of the response.\n * @returns {GroupResult[]} - The converted result.\n */\nexport var translateDataSourceResultGroups = function (data) { return data.map(translateGroup); };\n/**\n * Converts the `AggregateResults` field content, which is returned by the UI for ASP.NET MVC `ToDataSourceResult` method, to a comparable format.\n * @param data - The value of the `AggregateResults` field of the response.\n * @returns {AggregateResult} - The converted result.\n */\n// tslint:enable:max-line-length\nexport var translateAggregateResults = function (data) { return ((data || []).reduce(function (acc, x) { return set(member(x), acc, set(aggregateMethodName(x).toLowerCase(), acc[member(x)] || {}, value(x))); }, {})); };\n","import { isPresent, isBlank } from '../utils';\nimport { getter } from '../accessor';\nvar compare = function (a, b) {\n if (isBlank(a)) {\n return a === b ? 0 : -1;\n }\n if (isBlank(b)) {\n return 1;\n }\n if (a.localeCompare) {\n return a.localeCompare(b);\n }\n return a > b ? 1 : (a < b ? -1 : 0);\n};\nvar compareDesc = function (a, b) { return compare(b, a); };\nvar descriptorAsFunc = function (descriptor) {\n var prop = getter(descriptor.field, true);\n return function (a, b) { return (descriptor.dir === 'asc' ? compare : compareDesc)(prop(a), prop(b)); };\n};\nvar initial = function (_a, _b) { return 0; };\n// tslint:disable:max-line-length\n/**\n * Converts the `SortDescriptors` into a [Comparer]({% slug api_kendo-data-query_comparer %}) function that can be used through `Array.sort`. If multiple descriptors are provided, sorting is applied in a right-to-left order.\n * @param {SortDescriptor[]} descriptors - The descriptors which will be converted.\n * @returns {Comparer} - The produced function.\n *\n * @example\n * ```ts\n * import { composeSortDescriptors } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const comparer = composeSortDescriptors([{ field: \"name\", dir: \"asc\" }]);\n * const result = data.sort(comparer);\n * // output: [{ name: \"Beef\" }, { name: \"Pepper\" }, { name: \"Pork\" }];\n * ```\n */\n// tslint:enable:max-line-length\nexport var composeSortDescriptors = function (descriptors) { return (descriptors\n .filter(function (x) { return isPresent(x.dir); })\n .map(function (descriptor) { return descriptorAsFunc(descriptor); })\n .reduce(function (acc, curr) { return function (a, b) { return acc(a, b) || curr(a, b); }; }, initial)); };\n","import { isPresent, isNumeric, isDate } from './utils';\nimport { getter } from './accessor';\nvar valueToString = function (value) {\n value = isPresent(value) && value.getTime ? value.getTime() : value;\n return value + \"\";\n};\n/**\n * @hidden\n */\nexport var groupCombinator = function (field) {\n var prop = getter(field, true);\n var position = 0;\n return function (agg, value) {\n agg[field] = agg[field] || {};\n var groupValue = prop(value);\n var key = valueToString(groupValue);\n var values = agg[field][key] || { __position: position++, aggregates: {}, items: [], value: groupValue };\n values.items.push(value);\n agg[field][key] = values;\n return agg;\n };\n};\n/**\n * @hidden\n */\nexport var expandAggregates = function (result) {\n if (result === void 0) { result = {}; }\n Object.keys(result).forEach(function (field) {\n var aggregates = result[field];\n Object.keys(aggregates).forEach(function (aggregate) {\n aggregates[aggregate] = aggregates[aggregate].result();\n });\n });\n return result;\n};\nvar aggregatesFuncs = function (name) { return ({\n average: function () {\n var value = 0;\n var count = 0;\n return {\n calc: function (curr) {\n if (isNumeric(curr)) {\n value += curr;\n count++;\n }\n else {\n value = curr;\n }\n },\n result: function () { return isNumeric(value) ? value / count : value; }\n };\n },\n count: function () {\n var state = 0;\n return {\n calc: function () { return state++; },\n result: function () { return state; }\n };\n },\n max: function () {\n var state = Number.NEGATIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state < value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n min: function () {\n var state = Number.POSITIVE_INFINITY;\n return {\n calc: function (value) {\n state = isNumeric(state) || isDate(state) ? state : value;\n if (state > value && (isNumeric(value) || isDate(value))) {\n state = value;\n }\n },\n result: function () { return state; }\n };\n },\n sum: function () {\n var state = 0;\n return {\n calc: function (value) {\n value = isPresent(value) ? value : 0;\n state += value;\n },\n result: function () { return state; }\n };\n }\n}[name]()); };\n/**\n * @hidden\n */\nexport var aggregatesCombinator = function (descriptors) {\n var functions = descriptors.map(function (descriptor) {\n var fieldAccessor = getter(descriptor.field, true);\n var aggregateName = (descriptor.aggregate || \"\").toLowerCase();\n var aggregateAccessor = getter(aggregateName, true);\n return function (state, value) {\n var fieldAggregates = state[descriptor.field] || {};\n var aggregateFunction = aggregateAccessor(fieldAggregates)\n || aggregatesFuncs(aggregateName);\n aggregateFunction.calc(fieldAccessor(value));\n fieldAggregates[descriptor.aggregate] = aggregateFunction;\n state[descriptor.field] = fieldAggregates;\n return state;\n };\n });\n return function (state, value) { return functions.reduce(function (agg, calc) { return calc(agg, value); }, state); };\n};\n/**\n * @hidden\n * Adds the value to the `arr` and produces a new array.\n *\n * > The original array will be modified.\n */\nexport var concat = function (arr, value) {\n arr.push(value);\n return arr;\n};\n/**\n * @hidden\n * Returns a reducer that will apply the specified transformation to the value.\n */\nexport var map = function (transform) { return (function (reduce) { return (function (acc, curr, index) { return reduce(acc, transform(curr, index)); }); }); };\n/**\n * @hidden\n * Returns a reducer that will filter out items which do not match the `Predicate`.\n */\nexport var filter = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n */\nexport var isTransformerResult = function (source) {\n return isPresent(source.__value);\n};\nvar reduced = function (x) {\n if (isTransformerResult(x)) {\n return x;\n }\n return {\n __value: x,\n reduced: true\n };\n};\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var take = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- > 0 ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will take the specified number of items.\n */\nexport var takeWhile = function (predicate) { return (function (reduce) { return (function (acc, curr) { return predicate(curr) ? reduce(acc, curr) : reduced(acc); }); }); };\n/**\n * @hidden\n * Returns a reducer that will skip the specified number of items.\n */\nexport var skip = function (count) { return (function (reduce) { return (function (acc, curr) { return count-- <= 0 ? reduce(acc, curr) : acc; }); }); };\n/**\n * @hidden\n * Transforms the data by applying the supplied transformer.\n */\nexport var exec = function (transform, initialValue, data) {\n var result = initialValue;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n result = transform(result, data[idx], idx);\n if (isTransformerResult(result)) {\n result = result.__value;\n break;\n }\n }\n return result;\n};\n","import { exec, map, aggregatesCombinator, expandAggregates } from '../transducers';\nvar identity = map(function (x) { return x; });\n// tslint:disable:max-line-length\n/**\n * Applies the specified [AggregateDescriptors]({% slug api_kendo-data-query_aggregatedescriptor %}) to the data. Returns an [AggregateResult]({% slug api_kendo-data-query_aggregateresult %}) instance.\n *\n * @example\n * ```ts\n * const data = [\n * { unitPrice: 23, unitsInStock: 21 },\n * { unitPrice: 10, unitsInStock: 12 },\n * { unitPrice: 20, unitsInStock: 33 }\n * ];\n *\n * const result = aggregateBy(data, [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]);\n *\n * //output:\n * // {\n * // \"unitPrice\": { \"sum\": 53 },\n * // \"unitsInStock\": { \"sum\": 66 }\n * // }\n * ```\n * @param {T[]} data - The data on which the calculation will be executed.\n * @param {AggregateDescriptor[]} descriptors - The aggregate operations that will be executed.\n * @param {any} transformers - For internal use.\n * @returns {AggregateResult} - The aggregated result.\n * For more information, refer to the [aggregateresult]({% slug api_kendo-data-query_aggregateresult %}) configuration.\n */\n// tslint:enable:max-line-length\nexport var aggregateBy = function (data, descriptors, transformers) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n var initialValue = {};\n if (!descriptors.length) {\n return initialValue;\n }\n var result = exec(transformers(aggregatesCombinator(descriptors)), initialValue, data);\n return expandAggregates(result);\n};\n","import { isPresent, isString, isArray } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nvar operatorMap = function (key) { return ({\n \"!=\": \"neq\",\n \"<\": \"lt\",\n \"<=\": \"lte\",\n \"==\": \"eq\",\n \">\": \"gt\",\n \">=\": \"gte\",\n equal: \"eq\",\n equals: \"eq\",\n equalto: \"eq\",\n ge: \"gte\",\n greater: \"gt\",\n greaterthan: \"gt\",\n greaterthanequal: \"gte\",\n isempty: \"isempty\",\n isequalto: \"eq\",\n isgreaterthan: \"gt\",\n isgreaterthanorequalto: \"gte\",\n islessthan: \"lt\",\n islessthanorequalto: \"lte\",\n isnotempty: \"isnotempty\",\n isnotequalto: \"neq\",\n isnull: \"isnull\",\n le: \"lte\",\n less: \"lt\",\n lessthan: \"lt\",\n lessthanequal: \"lte\",\n ne: \"neq\",\n notequal: \"neq\",\n notequals: \"neq\",\n notequalto: \"neq\",\n notsubstringof: \"doesnotcontain\"\n}[key.toLowerCase()] || key); };\nvar normalizeOperator = function (descriptor) {\n if (descriptor.filters) {\n descriptor.filters = descriptor.filters.map(function (filter) {\n var result = Object.assign({}, filter);\n if (!isCompositeFilterDescriptor(filter) && isString(filter.operator)) {\n result.operator = operatorMap(filter.operator);\n }\n if (isCompositeFilterDescriptor(filter)) {\n normalizeOperator(result);\n }\n return result;\n });\n }\n};\nvar normalizeDescriptor = function (descriptor) {\n if (!isCompositeFilterDescriptor(descriptor)) {\n return {\n filters: isArray(descriptor) ? descriptor : [descriptor],\n logic: \"and\"\n };\n }\n return Object.assign({}, descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Converts a [FilterDescriptor]({% slug api_kendo-data-query_filterdescriptor %}) into a [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}). If a `CompositeFilterDescriptor` is passed, no modifications will be made.\n *\n * @param {CompositeFilterDescriptor | FilterDescriptor} descriptor - The descriptor that will be normalized.\n * @returns {CompositeFilterDescriptor} - The normalized descriptor.\n */\n// tslint:enable:max-line-length\nexport var normalizeFilters = function (descriptor) {\n if (isPresent(descriptor)) {\n descriptor = normalizeDescriptor(descriptor);\n normalizeOperator(descriptor);\n }\n return descriptor;\n};\n","import { isCompositeFilterDescriptor } from \"./filter-descriptor.interface\";\nimport { getter } from \"../accessor\";\nimport { isFunction, isPresent, isDate, isString, isBlank, isNumeric } from \"../utils\";\nvar logic = {\n \"or\": {\n concat: function (acc, fn) { return function (a) { return acc(a) || fn(a); }; },\n identity: function () { return false; }\n },\n \"and\": {\n concat: function (acc, fn) { return function (a) { return acc(a) && fn(a); }; },\n identity: function () { return true; }\n }\n};\nvar operatorsMap = {\n contains: function (a, b) { return (a || \"\").indexOf(b) >= 0; },\n doesnotcontain: function (a, b) { return (a || \"\").indexOf(b) === -1; },\n doesnotendwith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) < 0; },\n doesnotstartwith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === -1; },\n endswith: function (a, b) { return (a || \"\").indexOf(b, (a || \"\").length - (b || \"\").length) >= 0; },\n eq: function (a, b) { return a === b; },\n gt: function (a, b) { return a > b; },\n gte: function (a, b) { return a >= b; },\n isempty: function (a) { return a === ''; },\n isnotempty: function (a) { return a !== ''; },\n isnotnull: function (a) { return isPresent(a); },\n isnull: function (a) { return isBlank(a); },\n lt: function (a, b) { return a < b; },\n lte: function (a, b) { return a <= b; },\n neq: function (a, b) { return a != b; },\n startswith: function (a, b) { return (a || \"\").lastIndexOf(b, 0) === 0; }\n};\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar convertValue = function (value, ignoreCase) {\n if (value != null && isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n return new Date(+date[1]).getTime();\n }\n else if (ignoreCase) {\n return value.toLowerCase();\n }\n }\n else if (value != null && isDate(value)) {\n return value.getTime();\n }\n return value;\n};\nvar typedGetter = function (prop, value, ignoreCase) {\n if (!isPresent(value)) {\n return prop;\n }\n var acc = prop;\n if (isString(value)) {\n var date = dateRegExp.exec(value);\n if (date) {\n value = new Date(+date[1]);\n }\n else {\n acc = function (a) {\n var x = prop(a);\n if (typeof x === 'string' && ignoreCase) {\n return x.toLowerCase();\n }\n else {\n return isNumeric(x) ? x + \"\" : x;\n }\n };\n }\n }\n if (isDate(value)) {\n return function (a) {\n var x = acc(a);\n return isDate(x) ? x.getTime() : x;\n };\n }\n return acc;\n};\nvar transformFilter = function (_a) {\n var field = _a.field, ignoreCase = _a.ignoreCase, value = _a.value, operator = _a.operator;\n field = !isPresent(field) ? function (a) { return a; } : field;\n ignoreCase = isPresent(ignoreCase) ? ignoreCase : true;\n var itemProp = typedGetter(isFunction(field) ? field : getter(field, true), value, ignoreCase);\n value = convertValue(value, ignoreCase);\n var op = isFunction(operator) ? operator : operatorsMap[operator];\n return function (a) { return op(itemProp(a), value, ignoreCase); };\n};\n/**\n * @hidden\n */\nexport var transformCompositeFilter = function (filter) {\n var combiner = logic[filter.logic];\n return filter.filters\n .filter(isPresent)\n .map(function (x) { return isCompositeFilterDescriptor(x) ? transformCompositeFilter(x) : transformFilter(x); })\n .reduce(combiner.concat, combiner.identity);\n};\n","import { isPresent } from '../utils';\nimport { isCompositeFilterDescriptor } from './filter-descriptor.interface';\nimport { normalizeFilters } from './filter.operators';\nimport { transformCompositeFilter } from \"./filter-no-eval\";\n// tslint:disable:max-line-length\n/**\n * Creates a [Predicate]({% slug api_kendo-data-query_predicate %}) function for the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {CompositeFilterDescriptor} descriptor - The descriptor for which the predicate is created.\n * @returns {Predicate} - The created function instance.\n *\n * @example\n * ```ts\n * import { compileFilter } from '@progress/kendo-data-query';\n *\n * const data = [{ name: \"Pork\" }, { name: \"Pepper\" }, { name: \"Beef\" } ];\n * const predicate = compileFilter({ logic: \"and\", filters: [{ field: \"name\", operator: \"startswith\", value: \"P\" }] });\n * const result = data.filter(predicate);\n *\n * ```\n */\n// tslint:enable:max-line-length\nexport var compileFilter = function (descriptor) {\n if (!descriptor || descriptor.filters.length === 0) {\n return function () { return true; };\n }\n return transformCompositeFilter(descriptor);\n};\n// tslint:disable:max-line-length\n/**\n * Filters the provided array according to the specified [CompositeFilterDescriptor]({% slug api_kendo-data-query_compositefilterdescriptor %}).\n *\n * @param {T[]} data - The data that will be filtered.\n * @param {(CompositeFilterDescriptor | FilterDescriptor)} descriptor - The filter criteria that will be applied.\n * @returns {T[]} - The filtered data.\n *\n * @example\n * ```ts\n * import { filterBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = filterBy(data, {\n * logic: 'and',\n * filters: [\n * { field: \"name\", operator: \"startswith\", value: \"p\", ignoreCase: true },\n * { field: \"subcategory\", operator: \"eq\", value: \"Meat\" },\n * ]\n * });\n *\n * // output:\n * // [{ \"name\": \"Pork\", \"category\": \"Food\", \"subcategory\": \"Meat\" }]\n * ```\n */\n// tslint:enable:max-line-length\nexport var filterBy = function (data, descriptor) {\n if (!isPresent(descriptor) || (isCompositeFilterDescriptor(descriptor) && descriptor.filters.length === 0)) {\n return data;\n }\n return data.filter(compileFilter(normalizeFilters(descriptor)));\n};\n","import { exec, map, groupCombinator } from '../transducers';\nimport { isArray, isPresent } from '../utils';\nimport { aggregateBy } from './aggregate.operators';\nimport { filterBy } from '../filtering/filter-expression.factory';\n/**\n * @hidden\n */\nexport var normalizeGroups = function (descriptors) {\n descriptors = isArray(descriptors) ? descriptors : [descriptors];\n return descriptors.map(function (x) { return Object.assign({ dir: \"asc\" }, x); });\n};\nvar identity = map(function (x) { return x; });\n/**\n * Groups the provided data according to the specified descriptors.\n *\n * @param {Array} data - The data that will be grouped.\n * @param {GroupDescriptor[]} descriptors - The descriptors.\n * @param {any} transformers - For internal use.\n * @param {Array} originalData - For internal use.\n * @returns {(Array> | T[])} - The grouped data.\n *\n * @example\n * ```ts\n *\n * import { groupBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = groupBy(data, [{ field: \"subcategory\" }]);\n * ```\n */\nexport var groupBy = function (data, descriptors, transformers, originalData) {\n if (descriptors === void 0) { descriptors = []; }\n if (transformers === void 0) { transformers = identity; }\n if (originalData === void 0) { originalData = data; }\n descriptors = normalizeGroups(descriptors);\n if (!descriptors.length) {\n return data;\n }\n var descriptor = descriptors[0];\n var initialValue = {};\n var view = exec(transformers(groupCombinator(descriptor.field)), initialValue, data);\n var result = [];\n Object.keys(view).forEach(function (field) {\n Object.keys(view[field]).forEach(function (value) {\n var group = view[field][value];\n var aggregateResult = {};\n var filteredData = originalData;\n if (isPresent(descriptor.aggregates)) {\n filteredData = filterBy(originalData, {\n field: descriptor.field,\n ignoreCase: false,\n operator: 'eq',\n value: group.value\n });\n aggregateResult = aggregateBy(filteredData, descriptor.aggregates);\n }\n result[group.__position] = {\n aggregates: aggregateResult,\n field: field,\n items: descriptors.length > 1 ?\n groupBy(group.items, descriptors.slice(1), identity, filteredData)\n : group.items,\n value: group.value\n };\n });\n });\n return result;\n};\n","var merge = function (data, left, middle, right, compare) {\n var leftLength = middle - left;\n var rightLength = right - middle;\n var temp = [];\n for (var idx = 0; idx < leftLength; idx++) {\n temp.push(data[left + idx]);\n }\n var cursor1 = 0;\n var cursor2 = middle;\n var dest = left;\n do {\n if (compare(data[cursor2], temp[cursor1]) < 0) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n else {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n } while (rightLength > 0 && leftLength > 0);\n while (leftLength) {\n data[dest++] = temp[cursor1++];\n leftLength--;\n }\n while (rightLength) {\n data[dest++] = data[cursor2++];\n rightLength--;\n }\n};\n/**\n * @hidden\n */\nexport var sort = function (data, start, end, compare) {\n if (end - start < 2) {\n return;\n }\n var mid = (start + end) >>> 1; // tslint:disable-line:no-bitwise\n sort(data, start, mid, compare);\n sort(data, mid, end, compare);\n merge(data, start, mid, end, compare);\n};\n","import { isPresent, isString } from './utils';\nimport { composeSortDescriptors } from './sorting/sort-array.operator';\nimport { groupBy, normalizeGroups } from './grouping/group.operators';\nimport { normalizeFilters } from './filtering/filter.operators';\nimport { compileFilter } from './filtering/filter-expression.factory';\nimport { exec, skip, take, filter, concat } from './transducers';\nimport { getter } from './accessor';\nimport { compose } from './funcs';\nimport { sort } from './sorting/sort';\n/**\n * Orders the specified array according to the provided sort descriptors.\n *\n * @param {T[]} data - The data to be sorted.\n * @param {SortDescriptor[]} descriptors - The descriptors by which the data will be sorted.\n * @returns {T[]} - The sorted data.\n *\n * @example\n * ```ts\n * import { orderBy } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = orderBy(data, [{ field: \"name\", dir: \"asc\" }]);\n * ```\n */\nexport var orderBy = function (data, descriptors) {\n if (descriptors.some(function (x) { return isPresent(x.dir); })) {\n data = data.slice(0);\n var comparer = composeSortDescriptors(descriptors);\n sort(data, 0, data.length, comparer);\n }\n return data;\n};\nvar defaultComparer = function (a, b) { return a === b; };\nvar normalizeComparer = function (comparer) {\n if (isString(comparer)) {\n var accessor_1 = getter(comparer);\n comparer = function (a, b) { return accessor_1(a) === accessor_1(b); };\n }\n return comparer;\n};\nvar _distinct = function (data, comparer) {\n return data.filter(function (x, idx, xs) { return xs.findIndex(comparer.bind(null, x)) === idx; });\n};\n/**\n * Reduces the provided array so it contains only unique values.\n *\n * @param {T[]} data - The array that will be reduced.\n * @param {(Comparer | string)} comparer - An optional custom comparer function or the field name that will be used for comparison.\n * @returns {T[]} - The reduced data.\n *\n * @example\n * ```ts\n * import { distinct } from '@progress/kendo-data-query';\n *\n * const data = [\n * { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" },\n * { name: \"Beef\", category: \"Food\", subcategory: \"Meat\" }\n * ];\n *\n * const result = distinct(data, \"subcategory\");\n *\n * // output:\n * // result => [\n * // { name: \"Pork\", category: \"Food\", subcategory: \"Meat\" },\n * // { name: \"Pepper\", category: \"Food\", subcategory: \"Vegetables\" }\n * // ];\n * ```\n */\nexport var distinct = function (data, comparer) {\n if (comparer === void 0) { comparer = defaultComparer; }\n return _distinct(data, normalizeComparer(comparer));\n};\n/**\n * @hidden\n */\nexport var count = function (data, predicate) {\n var counter = 0;\n for (var idx = 0, length_1 = data.length; idx < length_1; idx++) {\n if (predicate(data[idx])) {\n counter++;\n }\n }\n return counter;\n};\n/**\n * @hidden\n */\nexport var limit = function (data, predicate) {\n if (predicate) {\n return data.filter(predicate);\n }\n return data;\n};\n/**\n * Applies the specified operation descriptors to the data.\n *\n * @param {T[]} data - The data to be processed.\n * @param {State} state - The operation descriptors that will be applied to the data.\n * @returns {DataResult} - The processed data.\n *\n * @example\n * ```ts\n *\n * const result = process(data, {\n * skip: 10,\n * take: 20,\n * group: [{\n * field: 'category.categoryName',\n * aggregates: [\n * { aggregate: \"sum\", field: \"unitPrice\" },\n * { aggregate: \"sum\", field: \"unitsInStock\" }\n * ]\n * }],\n * sort: [{ field: 'productName', dir: 'desc' }],\n * filter: {\n * logic: \"or\",\n * filters: [\n * { field: \"discontinued\", operator: \"eq\", value: true },\n * { field: \"unitPrice\", operator: \"lt\", value: 22 }\n * ]\n * }\n * });\n *\n * ```\n */\nexport var process = function (data, state) {\n var skipCount = state.skip, takeCount = state.take, filterDescriptor = state.filter, sort = state.sort, group = state.group;\n var sortDescriptors = normalizeGroups(group || []).concat(sort || []);\n if (sortDescriptors.length) {\n data = orderBy(data, sortDescriptors);\n }\n var hasFilters = isPresent(filterDescriptor) && filter.length;\n var hasGroups = isPresent(group) && group.length;\n if (!hasFilters && !hasGroups) {\n return {\n data: takeCount ? data.slice(skipCount, skipCount + takeCount) : data,\n total: data.length\n };\n }\n var total;\n var transformers = [];\n var predicate;\n if (hasFilters) {\n predicate = compileFilter(normalizeFilters(filterDescriptor));\n total = count(data, predicate);\n transformers.push(filter(predicate));\n }\n else {\n total = data.length;\n }\n if (isPresent(skipCount) && isPresent(takeCount)) {\n transformers.push(skip(skipCount));\n transformers.push(take(takeCount));\n }\n if (transformers.length) {\n var transform = compose.apply(void 0, transformers);\n var result = hasGroups ?\n groupBy(data, group, transform, limit(data, predicate)) :\n exec(transform(concat), [], data);\n return { data: result, total: total };\n }\n return {\n data: hasGroups ? groupBy(data, group) : data,\n total: total\n };\n};\n","var defaultData = {\n en: {\n name: \"en\",\n identity: {\n version: {\n _unicodeVersion: \"14.0.0\",\n _cldrVersion: \"41\"\n },\n language: \"en\"\n },\n territory: \"US\",\n numbers: {\n symbols: {\n decimal: \".\",\n group: \",\",\n list: \";\",\n percentSign: \"%\",\n plusSign: \"+\",\n minusSign: \"-\",\n exponential: \"E\",\n superscriptingExponent: \"×\",\n perMille: \"‰\",\n infinity: \"∞\",\n nan: \"NaN\",\n timeSeparator: \":\",\n approximatelySign: \"~\"\n },\n decimal: {\n patterns: [\n \"n\"\n ],\n groupSize: [\n 3\n ]\n },\n scientific: {\n patterns: [\n \"nEn\"\n ],\n groupSize: []\n },\n percent: {\n patterns: [\n \"n%\"\n ],\n groupSize: [\n 3\n ]\n },\n currency: {\n patterns: [\n \"$n\"\n ],\n groupSize: [\n 3\n ],\n \"unitPattern-count-one\": \"n $\",\n \"unitPattern-count-other\": \"n $\"\n },\n currencies: {\n BGN: {\n displayName: \"Bulgarian Lev\",\n \"displayName-count-one\": \"Bulgarian lev\",\n \"displayName-count-other\": \"Bulgarian leva\",\n symbol: \"BGN\"\n },\n EUR: {\n displayName: \"Euro\",\n \"displayName-count-one\": \"euro\",\n \"displayName-count-other\": \"euros\",\n symbol: \"€\",\n \"symbol-alt-narrow\": \"€\"\n },\n USD: {\n displayName: \"US Dollar\",\n \"displayName-count-one\": \"US dollar\",\n \"displayName-count-other\": \"US dollars\",\n symbol: \"$\",\n \"symbol-alt-narrow\": \"$\"\n }\n },\n localeCurrency: \"USD\",\n accounting: {\n patterns: [\n \"$n\",\n \"($n)\"\n ],\n groupSize: [\n 3\n ]\n }\n },\n calendar: {\n gmtFormat: \"GMT{0}\",\n gmtZeroFormat: \"GMT\",\n patterns: {\n d: \"M/d/y\",\n D: \"EEEE, MMMM d, y\",\n m: \"MMM d\",\n M: \"MMMM d\",\n y: \"MMM y\",\n Y: \"MMMM y\",\n F: \"EEEE, MMMM d, y h:mm:ss a\",\n g: \"M/d/y h:mm a\",\n G: \"M/d/y h:mm:ss a\",\n t: \"h:mm a\",\n T: \"h:mm:ss a\",\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n },\n dateTimeFormats: {\n full: \"{1} 'at' {0}\",\n long: \"{1} 'at' {0}\",\n medium: \"{1}, {0}\",\n short: \"{1}, {0}\",\n availableFormats: {\n Bh: \"h B\",\n Bhm: \"h:mm B\",\n Bhms: \"h:mm:ss B\",\n d: \"d\",\n E: \"ccc\",\n EBhm: \"E h:mm B\",\n EBhms: \"E h:mm:ss B\",\n Ed: \"d E\",\n Ehm: \"E h:mm a\",\n EHm: \"E HH:mm\",\n Ehms: \"E h:mm:ss a\",\n EHms: \"E HH:mm:ss\",\n Gy: \"y G\",\n GyMd: \"M/d/y GGGGG\",\n GyMMM: \"MMM y G\",\n GyMMMd: \"MMM d, y G\",\n GyMMMEd: \"E, MMM d, y G\",\n h: \"h a\",\n H: \"HH\",\n hm: \"h:mm a\",\n Hm: \"HH:mm\",\n hms: \"h:mm:ss a\",\n Hms: \"HH:mm:ss\",\n hmsv: \"h:mm:ss a v\",\n Hmsv: \"HH:mm:ss v\",\n hmv: \"h:mm a v\",\n Hmv: \"HH:mm v\",\n M: \"L\",\n Md: \"M/d\",\n MEd: \"E, M/d\",\n MMM: \"LLL\",\n MMMd: \"MMM d\",\n MMMEd: \"E, MMM d\",\n MMMMd: \"MMMM d\",\n \"MMMMW-count-one\": \"'week' W 'of' MMMM\",\n \"MMMMW-count-other\": \"'week' W 'of' MMMM\",\n ms: \"mm:ss\",\n y: \"y\",\n yM: \"M/y\",\n yMd: \"M/d/y\",\n yMEd: \"E, M/d/y\",\n yMMM: \"MMM y\",\n yMMMd: \"MMM d, y\",\n yMMMEd: \"E, MMM d, y\",\n yMMMM: \"MMMM y\",\n yQQQ: \"QQQ y\",\n yQQQQ: \"QQQQ y\",\n \"yw-count-one\": \"'week' w 'of' Y\",\n \"yw-count-other\": \"'week' w 'of' Y\"\n }\n },\n timeFormats: {\n full: \"h:mm:ss a zzzz\",\n long: \"h:mm:ss a z\",\n medium: \"h:mm:ss a\",\n short: \"h:mm a\"\n },\n dateFormats: {\n full: \"EEEE, MMMM d, y\",\n long: \"MMMM d, y\",\n medium: \"MMM d, y\",\n short: \"M/d/yy\"\n },\n days: {\n format: {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Sun\",\n \"Mon\",\n \"Tue\",\n \"Wed\",\n \"Thu\",\n \"Fri\",\n \"Sat\"\n ],\n narrow: [\n \"S\",\n \"M\",\n \"T\",\n \"W\",\n \"T\",\n \"F\",\n \"S\"\n ],\n short: [\n \"Su\",\n \"Mo\",\n \"Tu\",\n \"We\",\n \"Th\",\n \"Fr\",\n \"Sa\"\n ],\n wide: [\n \"Sunday\",\n \"Monday\",\n \"Tuesday\",\n \"Wednesday\",\n \"Thursday\",\n \"Friday\",\n \"Saturday\"\n ]\n }\n },\n months: {\n format: {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Jan\",\n \"Feb\",\n \"Mar\",\n \"Apr\",\n \"May\",\n \"Jun\",\n \"Jul\",\n \"Aug\",\n \"Sep\",\n \"Oct\",\n \"Nov\",\n \"Dec\"\n ],\n narrow: [\n \"J\",\n \"F\",\n \"M\",\n \"A\",\n \"M\",\n \"J\",\n \"J\",\n \"A\",\n \"S\",\n \"O\",\n \"N\",\n \"D\"\n ],\n wide: [\n \"January\",\n \"February\",\n \"March\",\n \"April\",\n \"May\",\n \"June\",\n \"July\",\n \"August\",\n \"September\",\n \"October\",\n \"November\",\n \"December\"\n ]\n }\n },\n quarters: {\n format: {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n },\n \"stand-alone\": {\n abbreviated: [\n \"Q1\",\n \"Q2\",\n \"Q3\",\n \"Q4\"\n ],\n narrow: [\n \"1\",\n \"2\",\n \"3\",\n \"4\"\n ],\n wide: [\n \"1st quarter\",\n \"2nd quarter\",\n \"3rd quarter\",\n \"4th quarter\"\n ]\n }\n },\n dayPeriods: {\n format: {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n narrow: {\n midnight: \"mi\",\n am: \"a\",\n \"am-alt-variant\": \"am\",\n noon: \"n\",\n pm: \"p\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"in the morning\",\n afternoon1: \"in the afternoon\",\n evening1: \"in the evening\",\n night1: \"at night\"\n }\n },\n \"stand-alone\": {\n abbreviated: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n narrow: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n },\n wide: {\n midnight: \"midnight\",\n am: \"AM\",\n \"am-alt-variant\": \"am\",\n noon: \"noon\",\n pm: \"PM\",\n \"pm-alt-variant\": \"pm\",\n morning1: \"morning\",\n afternoon1: \"afternoon\",\n evening1: \"evening\",\n night1: \"night\"\n }\n }\n },\n eras: {\n format: {\n wide: {\n \"0\": \"Before Christ\",\n \"1\": \"Anno Domini\",\n \"0-alt-variant\": \"Before Common Era\",\n \"1-alt-variant\": \"Common Era\"\n },\n abbreviated: {\n \"0\": \"BC\",\n \"1\": \"AD\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n },\n narrow: {\n \"0\": \"B\",\n \"1\": \"A\",\n \"0-alt-variant\": \"BCE\",\n \"1-alt-variant\": \"CE\"\n }\n }\n },\n dateFields: {\n era: {\n wide: \"era\",\n short: \"era\",\n narrow: \"era\"\n },\n year: {\n wide: \"year\",\n short: \"yr.\",\n narrow: \"yr.\"\n },\n quarter: {\n wide: \"quarter\",\n short: \"qtr.\",\n narrow: \"qtr.\"\n },\n month: {\n wide: \"month\",\n short: \"mo.\",\n narrow: \"mo.\"\n },\n week: {\n wide: \"week\",\n short: \"wk.\",\n narrow: \"wk.\"\n },\n weekOfMonth: {\n wide: \"week of month\",\n short: \"wk. of mo.\",\n narrow: \"wk. of mo.\"\n },\n day: {\n wide: \"day\",\n short: \"day\",\n narrow: \"day\"\n },\n dayOfYear: {\n wide: \"day of year\",\n short: \"day of yr.\",\n narrow: \"day of yr.\"\n },\n weekday: {\n wide: \"day of the week\",\n short: \"day of wk.\",\n narrow: \"day of wk.\"\n },\n weekdayOfMonth: {\n wide: \"weekday of the month\",\n short: \"wkday. of mo.\",\n narrow: \"wkday. of mo.\"\n },\n dayperiod: {\n short: \"AM/PM\",\n wide: \"AM/PM\",\n narrow: \"AM/PM\"\n },\n hour: {\n wide: \"hour\",\n short: \"hr.\",\n narrow: \"hr.\"\n },\n minute: {\n wide: \"minute\",\n short: \"min.\",\n narrow: \"min.\"\n },\n second: {\n wide: \"second\",\n short: \"sec.\",\n narrow: \"sec.\"\n },\n zone: {\n wide: \"time zone\",\n short: \"zone\",\n narrow: \"zone\"\n },\n millisecond: {\n narrow: \"ms\",\n short: \"ms\",\n wide: \"millisecond\"\n }\n }\n }\n },\n supplemental: {\n likelySubtags: {\n en: \"en-Latn-US\"\n },\n currencyData: {\n region: {\n US: [\n {\n USD: {\n _from: \"1792-01-01\"\n }\n }\n ]\n }\n },\n weekData: {\n firstDay: {\n US: \"sun\"\n },\n weekendStart: {\n \"001\": \"sat\"\n },\n weekendEnd: {\n \"001\": \"sun\"\n }\n }\n }\n};\nexport default defaultData;","export default function isString(value) {\n return typeof value === \"string\";\n}","//The error is represented by unique name and corresponding message\n//The message can contain placeholders with index, e.g. {0}, {1}\n\nexport default {\n \"NoLocale\": \"Missing locale info for '{0}'\",\n \"NoCurrency\": \"Cannot determine currency information. Please load the locale currencies data.\",\n \"NoSupplementalCurrency\": \"Cannot determine currency. Please load the supplemental currencyData.\",\n \"NoCurrencyRegion\": \"No currency data for region '{0}'\",\n \"NoCurrencyDisplay\": \"Cannot determine currency display information. Please load the locale currencies data. The default culture does not include the all currencies data.\",\n \"NoGMTInfo\": \"Cannot determine locale GMT format. Please load the locale timeZoneNames data.\",\n \"NoWeekData\": \"Cannot determine locale first day of week. Please load the supplemental weekData.\",\n \"NoFirstDay\": \"Cannot determine locale first day of week. Please load the supplemental weekData. The default culture includes only the 'en-US' first day info.\",\n \"NoValidCurrency\": \"Cannot determine a default currency for the {0} locale. Please specify explicitly the currency with the format options.\",\n \"NoDateFieldNames\": \"Cannot determine the locale date field names. Please load the locale dateFields data.\"\n};\n","import errorDetails from './error-details';\n\nvar formatRegExp = /\\{(\\d+)}?\\}/g;\n\nvar IntlError = function IntlError(ref) {\n var name = ref.name;\n var message = ref.message;\n\n if (!name || !message) {\n throw new Error(\"{ name: string, message: string } object is required!\");\n }\n\n this.name = name;\n this.message = message;\n};\n\nIntlError.prototype.formatMessage = function formatMessage () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n var flattenValues = flatten(values);\n\n var formattedMessage = this.message.replace(formatRegExp, function(match, index) {\n return flattenValues[parseInt(index, 10)];\n });\n\n return ((this.name) + \": \" + formattedMessage);\n};\n\nIntlError.prototype.error = function error () {\n var values = [], len = arguments.length;\n while ( len-- ) values[ len ] = arguments[ len ];\n\n return new Error(this.formatMessage(values));\n};\n\nvar flatten = function(arr) {\n return arr.reduce(function (a, b) { return a.concat(b); }, []);\n};\n\nvar toIntlErrors = function(errors) {\n var predicate = function(prev, name) {\n prev[name] = new IntlError({ name: name, message: errors[name] });\n return prev;\n };\n\n return Object.keys(errors).reduce(predicate, {});\n};\n\nvar errors = toIntlErrors(errorDetails);\n\nexport {\n errors,\n IntlError,\n toIntlErrors\n};\n","import defaultData from './default-data';\nimport isString from '../common/is-string';\nimport { errors } from '../errors';\n\nfunction availableLocaleInfo(fullName, suffixes) {\n var parts = fullName.split(\"-\");\n var language = parts[0];\n var script = parts[1];\n var territory = parts[2];\n\n return cldr[fullName] || (suffixes.indexOf(territory) !== -1 && cldr[language + \"-\" + territory]) || (suffixes.indexOf(script) !== -1 && cldr[language + \"-\" + script]) || cldr[language];\n}\n\nfunction localeFullName(language, suffixes) {\n var likelySubtags = cldr.supplemental.likelySubtags;\n\n for (var idx = 0; idx < suffixes.length; idx++) {\n var name = likelySubtags[language + \"-\" + suffixes[idx ]];\n if (name) {\n return name;\n }\n }\n\n if (likelySubtags[language]) {\n return likelySubtags[language];\n }\n}\n\nexport var cldr = defaultData;\n\nexport function getLocaleInfo(locale) {\n var info;\n if (isString(locale)) {\n info = localeInfo(locale);\n } else {\n info = locale;\n }\n return info;\n}\n\nexport function localeInfo(locale) {\n if (cldr[locale]) {\n return cldr[locale];\n }\n\n var likelySubtags = cldr.supplemental.likelySubtags;\n if (likelySubtags) {\n var parts = locale.split(\"-\");\n var language = parts[0];\n var suffixes = parts.slice(1);\n var fullName = localeFullName(language, suffixes);\n var info = fullName ? availableLocaleInfo(fullName, suffixes) : null;\n if (info) {\n return info;\n }\n }\n\n throw errors.NoLocale.error(locale);\n}\n","export var DECIMAL = \"decimal\";\nexport var CURRENCY = \"currency\";\nexport var ACCOUNTING = \"accounting\";\nexport var PERCENT = \"percent\";\nexport var SCIENTIFIC = \"scientific\";\n\nexport var CURRENCY_PLACEHOLDER = \"$\";\nexport var PERCENT_PLACEHOLDER = \"%\";\nexport var NUMBER_PLACEHOLDER = \"n\";\n\nexport var LIST_SEPARATOR = \";\";\nexport var GROUP_SEPARATOR = \",\";\n\nexport var POINT = \".\";\nexport var EMPTY = \"\";\n\nexport var DEFAULT_LOCALE = \"en\";\n\n","import { cldr } from './info';\nimport { CURRENCY, ACCOUNTING, DECIMAL, CURRENCY_PLACEHOLDER, NUMBER_PLACEHOLDER, LIST_SEPARATOR, GROUP_SEPARATOR, POINT } from '../common/constants';\n\nvar LATIN_NUMBER_FORMATS = \"Formats-numberSystem-latn\";\nvar LATIN_NUMBER_SYMBOLS = \"symbols-numberSystem-latn\";\n\nvar patternRegExp = /([#,0.]+)/g;\nvar cldrCurrencyRegExp = /¤/g;\n\nfunction getPatterns(pattern) {\n patternRegExp.lastIndex = 0;\n\n return pattern.replace(cldrCurrencyRegExp, CURRENCY_PLACEHOLDER).replace(patternRegExp, NUMBER_PLACEHOLDER).split(LIST_SEPARATOR);\n}\n\nfunction getGroupSize(pattern) {\n patternRegExp.lastIndex = 0;\n\n var numberPatterns = patternRegExp.exec(pattern.split(LIST_SEPARATOR)[0])[0].split(POINT);\n var integer = numberPatterns[0];\n\n var groupSize = integer.split(GROUP_SEPARATOR).slice(1).map(function(group) {\n return group.length;\n }).reverse();\n\n return groupSize;\n}\n\nfunction loadCurrencyUnitPatterns(currencyInfo, currencyFormats) {\n for (var field in currencyFormats) {\n if (field.startsWith(\"unitPattern\")) {\n currencyInfo[field] = currencyFormats[field].replace(\"{0}\", NUMBER_PLACEHOLDER).replace(\"{1}\", CURRENCY_PLACEHOLDER);\n }\n }\n}\n\nexport default function loadNumbersInfo(locale, info) {\n var localeInfo = cldr[locale];\n var numbers = localeInfo.numbers = localeInfo.numbers || {};\n numbers.symbols = numbers.symbols || {};\n for (var field in info) {\n if (field === LATIN_NUMBER_SYMBOLS) {\n Object.assign(numbers.symbols, info[field]);\n } else if (field.includes(LATIN_NUMBER_FORMATS)) {\n var style = field.substr(0, field.indexOf(LATIN_NUMBER_FORMATS));\n var pattern = info[field].standard;\n numbers[style] = {\n patterns: getPatterns(pattern)\n };\n if (style === CURRENCY) {\n numbers[style].groupSize = getGroupSize((info[DECIMAL + LATIN_NUMBER_FORMATS] || info[field]).standard);\n loadCurrencyUnitPatterns(numbers[style], info[field]);\n numbers[ACCOUNTING] = {\n patterns: getPatterns(info[field][ACCOUNTING]),\n groupSize: numbers[style].groupSize\n };\n } else {\n numbers[style].groupSize = getGroupSize(pattern);\n }\n } else if (field === \"currencies\") {\n numbers.currencies = info[field];\n }\n }\n}","import { cldr } from './info';\n\nvar predefinedDatePatterns = {\n s: \"yyyy'-'MM'-'dd'T'HH':'mm':'ss\",\n u: \"yyyy'-'MM'-'dd HH':'mm':'ss'Z'\"\n};\n\nvar YEAR_REGEX = /y+/g;\nvar SHORT_DATE = [ [ \"dateFormats\", \"short\" ] ];\n\nvar datePatterns = {\n D: [ [ \"dateFormats\", \"full\" ] ],\n m: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMd\" ] ],\n M: [ [ \"dateTimeFormats\", \"availableFormats\", \"MMMMd\" ] ],\n y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMM\" ] ],\n Y: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMMMM\" ] ],\n F: [ [ \"dateFormats\", \"full\" ], [ \"timeFormats\", \"medium\" ] ],\n g: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"short\" ] ],\n G: [ [ \"dateTimeFormats\", \"availableFormats\", \"yMd\" ], [ \"timeFormats\", \"medium\" ] ],\n t: [ [ \"timeFormats\", \"short\" ] ],\n T: [ [ \"timeFormats\", \"medium\" ] ]\n};\n\nfunction toArray(obj) {\n var result = [];\n var names = Object.getOwnPropertyNames(obj);\n for (var idx = 0; idx < names.length; idx++) {\n var value = obj[names[idx]];\n result.push(value);\n }\n return result;\n}\n\nfunction getCalendarNames(info, isObj) {\n var result = {};\n for (var formatType in info) {\n var names = result[formatType] = {};\n for (var format in info[formatType]) {\n var formats = info[formatType][format];\n names[format] = isObj ? formats : toArray(formats);\n }\n }\n return result;\n}\n\nfunction getEraNames(eras) {\n var result = {};\n var format = result.format = {};\n var eraNameMap = {\n eraAbbr: \"abbreviated\",\n eraNames: \"wide\",\n eraNarrow: \"narrow\"\n };\n\n for (var eraFormatName in eras) {\n var formatName = eraNameMap[eraFormatName];\n format[formatName] = eras[eraFormatName];\n }\n\n return result;\n}\n\nfunction loadCalendarNames(locale, calendar) {\n var localeCalendar = cldr[locale].calendar;\n localeCalendar.days = getCalendarNames(calendar.days);\n localeCalendar.months = getCalendarNames(calendar.months);\n localeCalendar.quarters = getCalendarNames(calendar.quarters);\n localeCalendar.dayPeriods = getCalendarNames(calendar.dayPeriods, true);\n\n localeCalendar.eras = getEraNames(calendar.eras);\n}\n\nfunction loadCalendarDateFields(locale, fields) {\n var localeCalendar = cldr[locale].calendar;\n var dateFields = {};\n\n for (var field in fields) {\n var ref = field.split('-');\n var fieldName = ref[0];\n var formatType = ref[1]; if ( formatType === void 0 ) formatType = 'wide';\n var fieldInfo = dateFields[fieldName] || {};\n var displayName = fields[field].displayName;\n\n if (!displayName) { continue; }\n\n fieldInfo[formatType] = displayName;\n dateFields[fieldName] = fieldInfo;\n }\n\n localeCalendar.dateFields = dateFields;\n}\n\nfunction getPredefinedFormat(paths, calendar) {\n var result = [];\n\n for (var pathIdx = 0; pathIdx < paths.length; pathIdx++) {\n var fields = paths[ pathIdx ];\n var pattern = calendar;\n for (var idx = 0; idx < fields.length; idx++) {\n pattern = pattern[fields[idx]];\n }\n result.push(pattern);\n }\n\n return result.join(\" \");\n}\n\nfunction loadCalendarPatterns(locale, calendar) {\n var cldrCalendar = cldr[locale].calendar;\n var patterns = cldrCalendar.patterns = {};\n\n patterns.d = getPredefinedFormat(SHORT_DATE, calendar).replace(YEAR_REGEX, 'y');\n\n for (var pattern in datePatterns) {\n patterns[pattern] = getPredefinedFormat(datePatterns[pattern], calendar);\n }\n\n for (var pattern$1 in predefinedDatePatterns) {\n patterns[pattern$1] = predefinedDatePatterns[pattern$1];\n }\n\n var dateTimeFormats = calendar.dateTimeFormats;\n cldrCalendar.dateTimeFormats = {\n full: dateTimeFormats.full,\n long: dateTimeFormats.long,\n medium: dateTimeFormats.medium,\n short: dateTimeFormats.short,\n availableFormats: dateTimeFormats.availableFormats\n };\n cldrCalendar.timeFormats = calendar.timeFormats;\n cldrCalendar.dateFormats = calendar.dateFormats;\n}\n\n\nexport default function loadCalendarInfo(locale, info) {\n var calendar = cldr[locale].calendar = cldr[locale].calendar || {};\n for (var field in info) {\n if (field === \"timeZoneNames\") {\n calendar.gmtFormat = info[field].gmtFormat;\n calendar.gmtZeroFormat = info[field].gmtZeroFormat;\n } else if (field === \"calendars\" && info[field].gregorian) {\n loadCalendarPatterns(locale, info[field].gregorian);\n loadCalendarNames(locale, info[field].gregorian);\n } else if (field === \"fields\") {\n loadCalendarDateFields(locale, info.fields);\n }\n }\n}\n","import { cldr } from './info';\n\nfunction territoryFromName(name, identity) {\n var likelySubtags = cldr.supplemental.likelySubtags;\n var parts = name.split(\"-\");\n if (likelySubtags) {\n var likelyName = likelySubtags[name] || likelySubtags[parts[0]];\n if (likelyName) {\n parts = likelyName.split(\"-\");\n }\n }\n\n if (identity) {\n for (var idx = parts.length - 1; idx >= 1; idx--) {\n var part = parts[idx];\n if (part === identity.variant || part === identity.script) {\n parts.splice(idx, 1);\n }\n }\n }\n\n var length = parts.length;\n\n if (length > 1) {\n var territory = parts[length - 1];\n return territory.toUpperCase();\n }\n}\n\nexport default function localeTerritory(info) {\n if (info.territory) {\n return info.territory;\n }\n\n var name = info.name;\n var identity = info.identity;\n var territory;\n\n if (identity && identity.territory) {\n territory = identity.territory;\n } else {\n territory = territoryFromName(name, identity);\n }\n\n info.territory = territory;\n\n return territory;\n}\n","var MILLISECOND = 'duration-millisecond';\nvar UNIT_PATTERN_ONE = 'unitPattern-count-one';\nvar UNIT_PATTERN_OTHER = 'unitPattern-count-other';\nvar placeholderPattern = /\\{0\\}\\s?/;\n\nfunction extractUnit(unit) {\n var value = unit[UNIT_PATTERN_ONE] || unit[UNIT_PATTERN_OTHER];\n return value.replace(placeholderPattern, '');\n}\n\nexport default function loadUnits(localeInfo, units) {\n localeInfo.calendar.dateFields.millisecond = {\n narrow: extractUnit(units.narrow[MILLISECOND]),\n short: extractUnit(units.short[MILLISECOND]),\n wide: extractUnit(units.long[MILLISECOND])\n };\n}\n","import { cldr } from './info';\nimport loadNumbersInfo from './load-numbers';\nimport loadCalendarInfo from './load-dates';\nimport localeTerritory from './territory';\nimport loadUnits from './load-units';\n\nfunction loadLocale(locale, info) {\n for (var field in info) {\n if (field === \"numbers\") {\n loadNumbersInfo(locale, info[field]);\n } else if (field === \"dates\") {\n loadCalendarInfo(locale, info[field]);\n }\n }\n}\n\nexport default function load() {\n var arguments$1 = arguments;\n\n var length = arguments.length;\n for (var idx = 0; idx < length; idx++) {\n var entry = arguments$1[idx];\n if (entry.main) {\n var locale = Object.keys(entry.main)[0];\n var info = entry.main[locale];\n var localeInfo = cldr[locale] = cldr[locale] || {};\n\n if (info.units) {\n loadUnits(localeInfo, info.units);\n } else {\n localeInfo.name = localeInfo.name || locale;\n localeInfo.identity = localeInfo.identity || info.identity;\n\n localeTerritory(localeInfo);\n loadLocale(locale, info);\n }\n } else if (entry.supplemental) {\n if (entry.supplemental.weekData) {\n cldr.supplemental.weekData = {\n firstDay: entry.supplemental.weekData.firstDay,\n weekendStart: entry.supplemental.weekData.weekendStart,\n weekendEnd: entry.supplemental.weekData.weekendEnd\n };\n } else if (entry.supplemental.likelySubtags) {\n cldr.supplemental.likelySubtags = Object.assign(cldr.supplemental.likelySubtags, entry.supplemental.likelySubtags);\n } else if (entry.supplemental.currencyData) {\n var currencyData = cldr.supplemental.currencyData;\n currencyData.region = Object.assign(currencyData.region || {}, entry.supplemental.currencyData.region);\n currencyData.fractions = Object.assign(currencyData.fractions || {}, entry.supplemental.currencyData.fractions);\n }\n }\n }\n}\n","import { localeInfo } from './info';\nimport { errors } from '../errors';\nimport { DEFAULT_LOCALE } from '../common/constants';\n\nexport default function dateFieldName(options, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n var info = localeInfo(locale);\n var dateFields = info.calendar.dateFields;\n if (!dateFields) {\n throw errors.NoDateFieldNames.error();\n }\n\n var fieldNameInfo = dateFields[options.type] || {};\n\n return fieldNameInfo[options.nameType] || fieldNameInfo['wide'];\n}\n","import { getLocaleInfo } from './info';\nimport { EMPTY } from '../common/constants';\n\nfunction lowerArray(arr) {\n var result = [];\n for (var idx = 0; idx < arr.length; idx++) {\n result.push(arr[idx].toLowerCase());\n }\n return result;\n}\n\nfunction lowerObject(obj) {\n var result = {};\n for (var field in obj) {\n result[field] = obj[field].toLowerCase();\n }\n return result;\n}\n\nfunction cloneLower(obj) {\n var result = Array.isArray(obj) ? lowerArray(obj) : lowerObject(obj);\n return result;\n}\n\nexport default function dateFormatNames(locale, options) {\n var type = options.type;\n var nameType = options.nameType;\n var standAlone = options.standAlone;\n var lower = options.lower;\n var info = getLocaleInfo(locale);\n var formatType = standAlone ? \"stand-alone\" : \"format\";\n var lowerNameType = (lower ? \"lower-\" : EMPTY) + nameType;\n var formatNames = info.calendar[type][formatType];\n var result = formatNames[lowerNameType];\n if (!result && lower) {\n result = formatNames[lowerNameType] = cloneLower(formatNames[nameType]);\n }\n return result;\n}","export default function parseRangeDate(value) {\n var parts = value.split('-');\n var year = parseInt(parts[0], 10);\n var month = parseInt(parts[1], 10) - 1;\n var day = parseInt(parts[2], 10);\n\n return new Date(year, month, day);\n}\n","import { cldr, getLocaleInfo } from './info';\nimport { errors } from '../errors';\nimport localeTerritory from './territory';\nimport parseRangeDate from './parse-range-date';\n\n/* eslint-disable consistent-return */\n\nvar NoCurrency = errors.NoCurrency;\nvar NoCurrencyDisplay = errors.NoCurrencyDisplay;\nvar NoSupplementalCurrency = errors.NoSupplementalCurrency;\nvar NoCurrencyRegion = errors.NoCurrencyRegion;\nvar NoValidCurrency = errors.NoValidCurrency;\n\nvar DEFAULT_CURRENCY_FRACTIONS = 2;\nvar SYMBOL = \"symbol\";\nvar INVALID_CURRENCY_CODE = 'XXX';\n\nvar GLOBAL_CURRENCIES = {\n '001': 'USD', // 001 refers to world. not sure if it is correct to assume USD but seems better than throw an error\n '150': 'EUR' // 150 territory for Europe\n\n};\n\nfunction getCurrencyInfo(locale, currency, throwIfNoValid) {\n var info = getLocaleInfo(locale);\n var currencies = info.numbers.currencies;\n if (!currencies) {\n if (throwIfNoValid) {\n throw NoCurrency.error();\n }\n\n return;\n }\n\n var currencyDisplayInfo = currencies[currency];\n\n if (!currencyDisplayInfo) {\n if (throwIfNoValid) {\n throw NoCurrencyDisplay.error();\n }\n\n return;\n }\n\n return currencyDisplayInfo;\n}\n\nfunction lengthComparer(a, b) {\n return b.length - a.length;\n}\n\nfunction regionCurrency(regionCurrencies) {\n var latestValidUntil, latestValidUntilRange;\n var latestStillValid, latestStillValidDate;\n\n for (var idx = 0; idx < regionCurrencies.length; idx++) {\n var currency = regionCurrencies[idx];\n var code = Object.keys(currency)[0];\n var info = currency[code];\n if (code !== INVALID_CURRENCY_CODE && info._tender !== 'false' && info._from) {\n if (!info._to) {\n var stillValidDate = parseRangeDate(info._from);\n if (!latestStillValidDate || latestStillValidDate < stillValidDate) {\n latestStillValid = code;\n latestStillValidDate = stillValidDate;\n }\n } else if (!latestStillValid) {\n var validFrom = parseRangeDate(info._from);\n var validTo = parseRangeDate(info._to);\n if (!latestValidUntilRange || latestValidUntilRange.to < validTo || latestValidUntilRange.from < validFrom) {\n latestValidUntil = code;\n latestValidUntilRange = {\n from: validFrom,\n to: validTo\n };\n }\n }\n }\n }\n\n return latestStillValid || latestValidUntil;\n}\n\nexport function currencyDisplays(locale, currency, throwIfNoValid) {\n if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n var currencyInfo = getCurrencyInfo(locale, currency, throwIfNoValid);\n if (!currencyInfo) {\n return;\n }\n\n if (!currencyInfo.displays) {\n var displays = [ currency ];\n for (var field in currencyInfo) {\n displays.push(currencyInfo[field]);\n }\n displays.sort(lengthComparer);\n currencyInfo.displays = displays;\n }\n\n return currencyInfo.displays;\n}\n\nexport function currencyDisplay(locale, options) {\n var value = options.value;\n var currency = options.currency;\n var currencyDisplay = options.currencyDisplay; if ( currencyDisplay === void 0 ) currencyDisplay = SYMBOL;\n\n if (currencyDisplay === \"code\") {\n return currency;\n }\n\n var currencyInfo = getCurrencyInfo(locale, currency, true);\n var result;\n\n if (currencyDisplay === SYMBOL) {\n result = currencyInfo[\"symbol-alt-narrow\"] || currencyInfo[SYMBOL];\n } else {\n if (typeof value === \"undefined\" || value !== 1) {\n result = currencyInfo[\"displayName-count-other\"];\n } else {\n result = currencyInfo[\"displayName-count-one\"];\n }\n }\n\n return result;\n}\n\nexport function currencyFractionOptions(code) {\n var minimumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n var maximumFractionDigits = DEFAULT_CURRENCY_FRACTIONS;\n\n var fractions = ((cldr.supplemental.currencyData || {}).fractions || {})[code];\n\n if (fractions && fractions._digits) {\n maximumFractionDigits = minimumFractionDigits = parseInt(fractions._digits, 10);\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nexport function territoryCurrencyCode(territory, throwIfNoValid) {\n if ( throwIfNoValid === void 0 ) throwIfNoValid = true;\n\n if (GLOBAL_CURRENCIES[territory]) {\n return GLOBAL_CURRENCIES[territory];\n }\n\n var currencyData = cldr.supplemental.currencyData;\n if (!currencyData) {\n if (throwIfNoValid) {\n throw NoSupplementalCurrency.error();\n }\n\n return;\n }\n\n var regionCurrencies = currencyData.region[territory];\n\n if (!regionCurrencies) {\n if (throwIfNoValid) {\n throw NoCurrencyRegion.error(territory);\n }\n\n return;\n }\n\n var currencyCode = regionCurrency(regionCurrencies);\n\n return currencyCode;\n}\n\nexport function localeCurrency(locale, throwIfNoValid) {\n var info = getLocaleInfo(locale);\n var numbers = info.numbers;\n\n if (!numbers.localeCurrency) {\n var currency = territoryCurrencyCode(localeTerritory(info), throwIfNoValid);\n\n if (!currency && throwIfNoValid) {\n throw NoValidCurrency.error(info.name);\n }\n\n numbers.localeCurrency = currency;\n }\n\n return numbers.localeCurrency;\n}\n","\nexport var DAYS_OF_WEEK = [ \"sun\", \"mon\", \"tue\", \"wed\", \"thu\", \"fri\", \"sat\" ];\n\nexport var DEFAULT_TERRITORY = '001';\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\nvar NoFirstDay = errors.NoFirstDay;\n\nexport default function firstDay(locale) {\n var info = getLocaleInfo(locale);\n\n if (!isNaN(info.firstDay)) {\n return info.firstDay;\n }\n\n var weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n var firstDay = weekData.firstDay[localeTerritory(info)] || weekData.firstDay[DEFAULT_TERRITORY];\n\n if (!firstDay) {\n throw NoFirstDay.error();\n }\n\n info.firstDay = DAYS_OF_WEEK.indexOf(firstDay);\n\n return info.firstDay;\n}\n","import { cldr, getLocaleInfo } from './info';\nimport localeTerritory from './territory';\n\nimport { DAYS_OF_WEEK, DEFAULT_TERRITORY } from './constants';\nimport { errors } from '../errors';\n\nvar NoWeekData = errors.NoWeekData;\n\nexport default function weekendRange(locale) {\n var info = getLocaleInfo(locale);\n\n if (info.weekendRange) {\n return info.weekendRange;\n }\n\n var weekData = cldr.supplemental.weekData;\n if (!weekData) {\n throw NoWeekData.error();\n }\n\n var territory = localeTerritory(info);\n var start = weekData.weekendStart[territory] || weekData.weekendStart[DEFAULT_TERRITORY];\n var end = weekData.weekendEnd[territory] || weekData.weekendEnd[DEFAULT_TERRITORY];\n\n info.weekendRange = {\n start: DAYS_OF_WEEK.indexOf(start),\n end: DAYS_OF_WEEK.indexOf(end)\n };\n\n return info.weekendRange;\n}\n","import { getLocaleInfo } from './info';\n\nexport default function numberSymbols(locale) {\n var info = getLocaleInfo(locale);\n\n return info.numbers.symbols;\n}","export default function isNegativeZero(value) {\n return (1 / value === -Infinity);\n}\n","import { currencyDisplay, localeCurrency } from '../cldr';\n\nexport default function formatCurrencySymbol(info, options) {\n if ( options === void 0 ) options = {};\n\n if (!options.currency) {\n options.currency = localeCurrency(info, true);\n }\n\n var display = currencyDisplay(info, options);\n\n return display;\n}\n","export default function groupInteger(number, start, end, options, info) {\n var symbols = info.numbers.symbols;\n var decimalIndex = number.indexOf(symbols.decimal);\n var groupSizes = options.groupSize.slice();\n var groupSize = groupSizes.shift();\n\n var integerEnd = decimalIndex !== -1 ? decimalIndex : end + 1;\n\n var integer = number.substring(start, integerEnd);\n var result = number;\n var integerLength = integer.length;\n\n if (integerLength >= groupSize) {\n var idx = integerLength;\n var parts = [];\n\n while (idx > -1) {\n var value = integer.substring(idx - groupSize, idx);\n if (value) {\n parts.push(value);\n }\n idx -= groupSize;\n var newGroupSize = groupSizes.shift();\n groupSize = newGroupSize !== undefined ? newGroupSize : groupSize;\n\n if (groupSize === 0) {\n value = integer.substring(0, idx);\n if (value) {\n parts.push(value);\n }\n break;\n }\n }\n\n integer = parts.reverse().join(symbols.group);\n result = number.substring(0, start) + integer + number.substring(integerEnd);\n }\n\n return result;\n}","import { CURRENCY, ACCOUNTING } from '../common/constants';\n\nexport default function isCurrencyStyle(style) {\n return style === CURRENCY || style === ACCOUNTING;\n}","export default function pad(number, digits, right) {\n if ( digits === void 0 ) digits = 2;\n if ( right === void 0 ) right = false;\n\n var count = digits - String(number).length;\n var result = number;\n\n if (count > 0) {\n var padString = new Array(count + 1).join(\"0\");\n result = right ? number + padString : padString + number;\n }\n\n return result;\n}","var MAX_PRECISION = 20;\n\nexport default function round(value, precision) {\n var result = value;\n var decimals = precision || 0;\n\n result = result.toString().split('e');\n result = Math.round(Number(result[0] + 'e' + (result[1] ? (Number(result[1]) + decimals) : decimals)));\n\n result = result.toString().split('e');\n result = Number(result[0] + 'e' + (result[1] ? (Number(result[1]) - decimals) : -decimals));\n\n return result.toFixed(Math.min(decimals, MAX_PRECISION));\n}","import { PERCENT, SCIENTIFIC, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, EMPTY, POINT } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport formatCurrencySymbol from './format-currency-symbol';\nimport groupInteger from './group-integer';\nimport isCurrencyStyle from './is-currency-style';\nimport pad from '../common/pad';\nimport round from '../common/round';\nimport { currencyFractionOptions } from '../cldr';\n\nvar DEFAULT_DECIMAL_ROUNDING = 3;\nvar DEFAULT_PERCENT_ROUNDING = 0;\n\nvar trailingZeroRegex = /0+$/;\n\nfunction fractionOptions(options) {\n var minimumFractionDigits = options.minimumFractionDigits;\n var maximumFractionDigits = options.maximumFractionDigits;\n var style = options.style;\n var isCurrency = isCurrencyStyle(style);\n var currencyFractions;\n if (isCurrency) {\n currencyFractions = currencyFractionOptions(options.currency);\n }\n\n if (minimumFractionDigits === undefined) {\n minimumFractionDigits = isCurrency ? currencyFractions.minimumFractionDigits : 0;\n }\n\n if (maximumFractionDigits === undefined) {\n if (style === PERCENT) {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_PERCENT_ROUNDING);\n } else if (isCurrency) {\n maximumFractionDigits = Math.max(minimumFractionDigits, currencyFractions.maximumFractionDigits);\n } else {\n maximumFractionDigits = Math.max(minimumFractionDigits, DEFAULT_DECIMAL_ROUNDING);\n }\n }\n\n return {\n minimumFractionDigits: minimumFractionDigits,\n maximumFractionDigits: maximumFractionDigits\n };\n}\n\nfunction applyPattern(value, pattern, symbol) {\n var result = EMPTY;\n for (var idx = 0, length = pattern.length; idx < length; idx++) {\n var ch = pattern.charAt(idx);\n\n if (ch === NUMBER_PLACEHOLDER) {\n result += value;\n } else if (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) {\n result += symbol;\n } else {\n result += ch;\n }\n }\n return result;\n}\n\nfunction currencyUnitPattern(info, value) {\n var currencyInfo = info.numbers.currency;\n var pattern = value !== 1 ? currencyInfo[\"unitPattern-count-other\"] : currencyInfo[\"unitPattern-count-one\"];\n if (value < 0) {\n pattern = pattern.replace(NUMBER_PLACEHOLDER, (\"-\" + NUMBER_PLACEHOLDER));\n }\n\n return pattern;\n}\n\n\nexport default function standardNumberFormat(number, options, info) {\n var symbols = info.numbers.symbols;\n var style = options.style;\n var isCurrency = isCurrencyStyle(style);\n\n //return number in exponential format\n if (style === SCIENTIFIC) {\n var exponential = options.minimumFractionDigits !== undefined ? number.toExponential(options.minimumFractionDigits) : number.toExponential();\n return exponential.replace(POINT, symbols.decimal);\n }\n\n var value = number;\n var symbol;\n\n if (isCurrency) {\n options.value = value;\n symbol = formatCurrencySymbol(info, options);\n }\n\n if (style === PERCENT) {\n value *= 100;\n symbol = symbols.percentSign;\n }\n\n var ref = fractionOptions(options);\n var minimumFractionDigits = ref.minimumFractionDigits;\n var maximumFractionDigits = ref.maximumFractionDigits;\n\n value = round(value, maximumFractionDigits);\n\n var negative = value < 0;\n var negativeZero = isNegativeZero(number);\n\n var parts = value.split(POINT);\n\n var integer = parts[0];\n var fraction = pad(parts[1] ? parts[1].replace(trailingZeroRegex, EMPTY) : EMPTY, minimumFractionDigits, true);\n\n //exclude \"-\" if number is negative.\n if (negative) {\n integer = integer.substring(1);\n }\n\n if (options.minimumIntegerDigits) {\n integer = pad(integer, options.minimumIntegerDigits);\n }\n\n var formattedValue = options.useGrouping !== false ? groupInteger(integer, 0, integer.length, options, info) : integer;\n\n if (fraction) {\n formattedValue += symbols.decimal + fraction;\n }\n\n var pattern;\n\n if (isCurrency && options.currencyDisplay === \"name\") {\n pattern = currencyUnitPattern(info, number);\n } else {\n var patterns = options.patterns;\n pattern = (negative || negativeZero) ? patterns[1] || (\"-\" + patterns[0]) : patterns[0];\n }\n\n if (pattern === NUMBER_PLACEHOLDER && !negative) {\n return formattedValue;\n }\n\n var result = applyPattern(formattedValue, pattern, symbol);\n\n return result;\n}","import { PERCENT_PLACEHOLDER, CURRENCY_PLACEHOLDER, CURRENCY, PERCENT, EMPTY } from '../common/constants';\nimport formatCurrencySymbol from './format-currency-symbol';\n\nvar literalRegExp = /(\\\\.)|(['][^']*[']?)|([\"][^\"]*[\"]?)/g;\nvar PLACEHOLDER = \"__??__\";\n\nexport function setStyleOptions(formatOptions, info) {\n var format = formatOptions.format;\n\n //multiply number if the format has percent\n if (format.indexOf(PERCENT_PLACEHOLDER) !== -1) {\n formatOptions.style = PERCENT;\n formatOptions.symbol = info.numbers.symbols.percentSign;\n formatOptions.number *= 100;\n }\n\n if (format.indexOf(CURRENCY_PLACEHOLDER) !== -1) {\n formatOptions.style = CURRENCY;\n formatOptions.symbol = formatCurrencySymbol(info);\n }\n}\n\nexport function setFormatLiterals(formatOptions) {\n var format = formatOptions.format;\n if (format.indexOf(\"'\") > -1 || format.indexOf(\"\\\"\") > -1 || format.indexOf(\"\\\\\") > -1) {\n var literals = formatOptions.literals = [];\n formatOptions.format = format.replace(literalRegExp, function(match) {\n var quoteChar = match.charAt(0).replace(\"\\\\\", EMPTY);\n var literal = match.slice(1).replace(quoteChar, EMPTY);\n\n literals.push(literal);\n\n return PLACEHOLDER;\n });\n }\n}\n\nexport function replaceLiterals(number, literals) {\n var result = number;\n if (literals) {\n var length = literals.length;\n for (var idx = 0; idx < length; idx++) {\n result = result.replace(PLACEHOLDER, literals[idx]);\n }\n }\n return result;\n}","import { CURRENCY, PERCENT, LIST_SEPARATOR, GROUP_SEPARATOR, CURRENCY_PLACEHOLDER, PERCENT_PLACEHOLDER, POINT, EMPTY } from '../common/constants';\nimport isNegativeZero from '../common/is-negative-zero';\nimport groupInteger from './group-integer';\nimport round from '../common/round';\nimport { setStyleOptions, setFormatLiterals, replaceLiterals } from './utils';\n\nvar SHARP = \"#\";\nvar ZERO = \"0\";\n\nvar trailingZerosRegExp = /(\\.(?:[0-9]*[1-9])?)0+$/g;\nvar trailingPointRegExp = /\\.$/;\nvar commaRegExp = /,/g;\n\nfunction trimTrailingZeros(value, lastZero) {\n var trimRegex;\n\n if (lastZero === 0) {\n trimRegex = trailingZerosRegExp;\n } else {\n trimRegex = new RegExp((\"(\\\\.[0-9]{\" + lastZero + \"}[1-9]*)0+$\"), 'g');\n }\n\n return value.replace(trimRegex, '$1').replace(trailingPointRegExp, EMPTY);\n}\n\nfunction roundNumber(formatOptions) {\n var number = formatOptions.number;\n var format = formatOptions.format;\n var decimalIndex = format.indexOf(POINT);\n\n if (decimalIndex !== -1) {\n var zeroIndex = format.lastIndexOf(ZERO) - decimalIndex;\n var sharpIndex = format.lastIndexOf(SHARP) - decimalIndex;\n var hasZero = zeroIndex > -1;\n var hasSharp = sharpIndex > -1;\n var fraction = number.toString().split(\"e\");\n\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\n var precision = fraction.length;\n var trailingZeros = -1;\n\n if (!hasZero && !hasSharp) {\n formatOptions.format = format.substring(0, decimalIndex) + format.substring(decimalIndex + 1);\n decimalIndex = -1;\n precision = 0;\n } else if (hasZero && zeroIndex > sharpIndex) {\n precision = zeroIndex;\n } else if (sharpIndex > zeroIndex) {\n if (hasSharp && precision > sharpIndex) {\n precision = sharpIndex;\n } else if (hasZero && precision < zeroIndex) {\n precision = zeroIndex;\n }\n\n trailingZeros = hasZero ? zeroIndex : 0;\n }\n\n if (precision > -1) {\n number = round(number, precision);\n if (trailingZeros > -1) {\n number = trimTrailingZeros(number, trailingZeros);\n }\n }\n } else {\n number = round(number);\n }\n\n if (formatOptions.negative && (number * -1) >= 0 && !formatOptions.negativeZero) {\n formatOptions.negative = false;\n }\n\n formatOptions.number = number;\n formatOptions.decimalIndex = decimalIndex;\n}\n\nfunction isConstantFormat(format) {\n return format.indexOf(SHARP) === -1 && format.indexOf(ZERO) === -1;\n}\n\nfunction setValueSpecificFormat(formatOptions) {\n var number = formatOptions.number;\n var format = formatOptions.format;\n format = format.split(LIST_SEPARATOR);\n if ((formatOptions.negative || formatOptions.negativeZero) && format[1]) {\n format = format[1];\n formatOptions.hasNegativeFormat = true;\n } else if (number === 0) {\n var zeroFormat = format[2];\n format = zeroFormat || format[0];\n if (zeroFormat && isConstantFormat(zeroFormat)) {\n formatOptions.constant = zeroFormat;\n }\n } else {\n format = format[0];\n }\n\n formatOptions.format = format;\n}\n\nfunction setGroupOptions(formatOptions) {\n formatOptions.hasGroup = formatOptions.format.indexOf(GROUP_SEPARATOR) > -1;\n if (formatOptions.hasGroup) {\n formatOptions.format = formatOptions.format.replace(commaRegExp, EMPTY);\n }\n}\n\nfunction placeholderIndex(index1, index2, start) {\n var index;\n if (index1 === -1 && index2 !== -1) {\n index = index2;\n } else if (index1 !== -1 && index2 === -1) {\n index = index1;\n } else {\n index = start ? Math.min(index1, index2) : Math.max(index1, index2);\n }\n return index;\n}\n\nfunction setPlaceholderIndices(formatOptions) {\n var format = formatOptions.format;\n var sharpIndex = format.indexOf(SHARP);\n var zeroIndex = format.indexOf(ZERO);\n\n var start = placeholderIndex(sharpIndex, zeroIndex, true);\n\n sharpIndex = format.lastIndexOf(SHARP);\n zeroIndex = format.lastIndexOf(ZERO);\n\n var end = placeholderIndex(sharpIndex, zeroIndex);\n\n if (start === format.length) {\n end = start;\n }\n\n formatOptions.start = start;\n formatOptions.end = end;\n formatOptions.lastZeroIndex = zeroIndex;\n}\n\nfunction replaceStyleSymbols(number, style, symbol) {\n var result = number;\n if (style === CURRENCY || style === PERCENT) {\n result = EMPTY;\n for (var idx = 0, length = number.length; idx < length; idx++) {\n var ch = number.charAt(idx);\n result += (ch === CURRENCY_PLACEHOLDER || ch === PERCENT_PLACEHOLDER) ? symbol : ch;\n }\n }\n return result;\n}\n\nfunction replacePlaceHolders(formatOptions, info) {\n var start = formatOptions.start;\n var end = formatOptions.end;\n var negative = formatOptions.negative;\n var negativeZero = formatOptions.negativeZero;\n var format = formatOptions.format;\n var decimalIndex = formatOptions.decimalIndex;\n var lastZeroIndex = formatOptions.lastZeroIndex;\n var hasNegativeFormat = formatOptions.hasNegativeFormat;\n var hasGroup = formatOptions.hasGroup;\n var number = formatOptions.number;\n var value = number.toString().split(POINT);\n var length = format.length;\n var integer = value[0];\n var fraction = value[1] || EMPTY;\n var integerLength = integer.length;\n var replacement = EMPTY;\n\n number = format.substring(0, start);\n\n if ((negative || negativeZero) && !hasNegativeFormat) {\n number += \"-\";\n }\n\n for (var idx = start; idx < length; idx++) {\n var ch = format.charAt(idx);\n\n if (decimalIndex === -1) {\n if (end - idx < integerLength) {\n\n number += integer;\n break;\n }\n } else {\n if (lastZeroIndex !== -1 && lastZeroIndex < 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 ? info.numbers.symbols.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)), info.numbers.decimal, info);\n }\n\n if (end >= start) {\n number += format.substring(end + 1);\n }\n\n return number;\n}\n\nfunction applyCustomFormat(formatOptions, info) {\n var number = formatOptions.number;\n if (formatOptions.start !== -1) {\n number = replacePlaceHolders(formatOptions, info);\n number = replaceStyleSymbols(number, formatOptions.style, formatOptions.symbol);\n number = replaceLiterals(number, formatOptions.literals);\n }\n\n return number;\n}\n\nexport default function customNumberFormat(number, format, info) {\n var formatOptions = {\n negative: number < 0,\n number: Math.abs(number),\n negativeZero: isNegativeZero(number),\n format: format\n };\n\n setValueSpecificFormat(formatOptions);\n\n if (formatOptions.constant) {\n return formatOptions.constant;\n }\n\n setFormatLiterals(formatOptions);\n setStyleOptions(formatOptions, info);\n setGroupOptions(formatOptions);\n roundNumber(formatOptions);\n setPlaceholderIndices(formatOptions);\n\n return applyCustomFormat(formatOptions, info);\n}","import { CURRENCY, ACCOUNTING, DECIMAL, PERCENT, SCIENTIFIC } from '../common/constants';\nimport isString from '../common/is-string';\n\nvar standardFormatRegExp = /^(n|c|p|e|a)(\\d*)$/i;\n\nfunction standardFormatOptions(format) {\n var formatAndPrecision = standardFormatRegExp.exec(format);\n\n if (formatAndPrecision) {\n var options = {\n style: DECIMAL\n };\n\n var style = formatAndPrecision[1].toLowerCase();\n\n if (style === \"c\") {\n options.style = CURRENCY;\n } else if (style === \"a\") {\n options.style = ACCOUNTING;\n } else if (style === \"p\") {\n options.style = PERCENT;\n } else if (style === \"e\") {\n options.style = SCIENTIFIC;\n }\n\n if (formatAndPrecision[2]) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseInt(formatAndPrecision[2], 10);\n }\n\n return options;\n }\n}\n\nexport default function formatOptions(format) {\n var options;\n if (isString(format)) {\n options = standardFormatOptions(format);\n } else {\n options = format;\n }\n\n return options;\n}","import { localeInfo } from '../cldr';\nimport { DECIMAL, DEFAULT_LOCALE, NUMBER_PLACEHOLDER, EMPTY } from '../common/constants';\nimport standardNumberFormat from './standard-number-format';\nimport customNumberFormat from './custom-number-format';\nimport formatOptions from './format-options';\n\nexport default function formatNumber(number, format, locale) {\n if ( format === void 0 ) format = NUMBER_PLACEHOLDER;\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (number === undefined || number === null) {\n return EMPTY;\n }\n\n if (!isFinite(number)) {\n return String(number);\n }\n\n var info = localeInfo(locale);\n var options = formatOptions(format);\n\n var result;\n if (options) {\n var style = options.style || DECIMAL;\n result = standardNumberFormat(number, Object.assign({}, info.numbers[style], options), info);\n } else {\n result = customNumberFormat(number, format, info);\n }\n\n return result;\n}\n","export default function isNumber(value) {\n return typeof value === \"number\";\n}","import { localeInfo, localeCurrency, currencyDisplays } from '../cldr';\nimport { PERCENT, NUMBER_PLACEHOLDER, CURRENCY_PLACEHOLDER, DEFAULT_LOCALE, EMPTY, POINT } from '../common/constants';\nimport { setStyleOptions, setFormatLiterals } from './utils';\nimport isNumber from '../common/is-number';\nimport isCurrencyStyle from './is-currency-style';\nimport formatOptions from './format-options';\nimport isString from '../common/is-string';\n\nvar exponentRegExp = /[eE][-+]?[0-9]+/;\nvar nonBreakingSpaceRegExp = /\\u00A0/g;\n\nfunction cleanNegativePattern(number, patterns) {\n if (patterns.length > 1) {\n var parts = (patterns[1] || EMPTY).replace(CURRENCY_PLACEHOLDER, EMPTY).split(NUMBER_PLACEHOLDER);\n if (number.indexOf(parts[0]) > -1 && number.indexOf(parts[1]) > -1) {\n return number.replace(parts[0], EMPTY).replace(parts[1], EMPTY);\n }\n }\n}\n\nfunction cleanCurrencyNumber(value, info, format) {\n var options = formatOptions(format) || {};\n var isCurrency = isCurrencyStyle(options.style);\n var number = value;\n var negative;\n\n var currency = options.currency || localeCurrency(info, isCurrency);\n\n if (currency) {\n var displays = currencyDisplays(info, currency, isCurrency);\n if (displays) {\n for (var idx = 0; idx < displays.length; idx++) {\n var display = displays[idx];\n if (number.includes(display)) {\n number = number.replace(display, EMPTY);\n isCurrency = true;\n break;\n }\n }\n }\n\n if (isCurrency) {\n var cleanNumber = cleanNegativePattern(number, info.numbers.currency.patterns) ||\n cleanNegativePattern(number, info.numbers.accounting.patterns);\n\n if (cleanNumber) {\n negative = true;\n number = cleanNumber;\n }\n\n }\n }\n\n return {\n number: number,\n negative: negative\n };\n}\n\nfunction cleanLiterals(number, formatOptions) {\n var literals = formatOptions.literals;\n var result = number;\n\n if (literals) {\n for (var idx = 0; idx < literals.length; idx++) {\n result = result.replace(literals[idx], EMPTY);\n }\n }\n\n return result;\n}\n\nfunction divideBy100(number) {\n var strNumber = String(number);\n var pointIndex = strNumber.indexOf(POINT);\n var zeroesCount = 2;\n var result = number / Math.pow(10, zeroesCount);\n\n if (pointIndex === -1 || String(result).length <= strNumber.length + zeroesCount) {\n return result;\n }\n\n var fractionDigits = strNumber.length - pointIndex + 1 + zeroesCount;\n return parseFloat(result.toFixed(fractionDigits));\n}\n\nexport default function parseNumber(value, locale, format) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n if ( format === void 0 ) format = {};\n\n if (!value && value !== 0) {\n return null;\n }\n\n if (isNumber(value)) {\n return value;\n }\n\n var info = localeInfo(locale);\n var symbols = info.numbers.symbols;\n\n var number = value.toString();\n var formatOptions = format || {};\n var isPercent;\n\n if (isString(format)) {\n formatOptions = { format: format };\n setFormatLiterals(formatOptions);\n number = cleanLiterals(number, formatOptions);\n\n setStyleOptions(formatOptions, info);\n }\n\n if (formatOptions.style === PERCENT || number.indexOf(symbols.percentSign) > -1) {\n number = number.replace(symbols.percentSign, EMPTY);\n isPercent = true;\n }\n\n if (exponentRegExp.test(number)) {\n number = parseFloat(number.replace(symbols.decimal, POINT));\n return isNaN(number) ? null : number;\n }\n\n var ref = cleanCurrencyNumber(number, info, formatOptions);\n var negativeCurrency = ref.negative;\n var currencyNumber = ref.number;\n number = String(currencyNumber).trim();\n\n var negativeSignIndex = number.indexOf(\"-\");\n if (negativeSignIndex > 0) {\n return null;\n }\n\n var isNegative = negativeSignIndex > -1;\n\n isNegative = negativeCurrency !== undefined ? negativeCurrency : isNegative;\n\n number = number.replace(\"-\", EMPTY)\n .replace(nonBreakingSpaceRegExp, \" \")\n .split(symbols.group.replace(nonBreakingSpaceRegExp, \" \")).join(EMPTY)\n .replace(symbols.decimal, POINT);\n\n number = parseFloat(number);\n\n if (isNaN(number)) {\n number = null;\n } else if (isNegative) {\n number *= -1;\n }\n\n if (number && isPercent) {\n number = divideBy100(number);\n }\n\n return number;\n}\n","var formatRegExp = /\\{(\\d+)}/g;\n\nexport default function formatString(format) {\n var values = arguments;\n\n return format.replace(formatRegExp, function (match, index) {\n var value = values[parseInt(index, 10) + 1];\n\n return value;\n });\n}","import formatString from '../common/format-string';\nimport isString from '../common/is-string';\nimport { EMPTY } from '../common/constants';\n\nvar REMOVAL_PENALTY = 120;\nvar ADDITION_PENALTY = 20;\nvar LENGHT_DELTA = [ 2, 1, 5, 3, 4 ];\nvar LONG_LESS_PENALTY_DELTA = -2;\nvar SHORT_LESS_PENALTY_DELTA = -1;\nvar SHORT_MORE_PENALTY_DELTA = 1;\nvar LONG_MORE_PENALTY_DELTA = 2;\n\nvar PENALTIES = {};\nPENALTIES[LONG_LESS_PENALTY_DELTA.toString()] = 8;\nPENALTIES[SHORT_LESS_PENALTY_DELTA.toString()] = 6;\nPENALTIES[LONG_MORE_PENALTY_DELTA.toString()] = 6;\nPENALTIES[SHORT_MORE_PENALTY_DELTA.toString()] = 3;\n\nvar VALUE_FORMAT_LENGTH = {\n numeric: 1,\n \"2-digit\": 2,\n short: 3,\n long: 4,\n narrow: 5\n};\n\nvar TIME_SPECIFIERS_REGEX = /[hHmsSzZoOvVxX]/;\n\nfunction getHourSpecifier(options) {\n return options.hour12 ? \"h\" : \"H\";\n}\n\nvar DATE_OPTIONS_MAP = [ {\n key: \"era\",\n specifier: \"G\"\n}, {\n key: \"year\",\n specifier: \"y\"\n}, {\n key: \"month\",\n specifier: \"M\"\n}, {\n key: \"day\",\n specifier: \"d\"\n}, {\n key: \"weekday\",\n specifier: \"E\"\n}, {\n key: \"hour\",\n getSpecifier: getHourSpecifier\n}, {\n key: \"minute\",\n specifier: \"m\"\n}, {\n key: \"second\",\n specifier: \"s\"\n}, {\n key: \"timeZoneName\",\n specifier: \"z\"\n} ];\n\nvar STAND_ALONE_SPECIFIERS = {\n e: 'c',\n E: 'c',\n M: 'L',\n Q: 'q'\n};\n\nvar specifiersRegex = {};\nvar resolvedFormats = {};\n\nfunction getSpecifierRegex(specifier) {\n if (!specifiersRegex[specifier]) {\n specifiersRegex[specifier] = new RegExp(specifier + \"+\");\n }\n return specifiersRegex[specifier];\n}\n\nfunction skeletonSpecifiers(skeleton) {\n var result = [];\n var current = skeleton.charAt(0);\n var specifier = current;\n for (var idx = 1; idx < skeleton.length; idx++) {\n var character = skeleton.charAt(idx);\n if (character === specifier) {\n current += character;\n } else {\n result.push(current);\n current = specifier = character;\n }\n }\n\n result.push(current);\n\n return result;\n}\n\nfunction findBestMatch(specifiers, availableFormats) {\n var specifiersLength = specifiers.length;\n var maxScore = -Number.MAX_VALUE;\n var bestMatches, result;\n for (var format in availableFormats) {\n var matches = [];\n var currentFormat = format.replace(\"v\", \"z\");\n var score = 0;\n for (var idx = 0; idx < specifiersLength; idx++) {\n var specifier = specifiers[idx];\n var specifierRegex = getSpecifierRegex(specifier[0]);\n var match = (specifierRegex.exec(currentFormat) || [])[0];\n\n if (!match) {\n score -= REMOVAL_PENALTY;\n } else {\n currentFormat = currentFormat.replace(match, EMPTY);\n if (match.length !== specifier.length) {\n var delta = Math.max(Math.min(LENGHT_DELTA[match.length] - LENGHT_DELTA[specifier.length], 2), -2);\n score -= PENALTIES[delta];\n }\n }\n\n matches.push(match);\n\n if (score < maxScore) {\n break;\n }\n }\n\n if (currentFormat.length) {\n score -= skeletonSpecifiers(currentFormat).length * ADDITION_PENALTY;\n }\n\n if (score > maxScore) {\n maxScore = score;\n bestMatches = matches;\n result = availableFormats[format];\n }\n }\n\n result = result.replace(\"v\", \"z\");\n\n for (var idx$1 = 0; idx$1 < specifiersLength; idx$1++) {\n var bestMatch = bestMatches[idx$1];\n if (bestMatch && bestMatch !== specifiers[idx$1]) {\n var matchSpecifier = bestMatches[idx$1][0];\n result = result.replace(getSpecifierRegex(matchSpecifier), specifiers[idx$1]);\n if (STAND_ALONE_SPECIFIERS[matchSpecifier]) {\n result = result.replace(getSpecifierRegex(STAND_ALONE_SPECIFIERS[matchSpecifier]), specifiers[idx$1]);\n }\n }\n }\n\n return result;\n}\n\nfunction cacheFormat(skeleton, format, locale) {\n if (!resolvedFormats[locale]) {\n resolvedFormats[locale] = {};\n }\n resolvedFormats[locale][skeleton] = format;\n}\n\n\nfunction skeletonFormat(skeleton, info) {\n var availableFormats = info.calendar.dateTimeFormats.availableFormats;\n if (availableFormats[skeleton]) {\n return availableFormats[skeleton];\n }\n if (resolvedFormats[info.name] && resolvedFormats[info.name][skeleton]) {\n return resolvedFormats[info.name][skeleton];\n }\n var timeStartIndex = skeleton.search(TIME_SPECIFIERS_REGEX);\n var result;\n if (timeStartIndex > 0) {\n var dateSkeleton = skeleton.substr(0, timeStartIndex);\n var timeSkeleton = skeleton.substr(timeStartIndex);\n\n result = formatString(info.calendar.dateTimeFormats.short, //should be deterimed based on specifiers\n availableFormats[timeSkeleton] || findBestMatch(skeletonSpecifiers(timeSkeleton), availableFormats),\n availableFormats[dateSkeleton] || findBestMatch(skeletonSpecifiers(dateSkeleton), availableFormats));\n } else {\n result = findBestMatch(skeletonSpecifiers(skeleton), availableFormats);\n }\n\n cacheFormat(skeleton, result, info.name);\n return result;\n}\n\nfunction skeletonFromOptions(options) {\n var result = [];\n for (var idx = 0; idx < DATE_OPTIONS_MAP.length; idx++) {\n var option = DATE_OPTIONS_MAP[idx];\n var field = option.key;\n var value = options[field];\n if (value) {\n var spcifier = option.specifier || option.getSpecifier(options);\n result.push(spcifier.repeat(VALUE_FORMAT_LENGTH[value]));\n }\n }\n\n return result.join(EMPTY);\n}\n\nexport default function datePattern(format, info) {\n var calendar = info.calendar;\n var result;\n if (isString(format)) {\n if (calendar.patterns[format]) {\n result = calendar.patterns[format];\n } else {\n result = format;\n }\n } else if (format) {\n if (format.pattern) {\n return format.pattern;\n }\n\n var skeleton = format.skeleton;\n if (!skeleton) {\n if (format.datetime) {\n result = formatString(calendar.dateTimeFormats[format.datetime], calendar.timeFormats[format.datetime], calendar.dateFormats[format.datetime]);\n } else if (format.date) {\n result = calendar.dateFormats[format.date];\n } else if (format.time) {\n result = calendar.timeFormats[format.time];\n } else {\n skeleton = skeletonFromOptions(format);\n }\n }\n\n if (skeleton) {\n result = skeletonFormat(skeleton, info);\n }\n }\n\n if (!result) {\n result = calendar.patterns.d;\n }\n\n return result;\n}\n","export default function dateNameType(formatLength) {\n var nameType;\n if (formatLength <= 3) {\n nameType = \"abbreviated\";\n } else if (formatLength === 4) {\n nameType = \"wide\";\n } else if (formatLength === 5) {\n nameType = \"narrow\";\n } else if (formatLength === 6) {\n nameType = \"short\";\n }\n\n return nameType;\n}","import dateFormatNames from '../cldr/date-format-names';\nimport dateNameType from './date-name-type';\n\nexport default function formatNames(locale, type, formatLength, standAlone, lower) {\n return dateFormatNames(locale, {\n type: type,\n nameType: dateNameType(formatLength),\n standAlone: standAlone,\n lower: lower\n });\n}","function isFunction(fun) {\n return typeof(fun) === 'function';\n}\n\nexport default function isDate(value) {\n return Boolean(value) && isFunction(value.getTime) && isFunction(value.getMonth);\n}\n","var MONTH = 'month';\nvar HOUR = 'hour';\nvar ZONE = 'zone';\nvar WEEKDAY = 'weekday';\nvar QUARTER = 'quarter';\n\nvar DATE_FIELD_MAP = {\n 'G': 'era',\n 'y': 'year',\n 'q': QUARTER,\n 'Q': QUARTER,\n 'M': MONTH,\n 'L': MONTH,\n 'd': 'day',\n 'E': WEEKDAY,\n 'c': WEEKDAY,\n 'e': WEEKDAY,\n 'h': HOUR,\n 'H': HOUR,\n 'k': HOUR,\n 'K': HOUR,\n 'm': 'minute',\n 's': 'second',\n 'S': 'millisecond',\n 'a': 'dayperiod',\n 'x': ZONE,\n 'X': ZONE,\n 'z': ZONE,\n 'Z': ZONE\n};\n\nvar dateFormatRegExp = /d{1,2}|E{1,6}|e{1,6}|c{3,6}|c{1}|M{1,5}|L{1,5}|y{1,4}|H{1,2}|h{1,2}|k{1,2}|K{1,2}|m{1,2}|a{1,5}|s{1,2}|S{1,3}|z{1,4}|Z{1,5}|x{1,5}|X{1,5}|G{1,5}|q{1,5}|Q{1,5}|\"[^\"]*\"|'[^']*'/g;\n\nexport { dateFormatRegExp, DATE_FIELD_MAP };","import { localeInfo, firstDay } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport formatString from '../common/format-string';\nimport datePattern from './date-pattern';\nimport formatNames from './format-names';\nimport pad from '../common/pad';\nimport isDate from '../common/is-date';\nimport { dateFormatRegExp } from './constants';\n\nfunction formatDayOfWeekIndex(day, formatLength, localeInfo) {\n var firstDayIndex = firstDay(localeInfo);\n var dayIndex;\n if (day < firstDayIndex) {\n dayIndex = 7 - firstDayIndex + day;\n } else {\n dayIndex = day - firstDayIndex;\n }\n\n return dayIndex + 1;\n}\n\nfunction formatMonth(month, formatLength, info, standAlone) {\n if (formatLength <= 2) {\n return pad(month + 1, formatLength);\n }\n return formatNames(info, \"months\", formatLength, standAlone)[month];\n}\n\nfunction formatQuarter(date, formatLength, info, standAlone) {\n var quarter = Math.floor(date.getMonth() / 3);\n if (formatLength < 3) {\n return quarter + 1;\n }\n\n return formatNames(info, \"quarters\", formatLength, standAlone)[quarter];\n}\n\n\nfunction formatTimeZone(date, info, options) {\n var shortHours = options.shortHours;\n var optionalMinutes = options.optionalMinutes;\n var separator = options.separator;\n var localizedName = options.localizedName;\n var zZeroOffset = options.zZeroOffset;\n var offset = date.getTimezoneOffset() / 60;\n if (offset === 0 && zZeroOffset) {\n return \"Z\";\n }\n var sign = offset <= 0 ? \"+\" : \"-\";\n var hoursMinutes = Math.abs(offset).toString().split(\".\");\n var minutes = hoursMinutes[1] || 0;\n var result = sign + (shortHours ? hoursMinutes[0] : pad(hoursMinutes[0], 2));\n if (minutes || !optionalMinutes) {\n result += (separator ? \":\" : EMPTY) + pad(minutes, 2);\n }\n\n if (localizedName) {\n var localizedFormat = offset === 0 ? info.calendar.gmtZeroFormat : info.calendar.gmtFormat;\n result = formatString(localizedFormat, result);\n }\n\n return result;\n}\n\nfunction formatDayOfWeek(date, formatLength, info, standAlone) {\n var result;\n if (formatLength < 3) {\n result = formatDayOfWeekIndex(date.getDay(), formatLength, info);\n } else {\n result = formatNames(info, \"days\", formatLength, standAlone)[date.getDay()];\n }\n return result;\n}\n\nvar formatters = {};\n\nformatters.d = function(date, formatLength) {\n return pad(date.getDate(), formatLength);\n};\n\nformatters.E = function(date, formatLength, info) {\n return formatNames(info, \"days\", formatLength)[date.getDay()];\n};\n\nformatters.M = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, false);\n};\n\nformatters.L = function(date, formatLength, info) {\n return formatMonth(date.getMonth(), formatLength, info, true);\n};\n\nformatters.y = function(date, formatLength) {\n var year = date.getFullYear();\n if (formatLength === 2) {\n year = year % 100;\n }\n return pad(year, formatLength);\n};\n\nformatters.h = function(date, formatLength) {\n var hours = date.getHours() % 12 || 12;\n return pad(hours, formatLength);\n};\n\nformatters.H = function(date, formatLength) {\n return pad(date.getHours(), formatLength);\n};\n\nformatters.k = function(date, formatLength) {\n return pad(date.getHours() || 24, formatLength);\n};\n\nformatters.K = function(date, formatLength) {\n return pad(date.getHours() % 12, formatLength);\n};\n\nformatters.m = function(date, formatLength) {\n return pad(date.getMinutes(), formatLength);\n};\n\nformatters.s = function(date, formatLength) {\n return pad(date.getSeconds(), formatLength);\n};\n\nformatters.S = function(date, formatLength) {\n var milliseconds = date.getMilliseconds();\n var result;\n if (milliseconds !== 0) {\n result = pad(String(milliseconds / 1000).split(\".\")[1].substr(0, formatLength), formatLength, true);\n } else {\n result = pad(EMPTY, formatLength);\n }\n return result;\n};\n\nformatters.a = function(date, formatLength, info) {\n return formatNames(info, \"dayPeriods\", formatLength)[date.getHours() < 12 ? \"am\" : \"pm\"];\n};\n\nformatters.z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n shortHours: formatLength < 4,\n optionalMinutes: formatLength < 4,\n separator: true,\n localizedName: true\n });\n};\n\nformatters.Z = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n separator: formatLength > 3,\n localizedName: formatLength === 4,\n zZeroOffset: formatLength === 5\n });\n};\n\nformatters.x = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5\n });\n};\n\nformatters.X = function(date, formatLength, info) {\n return formatTimeZone(date, info, {\n optionalMinutes: formatLength === 1,\n separator: formatLength === 3 || formatLength === 5,\n zZeroOffset: true\n });\n};\n\nformatters.G = function(date, formatLength, info) {\n var era = date.getFullYear() >= 0 ? 1 : 0;\n return formatNames(info, \"eras\", formatLength)[era];\n};\n\nformatters.e = formatDayOfWeek;\n\nformatters.c = function(date, formatLength, info) {\n return formatDayOfWeek(date, formatLength, info, true);\n};\n\nformatters.q = function(date, formatLength, info) {\n return formatQuarter(date, formatLength, info, true);\n};\n\nformatters.Q = formatQuarter;\n\nexport default function formatDate(date, format, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (!isDate(date)) {\n if (date === undefined || date === null) {\n return EMPTY;\n }\n return date;\n }\n\n var info = localeInfo(locale);\n var pattern = datePattern(format, info);\n\n return pattern.replace(dateFormatRegExp, function(match) {\n var formatLength = match.length;\n var result;\n\n if (match.includes(\"'\") || match.includes(\"\\\"\")) {\n result = match.slice(1, formatLength - 1);\n } else {\n result = formatters[match[0]](date, formatLength, info);\n }\n\n return result;\n });\n}\n","export function convertTimeZone(date, fromOffset, toOffset) {\n var fromLocalOffset = date.getTimezoneOffset();\n\n var offsetDate = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n\n var toLocalOffset = offsetDate.getTimezoneOffset();\n\n return new Date(offsetDate.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n}\n\nexport function adjustDST(date, hours) {\n if (!hours && date.getHours() === 23) {\n date.setHours(date.getHours() + 2);\n }\n}","import { adjustDST, convertTimeZone } from './time-utils';\nimport { localeInfo } from '../cldr';\nimport { DEFAULT_LOCALE, EMPTY } from '../common/constants';\nimport { errors } from '../errors';\nimport formatNames from './format-names';\nimport datePattern from './date-pattern';\nimport round from '../common/round';\nimport isDate from '../common/is-date';\n\nvar timeZoneOffsetRegExp = /([+|-]\\d{1,2})(:?)(\\d{2})?/;\nvar dateRegExp = /^\\/Date\\((.*?)\\)\\/$/;\nvar offsetRegExp = /[+-]\\d*/;\nvar numberRegExp = {\n 2: /^\\d{1,2}/,\n 3: /^\\d{1,3}/,\n 4: /^\\d{4}/\n};\nvar numberRegex = /\\d+/;\nvar PLACEHOLDER = \"{0}\";\n\nvar leadingSpacesRegex = /^ */;\nvar trailingSpacesRegex = / *$/;\n\nvar standardDateFormats = [\n \"yyyy/MM/dd HH:mm:ss\",\n \"yyyy/MM/dd HH:mm\",\n \"yyyy/MM/dd\",\n \"E MMM dd yyyy HH:mm:ss\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSXXX\",\n \"yyyy-MM-ddTHH:mm:ssXXX\",\n \"yyyy-MM-ddTHH:mm:ss.SSSSSSS\",\n \"yyyy-MM-ddTHH:mm:ss.SSS\",\n \"yyyy-MM-ddTHH:mmXXX\",\n \"yyyy-MM-ddTHH:mmX\",\n \"yyyy-MM-ddTHH:mm:ss\",\n \"yyyy-MM-ddTHH:mm\",\n \"yyyy-MM-dd HH:mm:ss\",\n \"yyyy-MM-dd HH:mm\",\n \"yyyy-MM-dd\",\n \"HH:mm:ss\",\n \"HH:mm\"\n];\nvar FORMATS_SEQUENCE = [ \"G\", \"g\", \"F\", \"Y\", \"y\", \"M\", \"m\", \"D\", \"d\", \"y\", \"T\", \"t\" ];\nvar TWO_DIGIT_YEAR_MAX = 2029;\n\nfunction outOfRange(value, start, end) {\n return !(value >= start && value <= end);\n}\n\nfunction lookAhead(match, state) {\n var format = state.format;\n var idx = state.idx;\n var i = 0;\n while (format[idx] === match) {\n i++;\n idx++;\n }\n if (i > 0) {\n idx -= 1;\n }\n state.idx = idx;\n return i;\n}\n\nfunction getNumber(size, state) {\n var regex = size ? (numberRegExp[size] || new RegExp('^\\\\d{1,' + size + '}')) : numberRegex,\n match = state.value.substr(state.valueIdx, size).match(regex);\n\n if (match) {\n match = match[0];\n state.valueIdx += match.length;\n return parseInt(match, 10);\n }\n return null;\n}\n\nfunction getIndexByName(names, state, 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 = state.value.substr(state.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 state.valueIdx += matchLength;\n return matchIdx + 1;\n }\n\n return null;\n}\n\nfunction checkLiteral(state) {\n var result = false;\n if (state.value.charAt(state.valueIdx) === state.format[state.idx]) {\n state.valueIdx++;\n result = true;\n }\n return result;\n}\n\nfunction calendarGmtFormats(calendar) {\n var gmtFormat = calendar.gmtFormat;\n var gmtZeroFormat = calendar.gmtZeroFormat;\n if (!gmtFormat) {\n throw errors.NoGMTInfo.error();\n }\n\n return [ gmtFormat.replace(PLACEHOLDER, EMPTY).toLowerCase(), gmtZeroFormat.replace(PLACEHOLDER, EMPTY).toLowerCase() ];\n}\n\nfunction parseTimeZoneOffset(state, info, options) {\n var shortHours = options.shortHours;\n var noSeparator = options.noSeparator;\n var optionalMinutes = options.optionalMinutes;\n var localizedName = options.localizedName;\n var zLiteral = options.zLiteral;\n state.UTC = true;\n\n if (zLiteral && state.value.charAt(state.valueIdx) === \"Z\") {\n state.valueIdx++;\n return false;\n }\n\n if (localizedName && !getIndexByName(calendarGmtFormats(info.calendar), state, true)) {\n return true;\n }\n\n var matches = timeZoneOffsetRegExp.exec(state.value.substr(state.valueIdx, 6));\n if (!matches) {\n return !localizedName;\n }\n\n var hoursMatch = matches[1];\n var minutesMatch = matches[3];\n var hoursOffset = parseInt(hoursMatch, 10);\n var separator = matches[2];\n var minutesOffset = parseInt(minutesMatch, 10);\n\n if (isNaN(hoursOffset) || (!shortHours && hoursMatch.length !== 3) || (!optionalMinutes && isNaN(minutesOffset)) || (noSeparator && separator)) {\n return true;\n }\n\n if (isNaN(minutesOffset)) {\n minutesOffset = null;\n }\n\n if (outOfRange(hoursOffset, -12, 13) || (minutesOffset && outOfRange(minutesOffset, 0, 59))) {\n return true;\n }\n\n state.valueIdx += matches[0].length;\n state.hoursOffset = hoursOffset;\n state.minutesOffset = minutesOffset;\n}\n\nfunction parseMonth(ch, state, info) {\n var count = lookAhead(ch, state);\n var names = formatNames(info, \"months\", count, ch === \"L\", true);\n\n var month = count < 3 ? getNumber(2, state) : getIndexByName(names, state, true);\n\n if (month === null || outOfRange(month, 1, 12)) {\n return true;\n }\n state.month = month - 1;\n}\n\nfunction parseDayOfWeek(ch, state, info) {\n var count = lookAhead(ch, state);\n var names = formatNames(info, \"days\", count, ch === \"c\", true);\n var dayOfWeek = count < 3 ? getNumber(1, state) : getIndexByName(names, state, true);\n if ((!dayOfWeek && dayOfWeek !== 0) || outOfRange(dayOfWeek, 1, 7)) {\n return true;\n }\n}\n\nvar parsers = {};\n\nparsers.d = function(state) {\n lookAhead(\"d\", state);\n var day = getNumber(2, state);\n\n if (day === null || outOfRange(day, 1, 31)) {\n return true;\n }\n\n if (state.day === null) {\n state.day = day;\n }\n};\n\nparsers.E = function(state, info) {\n var count = lookAhead(\"E\", state);\n //validate if it matches the day?\n var dayOfWeek = getIndexByName(formatNames(info, \"days\", count, false, true), state, true);\n if (dayOfWeek === null) {\n return true;\n }\n};\n\nparsers.M = function(state, info) {\n return parseMonth(\"M\", state, info);\n};\n\nparsers.L = function(state, info) {\n return parseMonth(\"L\", state, info);\n};\n\nparsers.y = function(state) {\n var count = lookAhead(\"y\", state);\n var year = getNumber(count === 1 ? undefined : count, state);\n\n if (year === null) {\n return true;\n }\n\n if (count === 2) {\n var currentYear = new Date().getFullYear();\n year = (currentYear - currentYear % 100) + year;\n if (year > TWO_DIGIT_YEAR_MAX) {\n year -= 100;\n }\n }\n\n state.year = year;\n};\n\nparsers.h = function(state) {\n lookAhead(\"h\", state);\n\n var hours = getNumber(2, state);\n if (hours === 12) {\n hours = 0;\n }\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.K = function(state) {\n lookAhead(\"K\", state);\n\n var hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 0, 11)) {\n return true;\n }\n\n state.hours = hours;\n};\n\nparsers.a = function(state, info) {\n var count = lookAhead(\"a\", state);\n var periodFormats = formatNames(info, \"dayPeriods\", count, false, true);\n\n var pmHour = getIndexByName([ periodFormats.pm ], state, true);\n if (!pmHour && !getIndexByName([ periodFormats.am ], state, true)) {\n return true;\n }\n\n state.pmHour = pmHour;\n};\n\nparsers.H = function(state) {\n lookAhead(\"H\", state);\n var hours = getNumber(2, state);\n if (hours === null || outOfRange(hours, 0, 23)) {\n return true;\n }\n state.hours = hours;\n};\n\nparsers.k = function(state) {\n lookAhead(\"k\", state);\n\n var hours = getNumber(2, state);\n\n if (hours === null || outOfRange(hours, 1, 24)) {\n return true;\n }\n\n state.hours = hours === 24 ? 0 : hours;\n};\n\nparsers.m = function(state) {\n lookAhead(\"m\", state);\n var minutes = getNumber(2, state);\n\n if (minutes === null || outOfRange(minutes, 0, 59)) {\n return true;\n }\n\n state.minutes = minutes;\n};\n\nparsers.s = function(state) {\n lookAhead(\"s\", state);\n var seconds = getNumber(2, state);\n if (seconds === null || outOfRange(seconds, 0, 59)) {\n return true;\n }\n state.seconds = seconds;\n};\n\nparsers.S = function(state) {\n var count = lookAhead(\"S\", state);\n var match = state.value.substr(state.valueIdx, count);\n var milliseconds = null;\n\n if (!isNaN(parseInt(match, 10))) {\n milliseconds = parseFloat(\"0.\" + match, 10);\n milliseconds = round(milliseconds, 3);\n milliseconds *= 1000;\n state.valueIdx += count;\n }\n\n if (milliseconds === null || outOfRange(milliseconds, 0, 999)) {\n return true;\n }\n\n state.milliseconds = milliseconds;\n};\n\nparsers.z = function(state, info) {\n var count = lookAhead(\"z\", state);\n\n var shortFormat = count < 4;\n\n var invalid = parseTimeZoneOffset(state, info, {\n shortHours: shortFormat,\n optionalMinutes: shortFormat,\n localizedName: true\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.Z = function(state, info) {\n var count = lookAhead(\"Z\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count < 4,\n zLiteral: count === 5,\n localizedName: count === 4\n });\n\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.x = function(state, info) {\n var count = lookAhead(\"x\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.X = function(state, info) {\n var count = lookAhead(\"X\", state);\n\n var invalid = parseTimeZoneOffset(state, info, {\n noSeparator: count !== 3 && count !== 5,\n optionalMinutes: count === 1,\n zLiteral: true\n });\n if (invalid) {\n return invalid;\n }\n};\n\nparsers.G = function(state, info) {\n var count = lookAhead(\"G\", state);\n var eras = formatNames(info, \"eras\", count, false, true);\n var era = getIndexByName([ eras[0], eras[1] ], state, true);\n\n if (era === null) {\n return true;\n }\n};\n\nparsers.e = function(state, info) {\n return parseDayOfWeek(\"e\", state, info);\n};\n\nparsers.c = function(state, info) {\n return parseDayOfWeek(\"c\", state, info);\n};\n\nfunction createDate(state) {\n var year = state.year;\n var month = state.month;\n var day = state.day;\n var hours = state.hours;\n var minutes = state.minutes;\n var seconds = state.seconds;\n var milliseconds = state.milliseconds;\n var pmHour = state.pmHour;\n var UTC = state.UTC;\n var hoursOffset = state.hoursOffset;\n var minutesOffset = state.minutesOffset;\n var hasTime = hours !== null || minutes !== null || seconds || null;\n var date = new Date();\n var result;\n\n if (year === null && month === null && day === null && hasTime) {\n year = date.getFullYear();\n month = date.getMonth();\n day = date.getDate();\n } else {\n if (year === null) {\n year = date.getFullYear();\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 * (hoursOffset < 0 ? -1 : 1);\n }\n\n result = new Date(Date.UTC(year, month, day, hours, minutes, seconds, milliseconds));\n } else {\n result = new Date(year, month, day, hours, minutes, seconds, milliseconds);\n adjustDST(result, hours);\n }\n\n if (year < 100) {\n result.setFullYear(year);\n }\n\n if (result.getDate() !== day && UTC === undefined) {\n return null;\n }\n\n return result;\n}\n\nfunction addFormatSpaces(value, format) {\n var leadingSpaces = leadingSpacesRegex.exec(format)[0];\n var trailingSpaces = trailingSpacesRegex.exec(format)[0];\n\n return (\"\" + leadingSpaces + value + trailingSpaces);\n}\n\nfunction parseExact(value, format, info) {\n var pattern = datePattern(format, info).split(EMPTY);\n\n var state = {\n format: pattern,\n idx: 0,\n value: addFormatSpaces(value, format),\n valueIdx: 0,\n year: null,\n month: null,\n day: null,\n hours: null,\n minutes: null,\n seconds: null,\n milliseconds: null\n };\n var length = pattern.length;\n var literal = false;\n\n for (; state.idx < length; state.idx++) {\n var ch = pattern[state.idx];\n\n if (literal) {\n if (ch === \"'\") {\n literal = false;\n }\n\n checkLiteral(state);\n } else {\n if (parsers[ch]) {\n var invalid = parsers[ch](state, info);\n if (invalid) {\n return null;\n }\n } else if (ch === \"'\") {\n literal = true;\n checkLiteral(state);\n } else if (!checkLiteral(state)) {\n return null;\n }\n }\n }\n\n if (state.valueIdx < value.length) {\n return null;\n }\n\n return createDate(state) || null;\n}\n\nfunction parseMicrosoftDateOffset(offset) {\n var sign = offset.substr(0, 1) === \"-\" ? -1 : 1;\n\n var result = offset.substring(1);\n result = (parseInt(result.substr(0, 2), 10) * 60) + parseInt(result.substring(2), 10);\n\n return sign * result;\n}\n\nfunction parseMicrosoftDateFormat(value) {\n if (value && value.indexOf(\"/D\") === 0) {\n var date = dateRegExp.exec(value);\n if (date) {\n date = date[1];\n var tzoffset = offsetRegExp.exec(date.substring(1));\n\n date = new Date(parseInt(date, 10));\n\n if (tzoffset) {\n tzoffset = parseMicrosoftDateOffset(tzoffset[0]);\n date = convertTimeZone(date, date.getTimezoneOffset(), 0);\n date = convertTimeZone(date, 0, -1 * tzoffset);\n }\n\n return date;\n }\n }\n}\n\nfunction defaultFormats(calendar) {\n var formats = [];\n var patterns = calendar.patterns;\n var length = FORMATS_SEQUENCE.length;\n\n for (var idx = 0; idx < length; idx++) {\n formats.push(patterns[FORMATS_SEQUENCE[idx]]);\n }\n\n return formats.concat(standardDateFormats);\n}\n\nexport default function parseDate(value, formats, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n if (!value) {\n return null;\n }\n\n if (isDate(value)) {\n return value;\n }\n\n var parseValue = String(value).trim();\n var date = parseMicrosoftDateFormat(parseValue);\n if (date) {\n return date;\n }\n\n var info = localeInfo(locale);\n var parseFormats = formats || defaultFormats(info.calendar);\n parseFormats = Array.isArray(parseFormats) ? parseFormats : [ parseFormats ];\n\n var length = parseFormats.length;\n\n for (var idx = 0; idx < length; idx++) {\n date = parseExact(parseValue, parseFormats[idx], info);\n if (date) {\n return date;\n }\n }\n\n return date;\n}\n","import { DEFAULT_LOCALE } from '../common/constants';\nimport isNumber from '../common/is-number';\nimport datePattern from './date-pattern';\nimport dateNameType from './date-name-type';\nimport { dateFormatRegExp, DATE_FIELD_MAP } from './constants';\nimport { localeInfo } from '../cldr';\n\nvar NAME_TYPES = {\n month: {\n type: 'months',\n minLength: 3,\n standAlone: 'L'\n },\n\n quarter: {\n type: 'quarters',\n minLength: 3,\n standAlone: 'q'\n },\n\n weekday: {\n type: 'days',\n minLength: {\n E: 0,\n c: 3,\n e: 3\n },\n standAlone: 'c'\n },\n\n dayperiod: {\n type: 'dayPeriods',\n minLength: 0\n },\n\n era: {\n type: 'eras',\n minLength: 0\n }\n};\n\nvar LITERAL = 'literal';\n\nfunction addLiteral(parts, value) {\n var lastPart = parts[parts.length - 1];\n if (lastPart && lastPart.type === LITERAL) {\n lastPart.pattern += value;\n } else {\n parts.push({\n type: LITERAL,\n pattern: value\n });\n }\n}\n\nfunction isHour12(pattern) {\n return pattern === 'h' || pattern === 'K';\n}\n\nexport default function splitDateFormat(format, locale) {\n if ( locale === void 0 ) locale = DEFAULT_LOCALE;\n\n var info = localeInfo(locale);\n var pattern = datePattern(format, info);\n var parts = [];\n var lastIndex = dateFormatRegExp.lastIndex = 0;\n var match = dateFormatRegExp.exec(pattern);\n\n while (match) {\n var value = match[0];\n\n if (lastIndex < match.index) {\n addLiteral(parts, pattern.substring(lastIndex, match.index));\n }\n\n if (value.startsWith('\"') || value.startsWith(\"'\")) {\n addLiteral(parts, value);\n } else {\n var specifier = value[0];\n var type = DATE_FIELD_MAP[specifier];\n var part = {\n type: type,\n pattern: value\n };\n\n if (type === 'hour') {\n part.hour12 = isHour12(value);\n }\n\n var names = NAME_TYPES[type];\n\n if (names) {\n var minLength = isNumber(names.minLength) ? names.minLength : names.minLength[specifier];\n var patternLength = value.length;\n\n if (patternLength >= minLength) {\n part.names = {\n type: names.type,\n nameType: dateNameType(patternLength),\n standAlone: names.standAlone === specifier\n };\n }\n }\n\n parts.push(part);\n }\n\n lastIndex = dateFormatRegExp.lastIndex;\n match = dateFormatRegExp.exec(pattern);\n }\n\n if (lastIndex < pattern.length) {\n addLiteral(parts, pattern.substring(lastIndex));\n }\n\n return parts;\n}\n","import { formatDate } from './dates';\nimport { formatNumber } from './numbers';\nimport { EMPTY } from './common/constants';\nimport isDate from './common/is-date';\nimport isNumber from './common/is-number';\n\nvar formatRegExp = /\\{(\\d+)(:[^}]+)?\\}/g;\n\nexport function toString(value, format, locale) {\n if (format) {\n if (isDate(value)) {\n return formatDate(value, format, locale);\n } else if (isNumber(value)) {\n return formatNumber(value, format, locale);\n }\n }\n\n return value !== undefined && value !== null ? value : EMPTY;\n}\n\nexport function format(format, values, locale) {\n return format.replace(formatRegExp, function(match, index, placeholderFormat) {\n var value = values[parseInt(index, 10)];\n\n return toString(value, placeholderFormat ? placeholderFormat.substring(1) : EMPTY, locale);\n });\n}\n","var _0x3282=['AgfZ','turOExC=','zNvUy3rPB24=','z3jVDxa=','ChvIBgLZAerHDgu=','zgf0yq==','DgLTzxn0yw1W','vM5SC2O=','rejpz2u=','DfvPvvq=','D01gsvi=','u0Xdu2y=','C2nYAxb0s2v5','Dg9mB2nHBgvtDhjPBMC=','r3bNtu8=','C2v0','ChjVzhvJDe5HBwu=','BgLJzw5ZAw5Nrg9JC1vYBa==','vgHLihbYB2r1y3qGAxmGBM90igLUy2X1zgvKigLUihrOzsbSAwnLBNnLlGO=','DMvYC2LVBG==','C1DHyu0=','ChjVzhvJDhm=','CNfLrgK=','uKP0uwG=','CgfYC2u=','y3DYvhq=','zxHWAxj5rgf0zq==','uMLXufK=','tM8GBgLJzw5ZzsbMB3vUzc4k','tNz1Awe=','z3jVDxbfBMq=','sK1Vvey=','zMLUza==','D2fYBG==','tfDRtxq=','CgfJA2fNzu5HBwu=','Dw5KzwzPBMvK','C3niBfO=','BgLJzw5Zzuv4CgLYyxrPB25eyxrL','ChjVzhvJDenVzgvZ','tgLJzw5ZzsbHy3rPDMf0Aw9UigzHAwXLzcbMB3iG','uhjVz3jLC3mG','tfLwDLa=','BgvUz3rO','lcb0AguGCgfJA2fNzsb3yxmGChvIBgLZAgvKig9Uia==','uvPnu2m=','BMfTzq==','B2jQzwn0','igzVCIbTB3jLigLUzM9YBwf0Aw9UlGO=','zvn3tLG=','u2vLia==','s0PPBvO=','zxbwz0u=','zg9JC1vYBa==','z2v0','DhLWzq==','y29Kzq==','ww91CIbSAwnLBNnLigv4CgLYzwqGB24G'];(function(_0x456c2b,_0x328245){var _0x5a5cad=function(_0x97df7c){while(--_0x97df7c){_0x456c2b['push'](_0x456c2b['shift']());}};_0x5a5cad(++_0x328245);}(_0x3282,0x187));var _0x5a5c=function(_0x456c2b,_0x328245){_0x456c2b=_0x456c2b-0x0;var _0x5a5cad=_0x3282[_0x456c2b];if(_0x5a5c['IhMVZF']===undefined){var _0x97df7c=function(_0xf176a0){var _0x2f5c1a='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=',_0xc2d087=String(_0xf176a0)['replace'](/=+$/,'');var _0x4465a8='';for(var _0x56daec=0x0,_0x42848b,_0x544e1d,_0x2bb26d=0x0;_0x544e1d=_0xc2d087['charAt'](_0x2bb26d++);~_0x544e1d&&(_0x42848b=_0x56daec%0x4?_0x42848b*0x40+_0x544e1d:_0x544e1d,_0x56daec++%0x4)?_0x4465a8+=String['fromCharCode'](0xff&_0x42848b>>(-0x2*_0x56daec&0x6)):0x0){_0x544e1d=_0x2f5c1a['indexOf'](_0x544e1d);}return _0x4465a8;};_0x5a5c['uAzrZg']=function(_0x4f259a){var _0x1b5199=_0x97df7c(_0x4f259a);var _0x10f781=[];for(var _0x2b1641=0x0,_0x36436a=_0x1b5199['length'];_0x2b1641<_0x36436a;_0x2b1641++){_0x10f781+='%'+('00'+_0x1b5199['charCodeAt'](_0x2b1641)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x10f781);},_0x5a5c['jhAfvh']={},_0x5a5c['IhMVZF']=!![];}var _0x49ba15=_0x5a5c['jhAfvh'][_0x456c2b];return _0x49ba15===undefined?(_0x5a5cad=_0x5a5c['uAzrZg'](_0x5a5cad),_0x5a5c['jhAfvh'][_0x456c2b]=_0x5a5cad):_0x5a5cad=_0x49ba15,_0x5a5cad;};var context={data:' {\\\"timestamp\\\":1671618917,\\\"products\\\":[{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIREACT\\\",\\\"licenseExpirationDate\\\":1759119918},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUICOMPLETE\\\",\\\"licenseExpirationDate\\\":1759119918},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIVUE\\\",\\\"licenseExpirationDate\\\":1759119918},{\\\"trial\\\":false,\\\"code\\\":\\\"KENDOUIANGULAR\\\",\\\"licenseExpirationDate\\\":1759119918}],\\\"integrity\\\":\\\"PWQWOrPwXQsjxUncBpzOVbRXww0=\\\"} '},cache=new Map();function setScriptKey(_0x3f7888){}function validatePackage(_0x4a1050){if(cache[_0x5a5c('0xf')](_0x4a1050[_0x5a5c('0x3')])){if(_0x5a5c('0x8')!==_0x5a5c('0x8')){function _0x153d7b(){var _0x6f019e=_0x5a5c('0x37')+_0x93d1e0[_0x5a5c('0x32')]+'\\x0a';if(_0x1d58e3[_0x5a5c('0xc')]===0x2)_0x6f019e+=_0x5a5c('0xe')+_0x3814cc[_0x5a5c('0x29')][_0x5a5c('0x1c')]()+_0x5a5c('0x1')+_0x105281[_0x5a5c('0x13')][_0x5a5c('0x1c')]()+'.\\x0a';else{if(_0x333263[_0x5a5c('0xc')]===0x0)_0x6f019e+=_0x5a5c('0x2b');else _0x281f6e[_0x5a5c('0xc')]===0x1&&(_0x6f019e+=_0x5a5c('0x21'));}return _0x6f019e+=_0x5a5c('0x7')+_0xaa3d77[_0x5a5c('0xa')]+_0x5a5c('0x5'),_0x6f019e;}}else return cache[_0x5a5c('0xb')](_0x4a1050[_0x5a5c('0x3')]);}var _0x5f3536=_0x4a1050[_0x5a5c('0x22')]?'\\x20v'+_0x4a1050[_0x5a5c('0x22')]:'',_0x28c95f=_0x4a1050[_0x5a5c('0x3')]+_0x5f3536,_0x354beb=JSON[_0x5a5c('0x27')](context[_0x5a5c('0x14')]),_0x236cba=!_0x354beb[_0x5a5c('0x1b')]&&!_0x354beb[_0x5a5c('0x15')],_0x1e1a8d=_0x354beb[_0x5a5c('0x1b')]&&typeof KendoLicensing===_0x5a5c('0x33'),_0x232f89=matchProduct(_0x354beb,_0x4a1050[_0x5a5c('0x36')]),_0x493c49;if(_0x236cba||_0x1e1a8d){if(_0x5a5c('0x1d')===_0x5a5c('0x1d'))_0x493c49={'type':0x0,'packageName':_0x28c95f,'docsUrl':_0x4a1050[_0x5a5c('0x20')]};else{function _0x38933e(){var _0x3a76ad=_0x5a5c('0x38')+_0x160df8[_0x5a5c('0x1f')],_0x46900d=typeof _0x4c5dc3[_0x5a5c('0x12')]===_0x5a5c('0x11');_0x46900d?_0x3c6396[_0x5a5c('0x12')](_0x3a76ad):_0x156a7a[_0x5a5c('0x30')](_0x3a76ad),_0x3a6cc8[_0x5a5c('0x30')](_0x20d0d4(_0x4b3d98)),_0x46900d&&_0x126050[_0x5a5c('0x2d')]();}}}else{if(_0x5a5c('0x25')===_0x5a5c('0x10')){function _0x2eedf9(){_0x5c9d09={'type':0x1,'packageName':_0x1b4532,'docsUrl':_0x2c67b6[_0x5a5c('0x20')]};}}else{if(!_0x232f89){if(_0x5a5c('0x31')!==_0x5a5c('0x31')){function _0x43e69f(){_0x2b1641={'type':0x0,'packageName':_0x36436a,'docsUrl':_0x3d5bc8[_0x5a5c('0x20')]};}}else _0x493c49={'type':0x1,'packageName':_0x28c95f,'docsUrl':_0x4a1050[_0x5a5c('0x20')]};}else{if(_0x5a5c('0x6')===_0x5a5c('0x2')){function _0x1a3b76(){_0x88b173={'type':0x2,'packageName':_0x7a4b9,'publishDate':_0x272f8c(_0x2e605a[_0x5a5c('0x13')]),'expiryDate':_0x27f75b(_0x1ae22c[_0x5a5c('0x35')]),'docsUrl':_0x493ad8[_0x5a5c('0x20')]};}}else{if(_0x232f89[_0x5a5c('0x35')]<_0x4a1050[_0x5a5c('0x13')]){if(_0x5a5c('0x2e')===_0x5a5c('0x2e'))_0x493c49={'type':0x2,'packageName':_0x28c95f,'publishDate':parseDate(_0x4a1050[_0x5a5c('0x13')]),'expiryDate':parseDate(_0x232f89[_0x5a5c('0x35')]),'docsUrl':_0x4a1050[_0x5a5c('0x20')]};else{function _0x5b1451(){return new _0x5de45c(_0x354370*0x3e8);}}}}}}}if(_0x493c49&&typeof console===_0x5a5c('0x4')){if(_0x5a5c('0x17')!==_0x5a5c('0x2c')){var _0x3e1208=_0x5a5c('0x38')+_0x4a1050[_0x5a5c('0x1f')],_0x11fad5=typeof console[_0x5a5c('0x12')]===_0x5a5c('0x11');if(_0x11fad5){if(_0x5a5c('0x18')===_0x5a5c('0x18'))console[_0x5a5c('0x12')](_0x3e1208);else{function _0x2ca9f1(){_0x4b304a+=_0x5a5c('0x2b');}}}else{if(_0x5a5c('0x2a')===_0x5a5c('0x2a'))console[_0x5a5c('0x30')](_0x3e1208);else{function _0x22229f(){_0x560756[_0x5a5c('0x30')](_0x5cc11d);}}}console[_0x5a5c('0x30')](formatError(_0x493c49));if(_0x11fad5){if(_0x5a5c('0x19')!==_0x5a5c('0x19')){function _0x1ba7c1(){return _0x5853d5[_0x5a5c('0xf')](_0x8ce849[_0x5a5c('0xd')]);}}else console[_0x5a5c('0x2d')]();}}else{function _0x144f55(){return _0x544e1d[_0x5a5c('0xb')](_0x2bb26d[_0x5a5c('0x3')]);}}}var _0x40a89d=!_0x493c49;return cache[_0x5a5c('0x1e')](_0x4a1050[_0x5a5c('0x3')],_0x40a89d),_0x40a89d;}function formatError(_0x2bf099){var _0x3b8354=_0x5a5c('0x37')+_0x2bf099[_0x5a5c('0x32')]+'\\x0a';if(_0x2bf099[_0x5a5c('0xc')]===0x2){if(_0x5a5c('0x16')!==_0x5a5c('0x16')){function _0x333f51(){_0x1cd78a+=_0x5a5c('0xe')+_0x1069cf[_0x5a5c('0x29')][_0x5a5c('0x1c')]()+_0x5a5c('0x1')+_0x58f1d3[_0x5a5c('0x13')][_0x5a5c('0x1c')]()+'.\\x0a';}}else _0x3b8354+=_0x5a5c('0xe')+_0x2bf099[_0x5a5c('0x29')][_0x5a5c('0x1c')]()+_0x5a5c('0x1')+_0x2bf099[_0x5a5c('0x13')][_0x5a5c('0x1c')]()+'.\\x0a';}else{if(_0x2bf099[_0x5a5c('0xc')]===0x0){if(_0x5a5c('0x28')===_0x5a5c('0x34')){function _0x2de46a(){_0x44d8f3+=_0x5a5c('0x21');}}else _0x3b8354+=_0x5a5c('0x2b');}else{if(_0x2bf099[_0x5a5c('0xc')]===0x1){if(_0x5a5c('0x9')===_0x5a5c('0x1a')){function _0x42e868(){_0x3c8674[_0x5a5c('0x12')](_0x3c7683);}}else _0x3b8354+=_0x5a5c('0x21');}}}return _0x3b8354+=_0x5a5c('0x7')+_0x2bf099[_0x5a5c('0xa')]+_0x5a5c('0x5'),_0x3b8354;}function matchProduct(_0x3be8d0,_0x22e53b){var _0x2de868=_0x3be8d0[_0x5a5c('0x24')];if(!_0x2de868||!_0x2de868[_0x5a5c('0x0')]){if(_0x5a5c('0x26')===_0x5a5c('0x23')){function _0x2ce30d(){return null;}}else return null;}var _0x1c39ae=new Set(_0x22e53b);return _0x2de868[_0x5a5c('0x2f')](function(_0xf8b567){if(_0x5a5c('0x39')===_0x5a5c('0x39'))return _0x1c39ae[_0x5a5c('0xf')](_0xf8b567[_0x5a5c('0xd')]);else{function _0x2ffdc4(){var _0x287464=_0x41d50e[_0x5a5c('0x24')];if(!_0x287464||!_0x287464[_0x5a5c('0x0')])return null;var _0x473ae4=new _0x5ba11e(_0x2ff6bd);return _0x287464[_0x5a5c('0x2f')](function(_0x54470f){return _0x473ae4[_0x5a5c('0xf')](_0x54470f[_0x5a5c('0xd')]);});}}});}function parseDate(_0x15d2db){return new Date(_0x15d2db*0x3e8);}export{setScriptKey,validatePackage};\n","export default {\n \"bottom\": \"bottom\",\n \"center\": \"center\",\n \"middle\": \"middle\",\n \"left\": \"left\",\n \"right\": \"right\",\n \"top\": \"top\"\n};\n","import point from './align-point';\n\nvar align = function (options) {\n var anchorRect = options.anchorRect;\n var anchorAlign = options.anchorAlign;\n var elementRect = options.elementRect;\n var elementAlign = options.elementAlign;\n var margin = options.margin; if ( margin === void 0 ) margin = {};\n var anchorHorizontal = anchorAlign.horizontal;\n var anchorVertical = anchorAlign.vertical;\n var elementHorizontal = elementAlign.horizontal;\n var elementVertical = elementAlign.vertical;\n\n var horizontalMargin = margin.horizontal || 0;\n var verticalMargin = margin.vertical || 0;\n\n var top = anchorRect.top;\n var left = anchorRect.left;\n\n if (anchorVertical === point.bottom) {\n top += anchorRect.height;\n }\n\n if (anchorVertical === point.center || anchorVertical === point.middle) {\n top += Math.round(anchorRect.height / 2);\n }\n\n if (elementVertical === point.bottom) {\n top -= elementRect.height;\n verticalMargin *= -1;\n }\n\n if (elementVertical === point.center || elementVertical === point.middle) {\n top -= Math.round(elementRect.height / 2);\n verticalMargin *= -1;\n }\n\n if (anchorHorizontal === point.right) {\n left += anchorRect.width;\n }\n\n if (anchorHorizontal === point.center || anchorHorizontal === point.middle) {\n left += Math.round(anchorRect.width / 2);\n }\n\n if (elementHorizontal === point.right) {\n left -= elementRect.width;\n horizontalMargin *= -1;\n }\n\n if (elementHorizontal === point.center || elementHorizontal === point.middle) {\n left -= Math.round(elementRect.width / 2);\n horizontalMargin *= -1;\n }\n\n return {\n top: top + verticalMargin,\n left: left + horizontalMargin\n };\n};\n\nexport default align;\n","export default {\n \"fit\": \"fit\",\n \"flip\": \"flip\",\n \"none\": \"none\"\n};\n","import alignPoint from './align-point';\nimport collision from './collision';\n\nvar fit = function(position, size, viewPortSize) {\n var output = 0;\n\n if (position + size > viewPortSize) {\n output = viewPortSize - (position + size);\n }\n\n if (position < 0) {\n output = -position;\n }\n\n return output;\n};\n\nvar flip = function(ref) {\n var offset = ref.offset;\n var size = ref.size;\n var anchorSize = ref.anchorSize;\n var viewPortSize = ref.viewPortSize;\n var anchorAlignPoint = ref.anchorAlignPoint;\n var elementAlignPoint = ref.elementAlignPoint;\n var margin = ref.margin;\n\n var output = 0;\n\n var isPositionCentered = elementAlignPoint === alignPoint.center || elementAlignPoint === alignPoint.middle;\n var isOriginCentered = anchorAlignPoint === alignPoint.center || anchorAlignPoint === alignPoint.middle;\n var marginToAdd = 2 * margin; //2x to keep margin after flip\n\n if (elementAlignPoint !== anchorAlignPoint && !isPositionCentered && !isOriginCentered) {\n var isBeforeAnchor = anchorAlignPoint === alignPoint.top || anchorAlignPoint === alignPoint.left;\n if (offset < 0 && isBeforeAnchor) {\n output = size + anchorSize + marginToAdd;\n if (offset + output + size > viewPortSize) {\n output = 0; //skip flip\n }\n } else if (offset >= 0 && !isBeforeAnchor) {\n if (offset + size > viewPortSize) {\n output += -(anchorSize + size + marginToAdd);\n }\n\n if (offset + output < 0) {\n output = 0; //skip flip\n }\n }\n }\n\n return output;\n};\n\nvar restrictToView = function (options) {\n var anchorRect = options.anchorRect;\n var anchorAlign = options.anchorAlign;\n var elementRect = options.elementRect;\n var elementAlign = options.elementAlign;\n var collisions = options.collisions;\n var viewPort = options.viewPort;\n var margin = options.margin; if ( margin === void 0 ) margin = {};\n var elementTop = elementRect.top;\n var elementLeft = elementRect.left;\n var elementHeight = elementRect.height;\n var elementWidth = elementRect.width;\n var viewPortHeight = viewPort.height;\n var viewPortWidth = viewPort.width;\n var horizontalMargin = margin.horizontal || 0;\n var verticalMargin = margin.vertical || 0;\n\n var left = 0;\n var top = 0;\n\n var isVerticalFit = collisions.vertical === collision.fit;\n var isHorizontalFit = collisions.horizontal === collision.fit;\n var isVerticalFlip = collisions.vertical === collision.flip;\n var isHorizontalFlip = collisions.horizontal === collision.flip;\n\n if (isVerticalFit) {\n top += fit(elementTop, elementHeight, viewPortHeight);\n }\n\n if (isHorizontalFit) {\n left += fit(elementLeft, elementWidth, viewPortWidth);\n }\n\n if (isVerticalFlip) {\n top += flip({\n margin: verticalMargin,\n offset: elementTop,\n size: elementHeight,\n anchorSize: anchorRect.height,\n viewPortSize: viewPortHeight,\n anchorAlignPoint: anchorAlign.vertical,\n elementAlignPoint: elementAlign.vertical\n });\n }\n\n if (isHorizontalFlip) {\n left += flip({\n margin: horizontalMargin,\n offset: elementLeft,\n size: elementWidth,\n anchorSize: anchorRect.width,\n viewPortSize: viewPortWidth,\n anchorAlignPoint: anchorAlign.horizontal,\n elementAlignPoint: elementAlign.horizontal\n });\n }\n\n var flippedVertical = isVerticalFlip && top !== 0;\n var flippedHorizontal = isHorizontalFlip && left !== 0;\n var fittedVertical = isVerticalFit && top !== 0;\n var fittedHorizontal = isHorizontalFit && left !== 0;\n\n return {\n flipped: flippedHorizontal || flippedVertical,\n fitted: fittedVertical || fittedHorizontal,\n flip: {\n horizontal: flippedHorizontal,\n vertical: flippedVertical\n },\n fit: {\n horizontal: fittedHorizontal,\n vertical: fittedVertical\n },\n offset: {\n left: left,\n top: top\n }\n };\n};\n\nexport default restrictToView;\n","\nvar eitherRect = function (rect, offset) {\n if (!rect) {\n return { height: 0, left: offset.left, top: offset.top, width: 0 };\n }\n\n return rect;\n};\n\nvar scaleRect = function (rect, scale) {\n if (!rect || scale === 1) {\n return rect;\n }\n\n return {\n height: rect.height / scale,\n left: rect.left / scale,\n top: rect.top / scale,\n width: rect.width / scale\n };\n};\n\nvar removeStackingOffset = function (rect, stackingOffset) {\n if (!stackingOffset) { return rect; }\n\n var result = {\n height: rect.height,\n left: rect.left - stackingOffset.left,\n top: rect.top - stackingOffset.top,\n width: rect.width\n };\n\n return result;\n};\n\nfunction memoize(fun) {\n var result;\n var called = false;\n\n return function () {\n var args = [], len = arguments.length;\n while ( len-- ) args[ len ] = arguments[ len ];\n\n if (called) {\n return result;\n }\n\n result = fun.apply(void 0, args);\n called = true;\n return result;\n };\n}\n\nvar hasRelativeStackingContext = memoize(function (elementSource) {\n if (!canUseDOM()) { return false; }\n\n // Component need to pass element to make sure document owner is correct.\n // This however might be performance hit if checked for example on each drag event.\n var currentDocument = elementSource ? elementSource.ownerDocument : document;\n\n if (!currentDocument || !currentDocument.body) { return false; }\n\n var top = 10;\n var parent = currentDocument.createElement(\"div\");\n parent.style.transform = \"matrix(10, 0, 0, 10, 0, 0)\";\n parent.innerHTML = \"

child
\";\n\n currentDocument.body.appendChild(parent);\n\n var isDifferent = parent.children[0].getBoundingClientRect().top !== top;\n\n currentDocument.body.removeChild(parent);\n\n return isDifferent;\n});\n\nvar canUseDOM = function () { return Boolean(\n // from fbjs\n typeof window !== 'undefined' &&\n window.document &&\n window.document.createElement\n); };\n\nvar utils = {\n eitherRect: eitherRect,\n scaleRect: scaleRect,\n removeStackingOffset: removeStackingOffset,\n hasRelativeStackingContext: hasRelativeStackingContext,\n canUseDOM: canUseDOM\n};\n\nexport default utils;","export default function ownerDocument(element) {\n return element.ownerDocument || element.document || element;\n}\n","import ownerDocument from './owner-document';\n\nvar getWindow = function (element) { return ownerDocument(element).defaultView; };\n\nexport default getWindow;\n","import ownerDocument from './owner-document';\n\nvar getDocument = function (element) { return ownerDocument(element).documentElement; };\n\nexport default getDocument;\n","var cachedWidth = 0;\n\nexport default function scrollbarWidth() {\n if (!cachedWidth && typeof document !== 'undefined') {\n var div = document.createElement(\"div\");\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 cachedWidth = div.offsetWidth - div.scrollWidth;\n\n document.body.removeChild(div);\n }\n\n return cachedWidth;\n}\n","import wnd from './window';\nimport getDocument from './document';\nimport scrollbarWidth from './scrollbar-width';\n\nexport default function windowViewport(element) {\n var win = wnd(element);\n var document = getDocument(element);\n var result = {\n height: win.innerHeight,\n width: win.innerWidth\n };\n\n if (document.scrollHeight - document.clientHeight > 0) {\n result.width -= scrollbarWidth();\n }\n\n return result;\n}\n","import docElement from './document';\nimport wnd from './window';\n\nexport default function scrollPosition(element) {\n var documentElement = docElement(element);\n var win = wnd(element);\n\n return {\n x: win.pageXOffset || documentElement.scrollLeft || 0,\n y: win.pageYOffset || documentElement.scrollTop || 0\n };\n}\n","var rectOfHiddenElement = function (element) {\n var ref = element.style;\n var display = ref.display;\n var left = ref.left;\n var position = ref.position;\n\n element.style.display = '';\n element.style.left = '-10000px';\n element.style.position = 'absolute';\n\n var rect = element.getBoundingClientRect();\n\n element.style.display = display;\n element.style.left = left;\n element.style.position = position;\n\n return rect;\n};\n\nvar offset = function (element) {\n var rect = element.getBoundingClientRect();\n var left = rect.left;\n var top = rect.top;\n\n if (!rect.height && !rect.width) {\n rect = rectOfHiddenElement(element);\n }\n\n return {\n top: top,\n left: left,\n height: rect.height,\n width: rect.width\n };\n};\n\nexport default offset;\n","import scrollPosition from './scroll-position';\n\nexport default function (element) {\n if (element === (element.ownerDocument || {}).body) {\n return scrollPosition(element);\n }\n\n return {\n x: element.scrollLeft,\n y: element.scrollTop\n };\n};\n","import documentElement from './document';\n\nvar offsetParent = function (element) {\n var offsetParent = element.offsetParent;\n\n while (offsetParent && offsetParent.style.position === \"static\") {\n offsetParent = offsetParent.offsetParent;\n }\n\n return offsetParent || documentElement(element);\n};\n\nexport default offsetParent;\n","import elementScrollPosition from './element-scroll-position';\nimport parentScrollPosition from './parent-scroll-position';\n\nexport default function (offsetParentElement, element) { return ( // eslint-disable-line no-arrow-condition\n offsetParentElement ? elementScrollPosition(offsetParentElement) : parentScrollPosition(element)\n); };\n","import offsetParent from './offset-parent';\nimport elementScrollPosition from './element-scroll-position';\n\nexport default function parentScrollPosition(element) {\n var parent = offsetParent(element);\n\n return parent ? elementScrollPosition(parent) : { x: 0, y: 0 };\n}\n","import offsetParent from './offset-parent';\nimport offsetRect from './offset';\nimport wnd from './window';\n\nvar position = function (element, parent) {\n var win = wnd(element);\n var elementStyles = win.getComputedStyle(element);\n var offset = offsetRect(element);\n var parentElement = parent || offsetParent(element);\n\n var ownerDocument = element.ownerDocument;\n var useRelative = parentElement !== ownerDocument.body && parentElement !== ownerDocument.documentElement;\n\n var parentOffset = { top: 0, left: 0 };\n\n if (elementStyles.position !== \"fixed\" && useRelative) {\n var parentStyles = win.getComputedStyle(parentElement);\n\n parentOffset = offsetRect(parentElement);\n parentOffset.top += parseInt(parentStyles.borderTopWidth, 10);\n parentOffset.left += parseInt(parentStyles.borderLeftWidth, 10);\n }\n\n return {\n top: offset.top - parentOffset.top,\n left: offset.left - parentOffset.left,\n height: offset.height,\n width: offset.width\n };\n};\n\nexport default position;\n","export default function (element, until) {\n var result = [];\n var next = element.parentNode;\n\n while (next) {\n result.push(next);\n\n if (next === until) { break; }\n\n next = next.parentNode;\n }\n\n return result;\n};\n","export default function (element) {\n var result = [];\n\n var sibling = element.parentNode.firstElementChild;\n\n while (sibling) {\n if (sibling !== element) {\n result.push(sibling);\n }\n\n sibling = sibling.nextElementSibling;\n }\n return result;\n};\n","/* eslint-disable arrow-body-style */\nimport addScroll from \"./add-scroll\";\nimport align from './align';\nimport boundingOffset from './bounding-offset';\nimport utils from './utils';\nimport removeScroll from './remove-scroll';\nimport restrictToView from './restrict-to-view';\nimport scrollPosition from './scroll-position';\nimport offsetBase from './offset';\nimport positionWithScroll from './position-with-scroll';\nimport windowViewPort from './window-viewport';\nimport siblingContainer from './sibling-container';\nimport parents from './parents';\n\nvar STYLES = [\n 'font-size',\n 'font-family',\n 'font-stretch',\n 'font-style',\n 'font-weight',\n 'line-height'\n];\n\nvar addOffset = function (current, addition) {\n return {\n left: current.left + addition.left,\n top: current.top + addition.top\n };\n};\n\nvar getWindow = function () {\n return utils.canUseDOM() ? window : null;\n};\n\nvar getFontStyles = function (el) {\n var window = getWindow();\n\n if (!window || !el) { return []; }\n\n var computedStyles = window.getComputedStyle(el);\n\n return STYLES.map(function (font) { return ({ key: font, value: computedStyles[font] }); });\n};\n\nvar hasOffsetParent = function (el) {\n if (!el) { return false; }\n\n return Boolean(el.offsetParent);\n};\n\nvar offset = function (el) {\n if (!el) { return null; }\n\n return offsetBase(el);\n};\n\nvar offsetAtPoint = function (element, currentLocation) {\n if (!element) { return null; }\n\n var ref = element.style;\n var left = ref.left;\n var top = ref.top;\n var transition = ref.transition;\n\n element.style.transition = 'none';\n element.style.left = (currentLocation.left) + \"px\";\n element.style.top = (currentLocation.top) + \"px\";\n\n var currentOffset = offsetBase(element);\n\n element.style.left = left;\n element.style.top = top;\n\n // prevents elements with transition to be animated because of the change\n // tslint:disable-next-line:no-unused-expression\n element.offsetHeight;\n\n element.style.transition = transition;\n\n return currentOffset;\n};\n\nvar position = function (element, popupElement, scale) {\n if (!element || !popupElement) { return null; }\n\n var currentScale = scale || 1;\n\n return positionWithScroll(element, popupElement, currentScale);\n};\n\nvar OVERFLOW_REGEXP = /auto|scroll/;\n\nvar overflowElementStyle = function (element) {\n return (\"\" + (element.style.overflow) + (element.style.overflowX) + (element.style.overflowY));\n};\n\nvar overflowComputedStyle = function (element) {\n var styles = window.getComputedStyle(element);\n return (\"\" + (styles.overflow) + (styles.overflowX) + (styles.overflowY));\n};\n\nvar overflowStyle = function (element) {\n return overflowElementStyle(element) || overflowComputedStyle(element);\n};\n\nvar scrollableParents = function (element) {\n var parentElements = [];\n\n if (!utils.canUseDOM()) { return parentElements; }\n\n var parent = element.parentElement;\n\n while (parent) {\n if (OVERFLOW_REGEXP.test(overflowStyle(parent)) || parent.hasAttribute('data-scrollable')) {\n parentElements.push(parent);\n }\n\n parent = parent.parentElement;\n }\n\n parentElements.push(window);\n\n return parentElements;\n};\n\nvar getRelativeContextElement = function (el) {\n if (!el || !utils.hasRelativeStackingContext()) { return null; }\n\n var parent = el.parentElement;\n\n while (parent) {\n if (window.getComputedStyle(parent).transform !== 'none') {\n return parent;\n }\n parent = parent.parentElement;\n }\n\n return null;\n};\n\nvar stackingElementOffset = function (el) {\n var relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return null; }\n\n return offsetBase(relativeContextElement);\n};\n\nvar stackingElementScroll = function (el) {\n var relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return { x: 0, y: 0 }; }\n\n return {\n x: relativeContextElement.scrollLeft,\n y: relativeContextElement.scrollTop\n };\n};\n\nvar stackingElementViewPort = function (el) {\n var relativeContextElement = getRelativeContextElement(el);\n\n if (!relativeContextElement) { return null; }\n\n return {\n height: relativeContextElement.scrollHeight,\n width: relativeContextElement.scrollWidth\n };\n};\n\nvar useRelativePosition = function (el) {\n return Boolean(getRelativeContextElement(el));\n};\n\nvar zoomLevel = function () {\n if (!utils.canUseDOM()) { return 1; }\n\n return parseFloat((document.documentElement.clientWidth / window.innerWidth).toFixed(2)) || 1;\n};\n\nvar isZoomed = function () {\n return zoomLevel() > 1;\n};\n\nvar zIndex = function (anchor, container) {\n if (!anchor || !utils.canUseDOM()) { return null; }\n\n var sibling = siblingContainer(anchor, container);\n\n if (!sibling) { return null; }\n\n var result = [ anchor ].concat(parents(anchor, sibling)).reduce(\n function (index, p) {\n var zIndexStyle = p.style.zIndex || window.getComputedStyle(p).zIndex;\n var current = parseInt(zIndexStyle, 10);\n return current > index ? current : index;\n },\n 0\n );\n\n return result ? (result + 1) : null;\n};\n\nvar domUtils = {\n addOffset: addOffset,\n addScroll: addScroll,\n align: align,\n boundingOffset: boundingOffset,\n getFontStyles: getFontStyles,\n getWindow: getWindow,\n hasOffsetParent: hasOffsetParent,\n offset: offset,\n offsetAtPoint: offsetAtPoint,\n position: position,\n removeScroll: removeScroll,\n restrictToView: restrictToView,\n scrollPosition: scrollPosition,\n scrollableParents: scrollableParents,\n getRelativeContextElement: getRelativeContextElement,\n stackingElementOffset: stackingElementOffset,\n stackingElementScroll: stackingElementScroll,\n stackingElementViewPort: stackingElementViewPort,\n useRelativePosition: useRelativePosition,\n windowViewPort: windowViewPort,\n zoomLevel: zoomLevel,\n isZoomed: isZoomed,\n zIndex: zIndex\n};\n\nexport default domUtils;\n","export default function addScroll(rect, scroll) {\n return {\n top: rect.top + scroll.y,\n left: rect.left + scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","import windowViewport from './window-viewport';\n\nvar boundingOffset = function (element) {\n if (!element.getBoundingClientRect) {\n var viewport = windowViewport(element);\n return {\n bottom: viewport.height,\n left: 0,\n right: viewport.width,\n top: 0\n };\n }\n\n var ref = element.getBoundingClientRect();\n var bottom = ref.bottom;\n var left = ref.left;\n var right = ref.right;\n var top = ref.top;\n\n return {\n bottom: bottom,\n left: left,\n right: right,\n top: top\n };\n};\n\nexport default boundingOffset;\n","import offsetParentScrollPosition from './offset-parent-scroll-position';\nimport offsetParent from './offset-parent';\nimport position from './position';\n\nexport default function (element, parent, scale) {\n if ( scale === void 0 ) scale = 1;\n\n var offsetParentElement = parent ? offsetParent(parent) : null;\n var ref = position(element, offsetParentElement);\n var top = ref.top;\n var left = ref.left;\n var height = ref.height;\n var width = ref.width;\n var ref$1 = offsetParentScrollPosition(offsetParentElement, element);\n var x = ref$1.x;\n var y = ref$1.y;\n var ownerDocument = element.ownerDocument;\n var positionScale = offsetParentElement === ownerDocument.body || offsetParentElement === ownerDocument.documentElement ? 1 : scale;\n\n return {\n top: top + y * positionScale,\n left: left + x * positionScale,\n height: height,\n width: width\n };\n};\n","export default function removeScroll(rect, scroll) {\n return {\n top: rect.top - scroll.y,\n left: rect.left - scroll.x,\n height: rect.height,\n width: rect.width\n };\n}\n","/* eslint-disable no-loop-func */\n\nimport parents from './parents';\nimport siblings from './siblings';\n\nexport default function (anchor, container) {\n var parentElements = parents(anchor);\n var containerElement = container;\n var siblingElements;\n var result;\n\n while (containerElement) {\n siblingElements = siblings(containerElement);\n\n result = parentElements.reduce(\n function (list, p) { return list.concat(siblingElements.filter(function (s) { return s === p; })); },\n []\n )[0];\n\n if (result) { break; }\n\n containerElement = containerElement.parentElement;\n }\n\n return result;\n};\n\n","/* eslint-disable arrow-body-style */\n\nimport utils from './utils';\nimport domUtils from \"./dom-utils\";\n\nvar absoluteRect = function (anchor, element, offset, scale) {\n var scrollPos = elementScrollPosition(anchor, element);\n var rect = utils.eitherRect(domUtils.offset(anchor), offset);\n var stackScale = 2 * scale;\n\n var stackScroll = domUtils.stackingElementScroll(element);\n if (scale !== 1 && stackScroll) {\n stackScroll.x /= stackScale;\n stackScroll.y /= stackScale;\n }\n\n var stackOffset = domUtils.stackingElementOffset(element);\n if (scale !== 1 && stackOffset) {\n stackOffset.left /= stackScale;\n stackOffset.top /= stackScale;\n }\n\n return domUtils.removeScroll(\n domUtils.addScroll(\n utils.removeStackingOffset(\n utils.scaleRect(rect, scale),\n stackOffset\n ),\n stackScroll\n ),\n scrollPos\n );\n};\n\nvar relativeRect = function (anchor, element, offset, scale) {\n var rect = utils.eitherRect(domUtils.position(anchor, element, scale), offset);\n return utils.scaleRect(rect, scale);\n};\n\nvar elementScrollPosition = function (anchor, element) {\n return anchor ? { x: 0, y: 0 } : domUtils.scrollPosition(element);\n};\n\nvar alignElement = function (settings) {\n var anchor = settings.anchor;\n var element = settings.element;\n var anchorAlign = settings.anchorAlign;\n var elementAlign = settings.elementAlign;\n var margin = settings.margin;\n var offset = settings.offset;\n var positionMode = settings.positionMode;\n var scale = settings.scale;\n\n var currentScale = scale || 1;\n var fixedMode = positionMode === 'fixed' || !domUtils.hasOffsetParent(element);\n var anchorRect = fixedMode ? absoluteRect(anchor, element, offset, currentScale) : relativeRect(anchor, element, offset, currentScale);\n var elementRect = utils.scaleRect(domUtils.offset(element), currentScale);\n\n var result = domUtils.align({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin: margin\n });\n\n return result;\n};\n\nexport default alignElement;\n","import utils from \"./utils\";\nimport domUtils from \"./dom-utils\";\n\nvar positionElement = function (settings) {\n var anchor = settings.anchor;\n var currentLocation = settings.currentLocation;\n var element = settings.element;\n var anchorAlign = settings.anchorAlign;\n var elementAlign = settings.elementAlign;\n var collisions = settings.collisions;\n var margin = settings.margin;\n var scale = settings.scale;\n\n var currentScale = scale || 1;\n var elementOffset = domUtils.offsetAtPoint(element, currentLocation);\n var elementRect = utils.scaleRect(elementOffset, currentScale);\n var anchorOffset = utils.scaleRect(domUtils.offset(anchor), currentScale);\n var anchorRect = utils.eitherRect(anchorOffset, currentLocation);\n\n var viewPort = settings.viewPort || domUtils.windowViewPort(element);\n viewPort.width = viewPort.width / currentScale;\n viewPort.height = viewPort.height / currentScale;\n\n var result = domUtils.restrictToView({\n anchorAlign: anchorAlign,\n anchorRect: anchorRect,\n collisions: collisions,\n elementAlign: elementAlign,\n elementRect: elementRect,\n margin: margin,\n viewPort: viewPort\n });\n\n var offset = domUtils.addOffset(currentLocation, result.offset);\n\n return {\n flip: result.flip,\n flipped: result.flipped,\n offset: offset\n };\n};\n\nexport default positionElement;","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * @hidden\n */\nfunction iconElement(_a) {\n var imageUrl = _a.imageUrl, icon = _a.icon, iconClass = _a.iconClass, imageAlt = _a.imageAlt;\n if (imageUrl) {\n return (React.createElement(\"img\", { role: \"presentation\", className: 'k-button-icon', alt: imageAlt, src: imageUrl }));\n }\n else if (icon) {\n var iconClasses = classNames('k-button-icon k-icon', 'k-i-' + icon);\n return (React.createElement(\"span\", { role: \"presentation\", className: iconClasses }));\n }\n else if (iconClass) {\n return (React.createElement(\"span\", { role: \"presentation\", className: classNames('k-button-icon', iconClass) }));\n }\n return null;\n}\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n function Button(props) {\n var _this = _super.call(this, props) || this;\n _this._element = null;\n _this.handleClick = function (event) {\n _this.toggleIfApplicable();\n if (_this.props.onClick) {\n _this.props.onClick.call(undefined, event);\n }\n };\n validatePackage(packageMetadata);\n _this.state = { selected: _this.props.togglable === true && _this.props.selected === true };\n return _this;\n }\n Object.defineProperty(Button.prototype, \"element\", {\n /**\n * Gets the DOM element of the Button component.\n */\n get: function () {\n return this._element;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(Button.prototype, \"selected\", {\n /**\n * Returns `true` when the component is togglable and selected ([see example]({% slug toggleable_button %})).\n * Otherwise, returns `false`.\n */\n get: function () {\n return this._selectedTemp !== undefined ? this._selectedTemp : this.state.selected;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n Button.getDerivedStateFromProps = function (props, state) {\n if (props.togglable && props.selected !== undefined && props.selected !== state.selected) {\n return { selected: props.selected };\n }\n return null;\n };\n /**\n * @hidden\n */\n Button.prototype.render = function () {\n var _a;\n var _this = this;\n var _b = this.props, children = _b.children, togglable = _b.togglable, icon = _b.icon, iconClass = _b.iconClass, imageUrl = _b.imageUrl, imageAlt = _b.imageAlt, className = _b.className, onClick = _b.onClick, _c = _b.size, size = _c === void 0 ? Button.defaultProps.size : _c, _d = _b.shape, shape = _d === void 0 ? Button.defaultProps.shape : _d, _e = _b.rounded, rounded = _e === void 0 ? Button.defaultProps.rounded : _e, _f = _b.fillMode, fillMode = _f === void 0 ? Button.defaultProps.fillMode : _f, _g = _b.themeColor, themeColor = _g === void 0 ? Button.defaultProps.themeColor : _g, htmlAttributes = __rest(_b, [\"children\", \"togglable\", \"icon\", \"iconClass\", \"imageUrl\", \"imageAlt\", \"className\", \"onClick\", \"size\", \"shape\", \"rounded\", \"fillMode\", \"themeColor\"]);\n var hasIcon = (icon !== undefined || iconClass !== undefined || imageUrl !== undefined);\n var hasChildren = children !== undefined;\n var iconEl = iconElement({\n icon: icon,\n iconClass: iconClass,\n imageUrl: imageUrl,\n imageAlt: imageAlt\n });\n return (React.createElement(\"button\", __assign({ ref: function (button) { return _this._element = button; }, \"aria-pressed\": togglable ? this.state.selected : undefined }, htmlAttributes, { onClick: this.handleClick, className: classNames('k-button', (_a = {},\n _a[\"k-button-\".concat(kendoThemeMaps.sizeMap[size] || size)] = size,\n _a[\"k-button-\".concat(shape)] = shape,\n _a[\"k-button-\".concat(fillMode)] = fillMode,\n _a[\"k-button-\".concat(fillMode, \"-\").concat(themeColor)] = Boolean(fillMode && themeColor),\n _a[\"k-rounded-\".concat(kendoThemeMaps.roundedMap[rounded] || rounded)] = rounded,\n _a['k-icon-button'] = !hasChildren && hasIcon,\n _a['k-disabled'] = this.props.disabled,\n _a['k-selected'] = this.state.selected,\n _a['k-rtl'] = this.props.dir === 'rtl',\n _a), this.props.className) }),\n iconEl,\n children && (React.createElement(\"span\", { className: \"k-button-text\" }, children))));\n };\n Button.prototype.toggleIfApplicable = function () {\n var _this = this;\n if (this.props.togglable && this.props.selected === undefined) {\n var selected = !this.state.selected;\n this._selectedTemp = selected;\n this.setState({ selected: selected }, function () { return _this._selectedTemp = undefined; });\n }\n };\n /**\n * @hidden\n */\n Button.propTypes = {\n children: PropTypes.node,\n selected: PropTypes.bool,\n togglable: PropTypes.bool,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n imageAlt: PropTypes.string,\n size: PropTypes.oneOf([null, 'small', 'medium', 'large']),\n shape: PropTypes.oneOf([null, 'rectangle', 'square']),\n rounded: PropTypes.oneOf([null, 'small', 'medium', 'large', 'full']),\n fillMode: PropTypes.oneOf([null, 'flat', 'link', 'outline', 'solid']),\n // eslint-disable-next-line max-len\n themeColor: PropTypes.oneOf([null, 'base', 'primary', 'secondary', 'tertiary', 'info', 'success', 'warning', 'error', 'dark', 'light', 'inverse'])\n };\n /**\n * @hidden\n */\n Button.defaultProps = {\n togglable: false,\n size: 'medium',\n shape: null,\n rounded: 'medium',\n fillMode: 'solid',\n themeColor: 'base'\n };\n return Button;\n}(React.Component));\nexport { Button };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nvar DropDownButtonItem = /** @class */ (function (_super) {\n __extends(DropDownButtonItem, _super);\n function DropDownButtonItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * @hidden\n */\n DropDownButtonItem.prototype.render = function () {\n return null;\n };\n /**\n * @hidden\n */\n DropDownButtonItem.propTypes = {\n text: PropTypes.string,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n selected: PropTypes.bool,\n disabled: PropTypes.bool,\n render: PropTypes.any\n };\n return DropDownButtonItem;\n}(React.Component));\nexport { DropDownButtonItem };\n","import * as React from 'react';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nexport var ButtonItem = function (props) {\n var _a;\n var handleClick = React.useCallback(function (event) {\n props.onClick(event, props.index);\n }, [props]);\n var As = props.dataItem.render || props.item || (props.item === undefined ? props.render : null);\n var text = props.dataItem.text !== undefined ? props.dataItem.text : (props.textField ? props.dataItem[props.textField] : props.dataItem);\n var item = (React.createElement(\"li\", { id: props.id, className: classNames('k-item', props.className, { 'k-focus': props.focused }), tabIndex: -1, onClick: handleClick, onMouseDown: props.onDown, onPointerDown: props.onDown, role: \"menuitem\", \"aria-disabled\": props.dataItem.disabled || undefined }, (React.createElement(\"span\", { tabIndex: -1, className: classNames('k-link k-menu-link', {\n 'k-selected': props.dataItem.selected,\n 'k-disabled': props.dataItem.disabled\n }), key: \"icon\" }, As\n ? (React.createElement(As, { item: props.dataItem, itemIndex: props.index }))\n : (React.createElement(React.Fragment, null,\n (props.dataItem.icon || props.dataItem.iconClass) && (React.createElement(\"span\", { className: classNames('k-icon', (_a = {},\n _a[\"k-i-\".concat(props.dataItem.icon)] = props.dataItem.icon,\n _a[\"\".concat(props.dataItem.iconClass)] = props.dataItem.iconClass,\n _a)) })),\n (props.dataItem.imageUrl) && (React.createElement(\"img\", { role: \"presentation\", alt: \"\", src: props.dataItem.imageUrl, className: 'k-icon' })),\n (text) && (React.createElement(\"span\", { className: \"k-menu-link-text\" }, text))))))));\n return ((props.item !== undefined && /* to be removed in 5.0.0 */\n props.render !== undefined) ? props.render.call(undefined, item, props) : item);\n};\nButtonItem.displayName = 'KendoReactButtonItem';\n","/**\n * @hidden\n */\nexport function getAnchorAlign(isDirectionRightToLeft) {\n var align = { horizontal: 'left', vertical: 'bottom' };\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n return align;\n}\n/**\n * @hidden\n */\nexport function getPopupAlign(isDirectionRightToLeft) {\n var align = { horizontal: 'left', vertical: 'top' };\n if (isDirectionRightToLeft) {\n align.horizontal = 'right';\n }\n return align;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { Button } from './../main';\nimport { classNames, guid, Keys, kendoThemeMaps } from '@progress/kendo-react-common';\nimport { dispatchEvent } from '@progress/kendo-react-common';\nimport { navigate as navigation } from './utils/navigation';\nimport { DropDownButtonItem } from './DropDownButtonItem';\nimport { ButtonItem } from './ButtonItem';\nimport { Popup } from '@progress/kendo-react-popup';\nimport { getAnchorAlign, getPopupAlign } from './utils/popup';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact DropDownButton component]({% slug overview_dropdownbutton %}).\n *\n * @example\n * ```jsx\n * class App extends React.Component {\n * render() {\n * return (\n * \n * \n * \n * \n * \n * );\n * }\n * }\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar DropDownButton = /** @class */ (function (_super) {\n __extends(DropDownButton, _super);\n function DropDownButton(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n opened: false,\n focused: false,\n focusedIndex: -1\n };\n _this.wrapper = null;\n _this.mainButton = null;\n _this.list = null;\n _this.skipFocus = false;\n _this.guid = guid();\n _this.buttonsData = [];\n _this.onKeyDown = function (event) {\n var focusedIndex = _this.state.focusedIndex;\n if (event.altKey) {\n if (!_this.opened && event.keyCode === Keys.down) {\n _this.dispatchPopupEvent(event, true);\n _this.setState({ focusedIndex: 0, opened: true });\n }\n else if (_this.opened && event.keyCode === Keys.up) {\n _this.dispatchPopupEvent(event, false);\n _this.setState({ focusedIndex: -1, opened: false });\n }\n return;\n }\n var newState = __assign({}, _this.state);\n if (event.keyCode === Keys.enter || event.keyCode === Keys.space) {\n if (focusedIndex >= 0) {\n _this.dispatchClickEvent(event, focusedIndex);\n }\n // Prevent default because otherwise when an item is selected\n // click on the default button gets emitted which opens the popup again.\n event.preventDefault();\n newState.focusedIndex = _this.opened ? -1 : 0,\n newState.opened = !_this.opened;\n _this.dispatchPopupEvent(event, newState.opened);\n }\n else if (_this.opened && event.keyCode === Keys.esc) {\n newState.focusedIndex = -1;\n newState.opened = false;\n _this.dispatchPopupEvent(event, newState.opened);\n }\n if (_this.opened) {\n var newFocused = navigation(focusedIndex, event.keyCode, event.altKey, _this.buttonsData.length);\n newState.focusedIndex = newFocused;\n var arrowKey = event.keyCode === Keys.up || event.keyCode === Keys.down ||\n event.keyCode === Keys.left || event.keyCode === Keys.right;\n if (!event.altKey && (arrowKey || event.keyCode === Keys.home || event.keyCode === Keys.end)) {\n // Needed to notify the parent listeners that event is handled.\n event.preventDefault();\n }\n }\n _this.setState(newState);\n };\n _this.switchFocus = function (focusFn) {\n _this.skipFocus = true;\n focusFn();\n window.setTimeout(function () { return _this.skipFocus = false; }, 0);\n };\n _this.handleFocus = function (event) {\n if (_this.skipFocus) {\n return;\n }\n _this.setState({ focused: true, focusedIndex: _this.opened ? 0 : -1 });\n dispatchEvent(_this.props.onFocus, event, _this, undefined);\n };\n _this.handleBlur = function (event) {\n if (_this.skipFocus) {\n return;\n }\n _this.setState({ focused: false, opened: false, focusedIndex: -1 });\n dispatchEvent(_this.props.onBlur, event, _this, undefined);\n var fireCloseEvent = _this.opened;\n if (fireCloseEvent) {\n _this.dispatchPopupEvent(event, false);\n }\n };\n _this.onItemClick = function (event, clickedItemIndex) {\n _this.setState({ focusedIndex: -1, opened: false });\n _this.dispatchClickEvent(event, clickedItemIndex);\n _this.dispatchPopupEvent(event, false);\n };\n _this.onItemDown = function (event) {\n if (document.activeElement === _this.list) {\n event.preventDefault();\n }\n };\n _this.mouseDown = function (event) {\n event.preventDefault();\n if (_this.element && document.activeElement !== _this.element && document.activeElement !== _this.list) {\n _this.element.focus();\n }\n };\n _this.onPopupClose = function () {\n if (_this.state.focused) {\n _this.switchFocus(function () {\n if (_this.element) {\n _this.element.removeAttribute('tabindex');\n _this.element.focus({ preventScroll: true });\n }\n });\n }\n };\n _this.listRef = function (list) {\n _this.list = list;\n if (list && _this.state.focused) {\n _this.switchFocus(function () {\n list.focus({ preventScroll: true });\n if (_this.element) {\n _this.element.tabIndex = -1;\n }\n });\n }\n };\n _this.onClickMainButton = function (event) {\n if (!_this.buttonsData.length) {\n return;\n }\n var toOpen = !_this.opened;\n _this.setState({\n opened: toOpen,\n focused: true,\n focusedIndex: toOpen ? 0 : -1\n });\n _this.dispatchPopupEvent(event, toOpen);\n };\n _this.dispatchPopupEvent = function (dispatchedEvent, open) {\n dispatchEvent(open ? _this.props.onOpen : _this.props.onClose, dispatchedEvent, _this, undefined);\n };\n validatePackage(packageMetadata);\n return _this;\n }\n Object.defineProperty(DropDownButton.prototype, \"opened\", {\n get: function () {\n return this.props.opened === undefined ? this.state.opened : this.props.opened;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n DropDownButton.prototype.render = function () {\n var _this = this;\n var rtl = this.isRtl();\n var dir = rtl ? 'rtl' : undefined;\n var _a = this.props, id = _a.id, style = _a.style, tabIndex = _a.tabIndex, disabled = _a.disabled;\n this.buttonsData = this.props.items ||\n React.Children.toArray(this.props.children)\n .filter(function (child) { return child && child.type === DropDownButtonItem; })\n .map(function (child) { return child.props; });\n return (React.createElement(\"div\", { id: id, style: style, className: classNames('k-dropdown-button', {\n 'k-focus': this.state.focused\n }, this.props.className), onKeyDown: this.onKeyDown, onFocus: this.handleFocus, onBlur: this.handleBlur, dir: dir, ref: function (el) { return _this.wrapper = el; } },\n React.createElement(Button, { size: this.props.size, shape: this.props.shape, rounded: this.props.rounded, fillMode: this.props.fillMode, themeColor: this.props.themeColor, onClick: this.onClickMainButton, onMouseDown: this.mouseDown, disabled: disabled || undefined, tabIndex: tabIndex, accessKey: this.props.accessKey, icon: this.props.icon, iconClass: this.props.iconClass, className: this.props.buttonClass, imageUrl: this.props.imageUrl, dir: dir, ref: function (btn) { return _this.mainButton = btn && btn.element; }, type: \"button\", \"aria-haspopup\": true, \"aria-expanded\": this.opened || undefined, \"aria-label\": this.props.ariaLabel, \"aria-controls\": this.opened ? this.guid : undefined, id: 'button-' + this.guid, title: this.props.title }, this.props.text),\n this.renderPopup(rtl)));\n };\n /**\n * @hidden\n */\n DropDownButton.prototype.componentDidMount = function () {\n // If this.props.opened is true during the initial render, the popup is not aligned.\n if ((this.props.dir === undefined && this.isRtl()) || this.opened) {\n this.forceUpdate();\n }\n };\n Object.defineProperty(DropDownButton.prototype, \"element\", {\n /**\n * The DOM element of main button.\n */\n get: function () {\n return this.mainButton;\n },\n enumerable: false,\n configurable: true\n });\n DropDownButton.prototype.dispatchClickEvent = function (dispatchedEvent, index) {\n if (!this.isItemDisabled(index)) {\n dispatchEvent(this.props.onItemClick, dispatchedEvent, this, {\n item: this.buttonsData[index],\n itemIndex: index\n });\n }\n };\n DropDownButton.prototype.renderPopup = function (rtl) {\n var _a;\n var _b = this.props.popupSettings, popupSettings = _b === void 0 ? {} : _b;\n var focusedIndex = this.state.focusedIndex;\n return (React.createElement(Popup, { anchor: this.wrapper, show: this.opened, animate: popupSettings.animate, popupClass: classNames('k-menu-popup', popupSettings.popupClass), anchorAlign: popupSettings.anchorAlign || getAnchorAlign(rtl), popupAlign: popupSettings.popupAlign || getPopupAlign(rtl), style: rtl ? { direction: 'rtl' } : undefined, onClose: this.onPopupClose },\n React.createElement(\"ul\", { role: \"menu\", id: this.guid, \"aria-labelledby\": 'button-' + this.guid, tabIndex: -1, \"aria-activedescendant\": focusedIndex >= 0 ? \"\".concat(this.guid, \"-\").concat(focusedIndex) : undefined, ref: this.listRef, className: classNames('k-group k-menu-group k-reset', (_a = {},\n _a[\"k-menu-group-\".concat(kendoThemeMaps.sizeMap[this.props.size] || this.props.size)] = this.props.size,\n _a)) }, this.renderChildItems())));\n };\n DropDownButton.prototype.renderChildItems = function () {\n var _this = this;\n var _a = this.props, item = _a.item, itemRender = _a.itemRender, textField = _a.textField;\n return this.buttonsData.length > 0 ? (this.buttonsData.map(function (dataItem, index) {\n return (React.createElement(ButtonItem, { className: \"k-menu-item\", dataItem: dataItem, textField: textField, focused: _this.state.focusedIndex === index, onClick: _this.onItemClick, onDown: _this.onItemDown, render: itemRender, item: item, index: index, key: index, id: \"\".concat(_this.guid, \"-\").concat(index) }));\n })) : null;\n };\n DropDownButton.prototype.isItemDisabled = function (index) {\n return this.buttonsData[index] ? this.buttonsData[index].disabled : this.props.disabled;\n };\n DropDownButton.prototype.isRtl = function () {\n return this.props.dir !== undefined ? this.props.dir === 'rtl' :\n !!this.wrapper && getComputedStyle(this.wrapper).direction === 'rtl';\n };\n /**\n * @hidden\n */\n DropDownButton.propTypes = {\n accessKey: PropTypes.string,\n ariaLabel: PropTypes.string,\n title: PropTypes.string,\n onFocus: PropTypes.func,\n onBlur: PropTypes.func,\n onItemClick: PropTypes.func,\n onOpen: PropTypes.func,\n onClose: PropTypes.func,\n items: PropTypes.arrayOf(PropTypes.any),\n textField: PropTypes.string,\n tabIndex: PropTypes.number,\n disabled: PropTypes.bool,\n icon: PropTypes.string,\n iconClass: PropTypes.string,\n imageUrl: PropTypes.string,\n popupSettings: PropTypes.object,\n itemRender: PropTypes.func,\n item: PropTypes.func,\n className: PropTypes.string,\n buttonClass: PropTypes.string,\n dir: PropTypes.string\n };\n /**\n * @hidden\n */\n DropDownButton.defaultProps = {\n size: 'medium',\n rounded: 'medium',\n shape: null,\n fillMode: 'solid',\n themeColor: 'base'\n };\n return DropDownButton;\n}(React.Component));\nexport { DropDownButton };\n","import { Keys } from '@progress/kendo-react-common';\n/**\n * @hidden\n */\nvar navigate = function (focusedIndex, keyCode, altKey, total) {\n if (altKey) {\n return focusedIndex;\n }\n var index = Math.min(total - 1, Math.max(0, focusedIndex));\n switch (keyCode) {\n case Keys.enter:\n case Keys.space:\n case Keys.esc:\n return -1;\n case Keys.up:\n case Keys.left:\n return index - 1 < 0 ? total - 1 : index - 1;\n case Keys.down:\n case Keys.right:\n return index + 1 >= total ? 0 : index + 1;\n case Keys.home:\n return 0;\n case Keys.end:\n return total - 1;\n default:\n return focusedIndex;\n }\n};\nexport { navigate };\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-buttons',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666770563,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/**\n * @hidden\n */\nexport var canUseDOM = Boolean(\n// from fbjs\ntypeof window !== 'undefined' &&\n window.document &&\n window.document.createElement);\n","/**\n * @hidden\n */\nexport var classNames = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = {};\n var addLeafKeys = function (arg) { return typeof arg === 'object' ? Object\n .keys(arg)\n .forEach(function (key) {\n result[key] = arg[key];\n }) : result[arg] = true; };\n ;\n var addKeys = function (list) { return list\n .filter(function (arg) { return arg !== true && !!arg; })\n .map(function (arg) {\n return Array.isArray(arg) ?\n addKeys(arg) :\n addLeafKeys(arg);\n }); };\n ;\n addKeys(args);\n return Object\n .keys(result)\n .map(function (key) { return (result[key] && key) || null; })\n .filter(function (el) { return el !== null; })\n .join(' ');\n};\n","import * as React from 'react';\n/** @hidden */\nexport var ZIndexContext = React.createContext(0);\n/** @hidden */\nexport var useZIndexContext = function () { return React.useContext(ZIndexContext); };\nZIndexContext.displayName = 'KendoReactZIndexContext';\n","/**\n * @hidden\n * Dispatches a new event based on an event that was already internally dispatched to KendoReact users.\n *\n * @param eventHandler - The public event handler that is assigned by the user.\n * When undefined, the method is not an option.\n * @param dispatchedEvent - The event that was already dispatched internally.\n * @param target - The target component of the new event.\n * @param eventData - The additional data that will be passed through the new event.\n * When the new event has no additional data\n * other than the `BaseEvent` arguments, pass `undefined`.\n */\nexport function dispatchEvent(eventHandler, dispatchedEvent, target, eventData) {\n if (eventHandler) {\n var eventBaseData = {\n syntheticEvent: dispatchedEvent,\n nativeEvent: dispatchedEvent.nativeEvent,\n target: target\n };\n eventHandler.call(undefined, Object.assign(eventBaseData, eventData));\n }\n}\n","/* eslint-disable no-bitwise */\n/**\n * @hidden\n */\nexport var guid = function () {\n var id = '';\n var i;\n var random;\n for (i = 0; i < 32; i++) {\n random = Math.random() * 16 | 0;\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 return id;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { usePropsContext } from '../hooks/usePropsContext';\n/** @hidden */\nexport var createPropsContext = function () { return React.createContext(function (props) { return props; }); };\n/** @hidden */\nexport var withPropsContext = function (context, Component\n// eslint-disable-next-line react/display-name\n) { return React.forwardRef(function (props, ref) {\n var contextProps = usePropsContext(context, props);\n return (React.createElement(Component, __assign({}, contextProps, { ref: ref })));\n}); };\n","import * as React from 'react';\n/** @hidden */\nexport var usePropsContext = function (context, props) {\n var contextPropsCallback = React.useContext(context);\n var contextProps = contextPropsCallback(props);\n return contextProps;\n};\n","/**\n * @hidden\n */\nexport var Keys = {\n backspace: 8,\n tab: 9,\n enter: 13,\n shift: 16,\n esc: 27,\n space: 32,\n pageUp: 33,\n pageDown: 34,\n end: 35,\n home: 36,\n left: 37,\n up: 38,\n right: 39,\n down: 40,\n delete: 46\n};\n","/**\n * @hidden\n */\nexport var noop = function () { };\n","/** @hidden */\nexport var kendoThemeMaps = {\n sizeMap: {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n },\n roundedMap: {\n small: 'sm',\n medium: 'md',\n large: 'lg'\n }\n};\n","import * as licensing from '@progress/kendo-licensing';\n/**\n * @hidden\n */\nexport function validatePackage(packageMetadata) {\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \".concat(packageMetadata.name, \"\\n\");\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \".concat(packageMetadata.licensingDocsUrl, \" for more information.\\n\");\n console.warn(message);\n }\n}\n","import * as React from 'react';\nimport { Button } from '@progress/kendo-react-buttons';\n/**\n * @hidden\n */\nexport var DialogTitleBar = function (_a) {\n var children = _a.children, onCloseButtonClick = _a.onCloseButtonClick, id = _a.id, closeIcon = _a.closeIcon;\n return (React.createElement(\"div\", { className: \"k-window-titlebar k-dialog-titlebar\", id: id },\n React.createElement(\"div\", { className: \"k-window-title k-dialog-title\" }, children),\n React.createElement(\"div\", { className: \"k-window-actions k-dialog-actions\" }, closeIcon &&\n React.createElement(Button, { role: \"button\", \"aria-label\": \"Close\", onClick: onCloseButtonClick, icon: \"x\", fillMode: \"flat\", className: \"k-window-action k-dialog-action\" }))));\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { DialogTitleBar } from './DialogTitleBar';\nimport { DialogActionsBar } from './DialogActionsBar';\nimport { guid, dispatchEvent, Keys, canUseDOM, ZIndexContext, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\nimport { getMaxZIndex } from './utils';\nimport { DATA_DIALOGS_ID, DEFAULT_DIALOGS_ZINDEX, ZINDEX_DIALOGS_STEP } from './constants';\n// tslint:enable:max-line-length\n/** @hidden */\nvar DialogWithoutContext = /** @class */ (function (_super) {\n __extends(DialogWithoutContext, _super);\n function DialogWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.context = 0;\n _this._id = guid();\n _this.titleId = _this.generateTitleId();\n _this.contentId = _this.generateContentId();\n /**\n * @hidden\n */\n _this.onCloseDialog = function (event) {\n event.preventDefault();\n dispatchEvent(_this.props.onClose, event, _this, undefined);\n };\n /**\n * @hidden\n */\n _this.onKeyDown = function (event) {\n if (event.keyCode === Keys.esc && _this.props.onClose) {\n event.preventDefault();\n _this.onCloseDialog(event);\n }\n var kDialog = _this.element;\n if (kDialog && (event.keyCode === Keys.tab)) {\n var focusableElements = 'button, [href], input, select, textarea, [tabindex]:not([tabindex=\"-1\"])';\n var focusableContent = kDialog.querySelectorAll(focusableElements);\n var firstFocusableElement = focusableContent[0];\n var lastFocusableElement = focusableContent[focusableContent.length - 1];\n var currentDocument = _this.getDocument();\n if (event.shiftKey) {\n if ((currentDocument && currentDocument.activeElement === firstFocusableElement) ||\n currentDocument && currentDocument.activeElement === _this.element) {\n lastFocusableElement.focus();\n event.preventDefault();\n }\n }\n else {\n if (currentDocument && currentDocument.activeElement === lastFocusableElement) {\n firstFocusableElement.focus();\n event.preventDefault();\n }\n }\n }\n };\n _this.getCurrentZIndex = function () {\n if (!_this.state || _this.context === undefined) {\n return _this.context ? _this.context : DEFAULT_DIALOGS_ZINDEX;\n }\n return _this.state.zIndex > (_this.context ? _this.context + ZINDEX_DIALOGS_STEP : 0) ? _this.state.zIndex : _this.context + ZINDEX_DIALOGS_STEP;\n };\n _this.getDocument = function () {\n return _this.props.appendTo ? _this.props.appendTo.ownerDocument : document;\n };\n validatePackage(packageMetadata);\n _this.state = {\n zIndex: getMaxZIndex(_this.getCurrentZIndex(), _this.getDocument(), _this._id)\n };\n return _this;\n }\n /**\n * @hidden\n */\n DialogWithoutContext.prototype.componentDidMount = function () {\n if (this.element) {\n if (this.props.autoFocus) {\n this.element.focus();\n }\n }\n };\n /**\n * @hidden\n */\n DialogWithoutContext.prototype.render = function () {\n var _a;\n var _this = this;\n var id = this.props.id !== undefined ? this.props.id : this.titleId;\n var _b = this.props, title = _b.title, width = _b.width, height = _b.height, children = _b.children, minWidth = _b.minWidth, dir = _b.dir, style = _b.style, contentStyle = _b.contentStyle;\n var elementsArray = React.Children.toArray(children);\n var content = this.getContent(elementsArray);\n var actions = this.getActionBar(elementsArray);\n var aria = title ? {\n 'aria-labelledby': id\n } : null;\n var closeIcon = this.props.closeIcon !== undefined ? this.props.closeIcon : true;\n var currentZIndex = this.getCurrentZIndex();\n var dialogElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n React.createElement(\"div\", __assign({}, (_a = {}, _a[DATA_DIALOGS_ID] = this._id, _a), { className: 'k-dialog-wrapper' + (this.props.className ? ' ' + this.props.className : ''), onKeyDown: this.onKeyDown, tabIndex: 0, dir: dir, style: __assign({ zIndex: currentZIndex }, style), ref: (function (el) { return _this.element = el; }) }),\n React.createElement(\"div\", { className: \"k-overlay\" }),\n React.createElement(\"div\", __assign({}, aria, { className: \"k-widget k-window k-dialog\", role: \"dialog\", \"aria-modal\": true, \"aria-describedby\": this.contentId, style: { width: width, height: height, minWidth: minWidth } }),\n this.props.title &&\n React.createElement(DialogTitleBar, { closeIcon: closeIcon, onCloseButtonClick: this.onCloseDialog, id: id }, title),\n React.createElement(\"div\", { className: \"k-window-content k-dialog-content\", style: contentStyle, id: this.contentId }, content),\n actions))));\n if (canUseDOM) {\n return this.props.appendTo !== null ?\n ReactDOM.createPortal(dialogElement, this.props.appendTo || document.body) :\n dialogElement;\n }\n return null;\n };\n DialogWithoutContext.prototype.getActionBar = function (children) {\n return children.filter(function (child) { return child && child.type === DialogActionsBar; });\n };\n DialogWithoutContext.prototype.getContent = function (children) {\n return children.filter(function (child) {\n return child && child.type !== DialogActionsBar;\n });\n };\n DialogWithoutContext.prototype.generateTitleId = function () {\n return 'dialog-title' + this._id;\n };\n DialogWithoutContext.prototype.generateContentId = function () {\n return 'dialog-content' + this._id;\n };\n DialogWithoutContext.displayName = 'Dialog';\n /**\n * @hidden\n */\n DialogWithoutContext.propTypes = {\n title: PropTypes.any,\n id: PropTypes.string,\n dir: PropTypes.string,\n style: PropTypes.object,\n closeIcon: PropTypes.bool,\n width: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n height: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n minWidth: PropTypes.oneOfType([PropTypes.number, PropTypes.string]),\n autoFocus: PropTypes.bool\n };\n /**\n * @hidden\n */\n DialogWithoutContext.defaultProps = {\n autoFocus: false\n };\n /**\n * @hidden\n */\n DialogWithoutContext.contextType = ZIndexContext;\n return DialogWithoutContext;\n}(React.Component));\n/**\n * Represents the PropsContext of the `Dialog` component.\n * Used for global configuration of all `Dialog` instances.\n */\nexport var DialogPropsContext = createPropsContext();\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Dialog component]({% slug overview_dialog %}).\n *\n * Accepts properties of type [DialogProps]({% slug api_dialogs_dialogprops %}).\n * Obtaining the `ref` returns an object of type [DialogHandle]({% slug api_dialogs_dialoghandle %}).\n */\nexport var Dialog = withPropsContext(DialogPropsContext, DialogWithoutContext);\nDialog.displayName = 'KendoReactDialog';\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\n/**\n * Returns the action bar of the Dialog.\n *\n * @returns React.ReactElement\n */\nexport var DialogActionsBar = function (props) {\n var _a;\n var _b = props.layout, layout = _b === void 0 ? defaultProps.layout : _b, children = props.children;\n var wrapperClasses = classNames('k-dialog-buttongroup', 'k-actions', (_a = {},\n _a[\"k-actions-\".concat(layout)] = layout,\n _a));\n return (React.createElement(\"div\", { className: wrapperClasses }, children));\n};\nDialogActionsBar.propTypes = {\n children: PropTypes.any,\n layout: PropTypes.oneOf(['start', 'center', 'end', 'stretched'])\n};\nvar defaultProps = {\n layout: 'stretched'\n};\n","/** @hidden */\nexport var DATA_DIALOGS_ID = 'data-windowid';\n/** @hidden */\nexport var DEFAULT_DIALOGS_ZINDEX = 10002;\n/** @hidden */\nexport var ZINDEX_DIALOGS_STEP = 2;\n/** @hidden */\nexport var DIALOGS_SELECTOR = '.k-window:not(.k-dialog), .k-dialog-wrapper';\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-dialogs',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666770790,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","import { DATA_DIALOGS_ID, DIALOGS_SELECTOR, ZINDEX_DIALOGS_STEP } from './constants';\n/** @hidden */\nexport var getMaxZIndex = function (currentZIndex, currentDocument, currentWindowId) {\n var maxZindex = currentZIndex;\n if (currentDocument && currentDocument.defaultView) {\n var allWindows = currentDocument.querySelectorAll(DIALOGS_SELECTOR);\n var zIndexChanged_1 = false;\n allWindows.forEach(function (KRwindow) {\n var computedStyle = currentDocument.defaultView.getComputedStyle(KRwindow, null);\n var dataId = KRwindow.getAttribute(DATA_DIALOGS_ID);\n if (dataId !== currentWindowId && computedStyle.zIndex !== null) {\n var zIndexValue = parseInt(computedStyle.zIndex, 10);\n if (zIndexValue >= maxZindex) {\n maxZindex = zIndexValue;\n zIndexChanged_1 = true;\n }\n }\n });\n return zIndexChanged_1 ? (maxZindex + ZINDEX_DIALOGS_STEP) : maxZindex;\n }\n return maxZindex;\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nvar SEGMENT_COUNT = {\n 'pulsing': 2,\n 'infinite-spinner': 3,\n 'converging-spinner': 4\n};\nvar TYPE_CLASSES = {\n 'pulsing': 'k-loader-pulsing-2',\n 'infinite-spinner': 'k-loader-spinner-3',\n 'converging-spinner': 'k-loader-spinner-4'\n};\n/**\n * Represents the [KendoReact Loader component]({% slug overview_loader %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Loader = React.forwardRef(function (props, target) {\n validatePackage(packageMetadata);\n var className = props.className, style = props.style;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); });\n var size = React.useMemo(function () { return props.size || defaultProps.size; }, [props.size]);\n var themeColor = React.useMemo(function () { return props.themeColor || defaultProps.themeColor; }, [props.themeColor]);\n var type = React.useMemo(function () { return props.type || defaultProps.type; }, [props.type]);\n var LoaderClasses = React.useMemo(function () { return classNames('k-loader', {\n 'k-loader-sm': size === 'small',\n 'k-loader-md': size === 'medium',\n 'k-loader-lg': size === 'large',\n 'k-loader-primary': themeColor === 'primary',\n 'k-loader-secondary': themeColor === 'secondary',\n 'k-loader-tertiary': themeColor === 'tertiary',\n 'k-loader-info': themeColor === 'info',\n 'k-loader-success': themeColor === 'success',\n 'k-loader-warning': themeColor === 'warning',\n 'k-loader-error': themeColor === 'error',\n 'k-loader-dark': themeColor === 'dark',\n 'k-loader-light': themeColor === 'light',\n 'k-loader-inverse': themeColor === 'inverse'\n }, className, TYPE_CLASSES[type]); }, [\n size, themeColor, className, type\n ]);\n var spans = new Array(SEGMENT_COUNT[type]);\n spans.fill(0, 0, SEGMENT_COUNT[type]);\n return (React.createElement(\"div\", { className: LoaderClasses, style: style },\n React.createElement(\"div\", { className: \"k-loader-canvas\" }, spans.map(function (_, i) { return React.createElement(\"span\", { key: i, className: \"k-loader-segment\" }); }))));\n});\nLoader.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n type: PropTypes.oneOf([\n 'pulsing',\n 'infinite-spinner',\n 'converging-spinner'\n ]),\n size: PropTypes.oneOf(['small', 'medium', 'large']),\n themeColor: PropTypes.oneOf([\n 'primary', 'secondary', 'tertiary',\n 'info', 'success', 'warning',\n 'error', 'dark', 'light', 'inverse'\n ])\n};\nvar defaultProps = {\n size: 'medium',\n themeColor: 'primary',\n type: 'pulsing'\n};\nLoader.defaultProps = defaultProps;\nLoader.displayName = 'KendoLoader';\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-indicators',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666771487,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/**\n * Represents the [KendoReact Skeleton component]({% slug overview_skeleton %}).\n *\n * @example\n * ```jsx\n * const App = () => {\n * return (\n * \n * );\n * };\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nexport var Skeleton = React.forwardRef(function (props, target) {\n validatePackage(packageMetadata);\n var className = props.className, style = props.style;\n var elementRef = React.useRef(null);\n var focusElement = React.useCallback(function () {\n if (elementRef.current) {\n elementRef.current.focus();\n }\n }, []);\n React.useImperativeHandle(target, function () { return ({\n element: elementRef.current,\n focus: focusElement\n }); });\n var shape = React.useMemo(function () { return props.shape || defaultProps.shape; }, [props.shape]);\n var animation = React.useMemo(function () {\n if (props.animation === false) {\n return false;\n }\n else {\n return props.animation || defaultProps.animation;\n }\n }, [props.animation]);\n var skeletonClasses = React.useMemo(function () { return classNames('k-skeleton', {\n 'k-skeleton-circle': shape === 'circle',\n 'k-skeleton-rectangle': shape === 'rectangle',\n 'k-skeleton-text': shape === 'text',\n 'k-skeleton-pulse': (typeof animation === 'object' && animation.type === 'pulse'),\n 'k-skeleton-wave': (typeof animation === 'object' && animation.type === 'wave') || (animation === true)\n }, className); }, [shape, animation, className]);\n return (React.createElement(\"span\", { ref: elementRef, className: skeletonClasses, style: style }));\n});\nSkeleton.propTypes = {\n className: PropTypes.string,\n style: PropTypes.object,\n animation: PropTypes.shape({\n type: PropTypes.oneOf(['wave', 'pulse'])\n }),\n shape: PropTypes.oneOf(['circle', 'rectangle', 'text'])\n};\nvar defaultProps = {\n shape: 'text',\n animation: { type: 'pulse' }\n};\nSkeleton.defaultProps = defaultProps;\nSkeleton.displayName = 'KendoSkeleton';\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { guid, classNames, createPropsContext, withPropsContext } from '@progress/kendo-react-common';\nimport { FloatingLabel } from '@progress/kendo-react-labels';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\n/** @hidden */\nvar InputWithoutContext = /** @class */ (function (_super) {\n __extends(InputWithoutContext, _super);\n function InputWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n _this._input = null;\n _this._inputId = guid();\n /**\n * @hidden\n */\n _this.focus = function () {\n if (_this._input) {\n _this._input.focus();\n }\n };\n _this.isInvalid = function (state) {\n var result = false;\n for (var prop in state) {\n if (state.hasOwnProperty(prop)) {\n result = result || Boolean(state[prop]);\n }\n }\n return result;\n };\n /**\n * @hidden\n */\n _this.setValidity = function () {\n if (_this._input && _this._input.setCustomValidity) {\n _this.validity.valid || !_this.validityStyles\n ? _this._input.classList.remove('k-invalid')\n : _this._input.classList.add('k-invalid');\n _this._input.setCustomValidity(_this.validity.valid\n ? ''\n : _this.props.validationMessage || '');\n }\n };\n _this.handleChange = function (event) {\n _this.setState({\n value: event.target.value\n });\n _this.valueDuringOnChange = event.target.value;\n if (_this.props.onChange) {\n _this.props.onChange.call(undefined, {\n syntheticEvent: event,\n nativeEvent: event.nativeEvent,\n value: event.target.value,\n target: _this\n });\n }\n _this.valueDuringOnChange = undefined;\n };\n /**\n * @hidden\n */\n _this.handleAutoFill = function (e) {\n if (e.animationName === 'autoFillStart') {\n var parent_1 = e.target.parentNode;\n if (parent_1 && parent_1.classList.contains('k-empty')) {\n parent_1.classList.remove('k-empty');\n }\n }\n };\n validatePackage(packageMetadata);\n _this.state = {\n value: _this.props.defaultValue || InputWithoutContext.defaultProps.defaultValue\n };\n return _this;\n }\n Object.defineProperty(InputWithoutContext.prototype, \"element\", {\n /**\n * Gets the native input element of the Input component.\n */\n get: function () {\n return this._input;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InputWithoutContext.prototype, \"value\", {\n /**\n * Gets the value of the Input.\n */\n get: function () {\n return this.valueDuringOnChange !== undefined\n ? this.valueDuringOnChange\n : this.props.value !== undefined\n ? this.props.value\n : this.state.value;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InputWithoutContext.prototype, \"name\", {\n /**\n * Gets the `name` property of the Input.\n */\n get: function () {\n return this.props.name;\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InputWithoutContext.prototype, \"validity\", {\n /**\n * Represents the validity state into which the Input is set.\n */\n get: function () {\n var result = {\n badInput: this._input ? this._input.validity.badInput : false,\n patternMismatch: this._input\n ? this._input.validity.patternMismatch\n : false,\n rangeOverflow: this._input ? this._input.validity.rangeOverflow : false,\n rangeUnderflow: this._input ? this._input.validity.rangeUnderflow : false,\n stepMismatch: this._input ? this._input.validity.stepMismatch : false,\n tooLong: this._input ? this._input.validity.tooLong : false,\n typeMismatch: this._input ? this._input.validity.typeMismatch : false,\n valueMissing: this._input ? this._input.validity.valueMissing : false\n };\n return __assign(__assign({}, result), { customError: this.props.validationMessage !== undefined, valid: this.props.valid !== undefined\n ? this.props.valid\n : this._input\n ? !this.isInvalid(result)\n : true });\n },\n enumerable: false,\n configurable: true\n });\n Object.defineProperty(InputWithoutContext.prototype, \"validityStyles\", {\n /**\n * @hidden\n */\n get: function () {\n return this.props.validityStyles !== undefined\n ? this.props.validityStyles\n : InputWithoutContext.defaultProps.validityStyles;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n InputWithoutContext.prototype.componentDidMount = function () {\n this.forceUpdate();\n };\n /**\n * @hidden\n */\n InputWithoutContext.prototype.componentDidUpdate = function () {\n this.setValidity();\n };\n /**\n * @hidden\n */\n InputWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, className = _a.className, label = _a.label, id = _a.id, validationMessage = _a.validationMessage, defaultValue = _a.defaultValue, valid = _a.valid, \n // Removed to support direct use in Form Field component\n visited = _a.visited, touched = _a.touched, modified = _a.modified, ariaLabelledBy = _a.ariaLabelledBy, ariaDescribedBy = _a.ariaDescribedBy, validityStyles = _a.validityStyles, style = _a.style, ariaLabel = _a.ariaLabel, props = __rest(_a, [\"className\", \"label\", \"id\", \"validationMessage\", \"defaultValue\", \"valid\", \"visited\", \"touched\", \"modified\", \"ariaLabelledBy\", \"ariaDescribedBy\", \"validityStyles\", \"style\", \"ariaLabel\"]);\n var inputId = id || this._inputId;\n var isValid = !this.validityStyles || this.validity.valid;\n var inputClassName = classNames(className, 'k-input k-input-md k-rounded-md k-input-solid');\n var textbox = (React.createElement(\"input\", __assign({ \"aria-labelledby\": ariaLabelledBy, \"aria-describedby\": ariaDescribedBy, \"aria-disabled\": this.props.disabled || undefined, \"aria-invalid\": !isValid || undefined, \"aria-label\": ariaLabel || undefined }, props, { style: !label\n ? style\n : undefined, value: this.value, id: inputId, className: inputClassName, onChange: this.handleChange, onAnimationStart: this.handleAutoFill, ref: function (el) {\n _this._input = el;\n } })));\n return label ?\n (React.createElement(FloatingLabel, { label: label, editorId: inputId, editorValue: String(this.value), editorValid: isValid, editorDisabled: props.disabled, editorPlaceholder: props.placeholder, children: textbox, style: style, dir: props.dir }))\n : textbox;\n };\n InputWithoutContext.displayName = 'Input';\n /**\n * @hidden\n */\n InputWithoutContext.propTypes = {\n label: PropTypes.string,\n validationMessage: PropTypes.string,\n required: PropTypes.bool,\n validate: PropTypes.bool,\n id: PropTypes.string,\n ariaLabelledBy: PropTypes.string,\n ariaDescribedBy: PropTypes.string,\n ariaLabel: PropTypes.string\n };\n /**\n * @hidden\n */\n InputWithoutContext.defaultProps = {\n defaultValue: '',\n required: false,\n validityStyles: true\n };\n return InputWithoutContext;\n}(React.Component));\nexport { InputWithoutContext };\n/**\n * Represents the PropsContext of the `Input` component.\n * Used for global configuration of all `Input` instances.\n *\n * For more information, refer to the [Inputs Props Context]({% slug props-context_inputs %}) article.\n */\nexport var InputPropsContext = createPropsContext();\n;\n/* eslint-disable @typescript-eslint/no-redeclare -- intentionally naming the component the same as the type */\n/**\n * Represents the [KendoReact Input component]({% slug overview_textbox %}).\n *\n * Accepts properties of type [InputProps]({% slug api_inputs_inputprops %}).\n * Obtaining the `ref` returns an object of type [InputHandle]({% slug api_inputs_inputhandle %}).\n */\nexport var Input = withPropsContext(InputPropsContext, InputWithoutContext);\nInput.displayName = 'KendoReactInput';\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-inputs',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666770840,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-intl',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666770489,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","import * as coreIntl from '@progress/kendo-intl';\nimport * as licensing from '@progress/kendo-licensing';\nimport { packageMetadata } from '../package-metadata';\n/* eslint-disable max-len */\n/**\n * A service which provides internationalization methods and is bound to a specific locale.\n */\nvar IntlService = /** @class */ (function () {\n /**\n * Creates a new instance of the internationalization service.\n *\n * @param locale - The locale that will be used by the internationalization methods.\n */\n function IntlService(locale) {\n this.locale = locale;\n if (typeof licensing !== 'undefined') {\n licensing.validatePackage(packageMetadata);\n }\n else {\n var message = \"License activation failed for \".concat(packageMetadata.name, \"\\n\");\n message += 'The @progress/kendo-licensing script is not loaded.\\n';\n message += \"See \".concat(packageMetadata.licensingDocsUrl, \" for more information.\\n\");\n console.warn(message);\n }\n if (locale === '' && process.env.NODE_ENV !== 'production') {\n throw 'Locale should not be empty string';\n }\n }\n /**\n * Formats a string with placeholders such as `Total amount {0:c}`.\n *\n * @param format - The format string.\n * @param values - One or more values to output in the format string placeholders.\n * @return - The formatted string.\n */\n IntlService.prototype.format = function (format) {\n var values = [];\n for (var _i = 1; _i < arguments.length; _i++) {\n values[_i - 1] = arguments[_i];\n }\n /* The following code retains backward compatibility with the old API */\n if (values.length === 1 && Array.isArray(values[0])) {\n return coreIntl.format(format, values[0], this.locale);\n }\n return coreIntl.format(format, values, this.locale);\n };\n /**\n * Converts a `Date` object to a string based on the specified format. If no format is provided, the default short date format is used.\n *\n * @param value - The date which will be formatted.\n * @param format - The format string or options.\n * @return - The formatted date.\n */\n IntlService.prototype.formatDate = function (value, format) {\n return coreIntl.formatDate(value, format, this.locale);\n };\n /**\n * Converts an object to a string based on the specified format.\n *\n * @param value - The value which will be formatted.\n * @param format - The format to use.\n * @return - The formatted object.\n */\n IntlService.prototype.toString = function (value, format) {\n return coreIntl.toString(value, format, this.locale);\n };\n /**\n * Converts a string to a `Number`.\n *\n * @param value - The string which will be parsed.\n * @param format - The format string or options.\n * @return - The parsed number.\n */\n IntlService.prototype.parseNumber = function (value, format) {\n return coreIntl.parseNumber(value, this.locale, format);\n };\n /**\n * Converts a string to a `Date` object based on the specified format.\n *\n * @param value - The string which will be converted.\n * @param format - The format strings or options.\n * @return - The parsed date.\n */\n IntlService.prototype.parseDate = function (value, format) {\n return coreIntl.parseDate(value, format, this.locale);\n };\n /**\n * Converts a `Number` to a string based on the specified format.\n *\n * @param value - The number which will be formatted.\n * @param format - The format string or options.\n * @return - The formatted number.\n */\n IntlService.prototype.formatNumber = function (value, format) {\n return coreIntl.formatNumber(value, format, this.locale);\n };\n /**\n * Returns a localized date field name based on specific `dateFieldName` options.\n *\n * @param options - The detailed configuration for the desired date field name.\n * @returns - The localized date field name from the current locale based on the option.\n */\n IntlService.prototype.dateFieldName = function (options) {\n return coreIntl.dateFieldName(options, this.locale);\n };\n /**\n * Returns the day names from the current locale based on the option.\n *\n * @param options - The detailed configuration for the desired date format.\n * @return - The day names from the current locale based on the option.\n */\n IntlService.prototype.dateFormatNames = function (options) {\n return coreIntl.dateFormatNames(this.locale, options);\n };\n /**\n * Splits the date format into objects which contain information about each part of the pattern.\n *\n * @param format - The format string or options.\n * @returns - The date format parts.\n */\n IntlService.prototype.splitDateFormat = function (format) {\n return coreIntl.splitDateFormat(format, this.locale);\n };\n /**\n * Returns the number symbols from the current locale.\n *\n * @return - The number symbols from the current locale.\n */\n IntlService.prototype.numberSymbols = function () {\n return coreIntl.numberSymbols(this.locale);\n };\n /**\n * Returns the first day index, starting from Sunday.\n *\n * @return - The index of the first day of the week (0 == Sunday).\n */\n IntlService.prototype.firstDay = function () {\n return coreIntl.firstDay(this.locale);\n };\n return IntlService;\n}());\nexport { IntlService };\n// tslint:enable:max-line-length\n","import { messages } from './messages';\n/**\n * A service which provides localization methods.\n */\nvar LocalizationService = /** @class */ (function () {\n function LocalizationService(language) {\n this.language = language;\n if (language === '' && process.env.NODE_ENV !== 'production') {\n throw 'Language should not be an empty string';\n }\n }\n /* eslint-disable max-len */\n /**\n * Provides a string based on a key for the current language. When no string for the current language is available under this key, the `defaultValue` is returned.\n *\n * @param key - The key which identifies the string for the current language.\n * @param defaultValue - The default value which will be returned when no string\n * for the current language is available under the key.\n * @return - The string for the current language.\n */\n // tslint:enable:max-line-length\n LocalizationService.prototype.toLanguageString = function (key, defaultValue) {\n if (this.language &&\n messages[this.language] &&\n messages[this.language].hasOwnProperty(key)) {\n return messages[this.language][key];\n }\n else {\n return defaultValue;\n }\n };\n return LocalizationService;\n}());\nexport { LocalizationService };\n","/**\n * @hidden\n */\nexport var messages = Object.create({});\n","import * as React from 'react';\nimport { IntlService } from '../Intl/IntlService';\nimport { LocalizationService } from '../Localization/LocalizationService';\n/** @hidden */\nexport var GlobalizationContext = React.createContext({\n intl: new IntlService('en'),\n localization: new LocalizationService()\n});\n","import { IntlService } from './Intl/IntlService';\nimport { LocalizationService } from './Localization/LocalizationService';\nimport { GlobalizationContext } from './globalization/GlobalizationContext';\n/* eslint-disable max-len */\n/**\n * Provides an internationalization service. When the passed component is a direct or indirect child of `IntlProvider`, the returned service uses the locale of the provider. Otherwise, uses `en` as a default locale. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideIntlService(component) {\n if (!component && process.env.NODE_ENV !== 'production') {\n throw \"Passed component - \".concat(component, \" is invalid.\");\n }\n var context = component.context;\n return context && context.intl\n ? context.intl\n : new IntlService('en');\n}\n/**\n * Provides a localization service. When the passed component is a direct or indirect child of `LocalizationProvider`, the returned service uses the language of the provider. To handle locale changes, call the method on each `render`.\n *\n * @param componentClass - The React component class that will use the internationalization service.\n */\nexport function provideLocalizationService(component) {\n if (!component && process.env.NODE_ENV !== 'production') {\n throw \"Passed component - \".concat(component, \" is invalid.\");\n }\n var context = component.context;\n return context && context.localization\n ? context.localization\n : new LocalizationService();\n}\n/**\n * A method which registers a component class or a functional stateless component for internationalization. When a component of that type is a direct or indirect child of `IntlProvider`, the locale of the provider is used. Otherwise, uses `en` as a default locale.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForIntl(component) {\n component.contextType = GlobalizationContext;\n}\n/**\n * A method which registers a component class or a stateless functional component for localization. When a component of that type is a direct or indirect child of `LocalizationProvider`, the language of the provider is used.\n *\n * @param component - The React component class that will use the internationalization methods.\n */\nexport function registerForLocalization(component) {\n component.contextType = GlobalizationContext;\n}\n// tslint:enable:max-line-length\n","var _a;\n/**\n * @hidden\n */\nexport var labelsOptional = 'labels.optional';\n/**\n * @hidden\n */\nexport var messages = (_a = {},\n _a[labelsOptional] = '(Optional)',\n _a);\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-labels',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666770663,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { provideLocalizationService, registerForLocalization } from '@progress/kendo-react-intl';\nimport { labelsOptional, messages } from './messages';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from './package-metadata';\n/**\n * Represents the KendoReact FloatingLabel component.\n *\n * @example\n * ```jsx\n * const sizes = [\"X-Small\", \"Small\", \"Medium\", \"Large\", \"X-Large\", \"2X-Large\"];\n * const App = () => {\n * const [ddlState, setDdlState] = React.useState();\n * const editorId = 'ddl-sizes';\n * return (\n * \n * setDdlState(e.target.value)}\n * />\n * \n * );\n * };\n *\n * ReactDOM.render(, document.querySelector('my-app'));\n * ```\n */\nvar FloatingLabel = /** @class */ (function (_super) {\n __extends(FloatingLabel, _super);\n function FloatingLabel(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.state = {\n focused: false\n };\n /**\n * @hidden\n */\n _this.handleFocus = function (_) {\n _this.setState({ focused: true });\n };\n /**\n * @hidden\n */\n _this.handleBlur = function (_) {\n _this.setState({ focused: false });\n };\n validatePackage(packageMetadata);\n return _this;\n }\n /**\n * @hidden\n */\n FloatingLabel.prototype.render = function () {\n var _a = this.props, label = _a.label, editorId = _a.editorId, className = _a.className, editorValue = _a.editorValue, editorPlaceholder = _a.editorPlaceholder, editorValid = _a.editorValid, editorDisabled = _a.editorDisabled, style = _a.style, id = _a.id, optional = _a.optional;\n var localizationService = provideLocalizationService(this);\n var localizedOptional = optional ? localizationService\n .toLanguageString(labelsOptional, messages[labelsOptional]) : '';\n var optionalElement = localizedOptional && (React.createElement(\"span\", { className: 'k-label-optional' }, localizedOptional));\n var spanClassNames = classNames({\n 'k-floating-label-container': true,\n 'k-focus': this.state.focused,\n 'k-empty': !editorPlaceholder && !editorValue && (editorValue !== 0),\n 'k-text-disabled': editorDisabled,\n 'k-rtl': this.props.dir === 'rtl'\n }, className);\n var labelClassNames = classNames({\n 'k-label': true,\n 'k-text-error': editorValid === false,\n 'k-text-disabled': editorDisabled\n });\n return (React.createElement(\"span\", { id: this.props.id, className: spanClassNames, onFocus: this.handleFocus, onBlur: this.handleBlur, style: style, dir: this.props.dir },\n this.props.children,\n label\n ? editorId\n ? React.createElement(\"label\", { id: id, htmlFor: editorId, className: labelClassNames },\n label,\n optionalElement)\n : React.createElement(\"span\", { id: id, className: labelClassNames },\n label,\n optionalElement)\n : null));\n };\n /**\n * @hidden\n */\n FloatingLabel.propTypes = {\n label: PropTypes.string,\n editorId: PropTypes.string,\n editorValue: PropTypes.oneOfType([PropTypes.string, PropTypes.bool, PropTypes.number]),\n editorPlaceholder: PropTypes.string,\n editorValid: PropTypes.bool,\n editorDisabled: PropTypes.bool,\n id: PropTypes.string,\n style: PropTypes.object,\n className: PropTypes.string,\n optional: PropTypes.bool\n };\n return FloatingLabel;\n}(React.Component));\nexport { FloatingLabel };\nregisterForLocalization(FloatingLabel);\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nvar __rest = (this && this.__rest) || function (s, e) {\n var t = {};\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)\n t[p] = s[p];\n if (s != null && typeof Object.getOwnPropertySymbols === \"function\")\n for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {\n if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))\n t[p[i]] = s[p[i]];\n }\n return t;\n};\nimport * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nimport { cardType } from './interfaces/Enums';\nimport { cardOrientation } from './interfaces/Enums';\nimport { validatePackage } from '@progress/kendo-react-common';\nimport { packageMetadata } from '../package-metadata';\nexport var Card = React.forwardRef(function (props, ref) {\n var _a;\n validatePackage(packageMetadata);\n var children = props.children, dir = props.dir, style = props.style, className = props.className, type = props.type, orientation = props.orientation, customProps = __rest(props, [\"children\", \"dir\", \"style\", \"className\", \"type\", \"orientation\"]);\n var target = React.useRef(null);\n var chipRef = React.useRef(null);\n React.useImperativeHandle(target, function () { return ({\n element: chipRef.current,\n props: props\n }); });\n React.useImperativeHandle(ref, function () { return target.current; });\n return (React.createElement(\"div\", __assign({ dir: dir, style: style, ref: chipRef, className: classNames('k-card', className, (_a = {}, _a[\"k-card-\".concat(type)] = type !== cardType.DEFAULT, _a), orientation !== cardOrientation.HORIZONTAL ? 'k-card-vertical' : 'k-card-horizontal') }, customProps), children));\n});\nCard.displayName = 'KendoReactCard';\nCard.propTypes = {\n children: PropTypes.node,\n className: PropTypes.string,\n dir: PropTypes.string,\n orientation: PropTypes.oneOf(['horizontal', 'vertical']),\n style: PropTypes.object,\n type: PropTypes.oneOf(['default', 'primary', 'info', 'success', 'warning', 'error'])\n};\nCard.defaultProps = {\n type: cardType.DEFAULT,\n orientation: cardOrientation.VERTICAL\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nexport var CardBody = function (props) {\n return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-body', props.className) }, props.children));\n};\nCardBody.propTypes = {\n className: PropTypes.string\n};\n","import * as React from 'react';\nimport * as PropTypes from 'prop-types';\nimport { classNames } from '@progress/kendo-react-common';\nexport var CardTitle = function (props) {\n return (React.createElement(\"div\", { style: props.style, className: classNames('k-card-title', props.className) }, props.children));\n};\nCardTitle.propTypes = {\n className: PropTypes.string\n};\n","export var avatarType;\n(function (avatarType) {\n avatarType[\"TEXT\"] = \"text\";\n avatarType[\"IMAGE\"] = \"image\";\n avatarType[\"ICON\"] = \"icon\";\n})(avatarType || (avatarType = {}));\nexport var cardOrientation;\n(function (cardOrientation) {\n cardOrientation[\"HORIZONTAL\"] = \"horizontal\";\n cardOrientation[\"VERTICAL\"] = \"vertical\";\n})(cardOrientation || (cardOrientation = {}));\nexport var cardType;\n(function (cardType) {\n cardType[\"DEFAULT\"] = \"default\";\n cardType[\"primary\"] = \"primary\";\n cardType[\"INFO\"] = \"info\";\n cardType[\"SUCCESS\"] = \"success\";\n cardType[\"WARNING\"] = \"warning\";\n cardType[\"ERROR\"] = \"error\";\n})(cardType || (cardType = {}));\nexport var cardActionsLayout;\n(function (cardActionsLayout) {\n cardActionsLayout[\"START\"] = \"start\";\n cardActionsLayout[\"CENTER\"] = \"center\";\n cardActionsLayout[\"END\"] = \"end\";\n cardActionsLayout[\"STRETCHED\"] = \"stretched\";\n})(cardActionsLayout || (cardActionsLayout = {}));\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-layout',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666770995,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var clearSlide = function (element) {\n element.style.transitionDuration = '';\n Array.from(element.classList).forEach(function (c) {\n if (c.startsWith('k-slide-')) {\n element.classList.remove(c);\n }\n });\n};\nvar firefox = typeof window !== 'undefined' &&\n /Firefox/.test(window.navigator.userAgent);\n/**\n * @hidden\n */\nexport var slide = function (element, direction, duration, type, callback) {\n if (duration === 0) {\n return callback();\n }\n var slideClass = 'k-slide-' + direction + '-' + type;\n var slideActiveClass = slideClass + '-active';\n var transitionend = function (e) {\n // if event is attached using react,\n // the animation does not work well in firefox,\n // when the show/hide button is toggled quickly.\n if (e.target === element) {\n element.removeEventListener('transitionend', transitionend);\n clearSlide(element);\n if (type === 'exit') {\n element.style.display = 'none';\n }\n else {\n element.style.display = '';\n }\n callback();\n }\n };\n element.addEventListener('transitionend', transitionend);\n var ownerDocument = element.ownerDocument;\n if (!ownerDocument) {\n return;\n }\n var defaultView = ownerDocument.defaultView;\n if (!defaultView) {\n return;\n }\n var animate = function () {\n clearSlide(element);\n element.classList.add(slideClass);\n defaultView.requestAnimationFrame(function () {\n element.style.transitionDuration = duration + 'ms';\n element.classList.add(slideActiveClass);\n });\n };\n if (firefox) {\n defaultView.requestAnimationFrame(animate);\n }\n else {\n animate();\n }\n};\n","/**\n * @hidden\n */\nexport var packageMetadata = {\n name: '@progress/kendo-react-popup',\n productName: 'KendoReact',\n productCodes: ['KENDOUIREACT', 'KENDOUICOMPLETE'],\n publishDate: 1666770541,\n version: '',\n licensingDocsUrl: 'https://www.telerik.com/kendo-react-ui/my-license/?utm_medium=product&utm_source=kendoreact&utm_campaign=kendo-ui-react-purchase-license-keys-warning'\n};\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n extendStatics = Object.setPrototypeOf ||\n ({ __proto__: [] } instanceof Array && function (d, b) { d.__proto__ = b; }) ||\n function (d, b) { for (var p in b) if (Object.prototype.hasOwnProperty.call(b, p)) d[p] = b[p]; };\n return extendStatics(d, b);\n };\n return function (d, b) {\n if (typeof b !== \"function\" && b !== null)\n throw new TypeError(\"Class extends value \" + String(b) + \" is not a constructor or null\");\n extendStatics(d, b);\n function __() { this.constructor = d; }\n d.prototype = b === null ? Object.create(b) : (__.prototype = b.prototype, new __());\n };\n})();\nvar __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport * as PropTypes from 'prop-types';\nimport { slide } from './animation';\nimport { canUseDOM, ZIndexContext, validatePackage, classNames } from '@progress/kendo-react-common';\nimport { AlignPoint, alignElement, domUtils, positionElement, Collision as CollisionEnum } from '@progress/kendo-popup-common';\nimport { throttle, FRAME_DURATION } from './util';\nimport { packageMetadata } from './package-metadata';\nvar DEFAULT_POPUP_ZINDEX = 100;\nvar ZINDEX_POPUP_STEP = 1;\nfunction isEquivalent(a, b) {\n if (a === b) {\n return true;\n }\n if (!!a !== !!b) {\n return false;\n }\n var aProps = Object.getOwnPropertyNames(a);\n var bProps = Object.getOwnPropertyNames(b);\n if (aProps.length !== bProps.length) {\n return false;\n }\n for (var i = 0; i < aProps.length; i++) {\n var propName = aProps[i];\n if (a[propName] !== b[propName]) {\n return false;\n }\n }\n return true;\n}\nvar DEFAULT_OFFSET = {\n left: -1000,\n top: 0\n};\nvar Status;\n(function (Status) {\n Status[\"hiding\"] = \"hiding\";\n Status[\"hidden\"] = \"hidden\";\n Status[\"showing\"] = \"showing\";\n Status[\"shown\"] = \"shown\";\n Status[\"reposition\"] = \"reposition\";\n})(Status || (Status = {}));\nvar ANIMATION_CONTAINER = 'k-animation-container';\nvar ANIMATION_CONTAINER_SHOWN = 'k-animation-container-shown';\nvar ANIMATION_CONTAINER_RELATIVE = 'k-animation-container-relative';\nvar ANIMATION_CONTAINER_CHILD = 'k-child-animation-container';\nvar K_POPUP = 'k-popup';\n/**\n * @hidden\n */\nvar PopupWithoutContext = /** @class */ (function (_super) {\n __extends(PopupWithoutContext, _super);\n function PopupWithoutContext(props) {\n var _this = _super.call(this, props) || this;\n /**\n * @hidden\n */\n _this.context = 0;\n /**\n * @hidden\n */\n _this.state = { current: Status.hidden, previous: Status.hidden, props: {} };\n _this._popup = null;\n _this.show = function (popup) {\n _this.setPosition(popup);\n _this.animate(popup.firstChild, 'enter', _this.onOpened);\n _this.setState({ current: Status.shown, previous: _this.state.current });\n };\n _this.setPosition = function (popup) {\n var _a = _this.props, anchorAlign = _a.anchorAlign, popupAlign = _a.popupAlign, collision = _a.collision, offset = _a.offset, anchor = _a.anchor, margin = _a.margin, scale = _a.scale, positionMode = _a.positionMode;\n var _b = popup.style, width = _b.width, height = _b.height;\n // Calculations are wrong if popup does not have set size\n popup.style.width = popup.offsetWidth + 'px';\n popup.style.height = popup.offsetHeight + 'px';\n var alignedOffset = alignElement({\n anchor: anchor,\n anchorAlign: anchorAlign,\n element: popup,\n elementAlign: popupAlign,\n offset: offset,\n margin: margin,\n positionMode: positionMode,\n scale: scale\n });\n var position = positionElement({\n anchor: anchor,\n anchorAlign: anchorAlign,\n element: popup,\n elementAlign: popupAlign,\n collisions: collision,\n currentLocation: alignedOffset,\n margin: _this.props.margin\n });\n popup.style.top = position.offset.top + 'px';\n popup.style.left = position.offset.left + 'px';\n popup.style.width = width;\n popup.style.height = height;\n _this._collisions = {\n fit: position.fit,\n fitted: position.fitted,\n flip: position.flip,\n flipped: position.flipped\n };\n if (_this.props.onPosition) {\n var event_1 = {\n target: _this,\n flipped: position.flipped,\n fitted: position.fitted\n };\n _this.props.onPosition.call(undefined, event_1);\n }\n };\n _this.onOpened = function () {\n var element = _this._popup;\n if (!element) {\n return;\n }\n if (_this.props.show) {\n element.classList.add(ANIMATION_CONTAINER_SHOWN);\n }\n _this.attachRepositionHandlers(element);\n if (_this.props.onOpen) {\n _this.props.onOpen.call(undefined, { target: _this });\n }\n };\n _this.animate = function (element, type, callback) {\n if (!_this.props.popupAlign) {\n return;\n }\n var animationDirection;\n var _a = _this.props.popupAlign, horizontal = _a.horizontal, vertical = _a.vertical;\n if (horizontal === 'left' && vertical === 'center') {\n animationDirection = 'right';\n }\n else if (horizontal === 'right' && vertical === 'center') {\n animationDirection = 'left';\n }\n else if (vertical === 'top') {\n animationDirection = 'down';\n }\n else {\n animationDirection = 'up';\n }\n var flipPositions = {\n down: 'up',\n up: 'down',\n left: 'right',\n right: 'left'\n };\n if (_this._collisions && _this._collisions.flipped) {\n animationDirection = flipPositions[animationDirection];\n }\n slide(element, animationDirection, _this.animationDuration[type], type, callback);\n };\n _this.onClosing = function (popup) {\n if (!_this.props.show) {\n popup.classList.remove(ANIMATION_CONTAINER_SHOWN);\n }\n _this.detachRepositionHandlers();\n };\n _this.onClosed = function () {\n if (_this.state.current === Status.hiding && _this.state.previous === Status.shown) {\n _this.setState({ current: Status.hidden, previous: _this.state.current });\n }\n if (_this.props.onClose) {\n _this.props.onClose.call(undefined, { target: _this });\n }\n };\n _this.getCurrentZIndex = function () {\n return _this.context ? _this.context + ZINDEX_POPUP_STEP : DEFAULT_POPUP_ZINDEX;\n };\n validatePackage(packageMetadata);\n _this.reposition = throttle(_this.reposition.bind(_this), FRAME_DURATION);\n return _this;\n }\n Object.defineProperty(PopupWithoutContext.prototype, \"element\", {\n /**\n * Represents the Popup DOM element.\n */\n get: function () {\n return this._popup;\n },\n enumerable: false,\n configurable: true\n });\n /**\n * @hidden\n */\n PopupWithoutContext.getDerivedStateFromProps = function (props, state) {\n var show = props.show, anchor = props.anchor, anchorAlign = props.anchorAlign, appendTo = props.appendTo, collision = props.collision, popupAlign = props.popupAlign, className = props.className, popupClass = props.popupClass, style = props.style, offset = props.offset, contentKey = props.contentKey;\n var nextState = __assign(__assign({}, state), { props: {\n show: show,\n anchor: anchor,\n anchorAlign: anchorAlign,\n appendTo: appendTo,\n collision: collision,\n popupAlign: popupAlign,\n className: className,\n popupClass: popupClass,\n style: style,\n offset: offset,\n contentKey: contentKey\n } });\n if (props.show) {\n if (state.current === Status.hidden || state.current === Status.hiding) {\n return __assign(__assign({}, nextState), { current: Status.showing, previous: state.current });\n }\n if (state.current === Status.showing) {\n return __assign(__assign({}, nextState), { current: Status.shown, previous: state.current });\n }\n if (state.current === Status.shown &&\n (!isEquivalent(offset, state.props.offset) ||\n !isEquivalent(anchorAlign, state.props.anchorAlign) ||\n !isEquivalent(appendTo, state.props.appendTo) ||\n !isEquivalent(collision, state.props.collision) ||\n !isEquivalent(popupAlign, state.props.popupAlign) ||\n !isEquivalent(style, state.props.style) ||\n anchor !== state.props.anchor ||\n popupClass !== state.props.popupClass ||\n className !== state.props.className)) {\n return __assign(__assign({}, nextState), { current: Status.reposition, previous: state.current });\n }\n return nextState;\n }\n if (state.current === Status.hiding || state.current === Status.hidden) {\n return __assign(__assign({}, nextState), { current: Status.hidden, previous: state.current });\n }\n return __assign(__assign({}, nextState), { current: Status.hiding, previous: state.current });\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.componentDidUpdate = function (prevProps) {\n if (this.state.current === Status.showing && this._popup) {\n this.show(this._popup);\n }\n else if (this.state.current === Status.hiding && this._popup) {\n this.onClosing(this._popup);\n this.animate(this._popup.firstChild, 'exit', this.onClosed);\n }\n else if (this.state.current === Status.reposition && this.state.previous === Status.shown) {\n this.setState({ current: Status.shown, previous: this.state.current });\n }\n else if (this.state.current === Status.shown &&\n prevProps.contentKey !== this.props.contentKey && this._popup) {\n this.setPosition(this._popup);\n }\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.componentDidMount = function () {\n if (this.state.current === Status.showing && this._popup) {\n this.show(this._popup);\n }\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.componentWillUnmount = function () {\n this.detachRepositionHandlers();\n };\n /**\n * @hidden\n */\n PopupWithoutContext.prototype.render = function () {\n var _this = this;\n var _a = this.props, children = _a.children, className = _a.className, popupClass = _a.popupClass, show = _a.show, id = _a.id, positionMode = _a.positionMode;\n var calculatedAppendTo = this.props.appendTo ?\n this.props.appendTo :\n canUseDOM ?\n (this.props.anchor && this.props.anchor.ownerDocument ? this.props.anchor.ownerDocument.body : document.body)\n : undefined;\n if (this.state.current === Status.reposition && this.state.previous === Status.shown && this._popup) {\n this.setPosition(this._popup);\n }\n var style = Object.assign({}, { position: positionMode, top: 0, left: -10000 }, this.props.style || {});\n var closing = this.state.current === Status.hiding;\n if ((show || closing) && calculatedAppendTo) {\n var currentZIndex = this.getCurrentZIndex();\n var popupElement = (React.createElement(ZIndexContext.Provider, { value: currentZIndex },\n React.createElement(\"div\", { className: classNames(ANIMATION_CONTAINER, ANIMATION_CONTAINER_RELATIVE, className), id: id, ref: function (e) { return _this._popup = e; }, style: __assign({ zIndex: currentZIndex }, style) },\n React.createElement(\"div\", { className: classNames(K_POPUP, popupClass, ANIMATION_CONTAINER_CHILD), style: { transitionDelay: '0ms' } }, children))));\n return this.props.appendTo !== null ?\n ReactDOM.createPortal(popupElement, calculatedAppendTo) :\n popupElement;\n }\n return null;\n };\n Object.defineProperty(PopupWithoutContext.prototype, \"animationDuration\", {\n get: function () {\n var animate = this.props.animate;\n var enter = 0;\n var exit = 0;\n if (animate) {\n if (animate === true) {\n enter = exit = 300;\n }\n else {\n enter = animate.openDuration || 0;\n exit = animate.closeDuration || 0;\n }\n }\n return { enter: enter, exit: exit };\n },\n enumerable: false,\n configurable: true\n });\n PopupWithoutContext.prototype.attachRepositionHandlers = function (element) {\n var _this = this;\n this.detachRepositionHandlers();\n this._scrollableParents = domUtils.scrollableParents(this.props.anchor || element);\n if (this._scrollableParents) {\n this._scrollableParents.map(function (p) { return p.addEventListener('scroll', _this.reposition); });\n }\n window.addEventListener('resize', this.reposition);\n };\n PopupWithoutContext.prototype.detachRepositionHandlers = function () {\n var _this = this;\n if (this._scrollableParents) {\n this._scrollableParents.map(function (p) { return p.removeEventListener('scroll', _this.reposition); });\n this._scrollableParents = undefined;\n }\n window.removeEventListener('resize', this.reposition);\n };\n PopupWithoutContext.prototype.reposition = function () {\n this.setState({ current: Status.reposition, previous: this.state.current });\n };\n /**\n * @hidden\n */\n PopupWithoutContext.propTypes = {\n anchor: function (props) {\n var anchor = props.anchor;\n if (anchor && typeof anchor.nodeType !== 'number') {\n return new Error('Invalid prop `anchor` supplied to `Kendo React Popup`. Validation failed.');\n }\n return null;\n },\n appendTo: function (props) {\n var element = props.appendTo;\n if (element && typeof element.nodeType !== 'number') {\n return new Error('Invalid prop `appendTo` supplied to `Kendo React Popup`. Validation failed.');\n }\n return null;\n },\n className: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.object\n ]),\n id: PropTypes.string,\n popupClass: PropTypes.oneOfType([\n PropTypes.string,\n PropTypes.arrayOf(PropTypes.string),\n PropTypes.object\n ]),\n collision: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n CollisionEnum.fit,\n CollisionEnum.flip,\n CollisionEnum.none\n ]),\n vertical: PropTypes.oneOf([\n CollisionEnum.fit,\n CollisionEnum.flip,\n CollisionEnum.none\n ])\n }),\n anchorAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n AlignPoint.left,\n AlignPoint.center,\n AlignPoint.right\n ]),\n vertical: PropTypes.oneOf([\n AlignPoint.top,\n AlignPoint.center,\n AlignPoint.bottom\n ])\n }),\n popupAlign: PropTypes.shape({\n horizontal: PropTypes.oneOf([\n AlignPoint.left,\n AlignPoint.center,\n AlignPoint.right\n ]),\n vertical: PropTypes.oneOf([\n AlignPoint.top,\n AlignPoint.center,\n AlignPoint.bottom\n ])\n }),\n offset: PropTypes.shape({\n left: PropTypes.number,\n top: PropTypes.number\n }),\n children: PropTypes.oneOfType([\n PropTypes.element,\n PropTypes.node\n ]),\n show: PropTypes.bool,\n animate: PropTypes.oneOfType([\n PropTypes.bool,\n PropTypes.shape({\n openDuration: PropTypes.number,\n closeDuration: PropTypes.number\n })\n ]),\n margin: PropTypes.shape({\n horizontal: PropTypes.number,\n vertical: PropTypes.number\n }),\n positionMode: PropTypes.oneOf([\n 'fixed',\n 'absolute'\n ]),\n scale: PropTypes.number,\n style: PropTypes.object,\n onClose: PropTypes.func,\n onPosition: PropTypes.func,\n onOpen: PropTypes.func\n };\n /**\n * @hidden\n */\n PopupWithoutContext.defaultProps = {\n collision: {\n horizontal: CollisionEnum.fit,\n vertical: CollisionEnum.flip\n },\n anchorAlign: {\n horizontal: AlignPoint.left,\n vertical: AlignPoint.bottom\n },\n popupAlign: {\n horizontal: AlignPoint.left,\n vertical: AlignPoint.top\n },\n offset: DEFAULT_OFFSET,\n animate: true,\n show: false,\n margin: {\n horizontal: 0,\n vertical: 0\n },\n positionMode: 'absolute'\n };\n /**\n * @hidden\n */\n PopupWithoutContext.contextType = ZIndexContext;\n /**\n * @hidden\n */\n PopupWithoutContext.displayName = 'PopupComponent';\n return PopupWithoutContext;\n}(React.Component));\nexport { PopupWithoutContext };\n","/**\n * @hidden\n */\nexport var isDifferentOffset = function (oldOffset, newOffset) {\n var oldLeft = oldOffset.left, oldTop = oldOffset.top;\n var newLeft = newOffset.left, newTop = newOffset.top;\n return Math.abs(oldLeft - newLeft) >= 1 || Math.abs(oldTop - newTop) >= 1;\n};\n/**\n * @hidden\n */\nexport var hasBoundingRect = function (elem) { return !!elem.getBoundingClientRect; };\n/**\n * @hidden\n */\nexport var FRAME_DURATION = 1000 / 60; // 1000ms divided by 60fps\n/**\n * @hidden\n */\nexport var throttle = function (func, wait, options) {\n if (options === void 0) { options = {}; }\n var timeout, context, args, result;\n var previous = 0;\n options = options || {};\n var later = function () {\n previous = options.leading === false ? 0 : new Date().getTime();\n timeout = undefined;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n };\n var throttled = function () {\n var now = new Date().getTime();\n if (!previous && options.leading === false) {\n previous = now;\n }\n var remaining = wait - (now - previous);\n context = undefined; // this\n args = arguments;\n if (remaining <= 0 || remaining > wait) {\n if (timeout) {\n clearTimeout(timeout);\n timeout = undefined;\n }\n previous = now;\n result = func.apply(context, args);\n if (!timeout) {\n context = args = null;\n }\n }\n else if (!timeout && options.trailing !== false) {\n timeout = window.setTimeout(later, remaining);\n }\n return result;\n };\n return throttled;\n};\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\nimport * as React from 'react';\nimport { PopupWithoutContext } from './PopupWithoutContext';\n/**\n * The PopupPropsContext. It allows to configure the Popup props from a wrapper component.\n *\n * @example\n * ```jsx-no-run\n * ({ ...props, appendTo: document.querySelector('myPopupsContainer') })}>\n * \n * \n * \n * ```\n */\nexport var PopupPropsContext = React.createContext(function (props) { return props; });\n/**\n * The KendoReact Popup component.\n */\nexport var Popup = React.forwardRef(function (props, ref) {\n var contextPropsCallback = React.useContext(PopupPropsContext);\n var popupProps = contextPropsCallback.call(undefined, props);\n return (React.createElement(PopupWithoutContext, __assign({ ref: ref }, popupProps)));\n});\nPopup.displayName = 'Popup';\n","/*! https://mths.be/base64 v1.0.0 by @mathias | MIT license */\n;(function(root) {\n\n\t// Detect free variables `exports`.\n\tvar freeExports = typeof exports == 'object' && exports;\n\n\t// Detect free variable `module`.\n\tvar freeModule = typeof module == 'object' && module &&\n\t\tmodule.exports == freeExports && module;\n\n\t// Detect free variable `global`, from Node.js or Browserified code, and use\n\t// it as `root`.\n\tvar freeGlobal = typeof global == 'object' && global;\n\tif (freeGlobal.global === freeGlobal || freeGlobal.window === freeGlobal) {\n\t\troot = freeGlobal;\n\t}\n\n\t/*--------------------------------------------------------------------------*/\n\n\tvar InvalidCharacterError = function(message) {\n\t\tthis.message = message;\n\t};\n\tInvalidCharacterError.prototype = new Error;\n\tInvalidCharacterError.prototype.name = 'InvalidCharacterError';\n\n\tvar error = function(message) {\n\t\t// Note: the error messages used throughout this file match those used by\n\t\t// the native `atob`/`btoa` implementation in Chromium.\n\t\tthrow new InvalidCharacterError(message);\n\t};\n\n\tvar TABLE = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\t// http://whatwg.org/html/common-microsyntaxes.html#space-character\n\tvar REGEX_SPACE_CHARACTERS = /[\\t\\n\\f\\r ]/g;\n\n\t// `decode` is designed to be fully compatible with `atob` as described in the\n\t// HTML Standard. http://whatwg.org/html/webappapis.html#dom-windowbase64-atob\n\t// The optimized base64-decoding algorithm used is based on @atk’s excellent\n\t// implementation. https://gist.github.com/atk/1020396\n\tvar decode = function(input) {\n\t\tinput = String(input)\n\t\t\t.replace(REGEX_SPACE_CHARACTERS, '');\n\t\tvar length = input.length;\n\t\tif (length % 4 == 0) {\n\t\t\tinput = input.replace(/==?$/, '');\n\t\t\tlength = input.length;\n\t\t}\n\t\tif (\n\t\t\tlength % 4 == 1 ||\n\t\t\t// http://whatwg.org/C#alphanumeric-ascii-characters\n\t\t\t/[^+a-zA-Z0-9/]/.test(input)\n\t\t) {\n\t\t\terror(\n\t\t\t\t'Invalid character: the string to be decoded is not correctly encoded.'\n\t\t\t);\n\t\t}\n\t\tvar bitCounter = 0;\n\t\tvar bitStorage;\n\t\tvar buffer;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\twhile (++position < length) {\n\t\t\tbuffer = TABLE.indexOf(input.charAt(position));\n\t\t\tbitStorage = bitCounter % 4 ? bitStorage * 64 + buffer : buffer;\n\t\t\t// Unless this is the first of a group of 4 characters…\n\t\t\tif (bitCounter++ % 4) {\n\t\t\t\t// …convert the first 8 bits to a single ASCII character.\n\t\t\t\toutput += String.fromCharCode(\n\t\t\t\t\t0xFF & bitStorage >> (-2 * bitCounter & 6)\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\t\treturn output;\n\t};\n\n\t// `encode` is designed to be fully compatible with `btoa` as described in the\n\t// HTML Standard: http://whatwg.org/html/webappapis.html#dom-windowbase64-btoa\n\tvar encode = function(input) {\n\t\tinput = String(input);\n\t\tif (/[^\\0-\\xFF]/.test(input)) {\n\t\t\t// Note: no need to special-case astral symbols here, as surrogates are\n\t\t\t// matched, and the input is supposed to only contain ASCII anyway.\n\t\t\terror(\n\t\t\t\t'The string to be encoded contains characters outside of the ' +\n\t\t\t\t'Latin1 range.'\n\t\t\t);\n\t\t}\n\t\tvar padding = input.length % 3;\n\t\tvar output = '';\n\t\tvar position = -1;\n\t\tvar a;\n\t\tvar b;\n\t\tvar c;\n\t\tvar buffer;\n\t\t// Make sure any padding is handled outside of the loop.\n\t\tvar length = input.length - padding;\n\n\t\twhile (++position < length) {\n\t\t\t// Read three bytes, i.e. 24 bits.\n\t\t\ta = input.charCodeAt(position) << 16;\n\t\t\tb = input.charCodeAt(++position) << 8;\n\t\t\tc = input.charCodeAt(++position);\n\t\t\tbuffer = a + b + c;\n\t\t\t// Turn the 24 bits into four chunks of 6 bits each, and append the\n\t\t\t// matching character for each of them to the output.\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 18 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 12 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer >> 6 & 0x3F) +\n\t\t\t\tTABLE.charAt(buffer & 0x3F)\n\t\t\t);\n\t\t}\n\n\t\tif (padding == 2) {\n\t\t\ta = input.charCodeAt(position) << 8;\n\t\t\tb = input.charCodeAt(++position);\n\t\t\tbuffer = a + b;\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 10) +\n\t\t\t\tTABLE.charAt((buffer >> 4) & 0x3F) +\n\t\t\t\tTABLE.charAt((buffer << 2) & 0x3F) +\n\t\t\t\t'='\n\t\t\t);\n\t\t} else if (padding == 1) {\n\t\t\tbuffer = input.charCodeAt(position);\n\t\t\toutput += (\n\t\t\t\tTABLE.charAt(buffer >> 2) +\n\t\t\t\tTABLE.charAt((buffer << 4) & 0x3F) +\n\t\t\t\t'=='\n\t\t\t);\n\t\t}\n\n\t\treturn output;\n\t};\n\n\tvar base64 = {\n\t\t'encode': encode,\n\t\t'decode': decode,\n\t\t'version': '1.0.0'\n\t};\n\n\t// Some AMD build optimizers, like r.js, check for specific condition patterns\n\t// like the following:\n\tif (\n\t\ttypeof define == 'function' &&\n\t\ttypeof define.amd == 'object' &&\n\t\tdefine.amd\n\t) {\n\t\tdefine(function() {\n\t\t\treturn base64;\n\t\t});\n\t}\telse if (freeExports && !freeExports.nodeType) {\n\t\tif (freeModule) { // in Node.js or RingoJS v0.8.0+\n\t\t\tfreeModule.exports = base64;\n\t\t} else { // in Narwhal or RingoJS v0.7.0-\n\t\t\tfor (var key in base64) {\n\t\t\t\tbase64.hasOwnProperty(key) && (freeExports[key] = base64[key]);\n\t\t\t}\n\t\t}\n\t} else { // in Rhino or a web browser\n\t\troot.base64 = base64;\n\t}\n\n}(this));\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport _objectWithoutPropertiesLoose from '@babel/runtime/helpers/esm/objectWithoutPropertiesLoose';\n\n// \nvar charCodeOfDot = \".\".charCodeAt(0);\nvar reEscapeChar = /\\\\(\\\\)?/g;\nvar rePropName = RegExp( // Match anything that isn't a dot or bracket.\n\"[^.[\\\\]]+\" + \"|\" + // Or match property names within brackets.\n\"\\\\[(?:\" + // Match a non-string expression.\n\"([^\\\"'][^[]*)\" + \"|\" + // Or match strings (supports escaping characters).\n\"([\\\"'])((?:(?!\\\\2)[^\\\\\\\\]|\\\\\\\\.)*?)\\\\2\" + \")\\\\]\" + \"|\" + // Or match \"\" as the space between consecutive dots or empty brackets.\n\"(?=(?:\\\\.|\\\\[\\\\])(?:\\\\.|\\\\[\\\\]|$))\", \"g\");\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n\nvar stringToPath = function stringToPath(string) {\n var result = [];\n\n if (string.charCodeAt(0) === charCodeOfDot) {\n result.push(\"\");\n }\n\n string.replace(rePropName, function (match, expression, quote, subString) {\n var key = match;\n\n if (quote) {\n key = subString.replace(reEscapeChar, \"$1\");\n } else if (expression) {\n key = expression.trim();\n }\n\n result.push(key);\n });\n return result;\n};\n\nvar keysCache = {};\n\nvar toPath = function toPath(key) {\n if (key === null || key === undefined || !key.length) {\n return [];\n }\n\n if (typeof key !== \"string\") {\n throw new Error(\"toPath() expects a string\");\n }\n\n if (keysCache[key] == null) {\n keysCache[key] = stringToPath(key);\n }\n\n return keysCache[key];\n};\n\n// \n\nvar getIn = function getIn(state, complexKey) {\n // Intentionally using iteration rather than recursion\n var path = toPath(complexKey);\n var current = state;\n\n for (var i = 0; i < path.length; i++) {\n var key = path[i];\n\n if (current === undefined || current === null || typeof current !== \"object\" || Array.isArray(current) && isNaN(key)) {\n return undefined;\n }\n\n current = current[key];\n }\n\n return current;\n};\n\nfunction _toPropertyKey(arg) { var key = _toPrimitive(arg, \"string\"); return typeof key === \"symbol\" ? key : String(key); }\n\nfunction _toPrimitive(input, hint) { if (typeof input !== \"object\" || input === null) return input; var prim = input[Symbol.toPrimitive]; if (prim !== undefined) { var res = prim.call(input, hint || \"default\"); if (typeof res !== \"object\") return res; throw new TypeError(\"@@toPrimitive must return a primitive value.\"); } return (hint === \"string\" ? String : Number)(input); }\n\nvar setInRecursor = function setInRecursor(current, index, path, value, destroyArrays) {\n if (index >= path.length) {\n // end of recursion\n return value;\n }\n\n var key = path[index]; // determine type of key\n\n if (isNaN(key)) {\n var _extends2;\n\n // object set\n if (current === undefined || current === null) {\n var _ref;\n\n // recurse\n var _result2 = setInRecursor(undefined, index + 1, path, value, destroyArrays); // delete or create an object\n\n\n return _result2 === undefined ? undefined : (_ref = {}, _ref[key] = _result2, _ref);\n }\n\n if (Array.isArray(current)) {\n throw new Error(\"Cannot set a non-numeric property on an array\");\n } // current exists, so make a copy of all its values, and add/update the new one\n\n\n var _result = setInRecursor(current[key], index + 1, path, value, destroyArrays);\n\n if (_result === undefined) {\n var numKeys = Object.keys(current).length;\n\n if (current[key] === undefined && numKeys === 0) {\n // object was already empty\n return undefined;\n }\n\n if (current[key] !== undefined && numKeys <= 1) {\n // only key we had was the one we are deleting\n if (!isNaN(path[index - 1]) && !destroyArrays) {\n // we are in an array, so return an empty object\n return {};\n } else {\n return undefined;\n }\n }\n\n current[key];\n var _final = _objectWithoutPropertiesLoose(current, [key].map(_toPropertyKey));\n\n return _final;\n } // set result in key\n\n\n return _extends({}, current, (_extends2 = {}, _extends2[key] = _result, _extends2));\n } // array set\n\n\n var numericKey = Number(key);\n\n if (current === undefined || current === null) {\n // recurse\n var _result3 = setInRecursor(undefined, index + 1, path, value, destroyArrays); // if nothing returned, delete it\n\n\n if (_result3 === undefined) {\n return undefined;\n } // create an array\n\n\n var _array = [];\n _array[numericKey] = _result3;\n return _array;\n }\n\n if (!Array.isArray(current)) {\n throw new Error(\"Cannot set a numeric property on an object\");\n } // recurse\n\n\n var existingValue = current[numericKey];\n var result = setInRecursor(existingValue, index + 1, path, value, destroyArrays); // current exists, so make a copy of all its values, and add/update the new one\n\n var array = [].concat(current);\n\n if (destroyArrays && result === undefined) {\n array.splice(numericKey, 1);\n\n if (array.length === 0) {\n return undefined;\n }\n } else {\n array[numericKey] = result;\n }\n\n return array;\n};\n\nvar setIn = function setIn(state, key, value, destroyArrays) {\n if (destroyArrays === void 0) {\n destroyArrays = false;\n }\n\n if (state === undefined || state === null) {\n throw new Error(\"Cannot call setIn() with \" + String(state) + \" state\");\n }\n\n if (key === undefined || key === null) {\n throw new Error(\"Cannot call setIn() with \" + String(key) + \" key\");\n } // Recursive function needs to accept and return State, but public API should\n // only deal with Objects\n\n\n return setInRecursor(state, 0, toPath(key), value, destroyArrays);\n};\n\nvar FORM_ERROR = \"FINAL_FORM/form-error\";\nvar ARRAY_ERROR = \"FINAL_FORM/array-error\";\n\n// \n/**\n * Converts internal field state to published field state\n */\n\nfunction publishFieldState(formState, field) {\n var errors = formState.errors,\n initialValues = formState.initialValues,\n lastSubmittedValues = formState.lastSubmittedValues,\n submitErrors = formState.submitErrors,\n submitFailed = formState.submitFailed,\n submitSucceeded = formState.submitSucceeded,\n submitting = formState.submitting,\n values = formState.values;\n var active = field.active,\n blur = field.blur,\n change = field.change,\n data = field.data,\n focus = field.focus,\n modified = field.modified,\n modifiedSinceLastSubmit = field.modifiedSinceLastSubmit,\n name = field.name,\n touched = field.touched,\n validating = field.validating,\n visited = field.visited;\n var value = getIn(values, name);\n var error = getIn(errors, name);\n\n if (error && error[ARRAY_ERROR]) {\n error = error[ARRAY_ERROR];\n }\n\n var submitError = submitErrors && getIn(submitErrors, name);\n var initial = initialValues && getIn(initialValues, name);\n var pristine = field.isEqual(initial, value);\n var dirtySinceLastSubmit = !!(lastSubmittedValues && !field.isEqual(getIn(lastSubmittedValues, name), value));\n var valid = !error && !submitError;\n return {\n active: active,\n blur: blur,\n change: change,\n data: data,\n dirty: !pristine,\n dirtySinceLastSubmit: dirtySinceLastSubmit,\n error: error,\n focus: focus,\n initial: initial,\n invalid: !valid,\n length: Array.isArray(value) ? value.length : undefined,\n modified: modified,\n modifiedSinceLastSubmit: modifiedSinceLastSubmit,\n name: name,\n pristine: pristine,\n submitError: submitError,\n submitFailed: submitFailed,\n submitSucceeded: submitSucceeded,\n submitting: submitting,\n touched: touched,\n valid: valid,\n value: value,\n visited: visited,\n validating: validating\n };\n}\n\n// \nvar fieldSubscriptionItems = [\"active\", \"data\", \"dirty\", \"dirtySinceLastSubmit\", \"error\", \"initial\", \"invalid\", \"length\", \"modified\", \"modifiedSinceLastSubmit\", \"pristine\", \"submitError\", \"submitFailed\", \"submitSucceeded\", \"submitting\", \"touched\", \"valid\", \"value\", \"visited\", \"validating\"];\n\n// \nvar shallowEqual = function shallowEqual(a, b) {\n if (a === b) {\n return true;\n }\n\n if (typeof a !== \"object\" || !a || typeof b !== \"object\" || !b) {\n return false;\n }\n\n var keysA = Object.keys(a);\n var keysB = Object.keys(b);\n\n if (keysA.length !== keysB.length) {\n return false;\n }\n\n var bHasOwnProperty = Object.prototype.hasOwnProperty.bind(b);\n\n for (var idx = 0; idx < keysA.length; idx++) {\n var key = keysA[idx];\n\n if (!bHasOwnProperty(key) || a[key] !== b[key]) {\n return false;\n }\n }\n\n return true;\n};\n\n// \nfunction subscriptionFilter (dest, src, previous, subscription, keys, shallowEqualKeys) {\n var different = false;\n keys.forEach(function (key) {\n if (subscription[key]) {\n dest[key] = src[key];\n\n if (!previous || (~shallowEqualKeys.indexOf(key) ? !shallowEqual(src[key], previous[key]) : src[key] !== previous[key])) {\n different = true;\n }\n }\n });\n return different;\n}\n\n// \nvar shallowEqualKeys$1 = [\"data\"];\n/**\n * Filters items in a FieldState based on a FieldSubscription\n */\n\nvar filterFieldState = function filterFieldState(state, previousState, subscription, force) {\n var result = {\n blur: state.blur,\n change: state.change,\n focus: state.focus,\n name: state.name\n };\n var different = subscriptionFilter(result, state, previousState, subscription, fieldSubscriptionItems, shallowEqualKeys$1) || !previousState;\n return different || force ? result : undefined;\n};\n\n// \nvar formSubscriptionItems = [\"active\", \"dirty\", \"dirtyFields\", \"dirtyFieldsSinceLastSubmit\", \"dirtySinceLastSubmit\", \"error\", \"errors\", \"hasSubmitErrors\", \"hasValidationErrors\", \"initialValues\", \"invalid\", \"modified\", \"modifiedSinceLastSubmit\", \"pristine\", \"submitting\", \"submitError\", \"submitErrors\", \"submitFailed\", \"submitSucceeded\", \"touched\", \"valid\", \"validating\", \"values\", \"visited\"];\n\n// \nvar shallowEqualKeys = [\"touched\", \"visited\"];\n/**\n * Filters items in a FormState based on a FormSubscription\n */\n\nfunction filterFormState(state, previousState, subscription, force) {\n var result = {};\n var different = subscriptionFilter(result, state, previousState, subscription, formSubscriptionItems, shallowEqualKeys) || !previousState;\n return different || force ? result : undefined;\n}\n\n// \n\nvar memoize = function memoize(fn) {\n var lastArgs;\n var lastResult;\n return function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (!lastArgs || args.length !== lastArgs.length || args.some(function (arg, index) {\n return !shallowEqual(lastArgs[index], arg);\n })) {\n lastArgs = args;\n lastResult = fn.apply(void 0, args);\n }\n\n return lastResult;\n };\n};\n\nvar isPromise = (function (obj) {\n return !!obj && (typeof obj === \"object\" || typeof obj === \"function\") && typeof obj.then === \"function\";\n});\n\nvar version = \"4.20.7\";\n\nvar configOptions = [\"debug\", \"initialValues\", \"keepDirtyOnReinitialize\", \"mutators\", \"onSubmit\", \"validate\", \"validateOnBlur\"];\n\nvar tripleEquals = function tripleEquals(a, b) {\n return a === b;\n};\n\nvar hasAnyError = function hasAnyError(errors) {\n return Object.keys(errors).some(function (key) {\n var value = errors[key];\n\n if (value && typeof value === \"object\" && !(value instanceof Error)) {\n return hasAnyError(value);\n }\n\n return typeof value !== \"undefined\";\n });\n};\n\nfunction convertToExternalFormState(_ref) {\n var active = _ref.active,\n dirtySinceLastSubmit = _ref.dirtySinceLastSubmit,\n modifiedSinceLastSubmit = _ref.modifiedSinceLastSubmit,\n error = _ref.error,\n errors = _ref.errors,\n initialValues = _ref.initialValues,\n pristine = _ref.pristine,\n submitting = _ref.submitting,\n submitFailed = _ref.submitFailed,\n submitSucceeded = _ref.submitSucceeded,\n submitError = _ref.submitError,\n submitErrors = _ref.submitErrors,\n valid = _ref.valid,\n validating = _ref.validating,\n values = _ref.values;\n return {\n active: active,\n dirty: !pristine,\n dirtySinceLastSubmit: dirtySinceLastSubmit,\n modifiedSinceLastSubmit: modifiedSinceLastSubmit,\n error: error,\n errors: errors,\n hasSubmitErrors: !!(submitError || submitErrors && hasAnyError(submitErrors)),\n hasValidationErrors: !!(error || hasAnyError(errors)),\n invalid: !valid,\n initialValues: initialValues,\n pristine: pristine,\n submitting: submitting,\n submitFailed: submitFailed,\n submitSucceeded: submitSucceeded,\n submitError: submitError,\n submitErrors: submitErrors,\n valid: valid,\n validating: validating > 0,\n values: values\n };\n}\n\nfunction notifySubscriber(subscriber, subscription, state, lastState, filter, force) {\n var notification = filter(state, lastState, subscription, force);\n\n if (notification) {\n subscriber(notification);\n return true;\n }\n\n return false;\n}\n\nfunction notify(_ref2, state, lastState, filter, force) {\n var entries = _ref2.entries;\n Object.keys(entries).forEach(function (key) {\n var entry = entries[Number(key)]; // istanbul ignore next\n\n if (entry) {\n var subscription = entry.subscription,\n subscriber = entry.subscriber,\n notified = entry.notified;\n\n if (notifySubscriber(subscriber, subscription, state, lastState, filter, force || !notified)) {\n entry.notified = true;\n }\n }\n });\n}\n\nfunction createForm(config) {\n if (!config) {\n throw new Error(\"No config specified\");\n }\n\n var debug = config.debug,\n destroyOnUnregister = config.destroyOnUnregister,\n keepDirtyOnReinitialize = config.keepDirtyOnReinitialize,\n initialValues = config.initialValues,\n mutators = config.mutators,\n onSubmit = config.onSubmit,\n validate = config.validate,\n validateOnBlur = config.validateOnBlur;\n\n if (!onSubmit) {\n throw new Error(\"No onSubmit function specified\");\n }\n\n var state = {\n subscribers: {\n index: 0,\n entries: {}\n },\n fieldSubscribers: {},\n fields: {},\n formState: {\n asyncErrors: {},\n dirtySinceLastSubmit: false,\n modifiedSinceLastSubmit: false,\n errors: {},\n initialValues: initialValues && _extends({}, initialValues),\n invalid: false,\n pristine: true,\n submitting: false,\n submitFailed: false,\n submitSucceeded: false,\n resetWhileSubmitting: false,\n valid: true,\n validating: 0,\n values: initialValues ? _extends({}, initialValues) : {}\n },\n lastFormState: undefined\n };\n var inBatch = 0;\n var validationPaused = false;\n var validationBlocked = false;\n var preventNotificationWhileValidationPaused = false;\n var nextAsyncValidationKey = 0;\n var asyncValidationPromises = {};\n\n var clearAsyncValidationPromise = function clearAsyncValidationPromise(key) {\n return function (result) {\n delete asyncValidationPromises[key];\n return result;\n };\n };\n\n var changeValue = function changeValue(state, name, mutate) {\n var before = getIn(state.formState.values, name);\n var after = mutate(before);\n state.formState.values = setIn(state.formState.values, name, after) || {};\n };\n\n var renameField = function renameField(state, from, to) {\n if (state.fields[from]) {\n var _extends2, _extends3;\n\n state.fields = _extends({}, state.fields, (_extends2 = {}, _extends2[to] = _extends({}, state.fields[from], {\n name: to,\n // rebind event handlers\n blur: function blur() {\n return api.blur(to);\n },\n change: function change(value) {\n return api.change(to, value);\n },\n focus: function focus() {\n return api.focus(to);\n },\n lastFieldState: undefined\n }), _extends2));\n delete state.fields[from];\n state.fieldSubscribers = _extends({}, state.fieldSubscribers, (_extends3 = {}, _extends3[to] = state.fieldSubscribers[from], _extends3));\n delete state.fieldSubscribers[from];\n var value = getIn(state.formState.values, from);\n state.formState.values = setIn(state.formState.values, from, undefined) || {};\n state.formState.values = setIn(state.formState.values, to, value);\n delete state.lastFormState;\n }\n }; // bind state to mutators\n\n\n var getMutatorApi = function getMutatorApi(key) {\n return function () {\n // istanbul ignore next\n if (mutators) {\n // ^^ causes branch coverage warning, but needed to appease the Flow gods\n var mutatableState = {\n formState: state.formState,\n fields: state.fields,\n fieldSubscribers: state.fieldSubscribers,\n lastFormState: state.lastFormState\n };\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var returnValue = mutators[key](args, mutatableState, {\n changeValue: changeValue,\n getIn: getIn,\n renameField: renameField,\n resetFieldState: api.resetFieldState,\n setIn: setIn,\n shallowEqual: shallowEqual\n });\n state.formState = mutatableState.formState;\n state.fields = mutatableState.fields;\n state.fieldSubscribers = mutatableState.fieldSubscribers;\n state.lastFormState = mutatableState.lastFormState;\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n return returnValue;\n }\n };\n };\n\n var mutatorsApi = mutators ? Object.keys(mutators).reduce(function (result, key) {\n result[key] = getMutatorApi(key);\n return result;\n }, {}) : {};\n\n var runRecordLevelValidation = function runRecordLevelValidation(setErrors) {\n var promises = [];\n\n if (validate) {\n var errorsOrPromise = validate(_extends({}, state.formState.values)); // clone to avoid writing\n\n if (isPromise(errorsOrPromise)) {\n promises.push(errorsOrPromise.then(function (errors) {\n return setErrors(errors, true);\n }));\n } else {\n setErrors(errorsOrPromise, false);\n }\n }\n\n return promises;\n };\n\n var getValidators = function getValidators(field) {\n return Object.keys(field.validators).reduce(function (result, index) {\n var validator = field.validators[Number(index)]();\n\n if (validator) {\n result.push(validator);\n }\n\n return result;\n }, []);\n };\n\n var runFieldLevelValidation = function runFieldLevelValidation(field, setError) {\n var promises = [];\n var validators = getValidators(field);\n\n if (validators.length) {\n var error;\n validators.forEach(function (validator) {\n var errorOrPromise = validator(getIn(state.formState.values, field.name), state.formState.values, validator.length === 0 || validator.length === 3 ? publishFieldState(state.formState, state.fields[field.name]) : undefined);\n\n if (errorOrPromise && isPromise(errorOrPromise)) {\n field.validating = true;\n var promise = errorOrPromise.then(function (error) {\n if (state.fields[field.name]) {\n state.fields[field.name].validating = false;\n setError(error);\n }\n }); // errors must be resolved, not rejected\n\n promises.push(promise);\n } else if (!error) {\n // first registered validator wins\n error = errorOrPromise;\n }\n });\n setError(error);\n }\n\n return promises;\n };\n\n var runValidation = function runValidation(fieldChanged, callback) {\n if (validationPaused) {\n validationBlocked = true;\n callback();\n return;\n }\n\n var fields = state.fields,\n formState = state.formState;\n\n var safeFields = _extends({}, fields);\n\n var fieldKeys = Object.keys(safeFields);\n\n if (!validate && !fieldKeys.some(function (key) {\n return getValidators(safeFields[key]).length;\n })) {\n callback();\n return; // no validation rules\n } // pare down field keys to actually validate\n\n\n var limitedFieldLevelValidation = false;\n\n if (fieldChanged) {\n var changedField = safeFields[fieldChanged];\n\n if (changedField) {\n var validateFields = changedField.validateFields;\n\n if (validateFields) {\n limitedFieldLevelValidation = true;\n fieldKeys = validateFields.length ? validateFields.concat(fieldChanged) : [fieldChanged];\n }\n }\n }\n\n var recordLevelErrors = {};\n var asyncRecordLevelErrors = {};\n var fieldLevelErrors = {};\n var promises = [].concat(runRecordLevelValidation(function (errors, wasAsync) {\n if (wasAsync) {\n asyncRecordLevelErrors = errors || {};\n } else {\n recordLevelErrors = errors || {};\n }\n }), fieldKeys.reduce(function (result, name) {\n return result.concat(runFieldLevelValidation(fields[name], function (error) {\n fieldLevelErrors[name] = error;\n }));\n }, []));\n var hasAsyncValidations = promises.length > 0;\n var asyncValidationPromiseKey = ++nextAsyncValidationKey;\n var promise = Promise.all(promises).then(clearAsyncValidationPromise(asyncValidationPromiseKey)); // backwards-compat: add promise to submit-blocking promises iff there are any promises to await\n\n if (hasAsyncValidations) {\n asyncValidationPromises[asyncValidationPromiseKey] = promise;\n }\n\n var processErrors = function processErrors(afterAsync) {\n var merged = _extends({}, limitedFieldLevelValidation ? formState.errors : {}, recordLevelErrors, afterAsync ? asyncRecordLevelErrors // new async errors\n : formState.asyncErrors);\n\n var forEachError = function forEachError(fn) {\n fieldKeys.forEach(function (name) {\n if (fields[name]) {\n // make sure field is still registered\n // field-level errors take precedent over record-level errors\n var recordLevelError = getIn(recordLevelErrors, name);\n var errorFromParent = getIn(merged, name);\n var hasFieldLevelValidation = getValidators(safeFields[name]).length;\n var fieldLevelError = fieldLevelErrors[name];\n fn(name, hasFieldLevelValidation && fieldLevelError || validate && recordLevelError || (!recordLevelError && !limitedFieldLevelValidation ? errorFromParent : undefined));\n }\n });\n };\n\n forEachError(function (name, error) {\n merged = setIn(merged, name, error) || {};\n });\n forEachError(function (name, error) {\n if (error && error[ARRAY_ERROR]) {\n var existing = getIn(merged, name);\n var copy = [].concat(existing);\n copy[ARRAY_ERROR] = error[ARRAY_ERROR];\n merged = setIn(merged, name, copy);\n }\n });\n\n if (!shallowEqual(formState.errors, merged)) {\n formState.errors = merged;\n }\n\n if (afterAsync) {\n formState.asyncErrors = asyncRecordLevelErrors;\n }\n\n formState.error = recordLevelErrors[FORM_ERROR];\n };\n\n if (hasAsyncValidations) {\n // async validations are running, ensure validating is true before notifying\n state.formState.validating++;\n callback();\n } // process sync errors\n\n\n processErrors(false); // sync errors have been set. notify listeners while we wait for others\n\n callback();\n\n if (hasAsyncValidations) {\n var afterPromise = function afterPromise() {\n state.formState.validating--;\n callback();\n };\n\n promise.then(function () {\n if (nextAsyncValidationKey > asyncValidationPromiseKey) {\n // if this async validator has been superseded by another, ignore its results\n return;\n }\n\n processErrors(true);\n }).then(afterPromise, afterPromise);\n }\n };\n\n var notifyFieldListeners = function notifyFieldListeners(name) {\n if (inBatch) {\n return;\n }\n\n var fields = state.fields,\n fieldSubscribers = state.fieldSubscribers,\n formState = state.formState;\n\n var safeFields = _extends({}, fields);\n\n var notifyField = function notifyField(name) {\n var field = safeFields[name];\n var fieldState = publishFieldState(formState, field);\n var lastFieldState = field.lastFieldState;\n field.lastFieldState = fieldState;\n var fieldSubscriber = fieldSubscribers[name];\n\n if (fieldSubscriber) {\n notify(fieldSubscriber, fieldState, lastFieldState, filterFieldState, lastFieldState === undefined);\n }\n };\n\n if (name) {\n notifyField(name);\n } else {\n Object.keys(safeFields).forEach(notifyField);\n }\n };\n\n var markAllFieldsTouched = function markAllFieldsTouched() {\n Object.keys(state.fields).forEach(function (key) {\n state.fields[key].touched = true;\n });\n };\n\n var hasSyncErrors = function hasSyncErrors() {\n return !!(state.formState.error || hasAnyError(state.formState.errors));\n };\n\n var calculateNextFormState = function calculateNextFormState() {\n var fields = state.fields,\n formState = state.formState,\n lastFormState = state.lastFormState;\n\n var safeFields = _extends({}, fields);\n\n var safeFieldKeys = Object.keys(safeFields); // calculate dirty/pristine\n\n var foundDirty = false;\n var dirtyFields = safeFieldKeys.reduce(function (result, key) {\n var dirty = !safeFields[key].isEqual(getIn(formState.values, key), getIn(formState.initialValues || {}, key));\n\n if (dirty) {\n foundDirty = true;\n result[key] = true;\n }\n\n return result;\n }, {});\n var dirtyFieldsSinceLastSubmit = safeFieldKeys.reduce(function (result, key) {\n // istanbul ignore next\n var nonNullLastSubmittedValues = formState.lastSubmittedValues || {}; // || {} is for flow, but causes branch coverage complaint\n\n if (!safeFields[key].isEqual(getIn(formState.values, key), getIn(nonNullLastSubmittedValues, key))) {\n result[key] = true;\n }\n\n return result;\n }, {});\n formState.pristine = !foundDirty;\n formState.dirtySinceLastSubmit = !!(formState.lastSubmittedValues && Object.values(dirtyFieldsSinceLastSubmit).some(function (value) {\n return value;\n }));\n formState.modifiedSinceLastSubmit = !!(formState.lastSubmittedValues && // Object.values would treat values as mixed (facebook/flow#2221)\n Object.keys(safeFields).some(function (value) {\n return safeFields[value].modifiedSinceLastSubmit;\n }));\n formState.valid = !formState.error && !formState.submitError && !hasAnyError(formState.errors) && !(formState.submitErrors && hasAnyError(formState.submitErrors));\n var nextFormState = convertToExternalFormState(formState);\n\n var _safeFieldKeys$reduce = safeFieldKeys.reduce(function (result, key) {\n result.modified[key] = safeFields[key].modified;\n result.touched[key] = safeFields[key].touched;\n result.visited[key] = safeFields[key].visited;\n return result;\n }, {\n modified: {},\n touched: {},\n visited: {}\n }),\n modified = _safeFieldKeys$reduce.modified,\n touched = _safeFieldKeys$reduce.touched,\n visited = _safeFieldKeys$reduce.visited;\n\n nextFormState.dirtyFields = lastFormState && shallowEqual(lastFormState.dirtyFields, dirtyFields) ? lastFormState.dirtyFields : dirtyFields;\n nextFormState.dirtyFieldsSinceLastSubmit = lastFormState && shallowEqual(lastFormState.dirtyFieldsSinceLastSubmit, dirtyFieldsSinceLastSubmit) ? lastFormState.dirtyFieldsSinceLastSubmit : dirtyFieldsSinceLastSubmit;\n nextFormState.modified = lastFormState && shallowEqual(lastFormState.modified, modified) ? lastFormState.modified : modified;\n nextFormState.touched = lastFormState && shallowEqual(lastFormState.touched, touched) ? lastFormState.touched : touched;\n nextFormState.visited = lastFormState && shallowEqual(lastFormState.visited, visited) ? lastFormState.visited : visited;\n return lastFormState && shallowEqual(lastFormState, nextFormState) ? lastFormState : nextFormState;\n };\n\n var callDebug = function callDebug() {\n return debug && \"development\" !== \"production\" && debug(calculateNextFormState(), Object.keys(state.fields).reduce(function (result, key) {\n result[key] = state.fields[key];\n return result;\n }, {}));\n };\n\n var notifying = false;\n var scheduleNotification = false;\n\n var notifyFormListeners = function notifyFormListeners() {\n if (notifying) {\n scheduleNotification = true;\n } else {\n notifying = true;\n callDebug();\n\n if (!inBatch && !(validationPaused && preventNotificationWhileValidationPaused)) {\n var lastFormState = state.lastFormState;\n var nextFormState = calculateNextFormState();\n\n if (nextFormState !== lastFormState) {\n state.lastFormState = nextFormState;\n notify(state.subscribers, nextFormState, lastFormState, filterFormState);\n }\n }\n\n notifying = false;\n\n if (scheduleNotification) {\n scheduleNotification = false;\n notifyFormListeners();\n }\n }\n };\n\n var beforeSubmit = function beforeSubmit() {\n return Object.keys(state.fields).some(function (name) {\n return state.fields[name].beforeSubmit && state.fields[name].beforeSubmit() === false;\n });\n };\n\n var afterSubmit = function afterSubmit() {\n return Object.keys(state.fields).forEach(function (name) {\n return state.fields[name].afterSubmit && state.fields[name].afterSubmit();\n });\n };\n\n var resetModifiedAfterSubmit = function resetModifiedAfterSubmit() {\n return Object.keys(state.fields).forEach(function (key) {\n return state.fields[key].modifiedSinceLastSubmit = false;\n });\n }; // generate initial errors\n\n\n runValidation(undefined, function () {\n notifyFormListeners();\n });\n var api = {\n batch: function batch(fn) {\n inBatch++;\n fn();\n inBatch--;\n notifyFieldListeners();\n notifyFormListeners();\n },\n blur: function blur(name) {\n var fields = state.fields,\n formState = state.formState;\n var previous = fields[name];\n\n if (previous) {\n // can only blur registered fields\n delete formState.active;\n fields[name] = _extends({}, previous, {\n active: false,\n touched: true\n });\n\n if (validateOnBlur) {\n runValidation(name, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n } else {\n notifyFieldListeners();\n notifyFormListeners();\n }\n }\n },\n change: function change(name, value) {\n var fields = state.fields,\n formState = state.formState;\n\n if (getIn(formState.values, name) !== value) {\n changeValue(state, name, function () {\n return value;\n });\n var previous = fields[name];\n\n if (previous) {\n // only track modified for registered fields\n fields[name] = _extends({}, previous, {\n modified: true,\n modifiedSinceLastSubmit: !!formState.lastSubmittedValues\n });\n }\n\n if (validateOnBlur) {\n notifyFieldListeners();\n notifyFormListeners();\n } else {\n runValidation(name, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n }\n }\n },\n\n get destroyOnUnregister() {\n return !!destroyOnUnregister;\n },\n\n set destroyOnUnregister(value) {\n destroyOnUnregister = value;\n },\n\n focus: function focus(name) {\n var field = state.fields[name];\n\n if (field && !field.active) {\n state.formState.active = name;\n field.active = true;\n field.visited = true;\n notifyFieldListeners();\n notifyFormListeners();\n }\n },\n mutators: mutatorsApi,\n getFieldState: function getFieldState(name) {\n var field = state.fields[name];\n return field && field.lastFieldState;\n },\n getRegisteredFields: function getRegisteredFields() {\n return Object.keys(state.fields);\n },\n getState: function getState() {\n return calculateNextFormState();\n },\n initialize: function initialize(data) {\n var fields = state.fields,\n formState = state.formState;\n\n var safeFields = _extends({}, fields);\n\n var values = typeof data === \"function\" ? data(formState.values) : data;\n\n if (!keepDirtyOnReinitialize) {\n formState.values = values;\n }\n /**\n * Hello, inquisitive code reader! Thanks for taking the time to dig in!\n *\n * The following code is the way it is to allow for non-registered deep\n * field values to be set via initialize()\n */\n // save dirty values\n\n\n var savedDirtyValues = keepDirtyOnReinitialize ? Object.keys(safeFields).reduce(function (result, key) {\n var field = safeFields[key];\n var pristine = field.isEqual(getIn(formState.values, key), getIn(formState.initialValues || {}, key));\n\n if (!pristine) {\n result[key] = getIn(formState.values, key);\n }\n\n return result;\n }, {}) : {}; // update initalValues and values\n\n formState.initialValues = values;\n formState.values = values; // restore the dirty values\n\n Object.keys(savedDirtyValues).forEach(function (key) {\n formState.values = setIn(formState.values, key, savedDirtyValues[key]) || {};\n });\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n },\n isValidationPaused: function isValidationPaused() {\n return validationPaused;\n },\n pauseValidation: function pauseValidation(preventNotification) {\n if (preventNotification === void 0) {\n preventNotification = true;\n }\n\n validationPaused = true;\n preventNotificationWhileValidationPaused = preventNotification;\n },\n registerField: function registerField(name, subscriber, subscription, fieldConfig) {\n if (subscription === void 0) {\n subscription = {};\n }\n\n if (!state.fieldSubscribers[name]) {\n state.fieldSubscribers[name] = {\n index: 0,\n entries: {}\n };\n }\n\n var index = state.fieldSubscribers[name].index++; // save field subscriber callback\n\n state.fieldSubscribers[name].entries[index] = {\n subscriber: memoize(subscriber),\n subscription: subscription,\n notified: false\n };\n\n if (!state.fields[name]) {\n // create initial field state\n state.fields[name] = {\n active: false,\n afterSubmit: fieldConfig && fieldConfig.afterSubmit,\n beforeSubmit: fieldConfig && fieldConfig.beforeSubmit,\n blur: function blur() {\n return api.blur(name);\n },\n change: function change(value) {\n return api.change(name, value);\n },\n data: fieldConfig && fieldConfig.data || {},\n focus: function focus() {\n return api.focus(name);\n },\n isEqual: fieldConfig && fieldConfig.isEqual || tripleEquals,\n lastFieldState: undefined,\n modified: false,\n modifiedSinceLastSubmit: false,\n name: name,\n touched: false,\n valid: true,\n validateFields: fieldConfig && fieldConfig.validateFields,\n validators: {},\n validating: false,\n visited: false\n };\n }\n\n var haveValidator = false;\n var silent = fieldConfig && fieldConfig.silent;\n\n var notify = function notify() {\n if (silent) {\n notifyFieldListeners(name);\n } else {\n notifyFormListeners();\n notifyFieldListeners();\n }\n };\n\n if (fieldConfig) {\n haveValidator = !!(fieldConfig.getValidator && fieldConfig.getValidator());\n\n if (fieldConfig.getValidator) {\n state.fields[name].validators[index] = fieldConfig.getValidator;\n }\n\n var noValueInFormState = getIn(state.formState.values, name) === undefined;\n\n if (fieldConfig.initialValue !== undefined && (noValueInFormState || getIn(state.formState.values, name) === getIn(state.formState.initialValues, name)) // only initialize if we don't yet have any value for this field\n ) {\n state.formState.initialValues = setIn(state.formState.initialValues || {}, name, fieldConfig.initialValue);\n state.formState.values = setIn(state.formState.values, name, fieldConfig.initialValue);\n runValidation(undefined, notify);\n } // only use defaultValue if we don't yet have any value for this field\n\n\n if (fieldConfig.defaultValue !== undefined && fieldConfig.initialValue === undefined && getIn(state.formState.initialValues, name) === undefined && noValueInFormState) {\n state.formState.values = setIn(state.formState.values, name, fieldConfig.defaultValue);\n }\n }\n\n if (haveValidator) {\n runValidation(undefined, notify);\n } else {\n notify();\n }\n\n return function () {\n var validatorRemoved = false; // istanbul ignore next\n\n if (state.fields[name]) {\n // state.fields[name] may have been removed by a mutator\n validatorRemoved = !!(state.fields[name].validators[index] && state.fields[name].validators[index]());\n delete state.fields[name].validators[index];\n }\n\n var hasFieldSubscribers = !!state.fieldSubscribers[name];\n\n if (hasFieldSubscribers) {\n // state.fieldSubscribers[name] may have been removed by a mutator\n delete state.fieldSubscribers[name].entries[index];\n }\n\n var lastOne = hasFieldSubscribers && !Object.keys(state.fieldSubscribers[name].entries).length;\n\n if (lastOne) {\n delete state.fieldSubscribers[name];\n delete state.fields[name];\n\n if (validatorRemoved) {\n state.formState.errors = setIn(state.formState.errors, name, undefined) || {};\n }\n\n if (destroyOnUnregister) {\n state.formState.values = setIn(state.formState.values, name, undefined, true) || {};\n }\n }\n\n if (!silent) {\n if (validatorRemoved) {\n runValidation(undefined, function () {\n notifyFormListeners();\n notifyFieldListeners();\n });\n } else if (lastOne) {\n // values or errors may have changed\n notifyFormListeners();\n }\n }\n };\n },\n reset: function reset(initialValues) {\n if (initialValues === void 0) {\n initialValues = state.formState.initialValues;\n }\n\n if (state.formState.submitting) {\n state.formState.resetWhileSubmitting = true;\n }\n\n state.formState.submitFailed = false;\n state.formState.submitSucceeded = false;\n delete state.formState.submitError;\n delete state.formState.submitErrors;\n delete state.formState.lastSubmittedValues;\n api.initialize(initialValues || {});\n },\n\n /**\n * Resets all field flags (e.g. touched, visited, etc.) to their initial state\n */\n resetFieldState: function resetFieldState(name) {\n state.fields[name] = _extends({}, state.fields[name], {\n active: false,\n lastFieldState: undefined,\n modified: false,\n touched: false,\n valid: true,\n validating: false,\n visited: false\n });\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n },\n\n /**\n * Returns the form to a clean slate; that is:\n * - Clear all values\n * - Resets all fields to their initial state\n */\n restart: function restart(initialValues) {\n if (initialValues === void 0) {\n initialValues = state.formState.initialValues;\n }\n\n api.batch(function () {\n for (var name in state.fields) {\n api.resetFieldState(name);\n state.fields[name] = _extends({}, state.fields[name], {\n active: false,\n lastFieldState: undefined,\n modified: false,\n modifiedSinceLastSubmit: false,\n touched: false,\n valid: true,\n validating: false,\n visited: false\n });\n }\n\n api.reset(initialValues);\n });\n },\n resumeValidation: function resumeValidation() {\n validationPaused = false;\n preventNotificationWhileValidationPaused = false;\n\n if (validationBlocked) {\n // validation was attempted while it was paused, so run it now\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n }\n\n validationBlocked = false;\n },\n setConfig: function setConfig(name, value) {\n switch (name) {\n case \"debug\":\n debug = value;\n break;\n\n case \"destroyOnUnregister\":\n destroyOnUnregister = value;\n break;\n\n case \"initialValues\":\n api.initialize(value);\n break;\n\n case \"keepDirtyOnReinitialize\":\n keepDirtyOnReinitialize = value;\n break;\n\n case \"mutators\":\n mutators = value;\n\n if (value) {\n Object.keys(mutatorsApi).forEach(function (key) {\n if (!(key in value)) {\n delete mutatorsApi[key];\n }\n });\n Object.keys(value).forEach(function (key) {\n mutatorsApi[key] = getMutatorApi(key);\n });\n } else {\n Object.keys(mutatorsApi).forEach(function (key) {\n delete mutatorsApi[key];\n });\n }\n\n break;\n\n case \"onSubmit\":\n onSubmit = value;\n break;\n\n case \"validate\":\n validate = value;\n runValidation(undefined, function () {\n notifyFieldListeners();\n notifyFormListeners();\n });\n break;\n\n case \"validateOnBlur\":\n validateOnBlur = value;\n break;\n\n default:\n throw new Error(\"Unrecognised option \" + name);\n }\n },\n submit: function submit() {\n var formState = state.formState;\n\n if (formState.submitting) {\n return;\n }\n\n delete formState.submitErrors;\n delete formState.submitError;\n formState.lastSubmittedValues = _extends({}, formState.values);\n\n if (hasSyncErrors()) {\n markAllFieldsTouched();\n resetModifiedAfterSubmit();\n state.formState.submitFailed = true;\n notifyFormListeners();\n notifyFieldListeners();\n return; // no submit for you!!\n }\n\n var asyncValidationPromisesKeys = Object.keys(asyncValidationPromises);\n\n if (asyncValidationPromisesKeys.length) {\n // still waiting on async validation to complete...\n Promise.all(asyncValidationPromisesKeys.map(function (key) {\n return asyncValidationPromises[Number(key)];\n })).then(api.submit, console.error);\n return;\n }\n\n var submitIsBlocked = beforeSubmit();\n\n if (submitIsBlocked) {\n return;\n }\n\n var resolvePromise;\n var completeCalled = false;\n\n var complete = function complete(errors) {\n formState.submitting = false;\n var resetWhileSubmitting = formState.resetWhileSubmitting;\n\n if (resetWhileSubmitting) {\n formState.resetWhileSubmitting = false;\n }\n\n if (errors && hasAnyError(errors)) {\n formState.submitFailed = true;\n formState.submitSucceeded = false;\n formState.submitErrors = errors;\n formState.submitError = errors[FORM_ERROR];\n markAllFieldsTouched();\n } else {\n if (!resetWhileSubmitting) {\n formState.submitFailed = false;\n formState.submitSucceeded = true;\n }\n\n afterSubmit();\n }\n\n notifyFormListeners();\n notifyFieldListeners();\n completeCalled = true;\n\n if (resolvePromise) {\n resolvePromise(errors);\n }\n\n return errors;\n };\n\n formState.submitting = true;\n formState.submitFailed = false;\n formState.submitSucceeded = false;\n formState.lastSubmittedValues = _extends({}, formState.values);\n resetModifiedAfterSubmit(); // onSubmit is either sync, callback or async with a Promise\n\n var result = onSubmit(formState.values, api, complete);\n\n if (!completeCalled) {\n if (result && isPromise(result)) {\n // onSubmit is async with a Promise\n notifyFormListeners(); // let everyone know we are submitting\n\n notifyFieldListeners(); // notify fields also\n\n return result.then(complete, function (error) {\n complete();\n throw error;\n });\n } else if (onSubmit.length >= 3) {\n // must be async, so we should return a Promise\n notifyFormListeners(); // let everyone know we are submitting\n\n notifyFieldListeners(); // notify fields also\n\n return new Promise(function (resolve) {\n resolvePromise = resolve;\n });\n } else {\n // onSubmit is sync\n complete(result);\n }\n }\n },\n subscribe: function subscribe(subscriber, subscription) {\n if (!subscriber) {\n throw new Error(\"No callback given.\");\n }\n\n if (!subscription) {\n throw new Error(\"No subscription provided. What values do you want to listen to?\");\n }\n\n var memoized = memoize(subscriber);\n var subscribers = state.subscribers;\n var index = subscribers.index++;\n subscribers.entries[index] = {\n subscriber: memoized,\n subscription: subscription,\n notified: false\n };\n var nextFormState = calculateNextFormState();\n notifySubscriber(memoized, subscription, nextFormState, nextFormState, filterFormState, true);\n return function () {\n delete subscribers.entries[index];\n };\n }\n };\n return api;\n}\n\nexport { ARRAY_ERROR, FORM_ERROR, configOptions, createForm, fieldSubscriptionItems, formSubscriptionItems, getIn, setIn, version };\n","/*! Hammer.JS - v2.0.7 - 2016-04-22\n * http://hammerjs.github.io/\n *\n * Copyright (c) 2016 Jorik Tangelder;\n * Licensed under the MIT license */\n(function(window, document, exportName, undefined) {\n 'use strict';\n\nvar VENDOR_PREFIXES = ['', 'webkit', 'Moz', 'MS', 'ms', 'o'];\nvar TEST_ELEMENT = document.createElement('div');\n\nvar TYPE_FUNCTION = 'function';\n\nvar round = Math.round;\nvar abs = Math.abs;\nvar now = Date.now;\n\n/**\n * set a timeout with a given scope\n * @param {Function} fn\n * @param {Number} timeout\n * @param {Object} context\n * @returns {number}\n */\nfunction setTimeoutContext(fn, timeout, context) {\n return setTimeout(bindFn(fn, context), timeout);\n}\n\n/**\n * if the argument is an array, we want to execute the fn on each entry\n * if it aint an array we don't want to do a thing.\n * this is used by all the methods that accept a single and array argument.\n * @param {*|Array} arg\n * @param {String} fn\n * @param {Object} [context]\n * @returns {Boolean}\n */\nfunction invokeArrayArg(arg, fn, context) {\n if (Array.isArray(arg)) {\n each(arg, context[fn], context);\n return true;\n }\n return false;\n}\n\n/**\n * walk objects and arrays\n * @param {Object} obj\n * @param {Function} iterator\n * @param {Object} context\n */\nfunction each(obj, iterator, context) {\n var i;\n\n if (!obj) {\n return;\n }\n\n if (obj.forEach) {\n obj.forEach(iterator, context);\n } else if (obj.length !== undefined) {\n i = 0;\n while (i < obj.length) {\n iterator.call(context, obj[i], i, obj);\n i++;\n }\n } else {\n for (i in obj) {\n obj.hasOwnProperty(i) && iterator.call(context, obj[i], i, obj);\n }\n }\n}\n\n/**\n * wrap a method with a deprecation warning and stack trace\n * @param {Function} method\n * @param {String} name\n * @param {String} message\n * @returns {Function} A new function wrapping the supplied method.\n */\nfunction deprecate(method, name, message) {\n var deprecationMessage = 'DEPRECATED METHOD: ' + name + '\\n' + message + ' AT \\n';\n return function() {\n var e = new Error('get-stack-trace');\n var stack = e && e.stack ? e.stack.replace(/^[^\\(]+?[\\n$]/gm, '')\n .replace(/^\\s+at\\s+/gm, '')\n .replace(/^Object.\\s*\\(/gm, '{anonymous}()@') : 'Unknown Stack Trace';\n\n var log = window.console && (window.console.warn || window.console.log);\n if (log) {\n log.call(window.console, deprecationMessage, stack);\n }\n return method.apply(this, arguments);\n };\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} target\n * @param {...Object} objects_to_assign\n * @returns {Object} target\n */\nvar assign;\nif (typeof Object.assign !== 'function') {\n assign = function assign(target) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert undefined or null to object');\n }\n\n var output = Object(target);\n for (var index = 1; index < arguments.length; index++) {\n var source = arguments[index];\n if (source !== undefined && source !== null) {\n for (var nextKey in source) {\n if (source.hasOwnProperty(nextKey)) {\n output[nextKey] = source[nextKey];\n }\n }\n }\n }\n return output;\n };\n} else {\n assign = Object.assign;\n}\n\n/**\n * extend object.\n * means that properties in dest will be overwritten by the ones in src.\n * @param {Object} dest\n * @param {Object} src\n * @param {Boolean} [merge=false]\n * @returns {Object} dest\n */\nvar extend = deprecate(function extend(dest, src, merge) {\n var keys = Object.keys(src);\n var i = 0;\n while (i < keys.length) {\n if (!merge || (merge && dest[keys[i]] === undefined)) {\n dest[keys[i]] = src[keys[i]];\n }\n i++;\n }\n return dest;\n}, 'extend', 'Use `assign`.');\n\n/**\n * merge the values from src in the dest.\n * means that properties that exist in dest will not be overwritten by src\n * @param {Object} dest\n * @param {Object} src\n * @returns {Object} dest\n */\nvar merge = deprecate(function merge(dest, src) {\n return extend(dest, src, true);\n}, 'merge', 'Use `assign`.');\n\n/**\n * simple class inheritance\n * @param {Function} child\n * @param {Function} base\n * @param {Object} [properties]\n */\nfunction inherit(child, base, properties) {\n var baseP = base.prototype,\n childP;\n\n childP = child.prototype = Object.create(baseP);\n childP.constructor = child;\n childP._super = baseP;\n\n if (properties) {\n assign(childP, properties);\n }\n}\n\n/**\n * simple function bind\n * @param {Function} fn\n * @param {Object} context\n * @returns {Function}\n */\nfunction bindFn(fn, context) {\n return function boundFn() {\n return fn.apply(context, arguments);\n };\n}\n\n/**\n * let a boolean value also be a function that must return a boolean\n * this first item in args will be used as the context\n * @param {Boolean|Function} val\n * @param {Array} [args]\n * @returns {Boolean}\n */\nfunction boolOrFn(val, args) {\n if (typeof val == TYPE_FUNCTION) {\n return val.apply(args ? args[0] || undefined : undefined, args);\n }\n return val;\n}\n\n/**\n * use the val2 when val1 is undefined\n * @param {*} val1\n * @param {*} val2\n * @returns {*}\n */\nfunction ifUndefined(val1, val2) {\n return (val1 === undefined) ? val2 : val1;\n}\n\n/**\n * addEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction addEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.addEventListener(type, handler, false);\n });\n}\n\n/**\n * removeEventListener with multiple events at once\n * @param {EventTarget} target\n * @param {String} types\n * @param {Function} handler\n */\nfunction removeEventListeners(target, types, handler) {\n each(splitStr(types), function(type) {\n target.removeEventListener(type, handler, false);\n });\n}\n\n/**\n * find if a node is in the given parent\n * @method hasParent\n * @param {HTMLElement} node\n * @param {HTMLElement} parent\n * @return {Boolean} found\n */\nfunction hasParent(node, parent) {\n while (node) {\n if (node == parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n}\n\n/**\n * small indexOf wrapper\n * @param {String} str\n * @param {String} find\n * @returns {Boolean} found\n */\nfunction inStr(str, find) {\n return str.indexOf(find) > -1;\n}\n\n/**\n * split string on whitespace\n * @param {String} str\n * @returns {Array} words\n */\nfunction splitStr(str) {\n return str.trim().split(/\\s+/g);\n}\n\n/**\n * find if a array contains the object using indexOf or a simple polyFill\n * @param {Array} src\n * @param {String} find\n * @param {String} [findByKey]\n * @return {Boolean|Number} false when not found, or the index\n */\nfunction inArray(src, find, findByKey) {\n if (src.indexOf && !findByKey) {\n return src.indexOf(find);\n } else {\n var i = 0;\n while (i < src.length) {\n if ((findByKey && src[i][findByKey] == find) || (!findByKey && src[i] === find)) {\n return i;\n }\n i++;\n }\n return -1;\n }\n}\n\n/**\n * convert array-like objects to real arrays\n * @param {Object} obj\n * @returns {Array}\n */\nfunction toArray(obj) {\n return Array.prototype.slice.call(obj, 0);\n}\n\n/**\n * unique array with objects based on a key (like 'id') or just by the array's value\n * @param {Array} src [{id:1},{id:2},{id:1}]\n * @param {String} [key]\n * @param {Boolean} [sort=False]\n * @returns {Array} [{id:1},{id:2}]\n */\nfunction uniqueArray(src, key, sort) {\n var results = [];\n var values = [];\n var i = 0;\n\n while (i < src.length) {\n var val = key ? src[i][key] : src[i];\n if (inArray(values, val) < 0) {\n results.push(src[i]);\n }\n values[i] = val;\n i++;\n }\n\n if (sort) {\n if (!key) {\n results = results.sort();\n } else {\n results = results.sort(function sortUniqueArray(a, b) {\n return a[key] > b[key];\n });\n }\n }\n\n return results;\n}\n\n/**\n * get the prefixed property\n * @param {Object} obj\n * @param {String} property\n * @returns {String|Undefined} prefixed\n */\nfunction prefixed(obj, property) {\n var prefix, prop;\n var camelProp = property[0].toUpperCase() + property.slice(1);\n\n var i = 0;\n while (i < VENDOR_PREFIXES.length) {\n prefix = VENDOR_PREFIXES[i];\n prop = (prefix) ? prefix + camelProp : property;\n\n if (prop in obj) {\n return prop;\n }\n i++;\n }\n return undefined;\n}\n\n/**\n * get a unique id\n * @returns {number} uniqueId\n */\nvar _uniqueId = 1;\nfunction uniqueId() {\n return _uniqueId++;\n}\n\n/**\n * get the window object of an element\n * @param {HTMLElement} element\n * @returns {DocumentView|Window}\n */\nfunction getWindowForElement(element) {\n var doc = element.ownerDocument || element;\n return (doc.defaultView || doc.parentWindow || window);\n}\n\nvar MOBILE_REGEX = /mobile|tablet|ip(ad|hone|od)|android/i;\n\nvar SUPPORT_TOUCH = ('ontouchstart' in window);\nvar SUPPORT_POINTER_EVENTS = prefixed(window, 'PointerEvent') !== undefined;\nvar SUPPORT_ONLY_TOUCH = SUPPORT_TOUCH && MOBILE_REGEX.test(navigator.userAgent);\n\nvar INPUT_TYPE_TOUCH = 'touch';\nvar INPUT_TYPE_PEN = 'pen';\nvar INPUT_TYPE_MOUSE = 'mouse';\nvar INPUT_TYPE_KINECT = 'kinect';\n\nvar COMPUTE_INTERVAL = 25;\n\nvar INPUT_START = 1;\nvar INPUT_MOVE = 2;\nvar INPUT_END = 4;\nvar INPUT_CANCEL = 8;\n\nvar DIRECTION_NONE = 1;\nvar DIRECTION_LEFT = 2;\nvar DIRECTION_RIGHT = 4;\nvar DIRECTION_UP = 8;\nvar DIRECTION_DOWN = 16;\n\nvar DIRECTION_HORIZONTAL = DIRECTION_LEFT | DIRECTION_RIGHT;\nvar DIRECTION_VERTICAL = DIRECTION_UP | DIRECTION_DOWN;\nvar DIRECTION_ALL = DIRECTION_HORIZONTAL | DIRECTION_VERTICAL;\n\nvar PROPS_XY = ['x', 'y'];\nvar PROPS_CLIENT_XY = ['clientX', 'clientY'];\n\n/**\n * create new input type manager\n * @param {Manager} manager\n * @param {Function} callback\n * @returns {Input}\n * @constructor\n */\nfunction Input(manager, callback) {\n var self = this;\n this.manager = manager;\n this.callback = callback;\n this.element = manager.element;\n this.target = manager.options.inputTarget;\n\n // smaller wrapper around the handler, for the scope and the enabled state of the manager,\n // so when disabled the input events are completely bypassed.\n this.domHandler = function(ev) {\n if (boolOrFn(manager.options.enable, [manager])) {\n self.handler(ev);\n }\n };\n\n this.init();\n\n}\n\nInput.prototype = {\n /**\n * should handle the inputEvent data and trigger the callback\n * @virtual\n */\n handler: function() { },\n\n /**\n * bind the events\n */\n init: function() {\n this.evEl && addEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && addEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && addEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n },\n\n /**\n * unbind the events\n */\n destroy: function() {\n this.evEl && removeEventListeners(this.element, this.evEl, this.domHandler);\n this.evTarget && removeEventListeners(this.target, this.evTarget, this.domHandler);\n this.evWin && removeEventListeners(getWindowForElement(this.element), this.evWin, this.domHandler);\n }\n};\n\n/**\n * create new input type manager\n * called by the Manager constructor\n * @param {Hammer} manager\n * @returns {Input}\n */\nfunction createInputInstance(manager) {\n var Type;\n var inputClass = manager.options.inputClass;\n\n if (inputClass) {\n Type = inputClass;\n } else if (SUPPORT_POINTER_EVENTS) {\n Type = PointerEventInput;\n } else if (SUPPORT_ONLY_TOUCH) {\n Type = TouchInput;\n } else if (!SUPPORT_TOUCH) {\n Type = MouseInput;\n } else {\n Type = TouchMouseInput;\n }\n return new (Type)(manager, inputHandler);\n}\n\n/**\n * handle input events\n * @param {Manager} manager\n * @param {String} eventType\n * @param {Object} input\n */\nfunction inputHandler(manager, eventType, input) {\n var pointersLen = input.pointers.length;\n var changedPointersLen = input.changedPointers.length;\n var isFirst = (eventType & INPUT_START && (pointersLen - changedPointersLen === 0));\n var isFinal = (eventType & (INPUT_END | INPUT_CANCEL) && (pointersLen - changedPointersLen === 0));\n\n input.isFirst = !!isFirst;\n input.isFinal = !!isFinal;\n\n if (isFirst) {\n manager.session = {};\n }\n\n // source event is the normalized value of the domEvents\n // like 'touchstart, mouseup, pointerdown'\n input.eventType = eventType;\n\n // compute scale, rotation etc\n computeInputData(manager, input);\n\n // emit secret event\n manager.emit('hammer.input', input);\n\n manager.recognize(input);\n manager.session.prevInput = input;\n}\n\n/**\n * extend the data with some usable properties like scale, rotate, velocity etc\n * @param {Object} manager\n * @param {Object} input\n */\nfunction computeInputData(manager, input) {\n var session = manager.session;\n var pointers = input.pointers;\n var pointersLength = pointers.length;\n\n // store the first input to calculate the distance and direction\n if (!session.firstInput) {\n session.firstInput = simpleCloneInputData(input);\n }\n\n // to compute scale and rotation we need to store the multiple touches\n if (pointersLength > 1 && !session.firstMultiple) {\n session.firstMultiple = simpleCloneInputData(input);\n } else if (pointersLength === 1) {\n session.firstMultiple = false;\n }\n\n var firstInput = session.firstInput;\n var firstMultiple = session.firstMultiple;\n var offsetCenter = firstMultiple ? firstMultiple.center : firstInput.center;\n\n var center = input.center = getCenter(pointers);\n input.timeStamp = now();\n input.deltaTime = input.timeStamp - firstInput.timeStamp;\n\n input.angle = getAngle(offsetCenter, center);\n input.distance = getDistance(offsetCenter, center);\n\n computeDeltaXY(session, input);\n input.offsetDirection = getDirection(input.deltaX, input.deltaY);\n\n var overallVelocity = getVelocity(input.deltaTime, input.deltaX, input.deltaY);\n input.overallVelocityX = overallVelocity.x;\n input.overallVelocityY = overallVelocity.y;\n input.overallVelocity = (abs(overallVelocity.x) > abs(overallVelocity.y)) ? overallVelocity.x : overallVelocity.y;\n\n input.scale = firstMultiple ? getScale(firstMultiple.pointers, pointers) : 1;\n input.rotation = firstMultiple ? getRotation(firstMultiple.pointers, pointers) : 0;\n\n input.maxPointers = !session.prevInput ? input.pointers.length : ((input.pointers.length >\n session.prevInput.maxPointers) ? input.pointers.length : session.prevInput.maxPointers);\n\n computeIntervalInputData(session, input);\n\n // find the correct target\n var target = manager.element;\n if (hasParent(input.srcEvent.target, target)) {\n target = input.srcEvent.target;\n }\n input.target = target;\n}\n\nfunction computeDeltaXY(session, input) {\n var center = input.center;\n var offset = session.offsetDelta || {};\n var prevDelta = session.prevDelta || {};\n var prevInput = session.prevInput || {};\n\n if (input.eventType === INPUT_START || prevInput.eventType === INPUT_END) {\n prevDelta = session.prevDelta = {\n x: prevInput.deltaX || 0,\n y: prevInput.deltaY || 0\n };\n\n offset = session.offsetDelta = {\n x: center.x,\n y: center.y\n };\n }\n\n input.deltaX = prevDelta.x + (center.x - offset.x);\n input.deltaY = prevDelta.y + (center.y - offset.y);\n}\n\n/**\n * velocity is calculated every x ms\n * @param {Object} session\n * @param {Object} input\n */\nfunction computeIntervalInputData(session, input) {\n var last = session.lastInterval || input,\n deltaTime = input.timeStamp - last.timeStamp,\n velocity, velocityX, velocityY, direction;\n\n if (input.eventType != INPUT_CANCEL && (deltaTime > COMPUTE_INTERVAL || last.velocity === undefined)) {\n var deltaX = input.deltaX - last.deltaX;\n var deltaY = input.deltaY - last.deltaY;\n\n var v = getVelocity(deltaTime, deltaX, deltaY);\n velocityX = v.x;\n velocityY = v.y;\n velocity = (abs(v.x) > abs(v.y)) ? v.x : v.y;\n direction = getDirection(deltaX, deltaY);\n\n session.lastInterval = input;\n } else {\n // use latest velocity info if it doesn't overtake a minimum period\n velocity = last.velocity;\n velocityX = last.velocityX;\n velocityY = last.velocityY;\n direction = last.direction;\n }\n\n input.velocity = velocity;\n input.velocityX = velocityX;\n input.velocityY = velocityY;\n input.direction = direction;\n}\n\n/**\n * create a simple clone from the input used for storage of firstInput and firstMultiple\n * @param {Object} input\n * @returns {Object} clonedInputData\n */\nfunction simpleCloneInputData(input) {\n // make a simple copy of the pointers because we will get a reference if we don't\n // we only need clientXY for the calculations\n var pointers = [];\n var i = 0;\n while (i < input.pointers.length) {\n pointers[i] = {\n clientX: round(input.pointers[i].clientX),\n clientY: round(input.pointers[i].clientY)\n };\n i++;\n }\n\n return {\n timeStamp: now(),\n pointers: pointers,\n center: getCenter(pointers),\n deltaX: input.deltaX,\n deltaY: input.deltaY\n };\n}\n\n/**\n * get the center of all the pointers\n * @param {Array} pointers\n * @return {Object} center contains `x` and `y` properties\n */\nfunction getCenter(pointers) {\n var pointersLength = pointers.length;\n\n // no need to loop when only one touch\n if (pointersLength === 1) {\n return {\n x: round(pointers[0].clientX),\n y: round(pointers[0].clientY)\n };\n }\n\n var x = 0, y = 0, i = 0;\n while (i < pointersLength) {\n x += pointers[i].clientX;\n y += pointers[i].clientY;\n i++;\n }\n\n return {\n x: round(x / pointersLength),\n y: round(y / pointersLength)\n };\n}\n\n/**\n * calculate the velocity between two points. unit is in px per ms.\n * @param {Number} deltaTime\n * @param {Number} x\n * @param {Number} y\n * @return {Object} velocity `x` and `y`\n */\nfunction getVelocity(deltaTime, x, y) {\n return {\n x: x / deltaTime || 0,\n y: y / deltaTime || 0\n };\n}\n\n/**\n * get the direction between two points\n * @param {Number} x\n * @param {Number} y\n * @return {Number} direction\n */\nfunction getDirection(x, y) {\n if (x === y) {\n return DIRECTION_NONE;\n }\n\n if (abs(x) >= abs(y)) {\n return x < 0 ? DIRECTION_LEFT : DIRECTION_RIGHT;\n }\n return y < 0 ? DIRECTION_UP : DIRECTION_DOWN;\n}\n\n/**\n * calculate the absolute distance between two points\n * @param {Object} p1 {x, y}\n * @param {Object} p2 {x, y}\n * @param {Array} [props] containing x and y keys\n * @return {Number} distance\n */\nfunction getDistance(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n\n return Math.sqrt((x * x) + (y * y));\n}\n\n/**\n * calculate the angle between two coordinates\n * @param {Object} p1\n * @param {Object} p2\n * @param {Array} [props] containing x and y keys\n * @return {Number} angle\n */\nfunction getAngle(p1, p2, props) {\n if (!props) {\n props = PROPS_XY;\n }\n var x = p2[props[0]] - p1[props[0]],\n y = p2[props[1]] - p1[props[1]];\n return Math.atan2(y, x) * 180 / Math.PI;\n}\n\n/**\n * calculate the rotation degrees between two pointersets\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} rotation\n */\nfunction getRotation(start, end) {\n return getAngle(end[1], end[0], PROPS_CLIENT_XY) + getAngle(start[1], start[0], PROPS_CLIENT_XY);\n}\n\n/**\n * calculate the scale factor between two pointersets\n * no scale is 1, and goes down to 0 when pinched together, and bigger when pinched out\n * @param {Array} start array of pointers\n * @param {Array} end array of pointers\n * @return {Number} scale\n */\nfunction getScale(start, end) {\n return getDistance(end[0], end[1], PROPS_CLIENT_XY) / getDistance(start[0], start[1], PROPS_CLIENT_XY);\n}\n\nvar MOUSE_INPUT_MAP = {\n mousedown: INPUT_START,\n mousemove: INPUT_MOVE,\n mouseup: INPUT_END\n};\n\nvar MOUSE_ELEMENT_EVENTS = 'mousedown';\nvar MOUSE_WINDOW_EVENTS = 'mousemove mouseup';\n\n/**\n * Mouse events input\n * @constructor\n * @extends Input\n */\nfunction MouseInput() {\n this.evEl = MOUSE_ELEMENT_EVENTS;\n this.evWin = MOUSE_WINDOW_EVENTS;\n\n this.pressed = false; // mousedown state\n\n Input.apply(this, arguments);\n}\n\ninherit(MouseInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function MEhandler(ev) {\n var eventType = MOUSE_INPUT_MAP[ev.type];\n\n // on start we want to have the left mouse button down\n if (eventType & INPUT_START && ev.button === 0) {\n this.pressed = true;\n }\n\n if (eventType & INPUT_MOVE && ev.which !== 1) {\n eventType = INPUT_END;\n }\n\n // mouse must be down\n if (!this.pressed) {\n return;\n }\n\n if (eventType & INPUT_END) {\n this.pressed = false;\n }\n\n this.callback(this.manager, eventType, {\n pointers: [ev],\n changedPointers: [ev],\n pointerType: INPUT_TYPE_MOUSE,\n srcEvent: ev\n });\n }\n});\n\nvar POINTER_INPUT_MAP = {\n pointerdown: INPUT_START,\n pointermove: INPUT_MOVE,\n pointerup: INPUT_END,\n pointercancel: INPUT_CANCEL,\n pointerout: INPUT_CANCEL\n};\n\n// in IE10 the pointer types is defined as an enum\nvar IE10_POINTER_TYPE_ENUM = {\n 2: INPUT_TYPE_TOUCH,\n 3: INPUT_TYPE_PEN,\n 4: INPUT_TYPE_MOUSE,\n 5: INPUT_TYPE_KINECT // see https://twitter.com/jacobrossi/status/480596438489890816\n};\n\nvar POINTER_ELEMENT_EVENTS = 'pointerdown';\nvar POINTER_WINDOW_EVENTS = 'pointermove pointerup pointercancel';\n\n// IE10 has prefixed support, and case-sensitive\nif (window.MSPointerEvent && !window.PointerEvent) {\n POINTER_ELEMENT_EVENTS = 'MSPointerDown';\n POINTER_WINDOW_EVENTS = 'MSPointerMove MSPointerUp MSPointerCancel';\n}\n\n/**\n * Pointer events input\n * @constructor\n * @extends Input\n */\nfunction PointerEventInput() {\n this.evEl = POINTER_ELEMENT_EVENTS;\n this.evWin = POINTER_WINDOW_EVENTS;\n\n Input.apply(this, arguments);\n\n this.store = (this.manager.session.pointerEvents = []);\n}\n\ninherit(PointerEventInput, Input, {\n /**\n * handle mouse events\n * @param {Object} ev\n */\n handler: function PEhandler(ev) {\n var store = this.store;\n var removePointer = false;\n\n var eventTypeNormalized = ev.type.toLowerCase().replace('ms', '');\n var eventType = POINTER_INPUT_MAP[eventTypeNormalized];\n var pointerType = IE10_POINTER_TYPE_ENUM[ev.pointerType] || ev.pointerType;\n\n var isTouch = (pointerType == INPUT_TYPE_TOUCH);\n\n // get index of the event in the store\n var storeIndex = inArray(store, ev.pointerId, 'pointerId');\n\n // start and mouse must be down\n if (eventType & INPUT_START && (ev.button === 0 || isTouch)) {\n if (storeIndex < 0) {\n store.push(ev);\n storeIndex = store.length - 1;\n }\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n removePointer = true;\n }\n\n // it not found, so the pointer hasn't been down (so it's probably a hover)\n if (storeIndex < 0) {\n return;\n }\n\n // update the event in the store\n store[storeIndex] = ev;\n\n this.callback(this.manager, eventType, {\n pointers: store,\n changedPointers: [ev],\n pointerType: pointerType,\n srcEvent: ev\n });\n\n if (removePointer) {\n // remove from the store\n store.splice(storeIndex, 1);\n }\n }\n});\n\nvar SINGLE_TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar SINGLE_TOUCH_TARGET_EVENTS = 'touchstart';\nvar SINGLE_TOUCH_WINDOW_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Touch events input\n * @constructor\n * @extends Input\n */\nfunction SingleTouchInput() {\n this.evTarget = SINGLE_TOUCH_TARGET_EVENTS;\n this.evWin = SINGLE_TOUCH_WINDOW_EVENTS;\n this.started = false;\n\n Input.apply(this, arguments);\n}\n\ninherit(SingleTouchInput, Input, {\n handler: function TEhandler(ev) {\n var type = SINGLE_TOUCH_INPUT_MAP[ev.type];\n\n // should we handle the touch events?\n if (type === INPUT_START) {\n this.started = true;\n }\n\n if (!this.started) {\n return;\n }\n\n var touches = normalizeSingleTouches.call(this, ev, type);\n\n // when done, reset the started state\n if (type & (INPUT_END | INPUT_CANCEL) && touches[0].length - touches[1].length === 0) {\n this.started = false;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction normalizeSingleTouches(ev, type) {\n var all = toArray(ev.touches);\n var changed = toArray(ev.changedTouches);\n\n if (type & (INPUT_END | INPUT_CANCEL)) {\n all = uniqueArray(all.concat(changed), 'identifier', true);\n }\n\n return [all, changed];\n}\n\nvar TOUCH_INPUT_MAP = {\n touchstart: INPUT_START,\n touchmove: INPUT_MOVE,\n touchend: INPUT_END,\n touchcancel: INPUT_CANCEL\n};\n\nvar TOUCH_TARGET_EVENTS = 'touchstart touchmove touchend touchcancel';\n\n/**\n * Multi-user touch events input\n * @constructor\n * @extends Input\n */\nfunction TouchInput() {\n this.evTarget = TOUCH_TARGET_EVENTS;\n this.targetIds = {};\n\n Input.apply(this, arguments);\n}\n\ninherit(TouchInput, Input, {\n handler: function MTEhandler(ev) {\n var type = TOUCH_INPUT_MAP[ev.type];\n var touches = getTouches.call(this, ev, type);\n if (!touches) {\n return;\n }\n\n this.callback(this.manager, type, {\n pointers: touches[0],\n changedPointers: touches[1],\n pointerType: INPUT_TYPE_TOUCH,\n srcEvent: ev\n });\n }\n});\n\n/**\n * @this {TouchInput}\n * @param {Object} ev\n * @param {Number} type flag\n * @returns {undefined|Array} [all, changed]\n */\nfunction getTouches(ev, type) {\n var allTouches = toArray(ev.touches);\n var targetIds = this.targetIds;\n\n // when there is only one touch, the process can be simplified\n if (type & (INPUT_START | INPUT_MOVE) && allTouches.length === 1) {\n targetIds[allTouches[0].identifier] = true;\n return [allTouches, allTouches];\n }\n\n var i,\n targetTouches,\n changedTouches = toArray(ev.changedTouches),\n changedTargetTouches = [],\n target = this.target;\n\n // get target touches from touches\n targetTouches = allTouches.filter(function(touch) {\n return hasParent(touch.target, target);\n });\n\n // collect touches\n if (type === INPUT_START) {\n i = 0;\n while (i < targetTouches.length) {\n targetIds[targetTouches[i].identifier] = true;\n i++;\n }\n }\n\n // filter changed touches to only contain touches that exist in the collected target ids\n i = 0;\n while (i < changedTouches.length) {\n if (targetIds[changedTouches[i].identifier]) {\n changedTargetTouches.push(changedTouches[i]);\n }\n\n // cleanup removed touches\n if (type & (INPUT_END | INPUT_CANCEL)) {\n delete targetIds[changedTouches[i].identifier];\n }\n i++;\n }\n\n if (!changedTargetTouches.length) {\n return;\n }\n\n return [\n // merge targetTouches with changedTargetTouches so it contains ALL touches, including 'end' and 'cancel'\n uniqueArray(targetTouches.concat(changedTargetTouches), 'identifier', true),\n changedTargetTouches\n ];\n}\n\n/**\n * Combined touch and mouse input\n *\n * Touch has a higher priority then mouse, and while touching no mouse events are allowed.\n * This because touch devices also emit mouse events while doing a touch.\n *\n * @constructor\n * @extends Input\n */\n\nvar DEDUP_TIMEOUT = 2500;\nvar DEDUP_DISTANCE = 25;\n\nfunction TouchMouseInput() {\n Input.apply(this, arguments);\n\n var handler = bindFn(this.handler, this);\n this.touch = new TouchInput(this.manager, handler);\n this.mouse = new MouseInput(this.manager, handler);\n\n this.primaryTouch = null;\n this.lastTouches = [];\n}\n\ninherit(TouchMouseInput, Input, {\n /**\n * handle mouse and touch events\n * @param {Hammer} manager\n * @param {String} inputEvent\n * @param {Object} inputData\n */\n handler: function TMEhandler(manager, inputEvent, inputData) {\n var isTouch = (inputData.pointerType == INPUT_TYPE_TOUCH),\n isMouse = (inputData.pointerType == INPUT_TYPE_MOUSE);\n\n if (isMouse && inputData.sourceCapabilities && inputData.sourceCapabilities.firesTouchEvents) {\n return;\n }\n\n // when we're in a touch event, record touches to de-dupe synthetic mouse event\n if (isTouch) {\n recordTouches.call(this, inputEvent, inputData);\n } else if (isMouse && isSyntheticEvent.call(this, inputData)) {\n return;\n }\n\n this.callback(manager, inputEvent, inputData);\n },\n\n /**\n * remove the event listeners\n */\n destroy: function destroy() {\n this.touch.destroy();\n this.mouse.destroy();\n }\n});\n\nfunction recordTouches(eventType, eventData) {\n if (eventType & INPUT_START) {\n this.primaryTouch = eventData.changedPointers[0].identifier;\n setLastTouch.call(this, eventData);\n } else if (eventType & (INPUT_END | INPUT_CANCEL)) {\n setLastTouch.call(this, eventData);\n }\n}\n\nfunction setLastTouch(eventData) {\n var touch = eventData.changedPointers[0];\n\n if (touch.identifier === this.primaryTouch) {\n var lastTouch = {x: touch.clientX, y: touch.clientY};\n this.lastTouches.push(lastTouch);\n var lts = this.lastTouches;\n var removeLastTouch = function() {\n var i = lts.indexOf(lastTouch);\n if (i > -1) {\n lts.splice(i, 1);\n }\n };\n setTimeout(removeLastTouch, DEDUP_TIMEOUT);\n }\n}\n\nfunction isSyntheticEvent(eventData) {\n var x = eventData.srcEvent.clientX, y = eventData.srcEvent.clientY;\n for (var i = 0; i < this.lastTouches.length; i++) {\n var t = this.lastTouches[i];\n var dx = Math.abs(x - t.x), dy = Math.abs(y - t.y);\n if (dx <= DEDUP_DISTANCE && dy <= DEDUP_DISTANCE) {\n return true;\n }\n }\n return false;\n}\n\nvar PREFIXED_TOUCH_ACTION = prefixed(TEST_ELEMENT.style, 'touchAction');\nvar NATIVE_TOUCH_ACTION = PREFIXED_TOUCH_ACTION !== undefined;\n\n// magical touchAction value\nvar TOUCH_ACTION_COMPUTE = 'compute';\nvar TOUCH_ACTION_AUTO = 'auto';\nvar TOUCH_ACTION_MANIPULATION = 'manipulation'; // not implemented\nvar TOUCH_ACTION_NONE = 'none';\nvar TOUCH_ACTION_PAN_X = 'pan-x';\nvar TOUCH_ACTION_PAN_Y = 'pan-y';\nvar TOUCH_ACTION_MAP = getTouchActionProps();\n\n/**\n * Touch Action\n * sets the touchAction property or uses the js alternative\n * @param {Manager} manager\n * @param {String} value\n * @constructor\n */\nfunction TouchAction(manager, value) {\n this.manager = manager;\n this.set(value);\n}\n\nTouchAction.prototype = {\n /**\n * set the touchAction value on the element or enable the polyfill\n * @param {String} value\n */\n set: function(value) {\n // find out the touch-action by the event handlers\n if (value == TOUCH_ACTION_COMPUTE) {\n value = this.compute();\n }\n\n if (NATIVE_TOUCH_ACTION && this.manager.element.style && TOUCH_ACTION_MAP[value]) {\n this.manager.element.style[PREFIXED_TOUCH_ACTION] = value;\n }\n this.actions = value.toLowerCase().trim();\n },\n\n /**\n * just re-set the touchAction value\n */\n update: function() {\n this.set(this.manager.options.touchAction);\n },\n\n /**\n * compute the value for the touchAction property based on the recognizer's settings\n * @returns {String} value\n */\n compute: function() {\n var actions = [];\n each(this.manager.recognizers, function(recognizer) {\n if (boolOrFn(recognizer.options.enable, [recognizer])) {\n actions = actions.concat(recognizer.getTouchAction());\n }\n });\n return cleanTouchActions(actions.join(' '));\n },\n\n /**\n * this method is called on each input cycle and provides the preventing of the browser behavior\n * @param {Object} input\n */\n preventDefaults: function(input) {\n var srcEvent = input.srcEvent;\n var direction = input.offsetDirection;\n\n // if the touch action did prevented once this session\n if (this.manager.session.prevented) {\n srcEvent.preventDefault();\n return;\n }\n\n var actions = this.actions;\n var hasNone = inStr(actions, TOUCH_ACTION_NONE) && !TOUCH_ACTION_MAP[TOUCH_ACTION_NONE];\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_Y];\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X) && !TOUCH_ACTION_MAP[TOUCH_ACTION_PAN_X];\n\n if (hasNone) {\n //do not prevent defaults if this is a tap gesture\n\n var isTapPointer = input.pointers.length === 1;\n var isTapMovement = input.distance < 2;\n var isTapTouchTime = input.deltaTime < 250;\n\n if (isTapPointer && isTapMovement && isTapTouchTime) {\n return;\n }\n }\n\n if (hasPanX && hasPanY) {\n // `pan-x pan-y` means browser handles all scrolling/panning, do not prevent\n return;\n }\n\n if (hasNone ||\n (hasPanY && direction & DIRECTION_HORIZONTAL) ||\n (hasPanX && direction & DIRECTION_VERTICAL)) {\n return this.preventSrc(srcEvent);\n }\n },\n\n /**\n * call preventDefault to prevent the browser's default behavior (scrolling in most cases)\n * @param {Object} srcEvent\n */\n preventSrc: function(srcEvent) {\n this.manager.session.prevented = true;\n srcEvent.preventDefault();\n }\n};\n\n/**\n * when the touchActions are collected they are not a valid value, so we need to clean things up. *\n * @param {String} actions\n * @returns {*}\n */\nfunction cleanTouchActions(actions) {\n // none\n if (inStr(actions, TOUCH_ACTION_NONE)) {\n return TOUCH_ACTION_NONE;\n }\n\n var hasPanX = inStr(actions, TOUCH_ACTION_PAN_X);\n var hasPanY = inStr(actions, TOUCH_ACTION_PAN_Y);\n\n // if both pan-x and pan-y are set (different recognizers\n // for different directions, e.g. horizontal pan but vertical swipe?)\n // we need none (as otherwise with pan-x pan-y combined none of these\n // recognizers will work, since the browser would handle all panning\n if (hasPanX && hasPanY) {\n return TOUCH_ACTION_NONE;\n }\n\n // pan-x OR pan-y\n if (hasPanX || hasPanY) {\n return hasPanX ? TOUCH_ACTION_PAN_X : TOUCH_ACTION_PAN_Y;\n }\n\n // manipulation\n if (inStr(actions, TOUCH_ACTION_MANIPULATION)) {\n return TOUCH_ACTION_MANIPULATION;\n }\n\n return TOUCH_ACTION_AUTO;\n}\n\nfunction getTouchActionProps() {\n if (!NATIVE_TOUCH_ACTION) {\n return false;\n }\n var touchMap = {};\n var cssSupports = window.CSS && window.CSS.supports;\n ['auto', 'manipulation', 'pan-y', 'pan-x', 'pan-x pan-y', 'none'].forEach(function(val) {\n\n // If css.supports is not supported but there is native touch-action assume it supports\n // all values. This is the case for IE 10 and 11.\n touchMap[val] = cssSupports ? window.CSS.supports('touch-action', val) : true;\n });\n return touchMap;\n}\n\n/**\n * Recognizer flow explained; *\n * All recognizers have the initial state of POSSIBLE when a input session starts.\n * The definition of a input session is from the first input until the last input, with all it's movement in it. *\n * Example session for mouse-input: mousedown -> mousemove -> mouseup\n *\n * On each recognizing cycle (see Manager.recognize) the .recognize() method is executed\n * which determines with state it should be.\n *\n * If the recognizer has the state FAILED, CANCELLED or RECOGNIZED (equals ENDED), it is reset to\n * POSSIBLE to give it another change on the next cycle.\n *\n * Possible\n * |\n * +-----+---------------+\n * | |\n * +-----+-----+ |\n * | | |\n * Failed Cancelled |\n * +-------+------+\n * | |\n * Recognized Began\n * |\n * Changed\n * |\n * Ended/Recognized\n */\nvar STATE_POSSIBLE = 1;\nvar STATE_BEGAN = 2;\nvar STATE_CHANGED = 4;\nvar STATE_ENDED = 8;\nvar STATE_RECOGNIZED = STATE_ENDED;\nvar STATE_CANCELLED = 16;\nvar STATE_FAILED = 32;\n\n/**\n * Recognizer\n * Every recognizer needs to extend from this class.\n * @constructor\n * @param {Object} options\n */\nfunction Recognizer(options) {\n this.options = assign({}, this.defaults, options || {});\n\n this.id = uniqueId();\n\n this.manager = null;\n\n // default is enable true\n this.options.enable = ifUndefined(this.options.enable, true);\n\n this.state = STATE_POSSIBLE;\n\n this.simultaneous = {};\n this.requireFail = [];\n}\n\nRecognizer.prototype = {\n /**\n * @virtual\n * @type {Object}\n */\n defaults: {},\n\n /**\n * set options\n * @param {Object} options\n * @return {Recognizer}\n */\n set: function(options) {\n assign(this.options, options);\n\n // also update the touchAction, in case something changed about the directions/enabled state\n this.manager && this.manager.touchAction.update();\n return this;\n },\n\n /**\n * recognize simultaneous with an other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n recognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'recognizeWith', this)) {\n return this;\n }\n\n var simultaneous = this.simultaneous;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (!simultaneous[otherRecognizer.id]) {\n simultaneous[otherRecognizer.id] = otherRecognizer;\n otherRecognizer.recognizeWith(this);\n }\n return this;\n },\n\n /**\n * drop the simultaneous link. it doesnt remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRecognizeWith: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRecognizeWith', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n delete this.simultaneous[otherRecognizer.id];\n return this;\n },\n\n /**\n * recognizer can only run when an other is failing\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n requireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'requireFailure', this)) {\n return this;\n }\n\n var requireFail = this.requireFail;\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n if (inArray(requireFail, otherRecognizer) === -1) {\n requireFail.push(otherRecognizer);\n otherRecognizer.requireFailure(this);\n }\n return this;\n },\n\n /**\n * drop the requireFailure link. it does not remove the link on the other recognizer.\n * @param {Recognizer} otherRecognizer\n * @returns {Recognizer} this\n */\n dropRequireFailure: function(otherRecognizer) {\n if (invokeArrayArg(otherRecognizer, 'dropRequireFailure', this)) {\n return this;\n }\n\n otherRecognizer = getRecognizerByNameIfManager(otherRecognizer, this);\n var index = inArray(this.requireFail, otherRecognizer);\n if (index > -1) {\n this.requireFail.splice(index, 1);\n }\n return this;\n },\n\n /**\n * has require failures boolean\n * @returns {boolean}\n */\n hasRequireFailures: function() {\n return this.requireFail.length > 0;\n },\n\n /**\n * if the recognizer can recognize simultaneous with an other recognizer\n * @param {Recognizer} otherRecognizer\n * @returns {Boolean}\n */\n canRecognizeWith: function(otherRecognizer) {\n return !!this.simultaneous[otherRecognizer.id];\n },\n\n /**\n * You should use `tryEmit` instead of `emit` directly to check\n * that all the needed recognizers has failed before emitting.\n * @param {Object} input\n */\n emit: function(input) {\n var self = this;\n var state = this.state;\n\n function emit(event) {\n self.manager.emit(event, input);\n }\n\n // 'panstart' and 'panmove'\n if (state < STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n\n emit(self.options.event); // simple 'eventName' events\n\n if (input.additionalEvent) { // additional event(panleft, panright, pinchin, pinchout...)\n emit(input.additionalEvent);\n }\n\n // panend and pancancel\n if (state >= STATE_ENDED) {\n emit(self.options.event + stateStr(state));\n }\n },\n\n /**\n * Check that all the require failure recognizers has failed,\n * if true, it emits a gesture event,\n * otherwise, setup the state to FAILED.\n * @param {Object} input\n */\n tryEmit: function(input) {\n if (this.canEmit()) {\n return this.emit(input);\n }\n // it's failing anyway\n this.state = STATE_FAILED;\n },\n\n /**\n * can we emit?\n * @returns {boolean}\n */\n canEmit: function() {\n var i = 0;\n while (i < this.requireFail.length) {\n if (!(this.requireFail[i].state & (STATE_FAILED | STATE_POSSIBLE))) {\n return false;\n }\n i++;\n }\n return true;\n },\n\n /**\n * update the recognizer\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n // make a new copy of the inputData\n // so we can change the inputData without messing up the other recognizers\n var inputDataClone = assign({}, inputData);\n\n // is is enabled and allow recognizing?\n if (!boolOrFn(this.options.enable, [this, inputDataClone])) {\n this.reset();\n this.state = STATE_FAILED;\n return;\n }\n\n // reset when we've reached the end\n if (this.state & (STATE_RECOGNIZED | STATE_CANCELLED | STATE_FAILED)) {\n this.state = STATE_POSSIBLE;\n }\n\n this.state = this.process(inputDataClone);\n\n // the recognizer has recognized a gesture\n // so trigger an event\n if (this.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED | STATE_CANCELLED)) {\n this.tryEmit(inputDataClone);\n }\n },\n\n /**\n * return the state of the recognizer\n * the actual recognizing happens in this method\n * @virtual\n * @param {Object} inputData\n * @returns {Const} STATE\n */\n process: function(inputData) { }, // jshint ignore:line\n\n /**\n * return the preferred touch-action\n * @virtual\n * @returns {Array}\n */\n getTouchAction: function() { },\n\n /**\n * called when the gesture isn't allowed to recognize\n * like when another is being recognized or it is disabled\n * @virtual\n */\n reset: function() { }\n};\n\n/**\n * get a usable string, used as event postfix\n * @param {Const} state\n * @returns {String} state\n */\nfunction stateStr(state) {\n if (state & STATE_CANCELLED) {\n return 'cancel';\n } else if (state & STATE_ENDED) {\n return 'end';\n } else if (state & STATE_CHANGED) {\n return 'move';\n } else if (state & STATE_BEGAN) {\n return 'start';\n }\n return '';\n}\n\n/**\n * direction cons to string\n * @param {Const} direction\n * @returns {String}\n */\nfunction directionStr(direction) {\n if (direction == DIRECTION_DOWN) {\n return 'down';\n } else if (direction == DIRECTION_UP) {\n return 'up';\n } else if (direction == DIRECTION_LEFT) {\n return 'left';\n } else if (direction == DIRECTION_RIGHT) {\n return 'right';\n }\n return '';\n}\n\n/**\n * get a recognizer by name if it is bound to a manager\n * @param {Recognizer|String} otherRecognizer\n * @param {Recognizer} recognizer\n * @returns {Recognizer}\n */\nfunction getRecognizerByNameIfManager(otherRecognizer, recognizer) {\n var manager = recognizer.manager;\n if (manager) {\n return manager.get(otherRecognizer);\n }\n return otherRecognizer;\n}\n\n/**\n * This recognizer is just used as a base for the simple attribute recognizers.\n * @constructor\n * @extends Recognizer\n */\nfunction AttrRecognizer() {\n Recognizer.apply(this, arguments);\n}\n\ninherit(AttrRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof AttrRecognizer\n */\n defaults: {\n /**\n * @type {Number}\n * @default 1\n */\n pointers: 1\n },\n\n /**\n * Used to check if it the recognizer receives valid input, like input.distance > 10.\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {Boolean} recognized\n */\n attrTest: function(input) {\n var optionPointers = this.options.pointers;\n return optionPointers === 0 || input.pointers.length === optionPointers;\n },\n\n /**\n * Process the input and return the state for the recognizer\n * @memberof AttrRecognizer\n * @param {Object} input\n * @returns {*} State\n */\n process: function(input) {\n var state = this.state;\n var eventType = input.eventType;\n\n var isRecognized = state & (STATE_BEGAN | STATE_CHANGED);\n var isValid = this.attrTest(input);\n\n // on cancel input and we've recognized before, return STATE_CANCELLED\n if (isRecognized && (eventType & INPUT_CANCEL || !isValid)) {\n return state | STATE_CANCELLED;\n } else if (isRecognized || isValid) {\n if (eventType & INPUT_END) {\n return state | STATE_ENDED;\n } else if (!(state & STATE_BEGAN)) {\n return STATE_BEGAN;\n }\n return state | STATE_CHANGED;\n }\n return STATE_FAILED;\n }\n});\n\n/**\n * Pan\n * Recognized when the pointer is down and moved in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PanRecognizer() {\n AttrRecognizer.apply(this, arguments);\n\n this.pX = null;\n this.pY = null;\n}\n\ninherit(PanRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PanRecognizer\n */\n defaults: {\n event: 'pan',\n threshold: 10,\n pointers: 1,\n direction: DIRECTION_ALL\n },\n\n getTouchAction: function() {\n var direction = this.options.direction;\n var actions = [];\n if (direction & DIRECTION_HORIZONTAL) {\n actions.push(TOUCH_ACTION_PAN_Y);\n }\n if (direction & DIRECTION_VERTICAL) {\n actions.push(TOUCH_ACTION_PAN_X);\n }\n return actions;\n },\n\n directionTest: function(input) {\n var options = this.options;\n var hasMoved = true;\n var distance = input.distance;\n var direction = input.direction;\n var x = input.deltaX;\n var y = input.deltaY;\n\n // lock to axis?\n if (!(direction & options.direction)) {\n if (options.direction & DIRECTION_HORIZONTAL) {\n direction = (x === 0) ? DIRECTION_NONE : (x < 0) ? DIRECTION_LEFT : DIRECTION_RIGHT;\n hasMoved = x != this.pX;\n distance = Math.abs(input.deltaX);\n } else {\n direction = (y === 0) ? DIRECTION_NONE : (y < 0) ? DIRECTION_UP : DIRECTION_DOWN;\n hasMoved = y != this.pY;\n distance = Math.abs(input.deltaY);\n }\n }\n input.direction = direction;\n return hasMoved && distance > options.threshold && direction & options.direction;\n },\n\n attrTest: function(input) {\n return AttrRecognizer.prototype.attrTest.call(this, input) &&\n (this.state & STATE_BEGAN || (!(this.state & STATE_BEGAN) && this.directionTest(input)));\n },\n\n emit: function(input) {\n\n this.pX = input.deltaX;\n this.pY = input.deltaY;\n\n var direction = directionStr(input.direction);\n\n if (direction) {\n input.additionalEvent = this.options.event + direction;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Pinch\n * Recognized when two or more pointers are moving toward (zoom-in) or away from each other (zoom-out).\n * @constructor\n * @extends AttrRecognizer\n */\nfunction PinchRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(PinchRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'pinch',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.scale - 1) > this.options.threshold || this.state & STATE_BEGAN);\n },\n\n emit: function(input) {\n if (input.scale !== 1) {\n var inOut = input.scale < 1 ? 'in' : 'out';\n input.additionalEvent = this.options.event + inOut;\n }\n this._super.emit.call(this, input);\n }\n});\n\n/**\n * Press\n * Recognized when the pointer is down for x ms without any movement.\n * @constructor\n * @extends Recognizer\n */\nfunction PressRecognizer() {\n Recognizer.apply(this, arguments);\n\n this._timer = null;\n this._input = null;\n}\n\ninherit(PressRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PressRecognizer\n */\n defaults: {\n event: 'press',\n pointers: 1,\n time: 251, // minimal time of the pointer to be pressed\n threshold: 9 // a minimal movement is ok, but keep it low\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_AUTO];\n },\n\n process: function(input) {\n var options = this.options;\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTime = input.deltaTime > options.time;\n\n this._input = input;\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (!validMovement || !validPointers || (input.eventType & (INPUT_END | INPUT_CANCEL) && !validTime)) {\n this.reset();\n } else if (input.eventType & INPUT_START) {\n this.reset();\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.time, this);\n } else if (input.eventType & INPUT_END) {\n return STATE_RECOGNIZED;\n }\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function(input) {\n if (this.state !== STATE_RECOGNIZED) {\n return;\n }\n\n if (input && (input.eventType & INPUT_END)) {\n this.manager.emit(this.options.event + 'up', input);\n } else {\n this._input.timeStamp = now();\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Rotate\n * Recognized when two or more pointer are moving in a circular motion.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction RotateRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(RotateRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof RotateRecognizer\n */\n defaults: {\n event: 'rotate',\n threshold: 0,\n pointers: 2\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_NONE];\n },\n\n attrTest: function(input) {\n return this._super.attrTest.call(this, input) &&\n (Math.abs(input.rotation) > this.options.threshold || this.state & STATE_BEGAN);\n }\n});\n\n/**\n * Swipe\n * Recognized when the pointer is moving fast (velocity), with enough distance in the allowed direction.\n * @constructor\n * @extends AttrRecognizer\n */\nfunction SwipeRecognizer() {\n AttrRecognizer.apply(this, arguments);\n}\n\ninherit(SwipeRecognizer, AttrRecognizer, {\n /**\n * @namespace\n * @memberof SwipeRecognizer\n */\n defaults: {\n event: 'swipe',\n threshold: 10,\n velocity: 0.3,\n direction: DIRECTION_HORIZONTAL | DIRECTION_VERTICAL,\n pointers: 1\n },\n\n getTouchAction: function() {\n return PanRecognizer.prototype.getTouchAction.call(this);\n },\n\n attrTest: function(input) {\n var direction = this.options.direction;\n var velocity;\n\n if (direction & (DIRECTION_HORIZONTAL | DIRECTION_VERTICAL)) {\n velocity = input.overallVelocity;\n } else if (direction & DIRECTION_HORIZONTAL) {\n velocity = input.overallVelocityX;\n } else if (direction & DIRECTION_VERTICAL) {\n velocity = input.overallVelocityY;\n }\n\n return this._super.attrTest.call(this, input) &&\n direction & input.offsetDirection &&\n input.distance > this.options.threshold &&\n input.maxPointers == this.options.pointers &&\n abs(velocity) > this.options.velocity && input.eventType & INPUT_END;\n },\n\n emit: function(input) {\n var direction = directionStr(input.offsetDirection);\n if (direction) {\n this.manager.emit(this.options.event + direction, input);\n }\n\n this.manager.emit(this.options.event, input);\n }\n});\n\n/**\n * A tap is ecognized when the pointer is doing a small tap/click. Multiple taps are recognized if they occur\n * between the given interval and position. The delay option can be used to recognize multi-taps without firing\n * a single tap.\n *\n * The eventData from the emitted event contains the property `tapCount`, which contains the amount of\n * multi-taps being recognized.\n * @constructor\n * @extends Recognizer\n */\nfunction TapRecognizer() {\n Recognizer.apply(this, arguments);\n\n // previous time and center,\n // used for tap counting\n this.pTime = false;\n this.pCenter = false;\n\n this._timer = null;\n this._input = null;\n this.count = 0;\n}\n\ninherit(TapRecognizer, Recognizer, {\n /**\n * @namespace\n * @memberof PinchRecognizer\n */\n defaults: {\n event: 'tap',\n pointers: 1,\n taps: 1,\n interval: 300, // max time between the multi-tap taps\n time: 250, // max time of the pointer to be down (like finger on the screen)\n threshold: 9, // a minimal movement is ok, but keep it low\n posThreshold: 10 // a multi-tap can be a bit off the initial position\n },\n\n getTouchAction: function() {\n return [TOUCH_ACTION_MANIPULATION];\n },\n\n process: function(input) {\n var options = this.options;\n\n var validPointers = input.pointers.length === options.pointers;\n var validMovement = input.distance < options.threshold;\n var validTouchTime = input.deltaTime < options.time;\n\n this.reset();\n\n if ((input.eventType & INPUT_START) && (this.count === 0)) {\n return this.failTimeout();\n }\n\n // we only allow little movement\n // and we've reached an end event, so a tap is possible\n if (validMovement && validTouchTime && validPointers) {\n if (input.eventType != INPUT_END) {\n return this.failTimeout();\n }\n\n var validInterval = this.pTime ? (input.timeStamp - this.pTime < options.interval) : true;\n var validMultiTap = !this.pCenter || getDistance(this.pCenter, input.center) < options.posThreshold;\n\n this.pTime = input.timeStamp;\n this.pCenter = input.center;\n\n if (!validMultiTap || !validInterval) {\n this.count = 1;\n } else {\n this.count += 1;\n }\n\n this._input = input;\n\n // if tap count matches we have recognized it,\n // else it has began recognizing...\n var tapCount = this.count % options.taps;\n if (tapCount === 0) {\n // no failing requirements, immediately trigger the tap event\n // or wait as long as the multitap interval to trigger\n if (!this.hasRequireFailures()) {\n return STATE_RECOGNIZED;\n } else {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_RECOGNIZED;\n this.tryEmit();\n }, options.interval, this);\n return STATE_BEGAN;\n }\n }\n }\n return STATE_FAILED;\n },\n\n failTimeout: function() {\n this._timer = setTimeoutContext(function() {\n this.state = STATE_FAILED;\n }, this.options.interval, this);\n return STATE_FAILED;\n },\n\n reset: function() {\n clearTimeout(this._timer);\n },\n\n emit: function() {\n if (this.state == STATE_RECOGNIZED) {\n this._input.tapCount = this.count;\n this.manager.emit(this.options.event, this._input);\n }\n }\n});\n\n/**\n * Simple way to create a manager with a default set of recognizers.\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Hammer(element, options) {\n options = options || {};\n options.recognizers = ifUndefined(options.recognizers, Hammer.defaults.preset);\n return new Manager(element, options);\n}\n\n/**\n * @const {string}\n */\nHammer.VERSION = '2.0.7';\n\n/**\n * default settings\n * @namespace\n */\nHammer.defaults = {\n /**\n * set if DOM events are being triggered.\n * But this is slower and unused by simple implementations, so disabled by default.\n * @type {Boolean}\n * @default false\n */\n domEvents: false,\n\n /**\n * The value for the touchAction property/fallback.\n * When set to `compute` it will magically set the correct value based on the added recognizers.\n * @type {String}\n * @default compute\n */\n touchAction: TOUCH_ACTION_COMPUTE,\n\n /**\n * @type {Boolean}\n * @default true\n */\n enable: true,\n\n /**\n * EXPERIMENTAL FEATURE -- can be removed/changed\n * Change the parent input target element.\n * If Null, then it is being set the to main element.\n * @type {Null|EventTarget}\n * @default null\n */\n inputTarget: null,\n\n /**\n * force an input class\n * @type {Null|Function}\n * @default null\n */\n inputClass: null,\n\n /**\n * Default recognizer setup when calling `Hammer()`\n * When creating a new Manager these will be skipped.\n * @type {Array}\n */\n preset: [\n // RecognizerClass, options, [recognizeWith, ...], [requireFailure, ...]\n [RotateRecognizer, {enable: false}],\n [PinchRecognizer, {enable: false}, ['rotate']],\n [SwipeRecognizer, {direction: DIRECTION_HORIZONTAL}],\n [PanRecognizer, {direction: DIRECTION_HORIZONTAL}, ['swipe']],\n [TapRecognizer],\n [TapRecognizer, {event: 'doubletap', taps: 2}, ['tap']],\n [PressRecognizer]\n ],\n\n /**\n * Some CSS properties can be used to improve the working of Hammer.\n * Add them to this method and they will be set when creating a new Manager.\n * @namespace\n */\n cssProps: {\n /**\n * Disables text selection to improve the dragging gesture. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userSelect: 'none',\n\n /**\n * Disable the Windows Phone grippers when pressing an element.\n * @type {String}\n * @default 'none'\n */\n touchSelect: 'none',\n\n /**\n * Disables the default callout shown when you touch and hold a touch target.\n * On iOS, when you touch and hold a touch target such as a link, Safari displays\n * a callout containing information about the link. This property allows you to disable that callout.\n * @type {String}\n * @default 'none'\n */\n touchCallout: 'none',\n\n /**\n * Specifies whether zooming is enabled. Used by IE10>\n * @type {String}\n * @default 'none'\n */\n contentZooming: 'none',\n\n /**\n * Specifies that an entire element should be draggable instead of its contents. Mainly for desktop browsers.\n * @type {String}\n * @default 'none'\n */\n userDrag: 'none',\n\n /**\n * Overrides the highlight color shown when the user taps a link or a JavaScript\n * clickable element in iOS. This property obeys the alpha value, if specified.\n * @type {String}\n * @default 'rgba(0,0,0,0)'\n */\n tapHighlightColor: 'rgba(0,0,0,0)'\n }\n};\n\nvar STOP = 1;\nvar FORCED_STOP = 2;\n\n/**\n * Manager\n * @param {HTMLElement} element\n * @param {Object} [options]\n * @constructor\n */\nfunction Manager(element, options) {\n this.options = assign({}, Hammer.defaults, options || {});\n\n this.options.inputTarget = this.options.inputTarget || element;\n\n this.handlers = {};\n this.session = {};\n this.recognizers = [];\n this.oldCssProps = {};\n\n this.element = element;\n this.input = createInputInstance(this);\n this.touchAction = new TouchAction(this, this.options.touchAction);\n\n toggleCssProps(this, true);\n\n each(this.options.recognizers, function(item) {\n var recognizer = this.add(new (item[0])(item[1]));\n item[2] && recognizer.recognizeWith(item[2]);\n item[3] && recognizer.requireFailure(item[3]);\n }, this);\n}\n\nManager.prototype = {\n /**\n * set options\n * @param {Object} options\n * @returns {Manager}\n */\n set: function(options) {\n assign(this.options, options);\n\n // Options that need a little more setup\n if (options.touchAction) {\n this.touchAction.update();\n }\n if (options.inputTarget) {\n // Clean up existing event listeners and reinitialize\n this.input.destroy();\n this.input.target = options.inputTarget;\n this.input.init();\n }\n return this;\n },\n\n /**\n * stop recognizing for this session.\n * This session will be discarded, when a new [input]start event is fired.\n * When forced, the recognizer cycle is stopped immediately.\n * @param {Boolean} [force]\n */\n stop: function(force) {\n this.session.stopped = force ? FORCED_STOP : STOP;\n },\n\n /**\n * run the recognizers!\n * called by the inputHandler function on every movement of the pointers (touches)\n * it walks through all the recognizers and tries to detect the gesture that is being made\n * @param {Object} inputData\n */\n recognize: function(inputData) {\n var session = this.session;\n if (session.stopped) {\n return;\n }\n\n // run the touch-action polyfill\n this.touchAction.preventDefaults(inputData);\n\n var recognizer;\n var recognizers = this.recognizers;\n\n // this holds the recognizer that is being recognized.\n // so the recognizer's state needs to be BEGAN, CHANGED, ENDED or RECOGNIZED\n // if no recognizer is detecting a thing, it is set to `null`\n var curRecognizer = session.curRecognizer;\n\n // reset when the last recognizer is recognized\n // or when we're in a new session\n if (!curRecognizer || (curRecognizer && curRecognizer.state & STATE_RECOGNIZED)) {\n curRecognizer = session.curRecognizer = null;\n }\n\n var i = 0;\n while (i < recognizers.length) {\n recognizer = recognizers[i];\n\n // find out if we are allowed try to recognize the input for this one.\n // 1. allow if the session is NOT forced stopped (see the .stop() method)\n // 2. allow if we still haven't recognized a gesture in this session, or the this recognizer is the one\n // that is being recognized.\n // 3. allow if the recognizer is allowed to run simultaneous with the current recognized recognizer.\n // this can be setup with the `recognizeWith()` method on the recognizer.\n if (session.stopped !== FORCED_STOP && ( // 1\n !curRecognizer || recognizer == curRecognizer || // 2\n recognizer.canRecognizeWith(curRecognizer))) { // 3\n recognizer.recognize(inputData);\n } else {\n recognizer.reset();\n }\n\n // if the recognizer has been recognizing the input as a valid gesture, we want to store this one as the\n // current active recognizer. but only if we don't already have an active recognizer\n if (!curRecognizer && recognizer.state & (STATE_BEGAN | STATE_CHANGED | STATE_ENDED)) {\n curRecognizer = session.curRecognizer = recognizer;\n }\n i++;\n }\n },\n\n /**\n * get a recognizer by its event name.\n * @param {Recognizer|String} recognizer\n * @returns {Recognizer|Null}\n */\n get: function(recognizer) {\n if (recognizer instanceof Recognizer) {\n return recognizer;\n }\n\n var recognizers = this.recognizers;\n for (var i = 0; i < recognizers.length; i++) {\n if (recognizers[i].options.event == recognizer) {\n return recognizers[i];\n }\n }\n return null;\n },\n\n /**\n * add a recognizer to the manager\n * existing recognizers with the same event name will be removed\n * @param {Recognizer} recognizer\n * @returns {Recognizer|Manager}\n */\n add: function(recognizer) {\n if (invokeArrayArg(recognizer, 'add', this)) {\n return this;\n }\n\n // remove existing\n var existing = this.get(recognizer.options.event);\n if (existing) {\n this.remove(existing);\n }\n\n this.recognizers.push(recognizer);\n recognizer.manager = this;\n\n this.touchAction.update();\n return recognizer;\n },\n\n /**\n * remove a recognizer by name or instance\n * @param {Recognizer|String} recognizer\n * @returns {Manager}\n */\n remove: function(recognizer) {\n if (invokeArrayArg(recognizer, 'remove', this)) {\n return this;\n }\n\n recognizer = this.get(recognizer);\n\n // let's make sure this recognizer exists\n if (recognizer) {\n var recognizers = this.recognizers;\n var index = inArray(recognizers, recognizer);\n\n if (index !== -1) {\n recognizers.splice(index, 1);\n this.touchAction.update();\n }\n }\n\n return this;\n },\n\n /**\n * bind event\n * @param {String} events\n * @param {Function} handler\n * @returns {EventEmitter} this\n */\n on: function(events, handler) {\n if (events === undefined) {\n return;\n }\n if (handler === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n handlers[event] = handlers[event] || [];\n handlers[event].push(handler);\n });\n return this;\n },\n\n /**\n * unbind event, leave emit blank to remove all handlers\n * @param {String} events\n * @param {Function} [handler]\n * @returns {EventEmitter} this\n */\n off: function(events, handler) {\n if (events === undefined) {\n return;\n }\n\n var handlers = this.handlers;\n each(splitStr(events), function(event) {\n if (!handler) {\n delete handlers[event];\n } else {\n handlers[event] && handlers[event].splice(inArray(handlers[event], handler), 1);\n }\n });\n return this;\n },\n\n /**\n * emit event to the listeners\n * @param {String} event\n * @param {Object} data\n */\n emit: function(event, data) {\n // we also want to trigger dom events\n if (this.options.domEvents) {\n triggerDomEvent(event, data);\n }\n\n // no handlers, so skip it all\n var handlers = this.handlers[event] && this.handlers[event].slice();\n if (!handlers || !handlers.length) {\n return;\n }\n\n data.type = event;\n data.preventDefault = function() {\n data.srcEvent.preventDefault();\n };\n\n var i = 0;\n while (i < handlers.length) {\n handlers[i](data);\n i++;\n }\n },\n\n /**\n * destroy the manager and unbinds all events\n * it doesn't unbind dom events, that is the user own responsibility\n */\n destroy: function() {\n this.element && toggleCssProps(this, false);\n\n this.handlers = {};\n this.session = {};\n this.input.destroy();\n this.element = null;\n }\n};\n\n/**\n * add/remove the css properties as defined in manager.options.cssProps\n * @param {Manager} manager\n * @param {Boolean} add\n */\nfunction toggleCssProps(manager, add) {\n var element = manager.element;\n if (!element.style) {\n return;\n }\n var prop;\n each(manager.options.cssProps, function(value, name) {\n prop = prefixed(element.style, name);\n if (add) {\n manager.oldCssProps[prop] = element.style[prop];\n element.style[prop] = value;\n } else {\n element.style[prop] = manager.oldCssProps[prop] || '';\n }\n });\n if (!add) {\n manager.oldCssProps = {};\n }\n}\n\n/**\n * trigger dom event\n * @param {String} event\n * @param {Object} data\n */\nfunction triggerDomEvent(event, data) {\n var gestureEvent = document.createEvent('Event');\n gestureEvent.initEvent(event, true, true);\n gestureEvent.gesture = data;\n data.target.dispatchEvent(gestureEvent);\n}\n\nassign(Hammer, {\n INPUT_START: INPUT_START,\n INPUT_MOVE: INPUT_MOVE,\n INPUT_END: INPUT_END,\n INPUT_CANCEL: INPUT_CANCEL,\n\n STATE_POSSIBLE: STATE_POSSIBLE,\n STATE_BEGAN: STATE_BEGAN,\n STATE_CHANGED: STATE_CHANGED,\n STATE_ENDED: STATE_ENDED,\n STATE_RECOGNIZED: STATE_RECOGNIZED,\n STATE_CANCELLED: STATE_CANCELLED,\n STATE_FAILED: STATE_FAILED,\n\n DIRECTION_NONE: DIRECTION_NONE,\n DIRECTION_LEFT: DIRECTION_LEFT,\n DIRECTION_RIGHT: DIRECTION_RIGHT,\n DIRECTION_UP: DIRECTION_UP,\n DIRECTION_DOWN: DIRECTION_DOWN,\n DIRECTION_HORIZONTAL: DIRECTION_HORIZONTAL,\n DIRECTION_VERTICAL: DIRECTION_VERTICAL,\n DIRECTION_ALL: DIRECTION_ALL,\n\n Manager: Manager,\n Input: Input,\n TouchAction: TouchAction,\n\n TouchInput: TouchInput,\n MouseInput: MouseInput,\n PointerEventInput: PointerEventInput,\n TouchMouseInput: TouchMouseInput,\n SingleTouchInput: SingleTouchInput,\n\n Recognizer: Recognizer,\n AttrRecognizer: AttrRecognizer,\n Tap: TapRecognizer,\n Pan: PanRecognizer,\n Swipe: SwipeRecognizer,\n Pinch: PinchRecognizer,\n Rotate: RotateRecognizer,\n Press: PressRecognizer,\n\n on: addEventListeners,\n off: removeEventListeners,\n each: each,\n merge: merge,\n extend: extend,\n assign: assign,\n inherit: inherit,\n bindFn: bindFn,\n prefixed: prefixed\n});\n\n// this prevents errors when Hammer is loaded in the presence of an AMD\n// style loader but by script tag, not by the loader.\nvar freeGlobal = (typeof window !== 'undefined' ? window : (typeof self !== 'undefined' ? self : {})); // jshint ignore:line\nfreeGlobal.Hammer = Hammer;\n\nif (typeof define === 'function' && define.amd) {\n define(function() {\n return Hammer;\n });\n} else if (typeof module != 'undefined' && module.exports) {\n module.exports = Hammer;\n} else {\n window[exportName] = Hammer;\n}\n\n})(window, document, 'Hammer');\n","function isAbsolute(pathname) {\n return pathname.charAt(0) === '/';\n}\n\n// About 1.5x faster than the two-arg version of Array#splice()\nfunction spliceOne(list, index) {\n for (var i = index, k = i + 1, n = list.length; k < n; i += 1, k += 1) {\n list[i] = list[k];\n }\n\n list.pop();\n}\n\n// This implementation is based heavily on node's url.parse\nfunction resolvePathname(to, from) {\n if (from === undefined) from = '';\n\n var toParts = (to && to.split('/')) || [];\n var fromParts = (from && from.split('/')) || [];\n\n var isToAbs = to && isAbsolute(to);\n var isFromAbs = from && isAbsolute(from);\n var mustEndAbs = isToAbs || isFromAbs;\n\n if (to && isAbsolute(to)) {\n // to is absolute\n fromParts = toParts;\n } else if (toParts.length) {\n // to is relative, drop the filename\n fromParts.pop();\n fromParts = fromParts.concat(toParts);\n }\n\n if (!fromParts.length) return '/';\n\n var hasTrailingSlash;\n if (fromParts.length) {\n var last = fromParts[fromParts.length - 1];\n hasTrailingSlash = last === '.' || last === '..' || last === '';\n } else {\n hasTrailingSlash = false;\n }\n\n var up = 0;\n for (var i = fromParts.length; i >= 0; i--) {\n var part = fromParts[i];\n\n if (part === '.') {\n spliceOne(fromParts, i);\n } else if (part === '..') {\n spliceOne(fromParts, i);\n up++;\n } else if (up) {\n spliceOne(fromParts, i);\n up--;\n }\n }\n\n if (!mustEndAbs) for (; up--; up) fromParts.unshift('..');\n\n if (\n mustEndAbs &&\n fromParts[0] !== '' &&\n (!fromParts[0] || !isAbsolute(fromParts[0]))\n )\n fromParts.unshift('');\n\n var result = fromParts.join('/');\n\n if (hasTrailingSlash && result.substr(-1) !== '/') result += '/';\n\n return result;\n}\n\nexport default resolvePathname;\n","function valueOf(obj) {\n return obj.valueOf ? obj.valueOf() : Object.prototype.valueOf.call(obj);\n}\n\nfunction valueEqual(a, b) {\n // Test for strict equality first.\n if (a === b) return true;\n\n // Otherwise, if either of them == null they are not equal.\n if (a == null || b == null) return false;\n\n if (Array.isArray(a)) {\n return (\n Array.isArray(b) &&\n a.length === b.length &&\n a.every(function(item, index) {\n return valueEqual(item, b[index]);\n })\n );\n }\n\n if (typeof a === 'object' || typeof b === 'object') {\n var aValue = valueOf(a);\n var bValue = valueOf(b);\n\n if (aValue !== a || bValue !== b) return valueEqual(aValue, bValue);\n\n return Object.keys(Object.assign({}, a, b)).every(function(key) {\n return valueEqual(a[key], b[key]);\n });\n }\n\n return false;\n}\n\nexport default valueEqual;\n","import _extends from '@babel/runtime/helpers/esm/extends';\nimport resolvePathname from 'resolve-pathname';\nimport valueEqual from 'value-equal';\nimport warning from 'tiny-warning';\nimport invariant from 'tiny-invariant';\n\nfunction addLeadingSlash(path) {\n return path.charAt(0) === '/' ? path : '/' + path;\n}\nfunction stripLeadingSlash(path) {\n return path.charAt(0) === '/' ? path.substr(1) : path;\n}\nfunction hasBasename(path, prefix) {\n return path.toLowerCase().indexOf(prefix.toLowerCase()) === 0 && '/?#'.indexOf(path.charAt(prefix.length)) !== -1;\n}\nfunction stripBasename(path, prefix) {\n return hasBasename(path, prefix) ? path.substr(prefix.length) : path;\n}\nfunction stripTrailingSlash(path) {\n return path.charAt(path.length - 1) === '/' ? path.slice(0, -1) : path;\n}\nfunction parsePath(path) {\n var pathname = path || '/';\n var search = '';\n var hash = '';\n var hashIndex = pathname.indexOf('#');\n\n if (hashIndex !== -1) {\n hash = pathname.substr(hashIndex);\n pathname = pathname.substr(0, hashIndex);\n }\n\n var searchIndex = pathname.indexOf('?');\n\n if (searchIndex !== -1) {\n search = pathname.substr(searchIndex);\n pathname = pathname.substr(0, searchIndex);\n }\n\n return {\n pathname: pathname,\n search: search === '?' ? '' : search,\n hash: hash === '#' ? '' : hash\n };\n}\nfunction createPath(location) {\n var pathname = location.pathname,\n search = location.search,\n hash = location.hash;\n var path = pathname || '/';\n if (search && search !== '?') path += search.charAt(0) === '?' ? search : \"?\" + search;\n if (hash && hash !== '#') path += hash.charAt(0) === '#' ? hash : \"#\" + hash;\n return path;\n}\n\nfunction createLocation(path, state, key, currentLocation) {\n var location;\n\n if (typeof path === 'string') {\n // Two-arg form: push(path, state)\n location = parsePath(path);\n location.state = state;\n } else {\n // One-arg form: push(location)\n location = _extends({}, path);\n if (location.pathname === undefined) location.pathname = '';\n\n if (location.search) {\n if (location.search.charAt(0) !== '?') location.search = '?' + location.search;\n } else {\n location.search = '';\n }\n\n if (location.hash) {\n if (location.hash.charAt(0) !== '#') location.hash = '#' + location.hash;\n } else {\n location.hash = '';\n }\n\n if (state !== undefined && location.state === undefined) location.state = state;\n }\n\n try {\n location.pathname = decodeURI(location.pathname);\n } catch (e) {\n if (e instanceof URIError) {\n throw new URIError('Pathname \"' + location.pathname + '\" could not be decoded. ' + 'This is likely caused by an invalid percent-encoding.');\n } else {\n throw e;\n }\n }\n\n if (key) location.key = key;\n\n if (currentLocation) {\n // Resolve incomplete/relative pathname relative to current location.\n if (!location.pathname) {\n location.pathname = currentLocation.pathname;\n } else if (location.pathname.charAt(0) !== '/') {\n location.pathname = resolvePathname(location.pathname, currentLocation.pathname);\n }\n } else {\n // When there is no prior location and pathname is empty, set it to /\n if (!location.pathname) {\n location.pathname = '/';\n }\n }\n\n return location;\n}\nfunction locationsAreEqual(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash && a.key === b.key && valueEqual(a.state, b.state);\n}\n\nfunction createTransitionManager() {\n var prompt = null;\n\n function setPrompt(nextPrompt) {\n process.env.NODE_ENV !== \"production\" ? warning(prompt == null, 'A history supports only one prompt at a time') : void 0;\n prompt = nextPrompt;\n return function () {\n if (prompt === nextPrompt) prompt = null;\n };\n }\n\n function confirmTransitionTo(location, action, getUserConfirmation, callback) {\n // TODO: If another transition starts while we're still confirming\n // the previous one, we may end up in a weird state. Figure out the\n // best way to handle this.\n if (prompt != null) {\n var result = typeof prompt === 'function' ? prompt(location, action) : prompt;\n\n if (typeof result === 'string') {\n if (typeof getUserConfirmation === 'function') {\n getUserConfirmation(result, callback);\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'A history needs a getUserConfirmation function in order to use a prompt message') : void 0;\n callback(true);\n }\n } else {\n // Return false from a transition hook to cancel the transition.\n callback(result !== false);\n }\n } else {\n callback(true);\n }\n }\n\n var listeners = [];\n\n function appendListener(fn) {\n var isActive = true;\n\n function listener() {\n if (isActive) fn.apply(void 0, arguments);\n }\n\n listeners.push(listener);\n return function () {\n isActive = false;\n listeners = listeners.filter(function (item) {\n return item !== listener;\n });\n };\n }\n\n function notifyListeners() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n listeners.forEach(function (listener) {\n return listener.apply(void 0, args);\n });\n }\n\n return {\n setPrompt: setPrompt,\n confirmTransitionTo: confirmTransitionTo,\n appendListener: appendListener,\n notifyListeners: notifyListeners\n };\n}\n\nvar canUseDOM = !!(typeof window !== 'undefined' && window.document && window.document.createElement);\nfunction getConfirmation(message, callback) {\n callback(window.confirm(message)); // eslint-disable-line no-alert\n}\n/**\n * Returns true if the HTML5 history API is supported. Taken from Modernizr.\n *\n * https://github.com/Modernizr/Modernizr/blob/master/LICENSE\n * https://github.com/Modernizr/Modernizr/blob/master/feature-detects/history.js\n * changed to avoid false negatives for Windows Phones: https://github.com/reactjs/react-router/issues/586\n */\n\nfunction supportsHistory() {\n var ua = window.navigator.userAgent;\n if ((ua.indexOf('Android 2.') !== -1 || ua.indexOf('Android 4.0') !== -1) && ua.indexOf('Mobile Safari') !== -1 && ua.indexOf('Chrome') === -1 && ua.indexOf('Windows Phone') === -1) return false;\n return window.history && 'pushState' in window.history;\n}\n/**\n * Returns true if browser fires popstate on hash change.\n * IE10 and IE11 do not.\n */\n\nfunction supportsPopStateOnHashChange() {\n return window.navigator.userAgent.indexOf('Trident') === -1;\n}\n/**\n * Returns false if using go(n) with hash history causes a full page reload.\n */\n\nfunction supportsGoWithoutReloadUsingHash() {\n return window.navigator.userAgent.indexOf('Firefox') === -1;\n}\n/**\n * Returns true if a given popstate event is an extraneous WebKit event.\n * Accounts for the fact that Chrome on iOS fires real popstate events\n * containing undefined state when pressing the back button.\n */\n\nfunction isExtraneousPopstateEvent(event) {\n return event.state === undefined && navigator.userAgent.indexOf('CriOS') === -1;\n}\n\nvar PopStateEvent = 'popstate';\nvar HashChangeEvent = 'hashchange';\n\nfunction getHistoryState() {\n try {\n return window.history.state || {};\n } catch (e) {\n // IE 11 sometimes throws when accessing window.history.state\n // See https://github.com/ReactTraining/history/pull/289\n return {};\n }\n}\n/**\n * Creates a history object that uses the HTML5 history API including\n * pushState, replaceState, and the popstate event.\n */\n\n\nfunction createBrowserHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Browser history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canUseHistory = supportsHistory();\n var needsHashChangeListener = !supportsPopStateOnHashChange();\n var _props = props,\n _props$forceRefresh = _props.forceRefresh,\n forceRefresh = _props$forceRefresh === void 0 ? false : _props$forceRefresh,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n\n function getDOMLocation(historyState) {\n var _ref = historyState || {},\n key = _ref.key,\n state = _ref.state;\n\n var _window$location = window.location,\n pathname = _window$location.pathname,\n search = _window$location.search,\n hash = _window$location.hash;\n var path = pathname + search + hash;\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path, state, key);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function handlePopState(event) {\n // Ignore extraneous popstate events in WebKit.\n if (isExtraneousPopstateEvent(event)) return;\n handlePop(getDOMLocation(event.state));\n }\n\n function handleHashChange() {\n handlePop(getDOMLocation(getHistoryState()));\n }\n\n var forceNextPop = false;\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of keys we've seen in sessionStorage.\n // Instead, we just default to 0 for keys we don't know.\n\n var toIndex = allKeys.indexOf(toLocation.key);\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allKeys.indexOf(fromLocation.key);\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n }\n\n var initialLocation = getDOMLocation(getHistoryState());\n var allKeys = [initialLocation.key]; // Public interface\n\n function createHref(location) {\n return basename + createPath(location);\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.pushState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.href = href;\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n var nextKeys = allKeys.slice(0, prevIndex + 1);\n nextKeys.push(location.key);\n allKeys = nextKeys;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot push state in browsers that do not support HTML5 history') : void 0;\n window.location.href = href;\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var href = createHref(location);\n var key = location.key,\n state = location.state;\n\n if (canUseHistory) {\n globalHistory.replaceState({\n key: key,\n state: state\n }, null, href);\n\n if (forceRefresh) {\n window.location.replace(href);\n } else {\n var prevIndex = allKeys.indexOf(history.location.key);\n if (prevIndex !== -1) allKeys[prevIndex] = location.key;\n setState({\n action: action,\n location: location\n });\n }\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Browser history cannot replace state in browsers that do not support HTML5 history') : void 0;\n window.location.replace(href);\n }\n });\n }\n\n function go(n) {\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.addEventListener(HashChangeEvent, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(PopStateEvent, handlePopState);\n if (needsHashChangeListener) window.removeEventListener(HashChangeEvent, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nvar HashChangeEvent$1 = 'hashchange';\nvar HashPathCoders = {\n hashbang: {\n encodePath: function encodePath(path) {\n return path.charAt(0) === '!' ? path : '!/' + stripLeadingSlash(path);\n },\n decodePath: function decodePath(path) {\n return path.charAt(0) === '!' ? path.substr(1) : path;\n }\n },\n noslash: {\n encodePath: stripLeadingSlash,\n decodePath: addLeadingSlash\n },\n slash: {\n encodePath: addLeadingSlash,\n decodePath: addLeadingSlash\n }\n};\n\nfunction stripHash(url) {\n var hashIndex = url.indexOf('#');\n return hashIndex === -1 ? url : url.slice(0, hashIndex);\n}\n\nfunction getHashPath() {\n // We can't use window.location.hash here because it's not\n // consistent across browsers - Firefox will pre-decode it!\n var href = window.location.href;\n var hashIndex = href.indexOf('#');\n return hashIndex === -1 ? '' : href.substring(hashIndex + 1);\n}\n\nfunction pushHashPath(path) {\n window.location.hash = path;\n}\n\nfunction replaceHashPath(path) {\n window.location.replace(stripHash(window.location.href) + '#' + path);\n}\n\nfunction createHashHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n !canUseDOM ? process.env.NODE_ENV !== \"production\" ? invariant(false, 'Hash history needs a DOM') : invariant(false) : void 0;\n var globalHistory = window.history;\n var canGoWithoutReload = supportsGoWithoutReloadUsingHash();\n var _props = props,\n _props$getUserConfirm = _props.getUserConfirmation,\n getUserConfirmation = _props$getUserConfirm === void 0 ? getConfirmation : _props$getUserConfirm,\n _props$hashType = _props.hashType,\n hashType = _props$hashType === void 0 ? 'slash' : _props$hashType;\n var basename = props.basename ? stripTrailingSlash(addLeadingSlash(props.basename)) : '';\n var _HashPathCoders$hashT = HashPathCoders[hashType],\n encodePath = _HashPathCoders$hashT.encodePath,\n decodePath = _HashPathCoders$hashT.decodePath;\n\n function getDOMLocation() {\n var path = decodePath(getHashPath());\n process.env.NODE_ENV !== \"production\" ? warning(!basename || hasBasename(path, basename), 'You are attempting to use a basename on a page whose URL path does not begin ' + 'with the basename. Expected path \"' + path + '\" to begin with \"' + basename + '\".') : void 0;\n if (basename) path = stripBasename(path, basename);\n return createLocation(path);\n }\n\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = globalHistory.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n var forceNextPop = false;\n var ignorePath = null;\n\n function locationsAreEqual$$1(a, b) {\n return a.pathname === b.pathname && a.search === b.search && a.hash === b.hash;\n }\n\n function handleHashChange() {\n var path = getHashPath();\n var encodedPath = encodePath(path);\n\n if (path !== encodedPath) {\n // Ensure we always have a properly-encoded hash.\n replaceHashPath(encodedPath);\n } else {\n var location = getDOMLocation();\n var prevLocation = history.location;\n if (!forceNextPop && locationsAreEqual$$1(prevLocation, location)) return; // A hashchange doesn't always == location change.\n\n if (ignorePath === createPath(location)) return; // Ignore this change; we already setState in push/replace.\n\n ignorePath = null;\n handlePop(location);\n }\n }\n\n function handlePop(location) {\n if (forceNextPop) {\n forceNextPop = false;\n setState();\n } else {\n var action = 'POP';\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location\n });\n } else {\n revertPop(location);\n }\n });\n }\n }\n\n function revertPop(fromLocation) {\n var toLocation = history.location; // TODO: We could probably make this more reliable by\n // keeping a list of paths we've seen in sessionStorage.\n // Instead, we just default to 0 for paths we don't know.\n\n var toIndex = allPaths.lastIndexOf(createPath(toLocation));\n if (toIndex === -1) toIndex = 0;\n var fromIndex = allPaths.lastIndexOf(createPath(fromLocation));\n if (fromIndex === -1) fromIndex = 0;\n var delta = toIndex - fromIndex;\n\n if (delta) {\n forceNextPop = true;\n go(delta);\n }\n } // Ensure the hash is encoded properly before doing anything else.\n\n\n var path = getHashPath();\n var encodedPath = encodePath(path);\n if (path !== encodedPath) replaceHashPath(encodedPath);\n var initialLocation = getDOMLocation();\n var allPaths = [createPath(initialLocation)]; // Public interface\n\n function createHref(location) {\n var baseTag = document.querySelector('base');\n var href = '';\n\n if (baseTag && baseTag.getAttribute('href')) {\n href = stripHash(window.location.href);\n }\n\n return href + '#' + encodePath(basename + createPath(location));\n }\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot push state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a PUSH, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n pushHashPath(encodedPath);\n var prevIndex = allPaths.lastIndexOf(createPath(history.location));\n var nextPaths = allPaths.slice(0, prevIndex + 1);\n nextPaths.push(path);\n allPaths = nextPaths;\n setState({\n action: action,\n location: location\n });\n } else {\n process.env.NODE_ENV !== \"production\" ? warning(false, 'Hash history cannot PUSH the same path; a new entry will not be added to the history stack') : void 0;\n setState();\n }\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(state === undefined, 'Hash history cannot replace state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, undefined, undefined, history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var path = createPath(location);\n var encodedPath = encodePath(basename + path);\n var hashChanged = getHashPath() !== encodedPath;\n\n if (hashChanged) {\n // We cannot tell if a hashchange was caused by a REPLACE, so we'd\n // rather setState here and ignore the hashchange. The caveat here\n // is that other hash histories in the page will consider it a POP.\n ignorePath = path;\n replaceHashPath(encodedPath);\n }\n\n var prevIndex = allPaths.indexOf(createPath(history.location));\n if (prevIndex !== -1) allPaths[prevIndex] = path;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n process.env.NODE_ENV !== \"production\" ? warning(canGoWithoutReload, 'Hash history go(n) causes a full page reload in this browser') : void 0;\n globalHistory.go(n);\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n var listenerCount = 0;\n\n function checkDOMListeners(delta) {\n listenerCount += delta;\n\n if (listenerCount === 1 && delta === 1) {\n window.addEventListener(HashChangeEvent$1, handleHashChange);\n } else if (listenerCount === 0) {\n window.removeEventListener(HashChangeEvent$1, handleHashChange);\n }\n }\n\n var isBlocked = false;\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n var unblock = transitionManager.setPrompt(prompt);\n\n if (!isBlocked) {\n checkDOMListeners(1);\n isBlocked = true;\n }\n\n return function () {\n if (isBlocked) {\n isBlocked = false;\n checkDOMListeners(-1);\n }\n\n return unblock();\n };\n }\n\n function listen(listener) {\n var unlisten = transitionManager.appendListener(listener);\n checkDOMListeners(1);\n return function () {\n checkDOMListeners(-1);\n unlisten();\n };\n }\n\n var history = {\n length: globalHistory.length,\n action: 'POP',\n location: initialLocation,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n block: block,\n listen: listen\n };\n return history;\n}\n\nfunction clamp(n, lowerBound, upperBound) {\n return Math.min(Math.max(n, lowerBound), upperBound);\n}\n/**\n * Creates a history object that stores locations in memory.\n */\n\n\nfunction createMemoryHistory(props) {\n if (props === void 0) {\n props = {};\n }\n\n var _props = props,\n getUserConfirmation = _props.getUserConfirmation,\n _props$initialEntries = _props.initialEntries,\n initialEntries = _props$initialEntries === void 0 ? ['/'] : _props$initialEntries,\n _props$initialIndex = _props.initialIndex,\n initialIndex = _props$initialIndex === void 0 ? 0 : _props$initialIndex,\n _props$keyLength = _props.keyLength,\n keyLength = _props$keyLength === void 0 ? 6 : _props$keyLength;\n var transitionManager = createTransitionManager();\n\n function setState(nextState) {\n _extends(history, nextState);\n\n history.length = history.entries.length;\n transitionManager.notifyListeners(history.location, history.action);\n }\n\n function createKey() {\n return Math.random().toString(36).substr(2, keyLength);\n }\n\n var index = clamp(initialIndex, 0, initialEntries.length - 1);\n var entries = initialEntries.map(function (entry) {\n return typeof entry === 'string' ? createLocation(entry, undefined, createKey()) : createLocation(entry, undefined, entry.key || createKey());\n }); // Public interface\n\n var createHref = createPath;\n\n function push(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to push when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'PUSH';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n var prevIndex = history.index;\n var nextIndex = prevIndex + 1;\n var nextEntries = history.entries.slice(0);\n\n if (nextEntries.length > nextIndex) {\n nextEntries.splice(nextIndex, nextEntries.length - nextIndex, location);\n } else {\n nextEntries.push(location);\n }\n\n setState({\n action: action,\n location: location,\n index: nextIndex,\n entries: nextEntries\n });\n });\n }\n\n function replace(path, state) {\n process.env.NODE_ENV !== \"production\" ? warning(!(typeof path === 'object' && path.state !== undefined && state !== undefined), 'You should avoid providing a 2nd state argument to replace when the 1st ' + 'argument is a location-like object that already has state; it is ignored') : void 0;\n var action = 'REPLACE';\n var location = createLocation(path, state, createKey(), history.location);\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (!ok) return;\n history.entries[history.index] = location;\n setState({\n action: action,\n location: location\n });\n });\n }\n\n function go(n) {\n var nextIndex = clamp(history.index + n, 0, history.entries.length - 1);\n var action = 'POP';\n var location = history.entries[nextIndex];\n transitionManager.confirmTransitionTo(location, action, getUserConfirmation, function (ok) {\n if (ok) {\n setState({\n action: action,\n location: location,\n index: nextIndex\n });\n } else {\n // Mimic the behavior of DOM histories by\n // causing a render after a cancelled POP.\n setState();\n }\n });\n }\n\n function goBack() {\n go(-1);\n }\n\n function goForward() {\n go(1);\n }\n\n function canGo(n) {\n var nextIndex = history.index + n;\n return nextIndex >= 0 && nextIndex < history.entries.length;\n }\n\n function block(prompt) {\n if (prompt === void 0) {\n prompt = false;\n }\n\n return transitionManager.setPrompt(prompt);\n }\n\n function listen(listener) {\n return transitionManager.appendListener(listener);\n }\n\n var history = {\n length: entries.length,\n action: 'POP',\n location: entries[index],\n index: index,\n entries: entries,\n createHref: createHref,\n push: push,\n replace: replace,\n go: go,\n goBack: goBack,\n goForward: goForward,\n canGo: canGo,\n block: block,\n listen: listen\n };\n return history;\n}\n\nexport { createBrowserHistory, createHashHistory, createMemoryHistory, createLocation, locationsAreEqual, parsePath, createPath };\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\n/* DETOKENIZE */\nconst detokenize = (token) => {\n if ('source' in token)\n return token.source;\n return token.children.map(detokenize).join('');\n};\n/* EXPORT */\nexports.default = detokenize;\n","\"use strict\";\n/* IMPORT */\nconst detokenize_1 = require(\"./detokenize\");\nconst lookup_1 = require(\"./lookup\");\nconst parse_1 = require(\"./parse\");\nconst stringify_1 = require(\"./stringify\");\nconst strip_1 = require(\"./strip\");\nconst tokenize_1 = require(\"./tokenize\");\nconst validate_1 = require(\"./validate\");\n/* EXPORT */\nconst JSONC = {\n ast: {\n parse: tokenize_1.default,\n stringify: detokenize_1.default\n },\n lookup: lookup_1.default,\n parse: parse_1.default,\n stringify: stringify_1.default,\n strip: strip_1.default,\n validate: validate_1.default\n};\n/* EXPORT */\nmodule.exports = JSONC;\nmodule.exports.default = JSONC;\nObject.defineProperty(module.exports, \"__esModule\", { value: true });\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst detokenize_1 = require(\"./detokenize\");\nconst parse_1 = require(\"./parse\");\nconst tokenize_1 = require(\"./tokenize\");\nconst utils_1 = require(\"./utils\");\n/* LOOKUP */\n//FIXME: This is wonky, it should be much more robust, it should probably be rewritten from scratch\nconst getLookupToken = (ast, position) => {\n let tokenPosition = null, offsetCurrent = 0;\n const checkPositionToken = (token) => {\n if (token.start > position)\n return;\n if (token.end <= (position - 1))\n return;\n if (tokenPosition && utils_1.default.isTokenLiteral(tokenPosition))\n return;\n if (tokenPosition && utils_1.default.isTokenIgnored(token))\n return;\n tokenPosition = token;\n };\n const parseChild = (token, parent, depth, index) => {\n const { type, source } = token;\n const start = offsetCurrent;\n const end = (offsetCurrent += source.length);\n const ltoken = { type, source, token, parent, depth, index, start, end };\n checkPositionToken(ltoken);\n return ltoken;\n };\n const parseParent = (token, parent, depth, index) => {\n const { type } = token;\n const ltoken = { type, children: [], token, parent, depth, index };\n ltoken.children = token.children.map((child, index) => parseToken(child, ltoken, depth + 1, index)).filter(utils_1.default.isTokenLiteral);\n ltoken.children.forEach((token, index) => token.index = index);\n return ltoken;\n };\n const parseToken = (token, parent, depth, index) => {\n if ('children' in token)\n return parseParent(token, parent, depth, index);\n return parseChild(token, parent, depth, index);\n };\n parseToken(ast, null, -1, -1);\n return tokenPosition;\n};\nconst getLookupPath = (token) => {\n if (!token)\n return [];\n const path = [];\n while (token) {\n const parent = token.parent;\n if (!parent)\n break;\n if (utils_1.default.isTokenLiteral(token)) {\n if (parent.type === 'Object') {\n if (utils_1.default.isEven(token.index)) {\n path.unshift(JSON.parse(token.source));\n }\n else {\n path.unshift(JSON.parse(parent.children[token.index - 1].source));\n }\n }\n else if (parent.type === 'Array') {\n path.unshift(token.index);\n }\n }\n token = parent;\n }\n return path;\n};\nconst getLookupIsInsideProperty = (token) => {\n var _a, _b, _c, _d, _e;\n if (!token)\n return false;\n const parentType = (_a = token.parent) === null || _a === void 0 ? void 0 : _a.type;\n if (parentType === 'Object')\n return utils_1.default.isTokenLiteral(token) ? utils_1.default.isEven(token.index) : ((_c = (_b = token.parent) === null || _b === void 0 ? void 0 : _b.parent) === null || _c === void 0 ? void 0 : _c.type) === 'Array';\n if (parentType === 'Array')\n return utils_1.default.isTokenLiteral(token) || ((_e = (_d = token.parent) === null || _d === void 0 ? void 0 : _d.parent) === null || _e === void 0 ? void 0 : _e.type) === 'Array';\n return false;\n};\nconst getLookupIsInsideValue = (token) => {\n var _a, _b;\n if (!token)\n return false;\n const isParentEmpty = !((_a = token.parent) === null || _a === void 0 ? void 0 : _a.children.length), parentType = (_b = token.parent) === null || _b === void 0 ? void 0 : _b.type;\n if (parentType === 'Object')\n return isParentEmpty || utils_1.default.isTokenDelimiter(token) || (utils_1.default.isTokenLiteral(token) && utils_1.default.isOdd(token.index));\n if (parentType === 'Array')\n return (token.depth > 1);\n return false;\n};\nconst getLookupProperty = (token, isInsideProperty) => {\n var _a, _b;\n if (!isInsideProperty || !token)\n return;\n const parentType = (_a = token.parent) === null || _a === void 0 ? void 0 : _a.type;\n if (utils_1.default.isTokenLiteral(token)) {\n if (parentType === 'Array')\n return token.index;\n return (0, parse_1.default)((0, detokenize_1.default)(token));\n }\n else {\n if (parentType === 'Array')\n return (_b = token.parent) === null || _b === void 0 ? void 0 : _b.index;\n }\n};\nconst getLookupValue = (token, isInsideValue, usePartialScanning) => {\n if (!isInsideValue || !token)\n return;\n if (utils_1.default.isTokenLiteral(token))\n return (0, parse_1.default)((0, detokenize_1.default)(token));\n if (usePartialScanning)\n return;\n const { parent } = token;\n if (!parent || !parent.token)\n return;\n if (parent.type !== 'Array' && parent.type !== 'Object')\n return;\n return (0, parse_1.default)((0, detokenize_1.default)(parent.token));\n};\nconst lookup = (text, position, usePartialScanning = true) => {\n const limit = usePartialScanning ? position : Infinity, ast = (0, tokenize_1.default)(text, limit), token = getLookupToken(ast, position), path = getLookupPath(token), isInsideProperty = getLookupIsInsideProperty(token), isInsideValue = getLookupIsInsideValue(token), property = getLookupProperty(token, isInsideProperty), value = getLookupValue(token, isInsideValue, usePartialScanning), t = token ? { type: token.type, start: token.start, end: token.end, source: token.source } : undefined, result = { path, property, value, token: t, isInsideProperty, isInsideValue };\n return result;\n};\n/* EXPORT */\nexports.default = lookup;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst strip_1 = require(\"./strip\");\n/* HELPERS */\nconst _parse = JSON.parse;\n/* PARSE */\nconst parse = (text, reviver) => {\n text = `${text}`; // \"text\" can actually be anything, but we need a string here\n if (reviver) { // A \"reviver\" could have side effects, it may not be safe to call it twice\n return _parse((0, strip_1.default)(text), reviver);\n }\n else {\n try { // Shortcut in case there are no comments or trailing commas\n return _parse(text);\n }\n catch (error) { // Stripping out any potential comments and trailing commas and trying again\n const textStripped = (0, strip_1.default)(text);\n if (text === textStripped) { // Parsing it again would inevitably lead to the same error\n throw error;\n }\n else {\n return _parse(textStripped);\n }\n }\n }\n};\n/* EXPORT */\nexports.default = parse;\n","\"use strict\";\n/* EXPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.default = JSON.stringify;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst context_1 = require(\"../tokenize/context\");\nconst parser_1 = require(\"./parser\");\n/* STRIP */\nconst strip = (text) => {\n context_1.default.init();\n return (0, parser_1.default)(text);\n};\n/* EXPORT */\nexports.default = strip;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst reghex_1 = require(\"reghex\");\nconst grammar_1 = require(\"../tokenize/grammar\");\nconst tokens_1 = require(\"./tokens\");\n/* PARSER */\nconst parser = (0, reghex_1.parse)((0, grammar_1.default)(tokens_1.default));\n/* EXPORT */\nexports.default = parser;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst context_1 = require(\"../tokenize/context\");\nconst tokens_1 = require(\"../tokenize/tokens\");\n/* HELPERS */\nconst Delete = (values) => {\n context_1.default.offset += values[0].length;\n return '';\n};\nconst Passthrough = (values) => {\n const source = values.join('');\n context_1.default.offset += source.length;\n return source;\n};\nconst Unwrapped = (quasis, token) => {\n return token;\n};\nUnwrapped.unwrapped = true;\n/* TOKENS */\nconst Tokens = Object.assign(Object.assign({}, tokens_1.default), { Passthrough, Newline: Delete, Whitespace: Delete, CommentLine: Delete, CommentBlock: Delete, Comma: Unwrapped, CommaTrailing: Delete, Colon: Unwrapped, Null: Unwrapped, True: Unwrapped, False: Unwrapped, Number: Unwrapped, String: Unwrapped, ArrayOpen: Unwrapped, ArrayClose: Unwrapped, Array: Passthrough, ObjectOpen: Unwrapped, ObjectClose: Unwrapped, Object: Passthrough, Root: Passthrough });\n/* EXPORT */\nexports.default = Tokens;\n","\"use strict\";\n/* CONTEXT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst Context = {\n /* VARIABLES */\n offset: 0,\n offsetMax: Infinity,\n /* API */\n init: (limit = Infinity) => {\n Context.offset = 0;\n Context.offsetMax = limit;\n }\n};\n/* EXPORT */\nexports.default = Context;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"../utils\");\n/* GRAMMAR */\nconst grammar = (tokens) => {\n /* MATCHERS */\n const $ = utils_1.default.tokens2matchers(tokens);\n /* EARLY RETURN */\n const EarlyReturn = $.EarlyReturn `${''}`;\n /* INSUFFICIENT */\n const Insufficient = $.Insufficient `${/[^]?/}`;\n /* INVALID */\n const Invalid = $.Invalid `${/[^]/}`;\n /* TRIVIA */\n const Newline = $.Newline `${/\\r?\\n|\\r/}`;\n const Whitespace = $.Whitespace `${/[ \\t]+/}`;\n const CommentLine = $.CommentLine `${/\\/\\/.*/}`;\n const CommentBlock = $.CommentBlock `${/\\/\\*[^]*?\\*\\//}`;\n const Trivia = $.Passthrough `${Newline} | ${Whitespace} | ${CommentLine} | ${CommentBlock}`;\n /* _ */\n const _Separated = $.Passthrough `${Trivia}*`;\n const _Merged = $.Whitespace `${/(?:[ \\t\\r\\n]|\\/\\/.*|\\/\\*[^]*?\\*\\/)*/}`;\n const _ = $.Newline === $.Whitespace && $.Whitespace === $.CommentLine && $.CommentLine === $.CommentBlock ? _Merged : _Separated;\n /* COMMA */\n const Comma = $.Comma `${','}`;\n const CommaTrailing = $.CommaTrailing `${','}`;\n /* COLON */\n const Colon = $.Colon `${':'}`;\n /* NULL */\n const Null = $.Null `${'null'}`;\n /* BOOLEAN */\n const True = $.True `${'true'}`;\n const False = $.False `${'false'}`;\n const Boolean = $.Passthrough `${True} | ${False}`;\n /* NUMBER */\n const Number = $.Number `${/-?(?:0|[1-9]\\d*)(?:\\.\\d+)?(?:[eE][-+]?\\d+)?/}`;\n /* STRING */\n const String = $.String `${/\"(?:[^\\u0000-\\u001F\\\\\"]|\\\\[\"bfnrt\\\\/]|\\\\u[0-9a-fA-F]{4})*\"/}`;\n /* ARRAY */\n const ArrayOpen = $.ArrayOpen `${'['}`;\n const ArrayClose = $.ArrayClose `${']'}`;\n const ArrayMember = $.Passthrough `${_} ${() => Literal} ${_}`;\n const ArrayMembers = $.Passthrough `${ArrayMember} (!${EarlyReturn} ${Comma} ${ArrayMember})* ${CommaTrailing}?`;\n const Array = $.Array `${ArrayOpen} ${_} ${ArrayMembers}? ${_} (${EarlyReturn} | ${ArrayClose})`;\n /* OBJECT */\n const ObjectOpen = $.ObjectOpen `${'{'}`;\n const ObjectClose = $.ObjectClose `${'}'}`;\n const ObjectMember = $.Passthrough `${_} ${String} (${EarlyReturn} | ${_} ${Colon} ${_} ${() => Literal} ${_})`;\n const ObjectMembers = $.Passthrough `${ObjectMember} (!${EarlyReturn} ${Comma} ${ObjectMember})* ${CommaTrailing}?`;\n const Object = $.Object `${ObjectOpen} ${_} ${ObjectMembers}? ${_} (${EarlyReturn} | ${ObjectClose})`;\n /* LITERAL */\n const Literal = $.Passthrough `${Null} | ${Boolean} | ${Number} | ${String} | ${Object} | ${Array}`;\n /* ROOT */\n const Root = $.Root `${_} (${Literal} | ${Insufficient}) (${EarlyReturn} | ${_} ${Invalid}?)`;\n /* RETURN */\n return Root;\n};\n/* EXPORT */\nexports.default = grammar;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst context_1 = require(\"./context\");\nconst parser_1 = require(\"./parser\");\n/* TOKENIZE */\nconst tokenize = (text, limit) => {\n context_1.default.init(limit);\n return (0, parser_1.default)(text);\n};\n/* EXPORT */\nexports.default = tokenize;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst reghex_1 = require(\"reghex\");\nconst grammar_1 = require(\"./grammar\");\nconst tokens_1 = require(\"./tokens\");\n/* PARSER */\nconst parser = (0, reghex_1.parse)((0, grammar_1.default)(tokens_1.default));\n/* EXPORT */\nexports.default = parser;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst utils_1 = require(\"../utils\");\nconst context_1 = require(\"./context\");\n/* HELPERS */\nconst makeChild = (type) => (values) => {\n const source = values[0];\n context_1.default.offset += source.length;\n return { type, source };\n};\nconst makeParent = (type) => (values) => {\n const children = values.flat();\n return { type, children };\n};\n/* TOKENS */\nconst Tokens = {\n EarlyReturn: () => {\n if (context_1.default.offset > context_1.default.offsetMax)\n return [];\n },\n Insufficient: (values) => {\n if (values[0].length)\n Tokens.Invalid(values);\n throw new SyntaxError('Unexpected end of JSONC input');\n },\n Invalid: (values) => {\n throw new SyntaxError(`Unexpected token ${values[0]} in JSONC at position ${context_1.default.offset}`);\n },\n Passthrough: (values) => {\n return values.flat().filter(utils_1.default.isToken);\n },\n Newline: makeChild('Newline'),\n Whitespace: makeChild('Whitespace'),\n CommentLine: makeChild('CommentLine'),\n CommentBlock: makeChild('CommentBlock'),\n Comma: makeChild('Comma'),\n CommaTrailing: makeChild('CommaTrailing'),\n Colon: makeChild('Colon'),\n Null: makeChild('Null'),\n True: makeChild('True'),\n False: makeChild('False'),\n Number: makeChild('Number'),\n String: makeChild('String'),\n ArrayOpen: makeChild('ArrayOpen'),\n ArrayClose: makeChild('ArrayClose'),\n Array: makeParent('Array'),\n ObjectOpen: makeChild('ObjectOpen'),\n ObjectClose: makeChild('ObjectClose'),\n Object: makeParent('Object'),\n Root: makeParent('Root')\n};\n/* EXPORT */\nexports.default = Tokens;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst reghex_1 = require(\"reghex\");\n/* UTILS */\nconst Utils = {\n /* VARIABLES */\n tokenDelimiterTypes: new Set(['ArrayOpen', 'ArrayClose', 'ObjectOpen', 'ObjectClose']),\n tokenIgnoredTypes: new Set(['Newline', 'Whitespace', 'CommentLine', 'CommentBlock', 'Comma', 'CommaTrailing', 'Colon']),\n tokenLiteralTypes: new Set(['Null', 'True', 'False', 'Number', 'String', 'Array', 'Object']),\n /* API */\n isEven: (number) => {\n return !(number % 2);\n },\n isOdd: (number) => {\n return !Utils.isEven(number);\n },\n isString: (value) => {\n return typeof value === 'string';\n },\n isToken: (value) => {\n return !Utils.isString(value);\n },\n isTokenDelimiter: (token) => {\n return Utils.tokenDelimiterTypes.has(token.type);\n },\n isTokenIgnored: (token) => {\n return Utils.tokenIgnoredTypes.has(token.type);\n },\n isTokenLiteral: (token) => {\n return Utils.tokenLiteralTypes.has(token.type);\n },\n tokens2matchers: (tokens) => {\n const cache = new Map();\n return Object.keys(tokens).reduce((acc, type) => {\n const transformer = tokens[type];\n const matcher = transformer.unwrapped ? transformer : cache.get(transformer) || (0, reghex_1.match)(type, transformer);\n cache.set(transformer, matcher);\n acc[type] = matcher;\n return acc;\n }, {});\n }\n};\n/* EXPORT */\nexports.default = Utils;\n","\"use strict\";\n/* IMPORT */\nObject.defineProperty(exports, \"__esModule\", { value: true });\nconst parse_1 = require(\"./parse\");\n/* VALIDATE */\nconst validate = (text) => {\n try {\n (0, parse_1.default)(text);\n return true;\n }\n catch (_a) {\n return false;\n }\n};\n/* EXPORT */\nexports.default = validate;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar DataView = getNative(root, 'DataView');\n\nmodule.exports = DataView;\n","var hashClear = require('./_hashClear'),\n hashDelete = require('./_hashDelete'),\n hashGet = require('./_hashGet'),\n hashHas = require('./_hashHas'),\n hashSet = require('./_hashSet');\n\n/**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `Hash`.\nHash.prototype.clear = hashClear;\nHash.prototype['delete'] = hashDelete;\nHash.prototype.get = hashGet;\nHash.prototype.has = hashHas;\nHash.prototype.set = hashSet;\n\nmodule.exports = Hash;\n","var listCacheClear = require('./_listCacheClear'),\n listCacheDelete = require('./_listCacheDelete'),\n listCacheGet = require('./_listCacheGet'),\n listCacheHas = require('./_listCacheHas'),\n listCacheSet = require('./_listCacheSet');\n\n/**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `ListCache`.\nListCache.prototype.clear = listCacheClear;\nListCache.prototype['delete'] = listCacheDelete;\nListCache.prototype.get = listCacheGet;\nListCache.prototype.has = listCacheHas;\nListCache.prototype.set = listCacheSet;\n\nmodule.exports = ListCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Map = getNative(root, 'Map');\n\nmodule.exports = Map;\n","var mapCacheClear = require('./_mapCacheClear'),\n mapCacheDelete = require('./_mapCacheDelete'),\n mapCacheGet = require('./_mapCacheGet'),\n mapCacheHas = require('./_mapCacheHas'),\n mapCacheSet = require('./_mapCacheSet');\n\n/**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n}\n\n// Add methods to `MapCache`.\nMapCache.prototype.clear = mapCacheClear;\nMapCache.prototype['delete'] = mapCacheDelete;\nMapCache.prototype.get = mapCacheGet;\nMapCache.prototype.has = mapCacheHas;\nMapCache.prototype.set = mapCacheSet;\n\nmodule.exports = MapCache;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Promise = getNative(root, 'Promise');\n\nmodule.exports = Promise;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar Set = getNative(root, 'Set');\n\nmodule.exports = Set;\n","var MapCache = require('./_MapCache'),\n setCacheAdd = require('./_setCacheAdd'),\n setCacheHas = require('./_setCacheHas');\n\n/**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\nfunction SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n}\n\n// Add methods to `SetCache`.\nSetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\nSetCache.prototype.has = setCacheHas;\n\nmodule.exports = SetCache;\n","var ListCache = require('./_ListCache'),\n stackClear = require('./_stackClear'),\n stackDelete = require('./_stackDelete'),\n stackGet = require('./_stackGet'),\n stackHas = require('./_stackHas'),\n stackSet = require('./_stackSet');\n\n/**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\nfunction Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n}\n\n// Add methods to `Stack`.\nStack.prototype.clear = stackClear;\nStack.prototype['delete'] = stackDelete;\nStack.prototype.get = stackGet;\nStack.prototype.has = stackHas;\nStack.prototype.set = stackSet;\n\nmodule.exports = Stack;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Uint8Array = root.Uint8Array;\n\nmodule.exports = Uint8Array;\n","var getNative = require('./_getNative'),\n root = require('./_root');\n\n/* Built-in method references that are verified to be native. */\nvar WeakMap = getNative(root, 'WeakMap');\n\nmodule.exports = WeakMap;\n","/**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\nfunction arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n}\n\nmodule.exports = arrayFilter;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","/**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\nfunction arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n}\n\nmodule.exports = arrayMap;\n","/**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\nfunction arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n}\n\nmodule.exports = arrayPush;\n","/**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\nfunction arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n}\n\nmodule.exports = arrayReduce;\n","/**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\nfunction arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n}\n\nmodule.exports = arraySome;\n","/**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction asciiToArray(string) {\n return string.split('');\n}\n\nmodule.exports = asciiToArray;\n","/** Used to match words composed of alphanumeric characters. */\nvar reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n/**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction asciiWords(string) {\n return string.match(reAsciiWord) || [];\n}\n\nmodule.exports = asciiWords;\n","var eq = require('./eq');\n\n/**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\nfunction assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n}\n\nmodule.exports = assocIndexOf;\n","var defineProperty = require('./_defineProperty');\n\n/**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\nfunction baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n}\n\nmodule.exports = baseAssignValue;\n","var createBaseFor = require('./_createBaseFor');\n\n/**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\nvar baseFor = createBaseFor();\n\nmodule.exports = baseFor;\n","var baseFor = require('./_baseFor'),\n keys = require('./keys');\n\n/**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\nfunction baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n}\n\nmodule.exports = baseForOwn;\n","var castPath = require('./_castPath'),\n toKey = require('./_toKey');\n\n/**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\nfunction baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n}\n\nmodule.exports = baseGet;\n","var arrayPush = require('./_arrayPush'),\n isArray = require('./isArray');\n\n/**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n}\n\nmodule.exports = baseGetAllKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n}\n\nmodule.exports = baseHas;\n","/**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\nfunction baseHasIn(object, key) {\n return object != null && key in Object(object);\n}\n\nmodule.exports = baseHasIn;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseIsEqualDeep = require('./_baseIsEqualDeep'),\n isObjectLike = require('./isObjectLike');\n\n/**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\nfunction baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n}\n\nmodule.exports = baseIsEqual;\n","var Stack = require('./_Stack'),\n equalArrays = require('./_equalArrays'),\n equalByTag = require('./_equalByTag'),\n equalObjects = require('./_equalObjects'),\n getTag = require('./_getTag'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isTypedArray = require('./isTypedArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n objectTag = '[object Object]';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n}\n\nmodule.exports = baseIsEqualDeep;\n","var Stack = require('./_Stack'),\n baseIsEqual = require('./_baseIsEqual');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\nfunction baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n}\n\nmodule.exports = baseIsMatch;\n","var isFunction = require('./isFunction'),\n isMasked = require('./_isMasked'),\n isObject = require('./isObject'),\n toSource = require('./_toSource');\n\n/**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\nvar reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g;\n\n/** Used to detect host constructors (Safari). */\nvar reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n/** Used for built-in method references. */\nvar funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Used to detect if a method is native. */\nvar reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n);\n\n/**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\nfunction baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n}\n\nmodule.exports = baseIsNative;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var baseMatches = require('./_baseMatches'),\n baseMatchesProperty = require('./_baseMatchesProperty'),\n identity = require('./identity'),\n isArray = require('./isArray'),\n property = require('./property');\n\n/**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\nfunction baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n}\n\nmodule.exports = baseIteratee;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","var baseIsMatch = require('./_baseIsMatch'),\n getMatchData = require('./_getMatchData'),\n matchesStrictComparable = require('./_matchesStrictComparable');\n\n/**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n}\n\nmodule.exports = baseMatches;\n","var baseIsEqual = require('./_baseIsEqual'),\n get = require('./get'),\n hasIn = require('./hasIn'),\n isKey = require('./_isKey'),\n isStrictComparable = require('./_isStrictComparable'),\n matchesStrictComparable = require('./_matchesStrictComparable'),\n toKey = require('./_toKey');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n}\n\nmodule.exports = baseMatchesProperty;\n","/**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = baseProperty;\n","var baseGet = require('./_baseGet');\n\n/**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n}\n\nmodule.exports = basePropertyDeep;\n","/**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\nfunction basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n}\n\nmodule.exports = basePropertyOf;\n","/**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\nfunction baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n}\n\nmodule.exports = baseSlice;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","var Symbol = require('./_Symbol'),\n arrayMap = require('./_arrayMap'),\n isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n/**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\nfunction baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = baseToString;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction cacheHas(cache, key) {\n return cache.has(key);\n}\n\nmodule.exports = cacheHas;\n","var isArray = require('./isArray'),\n isKey = require('./_isKey'),\n stringToPath = require('./_stringToPath'),\n toString = require('./toString');\n\n/**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\nfunction castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n}\n\nmodule.exports = castPath;\n","var baseSlice = require('./_baseSlice');\n\n/**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\nfunction castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n}\n\nmodule.exports = castSlice;\n","var root = require('./_root');\n\n/** Used to detect overreaching core-js shims. */\nvar coreJsData = root['__core-js_shared__'];\n\nmodule.exports = coreJsData;\n","/**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\nfunction createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n}\n\nmodule.exports = createBaseFor;\n","var castSlice = require('./_castSlice'),\n hasUnicode = require('./_hasUnicode'),\n stringToArray = require('./_stringToArray'),\n toString = require('./toString');\n\n/**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\nfunction createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n}\n\nmodule.exports = createCaseFirst;\n","var arrayReduce = require('./_arrayReduce'),\n deburr = require('./deburr'),\n words = require('./words');\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\";\n\n/** Used to match apostrophes. */\nvar reApos = RegExp(rsApos, 'g');\n\n/**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\nfunction createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n}\n\nmodule.exports = createCompounder;\n","var basePropertyOf = require('./_basePropertyOf');\n\n/** Used to map Latin Unicode letters to basic Latin letters. */\nvar deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n};\n\n/**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\nvar deburrLetter = basePropertyOf(deburredLetters);\n\nmodule.exports = deburrLetter;\n","var getNative = require('./_getNative');\n\nvar defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n}());\n\nmodule.exports = defineProperty;\n","var SetCache = require('./_SetCache'),\n arraySome = require('./_arraySome'),\n cacheHas = require('./_cacheHas');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\nfunction equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalArrays;\n","var Symbol = require('./_Symbol'),\n Uint8Array = require('./_Uint8Array'),\n eq = require('./eq'),\n equalArrays = require('./_equalArrays'),\n mapToArray = require('./_mapToArray'),\n setToArray = require('./_setToArray');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n/** `Object#toString` result references. */\nvar boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]';\n\n/** Used to convert symbols to primitives and strings. */\nvar symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined;\n\n/**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n}\n\nmodule.exports = equalByTag;\n","var getAllKeys = require('./_getAllKeys');\n\n/** Used to compose bitmasks for value comparisons. */\nvar COMPARE_PARTIAL_FLAG = 1;\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\nfunction equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n}\n\nmodule.exports = equalObjects;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var baseGetAllKeys = require('./_baseGetAllKeys'),\n getSymbols = require('./_getSymbols'),\n keys = require('./keys');\n\n/**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\nfunction getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n}\n\nmodule.exports = getAllKeys;\n","var isKeyable = require('./_isKeyable');\n\n/**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\nfunction getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n}\n\nmodule.exports = getMapData;\n","var isStrictComparable = require('./_isStrictComparable'),\n keys = require('./keys');\n\n/**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\nfunction getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n}\n\nmodule.exports = getMatchData;\n","var baseIsNative = require('./_baseIsNative'),\n getValue = require('./_getValue');\n\n/**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\nfunction getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n}\n\nmodule.exports = getNative;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","var arrayFilter = require('./_arrayFilter'),\n stubArray = require('./stubArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeGetSymbols = Object.getOwnPropertySymbols;\n\n/**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\nvar getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n};\n\nmodule.exports = getSymbols;\n","var DataView = require('./_DataView'),\n Map = require('./_Map'),\n Promise = require('./_Promise'),\n Set = require('./_Set'),\n WeakMap = require('./_WeakMap'),\n baseGetTag = require('./_baseGetTag'),\n toSource = require('./_toSource');\n\n/** `Object#toString` result references. */\nvar mapTag = '[object Map]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n setTag = '[object Set]',\n weakMapTag = '[object WeakMap]';\n\nvar dataViewTag = '[object DataView]';\n\n/** Used to detect maps, sets, and weakmaps. */\nvar dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n/**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nvar getTag = baseGetTag;\n\n// Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\nif ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n}\n\nmodule.exports = getTag;\n","/**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\nfunction getValue(object, key) {\n return object == null ? undefined : object[key];\n}\n\nmodule.exports = getValue;\n","var castPath = require('./_castPath'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isIndex = require('./_isIndex'),\n isLength = require('./isLength'),\n toKey = require('./_toKey');\n\n/**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\nfunction hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n}\n\nmodule.exports = hasPath;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsZWJ = '\\\\u200d';\n\n/** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\nvar reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n/**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\nfunction hasUnicode(string) {\n return reHasUnicode.test(string);\n}\n\nmodule.exports = hasUnicode;\n","/** Used to detect strings that need a more robust regexp to match words. */\nvar reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n/**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\nfunction hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n}\n\nmodule.exports = hasUnicodeWord;\n","var nativeCreate = require('./_nativeCreate');\n\n/**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\nfunction hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n}\n\nmodule.exports = hashClear;\n","/**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = hashDelete;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n}\n\nmodule.exports = hashGet;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n}\n\nmodule.exports = hashHas;\n","var nativeCreate = require('./_nativeCreate');\n\n/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\nfunction hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n}\n\nmodule.exports = hashSet;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","var isArray = require('./isArray'),\n isSymbol = require('./isSymbol');\n\n/** Used to match property names within property paths. */\nvar reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/;\n\n/**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\nfunction isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n}\n\nmodule.exports = isKey;\n","/**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\nfunction isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n}\n\nmodule.exports = isKeyable;\n","var coreJsData = require('./_coreJsData');\n\n/** Used to detect methods masquerading as native. */\nvar maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n}());\n\n/**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\nfunction isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n}\n\nmodule.exports = isMasked;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var isObject = require('./isObject');\n\n/**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\nfunction isStrictComparable(value) {\n return value === value && !isObject(value);\n}\n\nmodule.exports = isStrictComparable;\n","/**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\nfunction listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n}\n\nmodule.exports = listCacheClear;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/** Used for built-in method references. */\nvar arrayProto = Array.prototype;\n\n/** Built-in value references. */\nvar splice = arrayProto.splice;\n\n/**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n}\n\nmodule.exports = listCacheDelete;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n}\n\nmodule.exports = listCacheGet;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n}\n\nmodule.exports = listCacheHas;\n","var assocIndexOf = require('./_assocIndexOf');\n\n/**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\nfunction listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n}\n\nmodule.exports = listCacheSet;\n","var Hash = require('./_Hash'),\n ListCache = require('./_ListCache'),\n Map = require('./_Map');\n\n/**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\nfunction mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n}\n\nmodule.exports = mapCacheClear;\n","var getMapData = require('./_getMapData');\n\n/**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n}\n\nmodule.exports = mapCacheDelete;\n","var getMapData = require('./_getMapData');\n\n/**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction mapCacheGet(key) {\n return getMapData(this, key).get(key);\n}\n\nmodule.exports = mapCacheGet;\n","var getMapData = require('./_getMapData');\n\n/**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction mapCacheHas(key) {\n return getMapData(this, key).has(key);\n}\n\nmodule.exports = mapCacheHas;\n","var getMapData = require('./_getMapData');\n\n/**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\nfunction mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n}\n\nmodule.exports = mapCacheSet;\n","/**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\nfunction mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n}\n\nmodule.exports = mapToArray;\n","/**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\nfunction matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n}\n\nmodule.exports = matchesStrictComparable;\n","var memoize = require('./memoize');\n\n/** Used as the maximum memoize cache size. */\nvar MAX_MEMOIZE_SIZE = 500;\n\n/**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\nfunction memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n}\n\nmodule.exports = memoizeCapped;\n","var getNative = require('./_getNative');\n\n/* Built-in method references that are verified to be native. */\nvar nativeCreate = getNative(Object, 'create');\n\nmodule.exports = nativeCreate;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","/** Used to stand-in for `undefined` hash values. */\nvar HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n/**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\nfunction setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n}\n\nmodule.exports = setCacheAdd;\n","/**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\nfunction setCacheHas(value) {\n return this.__data__.has(value);\n}\n\nmodule.exports = setCacheHas;\n","/**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\nfunction setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n}\n\nmodule.exports = setToArray;\n","var ListCache = require('./_ListCache');\n\n/**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\nfunction stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n}\n\nmodule.exports = stackClear;\n","/**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\nfunction stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n}\n\nmodule.exports = stackDelete;\n","/**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\nfunction stackGet(key) {\n return this.__data__.get(key);\n}\n\nmodule.exports = stackGet;\n","/**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\nfunction stackHas(key) {\n return this.__data__.has(key);\n}\n\nmodule.exports = stackHas;\n","var ListCache = require('./_ListCache'),\n Map = require('./_Map'),\n MapCache = require('./_MapCache');\n\n/** Used as the size to enable large array optimizations. */\nvar LARGE_ARRAY_SIZE = 200;\n\n/**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\nfunction stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n}\n\nmodule.exports = stackSet;\n","var asciiToArray = require('./_asciiToArray'),\n hasUnicode = require('./_hasUnicode'),\n unicodeToArray = require('./_unicodeToArray');\n\n/**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n}\n\nmodule.exports = stringToArray;\n","var memoizeCapped = require('./_memoizeCapped');\n\n/** Used to match property names within property paths. */\nvar rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n/** Used to match backslashes in property paths. */\nvar reEscapeChar = /\\\\(\\\\)?/g;\n\n/**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\nvar stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n});\n\nmodule.exports = stringToPath;\n","var isSymbol = require('./isSymbol');\n\n/** Used as references for various `Number` constants. */\nvar INFINITY = 1 / 0;\n\n/**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\nfunction toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n}\n\nmodule.exports = toKey;\n","/** Used for built-in method references. */\nvar funcProto = Function.prototype;\n\n/** Used to resolve the decompiled source of functions. */\nvar funcToString = funcProto.toString;\n\n/**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\nfunction toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n}\n\nmodule.exports = toSource;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsVarRange = '\\\\ufe0e\\\\ufe0f';\n\n/** Used to compose unicode capture groups. */\nvar rsAstral = '[' + rsAstralRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n/** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\nvar reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n/**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\nfunction unicodeToArray(string) {\n return string.match(reUnicode) || [];\n}\n\nmodule.exports = unicodeToArray;\n","/** Used to compose unicode character classes. */\nvar rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n/** Used to compose unicode capture groups. */\nvar rsApos = \"['\\u2019]\",\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n/** Used to compose unicode regexes. */\nvar rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq;\n\n/** Used to match complex or compound words. */\nvar reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n].join('|'), 'g');\n\n/**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\nfunction unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n}\n\nmodule.exports = unicodeWords;\n","var capitalize = require('./capitalize'),\n createCompounder = require('./_createCompounder');\n\n/**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\nvar camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n});\n\nmodule.exports = camelCase;\n","var toString = require('./toString'),\n upperFirst = require('./upperFirst');\n\n/**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\nfunction capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n}\n\nmodule.exports = capitalize;\n","var deburrLetter = require('./_deburrLetter'),\n toString = require('./toString');\n\n/** Used to match Latin Unicode letters (excluding mathematical operators). */\nvar reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n/** Used to compose unicode character classes. */\nvar rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange;\n\n/** Used to compose unicode capture groups. */\nvar rsCombo = '[' + rsComboRange + ']';\n\n/**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\nvar reComboMark = RegExp(rsCombo, 'g');\n\n/**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\nfunction deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n}\n\nmodule.exports = deburr;\n","/**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\nfunction eq(value, other) {\n return value === other || (value !== value && other !== other);\n}\n\nmodule.exports = eq;\n","var baseGet = require('./_baseGet');\n\n/**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\nfunction get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n}\n\nmodule.exports = get;\n","var baseHas = require('./_baseHas'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\nfunction has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n}\n\nmodule.exports = has;\n","var baseHasIn = require('./_baseHasIn'),\n hasPath = require('./_hasPath');\n\n/**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\nfunction hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n}\n\nmodule.exports = hasIn;\n","/**\n * This method returns the first argument it receives.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Util\n * @param {*} value Any value.\n * @returns {*} Returns `value`.\n * @example\n *\n * var object = { 'a': 1 };\n *\n * console.log(_.identity(object) === object);\n * // => true\n */\nfunction identity(value) {\n return value;\n}\n\nmodule.exports = identity;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar symbolTag = '[object Symbol]';\n\n/**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\nfunction isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n}\n\nmodule.exports = isSymbol;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * @license\n * Lodash \n * Copyright OpenJS Foundation and other contributors \n * Released under MIT license \n * Based on Underscore.js 1.8.3 \n * Copyright Jeremy Ashkenas, DocumentCloud and Investigative Reporters & Editors\n */\n;(function() {\n\n /** Used as a safe reference for `undefined` in pre-ES5 environments. */\n var undefined;\n\n /** Used as the semantic version number. */\n var VERSION = '4.17.21';\n\n /** Used as the size to enable large array optimizations. */\n var LARGE_ARRAY_SIZE = 200;\n\n /** Error message constants. */\n var CORE_ERROR_TEXT = 'Unsupported core-js use. Try https://npms.io/search?q=ponyfill.',\n FUNC_ERROR_TEXT = 'Expected a function',\n INVALID_TEMPL_VAR_ERROR_TEXT = 'Invalid `variable` option passed into `_.template`';\n\n /** Used to stand-in for `undefined` hash values. */\n var HASH_UNDEFINED = '__lodash_hash_undefined__';\n\n /** Used as the maximum memoize cache size. */\n var MAX_MEMOIZE_SIZE = 500;\n\n /** Used as the internal argument placeholder. */\n var PLACEHOLDER = '__lodash_placeholder__';\n\n /** Used to compose bitmasks for cloning. */\n var CLONE_DEEP_FLAG = 1,\n CLONE_FLAT_FLAG = 2,\n CLONE_SYMBOLS_FLAG = 4;\n\n /** Used to compose bitmasks for value comparisons. */\n var COMPARE_PARTIAL_FLAG = 1,\n COMPARE_UNORDERED_FLAG = 2;\n\n /** Used to compose bitmasks for function metadata. */\n var WRAP_BIND_FLAG = 1,\n WRAP_BIND_KEY_FLAG = 2,\n WRAP_CURRY_BOUND_FLAG = 4,\n WRAP_CURRY_FLAG = 8,\n WRAP_CURRY_RIGHT_FLAG = 16,\n WRAP_PARTIAL_FLAG = 32,\n WRAP_PARTIAL_RIGHT_FLAG = 64,\n WRAP_ARY_FLAG = 128,\n WRAP_REARG_FLAG = 256,\n WRAP_FLIP_FLAG = 512;\n\n /** Used as default options for `_.truncate`. */\n var DEFAULT_TRUNC_LENGTH = 30,\n DEFAULT_TRUNC_OMISSION = '...';\n\n /** Used to detect hot functions by number of calls within a span of milliseconds. */\n var HOT_COUNT = 800,\n HOT_SPAN = 16;\n\n /** Used to indicate the type of lazy iteratees. */\n var LAZY_FILTER_FLAG = 1,\n LAZY_MAP_FLAG = 2,\n LAZY_WHILE_FLAG = 3;\n\n /** Used as references for various `Number` constants. */\n var INFINITY = 1 / 0,\n MAX_SAFE_INTEGER = 9007199254740991,\n MAX_INTEGER = 1.7976931348623157e+308,\n NAN = 0 / 0;\n\n /** Used as references for the maximum length and index of an array. */\n var MAX_ARRAY_LENGTH = 4294967295,\n MAX_ARRAY_INDEX = MAX_ARRAY_LENGTH - 1,\n HALF_MAX_ARRAY_LENGTH = MAX_ARRAY_LENGTH >>> 1;\n\n /** Used to associate wrap methods with their bit flags. */\n var wrapFlags = [\n ['ary', WRAP_ARY_FLAG],\n ['bind', WRAP_BIND_FLAG],\n ['bindKey', WRAP_BIND_KEY_FLAG],\n ['curry', WRAP_CURRY_FLAG],\n ['curryRight', WRAP_CURRY_RIGHT_FLAG],\n ['flip', WRAP_FLIP_FLAG],\n ['partial', WRAP_PARTIAL_FLAG],\n ['partialRight', WRAP_PARTIAL_RIGHT_FLAG],\n ['rearg', WRAP_REARG_FLAG]\n ];\n\n /** `Object#toString` result references. */\n var argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n asyncTag = '[object AsyncFunction]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n domExcTag = '[object DOMException]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n nullTag = '[object Null]',\n objectTag = '[object Object]',\n promiseTag = '[object Promise]',\n proxyTag = '[object Proxy]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n symbolTag = '[object Symbol]',\n undefinedTag = '[object Undefined]',\n weakMapTag = '[object WeakMap]',\n weakSetTag = '[object WeakSet]';\n\n var arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n /** Used to match empty string literals in compiled template source. */\n var reEmptyStringLeading = /\\b__p \\+= '';/g,\n reEmptyStringMiddle = /\\b(__p \\+=) '' \\+/g,\n reEmptyStringTrailing = /(__e\\(.*?\\)|\\b__t\\)) \\+\\n'';/g;\n\n /** Used to match HTML entities and HTML characters. */\n var reEscapedHtml = /&(?:amp|lt|gt|quot|#39);/g,\n reUnescapedHtml = /[&<>\"']/g,\n reHasEscapedHtml = RegExp(reEscapedHtml.source),\n reHasUnescapedHtml = RegExp(reUnescapedHtml.source);\n\n /** Used to match template delimiters. */\n var reEscape = /<%-([\\s\\S]+?)%>/g,\n reEvaluate = /<%([\\s\\S]+?)%>/g,\n reInterpolate = /<%=([\\s\\S]+?)%>/g;\n\n /** Used to match property names within property paths. */\n var reIsDeepProp = /\\.|\\[(?:[^[\\]]*|([\"'])(?:(?!\\1)[^\\\\]|\\\\.)*?\\1)\\]/,\n reIsPlainProp = /^\\w*$/,\n rePropName = /[^.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|$))/g;\n\n /**\n * Used to match `RegExp`\n * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns).\n */\n var reRegExpChar = /[\\\\^$.*+?()[\\]{}|]/g,\n reHasRegExpChar = RegExp(reRegExpChar.source);\n\n /** Used to match leading whitespace. */\n var reTrimStart = /^\\s+/;\n\n /** Used to match a single whitespace character. */\n var reWhitespace = /\\s/;\n\n /** Used to match wrap detail comments. */\n var reWrapComment = /\\{(?:\\n\\/\\* \\[wrapped with .+\\] \\*\\/)?\\n?/,\n reWrapDetails = /\\{\\n\\/\\* \\[wrapped with (.+)\\] \\*/,\n reSplitDetails = /,? & /;\n\n /** Used to match words composed of alphanumeric characters. */\n var reAsciiWord = /[^\\x00-\\x2f\\x3a-\\x40\\x5b-\\x60\\x7b-\\x7f]+/g;\n\n /**\n * Used to validate the `validate` option in `_.template` variable.\n *\n * Forbids characters which could potentially change the meaning of the function argument definition:\n * - \"(),\" (modification of function parameters)\n * - \"=\" (default value)\n * - \"[]{}\" (destructuring of function parameters)\n * - \"/\" (beginning of a comment)\n * - whitespace\n */\n var reForbiddenIdentifierChars = /[()=,{}\\[\\]\\/\\s]/;\n\n /** Used to match backslashes in property paths. */\n var reEscapeChar = /\\\\(\\\\)?/g;\n\n /**\n * Used to match\n * [ES template delimiters](http://ecma-international.org/ecma-262/7.0/#sec-template-literal-lexical-components).\n */\n var reEsTemplate = /\\$\\{([^\\\\}]*(?:\\\\.[^\\\\}]*)*)\\}/g;\n\n /** Used to match `RegExp` flags from their coerced string values. */\n var reFlags = /\\w*$/;\n\n /** Used to detect bad signed hexadecimal string values. */\n var reIsBadHex = /^[-+]0x[0-9a-f]+$/i;\n\n /** Used to detect binary string values. */\n var reIsBinary = /^0b[01]+$/i;\n\n /** Used to detect host constructors (Safari). */\n var reIsHostCtor = /^\\[object .+?Constructor\\]$/;\n\n /** Used to detect octal string values. */\n var reIsOctal = /^0o[0-7]+$/i;\n\n /** Used to detect unsigned integer values. */\n var reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n /** Used to match Latin Unicode letters (excluding mathematical operators). */\n var reLatin = /[\\xc0-\\xd6\\xd8-\\xf6\\xf8-\\xff\\u0100-\\u017f]/g;\n\n /** Used to ensure capturing order of template delimiters. */\n var reNoMatch = /($^)/;\n\n /** Used to match unescaped characters in compiled string literals. */\n var reUnescapedString = /['\\n\\r\\u2028\\u2029\\\\]/g;\n\n /** Used to compose unicode character classes. */\n var rsAstralRange = '\\\\ud800-\\\\udfff',\n rsComboMarksRange = '\\\\u0300-\\\\u036f',\n reComboHalfMarksRange = '\\\\ufe20-\\\\ufe2f',\n rsComboSymbolsRange = '\\\\u20d0-\\\\u20ff',\n rsComboRange = rsComboMarksRange + reComboHalfMarksRange + rsComboSymbolsRange,\n rsDingbatRange = '\\\\u2700-\\\\u27bf',\n rsLowerRange = 'a-z\\\\xdf-\\\\xf6\\\\xf8-\\\\xff',\n rsMathOpRange = '\\\\xac\\\\xb1\\\\xd7\\\\xf7',\n rsNonCharRange = '\\\\x00-\\\\x2f\\\\x3a-\\\\x40\\\\x5b-\\\\x60\\\\x7b-\\\\xbf',\n rsPunctuationRange = '\\\\u2000-\\\\u206f',\n rsSpaceRange = ' \\\\t\\\\x0b\\\\f\\\\xa0\\\\ufeff\\\\n\\\\r\\\\u2028\\\\u2029\\\\u1680\\\\u180e\\\\u2000\\\\u2001\\\\u2002\\\\u2003\\\\u2004\\\\u2005\\\\u2006\\\\u2007\\\\u2008\\\\u2009\\\\u200a\\\\u202f\\\\u205f\\\\u3000',\n rsUpperRange = 'A-Z\\\\xc0-\\\\xd6\\\\xd8-\\\\xde',\n rsVarRange = '\\\\ufe0e\\\\ufe0f',\n rsBreakRange = rsMathOpRange + rsNonCharRange + rsPunctuationRange + rsSpaceRange;\n\n /** Used to compose unicode capture groups. */\n var rsApos = \"['\\u2019]\",\n rsAstral = '[' + rsAstralRange + ']',\n rsBreak = '[' + rsBreakRange + ']',\n rsCombo = '[' + rsComboRange + ']',\n rsDigits = '\\\\d+',\n rsDingbat = '[' + rsDingbatRange + ']',\n rsLower = '[' + rsLowerRange + ']',\n rsMisc = '[^' + rsAstralRange + rsBreakRange + rsDigits + rsDingbatRange + rsLowerRange + rsUpperRange + ']',\n rsFitz = '\\\\ud83c[\\\\udffb-\\\\udfff]',\n rsModifier = '(?:' + rsCombo + '|' + rsFitz + ')',\n rsNonAstral = '[^' + rsAstralRange + ']',\n rsRegional = '(?:\\\\ud83c[\\\\udde6-\\\\uddff]){2}',\n rsSurrPair = '[\\\\ud800-\\\\udbff][\\\\udc00-\\\\udfff]',\n rsUpper = '[' + rsUpperRange + ']',\n rsZWJ = '\\\\u200d';\n\n /** Used to compose unicode regexes. */\n var rsMiscLower = '(?:' + rsLower + '|' + rsMisc + ')',\n rsMiscUpper = '(?:' + rsUpper + '|' + rsMisc + ')',\n rsOptContrLower = '(?:' + rsApos + '(?:d|ll|m|re|s|t|ve))?',\n rsOptContrUpper = '(?:' + rsApos + '(?:D|LL|M|RE|S|T|VE))?',\n reOptMod = rsModifier + '?',\n rsOptVar = '[' + rsVarRange + ']?',\n rsOptJoin = '(?:' + rsZWJ + '(?:' + [rsNonAstral, rsRegional, rsSurrPair].join('|') + ')' + rsOptVar + reOptMod + ')*',\n rsOrdLower = '\\\\d*(?:1st|2nd|3rd|(?![123])\\\\dth)(?=\\\\b|[A-Z_])',\n rsOrdUpper = '\\\\d*(?:1ST|2ND|3RD|(?![123])\\\\dTH)(?=\\\\b|[a-z_])',\n rsSeq = rsOptVar + reOptMod + rsOptJoin,\n rsEmoji = '(?:' + [rsDingbat, rsRegional, rsSurrPair].join('|') + ')' + rsSeq,\n rsSymbol = '(?:' + [rsNonAstral + rsCombo + '?', rsCombo, rsRegional, rsSurrPair, rsAstral].join('|') + ')';\n\n /** Used to match apostrophes. */\n var reApos = RegExp(rsApos, 'g');\n\n /**\n * Used to match [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks) and\n * [combining diacritical marks for symbols](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks_for_Symbols).\n */\n var reComboMark = RegExp(rsCombo, 'g');\n\n /** Used to match [string symbols](https://mathiasbynens.be/notes/javascript-unicode). */\n var reUnicode = RegExp(rsFitz + '(?=' + rsFitz + ')|' + rsSymbol + rsSeq, 'g');\n\n /** Used to match complex or compound words. */\n var reUnicodeWord = RegExp([\n rsUpper + '?' + rsLower + '+' + rsOptContrLower + '(?=' + [rsBreak, rsUpper, '$'].join('|') + ')',\n rsMiscUpper + '+' + rsOptContrUpper + '(?=' + [rsBreak, rsUpper + rsMiscLower, '$'].join('|') + ')',\n rsUpper + '?' + rsMiscLower + '+' + rsOptContrLower,\n rsUpper + '+' + rsOptContrUpper,\n rsOrdUpper,\n rsOrdLower,\n rsDigits,\n rsEmoji\n ].join('|'), 'g');\n\n /** Used to detect strings with [zero-width joiners or code points from the astral planes](http://eev.ee/blog/2015/09/12/dark-corners-of-unicode/). */\n var reHasUnicode = RegExp('[' + rsZWJ + rsAstralRange + rsComboRange + rsVarRange + ']');\n\n /** Used to detect strings that need a more robust regexp to match words. */\n var reHasUnicodeWord = /[a-z][A-Z]|[A-Z]{2}[a-z]|[0-9][a-zA-Z]|[a-zA-Z][0-9]|[^a-zA-Z0-9 ]/;\n\n /** Used to assign default `context` object properties. */\n var contextProps = [\n 'Array', 'Buffer', 'DataView', 'Date', 'Error', 'Float32Array', 'Float64Array',\n 'Function', 'Int8Array', 'Int16Array', 'Int32Array', 'Map', 'Math', 'Object',\n 'Promise', 'RegExp', 'Set', 'String', 'Symbol', 'TypeError', 'Uint8Array',\n 'Uint8ClampedArray', 'Uint16Array', 'Uint32Array', 'WeakMap',\n '_', 'clearTimeout', 'isFinite', 'parseInt', 'setTimeout'\n ];\n\n /** Used to make template sourceURLs easier to identify. */\n var templateCounter = -1;\n\n /** Used to identify `toStringTag` values of typed arrays. */\n var typedArrayTags = {};\n typedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\n typedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\n typedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\n typedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\n typedArrayTags[uint32Tag] = true;\n typedArrayTags[argsTag] = typedArrayTags[arrayTag] =\n typedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\n typedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\n typedArrayTags[errorTag] = typedArrayTags[funcTag] =\n typedArrayTags[mapTag] = typedArrayTags[numberTag] =\n typedArrayTags[objectTag] = typedArrayTags[regexpTag] =\n typedArrayTags[setTag] = typedArrayTags[stringTag] =\n typedArrayTags[weakMapTag] = false;\n\n /** Used to identify `toStringTag` values supported by `_.clone`. */\n var cloneableTags = {};\n cloneableTags[argsTag] = cloneableTags[arrayTag] =\n cloneableTags[arrayBufferTag] = cloneableTags[dataViewTag] =\n cloneableTags[boolTag] = cloneableTags[dateTag] =\n cloneableTags[float32Tag] = cloneableTags[float64Tag] =\n cloneableTags[int8Tag] = cloneableTags[int16Tag] =\n cloneableTags[int32Tag] = cloneableTags[mapTag] =\n cloneableTags[numberTag] = cloneableTags[objectTag] =\n cloneableTags[regexpTag] = cloneableTags[setTag] =\n cloneableTags[stringTag] = cloneableTags[symbolTag] =\n cloneableTags[uint8Tag] = cloneableTags[uint8ClampedTag] =\n cloneableTags[uint16Tag] = cloneableTags[uint32Tag] = true;\n cloneableTags[errorTag] = cloneableTags[funcTag] =\n cloneableTags[weakMapTag] = false;\n\n /** Used to map Latin Unicode letters to basic Latin letters. */\n var deburredLetters = {\n // Latin-1 Supplement block.\n '\\xc0': 'A', '\\xc1': 'A', '\\xc2': 'A', '\\xc3': 'A', '\\xc4': 'A', '\\xc5': 'A',\n '\\xe0': 'a', '\\xe1': 'a', '\\xe2': 'a', '\\xe3': 'a', '\\xe4': 'a', '\\xe5': 'a',\n '\\xc7': 'C', '\\xe7': 'c',\n '\\xd0': 'D', '\\xf0': 'd',\n '\\xc8': 'E', '\\xc9': 'E', '\\xca': 'E', '\\xcb': 'E',\n '\\xe8': 'e', '\\xe9': 'e', '\\xea': 'e', '\\xeb': 'e',\n '\\xcc': 'I', '\\xcd': 'I', '\\xce': 'I', '\\xcf': 'I',\n '\\xec': 'i', '\\xed': 'i', '\\xee': 'i', '\\xef': 'i',\n '\\xd1': 'N', '\\xf1': 'n',\n '\\xd2': 'O', '\\xd3': 'O', '\\xd4': 'O', '\\xd5': 'O', '\\xd6': 'O', '\\xd8': 'O',\n '\\xf2': 'o', '\\xf3': 'o', '\\xf4': 'o', '\\xf5': 'o', '\\xf6': 'o', '\\xf8': 'o',\n '\\xd9': 'U', '\\xda': 'U', '\\xdb': 'U', '\\xdc': 'U',\n '\\xf9': 'u', '\\xfa': 'u', '\\xfb': 'u', '\\xfc': 'u',\n '\\xdd': 'Y', '\\xfd': 'y', '\\xff': 'y',\n '\\xc6': 'Ae', '\\xe6': 'ae',\n '\\xde': 'Th', '\\xfe': 'th',\n '\\xdf': 'ss',\n // Latin Extended-A block.\n '\\u0100': 'A', '\\u0102': 'A', '\\u0104': 'A',\n '\\u0101': 'a', '\\u0103': 'a', '\\u0105': 'a',\n '\\u0106': 'C', '\\u0108': 'C', '\\u010a': 'C', '\\u010c': 'C',\n '\\u0107': 'c', '\\u0109': 'c', '\\u010b': 'c', '\\u010d': 'c',\n '\\u010e': 'D', '\\u0110': 'D', '\\u010f': 'd', '\\u0111': 'd',\n '\\u0112': 'E', '\\u0114': 'E', '\\u0116': 'E', '\\u0118': 'E', '\\u011a': 'E',\n '\\u0113': 'e', '\\u0115': 'e', '\\u0117': 'e', '\\u0119': 'e', '\\u011b': 'e',\n '\\u011c': 'G', '\\u011e': 'G', '\\u0120': 'G', '\\u0122': 'G',\n '\\u011d': 'g', '\\u011f': 'g', '\\u0121': 'g', '\\u0123': 'g',\n '\\u0124': 'H', '\\u0126': 'H', '\\u0125': 'h', '\\u0127': 'h',\n '\\u0128': 'I', '\\u012a': 'I', '\\u012c': 'I', '\\u012e': 'I', '\\u0130': 'I',\n '\\u0129': 'i', '\\u012b': 'i', '\\u012d': 'i', '\\u012f': 'i', '\\u0131': 'i',\n '\\u0134': 'J', '\\u0135': 'j',\n '\\u0136': 'K', '\\u0137': 'k', '\\u0138': 'k',\n '\\u0139': 'L', '\\u013b': 'L', '\\u013d': 'L', '\\u013f': 'L', '\\u0141': 'L',\n '\\u013a': 'l', '\\u013c': 'l', '\\u013e': 'l', '\\u0140': 'l', '\\u0142': 'l',\n '\\u0143': 'N', '\\u0145': 'N', '\\u0147': 'N', '\\u014a': 'N',\n '\\u0144': 'n', '\\u0146': 'n', '\\u0148': 'n', '\\u014b': 'n',\n '\\u014c': 'O', '\\u014e': 'O', '\\u0150': 'O',\n '\\u014d': 'o', '\\u014f': 'o', '\\u0151': 'o',\n '\\u0154': 'R', '\\u0156': 'R', '\\u0158': 'R',\n '\\u0155': 'r', '\\u0157': 'r', '\\u0159': 'r',\n '\\u015a': 'S', '\\u015c': 'S', '\\u015e': 'S', '\\u0160': 'S',\n '\\u015b': 's', '\\u015d': 's', '\\u015f': 's', '\\u0161': 's',\n '\\u0162': 'T', '\\u0164': 'T', '\\u0166': 'T',\n '\\u0163': 't', '\\u0165': 't', '\\u0167': 't',\n '\\u0168': 'U', '\\u016a': 'U', '\\u016c': 'U', '\\u016e': 'U', '\\u0170': 'U', '\\u0172': 'U',\n '\\u0169': 'u', '\\u016b': 'u', '\\u016d': 'u', '\\u016f': 'u', '\\u0171': 'u', '\\u0173': 'u',\n '\\u0174': 'W', '\\u0175': 'w',\n '\\u0176': 'Y', '\\u0177': 'y', '\\u0178': 'Y',\n '\\u0179': 'Z', '\\u017b': 'Z', '\\u017d': 'Z',\n '\\u017a': 'z', '\\u017c': 'z', '\\u017e': 'z',\n '\\u0132': 'IJ', '\\u0133': 'ij',\n '\\u0152': 'Oe', '\\u0153': 'oe',\n '\\u0149': \"'n\", '\\u017f': 's'\n };\n\n /** Used to map characters to HTML entities. */\n var htmlEscapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '\"': '"',\n \"'\": '''\n };\n\n /** Used to map HTML entities to characters. */\n var htmlUnescapes = {\n '&': '&',\n '<': '<',\n '>': '>',\n '"': '\"',\n ''': \"'\"\n };\n\n /** Used to escape characters for inclusion in compiled string literals. */\n var stringEscapes = {\n '\\\\': '\\\\',\n \"'\": \"'\",\n '\\n': 'n',\n '\\r': 'r',\n '\\u2028': 'u2028',\n '\\u2029': 'u2029'\n };\n\n /** Built-in method references without a dependency on `root`. */\n var freeParseFloat = parseFloat,\n freeParseInt = parseInt;\n\n /** Detect free variable `global` from Node.js. */\n var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\n /** Detect free variable `self`. */\n var freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n /** Used as a reference to the global object. */\n var root = freeGlobal || freeSelf || Function('return this')();\n\n /** Detect free variable `exports`. */\n var freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n /** Detect free variable `module`. */\n var freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n /** Detect the popular CommonJS extension `module.exports`. */\n var moduleExports = freeModule && freeModule.exports === freeExports;\n\n /** Detect free variable `process` from Node.js. */\n var freeProcess = moduleExports && freeGlobal.process;\n\n /** Used to access faster Node.js helpers. */\n var nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n }());\n\n /* Node.js helper references. */\n var nodeIsArrayBuffer = nodeUtil && nodeUtil.isArrayBuffer,\n nodeIsDate = nodeUtil && nodeUtil.isDate,\n nodeIsMap = nodeUtil && nodeUtil.isMap,\n nodeIsRegExp = nodeUtil && nodeUtil.isRegExp,\n nodeIsSet = nodeUtil && nodeUtil.isSet,\n nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * A faster alternative to `Function#apply`, this function invokes `func`\n * with the `this` binding of `thisArg` and the arguments of `args`.\n *\n * @private\n * @param {Function} func The function to invoke.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} args The arguments to invoke `func` with.\n * @returns {*} Returns the result of `func`.\n */\n function apply(func, thisArg, args) {\n switch (args.length) {\n case 0: return func.call(thisArg);\n case 1: return func.call(thisArg, args[0]);\n case 2: return func.call(thisArg, args[0], args[1]);\n case 3: return func.call(thisArg, args[0], args[1], args[2]);\n }\n return func.apply(thisArg, args);\n }\n\n /**\n * A specialized version of `baseAggregator` for arrays.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function arrayAggregator(array, setter, iteratee, accumulator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n var value = array[index];\n setter(accumulator, value, iteratee(value), array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.forEach` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEach(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (iteratee(array[index], index, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.forEachRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns `array`.\n */\n function arrayEachRight(array, iteratee) {\n var length = array == null ? 0 : array.length;\n\n while (length--) {\n if (iteratee(array[length], length, array) === false) {\n break;\n }\n }\n return array;\n }\n\n /**\n * A specialized version of `_.every` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n */\n function arrayEvery(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (!predicate(array[index], index, array)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * A specialized version of `_.filter` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function arrayFilter(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.includes` for arrays without support for\n * specifying an index to search from.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludes(array, value) {\n var length = array == null ? 0 : array.length;\n return !!length && baseIndexOf(array, value, 0) > -1;\n }\n\n /**\n * This function is like `arrayIncludes` except that it accepts a comparator.\n *\n * @private\n * @param {Array} [array] The array to inspect.\n * @param {*} target The value to search for.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {boolean} Returns `true` if `target` is found, else `false`.\n */\n function arrayIncludesWith(array, value, comparator) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (comparator(value, array[index])) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `_.map` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function arrayMap(array, iteratee) {\n var index = -1,\n length = array == null ? 0 : array.length,\n result = Array(length);\n\n while (++index < length) {\n result[index] = iteratee(array[index], index, array);\n }\n return result;\n }\n\n /**\n * Appends the elements of `values` to `array`.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to append.\n * @returns {Array} Returns `array`.\n */\n function arrayPush(array, values) {\n var index = -1,\n length = values.length,\n offset = array.length;\n\n while (++index < length) {\n array[offset + index] = values[index];\n }\n return array;\n }\n\n /**\n * A specialized version of `_.reduce` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the first element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduce(array, iteratee, accumulator, initAccum) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n if (initAccum && length) {\n accumulator = array[++index];\n }\n while (++index < length) {\n accumulator = iteratee(accumulator, array[index], index, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.reduceRight` for arrays without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @param {boolean} [initAccum] Specify using the last element of `array` as\n * the initial value.\n * @returns {*} Returns the accumulated value.\n */\n function arrayReduceRight(array, iteratee, accumulator, initAccum) {\n var length = array == null ? 0 : array.length;\n if (initAccum && length) {\n accumulator = array[--length];\n }\n while (length--) {\n accumulator = iteratee(accumulator, array[length], length, array);\n }\n return accumulator;\n }\n\n /**\n * A specialized version of `_.some` for arrays without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} [array] The array to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function arraySome(array, predicate) {\n var index = -1,\n length = array == null ? 0 : array.length;\n\n while (++index < length) {\n if (predicate(array[index], index, array)) {\n return true;\n }\n }\n return false;\n }\n\n /**\n * Gets the size of an ASCII `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n var asciiSize = baseProperty('length');\n\n /**\n * Converts an ASCII `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function asciiToArray(string) {\n return string.split('');\n }\n\n /**\n * Splits an ASCII `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function asciiWords(string) {\n return string.match(reAsciiWord) || [];\n }\n\n /**\n * The base implementation of methods like `_.findKey` and `_.findLastKey`,\n * without support for iteratee shorthands, which iterates over `collection`\n * using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the found element or its key, else `undefined`.\n */\n function baseFindKey(collection, predicate, eachFunc) {\n var result;\n eachFunc(collection, function(value, key, collection) {\n if (predicate(value, key, collection)) {\n result = key;\n return false;\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.findIndex` and `_.findLastIndex` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} predicate The function invoked per iteration.\n * @param {number} fromIndex The index to search from.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseFindIndex(array, predicate, fromIndex, fromRight) {\n var length = array.length,\n index = fromIndex + (fromRight ? 1 : -1);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (predicate(array[index], index, array)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.indexOf` without `fromIndex` bounds checks.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOf(array, value, fromIndex) {\n return value === value\n ? strictIndexOf(array, value, fromIndex)\n : baseFindIndex(array, baseIsNaN, fromIndex);\n }\n\n /**\n * This function is like `baseIndexOf` except that it accepts a comparator.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @param {Function} comparator The comparator invoked per element.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function baseIndexOfWith(array, value, fromIndex, comparator) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (comparator(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * The base implementation of `_.isNaN` without support for number objects.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n */\n function baseIsNaN(value) {\n return value !== value;\n }\n\n /**\n * The base implementation of `_.mean` and `_.meanBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the mean.\n */\n function baseMean(array, iteratee) {\n var length = array == null ? 0 : array.length;\n return length ? (baseSum(array, iteratee) / length) : NAN;\n }\n\n /**\n * The base implementation of `_.property` without support for deep paths.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function baseProperty(key) {\n return function(object) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.propertyOf` without support for deep paths.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyOf(object) {\n return function(key) {\n return object == null ? undefined : object[key];\n };\n }\n\n /**\n * The base implementation of `_.reduce` and `_.reduceRight`, without support\n * for iteratee shorthands, which iterates over `collection` using `eachFunc`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {*} accumulator The initial value.\n * @param {boolean} initAccum Specify using the first or last element of\n * `collection` as the initial value.\n * @param {Function} eachFunc The function to iterate over `collection`.\n * @returns {*} Returns the accumulated value.\n */\n function baseReduce(collection, iteratee, accumulator, initAccum, eachFunc) {\n eachFunc(collection, function(value, index, collection) {\n accumulator = initAccum\n ? (initAccum = false, value)\n : iteratee(accumulator, value, index, collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.sortBy` which uses `comparer` to define the\n * sort order of `array` and replaces criteria objects with their corresponding\n * values.\n *\n * @private\n * @param {Array} array The array to sort.\n * @param {Function} comparer The function to define sort order.\n * @returns {Array} Returns `array`.\n */\n function baseSortBy(array, comparer) {\n var length = array.length;\n\n array.sort(comparer);\n while (length--) {\n array[length] = array[length].value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.sum` and `_.sumBy` without support for\n * iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {number} Returns the sum.\n */\n function baseSum(array, iteratee) {\n var result,\n index = -1,\n length = array.length;\n\n while (++index < length) {\n var current = iteratee(array[index]);\n if (current !== undefined) {\n result = result === undefined ? current : (result + current);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\n function baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toPairs` and `_.toPairsIn` which creates an array\n * of key-value pairs for `object` corresponding to the property names of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the key-value pairs.\n */\n function baseToPairs(object, props) {\n return arrayMap(props, function(key) {\n return [key, object[key]];\n });\n }\n\n /**\n * The base implementation of `_.trim`.\n *\n * @private\n * @param {string} string The string to trim.\n * @returns {string} Returns the trimmed string.\n */\n function baseTrim(string) {\n return string\n ? string.slice(0, trimmedEndIndex(string) + 1).replace(reTrimStart, '')\n : string;\n }\n\n /**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\n function baseUnary(func) {\n return function(value) {\n return func(value);\n };\n }\n\n /**\n * The base implementation of `_.values` and `_.valuesIn` which creates an\n * array of `object` property values corresponding to the property names\n * of `props`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} props The property names to get values for.\n * @returns {Object} Returns the array of property values.\n */\n function baseValues(object, props) {\n return arrayMap(props, function(key) {\n return object[key];\n });\n }\n\n /**\n * Checks if a `cache` value for `key` exists.\n *\n * @private\n * @param {Object} cache The cache to query.\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function cacheHas(cache, key) {\n return cache.has(key);\n }\n\n /**\n * Used by `_.trim` and `_.trimStart` to get the index of the first string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the first unmatched string symbol.\n */\n function charsStartIndex(strSymbols, chrSymbols) {\n var index = -1,\n length = strSymbols.length;\n\n while (++index < length && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last string symbol\n * that is not found in the character symbols.\n *\n * @private\n * @param {Array} strSymbols The string symbols to inspect.\n * @param {Array} chrSymbols The character symbols to find.\n * @returns {number} Returns the index of the last unmatched string symbol.\n */\n function charsEndIndex(strSymbols, chrSymbols) {\n var index = strSymbols.length;\n\n while (index-- && baseIndexOf(chrSymbols, strSymbols[index], 0) > -1) {}\n return index;\n }\n\n /**\n * Gets the number of `placeholder` occurrences in `array`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} placeholder The placeholder to search for.\n * @returns {number} Returns the placeholder count.\n */\n function countHolders(array, placeholder) {\n var length = array.length,\n result = 0;\n\n while (length--) {\n if (array[length] === placeholder) {\n ++result;\n }\n }\n return result;\n }\n\n /**\n * Used by `_.deburr` to convert Latin-1 Supplement and Latin Extended-A\n * letters to basic Latin letters.\n *\n * @private\n * @param {string} letter The matched letter to deburr.\n * @returns {string} Returns the deburred letter.\n */\n var deburrLetter = basePropertyOf(deburredLetters);\n\n /**\n * Used by `_.escape` to convert characters to HTML entities.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n var escapeHtmlChar = basePropertyOf(htmlEscapes);\n\n /**\n * Used by `_.template` to escape characters for inclusion in compiled string literals.\n *\n * @private\n * @param {string} chr The matched character to escape.\n * @returns {string} Returns the escaped character.\n */\n function escapeStringChar(chr) {\n return '\\\\' + stringEscapes[chr];\n }\n\n /**\n * Gets the value at `key` of `object`.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function getValue(object, key) {\n return object == null ? undefined : object[key];\n }\n\n /**\n * Checks if `string` contains Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a symbol is found, else `false`.\n */\n function hasUnicode(string) {\n return reHasUnicode.test(string);\n }\n\n /**\n * Checks if `string` contains a word composed of Unicode symbols.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {boolean} Returns `true` if a word is found, else `false`.\n */\n function hasUnicodeWord(string) {\n return reHasUnicodeWord.test(string);\n }\n\n /**\n * Converts `iterator` to an array.\n *\n * @private\n * @param {Object} iterator The iterator to convert.\n * @returns {Array} Returns the converted array.\n */\n function iteratorToArray(iterator) {\n var data,\n result = [];\n\n while (!(data = iterator.next()).done) {\n result.push(data.value);\n }\n return result;\n }\n\n /**\n * Converts `map` to its key-value pairs.\n *\n * @private\n * @param {Object} map The map to convert.\n * @returns {Array} Returns the key-value pairs.\n */\n function mapToArray(map) {\n var index = -1,\n result = Array(map.size);\n\n map.forEach(function(value, key) {\n result[++index] = [key, value];\n });\n return result;\n }\n\n /**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\n function overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n }\n\n /**\n * Replaces all `placeholder` elements in `array` with an internal placeholder\n * and returns an array of their indexes.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {*} placeholder The placeholder to replace.\n * @returns {Array} Returns the new array of placeholder indexes.\n */\n function replaceHolders(array, placeholder) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value === placeholder || value === PLACEHOLDER) {\n array[index] = PLACEHOLDER;\n result[resIndex++] = index;\n }\n }\n return result;\n }\n\n /**\n * Converts `set` to an array of its values.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the values.\n */\n function setToArray(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = value;\n });\n return result;\n }\n\n /**\n * Converts `set` to its value-value pairs.\n *\n * @private\n * @param {Object} set The set to convert.\n * @returns {Array} Returns the value-value pairs.\n */\n function setToPairs(set) {\n var index = -1,\n result = Array(set.size);\n\n set.forEach(function(value) {\n result[++index] = [value, value];\n });\n return result;\n }\n\n /**\n * A specialized version of `_.indexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictIndexOf(array, value, fromIndex) {\n var index = fromIndex - 1,\n length = array.length;\n\n while (++index < length) {\n if (array[index] === value) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * A specialized version of `_.lastIndexOf` which performs strict equality\n * comparisons of values, i.e. `===`.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} fromIndex The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function strictLastIndexOf(array, value, fromIndex) {\n var index = fromIndex + 1;\n while (index--) {\n if (array[index] === value) {\n return index;\n }\n }\n return index;\n }\n\n /**\n * Gets the number of symbols in `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the string size.\n */\n function stringSize(string) {\n return hasUnicode(string)\n ? unicodeSize(string)\n : asciiSize(string);\n }\n\n /**\n * Converts `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function stringToArray(string) {\n return hasUnicode(string)\n ? unicodeToArray(string)\n : asciiToArray(string);\n }\n\n /**\n * Used by `_.trim` and `_.trimEnd` to get the index of the last non-whitespace\n * character of `string`.\n *\n * @private\n * @param {string} string The string to inspect.\n * @returns {number} Returns the index of the last non-whitespace character.\n */\n function trimmedEndIndex(string) {\n var index = string.length;\n\n while (index-- && reWhitespace.test(string.charAt(index))) {}\n return index;\n }\n\n /**\n * Used by `_.unescape` to convert HTML entities to characters.\n *\n * @private\n * @param {string} chr The matched character to unescape.\n * @returns {string} Returns the unescaped character.\n */\n var unescapeHtmlChar = basePropertyOf(htmlUnescapes);\n\n /**\n * Gets the size of a Unicode `string`.\n *\n * @private\n * @param {string} string The string inspect.\n * @returns {number} Returns the string size.\n */\n function unicodeSize(string) {\n var result = reUnicode.lastIndex = 0;\n while (reUnicode.test(string)) {\n ++result;\n }\n return result;\n }\n\n /**\n * Converts a Unicode `string` to an array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the converted array.\n */\n function unicodeToArray(string) {\n return string.match(reUnicode) || [];\n }\n\n /**\n * Splits a Unicode `string` into an array of its words.\n *\n * @private\n * @param {string} The string to inspect.\n * @returns {Array} Returns the words of `string`.\n */\n function unicodeWords(string) {\n return string.match(reUnicodeWord) || [];\n }\n\n /*--------------------------------------------------------------------------*/\n\n /**\n * Create a new pristine `lodash` function using the `context` object.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Util\n * @param {Object} [context=root] The context object.\n * @returns {Function} Returns a new `lodash` function.\n * @example\n *\n * _.mixin({ 'foo': _.constant('foo') });\n *\n * var lodash = _.runInContext();\n * lodash.mixin({ 'bar': lodash.constant('bar') });\n *\n * _.isFunction(_.foo);\n * // => true\n * _.isFunction(_.bar);\n * // => false\n *\n * lodash.isFunction(lodash.foo);\n * // => false\n * lodash.isFunction(lodash.bar);\n * // => true\n *\n * // Create a suped-up `defer` in Node.js.\n * var defer = _.runInContext({ 'setTimeout': setImmediate }).defer;\n */\n var runInContext = (function runInContext(context) {\n context = context == null ? root : _.defaults(root.Object(), context, _.pick(root, contextProps));\n\n /** Built-in constructor references. */\n var Array = context.Array,\n Date = context.Date,\n Error = context.Error,\n Function = context.Function,\n Math = context.Math,\n Object = context.Object,\n RegExp = context.RegExp,\n String = context.String,\n TypeError = context.TypeError;\n\n /** Used for built-in method references. */\n var arrayProto = Array.prototype,\n funcProto = Function.prototype,\n objectProto = Object.prototype;\n\n /** Used to detect overreaching core-js shims. */\n var coreJsData = context['__core-js_shared__'];\n\n /** Used to resolve the decompiled source of functions. */\n var funcToString = funcProto.toString;\n\n /** Used to check objects for own properties. */\n var hasOwnProperty = objectProto.hasOwnProperty;\n\n /** Used to generate unique IDs. */\n var idCounter = 0;\n\n /** Used to detect methods masquerading as native. */\n var maskSrcKey = (function() {\n var uid = /[^.]+$/.exec(coreJsData && coreJsData.keys && coreJsData.keys.IE_PROTO || '');\n return uid ? ('Symbol(src)_1.' + uid) : '';\n }());\n\n /**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\n var nativeObjectToString = objectProto.toString;\n\n /** Used to infer the `Object` constructor. */\n var objectCtorString = funcToString.call(Object);\n\n /** Used to restore the original `_` reference in `_.noConflict`. */\n var oldDash = root._;\n\n /** Used to detect if a method is native. */\n var reIsNative = RegExp('^' +\n funcToString.call(hasOwnProperty).replace(reRegExpChar, '\\\\$&')\n .replace(/hasOwnProperty|(function).*?(?=\\\\\\()| for .+?(?=\\\\\\])/g, '$1.*?') + '$'\n );\n\n /** Built-in value references. */\n var Buffer = moduleExports ? context.Buffer : undefined,\n Symbol = context.Symbol,\n Uint8Array = context.Uint8Array,\n allocUnsafe = Buffer ? Buffer.allocUnsafe : undefined,\n getPrototype = overArg(Object.getPrototypeOf, Object),\n objectCreate = Object.create,\n propertyIsEnumerable = objectProto.propertyIsEnumerable,\n splice = arrayProto.splice,\n spreadableSymbol = Symbol ? Symbol.isConcatSpreadable : undefined,\n symIterator = Symbol ? Symbol.iterator : undefined,\n symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n var defineProperty = (function() {\n try {\n var func = getNative(Object, 'defineProperty');\n func({}, '', {});\n return func;\n } catch (e) {}\n }());\n\n /** Mocked built-ins. */\n var ctxClearTimeout = context.clearTimeout !== root.clearTimeout && context.clearTimeout,\n ctxNow = Date && Date.now !== root.Date.now && Date.now,\n ctxSetTimeout = context.setTimeout !== root.setTimeout && context.setTimeout;\n\n /* Built-in method references for those with the same name as other `lodash` methods. */\n var nativeCeil = Math.ceil,\n nativeFloor = Math.floor,\n nativeGetSymbols = Object.getOwnPropertySymbols,\n nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined,\n nativeIsFinite = context.isFinite,\n nativeJoin = arrayProto.join,\n nativeKeys = overArg(Object.keys, Object),\n nativeMax = Math.max,\n nativeMin = Math.min,\n nativeNow = Date.now,\n nativeParseInt = context.parseInt,\n nativeRandom = Math.random,\n nativeReverse = arrayProto.reverse;\n\n /* Built-in method references that are verified to be native. */\n var DataView = getNative(context, 'DataView'),\n Map = getNative(context, 'Map'),\n Promise = getNative(context, 'Promise'),\n Set = getNative(context, 'Set'),\n WeakMap = getNative(context, 'WeakMap'),\n nativeCreate = getNative(Object, 'create');\n\n /** Used to store function metadata. */\n var metaMap = WeakMap && new WeakMap;\n\n /** Used to lookup unminified function names. */\n var realNames = {};\n\n /** Used to detect maps, sets, and weakmaps. */\n var dataViewCtorString = toSource(DataView),\n mapCtorString = toSource(Map),\n promiseCtorString = toSource(Promise),\n setCtorString = toSource(Set),\n weakMapCtorString = toSource(WeakMap);\n\n /** Used to convert symbols to primitives and strings. */\n var symbolProto = Symbol ? Symbol.prototype : undefined,\n symbolValueOf = symbolProto ? symbolProto.valueOf : undefined,\n symbolToString = symbolProto ? symbolProto.toString : undefined;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` object which wraps `value` to enable implicit method\n * chain sequences. Methods that operate on and return arrays, collections,\n * and functions can be chained together. Methods that retrieve a single value\n * or may return a primitive value will automatically end the chain sequence\n * and return the unwrapped value. Otherwise, the value must be unwrapped\n * with `_#value`.\n *\n * Explicit chain sequences, which must be unwrapped with `_#value`, may be\n * enabled using `_.chain`.\n *\n * The execution of chained methods is lazy, that is, it's deferred until\n * `_#value` is implicitly or explicitly called.\n *\n * Lazy evaluation allows several methods to support shortcut fusion.\n * Shortcut fusion is an optimization to merge iteratee calls; this avoids\n * the creation of intermediate arrays and can greatly reduce the number of\n * iteratee executions. Sections of a chain sequence qualify for shortcut\n * fusion if the section is applied to an array and iteratees accept only\n * one argument. The heuristic for whether a section qualifies for shortcut\n * fusion is subject to change.\n *\n * Chaining is supported in custom builds as long as the `_#value` method is\n * directly or indirectly included in the build.\n *\n * In addition to lodash methods, wrappers have `Array` and `String` methods.\n *\n * The wrapper `Array` methods are:\n * `concat`, `join`, `pop`, `push`, `shift`, `sort`, `splice`, and `unshift`\n *\n * The wrapper `String` methods are:\n * `replace` and `split`\n *\n * The wrapper methods that support shortcut fusion are:\n * `at`, `compact`, `drop`, `dropRight`, `dropWhile`, `filter`, `find`,\n * `findLast`, `head`, `initial`, `last`, `map`, `reject`, `reverse`, `slice`,\n * `tail`, `take`, `takeRight`, `takeRightWhile`, `takeWhile`, and `toArray`\n *\n * The chainable wrapper methods are:\n * `after`, `ary`, `assign`, `assignIn`, `assignInWith`, `assignWith`, `at`,\n * `before`, `bind`, `bindAll`, `bindKey`, `castArray`, `chain`, `chunk`,\n * `commit`, `compact`, `concat`, `conforms`, `constant`, `countBy`, `create`,\n * `curry`, `debounce`, `defaults`, `defaultsDeep`, `defer`, `delay`,\n * `difference`, `differenceBy`, `differenceWith`, `drop`, `dropRight`,\n * `dropRightWhile`, `dropWhile`, `extend`, `extendWith`, `fill`, `filter`,\n * `flatMap`, `flatMapDeep`, `flatMapDepth`, `flatten`, `flattenDeep`,\n * `flattenDepth`, `flip`, `flow`, `flowRight`, `fromPairs`, `functions`,\n * `functionsIn`, `groupBy`, `initial`, `intersection`, `intersectionBy`,\n * `intersectionWith`, `invert`, `invertBy`, `invokeMap`, `iteratee`, `keyBy`,\n * `keys`, `keysIn`, `map`, `mapKeys`, `mapValues`, `matches`, `matchesProperty`,\n * `memoize`, `merge`, `mergeWith`, `method`, `methodOf`, `mixin`, `negate`,\n * `nthArg`, `omit`, `omitBy`, `once`, `orderBy`, `over`, `overArgs`,\n * `overEvery`, `overSome`, `partial`, `partialRight`, `partition`, `pick`,\n * `pickBy`, `plant`, `property`, `propertyOf`, `pull`, `pullAll`, `pullAllBy`,\n * `pullAllWith`, `pullAt`, `push`, `range`, `rangeRight`, `rearg`, `reject`,\n * `remove`, `rest`, `reverse`, `sampleSize`, `set`, `setWith`, `shuffle`,\n * `slice`, `sort`, `sortBy`, `splice`, `spread`, `tail`, `take`, `takeRight`,\n * `takeRightWhile`, `takeWhile`, `tap`, `throttle`, `thru`, `toArray`,\n * `toPairs`, `toPairsIn`, `toPath`, `toPlainObject`, `transform`, `unary`,\n * `union`, `unionBy`, `unionWith`, `uniq`, `uniqBy`, `uniqWith`, `unset`,\n * `unshift`, `unzip`, `unzipWith`, `update`, `updateWith`, `values`,\n * `valuesIn`, `without`, `wrap`, `xor`, `xorBy`, `xorWith`, `zip`,\n * `zipObject`, `zipObjectDeep`, and `zipWith`\n *\n * The wrapper methods that are **not** chainable by default are:\n * `add`, `attempt`, `camelCase`, `capitalize`, `ceil`, `clamp`, `clone`,\n * `cloneDeep`, `cloneDeepWith`, `cloneWith`, `conformsTo`, `deburr`,\n * `defaultTo`, `divide`, `each`, `eachRight`, `endsWith`, `eq`, `escape`,\n * `escapeRegExp`, `every`, `find`, `findIndex`, `findKey`, `findLast`,\n * `findLastIndex`, `findLastKey`, `first`, `floor`, `forEach`, `forEachRight`,\n * `forIn`, `forInRight`, `forOwn`, `forOwnRight`, `get`, `gt`, `gte`, `has`,\n * `hasIn`, `head`, `identity`, `includes`, `indexOf`, `inRange`, `invoke`,\n * `isArguments`, `isArray`, `isArrayBuffer`, `isArrayLike`, `isArrayLikeObject`,\n * `isBoolean`, `isBuffer`, `isDate`, `isElement`, `isEmpty`, `isEqual`,\n * `isEqualWith`, `isError`, `isFinite`, `isFunction`, `isInteger`, `isLength`,\n * `isMap`, `isMatch`, `isMatchWith`, `isNaN`, `isNative`, `isNil`, `isNull`,\n * `isNumber`, `isObject`, `isObjectLike`, `isPlainObject`, `isRegExp`,\n * `isSafeInteger`, `isSet`, `isString`, `isUndefined`, `isTypedArray`,\n * `isWeakMap`, `isWeakSet`, `join`, `kebabCase`, `last`, `lastIndexOf`,\n * `lowerCase`, `lowerFirst`, `lt`, `lte`, `max`, `maxBy`, `mean`, `meanBy`,\n * `min`, `minBy`, `multiply`, `noConflict`, `noop`, `now`, `nth`, `pad`,\n * `padEnd`, `padStart`, `parseInt`, `pop`, `random`, `reduce`, `reduceRight`,\n * `repeat`, `result`, `round`, `runInContext`, `sample`, `shift`, `size`,\n * `snakeCase`, `some`, `sortedIndex`, `sortedIndexBy`, `sortedLastIndex`,\n * `sortedLastIndexBy`, `startCase`, `startsWith`, `stubArray`, `stubFalse`,\n * `stubObject`, `stubString`, `stubTrue`, `subtract`, `sum`, `sumBy`,\n * `template`, `times`, `toFinite`, `toInteger`, `toJSON`, `toLength`,\n * `toLower`, `toNumber`, `toSafeInteger`, `toString`, `toUpper`, `trim`,\n * `trimEnd`, `trimStart`, `truncate`, `unescape`, `uniqueId`, `upperCase`,\n * `upperFirst`, `value`, and `words`\n *\n * @name _\n * @constructor\n * @category Seq\n * @param {*} value The value to wrap in a `lodash` instance.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2, 3]);\n *\n * // Returns an unwrapped value.\n * wrapped.reduce(_.add);\n * // => 6\n *\n * // Returns a wrapped value.\n * var squares = wrapped.map(square);\n *\n * _.isArray(squares);\n * // => false\n *\n * _.isArray(squares.value());\n * // => true\n */\n function lodash(value) {\n if (isObjectLike(value) && !isArray(value) && !(value instanceof LazyWrapper)) {\n if (value instanceof LodashWrapper) {\n return value;\n }\n if (hasOwnProperty.call(value, '__wrapped__')) {\n return wrapperClone(value);\n }\n }\n return new LodashWrapper(value);\n }\n\n /**\n * The base implementation of `_.create` without support for assigning\n * properties to the created object.\n *\n * @private\n * @param {Object} proto The object to inherit from.\n * @returns {Object} Returns the new object.\n */\n var baseCreate = (function() {\n function object() {}\n return function(proto) {\n if (!isObject(proto)) {\n return {};\n }\n if (objectCreate) {\n return objectCreate(proto);\n }\n object.prototype = proto;\n var result = new object;\n object.prototype = undefined;\n return result;\n };\n }());\n\n /**\n * The function whose prototype chain sequence wrappers inherit from.\n *\n * @private\n */\n function baseLodash() {\n // No operation performed.\n }\n\n /**\n * The base constructor for creating `lodash` wrapper objects.\n *\n * @private\n * @param {*} value The value to wrap.\n * @param {boolean} [chainAll] Enable explicit method chain sequences.\n */\n function LodashWrapper(value, chainAll) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__chain__ = !!chainAll;\n this.__index__ = 0;\n this.__values__ = undefined;\n }\n\n /**\n * By default, the template delimiters used by lodash are like those in\n * embedded Ruby (ERB) as well as ES2015 template strings. Change the\n * following template settings to use alternative delimiters.\n *\n * @static\n * @memberOf _\n * @type {Object}\n */\n lodash.templateSettings = {\n\n /**\n * Used to detect `data` property values to be HTML-escaped.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'escape': reEscape,\n\n /**\n * Used to detect code to be evaluated.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'evaluate': reEvaluate,\n\n /**\n * Used to detect `data` property values to inject.\n *\n * @memberOf _.templateSettings\n * @type {RegExp}\n */\n 'interpolate': reInterpolate,\n\n /**\n * Used to reference the data object in the template text.\n *\n * @memberOf _.templateSettings\n * @type {string}\n */\n 'variable': '',\n\n /**\n * Used to import variables into the compiled template.\n *\n * @memberOf _.templateSettings\n * @type {Object}\n */\n 'imports': {\n\n /**\n * A reference to the `lodash` function.\n *\n * @memberOf _.templateSettings.imports\n * @type {Function}\n */\n '_': lodash\n }\n };\n\n // Ensure wrappers are instances of `baseLodash`.\n lodash.prototype = baseLodash.prototype;\n lodash.prototype.constructor = lodash;\n\n LodashWrapper.prototype = baseCreate(baseLodash.prototype);\n LodashWrapper.prototype.constructor = LodashWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a lazy wrapper object which wraps `value` to enable lazy evaluation.\n *\n * @private\n * @constructor\n * @param {*} value The value to wrap.\n */\n function LazyWrapper(value) {\n this.__wrapped__ = value;\n this.__actions__ = [];\n this.__dir__ = 1;\n this.__filtered__ = false;\n this.__iteratees__ = [];\n this.__takeCount__ = MAX_ARRAY_LENGTH;\n this.__views__ = [];\n }\n\n /**\n * Creates a clone of the lazy wrapper object.\n *\n * @private\n * @name clone\n * @memberOf LazyWrapper\n * @returns {Object} Returns the cloned `LazyWrapper` object.\n */\n function lazyClone() {\n var result = new LazyWrapper(this.__wrapped__);\n result.__actions__ = copyArray(this.__actions__);\n result.__dir__ = this.__dir__;\n result.__filtered__ = this.__filtered__;\n result.__iteratees__ = copyArray(this.__iteratees__);\n result.__takeCount__ = this.__takeCount__;\n result.__views__ = copyArray(this.__views__);\n return result;\n }\n\n /**\n * Reverses the direction of lazy iteration.\n *\n * @private\n * @name reverse\n * @memberOf LazyWrapper\n * @returns {Object} Returns the new reversed `LazyWrapper` object.\n */\n function lazyReverse() {\n if (this.__filtered__) {\n var result = new LazyWrapper(this);\n result.__dir__ = -1;\n result.__filtered__ = true;\n } else {\n result = this.clone();\n result.__dir__ *= -1;\n }\n return result;\n }\n\n /**\n * Extracts the unwrapped value from its lazy wrapper.\n *\n * @private\n * @name value\n * @memberOf LazyWrapper\n * @returns {*} Returns the unwrapped value.\n */\n function lazyValue() {\n var array = this.__wrapped__.value(),\n dir = this.__dir__,\n isArr = isArray(array),\n isRight = dir < 0,\n arrLength = isArr ? array.length : 0,\n view = getView(0, arrLength, this.__views__),\n start = view.start,\n end = view.end,\n length = end - start,\n index = isRight ? end : (start - 1),\n iteratees = this.__iteratees__,\n iterLength = iteratees.length,\n resIndex = 0,\n takeCount = nativeMin(length, this.__takeCount__);\n\n if (!isArr || (!isRight && arrLength == length && takeCount == length)) {\n return baseWrapperValue(array, this.__actions__);\n }\n var result = [];\n\n outer:\n while (length-- && resIndex < takeCount) {\n index += dir;\n\n var iterIndex = -1,\n value = array[index];\n\n while (++iterIndex < iterLength) {\n var data = iteratees[iterIndex],\n iteratee = data.iteratee,\n type = data.type,\n computed = iteratee(value);\n\n if (type == LAZY_MAP_FLAG) {\n value = computed;\n } else if (!computed) {\n if (type == LAZY_FILTER_FLAG) {\n continue outer;\n } else {\n break outer;\n }\n }\n }\n result[resIndex++] = value;\n }\n return result;\n }\n\n // Ensure `LazyWrapper` is an instance of `baseLodash`.\n LazyWrapper.prototype = baseCreate(baseLodash.prototype);\n LazyWrapper.prototype.constructor = LazyWrapper;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a hash object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Hash(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the hash.\n *\n * @private\n * @name clear\n * @memberOf Hash\n */\n function hashClear() {\n this.__data__ = nativeCreate ? nativeCreate(null) : {};\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the hash.\n *\n * @private\n * @name delete\n * @memberOf Hash\n * @param {Object} hash The hash to modify.\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function hashDelete(key) {\n var result = this.has(key) && delete this.__data__[key];\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the hash value for `key`.\n *\n * @private\n * @name get\n * @memberOf Hash\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function hashGet(key) {\n var data = this.__data__;\n if (nativeCreate) {\n var result = data[key];\n return result === HASH_UNDEFINED ? undefined : result;\n }\n return hasOwnProperty.call(data, key) ? data[key] : undefined;\n }\n\n /**\n * Checks if a hash value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Hash\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function hashHas(key) {\n var data = this.__data__;\n return nativeCreate ? (data[key] !== undefined) : hasOwnProperty.call(data, key);\n }\n\n /**\n * Sets the hash `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Hash\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the hash instance.\n */\n function hashSet(key, value) {\n var data = this.__data__;\n this.size += this.has(key) ? 0 : 1;\n data[key] = (nativeCreate && value === undefined) ? HASH_UNDEFINED : value;\n return this;\n }\n\n // Add methods to `Hash`.\n Hash.prototype.clear = hashClear;\n Hash.prototype['delete'] = hashDelete;\n Hash.prototype.get = hashGet;\n Hash.prototype.has = hashHas;\n Hash.prototype.set = hashSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an list cache object.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function ListCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the list cache.\n *\n * @private\n * @name clear\n * @memberOf ListCache\n */\n function listCacheClear() {\n this.__data__ = [];\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the list cache.\n *\n * @private\n * @name delete\n * @memberOf ListCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function listCacheDelete(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n return false;\n }\n var lastIndex = data.length - 1;\n if (index == lastIndex) {\n data.pop();\n } else {\n splice.call(data, index, 1);\n }\n --this.size;\n return true;\n }\n\n /**\n * Gets the list cache value for `key`.\n *\n * @private\n * @name get\n * @memberOf ListCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function listCacheGet(key) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n return index < 0 ? undefined : data[index][1];\n }\n\n /**\n * Checks if a list cache value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf ListCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function listCacheHas(key) {\n return assocIndexOf(this.__data__, key) > -1;\n }\n\n /**\n * Sets the list cache `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf ListCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the list cache instance.\n */\n function listCacheSet(key, value) {\n var data = this.__data__,\n index = assocIndexOf(data, key);\n\n if (index < 0) {\n ++this.size;\n data.push([key, value]);\n } else {\n data[index][1] = value;\n }\n return this;\n }\n\n // Add methods to `ListCache`.\n ListCache.prototype.clear = listCacheClear;\n ListCache.prototype['delete'] = listCacheDelete;\n ListCache.prototype.get = listCacheGet;\n ListCache.prototype.has = listCacheHas;\n ListCache.prototype.set = listCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a map cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function MapCache(entries) {\n var index = -1,\n length = entries == null ? 0 : entries.length;\n\n this.clear();\n while (++index < length) {\n var entry = entries[index];\n this.set(entry[0], entry[1]);\n }\n }\n\n /**\n * Removes all key-value entries from the map.\n *\n * @private\n * @name clear\n * @memberOf MapCache\n */\n function mapCacheClear() {\n this.size = 0;\n this.__data__ = {\n 'hash': new Hash,\n 'map': new (Map || ListCache),\n 'string': new Hash\n };\n }\n\n /**\n * Removes `key` and its value from the map.\n *\n * @private\n * @name delete\n * @memberOf MapCache\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function mapCacheDelete(key) {\n var result = getMapData(this, key)['delete'](key);\n this.size -= result ? 1 : 0;\n return result;\n }\n\n /**\n * Gets the map value for `key`.\n *\n * @private\n * @name get\n * @memberOf MapCache\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function mapCacheGet(key) {\n return getMapData(this, key).get(key);\n }\n\n /**\n * Checks if a map value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf MapCache\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function mapCacheHas(key) {\n return getMapData(this, key).has(key);\n }\n\n /**\n * Sets the map `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf MapCache\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the map cache instance.\n */\n function mapCacheSet(key, value) {\n var data = getMapData(this, key),\n size = data.size;\n\n data.set(key, value);\n this.size += data.size == size ? 0 : 1;\n return this;\n }\n\n // Add methods to `MapCache`.\n MapCache.prototype.clear = mapCacheClear;\n MapCache.prototype['delete'] = mapCacheDelete;\n MapCache.prototype.get = mapCacheGet;\n MapCache.prototype.has = mapCacheHas;\n MapCache.prototype.set = mapCacheSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n *\n * Creates an array cache object to store unique values.\n *\n * @private\n * @constructor\n * @param {Array} [values] The values to cache.\n */\n function SetCache(values) {\n var index = -1,\n length = values == null ? 0 : values.length;\n\n this.__data__ = new MapCache;\n while (++index < length) {\n this.add(values[index]);\n }\n }\n\n /**\n * Adds `value` to the array cache.\n *\n * @private\n * @name add\n * @memberOf SetCache\n * @alias push\n * @param {*} value The value to cache.\n * @returns {Object} Returns the cache instance.\n */\n function setCacheAdd(value) {\n this.__data__.set(value, HASH_UNDEFINED);\n return this;\n }\n\n /**\n * Checks if `value` is in the array cache.\n *\n * @private\n * @name has\n * @memberOf SetCache\n * @param {*} value The value to search for.\n * @returns {number} Returns `true` if `value` is found, else `false`.\n */\n function setCacheHas(value) {\n return this.__data__.has(value);\n }\n\n // Add methods to `SetCache`.\n SetCache.prototype.add = SetCache.prototype.push = setCacheAdd;\n SetCache.prototype.has = setCacheHas;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a stack cache object to store key-value pairs.\n *\n * @private\n * @constructor\n * @param {Array} [entries] The key-value pairs to cache.\n */\n function Stack(entries) {\n var data = this.__data__ = new ListCache(entries);\n this.size = data.size;\n }\n\n /**\n * Removes all key-value entries from the stack.\n *\n * @private\n * @name clear\n * @memberOf Stack\n */\n function stackClear() {\n this.__data__ = new ListCache;\n this.size = 0;\n }\n\n /**\n * Removes `key` and its value from the stack.\n *\n * @private\n * @name delete\n * @memberOf Stack\n * @param {string} key The key of the value to remove.\n * @returns {boolean} Returns `true` if the entry was removed, else `false`.\n */\n function stackDelete(key) {\n var data = this.__data__,\n result = data['delete'](key);\n\n this.size = data.size;\n return result;\n }\n\n /**\n * Gets the stack value for `key`.\n *\n * @private\n * @name get\n * @memberOf Stack\n * @param {string} key The key of the value to get.\n * @returns {*} Returns the entry value.\n */\n function stackGet(key) {\n return this.__data__.get(key);\n }\n\n /**\n * Checks if a stack value for `key` exists.\n *\n * @private\n * @name has\n * @memberOf Stack\n * @param {string} key The key of the entry to check.\n * @returns {boolean} Returns `true` if an entry for `key` exists, else `false`.\n */\n function stackHas(key) {\n return this.__data__.has(key);\n }\n\n /**\n * Sets the stack `key` to `value`.\n *\n * @private\n * @name set\n * @memberOf Stack\n * @param {string} key The key of the value to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns the stack cache instance.\n */\n function stackSet(key, value) {\n var data = this.__data__;\n if (data instanceof ListCache) {\n var pairs = data.__data__;\n if (!Map || (pairs.length < LARGE_ARRAY_SIZE - 1)) {\n pairs.push([key, value]);\n this.size = ++data.size;\n return this;\n }\n data = this.__data__ = new MapCache(pairs);\n }\n data.set(key, value);\n this.size = data.size;\n return this;\n }\n\n // Add methods to `Stack`.\n Stack.prototype.clear = stackClear;\n Stack.prototype['delete'] = stackDelete;\n Stack.prototype.get = stackGet;\n Stack.prototype.has = stackHas;\n Stack.prototype.set = stackSet;\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\n function arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `_.sample` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @returns {*} Returns the random element.\n */\n function arraySample(array) {\n var length = array.length;\n return length ? array[baseRandom(0, length - 1)] : undefined;\n }\n\n /**\n * A specialized version of `_.sampleSize` for arrays.\n *\n * @private\n * @param {Array} array The array to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function arraySampleSize(array, n) {\n return shuffleSelf(copyArray(array), baseClamp(n, 0, array.length));\n }\n\n /**\n * A specialized version of `_.shuffle` for arrays.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function arrayShuffle(array) {\n return shuffleSelf(copyArray(array));\n }\n\n /**\n * This function is like `assignValue` except that it doesn't assign\n * `undefined` values.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignMergeValue(object, key, value) {\n if ((value !== undefined && !eq(object[key], value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Assigns `value` to `key` of `object` if the existing value is not equivalent\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function assignValue(object, key, value) {\n var objValue = object[key];\n if (!(hasOwnProperty.call(object, key) && eq(objValue, value)) ||\n (value === undefined && !(key in object))) {\n baseAssignValue(object, key, value);\n }\n }\n\n /**\n * Gets the index at which the `key` is found in `array` of key-value pairs.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {*} key The key to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n */\n function assocIndexOf(array, key) {\n var length = array.length;\n while (length--) {\n if (eq(array[length][0], key)) {\n return length;\n }\n }\n return -1;\n }\n\n /**\n * Aggregates elements of `collection` on `accumulator` with keys transformed\n * by `iteratee` and values set by `setter`.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform keys.\n * @param {Object} accumulator The initial aggregated object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseAggregator(collection, setter, iteratee, accumulator) {\n baseEach(collection, function(value, key, collection) {\n setter(accumulator, value, iteratee(value), collection);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.assign` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssign(object, source) {\n return object && copyObject(source, keys(source), object);\n }\n\n /**\n * The base implementation of `_.assignIn` without support for multiple sources\n * or `customizer` functions.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @returns {Object} Returns `object`.\n */\n function baseAssignIn(object, source) {\n return object && copyObject(source, keysIn(source), object);\n }\n\n /**\n * The base implementation of `assignValue` and `assignMergeValue` without\n * value checks.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {string} key The key of the property to assign.\n * @param {*} value The value to assign.\n */\n function baseAssignValue(object, key, value) {\n if (key == '__proto__' && defineProperty) {\n defineProperty(object, key, {\n 'configurable': true,\n 'enumerable': true,\n 'value': value,\n 'writable': true\n });\n } else {\n object[key] = value;\n }\n }\n\n /**\n * The base implementation of `_.at` without support for individual paths.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {string[]} paths The property paths to pick.\n * @returns {Array} Returns the picked elements.\n */\n function baseAt(object, paths) {\n var index = -1,\n length = paths.length,\n result = Array(length),\n skip = object == null;\n\n while (++index < length) {\n result[index] = skip ? undefined : get(object, paths[index]);\n }\n return result;\n }\n\n /**\n * The base implementation of `_.clamp` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n */\n function baseClamp(number, lower, upper) {\n if (number === number) {\n if (upper !== undefined) {\n number = number <= upper ? number : upper;\n }\n if (lower !== undefined) {\n number = number >= lower ? number : lower;\n }\n }\n return number;\n }\n\n /**\n * The base implementation of `_.clone` and `_.cloneDeep` which tracks\n * traversed objects.\n *\n * @private\n * @param {*} value The value to clone.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Deep clone\n * 2 - Flatten inherited properties\n * 4 - Clone symbols\n * @param {Function} [customizer] The function to customize cloning.\n * @param {string} [key] The key of `value`.\n * @param {Object} [object] The parent object of `value`.\n * @param {Object} [stack] Tracks traversed objects and their clone counterparts.\n * @returns {*} Returns the cloned value.\n */\n function baseClone(value, bitmask, customizer, key, object, stack) {\n var result,\n isDeep = bitmask & CLONE_DEEP_FLAG,\n isFlat = bitmask & CLONE_FLAT_FLAG,\n isFull = bitmask & CLONE_SYMBOLS_FLAG;\n\n if (customizer) {\n result = object ? customizer(value, key, object, stack) : customizer(value);\n }\n if (result !== undefined) {\n return result;\n }\n if (!isObject(value)) {\n return value;\n }\n var isArr = isArray(value);\n if (isArr) {\n result = initCloneArray(value);\n if (!isDeep) {\n return copyArray(value, result);\n }\n } else {\n var tag = getTag(value),\n isFunc = tag == funcTag || tag == genTag;\n\n if (isBuffer(value)) {\n return cloneBuffer(value, isDeep);\n }\n if (tag == objectTag || tag == argsTag || (isFunc && !object)) {\n result = (isFlat || isFunc) ? {} : initCloneObject(value);\n if (!isDeep) {\n return isFlat\n ? copySymbolsIn(value, baseAssignIn(result, value))\n : copySymbols(value, baseAssign(result, value));\n }\n } else {\n if (!cloneableTags[tag]) {\n return object ? value : {};\n }\n result = initCloneByTag(value, tag, isDeep);\n }\n }\n // Check for circular references and return its corresponding clone.\n stack || (stack = new Stack);\n var stacked = stack.get(value);\n if (stacked) {\n return stacked;\n }\n stack.set(value, result);\n\n if (isSet(value)) {\n value.forEach(function(subValue) {\n result.add(baseClone(subValue, bitmask, customizer, subValue, value, stack));\n });\n } else if (isMap(value)) {\n value.forEach(function(subValue, key) {\n result.set(key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n }\n\n var keysFunc = isFull\n ? (isFlat ? getAllKeysIn : getAllKeys)\n : (isFlat ? keysIn : keys);\n\n var props = isArr ? undefined : keysFunc(value);\n arrayEach(props || value, function(subValue, key) {\n if (props) {\n key = subValue;\n subValue = value[key];\n }\n // Recursively populate clone (susceptible to call stack limits).\n assignValue(result, key, baseClone(subValue, bitmask, customizer, key, value, stack));\n });\n return result;\n }\n\n /**\n * The base implementation of `_.conforms` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property predicates to conform to.\n * @returns {Function} Returns the new spec function.\n */\n function baseConforms(source) {\n var props = keys(source);\n return function(object) {\n return baseConformsTo(object, source, props);\n };\n }\n\n /**\n * The base implementation of `_.conformsTo` which accepts `props` to check.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n */\n function baseConformsTo(object, source, props) {\n var length = props.length;\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (length--) {\n var key = props[length],\n predicate = source[key],\n value = object[key];\n\n if ((value === undefined && !(key in object)) || !predicate(value)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.delay` and `_.defer` which accepts `args`\n * to provide to `func`.\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {Array} args The arguments to provide to `func`.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n function baseDelay(func, wait, args) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return setTimeout(function() { func.apply(undefined, args); }, wait);\n }\n\n /**\n * The base implementation of methods like `_.difference` without support\n * for excluding multiple arrays or iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Array} values The values to exclude.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n */\n function baseDifference(array, values, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n isCommon = true,\n length = array.length,\n result = [],\n valuesLength = values.length;\n\n if (!length) {\n return result;\n }\n if (iteratee) {\n values = arrayMap(values, baseUnary(iteratee));\n }\n if (comparator) {\n includes = arrayIncludesWith;\n isCommon = false;\n }\n else if (values.length >= LARGE_ARRAY_SIZE) {\n includes = cacheHas;\n isCommon = false;\n values = new SetCache(values);\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee == null ? value : iteratee(value);\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var valuesIndex = valuesLength;\n while (valuesIndex--) {\n if (values[valuesIndex] === computed) {\n continue outer;\n }\n }\n result.push(value);\n }\n else if (!includes(values, computed, comparator)) {\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.forEach` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEach = createBaseEach(baseForOwn);\n\n /**\n * The base implementation of `_.forEachRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n */\n var baseEachRight = createBaseEach(baseForOwnRight, true);\n\n /**\n * The base implementation of `_.every` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`\n */\n function baseEvery(collection, predicate) {\n var result = true;\n baseEach(collection, function(value, index, collection) {\n result = !!predicate(value, index, collection);\n return result;\n });\n return result;\n }\n\n /**\n * The base implementation of methods like `_.max` and `_.min` which accepts a\n * `comparator` to determine the extremum value.\n *\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} iteratee The iteratee invoked per iteration.\n * @param {Function} comparator The comparator used to compare values.\n * @returns {*} Returns the extremum value.\n */\n function baseExtremum(array, iteratee, comparator) {\n var index = -1,\n length = array.length;\n\n while (++index < length) {\n var value = array[index],\n current = iteratee(value);\n\n if (current != null && (computed === undefined\n ? (current === current && !isSymbol(current))\n : comparator(current, computed)\n )) {\n var computed = current,\n result = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.fill` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n */\n function baseFill(array, value, start, end) {\n var length = array.length;\n\n start = toInteger(start);\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = (end === undefined || end > length) ? length : toInteger(end);\n if (end < 0) {\n end += length;\n }\n end = start > end ? 0 : toLength(end);\n while (start < end) {\n array[start++] = value;\n }\n return array;\n }\n\n /**\n * The base implementation of `_.filter` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n */\n function baseFilter(collection, predicate) {\n var result = [];\n baseEach(collection, function(value, index, collection) {\n if (predicate(value, index, collection)) {\n result.push(value);\n }\n });\n return result;\n }\n\n /**\n * The base implementation of `_.flatten` with support for restricting flattening.\n *\n * @private\n * @param {Array} array The array to flatten.\n * @param {number} depth The maximum recursion depth.\n * @param {boolean} [predicate=isFlattenable] The function invoked per iteration.\n * @param {boolean} [isStrict] Restrict to values that pass `predicate` checks.\n * @param {Array} [result=[]] The initial result value.\n * @returns {Array} Returns the new flattened array.\n */\n function baseFlatten(array, depth, predicate, isStrict, result) {\n var index = -1,\n length = array.length;\n\n predicate || (predicate = isFlattenable);\n result || (result = []);\n\n while (++index < length) {\n var value = array[index];\n if (depth > 0 && predicate(value)) {\n if (depth > 1) {\n // Recursively flatten arrays (susceptible to call stack limits).\n baseFlatten(value, depth - 1, predicate, isStrict, result);\n } else {\n arrayPush(result, value);\n }\n } else if (!isStrict) {\n result[result.length] = value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `baseForOwn` which iterates over `object`\n * properties returned by `keysFunc` and invokes `iteratee` for each property.\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseFor = createBaseFor();\n\n /**\n * This function is like `baseFor` except that it iterates over properties\n * in the opposite order.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @returns {Object} Returns `object`.\n */\n var baseForRight = createBaseFor(true);\n\n /**\n * The base implementation of `_.forOwn` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwn(object, iteratee) {\n return object && baseFor(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.forOwnRight` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Object} Returns `object`.\n */\n function baseForOwnRight(object, iteratee) {\n return object && baseForRight(object, iteratee, keys);\n }\n\n /**\n * The base implementation of `_.functions` which creates an array of\n * `object` function property names filtered from `props`.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Array} props The property names to filter.\n * @returns {Array} Returns the function names.\n */\n function baseFunctions(object, props) {\n return arrayFilter(props, function(key) {\n return isFunction(object[key]);\n });\n }\n\n /**\n * The base implementation of `_.get` without support for default values.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @returns {*} Returns the resolved value.\n */\n function baseGet(object, path) {\n path = castPath(path, object);\n\n var index = 0,\n length = path.length;\n\n while (object != null && index < length) {\n object = object[toKey(path[index++])];\n }\n return (index && index == length) ? object : undefined;\n }\n\n /**\n * The base implementation of `getAllKeys` and `getAllKeysIn` which uses\n * `keysFunc` and `symbolsFunc` to get the enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Function} keysFunc The function to get the keys of `object`.\n * @param {Function} symbolsFunc The function to get the symbols of `object`.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function baseGetAllKeys(object, keysFunc, symbolsFunc) {\n var result = keysFunc(object);\n return isArray(object) ? result : arrayPush(result, symbolsFunc(object));\n }\n\n /**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n function baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n }\n\n /**\n * The base implementation of `_.gt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n */\n function baseGt(value, other) {\n return value > other;\n }\n\n /**\n * The base implementation of `_.has` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHas(object, key) {\n return object != null && hasOwnProperty.call(object, key);\n }\n\n /**\n * The base implementation of `_.hasIn` without support for deep paths.\n *\n * @private\n * @param {Object} [object] The object to query.\n * @param {Array|string} key The key to check.\n * @returns {boolean} Returns `true` if `key` exists, else `false`.\n */\n function baseHasIn(object, key) {\n return object != null && key in Object(object);\n }\n\n /**\n * The base implementation of `_.inRange` which doesn't coerce arguments.\n *\n * @private\n * @param {number} number The number to check.\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n */\n function baseInRange(number, start, end) {\n return number >= nativeMin(start, end) && number < nativeMax(start, end);\n }\n\n /**\n * The base implementation of methods like `_.intersection`, without support\n * for iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of shared values.\n */\n function baseIntersection(arrays, iteratee, comparator) {\n var includes = comparator ? arrayIncludesWith : arrayIncludes,\n length = arrays[0].length,\n othLength = arrays.length,\n othIndex = othLength,\n caches = Array(othLength),\n maxLength = Infinity,\n result = [];\n\n while (othIndex--) {\n var array = arrays[othIndex];\n if (othIndex && iteratee) {\n array = arrayMap(array, baseUnary(iteratee));\n }\n maxLength = nativeMin(array.length, maxLength);\n caches[othIndex] = !comparator && (iteratee || (length >= 120 && array.length >= 120))\n ? new SetCache(othIndex && array)\n : undefined;\n }\n array = arrays[0];\n\n var index = -1,\n seen = caches[0];\n\n outer:\n while (++index < length && result.length < maxLength) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (!(seen\n ? cacheHas(seen, computed)\n : includes(result, computed, comparator)\n )) {\n othIndex = othLength;\n while (--othIndex) {\n var cache = caches[othIndex];\n if (!(cache\n ? cacheHas(cache, computed)\n : includes(arrays[othIndex], computed, comparator))\n ) {\n continue outer;\n }\n }\n if (seen) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.invert` and `_.invertBy` which inverts\n * `object` with values transformed by `iteratee` and set by `setter`.\n *\n * @private\n * @param {Object} object The object to iterate over.\n * @param {Function} setter The function to set `accumulator` values.\n * @param {Function} iteratee The iteratee to transform values.\n * @param {Object} accumulator The initial inverted object.\n * @returns {Function} Returns `accumulator`.\n */\n function baseInverter(object, setter, iteratee, accumulator) {\n baseForOwn(object, function(value, key, object) {\n setter(accumulator, iteratee(value), key, object);\n });\n return accumulator;\n }\n\n /**\n * The base implementation of `_.invoke` without support for individual\n * method arguments.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {Array} args The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n */\n function baseInvoke(object, path, args) {\n path = castPath(path, object);\n object = parent(object, path);\n var func = object == null ? object : object[toKey(last(path))];\n return func == null ? undefined : apply(func, object, args);\n }\n\n /**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\n function baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n }\n\n /**\n * The base implementation of `_.isArrayBuffer` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n */\n function baseIsArrayBuffer(value) {\n return isObjectLike(value) && baseGetTag(value) == arrayBufferTag;\n }\n\n /**\n * The base implementation of `_.isDate` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n */\n function baseIsDate(value) {\n return isObjectLike(value) && baseGetTag(value) == dateTag;\n }\n\n /**\n * The base implementation of `_.isEqual` which supports partial comparisons\n * and tracks traversed objects.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {boolean} bitmask The bitmask flags.\n * 1 - Unordered comparison\n * 2 - Partial comparison\n * @param {Function} [customizer] The function to customize comparisons.\n * @param {Object} [stack] Tracks traversed `value` and `other` objects.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n */\n function baseIsEqual(value, other, bitmask, customizer, stack) {\n if (value === other) {\n return true;\n }\n if (value == null || other == null || (!isObjectLike(value) && !isObjectLike(other))) {\n return value !== value && other !== other;\n }\n return baseIsEqualDeep(value, other, bitmask, customizer, baseIsEqual, stack);\n }\n\n /**\n * A specialized version of `baseIsEqual` for arrays and objects which performs\n * deep comparisons and tracks traversed objects enabling objects with circular\n * references to be compared.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} [stack] Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function baseIsEqualDeep(object, other, bitmask, customizer, equalFunc, stack) {\n var objIsArr = isArray(object),\n othIsArr = isArray(other),\n objTag = objIsArr ? arrayTag : getTag(object),\n othTag = othIsArr ? arrayTag : getTag(other);\n\n objTag = objTag == argsTag ? objectTag : objTag;\n othTag = othTag == argsTag ? objectTag : othTag;\n\n var objIsObj = objTag == objectTag,\n othIsObj = othTag == objectTag,\n isSameTag = objTag == othTag;\n\n if (isSameTag && isBuffer(object)) {\n if (!isBuffer(other)) {\n return false;\n }\n objIsArr = true;\n objIsObj = false;\n }\n if (isSameTag && !objIsObj) {\n stack || (stack = new Stack);\n return (objIsArr || isTypedArray(object))\n ? equalArrays(object, other, bitmask, customizer, equalFunc, stack)\n : equalByTag(object, other, objTag, bitmask, customizer, equalFunc, stack);\n }\n if (!(bitmask & COMPARE_PARTIAL_FLAG)) {\n var objIsWrapped = objIsObj && hasOwnProperty.call(object, '__wrapped__'),\n othIsWrapped = othIsObj && hasOwnProperty.call(other, '__wrapped__');\n\n if (objIsWrapped || othIsWrapped) {\n var objUnwrapped = objIsWrapped ? object.value() : object,\n othUnwrapped = othIsWrapped ? other.value() : other;\n\n stack || (stack = new Stack);\n return equalFunc(objUnwrapped, othUnwrapped, bitmask, customizer, stack);\n }\n }\n if (!isSameTag) {\n return false;\n }\n stack || (stack = new Stack);\n return equalObjects(object, other, bitmask, customizer, equalFunc, stack);\n }\n\n /**\n * The base implementation of `_.isMap` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n */\n function baseIsMap(value) {\n return isObjectLike(value) && getTag(value) == mapTag;\n }\n\n /**\n * The base implementation of `_.isMatch` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Array} matchData The property names, values, and compare flags to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n */\n function baseIsMatch(object, source, matchData, customizer) {\n var index = matchData.length,\n length = index,\n noCustomizer = !customizer;\n\n if (object == null) {\n return !length;\n }\n object = Object(object);\n while (index--) {\n var data = matchData[index];\n if ((noCustomizer && data[2])\n ? data[1] !== object[data[0]]\n : !(data[0] in object)\n ) {\n return false;\n }\n }\n while (++index < length) {\n data = matchData[index];\n var key = data[0],\n objValue = object[key],\n srcValue = data[1];\n\n if (noCustomizer && data[2]) {\n if (objValue === undefined && !(key in object)) {\n return false;\n }\n } else {\n var stack = new Stack;\n if (customizer) {\n var result = customizer(objValue, srcValue, key, object, source, stack);\n }\n if (!(result === undefined\n ? baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG, customizer, stack)\n : result\n )) {\n return false;\n }\n }\n }\n return true;\n }\n\n /**\n * The base implementation of `_.isNative` without bad shim checks.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n */\n function baseIsNative(value) {\n if (!isObject(value) || isMasked(value)) {\n return false;\n }\n var pattern = isFunction(value) ? reIsNative : reIsHostCtor;\n return pattern.test(toSource(value));\n }\n\n /**\n * The base implementation of `_.isRegExp` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n */\n function baseIsRegExp(value) {\n return isObjectLike(value) && baseGetTag(value) == regexpTag;\n }\n\n /**\n * The base implementation of `_.isSet` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n */\n function baseIsSet(value) {\n return isObjectLike(value) && getTag(value) == setTag;\n }\n\n /**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\n function baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n }\n\n /**\n * The base implementation of `_.iteratee`.\n *\n * @private\n * @param {*} [value=_.identity] The value to convert to an iteratee.\n * @returns {Function} Returns the iteratee.\n */\n function baseIteratee(value) {\n // Don't store the `typeof` result in a variable to avoid a JIT bug in Safari 9.\n // See https://bugs.webkit.org/show_bug.cgi?id=156034 for more details.\n if (typeof value == 'function') {\n return value;\n }\n if (value == null) {\n return identity;\n }\n if (typeof value == 'object') {\n return isArray(value)\n ? baseMatchesProperty(value[0], value[1])\n : baseMatches(value);\n }\n return property(value);\n }\n\n /**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.keysIn` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function baseKeysIn(object) {\n if (!isObject(object)) {\n return nativeKeysIn(object);\n }\n var isProto = isPrototype(object),\n result = [];\n\n for (var key in object) {\n if (!(key == 'constructor' && (isProto || !hasOwnProperty.call(object, key)))) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.lt` which doesn't coerce arguments.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n */\n function baseLt(value, other) {\n return value < other;\n }\n\n /**\n * The base implementation of `_.map` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n */\n function baseMap(collection, iteratee) {\n var index = -1,\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value, key, collection) {\n result[++index] = iteratee(value, key, collection);\n });\n return result;\n }\n\n /**\n * The base implementation of `_.matches` which doesn't clone `source`.\n *\n * @private\n * @param {Object} source The object of property values to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatches(source) {\n var matchData = getMatchData(source);\n if (matchData.length == 1 && matchData[0][2]) {\n return matchesStrictComparable(matchData[0][0], matchData[0][1]);\n }\n return function(object) {\n return object === source || baseIsMatch(object, source, matchData);\n };\n }\n\n /**\n * The base implementation of `_.matchesProperty` which doesn't clone `srcValue`.\n *\n * @private\n * @param {string} path The path of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function baseMatchesProperty(path, srcValue) {\n if (isKey(path) && isStrictComparable(srcValue)) {\n return matchesStrictComparable(toKey(path), srcValue);\n }\n return function(object) {\n var objValue = get(object, path);\n return (objValue === undefined && objValue === srcValue)\n ? hasIn(object, path)\n : baseIsEqual(srcValue, objValue, COMPARE_PARTIAL_FLAG | COMPARE_UNORDERED_FLAG);\n };\n }\n\n /**\n * The base implementation of `_.merge` without support for multiple sources.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} [customizer] The function to customize merged values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMerge(object, source, srcIndex, customizer, stack) {\n if (object === source) {\n return;\n }\n baseFor(source, function(srcValue, key) {\n stack || (stack = new Stack);\n if (isObject(srcValue)) {\n baseMergeDeep(object, source, key, srcIndex, baseMerge, customizer, stack);\n }\n else {\n var newValue = customizer\n ? customizer(safeGet(object, key), srcValue, (key + ''), object, source, stack)\n : undefined;\n\n if (newValue === undefined) {\n newValue = srcValue;\n }\n assignMergeValue(object, key, newValue);\n }\n }, keysIn);\n }\n\n /**\n * A specialized version of `baseMerge` for arrays and objects which performs\n * deep merges and tracks traversed objects enabling objects with circular\n * references to be merged.\n *\n * @private\n * @param {Object} object The destination object.\n * @param {Object} source The source object.\n * @param {string} key The key of the value to merge.\n * @param {number} srcIndex The index of `source`.\n * @param {Function} mergeFunc The function to merge values.\n * @param {Function} [customizer] The function to customize assigned values.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n */\n function baseMergeDeep(object, source, key, srcIndex, mergeFunc, customizer, stack) {\n var objValue = safeGet(object, key),\n srcValue = safeGet(source, key),\n stacked = stack.get(srcValue);\n\n if (stacked) {\n assignMergeValue(object, key, stacked);\n return;\n }\n var newValue = customizer\n ? customizer(objValue, srcValue, (key + ''), object, source, stack)\n : undefined;\n\n var isCommon = newValue === undefined;\n\n if (isCommon) {\n var isArr = isArray(srcValue),\n isBuff = !isArr && isBuffer(srcValue),\n isTyped = !isArr && !isBuff && isTypedArray(srcValue);\n\n newValue = srcValue;\n if (isArr || isBuff || isTyped) {\n if (isArray(objValue)) {\n newValue = objValue;\n }\n else if (isArrayLikeObject(objValue)) {\n newValue = copyArray(objValue);\n }\n else if (isBuff) {\n isCommon = false;\n newValue = cloneBuffer(srcValue, true);\n }\n else if (isTyped) {\n isCommon = false;\n newValue = cloneTypedArray(srcValue, true);\n }\n else {\n newValue = [];\n }\n }\n else if (isPlainObject(srcValue) || isArguments(srcValue)) {\n newValue = objValue;\n if (isArguments(objValue)) {\n newValue = toPlainObject(objValue);\n }\n else if (!isObject(objValue) || isFunction(objValue)) {\n newValue = initCloneObject(srcValue);\n }\n }\n else {\n isCommon = false;\n }\n }\n if (isCommon) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, newValue);\n mergeFunc(newValue, srcValue, srcIndex, customizer, stack);\n stack['delete'](srcValue);\n }\n assignMergeValue(object, key, newValue);\n }\n\n /**\n * The base implementation of `_.nth` which doesn't coerce arguments.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {number} n The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n */\n function baseNth(array, n) {\n var length = array.length;\n if (!length) {\n return;\n }\n n += n < 0 ? length : 0;\n return isIndex(n, length) ? array[n] : undefined;\n }\n\n /**\n * The base implementation of `_.orderBy` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function[]|Object[]|string[]} iteratees The iteratees to sort by.\n * @param {string[]} orders The sort orders of `iteratees`.\n * @returns {Array} Returns the new sorted array.\n */\n function baseOrderBy(collection, iteratees, orders) {\n if (iteratees.length) {\n iteratees = arrayMap(iteratees, function(iteratee) {\n if (isArray(iteratee)) {\n return function(value) {\n return baseGet(value, iteratee.length === 1 ? iteratee[0] : iteratee);\n }\n }\n return iteratee;\n });\n } else {\n iteratees = [identity];\n }\n\n var index = -1;\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n\n var result = baseMap(collection, function(value, key, collection) {\n var criteria = arrayMap(iteratees, function(iteratee) {\n return iteratee(value);\n });\n return { 'criteria': criteria, 'index': ++index, 'value': value };\n });\n\n return baseSortBy(result, function(object, other) {\n return compareMultiple(object, other, orders);\n });\n }\n\n /**\n * The base implementation of `_.pick` without support for individual\n * property identifiers.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @returns {Object} Returns the new object.\n */\n function basePick(object, paths) {\n return basePickBy(object, paths, function(value, path) {\n return hasIn(object, path);\n });\n }\n\n /**\n * The base implementation of `_.pickBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Object} object The source object.\n * @param {string[]} paths The property paths to pick.\n * @param {Function} predicate The function invoked per property.\n * @returns {Object} Returns the new object.\n */\n function basePickBy(object, paths, predicate) {\n var index = -1,\n length = paths.length,\n result = {};\n\n while (++index < length) {\n var path = paths[index],\n value = baseGet(object, path);\n\n if (predicate(value, path)) {\n baseSet(result, castPath(path, object), value);\n }\n }\n return result;\n }\n\n /**\n * A specialized version of `baseProperty` which supports deep paths.\n *\n * @private\n * @param {Array|string} path The path of the property to get.\n * @returns {Function} Returns the new accessor function.\n */\n function basePropertyDeep(path) {\n return function(object) {\n return baseGet(object, path);\n };\n }\n\n /**\n * The base implementation of `_.pullAllBy` without support for iteratee\n * shorthands.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n */\n function basePullAll(array, values, iteratee, comparator) {\n var indexOf = comparator ? baseIndexOfWith : baseIndexOf,\n index = -1,\n length = values.length,\n seen = array;\n\n if (array === values) {\n values = copyArray(values);\n }\n if (iteratee) {\n seen = arrayMap(array, baseUnary(iteratee));\n }\n while (++index < length) {\n var fromIndex = 0,\n value = values[index],\n computed = iteratee ? iteratee(value) : value;\n\n while ((fromIndex = indexOf(seen, computed, fromIndex, comparator)) > -1) {\n if (seen !== array) {\n splice.call(seen, fromIndex, 1);\n }\n splice.call(array, fromIndex, 1);\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.pullAt` without support for individual\n * indexes or capturing the removed elements.\n *\n * @private\n * @param {Array} array The array to modify.\n * @param {number[]} indexes The indexes of elements to remove.\n * @returns {Array} Returns `array`.\n */\n function basePullAt(array, indexes) {\n var length = array ? indexes.length : 0,\n lastIndex = length - 1;\n\n while (length--) {\n var index = indexes[length];\n if (length == lastIndex || index !== previous) {\n var previous = index;\n if (isIndex(index)) {\n splice.call(array, index, 1);\n } else {\n baseUnset(array, index);\n }\n }\n }\n return array;\n }\n\n /**\n * The base implementation of `_.random` without support for returning\n * floating-point numbers.\n *\n * @private\n * @param {number} lower The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the random number.\n */\n function baseRandom(lower, upper) {\n return lower + nativeFloor(nativeRandom() * (upper - lower + 1));\n }\n\n /**\n * The base implementation of `_.range` and `_.rangeRight` which doesn't\n * coerce arguments.\n *\n * @private\n * @param {number} start The start of the range.\n * @param {number} end The end of the range.\n * @param {number} step The value to increment or decrement by.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the range of numbers.\n */\n function baseRange(start, end, step, fromRight) {\n var index = -1,\n length = nativeMax(nativeCeil((end - start) / (step || 1)), 0),\n result = Array(length);\n\n while (length--) {\n result[fromRight ? length : ++index] = start;\n start += step;\n }\n return result;\n }\n\n /**\n * The base implementation of `_.repeat` which doesn't coerce arguments.\n *\n * @private\n * @param {string} string The string to repeat.\n * @param {number} n The number of times to repeat the string.\n * @returns {string} Returns the repeated string.\n */\n function baseRepeat(string, n) {\n var result = '';\n if (!string || n < 1 || n > MAX_SAFE_INTEGER) {\n return result;\n }\n // Leverage the exponentiation by squaring algorithm for a faster repeat.\n // See https://en.wikipedia.org/wiki/Exponentiation_by_squaring for more details.\n do {\n if (n % 2) {\n result += string;\n }\n n = nativeFloor(n / 2);\n if (n) {\n string += string;\n }\n } while (n);\n\n return result;\n }\n\n /**\n * The base implementation of `_.rest` which doesn't validate or coerce arguments.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n */\n function baseRest(func, start) {\n return setToString(overRest(func, start, identity), func + '');\n }\n\n /**\n * The base implementation of `_.sample`.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n */\n function baseSample(collection) {\n return arraySample(values(collection));\n }\n\n /**\n * The base implementation of `_.sampleSize` without param guards.\n *\n * @private\n * @param {Array|Object} collection The collection to sample.\n * @param {number} n The number of elements to sample.\n * @returns {Array} Returns the random elements.\n */\n function baseSampleSize(collection, n) {\n var array = values(collection);\n return shuffleSelf(array, baseClamp(n, 0, array.length));\n }\n\n /**\n * The base implementation of `_.set`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseSet(object, path, value, customizer) {\n if (!isObject(object)) {\n return object;\n }\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n lastIndex = length - 1,\n nested = object;\n\n while (nested != null && ++index < length) {\n var key = toKey(path[index]),\n newValue = value;\n\n if (key === '__proto__' || key === 'constructor' || key === 'prototype') {\n return object;\n }\n\n if (index != lastIndex) {\n var objValue = nested[key];\n newValue = customizer ? customizer(objValue, key, nested) : undefined;\n if (newValue === undefined) {\n newValue = isObject(objValue)\n ? objValue\n : (isIndex(path[index + 1]) ? [] : {});\n }\n }\n assignValue(nested, key, newValue);\n nested = nested[key];\n }\n return object;\n }\n\n /**\n * The base implementation of `setData` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var baseSetData = !metaMap ? identity : function(func, data) {\n metaMap.set(func, data);\n return func;\n };\n\n /**\n * The base implementation of `setToString` without support for hot loop shorting.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var baseSetToString = !defineProperty ? identity : function(func, string) {\n return defineProperty(func, 'toString', {\n 'configurable': true,\n 'enumerable': false,\n 'value': constant(string),\n 'writable': true\n });\n };\n\n /**\n * The base implementation of `_.shuffle`.\n *\n * @private\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n */\n function baseShuffle(collection) {\n return shuffleSelf(values(collection));\n }\n\n /**\n * The base implementation of `_.slice` without an iteratee call guard.\n *\n * @private\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseSlice(array, start, end) {\n var index = -1,\n length = array.length;\n\n if (start < 0) {\n start = -start > length ? 0 : (length + start);\n }\n end = end > length ? length : end;\n if (end < 0) {\n end += length;\n }\n length = start > end ? 0 : ((end - start) >>> 0);\n start >>>= 0;\n\n var result = Array(length);\n while (++index < length) {\n result[index] = array[index + start];\n }\n return result;\n }\n\n /**\n * The base implementation of `_.some` without support for iteratee shorthands.\n *\n * @private\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} predicate The function invoked per iteration.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n */\n function baseSome(collection, predicate) {\n var result;\n\n baseEach(collection, function(value, index, collection) {\n result = predicate(value, index, collection);\n return !result;\n });\n return !!result;\n }\n\n /**\n * The base implementation of `_.sortedIndex` and `_.sortedLastIndex` which\n * performs a binary search of `array` to determine the index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndex(array, value, retHighest) {\n var low = 0,\n high = array == null ? low : array.length;\n\n if (typeof value == 'number' && value === value && high <= HALF_MAX_ARRAY_LENGTH) {\n while (low < high) {\n var mid = (low + high) >>> 1,\n computed = array[mid];\n\n if (computed !== null && !isSymbol(computed) &&\n (retHighest ? (computed <= value) : (computed < value))) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return high;\n }\n return baseSortedIndexBy(array, value, identity, retHighest);\n }\n\n /**\n * The base implementation of `_.sortedIndexBy` and `_.sortedLastIndexBy`\n * which invokes `iteratee` for `value` and each element of `array` to compute\n * their sort ranking. The iteratee is invoked with one argument; (value).\n *\n * @private\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} iteratee The iteratee invoked per element.\n * @param {boolean} [retHighest] Specify returning the highest qualified index.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n */\n function baseSortedIndexBy(array, value, iteratee, retHighest) {\n var low = 0,\n high = array == null ? 0 : array.length;\n if (high === 0) {\n return 0;\n }\n\n value = iteratee(value);\n var valIsNaN = value !== value,\n valIsNull = value === null,\n valIsSymbol = isSymbol(value),\n valIsUndefined = value === undefined;\n\n while (low < high) {\n var mid = nativeFloor((low + high) / 2),\n computed = iteratee(array[mid]),\n othIsDefined = computed !== undefined,\n othIsNull = computed === null,\n othIsReflexive = computed === computed,\n othIsSymbol = isSymbol(computed);\n\n if (valIsNaN) {\n var setLow = retHighest || othIsReflexive;\n } else if (valIsUndefined) {\n setLow = othIsReflexive && (retHighest || othIsDefined);\n } else if (valIsNull) {\n setLow = othIsReflexive && othIsDefined && (retHighest || !othIsNull);\n } else if (valIsSymbol) {\n setLow = othIsReflexive && othIsDefined && !othIsNull && (retHighest || !othIsSymbol);\n } else if (othIsNull || othIsSymbol) {\n setLow = false;\n } else {\n setLow = retHighest ? (computed <= value) : (computed < value);\n }\n if (setLow) {\n low = mid + 1;\n } else {\n high = mid;\n }\n }\n return nativeMin(high, MAX_ARRAY_INDEX);\n }\n\n /**\n * The base implementation of `_.sortedUniq` and `_.sortedUniqBy` without\n * support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseSortedUniq(array, iteratee) {\n var index = -1,\n length = array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n if (!index || !eq(computed, seen)) {\n var seen = computed;\n result[resIndex++] = value === 0 ? 0 : value;\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.toNumber` which doesn't ensure correct\n * conversions of binary, hexadecimal, or octal string values.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n */\n function baseToNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n return +value;\n }\n\n /**\n * The base implementation of `_.toString` which doesn't convert nullish\n * values to empty strings.\n *\n * @private\n * @param {*} value The value to process.\n * @returns {string} Returns the string.\n */\n function baseToString(value) {\n // Exit early for strings to avoid a performance hit in some environments.\n if (typeof value == 'string') {\n return value;\n }\n if (isArray(value)) {\n // Recursively convert values (susceptible to call stack limits).\n return arrayMap(value, baseToString) + '';\n }\n if (isSymbol(value)) {\n return symbolToString ? symbolToString.call(value) : '';\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * The base implementation of `_.uniqBy` without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n */\n function baseUniq(array, iteratee, comparator) {\n var index = -1,\n includes = arrayIncludes,\n length = array.length,\n isCommon = true,\n result = [],\n seen = result;\n\n if (comparator) {\n isCommon = false;\n includes = arrayIncludesWith;\n }\n else if (length >= LARGE_ARRAY_SIZE) {\n var set = iteratee ? null : createSet(array);\n if (set) {\n return setToArray(set);\n }\n isCommon = false;\n includes = cacheHas;\n seen = new SetCache;\n }\n else {\n seen = iteratee ? [] : result;\n }\n outer:\n while (++index < length) {\n var value = array[index],\n computed = iteratee ? iteratee(value) : value;\n\n value = (comparator || value !== 0) ? value : 0;\n if (isCommon && computed === computed) {\n var seenIndex = seen.length;\n while (seenIndex--) {\n if (seen[seenIndex] === computed) {\n continue outer;\n }\n }\n if (iteratee) {\n seen.push(computed);\n }\n result.push(value);\n }\n else if (!includes(seen, computed, comparator)) {\n if (seen !== result) {\n seen.push(computed);\n }\n result.push(value);\n }\n }\n return result;\n }\n\n /**\n * The base implementation of `_.unset`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The property path to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n */\n function baseUnset(object, path) {\n path = castPath(path, object);\n object = parent(object, path);\n return object == null || delete object[toKey(last(path))];\n }\n\n /**\n * The base implementation of `_.update`.\n *\n * @private\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to update.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize path creation.\n * @returns {Object} Returns `object`.\n */\n function baseUpdate(object, path, updater, customizer) {\n return baseSet(object, path, updater(baseGet(object, path)), customizer);\n }\n\n /**\n * The base implementation of methods like `_.dropWhile` and `_.takeWhile`\n * without support for iteratee shorthands.\n *\n * @private\n * @param {Array} array The array to query.\n * @param {Function} predicate The function invoked per iteration.\n * @param {boolean} [isDrop] Specify dropping elements instead of taking them.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Array} Returns the slice of `array`.\n */\n function baseWhile(array, predicate, isDrop, fromRight) {\n var length = array.length,\n index = fromRight ? length : -1;\n\n while ((fromRight ? index-- : ++index < length) &&\n predicate(array[index], index, array)) {}\n\n return isDrop\n ? baseSlice(array, (fromRight ? 0 : index), (fromRight ? index + 1 : length))\n : baseSlice(array, (fromRight ? index + 1 : 0), (fromRight ? length : index));\n }\n\n /**\n * The base implementation of `wrapperValue` which returns the result of\n * performing a sequence of actions on the unwrapped `value`, where each\n * successive action is supplied the return value of the previous.\n *\n * @private\n * @param {*} value The unwrapped value.\n * @param {Array} actions Actions to perform to resolve the unwrapped value.\n * @returns {*} Returns the resolved value.\n */\n function baseWrapperValue(value, actions) {\n var result = value;\n if (result instanceof LazyWrapper) {\n result = result.value();\n }\n return arrayReduce(actions, function(result, action) {\n return action.func.apply(action.thisArg, arrayPush([result], action.args));\n }, result);\n }\n\n /**\n * The base implementation of methods like `_.xor`, without support for\n * iteratee shorthands, that accepts an array of arrays to inspect.\n *\n * @private\n * @param {Array} arrays The arrays to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of values.\n */\n function baseXor(arrays, iteratee, comparator) {\n var length = arrays.length;\n if (length < 2) {\n return length ? baseUniq(arrays[0]) : [];\n }\n var index = -1,\n result = Array(length);\n\n while (++index < length) {\n var array = arrays[index],\n othIndex = -1;\n\n while (++othIndex < length) {\n if (othIndex != index) {\n result[index] = baseDifference(result[index] || array, arrays[othIndex], iteratee, comparator);\n }\n }\n }\n return baseUniq(baseFlatten(result, 1), iteratee, comparator);\n }\n\n /**\n * This base implementation of `_.zipObject` which assigns values using `assignFunc`.\n *\n * @private\n * @param {Array} props The property identifiers.\n * @param {Array} values The property values.\n * @param {Function} assignFunc The function to assign values.\n * @returns {Object} Returns the new object.\n */\n function baseZipObject(props, values, assignFunc) {\n var index = -1,\n length = props.length,\n valsLength = values.length,\n result = {};\n\n while (++index < length) {\n var value = index < valsLength ? values[index] : undefined;\n assignFunc(result, props[index], value);\n }\n return result;\n }\n\n /**\n * Casts `value` to an empty array if it's not an array like object.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Array|Object} Returns the cast array-like object.\n */\n function castArrayLikeObject(value) {\n return isArrayLikeObject(value) ? value : [];\n }\n\n /**\n * Casts `value` to `identity` if it's not a function.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {Function} Returns cast function.\n */\n function castFunction(value) {\n return typeof value == 'function' ? value : identity;\n }\n\n /**\n * Casts `value` to a path array if it's not one.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {Object} [object] The object to query keys on.\n * @returns {Array} Returns the cast property path array.\n */\n function castPath(value, object) {\n if (isArray(value)) {\n return value;\n }\n return isKey(value, object) ? [value] : stringToPath(toString(value));\n }\n\n /**\n * A `baseRest` alias which can be replaced with `identity` by module\n * replacement plugins.\n *\n * @private\n * @type {Function}\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n var castRest = baseRest;\n\n /**\n * Casts `array` to a slice if it's needed.\n *\n * @private\n * @param {Array} array The array to inspect.\n * @param {number} start The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the cast slice.\n */\n function castSlice(array, start, end) {\n var length = array.length;\n end = end === undefined ? length : end;\n return (!start && end >= length) ? array : baseSlice(array, start, end);\n }\n\n /**\n * A simple wrapper around the global [`clearTimeout`](https://mdn.io/clearTimeout).\n *\n * @private\n * @param {number|Object} id The timer id or timeout object of the timer to clear.\n */\n var clearTimeout = ctxClearTimeout || function(id) {\n return root.clearTimeout(id);\n };\n\n /**\n * Creates a clone of `buffer`.\n *\n * @private\n * @param {Buffer} buffer The buffer to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Buffer} Returns the cloned buffer.\n */\n function cloneBuffer(buffer, isDeep) {\n if (isDeep) {\n return buffer.slice();\n }\n var length = buffer.length,\n result = allocUnsafe ? allocUnsafe(length) : new buffer.constructor(length);\n\n buffer.copy(result);\n return result;\n }\n\n /**\n * Creates a clone of `arrayBuffer`.\n *\n * @private\n * @param {ArrayBuffer} arrayBuffer The array buffer to clone.\n * @returns {ArrayBuffer} Returns the cloned array buffer.\n */\n function cloneArrayBuffer(arrayBuffer) {\n var result = new arrayBuffer.constructor(arrayBuffer.byteLength);\n new Uint8Array(result).set(new Uint8Array(arrayBuffer));\n return result;\n }\n\n /**\n * Creates a clone of `dataView`.\n *\n * @private\n * @param {Object} dataView The data view to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned data view.\n */\n function cloneDataView(dataView, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(dataView.buffer) : dataView.buffer;\n return new dataView.constructor(buffer, dataView.byteOffset, dataView.byteLength);\n }\n\n /**\n * Creates a clone of `regexp`.\n *\n * @private\n * @param {Object} regexp The regexp to clone.\n * @returns {Object} Returns the cloned regexp.\n */\n function cloneRegExp(regexp) {\n var result = new regexp.constructor(regexp.source, reFlags.exec(regexp));\n result.lastIndex = regexp.lastIndex;\n return result;\n }\n\n /**\n * Creates a clone of the `symbol` object.\n *\n * @private\n * @param {Object} symbol The symbol object to clone.\n * @returns {Object} Returns the cloned symbol object.\n */\n function cloneSymbol(symbol) {\n return symbolValueOf ? Object(symbolValueOf.call(symbol)) : {};\n }\n\n /**\n * Creates a clone of `typedArray`.\n *\n * @private\n * @param {Object} typedArray The typed array to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the cloned typed array.\n */\n function cloneTypedArray(typedArray, isDeep) {\n var buffer = isDeep ? cloneArrayBuffer(typedArray.buffer) : typedArray.buffer;\n return new typedArray.constructor(buffer, typedArray.byteOffset, typedArray.length);\n }\n\n /**\n * Compares values to sort them in ascending order.\n *\n * @private\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {number} Returns the sort order indicator for `value`.\n */\n function compareAscending(value, other) {\n if (value !== other) {\n var valIsDefined = value !== undefined,\n valIsNull = value === null,\n valIsReflexive = value === value,\n valIsSymbol = isSymbol(value);\n\n var othIsDefined = other !== undefined,\n othIsNull = other === null,\n othIsReflexive = other === other,\n othIsSymbol = isSymbol(other);\n\n if ((!othIsNull && !othIsSymbol && !valIsSymbol && value > other) ||\n (valIsSymbol && othIsDefined && othIsReflexive && !othIsNull && !othIsSymbol) ||\n (valIsNull && othIsDefined && othIsReflexive) ||\n (!valIsDefined && othIsReflexive) ||\n !valIsReflexive) {\n return 1;\n }\n if ((!valIsNull && !valIsSymbol && !othIsSymbol && value < other) ||\n (othIsSymbol && valIsDefined && valIsReflexive && !valIsNull && !valIsSymbol) ||\n (othIsNull && valIsDefined && valIsReflexive) ||\n (!othIsDefined && valIsReflexive) ||\n !othIsReflexive) {\n return -1;\n }\n }\n return 0;\n }\n\n /**\n * Used by `_.orderBy` to compare multiple properties of a value to another\n * and stable sort them.\n *\n * If `orders` is unspecified, all values are sorted in ascending order. Otherwise,\n * specify an order of \"desc\" for descending or \"asc\" for ascending sort order\n * of corresponding values.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {boolean[]|string[]} orders The order to sort by for each property.\n * @returns {number} Returns the sort order indicator for `object`.\n */\n function compareMultiple(object, other, orders) {\n var index = -1,\n objCriteria = object.criteria,\n othCriteria = other.criteria,\n length = objCriteria.length,\n ordersLength = orders.length;\n\n while (++index < length) {\n var result = compareAscending(objCriteria[index], othCriteria[index]);\n if (result) {\n if (index >= ordersLength) {\n return result;\n }\n var order = orders[index];\n return result * (order == 'desc' ? -1 : 1);\n }\n }\n // Fixes an `Array#sort` bug in the JS engine embedded in Adobe applications\n // that causes it, under certain circumstances, to provide the same value for\n // `object` and `other`. See https://github.com/jashkenas/underscore/pull/1247\n // for more details.\n //\n // This also ensures a stable sort in V8 and other engines.\n // See https://bugs.chromium.org/p/v8/issues/detail?id=90 for more details.\n return object.index - other.index;\n }\n\n /**\n * Creates an array that is the composition of partially applied arguments,\n * placeholders, and provided arguments into a single array of arguments.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to prepend to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgs(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersLength = holders.length,\n leftIndex = -1,\n leftLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(leftLength + rangeLength),\n isUncurried = !isCurried;\n\n while (++leftIndex < leftLength) {\n result[leftIndex] = partials[leftIndex];\n }\n while (++argsIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[holders[argsIndex]] = args[argsIndex];\n }\n }\n while (rangeLength--) {\n result[leftIndex++] = args[argsIndex++];\n }\n return result;\n }\n\n /**\n * This function is like `composeArgs` except that the arguments composition\n * is tailored for `_.partialRight`.\n *\n * @private\n * @param {Array} args The provided arguments.\n * @param {Array} partials The arguments to append to those provided.\n * @param {Array} holders The `partials` placeholder indexes.\n * @params {boolean} [isCurried] Specify composing for a curried function.\n * @returns {Array} Returns the new array of composed arguments.\n */\n function composeArgsRight(args, partials, holders, isCurried) {\n var argsIndex = -1,\n argsLength = args.length,\n holdersIndex = -1,\n holdersLength = holders.length,\n rightIndex = -1,\n rightLength = partials.length,\n rangeLength = nativeMax(argsLength - holdersLength, 0),\n result = Array(rangeLength + rightLength),\n isUncurried = !isCurried;\n\n while (++argsIndex < rangeLength) {\n result[argsIndex] = args[argsIndex];\n }\n var offset = argsIndex;\n while (++rightIndex < rightLength) {\n result[offset + rightIndex] = partials[rightIndex];\n }\n while (++holdersIndex < holdersLength) {\n if (isUncurried || argsIndex < argsLength) {\n result[offset + holders[holdersIndex]] = args[argsIndex++];\n }\n }\n return result;\n }\n\n /**\n * Copies the values of `source` to `array`.\n *\n * @private\n * @param {Array} source The array to copy values from.\n * @param {Array} [array=[]] The array to copy values to.\n * @returns {Array} Returns `array`.\n */\n function copyArray(source, array) {\n var index = -1,\n length = source.length;\n\n array || (array = Array(length));\n while (++index < length) {\n array[index] = source[index];\n }\n return array;\n }\n\n /**\n * Copies properties of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy properties from.\n * @param {Array} props The property identifiers to copy.\n * @param {Object} [object={}] The object to copy properties to.\n * @param {Function} [customizer] The function to customize copied values.\n * @returns {Object} Returns `object`.\n */\n function copyObject(source, props, object, customizer) {\n var isNew = !object;\n object || (object = {});\n\n var index = -1,\n length = props.length;\n\n while (++index < length) {\n var key = props[index];\n\n var newValue = customizer\n ? customizer(object[key], source[key], key, object, source)\n : undefined;\n\n if (newValue === undefined) {\n newValue = source[key];\n }\n if (isNew) {\n baseAssignValue(object, key, newValue);\n } else {\n assignValue(object, key, newValue);\n }\n }\n return object;\n }\n\n /**\n * Copies own symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbols(source, object) {\n return copyObject(source, getSymbols(source), object);\n }\n\n /**\n * Copies own and inherited symbols of `source` to `object`.\n *\n * @private\n * @param {Object} source The object to copy symbols from.\n * @param {Object} [object={}] The object to copy symbols to.\n * @returns {Object} Returns `object`.\n */\n function copySymbolsIn(source, object) {\n return copyObject(source, getSymbolsIn(source), object);\n }\n\n /**\n * Creates a function like `_.groupBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} [initializer] The accumulator object initializer.\n * @returns {Function} Returns the new aggregator function.\n */\n function createAggregator(setter, initializer) {\n return function(collection, iteratee) {\n var func = isArray(collection) ? arrayAggregator : baseAggregator,\n accumulator = initializer ? initializer() : {};\n\n return func(collection, setter, getIteratee(iteratee, 2), accumulator);\n };\n }\n\n /**\n * Creates a function like `_.assign`.\n *\n * @private\n * @param {Function} assigner The function to assign values.\n * @returns {Function} Returns the new assigner function.\n */\n function createAssigner(assigner) {\n return baseRest(function(object, sources) {\n var index = -1,\n length = sources.length,\n customizer = length > 1 ? sources[length - 1] : undefined,\n guard = length > 2 ? sources[2] : undefined;\n\n customizer = (assigner.length > 3 && typeof customizer == 'function')\n ? (length--, customizer)\n : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n customizer = length < 3 ? undefined : customizer;\n length = 1;\n }\n object = Object(object);\n while (++index < length) {\n var source = sources[index];\n if (source) {\n assigner(object, source, index, customizer);\n }\n }\n return object;\n });\n }\n\n /**\n * Creates a `baseEach` or `baseEachRight` function.\n *\n * @private\n * @param {Function} eachFunc The function to iterate over a collection.\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseEach(eachFunc, fromRight) {\n return function(collection, iteratee) {\n if (collection == null) {\n return collection;\n }\n if (!isArrayLike(collection)) {\n return eachFunc(collection, iteratee);\n }\n var length = collection.length,\n index = fromRight ? length : -1,\n iterable = Object(collection);\n\n while ((fromRight ? index-- : ++index < length)) {\n if (iteratee(iterable[index], index, iterable) === false) {\n break;\n }\n }\n return collection;\n };\n }\n\n /**\n * Creates a base function for methods like `_.forIn` and `_.forOwn`.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new base function.\n */\n function createBaseFor(fromRight) {\n return function(object, iteratee, keysFunc) {\n var index = -1,\n iterable = Object(object),\n props = keysFunc(object),\n length = props.length;\n\n while (length--) {\n var key = props[fromRight ? length : ++index];\n if (iteratee(iterable[key], key, iterable) === false) {\n break;\n }\n }\n return object;\n };\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the optional `this`\n * binding of `thisArg`.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createBind(func, bitmask, thisArg) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return fn.apply(isBind ? thisArg : this, arguments);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.lowerFirst`.\n *\n * @private\n * @param {string} methodName The name of the `String` case method to use.\n * @returns {Function} Returns the new case function.\n */\n function createCaseFirst(methodName) {\n return function(string) {\n string = toString(string);\n\n var strSymbols = hasUnicode(string)\n ? stringToArray(string)\n : undefined;\n\n var chr = strSymbols\n ? strSymbols[0]\n : string.charAt(0);\n\n var trailing = strSymbols\n ? castSlice(strSymbols, 1).join('')\n : string.slice(1);\n\n return chr[methodName]() + trailing;\n };\n }\n\n /**\n * Creates a function like `_.camelCase`.\n *\n * @private\n * @param {Function} callback The function to combine each word.\n * @returns {Function} Returns the new compounder function.\n */\n function createCompounder(callback) {\n return function(string) {\n return arrayReduce(words(deburr(string).replace(reApos, '')), callback, '');\n };\n }\n\n /**\n * Creates a function that produces an instance of `Ctor` regardless of\n * whether it was invoked as part of a `new` expression or by `call` or `apply`.\n *\n * @private\n * @param {Function} Ctor The constructor to wrap.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCtor(Ctor) {\n return function() {\n // Use a `switch` statement to work with class constructors. See\n // http://ecma-international.org/ecma-262/7.0/#sec-ecmascript-function-objects-call-thisargument-argumentslist\n // for more details.\n var args = arguments;\n switch (args.length) {\n case 0: return new Ctor;\n case 1: return new Ctor(args[0]);\n case 2: return new Ctor(args[0], args[1]);\n case 3: return new Ctor(args[0], args[1], args[2]);\n case 4: return new Ctor(args[0], args[1], args[2], args[3]);\n case 5: return new Ctor(args[0], args[1], args[2], args[3], args[4]);\n case 6: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5]);\n case 7: return new Ctor(args[0], args[1], args[2], args[3], args[4], args[5], args[6]);\n }\n var thisBinding = baseCreate(Ctor.prototype),\n result = Ctor.apply(thisBinding, args);\n\n // Mimic the constructor's `return` behavior.\n // See https://es5.github.io/#x13.2.2 for more details.\n return isObject(result) ? result : thisBinding;\n };\n }\n\n /**\n * Creates a function that wraps `func` to enable currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {number} arity The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createCurry(func, bitmask, arity) {\n var Ctor = createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length,\n placeholder = getHolder(wrapper);\n\n while (index--) {\n args[index] = arguments[index];\n }\n var holders = (length < 3 && args[0] !== placeholder && args[length - 1] !== placeholder)\n ? []\n : replaceHolders(args, placeholder);\n\n length -= holders.length;\n if (length < arity) {\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, undefined,\n args, holders, undefined, undefined, arity - length);\n }\n var fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n return apply(fn, this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.find` or `_.findLast` function.\n *\n * @private\n * @param {Function} findIndexFunc The function to find the collection index.\n * @returns {Function} Returns the new find function.\n */\n function createFind(findIndexFunc) {\n return function(collection, predicate, fromIndex) {\n var iterable = Object(collection);\n if (!isArrayLike(collection)) {\n var iteratee = getIteratee(predicate, 3);\n collection = keys(collection);\n predicate = function(key) { return iteratee(iterable[key], key, iterable); };\n }\n var index = findIndexFunc(collection, predicate, fromIndex);\n return index > -1 ? iterable[iteratee ? collection[index] : index] : undefined;\n };\n }\n\n /**\n * Creates a `_.flow` or `_.flowRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new flow function.\n */\n function createFlow(fromRight) {\n return flatRest(function(funcs) {\n var length = funcs.length,\n index = length,\n prereq = LodashWrapper.prototype.thru;\n\n if (fromRight) {\n funcs.reverse();\n }\n while (index--) {\n var func = funcs[index];\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (prereq && !wrapper && getFuncName(func) == 'wrapper') {\n var wrapper = new LodashWrapper([], true);\n }\n }\n index = wrapper ? index : length;\n while (++index < length) {\n func = funcs[index];\n\n var funcName = getFuncName(func),\n data = funcName == 'wrapper' ? getData(func) : undefined;\n\n if (data && isLaziable(data[0]) &&\n data[1] == (WRAP_ARY_FLAG | WRAP_CURRY_FLAG | WRAP_PARTIAL_FLAG | WRAP_REARG_FLAG) &&\n !data[4].length && data[9] == 1\n ) {\n wrapper = wrapper[getFuncName(data[0])].apply(wrapper, data[3]);\n } else {\n wrapper = (func.length == 1 && isLaziable(func))\n ? wrapper[funcName]()\n : wrapper.thru(func);\n }\n }\n return function() {\n var args = arguments,\n value = args[0];\n\n if (wrapper && args.length == 1 && isArray(value)) {\n return wrapper.plant(value).value();\n }\n var index = 0,\n result = length ? funcs[index].apply(this, args) : value;\n\n while (++index < length) {\n result = funcs[index].call(this, result);\n }\n return result;\n };\n });\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with optional `this`\n * binding of `thisArg`, partial application, and currying.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [partialsRight] The arguments to append to those provided\n * to the new function.\n * @param {Array} [holdersRight] The `partialsRight` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createHybrid(func, bitmask, thisArg, partials, holders, partialsRight, holdersRight, argPos, ary, arity) {\n var isAry = bitmask & WRAP_ARY_FLAG,\n isBind = bitmask & WRAP_BIND_FLAG,\n isBindKey = bitmask & WRAP_BIND_KEY_FLAG,\n isCurried = bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG),\n isFlip = bitmask & WRAP_FLIP_FLAG,\n Ctor = isBindKey ? undefined : createCtor(func);\n\n function wrapper() {\n var length = arguments.length,\n args = Array(length),\n index = length;\n\n while (index--) {\n args[index] = arguments[index];\n }\n if (isCurried) {\n var placeholder = getHolder(wrapper),\n holdersCount = countHolders(args, placeholder);\n }\n if (partials) {\n args = composeArgs(args, partials, holders, isCurried);\n }\n if (partialsRight) {\n args = composeArgsRight(args, partialsRight, holdersRight, isCurried);\n }\n length -= holdersCount;\n if (isCurried && length < arity) {\n var newHolders = replaceHolders(args, placeholder);\n return createRecurry(\n func, bitmask, createHybrid, wrapper.placeholder, thisArg,\n args, newHolders, argPos, ary, arity - length\n );\n }\n var thisBinding = isBind ? thisArg : this,\n fn = isBindKey ? thisBinding[func] : func;\n\n length = args.length;\n if (argPos) {\n args = reorder(args, argPos);\n } else if (isFlip && length > 1) {\n args.reverse();\n }\n if (isAry && ary < length) {\n args.length = ary;\n }\n if (this && this !== root && this instanceof wrapper) {\n fn = Ctor || createCtor(fn);\n }\n return fn.apply(thisBinding, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a function like `_.invertBy`.\n *\n * @private\n * @param {Function} setter The function to set accumulator values.\n * @param {Function} toIteratee The function to resolve iteratees.\n * @returns {Function} Returns the new inverter function.\n */\n function createInverter(setter, toIteratee) {\n return function(object, iteratee) {\n return baseInverter(object, setter, toIteratee(iteratee), {});\n };\n }\n\n /**\n * Creates a function that performs a mathematical operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @param {number} [defaultValue] The value used for `undefined` arguments.\n * @returns {Function} Returns the new mathematical operation function.\n */\n function createMathOperation(operator, defaultValue) {\n return function(value, other) {\n var result;\n if (value === undefined && other === undefined) {\n return defaultValue;\n }\n if (value !== undefined) {\n result = value;\n }\n if (other !== undefined) {\n if (result === undefined) {\n return other;\n }\n if (typeof value == 'string' || typeof other == 'string') {\n value = baseToString(value);\n other = baseToString(other);\n } else {\n value = baseToNumber(value);\n other = baseToNumber(other);\n }\n result = operator(value, other);\n }\n return result;\n };\n }\n\n /**\n * Creates a function like `_.over`.\n *\n * @private\n * @param {Function} arrayFunc The function to iterate over iteratees.\n * @returns {Function} Returns the new over function.\n */\n function createOver(arrayFunc) {\n return flatRest(function(iteratees) {\n iteratees = arrayMap(iteratees, baseUnary(getIteratee()));\n return baseRest(function(args) {\n var thisArg = this;\n return arrayFunc(iteratees, function(iteratee) {\n return apply(iteratee, thisArg, args);\n });\n });\n });\n }\n\n /**\n * Creates the padding for `string` based on `length`. The `chars` string\n * is truncated if the number of characters exceeds `length`.\n *\n * @private\n * @param {number} length The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padding for `string`.\n */\n function createPadding(length, chars) {\n chars = chars === undefined ? ' ' : baseToString(chars);\n\n var charsLength = chars.length;\n if (charsLength < 2) {\n return charsLength ? baseRepeat(chars, length) : chars;\n }\n var result = baseRepeat(chars, nativeCeil(length / stringSize(chars)));\n return hasUnicode(chars)\n ? castSlice(stringToArray(result), 0, length).join('')\n : result.slice(0, length);\n }\n\n /**\n * Creates a function that wraps `func` to invoke it with the `this` binding\n * of `thisArg` and `partials` prepended to the arguments it receives.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {Array} partials The arguments to prepend to those provided to\n * the new function.\n * @returns {Function} Returns the new wrapped function.\n */\n function createPartial(func, bitmask, thisArg, partials) {\n var isBind = bitmask & WRAP_BIND_FLAG,\n Ctor = createCtor(func);\n\n function wrapper() {\n var argsIndex = -1,\n argsLength = arguments.length,\n leftIndex = -1,\n leftLength = partials.length,\n args = Array(leftLength + argsLength),\n fn = (this && this !== root && this instanceof wrapper) ? Ctor : func;\n\n while (++leftIndex < leftLength) {\n args[leftIndex] = partials[leftIndex];\n }\n while (argsLength--) {\n args[leftIndex++] = arguments[++argsIndex];\n }\n return apply(fn, isBind ? thisArg : this, args);\n }\n return wrapper;\n }\n\n /**\n * Creates a `_.range` or `_.rangeRight` function.\n *\n * @private\n * @param {boolean} [fromRight] Specify iterating from right to left.\n * @returns {Function} Returns the new range function.\n */\n function createRange(fromRight) {\n return function(start, end, step) {\n if (step && typeof step != 'number' && isIterateeCall(start, end, step)) {\n end = step = undefined;\n }\n // Ensure the sign of `-0` is preserved.\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n step = step === undefined ? (start < end ? 1 : -1) : toFinite(step);\n return baseRange(start, end, step, fromRight);\n };\n }\n\n /**\n * Creates a function that performs a relational operation on two values.\n *\n * @private\n * @param {Function} operator The function to perform the operation.\n * @returns {Function} Returns the new relational operation function.\n */\n function createRelationalOperation(operator) {\n return function(value, other) {\n if (!(typeof value == 'string' && typeof other == 'string')) {\n value = toNumber(value);\n other = toNumber(other);\n }\n return operator(value, other);\n };\n }\n\n /**\n * Creates a function that wraps `func` to continue currying.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @param {Function} wrapFunc The function to create the `func` wrapper.\n * @param {*} placeholder The placeholder value.\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to prepend to those provided to\n * the new function.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createRecurry(func, bitmask, wrapFunc, placeholder, thisArg, partials, holders, argPos, ary, arity) {\n var isCurry = bitmask & WRAP_CURRY_FLAG,\n newHolders = isCurry ? holders : undefined,\n newHoldersRight = isCurry ? undefined : holders,\n newPartials = isCurry ? partials : undefined,\n newPartialsRight = isCurry ? undefined : partials;\n\n bitmask |= (isCurry ? WRAP_PARTIAL_FLAG : WRAP_PARTIAL_RIGHT_FLAG);\n bitmask &= ~(isCurry ? WRAP_PARTIAL_RIGHT_FLAG : WRAP_PARTIAL_FLAG);\n\n if (!(bitmask & WRAP_CURRY_BOUND_FLAG)) {\n bitmask &= ~(WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG);\n }\n var newData = [\n func, bitmask, thisArg, newPartials, newHolders, newPartialsRight,\n newHoldersRight, argPos, ary, arity\n ];\n\n var result = wrapFunc.apply(undefined, newData);\n if (isLaziable(func)) {\n setData(result, newData);\n }\n result.placeholder = placeholder;\n return setWrapToString(result, func, bitmask);\n }\n\n /**\n * Creates a function like `_.round`.\n *\n * @private\n * @param {string} methodName The name of the `Math` method to use when rounding.\n * @returns {Function} Returns the new round function.\n */\n function createRound(methodName) {\n var func = Math[methodName];\n return function(number, precision) {\n number = toNumber(number);\n precision = precision == null ? 0 : nativeMin(toInteger(precision), 292);\n if (precision && nativeIsFinite(number)) {\n // Shift with exponential notation to avoid floating-point issues.\n // See [MDN](https://mdn.io/round#Examples) for more details.\n var pair = (toString(number) + 'e').split('e'),\n value = func(pair[0] + 'e' + (+pair[1] + precision));\n\n pair = (toString(value) + 'e').split('e');\n return +(pair[0] + 'e' + (+pair[1] - precision));\n }\n return func(number);\n };\n }\n\n /**\n * Creates a set object of `values`.\n *\n * @private\n * @param {Array} values The values to add to the set.\n * @returns {Object} Returns the new set.\n */\n var createSet = !(Set && (1 / setToArray(new Set([,-0]))[1]) == INFINITY) ? noop : function(values) {\n return new Set(values);\n };\n\n /**\n * Creates a `_.toPairs` or `_.toPairsIn` function.\n *\n * @private\n * @param {Function} keysFunc The function to get the keys of a given object.\n * @returns {Function} Returns the new pairs function.\n */\n function createToPairs(keysFunc) {\n return function(object) {\n var tag = getTag(object);\n if (tag == mapTag) {\n return mapToArray(object);\n }\n if (tag == setTag) {\n return setToPairs(object);\n }\n return baseToPairs(object, keysFunc(object));\n };\n }\n\n /**\n * Creates a function that either curries or invokes `func` with optional\n * `this` binding and partially applied arguments.\n *\n * @private\n * @param {Function|string} func The function or method name to wrap.\n * @param {number} bitmask The bitmask flags.\n * 1 - `_.bind`\n * 2 - `_.bindKey`\n * 4 - `_.curry` or `_.curryRight` of a bound function\n * 8 - `_.curry`\n * 16 - `_.curryRight`\n * 32 - `_.partial`\n * 64 - `_.partialRight`\n * 128 - `_.rearg`\n * 256 - `_.ary`\n * 512 - `_.flip`\n * @param {*} [thisArg] The `this` binding of `func`.\n * @param {Array} [partials] The arguments to be partially applied.\n * @param {Array} [holders] The `partials` placeholder indexes.\n * @param {Array} [argPos] The argument positions of the new function.\n * @param {number} [ary] The arity cap of `func`.\n * @param {number} [arity] The arity of `func`.\n * @returns {Function} Returns the new wrapped function.\n */\n function createWrap(func, bitmask, thisArg, partials, holders, argPos, ary, arity) {\n var isBindKey = bitmask & WRAP_BIND_KEY_FLAG;\n if (!isBindKey && typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var length = partials ? partials.length : 0;\n if (!length) {\n bitmask &= ~(WRAP_PARTIAL_FLAG | WRAP_PARTIAL_RIGHT_FLAG);\n partials = holders = undefined;\n }\n ary = ary === undefined ? ary : nativeMax(toInteger(ary), 0);\n arity = arity === undefined ? arity : toInteger(arity);\n length -= holders ? holders.length : 0;\n\n if (bitmask & WRAP_PARTIAL_RIGHT_FLAG) {\n var partialsRight = partials,\n holdersRight = holders;\n\n partials = holders = undefined;\n }\n var data = isBindKey ? undefined : getData(func);\n\n var newData = [\n func, bitmask, thisArg, partials, holders, partialsRight, holdersRight,\n argPos, ary, arity\n ];\n\n if (data) {\n mergeData(newData, data);\n }\n func = newData[0];\n bitmask = newData[1];\n thisArg = newData[2];\n partials = newData[3];\n holders = newData[4];\n arity = newData[9] = newData[9] === undefined\n ? (isBindKey ? 0 : func.length)\n : nativeMax(newData[9] - length, 0);\n\n if (!arity && bitmask & (WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG)) {\n bitmask &= ~(WRAP_CURRY_FLAG | WRAP_CURRY_RIGHT_FLAG);\n }\n if (!bitmask || bitmask == WRAP_BIND_FLAG) {\n var result = createBind(func, bitmask, thisArg);\n } else if (bitmask == WRAP_CURRY_FLAG || bitmask == WRAP_CURRY_RIGHT_FLAG) {\n result = createCurry(func, bitmask, arity);\n } else if ((bitmask == WRAP_PARTIAL_FLAG || bitmask == (WRAP_BIND_FLAG | WRAP_PARTIAL_FLAG)) && !holders.length) {\n result = createPartial(func, bitmask, thisArg, partials);\n } else {\n result = createHybrid.apply(undefined, newData);\n }\n var setter = data ? baseSetData : setData;\n return setWrapToString(setter(result, newData), func, bitmask);\n }\n\n /**\n * Used by `_.defaults` to customize its `_.assignIn` use to assign properties\n * of source objects to the destination object for all destination properties\n * that resolve to `undefined`.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to assign.\n * @param {Object} object The parent object of `objValue`.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsAssignIn(objValue, srcValue, key, object) {\n if (objValue === undefined ||\n (eq(objValue, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n return srcValue;\n }\n return objValue;\n }\n\n /**\n * Used by `_.defaultsDeep` to customize its `_.merge` use to merge source\n * objects into destination objects that are passed thru.\n *\n * @private\n * @param {*} objValue The destination value.\n * @param {*} srcValue The source value.\n * @param {string} key The key of the property to merge.\n * @param {Object} object The parent object of `objValue`.\n * @param {Object} source The parent object of `srcValue`.\n * @param {Object} [stack] Tracks traversed source values and their merged\n * counterparts.\n * @returns {*} Returns the value to assign.\n */\n function customDefaultsMerge(objValue, srcValue, key, object, source, stack) {\n if (isObject(objValue) && isObject(srcValue)) {\n // Recursively merge objects and arrays (susceptible to call stack limits).\n stack.set(srcValue, objValue);\n baseMerge(objValue, srcValue, undefined, customDefaultsMerge, stack);\n stack['delete'](srcValue);\n }\n return objValue;\n }\n\n /**\n * Used by `_.omit` to customize its `_.cloneDeep` use to only clone plain\n * objects.\n *\n * @private\n * @param {*} value The value to inspect.\n * @param {string} key The key of the property to inspect.\n * @returns {*} Returns the uncloned value or `undefined` to defer cloning to `_.cloneDeep`.\n */\n function customOmitClone(value) {\n return isPlainObject(value) ? undefined : value;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for arrays with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Array} array The array to compare.\n * @param {Array} other The other array to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `array` and `other` objects.\n * @returns {boolean} Returns `true` if the arrays are equivalent, else `false`.\n */\n function equalArrays(array, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n arrLength = array.length,\n othLength = other.length;\n\n if (arrLength != othLength && !(isPartial && othLength > arrLength)) {\n return false;\n }\n // Check that cyclic values are equal.\n var arrStacked = stack.get(array);\n var othStacked = stack.get(other);\n if (arrStacked && othStacked) {\n return arrStacked == other && othStacked == array;\n }\n var index = -1,\n result = true,\n seen = (bitmask & COMPARE_UNORDERED_FLAG) ? new SetCache : undefined;\n\n stack.set(array, other);\n stack.set(other, array);\n\n // Ignore non-index properties.\n while (++index < arrLength) {\n var arrValue = array[index],\n othValue = other[index];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, arrValue, index, other, array, stack)\n : customizer(arrValue, othValue, index, array, other, stack);\n }\n if (compared !== undefined) {\n if (compared) {\n continue;\n }\n result = false;\n break;\n }\n // Recursively compare arrays (susceptible to call stack limits).\n if (seen) {\n if (!arraySome(other, function(othValue, othIndex) {\n if (!cacheHas(seen, othIndex) &&\n (arrValue === othValue || equalFunc(arrValue, othValue, bitmask, customizer, stack))) {\n return seen.push(othIndex);\n }\n })) {\n result = false;\n break;\n }\n } else if (!(\n arrValue === othValue ||\n equalFunc(arrValue, othValue, bitmask, customizer, stack)\n )) {\n result = false;\n break;\n }\n }\n stack['delete'](array);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for comparing objects of\n * the same `toStringTag`.\n *\n * **Note:** This function only supports comparing values with tags of\n * `Boolean`, `Date`, `Error`, `Number`, `RegExp`, or `String`.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {string} tag The `toStringTag` of the objects to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalByTag(object, other, tag, bitmask, customizer, equalFunc, stack) {\n switch (tag) {\n case dataViewTag:\n if ((object.byteLength != other.byteLength) ||\n (object.byteOffset != other.byteOffset)) {\n return false;\n }\n object = object.buffer;\n other = other.buffer;\n\n case arrayBufferTag:\n if ((object.byteLength != other.byteLength) ||\n !equalFunc(new Uint8Array(object), new Uint8Array(other))) {\n return false;\n }\n return true;\n\n case boolTag:\n case dateTag:\n case numberTag:\n // Coerce booleans to `1` or `0` and dates to milliseconds.\n // Invalid dates are coerced to `NaN`.\n return eq(+object, +other);\n\n case errorTag:\n return object.name == other.name && object.message == other.message;\n\n case regexpTag:\n case stringTag:\n // Coerce regexes to strings and treat strings, primitives and objects,\n // as equal. See http://www.ecma-international.org/ecma-262/7.0/#sec-regexp.prototype.tostring\n // for more details.\n return object == (other + '');\n\n case mapTag:\n var convert = mapToArray;\n\n case setTag:\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG;\n convert || (convert = setToArray);\n\n if (object.size != other.size && !isPartial) {\n return false;\n }\n // Assume cyclic values are equal.\n var stacked = stack.get(object);\n if (stacked) {\n return stacked == other;\n }\n bitmask |= COMPARE_UNORDERED_FLAG;\n\n // Recursively compare objects (susceptible to call stack limits).\n stack.set(object, other);\n var result = equalArrays(convert(object), convert(other), bitmask, customizer, equalFunc, stack);\n stack['delete'](object);\n return result;\n\n case symbolTag:\n if (symbolValueOf) {\n return symbolValueOf.call(object) == symbolValueOf.call(other);\n }\n }\n return false;\n }\n\n /**\n * A specialized version of `baseIsEqualDeep` for objects with support for\n * partial deep comparisons.\n *\n * @private\n * @param {Object} object The object to compare.\n * @param {Object} other The other object to compare.\n * @param {number} bitmask The bitmask flags. See `baseIsEqual` for more details.\n * @param {Function} customizer The function to customize comparisons.\n * @param {Function} equalFunc The function to determine equivalents of values.\n * @param {Object} stack Tracks traversed `object` and `other` objects.\n * @returns {boolean} Returns `true` if the objects are equivalent, else `false`.\n */\n function equalObjects(object, other, bitmask, customizer, equalFunc, stack) {\n var isPartial = bitmask & COMPARE_PARTIAL_FLAG,\n objProps = getAllKeys(object),\n objLength = objProps.length,\n othProps = getAllKeys(other),\n othLength = othProps.length;\n\n if (objLength != othLength && !isPartial) {\n return false;\n }\n var index = objLength;\n while (index--) {\n var key = objProps[index];\n if (!(isPartial ? key in other : hasOwnProperty.call(other, key))) {\n return false;\n }\n }\n // Check that cyclic values are equal.\n var objStacked = stack.get(object);\n var othStacked = stack.get(other);\n if (objStacked && othStacked) {\n return objStacked == other && othStacked == object;\n }\n var result = true;\n stack.set(object, other);\n stack.set(other, object);\n\n var skipCtor = isPartial;\n while (++index < objLength) {\n key = objProps[index];\n var objValue = object[key],\n othValue = other[key];\n\n if (customizer) {\n var compared = isPartial\n ? customizer(othValue, objValue, key, other, object, stack)\n : customizer(objValue, othValue, key, object, other, stack);\n }\n // Recursively compare objects (susceptible to call stack limits).\n if (!(compared === undefined\n ? (objValue === othValue || equalFunc(objValue, othValue, bitmask, customizer, stack))\n : compared\n )) {\n result = false;\n break;\n }\n skipCtor || (skipCtor = key == 'constructor');\n }\n if (result && !skipCtor) {\n var objCtor = object.constructor,\n othCtor = other.constructor;\n\n // Non `Object` object instances with different constructors are not equal.\n if (objCtor != othCtor &&\n ('constructor' in object && 'constructor' in other) &&\n !(typeof objCtor == 'function' && objCtor instanceof objCtor &&\n typeof othCtor == 'function' && othCtor instanceof othCtor)) {\n result = false;\n }\n }\n stack['delete'](object);\n stack['delete'](other);\n return result;\n }\n\n /**\n * A specialized version of `baseRest` which flattens the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @returns {Function} Returns the new function.\n */\n function flatRest(func) {\n return setToString(overRest(func, undefined, flatten), func + '');\n }\n\n /**\n * Creates an array of own enumerable property names and symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeys(object) {\n return baseGetAllKeys(object, keys, getSymbols);\n }\n\n /**\n * Creates an array of own and inherited enumerable property names and\n * symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names and symbols.\n */\n function getAllKeysIn(object) {\n return baseGetAllKeys(object, keysIn, getSymbolsIn);\n }\n\n /**\n * Gets metadata for `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {*} Returns the metadata for `func`.\n */\n var getData = !metaMap ? noop : function(func) {\n return metaMap.get(func);\n };\n\n /**\n * Gets the name of `func`.\n *\n * @private\n * @param {Function} func The function to query.\n * @returns {string} Returns the function name.\n */\n function getFuncName(func) {\n var result = (func.name + ''),\n array = realNames[result],\n length = hasOwnProperty.call(realNames, result) ? array.length : 0;\n\n while (length--) {\n var data = array[length],\n otherFunc = data.func;\n if (otherFunc == null || otherFunc == func) {\n return data.name;\n }\n }\n return result;\n }\n\n /**\n * Gets the argument placeholder value for `func`.\n *\n * @private\n * @param {Function} func The function to inspect.\n * @returns {*} Returns the placeholder value.\n */\n function getHolder(func) {\n var object = hasOwnProperty.call(lodash, 'placeholder') ? lodash : func;\n return object.placeholder;\n }\n\n /**\n * Gets the appropriate \"iteratee\" function. If `_.iteratee` is customized,\n * this function returns the custom method, otherwise it returns `baseIteratee`.\n * If arguments are provided, the chosen function is invoked with them and\n * its result is returned.\n *\n * @private\n * @param {*} [value] The value to convert to an iteratee.\n * @param {number} [arity] The arity of the created iteratee.\n * @returns {Function} Returns the chosen function or its result.\n */\n function getIteratee() {\n var result = lodash.iteratee || iteratee;\n result = result === iteratee ? baseIteratee : result;\n return arguments.length ? result(arguments[0], arguments[1]) : result;\n }\n\n /**\n * Gets the data for `map`.\n *\n * @private\n * @param {Object} map The map to query.\n * @param {string} key The reference key.\n * @returns {*} Returns the map data.\n */\n function getMapData(map, key) {\n var data = map.__data__;\n return isKeyable(key)\n ? data[typeof key == 'string' ? 'string' : 'hash']\n : data.map;\n }\n\n /**\n * Gets the property names, values, and compare flags of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the match data of `object`.\n */\n function getMatchData(object) {\n var result = keys(object),\n length = result.length;\n\n while (length--) {\n var key = result[length],\n value = object[key];\n\n result[length] = [key, value, isStrictComparable(value)];\n }\n return result;\n }\n\n /**\n * Gets the native function at `key` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the method to get.\n * @returns {*} Returns the function if it's native, else `undefined`.\n */\n function getNative(object, key) {\n var value = getValue(object, key);\n return baseIsNative(value) ? value : undefined;\n }\n\n /**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\n function getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n }\n\n /**\n * Creates an array of the own enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbols = !nativeGetSymbols ? stubArray : function(object) {\n if (object == null) {\n return [];\n }\n object = Object(object);\n return arrayFilter(nativeGetSymbols(object), function(symbol) {\n return propertyIsEnumerable.call(object, symbol);\n });\n };\n\n /**\n * Creates an array of the own and inherited enumerable symbols of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of symbols.\n */\n var getSymbolsIn = !nativeGetSymbols ? stubArray : function(object) {\n var result = [];\n while (object) {\n arrayPush(result, getSymbols(object));\n object = getPrototype(object);\n }\n return result;\n };\n\n /**\n * Gets the `toStringTag` of `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\n var getTag = baseGetTag;\n\n // Fallback for data views, maps, sets, and weak maps in IE 11 and promises in Node.js < 6.\n if ((DataView && getTag(new DataView(new ArrayBuffer(1))) != dataViewTag) ||\n (Map && getTag(new Map) != mapTag) ||\n (Promise && getTag(Promise.resolve()) != promiseTag) ||\n (Set && getTag(new Set) != setTag) ||\n (WeakMap && getTag(new WeakMap) != weakMapTag)) {\n getTag = function(value) {\n var result = baseGetTag(value),\n Ctor = result == objectTag ? value.constructor : undefined,\n ctorString = Ctor ? toSource(Ctor) : '';\n\n if (ctorString) {\n switch (ctorString) {\n case dataViewCtorString: return dataViewTag;\n case mapCtorString: return mapTag;\n case promiseCtorString: return promiseTag;\n case setCtorString: return setTag;\n case weakMapCtorString: return weakMapTag;\n }\n }\n return result;\n };\n }\n\n /**\n * Gets the view, applying any `transforms` to the `start` and `end` positions.\n *\n * @private\n * @param {number} start The start of the view.\n * @param {number} end The end of the view.\n * @param {Array} transforms The transformations to apply to the view.\n * @returns {Object} Returns an object containing the `start` and `end`\n * positions of the view.\n */\n function getView(start, end, transforms) {\n var index = -1,\n length = transforms.length;\n\n while (++index < length) {\n var data = transforms[index],\n size = data.size;\n\n switch (data.type) {\n case 'drop': start += size; break;\n case 'dropRight': end -= size; break;\n case 'take': end = nativeMin(end, start + size); break;\n case 'takeRight': start = nativeMax(start, end - size); break;\n }\n }\n return { 'start': start, 'end': end };\n }\n\n /**\n * Extracts wrapper details from the `source` body comment.\n *\n * @private\n * @param {string} source The source to inspect.\n * @returns {Array} Returns the wrapper details.\n */\n function getWrapDetails(source) {\n var match = source.match(reWrapDetails);\n return match ? match[1].split(reSplitDetails) : [];\n }\n\n /**\n * Checks if `path` exists on `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @param {Function} hasFunc The function to check properties.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n */\n function hasPath(object, path, hasFunc) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length,\n result = false;\n\n while (++index < length) {\n var key = toKey(path[index]);\n if (!(result = object != null && hasFunc(object, key))) {\n break;\n }\n object = object[key];\n }\n if (result || ++index != length) {\n return result;\n }\n length = object == null ? 0 : object.length;\n return !!length && isLength(length) && isIndex(key, length) &&\n (isArray(object) || isArguments(object));\n }\n\n /**\n * Initializes an array clone.\n *\n * @private\n * @param {Array} array The array to clone.\n * @returns {Array} Returns the initialized clone.\n */\n function initCloneArray(array) {\n var length = array.length,\n result = new array.constructor(length);\n\n // Add properties assigned by `RegExp#exec`.\n if (length && typeof array[0] == 'string' && hasOwnProperty.call(array, 'index')) {\n result.index = array.index;\n result.input = array.input;\n }\n return result;\n }\n\n /**\n * Initializes an object clone.\n *\n * @private\n * @param {Object} object The object to clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneObject(object) {\n return (typeof object.constructor == 'function' && !isPrototype(object))\n ? baseCreate(getPrototype(object))\n : {};\n }\n\n /**\n * Initializes an object clone based on its `toStringTag`.\n *\n * **Note:** This function only supports cloning values with tags of\n * `Boolean`, `Date`, `Error`, `Map`, `Number`, `RegExp`, `Set`, or `String`.\n *\n * @private\n * @param {Object} object The object to clone.\n * @param {string} tag The `toStringTag` of the object to clone.\n * @param {boolean} [isDeep] Specify a deep clone.\n * @returns {Object} Returns the initialized clone.\n */\n function initCloneByTag(object, tag, isDeep) {\n var Ctor = object.constructor;\n switch (tag) {\n case arrayBufferTag:\n return cloneArrayBuffer(object);\n\n case boolTag:\n case dateTag:\n return new Ctor(+object);\n\n case dataViewTag:\n return cloneDataView(object, isDeep);\n\n case float32Tag: case float64Tag:\n case int8Tag: case int16Tag: case int32Tag:\n case uint8Tag: case uint8ClampedTag: case uint16Tag: case uint32Tag:\n return cloneTypedArray(object, isDeep);\n\n case mapTag:\n return new Ctor;\n\n case numberTag:\n case stringTag:\n return new Ctor(object);\n\n case regexpTag:\n return cloneRegExp(object);\n\n case setTag:\n return new Ctor;\n\n case symbolTag:\n return cloneSymbol(object);\n }\n }\n\n /**\n * Inserts wrapper `details` in a comment at the top of the `source` body.\n *\n * @private\n * @param {string} source The source to modify.\n * @returns {Array} details The details to insert.\n * @returns {string} Returns the modified source.\n */\n function insertWrapDetails(source, details) {\n var length = details.length;\n if (!length) {\n return source;\n }\n var lastIndex = length - 1;\n details[lastIndex] = (length > 1 ? '& ' : '') + details[lastIndex];\n details = details.join(length > 2 ? ', ' : ' ');\n return source.replace(reWrapComment, '{\\n/* [wrapped with ' + details + '] */\\n');\n }\n\n /**\n * Checks if `value` is a flattenable `arguments` object or array.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is flattenable, else `false`.\n */\n function isFlattenable(value) {\n return isArray(value) || isArguments(value) ||\n !!(spreadableSymbol && value && value[spreadableSymbol]);\n }\n\n /**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\n function isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n }\n\n /**\n * Checks if the given arguments are from an iteratee call.\n *\n * @private\n * @param {*} value The potential iteratee value argument.\n * @param {*} index The potential iteratee index or key argument.\n * @param {*} object The potential iteratee object argument.\n * @returns {boolean} Returns `true` if the arguments are from an iteratee call,\n * else `false`.\n */\n function isIterateeCall(value, index, object) {\n if (!isObject(object)) {\n return false;\n }\n var type = typeof index;\n if (type == 'number'\n ? (isArrayLike(object) && isIndex(index, object.length))\n : (type == 'string' && index in object)\n ) {\n return eq(object[index], value);\n }\n return false;\n }\n\n /**\n * Checks if `value` is a property name and not a property path.\n *\n * @private\n * @param {*} value The value to check.\n * @param {Object} [object] The object to query keys on.\n * @returns {boolean} Returns `true` if `value` is a property name, else `false`.\n */\n function isKey(value, object) {\n if (isArray(value)) {\n return false;\n }\n var type = typeof value;\n if (type == 'number' || type == 'symbol' || type == 'boolean' ||\n value == null || isSymbol(value)) {\n return true;\n }\n return reIsPlainProp.test(value) || !reIsDeepProp.test(value) ||\n (object != null && value in Object(object));\n }\n\n /**\n * Checks if `value` is suitable for use as unique object key.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is suitable, else `false`.\n */\n function isKeyable(value) {\n var type = typeof value;\n return (type == 'string' || type == 'number' || type == 'symbol' || type == 'boolean')\n ? (value !== '__proto__')\n : (value === null);\n }\n\n /**\n * Checks if `func` has a lazy counterpart.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` has a lazy counterpart,\n * else `false`.\n */\n function isLaziable(func) {\n var funcName = getFuncName(func),\n other = lodash[funcName];\n\n if (typeof other != 'function' || !(funcName in LazyWrapper.prototype)) {\n return false;\n }\n if (func === other) {\n return true;\n }\n var data = getData(other);\n return !!data && func === data[0];\n }\n\n /**\n * Checks if `func` has its source masked.\n *\n * @private\n * @param {Function} func The function to check.\n * @returns {boolean} Returns `true` if `func` is masked, else `false`.\n */\n function isMasked(func) {\n return !!maskSrcKey && (maskSrcKey in func);\n }\n\n /**\n * Checks if `func` is capable of being masked.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `func` is maskable, else `false`.\n */\n var isMaskable = coreJsData ? isFunction : stubFalse;\n\n /**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\n function isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n }\n\n /**\n * Checks if `value` is suitable for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` if suitable for strict\n * equality comparisons, else `false`.\n */\n function isStrictComparable(value) {\n return value === value && !isObject(value);\n }\n\n /**\n * A specialized version of `matchesProperty` for source values suitable\n * for strict equality comparisons, i.e. `===`.\n *\n * @private\n * @param {string} key The key of the property to get.\n * @param {*} srcValue The value to match.\n * @returns {Function} Returns the new spec function.\n */\n function matchesStrictComparable(key, srcValue) {\n return function(object) {\n if (object == null) {\n return false;\n }\n return object[key] === srcValue &&\n (srcValue !== undefined || (key in Object(object)));\n };\n }\n\n /**\n * A specialized version of `_.memoize` which clears the memoized function's\n * cache when it exceeds `MAX_MEMOIZE_SIZE`.\n *\n * @private\n * @param {Function} func The function to have its output memoized.\n * @returns {Function} Returns the new memoized function.\n */\n function memoizeCapped(func) {\n var result = memoize(func, function(key) {\n if (cache.size === MAX_MEMOIZE_SIZE) {\n cache.clear();\n }\n return key;\n });\n\n var cache = result.cache;\n return result;\n }\n\n /**\n * Merges the function metadata of `source` into `data`.\n *\n * Merging metadata reduces the number of wrappers used to invoke a function.\n * This is possible because methods like `_.bind`, `_.curry`, and `_.partial`\n * may be applied regardless of execution order. Methods like `_.ary` and\n * `_.rearg` modify function arguments, making the order in which they are\n * executed important, preventing the merging of metadata. However, we make\n * an exception for a safe combined case where curried functions have `_.ary`\n * and or `_.rearg` applied.\n *\n * @private\n * @param {Array} data The destination metadata.\n * @param {Array} source The source metadata.\n * @returns {Array} Returns `data`.\n */\n function mergeData(data, source) {\n var bitmask = data[1],\n srcBitmask = source[1],\n newBitmask = bitmask | srcBitmask,\n isCommon = newBitmask < (WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG | WRAP_ARY_FLAG);\n\n var isCombo =\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_CURRY_FLAG)) ||\n ((srcBitmask == WRAP_ARY_FLAG) && (bitmask == WRAP_REARG_FLAG) && (data[7].length <= source[8])) ||\n ((srcBitmask == (WRAP_ARY_FLAG | WRAP_REARG_FLAG)) && (source[7].length <= source[8]) && (bitmask == WRAP_CURRY_FLAG));\n\n // Exit early if metadata can't be merged.\n if (!(isCommon || isCombo)) {\n return data;\n }\n // Use source `thisArg` if available.\n if (srcBitmask & WRAP_BIND_FLAG) {\n data[2] = source[2];\n // Set when currying a bound function.\n newBitmask |= bitmask & WRAP_BIND_FLAG ? 0 : WRAP_CURRY_BOUND_FLAG;\n }\n // Compose partial arguments.\n var value = source[3];\n if (value) {\n var partials = data[3];\n data[3] = partials ? composeArgs(partials, value, source[4]) : value;\n data[4] = partials ? replaceHolders(data[3], PLACEHOLDER) : source[4];\n }\n // Compose partial right arguments.\n value = source[5];\n if (value) {\n partials = data[5];\n data[5] = partials ? composeArgsRight(partials, value, source[6]) : value;\n data[6] = partials ? replaceHolders(data[5], PLACEHOLDER) : source[6];\n }\n // Use source `argPos` if available.\n value = source[7];\n if (value) {\n data[7] = value;\n }\n // Use source `ary` if it's smaller.\n if (srcBitmask & WRAP_ARY_FLAG) {\n data[8] = data[8] == null ? source[8] : nativeMin(data[8], source[8]);\n }\n // Use source `arity` if one is not provided.\n if (data[9] == null) {\n data[9] = source[9];\n }\n // Use source `func` and merge bitmasks.\n data[0] = source[0];\n data[1] = newBitmask;\n\n return data;\n }\n\n /**\n * This function is like\n * [`Object.keys`](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * except that it includes inherited enumerable properties.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\n function nativeKeysIn(object) {\n var result = [];\n if (object != null) {\n for (var key in Object(object)) {\n result.push(key);\n }\n }\n return result;\n }\n\n /**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\n function objectToString(value) {\n return nativeObjectToString.call(value);\n }\n\n /**\n * A specialized version of `baseRest` which transforms the rest array.\n *\n * @private\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @param {Function} transform The rest array transform.\n * @returns {Function} Returns the new function.\n */\n function overRest(func, start, transform) {\n start = nativeMax(start === undefined ? (func.length - 1) : start, 0);\n return function() {\n var args = arguments,\n index = -1,\n length = nativeMax(args.length - start, 0),\n array = Array(length);\n\n while (++index < length) {\n array[index] = args[start + index];\n }\n index = -1;\n var otherArgs = Array(start + 1);\n while (++index < start) {\n otherArgs[index] = args[index];\n }\n otherArgs[start] = transform(array);\n return apply(func, this, otherArgs);\n };\n }\n\n /**\n * Gets the parent value at `path` of `object`.\n *\n * @private\n * @param {Object} object The object to query.\n * @param {Array} path The path to get the parent value of.\n * @returns {*} Returns the parent value.\n */\n function parent(object, path) {\n return path.length < 2 ? object : baseGet(object, baseSlice(path, 0, -1));\n }\n\n /**\n * Reorder `array` according to the specified indexes where the element at\n * the first index is assigned as the first element, the element at\n * the second index is assigned as the second element, and so on.\n *\n * @private\n * @param {Array} array The array to reorder.\n * @param {Array} indexes The arranged array indexes.\n * @returns {Array} Returns `array`.\n */\n function reorder(array, indexes) {\n var arrLength = array.length,\n length = nativeMin(indexes.length, arrLength),\n oldArray = copyArray(array);\n\n while (length--) {\n var index = indexes[length];\n array[length] = isIndex(index, arrLength) ? oldArray[index] : undefined;\n }\n return array;\n }\n\n /**\n * Gets the value at `key`, unless `key` is \"__proto__\" or \"constructor\".\n *\n * @private\n * @param {Object} object The object to query.\n * @param {string} key The key of the property to get.\n * @returns {*} Returns the property value.\n */\n function safeGet(object, key) {\n if (key === 'constructor' && typeof object[key] === 'function') {\n return;\n }\n\n if (key == '__proto__') {\n return;\n }\n\n return object[key];\n }\n\n /**\n * Sets metadata for `func`.\n *\n * **Note:** If this function becomes hot, i.e. is invoked a lot in a short\n * period of time, it will trip its breaker and transition to an identity\n * function to avoid garbage collection pauses in V8. See\n * [V8 issue 2070](https://bugs.chromium.org/p/v8/issues/detail?id=2070)\n * for more details.\n *\n * @private\n * @param {Function} func The function to associate metadata with.\n * @param {*} data The metadata.\n * @returns {Function} Returns `func`.\n */\n var setData = shortOut(baseSetData);\n\n /**\n * A simple wrapper around the global [`setTimeout`](https://mdn.io/setTimeout).\n *\n * @private\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @returns {number|Object} Returns the timer id or timeout object.\n */\n var setTimeout = ctxSetTimeout || function(func, wait) {\n return root.setTimeout(func, wait);\n };\n\n /**\n * Sets the `toString` method of `func` to return `string`.\n *\n * @private\n * @param {Function} func The function to modify.\n * @param {Function} string The `toString` result.\n * @returns {Function} Returns `func`.\n */\n var setToString = shortOut(baseSetToString);\n\n /**\n * Sets the `toString` method of `wrapper` to mimic the source of `reference`\n * with wrapper details in a comment at the top of the source body.\n *\n * @private\n * @param {Function} wrapper The function to modify.\n * @param {Function} reference The reference function.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Function} Returns `wrapper`.\n */\n function setWrapToString(wrapper, reference, bitmask) {\n var source = (reference + '');\n return setToString(wrapper, insertWrapDetails(source, updateWrapDetails(getWrapDetails(source), bitmask)));\n }\n\n /**\n * Creates a function that'll short out and invoke `identity` instead\n * of `func` when it's called `HOT_COUNT` or more times in `HOT_SPAN`\n * milliseconds.\n *\n * @private\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new shortable function.\n */\n function shortOut(func) {\n var count = 0,\n lastCalled = 0;\n\n return function() {\n var stamp = nativeNow(),\n remaining = HOT_SPAN - (stamp - lastCalled);\n\n lastCalled = stamp;\n if (remaining > 0) {\n if (++count >= HOT_COUNT) {\n return arguments[0];\n }\n } else {\n count = 0;\n }\n return func.apply(undefined, arguments);\n };\n }\n\n /**\n * A specialized version of `_.shuffle` which mutates and sets the size of `array`.\n *\n * @private\n * @param {Array} array The array to shuffle.\n * @param {number} [size=array.length] The size of `array`.\n * @returns {Array} Returns `array`.\n */\n function shuffleSelf(array, size) {\n var index = -1,\n length = array.length,\n lastIndex = length - 1;\n\n size = size === undefined ? length : size;\n while (++index < size) {\n var rand = baseRandom(index, lastIndex),\n value = array[rand];\n\n array[rand] = array[index];\n array[index] = value;\n }\n array.length = size;\n return array;\n }\n\n /**\n * Converts `string` to a property path array.\n *\n * @private\n * @param {string} string The string to convert.\n * @returns {Array} Returns the property path array.\n */\n var stringToPath = memoizeCapped(function(string) {\n var result = [];\n if (string.charCodeAt(0) === 46 /* . */) {\n result.push('');\n }\n string.replace(rePropName, function(match, number, quote, subString) {\n result.push(quote ? subString.replace(reEscapeChar, '$1') : (number || match));\n });\n return result;\n });\n\n /**\n * Converts `value` to a string key if it's not a string or symbol.\n *\n * @private\n * @param {*} value The value to inspect.\n * @returns {string|symbol} Returns the key.\n */\n function toKey(value) {\n if (typeof value == 'string' || isSymbol(value)) {\n return value;\n }\n var result = (value + '');\n return (result == '0' && (1 / value) == -INFINITY) ? '-0' : result;\n }\n\n /**\n * Converts `func` to its source code.\n *\n * @private\n * @param {Function} func The function to convert.\n * @returns {string} Returns the source code.\n */\n function toSource(func) {\n if (func != null) {\n try {\n return funcToString.call(func);\n } catch (e) {}\n try {\n return (func + '');\n } catch (e) {}\n }\n return '';\n }\n\n /**\n * Updates wrapper `details` based on `bitmask` flags.\n *\n * @private\n * @returns {Array} details The details to modify.\n * @param {number} bitmask The bitmask flags. See `createWrap` for more details.\n * @returns {Array} Returns `details`.\n */\n function updateWrapDetails(details, bitmask) {\n arrayEach(wrapFlags, function(pair) {\n var value = '_.' + pair[0];\n if ((bitmask & pair[1]) && !arrayIncludes(details, value)) {\n details.push(value);\n }\n });\n return details.sort();\n }\n\n /**\n * Creates a clone of `wrapper`.\n *\n * @private\n * @param {Object} wrapper The wrapper to clone.\n * @returns {Object} Returns the cloned wrapper.\n */\n function wrapperClone(wrapper) {\n if (wrapper instanceof LazyWrapper) {\n return wrapper.clone();\n }\n var result = new LodashWrapper(wrapper.__wrapped__, wrapper.__chain__);\n result.__actions__ = copyArray(wrapper.__actions__);\n result.__index__ = wrapper.__index__;\n result.__values__ = wrapper.__values__;\n return result;\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an array of elements split into groups the length of `size`.\n * If `array` can't be split evenly, the final chunk will be the remaining\n * elements.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to process.\n * @param {number} [size=1] The length of each chunk\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the new array of chunks.\n * @example\n *\n * _.chunk(['a', 'b', 'c', 'd'], 2);\n * // => [['a', 'b'], ['c', 'd']]\n *\n * _.chunk(['a', 'b', 'c', 'd'], 3);\n * // => [['a', 'b', 'c'], ['d']]\n */\n function chunk(array, size, guard) {\n if ((guard ? isIterateeCall(array, size, guard) : size === undefined)) {\n size = 1;\n } else {\n size = nativeMax(toInteger(size), 0);\n }\n var length = array == null ? 0 : array.length;\n if (!length || size < 1) {\n return [];\n }\n var index = 0,\n resIndex = 0,\n result = Array(nativeCeil(length / size));\n\n while (index < length) {\n result[resIndex++] = baseSlice(array, index, (index += size));\n }\n return result;\n }\n\n /**\n * Creates an array with all falsey values removed. The values `false`, `null`,\n * `0`, `\"\"`, `undefined`, and `NaN` are falsey.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to compact.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.compact([0, 1, false, 2, '', 3]);\n * // => [1, 2, 3]\n */\n function compact(array) {\n var index = -1,\n length = array == null ? 0 : array.length,\n resIndex = 0,\n result = [];\n\n while (++index < length) {\n var value = array[index];\n if (value) {\n result[resIndex++] = value;\n }\n }\n return result;\n }\n\n /**\n * Creates a new array concatenating `array` with any additional arrays\n * and/or values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to concatenate.\n * @param {...*} [values] The values to concatenate.\n * @returns {Array} Returns the new concatenated array.\n * @example\n *\n * var array = [1];\n * var other = _.concat(array, 2, [3], [[4]]);\n *\n * console.log(other);\n * // => [1, 2, 3, [4]]\n *\n * console.log(array);\n * // => [1]\n */\n function concat() {\n var length = arguments.length;\n if (!length) {\n return [];\n }\n var args = Array(length - 1),\n array = arguments[0],\n index = length;\n\n while (index--) {\n args[index - 1] = arguments[index];\n }\n return arrayPush(isArray(array) ? copyArray(array) : [array], baseFlatten(args, 1));\n }\n\n /**\n * Creates an array of `array` values not included in the other given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * **Note:** Unlike `_.pullAll`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.without, _.xor\n * @example\n *\n * _.difference([2, 1], [2, 3]);\n * // => [1]\n */\n var difference = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `iteratee` which\n * is invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * **Note:** Unlike `_.pullAllBy`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.differenceBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.differenceBy([{ 'x': 2 }, { 'x': 1 }], [{ 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var differenceBy = baseRest(function(array, values) {\n var iteratee = last(values);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.difference` except that it accepts `comparator`\n * which is invoked to compare elements of `array` to `values`. The order and\n * references of result values are determined by the first array. The comparator\n * is invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.pullAllWith`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...Array} [values] The values to exclude.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n *\n * _.differenceWith(objects, [{ 'x': 1, 'y': 2 }], _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }]\n */\n var differenceWith = baseRest(function(array, values) {\n var comparator = last(values);\n if (isArrayLikeObject(comparator)) {\n comparator = undefined;\n }\n return isArrayLikeObject(array)\n ? baseDifference(array, baseFlatten(values, 1, isArrayLikeObject, true), undefined, comparator)\n : [];\n });\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.drop([1, 2, 3]);\n * // => [2, 3]\n *\n * _.drop([1, 2, 3], 2);\n * // => [3]\n *\n * _.drop([1, 2, 3], 5);\n * // => []\n *\n * _.drop([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function drop(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with `n` elements dropped from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to drop.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.dropRight([1, 2, 3]);\n * // => [1, 2]\n *\n * _.dropRight([1, 2, 3], 2);\n * // => [1]\n *\n * _.dropRight([1, 2, 3], 5);\n * // => []\n *\n * _.dropRight([1, 2, 3], 0);\n * // => [1, 2, 3]\n */\n function dropRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the end.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.dropRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropRightWhile(users, ['active', false]);\n * // => objects for ['barney']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropRightWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` excluding elements dropped from the beginning.\n * Elements are dropped until `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.dropWhile(users, function(o) { return !o.active; });\n * // => objects for ['pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.dropWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.dropWhile(users, ['active', false]);\n * // => objects for ['pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.dropWhile(users, 'active');\n * // => objects for ['barney', 'fred', 'pebbles']\n */\n function dropWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), true)\n : [];\n }\n\n /**\n * Fills elements of `array` with `value` from `start` up to, but not\n * including, `end`.\n *\n * **Note:** This method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Array\n * @param {Array} array The array to fill.\n * @param {*} value The value to fill `array` with.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.fill(array, 'a');\n * console.log(array);\n * // => ['a', 'a', 'a']\n *\n * _.fill(Array(3), 2);\n * // => [2, 2, 2]\n *\n * _.fill([4, 6, 8, 10], '*', 1, 3);\n * // => [4, '*', '*', 10]\n */\n function fill(array, value, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (start && typeof start != 'number' && isIterateeCall(array, value, start)) {\n start = 0;\n end = length;\n }\n return baseFill(array, value, start, end);\n }\n\n /**\n * This method is like `_.find` except that it returns the index of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.findIndex(users, function(o) { return o.user == 'barney'; });\n * // => 0\n *\n * // The `_.matches` iteratee shorthand.\n * _.findIndex(users, { 'user': 'fred', 'active': false });\n * // => 1\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findIndex(users, ['active', false]);\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.findIndex(users, 'active');\n * // => 2\n */\n function findIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index);\n }\n\n /**\n * This method is like `_.findIndex` except that it iterates over elements\n * of `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the found element, else `-1`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.findLastIndex(users, function(o) { return o.user == 'pebbles'; });\n * // => 2\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastIndex(users, { 'user': 'barney', 'active': true });\n * // => 0\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastIndex(users, ['active', false]);\n * // => 2\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastIndex(users, 'active');\n * // => 0\n */\n function findLastIndex(array, predicate, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length - 1;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = fromIndex < 0\n ? nativeMax(length + index, 0)\n : nativeMin(index, length - 1);\n }\n return baseFindIndex(array, getIteratee(predicate, 3), index, true);\n }\n\n /**\n * Flattens `array` a single level deep.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flatten([1, [2, [3, [4]], 5]]);\n * // => [1, 2, [3, [4]], 5]\n */\n function flatten(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, 1) : [];\n }\n\n /**\n * Recursively flattens `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * _.flattenDeep([1, [2, [3, [4]], 5]]);\n * // => [1, 2, 3, 4, 5]\n */\n function flattenDeep(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseFlatten(array, INFINITY) : [];\n }\n\n /**\n * Recursively flatten `array` up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Array\n * @param {Array} array The array to flatten.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * var array = [1, [2, [3, [4]], 5]];\n *\n * _.flattenDepth(array, 1);\n * // => [1, 2, [3, [4]], 5]\n *\n * _.flattenDepth(array, 2);\n * // => [1, 2, 3, [4], 5]\n */\n function flattenDepth(array, depth) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(array, depth);\n }\n\n /**\n * The inverse of `_.toPairs`; this method returns an object composed\n * from key-value `pairs`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} pairs The key-value pairs.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.fromPairs([['a', 1], ['b', 2]]);\n * // => { 'a': 1, 'b': 2 }\n */\n function fromPairs(pairs) {\n var index = -1,\n length = pairs == null ? 0 : pairs.length,\n result = {};\n\n while (++index < length) {\n var pair = pairs[index];\n result[pair[0]] = pair[1];\n }\n return result;\n }\n\n /**\n * Gets the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias first\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the first element of `array`.\n * @example\n *\n * _.head([1, 2, 3]);\n * // => 1\n *\n * _.head([]);\n * // => undefined\n */\n function head(array) {\n return (array && array.length) ? array[0] : undefined;\n }\n\n /**\n * Gets the index at which the first occurrence of `value` is found in `array`\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. If `fromIndex` is negative, it's used as the\n * offset from the end of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.indexOf([1, 2, 1, 2], 2);\n * // => 1\n *\n * // Search from the `fromIndex`.\n * _.indexOf([1, 2, 1, 2], 2, 2);\n * // => 3\n */\n function indexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = fromIndex == null ? 0 : toInteger(fromIndex);\n if (index < 0) {\n index = nativeMax(length + index, 0);\n }\n return baseIndexOf(array, value, index);\n }\n\n /**\n * Gets all but the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.initial([1, 2, 3]);\n * // => [1, 2]\n */\n function initial(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 0, -1) : [];\n }\n\n /**\n * Creates an array of unique values that are included in all given arrays\n * using [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons. The order and references of result values are\n * determined by the first array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersection([2, 1], [2, 3]);\n * // => [2]\n */\n var intersection = baseRest(function(arrays) {\n var mapped = arrayMap(arrays, castArrayLikeObject);\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped)\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `iteratee`\n * which is invoked for each element of each `arrays` to generate the criterion\n * by which they're compared. The order and references of result values are\n * determined by the first array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * _.intersectionBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [2.1]\n *\n * // The `_.property` iteratee shorthand.\n * _.intersectionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }]\n */\n var intersectionBy = baseRest(function(arrays) {\n var iteratee = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n if (iteratee === last(mapped)) {\n iteratee = undefined;\n } else {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, getIteratee(iteratee, 2))\n : [];\n });\n\n /**\n * This method is like `_.intersection` except that it accepts `comparator`\n * which is invoked to compare elements of `arrays`. The order and references\n * of result values are determined by the first array. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of intersecting values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.intersectionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }]\n */\n var intersectionWith = baseRest(function(arrays) {\n var comparator = last(arrays),\n mapped = arrayMap(arrays, castArrayLikeObject);\n\n comparator = typeof comparator == 'function' ? comparator : undefined;\n if (comparator) {\n mapped.pop();\n }\n return (mapped.length && mapped[0] === arrays[0])\n ? baseIntersection(mapped, undefined, comparator)\n : [];\n });\n\n /**\n * Converts all elements in `array` into a string separated by `separator`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to convert.\n * @param {string} [separator=','] The element separator.\n * @returns {string} Returns the joined string.\n * @example\n *\n * _.join(['a', 'b', 'c'], '~');\n * // => 'a~b~c'\n */\n function join(array, separator) {\n return array == null ? '' : nativeJoin.call(array, separator);\n }\n\n /**\n * Gets the last element of `array`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {*} Returns the last element of `array`.\n * @example\n *\n * _.last([1, 2, 3]);\n * // => 3\n */\n function last(array) {\n var length = array == null ? 0 : array.length;\n return length ? array[length - 1] : undefined;\n }\n\n /**\n * This method is like `_.indexOf` except that it iterates over elements of\n * `array` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=array.length-1] The index to search from.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.lastIndexOf([1, 2, 1, 2], 2);\n * // => 3\n *\n * // Search from the `fromIndex`.\n * _.lastIndexOf([1, 2, 1, 2], 2, 2);\n * // => 1\n */\n function lastIndexOf(array, value, fromIndex) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return -1;\n }\n var index = length;\n if (fromIndex !== undefined) {\n index = toInteger(fromIndex);\n index = index < 0 ? nativeMax(length + index, 0) : nativeMin(index, length - 1);\n }\n return value === value\n ? strictLastIndexOf(array, value, index)\n : baseFindIndex(array, baseIsNaN, index, true);\n }\n\n /**\n * Gets the element at index `n` of `array`. If `n` is negative, the nth\n * element from the end is returned.\n *\n * @static\n * @memberOf _\n * @since 4.11.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=0] The index of the element to return.\n * @returns {*} Returns the nth element of `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n *\n * _.nth(array, 1);\n * // => 'b'\n *\n * _.nth(array, -2);\n * // => 'c';\n */\n function nth(array, n) {\n return (array && array.length) ? baseNth(array, toInteger(n)) : undefined;\n }\n\n /**\n * Removes all given values from `array` using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.without`, this method mutates `array`. Use `_.remove`\n * to remove elements from an array by predicate.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...*} [values] The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pull(array, 'a', 'c');\n * console.log(array);\n * // => ['b', 'b']\n */\n var pull = baseRest(pullAll);\n\n /**\n * This method is like `_.pull` except that it accepts an array of values to remove.\n *\n * **Note:** Unlike `_.difference`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = ['a', 'b', 'c', 'a', 'b', 'c'];\n *\n * _.pullAll(array, ['a', 'c']);\n * console.log(array);\n * // => ['b', 'b']\n */\n function pullAll(array, values) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values)\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `iteratee` which is\n * invoked for each element of `array` and `values` to generate the criterion\n * by which they're compared. The iteratee is invoked with one argument: (value).\n *\n * **Note:** Unlike `_.differenceBy`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1 }, { 'x': 2 }, { 'x': 3 }, { 'x': 1 }];\n *\n * _.pullAllBy(array, [{ 'x': 1 }, { 'x': 3 }], 'x');\n * console.log(array);\n * // => [{ 'x': 2 }]\n */\n function pullAllBy(array, values, iteratee) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, getIteratee(iteratee, 2))\n : array;\n }\n\n /**\n * This method is like `_.pullAll` except that it accepts `comparator` which\n * is invoked to compare elements of `array` to `values`. The comparator is\n * invoked with two arguments: (arrVal, othVal).\n *\n * **Note:** Unlike `_.differenceWith`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Array} values The values to remove.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [{ 'x': 1, 'y': 2 }, { 'x': 3, 'y': 4 }, { 'x': 5, 'y': 6 }];\n *\n * _.pullAllWith(array, [{ 'x': 3, 'y': 4 }], _.isEqual);\n * console.log(array);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 5, 'y': 6 }]\n */\n function pullAllWith(array, values, comparator) {\n return (array && array.length && values && values.length)\n ? basePullAll(array, values, undefined, comparator)\n : array;\n }\n\n /**\n * Removes elements from `array` corresponding to `indexes` and returns an\n * array of removed elements.\n *\n * **Note:** Unlike `_.at`, this method mutates `array`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {...(number|number[])} [indexes] The indexes of elements to remove.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = ['a', 'b', 'c', 'd'];\n * var pulled = _.pullAt(array, [1, 3]);\n *\n * console.log(array);\n * // => ['a', 'c']\n *\n * console.log(pulled);\n * // => ['b', 'd']\n */\n var pullAt = flatRest(function(array, indexes) {\n var length = array == null ? 0 : array.length,\n result = baseAt(array, indexes);\n\n basePullAt(array, arrayMap(indexes, function(index) {\n return isIndex(index, length) ? +index : index;\n }).sort(compareAscending));\n\n return result;\n });\n\n /**\n * Removes all elements from `array` that `predicate` returns truthy for\n * and returns an array of the removed elements. The predicate is invoked\n * with three arguments: (value, index, array).\n *\n * **Note:** Unlike `_.filter`, this method mutates `array`. Use `_.pull`\n * to pull elements from an array by value.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new array of removed elements.\n * @example\n *\n * var array = [1, 2, 3, 4];\n * var evens = _.remove(array, function(n) {\n * return n % 2 == 0;\n * });\n *\n * console.log(array);\n * // => [1, 3]\n *\n * console.log(evens);\n * // => [2, 4]\n */\n function remove(array, predicate) {\n var result = [];\n if (!(array && array.length)) {\n return result;\n }\n var index = -1,\n indexes = [],\n length = array.length;\n\n predicate = getIteratee(predicate, 3);\n while (++index < length) {\n var value = array[index];\n if (predicate(value, index, array)) {\n result.push(value);\n indexes.push(index);\n }\n }\n basePullAt(array, indexes);\n return result;\n }\n\n /**\n * Reverses `array` so that the first element becomes the last, the second\n * element becomes the second to last, and so on.\n *\n * **Note:** This method mutates `array` and is based on\n * [`Array#reverse`](https://mdn.io/Array/reverse).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to modify.\n * @returns {Array} Returns `array`.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _.reverse(array);\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function reverse(array) {\n return array == null ? array : nativeReverse.call(array);\n }\n\n /**\n * Creates a slice of `array` from `start` up to, but not including, `end`.\n *\n * **Note:** This method is used instead of\n * [`Array#slice`](https://mdn.io/Array/slice) to ensure dense arrays are\n * returned.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to slice.\n * @param {number} [start=0] The start position.\n * @param {number} [end=array.length] The end position.\n * @returns {Array} Returns the slice of `array`.\n */\n function slice(array, start, end) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n if (end && typeof end != 'number' && isIterateeCall(array, start, end)) {\n start = 0;\n end = length;\n }\n else {\n start = start == null ? 0 : toInteger(start);\n end = end === undefined ? length : toInteger(end);\n }\n return baseSlice(array, start, end);\n }\n\n /**\n * Uses a binary search to determine the lowest index at which `value`\n * should be inserted into `array` in order to maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedIndex([30, 50], 40);\n * // => 1\n */\n function sortedIndex(array, value) {\n return baseSortedIndex(array, value);\n }\n\n /**\n * This method is like `_.sortedIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 0\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedIndexBy(objects, { 'x': 4 }, 'x');\n * // => 0\n */\n function sortedIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2));\n }\n\n /**\n * This method is like `_.indexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedIndexOf([4, 5, 5, 5, 6], 5);\n * // => 1\n */\n function sortedIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value);\n if (index < length && eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.sortedIndex` except that it returns the highest\n * index at which `value` should be inserted into `array` in order to\n * maintain its sort order.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * _.sortedLastIndex([4, 5, 5, 5, 6], 5);\n * // => 4\n */\n function sortedLastIndex(array, value) {\n return baseSortedIndex(array, value, true);\n }\n\n /**\n * This method is like `_.sortedLastIndex` except that it accepts `iteratee`\n * which is invoked for `value` and each element of `array` to compute their\n * sort ranking. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The sorted array to inspect.\n * @param {*} value The value to evaluate.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {number} Returns the index at which `value` should be inserted\n * into `array`.\n * @example\n *\n * var objects = [{ 'x': 4 }, { 'x': 5 }];\n *\n * _.sortedLastIndexBy(objects, { 'x': 4 }, function(o) { return o.x; });\n * // => 1\n *\n * // The `_.property` iteratee shorthand.\n * _.sortedLastIndexBy(objects, { 'x': 4 }, 'x');\n * // => 1\n */\n function sortedLastIndexBy(array, value, iteratee) {\n return baseSortedIndexBy(array, value, getIteratee(iteratee, 2), true);\n }\n\n /**\n * This method is like `_.lastIndexOf` except that it performs a binary\n * search on a sorted `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {*} value The value to search for.\n * @returns {number} Returns the index of the matched value, else `-1`.\n * @example\n *\n * _.sortedLastIndexOf([4, 5, 5, 5, 6], 5);\n * // => 3\n */\n function sortedLastIndexOf(array, value) {\n var length = array == null ? 0 : array.length;\n if (length) {\n var index = baseSortedIndex(array, value, true) - 1;\n if (eq(array[index], value)) {\n return index;\n }\n }\n return -1;\n }\n\n /**\n * This method is like `_.uniq` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniq([1, 1, 2]);\n * // => [1, 2]\n */\n function sortedUniq(array) {\n return (array && array.length)\n ? baseSortedUniq(array)\n : [];\n }\n\n /**\n * This method is like `_.uniqBy` except that it's designed and optimized\n * for sorted arrays.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.sortedUniqBy([1.1, 1.2, 2.3, 2.4], Math.floor);\n * // => [1.1, 2.3]\n */\n function sortedUniqBy(array, iteratee) {\n return (array && array.length)\n ? baseSortedUniq(array, getIteratee(iteratee, 2))\n : [];\n }\n\n /**\n * Gets all but the first element of `array`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.tail([1, 2, 3]);\n * // => [2, 3]\n */\n function tail(array) {\n var length = array == null ? 0 : array.length;\n return length ? baseSlice(array, 1, length) : [];\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the beginning.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.take([1, 2, 3]);\n * // => [1]\n *\n * _.take([1, 2, 3], 2);\n * // => [1, 2]\n *\n * _.take([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.take([1, 2, 3], 0);\n * // => []\n */\n function take(array, n, guard) {\n if (!(array && array.length)) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n return baseSlice(array, 0, n < 0 ? 0 : n);\n }\n\n /**\n * Creates a slice of `array` with `n` elements taken from the end.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {number} [n=1] The number of elements to take.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * _.takeRight([1, 2, 3]);\n * // => [3]\n *\n * _.takeRight([1, 2, 3], 2);\n * // => [2, 3]\n *\n * _.takeRight([1, 2, 3], 5);\n * // => [1, 2, 3]\n *\n * _.takeRight([1, 2, 3], 0);\n * // => []\n */\n function takeRight(array, n, guard) {\n var length = array == null ? 0 : array.length;\n if (!length) {\n return [];\n }\n n = (guard || n === undefined) ? 1 : toInteger(n);\n n = length - n;\n return baseSlice(array, n < 0 ? 0 : n, length);\n }\n\n /**\n * Creates a slice of `array` with elements taken from the end. Elements are\n * taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': false }\n * ];\n *\n * _.takeRightWhile(users, function(o) { return !o.active; });\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeRightWhile(users, { 'user': 'pebbles', 'active': false });\n * // => objects for ['pebbles']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeRightWhile(users, ['active', false]);\n * // => objects for ['fred', 'pebbles']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeRightWhile(users, 'active');\n * // => []\n */\n function takeRightWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3), false, true)\n : [];\n }\n\n /**\n * Creates a slice of `array` with elements taken from the beginning. Elements\n * are taken until `predicate` returns falsey. The predicate is invoked with\n * three arguments: (value, index, array).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Array\n * @param {Array} array The array to query.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the slice of `array`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'active': false },\n * { 'user': 'fred', 'active': false },\n * { 'user': 'pebbles', 'active': true }\n * ];\n *\n * _.takeWhile(users, function(o) { return !o.active; });\n * // => objects for ['barney', 'fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.takeWhile(users, { 'user': 'barney', 'active': false });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.takeWhile(users, ['active', false]);\n * // => objects for ['barney', 'fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.takeWhile(users, 'active');\n * // => []\n */\n function takeWhile(array, predicate) {\n return (array && array.length)\n ? baseWhile(array, getIteratee(predicate, 3))\n : [];\n }\n\n /**\n * Creates an array of unique values, in order, from all given arrays using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.union([2], [1, 2]);\n * // => [2, 1]\n */\n var union = baseRest(function(arrays) {\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true));\n });\n\n /**\n * This method is like `_.union` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which uniqueness is computed. Result values are chosen from the first\n * array in which the value occurs. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * _.unionBy([2.1], [1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.unionBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n var unionBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.union` except that it accepts `comparator` which\n * is invoked to compare elements of `arrays`. Result values are chosen from\n * the first array in which the value occurs. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of combined values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.unionWith(objects, others, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var unionWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseUniq(baseFlatten(arrays, 1, isArrayLikeObject, true), undefined, comparator);\n });\n\n /**\n * Creates a duplicate-free version of an array, using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons, in which only the first occurrence of each element\n * is kept. The order of result values is determined by the order they occur\n * in the array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniq([2, 1, 2]);\n * // => [2, 1]\n */\n function uniq(array) {\n return (array && array.length) ? baseUniq(array) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `iteratee` which is\n * invoked for each element in `array` to generate the criterion by which\n * uniqueness is computed. The order of result values is determined by the\n * order they occur in the array. The iteratee is invoked with one argument:\n * (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * _.uniqBy([2.1, 1.2, 2.3], Math.floor);\n * // => [2.1, 1.2]\n *\n * // The `_.property` iteratee shorthand.\n * _.uniqBy([{ 'x': 1 }, { 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 1 }, { 'x': 2 }]\n */\n function uniqBy(array, iteratee) {\n return (array && array.length) ? baseUniq(array, getIteratee(iteratee, 2)) : [];\n }\n\n /**\n * This method is like `_.uniq` except that it accepts `comparator` which\n * is invoked to compare elements of `array`. The order of result values is\n * determined by the order they occur in the array.The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new duplicate free array.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.uniqWith(objects, _.isEqual);\n * // => [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }]\n */\n function uniqWith(array, comparator) {\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return (array && array.length) ? baseUniq(array, undefined, comparator) : [];\n }\n\n /**\n * This method is like `_.zip` except that it accepts an array of grouped\n * elements and creates an array regrouping the elements to their pre-zip\n * configuration.\n *\n * @static\n * @memberOf _\n * @since 1.2.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n *\n * _.unzip(zipped);\n * // => [['a', 'b'], [1, 2], [true, false]]\n */\n function unzip(array) {\n if (!(array && array.length)) {\n return [];\n }\n var length = 0;\n array = arrayFilter(array, function(group) {\n if (isArrayLikeObject(group)) {\n length = nativeMax(group.length, length);\n return true;\n }\n });\n return baseTimes(length, function(index) {\n return arrayMap(array, baseProperty(index));\n });\n }\n\n /**\n * This method is like `_.unzip` except that it accepts `iteratee` to specify\n * how regrouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {Array} array The array of grouped elements to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * regrouped values.\n * @returns {Array} Returns the new array of regrouped elements.\n * @example\n *\n * var zipped = _.zip([1, 2], [10, 20], [100, 200]);\n * // => [[1, 10, 100], [2, 20, 200]]\n *\n * _.unzipWith(zipped, _.add);\n * // => [3, 30, 300]\n */\n function unzipWith(array, iteratee) {\n if (!(array && array.length)) {\n return [];\n }\n var result = unzip(array);\n if (iteratee == null) {\n return result;\n }\n return arrayMap(result, function(group) {\n return apply(iteratee, undefined, group);\n });\n }\n\n /**\n * Creates an array excluding all given values using\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * for equality comparisons.\n *\n * **Note:** Unlike `_.pull`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {Array} array The array to inspect.\n * @param {...*} [values] The values to exclude.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.xor\n * @example\n *\n * _.without([2, 1, 2, 3], 1, 2);\n * // => [3]\n */\n var without = baseRest(function(array, values) {\n return isArrayLikeObject(array)\n ? baseDifference(array, values)\n : [];\n });\n\n /**\n * Creates an array of unique values that is the\n * [symmetric difference](https://en.wikipedia.org/wiki/Symmetric_difference)\n * of the given arrays. The order of result values is determined by the order\n * they occur in the arrays.\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @returns {Array} Returns the new array of filtered values.\n * @see _.difference, _.without\n * @example\n *\n * _.xor([2, 1], [2, 3]);\n * // => [1, 3]\n */\n var xor = baseRest(function(arrays) {\n return baseXor(arrayFilter(arrays, isArrayLikeObject));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `iteratee` which is\n * invoked for each element of each `arrays` to generate the criterion by\n * which by which they're compared. The order of result values is determined\n * by the order they occur in the arrays. The iteratee is invoked with one\n * argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * _.xorBy([2.1, 1.2], [2.3, 3.4], Math.floor);\n * // => [1.2, 3.4]\n *\n * // The `_.property` iteratee shorthand.\n * _.xorBy([{ 'x': 1 }], [{ 'x': 2 }, { 'x': 1 }], 'x');\n * // => [{ 'x': 2 }]\n */\n var xorBy = baseRest(function(arrays) {\n var iteratee = last(arrays);\n if (isArrayLikeObject(iteratee)) {\n iteratee = undefined;\n }\n return baseXor(arrayFilter(arrays, isArrayLikeObject), getIteratee(iteratee, 2));\n });\n\n /**\n * This method is like `_.xor` except that it accepts `comparator` which is\n * invoked to compare elements of `arrays`. The order of result values is\n * determined by the order they occur in the arrays. The comparator is invoked\n * with two arguments: (arrVal, othVal).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Array\n * @param {...Array} [arrays] The arrays to inspect.\n * @param {Function} [comparator] The comparator invoked per element.\n * @returns {Array} Returns the new array of filtered values.\n * @example\n *\n * var objects = [{ 'x': 1, 'y': 2 }, { 'x': 2, 'y': 1 }];\n * var others = [{ 'x': 1, 'y': 1 }, { 'x': 1, 'y': 2 }];\n *\n * _.xorWith(objects, others, _.isEqual);\n * // => [{ 'x': 2, 'y': 1 }, { 'x': 1, 'y': 1 }]\n */\n var xorWith = baseRest(function(arrays) {\n var comparator = last(arrays);\n comparator = typeof comparator == 'function' ? comparator : undefined;\n return baseXor(arrayFilter(arrays, isArrayLikeObject), undefined, comparator);\n });\n\n /**\n * Creates an array of grouped elements, the first of which contains the\n * first elements of the given arrays, the second of which contains the\n * second elements of the given arrays, and so on.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zip(['a', 'b'], [1, 2], [true, false]);\n * // => [['a', 1, true], ['b', 2, false]]\n */\n var zip = baseRest(unzip);\n\n /**\n * This method is like `_.fromPairs` except that it accepts two arrays,\n * one of property identifiers and one of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 0.4.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObject(['a', 'b'], [1, 2]);\n * // => { 'a': 1, 'b': 2 }\n */\n function zipObject(props, values) {\n return baseZipObject(props || [], values || [], assignValue);\n }\n\n /**\n * This method is like `_.zipObject` except that it supports property paths.\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Array\n * @param {Array} [props=[]] The property identifiers.\n * @param {Array} [values=[]] The property values.\n * @returns {Object} Returns the new object.\n * @example\n *\n * _.zipObjectDeep(['a.b[0].c', 'a.b[1].d'], [1, 2]);\n * // => { 'a': { 'b': [{ 'c': 1 }, { 'd': 2 }] } }\n */\n function zipObjectDeep(props, values) {\n return baseZipObject(props || [], values || [], baseSet);\n }\n\n /**\n * This method is like `_.zip` except that it accepts `iteratee` to specify\n * how grouped values should be combined. The iteratee is invoked with the\n * elements of each group: (...group).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Array\n * @param {...Array} [arrays] The arrays to process.\n * @param {Function} [iteratee=_.identity] The function to combine\n * grouped values.\n * @returns {Array} Returns the new array of grouped elements.\n * @example\n *\n * _.zipWith([1, 2], [10, 20], [100, 200], function(a, b, c) {\n * return a + b + c;\n * });\n * // => [111, 222]\n */\n var zipWith = baseRest(function(arrays) {\n var length = arrays.length,\n iteratee = length > 1 ? arrays[length - 1] : undefined;\n\n iteratee = typeof iteratee == 'function' ? (arrays.pop(), iteratee) : undefined;\n return unzipWith(arrays, iteratee);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates a `lodash` wrapper instance that wraps `value` with explicit method\n * chain sequences enabled. The result of such sequences must be unwrapped\n * with `_#value`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Seq\n * @param {*} value The value to wrap.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'pebbles', 'age': 1 }\n * ];\n *\n * var youngest = _\n * .chain(users)\n * .sortBy('age')\n * .map(function(o) {\n * return o.user + ' is ' + o.age;\n * })\n * .head()\n * .value();\n * // => 'pebbles is 1'\n */\n function chain(value) {\n var result = lodash(value);\n result.__chain__ = true;\n return result;\n }\n\n /**\n * This method invokes `interceptor` and returns `value`. The interceptor\n * is invoked with one argument; (value). The purpose of this method is to\n * \"tap into\" a method chain sequence in order to modify intermediate results.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns `value`.\n * @example\n *\n * _([1, 2, 3])\n * .tap(function(array) {\n * // Mutate input array.\n * array.pop();\n * })\n * .reverse()\n * .value();\n * // => [2, 1]\n */\n function tap(value, interceptor) {\n interceptor(value);\n return value;\n }\n\n /**\n * This method is like `_.tap` except that it returns the result of `interceptor`.\n * The purpose of this method is to \"pass thru\" values replacing intermediate\n * results in a method chain sequence.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Seq\n * @param {*} value The value to provide to `interceptor`.\n * @param {Function} interceptor The function to invoke.\n * @returns {*} Returns the result of `interceptor`.\n * @example\n *\n * _(' abc ')\n * .chain()\n * .trim()\n * .thru(function(value) {\n * return [value];\n * })\n * .value();\n * // => ['abc']\n */\n function thru(value, interceptor) {\n return interceptor(value);\n }\n\n /**\n * This method is the wrapper version of `_.at`.\n *\n * @name at\n * @memberOf _\n * @since 1.0.0\n * @category Seq\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _(object).at(['a[0].b.c', 'a[1]']).value();\n * // => [3, 4]\n */\n var wrapperAt = flatRest(function(paths) {\n var length = paths.length,\n start = length ? paths[0] : 0,\n value = this.__wrapped__,\n interceptor = function(object) { return baseAt(object, paths); };\n\n if (length > 1 || this.__actions__.length ||\n !(value instanceof LazyWrapper) || !isIndex(start)) {\n return this.thru(interceptor);\n }\n value = value.slice(start, +start + (length ? 1 : 0));\n value.__actions__.push({\n 'func': thru,\n 'args': [interceptor],\n 'thisArg': undefined\n });\n return new LodashWrapper(value, this.__chain__).thru(function(array) {\n if (length && !array.length) {\n array.push(undefined);\n }\n return array;\n });\n });\n\n /**\n * Creates a `lodash` wrapper instance with explicit method chain sequences enabled.\n *\n * @name chain\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 40 }\n * ];\n *\n * // A sequence without explicit chaining.\n * _(users).head();\n * // => { 'user': 'barney', 'age': 36 }\n *\n * // A sequence with explicit chaining.\n * _(users)\n * .chain()\n * .head()\n * .pick('user')\n * .value();\n * // => { 'user': 'barney' }\n */\n function wrapperChain() {\n return chain(this);\n }\n\n /**\n * Executes the chain sequence and returns the wrapped result.\n *\n * @name commit\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2];\n * var wrapped = _(array).push(3);\n *\n * console.log(array);\n * // => [1, 2]\n *\n * wrapped = wrapped.commit();\n * console.log(array);\n * // => [1, 2, 3]\n *\n * wrapped.last();\n * // => 3\n *\n * console.log(array);\n * // => [1, 2, 3]\n */\n function wrapperCommit() {\n return new LodashWrapper(this.value(), this.__chain__);\n }\n\n /**\n * Gets the next value on a wrapped object following the\n * [iterator protocol](https://mdn.io/iteration_protocols#iterator).\n *\n * @name next\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the next iterator value.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 1 }\n *\n * wrapped.next();\n * // => { 'done': false, 'value': 2 }\n *\n * wrapped.next();\n * // => { 'done': true, 'value': undefined }\n */\n function wrapperNext() {\n if (this.__values__ === undefined) {\n this.__values__ = toArray(this.value());\n }\n var done = this.__index__ >= this.__values__.length,\n value = done ? undefined : this.__values__[this.__index__++];\n\n return { 'done': done, 'value': value };\n }\n\n /**\n * Enables the wrapper to be iterable.\n *\n * @name Symbol.iterator\n * @memberOf _\n * @since 4.0.0\n * @category Seq\n * @returns {Object} Returns the wrapper object.\n * @example\n *\n * var wrapped = _([1, 2]);\n *\n * wrapped[Symbol.iterator]() === wrapped;\n * // => true\n *\n * Array.from(wrapped);\n * // => [1, 2]\n */\n function wrapperToIterator() {\n return this;\n }\n\n /**\n * Creates a clone of the chain sequence planting `value` as the wrapped value.\n *\n * @name plant\n * @memberOf _\n * @since 3.2.0\n * @category Seq\n * @param {*} value The value to plant.\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var wrapped = _([1, 2]).map(square);\n * var other = wrapped.plant([3, 4]);\n *\n * other.value();\n * // => [9, 16]\n *\n * wrapped.value();\n * // => [1, 4]\n */\n function wrapperPlant(value) {\n var result,\n parent = this;\n\n while (parent instanceof baseLodash) {\n var clone = wrapperClone(parent);\n clone.__index__ = 0;\n clone.__values__ = undefined;\n if (result) {\n previous.__wrapped__ = clone;\n } else {\n result = clone;\n }\n var previous = clone;\n parent = parent.__wrapped__;\n }\n previous.__wrapped__ = value;\n return result;\n }\n\n /**\n * This method is the wrapper version of `_.reverse`.\n *\n * **Note:** This method mutates the wrapped array.\n *\n * @name reverse\n * @memberOf _\n * @since 0.1.0\n * @category Seq\n * @returns {Object} Returns the new `lodash` wrapper instance.\n * @example\n *\n * var array = [1, 2, 3];\n *\n * _(array).reverse().value()\n * // => [3, 2, 1]\n *\n * console.log(array);\n * // => [3, 2, 1]\n */\n function wrapperReverse() {\n var value = this.__wrapped__;\n if (value instanceof LazyWrapper) {\n var wrapped = value;\n if (this.__actions__.length) {\n wrapped = new LazyWrapper(this);\n }\n wrapped = wrapped.reverse();\n wrapped.__actions__.push({\n 'func': thru,\n 'args': [reverse],\n 'thisArg': undefined\n });\n return new LodashWrapper(wrapped, this.__chain__);\n }\n return this.thru(reverse);\n }\n\n /**\n * Executes the chain sequence to resolve the unwrapped value.\n *\n * @name value\n * @memberOf _\n * @since 0.1.0\n * @alias toJSON, valueOf\n * @category Seq\n * @returns {*} Returns the resolved unwrapped value.\n * @example\n *\n * _([1, 2, 3]).value();\n * // => [1, 2, 3]\n */\n function wrapperValue() {\n return baseWrapperValue(this.__wrapped__, this.__actions__);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the number of times the key was returned by `iteratee`. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.countBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': 1, '6': 2 }\n *\n * // The `_.property` iteratee shorthand.\n * _.countBy(['one', 'two', 'three'], 'length');\n * // => { '3': 2, '5': 1 }\n */\n var countBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n ++result[key];\n } else {\n baseAssignValue(result, key, 1);\n }\n });\n\n /**\n * Checks if `predicate` returns truthy for **all** elements of `collection`.\n * Iteration is stopped once `predicate` returns falsey. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * **Note:** This method returns `true` for\n * [empty collections](https://en.wikipedia.org/wiki/Empty_set) because\n * [everything is true](https://en.wikipedia.org/wiki/Vacuous_truth) of\n * elements of empty collections.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if all elements pass the predicate check,\n * else `false`.\n * @example\n *\n * _.every([true, 1, null, 'yes'], Boolean);\n * // => false\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.every(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.every(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.every(users, 'active');\n * // => false\n */\n function every(collection, predicate, guard) {\n var func = isArray(collection) ? arrayEvery : baseEvery;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning an array of all elements\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * **Note:** Unlike `_.remove`, this method returns a new array.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.reject\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false }\n * ];\n *\n * _.filter(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.filter(users, { 'age': 36, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.filter(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.filter(users, 'active');\n * // => objects for ['barney']\n *\n * // Combining several predicates using `_.overEvery` or `_.overSome`.\n * _.filter(users, _.overSome([{ 'age': 36 }, ['age', 40]]));\n * // => objects for ['fred', 'barney']\n */\n function filter(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Iterates over elements of `collection`, returning the first element\n * `predicate` returns truthy for. The predicate is invoked with three\n * arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=0] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': true },\n * { 'user': 'fred', 'age': 40, 'active': false },\n * { 'user': 'pebbles', 'age': 1, 'active': true }\n * ];\n *\n * _.find(users, function(o) { return o.age < 40; });\n * // => object for 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.find(users, { 'age': 1, 'active': true });\n * // => object for 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.find(users, ['active', false]);\n * // => object for 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.find(users, 'active');\n * // => object for 'barney'\n */\n var find = createFind(findIndex);\n\n /**\n * This method is like `_.find` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param {number} [fromIndex=collection.length-1] The index to search from.\n * @returns {*} Returns the matched element, else `undefined`.\n * @example\n *\n * _.findLast([1, 2, 3, 4], function(n) {\n * return n % 2 == 1;\n * });\n * // => 3\n */\n var findLast = createFind(findLastIndex);\n\n /**\n * Creates a flattened array of values by running each element in `collection`\n * thru `iteratee` and flattening the mapped results. The iteratee is invoked\n * with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [n, n];\n * }\n *\n * _.flatMap([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMap(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), 1);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDeep([1, 2], duplicate);\n * // => [1, 1, 2, 2]\n */\n function flatMapDeep(collection, iteratee) {\n return baseFlatten(map(collection, iteratee), INFINITY);\n }\n\n /**\n * This method is like `_.flatMap` except that it recursively flattens the\n * mapped results up to `depth` times.\n *\n * @static\n * @memberOf _\n * @since 4.7.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {number} [depth=1] The maximum recursion depth.\n * @returns {Array} Returns the new flattened array.\n * @example\n *\n * function duplicate(n) {\n * return [[[n, n]]];\n * }\n *\n * _.flatMapDepth([1, 2], duplicate, 2);\n * // => [[1, 1], [2, 2]]\n */\n function flatMapDepth(collection, iteratee, depth) {\n depth = depth === undefined ? 1 : toInteger(depth);\n return baseFlatten(map(collection, iteratee), depth);\n }\n\n /**\n * Iterates over elements of `collection` and invokes `iteratee` for each element.\n * The iteratee is invoked with three arguments: (value, index|key, collection).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * **Note:** As with other \"Collections\" methods, objects with a \"length\"\n * property are iterated like arrays. To avoid this behavior use `_.forIn`\n * or `_.forOwn` for object iteration.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @alias each\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEachRight\n * @example\n *\n * _.forEach([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `1` then `2`.\n *\n * _.forEach({ 'a': 1, 'b': 2 }, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forEach(collection, iteratee) {\n var func = isArray(collection) ? arrayEach : baseEach;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forEach` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @alias eachRight\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array|Object} Returns `collection`.\n * @see _.forEach\n * @example\n *\n * _.forEachRight([1, 2], function(value) {\n * console.log(value);\n * });\n * // => Logs `2` then `1`.\n */\n function forEachRight(collection, iteratee) {\n var func = isArray(collection) ? arrayEachRight : baseEachRight;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The order of grouped values\n * is determined by the order they occur in `collection`. The corresponding\n * value of each key is an array of elements responsible for generating the\n * key. The iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * _.groupBy([6.1, 4.2, 6.3], Math.floor);\n * // => { '4': [4.2], '6': [6.1, 6.3] }\n *\n * // The `_.property` iteratee shorthand.\n * _.groupBy(['one', 'two', 'three'], 'length');\n * // => { '3': ['one', 'two'], '5': ['three'] }\n */\n var groupBy = createAggregator(function(result, value, key) {\n if (hasOwnProperty.call(result, key)) {\n result[key].push(value);\n } else {\n baseAssignValue(result, key, [value]);\n }\n });\n\n /**\n * Checks if `value` is in `collection`. If `collection` is a string, it's\n * checked for a substring of `value`, otherwise\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * is used for equality comparisons. If `fromIndex` is negative, it's used as\n * the offset from the end of `collection`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @param {*} value The value to search for.\n * @param {number} [fromIndex=0] The index to search from.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {boolean} Returns `true` if `value` is found, else `false`.\n * @example\n *\n * _.includes([1, 2, 3], 1);\n * // => true\n *\n * _.includes([1, 2, 3], 1, 2);\n * // => false\n *\n * _.includes({ 'a': 1, 'b': 2 }, 1);\n * // => true\n *\n * _.includes('abcd', 'bc');\n * // => true\n */\n function includes(collection, value, fromIndex, guard) {\n collection = isArrayLike(collection) ? collection : values(collection);\n fromIndex = (fromIndex && !guard) ? toInteger(fromIndex) : 0;\n\n var length = collection.length;\n if (fromIndex < 0) {\n fromIndex = nativeMax(length + fromIndex, 0);\n }\n return isString(collection)\n ? (fromIndex <= length && collection.indexOf(value, fromIndex) > -1)\n : (!!length && baseIndexOf(collection, value, fromIndex) > -1);\n }\n\n /**\n * Invokes the method at `path` of each element in `collection`, returning\n * an array of the results of each invoked method. Any additional arguments\n * are provided to each invoked method. If `path` is a function, it's invoked\n * for, and `this` bound to, each element in `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array|Function|string} path The path of the method to invoke or\n * the function invoked per iteration.\n * @param {...*} [args] The arguments to invoke each method with.\n * @returns {Array} Returns the array of results.\n * @example\n *\n * _.invokeMap([[5, 1, 7], [3, 2, 1]], 'sort');\n * // => [[1, 5, 7], [1, 2, 3]]\n *\n * _.invokeMap([123, 456], String.prototype.split, '');\n * // => [['1', '2', '3'], ['4', '5', '6']]\n */\n var invokeMap = baseRest(function(collection, path, args) {\n var index = -1,\n isFunc = typeof path == 'function',\n result = isArrayLike(collection) ? Array(collection.length) : [];\n\n baseEach(collection, function(value) {\n result[++index] = isFunc ? apply(path, value, args) : baseInvoke(value, path, args);\n });\n return result;\n });\n\n /**\n * Creates an object composed of keys generated from the results of running\n * each element of `collection` thru `iteratee`. The corresponding value of\n * each key is the last element responsible for generating the key. The\n * iteratee is invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The iteratee to transform keys.\n * @returns {Object} Returns the composed aggregate object.\n * @example\n *\n * var array = [\n * { 'dir': 'left', 'code': 97 },\n * { 'dir': 'right', 'code': 100 }\n * ];\n *\n * _.keyBy(array, function(o) {\n * return String.fromCharCode(o.code);\n * });\n * // => { 'a': { 'dir': 'left', 'code': 97 }, 'd': { 'dir': 'right', 'code': 100 } }\n *\n * _.keyBy(array, 'dir');\n * // => { 'left': { 'dir': 'left', 'code': 97 }, 'right': { 'dir': 'right', 'code': 100 } }\n */\n var keyBy = createAggregator(function(result, value, key) {\n baseAssignValue(result, key, value);\n });\n\n /**\n * Creates an array of values by running each element in `collection` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.every`, `_.filter`, `_.map`, `_.mapValues`, `_.reject`, and `_.some`.\n *\n * The guarded methods are:\n * `ary`, `chunk`, `curry`, `curryRight`, `drop`, `dropRight`, `every`,\n * `fill`, `invert`, `parseInt`, `random`, `range`, `rangeRight`, `repeat`,\n * `sampleSize`, `slice`, `some`, `sortBy`, `split`, `take`, `takeRight`,\n * `template`, `trim`, `trimEnd`, `trimStart`, and `words`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new mapped array.\n * @example\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * _.map([4, 8], square);\n * // => [16, 64]\n *\n * _.map({ 'a': 4, 'b': 8 }, square);\n * // => [16, 64] (iteration order is not guaranteed)\n *\n * var users = [\n * { 'user': 'barney' },\n * { 'user': 'fred' }\n * ];\n *\n * // The `_.property` iteratee shorthand.\n * _.map(users, 'user');\n * // => ['barney', 'fred']\n */\n function map(collection, iteratee) {\n var func = isArray(collection) ? arrayMap : baseMap;\n return func(collection, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.sortBy` except that it allows specifying the sort\n * orders of the iteratees to sort by. If `orders` is unspecified, all values\n * are sorted in ascending order. Otherwise, specify an order of \"desc\" for\n * descending or \"asc\" for ascending sort order of corresponding values.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Array[]|Function[]|Object[]|string[]} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @param {string[]} [orders] The sort orders of `iteratees`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.reduce`.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 34 },\n * { 'user': 'fred', 'age': 40 },\n * { 'user': 'barney', 'age': 36 }\n * ];\n *\n * // Sort by `user` in ascending order and by `age` in descending order.\n * _.orderBy(users, ['user', 'age'], ['asc', 'desc']);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 40]]\n */\n function orderBy(collection, iteratees, orders, guard) {\n if (collection == null) {\n return [];\n }\n if (!isArray(iteratees)) {\n iteratees = iteratees == null ? [] : [iteratees];\n }\n orders = guard ? undefined : orders;\n if (!isArray(orders)) {\n orders = orders == null ? [] : [orders];\n }\n return baseOrderBy(collection, iteratees, orders);\n }\n\n /**\n * Creates an array of elements split into two groups, the first of which\n * contains elements `predicate` returns truthy for, the second of which\n * contains elements `predicate` returns falsey for. The predicate is\n * invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the array of grouped elements.\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true },\n * { 'user': 'pebbles', 'age': 1, 'active': false }\n * ];\n *\n * _.partition(users, function(o) { return o.active; });\n * // => objects for [['fred'], ['barney', 'pebbles']]\n *\n * // The `_.matches` iteratee shorthand.\n * _.partition(users, { 'age': 1, 'active': false });\n * // => objects for [['pebbles'], ['barney', 'fred']]\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.partition(users, ['active', false]);\n * // => objects for [['barney', 'pebbles'], ['fred']]\n *\n * // The `_.property` iteratee shorthand.\n * _.partition(users, 'active');\n * // => objects for [['fred'], ['barney', 'pebbles']]\n */\n var partition = createAggregator(function(result, value, key) {\n result[key ? 0 : 1].push(value);\n }, function() { return [[], []]; });\n\n /**\n * Reduces `collection` to a value which is the accumulated result of running\n * each element in `collection` thru `iteratee`, where each successive\n * invocation is supplied the return value of the previous. If `accumulator`\n * is not given, the first element of `collection` is used as the initial\n * value. The iteratee is invoked with four arguments:\n * (accumulator, value, index|key, collection).\n *\n * Many lodash methods are guarded to work as iteratees for methods like\n * `_.reduce`, `_.reduceRight`, and `_.transform`.\n *\n * The guarded methods are:\n * `assign`, `defaults`, `defaultsDeep`, `includes`, `merge`, `orderBy`,\n * and `sortBy`\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduceRight\n * @example\n *\n * _.reduce([1, 2], function(sum, n) {\n * return sum + n;\n * }, 0);\n * // => 3\n *\n * _.reduce({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * return result;\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] } (iteration order is not guaranteed)\n */\n function reduce(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduce : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEach);\n }\n\n /**\n * This method is like `_.reduce` except that it iterates over elements of\n * `collection` from right to left.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The initial value.\n * @returns {*} Returns the accumulated value.\n * @see _.reduce\n * @example\n *\n * var array = [[0, 1], [2, 3], [4, 5]];\n *\n * _.reduceRight(array, function(flattened, other) {\n * return flattened.concat(other);\n * }, []);\n * // => [4, 5, 2, 3, 0, 1]\n */\n function reduceRight(collection, iteratee, accumulator) {\n var func = isArray(collection) ? arrayReduceRight : baseReduce,\n initAccum = arguments.length < 3;\n\n return func(collection, getIteratee(iteratee, 4), accumulator, initAccum, baseEachRight);\n }\n\n /**\n * The opposite of `_.filter`; this method returns the elements of `collection`\n * that `predicate` does **not** return truthy for.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {Array} Returns the new filtered array.\n * @see _.filter\n * @example\n *\n * var users = [\n * { 'user': 'barney', 'age': 36, 'active': false },\n * { 'user': 'fred', 'age': 40, 'active': true }\n * ];\n *\n * _.reject(users, function(o) { return !o.active; });\n * // => objects for ['fred']\n *\n * // The `_.matches` iteratee shorthand.\n * _.reject(users, { 'age': 40, 'active': true });\n * // => objects for ['barney']\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.reject(users, ['active', false]);\n * // => objects for ['fred']\n *\n * // The `_.property` iteratee shorthand.\n * _.reject(users, 'active');\n * // => objects for ['barney']\n */\n function reject(collection, predicate) {\n var func = isArray(collection) ? arrayFilter : baseFilter;\n return func(collection, negate(getIteratee(predicate, 3)));\n }\n\n /**\n * Gets a random element from `collection`.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @returns {*} Returns the random element.\n * @example\n *\n * _.sample([1, 2, 3, 4]);\n * // => 2\n */\n function sample(collection) {\n var func = isArray(collection) ? arraySample : baseSample;\n return func(collection);\n }\n\n /**\n * Gets `n` random elements at unique keys from `collection` up to the\n * size of `collection`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Collection\n * @param {Array|Object} collection The collection to sample.\n * @param {number} [n=1] The number of elements to sample.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Array} Returns the random elements.\n * @example\n *\n * _.sampleSize([1, 2, 3], 2);\n * // => [3, 1]\n *\n * _.sampleSize([1, 2, 3], 4);\n * // => [2, 3, 1]\n */\n function sampleSize(collection, n, guard) {\n if ((guard ? isIterateeCall(collection, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n var func = isArray(collection) ? arraySampleSize : baseSampleSize;\n return func(collection, n);\n }\n\n /**\n * Creates an array of shuffled values, using a version of the\n * [Fisher-Yates shuffle](https://en.wikipedia.org/wiki/Fisher-Yates_shuffle).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to shuffle.\n * @returns {Array} Returns the new shuffled array.\n * @example\n *\n * _.shuffle([1, 2, 3, 4]);\n * // => [4, 1, 3, 2]\n */\n function shuffle(collection) {\n var func = isArray(collection) ? arrayShuffle : baseShuffle;\n return func(collection);\n }\n\n /**\n * Gets the size of `collection` by returning its length for array-like\n * values or the number of own enumerable string keyed properties for objects.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object|string} collection The collection to inspect.\n * @returns {number} Returns the collection size.\n * @example\n *\n * _.size([1, 2, 3]);\n * // => 3\n *\n * _.size({ 'a': 1, 'b': 2 });\n * // => 2\n *\n * _.size('pebbles');\n * // => 7\n */\n function size(collection) {\n if (collection == null) {\n return 0;\n }\n if (isArrayLike(collection)) {\n return isString(collection) ? stringSize(collection) : collection.length;\n }\n var tag = getTag(collection);\n if (tag == mapTag || tag == setTag) {\n return collection.size;\n }\n return baseKeys(collection).length;\n }\n\n /**\n * Checks if `predicate` returns truthy for **any** element of `collection`.\n * Iteration is stopped once `predicate` returns truthy. The predicate is\n * invoked with three arguments: (value, index|key, collection).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {boolean} Returns `true` if any element passes the predicate check,\n * else `false`.\n * @example\n *\n * _.some([null, 0, 'yes', false], Boolean);\n * // => true\n *\n * var users = [\n * { 'user': 'barney', 'active': true },\n * { 'user': 'fred', 'active': false }\n * ];\n *\n * // The `_.matches` iteratee shorthand.\n * _.some(users, { 'user': 'barney', 'active': false });\n * // => false\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.some(users, ['active', false]);\n * // => true\n *\n * // The `_.property` iteratee shorthand.\n * _.some(users, 'active');\n * // => true\n */\n function some(collection, predicate, guard) {\n var func = isArray(collection) ? arraySome : baseSome;\n if (guard && isIterateeCall(collection, predicate, guard)) {\n predicate = undefined;\n }\n return func(collection, getIteratee(predicate, 3));\n }\n\n /**\n * Creates an array of elements, sorted in ascending order by the results of\n * running each element in a collection thru each iteratee. This method\n * performs a stable sort, that is, it preserves the original sort order of\n * equal elements. The iteratees are invoked with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Collection\n * @param {Array|Object} collection The collection to iterate over.\n * @param {...(Function|Function[])} [iteratees=[_.identity]]\n * The iteratees to sort by.\n * @returns {Array} Returns the new sorted array.\n * @example\n *\n * var users = [\n * { 'user': 'fred', 'age': 48 },\n * { 'user': 'barney', 'age': 36 },\n * { 'user': 'fred', 'age': 30 },\n * { 'user': 'barney', 'age': 34 }\n * ];\n *\n * _.sortBy(users, [function(o) { return o.user; }]);\n * // => objects for [['barney', 36], ['barney', 34], ['fred', 48], ['fred', 30]]\n *\n * _.sortBy(users, ['user', 'age']);\n * // => objects for [['barney', 34], ['barney', 36], ['fred', 30], ['fred', 48]]\n */\n var sortBy = baseRest(function(collection, iteratees) {\n if (collection == null) {\n return [];\n }\n var length = iteratees.length;\n if (length > 1 && isIterateeCall(collection, iteratees[0], iteratees[1])) {\n iteratees = [];\n } else if (length > 2 && isIterateeCall(iteratees[0], iteratees[1], iteratees[2])) {\n iteratees = [iteratees[0]];\n }\n return baseOrderBy(collection, baseFlatten(iteratees, 1), []);\n });\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Gets the timestamp of the number of milliseconds that have elapsed since\n * the Unix epoch (1 January 1970 00:00:00 UTC).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Date\n * @returns {number} Returns the timestamp.\n * @example\n *\n * _.defer(function(stamp) {\n * console.log(_.now() - stamp);\n * }, _.now());\n * // => Logs the number of milliseconds it took for the deferred invocation.\n */\n var now = ctxNow || function() {\n return root.Date.now();\n };\n\n /*------------------------------------------------------------------------*/\n\n /**\n * The opposite of `_.before`; this method creates a function that invokes\n * `func` once it's called `n` or more times.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {number} n The number of calls before `func` is invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var saves = ['profile', 'settings'];\n *\n * var done = _.after(saves.length, function() {\n * console.log('done saving!');\n * });\n *\n * _.forEach(saves, function(type) {\n * asyncSave({ 'type': type, 'complete': done });\n * });\n * // => Logs 'done saving!' after the two async saves have completed.\n */\n function after(n, func) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n < 1) {\n return func.apply(this, arguments);\n }\n };\n }\n\n /**\n * Creates a function that invokes `func`, with up to `n` arguments,\n * ignoring any additional arguments.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @param {number} [n=func.length] The arity cap.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.ary(parseInt, 1));\n * // => [6, 8, 10]\n */\n function ary(func, n, guard) {\n n = guard ? undefined : n;\n n = (func && n == null) ? func.length : n;\n return createWrap(func, WRAP_ARY_FLAG, undefined, undefined, undefined, undefined, n);\n }\n\n /**\n * Creates a function that invokes `func`, with the `this` binding and arguments\n * of the created function, while it's called less than `n` times. Subsequent\n * calls to the created function return the result of the last `func` invocation.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {number} n The number of calls at which `func` is no longer invoked.\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * jQuery(element).on('click', _.before(5, addContactToList));\n * // => Allows adding up to 4 contacts to the list.\n */\n function before(n, func) {\n var result;\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n n = toInteger(n);\n return function() {\n if (--n > 0) {\n result = func.apply(this, arguments);\n }\n if (n <= 1) {\n func = undefined;\n }\n return result;\n };\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of `thisArg`\n * and `partials` prepended to the arguments it receives.\n *\n * The `_.bind.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for partially applied arguments.\n *\n * **Note:** Unlike native `Function#bind`, this method doesn't set the \"length\"\n * property of bound functions.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to bind.\n * @param {*} thisArg The `this` binding of `func`.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * function greet(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n *\n * var object = { 'user': 'fred' };\n *\n * var bound = _.bind(greet, object, 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bind(greet, object, _, '!');\n * bound('hi');\n * // => 'hi fred!'\n */\n var bind = baseRest(function(func, thisArg, partials) {\n var bitmask = WRAP_BIND_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bind));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(func, bitmask, thisArg, partials, holders);\n });\n\n /**\n * Creates a function that invokes the method at `object[key]` with `partials`\n * prepended to the arguments it receives.\n *\n * This method differs from `_.bind` by allowing bound functions to reference\n * methods that may be redefined or don't yet exist. See\n * [Peter Michaux's article](http://peter.michaux.ca/articles/lazy-function-definition-pattern)\n * for more details.\n *\n * The `_.bindKey.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Function\n * @param {Object} object The object to invoke the method on.\n * @param {string} key The key of the method.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new bound function.\n * @example\n *\n * var object = {\n * 'user': 'fred',\n * 'greet': function(greeting, punctuation) {\n * return greeting + ' ' + this.user + punctuation;\n * }\n * };\n *\n * var bound = _.bindKey(object, 'greet', 'hi');\n * bound('!');\n * // => 'hi fred!'\n *\n * object.greet = function(greeting, punctuation) {\n * return greeting + 'ya ' + this.user + punctuation;\n * };\n *\n * bound('!');\n * // => 'hiya fred!'\n *\n * // Bound with placeholders.\n * var bound = _.bindKey(object, 'greet', _, '!');\n * bound('hi');\n * // => 'hiya fred!'\n */\n var bindKey = baseRest(function(object, key, partials) {\n var bitmask = WRAP_BIND_FLAG | WRAP_BIND_KEY_FLAG;\n if (partials.length) {\n var holders = replaceHolders(partials, getHolder(bindKey));\n bitmask |= WRAP_PARTIAL_FLAG;\n }\n return createWrap(key, bitmask, object, partials, holders);\n });\n\n /**\n * Creates a function that accepts arguments of `func` and either invokes\n * `func` returning its result, if at least `arity` number of arguments have\n * been provided, or returns a function that accepts the remaining `func`\n * arguments, and so on. The arity of `func` may be specified if `func.length`\n * is not sufficient.\n *\n * The `_.curry.placeholder` value, which defaults to `_` in monolithic builds,\n * may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curry(abc);\n *\n * curried(1)(2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2)(3);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(1)(_, 3)(2);\n * // => [1, 2, 3]\n */\n function curry(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curry.placeholder;\n return result;\n }\n\n /**\n * This method is like `_.curry` except that arguments are applied to `func`\n * in the manner of `_.partialRight` instead of `_.partial`.\n *\n * The `_.curryRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for provided arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of curried functions.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to curry.\n * @param {number} [arity=func.length] The arity of `func`.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the new curried function.\n * @example\n *\n * var abc = function(a, b, c) {\n * return [a, b, c];\n * };\n *\n * var curried = _.curryRight(abc);\n *\n * curried(3)(2)(1);\n * // => [1, 2, 3]\n *\n * curried(2, 3)(1);\n * // => [1, 2, 3]\n *\n * curried(1, 2, 3);\n * // => [1, 2, 3]\n *\n * // Curried with placeholders.\n * curried(3)(1, _)(2);\n * // => [1, 2, 3]\n */\n function curryRight(func, arity, guard) {\n arity = guard ? undefined : arity;\n var result = createWrap(func, WRAP_CURRY_RIGHT_FLAG, undefined, undefined, undefined, undefined, undefined, arity);\n result.placeholder = curryRight.placeholder;\n return result;\n }\n\n /**\n * Creates a debounced function that delays invoking `func` until after `wait`\n * milliseconds have elapsed since the last time the debounced function was\n * invoked. The debounced function comes with a `cancel` method to cancel\n * delayed `func` invocations and a `flush` method to immediately invoke them.\n * Provide `options` to indicate whether `func` should be invoked on the\n * leading and/or trailing edge of the `wait` timeout. The `func` is invoked\n * with the last arguments provided to the debounced function. Subsequent\n * calls to the debounced function return the result of the last `func`\n * invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the debounced function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.debounce` and `_.throttle`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to debounce.\n * @param {number} [wait=0] The number of milliseconds to delay.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=false]\n * Specify invoking on the leading edge of the timeout.\n * @param {number} [options.maxWait]\n * The maximum time `func` is allowed to be delayed before it's invoked.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new debounced function.\n * @example\n *\n * // Avoid costly calculations while the window size is in flux.\n * jQuery(window).on('resize', _.debounce(calculateLayout, 150));\n *\n * // Invoke `sendMail` when clicked, debouncing subsequent calls.\n * jQuery(element).on('click', _.debounce(sendMail, 300, {\n * 'leading': true,\n * 'trailing': false\n * }));\n *\n * // Ensure `batchLog` is invoked once after 1 second of debounced calls.\n * var debounced = _.debounce(batchLog, 250, { 'maxWait': 1000 });\n * var source = new EventSource('/stream');\n * jQuery(source).on('message', debounced);\n *\n * // Cancel the trailing debounced invocation.\n * jQuery(window).on('popstate', debounced.cancel);\n */\n function debounce(func, wait, options) {\n var lastArgs,\n lastThis,\n maxWait,\n result,\n timerId,\n lastCallTime,\n lastInvokeTime = 0,\n leading = false,\n maxing = false,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n wait = toNumber(wait) || 0;\n if (isObject(options)) {\n leading = !!options.leading;\n maxing = 'maxWait' in options;\n maxWait = maxing ? nativeMax(toNumber(options.maxWait) || 0, wait) : maxWait;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n\n function invokeFunc(time) {\n var args = lastArgs,\n thisArg = lastThis;\n\n lastArgs = lastThis = undefined;\n lastInvokeTime = time;\n result = func.apply(thisArg, args);\n return result;\n }\n\n function leadingEdge(time) {\n // Reset any `maxWait` timer.\n lastInvokeTime = time;\n // Start the timer for the trailing edge.\n timerId = setTimeout(timerExpired, wait);\n // Invoke the leading edge.\n return leading ? invokeFunc(time) : result;\n }\n\n function remainingWait(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime,\n timeWaiting = wait - timeSinceLastCall;\n\n return maxing\n ? nativeMin(timeWaiting, maxWait - timeSinceLastInvoke)\n : timeWaiting;\n }\n\n function shouldInvoke(time) {\n var timeSinceLastCall = time - lastCallTime,\n timeSinceLastInvoke = time - lastInvokeTime;\n\n // Either this is the first call, activity has stopped and we're at the\n // trailing edge, the system time has gone backwards and we're treating\n // it as the trailing edge, or we've hit the `maxWait` limit.\n return (lastCallTime === undefined || (timeSinceLastCall >= wait) ||\n (timeSinceLastCall < 0) || (maxing && timeSinceLastInvoke >= maxWait));\n }\n\n function timerExpired() {\n var time = now();\n if (shouldInvoke(time)) {\n return trailingEdge(time);\n }\n // Restart the timer.\n timerId = setTimeout(timerExpired, remainingWait(time));\n }\n\n function trailingEdge(time) {\n timerId = undefined;\n\n // Only invoke if we have `lastArgs` which means `func` has been\n // debounced at least once.\n if (trailing && lastArgs) {\n return invokeFunc(time);\n }\n lastArgs = lastThis = undefined;\n return result;\n }\n\n function cancel() {\n if (timerId !== undefined) {\n clearTimeout(timerId);\n }\n lastInvokeTime = 0;\n lastArgs = lastCallTime = lastThis = timerId = undefined;\n }\n\n function flush() {\n return timerId === undefined ? result : trailingEdge(now());\n }\n\n function debounced() {\n var time = now(),\n isInvoking = shouldInvoke(time);\n\n lastArgs = arguments;\n lastThis = this;\n lastCallTime = time;\n\n if (isInvoking) {\n if (timerId === undefined) {\n return leadingEdge(lastCallTime);\n }\n if (maxing) {\n // Handle invocations in a tight loop.\n clearTimeout(timerId);\n timerId = setTimeout(timerExpired, wait);\n return invokeFunc(lastCallTime);\n }\n }\n if (timerId === undefined) {\n timerId = setTimeout(timerExpired, wait);\n }\n return result;\n }\n debounced.cancel = cancel;\n debounced.flush = flush;\n return debounced;\n }\n\n /**\n * Defers invoking the `func` until the current call stack has cleared. Any\n * additional arguments are provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to defer.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.defer(function(text) {\n * console.log(text);\n * }, 'deferred');\n * // => Logs 'deferred' after one millisecond.\n */\n var defer = baseRest(function(func, args) {\n return baseDelay(func, 1, args);\n });\n\n /**\n * Invokes `func` after `wait` milliseconds. Any additional arguments are\n * provided to `func` when it's invoked.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to delay.\n * @param {number} wait The number of milliseconds to delay invocation.\n * @param {...*} [args] The arguments to invoke `func` with.\n * @returns {number} Returns the timer id.\n * @example\n *\n * _.delay(function(text) {\n * console.log(text);\n * }, 1000, 'later');\n * // => Logs 'later' after one second.\n */\n var delay = baseRest(function(func, wait, args) {\n return baseDelay(func, toNumber(wait) || 0, args);\n });\n\n /**\n * Creates a function that invokes `func` with arguments reversed.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to flip arguments for.\n * @returns {Function} Returns the new flipped function.\n * @example\n *\n * var flipped = _.flip(function() {\n * return _.toArray(arguments);\n * });\n *\n * flipped('a', 'b', 'c', 'd');\n * // => ['d', 'c', 'b', 'a']\n */\n function flip(func) {\n return createWrap(func, WRAP_FLIP_FLAG);\n }\n\n /**\n * Creates a function that memoizes the result of `func`. If `resolver` is\n * provided, it determines the cache key for storing the result based on the\n * arguments provided to the memoized function. By default, the first argument\n * provided to the memoized function is used as the map cache key. The `func`\n * is invoked with the `this` binding of the memoized function.\n *\n * **Note:** The cache is exposed as the `cache` property on the memoized\n * function. Its creation may be customized by replacing the `_.memoize.Cache`\n * constructor with one whose instances implement the\n * [`Map`](http://ecma-international.org/ecma-262/7.0/#sec-properties-of-the-map-prototype-object)\n * method interface of `clear`, `delete`, `get`, `has`, and `set`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to have its output memoized.\n * @param {Function} [resolver] The function to resolve the cache key.\n * @returns {Function} Returns the new memoized function.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n * var other = { 'c': 3, 'd': 4 };\n *\n * var values = _.memoize(_.values);\n * values(object);\n * // => [1, 2]\n *\n * values(other);\n * // => [3, 4]\n *\n * object.a = 2;\n * values(object);\n * // => [1, 2]\n *\n * // Modify the result cache.\n * values.cache.set(object, ['a', 'b']);\n * values(object);\n * // => ['a', 'b']\n *\n * // Replace `_.memoize.Cache`.\n * _.memoize.Cache = WeakMap;\n */\n function memoize(func, resolver) {\n if (typeof func != 'function' || (resolver != null && typeof resolver != 'function')) {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n var memoized = function() {\n var args = arguments,\n key = resolver ? resolver.apply(this, args) : args[0],\n cache = memoized.cache;\n\n if (cache.has(key)) {\n return cache.get(key);\n }\n var result = func.apply(this, args);\n memoized.cache = cache.set(key, result) || cache;\n return result;\n };\n memoized.cache = new (memoize.Cache || MapCache);\n return memoized;\n }\n\n // Expose `MapCache`.\n memoize.Cache = MapCache;\n\n /**\n * Creates a function that negates the result of the predicate `func`. The\n * `func` predicate is invoked with the `this` binding and arguments of the\n * created function.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} predicate The predicate to negate.\n * @returns {Function} Returns the new negated function.\n * @example\n *\n * function isEven(n) {\n * return n % 2 == 0;\n * }\n *\n * _.filter([1, 2, 3, 4, 5, 6], _.negate(isEven));\n * // => [1, 3, 5]\n */\n function negate(predicate) {\n if (typeof predicate != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n return function() {\n var args = arguments;\n switch (args.length) {\n case 0: return !predicate.call(this);\n case 1: return !predicate.call(this, args[0]);\n case 2: return !predicate.call(this, args[0], args[1]);\n case 3: return !predicate.call(this, args[0], args[1], args[2]);\n }\n return !predicate.apply(this, args);\n };\n }\n\n /**\n * Creates a function that is restricted to invoking `func` once. Repeat calls\n * to the function return the value of the first invocation. The `func` is\n * invoked with the `this` binding and arguments of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to restrict.\n * @returns {Function} Returns the new restricted function.\n * @example\n *\n * var initialize = _.once(createApplication);\n * initialize();\n * initialize();\n * // => `createApplication` is invoked once\n */\n function once(func) {\n return before(2, func);\n }\n\n /**\n * Creates a function that invokes `func` with its arguments transformed.\n *\n * @static\n * @since 4.0.0\n * @memberOf _\n * @category Function\n * @param {Function} func The function to wrap.\n * @param {...(Function|Function[])} [transforms=[_.identity]]\n * The argument transforms.\n * @returns {Function} Returns the new function.\n * @example\n *\n * function doubled(n) {\n * return n * 2;\n * }\n *\n * function square(n) {\n * return n * n;\n * }\n *\n * var func = _.overArgs(function(x, y) {\n * return [x, y];\n * }, [square, doubled]);\n *\n * func(9, 3);\n * // => [81, 6]\n *\n * func(10, 5);\n * // => [100, 10]\n */\n var overArgs = castRest(function(func, transforms) {\n transforms = (transforms.length == 1 && isArray(transforms[0]))\n ? arrayMap(transforms[0], baseUnary(getIteratee()))\n : arrayMap(baseFlatten(transforms, 1), baseUnary(getIteratee()));\n\n var funcsLength = transforms.length;\n return baseRest(function(args) {\n var index = -1,\n length = nativeMin(args.length, funcsLength);\n\n while (++index < length) {\n args[index] = transforms[index].call(this, args[index]);\n }\n return apply(func, this, args);\n });\n });\n\n /**\n * Creates a function that invokes `func` with `partials` prepended to the\n * arguments it receives. This method is like `_.bind` except it does **not**\n * alter the `this` binding.\n *\n * The `_.partial.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 0.2.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var sayHelloTo = _.partial(greet, 'hello');\n * sayHelloTo('fred');\n * // => 'hello fred'\n *\n * // Partially applied with placeholders.\n * var greetFred = _.partial(greet, _, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n */\n var partial = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partial));\n return createWrap(func, WRAP_PARTIAL_FLAG, undefined, partials, holders);\n });\n\n /**\n * This method is like `_.partial` except that partially applied arguments\n * are appended to the arguments it receives.\n *\n * The `_.partialRight.placeholder` value, which defaults to `_` in monolithic\n * builds, may be used as a placeholder for partially applied arguments.\n *\n * **Note:** This method doesn't set the \"length\" property of partially\n * applied functions.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Function\n * @param {Function} func The function to partially apply arguments to.\n * @param {...*} [partials] The arguments to be partially applied.\n * @returns {Function} Returns the new partially applied function.\n * @example\n *\n * function greet(greeting, name) {\n * return greeting + ' ' + name;\n * }\n *\n * var greetFred = _.partialRight(greet, 'fred');\n * greetFred('hi');\n * // => 'hi fred'\n *\n * // Partially applied with placeholders.\n * var sayHelloTo = _.partialRight(greet, 'hello', _);\n * sayHelloTo('fred');\n * // => 'hello fred'\n */\n var partialRight = baseRest(function(func, partials) {\n var holders = replaceHolders(partials, getHolder(partialRight));\n return createWrap(func, WRAP_PARTIAL_RIGHT_FLAG, undefined, partials, holders);\n });\n\n /**\n * Creates a function that invokes `func` with arguments arranged according\n * to the specified `indexes` where the argument value at the first index is\n * provided as the first argument, the argument value at the second index is\n * provided as the second argument, and so on.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Function\n * @param {Function} func The function to rearrange arguments for.\n * @param {...(number|number[])} indexes The arranged argument indexes.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var rearged = _.rearg(function(a, b, c) {\n * return [a, b, c];\n * }, [2, 0, 1]);\n *\n * rearged('b', 'c', 'a')\n * // => ['a', 'b', 'c']\n */\n var rearg = flatRest(function(func, indexes) {\n return createWrap(func, WRAP_REARG_FLAG, undefined, undefined, undefined, indexes);\n });\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * created function and arguments from `start` and beyond provided as\n * an array.\n *\n * **Note:** This method is based on the\n * [rest parameter](https://mdn.io/rest_parameters).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to apply a rest parameter to.\n * @param {number} [start=func.length-1] The start position of the rest parameter.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.rest(function(what, names) {\n * return what + ' ' + _.initial(names).join(', ') +\n * (_.size(names) > 1 ? ', & ' : '') + _.last(names);\n * });\n *\n * say('hello', 'fred', 'barney', 'pebbles');\n * // => 'hello fred, barney, & pebbles'\n */\n function rest(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start === undefined ? start : toInteger(start);\n return baseRest(func, start);\n }\n\n /**\n * Creates a function that invokes `func` with the `this` binding of the\n * create function and an array of arguments much like\n * [`Function#apply`](http://www.ecma-international.org/ecma-262/7.0/#sec-function.prototype.apply).\n *\n * **Note:** This method is based on the\n * [spread operator](https://mdn.io/spread_operator).\n *\n * @static\n * @memberOf _\n * @since 3.2.0\n * @category Function\n * @param {Function} func The function to spread arguments over.\n * @param {number} [start=0] The start position of the spread.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var say = _.spread(function(who, what) {\n * return who + ' says ' + what;\n * });\n *\n * say(['fred', 'hello']);\n * // => 'fred says hello'\n *\n * var numbers = Promise.all([\n * Promise.resolve(40),\n * Promise.resolve(36)\n * ]);\n *\n * numbers.then(_.spread(function(x, y) {\n * return x + y;\n * }));\n * // => a Promise of 76\n */\n function spread(func, start) {\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n start = start == null ? 0 : nativeMax(toInteger(start), 0);\n return baseRest(function(args) {\n var array = args[start],\n otherArgs = castSlice(args, 0, start);\n\n if (array) {\n arrayPush(otherArgs, array);\n }\n return apply(func, this, otherArgs);\n });\n }\n\n /**\n * Creates a throttled function that only invokes `func` at most once per\n * every `wait` milliseconds. The throttled function comes with a `cancel`\n * method to cancel delayed `func` invocations and a `flush` method to\n * immediately invoke them. Provide `options` to indicate whether `func`\n * should be invoked on the leading and/or trailing edge of the `wait`\n * timeout. The `func` is invoked with the last arguments provided to the\n * throttled function. Subsequent calls to the throttled function return the\n * result of the last `func` invocation.\n *\n * **Note:** If `leading` and `trailing` options are `true`, `func` is\n * invoked on the trailing edge of the timeout only if the throttled function\n * is invoked more than once during the `wait` timeout.\n *\n * If `wait` is `0` and `leading` is `false`, `func` invocation is deferred\n * until to the next tick, similar to `setTimeout` with a timeout of `0`.\n *\n * See [David Corbacho's article](https://css-tricks.com/debouncing-throttling-explained-examples/)\n * for details over the differences between `_.throttle` and `_.debounce`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {Function} func The function to throttle.\n * @param {number} [wait=0] The number of milliseconds to throttle invocations to.\n * @param {Object} [options={}] The options object.\n * @param {boolean} [options.leading=true]\n * Specify invoking on the leading edge of the timeout.\n * @param {boolean} [options.trailing=true]\n * Specify invoking on the trailing edge of the timeout.\n * @returns {Function} Returns the new throttled function.\n * @example\n *\n * // Avoid excessively updating the position while scrolling.\n * jQuery(window).on('scroll', _.throttle(updatePosition, 100));\n *\n * // Invoke `renewToken` when the click event is fired, but not more than once every 5 minutes.\n * var throttled = _.throttle(renewToken, 300000, { 'trailing': false });\n * jQuery(element).on('click', throttled);\n *\n * // Cancel the trailing throttled invocation.\n * jQuery(window).on('popstate', throttled.cancel);\n */\n function throttle(func, wait, options) {\n var leading = true,\n trailing = true;\n\n if (typeof func != 'function') {\n throw new TypeError(FUNC_ERROR_TEXT);\n }\n if (isObject(options)) {\n leading = 'leading' in options ? !!options.leading : leading;\n trailing = 'trailing' in options ? !!options.trailing : trailing;\n }\n return debounce(func, wait, {\n 'leading': leading,\n 'maxWait': wait,\n 'trailing': trailing\n });\n }\n\n /**\n * Creates a function that accepts up to one argument, ignoring any\n * additional arguments.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Function\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n * @example\n *\n * _.map(['6', '8', '10'], _.unary(parseInt));\n * // => [6, 8, 10]\n */\n function unary(func) {\n return ary(func, 1);\n }\n\n /**\n * Creates a function that provides `value` to `wrapper` as its first\n * argument. Any additional arguments provided to the function are appended\n * to those provided to the `wrapper`. The wrapper is invoked with the `this`\n * binding of the created function.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Function\n * @param {*} value The value to wrap.\n * @param {Function} [wrapper=identity] The wrapper function.\n * @returns {Function} Returns the new function.\n * @example\n *\n * var p = _.wrap(_.escape, function(func, text) {\n * return '

' + func(text) + '

';\n * });\n *\n * p('fred, barney, & pebbles');\n * // => '

fred, barney, & pebbles

'\n */\n function wrap(value, wrapper) {\n return partial(castFunction(wrapper), value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Casts `value` as an array if it's not one.\n *\n * @static\n * @memberOf _\n * @since 4.4.0\n * @category Lang\n * @param {*} value The value to inspect.\n * @returns {Array} Returns the cast array.\n * @example\n *\n * _.castArray(1);\n * // => [1]\n *\n * _.castArray({ 'a': 1 });\n * // => [{ 'a': 1 }]\n *\n * _.castArray('abc');\n * // => ['abc']\n *\n * _.castArray(null);\n * // => [null]\n *\n * _.castArray(undefined);\n * // => [undefined]\n *\n * _.castArray();\n * // => []\n *\n * var array = [1, 2, 3];\n * console.log(_.castArray(array) === array);\n * // => true\n */\n function castArray() {\n if (!arguments.length) {\n return [];\n }\n var value = arguments[0];\n return isArray(value) ? value : [value];\n }\n\n /**\n * Creates a shallow clone of `value`.\n *\n * **Note:** This method is loosely based on the\n * [structured clone algorithm](https://mdn.io/Structured_clone_algorithm)\n * and supports cloning arrays, array buffers, booleans, date objects, maps,\n * numbers, `Object` objects, regexes, sets, strings, symbols, and typed\n * arrays. The own enumerable properties of `arguments` objects are cloned\n * as plain objects. An empty object is returned for uncloneable values such\n * as error objects, functions, DOM nodes, and WeakMaps.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to clone.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeep\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var shallow = _.clone(objects);\n * console.log(shallow[0] === objects[0]);\n * // => true\n */\n function clone(value) {\n return baseClone(value, CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.clone` except that it accepts `customizer` which\n * is invoked to produce the cloned value. If `customizer` returns `undefined`,\n * cloning is handled by the method instead. The `customizer` is invoked with\n * up to four arguments; (value [, index|key, object, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the cloned value.\n * @see _.cloneDeepWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(false);\n * }\n * }\n *\n * var el = _.cloneWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 0\n */\n function cloneWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * This method is like `_.clone` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @returns {*} Returns the deep cloned value.\n * @see _.clone\n * @example\n *\n * var objects = [{ 'a': 1 }, { 'b': 2 }];\n *\n * var deep = _.cloneDeep(objects);\n * console.log(deep[0] === objects[0]);\n * // => false\n */\n function cloneDeep(value) {\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG);\n }\n\n /**\n * This method is like `_.cloneWith` except that it recursively clones `value`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to recursively clone.\n * @param {Function} [customizer] The function to customize cloning.\n * @returns {*} Returns the deep cloned value.\n * @see _.cloneWith\n * @example\n *\n * function customizer(value) {\n * if (_.isElement(value)) {\n * return value.cloneNode(true);\n * }\n * }\n *\n * var el = _.cloneDeepWith(document.body, customizer);\n *\n * console.log(el === document.body);\n * // => false\n * console.log(el.nodeName);\n * // => 'BODY'\n * console.log(el.childNodes.length);\n * // => 20\n */\n function cloneDeepWith(value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseClone(value, CLONE_DEEP_FLAG | CLONE_SYMBOLS_FLAG, customizer);\n }\n\n /**\n * Checks if `object` conforms to `source` by invoking the predicate\n * properties of `source` with the corresponding property values of `object`.\n *\n * **Note:** This method is equivalent to `_.conforms` when `source` is\n * partially applied.\n *\n * @static\n * @memberOf _\n * @since 4.14.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property predicates to conform to.\n * @returns {boolean} Returns `true` if `object` conforms, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 1; } });\n * // => true\n *\n * _.conformsTo(object, { 'b': function(n) { return n > 2; } });\n * // => false\n */\n function conformsTo(object, source) {\n return source == null || baseConformsTo(object, source, keys(source));\n }\n\n /**\n * Performs a\n * [`SameValueZero`](http://ecma-international.org/ecma-262/7.0/#sec-samevaluezero)\n * comparison between two values to determine if they are equivalent.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.eq(object, object);\n * // => true\n *\n * _.eq(object, other);\n * // => false\n *\n * _.eq('a', 'a');\n * // => true\n *\n * _.eq('a', Object('a'));\n * // => false\n *\n * _.eq(NaN, NaN);\n * // => true\n */\n function eq(value, other) {\n return value === other || (value !== value && other !== other);\n }\n\n /**\n * Checks if `value` is greater than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than `other`,\n * else `false`.\n * @see _.lt\n * @example\n *\n * _.gt(3, 1);\n * // => true\n *\n * _.gt(3, 3);\n * // => false\n *\n * _.gt(1, 3);\n * // => false\n */\n var gt = createRelationalOperation(baseGt);\n\n /**\n * Checks if `value` is greater than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is greater than or equal to\n * `other`, else `false`.\n * @see _.lte\n * @example\n *\n * _.gte(3, 1);\n * // => true\n *\n * _.gte(3, 3);\n * // => true\n *\n * _.gte(1, 3);\n * // => false\n */\n var gte = createRelationalOperation(function(value, other) {\n return value >= other;\n });\n\n /**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\n var isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n };\n\n /**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\n var isArray = Array.isArray;\n\n /**\n * Checks if `value` is classified as an `ArrayBuffer` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array buffer, else `false`.\n * @example\n *\n * _.isArrayBuffer(new ArrayBuffer(2));\n * // => true\n *\n * _.isArrayBuffer(new Array(2));\n * // => false\n */\n var isArrayBuffer = nodeIsArrayBuffer ? baseUnary(nodeIsArrayBuffer) : baseIsArrayBuffer;\n\n /**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\n function isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n }\n\n /**\n * This method is like `_.isArrayLike` except that it also checks if `value`\n * is an object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array-like object,\n * else `false`.\n * @example\n *\n * _.isArrayLikeObject([1, 2, 3]);\n * // => true\n *\n * _.isArrayLikeObject(document.body.children);\n * // => true\n *\n * _.isArrayLikeObject('abc');\n * // => false\n *\n * _.isArrayLikeObject(_.noop);\n * // => false\n */\n function isArrayLikeObject(value) {\n return isObjectLike(value) && isArrayLike(value);\n }\n\n /**\n * Checks if `value` is classified as a boolean primitive or object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a boolean, else `false`.\n * @example\n *\n * _.isBoolean(false);\n * // => true\n *\n * _.isBoolean(null);\n * // => false\n */\n function isBoolean(value) {\n return value === true || value === false ||\n (isObjectLike(value) && baseGetTag(value) == boolTag);\n }\n\n /**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\n var isBuffer = nativeIsBuffer || stubFalse;\n\n /**\n * Checks if `value` is classified as a `Date` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a date object, else `false`.\n * @example\n *\n * _.isDate(new Date);\n * // => true\n *\n * _.isDate('Mon April 23 2012');\n * // => false\n */\n var isDate = nodeIsDate ? baseUnary(nodeIsDate) : baseIsDate;\n\n /**\n * Checks if `value` is likely a DOM element.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a DOM element, else `false`.\n * @example\n *\n * _.isElement(document.body);\n * // => true\n *\n * _.isElement('');\n * // => false\n */\n function isElement(value) {\n return isObjectLike(value) && value.nodeType === 1 && !isPlainObject(value);\n }\n\n /**\n * Checks if `value` is an empty object, collection, map, or set.\n *\n * Objects are considered empty if they have no own enumerable string keyed\n * properties.\n *\n * Array-like values such as `arguments` objects, arrays, buffers, strings, or\n * jQuery-like collections are considered empty if they have a `length` of `0`.\n * Similarly, maps and sets are considered empty if they have a `size` of `0`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is empty, else `false`.\n * @example\n *\n * _.isEmpty(null);\n * // => true\n *\n * _.isEmpty(true);\n * // => true\n *\n * _.isEmpty(1);\n * // => true\n *\n * _.isEmpty([1, 2, 3]);\n * // => false\n *\n * _.isEmpty({ 'a': 1 });\n * // => false\n */\n function isEmpty(value) {\n if (value == null) {\n return true;\n }\n if (isArrayLike(value) &&\n (isArray(value) || typeof value == 'string' || typeof value.splice == 'function' ||\n isBuffer(value) || isTypedArray(value) || isArguments(value))) {\n return !value.length;\n }\n var tag = getTag(value);\n if (tag == mapTag || tag == setTag) {\n return !value.size;\n }\n if (isPrototype(value)) {\n return !baseKeys(value).length;\n }\n for (var key in value) {\n if (hasOwnProperty.call(value, key)) {\n return false;\n }\n }\n return true;\n }\n\n /**\n * Performs a deep comparison between two values to determine if they are\n * equivalent.\n *\n * **Note:** This method supports comparing arrays, array buffers, booleans,\n * date objects, error objects, maps, numbers, `Object` objects, regexes,\n * sets, strings, symbols, and typed arrays. `Object` objects are compared\n * by their own, not inherited, enumerable properties. Functions and DOM\n * nodes are compared by strict equality, i.e. `===`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * var object = { 'a': 1 };\n * var other = { 'a': 1 };\n *\n * _.isEqual(object, other);\n * // => true\n *\n * object === other;\n * // => false\n */\n function isEqual(value, other) {\n return baseIsEqual(value, other);\n }\n\n /**\n * This method is like `_.isEqual` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with up to\n * six arguments: (objValue, othValue [, index|key, object, other, stack]).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if the values are equivalent, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, othValue) {\n * if (isGreeting(objValue) && isGreeting(othValue)) {\n * return true;\n * }\n * }\n *\n * var array = ['hello', 'goodbye'];\n * var other = ['hi', 'goodbye'];\n *\n * _.isEqualWith(array, other, customizer);\n * // => true\n */\n function isEqualWith(value, other, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n var result = customizer ? customizer(value, other) : undefined;\n return result === undefined ? baseIsEqual(value, other, undefined, customizer) : !!result;\n }\n\n /**\n * Checks if `value` is an `Error`, `EvalError`, `RangeError`, `ReferenceError`,\n * `SyntaxError`, `TypeError`, or `URIError` object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an error object, else `false`.\n * @example\n *\n * _.isError(new Error);\n * // => true\n *\n * _.isError(Error);\n * // => false\n */\n function isError(value) {\n if (!isObjectLike(value)) {\n return false;\n }\n var tag = baseGetTag(value);\n return tag == errorTag || tag == domExcTag ||\n (typeof value.message == 'string' && typeof value.name == 'string' && !isPlainObject(value));\n }\n\n /**\n * Checks if `value` is a finite primitive number.\n *\n * **Note:** This method is based on\n * [`Number.isFinite`](https://mdn.io/Number/isFinite).\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a finite number, else `false`.\n * @example\n *\n * _.isFinite(3);\n * // => true\n *\n * _.isFinite(Number.MIN_VALUE);\n * // => true\n *\n * _.isFinite(Infinity);\n * // => false\n *\n * _.isFinite('3');\n * // => false\n */\n function isFinite(value) {\n return typeof value == 'number' && nativeIsFinite(value);\n }\n\n /**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\n function isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n }\n\n /**\n * Checks if `value` is an integer.\n *\n * **Note:** This method is based on\n * [`Number.isInteger`](https://mdn.io/Number/isInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an integer, else `false`.\n * @example\n *\n * _.isInteger(3);\n * // => true\n *\n * _.isInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isInteger(Infinity);\n * // => false\n *\n * _.isInteger('3');\n * // => false\n */\n function isInteger(value) {\n return typeof value == 'number' && value == toInteger(value);\n }\n\n /**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\n function isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\n function isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n }\n\n /**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\n function isObjectLike(value) {\n return value != null && typeof value == 'object';\n }\n\n /**\n * Checks if `value` is classified as a `Map` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a map, else `false`.\n * @example\n *\n * _.isMap(new Map);\n * // => true\n *\n * _.isMap(new WeakMap);\n * // => false\n */\n var isMap = nodeIsMap ? baseUnary(nodeIsMap) : baseIsMap;\n\n /**\n * Performs a partial deep comparison between `object` and `source` to\n * determine if `object` contains equivalent property values.\n *\n * **Note:** This method is equivalent to `_.matches` when `source` is\n * partially applied.\n *\n * Partial comparisons will match empty array and empty object `source`\n * values against any array or object value, respectively. See `_.isEqual`\n * for a list of supported value comparisons.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * var object = { 'a': 1, 'b': 2 };\n *\n * _.isMatch(object, { 'b': 2 });\n * // => true\n *\n * _.isMatch(object, { 'b': 1 });\n * // => false\n */\n function isMatch(object, source) {\n return object === source || baseIsMatch(object, source, getMatchData(source));\n }\n\n /**\n * This method is like `_.isMatch` except that it accepts `customizer` which\n * is invoked to compare values. If `customizer` returns `undefined`, comparisons\n * are handled by the method instead. The `customizer` is invoked with five\n * arguments: (objValue, srcValue, index|key, object, source).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {Object} object The object to inspect.\n * @param {Object} source The object of property values to match.\n * @param {Function} [customizer] The function to customize comparisons.\n * @returns {boolean} Returns `true` if `object` is a match, else `false`.\n * @example\n *\n * function isGreeting(value) {\n * return /^h(?:i|ello)$/.test(value);\n * }\n *\n * function customizer(objValue, srcValue) {\n * if (isGreeting(objValue) && isGreeting(srcValue)) {\n * return true;\n * }\n * }\n *\n * var object = { 'greeting': 'hello' };\n * var source = { 'greeting': 'hi' };\n *\n * _.isMatchWith(object, source, customizer);\n * // => true\n */\n function isMatchWith(object, source, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return baseIsMatch(object, source, getMatchData(source), customizer);\n }\n\n /**\n * Checks if `value` is `NaN`.\n *\n * **Note:** This method is based on\n * [`Number.isNaN`](https://mdn.io/Number/isNaN) and is not the same as\n * global [`isNaN`](https://mdn.io/isNaN) which returns `true` for\n * `undefined` and other non-number values.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `NaN`, else `false`.\n * @example\n *\n * _.isNaN(NaN);\n * // => true\n *\n * _.isNaN(new Number(NaN));\n * // => true\n *\n * isNaN(undefined);\n * // => true\n *\n * _.isNaN(undefined);\n * // => false\n */\n function isNaN(value) {\n // An `NaN` primitive is the only value that is not equal to itself.\n // Perform the `toStringTag` check first to avoid errors with some\n // ActiveX objects in IE.\n return isNumber(value) && value != +value;\n }\n\n /**\n * Checks if `value` is a pristine native function.\n *\n * **Note:** This method can't reliably detect native functions in the presence\n * of the core-js package because core-js circumvents this kind of detection.\n * Despite multiple requests, the core-js maintainer has made it clear: any\n * attempt to fix the detection will be obstructed. As a result, we're left\n * with little choice but to throw an error. Unfortunately, this also affects\n * packages, like [babel-polyfill](https://www.npmjs.com/package/babel-polyfill),\n * which rely on core-js.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a native function,\n * else `false`.\n * @example\n *\n * _.isNative(Array.prototype.push);\n * // => true\n *\n * _.isNative(_);\n * // => false\n */\n function isNative(value) {\n if (isMaskable(value)) {\n throw new Error(CORE_ERROR_TEXT);\n }\n return baseIsNative(value);\n }\n\n /**\n * Checks if `value` is `null`.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `null`, else `false`.\n * @example\n *\n * _.isNull(null);\n * // => true\n *\n * _.isNull(void 0);\n * // => false\n */\n function isNull(value) {\n return value === null;\n }\n\n /**\n * Checks if `value` is `null` or `undefined`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is nullish, else `false`.\n * @example\n *\n * _.isNil(null);\n * // => true\n *\n * _.isNil(void 0);\n * // => true\n *\n * _.isNil(NaN);\n * // => false\n */\n function isNil(value) {\n return value == null;\n }\n\n /**\n * Checks if `value` is classified as a `Number` primitive or object.\n *\n * **Note:** To exclude `Infinity`, `-Infinity`, and `NaN`, which are\n * classified as numbers, use the `_.isFinite` method.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a number, else `false`.\n * @example\n *\n * _.isNumber(3);\n * // => true\n *\n * _.isNumber(Number.MIN_VALUE);\n * // => true\n *\n * _.isNumber(Infinity);\n * // => true\n *\n * _.isNumber('3');\n * // => false\n */\n function isNumber(value) {\n return typeof value == 'number' ||\n (isObjectLike(value) && baseGetTag(value) == numberTag);\n }\n\n /**\n * Checks if `value` is a plain object, that is, an object created by the\n * `Object` constructor or one with a `[[Prototype]]` of `null`.\n *\n * @static\n * @memberOf _\n * @since 0.8.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * _.isPlainObject(new Foo);\n * // => false\n *\n * _.isPlainObject([1, 2, 3]);\n * // => false\n *\n * _.isPlainObject({ 'x': 0, 'y': 0 });\n * // => true\n *\n * _.isPlainObject(Object.create(null));\n * // => true\n */\n function isPlainObject(value) {\n if (!isObjectLike(value) || baseGetTag(value) != objectTag) {\n return false;\n }\n var proto = getPrototype(value);\n if (proto === null) {\n return true;\n }\n var Ctor = hasOwnProperty.call(proto, 'constructor') && proto.constructor;\n return typeof Ctor == 'function' && Ctor instanceof Ctor &&\n funcToString.call(Ctor) == objectCtorString;\n }\n\n /**\n * Checks if `value` is classified as a `RegExp` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a regexp, else `false`.\n * @example\n *\n * _.isRegExp(/abc/);\n * // => true\n *\n * _.isRegExp('/abc/');\n * // => false\n */\n var isRegExp = nodeIsRegExp ? baseUnary(nodeIsRegExp) : baseIsRegExp;\n\n /**\n * Checks if `value` is a safe integer. An integer is safe if it's an IEEE-754\n * double precision number which isn't the result of a rounded unsafe integer.\n *\n * **Note:** This method is based on\n * [`Number.isSafeInteger`](https://mdn.io/Number/isSafeInteger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a safe integer, else `false`.\n * @example\n *\n * _.isSafeInteger(3);\n * // => true\n *\n * _.isSafeInteger(Number.MIN_VALUE);\n * // => false\n *\n * _.isSafeInteger(Infinity);\n * // => false\n *\n * _.isSafeInteger('3');\n * // => false\n */\n function isSafeInteger(value) {\n return isInteger(value) && value >= -MAX_SAFE_INTEGER && value <= MAX_SAFE_INTEGER;\n }\n\n /**\n * Checks if `value` is classified as a `Set` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a set, else `false`.\n * @example\n *\n * _.isSet(new Set);\n * // => true\n *\n * _.isSet(new WeakSet);\n * // => false\n */\n var isSet = nodeIsSet ? baseUnary(nodeIsSet) : baseIsSet;\n\n /**\n * Checks if `value` is classified as a `String` primitive or object.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a string, else `false`.\n * @example\n *\n * _.isString('abc');\n * // => true\n *\n * _.isString(1);\n * // => false\n */\n function isString(value) {\n return typeof value == 'string' ||\n (!isArray(value) && isObjectLike(value) && baseGetTag(value) == stringTag);\n }\n\n /**\n * Checks if `value` is classified as a `Symbol` primitive or object.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a symbol, else `false`.\n * @example\n *\n * _.isSymbol(Symbol.iterator);\n * // => true\n *\n * _.isSymbol('abc');\n * // => false\n */\n function isSymbol(value) {\n return typeof value == 'symbol' ||\n (isObjectLike(value) && baseGetTag(value) == symbolTag);\n }\n\n /**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\n var isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\n /**\n * Checks if `value` is `undefined`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is `undefined`, else `false`.\n * @example\n *\n * _.isUndefined(void 0);\n * // => true\n *\n * _.isUndefined(null);\n * // => false\n */\n function isUndefined(value) {\n return value === undefined;\n }\n\n /**\n * Checks if `value` is classified as a `WeakMap` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak map, else `false`.\n * @example\n *\n * _.isWeakMap(new WeakMap);\n * // => true\n *\n * _.isWeakMap(new Map);\n * // => false\n */\n function isWeakMap(value) {\n return isObjectLike(value) && getTag(value) == weakMapTag;\n }\n\n /**\n * Checks if `value` is classified as a `WeakSet` object.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a weak set, else `false`.\n * @example\n *\n * _.isWeakSet(new WeakSet);\n * // => true\n *\n * _.isWeakSet(new Set);\n * // => false\n */\n function isWeakSet(value) {\n return isObjectLike(value) && baseGetTag(value) == weakSetTag;\n }\n\n /**\n * Checks if `value` is less than `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than `other`,\n * else `false`.\n * @see _.gt\n * @example\n *\n * _.lt(1, 3);\n * // => true\n *\n * _.lt(3, 3);\n * // => false\n *\n * _.lt(3, 1);\n * // => false\n */\n var lt = createRelationalOperation(baseLt);\n\n /**\n * Checks if `value` is less than or equal to `other`.\n *\n * @static\n * @memberOf _\n * @since 3.9.0\n * @category Lang\n * @param {*} value The value to compare.\n * @param {*} other The other value to compare.\n * @returns {boolean} Returns `true` if `value` is less than or equal to\n * `other`, else `false`.\n * @see _.gte\n * @example\n *\n * _.lte(1, 3);\n * // => true\n *\n * _.lte(3, 3);\n * // => true\n *\n * _.lte(3, 1);\n * // => false\n */\n var lte = createRelationalOperation(function(value, other) {\n return value <= other;\n });\n\n /**\n * Converts `value` to an array.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Array} Returns the converted array.\n * @example\n *\n * _.toArray({ 'a': 1, 'b': 2 });\n * // => [1, 2]\n *\n * _.toArray('abc');\n * // => ['a', 'b', 'c']\n *\n * _.toArray(1);\n * // => []\n *\n * _.toArray(null);\n * // => []\n */\n function toArray(value) {\n if (!value) {\n return [];\n }\n if (isArrayLike(value)) {\n return isString(value) ? stringToArray(value) : copyArray(value);\n }\n if (symIterator && value[symIterator]) {\n return iteratorToArray(value[symIterator]());\n }\n var tag = getTag(value),\n func = tag == mapTag ? mapToArray : (tag == setTag ? setToArray : values);\n\n return func(value);\n }\n\n /**\n * Converts `value` to a finite number.\n *\n * @static\n * @memberOf _\n * @since 4.12.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted number.\n * @example\n *\n * _.toFinite(3.2);\n * // => 3.2\n *\n * _.toFinite(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toFinite(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toFinite('3.2');\n * // => 3.2\n */\n function toFinite(value) {\n if (!value) {\n return value === 0 ? value : 0;\n }\n value = toNumber(value);\n if (value === INFINITY || value === -INFINITY) {\n var sign = (value < 0 ? -1 : 1);\n return sign * MAX_INTEGER;\n }\n return value === value ? value : 0;\n }\n\n /**\n * Converts `value` to an integer.\n *\n * **Note:** This method is loosely based on\n * [`ToInteger`](http://www.ecma-international.org/ecma-262/7.0/#sec-tointeger).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toInteger(3.2);\n * // => 3\n *\n * _.toInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toInteger(Infinity);\n * // => 1.7976931348623157e+308\n *\n * _.toInteger('3.2');\n * // => 3\n */\n function toInteger(value) {\n var result = toFinite(value),\n remainder = result % 1;\n\n return result === result ? (remainder ? result - remainder : result) : 0;\n }\n\n /**\n * Converts `value` to an integer suitable for use as the length of an\n * array-like object.\n *\n * **Note:** This method is based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toLength(3.2);\n * // => 3\n *\n * _.toLength(Number.MIN_VALUE);\n * // => 0\n *\n * _.toLength(Infinity);\n * // => 4294967295\n *\n * _.toLength('3.2');\n * // => 3\n */\n function toLength(value) {\n return value ? baseClamp(toInteger(value), 0, MAX_ARRAY_LENGTH) : 0;\n }\n\n /**\n * Converts `value` to a number.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to process.\n * @returns {number} Returns the number.\n * @example\n *\n * _.toNumber(3.2);\n * // => 3.2\n *\n * _.toNumber(Number.MIN_VALUE);\n * // => 5e-324\n *\n * _.toNumber(Infinity);\n * // => Infinity\n *\n * _.toNumber('3.2');\n * // => 3.2\n */\n function toNumber(value) {\n if (typeof value == 'number') {\n return value;\n }\n if (isSymbol(value)) {\n return NAN;\n }\n if (isObject(value)) {\n var other = typeof value.valueOf == 'function' ? value.valueOf() : value;\n value = isObject(other) ? (other + '') : other;\n }\n if (typeof value != 'string') {\n return value === 0 ? value : +value;\n }\n value = baseTrim(value);\n var isBinary = reIsBinary.test(value);\n return (isBinary || reIsOctal.test(value))\n ? freeParseInt(value.slice(2), isBinary ? 2 : 8)\n : (reIsBadHex.test(value) ? NAN : +value);\n }\n\n /**\n * Converts `value` to a plain object flattening inherited enumerable string\n * keyed properties of `value` to own properties of the plain object.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {Object} Returns the converted plain object.\n * @example\n *\n * function Foo() {\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.assign({ 'a': 1 }, new Foo);\n * // => { 'a': 1, 'b': 2 }\n *\n * _.assign({ 'a': 1 }, _.toPlainObject(new Foo));\n * // => { 'a': 1, 'b': 2, 'c': 3 }\n */\n function toPlainObject(value) {\n return copyObject(value, keysIn(value));\n }\n\n /**\n * Converts `value` to a safe integer. A safe integer can be compared and\n * represented correctly.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.toSafeInteger(3.2);\n * // => 3\n *\n * _.toSafeInteger(Number.MIN_VALUE);\n * // => 0\n *\n * _.toSafeInteger(Infinity);\n * // => 9007199254740991\n *\n * _.toSafeInteger('3.2');\n * // => 3\n */\n function toSafeInteger(value) {\n return value\n ? baseClamp(toInteger(value), -MAX_SAFE_INTEGER, MAX_SAFE_INTEGER)\n : (value === 0 ? value : 0);\n }\n\n /**\n * Converts `value` to a string. An empty string is returned for `null`\n * and `undefined` values. The sign of `-0` is preserved.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.toString(null);\n * // => ''\n *\n * _.toString(-0);\n * // => '-0'\n *\n * _.toString([1, 2, 3]);\n * // => '1,2,3'\n */\n function toString(value) {\n return value == null ? '' : baseToString(value);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Assigns own enumerable string keyed properties of source objects to the\n * destination object. Source objects are applied from left to right.\n * Subsequent sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object` and is loosely based on\n * [`Object.assign`](https://mdn.io/Object/assign).\n *\n * @static\n * @memberOf _\n * @since 0.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assignIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assign({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'c': 3 }\n */\n var assign = createAssigner(function(object, source) {\n if (isPrototype(source) || isArrayLike(source)) {\n copyObject(source, keys(source), object);\n return;\n }\n for (var key in source) {\n if (hasOwnProperty.call(source, key)) {\n assignValue(object, key, source[key]);\n }\n }\n });\n\n /**\n * This method is like `_.assign` except that it iterates over own and\n * inherited source properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extend\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.assign\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * }\n *\n * function Bar() {\n * this.c = 3;\n * }\n *\n * Foo.prototype.b = 2;\n * Bar.prototype.d = 4;\n *\n * _.assignIn({ 'a': 0 }, new Foo, new Bar);\n * // => { 'a': 1, 'b': 2, 'c': 3, 'd': 4 }\n */\n var assignIn = createAssigner(function(object, source) {\n copyObject(source, keysIn(source), object);\n });\n\n /**\n * This method is like `_.assignIn` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias extendWith\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignInWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignInWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keysIn(source), object, customizer);\n });\n\n /**\n * This method is like `_.assign` except that it accepts `customizer`\n * which is invoked to produce the assigned values. If `customizer` returns\n * `undefined`, assignment is handled by the method instead. The `customizer`\n * is invoked with five arguments: (objValue, srcValue, key, object, source).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @see _.assignInWith\n * @example\n *\n * function customizer(objValue, srcValue) {\n * return _.isUndefined(objValue) ? srcValue : objValue;\n * }\n *\n * var defaults = _.partialRight(_.assignWith, customizer);\n *\n * defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var assignWith = createAssigner(function(object, source, srcIndex, customizer) {\n copyObject(source, keys(source), object, customizer);\n });\n\n /**\n * Creates an array of values corresponding to `paths` of `object`.\n *\n * @static\n * @memberOf _\n * @since 1.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Array} Returns the picked values.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }, 4] };\n *\n * _.at(object, ['a[0].b.c', 'a[1]']);\n * // => [3, 4]\n */\n var at = flatRest(baseAt);\n\n /**\n * Creates an object that inherits from the `prototype` object. If a\n * `properties` object is given, its own enumerable string keyed properties\n * are assigned to the created object.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Object\n * @param {Object} prototype The object to inherit from.\n * @param {Object} [properties] The properties to assign to the object.\n * @returns {Object} Returns the new object.\n * @example\n *\n * function Shape() {\n * this.x = 0;\n * this.y = 0;\n * }\n *\n * function Circle() {\n * Shape.call(this);\n * }\n *\n * Circle.prototype = _.create(Shape.prototype, {\n * 'constructor': Circle\n * });\n *\n * var circle = new Circle;\n * circle instanceof Circle;\n * // => true\n *\n * circle instanceof Shape;\n * // => true\n */\n function create(prototype, properties) {\n var result = baseCreate(prototype);\n return properties == null ? result : baseAssign(result, properties);\n }\n\n /**\n * Assigns own and inherited enumerable string keyed properties of source\n * objects to the destination object for all destination properties that\n * resolve to `undefined`. Source objects are applied from left to right.\n * Once a property is set, additional values of the same property are ignored.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaultsDeep\n * @example\n *\n * _.defaults({ 'a': 1 }, { 'b': 2 }, { 'a': 3 });\n * // => { 'a': 1, 'b': 2 }\n */\n var defaults = baseRest(function(object, sources) {\n object = Object(object);\n\n var index = -1;\n var length = sources.length;\n var guard = length > 2 ? sources[2] : undefined;\n\n if (guard && isIterateeCall(sources[0], sources[1], guard)) {\n length = 1;\n }\n\n while (++index < length) {\n var source = sources[index];\n var props = keysIn(source);\n var propsIndex = -1;\n var propsLength = props.length;\n\n while (++propsIndex < propsLength) {\n var key = props[propsIndex];\n var value = object[key];\n\n if (value === undefined ||\n (eq(value, objectProto[key]) && !hasOwnProperty.call(object, key))) {\n object[key] = source[key];\n }\n }\n }\n\n return object;\n });\n\n /**\n * This method is like `_.defaults` except that it recursively assigns\n * default properties.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.10.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @see _.defaults\n * @example\n *\n * _.defaultsDeep({ 'a': { 'b': 2 } }, { 'a': { 'b': 1, 'c': 3 } });\n * // => { 'a': { 'b': 2, 'c': 3 } }\n */\n var defaultsDeep = baseRest(function(args) {\n args.push(undefined, customDefaultsMerge);\n return apply(mergeWith, undefined, args);\n });\n\n /**\n * This method is like `_.find` except that it returns the key of the first\n * element `predicate` returns truthy for instead of the element itself.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findKey(users, function(o) { return o.age < 40; });\n * // => 'barney' (iteration order is not guaranteed)\n *\n * // The `_.matches` iteratee shorthand.\n * _.findKey(users, { 'age': 1, 'active': true });\n * // => 'pebbles'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findKey(users, 'active');\n * // => 'barney'\n */\n function findKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwn);\n }\n\n /**\n * This method is like `_.findKey` except that it iterates over elements of\n * a collection in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @param {Function} [predicate=_.identity] The function invoked per iteration.\n * @returns {string|undefined} Returns the key of the matched element,\n * else `undefined`.\n * @example\n *\n * var users = {\n * 'barney': { 'age': 36, 'active': true },\n * 'fred': { 'age': 40, 'active': false },\n * 'pebbles': { 'age': 1, 'active': true }\n * };\n *\n * _.findLastKey(users, function(o) { return o.age < 40; });\n * // => returns 'pebbles' assuming `_.findKey` returns 'barney'\n *\n * // The `_.matches` iteratee shorthand.\n * _.findLastKey(users, { 'age': 36, 'active': true });\n * // => 'barney'\n *\n * // The `_.matchesProperty` iteratee shorthand.\n * _.findLastKey(users, ['active', false]);\n * // => 'fred'\n *\n * // The `_.property` iteratee shorthand.\n * _.findLastKey(users, 'active');\n * // => 'pebbles'\n */\n function findLastKey(object, predicate) {\n return baseFindKey(object, getIteratee(predicate, 3), baseForOwnRight);\n }\n\n /**\n * Iterates over own and inherited enumerable string keyed properties of an\n * object and invokes `iteratee` for each property. The iteratee is invoked\n * with three arguments: (value, key, object). Iteratee functions may exit\n * iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forInRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forIn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a', 'b', then 'c' (iteration order is not guaranteed).\n */\n function forIn(object, iteratee) {\n return object == null\n ? object\n : baseFor(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * This method is like `_.forIn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forIn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forInRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'c', 'b', then 'a' assuming `_.forIn` logs 'a', 'b', then 'c'.\n */\n function forInRight(object, iteratee) {\n return object == null\n ? object\n : baseForRight(object, getIteratee(iteratee, 3), keysIn);\n }\n\n /**\n * Iterates over own enumerable string keyed properties of an object and\n * invokes `iteratee` for each property. The iteratee is invoked with three\n * arguments: (value, key, object). Iteratee functions may exit iteration\n * early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 0.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwnRight\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwn(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'a' then 'b' (iteration order is not guaranteed).\n */\n function forOwn(object, iteratee) {\n return object && baseForOwn(object, getIteratee(iteratee, 3));\n }\n\n /**\n * This method is like `_.forOwn` except that it iterates over properties of\n * `object` in the opposite order.\n *\n * @static\n * @memberOf _\n * @since 2.0.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns `object`.\n * @see _.forOwn\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.forOwnRight(new Foo, function(value, key) {\n * console.log(key);\n * });\n * // => Logs 'b' then 'a' assuming `_.forOwn` logs 'a' then 'b'.\n */\n function forOwnRight(object, iteratee) {\n return object && baseForOwnRight(object, getIteratee(iteratee, 3));\n }\n\n /**\n * Creates an array of function property names from own enumerable properties\n * of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functionsIn\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functions(new Foo);\n * // => ['a', 'b']\n */\n function functions(object) {\n return object == null ? [] : baseFunctions(object, keys(object));\n }\n\n /**\n * Creates an array of function property names from own and inherited\n * enumerable properties of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to inspect.\n * @returns {Array} Returns the function names.\n * @see _.functions\n * @example\n *\n * function Foo() {\n * this.a = _.constant('a');\n * this.b = _.constant('b');\n * }\n *\n * Foo.prototype.c = _.constant('c');\n *\n * _.functionsIn(new Foo);\n * // => ['a', 'b', 'c']\n */\n function functionsIn(object) {\n return object == null ? [] : baseFunctions(object, keysIn(object));\n }\n\n /**\n * Gets the value at `path` of `object`. If the resolved value is\n * `undefined`, the `defaultValue` is returned in its place.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to get.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.get(object, 'a[0].b.c');\n * // => 3\n *\n * _.get(object, ['a', '0', 'b', 'c']);\n * // => 3\n *\n * _.get(object, 'a.b.c', 'default');\n * // => 'default'\n */\n function get(object, path, defaultValue) {\n var result = object == null ? undefined : baseGet(object, path);\n return result === undefined ? defaultValue : result;\n }\n\n /**\n * Checks if `path` is a direct property of `object`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = { 'a': { 'b': 2 } };\n * var other = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.has(object, 'a');\n * // => true\n *\n * _.has(object, 'a.b');\n * // => true\n *\n * _.has(object, ['a', 'b']);\n * // => true\n *\n * _.has(other, 'a');\n * // => false\n */\n function has(object, path) {\n return object != null && hasPath(object, path, baseHas);\n }\n\n /**\n * Checks if `path` is a direct or inherited property of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path to check.\n * @returns {boolean} Returns `true` if `path` exists, else `false`.\n * @example\n *\n * var object = _.create({ 'a': _.create({ 'b': 2 }) });\n *\n * _.hasIn(object, 'a');\n * // => true\n *\n * _.hasIn(object, 'a.b');\n * // => true\n *\n * _.hasIn(object, ['a', 'b']);\n * // => true\n *\n * _.hasIn(object, 'b');\n * // => false\n */\n function hasIn(object, path) {\n return object != null && hasPath(object, path, baseHasIn);\n }\n\n /**\n * Creates an object composed of the inverted keys and values of `object`.\n * If `object` contains duplicate values, subsequent values overwrite\n * property assignments of previous values.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Object\n * @param {Object} object The object to invert.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invert(object);\n * // => { '1': 'c', '2': 'b' }\n */\n var invert = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n result[value] = key;\n }, constant(identity));\n\n /**\n * This method is like `_.invert` except that the inverted object is generated\n * from the results of running each element of `object` thru `iteratee`. The\n * corresponding inverted value of each inverted key is an array of keys\n * responsible for generating the inverted value. The iteratee is invoked\n * with one argument: (value).\n *\n * @static\n * @memberOf _\n * @since 4.1.0\n * @category Object\n * @param {Object} object The object to invert.\n * @param {Function} [iteratee=_.identity] The iteratee invoked per element.\n * @returns {Object} Returns the new inverted object.\n * @example\n *\n * var object = { 'a': 1, 'b': 2, 'c': 1 };\n *\n * _.invertBy(object);\n * // => { '1': ['a', 'c'], '2': ['b'] }\n *\n * _.invertBy(object, function(value) {\n * return 'group' + value;\n * });\n * // => { 'group1': ['a', 'c'], 'group2': ['b'] }\n */\n var invertBy = createInverter(function(result, value, key) {\n if (value != null &&\n typeof value.toString != 'function') {\n value = nativeObjectToString.call(value);\n }\n\n if (hasOwnProperty.call(result, value)) {\n result[value].push(key);\n } else {\n result[value] = [key];\n }\n }, getIteratee);\n\n /**\n * Invokes the method at `path` of `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the method to invoke.\n * @param {...*} [args] The arguments to invoke the method with.\n * @returns {*} Returns the result of the invoked method.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': [1, 2, 3, 4] } }] };\n *\n * _.invoke(object, 'a[0].b.c.slice', 1, 3);\n * // => [2, 3]\n */\n var invoke = baseRest(baseInvoke);\n\n /**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\n function keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n }\n\n /**\n * Creates an array of the own and inherited enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keysIn(new Foo);\n * // => ['a', 'b', 'c'] (iteration order is not guaranteed)\n */\n function keysIn(object) {\n return isArrayLike(object) ? arrayLikeKeys(object, true) : baseKeysIn(object);\n }\n\n /**\n * The opposite of `_.mapValues`; this method creates an object with the\n * same values as `object` and keys generated by running each own enumerable\n * string keyed property of `object` thru `iteratee`. The iteratee is invoked\n * with three arguments: (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 3.8.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapValues\n * @example\n *\n * _.mapKeys({ 'a': 1, 'b': 2 }, function(value, key) {\n * return key + value;\n * });\n * // => { 'a1': 1, 'b2': 2 }\n */\n function mapKeys(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, iteratee(value, key, object), value);\n });\n return result;\n }\n\n /**\n * Creates an object with the same keys as `object` and values generated\n * by running each own enumerable string keyed property of `object` thru\n * `iteratee`. The iteratee is invoked with three arguments:\n * (value, key, object).\n *\n * @static\n * @memberOf _\n * @since 2.4.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @returns {Object} Returns the new mapped object.\n * @see _.mapKeys\n * @example\n *\n * var users = {\n * 'fred': { 'user': 'fred', 'age': 40 },\n * 'pebbles': { 'user': 'pebbles', 'age': 1 }\n * };\n *\n * _.mapValues(users, function(o) { return o.age; });\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n *\n * // The `_.property` iteratee shorthand.\n * _.mapValues(users, 'age');\n * // => { 'fred': 40, 'pebbles': 1 } (iteration order is not guaranteed)\n */\n function mapValues(object, iteratee) {\n var result = {};\n iteratee = getIteratee(iteratee, 3);\n\n baseForOwn(object, function(value, key, object) {\n baseAssignValue(result, key, iteratee(value, key, object));\n });\n return result;\n }\n\n /**\n * This method is like `_.assign` except that it recursively merges own and\n * inherited enumerable string keyed properties of source objects into the\n * destination object. Source properties that resolve to `undefined` are\n * skipped if a destination value exists. Array and plain object properties\n * are merged recursively. Other objects and value types are overridden by\n * assignment. Source objects are applied from left to right. Subsequent\n * sources overwrite property assignments of previous sources.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 0.5.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} [sources] The source objects.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {\n * 'a': [{ 'b': 2 }, { 'd': 4 }]\n * };\n *\n * var other = {\n * 'a': [{ 'c': 3 }, { 'e': 5 }]\n * };\n *\n * _.merge(object, other);\n * // => { 'a': [{ 'b': 2, 'c': 3 }, { 'd': 4, 'e': 5 }] }\n */\n var merge = createAssigner(function(object, source, srcIndex) {\n baseMerge(object, source, srcIndex);\n });\n\n /**\n * This method is like `_.merge` except that it accepts `customizer` which\n * is invoked to produce the merged values of the destination and source\n * properties. If `customizer` returns `undefined`, merging is handled by the\n * method instead. The `customizer` is invoked with six arguments:\n * (objValue, srcValue, key, object, source, stack).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The destination object.\n * @param {...Object} sources The source objects.\n * @param {Function} customizer The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * function customizer(objValue, srcValue) {\n * if (_.isArray(objValue)) {\n * return objValue.concat(srcValue);\n * }\n * }\n *\n * var object = { 'a': [1], 'b': [2] };\n * var other = { 'a': [3], 'b': [4] };\n *\n * _.mergeWith(object, other, customizer);\n * // => { 'a': [1, 3], 'b': [2, 4] }\n */\n var mergeWith = createAssigner(function(object, source, srcIndex, customizer) {\n baseMerge(object, source, srcIndex, customizer);\n });\n\n /**\n * The opposite of `_.pick`; this method creates an object composed of the\n * own and inherited enumerable property paths of `object` that are not omitted.\n *\n * **Note:** This method is considerably slower than `_.pick`.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to omit.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omit(object, ['a', 'c']);\n * // => { 'b': '2' }\n */\n var omit = flatRest(function(object, paths) {\n var result = {};\n if (object == null) {\n return result;\n }\n var isDeep = false;\n paths = arrayMap(paths, function(path) {\n path = castPath(path, object);\n isDeep || (isDeep = path.length > 1);\n return path;\n });\n copyObject(object, getAllKeysIn(object), result);\n if (isDeep) {\n result = baseClone(result, CLONE_DEEP_FLAG | CLONE_FLAT_FLAG | CLONE_SYMBOLS_FLAG, customOmitClone);\n }\n var length = paths.length;\n while (length--) {\n baseUnset(result, paths[length]);\n }\n return result;\n });\n\n /**\n * The opposite of `_.pickBy`; this method creates an object composed of\n * the own and inherited enumerable string keyed properties of `object` that\n * `predicate` doesn't return truthy for. The predicate is invoked with two\n * arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.omitBy(object, _.isNumber);\n * // => { 'b': '2' }\n */\n function omitBy(object, predicate) {\n return pickBy(object, negate(getIteratee(predicate)));\n }\n\n /**\n * Creates an object composed of the picked `object` properties.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The source object.\n * @param {...(string|string[])} [paths] The property paths to pick.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pick(object, ['a', 'c']);\n * // => { 'a': 1, 'c': 3 }\n */\n var pick = flatRest(function(object, paths) {\n return object == null ? {} : basePick(object, paths);\n });\n\n /**\n * Creates an object composed of the `object` properties `predicate` returns\n * truthy for. The predicate is invoked with two arguments: (value, key).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The source object.\n * @param {Function} [predicate=_.identity] The function invoked per property.\n * @returns {Object} Returns the new object.\n * @example\n *\n * var object = { 'a': 1, 'b': '2', 'c': 3 };\n *\n * _.pickBy(object, _.isNumber);\n * // => { 'a': 1, 'c': 3 }\n */\n function pickBy(object, predicate) {\n if (object == null) {\n return {};\n }\n var props = arrayMap(getAllKeysIn(object), function(prop) {\n return [prop];\n });\n predicate = getIteratee(predicate);\n return basePickBy(object, props, function(value, path) {\n return predicate(value, path[0]);\n });\n }\n\n /**\n * This method is like `_.get` except that if the resolved value is a\n * function it's invoked with the `this` binding of its parent object and\n * its result is returned.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @param {Array|string} path The path of the property to resolve.\n * @param {*} [defaultValue] The value returned for `undefined` resolved values.\n * @returns {*} Returns the resolved value.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c1': 3, 'c2': _.constant(4) } }] };\n *\n * _.result(object, 'a[0].b.c1');\n * // => 3\n *\n * _.result(object, 'a[0].b.c2');\n * // => 4\n *\n * _.result(object, 'a[0].b.c3', 'default');\n * // => 'default'\n *\n * _.result(object, 'a[0].b.c3', _.constant('default'));\n * // => 'default'\n */\n function result(object, path, defaultValue) {\n path = castPath(path, object);\n\n var index = -1,\n length = path.length;\n\n // Ensure the loop is entered when path is empty.\n if (!length) {\n length = 1;\n object = undefined;\n }\n while (++index < length) {\n var value = object == null ? undefined : object[toKey(path[index])];\n if (value === undefined) {\n index = length;\n value = defaultValue;\n }\n object = isFunction(value) ? value.call(object) : value;\n }\n return object;\n }\n\n /**\n * Sets the value at `path` of `object`. If a portion of `path` doesn't exist,\n * it's created. Arrays are created for missing index properties while objects\n * are created for all other missing properties. Use `_.setWith` to customize\n * `path` creation.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 3.7.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.set(object, 'a[0].b.c', 4);\n * console.log(object.a[0].b.c);\n * // => 4\n *\n * _.set(object, ['x', '0', 'y', 'z'], 5);\n * console.log(object.x[0].y.z);\n * // => 5\n */\n function set(object, path, value) {\n return object == null ? object : baseSet(object, path, value);\n }\n\n /**\n * This method is like `_.set` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {*} value The value to set.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.setWith(object, '[0][1]', 'a', Object);\n * // => { '0': { '1': 'a' } }\n */\n function setWith(object, path, value, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseSet(object, path, value, customizer);\n }\n\n /**\n * Creates an array of own enumerable string keyed-value pairs for `object`\n * which can be consumed by `_.fromPairs`. If `object` is a map or set, its\n * entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entries\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairs(new Foo);\n * // => [['a', 1], ['b', 2]] (iteration order is not guaranteed)\n */\n var toPairs = createToPairs(keys);\n\n /**\n * Creates an array of own and inherited enumerable string keyed-value pairs\n * for `object` which can be consumed by `_.fromPairs`. If `object` is a map\n * or set, its entries are returned.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @alias entriesIn\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the key-value pairs.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.toPairsIn(new Foo);\n * // => [['a', 1], ['b', 2], ['c', 3]] (iteration order is not guaranteed)\n */\n var toPairsIn = createToPairs(keysIn);\n\n /**\n * An alternative to `_.reduce`; this method transforms `object` to a new\n * `accumulator` object which is the result of running each of its own\n * enumerable string keyed properties thru `iteratee`, with each invocation\n * potentially mutating the `accumulator` object. If `accumulator` is not\n * provided, a new object with the same `[[Prototype]]` will be used. The\n * iteratee is invoked with four arguments: (accumulator, value, key, object).\n * Iteratee functions may exit iteration early by explicitly returning `false`.\n *\n * @static\n * @memberOf _\n * @since 1.3.0\n * @category Object\n * @param {Object} object The object to iterate over.\n * @param {Function} [iteratee=_.identity] The function invoked per iteration.\n * @param {*} [accumulator] The custom accumulator value.\n * @returns {*} Returns the accumulated value.\n * @example\n *\n * _.transform([2, 3, 4], function(result, n) {\n * result.push(n *= n);\n * return n % 2 == 0;\n * }, []);\n * // => [4, 9]\n *\n * _.transform({ 'a': 1, 'b': 2, 'c': 1 }, function(result, value, key) {\n * (result[value] || (result[value] = [])).push(key);\n * }, {});\n * // => { '1': ['a', 'c'], '2': ['b'] }\n */\n function transform(object, iteratee, accumulator) {\n var isArr = isArray(object),\n isArrLike = isArr || isBuffer(object) || isTypedArray(object);\n\n iteratee = getIteratee(iteratee, 4);\n if (accumulator == null) {\n var Ctor = object && object.constructor;\n if (isArrLike) {\n accumulator = isArr ? new Ctor : [];\n }\n else if (isObject(object)) {\n accumulator = isFunction(Ctor) ? baseCreate(getPrototype(object)) : {};\n }\n else {\n accumulator = {};\n }\n }\n (isArrLike ? arrayEach : baseForOwn)(object, function(value, index, object) {\n return iteratee(accumulator, value, index, object);\n });\n return accumulator;\n }\n\n /**\n * Removes the property at `path` of `object`.\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to unset.\n * @returns {boolean} Returns `true` if the property is deleted, else `false`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 7 } }] };\n * _.unset(object, 'a[0].b.c');\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n *\n * _.unset(object, ['a', '0', 'b', 'c']);\n * // => true\n *\n * console.log(object);\n * // => { 'a': [{ 'b': {} }] };\n */\n function unset(object, path) {\n return object == null ? true : baseUnset(object, path);\n }\n\n /**\n * This method is like `_.set` except that accepts `updater` to produce the\n * value to set. Use `_.updateWith` to customize `path` creation. The `updater`\n * is invoked with one argument: (value).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = { 'a': [{ 'b': { 'c': 3 } }] };\n *\n * _.update(object, 'a[0].b.c', function(n) { return n * n; });\n * console.log(object.a[0].b.c);\n * // => 9\n *\n * _.update(object, 'x[0].y.z', function(n) { return n ? n + 1 : 0; });\n * console.log(object.x[0].y.z);\n * // => 0\n */\n function update(object, path, updater) {\n return object == null ? object : baseUpdate(object, path, castFunction(updater));\n }\n\n /**\n * This method is like `_.update` except that it accepts `customizer` which is\n * invoked to produce the objects of `path`. If `customizer` returns `undefined`\n * path creation is handled by the method instead. The `customizer` is invoked\n * with three arguments: (nsValue, key, nsObject).\n *\n * **Note:** This method mutates `object`.\n *\n * @static\n * @memberOf _\n * @since 4.6.0\n * @category Object\n * @param {Object} object The object to modify.\n * @param {Array|string} path The path of the property to set.\n * @param {Function} updater The function to produce the updated value.\n * @param {Function} [customizer] The function to customize assigned values.\n * @returns {Object} Returns `object`.\n * @example\n *\n * var object = {};\n *\n * _.updateWith(object, '[0][1]', _.constant('a'), Object);\n * // => { '0': { '1': 'a' } }\n */\n function updateWith(object, path, updater, customizer) {\n customizer = typeof customizer == 'function' ? customizer : undefined;\n return object == null ? object : baseUpdate(object, path, castFunction(updater), customizer);\n }\n\n /**\n * Creates an array of the own enumerable string keyed property values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.values(new Foo);\n * // => [1, 2] (iteration order is not guaranteed)\n *\n * _.values('hi');\n * // => ['h', 'i']\n */\n function values(object) {\n return object == null ? [] : baseValues(object, keys(object));\n }\n\n /**\n * Creates an array of the own and inherited enumerable string keyed property\n * values of `object`.\n *\n * **Note:** Non-object values are coerced to objects.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property values.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.valuesIn(new Foo);\n * // => [1, 2, 3] (iteration order is not guaranteed)\n */\n function valuesIn(object) {\n return object == null ? [] : baseValues(object, keysIn(object));\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Clamps `number` within the inclusive `lower` and `upper` bounds.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Number\n * @param {number} number The number to clamp.\n * @param {number} [lower] The lower bound.\n * @param {number} upper The upper bound.\n * @returns {number} Returns the clamped number.\n * @example\n *\n * _.clamp(-10, -5, 5);\n * // => -5\n *\n * _.clamp(10, -5, 5);\n * // => 5\n */\n function clamp(number, lower, upper) {\n if (upper === undefined) {\n upper = lower;\n lower = undefined;\n }\n if (upper !== undefined) {\n upper = toNumber(upper);\n upper = upper === upper ? upper : 0;\n }\n if (lower !== undefined) {\n lower = toNumber(lower);\n lower = lower === lower ? lower : 0;\n }\n return baseClamp(toNumber(number), lower, upper);\n }\n\n /**\n * Checks if `n` is between `start` and up to, but not including, `end`. If\n * `end` is not specified, it's set to `start` with `start` then set to `0`.\n * If `start` is greater than `end` the params are swapped to support\n * negative ranges.\n *\n * @static\n * @memberOf _\n * @since 3.3.0\n * @category Number\n * @param {number} number The number to check.\n * @param {number} [start=0] The start of the range.\n * @param {number} end The end of the range.\n * @returns {boolean} Returns `true` if `number` is in the range, else `false`.\n * @see _.range, _.rangeRight\n * @example\n *\n * _.inRange(3, 2, 4);\n * // => true\n *\n * _.inRange(4, 8);\n * // => true\n *\n * _.inRange(4, 2);\n * // => false\n *\n * _.inRange(2, 2);\n * // => false\n *\n * _.inRange(1.2, 2);\n * // => true\n *\n * _.inRange(5.2, 4);\n * // => false\n *\n * _.inRange(-3, -2, -6);\n * // => true\n */\n function inRange(number, start, end) {\n start = toFinite(start);\n if (end === undefined) {\n end = start;\n start = 0;\n } else {\n end = toFinite(end);\n }\n number = toNumber(number);\n return baseInRange(number, start, end);\n }\n\n /**\n * Produces a random number between the inclusive `lower` and `upper` bounds.\n * If only one argument is provided a number between `0` and the given number\n * is returned. If `floating` is `true`, or either `lower` or `upper` are\n * floats, a floating-point number is returned instead of an integer.\n *\n * **Note:** JavaScript follows the IEEE-754 standard for resolving\n * floating-point values which can produce unexpected results.\n *\n * @static\n * @memberOf _\n * @since 0.7.0\n * @category Number\n * @param {number} [lower=0] The lower bound.\n * @param {number} [upper=1] The upper bound.\n * @param {boolean} [floating] Specify returning a floating-point number.\n * @returns {number} Returns the random number.\n * @example\n *\n * _.random(0, 5);\n * // => an integer between 0 and 5\n *\n * _.random(5);\n * // => also an integer between 0 and 5\n *\n * _.random(5, true);\n * // => a floating-point number between 0 and 5\n *\n * _.random(1.2, 5.2);\n * // => a floating-point number between 1.2 and 5.2\n */\n function random(lower, upper, floating) {\n if (floating && typeof floating != 'boolean' && isIterateeCall(lower, upper, floating)) {\n upper = floating = undefined;\n }\n if (floating === undefined) {\n if (typeof upper == 'boolean') {\n floating = upper;\n upper = undefined;\n }\n else if (typeof lower == 'boolean') {\n floating = lower;\n lower = undefined;\n }\n }\n if (lower === undefined && upper === undefined) {\n lower = 0;\n upper = 1;\n }\n else {\n lower = toFinite(lower);\n if (upper === undefined) {\n upper = lower;\n lower = 0;\n } else {\n upper = toFinite(upper);\n }\n }\n if (lower > upper) {\n var temp = lower;\n lower = upper;\n upper = temp;\n }\n if (floating || lower % 1 || upper % 1) {\n var rand = nativeRandom();\n return nativeMin(lower + (rand * (upper - lower + freeParseFloat('1e-' + ((rand + '').length - 1)))), upper);\n }\n return baseRandom(lower, upper);\n }\n\n /*------------------------------------------------------------------------*/\n\n /**\n * Converts `string` to [camel case](https://en.wikipedia.org/wiki/CamelCase).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the camel cased string.\n * @example\n *\n * _.camelCase('Foo Bar');\n * // => 'fooBar'\n *\n * _.camelCase('--foo-bar--');\n * // => 'fooBar'\n *\n * _.camelCase('__FOO_BAR__');\n * // => 'fooBar'\n */\n var camelCase = createCompounder(function(result, word, index) {\n word = word.toLowerCase();\n return result + (index ? capitalize(word) : word);\n });\n\n /**\n * Converts the first character of `string` to upper case and the remaining\n * to lower case.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to capitalize.\n * @returns {string} Returns the capitalized string.\n * @example\n *\n * _.capitalize('FRED');\n * // => 'Fred'\n */\n function capitalize(string) {\n return upperFirst(toString(string).toLowerCase());\n }\n\n /**\n * Deburrs `string` by converting\n * [Latin-1 Supplement](https://en.wikipedia.org/wiki/Latin-1_Supplement_(Unicode_block)#Character_table)\n * and [Latin Extended-A](https://en.wikipedia.org/wiki/Latin_Extended-A)\n * letters to basic Latin letters and removing\n * [combining diacritical marks](https://en.wikipedia.org/wiki/Combining_Diacritical_Marks).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to deburr.\n * @returns {string} Returns the deburred string.\n * @example\n *\n * _.deburr('déjà vu');\n * // => 'deja vu'\n */\n function deburr(string) {\n string = toString(string);\n return string && string.replace(reLatin, deburrLetter).replace(reComboMark, '');\n }\n\n /**\n * Checks if `string` ends with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=string.length] The position to search up to.\n * @returns {boolean} Returns `true` if `string` ends with `target`,\n * else `false`.\n * @example\n *\n * _.endsWith('abc', 'c');\n * // => true\n *\n * _.endsWith('abc', 'b');\n * // => false\n *\n * _.endsWith('abc', 'b', 2);\n * // => true\n */\n function endsWith(string, target, position) {\n string = toString(string);\n target = baseToString(target);\n\n var length = string.length;\n position = position === undefined\n ? length\n : baseClamp(toInteger(position), 0, length);\n\n var end = position;\n position -= target.length;\n return position >= 0 && string.slice(position, end) == target;\n }\n\n /**\n * Converts the characters \"&\", \"<\", \">\", '\"', and \"'\" in `string` to their\n * corresponding HTML entities.\n *\n * **Note:** No other characters are escaped. To escape additional\n * characters use a third-party library like [_he_](https://mths.be/he).\n *\n * Though the \">\" character is escaped for symmetry, characters like\n * \">\" and \"/\" don't need escaping in HTML and have no special meaning\n * unless they're part of a tag or unquoted attribute value. See\n * [Mathias Bynens's article](https://mathiasbynens.be/notes/ambiguous-ampersands)\n * (under \"semi-related fun fact\") for more details.\n *\n * When working with HTML you should always\n * [quote attribute values](http://wonko.com/post/html-escaping) to reduce\n * XSS vectors.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escape('fred, barney, & pebbles');\n * // => 'fred, barney, & pebbles'\n */\n function escape(string) {\n string = toString(string);\n return (string && reHasUnescapedHtml.test(string))\n ? string.replace(reUnescapedHtml, escapeHtmlChar)\n : string;\n }\n\n /**\n * Escapes the `RegExp` special characters \"^\", \"$\", \"\\\", \".\", \"*\", \"+\",\n * \"?\", \"(\", \")\", \"[\", \"]\", \"{\", \"}\", and \"|\" in `string`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to escape.\n * @returns {string} Returns the escaped string.\n * @example\n *\n * _.escapeRegExp('[lodash](https://lodash.com/)');\n * // => '\\[lodash\\]\\(https://lodash\\.com/\\)'\n */\n function escapeRegExp(string) {\n string = toString(string);\n return (string && reHasRegExpChar.test(string))\n ? string.replace(reRegExpChar, '\\\\$&')\n : string;\n }\n\n /**\n * Converts `string` to\n * [kebab case](https://en.wikipedia.org/wiki/Letter_case#Special_case_styles).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the kebab cased string.\n * @example\n *\n * _.kebabCase('Foo Bar');\n * // => 'foo-bar'\n *\n * _.kebabCase('fooBar');\n * // => 'foo-bar'\n *\n * _.kebabCase('__FOO_BAR__');\n * // => 'foo-bar'\n */\n var kebabCase = createCompounder(function(result, word, index) {\n return result + (index ? '-' : '') + word.toLowerCase();\n });\n\n /**\n * Converts `string`, as space separated words, to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the lower cased string.\n * @example\n *\n * _.lowerCase('--Foo-Bar--');\n * // => 'foo bar'\n *\n * _.lowerCase('fooBar');\n * // => 'foo bar'\n *\n * _.lowerCase('__FOO_BAR__');\n * // => 'foo bar'\n */\n var lowerCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + word.toLowerCase();\n });\n\n /**\n * Converts the first character of `string` to lower case.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the converted string.\n * @example\n *\n * _.lowerFirst('Fred');\n * // => 'fred'\n *\n * _.lowerFirst('FRED');\n * // => 'fRED'\n */\n var lowerFirst = createCaseFirst('toLowerCase');\n\n /**\n * Pads `string` on the left and right sides if it's shorter than `length`.\n * Padding characters are truncated if they can't be evenly divided by `length`.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.pad('abc', 8);\n * // => ' abc '\n *\n * _.pad('abc', 8, '_-');\n * // => '_-abc_-_'\n *\n * _.pad('abc', 3);\n * // => 'abc'\n */\n function pad(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n if (!length || strLength >= length) {\n return string;\n }\n var mid = (length - strLength) / 2;\n return (\n createPadding(nativeFloor(mid), chars) +\n string +\n createPadding(nativeCeil(mid), chars)\n );\n }\n\n /**\n * Pads `string` on the right side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padEnd('abc', 6);\n * // => 'abc '\n *\n * _.padEnd('abc', 6, '_-');\n * // => 'abc_-_'\n *\n * _.padEnd('abc', 3);\n * // => 'abc'\n */\n function padEnd(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (string + createPadding(length - strLength, chars))\n : string;\n }\n\n /**\n * Pads `string` on the left side if it's shorter than `length`. Padding\n * characters are truncated if they exceed `length`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to pad.\n * @param {number} [length=0] The padding length.\n * @param {string} [chars=' '] The string used as padding.\n * @returns {string} Returns the padded string.\n * @example\n *\n * _.padStart('abc', 6);\n * // => ' abc'\n *\n * _.padStart('abc', 6, '_-');\n * // => '_-_abc'\n *\n * _.padStart('abc', 3);\n * // => 'abc'\n */\n function padStart(string, length, chars) {\n string = toString(string);\n length = toInteger(length);\n\n var strLength = length ? stringSize(string) : 0;\n return (length && strLength < length)\n ? (createPadding(length - strLength, chars) + string)\n : string;\n }\n\n /**\n * Converts `string` to an integer of the specified radix. If `radix` is\n * `undefined` or `0`, a `radix` of `10` is used unless `value` is a\n * hexadecimal, in which case a `radix` of `16` is used.\n *\n * **Note:** This method aligns with the\n * [ES5 implementation](https://es5.github.io/#x15.1.2.2) of `parseInt`.\n *\n * @static\n * @memberOf _\n * @since 1.1.0\n * @category String\n * @param {string} string The string to convert.\n * @param {number} [radix=10] The radix to interpret `value` by.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {number} Returns the converted integer.\n * @example\n *\n * _.parseInt('08');\n * // => 8\n *\n * _.map(['6', '08', '10'], _.parseInt);\n * // => [6, 8, 10]\n */\n function parseInt(string, radix, guard) {\n if (guard || radix == null) {\n radix = 0;\n } else if (radix) {\n radix = +radix;\n }\n return nativeParseInt(toString(string).replace(reTrimStart, ''), radix || 0);\n }\n\n /**\n * Repeats the given string `n` times.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to repeat.\n * @param {number} [n=1] The number of times to repeat the string.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {string} Returns the repeated string.\n * @example\n *\n * _.repeat('*', 3);\n * // => '***'\n *\n * _.repeat('abc', 2);\n * // => 'abcabc'\n *\n * _.repeat('abc', 0);\n * // => ''\n */\n function repeat(string, n, guard) {\n if ((guard ? isIterateeCall(string, n, guard) : n === undefined)) {\n n = 1;\n } else {\n n = toInteger(n);\n }\n return baseRepeat(toString(string), n);\n }\n\n /**\n * Replaces matches for `pattern` in `string` with `replacement`.\n *\n * **Note:** This method is based on\n * [`String#replace`](https://mdn.io/String/replace).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to modify.\n * @param {RegExp|string} pattern The pattern to replace.\n * @param {Function|string} replacement The match replacement.\n * @returns {string} Returns the modified string.\n * @example\n *\n * _.replace('Hi Fred', 'Fred', 'Barney');\n * // => 'Hi Barney'\n */\n function replace() {\n var args = arguments,\n string = toString(args[0]);\n\n return args.length < 3 ? string : string.replace(args[1], args[2]);\n }\n\n /**\n * Converts `string` to\n * [snake case](https://en.wikipedia.org/wiki/Snake_case).\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the snake cased string.\n * @example\n *\n * _.snakeCase('Foo Bar');\n * // => 'foo_bar'\n *\n * _.snakeCase('fooBar');\n * // => 'foo_bar'\n *\n * _.snakeCase('--FOO-BAR--');\n * // => 'foo_bar'\n */\n var snakeCase = createCompounder(function(result, word, index) {\n return result + (index ? '_' : '') + word.toLowerCase();\n });\n\n /**\n * Splits `string` by `separator`.\n *\n * **Note:** This method is based on\n * [`String#split`](https://mdn.io/String/split).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category String\n * @param {string} [string=''] The string to split.\n * @param {RegExp|string} separator The separator pattern to split by.\n * @param {number} [limit] The length to truncate results to.\n * @returns {Array} Returns the string segments.\n * @example\n *\n * _.split('a-b-c', '-', 2);\n * // => ['a', 'b']\n */\n function split(string, separator, limit) {\n if (limit && typeof limit != 'number' && isIterateeCall(string, separator, limit)) {\n separator = limit = undefined;\n }\n limit = limit === undefined ? MAX_ARRAY_LENGTH : limit >>> 0;\n if (!limit) {\n return [];\n }\n string = toString(string);\n if (string && (\n typeof separator == 'string' ||\n (separator != null && !isRegExp(separator))\n )) {\n separator = baseToString(separator);\n if (!separator && hasUnicode(string)) {\n return castSlice(stringToArray(string), 0, limit);\n }\n }\n return string.split(separator, limit);\n }\n\n /**\n * Converts `string` to\n * [start case](https://en.wikipedia.org/wiki/Letter_case#Stylistic_or_specialised_usage).\n *\n * @static\n * @memberOf _\n * @since 3.1.0\n * @category String\n * @param {string} [string=''] The string to convert.\n * @returns {string} Returns the start cased string.\n * @example\n *\n * _.startCase('--foo-bar--');\n * // => 'Foo Bar'\n *\n * _.startCase('fooBar');\n * // => 'Foo Bar'\n *\n * _.startCase('__FOO_BAR__');\n * // => 'FOO BAR'\n */\n var startCase = createCompounder(function(result, word, index) {\n return result + (index ? ' ' : '') + upperFirst(word);\n });\n\n /**\n * Checks if `string` starts with the given target string.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category String\n * @param {string} [string=''] The string to inspect.\n * @param {string} [target] The string to search for.\n * @param {number} [position=0] The position to search from.\n * @returns {boolean} Returns `true` if `string` starts with `target`,\n * else `false`.\n * @example\n *\n * _.startsWith('abc', 'a');\n * // => true\n *\n * _.startsWith('abc', 'b');\n * // => false\n *\n * _.startsWith('abc', 'b', 1);\n * // => true\n */\n function startsWith(string, target, position) {\n string = toString(string);\n position = position == null\n ? 0\n : baseClamp(toInteger(position), 0, string.length);\n\n target = baseToString(target);\n return string.slice(position, position + target.length) == target;\n }\n\n /**\n * Creates a compiled template function that can interpolate data properties\n * in \"interpolate\" delimiters, HTML-escape interpolated data properties in\n * \"escape\" delimiters, and execute JavaScript in \"evaluate\" delimiters. Data\n * properties may be accessed as free variables in the template. If a setting\n * object is given, it takes precedence over `_.templateSettings` values.\n *\n * **Note:** In the development build `_.template` utilizes\n * [sourceURLs](http://www.html5rocks.com/en/tutorials/developertools/sourcemaps/#toc-sourceurl)\n * for easier debugging.\n *\n * For more information on precompiling templates see\n * [lodash's custom builds documentation](https://lodash.com/custom-builds).\n *\n * For more information on Chrome extension sandboxes see\n * [Chrome's extensions documentation](https://developer.chrome.com/extensions/sandboxingEval).\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category String\n * @param {string} [string=''] The template string.\n * @param {Object} [options={}] The options object.\n * @param {RegExp} [options.escape=_.templateSettings.escape]\n * The HTML \"escape\" delimiter.\n * @param {RegExp} [options.evaluate=_.templateSettings.evaluate]\n * The \"evaluate\" delimiter.\n * @param {Object} [options.imports=_.templateSettings.imports]\n * An object to import into the template as free variables.\n * @param {RegExp} [options.interpolate=_.templateSettings.interpolate]\n * The \"interpolate\" delimiter.\n * @param {string} [options.sourceURL='lodash.templateSources[n]']\n * The sourceURL of the compiled template.\n * @param {string} [options.variable='obj']\n * The data object variable name.\n * @param- {Object} [guard] Enables use as an iteratee for methods like `_.map`.\n * @returns {Function} Returns the compiled template function.\n * @example\n *\n * // Use the \"interpolate\" delimiter to create a compiled template.\n * var compiled = _.template('hello <%= user %>!');\n * compiled({ 'user': 'fred' });\n * // => 'hello fred!'\n *\n * // Use the HTML \"escape\" delimiter to escape data property values.\n * var compiled = _.template('<%- value %>');\n * compiled({ 'value': '