{"version":3,"file":"main.js","mappings":";6GAGMA,EAAeC,SAASC,eAAe,kCACvCC,EAAcF,SAASC,eAAe,6BACtCE,EAAeH,SAASC,eAAe,8BAC7CF,EAAaK,MAAMC,QAAU,OAC7BH,EAAYE,MAAMC,QAAU,OAC5BF,EAAaC,MAAMC,QAAU,OAG7B,IAAMC,EAAmBC,IAAAA,OAAkB,CACzCC,UAAW,mBACXC,UAAW,QACXC,cAAe,UACfC,YAAa,UACbC,YAAa,EACbC,UAAW,IACXC,OAAQ,GACRC,SAAU,IACVC,cAAc,EACdC,YAAY,EACZC,UAAW,IAEbZ,EAAiBa,KAAK,6BACtB,IAAMC,EAAoBb,IAAAA,OAAkB,CAC1CC,UAAW,oBACXC,UAAW,QACXC,cAAe,UACfC,YAAa,UACbC,YAAa,EACbC,UAAW,IACXC,OAAQ,GACRC,SAAU,IACVC,cAAc,EACdC,YAAY,EACZC,UAAW,IAEbE,EAAkBD,KAAK,8BACvB,IAAME,EAAwBd,IAAAA,OAAkB,CAC9CC,UAAW,wBACXC,UAAW,QACXC,cAAe,UACfC,YAAa,UACbC,YAAa,EACbC,UAAW,IACXC,OAAQ,GACRC,SAAU,IACVC,cAAc,EACdC,YAAY,EACZC,UAAW,IAEbG,EAAsBF,KAAK,kCAO3B,IAAMG,EAAuB,SAACC,GAAO,OAAK,IAAIC,KAAe,IAAVD,GAAgBE,cAAcC,OAAO,GAAI,EAAE,EAMxFC,EAAW,SAACC,GAChB,IAAMC,EAAS7B,SAASC,eAAe,GAAD6B,OAAIF,EAAE,kBACtCG,EAAa/B,SAASC,eAAe,GAAD6B,OAAIF,EAAE,UAChDC,EAAOG,UAAUC,OAAO,QACxBF,EAAWG,UAAY,6BACzB,EAKMC,EAAc,SAACC,EAAmBR,GACtC,IAAMS,EAAWD,EAAkBD,cACfnC,SAASC,eAAe,GAAD6B,OAAIF,EAAE,UACrCM,UAAY,QAAHJ,OAAWR,EAAqBe,GACvD,EAMMC,EAAa,SAACV,GAClB,IAAMW,EAAwBvC,SAASC,eAAe,GAAD6B,OAAIF,EAAE,mBACrDY,EAAexC,SAASC,eAAe,GAAD6B,OAAIF,EAAE,kBAC5Ca,EAAezC,SAASC,eAAe,GAAD6B,OAAIF,EAAE,YAE9Cc,OAAOC,YAAc,MACnBJ,EAAsBP,UAAUY,SAAS,cAC3CL,EAAsBP,UAAUa,OAAO,aACvC7C,SAAS8C,KAAKC,aACdN,EAAaT,UAAUgB,IAAI,YAC3BR,EAAaR,UAAUgB,IAAI,cAE3BhD,SAAS8C,KAAKC,aACdP,EAAaR,UAAUC,OAAO,YAC9BgB,YAAW,WACTR,EAAaT,UAAUC,OAAO,YAC9BM,EAAsBP,UAAUa,OAAO,YACzC,GAAG,OAKHH,OAAOC,WAAa,MAClBH,EAAaU,MAAQ,GACvBV,EAAaU,MAAQ,EACrBC,EAAUvB,KAEVY,EAAaU,MAAQ,GACrBC,EAAUvB,IAGhB,EAkCMwB,EAAY,SAACxB,GAEjB,IAAMyB,EAAcrD,SAASC,eAAe,GAAD6B,OAAIF,EAAE,kBAC3CC,EAAS7B,SAASC,eAAe,GAAD6B,OAAIF,EAAE,kBACtCG,EAAa/B,SAASC,eAAe,GAAD6B,OAAIF,EAAE,UAGhD,GAAIC,EAAOG,UAAUY,SAAS,QAI5B,OAHAf,EAAOG,UAAUC,OAAO,QACxBF,EAAWG,UAAY,mCArCR,SAACN,GAKlB,OAJe5B,SAASC,eAAe,GAAD6B,OAAIF,EAAE,kBAErCI,UAAUC,OAAO,QAEhBL,GACN,IAAK,SACHtB,EAAiBgD,QACjB,MAEF,IAAK,UACHlC,EAAkBkC,QAClB,MAEF,IAAK,cACHjC,EAAsBiC,QAO5B,CAgBIC,CAAW3B,GAMb,OAFAG,EAAWG,UAAY,+BAEfN,GACN,IAAK,SACHtB,EAAiB6C,UAAUE,EAAYH,OACvC5C,EAAiBkD,OACjB,MAEF,IAAK,UACHpC,EAAkB+B,UAAUE,EAAYH,OACxC9B,EAAkBoC,OAClB,MAEF,IAAK,cACHnC,EAAsB8B,UAAUE,EAAYH,OAC5C7B,EAAsBmC,OAQ1B3B,EAAOG,UAAUgB,IAAI,OACvB,EAMMG,EAAY,SAACvB,GACjB,IAAMyB,EAAcrD,SAASC,eAAe,GAAD6B,OAAIF,EAAE,kBAEjD,OAAQA,GACN,IAAK,SACHtB,EAAiB6C,UAAUE,EAAYH,OACvC,MAEF,IAAK,UACH9B,EAAkB+B,UAAUE,EAAYH,OACxC,MAEF,IAAK,cACH7B,EAAsB8B,UAAUE,EAAYH,OAQhD,IAAMO,EAAoBzD,SAASC,eAAe,GAAD6B,OAAIF,EAAE,YAEnDyB,EAAYH,MAAQ,KACtBO,EAAkBC,kBAAkB1B,UAAUC,OAAO,gBACrDwB,EAAkBC,kBAAkB1B,UAAUgB,IAAI,qBAElDS,EAAkBC,kBAAkB1B,UAAUC,OAAO,mBACrDwB,EAAkBC,kBAAkB1B,UAAUgB,IAAI,gBAEtD,EAOMW,EAAiB,SAAC/B,GACtB,IAAMgC,EAAc5D,SAASC,eAAe,GAAD6B,OAAIF,EAAE,UAE3CiC,EAAa,SAACzB,GAClB,IAAM0B,EAAU1B,EAAkB2B,iBAC5B1B,EAAWD,EAAkBD,cAC7B6B,EAAiB1C,EAAqBwC,GACtCG,EAAkB3C,EAAqBe,GAC7CuB,EAAY1B,UAAY,GAAHJ,OAAMkC,EAAc,KAAAlC,OAAImC,EAC/C,EAEA,OAAQrC,GACN,IAAK,SACHiC,EAAWvD,GACX,MAEF,IAAK,UACHuD,EAAWzC,GACX,MAEF,IAAK,cACHyC,EAAWxC,GAKjB,EAGArB,SAASC,eAAe,eAAeiE,iBAAiB,SAAS,WAC/Dd,EAAU,SACZ,IAEApD,SAASC,eAAe,uBAAuBiE,iBAAiB,SAAS,WACvEf,EAAU,SACZ,IAEAnD,SAASC,eAAe,iBAAiBiE,iBAAiB,SAAS,WACjE5B,EAAW,SACb,IAEAhC,EAAiB6D,GAAG,gBAAgB,WAClCR,EAAe,SACjB,IAEArD,EAAiB6D,GAAG,UAAU,WAC5BxC,EAAS,SACX,IACArB,EAAiB6D,GAAG,SAAS,WAC3BhC,EAAY7B,EAAkB,SAChC,IAGAN,SAASC,eAAe,gBAAgBiE,iBAAiB,SAAS,WAChEd,EAAU,UACZ,IAEApD,SACGC,eAAe,wBACfiE,iBAAiB,SAAS,WACzBf,EAAU,UACZ,IAEFnD,SAASC,eAAe,kBAAkBiE,iBAAiB,SAAS,WAClE5B,EAAW,UACb,IAEAlB,EAAkB+C,GAAG,gBAAgB,WACnCR,EAAe,UACjB,IAEAvC,EAAkB+C,GAAG,UAAU,WAC7BxC,EAAS,UACX,IACAP,EAAkB+C,GAAG,SAAS,WAC5BhC,EAAYf,EAAmB,UACjC,IAGApB,SAASC,eAAe,oBAAoBiE,iBAAiB,SAAS,WACpEd,EAAU,cACZ,IAEApD,SACGC,eAAe,4BACfiE,iBAAiB,SAAS,WACzBf,EAAU,cACZ,IAEFnD,SAASC,eAAe,sBAAsBiE,iBAAiB,SAAS,WACtE5B,EAAW,cACb,IAEAjB,EAAsB8C,GAAG,gBAAgB,WACvCR,EAAe,cACjB,IAEAtC,EAAsB8C,GAAG,UAAU,WACjCxC,EAAS,cACX,IACAN,EAAsB8C,GAAG,SAAS,WAChChC,EAAYd,EAAuB,cACrC,sJC1UA+C,EAAQ,MACRA,EAAQ,MAER,IAsVqBC,EACfC,EACAC,EACAC,EACAC,EACAC,EAKAC,EACEC,EAjWJC,EAAe,EACfC,GAAS,EACTC,EAAiB,SACVC,GAAgB,EAGrBC,EAAmBjF,SAASkF,iBAAiB,cAC7CC,EAAkBnF,SAASkF,iBAAiB,UAC5CE,EAAepF,SAASkF,iBAAiB,gCACzCG,EAAqBrF,SAASkF,iBAClC,6BAEII,EAAuBtF,SAASC,eAAe,mBAC/CsF,EAAmBvF,SAASC,eAAe,eAC3CuF,EAAsBxF,SAASkF,iBACnC,+BAEIO,EAAqBzF,SAASkF,iBAAiB,qBAC/CQ,EAA2B1F,SAASkF,iBAAiB,qBACrDS,EAAwB3F,SAASkF,iBAAiB,mBAClDU,EAAalD,OAAOmD,WAAW,oCAC/BC,EAAgB9F,SAASC,eAAe,iBAGxC8F,EAAoBC,IAAAA,cAAqB,CAC7CxF,UAAWR,SAASC,eAAe,qCACnCgG,SAAU,MACVC,MAAM,EACNC,UAAU,EACVC,KAAM,kCAGFC,EAAoBL,IAAAA,cAAqB,CAC7CxF,UAAWR,SAASC,eAAe,oCACnCgG,SAAU,MACVC,MAAM,EACNC,UAAU,EACVC,KAAM,wCA6BKE,EAAW,SAACC,EAAMC,EAAOC,GACpC,IAAIC,EACJ,OAAO,WAAa,QAAAC,EAAAC,UAAAC,OAATC,EAAI,IAAAC,MAAAJ,GAAAK,EAAA,EAAAA,EAAAL,EAAAK,IAAJF,EAAIE,GAAAJ,UAAAI,GACb,IAAMC,EAAYV,EAAKW,KAAIC,MAATZ,EAAI,CAAMa,GAAItF,OAAKgF,IACrCO,aAAaX,GACTD,IAAcC,GAChBO,IAEF,IAAMK,EAAab,EACf,WACEC,EAAU,IACZ,EACAO,EACJP,EAAUzD,WAAWqE,EAAYd,EACnC,CACF,EAMMe,EAAuB,SAACC,EAAGC,GAC/B,IAAIC,EAeEC,GAHJD,EAVGD,IAEsB,cAAvBD,EAAEE,OAAOE,WACc,+BAAvBJ,EAAEE,OAAOE,UAEAJ,EAAEE,OAEFF,EAAEE,OAAOG,aAMDC,WAAW,GAE1BC,EAAeL,EAAO9F,GAAGoG,OAAO,IAEtCtC,EAAyBuC,SAAQ,SAACC,GAAM,OACtCA,EAAOlG,UAAUC,OAAO,SAAS,IAEnC0D,EAAsBsC,SAAQ,SAACE,GAAI,OAAKA,EAAKnG,UAAUC,OAAO,SAAS,IACvE,IAAMiG,EAASlI,SAASC,eAAe,cAAD6B,OAAeiG,IAC/CI,EAAOnI,SAASC,eAAe,YAAD6B,OAAaiG,IAExB,+BAArBL,EAAOE,WAET3C,EAAiBgD,SAAQ,SAACG,GACxBA,EAAOpG,UAAUC,OAAO,oBACxBmG,EAAOC,aAAa,gBAAiB,QACvC,IAGAX,EAAOW,aAAa,gBAAiB,QAGrClD,EAAgB8C,SAAQ,SAACK,GACvBA,EAAMlI,MAAMmI,UAAY,IAC1B,IAEAL,EAAOlG,UAAUgB,IAAI,UACrBmF,EAAKnG,UAAUgB,IAAI,WAEnB0E,EAAOW,aAAa,gBAAiB,SAGvCX,EAAO1F,UAAUa,OAAO,oBACxB8E,EAAM3F,UAAUa,OAAO,QAEvB,IAAMyF,EAAQZ,EAAOc,mBAEjBF,EAAMlI,MAAMmI,UACdD,EAAMlI,MAAMmI,UAAY,KAExBD,EAAMlI,MAAMmI,UAAY,GAAHzG,OAAMwG,EAAMG,aAAY,KAEjD,EAMMC,EAAyB,SAAClB,GAC9B,IAAMmB,EAAoBnB,EAAEoB,cAAcC,aAAa,WAEjDC,EAAkB9I,SAASC,eAAe0I,GAEhDpB,EAAqB,KAAMuB,EAC7B,EAiCMC,EAA+B,SAACvB,GACpC,IAAMwB,EAAcxB,EAAEoB,cAAcK,QAAQC,MAEd,IAA1BC,SAASH,GAKTnE,IAAiBmE,IAIjBnE,EAAemE,EACjBI,EAAUJ,GAEVK,EAAQL,IAXRM,GAaJ,EA8BMA,EAAiB,WACrB5G,OAAO6G,SAAS,CAAEC,KAAM,EAAGC,IAAK,EAAGC,SAAU3E,IAC7CF,EAAe,CACjB,EAMMuE,EAAY,SAACJ,GAEjB,GAAqB,IAAjBnE,GAAuBmE,EAA3B,CAKIA,EACFnE,EAAesE,SAASH,GAExBnE,IAIF,IAIM8E,EAJiB3J,SACpBC,eAAe,QAAD6B,OAAS+C,IACvB+E,wBAAwBH,KACT/G,OAAOmH,aAAe7J,SAAS8J,gBAAgBC,WAI7DrH,OAAO1C,SAASgK,aAClBtH,OAAO6G,SAAS,EAAGI,GAEnBjH,OAAO6G,SAAS,CAAEC,KAAM,EAAGC,IAAKE,EAAWD,SAAU3E,IAGlC,IAAjBF,GAAuBG,GACzB/B,YAAW,WACToD,EAAkB7C,OAClBsC,EAAc9D,UAAUgB,IAAI,UAC9B,GAAG,KAGgB,IAAjB6B,GAAuBG,GACzB/B,YAAW,WACTgH,GACF,GAAG,IAjCL,CAmCF,EAMMZ,EAAU,SAACL,GACf,GAAqB,IAAjBnE,EAAJ,CAKImE,EACFnE,EAAesE,SAASH,GAExBnE,IAGF,IAIM8E,EAJqB3J,SACxBC,eAAe,QAAD6B,OAAS+C,IACvB+E,wBAAwBH,KACT/G,OAAOmH,aAAe7J,SAAS8J,gBAAgBC,WAE7DrH,OAAO1C,SAASgK,aAClBtH,OAAO6G,SAAS,EAAGI,GAEnBjH,OAAO6G,SAAS,CAAEC,KAAM,EAAGC,IAAKE,EAAWD,SAAU3E,IAGlC,IAAjBF,GAAuBG,GACzB/B,YAAW,WACToD,EAAkB7C,OAClBsC,EAAc9D,UAAUgB,IAAI,UAC9B,GAAG,KAGgB,IAAjB6B,GAAuBG,GACzB/B,YAAW,WACTgH,GACF,GAAG,IA9BL,CAgCF,EAKMA,EAAgB,WACJjK,SAASkF,iBAAiB,WAClC+C,SAAQ,SAACC,GACfA,EAAOlG,UAAUgB,IAAI,SACvB,GACF,EAsEMkH,EAAsB,SAAC1C,GAC3B,IAAe,IAAX1C,EACFE,GAAgB,EAnWlBe,EAAkBzC,QAClB2G,IACA5D,EAAkB8D,YAAY9D,EAAkB+D,YAAc,GAAG,GAoW/DrF,EAAiB,OAEjBS,EAAoByC,SAAQ,SAACG,GAC3BA,EAAOlG,UAAY,mBACrB,IACAlC,SAASqK,cAAc,QAAQjK,MAAMkK,SAAW,OAChDlF,EAAa6C,SAAQ,SAACsC,GACpBA,EAAYvI,UAAUgB,IAAI,SAC5B,IACA8C,EAAc9D,UAAUgB,IAAI,WAC5B8B,GAAS,OACJ,IAAe,IAAXA,EAAiB,CAC1B,IAAM0F,EAAchD,EAAEE,OAAOuB,QAAQC,MACrClE,GAAgB,EA5XlBqB,EAAkB8D,YAAY,GAAG,GACjCM,IACA1E,EAAkBvC,OA6XhBuB,EAAiB,SAEjBS,EAAoByC,SAAQ,SAACG,GAC3BA,EAAOlG,UAAY,oBACrB,IACAlC,SAASqK,cAAc,QAAQjK,MAAMkK,SAAW,SAChDlF,EAAa6C,SAAQ,SAACsC,GACpBA,EAAYvI,UAAUC,OAAO,SAC/B,IAEA6C,GAAS,EACTsE,EAAUoB,GACVE,GACF,CACF,EAKMA,EAA6B,WACjC1K,SAASkE,iBACP,WACA,SAASyG,EAASnD,GAChB,IAAMoD,EAAMpD,EAAEqD,SAAWrD,EAAEsD,KAEf,IAARF,GAAqB,QAARA,IACfV,IACAlK,SAAS+K,oBAAoB,UAAWJ,GAAU,GAEtD,IACA,EAEJ,EAKMF,EAAkB,WACNzK,SAASkF,iBAAiB,WAClC+C,SAAQ,SAACC,GACfA,EAAOlG,UAAUC,OAAO,SAC1B,GACF,EA/HqBoC,EAsIP,SAACC,GACM,SAAbA,GACF+E,IAEe,OAAb/E,GACF8E,GAEJ,EAlIMxE,EAAcP,EAEpBrE,SAASkE,iBACP,cACA,SAACsD,GACC,IAAMwD,EAAWxD,EAAEyD,eAAe,GAClC3G,EAAW,OAEXC,EAASyG,EAASE,MAClB1G,EAASwG,EAASG,MAClBxG,GAAY,IAAInD,MAAO4J,SACzB,IACA,GAGFpL,SAASkE,iBACP,YACA,SAACsD,GACC,IAAMwD,EAAWxD,EAAEyD,eAAe,GAClCxG,EAAQuG,EAASE,MAAQ3G,EAEzBG,EAAQsG,EAASG,MAAQ3G,GAEX,IAAIhD,MAAO4J,UAAYzG,GA1BrB,MA6BV0G,KAAKC,IAAI7G,IA/BD,KA+BwB4G,KAAKC,IAAI5G,IA9BjC,IAgCVJ,EAAWG,EAAQ,EAAI,OAAS,QAEhC4G,KAAKC,IAAI5G,IAnCC,KAoCV2G,KAAKC,IAAI7G,IAnCC,MAsCVH,EAAWI,EAAQ,EAAI,KAAO,SAGlCE,EAAYN,EACd,IACA,GA8FFoG,IAGAhI,OAAO6I,eAAiB,WACtB7I,OAAO6G,SAAS,EAAG,EACrB,EAGA7G,OAAO8I,OAAS,WACV5F,EAAW6F,SACbvB,GAEJ,EAIFlK,SAASkE,iBAAiB,WAlVH,SAACsD,GAEtB,KACE9E,OAAOC,YAAc,KACrBD,OAAOgJ,aAAe,MACX,IAAX5G,GAHF,CAQA,IAAM8F,EAAMpD,EAAEsD,KACRa,EAAYnE,EAAEqD,QAER,YAARD,GAAmC,KAAde,GACvBnE,EAAEoE,iBACFvC,KACiB,cAARuB,GAAqC,KAAde,IAChCnE,EAAEoE,iBACFxC,IAVF,CAYF,IA+TApJ,SAASkE,iBAAiB,UAAU,WAClC,IACGc,IACAtC,OAAOC,WAAa,KAAOD,OAAOgJ,aAAe,KAClD,CACA,IAAMjC,EAAM/G,OAAOmH,aAAe7J,SAAS8J,gBAAgBC,UAIrD8B,EAHiB7L,SAASqK,cAC9B,yCAGeT,wBAAwBH,IACvCA,EACA/G,OAAOgJ,YACP,IAIII,EAHsB9L,SAASqK,cACnC,2BAGoBT,wBAAwBH,IAC5CA,EACA/G,OAAOgJ,YACP,IAEEjC,EAAMoC,GACR5I,YAAW,WACToD,EAAkB7C,OAClBsC,EAAc9D,UAAUgB,IAAI,UAC9B,GAAG,KAGDyG,EAAMqC,GACR7I,YAAW,WACTgH,GACF,GAAG,IAEP,CACF,IACAjK,SAASkE,iBAAiB,QAASoC,GAvUV,SAACkB,GAExB,KACE9E,OAAOC,YAAc,KACrBD,OAAOgJ,aAAe,MACX,IAAX5G,GAHF,CAQA,IAAMiH,EAAevE,EAAEwE,OAEnBD,GAAgB,GAClB3C,IAGE2C,IAAiB,GACnB1C,GATF,CAWF,GAoT8D,KAAK,IACnE5D,EAAmBwC,SAAQ,SAACG,GAC1BA,EAAOlE,iBAAiB,QAASwE,EACnC,IACAzD,EAAiBgD,SAAQ,SAACG,GACxBA,EAAOlE,iBAAiB,QAASqD,EACnC,IACAlC,EAAmB4C,SAAQ,SAACG,GAC1BA,EAAOlE,iBAAiB,QAAS6E,EACnC,IACAzD,EAAqBpB,iBAAiB,QAASoF,GAC/C9D,EAAoByC,SAAQ,SAACG,GAC3BA,EAAOlE,iBAAiB,QAASgG,EACnC,IACA3E,EAAiBrB,iBAAiB,SA3JX,WACrBkF,GACF,sQCnZA,IAeI6C,EAEAC,EAjBEC,EAA4BnM,SAASoM,uBACzC,8BAEIC,EAA2BrM,SAASoM,uBACxC,wBAEIE,EAAsBtM,SAASqK,cAAc,0BAC7CkC,EAAqBvM,SAASC,eAAe,mBAW7CuM,EAAa,GACbC,EAAc/J,OAAOC,WAiBrB+J,EAA+B,SAACC,EAAOC,GAC3C,IAAMC,EAAaD,EAAKhD,wBAAwBkD,MAAQ,GAExDH,EAAMjJ,kBAAkBtD,MAAM2M,QAAU,IACxC9J,YAAW,WACT0J,EAAMvM,MAAM0M,MAAQ,GAAHhL,OAAM+K,EAAU,KACnC,GAAG,KACH5J,YAAW,WACT0J,EAAMvM,MAAM2M,QAAU,GACxB,GAAG,KACH9J,YAAW,WACT0J,EAAMvM,MAAM0M,MAAQ,KACpBH,EAAMvM,MAAMU,OAAS,KACrB6L,EAAMvM,MAAMqJ,IAAM,KAClBkD,EAAMvM,MAAMoJ,KAAO,KACnBmD,EAAM3K,UAAUgB,IAAI,UACpB2J,EAAMjJ,kBAAkB1B,UAAUgB,IAAI,UACtC2J,EAAM3K,UAAUC,OAAO,cACvB0K,EAAMjJ,kBAAkB1B,UAAUC,OAAO,aAC3C,GAAG,KACL,EAOM+K,EAA2B,SAACL,EAAOC,GACvC,IAAMK,EAAUvK,OAAOwK,SAAWxK,OAAOmH,YACnCsD,EAASP,EAAKhD,wBAAwBwD,OAASH,EAAU,EAE/DN,EAAMjJ,kBAAkBtD,MAAM2M,QAAU,IACxC9J,YAAW,WACT0J,EAAMvM,MAAMU,OAAS,IACrB6L,EAAMvM,MAAMqJ,IAAM,GAAH3H,OAAMqL,EAAM,KAC7B,GAAG,KACHlK,YAAW,WACT0J,EAAMvM,MAAM2M,QAAU,IACtBJ,EAAMvM,MAAM0M,MAAQ,KACpBH,EAAMvM,MAAMU,OAAS,KACrB6L,EAAMvM,MAAMqJ,IAAM,KAClBkD,EAAMvM,MAAMoJ,KAAO,KACnBmD,EAAM3K,UAAUgB,IAAI,UACpB2J,EAAMjJ,kBAAkB1B,UAAUgB,IAAI,UACtC2J,EAAM3K,UAAUC,OAAO,cACvB0K,EAAMjJ,kBAAkB1B,UAAUC,OAAO,aAC3C,GAAG,IACL,EAMMoL,EAA0B,SAACV,GAC/BA,EAAMvM,MAAM2M,QAAU,IACtBJ,EAAMjJ,kBAAkBtD,MAAM2M,QAAU,IAExCJ,EAAMvM,MAAM0M,MAAQ,KACpBH,EAAMvM,MAAMU,OAAS,KACrB6L,EAAMvM,MAAMqJ,IAAM,KAClBkD,EAAMvM,MAAMoJ,KAAO,KACnBmD,EAAM3K,UAAUgB,IAAI,UACpB2J,EAAMjJ,kBAAkB1B,UAAUgB,IAAI,UACtC2J,EAAM3K,UAAUC,OAAO,cACvB0K,EAAMjJ,kBAAkB1B,UAAUC,OAAO,cAErCgK,GAAaA,EAAUqB,SAC7B,EAUMC,EAAgB,SAAC/F,EAAGmF,EAAOa,GAC/B,GAAkB,KAAdhG,EAAEqD,QAIN,GAAiB,mBAAb8B,EAAM/K,GAAV,CAKA,IAAM6L,EAAad,EAAMtC,cAAc,UAAUpB,QAAQ2D,KACnDA,EAAO5M,SAASC,eAAewN,GAC/BC,EAAa1N,SAASC,eAAe,GAAD6B,OAAI6K,EAAM/K,GAAE,aAEjDoD,EAAAA,GAAiBtC,OAAOC,YAAc,KACzC+J,EAA6BC,EAAOC,IAGjC5H,EAAAA,GAAiBtC,OAAOC,WAAa,KACxCqK,EAAyBL,EAAOC,GAG9B5H,EAAAA,GACFqI,EAAwBV,GAGtBV,GAAaA,EAAUqB,UAE3BI,EAAWC,QAEX3N,SAAS+K,oBAAoB,UAAWyC,GAAQ,EAtBhD,MAFEI,GAyBJ,EAMMC,EAA0B,SAACrG,GAC/B,IAAMgG,EAAStB,EAET4B,EAActG,EAAEoB,cAChBmF,EAAeD,EAAY7E,QAAQ0D,MACnCqB,EAASF,EAAY7E,QAAQ2D,KAC7BD,EAAQ3M,SAASC,eAAe8N,GAChCnB,EAAO5M,SAASC,eAAe+N,GAC/BN,EAAa1N,SAASC,eAAe,GAAD6B,OAAIiM,EAAY,aAErD/I,EAAAA,GAAiBtC,OAAOC,YAAc,KACzC+J,EAA6BC,EAAOC,IAGjC5H,EAAAA,GAAiBtC,OAAOC,WAAa,KACxCqK,EAAyBL,EAAOC,GAG9B5H,EAAAA,GACFqI,EAAwBV,GAGtBV,GAAaA,EAAUqB,UAC3BI,EAAWC,QAEX3N,SAAS+K,oBAAoB,UAAWyC,GAAQ,EAClD,EAMMS,EAAyB,SAACzG,GAC9B,IAAM0G,EAAc1G,EAAEoB,cAAcK,QAAQrH,GACtCuM,EAAiBnO,SAASC,eAAeiO,GACzCE,EAAeD,EAAezK,kBAC9B2K,EAAiBrO,SAASC,eAAe,yBACzCwN,EAAajG,EAAEoB,cAAcK,QAAQ2D,KACrCA,EAAO5M,SAASC,eAAewN,GAMrC,GAJAjB,EAAW8B,KAAKH,GAEhBlC,EAAYsC,EAAUJ,IAEjBnJ,EAAAA,GAAiBtC,OAAOC,YAAc,IAAK,CAC9C,IAAM6L,EAAe5B,EAAKhD,wBAAwBkD,MAAQ,GACpDhM,EAAS8L,EAAKhD,wBAAwB9I,OAAS,GAE/C2N,EAAU/L,OAAOgM,SAAWhM,OAAOiM,YACnC1B,EAAUvK,OAAOwK,SAAWxK,OAAOmH,YAEnC+E,EAAI5O,SAASC,eAAe,2BAA2B2J,wBAC1DJ,KACCiF,EACA,EACEI,EAAI7O,SAASC,eAAe,2BAA2B2J,wBAC1DH,IACCwD,EACA,EAEEJ,EAAawB,EAAeS,YAAc,GAEhDX,EAAe/N,MAAMU,OAAS,GAAHgB,OAAMhB,EAAM,MACvCqN,EAAe/N,MAAM0M,MAAQ,GAAHhL,OAAM0M,EAAY,MAC5CL,EAAe/N,MAAMqJ,IAAM,GAAH3H,OAAM+M,EAAC,MAC/BV,EAAe/N,MAAMoJ,KAAO,GAAH1H,OAAM8M,EAAC,MAChCT,EAAenM,UAAUC,OAAO,UAChCjC,SAAS8C,KAAKC,aACdoL,EAAe/N,MAAM2M,QAAU,IAC/BoB,EAAe/N,MAAM0M,MAAQ,GAAHhL,OAAM+K,EAAU,MAM1C5J,YAAW,WACTmL,EAAapM,UAAUC,OAAO,UAC9BjC,SAAS8C,KAAKC,aACdqL,EAAahO,MAAM2M,QAAU,GAC/B,GAAG,IACL,CAEA,GAAI/H,EAAAA,GAAiBtC,OAAOC,YAAc,IAAK,CAC7C,IAAMmK,EAAQuB,EAAeS,YAAc,GACrChO,EAASuN,EAAe5F,aAAe,GAEvCgG,EAAU/L,OAAOgM,SAAWhM,OAAOiM,YACnC1B,EAAUvK,OAAOwK,SAAWxK,OAAOmH,YAEnC+E,EAAI5O,SAASC,eAAe,2BAA2B2J,wBAC1DJ,KACCiF,EACA,EACEI,EAAI7O,SAASC,eAAe,2BAA2B2J,wBAC1DH,IACCwD,EACA,EAEJkB,EAAe/N,MAAMU,OAAS,GAAHgB,OAAMhB,EAAM,MACvCqN,EAAe/N,MAAM0M,MAAQ,GAAHhL,OAAMgL,EAAK,MACrCqB,EAAe/N,MAAMqJ,IAAM,GAAH3H,OAAM+M,EAAC,MAC/BV,EAAe/N,MAAMoJ,KAAO,GAAH1H,OAAM8M,EAAC,MAChCT,EAAe/N,MAAM2M,QAAU,IAC/BqB,EAAahO,MAAM2M,QAAU,IAC7BoB,EAAenM,UAAUgB,IAAI,cAC7BoL,EAAapM,UAAUgB,IAAI,cAC3BmL,EAAenM,UAAUC,OAAO,UAChCmM,EAAapM,UAAUC,OAAO,SAChC,CAEA,GAAI+C,EAAAA,GAAiBtC,OAAOC,WAAa,IAAK,CAC5C,IAAMmK,EAAQF,EAAKkC,YAAc,GAC3BhO,EAAS8L,EAAKnE,aAAe,GAE7BgG,EAAU/L,OAAOgM,SAAWhM,OAAOiM,YACnC1B,EAAUvK,OAAOwK,SAAWxK,OAAOmH,YAEnC+E,EAAIhC,EAAKhD,wBAAwBJ,KAAOiF,EAAU,EAClDI,EAAIjC,EAAKhD,wBAAwBH,IAAMwD,EAAU,EAEvDkB,EAAe/N,MAAMU,OAAS,GAAHgB,OAAMhB,EAAM,MACvCqN,EAAe/N,MAAM0M,MAAQ,GAAHhL,OAAMgL,EAAK,MACrCqB,EAAe/N,MAAMqJ,IAAM,GAAH3H,OAAM+M,EAAC,MAC/BV,EAAe/N,MAAMoJ,KAAO,GAAH1H,OAAM8M,EAAC,MAChCT,EAAe/N,MAAM2M,QAAU,IAC/BqB,EAAahO,MAAM2M,QAAU,IAC7BoB,EAAenM,UAAUgB,IAAI,cAC7BoL,EAAapM,UAAUgB,IAAI,cAC3BmL,EAAenM,UAAUC,OAAO,UAChCmM,EAAapM,UAAUC,OAAO,SAChC,CAEA,IAAK+C,EAAAA,GAAiBtC,OAAOC,WAAa,IAAK,CAC7C,IAAMmK,EAAQF,EAAKkC,YAAc,GAC3BhO,EAAS8L,EAAKnE,aAAe,GAE7BgG,EAAU/L,OAAOgM,SAAWhM,OAAOiM,YACnC1B,EAAUvK,OAAOwK,SAAWxK,OAAOmH,YAEnC+E,EAAIhC,EAAKhD,wBAAwBJ,KAAOiF,EAAU,EAClDM,EAAWnC,EAAKhD,wBAAwBwD,OAASH,EAAU,EAC3DE,EAASP,EAAKhD,wBAAwBH,IAAMwD,EAAU,EAE5DkB,EAAe/N,MAAMU,OAAS,GAAHgB,OAAM,EAAC,MAClCqM,EAAe/N,MAAM0M,MAAQ,GAAHhL,OAAMgL,EAAK,MACrCqB,EAAe/N,MAAMqJ,IAAM,GAAH3H,OAAMiN,EAAQ,MACtCZ,EAAe/N,MAAMoJ,KAAO,GAAH1H,OAAM8M,EAAC,MAEhCT,EAAenM,UAAUC,OAAO,UAEhCkM,EAAe/N,MAAM2M,QAAU,IAC/B/M,SAAS8C,KAAKC,aACdoL,EAAe/N,MAAMU,OAAS,GAAHgB,OAAMhB,EAAM,MACvCqN,EAAe/N,MAAMqJ,IAAM,GAAH3H,OAAMqL,EAAM,MAEpClK,YAAW,WACTmL,EAAapM,UAAUC,OAAO,UAC9BjC,SAAS8C,KAAKC,aACdqL,EAAahO,MAAM2M,QAAU,GAC/B,GAAG,IACL,CAEA/M,SAASkE,iBACP,WACA,SAASsJ,EAAOwB,GACdC,KAAK/C,cAAgBsB,EACrBD,EAAcyB,EAAOb,EAAgBX,EACvC,IACA,EAEJ,EAKM0B,EAAoB,WACxB,IAAMvC,EAAQ3M,SAASC,eAAe,kBACtCgM,EAAYsC,EAAU5B,GAEtBA,EAAM3K,UAAUC,OAAO,UAEvBjC,SAASkE,iBACP,WACA,SAASsJ,EAAOwB,GACdC,KAAK/C,cAAgBsB,EACrBD,EAAcyB,EAAOrC,EAAOa,EAC9B,IACA,EAEJ,EAMMI,EAAqB,WACzB,IAAMJ,EAAStB,EACDlM,SAASC,eAAe,kBAChC+B,UAAUgB,IAAI,UAEhBiJ,GAAaA,EAAUqB,UAE3Bf,EAAmBoB,QAEnB3N,SAAS+K,oBAAoB,UAAWyC,GAAQ,EAClD,EAQMe,EAAY,SAACY,GAAmC,MAC9CC,MAD8BxI,UAAAC,OAAA,QAAAwI,IAAAzI,UAAA,GAAAA,UAAA,GAAG5G,UACZkF,iBAlWV,wvBAkWwCoK,QACvD,SAACC,GAAI,OAAMJ,EAAUvM,SAAS2M,IAA2C,OAAlCA,EAAK1G,aAAa,WAAoB,IAG/E,OADAuG,EAAMnH,SAAQ,SAACsH,GAAI,OAAKA,EAAKlH,aAAa,WAAY,KAAK,IACpD,CACLiF,QAAO,WACL8B,EAAMnH,SAAQ,SAACsH,GAAI,OAAKA,EAAKC,gBAAgB,WAAW,GAC1D,EAEJ,EAGAC,GAAE,WACA/M,OAAOwB,iBAAiB,UAAUoC,EAAAA,EAAAA,IAAS,WACrC5D,OAAOC,aAAe8J,IAjWvBzM,SAASC,eAAe,kBAAkB+B,UAAUY,SAAS,WAAagL,IAC/EpB,EAAWvE,SAAQ,SAAC0E,GAClBU,EAAwBV,EAC1B,IAiWA,GAAG,KAAM,IACTN,EAAyBpE,SAAQ,SAACG,GAChCA,EAAOlE,iBAAiB,QAAS+J,EACnC,IACA9B,EAA0BlE,SAAQ,SAACG,GACjCA,EAAOlE,iBAAiB,QAAS2J,EACnC,IACAvB,EAAoBpI,iBAAiB,QAAS0J,GAC9CrB,EAAmBrI,iBAAiB,QAASgL,EAC/C,sBC1YAQ,EAAOC,QAAU,SAAUC,GACzB,GAAiB,mBAANA,EACT,MAAMC,UAAUC,OAAOF,GAAM,sBAC7B,OAAOA,CACX,wBCJA,IAAIG,EAAW,EAAQ,MAEvBL,EAAOC,QAAU,SAAUC,GACzB,IAAKG,EAASH,IAAc,OAAPA,EACnB,MAAMC,UAAU,aAAeC,OAAOF,GAAM,mBAC5C,OAAOA,CACX,wBCNA,IAAII,EAAkB,EAAQ,MAC1BC,EAAS,EAAQ,MACjBC,EAAuB,EAAQ,MAE/BC,EAAcH,EAAgB,eAC9BI,EAAiBrJ,MAAMsJ,UAIQhB,MAA/Be,EAAeD,IACjBD,EAAqBI,EAAEF,EAAgBD,EAAa,CAClDI,cAAc,EACdrN,MAAO+M,EAAO,QAKlBP,EAAOC,QAAU,SAAU/E,GACzBwF,EAAeD,GAAavF,IAAO,CACrC,uBCnBA,IAAImF,EAAW,EAAQ,MAEvBL,EAAOC,QAAU,SAAUC,GACzB,IAAKG,EAASH,GACZ,MAAMC,UAAUC,OAAOF,GAAM,qBAC7B,OAAOA,CACX,qCCLA,IAAIY,EAAW,gBAGXC,EAFsB,EAAQ,KAEdC,CAAoB,WAIxChB,EAAOC,QAAWc,EAGd,GAAGxI,QAH2B,SAAiB0I,GACjD,OAAOH,EAASvB,KAAM0B,EAAY/J,UAAUC,OAAS,EAAID,UAAU,QAAKyI,EAE1E,qCCVA,IAAInI,EAAO,EAAQ,MACf0J,EAAW,EAAQ,KACnBC,EAA+B,EAAQ,MACvCC,EAAwB,EAAQ,MAChCC,EAAW,EAAQ,MACnBC,EAAiB,EAAQ,MACzBC,EAAoB,EAAQ,KAIhCvB,EAAOC,QAAU,SAAcuB,GAC7B,IAOIrK,EAAQsK,EAAQC,EAAMC,EAAUC,EAAMpO,EAPtCqO,EAAIX,EAASM,GACbM,EAAmB,mBAARvC,KAAqBA,KAAOlI,MACvC0K,EAAkB7K,UAAUC,OAC5B6K,EAAQD,EAAkB,EAAI7K,UAAU,QAAKyI,EAC7CsC,OAAoBtC,IAAVqC,EACVE,EAAiBX,EAAkBM,GACnCM,EAAQ,EAIZ,GAFIF,IAASD,EAAQxK,EAAKwK,EAAOD,EAAkB,EAAI7K,UAAU,QAAKyI,EAAW,IAE3DA,MAAlBuC,GAAiCJ,GAAKzK,OAAS+J,EAAsBc,GAWvE,IADAT,EAAS,IAAIK,EADb3K,EAASkK,EAASQ,EAAE1K,SAEdA,EAASgL,EAAOA,IACpB3O,EAAQyO,EAAUD,EAAMH,EAAEM,GAAQA,GAASN,EAAEM,GAC7Cb,EAAeG,EAAQU,EAAO3O,QAThC,IAFAoO,GADAD,EAAWO,EAAeE,KAAKP,IACfD,KAChBH,EAAS,IAAIK,IACLJ,EAAOE,EAAKQ,KAAKT,IAAWU,KAAMF,IACxC3O,EAAQyO,EAAUd,EAA6BQ,EAAUK,EAAO,CAACN,EAAKlO,MAAO2O,IAAQ,GAAQT,EAAKlO,MAClG8N,EAAeG,EAAQU,EAAO3O,GAWlC,OADAiO,EAAOtK,OAASgL,EACTV,CACT,wBCxCA,IAAIa,EAAkB,EAAQ,KAC1BjB,EAAW,EAAQ,MACnBkB,EAAkB,EAAQ,MAG1BC,EAAe,SAAUC,GAC3B,OAAO,SAAUC,EAAOC,EAAIC,GAC1B,IAGIpP,EAHAqO,EAAIS,EAAgBI,GACpBvL,EAASkK,EAASQ,EAAE1K,QACpBgL,EAAQI,EAAgBK,EAAWzL,GAIvC,GAAIsL,GAAeE,GAAMA,GAAI,KAAOxL,EAASgL,GAG3C,IAFA3O,EAAQqO,EAAEM,OAEG3O,EAAO,OAAO,OAEtB,KAAM2D,EAASgL,EAAOA,IAC3B,IAAKM,GAAeN,KAASN,IAAMA,EAAEM,KAAWQ,EAAI,OAAOF,GAAeN,GAAS,EACnF,OAAQM,IAAgB,CAC5B,CACF,EAEAzC,EAAOC,QAAU,CAGf4C,SAAUL,GAAa,GAGvBM,QAASN,GAAa,0BC9BxB,IAAIhL,EAAO,EAAQ,MACfuL,EAAgB,EAAQ,KACxB7B,EAAW,EAAQ,KACnBG,EAAW,EAAQ,MACnB2B,EAAqB,EAAQ,KAE7BpE,EAAO,GAAGA,KAGV4D,EAAe,SAAUS,GAC3B,IAAIC,EAAiB,GAARD,EACTE,EAAoB,GAARF,EACZG,EAAkB,GAARH,EACVI,EAAmB,GAARJ,EACXK,EAAwB,GAARL,EAChBM,EAA2B,GAARN,EACnBO,EAAmB,GAARP,GAAaK,EAC5B,OAAO,SAAUZ,EAAOzB,EAAYwC,EAAMC,GASxC,IARA,IAOIlQ,EAAOiO,EAPPI,EAAIX,EAASwB,GACbiB,EAAOZ,EAAclB,GACrB+B,EAAgBpM,EAAKyJ,EAAYwC,EAAM,GACvCtM,EAASkK,EAASsC,EAAKxM,QACvBgL,EAAQ,EACR5B,EAASmD,GAAkBV,EAC3BhL,EAASkL,EAAS3C,EAAOmC,EAAOvL,GAAUgM,GAAaI,EAAmBhD,EAAOmC,EAAO,QAAK/C,EAE3FxI,EAASgL,EAAOA,IAAS,IAAIqB,GAAYrB,KAASwB,KAEtDlC,EAASmC,EADTpQ,EAAQmQ,EAAKxB,GACiBA,EAAON,GACjCoB,GACF,GAAIC,EAAQlL,EAAOmK,GAASV,OACvB,GAAIA,EAAQ,OAAQwB,GACvB,KAAK,EAAG,OAAO,EACf,KAAK,EAAG,OAAOzP,EACf,KAAK,EAAG,OAAO2O,EACf,KAAK,EAAGvD,EAAKwD,KAAKpK,EAAQxE,QACrB,OAAQyP,GACb,KAAK,EAAG,OAAO,EACf,KAAK,EAAGrE,EAAKwD,KAAKpK,EAAQxE,GAIhC,OAAO8P,GAAiB,EAAIF,GAAWC,EAAWA,EAAWrL,CAC/D,CACF,EAEAgI,EAAOC,QAAU,CAGf1H,QAASiK,EAAa,GAGtBqB,IAAKrB,EAAa,GAGlB5C,OAAQ4C,EAAa,GAGrBsB,KAAMtB,EAAa,GAGnBuB,MAAOvB,EAAa,GAGpBwB,KAAMxB,EAAa,GAGnByB,UAAWzB,EAAa,GAGxB0B,aAAc1B,EAAa,0BCtE7B,IAAI2B,EAAQ,EAAQ,MAChB7D,EAAkB,EAAQ,MAC1B8D,EAAa,EAAQ,MAErBC,EAAU/D,EAAgB,WAE9BN,EAAOC,QAAU,SAAUqE,GAIzB,OAAOF,GAAc,KAAOD,GAAM,WAChC,IAAII,EAAQ,GAKZ,OAJkBA,EAAMC,YAAc,CAAC,GAC3BH,GAAW,WACrB,MAAO,CAAEI,IAAK,EAChB,EAC2C,IAApCF,EAAMD,GAAaI,SAASD,GACrC,GACF,qCCjBA,IAAIN,EAAQ,EAAQ,MAEpBnE,EAAOC,QAAU,SAAUqE,EAAaK,GACtC,IAAIC,EAAS,GAAGN,GAChB,QAASM,GAAUT,GAAM,WAEvBS,EAAOxC,KAAK,KAAMuC,GAAY,WAAc,MAAM,CAAG,EAAG,EAC1D,GACF,wBCTA,IAAItE,EAAW,EAAQ,MACnBwE,EAAU,EAAQ,MAGlBR,EAFkB,EAAQ,KAEhB/D,CAAgB,WAI9BN,EAAOC,QAAU,SAAU6E,GACzB,IAAIhD,EASF,OARE+C,EAAQC,KAGM,mBAFhBhD,EAAIgD,EAAcN,cAEa1C,IAAMzK,QAASwN,EAAQ/C,EAAEnB,WAC/CN,EAASyB,IAEN,QADVA,EAAIA,EAAEuC,MACUvC,OAAInC,GAH+CmC,OAAInC,QAK5DA,IAANmC,EAAkBzK,MAAQyK,CACrC,uBCnBA,IAAIiD,EAA0B,EAAQ,MAItC/E,EAAOC,QAAU,SAAU6E,EAAe3N,GACxC,OAAO,IAAK4N,EAAwBD,GAA7B,CAAwD,IAAX3N,EAAe,EAAIA,EACzE,wBCNA,IAAI6N,EAAW,EAAQ,KACnBC,EAAgB,EAAQ,MAG5BjF,EAAOC,QAAU,SAAU0B,EAAUuD,EAAI1R,EAAO2R,GAC9C,IACE,OAAOA,EAAUD,EAAGF,EAASxR,GAAO,GAAIA,EAAM,IAAM0R,EAAG1R,EACzD,CAAE,MAAO4R,GAEP,MADAH,EAActD,GACRyD,CACR,CACF,uBCXA,IAEIC,EAFkB,EAAQ,KAEf/E,CAAgB,YAC3BgF,GAAe,EAEnB,IACE,IAAIC,EAAS,EACTC,EAAqB,CACvB5D,KAAM,WACJ,MAAO,CAAES,OAAQkD,IACnB,EACA,OAAU,WACRD,GAAe,CACjB,GAEFE,EAAmBH,GAAY,WAC7B,OAAO9F,IACT,EAEAlI,MAAMoO,KAAKD,GAAoB,WAAc,MAAM,CAAG,GACxD,CAAE,MAAOJ,GAAqB,CAE9BpF,EAAOC,QAAU,SAAUyF,EAAMC,GAC/B,IAAKA,IAAiBL,EAAc,OAAO,EAC3C,IAAIM,GAAoB,EACxB,IACE,IAAIC,EAAS,CAAC,EACdA,EAAOR,GAAY,WACjB,MAAO,CACLzD,KAAM,WACJ,MAAO,CAAES,KAAMuD,GAAoB,EACrC,EAEJ,EACAF,EAAKG,EACP,CAAE,MAAOT,GAAqB,CAC9B,OAAOQ,CACT,oBCrCA,IAAIE,EAAW,CAAC,EAAEA,SAElB9F,EAAOC,QAAU,SAAUC,GACzB,OAAO4F,EAAS1D,KAAKlC,GAAI6F,MAAM,GAAI,EACrC,wBCJA,IAAIC,EAAwB,EAAQ,MAChCC,EAAa,EAAQ,MAGrBC,EAFkB,EAAQ,KAEV5F,CAAgB,eAEhC6F,EAAuE,aAAnDF,EAAW,WAAc,OAAO/O,SAAW,CAAhC,IAUnC8I,EAAOC,QAAU+F,EAAwBC,EAAa,SAAU/F,GAC9D,IAAI2B,EAAGuE,EAAK3E,EACZ,YAAc9B,IAAPO,EAAmB,YAAqB,OAAPA,EAAc,OAEM,iBAAhDkG,EAXD,SAAUlG,EAAIhF,GACzB,IACE,OAAOgF,EAAGhF,EACZ,CAAE,MAAOkK,GAAqB,CAChC,CAOoBiB,CAAOxE,EAAIyE,OAAOpG,GAAKgG,IAA8BE,EAEnED,EAAoBF,EAAWpE,GAEH,WAA3BJ,EAASwE,EAAWpE,KAAsC,mBAAZA,EAAE0E,OAAuB,YAAc9E,CAC5F,uBCzBA,IAAI+E,EAAM,EAAQ,MACdC,EAAU,EAAQ,MAClBC,EAAiC,EAAQ,MACzClG,EAAuB,EAAQ,MAEnCR,EAAOC,QAAU,SAAUjI,EAAQ2O,GAIjC,IAHA,IAAIC,EAAOH,EAAQE,GACfE,EAAiBrG,EAAqBI,EACtCkG,EAA2BJ,EAA+B9F,EACrDmG,EAAI,EAAGA,EAAIH,EAAKzP,OAAQ4P,IAAK,CACpC,IAAI7L,EAAM0L,EAAKG,GACVP,EAAIxO,EAAQkD,IAAM2L,EAAe7O,EAAQkD,EAAK4L,EAAyBH,EAAQzL,GACtF,CACF,sBCbA,IAAIiJ,EAAQ,EAAQ,MAEpBnE,EAAOC,SAAWkE,GAAM,WACtB,SAAS6C,IAAkB,CAG3B,OAFAA,EAAErG,UAAU6D,YAAc,KAEnB8B,OAAOW,eAAe,IAAID,KAASA,EAAErG,SAC9C,uCCNA,IAAIuG,EAAoB,yBACpB3G,EAAS,EAAQ,MACjB4G,EAA2B,EAAQ,MACnCC,EAAiB,EAAQ,MACzBC,EAAY,EAAQ,MAEpBC,EAAa,WAAc,OAAO/H,IAAM,EAE5CS,EAAOC,QAAU,SAAUsH,EAAqBC,EAAM5F,GACpD,IAAIsE,EAAgBsB,EAAO,YAI3B,OAHAD,EAAoB5G,UAAYJ,EAAO2G,EAAmB,CAAEtF,KAAMuF,EAAyB,EAAGvF,KAC9FwF,EAAeG,EAAqBrB,GAAe,GAAO,GAC1DmB,EAAUnB,GAAiBoB,EACpBC,CACT,wBCfA,IAAIE,EAAc,EAAQ,MACtBjH,EAAuB,EAAQ,MAC/B2G,EAA2B,EAAQ,MAEvCnH,EAAOC,QAAUwH,EAAc,SAAU5B,EAAQ3K,EAAK1H,GACpD,OAAOgN,EAAqBI,EAAEiF,EAAQ3K,EAAKiM,EAAyB,EAAG3T,GACzE,EAAI,SAAUqS,EAAQ3K,EAAK1H,GAEzB,OADAqS,EAAO3K,GAAO1H,EACPqS,CACT,oBCTA7F,EAAOC,QAAU,SAAUyH,EAAQlU,GACjC,MAAO,CACLmU,aAAuB,EAATD,GACd7G,eAAyB,EAAT6G,GAChBE,WAAqB,EAATF,GACZlU,MAAOA,EAEX,qCCNA,IAAIqU,EAAgB,EAAQ,MACxBrH,EAAuB,EAAQ,MAC/B2G,EAA2B,EAAQ,MAEvCnH,EAAOC,QAAU,SAAU4F,EAAQ3K,EAAK1H,GACtC,IAAIsU,EAAcD,EAAc3M,GAC5B4M,KAAejC,EAAQrF,EAAqBI,EAAEiF,EAAQiC,EAAaX,EAAyB,EAAG3T,IAC9FqS,EAAOiC,GAAetU,CAC7B,oCCRA,IAAIuM,EAAI,EAAQ,MACZgI,EAA4B,EAAQ,MACpCd,EAAiB,EAAQ,MACzBe,EAAiB,EAAQ,MACzBZ,EAAiB,EAAQ,MACzBa,EAA8B,EAAQ,MACtCC,EAAW,EAAQ,MACnB5H,EAAkB,EAAQ,MAC1B6H,EAAU,EAAQ,MAClBd,EAAY,EAAQ,MACpBe,EAAgB,EAAQ,KAExBlB,EAAoBkB,EAAclB,kBAClCmB,EAAyBD,EAAcC,uBACvChD,EAAW/E,EAAgB,YAC3BgI,EAAO,OACPC,EAAS,SACTpD,EAAU,UAEVmC,EAAa,WAAc,OAAO/H,IAAM,EAE5CS,EAAOC,QAAU,SAAUuI,EAAUhB,EAAMD,EAAqB3F,EAAM6G,EAASC,EAAQC,GACrFZ,EAA0BR,EAAqBC,EAAM5F,GAErD,IAkBIgH,EAA0BC,EAASC,EAlBnCC,EAAqB,SAAUC,GACjC,GAAIA,IAASP,GAAWQ,EAAiB,OAAOA,EAChD,IAAKZ,GAA0BW,KAAQE,EAAmB,OAAOA,EAAkBF,GACnF,OAAQA,GACN,KAAKV,EACL,KAAKC,EACL,KAAKpD,EAAS,OAAO,WAAqB,OAAO,IAAIoC,EAAoBhI,KAAMyJ,EAAO,EACtF,OAAO,WAAc,OAAO,IAAIzB,EAAoBhI,KAAO,CAC/D,EAEI2G,EAAgBsB,EAAO,YACvB2B,GAAwB,EACxBD,EAAoBV,EAAS7H,UAC7ByI,EAAiBF,EAAkB7D,IAClC6D,EAAkB,eAClBT,GAAWS,EAAkBT,GAC9BQ,GAAmBZ,GAA0Be,GAAkBL,EAAmBN,GAClFY,EAA4B,SAAR7B,GAAkB0B,EAAkBI,SAA4BF,EAiCxF,GA7BIC,IACFT,EAA2B3B,EAAeoC,EAAkBjH,KAAK,IAAIoG,IACjEtB,IAAsBZ,OAAO3F,WAAaiI,EAAyBhH,OAChEuG,GAAWlB,EAAe2B,KAA8B1B,IACvDc,EACFA,EAAeY,EAA0B1B,GACa,mBAAtC0B,EAAyBvD,IACzC4C,EAA4BW,EAA0BvD,EAAUiC,IAIpEF,EAAewB,EAA0B1C,GAAe,GAAM,GAC1DiC,IAASd,EAAUnB,GAAiBoB,KAKxCmB,GAAWF,GAAUa,GAAkBA,EAAeG,OAAShB,IACjEY,GAAwB,EACxBF,EAAkB,WAAoB,OAAOG,EAAehH,KAAK7C,KAAO,GAIpE4I,IAAWQ,GAAWO,EAAkB7D,KAAc4D,GAC1DhB,EAA4BiB,EAAmB7D,EAAU4D,GAE3D5B,EAAUG,GAAQyB,EAGdR,EAMF,GALAI,EAAU,CACRW,OAAQT,EAAmBR,GAC3B3B,KAAM8B,EAASO,EAAkBF,EAAmBT,GACpDgB,QAASP,EAAmB5D,IAE1BwD,EAAQ,IAAKG,KAAOD,GAClBR,GAA0Bc,KAA2BL,KAAOI,KAC9DhB,EAASgB,EAAmBJ,EAAKD,EAAQC,SAEtC/I,EAAE,CAAE/H,OAAQwP,EAAMiC,OAAO,EAAMC,OAAQrB,GAA0Bc,GAAyBN,GAGnG,OAAOA,CACT,wBCzFA,IAAInS,EAAO,EAAQ,KACf8P,EAAM,EAAQ,MACdmD,EAA+B,EAAQ,MACvC9C,EAAiB,UAErB7G,EAAOC,QAAU,SAAUuH,GACzB,IAAIoC,EAASlT,EAAKkT,SAAWlT,EAAKkT,OAAS,CAAC,GACvCpD,EAAIoD,EAAQpC,IAAOX,EAAe+C,EAAQpC,EAAM,CACnDhU,MAAOmW,EAA6B/I,EAAE4G,IAE1C,wBCVA,IAAIrD,EAAQ,EAAQ,MAGpBnE,EAAOC,SAAWkE,GAAM,WAEtB,OAA8E,GAAvEmC,OAAOO,eAAe,CAAC,EAAG,EAAG,CAAEgD,IAAK,WAAc,OAAO,CAAG,IAAK,EAC1E,0BCNA,IAAIC,EAAS,EAAQ,MACjBzJ,EAAW,EAAQ,MAEnB/P,EAAWwZ,EAAOxZ,SAElByZ,EAAS1J,EAAS/P,IAAa+P,EAAS/P,EAAS0Z,eAErDhK,EAAOC,QAAU,SAAUC,GACzB,OAAO6J,EAASzZ,EAAS0Z,cAAc9J,GAAM,CAAC,CAChD,mBCPAF,EAAOC,QAAU,CACfgK,YAAa,EACbC,oBAAqB,EACrBC,aAAc,EACdC,eAAgB,EAChBC,YAAa,EACbC,cAAe,EACfC,aAAc,EACdC,qBAAsB,EACtBC,SAAU,EACVC,kBAAmB,EACnBC,eAAgB,EAChBC,gBAAiB,EACjBC,kBAAmB,EACnBC,UAAW,EACXC,cAAe,EACfC,aAAc,EACdC,SAAU,EACVC,iBAAkB,EAClBC,OAAQ,EACRC,YAAa,EACbC,cAAe,EACfC,cAAe,EACfC,eAAgB,EAChBC,aAAc,EACdC,cAAe,EACfC,iBAAkB,EAClBC,iBAAkB,EAClBC,eAAgB,EAChBC,iBAAkB,EAClBC,cAAe,EACfC,UAAW,yBCjCb,IAAIC,EAAa,EAAQ,MAEzBhM,EAAOC,QAAU+L,EAAW,YAAa,cAAgB,yBCFzD,IAOIC,EAAOC,EAPPpC,EAAS,EAAQ,MACjBqC,EAAY,EAAQ,MAEpBC,EAAUtC,EAAOsC,QACjBC,EAAOvC,EAAOuC,KACdC,EAAWF,GAAWA,EAAQE,UAAYD,GAAQA,EAAKH,QACvDK,EAAKD,GAAYA,EAASC,GAG1BA,EAEFL,GADAD,EAAQM,EAAGC,MAAM,MACD,GAAK,EAAI,EAAIP,EAAM,GAAKA,EAAM,GACrCE,MACTF,EAAQE,EAAUF,MAAM,iBACVA,EAAM,IAAM,MACxBA,EAAQE,EAAUF,MAAM,oBACbC,EAAUD,EAAM,IAI/BjM,EAAOC,QAAUiM,IAAYA,oBCnB7BlM,EAAOC,QAAU,CACf,cACA,iBACA,gBACA,uBACA,iBACA,WACA,iCCRF,IAAI6J,EAAS,EAAQ,MACjBhD,EAA2B,UAC3BmB,EAA8B,EAAQ,MACtCC,EAAW,EAAQ,MACnBuE,EAAY,EAAQ,MACpBC,EAA4B,EAAQ,KACpCC,EAAW,EAAQ,MAgBvB3M,EAAOC,QAAU,SAAU2M,EAASjG,GAClC,IAGY3O,EAAQkD,EAAK2R,EAAgBC,EAAgBC,EAHrDC,EAASJ,EAAQ5U,OACjBiV,EAASL,EAAQ9C,OACjBoD,EAASN,EAAQO,KASrB,GANEnV,EADEiV,EACOnD,EACAoD,EACApD,EAAOkD,IAAWP,EAAUO,EAAQ,CAAC,IAEpClD,EAAOkD,IAAW,CAAC,GAAGrM,UAEtB,IAAKzF,KAAOyL,EAAQ,CAQ9B,GAPAmG,EAAiBnG,EAAOzL,GAGtB2R,EAFED,EAAQQ,aACVL,EAAajG,EAAyB9O,EAAQkD,KACf6R,EAAWvZ,MACpBwE,EAAOkD,IACtByR,EAASM,EAAS/R,EAAM8R,GAAUE,EAAS,IAAM,KAAOhS,EAAK0R,EAAQlD,cAE5C/J,IAAnBkN,EAA8B,CAC3C,UAAWC,UAA0BD,EAAgB,SACrDH,EAA0BI,EAAgBD,EAC5C,EAEID,EAAQS,MAASR,GAAkBA,EAAeQ,OACpDpF,EAA4B6E,EAAgB,QAAQ,GAGtD5E,EAASlQ,EAAQkD,EAAK4R,EAAgBF,EACxC,CACF,oBCrDA5M,EAAOC,QAAU,SAAUyF,GACzB,IACE,QAASA,GACX,CAAE,MAAON,GACP,OAAO,CACT,CACF,wBCNA,IAAIkI,EAAY,EAAQ,MAGxBtN,EAAOC,QAAU,SAAUiF,EAAIzB,EAAMtM,GAEnC,GADAmW,EAAUpI,QACGvF,IAAT8D,EAAoB,OAAOyB,EAC/B,OAAQ/N,GACN,KAAK,EAAG,OAAO,WACb,OAAO+N,EAAG9C,KAAKqB,EACjB,EACA,KAAK,EAAG,OAAO,SAAU8J,GACvB,OAAOrI,EAAG9C,KAAKqB,EAAM8J,EACvB,EACA,KAAK,EAAG,OAAO,SAAUA,EAAGC,GAC1B,OAAOtI,EAAG9C,KAAKqB,EAAM8J,EAAGC,EAC1B,EACA,KAAK,EAAG,OAAO,SAAUD,EAAGC,EAAGC,GAC7B,OAAOvI,EAAG9C,KAAKqB,EAAM8J,EAAGC,EAAGC,EAC7B,EAEF,OAAO,WACL,OAAOvI,EAAGzN,MAAMgM,EAAMvM,UACxB,CACF,wBCvBA,IAAI4S,EAAS,EAAQ,MAMrB9J,EAAOC,QAAU,SAAUyN,EAAW9I,GACpC,OAAO1N,UAAUC,OAAS,EAJA,mBADFwW,EAKgB7D,EAAO4D,IAJRC,OAAWhO,EAIWmK,EAAO4D,IAAc5D,EAAO4D,GAAW9I,GALtF,IAAU+I,CAM1B,uBCRA,IAAIC,EAAU,EAAQ,MAClBvG,EAAY,EAAQ,MAGpBhC,EAFkB,EAAQ,KAEf/E,CAAgB,YAE/BN,EAAOC,QAAU,SAAUC,GACzB,GAAUP,MAANO,EAAiB,OAAOA,EAAGmF,IAC1BnF,EAAG,eACHmH,EAAUuG,EAAQ1N,GACzB,wBCVA,IAAI2N,EAAQ,SAAU3N,GACpB,OAAOA,GAAMA,EAAGvE,MAAQA,MAAQuE,CAClC,EAGAF,EAAOC,QAEL4N,EAA2B,iBAAdC,YAA0BA,aACvCD,EAAuB,iBAAV7a,QAAsBA,SAEnC6a,EAAqB,iBAARlK,MAAoBA,OACjCkK,EAAuB,iBAAV,EAAAE,GAAsB,EAAAA,IAEnC,WAAe,OAAOxO,IAAO,CAA7B,IAAoCyO,SAAS,cAATA,yBCbtC,IAAI9M,EAAW,EAAQ,KAEnB+M,EAAiB,CAAC,EAAEA,eAExBjO,EAAOC,QAAUqG,OAAO4H,QAAU,SAAgBhO,EAAIhF,GACpD,OAAO+S,EAAe7L,KAAKlB,EAAShB,GAAKhF,EAC3C,oBCNA8E,EAAOC,QAAU,CAAC,wBCAlB,IAAI+L,EAAa,EAAQ,MAEzBhM,EAAOC,QAAU+L,EAAW,WAAY,yCCFxC,IAAIvE,EAAc,EAAQ,MACtBtD,EAAQ,EAAQ,MAChB6F,EAAgB,EAAQ,MAG5BhK,EAAOC,SAAWwH,IAAgBtD,GAAM,WAEtC,OAEQ,GAFDmC,OAAOO,eAAemD,EAAc,OAAQ,IAAK,CACtDH,IAAK,WAAc,OAAO,CAAG,IAC5B0D,CACL,yBCVA,IAAIpJ,EAAQ,EAAQ,MAChByJ,EAAU,EAAQ,MAElBpB,EAAQ,GAAGA,MAGfxM,EAAOC,QAAUkE,GAAM,WAGrB,OAAQmC,OAAO,KAAK6H,qBAAqB,EAC3C,IAAK,SAAUjO,GACb,MAAsB,UAAf0N,EAAQ1N,GAAkBsM,EAAMpK,KAAKlC,EAAI,IAAMoG,OAAOpG,EAC/D,EAAIoG,6BCZJ,IAAI8H,EAAQ,EAAQ,MAEhBC,EAAmBL,SAASlI,SAGE,mBAAvBsI,EAAME,gBACfF,EAAME,cAAgB,SAAUpO,GAC9B,OAAOmO,EAAiBjM,KAAKlC,EAC/B,GAGFF,EAAOC,QAAUmO,EAAME,oCCXvB,IAWIC,EAAK1E,EAAKrD,EAXVgI,EAAkB,EAAQ,MAC1B1E,EAAS,EAAQ,MACjBzJ,EAAW,EAAQ,MACnB4H,EAA8B,EAAQ,MACtCwG,EAAY,EAAQ,MACpBC,EAAS,EAAQ,MACjBC,EAAY,EAAQ,MACpBC,EAAa,EAAQ,MAErBC,EAA6B,6BAC7BC,EAAUhF,EAAOgF,QAgBrB,GAAIN,GAAmBE,EAAOK,MAAO,CACnC,IAAIX,EAAQM,EAAOK,QAAUL,EAAOK,MAAQ,IAAID,GAC5CE,EAAQZ,EAAMvE,IACdoF,EAAQb,EAAM5H,IACd0I,EAAQd,EAAMG,IAClBA,EAAM,SAAUrO,EAAIiP,GAClB,GAAIF,EAAM7M,KAAKgM,EAAOlO,GAAK,MAAM,IAAIC,UAAU0O,GAG/C,OAFAM,EAASC,OAASlP,EAClBgP,EAAM9M,KAAKgM,EAAOlO,EAAIiP,GACfA,CACT,EACAtF,EAAM,SAAU3J,GACd,OAAO8O,EAAM5M,KAAKgM,EAAOlO,IAAO,CAAC,CACnC,EACAsG,EAAM,SAAUtG,GACd,OAAO+O,EAAM7M,KAAKgM,EAAOlO,EAC3B,CACF,KAAO,CACL,IAAImP,EAAQV,EAAU,SACtBC,EAAWS,IAAS,EACpBd,EAAM,SAAUrO,EAAIiP,GAClB,GAAIV,EAAUvO,EAAImP,GAAQ,MAAM,IAAIlP,UAAU0O,GAG9C,OAFAM,EAASC,OAASlP,EAClB+H,EAA4B/H,EAAImP,EAAOF,GAChCA,CACT,EACAtF,EAAM,SAAU3J,GACd,OAAOuO,EAAUvO,EAAImP,GAASnP,EAAGmP,GAAS,CAAC,CAC7C,EACA7I,EAAM,SAAUtG,GACd,OAAOuO,EAAUvO,EAAImP,EACvB,CACF,CAEArP,EAAOC,QAAU,CACfsO,IAAKA,EACL1E,IAAKA,EACLrD,IAAKA,EACL8I,QAnDY,SAAUpP,GACtB,OAAOsG,EAAItG,GAAM2J,EAAI3J,GAAMqO,EAAIrO,EAAI,CAAC,EACtC,EAkDEqP,UAhDc,SAAUtM,GACxB,OAAO,SAAU/C,GACf,IAAI6O,EACJ,IAAK1O,EAASH,KAAQ6O,EAAQlF,EAAI3J,IAAKsP,OAASvM,EAC9C,MAAM9C,UAAU,0BAA4B8C,EAAO,aACnD,OAAO8L,CACX,CACF,yBCxBA,IAAIzO,EAAkB,EAAQ,MAC1B+G,EAAY,EAAQ,MAEpBhC,EAAW/E,EAAgB,YAC3BI,EAAiBrJ,MAAMsJ,UAG3BX,EAAOC,QAAU,SAAUC,GACzB,YAAcP,IAAPO,IAAqBmH,EAAUhQ,QAAU6I,GAAMQ,EAAe2E,KAAcnF,EACrF,wBCTA,IAAI0N,EAAU,EAAQ,MAKtB5N,EAAOC,QAAU5I,MAAMwN,SAAW,SAAiB4K,GACjD,MAAuB,SAAhB7B,EAAQ6B,EACjB,wBCPA,IAAItL,EAAQ,EAAQ,MAEhBuL,EAAc,kBAEd/C,EAAW,SAAUgD,EAASC,GAChC,IAAIpc,EAAQqc,EAAKC,EAAUH,IAC3B,OAAOnc,GAASuc,GACZvc,GAASwc,IACW,mBAAbJ,EAA0BzL,EAAMyL,KACrCA,EACR,EAEIE,EAAYnD,EAASmD,UAAY,SAAUG,GAC7C,OAAO7P,OAAO6P,GAAQC,QAAQR,EAAa,KAAKS,aAClD,EAEIN,EAAOlD,EAASkD,KAAO,CAAC,EACxBG,EAASrD,EAASqD,OAAS,IAC3BD,EAAWpD,EAASoD,SAAW,IAEnC/P,EAAOC,QAAU0M,oBCpBjB3M,EAAOC,QAAU,SAAUC,GACzB,MAAqB,iBAAPA,EAAyB,OAAPA,EAA4B,mBAAPA,CACvD,oBCFAF,EAAOC,SAAU,wBCAjB,IAAI+L,EAAa,EAAQ,MACrBoE,EAAoB,EAAQ,MAEhCpQ,EAAOC,QAAUmQ,EAAoB,SAAUlQ,GAC7C,MAAoB,iBAANA,CAChB,EAAI,SAAUA,GACZ,IAAImQ,EAAUrE,EAAW,UACzB,MAAyB,mBAAXqE,GAAyB/J,OAAOpG,aAAemQ,CAC/D,wBCRA,IAAIrL,EAAW,EAAQ,KAEvBhF,EAAOC,QAAU,SAAU0B,GACzB,IAAI2O,EAAe3O,EAAiB,OACpC,QAAqBhC,IAAjB2Q,EACF,OAAOtL,EAASsL,EAAalO,KAAKT,IAAWnO,KAEjD,oCCNA,IAcI0T,EAAmBqJ,EAAmCC,EAdtDrM,EAAQ,EAAQ,MAChB8C,EAAiB,EAAQ,MACzBgB,EAA8B,EAAQ,MACtCzB,EAAM,EAAQ,MACdlG,EAAkB,EAAQ,MAC1B6H,EAAU,EAAQ,MAElB9C,EAAW/E,EAAgB,YAC3B+H,GAAyB,EASzB,GAAGzB,OAGC,SAFN4J,EAAgB,GAAG5J,SAIjB2J,EAAoCtJ,EAAeA,EAAeuJ,OACxBlK,OAAO3F,YAAWuG,EAAoBqJ,GAHlDlI,GAAyB,GAO3D,IAAIoI,EAA8C9Q,MAArBuH,GAAkC/C,GAAM,WACnE,IAAIuM,EAAO,CAAC,EAEZ,OAAOxJ,EAAkB7B,GAAUjD,KAAKsO,KAAUA,CACpD,IAEID,IAAwBvJ,EAAoB,CAAC,GAI3CiB,IAAWsI,GAA4BjK,EAAIU,EAAmB7B,IAClE4C,EAA4Bf,EAAmB7B,GA5BhC,WAAc,OAAO9F,IAAM,IA+B5CS,EAAOC,QAAU,CACfiH,kBAAmBA,EACnBmB,uBAAwBA,qBC5C1BrI,EAAOC,QAAU,CAAC,wBCClB,IAAImE,EAAa,EAAQ,MACrBD,EAAQ,EAAQ,MAGpBnE,EAAOC,UAAYqG,OAAOqK,wBAA0BxM,GAAM,WACxD,IAAIyM,EAAShH,SAGb,OAAQxJ,OAAOwQ,MAAatK,OAAOsK,aAAmBhH,UAEnDA,OAAOyD,MAAQjJ,GAAcA,EAAa,EAC/C,0BCZA,IAAI0F,EAAS,EAAQ,MACjBwE,EAAgB,EAAQ,MAExBQ,EAAUhF,EAAOgF,QAErB9O,EAAOC,QAA6B,mBAAZ6O,GAA0B,cAAc4B,KAAKpC,EAAcQ,0BCLnF,IAAIhF,EAAS,EAAQ,MACjBhE,EAAW,EAAQ,MACnB+K,EAAO,aACPC,EAAc,EAAQ,MAEtBC,EAAYjH,EAAOrQ,SACnBuX,EAAM,cACNrI,EAA2C,IAAlCoI,EAAUD,EAAc,OAAmD,KAApCC,EAAUD,EAAc,QAI5E9Q,EAAOC,QAAU0I,EAAS,SAAkBsH,EAAQgB,GAClD,IAAIC,EAAIL,EAAK/K,EAASmK,IACtB,OAAOc,EAAUG,EAAID,IAAU,IAAOD,EAAIN,KAAKQ,GAAK,GAAK,IAC3D,EAAIH,wBCbJ,IAqDII,EArDAnM,EAAW,EAAQ,KACnBoM,EAAmB,EAAQ,MAC3BC,EAAc,EAAQ,MACtBzC,EAAa,EAAQ,MACrB0C,EAAO,EAAQ,MACfC,EAAwB,EAAQ,MAChC5C,EAAY,EAAQ,MAIpB6C,EAAY,YACZC,EAAS,SACTC,EAAW/C,EAAU,YAErBgD,EAAmB,WAA0B,EAE7CC,EAAY,SAAUC,GACxB,MARO,IAQKJ,EATL,IASmBI,EAAnBC,KAAwCL,EATxC,GAUT,EAGIM,EAA4B,SAAUZ,GACxCA,EAAgBa,MAAMJ,EAAU,KAChCT,EAAgBc,QAChB,IAAIC,EAAOf,EAAgBgB,aAAa7L,OAExC,OADA6K,EAAkB,KACXe,CACT,EA2BIE,EAAkB,WACpB,IACEjB,EAAkB,IAAIkB,cAAc,WACtC,CAAE,MAAOjN,GAAsB,CAC/BgN,EAAkB9hB,SAASgiB,QAAUnB,EACnCY,EAA0BZ,GA7BC,WAE7B,IAEIoB,EAFAC,EAASjB,EAAsB,UAC/BkB,EAAK,OAAShB,EAAS,IAE3B,GAAIe,EAAO9hB,MAST,OARA8hB,EAAO9hB,MAAMC,QAAU,OACvB2gB,EAAKoB,YAAYF,GAEjBA,EAAOG,IAAMvS,OAAOqS,IACpBF,EAAiBC,EAAOI,cAActiB,UACvBuiB,OACfN,EAAeP,MAAMJ,EAAU,sBAC/BW,EAAeN,QACRM,EAAevL,CAE1B,CAcI8L,IACAf,EAA0BZ,GAE5B,IADA,IAAIha,EAASka,EAAYla,OAClBA,YAAiBib,EAAgBZ,GAAWH,EAAYla,IAC/D,OAAOib,GACT,EAEAxD,EAAW8C,IAAY,EAIvB1R,EAAOC,QAAUqG,OAAO/F,QAAU,SAAgBsB,EAAGkR,GACnD,IAAItR,EAQJ,OAPU,OAANI,GACF8P,EAAiBH,GAAaxM,EAASnD,GACvCJ,EAAS,IAAIkQ,EACbA,EAAiBH,GAAa,KAE9B/P,EAAOiQ,GAAY7P,GACdJ,EAAS2Q,SACMzS,IAAfoT,EAA2BtR,EAAS2P,EAAiB3P,EAAQsR,EACtE,wBClFA,IAAItL,EAAc,EAAQ,MACtBjH,EAAuB,EAAQ,MAC/BwE,EAAW,EAAQ,KACnBgO,EAAa,EAAQ,MAKzBhT,EAAOC,QAAUwH,EAAcnB,OAAO8K,iBAAmB,SAA0BvP,EAAGkR,GACpF/N,EAASnD,GAKT,IAJA,IAGI3G,EAHA0L,EAAOoM,EAAWD,GAClB5b,EAASyP,EAAKzP,OACdgL,EAAQ,EAELhL,EAASgL,GAAO3B,EAAqBI,EAAEiB,EAAG3G,EAAM0L,EAAKzE,KAAU4Q,EAAW7X,IACjF,OAAO2G,CACT,wBChBA,IAAI4F,EAAc,EAAQ,MACtBwL,EAAiB,EAAQ,MACzBjO,EAAW,EAAQ,KACnB6C,EAAgB,EAAQ,MAGxBqL,EAAkB5M,OAAOO,eAI7B5G,EAAQW,EAAI6G,EAAcyL,EAAkB,SAAwBrR,EAAGsR,EAAGC,GAIxE,GAHApO,EAASnD,GACTsR,EAAItL,EAAcsL,GAClBnO,EAASoO,GACLH,EAAgB,IAClB,OAAOC,EAAgBrR,EAAGsR,EAAGC,EAC/B,CAAE,MAAOhO,GAAqB,CAC9B,GAAI,QAASgO,GAAc,QAASA,EAAY,MAAMjT,UAAU,2BAEhE,MADI,UAAWiT,IAAYvR,EAAEsR,GAAKC,EAAW5f,OACtCqO,CACT,wBCpBA,IAAI4F,EAAc,EAAQ,MACtB4L,EAA6B,EAAQ,GACrClM,EAA2B,EAAQ,MACnC7E,EAAkB,EAAQ,KAC1BuF,EAAgB,EAAQ,MACxBrB,EAAM,EAAQ,MACdyM,EAAiB,EAAQ,MAGzBK,EAA4BhN,OAAOQ,yBAIvC7G,EAAQW,EAAI6G,EAAc6L,EAA4B,SAAkCzR,EAAGsR,GAGzF,GAFAtR,EAAIS,EAAgBT,GACpBsR,EAAItL,EAAcsL,GACdF,EAAgB,IAClB,OAAOK,EAA0BzR,EAAGsR,EACtC,CAAE,MAAO/N,GAAqB,CAC9B,GAAIoB,EAAI3E,EAAGsR,GAAI,OAAOhM,GAA0BkM,EAA2BzS,EAAEwB,KAAKP,EAAGsR,GAAItR,EAAEsR,GAC7F,wBCnBA,IAAI7Q,EAAkB,EAAQ,KAC1BiR,EAAuB,UAEvBzN,EAAW,CAAC,EAAEA,SAEd0N,EAA+B,iBAAVxgB,QAAsBA,QAAUsT,OAAOmN,oBAC5DnN,OAAOmN,oBAAoBzgB,QAAU,GAWzCgN,EAAOC,QAAQW,EAAI,SAA6BV,GAC9C,OAAOsT,GAAoC,mBAArB1N,EAAS1D,KAAKlC,GAVjB,SAAUA,GAC7B,IACE,OAAOqT,EAAqBrT,EAC9B,CAAE,MAAOkF,GACP,OAAOoO,EAAYzN,OACrB,CACF,CAKM2N,CAAexT,GACfqT,EAAqBjR,EAAgBpC,GAC3C,wBCtBA,IAAIyT,EAAqB,EAAQ,MAG7B/E,EAFc,EAAQ,MAEGxc,OAAO,SAAU,aAK9C6N,EAAQW,EAAI0F,OAAOmN,qBAAuB,SAA6B5R,GACrE,OAAO8R,EAAmB9R,EAAG+M,EAC/B,sBCTA3O,EAAQW,EAAI0F,OAAOqK,4CCDnB,IAAInK,EAAM,EAAQ,MACdtF,EAAW,EAAQ,KACnByN,EAAY,EAAQ,MACpBiF,EAA2B,EAAQ,IAEnClC,EAAW/C,EAAU,YACrBkF,EAAkBvN,OAAO3F,UAK7BX,EAAOC,QAAU2T,EAA2BtN,OAAOW,eAAiB,SAAUpF,GAE5E,OADAA,EAAIX,EAASW,GACT2E,EAAI3E,EAAG6P,GAAkB7P,EAAE6P,GACH,mBAAjB7P,EAAE2C,aAA6B3C,aAAaA,EAAE2C,YAChD3C,EAAE2C,YAAY7D,UACdkB,aAAayE,OAASuN,EAAkB,IACnD,wBCjBA,IAAIrN,EAAM,EAAQ,MACdlE,EAAkB,EAAQ,KAC1BQ,EAAU,gBACV8L,EAAa,EAAQ,MAEzB5O,EAAOC,QAAU,SAAU4F,EAAQiO,GACjC,IAGI5Y,EAHA2G,EAAIS,EAAgBuD,GACpBkB,EAAI,EACJtF,EAAS,GAEb,IAAKvG,KAAO2G,GAAI2E,EAAIoI,EAAY1T,IAAQsL,EAAI3E,EAAG3G,IAAQuG,EAAO7C,KAAK1D,GAEnE,KAAO4Y,EAAM3c,OAAS4P,GAAOP,EAAI3E,EAAG3G,EAAM4Y,EAAM/M,SAC7CjE,EAAQrB,EAAQvG,IAAQuG,EAAO7C,KAAK1D,IAEvC,OAAOuG,CACT,wBChBA,IAAIkS,EAAqB,EAAQ,MAC7BtC,EAAc,EAAQ,MAK1BrR,EAAOC,QAAUqG,OAAOM,MAAQ,SAAc/E,GAC5C,OAAO8R,EAAmB9R,EAAGwP,EAC/B,gCCPA,IAAI0C,EAAwB,CAAC,EAAE5F,qBAE3BrH,EAA2BR,OAAOQ,yBAGlCkN,EAAclN,IAA6BiN,EAAsB3R,KAAK,CAAE,EAAG,GAAK,GAIpFnC,EAAQW,EAAIoT,EAAc,SAA8BC,GACtD,IAAIlH,EAAajG,EAAyBvH,KAAM0U,GAChD,QAASlH,GAAcA,EAAWpF,UACpC,EAAIoM,wBCZJ,IAAI/O,EAAW,EAAQ,KACnBkP,EAAqB,EAAQ,MAMjClU,EAAOC,QAAUqG,OAAO0B,iBAAmB,aAAe,CAAC,EAAI,WAC7D,IAEImM,EAFAC,GAAiB,EACjB1D,EAAO,CAAC,EAEZ,KAEEyD,EAAS7N,OAAOQ,yBAAyBR,OAAO3F,UAAW,aAAa4N,KACjEnM,KAAKsO,EAAM,IAClB0D,EAAiB1D,aAAgBrZ,KACnC,CAAE,MAAO+N,GAAqB,CAC9B,OAAO,SAAwBvD,EAAG4H,GAKhC,OAJAzE,EAASnD,GACTqS,EAAmBzK,GACf2K,EAAgBD,EAAO/R,KAAKP,EAAG4H,GAC9B5H,EAAEwS,UAAY5K,EACZ5H,CACT,CACF,CAjB+D,QAiBzDlC,sCCxBN,IAAIqG,EAAwB,EAAQ,MAChC4H,EAAU,EAAQ,MAItB5N,EAAOC,QAAU+F,EAAwB,CAAC,EAAEF,SAAW,WACrD,MAAO,WAAa8H,EAAQrO,MAAQ,GACtC,wBCRA,IAAIc,EAAW,EAAQ,MAIvBL,EAAOC,QAAU,SAAUqU,EAAOC,GAChC,IAAIrP,EAAIsP,EACR,GAAa,WAATD,GAAqD,mBAAxBrP,EAAKoP,EAAMxO,YAA4BzF,EAASmU,EAAMtP,EAAG9C,KAAKkS,IAAS,OAAOE,EAC/G,GAAmC,mBAAvBtP,EAAKoP,EAAMG,WAA2BpU,EAASmU,EAAMtP,EAAG9C,KAAKkS,IAAS,OAAOE,EACzF,GAAa,WAATD,GAAqD,mBAAxBrP,EAAKoP,EAAMxO,YAA4BzF,EAASmU,EAAMtP,EAAG9C,KAAKkS,IAAS,OAAOE,EAC/G,MAAMrU,UAAU,0CAClB,wBCVA,IAAI6L,EAAa,EAAQ,MACrB0I,EAA4B,EAAQ,MACpCC,EAA8B,EAAQ,MACtC3P,EAAW,EAAQ,KAGvBhF,EAAOC,QAAU+L,EAAW,UAAW,YAAc,SAAiB9L,GACpE,IAAI0G,EAAO8N,EAA0B9T,EAAEoE,EAAS9E,IAC5CyQ,EAAwBgE,EAA4B/T,EACxD,OAAO+P,EAAwB/J,EAAKxU,OAAOue,EAAsBzQ,IAAO0G,CAC1E,uBCVA,IAAIkD,EAAS,EAAQ,MAErB9J,EAAOC,QAAU6J,wBCFjB,IAAIA,EAAS,EAAQ,MACjB7B,EAA8B,EAAQ,MACtCzB,EAAM,EAAQ,MACdiG,EAAY,EAAQ,MACpB6B,EAAgB,EAAQ,MACxBsG,EAAsB,EAAQ,MAE9BC,EAAmBD,EAAoB/K,IACvCiL,EAAuBF,EAAoBtF,QAC3CyF,EAAW3U,OAAOA,QAAQoM,MAAM,WAEnCxM,EAAOC,QAAU,SAAU4B,EAAG3G,EAAK1H,EAAOoZ,GACzC,IAGImC,EAHAiG,IAASpI,KAAYA,EAAQoI,OAC7BC,IAASrI,KAAYA,EAAQjF,WAC7ByF,IAAcR,KAAYA,EAAQQ,YAElB,mBAAT5Z,IACS,iBAAP0H,GAAoBsL,EAAIhT,EAAO,SACxCyU,EAA4BzU,EAAO,OAAQ0H,IAE7C6T,EAAQ+F,EAAqBthB,IAClBmT,SACToI,EAAMpI,OAASoO,EAASG,KAAmB,iBAAPha,EAAkBA,EAAM,MAG5D2G,IAAMiI,GAIEkL,GAEA5H,GAAevL,EAAE3G,KAC3B+Z,GAAS,UAFFpT,EAAE3G,GAIP+Z,EAAQpT,EAAE3G,GAAO1H,EAChByU,EAA4BpG,EAAG3G,EAAK1H,IATnCyhB,EAAQpT,EAAE3G,GAAO1H,EAChBiZ,EAAUvR,EAAK1H,EAUxB,GAAGwa,SAASrN,UAAW,YAAY,WACjC,MAAsB,mBAARpB,MAAsBsV,EAAiBtV,MAAMoH,QAAU2H,EAAc/O,KACrF,sBCrCAS,EAAOC,QAAU,SAAUC,GACzB,GAAUP,MAANO,EAAiB,MAAMC,UAAU,wBAA0BD,GAC/D,OAAOA,CACT,wBCLA,IAAI4J,EAAS,EAAQ,MAErB9J,EAAOC,QAAU,SAAU/E,EAAK1H,GAC9B,IAEE8S,OAAOO,eAAeiD,EAAQ5O,EAAK,CAAE1H,MAAOA,EAAOqN,cAAc,EAAM+G,UAAU,GACnF,CAAE,MAAOxC,GACP0E,EAAO5O,GAAO1H,CAChB,CAAE,OAAOA,CACX,wBCTA,IAAIqT,EAAiB,UACjBL,EAAM,EAAQ,MAGdN,EAFkB,EAAQ,KAEV5F,CAAgB,eAEpCN,EAAOC,QAAU,SAAUC,EAAIiV,EAAKjI,GAC9BhN,IAAOsG,EAAItG,EAAKgN,EAAShN,EAAKA,EAAGS,UAAWuF,IAC9CW,EAAe3G,EAAIgG,EAAe,CAAErF,cAAc,EAAMrN,MAAO2hB,GAEnE,wBCVA,IAAIzG,EAAS,EAAQ,MACjB0G,EAAM,EAAQ,MAEdxO,EAAO8H,EAAO,QAElB1O,EAAOC,QAAU,SAAU/E,GACzB,OAAO0L,EAAK1L,KAAS0L,EAAK1L,GAAOka,EAAIla,GACvC,wBCPA,IAAI4O,EAAS,EAAQ,MACjB2C,EAAY,EAAQ,MAEpB4I,EAAS,qBACTjH,EAAQtE,EAAOuL,IAAW5I,EAAU4I,EAAQ,CAAC,GAEjDrV,EAAOC,QAAUmO,wBCNjB,IAAIjG,EAAU,EAAQ,MAClBiG,EAAQ,EAAQ,OAEnBpO,EAAOC,QAAU,SAAU/E,EAAK1H,GAC/B,OAAO4a,EAAMlT,KAASkT,EAAMlT,QAAiByE,IAAVnM,EAAsBA,EAAQ,CAAC,EACpE,GAAG,WAAY,IAAIoL,KAAK,CACtBsN,QAAS,SACToJ,KAAMnN,EAAU,OAAS,SACzBoN,UAAW,+DCRb,IAAIC,EAAY,EAAQ,MACpB1P,EAAW,EAAQ,MACnB2P,EAAyB,EAAQ,MAGjCjT,EAAe,SAAUkT,GAC3B,OAAO,SAAUhT,EAAOiT,GACtB,IAGIC,EAAOC,EAHP3E,EAAIpL,EAAS2P,EAAuB/S,IACpCoT,EAAWN,EAAUG,GACrBI,EAAO7E,EAAE/Z,OAEb,OAAI2e,EAAW,GAAKA,GAAYC,EAAaL,EAAoB,QAAK/V,GACtEiW,EAAQ1E,EAAE8E,WAAWF,IACN,OAAUF,EAAQ,OAAUE,EAAW,IAAMC,IACtDF,EAAS3E,EAAE8E,WAAWF,EAAW,IAAM,OAAUD,EAAS,MAC1DH,EAAoBxE,EAAE5Y,OAAOwd,GAAYF,EACzCF,EAAoBxE,EAAEnL,MAAM+P,EAAUA,EAAW,GAA+BD,EAAS,OAAlCD,EAAQ,OAAU,IAA0B,KAC3G,CACF,EAEA5V,EAAOC,QAAU,CAGfgW,OAAQzT,GAAa,GAGrBlK,OAAQkK,GAAa,0BC1BvB,IAAIiT,EAAyB,EAAQ,MACjC3P,EAAW,EAAQ,MAGnBoQ,EAAa,IAFC,EAAQ,MAEW,IACjCC,EAAQC,OAAO,IAAMF,EAAaA,EAAa,KAC/CG,EAAQD,OAAOF,EAAaA,EAAa,MAGzC1T,EAAe,SAAUS,GAC3B,OAAO,SAAUP,GACf,IAAIuN,EAASnK,EAAS2P,EAAuB/S,IAG7C,OAFW,EAAPO,IAAUgN,EAASA,EAAOC,QAAQiG,EAAO,KAClC,EAAPlT,IAAUgN,EAASA,EAAOC,QAAQmG,EAAO,KACtCpG,CACT,CACF,EAEAjQ,EAAOC,QAAU,CAGfqW,MAAO9T,EAAa,GAGpB+T,IAAK/T,EAAa,GAGlBqO,KAAMrO,EAAa,0BC3BrB,IAAIgT,EAAY,EAAQ,MAEpBgB,EAAM7a,KAAK6a,IACXC,EAAM9a,KAAK8a,IAKfzW,EAAOC,QAAU,SAAUkC,EAAOhL,GAChC,IAAIuf,EAAUlB,EAAUrT,GACxB,OAAOuU,EAAU,EAAIF,EAAIE,EAAUvf,EAAQ,GAAKsf,EAAIC,EAASvf,EAC/D,uBCVA,IAAI4L,EAAgB,EAAQ,KACxB0S,EAAyB,EAAQ,MAErCzV,EAAOC,QAAU,SAAUC,GACzB,OAAO6C,EAAc0S,EAAuBvV,GAC9C,oBCNA,IAAIyW,EAAOhb,KAAKgb,KACZC,EAAQjb,KAAKib,MAIjB5W,EAAOC,QAAU,SAAU0E,GACzB,OAAOkS,MAAMlS,GAAYA,GAAY,GAAKA,EAAW,EAAIiS,EAAQD,GAAMhS,EACzE,wBCPA,IAAI6Q,EAAY,EAAQ,MAEpBiB,EAAM9a,KAAK8a,IAIfzW,EAAOC,QAAU,SAAU0E,GACzB,OAAOA,EAAW,EAAI8R,EAAIjB,EAAU7Q,GAAW,kBAAoB,CACrE,uBCRA,IAAI8Q,EAAyB,EAAQ,MAIrCzV,EAAOC,QAAU,SAAU0E,GACzB,OAAO2B,OAAOmP,EAAuB9Q,GACvC,wBCNA,IAAItE,EAAW,EAAQ,MACnByW,EAAW,EAAQ,MACnBC,EAAsB,EAAQ,MAG9BC,EAFkB,EAAQ,KAEX1W,CAAgB,eAInCN,EAAOC,QAAU,SAAUqU,EAAOC,GAChC,IAAKlU,EAASiU,IAAUwC,EAASxC,GAAQ,OAAOA,EAChD,IACI7S,EADAwV,EAAe3C,EAAM0C,GAEzB,QAAqBrX,IAAjBsX,EAA4B,CAG9B,QAFatX,IAAT4U,IAAoBA,EAAO,WAC/B9S,EAASwV,EAAa7U,KAAKkS,EAAOC,IAC7BlU,EAASoB,IAAWqV,EAASrV,GAAS,OAAOA,EAClD,MAAMtB,UAAU,0CAClB,CAEA,YADaR,IAAT4U,IAAoBA,EAAO,UACxBwC,EAAoBzC,EAAOC,EACpC,wBCrBA,IAAI2C,EAAc,EAAQ,MACtBJ,EAAW,EAAQ,MAIvB9W,EAAOC,QAAU,SAAU0E,GACzB,IAAIzJ,EAAMgc,EAAYvS,EAAU,UAChC,OAAOmS,EAAS5b,GAAOA,EAAMkF,OAAOlF,EACtC,wBCRA,IAGIwV,EAAO,CAAC,EAEZA,EALsB,EAAQ,KAEVpQ,CAAgB,gBAGd,IAEtBN,EAAOC,QAA2B,eAAjBG,OAAOsQ,yBCPxB,IAAIoG,EAAW,EAAQ,MAEvB9W,EAAOC,QAAU,SAAU0E,GACzB,GAAImS,EAASnS,GAAW,MAAMxE,UAAU,6CACxC,OAAOC,OAAOuE,EAChB,oBCLA,IAAIzS,EAAK,EACLilB,EAAUxb,KAAKyb,SAEnBpX,EAAOC,QAAU,SAAU/E,GACzB,MAAO,UAAYkF,YAAeT,IAARzE,EAAoB,GAAKA,GAAO,QAAUhJ,EAAKilB,GAASrR,SAAS,GAC7F,wBCJA,IAAIuR,EAAgB,EAAQ,MAE5BrX,EAAOC,QAAUoX,IACXzN,OAAOyD,MACkB,iBAAnBzD,OAAOjI,+BCLnB,IAAIrB,EAAkB,EAAQ,MAE9BL,EAAQW,EAAIN,wBCFZ,IAAIwJ,EAAS,EAAQ,MACjB4E,EAAS,EAAQ,MACjBlI,EAAM,EAAQ,MACd4O,EAAM,EAAQ,MACdiC,EAAgB,EAAQ,MACxBjH,EAAoB,EAAQ,MAE5BkH,EAAwB5I,EAAO,OAC/B9E,EAASE,EAAOF,OAChB2N,EAAwBnH,EAAoBxG,EAASA,GAAUA,EAAO4N,eAAiBpC,EAE3FpV,EAAOC,QAAU,SAAUsJ,GAOvB,OANG/C,EAAI8Q,EAAuB/N,KAAW8N,GAAuD,iBAA/BC,EAAsB/N,MACnF8N,GAAiB7Q,EAAIoD,EAAQL,GAC/B+N,EAAsB/N,GAAQK,EAAOL,GAErC+N,EAAsB/N,GAAQgO,EAAsB,UAAYhO,IAE3D+N,EAAsB/N,EACjC,oBClBAvJ,EAAOC,QAAU,mFCAjB,IAAIF,EAAI,EAAQ,MACZoE,EAAQ,EAAQ,MAChBU,EAAU,EAAQ,MAClBxE,EAAW,EAAQ,MACnBa,EAAW,EAAQ,KACnBG,EAAW,EAAQ,MACnBC,EAAiB,EAAQ,MACzB0B,EAAqB,EAAQ,KAC7ByU,EAA+B,EAAQ,MACvCnX,EAAkB,EAAQ,MAC1B8D,EAAa,EAAQ,MAErBsT,EAAuBpX,EAAgB,sBACvCqX,EAAmB,iBACnBC,EAAiC,iCAKjCC,EAA+BzT,GAAc,KAAOD,GAAM,WAC5D,IAAII,EAAQ,GAEZ,OADAA,EAAMmT,IAAwB,EACvBnT,EAAMnS,SAAS,KAAOmS,CAC/B,IAEIuT,EAAkBL,EAA6B,UAE/CM,EAAqB,SAAUlW,GACjC,IAAKxB,EAASwB,GAAI,OAAO,EACzB,IAAImW,EAAanW,EAAE6V,GACnB,YAAsB/X,IAAfqY,IAA6BA,EAAanT,EAAQhD,EAC3D,EAOA9B,EAAE,CAAE/H,OAAQ,QAASyR,OAAO,EAAMC,QALpBmO,IAAiCC,GAKK,CAElD1lB,OAAQ,SAAgBqd,GACtB,IAGI1I,EAAGkR,EAAG9gB,EAAQ+gB,EAAKC,EAHnBtW,EAAIX,EAAS3B,MACb6Y,EAAIpV,EAAmBnB,EAAG,GAC1BwW,EAAI,EAER,IAAKtR,GAAK,EAAG5P,EAASD,UAAUC,OAAQ4P,EAAI5P,EAAQ4P,IAElD,GAAIgR,EADJI,GAAW,IAAPpR,EAAWlF,EAAI3K,UAAU6P,IACF,CAEzB,GAAIsR,GADJH,EAAM7W,EAAS8W,EAAEhhB,SACHwgB,EAAkB,MAAMxX,UAAUyX,GAChD,IAAKK,EAAI,EAAGA,EAAIC,EAAKD,IAAKI,IAASJ,KAAKE,GAAG7W,EAAe8W,EAAGC,EAAGF,EAAEF,GACpE,KAAO,CACL,GAAII,GAAKV,EAAkB,MAAMxX,UAAUyX,GAC3CtW,EAAe8W,EAAGC,IAAKF,EACzB,CAGF,OADAC,EAAEjhB,OAASkhB,EACJD,CACT,uCC1DF,IAAIrY,EAAI,EAAQ,MACZuY,EAAU,eAQdvY,EAAE,CAAE/H,OAAQ,QAASyR,OAAO,EAAMC,QAPC,EAAQ,KAEjB+N,CAA6B,WAKW,CAChE7X,OAAQ,SAAgBqB,GACtB,OAAOqX,EAAQ/Y,KAAM0B,EAAY/J,UAAUC,OAAS,EAAID,UAAU,QAAKyI,EACzE,0BCbF,IAAII,EAAI,EAAQ,MACZ0F,EAAO,EAAQ,MAUnB1F,EAAE,CAAE/H,OAAQ,QAASmV,MAAM,EAAMzD,QATC,EAAQ,IAEf6O,EAA4B,SAAUC,GAE/DnhB,MAAMoO,KAAK+S,EACb,KAIgE,CAC9D/S,KAAMA,uCCXR,IAAInD,EAAkB,EAAQ,KAC1BmW,EAAmB,EAAQ,MAC3BpR,EAAY,EAAQ,MACpBuN,EAAsB,EAAQ,MAC9B8D,EAAiB,EAAQ,KAEzBC,EAAiB,iBACjBC,EAAmBhE,EAAoBrG,IACvCsG,EAAmBD,EAAoBrF,UAAUoJ,GAYrD3Y,EAAOC,QAAUyY,EAAerhB,MAAO,SAAS,SAAUwhB,EAAUC,GAClEF,EAAiBrZ,KAAM,CACrBiQ,KAAMmJ,EACN3gB,OAAQsK,EAAgBuW,GACxB1W,MAAO,EACP2W,KAAMA,GAIV,IAAG,WACD,IAAI/J,EAAQ8F,EAAiBtV,MACzBvH,EAAS+W,EAAM/W,OACf8gB,EAAO/J,EAAM+J,KACb3W,EAAQ4M,EAAM5M,QAClB,OAAKnK,GAAUmK,GAASnK,EAAOb,QAC7B4X,EAAM/W,YAAS2H,EACR,CAAEnM,WAAOmM,EAAW0C,MAAM,IAEvB,QAARyW,EAAuB,CAAEtlB,MAAO2O,EAAOE,MAAM,GACrC,UAARyW,EAAyB,CAAEtlB,MAAOwE,EAAOmK,GAAQE,MAAM,GACpD,CAAE7O,MAAO,CAAC2O,EAAOnK,EAAOmK,IAASE,MAAM,EAChD,GAAG,UAKHgF,EAAU0R,UAAY1R,EAAUhQ,MAGhCohB,EAAiB,QACjBA,EAAiB,UACjBA,EAAiB,8CCnDjB,IAAI1Y,EAAI,EAAQ,MACZM,EAAW,EAAQ,MACnBwE,EAAU,EAAQ,MAClBtC,EAAkB,EAAQ,MAC1BlB,EAAW,EAAQ,MACnBiB,EAAkB,EAAQ,KAC1BhB,EAAiB,EAAQ,MACzBhB,EAAkB,EAAQ,MAG1B0Y,EAF+B,EAAQ,KAEjBvB,CAA6B,SAEnDpT,EAAU/D,EAAgB,WAC1B2Y,EAAc,GAAGlT,MACjByQ,EAAM7a,KAAK6a,IAKfzW,EAAE,CAAE/H,OAAQ,QAASyR,OAAO,EAAMC,QAASsP,GAAuB,CAChEjT,MAAO,SAAeuQ,EAAOC,GAC3B,IAKI2C,EAAazX,EAAQ4W,EALrBxW,EAAIS,EAAgB/C,MACpBpI,EAASkK,EAASQ,EAAE1K,QACpB8gB,EAAI1V,EAAgB+T,EAAOnf,GAC3BgiB,EAAM5W,OAAwB5C,IAAR4W,EAAoBpf,EAASof,EAAKpf,GAG5D,GAAI0N,EAAQhD,KAGgB,mBAF1BqX,EAAcrX,EAAE2C,cAEyB0U,IAAgB7hB,QAASwN,EAAQqU,EAAYvY,WAE3EN,EAAS6Y,IAEE,QADpBA,EAAcA,EAAY7U,MACA6U,OAAcvZ,GAHxCuZ,OAAcvZ,EAKZuZ,IAAgB7hB,YAAyBsI,IAAhBuZ,GAC3B,OAAOD,EAAY7W,KAAKP,EAAGoW,EAAGkB,GAIlC,IADA1X,EAAS,SAAqB9B,IAAhBuZ,EAA4B7hB,MAAQ6hB,GAAa1C,EAAI2C,EAAMlB,EAAG,IACvEI,EAAI,EAAGJ,EAAIkB,EAAKlB,IAAKI,IAASJ,KAAKpW,GAAGP,EAAeG,EAAQ4W,EAAGxW,EAAEoW,IAEvE,OADAxW,EAAOtK,OAASkhB,EACT5W,CACT,0BC7CF,IAAIgG,EAAc,EAAQ,MACtBZ,EAAiB,UAEjBuS,EAAoBpL,SAASrN,UAC7B0Y,EAA4BD,EAAkBtT,SAC9CwT,EAAS,wBACT9R,EAAO,OAIPC,KAAiBD,KAAQ4R,IAC3BvS,EAAeuS,EAAmB5R,EAAM,CACtC3G,cAAc,EACdgJ,IAAK,WACH,IACE,OAAOwP,EAA0BjX,KAAK7C,MAAM0M,MAAMqN,GAAQ,EAC5D,CAAE,MAAOlU,GACP,MAAO,EACT,CACF,0BCnBJ,IAAIY,EAAwB,EAAQ,MAChCkC,EAAW,EAAQ,MACnBpC,EAAW,EAAQ,MAIlBE,GACHkC,EAAS5B,OAAO3F,UAAW,WAAYmF,EAAU,CAAEkP,QAAQ,0BCP7D,IAAIjV,EAAI,EAAQ,MACZwZ,EAAyB,EAAQ,MAIrCxZ,EAAE,CAAE+J,QAAQ,EAAMJ,OAAQjQ,UAAY8f,GAA0B,CAC9D9f,SAAU8f,uCCLZ,IAAIjhB,EAAS,eACTwN,EAAW,EAAQ,MACnB8O,EAAsB,EAAQ,MAC9B8D,EAAiB,EAAQ,KAEzBc,EAAkB,kBAClBZ,EAAmBhE,EAAoBrG,IACvCsG,EAAmBD,EAAoBrF,UAAUiK,GAIrDd,EAAetY,OAAQ,UAAU,SAAUyY,GACzCD,EAAiBrZ,KAAM,CACrBiQ,KAAMgK,EACNvJ,OAAQnK,EAAS+S,GACjB1W,MAAO,GAIX,IAAG,WACD,IAGIsX,EAHA1K,EAAQ8F,EAAiBtV,MACzB0Q,EAASlB,EAAMkB,OACf9N,EAAQ4M,EAAM5M,MAElB,OAAIA,GAAS8N,EAAO9Y,OAAe,CAAE3D,WAAOmM,EAAW0C,MAAM,IAC7DoX,EAAQnhB,EAAO2X,EAAQ9N,GACvB4M,EAAM5M,OAASsX,EAAMtiB,OACd,CAAE3D,MAAOimB,EAAOpX,MAAM,GAC/B,uCC1BA,IAAItC,EAAI,EAAQ,MACZ0H,EAAc,EAAQ,MACtBqC,EAAS,EAAQ,MACjBtD,EAAM,EAAQ,MACdnG,EAAW,EAAQ,MACnBwG,EAAiB,UACjB6F,EAA4B,EAAQ,KAEpCgN,EAAe5P,EAAOF,OAE1B,GAAInC,GAAsC,mBAAhBiS,MAAiC,gBAAiBA,EAAa/Y,iBAExDhB,IAA/B+Z,IAAeC,aACd,CACD,IAAIC,EAA8B,CAAC,EAE/BC,EAAgB,WAClB,IAAIF,EAAcziB,UAAUC,OAAS,QAAsBwI,IAAjBzI,UAAU,QAAmByI,EAAYS,OAAOlJ,UAAU,IAChGuK,EAASlC,gBAAgBsa,EACzB,IAAIH,EAAaC,QAEDha,IAAhBga,EAA4BD,IAAiBA,EAAaC,GAE9D,MADoB,KAAhBA,IAAoBC,EAA4BnY,IAAU,GACvDA,CACT,EACAiL,EAA0BmN,EAAeH,GACzC,IAAII,EAAkBD,EAAclZ,UAAY+Y,EAAa/Y,UAC7DmZ,EAAgBtV,YAAcqV,EAE9B,IAAIE,EAAiBD,EAAgBhU,SACjCkU,EAAyC,gBAAhC5Z,OAAOsZ,EAAa,SAC7BO,EAAS,wBACbpT,EAAeiT,EAAiB,cAAe,CAC7CjZ,cAAc,EACdgJ,IAAK,WACH,IAAI+G,EAASvQ,EAASd,MAAQA,KAAKkV,UAAYlV,KAC3C0Q,EAAS8J,EAAe3X,KAAKwO,GACjC,GAAIpK,EAAIoT,EAA6BhJ,GAAS,MAAO,GACrD,IAAIsJ,EAAOF,EAAS/J,EAAOlK,MAAM,GAAI,GAAKkK,EAAOC,QAAQ+J,EAAQ,MACjE,MAAgB,KAATC,OAAcva,EAAYua,CACnC,IAGFna,EAAE,CAAE+J,QAAQ,EAAMJ,QAAQ,GAAQ,CAChCE,OAAQiQ,GAEZ,wBCjD4B,EAAQ,KAIpCM,CAAsB,+CCHtB,IAAIpa,EAAI,EAAQ,MACZ+J,EAAS,EAAQ,MACjBkC,EAAa,EAAQ,MACrB7D,EAAU,EAAQ,MAClBV,EAAc,EAAQ,MACtB4P,EAAgB,EAAQ,MACxBlT,EAAQ,EAAQ,MAChBqC,EAAM,EAAQ,MACd3B,EAAU,EAAQ,MAClBxE,EAAW,EAAQ,MACnByW,EAAW,EAAQ,MACnB9R,EAAW,EAAQ,KACnB9D,EAAW,EAAQ,KACnBoB,EAAkB,EAAQ,KAC1BuF,EAAgB,EAAQ,MACxBuS,EAAY,EAAQ,MACpBjT,EAA2B,EAAQ,MACnCkT,EAAqB,EAAQ,MAC7BrH,EAAa,EAAQ,MACrB0B,EAA4B,EAAQ,MACpC4F,EAA8B,EAAQ,MACtC3F,EAA8B,EAAQ,MACtCjO,EAAiC,EAAQ,MACzClG,EAAuB,EAAQ,MAC/B6S,EAA6B,EAAQ,GACrCpL,EAA8B,EAAQ,MACtCC,EAAW,EAAQ,MACnBwG,EAAS,EAAQ,MACjBC,EAAY,EAAQ,MACpBC,EAAa,EAAQ,MACrBwG,EAAM,EAAQ,MACd9U,EAAkB,EAAQ,MAC1BqJ,EAA+B,EAAQ,MACvCwQ,EAAwB,EAAQ,MAChC/S,EAAiB,EAAQ,MACzBwN,EAAsB,EAAQ,MAC9B9T,EAAW,gBAEXyZ,EAAS5L,EAAU,UACnB6L,EAAS,SACThJ,EAAY,YACZwF,EAAe1W,EAAgB,eAC/BsY,EAAmBhE,EAAoBrG,IACvCsG,EAAmBD,EAAoBrF,UAAUiL,GACjD3G,EAAkBvN,OAAOkL,GACzBnB,EAAUvG,EAAOF,OACjB6Q,EAAazO,EAAW,OAAQ,aAChC0O,EAAiChU,EAA+B9F,EAChE+Z,EAAuBna,EAAqBI,EAC5Cga,EAA4BN,EAA4B1Z,EACxDia,EAA6BxH,EAA2BzS,EACxDka,EAAapM,EAAO,WACpBqM,GAAyBrM,EAAO,cAChCsM,GAAyBtM,EAAO,6BAChCuM,GAAyBvM,EAAO,6BAChC4I,GAAwB5I,EAAO,OAC/BwM,GAAUpR,EAAOoR,QAEjBC,IAAcD,KAAYA,GAAQ1J,KAAe0J,GAAQ1J,GAAW4J,UAGpEC,GAAsB5T,GAAetD,GAAM,WAC7C,OAES,GAFFkW,EAAmBM,EAAqB,CAAC,EAAG,IAAK,CACtD9Q,IAAK,WAAc,OAAO8Q,EAAqBpb,KAAM,IAAK,CAAE/L,MAAO,IAAK+Z,CAAG,KACzEA,CACN,IAAK,SAAU1L,EAAGsR,EAAGC,GACnB,IAAIkI,EAA4BZ,EAA+B7G,EAAiBV,GAC5EmI,UAAkCzH,EAAgBV,GACtDwH,EAAqB9Y,EAAGsR,EAAGC,GACvBkI,GAA6BzZ,IAAMgS,GACrC8G,EAAqB9G,EAAiBV,EAAGmI,EAE7C,EAAIX,EAEAY,GAAO,SAAUnV,EAAKuT,GACxB,IAAI/I,EAASkK,EAAW1U,GAAOiU,EAAmBhK,EAAQmB,IAO1D,OANAoH,EAAiBhI,EAAQ,CACvBpB,KAAMgL,EACNpU,IAAKA,EACLuT,YAAaA,IAEVlS,IAAamJ,EAAO+I,YAAcA,GAChC/I,CACT,EAEIsC,GAAkB,SAAwBrR,EAAGsR,EAAGC,GAC9CvR,IAAMgS,GAAiBX,GAAgB6H,GAAwB5H,EAAGC,GACtEpO,EAASnD,GACT,IAAI3G,EAAM2M,EAAcsL,GAExB,OADAnO,EAASoO,GACL5M,EAAIsU,EAAY5f,IACbkY,EAAWzL,YAIVnB,EAAI3E,EAAG0Y,IAAW1Y,EAAE0Y,GAAQrf,KAAM2G,EAAE0Y,GAAQrf,IAAO,GACvDkY,EAAaiH,EAAmBjH,EAAY,CAAEzL,WAAYR,EAAyB,GAAG,OAJjFX,EAAI3E,EAAG0Y,IAASI,EAAqB9Y,EAAG0Y,EAAQpT,EAAyB,EAAG,CAAC,IAClFtF,EAAE0Y,GAAQrf,IAAO,GAIVmgB,GAAoBxZ,EAAG3G,EAAKkY,IAC9BuH,EAAqB9Y,EAAG3G,EAAKkY,EACxC,EAEIoI,GAAoB,SAA0B3Z,EAAGkR,GACnD/N,EAASnD,GACT,IAAI4Z,EAAanZ,EAAgByQ,GAC7BnM,EAAOoM,EAAWyI,GAAYrpB,OAAOspB,GAAuBD,IAIhE,OAHA3a,EAAS8F,GAAM,SAAU1L,GAClBuM,IAAesM,GAAsB3R,KAAKqZ,EAAYvgB,IAAMgY,GAAgBrR,EAAG3G,EAAKugB,EAAWvgB,GACtG,IACO2G,CACT,EAMIkS,GAAwB,SAA8BE,GACxD,IAAId,EAAItL,EAAcoM,GAClBtM,EAAakT,EAA2BzY,KAAK7C,KAAM4T,GACvD,QAAI5T,OAASsU,GAAmBrN,EAAIsU,EAAY3H,KAAO3M,EAAIuU,GAAwB5H,QAC5ExL,IAAenB,EAAIjH,KAAM4T,KAAO3M,EAAIsU,EAAY3H,IAAM3M,EAAIjH,KAAMgb,IAAWhb,KAAKgb,GAAQpH,KAAKxL,EACtG,EAEI2L,GAA4B,SAAkCzR,EAAGsR,GACnE,IAAIjT,EAAKoC,EAAgBT,GACrB3G,EAAM2M,EAAcsL,GACxB,GAAIjT,IAAO2T,IAAmBrN,EAAIsU,EAAY5f,IAASsL,EAAIuU,GAAwB7f,GAAnF,CACA,IAAI6R,EAAa2N,EAA+Bxa,EAAIhF,GAIpD,OAHI6R,IAAcvG,EAAIsU,EAAY5f,IAAUsL,EAAItG,EAAIqa,IAAWra,EAAGqa,GAAQrf,KACxE6R,EAAWpF,YAAa,GAEnBoF,CALwF,CAMjG,EAEIwG,GAAuB,SAA6B1R,GACtD,IAAIiS,EAAQ8G,EAA0BtY,EAAgBT,IAClDJ,EAAS,GAIb,OAHAX,EAASgT,GAAO,SAAU5Y,GACnBsL,EAAIsU,EAAY5f,IAASsL,EAAIoI,EAAY1T,IAAMuG,EAAO7C,KAAK1D,EAClE,IACOuG,CACT,EAEIia,GAAyB,SAA+B7Z,GAC1D,IAAI8Z,EAAsB9Z,IAAMgS,EAC5BC,EAAQ8G,EAA0Be,EAAsBZ,GAAyBzY,EAAgBT,IACjGJ,EAAS,GAMb,OALAX,EAASgT,GAAO,SAAU5Y,IACpBsL,EAAIsU,EAAY5f,IAAUygB,IAAuBnV,EAAIqN,EAAiB3Y,IACxEuG,EAAO7C,KAAKkc,EAAW5f,GAE3B,IACOuG,CACT,EAIK4V,IACHhH,EAAU,WACR,GAAI9Q,gBAAgB8Q,EAAS,MAAMlQ,UAAU,+BAC7C,IAAIwZ,EAAeziB,UAAUC,aAA2BwI,IAAjBzI,UAAU,GAA+BkjB,EAAUljB,UAAU,SAAhCyI,EAChEyG,EAAMgP,EAAIuE,GACVxF,EAAS,SAAU3gB,GACjB+L,OAASsU,GAAiBM,EAAO/R,KAAK2Y,GAAwBvnB,GAC9DgT,EAAIjH,KAAMgb,IAAW/T,EAAIjH,KAAKgb,GAASnU,KAAM7G,KAAKgb,GAAQnU,IAAO,GACrEiV,GAAoB9b,KAAM6G,EAAKe,EAAyB,EAAG3T,GAC7D,EAEA,OADIiU,GAAe0T,IAAYE,GAAoBxH,EAAiBzN,EAAK,CAAEvF,cAAc,EAAM0N,IAAK4F,IAC7FoH,GAAKnV,EAAKuT,EACnB,EAEAzR,EAASmI,EAAQmB,GAAY,YAAY,WACvC,OAAOqD,EAAiBtV,MAAM6G,GAChC,IAEA8B,EAASmI,EAAS,iBAAiB,SAAUsJ,GAC3C,OAAO4B,GAAKnG,EAAIuE,GAAcA,EAChC,IAEAtG,EAA2BzS,EAAImT,GAC/BvT,EAAqBI,EAAIsS,GACzBxM,EAA+B9F,EAAI0S,GACnCoB,EAA0B9T,EAAI0Z,EAA4B1Z,EAAI2S,GAC9DoB,EAA4B/T,EAAI8a,GAEhC/R,EAA6B/I,EAAI,SAAU2I,GACzC,OAAOgS,GAAKjb,EAAgBiJ,GAAOA,EACrC,EAEI9B,IAEFkT,EAAqBtK,EAAQmB,GAAY,cAAe,CACtD3Q,cAAc,EACdgJ,IAAK,WACH,OAAOgL,EAAiBtV,MAAMoa,WAChC,IAEGxR,GACHD,EAAS2L,EAAiB,uBAAwBE,GAAuB,CAAEiB,QAAQ,MAKzFjV,EAAE,CAAE+J,QAAQ,EAAMyR,MAAM,EAAM7R,QAAS2N,EAAehK,MAAOgK,GAAiB,CAC5EzN,OAAQyG,IAGVvP,EAASkS,EAAWsE,KAAwB,SAAU/N,GACpD4Q,EAAsB5Q,EACxB,IAEAxJ,EAAE,CAAE/H,OAAQwiB,EAAQrN,MAAM,EAAMzD,QAAS2N,GAAiB,CAGxD,IAAO,SAAUnc,GACf,IAAI+U,EAASmK,EAAUlf,GACvB,GAAIsL,EAAIwU,GAAwB/K,GAAS,OAAO+K,GAAuB/K,GACvE,IAAIW,EAASP,EAAQJ,GAGrB,OAFA+K,GAAuB/K,GAAUW,EACjCqK,GAAuBrK,GAAUX,EAC1BW,CACT,EAGAgL,OAAQ,SAAgBC,GACtB,IAAK/E,EAAS+E,GAAM,MAAM1b,UAAU0b,EAAM,oBAC1C,GAAIrV,EAAIyU,GAAwBY,GAAM,OAAOZ,GAAuBY,EACtE,EACAC,UAAW,WAAcX,IAAa,CAAM,EAC5CY,UAAW,WAAcZ,IAAa,CAAO,IAG/Cpb,EAAE,CAAE/H,OAAQ,SAAUmV,MAAM,EAAMzD,QAAS2N,EAAehK,MAAO5F,GAAe,CAG9ElH,OA3HY,SAAgBsB,EAAGkR,GAC/B,YAAsBpT,IAAfoT,EAA2BsH,EAAmBxY,GAAK2Z,GAAkBnB,EAAmBxY,GAAIkR,EACrG,EA4HElM,eAAgBqM,GAGhB9B,iBAAkBoK,GAGlB1U,yBAA0BwM,KAG5BvT,EAAE,CAAE/H,OAAQ,SAAUmV,MAAM,EAAMzD,QAAS2N,GAAiB,CAG1D5D,oBAAqBF,GAGrB5C,sBAAuB+K,KAKzB3b,EAAE,CAAE/H,OAAQ,SAAUmV,MAAM,EAAMzD,OAAQvF,GAAM,WAAcwQ,EAA4B/T,EAAE,EAAI,KAAM,CACpG+P,sBAAuB,SAA+BzQ,GACpD,OAAOyU,EAA4B/T,EAAEM,EAAShB,GAChD,IAKEua,GAWF1a,EAAE,CAAE/H,OAAQ,OAAQmV,MAAM,EAAMzD,QAVH2N,GAAiBlT,GAAM,WAClD,IAAIyM,EAASP,IAEb,MAA+B,UAAxBoK,EAAW,CAAC7J,KAEe,MAA7B6J,EAAW,CAAElN,EAAGqD,KAEc,MAA9B6J,EAAWnU,OAAOsK,GACzB,KAEiE,CAE/DoL,UAAW,SAAmB9b,EAAI+b,EAAUC,GAI1C,IAHA,IAEIC,EAFA/kB,EAAO,CAAC8I,GACRiC,EAAQ,EAELjL,UAAUC,OAASgL,GAAO/K,EAAKwH,KAAK1H,UAAUiL,MAErD,GADAga,EAAYF,GACP5b,EAAS4b,SAAoBtc,IAAPO,KAAoB4W,EAAS5W,GAMxD,OALK2E,EAAQoX,KAAWA,EAAW,SAAU/gB,EAAK1H,GAEhD,GADwB,mBAAb2oB,IAAyB3oB,EAAQ2oB,EAAU/Z,KAAK7C,KAAMrE,EAAK1H,KACjEsjB,EAAStjB,GAAQ,OAAOA,CAC/B,GACA4D,EAAK,GAAK6kB,EACHxB,EAAWhjB,MAAM,KAAML,EAChC,IAMCiZ,EAAQmB,GAAWwF,IACtB/O,EAA4BoI,EAAQmB,GAAYwF,EAAc3G,EAAQmB,GAAWiD,SAInFrN,EAAeiJ,EAASmK,GAExB5L,EAAW2L,IAAU,wBCjTrB,IAAIzQ,EAAS,EAAQ,MACjBsS,EAAe,EAAQ,KACvB7jB,EAAU,EAAQ,MAClB0P,EAA8B,EAAQ,MAE1C,IAAK,IAAIoU,KAAmBD,EAAc,CACxC,IAAIE,EAAaxS,EAAOuS,GACpBE,EAAsBD,GAAcA,EAAW3b,UAEnD,GAAI4b,GAAuBA,EAAoBhkB,UAAYA,EAAS,IAClE0P,EAA4BsU,EAAqB,UAAWhkB,EAC9D,CAAE,MAAO6M,GACPmX,EAAoBhkB,QAAUA,CAChC,CACF,wBCdA,IAAIuR,EAAS,EAAQ,MACjBsS,EAAe,EAAQ,KACvBI,EAAuB,EAAQ,MAC/BvU,EAA8B,EAAQ,MACtC3H,EAAkB,EAAQ,MAE1B+E,EAAW/E,EAAgB,YAC3B4F,EAAgB5F,EAAgB,eAChCmc,EAAcD,EAAqBhT,OAEvC,IAAK,IAAI6S,KAAmBD,EAAc,CACxC,IAAIE,EAAaxS,EAAOuS,GACpBE,EAAsBD,GAAcA,EAAW3b,UACnD,GAAI4b,EAAqB,CAEvB,GAAIA,EAAoBlX,KAAcoX,EAAa,IACjDxU,EAA4BsU,EAAqBlX,EAAUoX,EAC7D,CAAE,MAAOrX,GACPmX,EAAoBlX,GAAYoX,CAClC,CAIA,GAHKF,EAAoBrW,IACvB+B,EAA4BsU,EAAqBrW,EAAemW,GAE9DD,EAAaC,GAAkB,IAAK,IAAI/X,KAAekY,EAEzD,GAAID,EAAoBjY,KAAiBkY,EAAqBlY,GAAc,IAC1E2D,EAA4BsU,EAAqBjY,EAAakY,EAAqBlY,GACrF,CAAE,MAAOc,GACPmX,EAAoBjY,GAAekY,EAAqBlY,EAC1D,CAEJ,CACF,qDChCsC,IAAmBoY,QAAnC,oBAAdC,YAAiDD,QAIhD,WAAe,aAEtB,IAAIE,MAAQ,6BACRC,aAAe,GACfC,eAAgB,EAChBC,qBAAuB,OAEvBC,aAAe,SAAsBC,GACvCH,gBAAkBG,CACpB,EAEIC,aAAe,WACjB,OAAOJ,aACT,EAEIK,gBAAkB,SAAyB3pB,GAC7CqpB,aAAerpB,CACjB,EAEI4pB,gBAAkB,WACpB,OAAOP,YACT,EAEA,SAASQ,UAAU7N,GAEjB,OAAOlf,SAAS0Z,cAAcwF,EAChC,CAEA,SAAS8N,gBAAgBC,EAASC,GAChC,IAAIzW,EAEA0W,EADAvF,EAAMqF,EAAQpmB,OAGlB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAGxB,IAAK,IAAI2W,KAFTD,EAAkBF,EAAQxW,GAAGpG,UAGvB2F,OAAO3F,UAAUsN,eAAe7L,KAAKqb,EAAiBC,KAAOF,EAAY7c,UAAU+c,GAAQD,EAAgBC,GAGrH,CAEA,SAASC,cAAc9X,EAAQ+X,GAC7B,OAAOtX,OAAOQ,yBAAyBjB,EAAQ+X,EACjD,CAEA,SAASC,oBAAoBld,GAC3B,SAASmd,IAAiB,CAG1B,OADAA,EAAcnd,UAAYA,EACnBmd,CACT,CAGA,IAAIC,uBAAyB,WAC3B,SAASC,EAAgBC,GACvB1e,KAAK2e,OAAS,GACd3e,KAAK0e,aAAeA,EACpB1e,KAAK4e,QAAU,EACf5e,KAAK6e,UAAW,CAClB,CAoFA,OAlFAJ,EAAgBrd,UAAY,CAC1B0d,SAAU,SAAkBC,GAC1B/e,KAAK2e,OAAOtf,KAAK0f,EACnB,EACA1qB,MAAO,WACL,IAAImT,EACAmR,EAAM3Y,KAAK2e,OAAO/mB,OAEtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK2e,OAAOnX,GAAGnT,OAEnB,EACA2qB,OAAQ,WACN,IAAIxX,EACAmR,EAAM3Y,KAAK2e,OAAO/mB,OAEtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK2e,OAAOnX,GAAGwX,QAEnB,EACAC,QAAS,SAAiBC,GACxB,IAAI1X,EACAmR,EAAM3Y,KAAK2e,OAAO/mB,OAEtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK2e,OAAOnX,GAAGyX,QAAQC,EAE3B,EACAC,YAAa,SAAqBC,GAChC,OAAIpf,KAAK0e,aACA1e,KAAK0e,aAAaU,GAGvB3rB,OAAO4rB,KACF,IAAI5rB,OAAO4rB,KAAK,CACrBjM,IAAK,CAACgM,KAIH,CACLE,WAAW,EACX/qB,KAAM,WACJyL,KAAKsf,WAAY,CACnB,EACAC,KAAM,WACJvf,KAAKsf,WAAY,CACnB,EACAE,QAAS,WAAoB,EAC7BC,KAAM,WAAiB,EACvBvrB,UAAW,WAAsB,EAErC,EACAwrB,gBAAiB,SAAyBhB,GACxC1e,KAAK0e,aAAeA,CACtB,EACAxqB,UAAW,SAAmBD,GAC5B+L,KAAK4e,QAAU3qB,EAEf+L,KAAK2f,eACP,EACAC,KAAM,WACJ5f,KAAK6e,UAAW,EAEhB7e,KAAK2f,eACP,EACAE,OAAQ,WACN7f,KAAK6e,UAAW,EAEhB7e,KAAK2f,eACP,EACAG,UAAW,WACT,OAAO9f,KAAK4e,OACd,EACAe,cAAe,WACb,IAAInY,EACAmR,EAAM3Y,KAAK2e,OAAO/mB,OAEtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK2e,OAAOnX,GAAGuY,OAAO/f,KAAK4e,SAAW5e,KAAK6e,SAAW,EAAI,GAE9D,GAEK,WACL,OAAO,IAAIJ,CACb,CACF,CA7F6B,GA+FzBuB,iBAAmB,WACrB,SAASC,EAAmBhQ,EAAM0I,GAChC,IAEI1kB,EAFAuT,EAAI,EACJ0Y,EAAM,GAGV,OAAQjQ,GACN,IAAK,QACL,IAAK,SACHhc,EAAQ,EACR,MAEF,QACEA,EAAQ,IAIZ,IAAKuT,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB0Y,EAAI7gB,KAAKpL,GAGX,OAAOisB,CACT,CAkBA,MAAiC,mBAAtBC,mBAA4D,mBAAjBC,aAhBtD,SAAiCnQ,EAAM0I,GACrC,MAAa,YAAT1I,EACK,IAAImQ,aAAazH,GAGb,UAAT1I,EACK,IAAIoQ,WAAW1H,GAGX,WAAT1I,EACK,IAAIkQ,kBAAkBxH,GAGxBsH,EAAmBhQ,EAAM0I,EAClC,EAMOsH,CACT,CA7CuB,GA+CvB,SAASK,iBAAiB3H,GACxB,OAAO7gB,MAAMI,MAAM,KAAM,CACvBN,OAAQ+gB,GAEZ,CAEA,SAAS4H,UAAUC,GAAuV,OAA1OD,UAArD,mBAAXlW,QAAoD,iBAApBA,OAAOjI,SAAqC,SAAiBoe,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYD,UAAUC,EAAM,CACjY,IAAIC,iBAAkB,EAClBC,kBAAoB,KACpBC,sBAAwB,KACxBC,WAAa,GACbC,SAAW,iCAAiC1P,KAAKiM,UAAUxQ,WAC3DkU,oBAAqB,EACrBC,MAAQ3kB,KAAK4kB,IACbC,OAAS7kB,KAAK8kB,KACdC,QAAU/kB,KAAKib,MACf+J,MAAQhlB,KAAK6a,IACboK,MAAQjlB,KAAK8a,IACboK,OAAS,CAAC,EAYd,SAASC,qBACP,MAAO,CAAC,CACV,EAZA,WACE,IACI/Z,EADAga,EAAgB,CAAC,MAAO,OAAQ,QAAS,OAAQ,QAAS,OAAQ,QAAS,QAAS,OAAQ,OAAQ,QAAS,QAAS,MAAO,OAAQ,MAAO,QAAS,SAAU,QAAS,OAAQ,MAAO,QAAS,OAAQ,QAAS,MAAO,MAAO,MAAO,SAAU,QAAS,OAAQ,MAAO,OAAQ,OAAQ,MAAO,OAAQ,QAAS,IAAK,OAAQ,MAAO,SAAU,QAAS,KAAM,UAAW,SAExW7I,EAAM6I,EAAc5pB,OAExB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB8Z,OAAOE,EAAcha,IAAMpL,KAAKolB,EAAcha,GAEjD,CARD,GAcA8Z,OAAOzJ,OAASzb,KAAKyb,OAErByJ,OAAOjlB,IAAM,SAAU4Y,GAGrB,GAAe,WAFFsL,UAAUtL,IAEIA,EAAIrd,OAAQ,CACrC,IACI4P,EADAia,EAASnB,iBAAiBrL,EAAIrd,QAE9B+gB,EAAM1D,EAAIrd,OAEd,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBia,EAAOja,GAAKpL,KAAKC,IAAI4Y,EAAIzN,IAG3B,OAAOia,CACT,CAEA,OAAOrlB,KAAKC,IAAI4Y,EAClB,EAEA,IAAIyM,qBAAuB,IACvBC,UAAYvlB,KAAKwlB,GAAK,IACtBC,YAAc,MAElB,SAASC,YAAYpE,GACnBoD,qBAAuBpD,CACzB,CAEA,SAASqE,MAAM9tB,GACb,OAAI6sB,mBACK1kB,KAAK4lB,MAAM/tB,GAGbA,CACT,CAEA,SAASguB,SAASC,GAChBA,EAAQ/wB,MAAMolB,SAAW,WACzB2L,EAAQ/wB,MAAMqJ,IAAM,EACpB0nB,EAAQ/wB,MAAMoJ,KAAO,EACrB2nB,EAAQ/wB,MAAMC,QAAU,QACxB8wB,EAAQ/wB,MAAMgxB,gBAAkB,MAChCD,EAAQ/wB,MAAMixB,sBAAwB,MACtCF,EAAQ/wB,MAAMkxB,mBAAqB,UACnCH,EAAQ/wB,MAAMmxB,yBAA2B,UACzCJ,EAAQ/wB,MAAMoxB,eAAiB,cAC/BL,EAAQ/wB,MAAMqxB,qBAAuB,cACrCN,EAAQ/wB,MAAMsxB,kBAAoB,aACpC,CAEA,SAASC,kBAAkBzS,EAAM0S,EAAaC,EAAWC,GACvD7iB,KAAKiQ,KAAOA,EACZjQ,KAAK2iB,YAAcA,EACnB3iB,KAAK4iB,UAAYA,EACjB5iB,KAAK8iB,UAAYD,EAAkB,GAAK,EAAI,CAC9C,CAEA,SAASE,gBAAgB9S,EAAM4S,GAC7B7iB,KAAKiQ,KAAOA,EACZjQ,KAAK8iB,UAAYD,EAAkB,GAAK,EAAI,CAC9C,CAEA,SAASG,oBAAoB/S,EAAMgT,EAAYC,EAAaL,GAC1D7iB,KAAKiQ,KAAOA,EACZjQ,KAAKkjB,YAAcA,EACnBljB,KAAKijB,WAAaA,EAClBjjB,KAAK8iB,UAAYD,EAAkB,GAAK,EAAI,CAC9C,CAEA,SAASM,oBAAoBlT,EAAMmT,EAAYjoB,GAC7C6E,KAAKiQ,KAAOA,EACZjQ,KAAKojB,WAAaA,EAClBpjB,KAAK7E,YAAcA,CACrB,CAEA,SAASkoB,eAAepT,EAAMxX,GAC5BuH,KAAKiQ,KAAOA,EACZjQ,KAAKvH,OAASA,CAChB,CAEA,SAAS6qB,wBAAwBC,EAAaZ,GAC5C3iB,KAAKiQ,KAAO,mBACZjQ,KAAKujB,YAAcA,EACnBvjB,KAAK2iB,YAAcA,CACrB,CAEA,SAASa,mBAAmBD,GAC1BvjB,KAAKiQ,KAAO,cACZjQ,KAAKujB,YAAcA,CACrB,CAEA,SAASE,4BAA4BxT,EAAMsT,GACzCvjB,KAAKiQ,KAAOA,EACZjQ,KAAKujB,YAAcA,CACrB,CAEA,IAAIG,iBACEC,OAAS,EACN,WAEL,OAAO/C,WAAa,qBADpB+C,QAAU,EAEZ,GAJIA,OAON,SAASC,SAASC,EAAGC,EAAGC,GACtB,IAAIC,EACAxV,EACAP,EACAzG,EACAnG,EACA4iB,EACAC,EACAC,EAOJ,OAJAF,EAAIF,GAAK,EAAID,GACbI,EAAIH,GAAK,GAFT1iB,EAAQ,EAAJwiB,GADJrc,EAAIpL,KAAKib,MAAU,EAAJwM,KAGEC,GACjBK,EAAIJ,GAAK,GAAK,EAAI1iB,GAAKyiB,GAEftc,EAAI,GACV,KAAK,EACHwc,EAAID,EACJvV,EAAI2V,EACJlW,EAAIgW,EACJ,MAEF,KAAK,EACHD,EAAIE,EACJ1V,EAAIuV,EACJ9V,EAAIgW,EACJ,MAEF,KAAK,EACHD,EAAIC,EACJzV,EAAIuV,EACJ9V,EAAIkW,EACJ,MAEF,KAAK,EACHH,EAAIC,EACJzV,EAAI0V,EACJjW,EAAI8V,EACJ,MAEF,KAAK,EACHC,EAAIG,EACJ3V,EAAIyV,EACJhW,EAAI8V,EACJ,MAEF,KAAK,EACHC,EAAID,EACJvV,EAAIyV,EACJhW,EAAIiW,EAOR,MAAO,CAACF,EAAGxV,EAAGP,EAChB,CAEA,SAASmW,SAASJ,EAAGxV,EAAGP,GACtB,IAGI4V,EAHA5M,EAAM7a,KAAK6a,IAAI+M,EAAGxV,EAAGP,GACrBiJ,EAAM9a,KAAK8a,IAAI8M,EAAGxV,EAAGP,GACrBoW,EAAIpN,EAAMC,EAEV4M,EAAY,IAAR7M,EAAY,EAAIoN,EAAIpN,EACxB8M,EAAI9M,EAAM,IAEd,OAAQA,GACN,KAAKC,EACH2M,EAAI,EACJ,MAEF,KAAKG,EACHH,EAAIrV,EAAIP,EAAIoW,GAAK7V,EAAIP,EAAI,EAAI,GAC7B4V,GAAK,EAAIQ,EACT,MAEF,KAAK7V,EACHqV,EAAI5V,EAAI+V,EAAQ,EAAJK,EACZR,GAAK,EAAIQ,EACT,MAEF,KAAKpW,EACH4V,EAAIG,EAAIxV,EAAQ,EAAJ6V,EACZR,GAAK,EAAIQ,EAOb,MAAO,CAACR,EAAGC,EAAGC,EAChB,CAEA,SAASO,mBAAmBC,EAAOC,GACjC,IAAIC,EAAML,SAAoB,IAAXG,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAE,EAAI,IAAMD,EAENC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,IAAM,IACnBA,EAAI,GAAK,GAGJb,SAASa,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACtC,CAEA,SAASC,mBAAmBH,EAAOC,GACjC,IAAIC,EAAML,SAAoB,IAAXG,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAE,EAAI,IAAMD,EAENC,EAAI,GAAK,EACXA,EAAI,GAAK,EACAA,EAAI,GAAK,IAClBA,EAAI,GAAK,GAGJb,SAASa,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACtC,CAEA,SAASE,YAAYJ,EAAOC,GAC1B,IAAIC,EAAML,SAAoB,IAAXG,EAAM,GAAqB,IAAXA,EAAM,GAAqB,IAAXA,EAAM,IASzD,OARAE,EAAI,IAAMD,EAAS,IAEfC,EAAI,GAAK,EACXA,EAAI,IAAM,EACDA,EAAI,GAAK,IAClBA,EAAI,IAAM,GAGLb,SAASa,EAAI,GAAIA,EAAI,GAAIA,EAAI,GACtC,CAEA,IAAIG,SAAW,WACb,IACIpd,EACAiK,EAFAoT,EAAW,GAIf,IAAKrd,EAAI,EAAGA,EAAI,IAAKA,GAAK,EACxBiK,EAAMjK,EAAEjB,SAAS,IACjBse,EAASrd,GAAoB,IAAfiK,EAAI7Z,OAAe,IAAM6Z,EAAMA,EAG/C,OAAO,SAAUuS,EAAGxV,EAAGP,GAarB,OAZI+V,EAAI,IACNA,EAAI,GAGFxV,EAAI,IACNA,EAAI,GAGFP,EAAI,IACNA,EAAI,GAGC,IAAM4W,EAASb,GAAKa,EAASrW,GAAKqW,EAAS5W,EACpD,CACF,CAzBe,GA2BX6W,mBAAqB,SAA4BpH,GACnD+C,kBAAoB/C,CACtB,EAEIqH,mBAAqB,WACvB,OAAOtE,eACT,EAEIuE,qBAAuB,SAA8B/wB,GACvDysB,kBAAoBzsB,CACtB,EAEIgxB,qBAAuB,WACzB,OAAOvE,iBACT,EAEIwE,wBAA0B,SAAiCjxB,GAC7D0sB,sBAAwB1sB,CAC1B,EAEIkxB,wBAA0B,WAC5B,OAAOxE,qBACT,EAEIyE,wBAA0B,SAAiCnxB,GAC7DytB,qBAAuBztB,CACzB,EAEIoxB,wBAA0B,WAC5B,OAAO3D,oBACT,EAEI4D,YAAc,SAAqBrxB,GACrC2sB,WAAa3sB,CACf,EAEIsxB,YAAc,WAChB,OAAO3E,UACT,EAEA,SAAS4E,SAASvV,GAEhB,OAAOlf,SAAS00B,gBAAgBpI,MAAOpN,EACzC,CAEA,SAASyV,UAAUlF,GAAuV,OAA1OkF,UAArD,mBAAXrb,QAAoD,iBAApBA,OAAOjI,SAAqC,SAAiBoe,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYkF,UAAUlF,EAAM,CAEjY,IAAImF,YAAc,WAChB,IAEIC,EACAC,EAHAC,EAAa,EACbC,EAAY,GAGZC,EAAc,CAChBC,UAAW,WAAsB,EACjCC,YAAa,SAAqB/uB,GAChCyuB,EAAS,CACPtV,KAAMnZ,GAEV,GAEEgvB,EAAc,CAChBD,YAAa,SAAqB5V,GAChC0V,EAAYC,UAAU,CACpB3V,KAAMA,GAEV,GAiBF,SAAS8V,IACFP,IACHA,EAhBJ,SAAsBlgB,GACpB,GAAIlS,OAAO4yB,QAAU5yB,OAAO6yB,MAAQ3I,eAAgB,CAClD,IAAI4I,EAAO,IAAID,KAAK,CAAC,4CAA6C3gB,EAAGY,YAAa,CAChF0J,KAAM,oBAGJuW,EAAMC,IAAIC,gBAAgBH,GAC9B,OAAO,IAAIF,OAAOG,EACpB,CAGA,OADAZ,EAAWjgB,EACJqgB,CACT,CAIqBW,EAAa,SAAqBpuB,GAknBjD,GA3EK4tB,EAAYR,cACfQ,EAAYR,YAviBd,WACE,SAASiB,EAAeC,EAAQC,GAC9B,IAAIC,EACAvf,EAEAwf,EACAC,EACAvO,EACAwO,EA+gBgB5W,EAnhBhBqI,EAAMkO,EAAOjvB,OAMjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAGxB,GAAI,OAFJuf,EAAYF,EAAOrf,MAEOuf,EAAUI,UAAW,CAG7C,GAFAJ,EAAUI,WAAY,EAElBJ,EAAUK,QAAS,CACrB,IAAIC,EAAYN,EAAUO,gBAG1B,IAFAL,EAAOI,EAAUzvB,OAEZovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,GAAIK,EAAUL,GAAGO,GAAG7O,EAAElR,EACpBggB,EAA6BH,EAAUL,GAAGO,GAAG7O,QAI7C,IAFAwO,EAAOG,EAAUL,GAAGO,GAAG7O,EAAE9gB,OAEpB8gB,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACrB2O,EAAUL,GAAGO,GAAG7O,EAAEA,GAAGoL,GACvB0D,EAA6BH,EAAUL,GAAGO,GAAG7O,EAAEA,GAAGoL,EAAE,IAGlDuD,EAAUL,GAAGO,GAAG7O,EAAEA,GAAGngB,GACvBivB,EAA6BH,EAAUL,GAAGO,GAAG7O,EAAEA,GAAGngB,EAAE,GAK9D,CAEqB,IAAjBwuB,EAAUU,IACZV,EAAUF,OAASa,EAAeX,EAAUY,MAAOb,GACnDF,EAAeG,EAAUF,OAAQC,IACP,IAAjBC,EAAUU,GACnBG,EAAeb,EAAUc,QACC,IAAjBd,EAAUU,KA4eD,KADJnX,EA1eDyW,GA2eV5C,EAAEnW,EAAEpW,QAAyB0Y,EAAK6T,EAAEF,EAze3C,CAEJ,CA4CA,SAASyD,EAAe/0B,EAAIm0B,GAC1B,IAAIgB,EAhBN,SAAkBn1B,EAAIm0B,GAIpB,IAHA,IAAItf,EAAI,EACJmR,EAAMmO,EAAMlvB,OAET4P,EAAImR,GAAK,CACd,GAAImO,EAAMtf,GAAG7U,KAAOA,EAClB,OAAOm0B,EAAMtf,GAGfA,GAAK,CACP,CAEA,OAAO,IACT,CAGaugB,CAASp1B,EAAIm0B,GAExB,OAAIgB,EACGA,EAAKjB,OAAOmB,OAKVC,KAAKC,MAAMD,KAAKxL,UAAUqL,EAAKjB,UAJpCiB,EAAKjB,OAAOmB,QAAS,EACdF,EAAKjB,QAMT,IACT,CAEA,SAASe,EAAe1H,GACtB,IAAI1Y,EAEAwf,EACAC,EAEJ,IAAKzf,EAJK0Y,EAAItoB,OAIC,EAAG4P,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd0Y,EAAI1Y,GAAGigB,GACT,GAAIvH,EAAI1Y,GAAG2gB,GAAGzP,EAAElR,EACdggB,EAA6BtH,EAAI1Y,GAAG2gB,GAAGzP,QAIvC,IAFAuO,EAAO/G,EAAI1Y,GAAG2gB,GAAGzP,EAAE9gB,OAEdovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrB9G,EAAI1Y,GAAG2gB,GAAGzP,EAAEsO,GAAGlD,GACjB0D,EAA6BtH,EAAI1Y,GAAG2gB,GAAGzP,EAAEsO,GAAGlD,EAAE,IAG5C5D,EAAI1Y,GAAG2gB,GAAGzP,EAAEsO,GAAGzuB,GACjBivB,EAA6BtH,EAAI1Y,GAAG2gB,GAAGzP,EAAEsO,GAAGzuB,EAAE,QAI7B,OAAd2nB,EAAI1Y,GAAGigB,IAChBG,EAAe1H,EAAI1Y,GAAG7G,GAG5B,CAEA,SAAS6mB,EAA6BrwB,GACpC,IAAIqQ,EACAmR,EAAMxhB,EAAKqQ,EAAE5P,OAEjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBrQ,EAAKqQ,EAAEA,GAAG,IAAMrQ,EAAK4sB,EAAEvc,GAAG,GAC1BrQ,EAAKqQ,EAAEA,GAAG,IAAMrQ,EAAK4sB,EAAEvc,GAAG,GAC1BrQ,EAAKixB,EAAE5gB,GAAG,IAAMrQ,EAAK4sB,EAAEvc,GAAG,GAC1BrQ,EAAKixB,EAAE5gB,GAAG,IAAMrQ,EAAK4sB,EAAEvc,GAAG,EAE9B,CAEA,SAAS6gB,EAAaC,EAASC,GAC7B,IAAIC,EAAcD,EAAoBA,EAAkBtb,MAAM,KAAO,CAAC,IAAK,IAAK,KAEhF,OAAIqb,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,MAIzBA,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,MAIzBA,EAAQ,GAAKE,EAAY,MAIzBA,EAAY,GAAKF,EAAQ,KAItB,MACT,CAEA,IA2CMG,EA3CFC,EAAY,WACd,IAAID,EAAiB,CAAC,EAAG,EAAG,IAY5B,SAASE,EAAc9B,GACrB,IAAIrf,EAXmBohB,EACnBC,EAWAlQ,EAAMkO,EAAOjvB,OAEjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACH,IAAjBqf,EAAOrf,GAAGigB,UAdZoB,KADmBD,EAgBH/B,EAAOrf,IAfE2c,EAAEE,EAC/BuE,EAAUzE,EAAEE,EAAI,CACd3L,EAAG,CAAC,CACFoL,EAAG+E,EACH1E,EAAG,KAcT,CAEA,OAAO,SAAU2E,GACf,GAAIT,EAAaI,EAAgBK,EAAc/E,KAC7C4E,EAAcG,EAAcjC,QAExBiC,EAAcC,QAAQ,CACxB,IAAIvhB,EACAmR,EAAMmQ,EAAcC,OAAOnxB,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBshB,EAAcC,OAAOvhB,GAAGqf,QAC1B8B,EAAcG,EAAcC,OAAOvhB,GAAGqf,OAG5C,CAEJ,CACF,CAxCgB,GA0CZmC,GACEP,EAAiB,CAAC,EAAG,EAAG,IACrB,SAAUK,GACf,GAAIA,EAAcG,QAAUZ,EAAaI,EAAgBK,EAAc/E,GAAI,CACzE,IAAIvc,EACAmR,EAAMmQ,EAAcG,MAAMrxB,OAE9B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAC3B,IAAI0hB,EAAWJ,EAAcG,MAAMzhB,GAE/B0hB,EAAS5Y,MAAQ4Y,EAAS5Y,KAAKuX,SACjCD,EAAesB,EAAS5Y,KAAKuX,QAC7BqB,EAAS5Y,KAAK6Y,GAAK,EACnBD,EAAS5Y,KAAK8Y,GAAK,MACnBF,EAAS5Y,KAAK+Y,GAAK,EACnBH,EAAS5Y,KAAKgZ,GAAK,EACnBJ,EAAS5Y,KAAK6X,GAAK,CACjBlE,EAAG,CACDvL,EAAG,CAAC,EAAG,GACP1K,EAAG,GAEL8V,EAAG,CACDpL,EAAG,CAAC,IAAK,KACT1K,EAAG,GAELA,EAAG,CACD0K,EAAG,CAAC,EAAG,GACP1K,EAAG,GAELgW,EAAG,CACDtL,EAAG,EACH1K,EAAG,GAELoa,EAAG,CACD1P,EAAG,IACH1K,EAAG,IAIF8a,EAAcG,MAAMzhB,GAAG2c,IAC1B+E,EAAS5Y,KAAKuX,OAAOxoB,KAAK,CACxBooB,GAAI,OAENyB,EAAS5Y,KAAKuX,OAAO,GAAGlnB,GAAGtB,KAAK,CAC9B4kB,EAAG,CACDvL,EAAG,CAAC,EAAG,GACP1K,EAAG,GAEL8V,EAAG,CACDpL,EAAG,CAAC,IAAK,KACT1K,EAAG,GAELA,EAAG,CACD0K,EAAG,CAAC,EAAG,GACP1K,EAAG,GAELgW,EAAG,CACDtL,EAAG,EACH1K,EAAG,GAELoa,EAAG,CACD1P,EAAG,IACH1K,EAAG,GAELub,GAAI,CACF7Q,EAAG,EACH1K,EAAG,GAELwb,GAAI,CACF9Q,EAAG,EACH1K,EAAG,GAELyZ,GAAI,QAIZ,CACF,CACF,GAGEgC,EAAsB,WACxB,IAAIhB,EAAiB,CAAC,EAAG,EAAG,IA2B5B,SAASE,EAAc9B,GACrB,IAAIrf,EAzBAkiB,EA0BA/Q,EAAMkO,EAAOjvB,OAEjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACH,IAAjBqf,EAAOrf,GAAGigB,KA7BZiC,SAEsB,iBAFtBA,EA8BgB7C,EAAOrf,GA9BF2c,EAAEF,GAEPjW,IAClB0b,EAAS1b,EAAI,CACXA,EAAG,EACH0K,EAAGgR,EAAS1b,IAIU,iBAAf0b,EAASzF,IAClByF,EAASzF,EAAI,CACXjW,EAAG,EACH0K,EAAGgR,EAASzF,IAIU,iBAAfyF,EAAS1F,IAClB0F,EAAS1F,EAAI,CACXhW,EAAG,EACH0K,EAAGgR,EAAS1F,IAclB,CAEA,OAAO,SAAU8E,GACf,GAAIT,EAAaI,EAAgBK,EAAc/E,KAC7C4E,EAAcG,EAAcjC,QAExBiC,EAAcC,QAAQ,CACxB,IAAIvhB,EACAmR,EAAMmQ,EAAcC,OAAOnxB,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBshB,EAAcC,OAAOvhB,GAAGqf,QAC1B8B,EAAcG,EAAcC,OAAOvhB,GAAGqf,OAG5C,CAEJ,CACF,CAvD0B,GAyDtB8C,EAAc,WAChB,IAAIlB,EAAiB,CAAC,EAAG,EAAG,GAE5B,SAASmB,EAAc/B,GACrB,IAAIrgB,EAEAwf,EACAC,EAFAtO,EAAMkP,EAAOjwB,OAIjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,GAAqB,OAAjBqgB,EAAOrgB,GAAGigB,GACZmC,EAAc/B,EAAOrgB,GAAG7G,SACnB,GAAqB,OAAjBknB,EAAOrgB,GAAGigB,IAAgC,OAAjBI,EAAOrgB,GAAGigB,GAC5C,GAAII,EAAOrgB,GAAG0G,EAAEwK,GAAKmP,EAAOrgB,GAAG0G,EAAEwK,EAAE,GAAGlR,EAGpC,IAFAyf,EAAOY,EAAOrgB,GAAG0G,EAAEwK,EAAE9gB,OAEhBovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrBa,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGlD,IACnB+D,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGlD,EAAE,IAAM,IACzB+D,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGlD,EAAE,IAAM,IACzB+D,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGlD,EAAE,IAAM,IACzB+D,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGlD,EAAE,IAAM,KAGvB+D,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGzuB,IACnBsvB,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGzuB,EAAE,IAAM,IACzBsvB,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGzuB,EAAE,IAAM,IACzBsvB,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGzuB,EAAE,IAAM,IACzBsvB,EAAOrgB,GAAG0G,EAAEwK,EAAEsO,GAAGzuB,EAAE,IAAM,UAI7BsvB,EAAOrgB,GAAG0G,EAAEwK,EAAE,IAAM,IACpBmP,EAAOrgB,GAAG0G,EAAEwK,EAAE,IAAM,IACpBmP,EAAOrgB,GAAG0G,EAAEwK,EAAE,IAAM,IACpBmP,EAAOrgB,GAAG0G,EAAEwK,EAAE,IAAM,GAI5B,CAEA,SAASiQ,EAAc9B,GACrB,IAAIrf,EACAmR,EAAMkO,EAAOjvB,OAEjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACH,IAAjBqf,EAAOrf,GAAGigB,IACZmC,EAAc/C,EAAOrf,GAAGqgB,OAG9B,CAEA,OAAO,SAAUiB,GACf,GAAIT,EAAaI,EAAgBK,EAAc/E,KAC7C4E,EAAcG,EAAcjC,QAExBiC,EAAcC,QAAQ,CACxB,IAAIvhB,EACAmR,EAAMmQ,EAAcC,OAAOnxB,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBshB,EAAcC,OAAOvhB,GAAGqf,QAC1B8B,EAAcG,EAAcC,OAAOvhB,GAAGqf,OAG5C,CAEJ,CACF,CApEkB,GAsEdgD,EAAc,WAChB,IAAIpB,EAAiB,CAAC,EAAG,EAAG,IAE5B,SAASqB,EAAsB5J,GAC7B,IAAI1Y,EAEAwf,EACAC,EAEJ,IAAKzf,EAJK0Y,EAAItoB,OAIC,EAAG4P,GAAK,EAAGA,GAAK,EAC7B,GAAkB,OAAd0Y,EAAI1Y,GAAGigB,GACT,GAAIvH,EAAI1Y,GAAG2gB,GAAGzP,EAAElR,EACd0Y,EAAI1Y,GAAG2gB,GAAGzP,EAAExK,EAAIgS,EAAI1Y,GAAGuiB,YAIvB,IAFA9C,EAAO/G,EAAI1Y,GAAG2gB,GAAGzP,EAAE9gB,OAEdovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACrB9G,EAAI1Y,GAAG2gB,GAAGzP,EAAEsO,GAAGlD,IACjB5D,EAAI1Y,GAAG2gB,GAAGzP,EAAEsO,GAAGlD,EAAE,GAAG5V,EAAIgS,EAAI1Y,GAAGuiB,QAG7B7J,EAAI1Y,GAAG2gB,GAAGzP,EAAEsO,GAAGzuB,IACjB2nB,EAAI1Y,GAAG2gB,GAAGzP,EAAEsO,GAAGzuB,EAAE,GAAG2V,EAAIgS,EAAI1Y,GAAGuiB,YAId,OAAd7J,EAAI1Y,GAAGigB,IAChBqC,EAAsB5J,EAAI1Y,GAAG7G,GAGnC,CAEA,SAASgoB,EAAc9B,GACrB,IAAIE,EACAvf,EAEAwf,EACAC,EACAvO,EACAwO,EAJAvO,EAAMkO,EAAOjvB,OAMjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAG3B,IAFAuf,EAAYF,EAAOrf,IAEL4f,QAAS,CACrB,IAAIC,EAAYN,EAAUO,gBAG1B,IAFAL,EAAOI,EAAUzvB,OAEZovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,GAAIK,EAAUL,GAAGO,GAAG7O,EAAElR,EACpB6f,EAAUL,GAAGO,GAAG7O,EAAExK,EAAImZ,EAAUL,GAAGgD,QAInC,IAFA9C,EAAOG,EAAUL,GAAGO,GAAG7O,EAAE9gB,OAEpB8gB,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACrB2O,EAAUL,GAAGO,GAAG7O,EAAEA,GAAGoL,IACvBuD,EAAUL,GAAGO,GAAG7O,EAAEA,GAAGoL,EAAE,GAAG5V,EAAImZ,EAAUL,GAAGgD,IAGzC3C,EAAUL,GAAGO,GAAG7O,EAAEA,GAAGngB,IACvB8uB,EAAUL,GAAGO,GAAG7O,EAAEA,GAAGngB,EAAE,GAAG2V,EAAImZ,EAAUL,GAAGgD,GAKrD,CAEqB,IAAjBjD,EAAUU,IACZqC,EAAsB/C,EAAUc,OAEpC,CACF,CAEA,OAAO,SAAUiB,GACf,GAAIT,EAAaI,EAAgBK,EAAc/E,KAC7C4E,EAAcG,EAAcjC,QAExBiC,EAAcC,QAAQ,CACxB,IAAIvhB,EACAmR,EAAMmQ,EAAcC,OAAOnxB,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBshB,EAAcC,OAAOvhB,GAAGqf,QAC1B8B,EAAcG,EAAcC,OAAOvhB,GAAGqf,OAG5C,CAEJ,CACF,CAzFkB,GA+GlB,IAAIoD,EAAW,CACfA,aArBA,SAAsBnB,GAChBA,EAAcoB,aAIlBP,EAAYb,GACZJ,EAAUI,GACVE,EAAWF,GACXW,EAAoBX,GACpBe,EAAYf,GACZlC,EAAekC,EAAcjC,OAAQiC,EAAcC,QA/drD,SAAuBE,EAAOF,GAC5B,GAAIE,EAAO,CACT,IAAIzhB,EAAI,EACJmR,EAAMsQ,EAAMrxB,OAEhB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACL,IAAfyhB,EAAMzhB,GAAG2c,IAEX8E,EAAMzhB,GAAG8I,KAAKuW,OAASa,EAAeuB,EAAMzhB,GAAG8I,KAAKqX,MAAOoB,GAa3DnC,EAAeqC,EAAMzhB,GAAG8I,KAAKuW,OAAQkC,GAG3C,CACF,CAucEoB,CAAcrB,EAAcG,MAAOH,EAAcC,QACjDD,EAAcoB,YAAa,EAC7B,GAcA,OALAD,EAASN,YAAcA,EACvBM,EAASjB,WAAaA,EACtBiB,EAASR,oBAAsBA,EAC/BQ,EAASJ,YAAcA,EACvBI,EAASrD,eAAiBA,EACnBqD,CACT,CAG4BG,IAGvBjE,EAAYkE,cACflE,EAAYkE,YAAc,WACxB,SAASC,EAAeC,GAGtB,IAAIC,EAAoBD,EAAIE,kBAAkB,gBAE9C,OAAID,GAA0C,SAArBD,EAAIG,eAAkE,IAAvCF,EAAkBjnB,QAAQ,SAI9EgnB,EAAII,UAAwC,WAA5BjF,UAAU6E,EAAII,UAHzBJ,EAAII,SAOTJ,EAAII,UAAoC,iBAAjBJ,EAAII,SACtB1C,KAAKC,MAAMqC,EAAII,UAGpBJ,EAAIK,aACC3C,KAAKC,MAAMqC,EAAIK,cAGjB,IACT,CAyCA,MAAO,CACL14B,KAxCF,SAAmBiF,EAAM0zB,EAAUz1B,EAAU01B,GAC3C,IAAIH,EACAJ,EAAM,IAAIQ,eAEd,IAEER,EAAIG,aAAe,MACrB,CAAE,MAAOM,GAAM,CAGfT,EAAIU,mBAAqB,WACvB,GAAuB,IAAnBV,EAAIW,WACN,GAAmB,MAAfX,EAAIY,OACNR,EAAWL,EAAeC,GAC1Bn1B,EAASu1B,QAET,IACEA,EAAWL,EAAeC,GAC1Bn1B,EAASu1B,EACX,CAAE,MAAOK,GACHF,GACFA,EAAcE,EAElB,CAGN,EAEA,IAEET,EAAIjX,KAAK,CAAC,IAAK,IAAK,KAAKqC,KAAK,IAAKxe,GAAM,EAC3C,CAAE,MAAO0O,GAEP0kB,EAAIjX,KAAK,CAAC,IAAK,IAAK,KAAKqC,KAAK,IAAKkV,EAAW,IAAM1zB,GAAM,EAC5D,CAEAozB,EAAIa,MACN,EAKF,CAnE0B,IAsER,kBAAhB7yB,EAAE+X,KAAKL,KACTkW,EAAYkE,YAAYn4B,KAAKqG,EAAE+X,KAAKnZ,KAAMoB,EAAE+X,KAAKua,UAAU,SAAUva,GACnE6V,EAAYR,YAAY0F,aAAa/a,GAErC6V,EAAYD,YAAY,CACtBvzB,GAAI4F,EAAE+X,KAAK3d,GACX24B,QAAShb,EACT6a,OAAQ,WAEZ,IAAG,WACDhF,EAAYD,YAAY,CACtBvzB,GAAI4F,EAAE+X,KAAK3d,GACXw4B,OAAQ,SAEZ,SACK,GAAoB,aAAhB5yB,EAAE+X,KAAKL,KAAqB,CACrC,IAAIsb,EAAYhzB,EAAE+X,KAAKib,UAEvBpF,EAAYR,YAAY0F,aAAaE,GAErCpF,EAAYD,YAAY,CACtBvzB,GAAI4F,EAAE+X,KAAK3d,GACX24B,QAASC,EACTJ,OAAQ,WAEZ,KAA2B,aAAhB5yB,EAAE+X,KAAKL,MAChBkW,EAAYkE,YAAYn4B,KAAKqG,EAAE+X,KAAKnZ,KAAMoB,EAAE+X,KAAKua,UAAU,SAAUva,GACnE6V,EAAYD,YAAY,CACtBvzB,GAAI4F,EAAE+X,KAAK3d,GACX24B,QAAShb,EACT6a,OAAQ,WAEZ,IAAG,WACDhF,EAAYD,YAAY,CACtBvzB,GAAI4F,EAAE+X,KAAK3d,GACXw4B,OAAQ,SAEZ,GAEJ,IAEAtF,EAAeI,UAAY,SAAUlmB,GACnC,IAAIuQ,EAAOvQ,EAAMuQ,KACb3d,EAAK2d,EAAK3d,GACVka,EAAUkZ,EAAUpzB,GACxBozB,EAAUpzB,GAAM,KAEI,YAAhB2d,EAAK6a,OACPte,EAAQ2e,WAAWlb,EAAKgb,SACfze,EAAQ4e,SACjB5e,EAAQ4e,SAEZ,EAEJ,CAEA,SAASC,EAAcF,EAAYC,GAEjC,IAAI94B,EAAK,cADTmzB,GAAc,GAMd,OAJAC,EAAUpzB,GAAM,CACd64B,WAAYA,EACZC,QAASA,GAEJ94B,CACT,CAkCA,MAAO,CACLg5B,cAjCF,SAAuBx0B,EAAMq0B,EAAYC,GACvCrF,IACA,IAAIwF,EAAYF,EAAcF,EAAYC,GAC1C5F,EAAeK,YAAY,CACzBjW,KAAM,gBACN9Y,KAAMA,EACN0zB,SAAUp3B,OAAOo4B,SAASC,OAASr4B,OAAOo4B,SAASE,SACnDp5B,GAAIi5B,GAER,EAyBEI,SAvBF,SAAkB70B,EAAMq0B,EAAYC,GAClCrF,IACA,IAAIwF,EAAYF,EAAcF,EAAYC,GAC1C5F,EAAeK,YAAY,CACzBjW,KAAM,WACN9Y,KAAMA,EACN0zB,SAAUp3B,OAAOo4B,SAASC,OAASr4B,OAAOo4B,SAASE,SACnDp5B,GAAIi5B,GAER,EAeEK,kBAbF,SAA2BC,EAAMV,EAAYC,GAC3CrF,IACA,IAAIwF,EAAYF,EAAcF,EAAYC,GAC1C5F,EAAeK,YAAY,CACzBjW,KAAM,WACNsb,UAAWW,EACXv5B,GAAIi5B,GAER,EAOF,CA9vBkB,GAgwBdO,eAAiB,WACnB,IAAIC,EAAa,WACf,IAAIC,EAASvO,UAAU,UACvBuO,EAAOxuB,MAAQ,EACfwuB,EAAOx6B,OAAS,EAChB,IAAIy6B,EAAMD,EAAOE,WAAW,MAG5B,OAFAD,EAAIE,UAAY,gBAChBF,EAAIG,SAAS,EAAG,EAAG,EAAG,GACfJ,CACT,CARiB,GAUjB,SAASK,IACP1sB,KAAK2sB,cAAgB,EAEjB3sB,KAAK2sB,eAAiB3sB,KAAK4sB,aAAe5sB,KAAK6sB,sBAAwB7sB,KAAK8sB,eAC1E9sB,KAAK+sB,gBACP/sB,KAAK+sB,eAAe,KAG1B,CAEA,SAASC,IACPhtB,KAAK6sB,qBAAuB,EAExB7sB,KAAK2sB,eAAiB3sB,KAAK4sB,aAAe5sB,KAAK6sB,sBAAwB7sB,KAAK8sB,eAC1E9sB,KAAK+sB,gBACP/sB,KAAK+sB,eAAe,KAG1B,CAEA,SAASE,EAAcC,EAAWC,EAAYC,GAC5C,IAAIj2B,EAAO,GAEX,GAAI+1B,EAAU30B,EACZpB,EAAO+1B,EAAUjJ,OACZ,GAAIkJ,EAAY,CACrB,IAAIE,EAAYH,EAAUjJ,GAEY,IAAlCoJ,EAAU9pB,QAAQ,aACpB8pB,EAAYA,EAAUpgB,MAAM,KAAK,IAGnC9V,EAAOg2B,EAAaE,CACtB,MACEl2B,EAAOi2B,EACPj2B,GAAQ+1B,EAAUI,EAAIJ,EAAUI,EAAI,GACpCn2B,GAAQ+1B,EAAUjJ,EAGpB,OAAO9sB,CACT,CAEA,SAASo2B,EAAgBC,GACvB,IAAI7J,EAAS,EACT8J,EAAaC,YAAY,YACjBF,EAAIG,UAEN9vB,OAAS8lB,EAAS,OACxB3jB,KAAK4tB,eAELC,cAAcJ,IAGhB9J,GAAU,CACZ,EAAE1rB,KAAK+H,MAAO,GAChB,CAkDA,SAAS8tB,EAAkBxd,GACzB,IAAIyd,EAAK,CACPb,UAAW5c,GAETnZ,EAAO81B,EAAc3c,EAAMtQ,KAAKmtB,WAAYntB,KAAK7I,MAUrD,OATAwuB,YAAYqG,SAAS70B,EAAM,SAAU62B,GACnCD,EAAGP,IAAMQ,EAEThuB,KAAKiuB,gBACP,EAAEh2B,KAAK+H,MAAO,WACZ+tB,EAAGP,IAAM,CAAC,EAEVxtB,KAAKiuB,gBACP,EAAEh2B,KAAK+H,OACA+tB,CACT,CAiEA,SAASG,IACPluB,KAAK4tB,aAAelB,EAAYz0B,KAAK+H,MACrCA,KAAKiuB,eAAiBjB,EAAc/0B,KAAK+H,MACzCA,KAAKutB,gBAAkBA,EAAgBt1B,KAAK+H,MAC5CA,KAAK8tB,kBAAoBA,EAAkB71B,KAAK+H,MAChDA,KAAKmtB,WAAa,GAClBntB,KAAK7I,KAAO,GACZ6I,KAAK4sB,YAAc,EACnB5sB,KAAK8sB,cAAgB,EACrB9sB,KAAK2sB,aAAe,EACpB3sB,KAAK6sB,oBAAsB,EAC3B7sB,KAAK+sB,eAAiB,KACtB/sB,KAAKmuB,OAAS,EAChB,CAgBA,OAdAD,EAAsB9sB,UAAY,CAChCgtB,WA/EF,SAAoBrF,EAAQsF,GAE1B,IAAI7mB,EADJxH,KAAK+sB,eAAiBsB,EAEtB,IAAI1V,EAAMoQ,EAAOnxB,OAEjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACnBuhB,EAAOvhB,GAAGqf,SACRkC,EAAOvhB,GAAG2c,GAAqB,QAAhB4E,EAAOvhB,GAAG2c,EAGH,IAAhB4E,EAAOvhB,GAAG2c,IACnBnkB,KAAK8sB,eAAiB,EACtB9sB,KAAKmuB,OAAO9uB,KAAKW,KAAK8tB,kBAAkB/E,EAAOvhB,OAJ/CxH,KAAK4sB,aAAe,EACpB5sB,KAAKmuB,OAAO9uB,KAAKW,KAAKsuB,iBAAiBvF,EAAOvhB,MAOtD,EAgEE+mB,cA1DF,SAAuBp3B,GACrB6I,KAAKmtB,WAAah2B,GAAQ,EAC5B,EAyDEq3B,QA/DF,SAAiBr3B,GACf6I,KAAK7I,KAAOA,GAAQ,EACtB,EA8DEs3B,aApCF,WACE,OAAOzuB,KAAK4sB,cAAgB5sB,KAAK2sB,YACnC,EAmCE+B,eAjCF,WACE,OAAO1uB,KAAK8sB,gBAAkB9sB,KAAK6sB,mBACrC,EAgCE8B,QA3CF,WACE3uB,KAAK+sB,eAAiB,KACtB/sB,KAAKmuB,OAAOv2B,OAAS,CACvB,EAyCEg3B,SA3DF,SAAkB1B,GAIhB,IAHA,IAAI1lB,EAAI,EACJmR,EAAM3Y,KAAKmuB,OAAOv2B,OAEf4P,EAAImR,GAAK,CACd,GAAI3Y,KAAKmuB,OAAO3mB,GAAG0lB,YAAcA,EAC/B,OAAOltB,KAAKmuB,OAAO3mB,GAAGgmB,IAGxBhmB,GAAK,CACP,CAEA,OAAO,IACT,EA+CEqnB,cAzHF,SAAuB3B,GACrB,IAAI/1B,EAAO81B,EAAcC,EAAWltB,KAAKmtB,WAAYntB,KAAK7I,MACtDq2B,EAAM1P,UAAU,OACpB0P,EAAIsB,YAAc,YAClBtB,EAAIv4B,iBAAiB,OAAQ+K,KAAK4tB,cAAc,GAChDJ,EAAIv4B,iBAAiB,QAAS,WAC5B84B,EAAGP,IAAMpB,EAETpsB,KAAK4tB,cACP,EAAE31B,KAAK+H,OAAO,GACdwtB,EAAIpa,IAAMjc,EACV,IAAI42B,EAAK,CACPP,IAAKA,EACLN,UAAWA,GAEb,OAAOa,CACT,EA0GEgB,gBAxJF,SAAyB7B,GACvB,IAAI/1B,EAAO81B,EAAcC,EAAWltB,KAAKmtB,WAAYntB,KAAK7I,MACtDq2B,EAAMhI,SAAS,SAEf3E,SACF7gB,KAAKutB,gBAAgBC,GAErBA,EAAIv4B,iBAAiB,OAAQ+K,KAAK4tB,cAAc,GAGlDJ,EAAIv4B,iBAAiB,QAAS,WAC5B84B,EAAGP,IAAMpB,EAETpsB,KAAK4tB,cACP,EAAE31B,KAAK+H,OAAO,GACdwtB,EAAIwB,eAAe,+BAAgC,OAAQ73B,GAEvD6I,KAAKivB,eAAeC,OACtBlvB,KAAKivB,eAAeC,OAAO1B,GAE3BxtB,KAAKivB,eAAe9b,YAAYqa,GAGlC,IAAIO,EAAK,CACPP,IAAKA,EACLN,UAAWA,GAEb,OAAOa,CACT,EA6HErB,YAAaA,EACbM,cAAeA,EACfmC,aApCF,SAAsBlf,EAAMmf,GACb,QAATnf,GACFjQ,KAAKivB,eAAiBG,EACtBpvB,KAAKsuB,iBAAmBtuB,KAAK+uB,gBAAgB92B,KAAK+H,OAElDA,KAAKsuB,iBAAmBtuB,KAAK6uB,cAAc52B,KAAK+H,KAEpD,GA+BOkuB,CACT,CAlOqB,GAoOrB,SAASmB,YAAa,CAEtBA,UAAUjuB,UAAY,CACpBkuB,aAAc,SAAsBC,EAAW13B,GAC7C,GAAImI,KAAKwvB,KAAKD,GAGZ,IAFA,IAAIE,EAAYzvB,KAAKwvB,KAAKD,GAEjB/nB,EAAI,EAAGA,EAAIioB,EAAU73B,OAAQ4P,GAAK,EACzCioB,EAAUjoB,GAAG3P,EAGnB,EACA5C,iBAAkB,SAA0Bs6B,EAAWn6B,GAOrD,OANK4K,KAAKwvB,KAAKD,KACbvvB,KAAKwvB,KAAKD,GAAa,IAGzBvvB,KAAKwvB,KAAKD,GAAWlwB,KAAKjK,GAEnB,WACL4K,KAAKlE,oBAAoByzB,EAAWn6B,EACtC,EAAE6C,KAAK+H,KACT,EACAlE,oBAAqB,SAA6ByzB,EAAWn6B,GAC3D,GAAKA,GAEE,GAAI4K,KAAKwvB,KAAKD,GAAY,CAI/B,IAHA,IAAI/nB,EAAI,EACJmR,EAAM3Y,KAAKwvB,KAAKD,GAAW33B,OAExB4P,EAAImR,GACL3Y,KAAKwvB,KAAKD,GAAW/nB,KAAOpS,IAC9B4K,KAAKwvB,KAAKD,GAAWG,OAAOloB,EAAG,GAE/BA,GAAK,EACLmR,GAAO,GAGTnR,GAAK,EAGFxH,KAAKwvB,KAAKD,GAAW33B,SACxBoI,KAAKwvB,KAAKD,GAAa,KAE3B,OAnBEvvB,KAAKwvB,KAAKD,GAAa,IAoB3B,GAGF,IAAII,aAAe,WACjB,SAASC,EAAkBtE,GAMzB,IALA,IAEIuE,EAFAC,EAAQxE,EAAQre,MAAM,QACtB5F,EAAO,CAAC,EAER0oB,EAAY,EAEPvoB,EAAI,EAAGA,EAAIsoB,EAAMl4B,OAAQ4P,GAAK,EAGjB,KAFpBqoB,EAAOC,EAAMtoB,GAAGyF,MAAM,MAEbrV,SACPyP,EAAKwoB,EAAK,IAAMA,EAAK,GAAGve,OACxBye,GAAa,GAIjB,GAAkB,IAAdA,EACF,MAAM,IAAIC,MAGZ,OAAO3oB,CACT,CAEA,OAAO,SAAU4oB,GAGf,IAFA,IAAIC,EAAU,GAEL1oB,EAAI,EAAGA,EAAIyoB,EAASr4B,OAAQ4P,GAAK,EAAG,CAC3C,IAAI2oB,EAAUF,EAASzoB,GACnB4oB,EAAa,CACfC,KAAMF,EAAQG,GACdl9B,SAAU+8B,EAAQI,IAGpB,IACEH,EAAW9E,QAAUrD,KAAKC,MAAM+H,EAASzoB,GAAGgpB,GAC9C,CAAE,MAAOC,GACP,IACEL,EAAW9E,QAAUsE,EAAkBK,EAASzoB,GAAGgpB,GACrD,CAAE,MAAOE,GACPN,EAAW9E,QAAU,CACnBthB,KAAMimB,EAASzoB,GAAGgpB,GAEtB,CACF,CAEAN,EAAQ7wB,KAAK+wB,EACf,CAEA,OAAOF,CACT,CACF,CAlDmB,GAoDfS,iBAAmB,WACrB,SAASC,EAAoB9I,GAC3B9nB,KAAK6wB,aAAaxxB,KAAKyoB,EACzB,CAEA,OAAO,WACL,SAASgJ,EAAqB9mB,GAI5B,IAHA,IAAIxC,EAAI,EACJmR,EAAM3Y,KAAK6wB,aAAaj5B,OAErB4P,EAAImR,GAAK,CACd,GAAI3Y,KAAK6wB,aAAarpB,GAAG8I,MAAQtQ,KAAK6wB,aAAarpB,GAAG8I,KAAKygB,KAAO/mB,EAKhE,OAJIhK,KAAK6wB,aAAarpB,GAAGwpB,cAAgBhxB,KAAK6wB,aAAarpB,GAAG8I,KAAK2gB,IACjEjxB,KAAK6wB,aAAarpB,GAAGwpB,aAAahxB,KAAKkxB,cAGlClxB,KAAK6wB,aAAarpB,GAAG2pB,cAG9B3pB,GAAK,CACP,CAEA,OAAO,IACT,CAKA,OAHAspB,EAAqBD,aAAe,GACpCC,EAAqBI,aAAe,EACpCJ,EAAqBF,oBAAsBA,EACpCE,CACT,CACF,CA9BuB,GAgCnBM,UAAY,CAAC,EAEbC,iBAAmB,SAA0B11B,EAAK1H,GACpDm9B,UAAUz1B,GAAO1H,CACnB,EAEA,SAASq9B,YAAY31B,GACnB,OAAOy1B,UAAUz1B,EACnB,CAEA,SAAS41B,wBAEP,GAAIH,UAAU/E,OACZ,MAAO,SAIT,IAAK,IAAI1wB,KAAOy1B,UACd,GAAIA,UAAUz1B,GACZ,OAAOA,EAIX,MAAO,EACT,CAEA,SAAS61B,UAAUhR,GAAuV,OAA1OgR,UAArD,mBAAXnnB,QAAoD,iBAApBA,OAAOjI,SAAqC,SAAiBoe,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYgR,UAAUhR,EAAM,CAEjY,IAAIiR,cAAgB,WAClBzxB,KAAKwvB,KAAO,GACZxvB,KAAKgK,KAAO,GACZhK,KAAK7I,KAAO,GACZ6I,KAAK0xB,UAAW,EAChB1xB,KAAKkxB,aAAe,EACpBlxB,KAAK2xB,gBAAkB,EACvB3xB,KAAKojB,WAAa,EAClBpjB,KAAK7E,YAAc,EACnB6E,KAAK4xB,UAAY,EACjB5xB,KAAK6xB,UAAY,EACjB7xB,KAAK8xB,UAAY,EACjB9xB,KAAK+xB,cAAgB,EACrB/xB,KAAKgyB,UAAY,EACjBhyB,KAAK8oB,cAAgB,CAAC,EACtB9oB,KAAK+oB,OAAS,GACd/oB,KAAKiyB,UAAW,EAChBjyB,KAAK9I,UAAW,EAChB8I,KAAK/I,MAAO,EACZ+I,KAAKhJ,SAAW,KAChBgJ,KAAKkyB,YAAcxO,kBACnB1jB,KAAKmtB,WAAa,GAClBntB,KAAKmyB,cAAgB,EACrBnyB,KAAKoyB,WAAa,EAClBpyB,KAAKqyB,kBAAoBtN,qBACzB/kB,KAAKsyB,SAAW,GAChBtyB,KAAKuyB,OAAQ,EACbvyB,KAAKwyB,gBAAiB,EACtBxyB,KAAKyyB,iBAAmB9B,mBACxB3wB,KAAK0yB,eAAiB,IAAIvG,eAC1BnsB,KAAK2yB,gBAAkBnU,yBACvBxe,KAAKkwB,QAAU,GACflwB,KAAK4yB,gBAAkB5yB,KAAK4yB,gBAAgB36B,KAAK+H,MACjDA,KAAK6yB,aAAe7yB,KAAK6yB,aAAa56B,KAAK+H,MAC3CA,KAAK8yB,kBAAoB9yB,KAAK8yB,kBAAkB76B,KAAK+H,MACrDA,KAAK+yB,gBAAkB,IAAIrQ,kBAAkB,aAAc,EAAG,EAAG,GACjE1iB,KAAK0gB,kBAAoBuE,sBAC3B,EAEAlH,gBAAgB,CAACsR,WAAYoC,eAE7BA,cAAcrwB,UAAU4xB,UAAY,SAAUC,IACxCA,EAAOC,SAAWD,EAAO1hC,aAC3ByO,KAAKkzB,QAAUD,EAAOC,SAAWD,EAAO1hC,WAG1C,IAAI4hC,EAAW,MAEXF,EAAOE,SACTA,EAAWF,EAAOE,SACTF,EAAOj8B,WAChBm8B,EAAWF,EAAOj8B,UAGpB,IAAIo8B,EAAgB9B,YAAY6B,GAChCnzB,KAAKhJ,SAAW,IAAIo8B,EAAcpzB,KAAMizB,EAAOI,kBAC/CrzB,KAAK0yB,eAAevD,aAAagE,EAAUnzB,KAAKhJ,SAASs8B,WAAWC,MACpEvzB,KAAKhJ,SAASw8B,oBAAoBxzB,KAAKyyB,kBACvCzyB,KAAKmzB,SAAWA,EAEI,KAAhBF,EAAOh8B,MAA+B,OAAhBg8B,EAAOh8B,WAAiCmJ,IAAhB6yB,EAAOh8B,OAAsC,IAAhBg8B,EAAOh8B,KACpF+I,KAAK/I,MAAO,GACa,IAAhBg8B,EAAOh8B,KAChB+I,KAAK/I,MAAO,EAEZ+I,KAAK/I,KAAOiD,SAAS+4B,EAAOh8B,KAAM,IAGpC+I,KAAK9I,WAAW,aAAc+7B,IAASA,EAAO/7B,SAC9C8I,KAAKgK,KAAOipB,EAAOjpB,KAAOipB,EAAOjpB,KAAO,GACxChK,KAAKyzB,kBAAmB1sB,OAAO3F,UAAUsN,eAAe7L,KAAKowB,EAAQ,qBAAsBA,EAAOQ,iBAClGzzB,KAAKmtB,WAAa8F,EAAO9F,WACzBntB,KAAK0zB,eAAiBT,EAAOS,eAEzBT,EAAOvU,cACT1e,KAAK2yB,gBAAgBjT,gBAAgBuT,EAAOvU,cAG1CuU,EAAOnK,cACT9oB,KAAK2zB,eAAeV,EAAOnK,eAClBmK,EAAO97B,QACuB,IAAnC87B,EAAO97B,KAAKy8B,YAAY,MAC1B5zB,KAAK7I,KAAO87B,EAAO97B,KAAK1E,OAAO,EAAGwgC,EAAO97B,KAAKy8B,YAAY,MAAQ,GAElE5zB,KAAK7I,KAAO87B,EAAO97B,KAAK1E,OAAO,EAAGwgC,EAAO97B,KAAKy8B,YAAY,KAAO,GAGnE5zB,KAAK6zB,SAAWZ,EAAO97B,KAAK1E,OAAOwgC,EAAO97B,KAAKy8B,YAAY,KAAO,GAClE5zB,KAAK6zB,SAAW7zB,KAAK6zB,SAASphC,OAAO,EAAGuN,KAAK6zB,SAASD,YAAY,UAClEjO,YAAYgG,cAAcsH,EAAO97B,KAAM6I,KAAK4yB,gBAAiB5yB,KAAK6yB,cAEtE,EAEApB,cAAcrwB,UAAUyxB,aAAe,WACrC7yB,KAAK8zB,QAAQ,cACf,EAEArC,cAAcrwB,UAAUuyB,eAAiB,SAAUrjB,GACjDqV,YAAYsG,kBAAkB3b,EAAMtQ,KAAK4yB,gBAC3C,EAEAnB,cAAcrwB,UAAU2yB,QAAU,SAAUb,EAASpK,GAC/CA,GAC+B,WAA7B0I,UAAU1I,KACZA,EAAgBb,KAAKC,MAAMY,IAI/B,IAAImK,EAAS,CACXC,QAASA,EACTpK,cAAeA,GAEbkL,EAAoBd,EAAQe,WAChChB,EAAO97B,KAAO68B,EAAkBE,aAAa,uBAC3CF,EAAkBE,aAAa,uBAAuBjgC,MAAQ+/B,EAAkBE,aAAa,gBAC7FF,EAAkBE,aAAa,gBAAgBjgC,MAAQ+/B,EAAkBE,aAAa,WAAaF,EAAkBE,aAAa,WAAWjgC,MAAQ,GACvJg/B,EAAOE,SAAWa,EAAkBE,aAAa,kBAC/CF,EAAkBE,aAAa,kBAAkBjgC,MAAQ+/B,EAAkBE,aAAa,gBACxFF,EAAkBE,aAAa,gBAAgBjgC,MAAQ+/B,EAAkBE,aAAa,WACtFF,EAAkBE,aAAa,WAAWjgC,MAAQ+/B,EAAkBE,aAAa,oBACjFF,EAAkBE,aAAa,oBAAoBjgC,MAAQ+/B,EAAkBE,aAAa,eAAiBF,EAAkBE,aAAa,eAAejgC,MAAQs9B,yBAA2B,SAC9L,IAAIt6B,EAAO+8B,EAAkBE,aAAa,kBACxCF,EAAkBE,aAAa,kBAAkBjgC,MAAQ+/B,EAAkBE,aAAa,gBACxFF,EAAkBE,aAAa,gBAAgBjgC,MAAQ+/B,EAAkBE,aAAa,WAAaF,EAAkBE,aAAa,WAAWjgC,MAAQ,GAE1I,UAATgD,EACFg8B,EAAOh8B,MAAO,EACI,SAATA,EACTg8B,EAAOh8B,MAAO,EACI,KAATA,IACTg8B,EAAOh8B,KAAOiD,SAASjD,EAAM,KAG/B,IAAIC,EAAW88B,EAAkBE,aAAa,sBAC5CF,EAAkBE,aAAa,sBAAsBjgC,MAAQ+/B,EAAkBE,aAAa,oBAC5FF,EAAkBE,aAAa,oBAAoBjgC,OAAQ+/B,EAAkBE,aAAa,gBAAiBF,EAAkBE,aAAa,eAAejgC,MAC3Jg/B,EAAO/7B,SAAwB,UAAbA,EAClB+7B,EAAOjpB,KAAOgqB,EAAkBE,aAAa,aAC3CF,EAAkBE,aAAa,aAAajgC,MAAQ+/B,EAAkBE,aAAa,gBACnFF,EAAkBE,aAAa,gBAAgBjgC,MAAQ+/B,EAAkBE,aAAa,WAAaF,EAAkBE,aAAa,WAAWjgC,MAAQ,GAKrI,WAJF+/B,EAAkBE,aAAa,uBAC7CF,EAAkBE,aAAa,uBAAuBjgC,MAAQ+/B,EAAkBE,aAAa,qBAC7FF,EAAkBE,aAAa,qBAAqBjgC,MAAQ+/B,EAAkBE,aAAa,gBAAkBF,EAAkBE,aAAa,gBAAgBjgC,MAAQ,MAGpKg/B,EAAOkB,WAAY,GAGhBlB,EAAO97B,KAGV6I,KAAKgzB,UAAUC,GAFfjzB,KAAK8zB,QAAQ,UAIjB,EAEArC,cAAcrwB,UAAUgzB,cAAgB,SAAU9jB,GAC5CA,EAAK8Y,GAAKppB,KAAK8oB,cAAcM,KAC/BppB,KAAK8oB,cAAcM,GAAK9Y,EAAK8Y,GAC7BppB,KAAK7E,YAAciB,KAAKib,MAAM/G,EAAK8Y,GAAKppB,KAAK8oB,cAAcK,KAG7D,IACI3hB,EAGAwf,EAJAH,EAAS7mB,KAAK8oB,cAAcjC,OAE5BlO,EAAMkO,EAAOjvB,OACby8B,EAAY/jB,EAAKuW,OAEjBI,EAAOoN,EAAUz8B,OAErB,IAAKovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAGzB,IAFAxf,EAAI,EAEGA,EAAImR,GAAK,CACd,GAAIkO,EAAOrf,GAAG7U,KAAO0hC,EAAUrN,GAAGr0B,GAAI,CACpCk0B,EAAOrf,GAAK6sB,EAAUrN,GACtB,KACF,CAEAxf,GAAK,CACP,CAQF,IALI8I,EAAK2Y,OAAS3Y,EAAKgkB,SACrBt0B,KAAKhJ,SAASs8B,WAAWiB,YAAYC,SAASlkB,EAAK2Y,OACnDjpB,KAAKhJ,SAASs8B,WAAWiB,YAAYE,SAASnkB,EAAKgkB,MAAOt0B,KAAKhJ,SAASs8B,WAAWC,OAGjFjjB,EAAKyY,OAGP,IAFApQ,EAAMrI,EAAKyY,OAAOnxB,OAEb4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK8oB,cAAcC,OAAO1pB,KAAKiR,EAAKyY,OAAOvhB,IAI/CxH,KAAK8oB,cAAcoB,YAAa,EAChCvE,YAAYsG,kBAAkBjsB,KAAK8oB,cAAe9oB,KAAK8yB,kBACzD,EAEArB,cAAcrwB,UAAU0xB,kBAAoB,SAAUxiB,GACpDtQ,KAAK8oB,cAAgBxY,EACrB,IAAIoQ,EAAoBuE,uBAEpBvE,GACFA,EAAkBgU,gBAAgB10B,MAGpCA,KAAK20B,iBACP,EAEAlD,cAAcrwB,UAAUuzB,gBAAkB,WACxC,IAAIrC,EAAWtyB,KAAK8oB,cAAcwJ,SAElC,IAAKA,GAAgC,IAApBA,EAAS16B,SAAiBoI,KAAKyzB,iBAG9C,OAFAzzB,KAAK8zB,QAAQ,mBACb9zB,KAAKmyB,cAAgBnyB,KAAK7E,aAI5B,IAAIy5B,EAAUtC,EAASuC,QACvB70B,KAAKmyB,cAAgByC,EAAQvE,KAAOrwB,KAAK4xB,UACzC,IAAIkD,EAAc90B,KAAK7I,KAAO6I,KAAK6zB,SAAW,IAAM7zB,KAAKoyB,WAAa,QACtEpyB,KAAKoyB,YAAc,EACnBzM,YAAYqG,SAAS8I,EAAa90B,KAAKo0B,cAAcn8B,KAAK+H,MAAO,WAC/DA,KAAK8zB,QAAQ,cACf,EAAE77B,KAAK+H,MACT,EAEAyxB,cAAcrwB,UAAU2zB,aAAe,WACtB/0B,KAAK8oB,cAAcwJ,WAGhCtyB,KAAKmyB,cAAgBnyB,KAAK7E,aAG5B6E,KAAK20B,iBACP,EAEAlD,cAAcrwB,UAAU4zB,aAAe,WACrCh1B,KAAK8zB,QAAQ,iBACb9zB,KAAKi1B,aACP,EAEAxD,cAAcrwB,UAAU8zB,cAAgB,WACtCl1B,KAAK0yB,eAAenE,cAAcvuB,KAAKmtB,YACvCntB,KAAK0yB,eAAelE,QAAQxuB,KAAK7I,MACjC6I,KAAK0yB,eAAetE,WAAWpuB,KAAK8oB,cAAcC,OAAQ/oB,KAAKg1B,aAAa/8B,KAAK+H,MACnF,EAEAyxB,cAAcrwB,UAAUwxB,gBAAkB,SAAUuC,GAClD,GAAKn1B,KAAKhJ,SAIV,IACEgJ,KAAK8oB,cAAgBqM,EAEjBn1B,KAAK0zB,gBACP1zB,KAAK7E,YAAciB,KAAKib,MAAMrX,KAAK0zB,eAAe,GAAK1zB,KAAK0zB,eAAe,IAC3E1zB,KAAKojB,WAAahnB,KAAK4lB,MAAMhiB,KAAK0zB,eAAe,MAEjD1zB,KAAK7E,YAAciB,KAAKib,MAAMrX,KAAK8oB,cAAcM,GAAKppB,KAAK8oB,cAAcK,IACzEnpB,KAAKojB,WAAahnB,KAAK4lB,MAAMhiB,KAAK8oB,cAAcK,KAGlDnpB,KAAKhJ,SAAS47B,gBAAgBuC,GAEzBA,EAASpM,SACZoM,EAASpM,OAAS,IAGpB/oB,KAAK+oB,OAAS/oB,KAAK8oB,cAAcC,OACjC/oB,KAAK4xB,UAAY5xB,KAAK8oB,cAAcsM,GACpCp1B,KAAK6xB,UAAY7xB,KAAK8oB,cAAcsM,GAAK,IACzCp1B,KAAKhJ,SAASq+B,wBAAwBF,EAASpM,QAC/C/oB,KAAKkwB,QAAUP,aAAawF,EAASjF,SAAW,IAChDlwB,KAAK8zB,QAAQ,gBACb9zB,KAAKk1B,gBACLl1B,KAAK+0B,eACL/0B,KAAKs1B,oBACLt1B,KAAKu1B,qBAEDv1B,KAAKiyB,UACPjyB,KAAK2yB,gBAAgBt+B,OAEzB,CAAE,MAAOwR,GACP7F,KAAKw1B,mBAAmB3vB,EAC1B,CACF,EAEA4rB,cAAcrwB,UAAUm0B,mBAAqB,WACtCv1B,KAAKhJ,WAINgJ,KAAKhJ,SAASs8B,WAAWiB,YAAY7C,SACvC1xB,KAAKi1B,cAELjhC,WAAWgM,KAAKu1B,mBAAmBt9B,KAAK+H,MAAO,IAEnD,EAEAyxB,cAAcrwB,UAAU6zB,YAAc,WACpC,IAAKj1B,KAAK0xB,UAAY1xB,KAAKhJ,SAASs8B,WAAWiB,YAAY7C,WAAa1xB,KAAK0yB,eAAejE,gBAAiD,WAA/BzuB,KAAKhJ,SAASy+B,eAA8Bz1B,KAAK0yB,eAAehE,iBAAkB,CAC9L1uB,KAAK0xB,UAAW,EAChB,IAAIhR,EAAoBuE,uBAEpBvE,GACFA,EAAkBgU,gBAAgB10B,MAGpCA,KAAKhJ,SAAS0+B,YACd1hC,WAAW,WACTgM,KAAK8zB,QAAQ,YACf,EAAE77B,KAAK+H,MAAO,GACdA,KAAK21B,YAED31B,KAAK9I,UACP8I,KAAKzL,MAET,CACF,EAEAk9B,cAAcrwB,UAAUw0B,OAAS,SAAU/3B,EAAOhM,GAEhD,IAAIgkC,EAA0B,iBAAVh4B,EAAqBA,OAAQuC,EAE7C01B,EAA4B,iBAAXjkC,EAAsBA,OAASuO,EAEpDJ,KAAKhJ,SAAS++B,oBAAoBF,EAAQC,EAC5C,EAEArE,cAAcrwB,UAAU40B,YAAc,SAAUtY,GAC9C1d,KAAKqyB,oBAAsB3U,CAC7B,EAEA+T,cAAcrwB,UAAUu0B,UAAY,WAClC31B,KAAKkxB,aAAelxB,KAAKqyB,kBAAoBryB,KAAK2xB,kBAAoB3xB,KAAK2xB,gBAEvE3xB,KAAKmyB,gBAAkBnyB,KAAK7E,aAAe6E,KAAKkxB,aAAelxB,KAAKmyB,gBACtEnyB,KAAKkxB,aAAelxB,KAAKmyB,eAG3BnyB,KAAK8zB,QAAQ,cACb9zB,KAAKi2B,cACLj2B,KAAK8zB,QAAQ,aACf,EAEArC,cAAcrwB,UAAU60B,YAAc,WACpC,IAAsB,IAAlBj2B,KAAK0xB,UAAuB1xB,KAAKhJ,SAIrC,IACMgJ,KAAK0gB,mBACP1gB,KAAK0gB,kBAAkBwV,aAGzBl2B,KAAKhJ,SAASi/B,YAAYj2B,KAAKkxB,aAAelxB,KAAKojB,WACrD,CAAE,MAAOvd,GACP7F,KAAKm2B,wBAAwBtwB,EAC/B,CACF,EAEA4rB,cAAcrwB,UAAU7M,KAAO,SAAUyV,GACnCA,GAAQhK,KAAKgK,OAASA,IAIJ,IAAlBhK,KAAKiyB,WACPjyB,KAAKiyB,UAAW,EAChBjyB,KAAK8zB,QAAQ,SACb9zB,KAAK2yB,gBAAgB3T,SAEjBhf,KAAKuyB,QACPvyB,KAAKuyB,OAAQ,EACbvyB,KAAK8zB,QAAQ,YAGnB,EAEArC,cAAcrwB,UAAU/M,MAAQ,SAAU2V,GACpCA,GAAQhK,KAAKgK,OAASA,IAIJ,IAAlBhK,KAAKiyB,WACPjyB,KAAKiyB,UAAW,EAChBjyB,KAAK8zB,QAAQ,UACb9zB,KAAKuyB,OAAQ,EACbvyB,KAAK8zB,QAAQ,SACb9zB,KAAK2yB,gBAAgBt+B,QAEzB,EAEAo9B,cAAcrwB,UAAUg1B,YAAc,SAAUpsB,GAC1CA,GAAQhK,KAAKgK,OAASA,KAIJ,IAAlBhK,KAAKiyB,SACPjyB,KAAKzL,OAELyL,KAAK3L,QAET,EAEAo9B,cAAcrwB,UAAUi1B,KAAO,SAAUrsB,GACnCA,GAAQhK,KAAKgK,OAASA,IAI1BhK,KAAK3L,QACL2L,KAAKgyB,UAAY,EACjBhyB,KAAKwyB,gBAAiB,EACtBxyB,KAAKs2B,wBAAwB,GAC/B,EAEA7E,cAAcrwB,UAAUm1B,cAAgB,SAAUC,GAGhD,IAFA,IAAIC,EAEKjvB,EAAI,EAAGA,EAAIxH,KAAKkwB,QAAQt4B,OAAQ4P,GAAK,EAG5C,IAFAivB,EAASz2B,KAAKkwB,QAAQ1oB,IAEX8jB,SAAWmL,EAAOnL,QAAQthB,OAASwsB,EAC5C,OAAOC,EAIX,OAAO,IACT,EAEAhF,cAAcrwB,UAAUlG,YAAc,SAAUjH,EAAOyiC,EAAS1sB,GAC9D,IAAIA,GAAQhK,KAAKgK,OAASA,EAA1B,CAIA,IAAI2sB,EAAWC,OAAO3iC,GAEtB,GAAIqjB,MAAMqf,GAAW,CACnB,IAAIF,EAASz2B,KAAKu2B,cAActiC,GAE5BwiC,GACFz2B,KAAK9E,YAAYu7B,EAAOpG,MAAM,EAElC,MAAWqG,EACT12B,KAAKs2B,wBAAwBriC,GAE7B+L,KAAKs2B,wBAAwBriC,EAAQ+L,KAAK62B,eAG5C72B,KAAK3L,OAhBL,CAiBF,EAEAo9B,cAAcrwB,UAAU01B,YAAc,SAAU7iC,EAAOyiC,EAAS1sB,GAC9D,IAAIA,GAAQhK,KAAKgK,OAASA,EAA1B,CAIA,IAAI2sB,EAAWC,OAAO3iC,GAEtB,GAAIqjB,MAAMqf,GAAW,CACnB,IAAIF,EAASz2B,KAAKu2B,cAActiC,GAE5BwiC,IACGA,EAAOrjC,SAGV4M,KAAK+2B,aAAa,CAACN,EAAOpG,KAAMoG,EAAOpG,KAAOoG,EAAOrjC,WAAW,GAFhE4M,KAAK9E,YAAYu7B,EAAOpG,MAAM,GAKpC,MACErwB,KAAK9E,YAAYy7B,EAAUD,EAAS1sB,GAGtChK,KAAKzL,MAlBL,CAmBF,EAEAk9B,cAAcrwB,UAAU41B,YAAc,SAAU/iC,GAC9C,IAAsB,IAAlB+L,KAAKiyB,WAAuC,IAAlBjyB,KAAK0xB,SAAnC,CAIA,IAAIuF,EAAYj3B,KAAK2xB,gBAAkB19B,EAAQ+L,KAAK62B,cAChDK,GAAc,EAGdD,GAAaj3B,KAAK7E,YAAc,GAAK6E,KAAK62B,cAAgB,EACvD72B,KAAK/I,MAAQ+I,KAAKgyB,YAAchyB,KAAK/I,KAK/BggC,GAAaj3B,KAAK7E,aAC3B6E,KAAKgyB,WAAa,EAEbhyB,KAAKm3B,cAAcF,EAAYj3B,KAAK7E,eACvC6E,KAAKs2B,wBAAwBW,EAAYj3B,KAAK7E,aAC9C6E,KAAKwyB,gBAAiB,EACtBxyB,KAAK8zB,QAAQ,kBAGf9zB,KAAKs2B,wBAAwBW,GAbxBj3B,KAAKm3B,cAAcF,EAAYj3B,KAAK7E,YAAc87B,EAAYj3B,KAAK7E,YAAc,KACpF+7B,GAAc,EACdD,EAAYj3B,KAAK7E,YAAc,GAa1B87B,EAAY,EAChBj3B,KAAKm3B,cAAcF,EAAYj3B,KAAK7E,gBACnC6E,KAAK/I,MAAU+I,KAAKgyB,aAAe,IAAmB,IAAdhyB,KAAK/I,MAU/CigC,GAAc,EACdD,EAAY,IATZj3B,KAAKs2B,wBAAwBt2B,KAAK7E,YAAc87B,EAAYj3B,KAAK7E,aAE5D6E,KAAKwyB,eAGRxyB,KAAK8zB,QAAQ,gBAFb9zB,KAAKwyB,gBAAiB,IAU5BxyB,KAAKs2B,wBAAwBW,GAG3BC,IACFl3B,KAAKs2B,wBAAwBW,GAC7Bj3B,KAAK3L,QACL2L,KAAK8zB,QAAQ,YA9Cf,CAgDF,EAEArC,cAAcrwB,UAAUg2B,cAAgB,SAAUlX,EAAKsE,GACrDxkB,KAAKgyB,UAAY,EAEb9R,EAAI,GAAKA,EAAI,IACXlgB,KAAK62B,cAAgB,IACnB72B,KAAK8xB,UAAY,EACnB9xB,KAAKq3B,UAAUr3B,KAAK8xB,WAEpB9xB,KAAKs3B,cAAc,IAIvBt3B,KAAK7E,YAAc+kB,EAAI,GAAKA,EAAI,GAChClgB,KAAKmyB,cAAgBnyB,KAAK7E,YAC1B6E,KAAKojB,WAAalD,EAAI,GACtBlgB,KAAKs2B,wBAAwBt2B,KAAK7E,YAAc,KAAQqpB,IAC/CtE,EAAI,GAAKA,EAAI,KAClBlgB,KAAK62B,cAAgB,IACnB72B,KAAK8xB,UAAY,EACnB9xB,KAAKq3B,UAAUr3B,KAAK8xB,WAEpB9xB,KAAKs3B,aAAa,IAItBt3B,KAAK7E,YAAc+kB,EAAI,GAAKA,EAAI,GAChClgB,KAAKmyB,cAAgBnyB,KAAK7E,YAC1B6E,KAAKojB,WAAalD,EAAI,GACtBlgB,KAAKs2B,wBAAwB,KAAQ9R,IAGvCxkB,KAAK8zB,QAAQ,eACf,EAEArC,cAAcrwB,UAAUm2B,WAAa,SAAUC,EAAMxgB,GACnD,IAAIygB,GAAgB,EAEhBz3B,KAAKiyB,WACHjyB,KAAK2xB,gBAAkB3xB,KAAKojB,WAAaoU,EAC3CC,EAAeD,EACNx3B,KAAK2xB,gBAAkB3xB,KAAKojB,WAAapM,IAClDygB,EAAezgB,EAAMwgB,IAIzBx3B,KAAKojB,WAAaoU,EAClBx3B,KAAK7E,YAAc6b,EAAMwgB,EACzBx3B,KAAKmyB,cAAgBnyB,KAAK7E,aAEJ,IAAlBs8B,GACFz3B,KAAK9E,YAAYu8B,GAAc,EAEnC,EAEAhG,cAAcrwB,UAAU21B,aAAe,SAAU7W,EAAKwX,GAKpD,GAJIA,IACF13B,KAAKsyB,SAAS16B,OAAS,GAGC,WAAtB45B,UAAUtR,EAAI,IAAkB,CAClC,IAAI1Y,EACAmR,EAAMuH,EAAItoB,OAEd,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKsyB,SAASjzB,KAAK6gB,EAAI1Y,GAE3B,MACExH,KAAKsyB,SAASjzB,KAAK6gB,GAGjBlgB,KAAKsyB,SAAS16B,QAAU8/B,GAC1B13B,KAAKo3B,cAAcp3B,KAAKsyB,SAASuC,QAAS,GAGxC70B,KAAKiyB,UACPjyB,KAAKzL,MAET,EAEAk9B,cAAcrwB,UAAUu2B,cAAgB,SAAUD,GAChD13B,KAAKsyB,SAAS16B,OAAS,EACvBoI,KAAKsyB,SAASjzB,KAAK,CAACW,KAAK8oB,cAAcK,GAAInpB,KAAK8oB,cAAcM,KAE1DsO,GACF13B,KAAKm3B,cAAc,EAEvB,EAEA1F,cAAcrwB,UAAU+1B,cAAgB,SAAU3S,GAChD,QAAIxkB,KAAKsyB,SAAS16B,SAChBoI,KAAKo3B,cAAcp3B,KAAKsyB,SAASuC,QAASrQ,IACnC,EAIX,EAEAiN,cAAcrwB,UAAUutB,QAAU,SAAU3kB,GACtCA,GAAQhK,KAAKgK,OAASA,IAAShK,KAAKhJ,WAIxCgJ,KAAKhJ,SAAS23B,UACd3uB,KAAK0yB,eAAe/D,UACpB3uB,KAAK8zB,QAAQ,WACb9zB,KAAKwvB,KAAO,KACZxvB,KAAK43B,aAAe,KACpB53B,KAAK63B,eAAiB,KACtB73B,KAAKwrB,WAAa,KAClBxrB,KAAK83B,eAAiB,KACtB93B,KAAK+3B,UAAY,KACjB/3B,KAAKhJ,SAAW,KAChBgJ,KAAK0gB,kBAAoB,KACzB1gB,KAAK0yB,eAAiB,KACtB1yB,KAAKyyB,iBAAmB,KAC1B,EAEAhB,cAAcrwB,UAAUk1B,wBAA0B,SAAUriC,GAC1D+L,KAAK2xB,gBAAkB19B,EACvB+L,KAAK21B,WACP,EAEAlE,cAAcrwB,UAAUi2B,SAAW,SAAUpiB,GAC3CjV,KAAK8xB,UAAY7c,EACjBjV,KAAKs1B,mBACP,EAEA7D,cAAcrwB,UAAUk2B,aAAe,SAAUriB,GAC/CjV,KAAK+xB,cAAgB9c,EAAM,GAAK,EAAI,EACpCjV,KAAKs1B,mBACP,EAEA7D,cAAcrwB,UAAU42B,QAAU,SAAUC,GAC1Cj4B,KAAK/I,KAAOghC,CACd,EAEAxG,cAAcrwB,UAAUlN,UAAY,SAAU+gB,EAAKjL,GAC7CA,GAAQhK,KAAKgK,OAASA,GAI1BhK,KAAK2yB,gBAAgBz+B,UAAU+gB,EACjC,EAEAwc,cAAcrwB,UAAU0e,UAAY,WAClC,OAAO9f,KAAK2yB,gBAAgB7S,WAC9B,EAEA2R,cAAcrwB,UAAUwe,KAAO,SAAU5V,GACnCA,GAAQhK,KAAKgK,OAASA,GAI1BhK,KAAK2yB,gBAAgB/S,MACvB,EAEA6R,cAAcrwB,UAAUye,OAAS,SAAU7V,GACrCA,GAAQhK,KAAKgK,OAASA,GAI1BhK,KAAK2yB,gBAAgB9S,QACvB,EAEA4R,cAAcrwB,UAAUk0B,kBAAoB,WAC1Ct1B,KAAK62B,cAAgB72B,KAAK6xB,UAAY7xB,KAAK8xB,UAAY9xB,KAAK+xB,cAC5D/xB,KAAK2yB,gBAAgB1T,QAAQjf,KAAK8xB,UAAY9xB,KAAK+xB,cACrD,EAEAN,cAAcrwB,UAAU82B,QAAU,WAChC,OAAOl4B,KAAK7I,IACd,EAEAs6B,cAAcrwB,UAAU6rB,cAAgB,SAAUC,GAChD,IAAI/1B,EAAO,GAEX,GAAI+1B,EAAU30B,EACZpB,EAAO+1B,EAAUjJ,OACZ,GAAIjkB,KAAKmtB,WAAY,CAC1B,IAAIE,EAAYH,EAAUjJ,GAEY,IAAlCoJ,EAAU9pB,QAAQ,aACpB8pB,EAAYA,EAAUpgB,MAAM,KAAK,IAGnC9V,EAAO6I,KAAKmtB,WAAaE,CAC3B,MACEl2B,EAAO6I,KAAK7I,KACZA,GAAQ+1B,EAAUI,EAAIJ,EAAUI,EAAI,GACpCn2B,GAAQ+1B,EAAUjJ,EAGpB,OAAO9sB,CACT,EAEAs6B,cAAcrwB,UAAU+2B,aAAe,SAAUxlC,GAI/C,IAHA,IAAI6U,EAAI,EACJmR,EAAM3Y,KAAK+oB,OAAOnxB,OAEf4P,EAAImR,GAAK,CACd,GAAIhmB,IAAOqN,KAAK+oB,OAAOvhB,GAAG7U,GACxB,OAAOqN,KAAK+oB,OAAOvhB,GAGrBA,GAAK,CACP,CAEA,OAAO,IACT,EAEAiqB,cAAcrwB,UAAUg3B,KAAO,WAC7Bp4B,KAAKhJ,SAASohC,MAChB,EAEA3G,cAAcrwB,UAAUi3B,KAAO,WAC7Br4B,KAAKhJ,SAASqhC,MAChB,EAEA5G,cAAcrwB,UAAUlO,YAAc,SAAUwjC,GAC9C,OAAOA,EAAU12B,KAAK7E,YAAc6E,KAAK7E,YAAc6E,KAAK4xB,SAC9D,EAEAH,cAAcrwB,UAAUk3B,mBAAqB,SAAUnhC,EAAM0xB,EAAcjmB,GACzE,IACgB5C,KAAKhJ,SAASuhC,iBAAiBphC,GACrCmhC,mBAAmBzP,EAAcjmB,EAC3C,CAAE,MAAOiD,GACT,CACF,EAEA4rB,cAAcrwB,UAAU0yB,QAAU,SAAU9pB,GAC1C,GAAIhK,KAAKwvB,MAAQxvB,KAAKwvB,KAAKxlB,GACzB,OAAQA,GACN,IAAK,aACHhK,KAAKsvB,aAAatlB,EAAM,IAAI0Y,kBAAkB1Y,EAAMhK,KAAKkxB,aAAclxB,KAAK7E,YAAa6E,KAAK62B,gBAC9F,MAEF,IAAK,aACH72B,KAAK+yB,gBAAgBpQ,YAAc3iB,KAAKkxB,aACxClxB,KAAK+yB,gBAAgBnQ,UAAY5iB,KAAK7E,YACtC6E,KAAK+yB,gBAAgBjQ,UAAY9iB,KAAK62B,cACtC72B,KAAKsvB,aAAatlB,EAAMhK,KAAK+yB,iBAC7B,MAEF,IAAK,eACH/yB,KAAKsvB,aAAatlB,EAAM,IAAIgZ,oBAAoBhZ,EAAMhK,KAAK/I,KAAM+I,KAAKgyB,UAAWhyB,KAAK6xB,YACtF,MAEF,IAAK,WACH7xB,KAAKsvB,aAAatlB,EAAM,IAAI+Y,gBAAgB/Y,EAAMhK,KAAK6xB,YACvD,MAEF,IAAK,eACH7xB,KAAKsvB,aAAatlB,EAAM,IAAImZ,oBAAoBnZ,EAAMhK,KAAKojB,WAAYpjB,KAAK7E,cAC5E,MAEF,IAAK,UACH6E,KAAKsvB,aAAatlB,EAAM,IAAIqZ,eAAerZ,EAAMhK,OACjD,MAEF,QACEA,KAAKsvB,aAAatlB,GAIX,eAATA,GAAyBhK,KAAK43B,cAChC53B,KAAK43B,aAAa/0B,KAAK7C,KAAM,IAAI0iB,kBAAkB1Y,EAAMhK,KAAKkxB,aAAclxB,KAAK7E,YAAa6E,KAAK6xB,YAGxF,iBAAT7nB,GAA2BhK,KAAK63B,gBAClC73B,KAAK63B,eAAeh1B,KAAK7C,KAAM,IAAIgjB,oBAAoBhZ,EAAMhK,KAAK/I,KAAM+I,KAAKgyB,UAAWhyB,KAAK6xB,YAGlF,aAAT7nB,GAAuBhK,KAAKwrB,YAC9BxrB,KAAKwrB,WAAW3oB,KAAK7C,KAAM,IAAI+iB,gBAAgB/Y,EAAMhK,KAAK6xB,YAG/C,iBAAT7nB,GAA2BhK,KAAK83B,gBAClC93B,KAAK83B,eAAej1B,KAAK7C,KAAM,IAAImjB,oBAAoBnZ,EAAMhK,KAAKojB,WAAYpjB,KAAK7E,cAGxE,YAAT6O,GAAsBhK,KAAK+3B,WAC7B/3B,KAAK+3B,UAAUl1B,KAAK7C,KAAM,IAAIqjB,eAAerZ,EAAMhK,MAEvD,EAEAyxB,cAAcrwB,UAAU+0B,wBAA0B,SAAU5S,GAC1D,IAAI1d,EAAQ,IAAIyd,wBAAwBC,EAAavjB,KAAKkxB,cAC1DlxB,KAAKsvB,aAAa,QAASzpB,GAEvB7F,KAAKyrB,SACPzrB,KAAKyrB,QAAQ5oB,KAAK7C,KAAM6F,EAE5B,EAEA4rB,cAAcrwB,UAAUo0B,mBAAqB,SAAUjS,GACrD,IAAI1d,EAAQ,IAAI2d,mBAAmBD,EAAavjB,KAAKkxB,cACrDlxB,KAAKsvB,aAAa,QAASzpB,GAEvB7F,KAAKyrB,SACPzrB,KAAKyrB,QAAQ5oB,KAAK7C,KAAM6F,EAE5B,EAEA,IAAI2yB,iBAAmB,WACrB,IAAIvO,EAAW,CAAC,EACZwO,EAAuB,GACvBC,EAAW,EACX/f,EAAM,EACNggB,EAAuB,EACvBC,GAAW,EACXC,GAAY,EAEhB,SAASC,EAAcC,GAIrB,IAHA,IAAIvxB,EAAI,EACJwxB,EAAWD,EAAGtgC,OAEX+O,EAAImR,GACL8f,EAAqBjxB,GAAG+jB,YAAcyN,IACxCP,EAAqB/I,OAAOloB,EAAG,GAC/BA,GAAK,EACLmR,GAAO,EAEFqgB,EAAS/G,UACZgH,KAIJzxB,GAAK,CAET,CAEA,SAAS0xB,EAAkBhX,EAAS4G,GAClC,IAAK5G,EACH,OAAO,KAKT,IAFA,IAAI1a,EAAI,EAEDA,EAAImR,GAAK,CACd,GAAI8f,EAAqBjxB,GAAG2xB,OAASjX,GAA4C,OAAjCuW,EAAqBjxB,GAAG2xB,KACtE,OAAOV,EAAqBjxB,GAAG+jB,UAGjC/jB,GAAK,CACP,CAEA,IAAIwxB,EAAW,IAAIvH,cAGnB,OAFAkC,EAAeqF,EAAU9W,GACzB8W,EAASjF,QAAQ7R,EAAS4G,GACnBkQ,CACT,CAcA,SAASI,IACPT,GAAwB,EACxBU,GACF,CAEA,SAASJ,IACPN,GAAwB,CAC1B,CAEA,SAAShF,EAAeqF,EAAU9W,GAChC8W,EAAS/jC,iBAAiB,UAAW6jC,GACrCE,EAAS/jC,iBAAiB,UAAWmkC,GACrCJ,EAAS/jC,iBAAiB,QAASgkC,GACnCR,EAAqBp5B,KAAK,CACxB85B,KAAMjX,EACNqJ,UAAWyN,IAEbrgB,GAAO,CACT,CAiCA,SAASqG,EAAOsa,GACd,IACI9xB,EADA+xB,EAAcD,EAAUZ,EAG5B,IAAKlxB,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAUyL,YAAYuC,GAGhDb,EAAWY,EAEPX,IAAyBE,EAC3BplC,OAAO+lC,sBAAsBxa,GAE7B4Z,GAAW,CAEf,CAEA,SAASviB,EAAMijB,GACbZ,EAAWY,EACX7lC,OAAO+lC,sBAAsBxa,EAC/B,CA+EA,SAASqa,KACFR,GAAaF,GACZC,IACFnlC,OAAO+lC,sBAAsBnjB,GAC7BuiB,GAAW,EAGjB,CAsDA,OAnBA3O,EAASiP,kBAAoBA,EAC7BjP,EAAS0B,cA7KT,SAAuBsH,GACrB,IAAI+F,EAAW,IAAIvH,cAGnB,OAFAkC,EAAeqF,EAAU,MACzBA,EAAShG,UAAUC,GACZ+F,CACT,EAyKA/O,EAASoN,SAvKT,SAAkBpiB,EAAKsW,GACrB,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAU8L,SAASpiB,EAAKsW,EAEpD,EAkKAtB,EAASqN,aAhKT,SAAsBriB,EAAKsW,GACzB,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAU+L,aAAariB,EAAKsW,EAExD,EA2JAtB,EAAS11B,KAzJT,SAAcg3B,GACZ,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAUh3B,KAAKg3B,EAE3C,EAoJAtB,EAAS51B,MA5HT,SAAek3B,GACb,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAUl3B,MAAMk3B,EAE5C,EAuHAtB,EAASoM,KA7GT,SAAc9K,GACZ,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAU8K,KAAK9K,EAE3C,EAwGAtB,EAASmM,YAtGT,SAAqB7K,GACnB,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAU6K,YAAY7K,EAElD,EAiGAtB,EAASwP,iBAvFT,SAA0B3Q,EAAe4Q,EAAY1iC,GACnD,IACIwQ,EADAmyB,EAAe,GAAG9mC,OAAO,GAAG2T,MAAM3D,KAAK9R,SAASoM,uBAAuB,WAAY,GAAGqJ,MAAM3D,KAAK9R,SAASoM,uBAAuB,eAEjIy8B,EAAWD,EAAa/hC,OAE5B,IAAK4P,EAAI,EAAGA,EAAIoyB,EAAUpyB,GAAK,EACzBxQ,GACF2iC,EAAanyB,GAAGpO,aAAa,eAAgBpC,GAG/CkiC,EAAkBS,EAAanyB,GAAIshB,GAGrC,GAAI4Q,GAA2B,IAAbE,EAAgB,CAC3B5iC,IACHA,EAAW,OAGb,IAAInD,EAAO9C,SAAS8oC,qBAAqB,QAAQ,GACjDhmC,EAAKimC,UAAY,GACjB,IAAIC,EAAMjc,UAAU,OACpBic,EAAI5oC,MAAM0M,MAAQ,OAClBk8B,EAAI5oC,MAAMU,OAAS,OACnBkoC,EAAI3gC,aAAa,eAAgBpC,GACjCnD,EAAKsf,YAAY4mB,GACjBb,EAAkBa,EAAKjR,EACzB,CACF,EA6DAmB,EAAS2L,OA3DT,WACE,IAAIpuB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAUqK,QAEtC,EAuDA3L,EAAS/uB,YA1HT,SAAqBjH,EAAOyiC,EAASnL,GACnC,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAUrwB,YAAYjH,EAAOyiC,EAASnL,EAElE,EAqHAtB,EAAS0E,QAnGT,SAAiBpD,GACf,IAAI/jB,EAEJ,IAAKA,EAAImR,EAAM,EAAGnR,GAAK,EAAGA,GAAK,EAC7BixB,EAAqBjxB,GAAG+jB,UAAUoD,QAAQpD,EAE9C,EA8FAtB,EAAS+P,OA9CT,WACEnB,GAAY,CACd,EA6CA5O,EAASgQ,SA3CT,WACEpB,GAAY,EACZQ,GACF,EAyCApP,EAAS/1B,UAvCT,SAAmB+gB,EAAKsW,GACtB,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAUr3B,UAAU+gB,EAAKsW,EAErD,EAkCAtB,EAASrK,KAhCT,SAAc2L,GACZ,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAU3L,KAAK2L,EAE3C,EA2BAtB,EAASpK,OAzBT,SAAgB0L,GACd,IAAI/jB,EAEJ,IAAKA,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBixB,EAAqBjxB,GAAG+jB,UAAU1L,OAAO0L,EAE7C,EAoBAtB,EAASiQ,wBA9NT,WACE,IAAI1yB,EACAoyB,EAAWnB,EAAqB7gC,OAChCuiC,EAAa,GAEjB,IAAK3yB,EAAI,EAAGA,EAAIoyB,EAAUpyB,GAAK,EAC7B2yB,EAAW96B,KAAKo5B,EAAqBjxB,GAAG+jB,WAG1C,OAAO4O,CACT,EAqNOlQ,CACT,CAjRuB,GAoRnBmQ,cAAgB,WAWlB,IAAIrM,EAAK,CACTA,gBAGA,SAAyB/f,EAAGC,EAAGC,EAAGmW,EAAG0M,GACnC,IAAIsJ,EAAMtJ,IAAO,OAAS/iB,EAAI,IAAMC,EAAI,IAAMC,EAAI,IAAMmW,GAAG1T,QAAQ,MAAO,KAE1E,GAAI2pB,EAAQD,GACV,OAAOC,EAAQD,GAGjB,IAAIE,EAAY,IAAIC,EAAa,CAACxsB,EAAGC,EAAGC,EAAGmW,IAE3C,OADAiW,EAAQD,GAAOE,EACRA,CACT,GAZID,EAAU,CAAC,EAmBXG,EAAmB,GACnBC,EAAkB,GAAOD,EAAmB,GAC5CE,EAAgD,mBAAjBva,aAEnC,SAASvH,EAAE+hB,EAAKC,GACd,OAAO,EAAM,EAAMA,EAAM,EAAMD,CACjC,CAEA,SAASE,EAAEF,EAAKC,GACd,OAAO,EAAMA,EAAM,EAAMD,CAC3B,CAEA,SAASr4B,EAAEq4B,GACT,OAAO,EAAMA,CACf,CAGA,SAASG,EAAWC,EAAIJ,EAAKC,GAC3B,QAAShiB,EAAE+hB,EAAKC,GAAOG,EAAKF,EAAEF,EAAKC,IAAQG,EAAKz4B,EAAEq4B,IAAQI,CAC5D,CAGA,SAASC,EAASD,EAAIJ,EAAKC,GACzB,OAAO,EAAMhiB,EAAE+hB,EAAKC,GAAOG,EAAKA,EAAK,EAAMF,EAAEF,EAAKC,GAAOG,EAAKz4B,EAAEq4B,EAClE,CAoCA,SAASJ,EAAaU,GACpBl7B,KAAKm7B,GAAKD,EACVl7B,KAAKo7B,eAAiBT,EAAwB,IAAIva,aAAaqa,GAAoB,IAAI3iC,MAAM2iC,GAC7Fz6B,KAAKq7B,cAAe,EACpBr7B,KAAKsK,IAAMtK,KAAKsK,IAAIrS,KAAK+H,KAC3B,CAqEA,OAnEAw6B,EAAap5B,UAAY,CACvBkJ,IAAK,SAAa3K,GAChB,IAAI27B,EAAMt7B,KAAKm7B,GAAG,GACdI,EAAMv7B,KAAKm7B,GAAG,GACdK,EAAMx7B,KAAKm7B,GAAG,GACdM,EAAMz7B,KAAKm7B,GAAG,GAElB,OADKn7B,KAAKq7B,cAAcr7B,KAAK07B,cACzBJ,IAAQC,GAAOC,IAAQC,EAAY97B,EAG7B,IAANA,EAAgB,EACV,IAANA,EAAgB,EACbo7B,EAAW/6B,KAAK27B,UAAUh8B,GAAI47B,EAAKE,EAC5C,EAEAC,YAAa,WACX,IAAIJ,EAAMt7B,KAAKm7B,GAAG,GACdI,EAAMv7B,KAAKm7B,GAAG,GACdK,EAAMx7B,KAAKm7B,GAAG,GACdM,EAAMz7B,KAAKm7B,GAAG,GAClBn7B,KAAKq7B,cAAe,EAEhBC,IAAQC,GAAOC,IAAQC,GACzBz7B,KAAK47B,mBAET,EACAA,kBAAmB,WAIjB,IAHA,IAAIN,EAAMt7B,KAAKm7B,GAAG,GACdK,EAAMx7B,KAAKm7B,GAAG,GAET3zB,EAAI,EAAGA,EAAIizB,IAAoBjzB,EACtCxH,KAAKo7B,eAAe5zB,GAAKuzB,EAAWvzB,EAAIkzB,EAAiBY,EAAKE,EAElE,EAKAG,UAAW,SAAmBE,GAQ5B,IAPA,IAAIP,EAAMt7B,KAAKm7B,GAAG,GACdK,EAAMx7B,KAAKm7B,GAAG,GACdW,EAAgB97B,KAAKo7B,eACrBW,EAAgB,EAChBC,EAAgB,EAChBC,EAAaxB,EAAmB,EAE7BuB,IAAkBC,GAAcH,EAAcE,IAAkBH,IAAMG,EAC3ED,GAAiBrB,EAKnB,IACIwB,EAAYH,GADJF,EAAKC,IAFfE,KAEgDF,EAAcE,EAAgB,GAAKF,EAAcE,IAC5DtB,EACnCyB,EAAelB,EAASiB,EAAWZ,EAAKE,GAE5C,OAAIW,GA9He,KAgDvB,SAA8BN,EAAIO,EAASd,EAAKE,GAC9C,IAAK,IAAIh0B,EAAI,EAAGA,EAlDM,IAkDmBA,EAAG,CAC1C,IAAI60B,EAAepB,EAASmB,EAASd,EAAKE,GAC1C,GAAqB,IAAjBa,EAAsB,OAAOD,EAEjCA,IADerB,EAAWqB,EAASd,EAAKE,GAAOK,GACzBQ,CACxB,CAEA,OAAOD,CACT,CAsEaE,CAAqBT,EAAIK,EAAWZ,EAAKE,GAG7B,IAAjBW,EACKD,EAtGb,SAAyBL,EAAIU,EAAIC,EAAIlB,EAAKE,GACxC,IAAIiB,EACAC,EACAl1B,EAAI,EAER,IAEEi1B,EAAW1B,EADX2B,EAAWH,GAAMC,EAAKD,GAAM,EACIjB,EAAKE,GAAOK,GAE7B,EACbW,EAAKE,EAELH,EAAKG,QAEAtgC,KAAKC,IAAIogC,GA1CQ,QA0C+Bj1B,EAzC1B,IA2C/B,OAAOk1B,CACT,CAwFWC,CAAgBd,EAAIE,EAAeA,EAAgBrB,EAAiBY,EAAKE,EAClF,GAEKzN,CACT,CAvKoB,GAyKhB6O,QAKK,CACL,OALF,SAAiB1c,GACf,OAAOA,EAAIrtB,OAAOytB,iBAAiBJ,EAAItoB,QACzC,GAOEilC,YACK,SAAUC,EAAeC,EAASC,GACvC,IAAIC,EAAU,EACVC,EAAaJ,EACbK,EAAO7c,iBAAiB4c,GAiC5B,MAhCS,CACPE,WAIF,WAUE,OAPIH,EAEQE,EADVF,GAAW,GAGDF,GAId,EAdE1+B,QAgBF,SAAiB6jB,GACX+a,IAAYC,IACdC,EAAOP,QAAgB,OAAEO,GACzBD,GAAc,GAGZF,GACFA,EAAS9a,GAGXib,EAAKF,GAAW/a,EAChB+a,GAAW,CACb,EAGF,EAGEI,iBASKR,YAAY,GARnB,WACE,MAAO,CACLS,YAAa,EACbC,SAAUvd,iBAAiB,UAAWqF,2BACtCmY,QAASxd,iBAAiB,UAAWqF,2BAEzC,IAKEoY,mBAmBKZ,YAAY,GAlBnB,WACE,MAAO,CACLW,QAAS,GACTE,YAAa,EAEjB,IAEA,SAAiBxb,GACf,IAAI1a,EACAmR,EAAMuJ,EAAQsb,QAAQ5lC,OAE1B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB61B,iBAAiBh/B,QAAQ6jB,EAAQsb,QAAQh2B,IAG3C0a,EAAQsb,QAAQ5lC,OAAS,CAC3B,IAKF,SAAS+lC,cACP,IAAIC,EAAOxhC,KAEX,SAASyhC,EAAcC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GACzC,IAAIC,EAAON,EAAKG,EAAKF,EAAKG,EAAKF,EAAKG,EAAKD,EAAKD,EAAKE,EAAKL,EAAKE,EAAKD,EAClE,OAAOK,GAAQ,MAASA,EAAO,IACjC,CA2BA,IAAIC,EACK,SAAUC,EAAKC,EAAKC,EAAKC,GAC9B,IACI/lB,EACAlR,EACAmR,EACA+lB,EACAC,EAEAC,EAPAC,EAAgBxZ,0BAMhBiY,EAAc,EAEdpjB,EAAQ,GACR4kB,EAAY,GACZC,EAAa1B,iBAAiBD,aAGlC,IAFAzkB,EAAM6lB,EAAI5mC,OAEL8gB,EAAI,EAAGA,EAAImmB,EAAenmB,GAAK,EAAG,CAIrC,IAHAimB,EAAOjmB,GAAKmmB,EAAgB,GAC5BD,EAAa,EAERp3B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBk3B,EAAU3d,MAAM,EAAI4d,EAAM,GAAKL,EAAI92B,GAAK,EAAIuZ,MAAM,EAAI4d,EAAM,GAAKA,EAAOH,EAAIh3B,GAAK,GAAK,EAAIm3B,GAAQ5d,MAAM4d,EAAM,GAAKF,EAAIj3B,GAAKuZ,MAAM4d,EAAM,GAAKJ,EAAI/2B,GACjJ0S,EAAM1S,GAAKk3B,EAEU,OAAjBI,EAAUt3B,KACZo3B,GAAc7d,MAAM7G,EAAM1S,GAAKs3B,EAAUt3B,GAAI,IAG/Cs3B,EAAUt3B,GAAK0S,EAAM1S,GAGnBo3B,IAEFtB,GADAsB,EAAa3d,OAAO2d,IAItBG,EAAWxB,SAAS7kB,GAAKimB,EACzBI,EAAWvB,QAAQ9kB,GAAK4kB,CAC1B,CAGA,OADAyB,EAAWzB,YAAcA,EAClByB,CACT,EA4BF,SAASC,EAAWpnC,GAClBoI,KAAKi/B,cAAgB,EACrBj/B,KAAKk7B,OAAS,IAAIpjC,MAAMF,EAC1B,CAEA,SAASsnC,EAAUC,EAASjlB,GAC1Bla,KAAKo/B,cAAgBD,EACrBn/B,KAAKka,MAAQA,CACf,CAEA,IACMmlB,EADFC,GACED,EAAa,CAAC,EACX,SAAUf,EAAKC,EAAKC,EAAKC,GAC9B,IAAIc,GAAcjB,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,GAAK,IAAMC,EAAI,GAAK,IAAMA,EAAI,IAAI9tB,QAAQ,MAAO,KAElJ,IAAK0uB,EAAWE,GAAa,CAC3B,IACI7mB,EACAlR,EACAmR,EACA+lB,EACAC,EAEAC,EACA1kB,EARA2kB,EAAgBxZ,0BAMhBiY,EAAc,EAGdwB,EAAY,KAEG,IAAfR,EAAI1mC,SAAiB0mC,EAAI,KAAOC,EAAI,IAAMD,EAAI,KAAOC,EAAI,KAAOV,EAAcS,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAID,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,KAAOX,EAAcS,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAKE,EAAI,GAAIF,EAAI,GAAKE,EAAI,MACjOI,EAAgB,GAGlB,IAAIW,EAAa,IAAIR,EAAWH,GAGhC,IAFAlmB,EAAM6lB,EAAI5mC,OAEL8gB,EAAI,EAAGA,EAAImmB,EAAenmB,GAAK,EAAG,CAKrC,IAJAwB,EAAQoG,iBAAiB3H,GACzBgmB,EAAOjmB,GAAKmmB,EAAgB,GAC5BD,EAAa,EAERp3B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBk3B,EAAU3d,MAAM,EAAI4d,EAAM,GAAKL,EAAI92B,GAAK,EAAIuZ,MAAM,EAAI4d,EAAM,GAAKA,GAAQL,EAAI92B,GAAKg3B,EAAIh3B,IAAM,GAAK,EAAIm3B,GAAQ5d,MAAM4d,EAAM,IAAMJ,EAAI/2B,GAAKi3B,EAAIj3B,IAAMuZ,MAAM4d,EAAM,GAAKJ,EAAI/2B,GACvK0S,EAAM1S,GAAKk3B,EAEO,OAAdI,IACFF,GAAc7d,MAAM7G,EAAM1S,GAAKs3B,EAAUt3B,GAAI,IAKjD81B,GADAsB,EAAa3d,OAAO2d,GAEpBY,EAAWtE,OAAOxiB,GAAK,IAAIwmB,EAAUN,EAAY1kB,GACjD4kB,EAAY5kB,CACd,CAEAslB,EAAWP,cAAgB3B,EAC3B+B,EAAWE,GAAcC,CAC3B,CAEA,OAAOH,EAAWE,EACpB,GAGF,SAASE,EAAgBd,EAAMa,GAC7B,IAAIjC,EAAWiC,EAAWjC,SACtBC,EAAUgC,EAAWhC,QACrB7kB,EAAM4kB,EAAS3lC,OACf8nC,EAAUve,SAASxI,EAAM,GAAKgmB,GAC9BgB,EAAYhB,EAAOa,EAAWlC,YAC9BsC,EAAQ,EAEZ,GAAIF,IAAY/mB,EAAM,GAAiB,IAAZ+mB,GAAiBC,IAAcnC,EAAQkC,GAChE,OAAOnC,EAASmC,GAMlB,IAHA,IAAIG,EAAMrC,EAAQkC,GAAWC,GAAa,EAAI,EAC1CjiB,GAAO,EAEJA,GAQL,GAPI8f,EAAQkC,IAAYC,GAAanC,EAAQkC,EAAU,GAAKC,GAC1DC,GAASD,EAAYnC,EAAQkC,KAAalC,EAAQkC,EAAU,GAAKlC,EAAQkC,IACzEhiB,GAAO,GAEPgiB,GAAWG,EAGTH,EAAU,GAAKA,GAAW/mB,EAAM,EAAG,CAErC,GAAI+mB,IAAY/mB,EAAM,EACpB,OAAO4kB,EAASmC,GAGlBhiB,GAAO,CACT,CAGF,OAAO6f,EAASmC,IAAYnC,EAASmC,EAAU,GAAKnC,EAASmC,IAAYE,CAC3E,CAUA,IAAIE,EAAsB9f,iBAAiB,UAAW,GAyDtD,MAAO,CACL+f,kBA7LF,SAA2BC,GACzB,IAKIx4B,EALAy4B,EAAiBxC,mBAAmBL,aACpCrT,EAASiW,EAAU9xB,EACnBgyB,EAAQF,EAAUjc,EAClBoc,EAAQH,EAAU5X,EAClBgY,EAAQJ,EAAUx4B,EAElBmR,EAAMqnB,EAAU/C,QAChBO,EAAUyC,EAAezC,QACzBE,EAAc,EAElB,IAAKl2B,EAAI,EAAGA,EAAImR,EAAM,EAAGnR,GAAK,EAC5Bg2B,EAAQh2B,GAAK62B,EAAgB6B,EAAM14B,GAAI04B,EAAM14B,EAAI,GAAI24B,EAAM34B,GAAI44B,EAAM54B,EAAI,IACzEk2B,GAAeF,EAAQh2B,GAAG81B,YAS5B,OANIvT,GAAUpR,IACZ6kB,EAAQh2B,GAAK62B,EAAgB6B,EAAM14B,GAAI04B,EAAM,GAAIC,EAAM34B,GAAI44B,EAAM,IACjE1C,GAAeF,EAAQh2B,GAAG81B,aAG5B2C,EAAevC,YAAcA,EACtBuC,CACT,EAuKEI,cAzDF,SAAuB/B,EAAKC,EAAKC,EAAKC,EAAK6B,EAAWC,EAASf,GACzDc,EAAY,EACdA,EAAY,EACHA,EAAY,IACrBA,EAAY,GAGd,IAGI94B,EAHAg5B,EAAKf,EAAgBa,EAAWd,GAEhCiB,EAAKhB,EADTc,EAAUA,EAAU,EAAI,EAAIA,EACMf,GAE9B7mB,EAAM2lB,EAAI1mC,OACV8oC,EAAK,EAAIF,EACTG,EAAK,EAAIF,EACTG,EAASF,EAAKA,EAAKA,EACnBG,EAAWL,EAAKE,EAAKA,EAAK,EAE1BI,EAAWN,EAAKA,EAAKE,EAAK,EAE1BK,EAASP,EAAKA,EAAKA,EAEnBQ,EAASN,EAAKA,EAAKC,EACnBM,EAAWT,EAAKE,EAAKC,EAAKD,EAAKF,EAAKG,EAAKD,EAAKA,EAAKD,EAEnDS,EAAWV,EAAKA,EAAKG,EAAKD,EAAKF,EAAKC,EAAKD,EAAKE,EAAKD,EAEnDU,EAASX,EAAKA,EAAKC,EAEnBW,EAASV,EAAKC,EAAKA,EACnBU,EAAWb,EAAKG,EAAKA,EAAKD,EAAKD,EAAKE,EAAKD,EAAKC,EAAKF,EAEnDa,EAAWd,EAAKC,EAAKE,EAAKD,EAAKD,EAAKA,EAAKD,EAAKG,EAAKF,EAEnDc,EAASf,EAAKC,EAAKA,EAEnBe,EAASb,EAAKA,EAAKA,EACnBc,EAAWhB,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,EAEnDiB,EAAWjB,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,EAEnDkB,EAASlB,EAAKA,EAAKA,EAEvB,IAAKj5B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBs4B,EAAwB,EAAJt4B,GAASo2B,EAAK5b,MAAoF,KAA7E4e,EAAStC,EAAI92B,GAAKq5B,EAAWrC,EAAIh3B,GAAKs5B,EAAWrC,EAAIj3B,GAAKu5B,EAASxC,EAAI/2B,KAAc,IAE9Hs4B,EAAwB,EAAJt4B,EAAQ,GAAKo2B,EAAK5b,MAAoF,KAA7Egf,EAAS1C,EAAI92B,GAAKy5B,EAAWzC,EAAIh3B,GAAK05B,EAAWzC,EAAIj3B,GAAK25B,EAAS5C,EAAI/2B,KAAc,IAElIs4B,EAAwB,EAAJt4B,EAAQ,GAAKo2B,EAAK5b,MAAoF,KAA7Eof,EAAS9C,EAAI92B,GAAK65B,EAAW7C,EAAIh3B,GAAK85B,EAAW7C,EAAIj3B,GAAK+5B,EAAShD,EAAI/2B,KAAc,IAElIs4B,EAAwB,EAAJt4B,EAAQ,GAAKo2B,EAAK5b,MAAoF,KAA7Ewf,EAASlD,EAAI92B,GAAKi6B,EAAWjD,EAAIh3B,GAAKk6B,EAAWjD,EAAIj3B,GAAKm6B,EAASpD,EAAI/2B,KAAc,IAGpI,OAAOs4B,CACT,EAKE8B,kBApEF,SAA2BtD,EAAKC,EAAKC,EAAKC,EAAKoD,EAASrC,GACtD,IAAIiB,EAAKhB,EAAgBoC,EAASrC,GAC9BmB,EAAK,EAAIF,EAGb,MAAO,CAFG7C,EAAK5b,MAAwK,KAAjK2e,EAAKA,EAAKA,EAAKrC,EAAI,IAAMmC,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,GAAMjC,EAAI,IAAMiC,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,GAAMhC,EAAI,GAAKgC,EAAKA,EAAKA,EAAKlC,EAAI,KAAc,IACrLX,EAAK5b,MAAwK,KAAjK2e,EAAKA,EAAKA,EAAKrC,EAAI,IAAMmC,EAAKE,EAAKA,EAAKA,EAAKF,EAAKE,EAAKA,EAAKA,EAAKF,GAAMjC,EAAI,IAAMiC,EAAKA,EAAKE,EAAKA,EAAKF,EAAKA,EAAKA,EAAKE,EAAKF,GAAMhC,EAAI,GAAKgC,EAAKA,EAAKA,EAAKlC,EAAI,KAAc,IAEjM,EA+DEe,gBAAiBA,EACjBzB,cAAeA,EACfiE,cAvQF,SAAuBhE,EAAIC,EAAIgE,EAAI/D,EAAIC,EAAI+D,EAAI9D,EAAIC,EAAI8D,GACrD,GAAW,IAAPF,GAAmB,IAAPC,GAAmB,IAAPC,EAC1B,OAAOpE,EAAcC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAG3C,IAGI+D,EAHAC,EAAQvE,EAAK1c,KAAK0c,EAAK5c,IAAIgd,EAAKF,EAAI,GAAKF,EAAK5c,IAAIid,EAAKF,EAAI,GAAKH,EAAK5c,IAAIghB,EAAKD,EAAI,IAClFK,EAAQxE,EAAK1c,KAAK0c,EAAK5c,IAAIkd,EAAKJ,EAAI,GAAKF,EAAK5c,IAAImd,EAAKJ,EAAI,GAAKH,EAAK5c,IAAIihB,EAAKF,EAAI,IAClFM,EAAQzE,EAAK1c,KAAK0c,EAAK5c,IAAIkd,EAAKF,EAAI,GAAKJ,EAAK5c,IAAImd,EAAKF,EAAI,GAAKL,EAAK5c,IAAIihB,EAAKD,EAAI,IAetF,OAVIE,EAFAC,EAAQC,EACND,EAAQE,EACCF,EAAQC,EAAQC,EAEhBA,EAAQD,EAAQD,EAEpBE,EAAQD,EACNC,EAAQD,EAAQD,EAEhBC,EAAQD,EAAQE,IAGV,MAAUH,EAAW,IAC1C,EAkPF,CAEA,IAAII,IAAM3E,cAEN4E,UAAY/kB,oBACZglB,QAAUpmC,KAAKC,IAEnB,SAASomC,iBAAiBC,EAAUC,GAClC,IACIC,EADAC,EAAa7iC,KAAK6iC,WAGA,qBAAlB7iC,KAAK8iC,WACPF,EAAW5iB,iBAAiB,UAAWhgB,KAAK+iC,GAAGnrC,SAWjD,IARA,IAIIorC,EACAC,EACAC,EA6BAxqB,EACAwO,EACAyX,EACA1X,EACAD,EACAmc,EAxCAC,EAAiBT,EAAQU,UACzB77B,EAAI47B,EACJzqB,EAAM3Y,KAAKsjC,UAAU1rC,OAAS,EAC9B8lB,GAAO,EAKJA,GAAM,CAIX,GAHAslB,EAAUhjC,KAAKsjC,UAAU97B,GACzBy7B,EAAcjjC,KAAKsjC,UAAU97B,EAAI,GAE7BA,IAAMmR,EAAM,GAAK+pB,GAAYO,EAAY9e,EAAI0e,EAAY,CACvDG,EAAQnf,IACVmf,EAAUC,GAGZG,EAAiB,EACjB,KACF,CAEA,GAAIH,EAAY9e,EAAI0e,EAAaH,EAAU,CACzCU,EAAiB57B,EACjB,KACF,CAEIA,EAAImR,EAAM,EACZnR,GAAK,GAEL47B,EAAiB,EACjB1lB,GAAO,EAEX,CAEAwlB,EAAmBljC,KAAKujC,kBAAkB/7B,IAAM,CAAC,EAOjD,IAEIg8B,EAFAC,EAAcR,EAAY9e,EAAI0e,EAC9Ba,EAAUV,EAAQ7e,EAAI0e,EAG1B,GAAIG,EAAQW,GAAI,CACTT,EAAiB1D,aACpB0D,EAAiB1D,WAAa8C,IAAIhD,gBAAgB0D,EAAQlf,EAAGmf,EAAYnf,GAAKkf,EAAQzqC,EAAGyqC,EAAQW,GAAIX,EAAQY,KAG/G,IAAIpE,EAAa0D,EAAiB1D,WAElC,GAAIkD,GAAYe,GAAef,EAAWgB,EAAS,CACjD,IAAIG,EAAMnB,GAAYe,EAAcjE,EAAWtE,OAAOtjC,OAAS,EAAI,EAGnE,IAFAsvB,EAAOsY,EAAWtE,OAAO2I,GAAK3pB,MAAMtiB,OAE/B8gB,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACzBkqB,EAASlqB,GAAK8mB,EAAWtE,OAAO2I,GAAK3pB,MAAMxB,EAG/C,KAAO,CACDwqB,EAAiBY,OACnBX,EAAMD,EAAiBY,QAEvBX,EAAM/I,cAAc2J,gBAAgBf,EAAQ5a,EAAEzoB,EAAGqjC,EAAQ5a,EAAExoB,EAAGojC,EAAQx7B,EAAE7H,EAAGqjC,EAAQx7B,EAAE5H,EAAGojC,EAAQlqB,GAAGxO,IACnG44B,EAAiBY,OAASX,GAG5BxE,EAAOwE,GAAKT,EAAWgB,IAAYD,EAAcC,IACjD,IACIM,EADAC,EAAiBzE,EAAWP,cAAgBN,EAE5CrB,EAAcqF,EAAQuB,UAAYxB,GAAYC,EAAQwB,qBAAuB38B,EAAIm7B,EAAQyB,iBAAmB,EAKhH,IAJApd,EAAI2b,EAAQuB,UAAYxB,GAAYC,EAAQwB,qBAAuB38B,EAAIm7B,EAAQ0B,WAAa,EAC5F3mB,GAAO,EACPuJ,EAAOuY,EAAWtE,OAAOtjC,OAElB8lB,GAAM,CAGX,GAFA4f,GAAekC,EAAWtE,OAAOlU,GAAGoY,cAEb,IAAnB6E,GAAiC,IAATtF,GAAc3X,IAAMwY,EAAWtE,OAAOtjC,OAAS,EAAG,CAG5E,IAFAsvB,EAAOsY,EAAWtE,OAAOlU,GAAG9M,MAAMtiB,OAE7B8gB,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACzBkqB,EAASlqB,GAAK8mB,EAAWtE,OAAOlU,GAAG9M,MAAMxB,GAG3C,KACF,CAAO,GAAIurB,GAAkB3G,GAAe2G,EAAiB3G,EAAckC,EAAWtE,OAAOlU,EAAI,GAAGoY,cAAe,CAIjH,IAHA4E,GAAeC,EAAiB3G,GAAekC,EAAWtE,OAAOlU,EAAI,GAAGoY,cACxElY,EAAOsY,EAAWtE,OAAOlU,GAAG9M,MAAMtiB,OAE7B8gB,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACzBkqB,EAASlqB,GAAK8mB,EAAWtE,OAAOlU,GAAG9M,MAAMxB,IAAM8mB,EAAWtE,OAAOlU,EAAI,GAAG9M,MAAMxB,GAAK8mB,EAAWtE,OAAOlU,GAAG9M,MAAMxB,IAAMsrB,EAGtH,KACF,CAEIhd,EAAIC,EAAO,EACbD,GAAK,EAELtJ,GAAO,CAEX,CAEAilB,EAAQ0B,WAAard,EACrB2b,EAAQyB,iBAAmB9G,EAAckC,EAAWtE,OAAOlU,GAAGoY,cAC9DuD,EAAQwB,mBAAqB38B,CAC/B,CACF,KAAO,CACL,IAAI88B,EACAC,EACAC,EACAC,EACAC,EAIJ,GAHA/rB,EAAMqqB,EAAQlf,EAAElsB,OAChB4rC,EAAWP,EAAYnf,GAAKkf,EAAQzqC,EAEhCyH,KAAK2kC,IAAoB,IAAd3B,EAAQnf,EACjB6e,GAAYe,GACdb,EAAS,GAAKY,EAAS,GACvBZ,EAAS,GAAKY,EAAS,GACvBZ,EAAS,GAAKY,EAAS,IACdd,GAAYgB,GACrBd,EAAS,GAAKI,EAAQlf,EAAE,GACxB8e,EAAS,GAAKI,EAAQlf,EAAE,GACxB8e,EAAS,GAAKI,EAAQlf,EAAE,IAKxB8gB,kBAAkBhC,EAAUiC,MAHZC,iBAAiB9B,EAAQlf,GAC3BghB,iBAAiBtB,IACnBd,EAAWgB,IAAYD,EAAcC,UAInD,IAAKl8B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACN,IAAdw7B,EAAQnf,IACN6e,GAAYe,EACd9E,EAAO,EACE+D,EAAWgB,EACpB/E,EAAO,GAEHqE,EAAQ5a,EAAEzoB,EAAEsF,cAAgBnN,OACzBorC,EAAiBY,SACpBZ,EAAiBY,OAAS,IAGvBZ,EAAiBY,OAAOt8B,GAQ3B27B,EAAMD,EAAiBY,OAAOt8B,IAP9B88B,OAA0BlkC,IAAnB4iC,EAAQ5a,EAAEzoB,EAAE6H,GAAmBw7B,EAAQ5a,EAAEzoB,EAAE,GAAKqjC,EAAQ5a,EAAEzoB,EAAE6H,GACnE+8B,OAA0BnkC,IAAnB4iC,EAAQ5a,EAAExoB,EAAE4H,GAAmBw7B,EAAQ5a,EAAExoB,EAAE,GAAKojC,EAAQ5a,EAAExoB,EAAE4H,GACnEg9B,OAAyBpkC,IAAnB4iC,EAAQx7B,EAAE7H,EAAE6H,GAAmBw7B,EAAQx7B,EAAE7H,EAAE,GAAKqjC,EAAQx7B,EAAE7H,EAAE6H,GAClEi9B,OAAyBrkC,IAAnB4iC,EAAQx7B,EAAE5H,EAAE4H,GAAmBw7B,EAAQx7B,EAAE5H,EAAE,GAAKojC,EAAQx7B,EAAE5H,EAAE4H,GAClE27B,EAAM/I,cAAc2J,gBAAgBO,EAAMC,EAAMC,EAAKC,GAAKn6B,IAC1D44B,EAAiBY,OAAOt8B,GAAK27B,IAIrBD,EAAiBY,OAQ3BX,EAAMD,EAAiBY,QAPvBQ,EAAOtB,EAAQ5a,EAAEzoB,EACjB4kC,EAAOvB,EAAQ5a,EAAExoB,EACjB4kC,EAAMxB,EAAQx7B,EAAE7H,EAChB8kC,EAAMzB,EAAQx7B,EAAE5H,EAChBujC,EAAM/I,cAAc2J,gBAAgBO,EAAMC,EAAMC,EAAKC,GAAKn6B,IAC1D04B,EAAQE,iBAAmBC,GAK7BxE,EAAOwE,GAAKT,EAAWgB,IAAYD,EAAcC,MAIrDF,EAAWP,EAAYnf,GAAKkf,EAAQzqC,EACpCmsC,EAAyB,IAAd1B,EAAQnf,EAAUmf,EAAQlf,EAAEtc,GAAKw7B,EAAQlf,EAAEtc,IAAMg8B,EAASh8B,GAAKw7B,EAAQlf,EAAEtc,IAAMm3B,EAEpE,qBAAlB3+B,KAAK8iC,SACPF,EAASp7B,GAAKk9B,EAEd9B,EAAW8B,CAInB,CAGA,OADA/B,EAAQU,UAAYD,EACbR,CACT,CAGA,SAASiC,MAAM72B,EAAGC,EAAGkW,GACnB,IASI4gB,EACAC,EACAC,EACAC,EACAC,EAbAC,EAAM,GACNC,EAAKr3B,EAAE,GACPs3B,EAAKt3B,EAAE,GACPu3B,EAAKv3B,EAAE,GACPw3B,EAAKx3B,EAAE,GACPy3B,EAAKx3B,EAAE,GACPy3B,EAAKz3B,EAAE,GACP03B,EAAK13B,EAAE,GACP23B,EAAK33B,EAAE,GA8BX,OAxBA+2B,EAAQK,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,EAAKH,EAAKI,GAE/B,IACVZ,GAASA,EACTS,GAAMA,EACNC,GAAMA,EACNC,GAAMA,EACNC,GAAMA,GAGJ,EAAMZ,EAAQ,MAChBD,EAAQ3oC,KAAKypC,KAAKb,GAClBC,EAAQ7oC,KAAK0pC,IAAIf,GACjBG,EAAS9oC,KAAK0pC,KAAK,EAAM3hB,GAAK4gB,GAASE,EACvCE,EAAS/oC,KAAK0pC,IAAI3hB,EAAI4gB,GAASE,IAE/BC,EAAS,EAAM/gB,EACfghB,EAAShhB,GAGXihB,EAAI,GAAKF,EAASG,EAAKF,EAASM,EAChCL,EAAI,GAAKF,EAASI,EAAKH,EAASO,EAChCN,EAAI,GAAKF,EAASK,EAAKJ,EAASQ,EAChCP,EAAI,GAAKF,EAASM,EAAKL,EAASS,EACzBR,CACT,CAEA,SAASR,kBAAkBQ,EAAKW,GAC9B,IAAIC,EAAKD,EAAK,GACVE,EAAKF,EAAK,GACVG,EAAKH,EAAK,GACVI,EAAKJ,EAAK,GACVK,EAAUhqC,KAAKiqC,MAAM,EAAIJ,EAAKE,EAAK,EAAIH,EAAKE,EAAI,EAAI,EAAID,EAAKA,EAAK,EAAIC,EAAKA,GAC3EI,EAAWlqC,KAAKmqC,KAAK,EAAIP,EAAKC,EAAK,EAAIC,EAAKC,GAC5CK,EAAOpqC,KAAKiqC,MAAM,EAAIL,EAAKG,EAAK,EAAIF,EAAKC,EAAI,EAAI,EAAIF,EAAKA,EAAK,EAAIE,EAAKA,GAC5Ed,EAAI,GAAKgB,EAAUzkB,UACnByjB,EAAI,GAAKkB,EAAW3kB,UACpByjB,EAAI,GAAKoB,EAAO7kB,SAClB,CAEA,SAASmjB,iBAAiB76B,GACxB,IAAIm8B,EAAUn8B,EAAO,GAAK0X,UACtB2kB,EAAWr8B,EAAO,GAAK0X,UACvB6kB,EAAOv8B,EAAO,GAAK0X,UACnB8kB,EAAKrqC,KAAKsqC,IAAIN,EAAU,GACxBO,EAAKvqC,KAAKsqC,IAAIJ,EAAW,GACzBM,EAAKxqC,KAAKsqC,IAAIF,EAAO,GACrBK,EAAKzqC,KAAK0pC,IAAIM,EAAU,GACxBU,EAAK1qC,KAAK0pC,IAAIQ,EAAW,GACzBS,EAAK3qC,KAAK0pC,IAAIU,EAAO,GAKzB,MAAO,CAHCK,EAAKC,EAAKF,EAAKH,EAAKE,EAAKI,EACzBF,EAAKF,EAAKC,EAAKH,EAAKK,EAAKC,EACzBN,EAAKK,EAAKF,EAAKC,EAAKF,EAAKI,EAHzBN,EAAKE,EAAKC,EAAKC,EAAKC,EAAKC,EAKnC,CAEA,SAASC,wBACP,IAAItE,EAAW1iC,KAAK8nB,KAAKmf,cAAgBjnC,KAAK6iC,WAC1CnK,EAAW14B,KAAKsjC,UAAU,GAAGnf,EAAInkB,KAAK6iC,WACtCqE,EAAUlnC,KAAKsjC,UAAUtjC,KAAKsjC,UAAU1rC,OAAS,GAAGusB,EAAInkB,KAAK6iC,WAEjE,KAAMH,IAAa1iC,KAAKmnC,SAASjD,WAAalkC,KAAKmnC,SAASjD,YAAc3B,YAAcviC,KAAKmnC,SAASjD,WAAagD,GAAWxE,GAAYwE,GAAWlnC,KAAKmnC,SAASjD,UAAYxL,GAAYgK,EAAWhK,IAAY,CAC5M14B,KAAKmnC,SAASjD,WAAaxB,IAC7B1iC,KAAKmnC,SAAShD,oBAAsB,EACpCnkC,KAAKmnC,SAAS9D,UAAY,GAG5B,IAAI+D,EAAepnC,KAAKyiC,iBAAiBC,EAAU1iC,KAAKmnC,UACxDnnC,KAAK+iC,GAAKqE,CACZ,CAGA,OADApnC,KAAKmnC,SAASjD,UAAYxB,EACnB1iC,KAAK+iC,EACd,CAEA,SAASsE,UAAUpyB,GACjB,IAAIqyB,EAEJ,GAAsB,mBAAlBtnC,KAAK8iC,SACPwE,EAAkBryB,EAAMjV,KAAKunC,KAEzB/E,QAAQxiC,KAAK+jB,EAAIujB,GAAmB,OACtCtnC,KAAK+jB,EAAIujB,EACTtnC,KAAKwnC,MAAO,QAMd,IAHA,IAAIhgC,EAAI,EACJmR,EAAM3Y,KAAK+jB,EAAEnsB,OAEV4P,EAAImR,GACT2uB,EAAkBryB,EAAIzN,GAAKxH,KAAKunC,KAE5B/E,QAAQxiC,KAAK+jB,EAAEvc,GAAK8/B,GAAmB,OACzCtnC,KAAK+jB,EAAEvc,GAAK8/B,EACZtnC,KAAKwnC,MAAO,GAGdhgC,GAAK,CAGX,CAEA,SAASigC,yBACP,GAAIznC,KAAKm5B,KAAK7F,WAAWoU,UAAY1nC,KAAK0nC,SAAY1nC,KAAK2nC,gBAAgB/vC,OAI3E,GAAIoI,KAAK4nC,KACP5nC,KAAKqnC,UAAUrnC,KAAK+iC,QADtB,CAOA,IAAIv7B,EAFJxH,KAAK4nC,MAAO,EACZ5nC,KAAKwnC,KAAOxnC,KAAK6nC,cAEjB,IAAIlvB,EAAM3Y,KAAK2nC,gBAAgB/vC,OAC3BkwC,EAAa9nC,KAAK+nC,GAAK/nC,KAAK+iC,GAAK/iC,KAAKsQ,KAAKoI,EAE/C,IAAKlR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBsgC,EAAa9nC,KAAK2nC,gBAAgBngC,GAAGsgC,GAGvC9nC,KAAKqnC,UAAUS,GACf9nC,KAAK6nC,eAAgB,EACrB7nC,KAAK4nC,MAAO,EACZ5nC,KAAK0nC,QAAU1nC,KAAKm5B,KAAK7F,WAAWoU,OAfpC,CAgBF,CAEA,SAASM,UAAUC,GACjBjoC,KAAK2nC,gBAAgBtoC,KAAK4oC,GAC1BjoC,KAAKzO,UAAU22C,mBAAmBloC,KACpC,CAEA,SAASmoC,cAAchP,EAAM7oB,EAAMi3B,EAAMh2C,GACvCyO,KAAK8iC,SAAW,iBAChB9iC,KAAKunC,KAAOA,GAAQ,EACpBvnC,KAAKsQ,KAAOA,EACZtQ,KAAK+jB,EAAIwjB,EAAOj3B,EAAKoI,EAAI6uB,EAAOj3B,EAAKoI,EACrC1Y,KAAK+iC,GAAKzyB,EAAKoI,EACf1Y,KAAKwnC,MAAO,EACZxnC,KAAKm5B,KAAOA,EACZn5B,KAAKzO,UAAYA,EACjByO,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAK0Y,GAAI,EACT1Y,KAAK+nC,IAAK,EACV/nC,KAAKooC,IAAM,EACXpoC,KAAK2nC,gBAAkB,GACvB3nC,KAAK6nC,eAAgB,EACrB7nC,KAAKqoC,SAAWZ,uBAChBznC,KAAKqnC,UAAYA,UACjBrnC,KAAKgoC,UAAYA,SACnB,CAEA,SAASM,yBAAyBnP,EAAM7oB,EAAMi3B,EAAMh2C,GAWlD,IAAIiW,EAVJxH,KAAK8iC,SAAW,mBAChB9iC,KAAKunC,KAAOA,GAAQ,EACpBvnC,KAAKsQ,KAAOA,EACZtQ,KAAKwnC,MAAO,EACZxnC,KAAKm5B,KAAOA,EACZn5B,KAAKzO,UAAYA,EACjByO,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAK0Y,GAAI,EACT1Y,KAAK+nC,IAAK,EACV/nC,KAAK0nC,SAAW,EAEhB,IAAI/uB,EAAMrI,EAAKoI,EAAE9gB,OAKjB,IAJAoI,KAAK+jB,EAAI/D,iBAAiB,UAAWrH,GACrC3Y,KAAK+iC,GAAK/iB,iBAAiB,UAAWrH,GACtC3Y,KAAKooC,IAAMpoB,iBAAiB,UAAWrH,GAElCnR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK+jB,EAAEvc,GAAK8I,EAAKoI,EAAElR,GAAKxH,KAAKunC,KAC7BvnC,KAAK+iC,GAAGv7B,GAAK8I,EAAKoI,EAAElR,GAGtBxH,KAAK6nC,eAAgB,EACrB7nC,KAAK2nC,gBAAkB,GACvB3nC,KAAKqoC,SAAWZ,uBAChBznC,KAAKqnC,UAAYA,UACjBrnC,KAAKgoC,UAAYA,SACnB,CAEA,SAASO,uBAAuBpP,EAAM7oB,EAAMi3B,EAAMh2C,GAChDyO,KAAK8iC,SAAW,iBAChB9iC,KAAKsjC,UAAYhzB,EAAKoI,EACtB1Y,KAAKujC,kBAAoB,GACzBvjC,KAAK6iC,WAAa1J,EAAK7oB,KAAK+Y,GAC5BrpB,KAAK0nC,SAAW,EAChB1nC,KAAKmnC,SAAW,CACdjD,UAAW3B,UACXc,UAAW,EACXpvC,MAAO,EACPkwC,oBAAqB,GAEvBnkC,KAAK0Y,GAAI,EACT1Y,KAAK+nC,IAAK,EACV/nC,KAAKsQ,KAAOA,EACZtQ,KAAKunC,KAAOA,GAAQ,EACpBvnC,KAAKm5B,KAAOA,EACZn5B,KAAKzO,UAAYA,EACjByO,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAK+jB,EAAIwe,UACTviC,KAAK+iC,GAAKR,UACVviC,KAAK6nC,eAAgB,EACrB7nC,KAAKqoC,SAAWZ,uBAChBznC,KAAKqnC,UAAYA,UACjBrnC,KAAKyiC,iBAAmBA,iBACxBziC,KAAK2nC,gBAAkB,CAACX,sBAAsB/uC,KAAK+H,OACnDA,KAAKgoC,UAAYA,SACnB,CAEA,SAASQ,kCAAkCrP,EAAM7oB,EAAMi3B,EAAMh2C,GAE3D,IAAIiW,EADJxH,KAAK8iC,SAAW,mBAEhB,IACIhf,EACAvrB,EACAorC,EACAC,EAJAjrB,EAAMrI,EAAKoI,EAAE9gB,OAMjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAM,EAAGnR,GAAK,EACxB8I,EAAKoI,EAAElR,GAAGm8B,IAAMrzB,EAAKoI,EAAElR,GAAGsc,GAAKxT,EAAKoI,EAAElR,EAAI,IAAM8I,EAAKoI,EAAElR,EAAI,GAAGsc,IAChEA,EAAIxT,EAAKoI,EAAElR,GAAGsc,EACdvrB,EAAI+X,EAAKoI,EAAElR,EAAI,GAAGsc,EAClB6f,EAAKrzB,EAAKoI,EAAElR,GAAGm8B,GACfC,EAAKtzB,EAAKoI,EAAElR,GAAGo8B,IAEE,IAAb9f,EAAElsB,SAAkBksB,EAAE,KAAOvrB,EAAE,IAAMurB,EAAE,KAAOvrB,EAAE,KAAO+pC,IAAIzE,cAAc/Z,EAAE,GAAIA,EAAE,GAAIvrB,EAAE,GAAIA,EAAE,GAAIurB,EAAE,GAAK6f,EAAG,GAAI7f,EAAE,GAAK6f,EAAG,KAAOrB,IAAIzE,cAAc/Z,EAAE,GAAIA,EAAE,GAAIvrB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAKqrC,EAAG,GAAIrrC,EAAE,GAAKqrC,EAAG,KAAoB,IAAb9f,EAAElsB,SAAkBksB,EAAE,KAAOvrB,EAAE,IAAMurB,EAAE,KAAOvrB,EAAE,IAAMurB,EAAE,KAAOvrB,EAAE,KAAO+pC,IAAIR,cAAche,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIvrB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIurB,EAAE,GAAK6f,EAAG,GAAI7f,EAAE,GAAK6f,EAAG,GAAI7f,EAAE,GAAK6f,EAAG,KAAOrB,IAAIR,cAAche,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIvrB,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAIA,EAAE,GAAKqrC,EAAG,GAAIrrC,EAAE,GAAKqrC,EAAG,GAAIrrC,EAAE,GAAKqrC,EAAG,OACldtzB,EAAKoI,EAAElR,GAAGm8B,GAAK,KACfrzB,EAAKoI,EAAElR,GAAGo8B,GAAK,MAGb9f,EAAE,KAAOvrB,EAAE,IAAMurB,EAAE,KAAOvrB,EAAE,IAAgB,IAAVorC,EAAG,IAAsB,IAAVA,EAAG,IAAsB,IAAVC,EAAG,IAAsB,IAAVA,EAAG,KACnE,IAAb9f,EAAElsB,QAAgBksB,EAAE,KAAOvrB,EAAE,IAAgB,IAAVorC,EAAG,IAAsB,IAAVC,EAAG,MACvDtzB,EAAKoI,EAAElR,GAAGm8B,GAAK,KACfrzB,EAAKoI,EAAElR,GAAGo8B,GAAK,OAMvB5jC,KAAK2nC,gBAAkB,CAACX,sBAAsB/uC,KAAK+H,OACnDA,KAAKsQ,KAAOA,EACZtQ,KAAKsjC,UAAYhzB,EAAKoI,EACtB1Y,KAAKujC,kBAAoB,GACzBvjC,KAAK6iC,WAAa1J,EAAK7oB,KAAK+Y,GAC5BrpB,KAAK0Y,GAAI,EACT1Y,KAAK+nC,IAAK,EACV/nC,KAAK6nC,eAAgB,EACrB7nC,KAAKunC,KAAOA,GAAQ,EACpBvnC,KAAKm5B,KAAOA,EACZn5B,KAAKzO,UAAYA,EACjByO,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAKqoC,SAAWZ,uBAChBznC,KAAKqnC,UAAYA,UACjBrnC,KAAKyiC,iBAAmBA,iBACxBziC,KAAK0nC,SAAW,EAChB,IAAIe,EAASn4B,EAAKoI,EAAE,GAAGoL,EAAElsB,OAIzB,IAHAoI,KAAK+jB,EAAI/D,iBAAiB,UAAWyoB,GACrCzoC,KAAK+iC,GAAK/iB,iBAAiB,UAAWyoB,GAEjCjhC,EAAI,EAAGA,EAAIihC,EAAQjhC,GAAK,EAC3BxH,KAAK+jB,EAAEvc,GAAK+6B,UACZviC,KAAK+iC,GAAGv7B,GAAK+6B,UAGfviC,KAAKmnC,SAAW,CACdjD,UAAW3B,UACXc,UAAW,EACXpvC,MAAO+rB,iBAAiB,UAAWyoB,IAErCzoC,KAAKgoC,UAAYA,SACnB,CAEA,IAAIU,gBAkCO,CACPC,QAlCF,SAAiBxP,EAAM7oB,EAAML,EAAMs3B,EAAMh2C,GAKvC,IAAI0yB,EAEJ,GANI3T,EAAKs4B,MACPt4B,EAAO6oB,EAAK7F,WAAWuV,YAAYF,QAAQr4B,IAKxCA,EAAKoI,EAAE9gB,OAEL,GAAyB,iBAAd0Y,EAAKoI,EAAE,GACvBuL,EAAI,IAAIqkB,yBAAyBnP,EAAM7oB,EAAMi3B,EAAMh2C,QAEnD,OAAQ0e,GACN,KAAK,EACHgU,EAAI,IAAIskB,uBAAuBpP,EAAM7oB,EAAMi3B,EAAMh2C,GACjD,MAEF,KAAK,EACH0yB,EAAI,IAAIukB,kCAAkCrP,EAAM7oB,EAAMi3B,EAAMh2C,QAVhE0yB,EAAI,IAAIkkB,cAAchP,EAAM7oB,EAAMi3B,EAAMh2C,GAsB1C,OAJI0yB,EAAE0jB,gBAAgB/vC,QACpBrG,EAAU22C,mBAAmBjkB,GAGxBA,CACT,GAQF,SAAS6kB,2BAA4B,CAErCA,yBAAyB1nC,UAAY,CACnC8mC,mBAAoB,SAA4B7pB,IACA,IAA1Cre,KAAK+oC,kBAAkBxlC,QAAQ8a,KACjCre,KAAK+oC,kBAAkB1pC,KAAKgf,GAC5Bre,KAAKzO,UAAU22C,mBAAmBloC,MAClCA,KAAKgpC,aAAc,EAEvB,EACAC,yBAA0B,WAExB,IAAIzhC,EADJxH,KAAKwnC,MAAO,EAEZ,IAAI7uB,EAAM3Y,KAAK+oC,kBAAkBnxC,OAEjC,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK+oC,kBAAkBvhC,GAAG6gC,WAEtBroC,KAAK+oC,kBAAkBvhC,GAAGggC,OAC5BxnC,KAAKwnC,MAAO,EAGlB,EACA0B,6BAA8B,SAAsC33C,GAClEyO,KAAKzO,UAAYA,EACjByO,KAAK+oC,kBAAoB,GACzB/oC,KAAKwnC,MAAO,EACZxnC,KAAKgpC,aAAc,CACrB,GAGF,IAAIG,UAKKtM,YAAY,GAJnB,WACE,OAAO7c,iBAAiB,UAAW,EACrC,IAKF,SAASopB,YACPppC,KAAKkO,GAAI,EACTlO,KAAKi9B,QAAU,EACfj9B,KAAKk9B,WAAa,EAClBl9B,KAAK+jB,EAAIzD,iBAAiBtgB,KAAKk9B,YAC/Bl9B,KAAKooB,EAAI9H,iBAAiBtgB,KAAKk9B,YAC/Bl9B,KAAKwH,EAAI8Y,iBAAiBtgB,KAAKk9B,WACjC,CAEAkM,UAAUhoC,UAAUioC,YAAc,SAAUtf,EAAQpR,GAClD3Y,KAAKkO,EAAI6b,EACT/pB,KAAKspC,UAAU3wB,GAGf,IAFA,IAAInR,EAAI,EAEDA,EAAImR,GACT3Y,KAAK+jB,EAAEvc,GAAK2hC,UAAU/L,aACtBp9B,KAAKooB,EAAE5gB,GAAK2hC,UAAU/L,aACtBp9B,KAAKwH,EAAEA,GAAK2hC,UAAU/L,aACtB51B,GAAK,CAET,EAEA4hC,UAAUhoC,UAAUkoC,UAAY,SAAU3wB,GACxC,KAAO3Y,KAAKk9B,WAAavkB,GACvB3Y,KAAKupC,oBAGPvpC,KAAKi9B,QAAUtkB,CACjB,EAEAywB,UAAUhoC,UAAUmoC,kBAAoB,WACtCvpC,KAAK+jB,EAAI/jB,KAAK+jB,EAAElxB,OAAOytB,iBAAiBtgB,KAAKk9B,aAC7Cl9B,KAAKwH,EAAIxH,KAAKwH,EAAE3U,OAAOytB,iBAAiBtgB,KAAKk9B,aAC7Cl9B,KAAKooB,EAAIpoB,KAAKooB,EAAEv1B,OAAOytB,iBAAiBtgB,KAAKk9B,aAC7Cl9B,KAAKk9B,YAAc,CACrB,EAEAkM,UAAUhoC,UAAUooC,QAAU,SAAU7pC,EAAGC,EAAGqQ,EAAMmG,EAAKzF,GACvD,IAAIuP,EAOJ,OANAlgB,KAAKi9B,QAAU7gC,KAAK6a,IAAIjX,KAAKi9B,QAAS7mB,EAAM,GAExCpW,KAAKi9B,SAAWj9B,KAAKk9B,YACvBl9B,KAAKupC,oBAGCt5B,GACN,IAAK,IACHiQ,EAAMlgB,KAAK+jB,EACX,MAEF,IAAK,IACH7D,EAAMlgB,KAAKwH,EACX,MAEF,IAAK,IACH0Y,EAAMlgB,KAAKooB,EACX,MAEF,QACElI,EAAM,KAILA,EAAI9J,IAAQ8J,EAAI9J,KAASzF,KAC5BuP,EAAI9J,GAAO+yB,UAAU/L,cAGvBld,EAAI9J,GAAK,GAAKzW,EACdugB,EAAI9J,GAAK,GAAKxW,CAChB,EAEAwpC,UAAUhoC,UAAUqoC,YAAc,SAAUC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAI3zB,EAAKzF,GACvE3Q,KAAKwpC,QAAQE,EAAIC,EAAI,IAAKvzB,EAAKzF,GAC/B3Q,KAAKwpC,QAAQI,EAAIC,EAAI,IAAKzzB,EAAKzF,GAC/B3Q,KAAKwpC,QAAQM,EAAIC,EAAI,IAAK3zB,EAAKzF,EACjC,EAEAy4B,UAAUhoC,UAAU4oC,QAAU,WAC5B,IAAIC,EAAU,IAAIb,UAClBa,EAAQZ,YAAYrpC,KAAKkO,EAAGlO,KAAKi9B,SACjC,IAAIiN,EAAWlqC,KAAK+jB,EAChBomB,EAAYnqC,KAAKooB,EACjBgiB,EAAWpqC,KAAKwH,EAChBgwB,EAAO,EAEPx3B,KAAKkO,IACP+7B,EAAQR,YAAYS,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAIE,EAAS,GAAG,GAAIA,EAAS,GAAG,GAAID,EAAU,GAAG,GAAIA,EAAU,GAAG,GAAI,GAAG,GACzH3S,EAAO,GAGT,IAEIhwB,EAFA6iC,EAAMrqC,KAAKi9B,QAAU,EACrBtkB,EAAM3Y,KAAKi9B,QAGf,IAAKz1B,EAAIgwB,EAAMhwB,EAAImR,EAAKnR,GAAK,EAC3ByiC,EAAQR,YAAYS,EAASG,GAAK,GAAIH,EAASG,GAAK,GAAID,EAASC,GAAK,GAAID,EAASC,GAAK,GAAIF,EAAUE,GAAK,GAAIF,EAAUE,GAAK,GAAI7iC,GAAG,GACrI6iC,GAAO,EAGT,OAAOJ,CACT,EAEAb,UAAUhoC,UAAUxJ,OAAS,WAC3B,OAAOoI,KAAKi9B,OACd,EAEA,IAAIqN,WAoCEntB,QAAU0f,YAAY,GAnC1B,WACE,OAAO,IAAIuM,SACb,IAEA,SAAiBmB,GACf,IACI/iC,EADAmR,EAAM4xB,EAAUtN,QAGpB,IAAKz1B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB2hC,UAAU9qC,QAAQksC,EAAUxmB,EAAEvc,IAC9B2hC,UAAU9qC,QAAQksC,EAAU/iC,EAAEA,IAC9B2hC,UAAU9qC,QAAQksC,EAAUniB,EAAE5gB,IAC9B+iC,EAAUxmB,EAAEvc,GAAK,KACjB+iC,EAAU/iC,EAAEA,GAAK,KACjB+iC,EAAUniB,EAAE5gB,GAAK,KAGnB+iC,EAAUtN,QAAU,EACpBsN,EAAUr8B,GAAI,CAChB,IAiBAiP,QAAQqtB,MAfR,SAAeC,GACb,IACIjjC,EADAkjC,EAASvtB,QAAQigB,aAEjBzkB,OAAwBvY,IAAlBqqC,EAAMxN,QAAwBwN,EAAM1mB,EAAEnsB,OAAS6yC,EAAMxN,QAI/D,IAHAyN,EAAOpB,UAAU3wB,GACjB+xB,EAAOx8B,EAAIu8B,EAAMv8B,EAEZ1G,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBkjC,EAAOjB,YAAYgB,EAAM1mB,EAAEvc,GAAG,GAAIijC,EAAM1mB,EAAEvc,GAAG,GAAIijC,EAAMriB,EAAE5gB,GAAG,GAAIijC,EAAMriB,EAAE5gB,GAAG,GAAIijC,EAAMjjC,EAAEA,GAAG,GAAIijC,EAAMjjC,EAAEA,GAAG,GAAIA,GAG/G,OAAOkjC,CACT,EAIOvtB,SAFHA,QAKN,SAASwtB,kBACP3qC,KAAKi9B,QAAU,EACfj9B,KAAKk9B,WAAa,EAClBl9B,KAAK6nB,OAASvH,iBAAiBtgB,KAAKk9B,WACtC,CAEAyN,gBAAgBvpC,UAAUwpC,SAAW,SAAU5K,GACzChgC,KAAKi9B,UAAYj9B,KAAKk9B,aACxBl9B,KAAK6nB,OAAS7nB,KAAK6nB,OAAOh1B,OAAOytB,iBAAiBtgB,KAAKk9B,aACvDl9B,KAAKk9B,YAAc,GAGrBl9B,KAAK6nB,OAAO7nB,KAAKi9B,SAAW+C,EAC5BhgC,KAAKi9B,SAAW,CAClB,EAEA0N,gBAAgBvpC,UAAUypC,cAAgB,WACxC,IAAIrjC,EAEJ,IAAKA,EAAI,EAAGA,EAAIxH,KAAKi9B,QAASz1B,GAAK,EACjC8iC,UAAUjsC,QAAQ2B,KAAK6nB,OAAOrgB,IAGhCxH,KAAKi9B,QAAU,CACjB,EAEA,IAAI6N,qBACE/c,GAAK,CACPgd,mBAOF,WAUE,OAPI9N,QAEgBE,KADlBF,SAAW,GAGO,IAAI0N,eAI1B,EAjBEtsC,QAmBF,SAAiB2sC,GACf,IAAIxjC,EACAmR,EAAMqyB,EAAgB/N,QAE1B,IAAKz1B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB8iC,UAAUjsC,QAAQ2sC,EAAgBnjB,OAAOrgB,IAG3CwjC,EAAgB/N,QAAU,EAEtBA,UAAYC,aACdC,KAAOP,QAAgB,OAAEO,MACzBD,YAAc,GAGhBC,KAAKF,SAAW+N,EAChB/N,SAAW,CACb,GAlCIA,QAAU,EACVC,WAAa,EACbC,KAAO7c,iBAAiB4c,YAkCrBnP,IAxCHA,GAIAkP,QACAC,WACAC,KAqCF8N,qBAAuB,WACzB,IAAI1I,GAAa,OAEjB,SAAS2I,EAAiBxI,EAAUyI,EAAexI,GACjD,IACIyI,EACAC,EACAC,EACAtkB,EACAtO,EACAuO,EACAC,EACAyX,EACA4M,EATAnI,EAAiBT,EAAQU,UAUzB0E,EAAK/nC,KAAKsjC,UAEd,GAAIZ,EAAWqF,EAAG,GAAG5jB,EAAInkB,KAAK6iC,WAC5BuI,EAAWrD,EAAG,GAAGjkB,EAAE,GACnBwnB,GAAS,EACTlI,EAAiB,OACZ,GAAIV,GAAYqF,EAAGA,EAAGnwC,OAAS,GAAGusB,EAAInkB,KAAK6iC,WAChDuI,EAAWrD,EAAGA,EAAGnwC,OAAS,GAAGksB,EAAIikB,EAAGA,EAAGnwC,OAAS,GAAGksB,EAAE,GAAKikB,EAAGA,EAAGnwC,OAAS,GAAGW,EAAE,GAO9E+yC,GAAS,MACJ,CAQL,IAPA,IAGItI,EACAC,EACAC,EALA17B,EAAI47B,EACJzqB,EAAMovB,EAAGnwC,OAAS,EAClB8lB,GAAO,EAKJA,IACLslB,EAAU+E,EAAGvgC,MACby7B,EAAc8E,EAAGvgC,EAAI,IAEL2c,EAAInkB,KAAK6iC,WAAaH,KAIlCl7B,EAAImR,EAAM,EACZnR,GAAK,EAELkW,GAAO,EAQX,GAJAwlB,EAAmBljC,KAAKujC,kBAAkB/7B,IAAM,CAAC,EAEjD47B,EAAiB57B,IADjB8jC,EAAuB,IAAdtI,EAAQnf,GAGJ,CACX,GAAI6e,GAAYO,EAAY9e,EAAInkB,KAAK6iC,WACnClE,EAAO,OACF,GAAI+D,EAAWM,EAAQ7e,EAAInkB,KAAK6iC,WACrClE,EAAO,MACF,CACL,IAAIwE,EAEAD,EAAiBY,OACnBX,EAAMD,EAAiBY,QAEvBX,EAAM/I,cAAc2J,gBAAgBf,EAAQ5a,EAAEzoB,EAAGqjC,EAAQ5a,EAAExoB,EAAGojC,EAAQx7B,EAAE7H,EAAGqjC,EAAQx7B,EAAE5H,GAAG0K,IACxF44B,EAAiBY,OAASX,GAG5BxE,EAAOwE,GAAKT,GAAYM,EAAQ7e,EAAInkB,KAAK6iC,cAAgBI,EAAY9e,EAAInkB,KAAK6iC,YAAcG,EAAQ7e,EAAInkB,KAAK6iC,aAC/G,CAEAwI,EAAWpI,EAAYnf,EAAImf,EAAYnf,EAAE,GAAKkf,EAAQzqC,EAAE,EAC1D,CAEA6yC,EAAWpI,EAAQlf,EAAE,EACvB,CAMA,IAJAmD,EAAOkkB,EAAclO,QACrB/V,EAAOkkB,EAAS5jC,EAAE,GAAG5P,OACrB+qC,EAAQU,UAAYD,EAEfpc,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,IAAKtO,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACzB6yB,EAAcD,EAASF,EAAS5jC,EAAEwf,GAAGtO,GAAK0yB,EAAS5jC,EAAEwf,GAAGtO,IAAM2yB,EAAS7jC,EAAEwf,GAAGtO,GAAK0yB,EAAS5jC,EAAEwf,GAAGtO,IAAMimB,EACrGwM,EAAc3jC,EAAEwf,GAAGtO,GAAK6yB,EACxBA,EAAcD,EAASF,EAAShjB,EAAEpB,GAAGtO,GAAK0yB,EAAShjB,EAAEpB,GAAGtO,IAAM2yB,EAASjjB,EAAEpB,GAAGtO,GAAK0yB,EAAShjB,EAAEpB,GAAGtO,IAAMimB,EACrGwM,EAAc/iB,EAAEpB,GAAGtO,GAAK6yB,EACxBA,EAAcD,EAASF,EAASrnB,EAAEiD,GAAGtO,GAAK0yB,EAASrnB,EAAEiD,GAAGtO,IAAM2yB,EAAStnB,EAAEiD,GAAGtO,GAAK0yB,EAASrnB,EAAEiD,GAAGtO,IAAMimB,EACrGwM,EAAcpnB,EAAEiD,GAAGtO,GAAK6yB,CAG9B,CAEA,SAASC,IACP,IAAI9I,EAAW1iC,KAAK8nB,KAAKmf,cAAgBjnC,KAAK6iC,WAC1CnK,EAAW14B,KAAKsjC,UAAU,GAAGnf,EAAInkB,KAAK6iC,WACtCqE,EAAUlnC,KAAKsjC,UAAUtjC,KAAKsjC,UAAU1rC,OAAS,GAAGusB,EAAInkB,KAAK6iC,WAC7DqB,EAAYlkC,KAAKmnC,SAASjD,UAS9B,OAPMA,IAAc3B,IAAc2B,EAAYxL,GAAYgK,EAAWhK,GAAYwL,EAAYgD,GAAWxE,EAAWwE,KAEjHlnC,KAAKmnC,SAAS9D,UAAYa,EAAYxB,EAAW1iC,KAAKmnC,SAAS9D,UAAY,EAC3ErjC,KAAKkrC,iBAAiBxI,EAAU1iC,KAAK+iC,GAAI/iC,KAAKmnC,WAGhDnnC,KAAKmnC,SAASjD,UAAYxB,EACnB1iC,KAAK+iC,EACd,CAEA,SAAS0I,IACPzrC,KAAK0rC,MAAQ1rC,KAAK2rC,oBACpB,CAmBA,SAAStE,EAAU4C,IAjBnB,SAAqB2B,EAAQC,GAC3B,GAAID,EAAO3O,UAAY4O,EAAO5O,SAAW2O,EAAO19B,IAAM29B,EAAO39B,EAC3D,OAAO,EAGT,IAAI1G,EACAmR,EAAMizB,EAAO3O,QAEjB,IAAKz1B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,GAAIokC,EAAO7nB,EAAEvc,GAAG,KAAOqkC,EAAO9nB,EAAEvc,GAAG,IAAMokC,EAAO7nB,EAAEvc,GAAG,KAAOqkC,EAAO9nB,EAAEvc,GAAG,IAAMokC,EAAOxjB,EAAE5gB,GAAG,KAAOqkC,EAAOzjB,EAAE5gB,GAAG,IAAMokC,EAAOxjB,EAAE5gB,GAAG,KAAOqkC,EAAOzjB,EAAE5gB,GAAG,IAAMokC,EAAOpkC,EAAEA,GAAG,KAAOqkC,EAAOrkC,EAAEA,GAAG,IAAMokC,EAAOpkC,EAAEA,GAAG,KAAOqkC,EAAOrkC,EAAEA,GAAG,GAC1N,OAAO,EAIX,OAAO,CACT,EAGOskC,CAAY9rC,KAAK+jB,EAAGkmB,KACvBjqC,KAAK+jB,EAAIumB,UAAUE,MAAMP,GACzBjqC,KAAK2rC,qBAAqBd,gBAC1B7qC,KAAK2rC,qBAAqBf,SAAS5qC,KAAK+jB,GACxC/jB,KAAKwnC,MAAO,EACZxnC,KAAK0rC,MAAQ1rC,KAAK2rC,qBAEtB,CAEA,SAASlE,IACP,GAAIznC,KAAKm5B,KAAK7F,WAAWoU,UAAY1nC,KAAK0nC,QAI1C,GAAK1nC,KAAK2nC,gBAAgB/vC,OAK1B,GAAIoI,KAAK4nC,KACP5nC,KAAKqnC,UAAUrnC,KAAK+iC,QADtB,CAOA,IAAI+E,EAUAtgC,EAZJxH,KAAK4nC,MAAO,EACZ5nC,KAAKwnC,MAAO,EAIVM,EADE9nC,KAAK+nC,GACM/nC,KAAK+iC,GACT/iC,KAAKsQ,KAAK6X,GACNnoB,KAAKsQ,KAAK6X,GAAGzP,EAEb1Y,KAAKsQ,KAAKiX,GAAG7O,EAI5B,IAAIC,EAAM3Y,KAAK2nC,gBAAgB/vC,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBsgC,EAAa9nC,KAAK2nC,gBAAgBngC,GAAGsgC,GAGvC9nC,KAAKqnC,UAAUS,GACf9nC,KAAK4nC,MAAO,EACZ5nC,KAAK0nC,QAAU1nC,KAAKm5B,KAAK7F,WAAWoU,OAvBpC,MAPE1nC,KAAKwnC,MAAO,CA+BhB,CAEA,SAASuE,EAAc5S,EAAM7oB,EAAML,GACjCjQ,KAAK8iC,SAAW,QAChB9iC,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAKzO,UAAY4nC,EACjBn5B,KAAKm5B,KAAOA,EACZn5B,KAAKsQ,KAAOA,EACZtQ,KAAK0Y,GAAI,EACT1Y,KAAK+nC,IAAK,EACV/nC,KAAKwnC,MAAO,EACZ,IAAI9d,EAAoB,IAATzZ,EAAaK,EAAKiX,GAAG7O,EAAIpI,EAAK6X,GAAGzP,EAChD1Y,KAAK+jB,EAAIumB,UAAUE,MAAM9gB,GACzB1pB,KAAK+iC,GAAKuH,UAAUE,MAAMxqC,KAAK+jB,GAC/B/jB,KAAK2rC,qBAAuBb,oBAAoBC,qBAChD/qC,KAAK0rC,MAAQ1rC,KAAK2rC,qBAClB3rC,KAAK0rC,MAAMd,SAAS5qC,KAAK+jB,GACzB/jB,KAAKgsC,MAAQP,EACbzrC,KAAK2nC,gBAAkB,EACzB,CAEA,SAASK,EAAUC,GACjBjoC,KAAK2nC,gBAAgBtoC,KAAK4oC,GAC1BjoC,KAAKzO,UAAU22C,mBAAmBloC,KACpC,CAOA,SAASisC,EAAuB9S,EAAM7oB,EAAML,GAC1CjQ,KAAK8iC,SAAW,QAChB9iC,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAKm5B,KAAOA,EACZn5B,KAAKzO,UAAY4nC,EACjBn5B,KAAK6iC,WAAa1J,EAAK7oB,KAAK+Y,GAC5BrpB,KAAKsjC,UAAqB,IAATrzB,EAAaK,EAAKiX,GAAG7O,EAAIpI,EAAK6X,GAAGzP,EAClD1Y,KAAKujC,kBAAoB,GACzBvjC,KAAK0Y,GAAI,EACT1Y,KAAK+nC,IAAK,EACV,IAAIpvB,EAAM3Y,KAAKsjC,UAAU,GAAGxf,EAAE,GAAGtc,EAAE5P,OACnCoI,KAAK+jB,EAAIumB,UAAUlN,aACnBp9B,KAAK+jB,EAAEslB,YAAYrpC,KAAKsjC,UAAU,GAAGxf,EAAE,GAAG5V,EAAGyK,GAC7C3Y,KAAK+iC,GAAKuH,UAAUE,MAAMxqC,KAAK+jB,GAC/B/jB,KAAK2rC,qBAAuBb,oBAAoBC,qBAChD/qC,KAAK0rC,MAAQ1rC,KAAK2rC,qBAClB3rC,KAAK0rC,MAAMd,SAAS5qC,KAAK+jB,GACzB/jB,KAAKkkC,UAAY3B,EACjBviC,KAAKgsC,MAAQP,EACbzrC,KAAKmnC,SAAW,CACdjD,UAAW3B,EACXc,UAAW,GAEbrjC,KAAK2nC,gBAAkB,CAAC6D,EAA4BvzC,KAAK+H,MAC3D,CA7BA+rC,EAAc3qC,UAAU8pC,iBAAmBA,EAC3Ca,EAAc3qC,UAAUinC,SAAWZ,EACnCsE,EAAc3qC,UAAUimC,UAAYA,EACpC0E,EAAc3qC,UAAU4mC,UAAYA,EA4BpCiE,EAAuB7qC,UAAUinC,SAAWZ,EAC5CwE,EAAuB7qC,UAAU8pC,iBAAmBA,EACpDe,EAAuB7qC,UAAUimC,UAAYA,EAC7C4E,EAAuB7qC,UAAU4mC,UAAYA,EAE7C,IAAIkE,EAAmB,WACrB,IAAIC,EAAStqB,YAEb,SAASuqB,EAAwBjT,EAAM7oB,GACrCtQ,KAAK+jB,EAAIumB,UAAUlN,aACnBp9B,KAAK+jB,EAAEslB,aAAY,EAAM,GACzBrpC,KAAK2rC,qBAAuBb,oBAAoBC,qBAChD/qC,KAAK0rC,MAAQ1rC,KAAK2rC,qBAClB3rC,KAAK2rC,qBAAqBf,SAAS5qC,KAAK+jB,GACxC/jB,KAAKqkB,EAAI/T,EAAK+T,EACdrkB,KAAKm5B,KAAOA,EACZn5B,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAK0nC,SAAW,EAChB1nC,KAAKkpC,6BAA6B/P,GAClCn5B,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAK2T,EAAG,EAAG,EAAGjkB,MACrDA,KAAK8jB,EAAI4kB,gBAAgBC,QAAQxP,EAAM7oB,EAAKwT,EAAG,EAAG,EAAG9jB,MAEjDA,KAAK+oC,kBAAkBnxC,OACzBoI,KAAK0Y,GAAI,GAET1Y,KAAK0Y,GAAI,EACT1Y,KAAKqsC,mBAET,CAoDA,OAlDAD,EAAwBhrC,UAAY,CAClC4qC,MAAOP,EACPpD,SAAU,WACJroC,KAAKm5B,KAAK7F,WAAWoU,UAAY1nC,KAAK0nC,UAI1C1nC,KAAK0nC,QAAU1nC,KAAKm5B,KAAK7F,WAAWoU,QACpC1nC,KAAKipC,2BAEDjpC,KAAKwnC,MACPxnC,KAAKqsC,mBAET,EACAA,iBAAkB,WAChB,IAAIC,EAAKtsC,KAAKikB,EAAEF,EAAE,GACdwoB,EAAKvsC,KAAKikB,EAAEF,EAAE,GACdyoB,EAAKxsC,KAAK8jB,EAAEC,EAAE,GAAK,EACnB8iB,EAAK7mC,KAAK8jB,EAAEC,EAAE,GAAK,EAEnB0oB,EAAiB,IAAXzsC,KAAKqkB,EAEXqoB,EAAK1sC,KAAK+jB,EACd2oB,EAAG3oB,EAAE,GAAG,GAAKuoB,EACbI,EAAG3oB,EAAE,GAAG,GAAKwoB,EAAK1F,EAClB6F,EAAG3oB,EAAE,GAAG,GAAK0oB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAG3oB,EAAE,GAAG,GAAKwoB,EACbG,EAAG3oB,EAAE,GAAG,GAAKuoB,EACbI,EAAG3oB,EAAE,GAAG,GAAKwoB,EAAK1F,EAClB6F,EAAG3oB,EAAE,GAAG,GAAK0oB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAG3oB,EAAE,GAAG,GAAKwoB,EACbG,EAAGllC,EAAE,GAAG,GAAKilC,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGllC,EAAE,GAAG,GAAK+kC,EAAK1F,EAClB6F,EAAGllC,EAAE,GAAG,GAAKilC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGllC,EAAE,GAAG,GAAK+kC,EAAK1F,EAAKsF,EACvBO,EAAGllC,EAAE,GAAG,GAAKilC,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGllC,EAAE,GAAG,GAAK+kC,EAAK1F,EAClB6F,EAAGllC,EAAE,GAAG,GAAKilC,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGllC,EAAE,GAAG,GAAK+kC,EAAK1F,EAAKsF,EACvBO,EAAGtkB,EAAE,GAAG,GAAKqkB,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGtkB,EAAE,GAAG,GAAKmkB,EAAK1F,EAClB6F,EAAGtkB,EAAE,GAAG,GAAKqkB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGtkB,EAAE,GAAG,GAAKmkB,EAAK1F,EAAKsF,EACvBO,EAAGtkB,EAAE,GAAG,GAAKqkB,EAAMH,EAAKE,EAAKL,EAASG,EAAKE,EAAKL,EAChDO,EAAGtkB,EAAE,GAAG,GAAKmkB,EAAK1F,EAClB6F,EAAGtkB,EAAE,GAAG,GAAKqkB,EAAMH,EAAKE,EAAKF,EAAKE,EAClCE,EAAGtkB,EAAE,GAAG,GAAKmkB,EAAK1F,EAAKsF,CACzB,GAEFpuB,gBAAgB,CAAC+qB,0BAA2BsD,GACrCA,CACT,CA5EuB,GA8EnBO,EAAoB,WACtB,SAASC,EAAyBzT,EAAM7oB,GACtCtQ,KAAK+jB,EAAIumB,UAAUlN,aACnBp9B,KAAK+jB,EAAEslB,aAAY,EAAM,GACzBrpC,KAAKm5B,KAAOA,EACZn5B,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAKsQ,KAAOA,EACZtQ,KAAK0nC,SAAW,EAChB1nC,KAAKqkB,EAAI/T,EAAK+T,EACdrkB,KAAKkpC,6BAA6B/P,GAElB,IAAZ7oB,EAAKu8B,IACP7sC,KAAK8sC,GAAKpE,gBAAgBC,QAAQxP,EAAM7oB,EAAKw8B,GAAI,EAAG,EAAG9sC,MACvDA,KAAK+sC,GAAKrE,gBAAgBC,QAAQxP,EAAM7oB,EAAKy8B,GAAI,EAAG,IAAM/sC,MAC1DA,KAAKgtC,cAAgBhtC,KAAKitC,mBAE1BjtC,KAAKgtC,cAAgBhtC,KAAKktC,qBAG5BltC,KAAKunB,GAAKmhB,gBAAgBC,QAAQxP,EAAM7oB,EAAKiX,GAAI,EAAG,EAAGvnB,MACvDA,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAK2T,EAAG,EAAG,EAAGjkB,MACrDA,KAAKgkB,EAAI0kB,gBAAgBC,QAAQxP,EAAM7oB,EAAK0T,EAAG,EAAGrC,UAAW3hB,MAC7DA,KAAKmtC,GAAKzE,gBAAgBC,QAAQxP,EAAM7oB,EAAK68B,GAAI,EAAG,EAAGntC,MACvDA,KAAKotC,GAAK1E,gBAAgBC,QAAQxP,EAAM7oB,EAAK88B,GAAI,EAAG,IAAMptC,MAC1DA,KAAK2rC,qBAAuBb,oBAAoBC,qBAChD/qC,KAAK2rC,qBAAqBf,SAAS5qC,KAAK+jB,GACxC/jB,KAAK0rC,MAAQ1rC,KAAK2rC,qBAEd3rC,KAAK+oC,kBAAkBnxC,OACzBoI,KAAK0Y,GAAI,GAET1Y,KAAK0Y,GAAI,EACT1Y,KAAKgtC,gBAET,CAuFA,OArFAJ,EAAyBxrC,UAAY,CACnC4qC,MAAOP,EACPpD,SAAU,WACJroC,KAAKm5B,KAAK7F,WAAWoU,UAAY1nC,KAAK0nC,UAI1C1nC,KAAK0nC,QAAU1nC,KAAKm5B,KAAK7F,WAAWoU,QACpC1nC,KAAKipC,2BAEDjpC,KAAKwnC,MACPxnC,KAAKgtC,gBAET,EACAC,kBAAmB,WACjB,IAaIzlC,EACA6lC,EACAC,EACAC,EAhBAC,EAAiC,EAAxBpxC,KAAKib,MAAMrX,KAAKunB,GAAGxD,GAC5B0pB,EAAkB,EAAVrxC,KAAKwlB,GAAS4rB,EAKtBE,GAAW,EACXC,EAAU3tC,KAAKmtC,GAAGppB,EAClB6pB,EAAW5tC,KAAK8sC,GAAG/oB,EACnB8pB,EAAY7tC,KAAKotC,GAAGrpB,EACpB+pB,EAAa9tC,KAAK+sC,GAAGhpB,EACrBgqB,EAAmB,EAAI3xC,KAAKwlB,GAAK+rB,GAAoB,EAATH,GAC5CQ,EAAoB,EAAI5xC,KAAKwlB,GAAKgsB,GAAqB,EAATJ,GAK9CS,GAAc7xC,KAAKwlB,GAAK,EAC5BqsB,GAAcjuC,KAAKgkB,EAAED,EACrB,IAAI8b,EAAsB,IAAhB7/B,KAAKsQ,KAAK+T,GAAW,EAAI,EAGnC,IAFArkB,KAAK+jB,EAAEkZ,QAAU,EAEZz1B,EAAI,EAAGA,EAAIgmC,EAAQhmC,GAAK,EAAG,CAE9B8lC,EAAYI,EAAWG,EAAYC,EACnCP,EAAeG,EAAWK,EAAmBC,EAC7C,IAAIruC,GAHJ0tC,EAAMK,EAAWC,EAAUC,GAGbxxC,KAAKsqC,IAAIuH,GACnBruC,EAAIytC,EAAMjxC,KAAK0pC,IAAImI,GACnBC,EAAW,IAANvuC,GAAiB,IAANC,EAAU,EAAIA,EAAIxD,KAAK8kB,KAAKvhB,EAAIA,EAAIC,EAAIA,GACxDuuC,EAAW,IAANxuC,GAAiB,IAANC,EAAU,GAAKD,EAAIvD,KAAK8kB,KAAKvhB,EAAIA,EAAIC,EAAIA,GAC7DD,IAAMK,KAAKikB,EAAEF,EAAE,GACfnkB,IAAMI,KAAKikB,EAAEF,EAAE,GACf/jB,KAAK+jB,EAAE0lB,YAAY9pC,EAAGC,EAAGD,EAAIuuC,EAAKX,EAAeD,EAAYzN,EAAKjgC,EAAIuuC,EAAKZ,EAAeD,EAAYzN,EAAKlgC,EAAIuuC,EAAKX,EAAeD,EAAYzN,EAAKjgC,EAAIuuC,EAAKZ,EAAeD,EAAYzN,EAAKr4B,GAAG,GAMhMkmC,GAAYA,EACZO,GAAcR,EAAQ5N,CACxB,CACF,EACAqN,qBAAsB,WACpB,IAKI1lC,EALAgmC,EAASpxC,KAAKib,MAAMrX,KAAKunB,GAAGxD,GAC5B0pB,EAAkB,EAAVrxC,KAAKwlB,GAAS4rB,EACtBH,EAAMrtC,KAAKmtC,GAAGppB,EACdupB,EAAYttC,KAAKotC,GAAGrpB,EACpBwpB,EAAe,EAAInxC,KAAKwlB,GAAKyrB,GAAgB,EAATG,GAEpCS,EAAwB,IAAV7xC,KAAKwlB,GACnBie,EAAsB,IAAhB7/B,KAAKsQ,KAAK+T,GAAW,EAAI,EAInC,IAHA4pB,GAAcjuC,KAAKgkB,EAAED,EACrB/jB,KAAK+jB,EAAEkZ,QAAU,EAEZz1B,EAAI,EAAGA,EAAIgmC,EAAQhmC,GAAK,EAAG,CAC9B,IAAI7H,EAAI0tC,EAAMjxC,KAAKsqC,IAAIuH,GACnBruC,EAAIytC,EAAMjxC,KAAK0pC,IAAImI,GACnBC,EAAW,IAANvuC,GAAiB,IAANC,EAAU,EAAIA,EAAIxD,KAAK8kB,KAAKvhB,EAAIA,EAAIC,EAAIA,GACxDuuC,EAAW,IAANxuC,GAAiB,IAANC,EAAU,GAAKD,EAAIvD,KAAK8kB,KAAKvhB,EAAIA,EAAIC,EAAIA,GAC7DD,IAAMK,KAAKikB,EAAEF,EAAE,GACfnkB,IAAMI,KAAKikB,EAAEF,EAAE,GACf/jB,KAAK+jB,EAAE0lB,YAAY9pC,EAAGC,EAAGD,EAAIuuC,EAAKX,EAAeD,EAAYzN,EAAKjgC,EAAIuuC,EAAKZ,EAAeD,EAAYzN,EAAKlgC,EAAIuuC,EAAKX,EAAeD,EAAYzN,EAAKjgC,EAAIuuC,EAAKZ,EAAeD,EAAYzN,EAAKr4B,GAAG,GAChMymC,GAAcR,EAAQ5N,CACxB,CAEA7/B,KAAK0rC,MAAM9zC,OAAS,EACpBoI,KAAK0rC,MAAM,GAAK1rC,KAAK+jB,CACvB,GAEFhG,gBAAgB,CAAC+qB,0BAA2B8D,GACrCA,CACT,CA1HwB,GA4HpBwB,EAAoB,WACtB,SAASC,EAAyBlV,EAAM7oB,GACtCtQ,KAAK+jB,EAAIumB,UAAUlN,aACnBp9B,KAAK+jB,EAAE7V,GAAI,EACXlO,KAAK2rC,qBAAuBb,oBAAoBC,qBAChD/qC,KAAK2rC,qBAAqBf,SAAS5qC,KAAK+jB,GACxC/jB,KAAK0rC,MAAQ1rC,KAAK2rC,qBAClB3rC,KAAKm5B,KAAOA,EACZn5B,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAK0nC,SAAW,EAChB1nC,KAAKqkB,EAAI/T,EAAK+T,EACdrkB,KAAKkpC,6BAA6B/P,GAClCn5B,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAK2T,EAAG,EAAG,EAAGjkB,MACrDA,KAAK8jB,EAAI4kB,gBAAgBC,QAAQxP,EAAM7oB,EAAKwT,EAAG,EAAG,EAAG9jB,MACrDA,KAAKgkB,EAAI0kB,gBAAgBC,QAAQxP,EAAM7oB,EAAK0T,EAAG,EAAG,EAAGhkB,MAEjDA,KAAK+oC,kBAAkBnxC,OACzBoI,KAAK0Y,GAAI,GAET1Y,KAAK0Y,GAAI,EACT1Y,KAAKsuC,oBAET,CA4DA,OA1DAD,EAAyBjtC,UAAY,CACnCktC,kBAAmB,WACjB,IAAIhC,EAAKtsC,KAAKikB,EAAEF,EAAE,GACdwoB,EAAKvsC,KAAKikB,EAAEF,EAAE,GACdwqB,EAAKvuC,KAAK8jB,EAAEC,EAAE,GAAK,EACnByqB,EAAKxuC,KAAK8jB,EAAEC,EAAE,GAAK,EACnB/B,EAAQX,MAAMktB,EAAIC,EAAIxuC,KAAKgkB,EAAED,GAC7BooB,EAASnqB,GAAS,EAAIH,aAC1B7hB,KAAK+jB,EAAEkZ,QAAU,EAEF,IAAXj9B,KAAKqkB,GAAsB,IAAXrkB,KAAKqkB,GACvBrkB,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,GACrGnsC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAO,GAAG,GAEvF,IAAVA,GACFhiB,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAI,GAAG,GACrGxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,GACrGnsC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAO,GAAG,GACrGhiB,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAI,GAAG,KAErGxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAI,GAClFxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAI,MAGpFxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAO,GAAG,GAEvF,IAAVA,GACFhiB,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAI,GAAG,GACrGxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,GACrGnsC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAO,GAAG,GACrGhiB,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAI,GAAG,GACrGxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAKvsB,EAAOuqB,EAAKiC,EAAI,GAAG,GACrGxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKxsB,EAAOsqB,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQ,GAAG,KAErGnsC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAI,GAAG,GACrFxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAKrC,EAAQG,EAAKiC,EAAIhC,EAAKiC,EAAI,GAAG,GACrFxuC,KAAK+jB,EAAE0lB,YAAY6C,EAAKiC,EAAIhC,EAAKiC,EAAIlC,EAAKiC,EAAKpC,EAAQI,EAAKiC,EAAIlC,EAAKiC,EAAIhC,EAAKiC,EAAI,GAAG,IAG3F,EACAnG,SAAU,WACJroC,KAAKm5B,KAAK7F,WAAWoU,UAAY1nC,KAAK0nC,UAI1C1nC,KAAK0nC,QAAU1nC,KAAKm5B,KAAK7F,WAAWoU,QACpC1nC,KAAKipC,2BAEDjpC,KAAKwnC,MACPxnC,KAAKsuC,oBAET,EACAtC,MAAOP,GAET1tB,gBAAgB,CAAC+qB,0BAA2BuF,GACrCA,CACT,CAnFwB,GA4HxB,MAJS,CACTtgB,aApCA,SAAsBoL,EAAM7oB,EAAML,GAChC,IAAIoO,EAuBJ,OArBa,IAATpO,GAAuB,IAATA,EAKdoO,GAJsB,IAATpO,EAAaK,EAAKiX,GAAKjX,EAAK6X,IACvBzP,EAEX9gB,OACA,IAAIq0C,EAAuB9S,EAAM7oB,EAAML,GAEvC,IAAI87B,EAAc5S,EAAM7oB,EAAML,GAErB,IAATA,EACToO,EAAO,IAAI+vB,EAAkBjV,EAAM7oB,GACjB,IAATL,EACToO,EAAO,IAAI6tB,EAAiB/S,EAAM7oB,GAChB,IAATL,IACToO,EAAO,IAAIsuB,EAAkBxT,EAAM7oB,IAGjC+N,EAAK3F,GACPygB,EAAK+O,mBAAmB7pB,GAGnBA,CACT,EAYA0P,uBAVA,WACE,OAAOge,CACT,EASAhe,gCAPA,WACE,OAAOke,CACT,EAOF,CAzjB2B,GAwlBvBwC,OAAS,WACX,IAAIC,EAAOtyC,KAAKsqC,IACZiI,EAAOvyC,KAAK0pC,IACZ8I,EAAOxyC,KAAKyyC,IACZC,EAAO1yC,KAAK4lB,MAEhB,SAASgqB,IAiBP,OAhBAhsC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,GAAK,EAChB/uC,KAAK+uC,MAAM,IAAM,EACjB/uC,KAAK+uC,MAAM,IAAM,EACjB/uC,KAAK+uC,MAAM,IAAM,EACjB/uC,KAAK+uC,MAAM,IAAM,EACjB/uC,KAAK+uC,MAAM,IAAM,EACjB/uC,KAAK+uC,MAAM,IAAM,EACV/uC,IACT,CAEA,SAASgvC,EAAOvB,GACd,GAAc,IAAVA,EACF,OAAOztC,KAGT,IAAIivC,EAAOP,EAAKjB,GAEZyB,EAAOP,EAAKlB,GAEhB,OAAOztC,KAAKmvC,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,CAEA,SAASG,EAAQ3B,GACf,GAAc,IAAVA,EACF,OAAOztC,KAGT,IAAIivC,EAAOP,EAAKjB,GAEZyB,EAAOP,EAAKlB,GAEhB,OAAOztC,KAAKmvC,GAAG,EAAG,EAAG,EAAG,EAAG,EAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAC3E,CAEA,SAASI,EAAQ5B,GACf,GAAc,IAAVA,EACF,OAAOztC,KAGT,IAAIivC,EAAOP,EAAKjB,GAEZyB,EAAOP,EAAKlB,GAEhB,OAAOztC,KAAKmvC,GAAGF,EAAM,EAAGC,EAAM,EAAG,EAAG,EAAG,EAAG,GAAIA,EAAM,EAAGD,EAAM,EAAG,EAAG,EAAG,EAAG,EAC3E,CAEA,SAASK,EAAQ7B,GACf,GAAc,IAAVA,EACF,OAAOztC,KAGT,IAAIivC,EAAOP,EAAKjB,GAEZyB,EAAOP,EAAKlB,GAEhB,OAAOztC,KAAKmvC,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAC3E,CAEA,SAASM,EAAMC,EAAI3C,GACjB,OAAO7sC,KAAKmvC,GAAG,EAAGtC,EAAI2C,EAAI,EAAG,EAAG,EAClC,CAEA,SAASC,EAAKpK,EAAIC,GAChB,OAAOtlC,KAAKuvC,MAAMX,EAAKvJ,GAAKuJ,EAAKtJ,GACnC,CAEA,SAASoK,EAAarK,EAAIoI,GACxB,IAAIwB,EAAOP,EAAKjB,GAEZyB,EAAOP,EAAKlB,GAEhB,OAAOztC,KAAKmvC,GAAGF,EAAMC,EAAM,EAAG,GAAIA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAGE,GAAG,EAAG,EAAG,EAAG,EAAGP,EAAKvJ,GAAK,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAAG8J,GAAGF,GAAOC,EAAM,EAAG,EAAGA,EAAMD,EAAM,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EACrM,CAEA,SAASU,EAAMH,EAAI3C,EAAI+C,GAKrB,OAJKA,GAAa,IAAPA,IACTA,EAAK,GAGI,IAAPJ,GAAmB,IAAP3C,GAAmB,IAAP+C,EACnB5vC,KAGFA,KAAKmvC,GAAGK,EAAI,EAAG,EAAG,EAAG,EAAG3C,EAAI,EAAG,EAAG,EAAG,EAAG+C,EAAI,EAAG,EAAG,EAAG,EAAG,EACjE,CAEA,SAASC,EAAa7hC,EAAGC,EAAGC,EAAGmW,EAAG9rB,EAAG8I,EAAGmN,EAAGqV,EAAGrc,EAAGwf,EAAGtO,EAAGo3B,EAAGC,EAAGj3B,EAAGsP,EAAGnE,GAiBjE,OAhBAjkB,KAAK+uC,MAAM,GAAK/gC,EAChBhO,KAAK+uC,MAAM,GAAK9gC,EAChBjO,KAAK+uC,MAAM,GAAK7gC,EAChBlO,KAAK+uC,MAAM,GAAK1qB,EAChBrkB,KAAK+uC,MAAM,GAAKx2C,EAChByH,KAAK+uC,MAAM,GAAK1tC,EAChBrB,KAAK+uC,MAAM,GAAKvgC,EAChBxO,KAAK+uC,MAAM,GAAKlrB,EAChB7jB,KAAK+uC,MAAM,GAAKvnC,EAChBxH,KAAK+uC,MAAM,GAAK/nB,EAChBhnB,KAAK+uC,MAAM,IAAMr2B,EACjB1Y,KAAK+uC,MAAM,IAAMe,EACjB9vC,KAAK+uC,MAAM,IAAMgB,EACjB/vC,KAAK+uC,MAAM,IAAMj2B,EACjB9Y,KAAK+uC,MAAM,IAAM3mB,EACjBpoB,KAAK+uC,MAAM,IAAM9qB,EACVjkB,IACT,CAEA,SAASgwC,EAAUC,EAAIxoB,EAAIyoB,GAGzB,OAFAA,EAAKA,GAAM,EAEA,IAAPD,GAAmB,IAAPxoB,GAAmB,IAAPyoB,EACnBlwC,KAAKmvC,GAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAGc,EAAIxoB,EAAIyoB,EAAI,GAG1DlwC,IACT,CAEA,SAASmwC,EAAUC,EAAIC,EAAI1J,EAAI2J,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,GAC7E,IAAI/V,EAAKn7B,KAAK+uC,MAEd,GAAW,IAAPqB,GAAmB,IAAPC,GAAmB,IAAP1J,GAAmB,IAAP2J,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,GAAmB,IAAPC,EAStI,OANA3V,EAAG,IAAMA,EAAG,IAAMiV,EAAKjV,EAAG,IAAM4V,EAChC5V,EAAG,IAAMA,EAAG,IAAMqV,EAAKrV,EAAG,IAAM6V,EAChC7V,EAAG,IAAMA,EAAG,IAAM0V,EAAK1V,EAAG,IAAM8V,EAChC9V,EAAG,KAAO+V,EAEVlxC,KAAKmxC,qBAAsB,EACpBnxC,KAGT,IAAIoxC,EAAKjW,EAAG,GACRkW,EAAKlW,EAAG,GACRsL,EAAKtL,EAAG,GACRmW,EAAKnW,EAAG,GACRoW,EAAKpW,EAAG,GACRqW,EAAKrW,EAAG,GACRsW,EAAKtW,EAAG,GACRuW,EAAKvW,EAAG,GACRwW,EAAKxW,EAAG,GACRyW,EAAKzW,EAAG,GACR0W,EAAK1W,EAAG,IACR2W,EAAK3W,EAAG,IACR4W,EAAK5W,EAAG,IACR6W,EAAK7W,EAAG,IACR8W,EAAK9W,EAAG,IACRoR,EAAKpR,EAAG,IAwBZ,OAjBAA,EAAG,GAAKiW,EAAKhB,EAAKiB,EAAKd,EAAK9J,EAAKkK,EAAKW,EAAKP,EAC3C5V,EAAG,GAAKiW,EAAKf,EAAKgB,EAAKb,EAAK/J,EAAKmK,EAAKU,EAAKN,EAC3C7V,EAAG,GAAKiW,EAAKzK,EAAK0K,EAAKZ,EAAKhK,EAAKoK,EAAKS,EAAKL,EAC3C9V,EAAG,GAAKiW,EAAKd,EAAKe,EAAKX,EAAKjK,EAAKqK,EAAKQ,EAAKJ,EAC3C/V,EAAG,GAAKoW,EAAKnB,EAAKoB,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAC3C5V,EAAG,GAAKoW,EAAKlB,EAAKmB,EAAKhB,EAAKiB,EAAKb,EAAKc,EAAKV,EAC3C7V,EAAG,GAAKoW,EAAK5K,EAAK6K,EAAKf,EAAKgB,EAAKZ,EAAKa,EAAKT,EAC3C9V,EAAG,GAAKoW,EAAKjB,EAAKkB,EAAKd,EAAKe,EAAKX,EAAKY,EAAKR,EAC3C/V,EAAG,GAAKwW,EAAKvB,EAAKwB,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAC3C5V,EAAG,GAAKwW,EAAKtB,EAAKuB,EAAKpB,EAAKqB,EAAKjB,EAAKkB,EAAKd,EAC3C7V,EAAG,IAAMwW,EAAKhL,EAAKiL,EAAKnB,EAAKoB,EAAKhB,EAAKiB,EAAKb,EAC5C9V,EAAG,IAAMwW,EAAKrB,EAAKsB,EAAKlB,EAAKmB,EAAKf,EAAKgB,EAAKZ,EAC5C/V,EAAG,IAAM4W,EAAK3B,EAAK4B,EAAKzB,EAAK0B,EAAKtB,EAAKpE,EAAKwE,EAC5C5V,EAAG,IAAM4W,EAAK1B,EAAK2B,EAAKxB,EAAKyB,EAAKrB,EAAKrE,EAAKyE,EAC5C7V,EAAG,IAAM4W,EAAKpL,EAAKqL,EAAKvB,EAAKwB,EAAKpB,EAAKtE,EAAK0E,EAC5C9V,EAAG,IAAM4W,EAAKzB,EAAK0B,EAAKtB,EAAKuB,EAAKnB,EAAKvE,EAAK2E,EAC5ClxC,KAAKmxC,qBAAsB,EACpBnxC,IACT,CAEA,SAASkyC,EAASC,GAChB,IAAIC,EAAcD,EAAOpD,MACzB,OAAO/uC,KAAKmwC,UAAUiC,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,GAAIA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IAAKA,EAAY,IACzR,CAEA,SAASC,IAMP,OALKryC,KAAKmxC,sBACRnxC,KAAKsyC,YAAgC,IAAlBtyC,KAAK+uC,MAAM,IAA8B,IAAlB/uC,KAAK+uC,MAAM,IAA8B,IAAlB/uC,KAAK+uC,MAAM,IAA8B,IAAlB/uC,KAAK+uC,MAAM,IAA8B,IAAlB/uC,KAAK+uC,MAAM,IAA8B,IAAlB/uC,KAAK+uC,MAAM,IAA8B,IAAlB/uC,KAAK+uC,MAAM,IAA8B,IAAlB/uC,KAAK+uC,MAAM,IAA8B,IAAlB/uC,KAAK+uC,MAAM,IAA8B,IAAlB/uC,KAAK+uC,MAAM,IAA+B,IAAnB/uC,KAAK+uC,MAAM,KAAgC,IAAnB/uC,KAAK+uC,MAAM,KAAgC,IAAnB/uC,KAAK+uC,MAAM,KAAgC,IAAnB/uC,KAAK+uC,MAAM,KAAgC,IAAnB/uC,KAAK+uC,MAAM,KAAgC,IAAnB/uC,KAAK+uC,MAAM,KAC5X/uC,KAAKmxC,qBAAsB,GAGtBnxC,KAAKsyC,SACd,CAEA,SAASC,EAAOC,GAGd,IAFA,IAAIhrC,EAAI,EAEDA,EAAI,IAAI,CACb,GAAIgrC,EAAKzD,MAAMvnC,KAAOxH,KAAK+uC,MAAMvnC,GAC/B,OAAO,EAGTA,GAAK,CACP,CAEA,OAAO,CACT,CAEA,SAASgjC,EAAMgI,GACb,IAAIhrC,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBgrC,EAAKzD,MAAMvnC,GAAKxH,KAAK+uC,MAAMvnC,GAG7B,OAAOgrC,CACT,CAEA,SAASC,EAAe1D,GACtB,IAAIvnC,EAEJ,IAAKA,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBxH,KAAK+uC,MAAMvnC,GAAKunC,EAAMvnC,EAE1B,CAEA,SAASkrC,EAAa/yC,EAAGC,EAAG+yC,GAC1B,MAAO,CACLhzC,EAAGA,EAAIK,KAAK+uC,MAAM,GAAKnvC,EAAII,KAAK+uC,MAAM,GAAK4D,EAAI3yC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,IAC1EnvC,EAAGD,EAAIK,KAAK+uC,MAAM,GAAKnvC,EAAII,KAAK+uC,MAAM,GAAK4D,EAAI3yC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,IAC1E4D,EAAGhzC,EAAIK,KAAK+uC,MAAM,GAAKnvC,EAAII,KAAK+uC,MAAM,GAAK4D,EAAI3yC,KAAK+uC,MAAM,IAAM/uC,KAAK+uC,MAAM,IAM/E,CAEA,SAAS6D,EAASjzC,EAAGC,EAAG+yC,GACtB,OAAOhzC,EAAIK,KAAK+uC,MAAM,GAAKnvC,EAAII,KAAK+uC,MAAM,GAAK4D,EAAI3yC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,GAChF,CAEA,SAAS8D,EAASlzC,EAAGC,EAAG+yC,GACtB,OAAOhzC,EAAIK,KAAK+uC,MAAM,GAAKnvC,EAAII,KAAK+uC,MAAM,GAAK4D,EAAI3yC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,GAChF,CAEA,SAAS+D,EAASnzC,EAAGC,EAAG+yC,GACtB,OAAOhzC,EAAIK,KAAK+uC,MAAM,GAAKnvC,EAAII,KAAK+uC,MAAM,GAAK4D,EAAI3yC,KAAK+uC,MAAM,IAAM/uC,KAAK+uC,MAAM,GACjF,CAEA,SAASgE,IACP,IAAIC,EAAchzC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,GACzE/gC,EAAIhO,KAAK+uC,MAAM,GAAKiE,EACpB/kC,GAAKjO,KAAK+uC,MAAM,GAAKiE,EACrB9kC,GAAKlO,KAAK+uC,MAAM,GAAKiE,EACrB3uB,EAAIrkB,KAAK+uC,MAAM,GAAKiE,EACpBz6C,GAAKyH,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,IAAM/uC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,KAAOiE,EACxE3xC,IAAMrB,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,IAAM/uC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,KAAOiE,EACzEC,EAAgB,IAAIxE,OAOxB,OANAwE,EAAclE,MAAM,GAAK/gC,EACzBilC,EAAclE,MAAM,GAAK9gC,EACzBglC,EAAclE,MAAM,GAAK7gC,EACzB+kC,EAAclE,MAAM,GAAK1qB,EACzB4uB,EAAclE,MAAM,IAAMx2C,EAC1B06C,EAAclE,MAAM,IAAM1tC,EACnB4xC,CACT,CAEA,SAASC,EAAa3rB,GAEpB,OADoBvnB,KAAK+yC,mBACJI,kBAAkB5rB,EAAG,GAAIA,EAAG,GAAIA,EAAG,IAAM,EAChE,CAEA,SAAS6rB,EAAcC,GACrB,IAAI7rC,EACAmR,EAAM06B,EAAIz7C,OACV07C,EAAS,GAEb,IAAK9rC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB8rC,EAAO9rC,GAAK0rC,EAAaG,EAAI7rC,IAG/B,OAAO8rC,CACT,CAEA,SAASC,EAAoBjV,EAAKC,EAAKC,GACrC,IAAIte,EAAMF,iBAAiB,UAAW,GAEtC,GAAIhgB,KAAKqyC,aACPnyB,EAAI,GAAKoe,EAAI,GACbpe,EAAI,GAAKoe,EAAI,GACbpe,EAAI,GAAKqe,EAAI,GACbre,EAAI,GAAKqe,EAAI,GACbre,EAAI,GAAKse,EAAI,GACbte,EAAI,GAAKse,EAAI,OACR,CACL,IAAI8N,EAAKtsC,KAAK+uC,MAAM,GAChBxC,EAAKvsC,KAAK+uC,MAAM,GAChByE,EAAKxzC,KAAK+uC,MAAM,GAChB0E,EAAKzzC,KAAK+uC,MAAM,GAChB2E,EAAM1zC,KAAK+uC,MAAM,IACjB4E,EAAM3zC,KAAK+uC,MAAM,IACrB7uB,EAAI,GAAKoe,EAAI,GAAKgO,EAAKhO,EAAI,GAAKkV,EAAKE,EACrCxzB,EAAI,GAAKoe,EAAI,GAAKiO,EAAKjO,EAAI,GAAKmV,EAAKE,EACrCzzB,EAAI,GAAKqe,EAAI,GAAK+N,EAAK/N,EAAI,GAAKiV,EAAKE,EACrCxzB,EAAI,GAAKqe,EAAI,GAAKgO,EAAKhO,EAAI,GAAKkV,EAAKE,EACrCzzB,EAAI,GAAKse,EAAI,GAAK8N,EAAK9N,EAAI,GAAKgV,EAAKE,EACrCxzB,EAAI,GAAKse,EAAI,GAAK+N,EAAK/N,EAAI,GAAKiV,EAAKE,CACvC,CAEA,OAAOzzB,CACT,CAEA,SAASizB,EAAkBxzC,EAAGC,EAAG+yC,GAS/B,OANI3yC,KAAKqyC,aACD,CAAC1yC,EAAGC,EAAG+yC,GAEP,CAAChzC,EAAIK,KAAK+uC,MAAM,GAAKnvC,EAAII,KAAK+uC,MAAM,GAAK4D,EAAI3yC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,IAAKpvC,EAAIK,KAAK+uC,MAAM,GAAKnvC,EAAII,KAAK+uC,MAAM,GAAK4D,EAAI3yC,KAAK+uC,MAAM,GAAK/uC,KAAK+uC,MAAM,IAAKpvC,EAAIK,KAAK+uC,MAAM,GAAKnvC,EAAII,KAAK+uC,MAAM,GAAK4D,EAAI3yC,KAAK+uC,MAAM,IAAM/uC,KAAK+uC,MAAM,IAI3O,CAEA,SAAS6E,EAAwBj0C,EAAGC,GAClC,GAAII,KAAKqyC,aACP,OAAO1yC,EAAI,IAAMC,EAGnB,IAAIu7B,EAAKn7B,KAAK+uC,MACd,OAAO3yC,KAAK4lB,MAAyC,KAAlCriB,EAAIw7B,EAAG,GAAKv7B,EAAIu7B,EAAG,GAAKA,EAAG,MAAc,IAAM,IAAM/+B,KAAK4lB,MAAyC,KAAlCriB,EAAIw7B,EAAG,GAAKv7B,EAAIu7B,EAAG,GAAKA,EAAG,MAAc,GAC/H,CAEA,SAAS0Y,IAWP,IALA,IAAIrsC,EAAI,EACJunC,EAAQ/uC,KAAK+uC,MACb+E,EAAW,YAGRtsC,EAAI,IACTssC,GAAYhF,EAHN,IAGWC,EAAMvnC,IAHjB,IAINssC,GAAkB,KAANtsC,EAAW,IAAM,IAC7BA,GAAK,EAGP,OAAOssC,CACT,CAEA,SAASC,EAAoB9+B,GAG3B,OAAIA,EAAM,MAAYA,EAAM,GAAKA,GAAO,MAAYA,EAAM,EACjD65B,EAHD,IAGM75B,GAHN,IAMDA,CACT,CAEA,SAAS++B,IAMP,IAAIjF,EAAQ/uC,KAAK+uC,MAcjB,MAAO,UAZEgF,EAAoBhF,EAAM,IAYX,IAVfgF,EAAoBhF,EAAM,IAUA,IAR1BgF,EAAoBhF,EAAM,IAQW,IANrCgF,EAAoBhF,EAAM,IAMsB,IAJhDgF,EAAoBhF,EAAM,KAIiC,IAF3DgF,EAAoBhF,EAAM,KAE4C,GACjF,CAEA,OAAO,WACL/uC,KAAKgsC,MAAQA,EACbhsC,KAAKgvC,OAASA,EACdhvC,KAAKovC,QAAUA,EACfpvC,KAAKqvC,QAAUA,EACfrvC,KAAKsvC,QAAUA,EACftvC,KAAKyvC,KAAOA,EACZzvC,KAAK0vC,aAAeA,EACpB1vC,KAAKuvC,MAAQA,EACbvvC,KAAK2vC,MAAQA,EACb3vC,KAAK6vC,aAAeA,EACpB7vC,KAAKgwC,UAAYA,EACjBhwC,KAAKmwC,UAAYA,EACjBnwC,KAAKkyC,SAAWA,EAChBlyC,KAAK0yC,aAAeA,EACpB1yC,KAAK4yC,SAAWA,EAChB5yC,KAAK6yC,SAAWA,EAChB7yC,KAAK8yC,SAAWA,EAChB9yC,KAAKmzC,kBAAoBA,EACzBnzC,KAAKuzC,oBAAsBA,EAC3BvzC,KAAK4zC,wBAA0BA,EAC/B5zC,KAAK6zC,MAAQA,EACb7zC,KAAKg0C,QAAUA,EACfh0C,KAAKwqC,MAAQA,EACbxqC,KAAKyyC,eAAiBA,EACtBzyC,KAAKuyC,OAASA,EACdvyC,KAAKozC,cAAgBA,EACrBpzC,KAAKkzC,aAAeA,EACpBlzC,KAAK+yC,iBAAmBA,EACxB/yC,KAAKmvC,GAAKnvC,KAAKmwC,UACfnwC,KAAKqyC,WAAaA,EAClBryC,KAAKsyC,WAAY,EACjBtyC,KAAKmxC,qBAAsB,EAC3BnxC,KAAK+uC,MAAQ/uB,iBAAiB,UAAW,IACzChgB,KAAKgsC,OACP,CACF,CAhba,GAkbb,SAASiI,UAAUzzB,GAAuV,OAA1OyzB,UAArD,mBAAX5pC,QAAoD,iBAApBA,OAAOjI,SAAqC,SAAiBoe,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYyzB,UAAUzzB,EAAM,CACjY,IAAIzpB,OAAS,CAAC,EACV2iC,WAAa,mBACb5Q,cAAgB,sBAChB9xB,SAAW,GAEf,SAASk9C,YAAYC,GACnBv2B,gBAAgBu2B,EAClB,CAEA,SAAS1a,oBACY,IAAfC,WACFlB,iBAAiBiB,iBAAiB3Q,cAAe4Q,WAAY1iC,UAE7DwhC,iBAAiBiB,kBAErB,CAEA,SAAS2a,qBAAqB12B,GAC5BoH,mBAAmBpH,EACrB,CAEA,SAAS22B,UAAUC,GACjBhvB,YAAYgvB,EACd,CAEA,SAAS3oB,cAAcsH,GAKrB,OAJmB,IAAfyG,aACFzG,EAAOnK,cAAgBb,KAAKC,MAAMY,gBAG7B0P,iBAAiB7M,cAAcsH,EACxC,CAEA,SAASshB,WAAWtgD,GAClB,GAAqB,iBAAVA,EACT,OAAQA,GACN,IAAK,OACHmxB,wBAAwB,KACxB,MAEF,QACA,IAAK,SACHA,wBAAwB,IACxB,MAEF,IAAK,MACHA,wBAAwB,SAGlB9N,MAAMrjB,IAAUA,EAAQ,GAClCmxB,wBAAwBnxB,GAGtBoxB,2BAA6B,GAC/BvD,aAAY,GAEZA,aAAY,EAEhB,CAEA,SAAS0yB,YACP,MAA4B,oBAAdp3B,SAChB,CAEA,SAASq3B,cAAcxkC,EAAMykC,GACd,gBAATzkC,GACF+U,qBAAqB0vB,EAEzB,CAEA,SAASC,WAAW3qC,GAClB,OAAQA,GACN,IAAK,kBACH,OAAO0+B,gBAET,IAAK,uBACH,OAAOuC,qBAET,IAAK,SACH,OAAOwD,OAET,QACE,OAAO,KAEb,CA+BA,SAASmG,aACqB,aAAxB7jD,SAASm6B,aACX2C,cAAcgnB,yBACdpb,mBAEJ,CAEA,SAASqb,iBAAiB1mC,GAGxB,IAFA,IAAI2mC,EAAOC,YAAY/nC,MAAM,KAEpBzF,EAAI,EAAGA,EAAIutC,EAAKn9C,OAAQ4P,GAAK,EAAG,CACvC,IAAIytC,EAAOF,EAAKvtC,GAAGyF,MAAM,KAEzB,GAAIioC,mBAAmBD,EAAK,KAAO7mC,EAEjC,OAAO8mC,mBAAmBD,EAAK,GAEnC,CAEA,OAAO,IACT,CAjDAl+C,OAAOxC,KAAOikC,iBAAiBjkC,KAC/BwC,OAAO1C,MAAQmkC,iBAAiBnkC,MAChC0C,OAAO6mB,gBAAkBs2B,YACzBn9C,OAAOq/B,YAAcoC,iBAAiBpC,YACtCr/B,OAAOsgC,SAAWmB,iBAAiBnB,SACnCtgC,OAAOugC,aAAekB,iBAAiBlB,aACvCvgC,OAAOs/B,KAAOmC,iBAAiBnC,KAC/Bt/B,OAAO0iC,iBAAmBA,iBAC1B1iC,OAAOmiC,kBAAoBV,iBAAiBU,kBAC5CniC,OAAO40B,cAAgBA,cACvB50B,OAAOq9C,qBAAuBA,qBAC9Br9C,OAAO6+B,OAAS4C,iBAAiB5C,OAEjC7+B,OAAOmE,YAAcs9B,iBAAiBt9B,YACtCnE,OAAO43B,QAAU6J,iBAAiB7J,QAClC53B,OAAOw9C,WAAaA,WACpBx9C,OAAOy9C,UAAYA,UACnBz9C,OAAO09C,cAAgBA,cACvB19C,OAAOijC,OAASxB,iBAAiBwB,OACjCjjC,OAAOkjC,SAAWzB,iBAAiByB,SACnCljC,OAAO7C,UAAYskC,iBAAiBtkC,UACpC6C,OAAO6oB,KAAO4Y,iBAAiB5Y,KAC/B7oB,OAAO8oB,OAAS2Y,iBAAiB3Y,OACjC9oB,OAAOmjC,wBAA0B1B,iBAAiB0B,wBAClDnjC,OAAOo+C,aAAe13B,aACtB1mB,OAAOq+C,YAAcf,UACrBt9C,OAAOs+C,aAAeV,WACtB59C,OAAO4V,QAAU,SAwBjB,IAAIqoC,YAAc,GAElB,GAAItb,WAAY,CACd,IAAI4b,QAAUvkD,SAAS8oC,qBAAqB,UACxCj3B,MAAQ0yC,QAAQ19C,OAAS,EACzB29C,SAAWD,QAAQ1yC,QAAU,CAC/BwQ,IAAK,IAEP4hC,YAAcO,SAASniC,IAAMmiC,SAASniC,IAAIzC,QAAQ,aAAc,IAAM,GAEtE3Z,SAAW89C,iBAAiB,WAC9B,CAEA,IAAID,wBAA0BnnB,YAAYknB,WAAY,KAEtD,IACgF,WAAxBX,UAAUvzC,UAA8F,wBAIhK,CAAE,MAAOsqB,GACT,CAEA,IAAIwqB,eAAiB,WACnB,IAAIznB,EAAK,CAAC,EACN0nB,EAAY,CAAC,EAcjB,OAbA1nB,EAAG2nB,iBAGH,SAA0B3kB,EAAI5T,GACvBs4B,EAAU1kB,KACb0kB,EAAU1kB,GAAM5T,EAEpB,EANA4Q,EAAG4nB,YAQH,SAAqB5kB,EAAIoI,EAAM7oB,GAC7B,OAAO,IAAImlC,EAAU1kB,GAAIoI,EAAM7oB,EACjC,EAEOyd,CACT,CAjBqB,GAmBrB,SAAS6nB,gBAAiB,CAmD1B,SAASC,eAAgB,CAgZzB,SAASC,yBAA0B,CAjcnCF,cAAcx0C,UAAU20C,uBAAyB,WAAa,EAE9DH,cAAcx0C,UAAU40C,mBAAqB,WAAa,EAE1DJ,cAAcx0C,UAAUwpC,SAAW,SAAUt6B,GAC3C,IAAKtQ,KAAK+pB,OAAQ,CAEhBzZ,EAAKq0B,GAAGpzC,UAAU22C,mBAAmB53B,EAAKq0B,IAC1C,IAAI3E,EAAY,CACdyK,MAAOn6B,EAAKq0B,GACZr0B,KAAMA,EACNq7B,qBAAsBb,oBAAoBC,sBAE5C/qC,KAAK6nB,OAAOxoB,KAAK2gC,GACjBhgC,KAAKg2C,mBAAmBhW,GAEpBhgC,KAAKgpC,aACP14B,EAAK2lC,eAET,CACF,EAEAL,cAAcx0C,UAAUo2B,KAAO,SAAU2B,EAAM7oB,GAC7CtQ,KAAK6nB,OAAS,GACd7nB,KAAKm5B,KAAOA,EACZn5B,KAAKkpC,6BAA6B/P,GAClCn5B,KAAK+1C,uBAAuB5c,EAAM7oB,GAClCtQ,KAAK0nC,QAAUlqB,oBACfxd,KAAK+pB,QAAS,EACd/pB,KAAK0Y,GAAI,EAEL1Y,KAAK+oC,kBAAkBnxC,OACzBoI,KAAK0Y,GAAI,EAET1Y,KAAKqoC,UAAS,EAElB,EAEAuN,cAAcx0C,UAAU80C,YAAc,WAChCl2C,KAAKm5B,KAAK7F,WAAWoU,UAAY1nC,KAAK0nC,UAI1C1nC,KAAK0nC,QAAU1nC,KAAKm5B,KAAK7F,WAAWoU,QACpC1nC,KAAKipC,2BACP,EAEAlrB,gBAAgB,CAAC+qB,0BAA2B8M,eAI5C73B,gBAAgB,CAAC63B,eAAgBC,cAEjCA,aAAaz0C,UAAU20C,uBAAyB,SAAU5c,EAAM7oB,GAC9DtQ,KAAK8jB,EAAI4kB,gBAAgBC,QAAQxP,EAAM7oB,EAAKwT,EAAG,EAAG,IAAM9jB,MACxDA,KAAKzH,EAAImwC,gBAAgBC,QAAQxP,EAAM7oB,EAAK/X,EAAG,EAAG,IAAMyH,MACxDA,KAAKooB,EAAIsgB,gBAAgBC,QAAQxP,EAAM7oB,EAAK8X,EAAG,EAAG,EAAGpoB,MACrDA,KAAKm2C,OAAS,EACdn2C,KAAKo2C,OAAS,EACdp2C,KAAKqoC,SAAWroC,KAAKk2C,YACrBl2C,KAAK+vC,EAAIz/B,EAAKy/B,EACd/vC,KAAKgpC,cAAgBhpC,KAAK8jB,EAAE6jB,gBAAgB/vC,UAAYoI,KAAKzH,EAAEovC,gBAAgB/vC,UAAYoI,KAAKooB,EAAEuf,gBAAgB/vC,MACpH,EAEAi+C,aAAaz0C,UAAU40C,mBAAqB,SAAUhW,GACpDA,EAAUqW,UAAY,EACxB,EAEAR,aAAaz0C,UAAUk1C,oBAAsB,SAAUxyB,EAAGvrB,EAAGg+C,EAAajZ,EAAakZ,GACrF,IAAIlkB,EAAW,GAEX/5B,GAAK,EACP+5B,EAASjzB,KAAK,CACZykB,EAAGA,EACHvrB,EAAGA,IAEIurB,GAAK,EACdwO,EAASjzB,KAAK,CACZykB,EAAGA,EAAI,EACPvrB,EAAGA,EAAI,KAGT+5B,EAASjzB,KAAK,CACZykB,EAAGA,EACHvrB,EAAG,IAEL+5B,EAASjzB,KAAK,CACZykB,EAAG,EACHvrB,EAAGA,EAAI,KAIX,IACIiP,EAEAivC,EAHAC,EAAgB,GAEhB/9B,EAAM2Z,EAAS16B,OAGnB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAIzB,IAAImvC,EACAC,GAJNH,EAAYnkB,EAAS9qB,IAELjP,EAAIi+C,EAAsBlZ,GAAemZ,EAAU3yB,EAAI0yB,EAAsBlZ,EAAciZ,IAKvGI,EADEF,EAAU3yB,EAAI0yB,GAAuBlZ,EAC9B,GAECmZ,EAAU3yB,EAAI0yB,EAAsBlZ,GAAeiZ,EAI7DK,EADEH,EAAUl+C,EAAIi+C,GAAuBlZ,EAAciZ,EAC5C,GAECE,EAAUl+C,EAAIi+C,EAAsBlZ,GAAeiZ,EAG/DG,EAAcr3C,KAAK,CAACs3C,EAAQC,IAEhC,CAMA,OAJKF,EAAc9+C,QACjB8+C,EAAcr3C,KAAK,CAAC,EAAG,IAGlBq3C,CACT,EAEAb,aAAaz0C,UAAUy1C,iBAAmB,SAAUR,GAClD,IAAI7uC,EACAmR,EAAM09B,EAAUz+C,OAEpB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBi2B,mBAAmBp/B,QAAQg4C,EAAU7uC,IAIvC,OADA6uC,EAAUz+C,OAAS,EACZy+C,CACT,EAEAR,aAAaz0C,UAAU01C,cAAgB,SAAUjP,GAC/C,IAAI/jB,EACAvrB,EAwCAw+C,EACAvvC,EAvCJ,GAAIxH,KAAKwnC,MAAQK,EAAe,CAC9B,IAAIzf,EAAIpoB,KAAKooB,EAAErE,EAAI,IAAM,IAsBzB,GApBIqE,EAAI,IACNA,GAAK,IAILtE,EADE9jB,KAAK8jB,EAAEC,EAAI,EACT,EAAIqE,EACCpoB,KAAK8jB,EAAEC,EAAI,EAChB,EAAIqE,EAEJpoB,KAAK8jB,EAAEC,EAAIqE,IAIf7vB,EADEyH,KAAKzH,EAAEwrB,EAAI,EACT,EAAIqE,EACCpoB,KAAKzH,EAAEwrB,EAAI,EAChB,EAAIqE,EAEJpoB,KAAKzH,EAAEwrB,EAAIqE,GAGN,CACT,IAAI4uB,EAAKlzB,EACTA,EAAIvrB,EACJA,EAAIy+C,CACN,CAEAlzB,EAA4B,KAAxB1nB,KAAK4lB,MAAU,IAAJ8B,GACfvrB,EAA4B,KAAxB6D,KAAK4lB,MAAU,IAAJzpB,GACfyH,KAAKm2C,OAASryB,EACd9jB,KAAKo2C,OAAS79C,CAChB,MACEurB,EAAI9jB,KAAKm2C,OACT59C,EAAIyH,KAAKo2C,OAKX,IACIpvB,EACAC,EACAovB,EACA3sB,EACAutB,EALAt+B,EAAM3Y,KAAK6nB,OAAOjwB,OAMlB4+C,EAAsB,EAE1B,GAAIj+C,IAAMurB,EACR,IAAKtc,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK6nB,OAAOrgB,GAAGmkC,qBAAqBd,gBACpC7qC,KAAK6nB,OAAOrgB,GAAGijC,MAAMjD,MAAO,EAC5BxnC,KAAK6nB,OAAOrgB,GAAGijC,MAAMiB,MAAQ1rC,KAAK6nB,OAAOrgB,GAAGmkC,qBAExC3rC,KAAKwnC,OACPxnC,KAAK6nB,OAAOrgB,GAAG6uC,UAAUz+C,OAAS,QAGjC,GAAY,IAANW,GAAiB,IAANurB,GAAiB,IAANvrB,GAAiB,IAANurB,GAyGvC,GAAI9jB,KAAKwnC,KACd,IAAKhgC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAGxBxH,KAAK6nB,OAAOrgB,GAAG6uC,UAAUz+C,OAAS,EAClCoI,KAAK6nB,OAAOrgB,GAAGijC,MAAMjD,MAAO,MA9GwB,CACtD,IACIxH,EACA2L,EAFArZ,EAAW,GAIf,IAAK9qB,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAGxB,IAFAw4B,EAAYhgC,KAAK6nB,OAAOrgB,IAETijC,MAAMjD,MAASxnC,KAAKwnC,MAASK,GAA4B,IAAX7nC,KAAK+vC,EAE3D,CAKL,GAHA9oB,GADA8vB,EAAa/W,EAAUyK,MAAMiB,OACXzO,QAClBga,EAAmB,GAEdjX,EAAUyK,MAAMjD,MAAQxH,EAAUqW,UAAUz+C,OAC/Cq/C,EAAmBjX,EAAUiX,qBACxB,CAGL,IAFAZ,EAAYr2C,KAAK62C,iBAAiB7W,EAAUqW,WAEvCrvB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB0C,EAAW4Y,IAAIvC,kBAAkBgX,EAAWlvB,OAAOb,IACnDqvB,EAAUh3C,KAAKqqB,GACfutB,GAAoBvtB,EAASgU,YAG/BsC,EAAUiX,iBAAmBA,EAC7BjX,EAAUqW,UAAYA,CACxB,CAEAG,GAAuBS,EACvBjX,EAAUyK,MAAMjD,MAAO,CACzB,MAvBExH,EAAUyK,MAAMiB,MAAQ1L,EAAU2L,qBA0BtC,IAGIuL,EAHAP,EAAS7yB,EACT8yB,EAASr+C,EACT+kC,EAAc,EAGlB,IAAK91B,EAAImR,EAAM,EAAGnR,GAAK,EAAGA,GAAK,EAG7B,IAFAw4B,EAAYhgC,KAAK6nB,OAAOrgB,IAEVijC,MAAMjD,KAAM,CAaxB,KAZAmE,EAAuB3L,EAAU2L,sBACZd,gBAEN,IAAX7qC,KAAK+vC,GAAWp3B,EAAM,GACxBu+B,EAAQl3C,KAAKs2C,oBAAoBxyB,EAAGvrB,EAAGynC,EAAUiX,iBAAkB3Z,EAAakZ,GAChFlZ,GAAe0C,EAAUiX,kBAEzBC,EAAQ,CAAC,CAACP,EAAQC,IAGpB3vB,EAAOiwB,EAAMt/C,OAERovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAC5B2vB,EAASO,EAAMlwB,GAAG,GAClB4vB,EAASM,EAAMlwB,GAAG,GAClBsL,EAAS16B,OAAS,EAEdg/C,GAAU,EACZtkB,EAASjzB,KAAK,CACZykB,EAAGkc,EAAUiX,iBAAmBN,EAChCp+C,EAAGynC,EAAUiX,iBAAmBL,IAEzBD,GAAU,EACnBrkB,EAASjzB,KAAK,CACZykB,EAAGkc,EAAUiX,kBAAoBN,EAAS,GAC1Cp+C,EAAGynC,EAAUiX,kBAAoBL,EAAS,MAG5CtkB,EAASjzB,KAAK,CACZykB,EAAGkc,EAAUiX,iBAAmBN,EAChCp+C,EAAGynC,EAAUiX,mBAEf3kB,EAASjzB,KAAK,CACZykB,EAAG,EACHvrB,EAAGynC,EAAUiX,kBAAoBL,EAAS,MAI9C,IAAIO,EAAgBn3C,KAAKo3C,UAAUpX,EAAW1N,EAAS,IAEvD,GAAIA,EAAS,GAAGxO,IAAMwO,EAAS,GAAG/5B,EAAG,CACnC,GAAI+5B,EAAS16B,OAAS,EAGpB,GAF4BooC,EAAUyK,MAAMiB,MAAM7jB,OAAOmY,EAAUyK,MAAMiB,MAAMzO,QAAU,GAE/D/uB,EAAG,CAC3B,IAAImpC,EAAYF,EAAcG,MAC9Bt3C,KAAKu3C,SAASJ,EAAexL,GAC7BwL,EAAgBn3C,KAAKo3C,UAAUpX,EAAW1N,EAAS,GAAI+kB,EACzD,MACEr3C,KAAKu3C,SAASJ,EAAexL,GAC7BwL,EAAgBn3C,KAAKo3C,UAAUpX,EAAW1N,EAAS,IAIvDtyB,KAAKu3C,SAASJ,EAAexL,EAC/B,CACF,CAEA3L,EAAUyK,MAAMiB,MAAQC,CAC1B,CAEJ,CAQF,EAEAkK,aAAaz0C,UAAUm2C,SAAW,SAAUC,EAAU7L,GACpD,IAAInkC,EACAmR,EAAM6+B,EAAS5/C,OAEnB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBmkC,EAAqBf,SAAS4M,EAAShwC,GAE3C,EAEAquC,aAAaz0C,UAAUq2C,WAAa,SAAUnZ,EAAKC,EAAKC,EAAKC,EAAK8L,EAAWn0B,EAAKshC,GAChFnN,EAAUf,QAAQjL,EAAI,GAAIA,EAAI,GAAI,IAAKnoB,GACvCm0B,EAAUf,QAAQhL,EAAI,GAAIA,EAAI,GAAI,IAAKpoB,EAAM,GAEzCshC,GACFnN,EAAUf,QAAQlL,EAAI,GAAIA,EAAI,GAAI,IAAKloB,GAGzCm0B,EAAUf,QAAQ/K,EAAI,GAAIA,EAAI,GAAI,IAAKroB,EAAM,EAC/C,EAEAy/B,aAAaz0C,UAAUu2C,oBAAsB,SAAUzc,EAAQqP,EAAWn0B,EAAKshC,GAC7EnN,EAAUf,QAAQtO,EAAO,GAAIA,EAAO,GAAI,IAAK9kB,GAC7Cm0B,EAAUf,QAAQtO,EAAO,GAAIA,EAAO,GAAI,IAAK9kB,EAAM,GAE/CshC,GACFnN,EAAUf,QAAQtO,EAAO,GAAIA,EAAO,GAAI,IAAK9kB,GAG/Cm0B,EAAUf,QAAQtO,EAAO,GAAIA,EAAO,GAAI,IAAK9kB,EAAM,EACrD,EAEAy/B,aAAaz0C,UAAUg2C,UAAY,SAAUpX,EAAW4X,EAAcrN,GACpE,IAEI/iC,EAEAwf,EACAC,EAEA4wB,EACAC,EACAta,EACA5I,EAEA8K,EAZA2W,EAAYrW,EAAUqW,UACtBU,EAAa/W,EAAUyK,MAAMiB,MAAM7jB,OAEnClP,EAAMqnB,EAAUyK,MAAMiB,MAAMzO,QAG5BK,EAAc,EAKdzV,EAAS,GAET6vB,GAAW,EAaf,IAXKnN,GAKHuN,EAAevN,EAAUtN,QACzByC,EAAU6K,EAAUtN,UALpBsN,EAAYD,UAAUlN,aACtB0a,EAAe,EACfpY,EAAU,GAMZ7X,EAAOxoB,KAAKkrC,GAEP/iC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAK3B,IAJAg2B,EAAU6Y,EAAU7uC,GAAGg2B,QACvB+M,EAAUr8B,EAAI6oC,EAAWvvC,GAAG0G,EAC5B+Y,EAAO8vB,EAAWvvC,GAAG0G,EAAIsvB,EAAQ5lC,OAAS4lC,EAAQ5lC,OAAS,EAEtDovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAGzB,GAAIsW,GAFJua,EAAoBra,EAAQxW,EAAI,IAEIsW,YAAcsa,EAAa9zB,EAC7DwZ,GAAeua,EAAkBva,YACjCiN,EAAUr8B,GAAI,MACT,IAAIovB,EAAcsa,EAAar/C,EAAG,CACvCgyC,EAAUr8B,GAAI,EACd,KACF,CACM0pC,EAAa9zB,GAAKwZ,GAAesa,EAAar/C,GAAK+kC,EAAcua,EAAkBva,aACrFt9B,KAAKy3C,WAAWV,EAAWvvC,GAAGuc,EAAEiD,EAAI,GAAI+vB,EAAWvvC,GAAG4gB,EAAEpB,EAAI,GAAI+vB,EAAWvvC,GAAGA,EAAEwf,GAAI+vB,EAAWvvC,GAAGuc,EAAEiD,GAAIujB,EAAWuN,EAAcJ,GACjIA,GAAW,IAEX9iB,EAAU0N,IAAIjC,cAAc0W,EAAWvvC,GAAGuc,EAAEiD,EAAI,GAAI+vB,EAAWvvC,GAAGuc,EAAEiD,GAAI+vB,EAAWvvC,GAAG4gB,EAAEpB,EAAI,GAAI+vB,EAAWvvC,GAAGA,EAAEwf,IAAK4wB,EAAa9zB,EAAIwZ,GAAeua,EAAkBva,aAAcsa,EAAar/C,EAAI+kC,GAAeua,EAAkBva,YAAaE,EAAQxW,EAAI,IAChQhnB,KAAK23C,oBAAoB/iB,EAAS2V,EAAWuN,EAAcJ,GAE3DA,GAAW,EACXnN,EAAUr8B,GAAI,GAGhBovB,GAAeua,EAAkBva,YACjCwa,GAAgB,CAClB,CAGF,GAAIf,EAAWvvC,GAAG0G,GAAKsvB,EAAQ5lC,OAAQ,CAGrC,GAFAigD,EAAoBra,EAAQxW,EAAI,GAE5BsW,GAAesa,EAAar/C,EAAG,CACjC,IAAI0mC,EAAgBzB,EAAQxW,EAAI,GAAGsW,YAE/Bsa,EAAa9zB,GAAKwZ,GAAesa,EAAar/C,GAAK+kC,EAAc2B,GACnEj/B,KAAKy3C,WAAWV,EAAWvvC,GAAGuc,EAAEiD,EAAI,GAAI+vB,EAAWvvC,GAAG4gB,EAAEpB,EAAI,GAAI+vB,EAAWvvC,GAAGA,EAAE,GAAIuvC,EAAWvvC,GAAGuc,EAAE,GAAIwmB,EAAWuN,EAAcJ,GACjIA,GAAW,IAEX9iB,EAAU0N,IAAIjC,cAAc0W,EAAWvvC,GAAGuc,EAAEiD,EAAI,GAAI+vB,EAAWvvC,GAAGuc,EAAE,GAAIgzB,EAAWvvC,GAAG4gB,EAAEpB,EAAI,GAAI+vB,EAAWvvC,GAAGA,EAAE,IAAKowC,EAAa9zB,EAAIwZ,GAAe2B,GAAgB2Y,EAAar/C,EAAI+kC,GAAe2B,EAAezB,EAAQxW,EAAI,IAChOhnB,KAAK23C,oBAAoB/iB,EAAS2V,EAAWuN,EAAcJ,GAE3DA,GAAW,EACXnN,EAAUr8B,GAAI,EAElB,MACEq8B,EAAUr8B,GAAI,EAGhBovB,GAAeua,EAAkBva,YACjCwa,GAAgB,CAClB,CAOA,GALIvN,EAAUtN,UACZsN,EAAUf,QAAQe,EAAUxmB,EAAE2b,GAAS,GAAI6K,EAAUxmB,EAAE2b,GAAS,GAAI,IAAKA,GACzE6K,EAAUf,QAAQe,EAAUxmB,EAAEwmB,EAAUtN,QAAU,GAAG,GAAIsN,EAAUxmB,EAAEwmB,EAAUtN,QAAU,GAAG,GAAI,IAAKsN,EAAUtN,QAAU,IAGvHK,EAAcsa,EAAar/C,EAC7B,MAGEiP,EAAImR,EAAM,IACZ4xB,EAAYD,UAAUlN,aACtBsa,GAAW,EACX7vB,EAAOxoB,KAAKkrC,GACZuN,EAAe,EAEnB,CAEA,OAAOjwB,CACT,EAIA9J,gBAAgB,CAAC63B,eAAgBE,wBAEjCA,uBAAuB10C,UAAU20C,uBAAyB,SAAU5c,EAAM7oB,GACxEtQ,KAAKqoC,SAAWroC,KAAKk2C,YACrBl2C,KAAK+3C,OAASrP,gBAAgBC,QAAQxP,EAAM7oB,EAAKtC,EAAG,EAAG,KAAMhO,MAC7DA,KAAKgpC,cAAgBhpC,KAAK+3C,OAAOpQ,gBAAgB/vC,MACnD,EAEAk+C,uBAAuB10C,UAAU42C,YAAc,SAAU7gD,EAAM4gD,GAC7D,IAAIlW,EAAUkW,EAAS,IACnBE,EAAc,CAAC,EAAG,GAClBC,EAAa/gD,EAAK8lC,QAClBz1B,EAAI,EAER,IAAKA,EAAI,EAAGA,EAAI0wC,EAAY1wC,GAAK,EAC/BywC,EAAY,IAAM9gD,EAAK4sB,EAAEvc,GAAG,GAC5BywC,EAAY,IAAM9gD,EAAK4sB,EAAEvc,GAAG,GAG9BywC,EAAY,IAAMC,EAClBD,EAAY,IAAMC,EAClB,IAEIxO,EACAC,EACAC,EACAC,EACAC,EACAC,EAPAoO,EAAa7N,UAAUlN,aAS3B,IARA+a,EAAWjqC,EAAI/W,EAAK+W,EAQf1G,EAAI,EAAGA,EAAI0wC,EAAY1wC,GAAK,EAC/BkiC,EAAKvyC,EAAK4sB,EAAEvc,GAAG,IAAMywC,EAAY,GAAK9gD,EAAK4sB,EAAEvc,GAAG,IAAMq6B,EACtD8H,EAAKxyC,EAAK4sB,EAAEvc,GAAG,IAAMywC,EAAY,GAAK9gD,EAAK4sB,EAAEvc,GAAG,IAAMq6B,EACtD+H,EAAKzyC,EAAKixB,EAAE5gB,GAAG,IAAMywC,EAAY,GAAK9gD,EAAKixB,EAAE5gB,GAAG,KAAOq6B,EACvDgI,EAAK1yC,EAAKixB,EAAE5gB,GAAG,IAAMywC,EAAY,GAAK9gD,EAAKixB,EAAE5gB,GAAG,KAAOq6B,EACvDiI,EAAK3yC,EAAKqQ,EAAEA,GAAG,IAAMywC,EAAY,GAAK9gD,EAAKqQ,EAAEA,GAAG,KAAOq6B,EACvDkI,EAAK5yC,EAAKqQ,EAAEA,GAAG,IAAMywC,EAAY,GAAK9gD,EAAKqQ,EAAEA,GAAG,KAAOq6B,EACvDsW,EAAW1O,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIviC,GAGjD,OAAO2wC,CACT,EAEArC,uBAAuB10C,UAAU01C,cAAgB,SAAUjP,GACzD,IAAIkP,EACAvvC,EAEAwf,EACAC,EAIE+Y,EACA2L,EAPFhzB,EAAM3Y,KAAK6nB,OAAOjwB,OAGlBmgD,EAAS/3C,KAAK+3C,OAAOh0B,EAEzB,GAAe,IAAXg0B,EAIF,IAAKvwC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAI3B,GAFAmkC,GADA3L,EAAYhgC,KAAK6nB,OAAOrgB,IACSmkC,qBAE1B3L,EAAUyK,MAAMjD,MAASxnC,KAAKwnC,MAASK,EAM5C,IALA8D,EAAqBd,gBACrB7K,EAAUyK,MAAMjD,MAAO,EACvBuP,EAAa/W,EAAUyK,MAAMiB,MAAM7jB,OACnCZ,EAAO+Y,EAAUyK,MAAMiB,MAAMzO,QAExBjW,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB2kB,EAAqBf,SAAS5qC,KAAKg4C,YAAYjB,EAAW/vB,GAAI+wB,IAIlE/X,EAAUyK,MAAMiB,MAAQ1L,EAAU2L,oBACpC,CAGG3rC,KAAK+oC,kBAAkBnxC,SAC1BoI,KAAKwnC,MAAO,EAEhB,EAEA,IAAI4Q,yBAA2B,WAC7B,IAAIC,EAAgB,CAAC,EAAG,GAkLxB,SAASC,EAAkBnf,EAAM7oB,EAAM/e,GAwBrC,GAvBAyO,KAAKm5B,KAAOA,EACZn5B,KAAK0nC,SAAW,EAChB1nC,KAAK8iC,SAAW,YAChB9iC,KAAKsQ,KAAOA,EACZtQ,KAAK+jB,EAAI,IAAI0qB,OAEbzuC,KAAKu4C,IAAM,IAAI9J,OACfzuC,KAAKw4C,uBAAyB,EAC9Bx4C,KAAKkpC,6BAA6B33C,GAAa4nC,GAE3C7oB,EAAK2T,GAAK3T,EAAK2T,EAAEH,GACnB9jB,KAAKy4C,GAAK/P,gBAAgBC,QAAQxP,EAAM7oB,EAAK2T,EAAEtkB,EAAG,EAAG,EAAGK,MACxDA,KAAK04C,GAAKhQ,gBAAgBC,QAAQxP,EAAM7oB,EAAK2T,EAAErkB,EAAG,EAAG,EAAGI,MAEpDsQ,EAAK2T,EAAE0uB,IACT3yC,KAAK24C,GAAKjQ,gBAAgBC,QAAQxP,EAAM7oB,EAAK2T,EAAE0uB,EAAG,EAAG,EAAG3yC,QAG1DA,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAK2T,GAAK,CAC/CvL,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAG1Y,MAGPsQ,EAAKsoC,GAAI,CAKX,GAJA54C,KAAK44C,GAAKlQ,gBAAgBC,QAAQxP,EAAM7oB,EAAKsoC,GAAI,EAAGj3B,UAAW3hB,MAC/DA,KAAK64C,GAAKnQ,gBAAgBC,QAAQxP,EAAM7oB,EAAKuoC,GAAI,EAAGl3B,UAAW3hB,MAC/DA,KAAK84C,GAAKpQ,gBAAgBC,QAAQxP,EAAM7oB,EAAKwoC,GAAI,EAAGn3B,UAAW3hB,MAE3DsQ,EAAK68B,GAAGz0B,EAAE,GAAGkrB,GAAI,CACnB,IAAIp8B,EACAmR,EAAMrI,EAAK68B,GAAGz0B,EAAE9gB,OAEpB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB8I,EAAK68B,GAAGz0B,EAAElR,GAAGm8B,GAAK,KAClBrzB,EAAK68B,GAAGz0B,EAAElR,GAAGo8B,GAAK,IAEtB,CAEA5jC,KAAKmtC,GAAKzE,gBAAgBC,QAAQxP,EAAM7oB,EAAK68B,GAAI,EAAGxrB,UAAW3hB,MAE/DA,KAAKmtC,GAAGxI,IAAK,CACf,MACE3kC,KAAKgkB,EAAI0kB,gBAAgBC,QAAQxP,EAAM7oB,EAAK0T,GAAK,CAC/CtL,EAAG,GACF,EAAGiJ,UAAW3hB,MAGfsQ,EAAKiZ,KACPvpB,KAAKupB,GAAKmf,gBAAgBC,QAAQxP,EAAM7oB,EAAKiZ,GAAI,EAAG5H,UAAW3hB,MAC/DA,KAAKwpB,GAAKkf,gBAAgBC,QAAQxP,EAAM7oB,EAAKkZ,GAAI,EAAG7H,UAAW3hB,OAGjEA,KAAKgO,EAAI06B,gBAAgBC,QAAQxP,EAAM7oB,EAAKtC,GAAK,CAC/C0K,EAAG,CAAC,EAAG,EAAG,IACT,EAAG,EAAG1Y,MACTA,KAAK8jB,EAAI4kB,gBAAgBC,QAAQxP,EAAM7oB,EAAKwT,GAAK,CAC/CpL,EAAG,CAAC,IAAK,IAAK,MACb,EAAG,IAAM1Y,MAERsQ,EAAK8X,EACPpoB,KAAKooB,EAAIsgB,gBAAgBC,QAAQxP,EAAM7oB,EAAK8X,EAAG,EAAG,IAAM+Q,GAExDn5B,KAAKooB,EAAI,CACPof,MAAM,EACNzjB,EAAG,GAIP/jB,KAAK+4C,UAAW,EAEX/4C,KAAK+oC,kBAAkBnxC,QAC1BoI,KAAKqoC,UAAS,EAElB,CAgBA,OAdAiQ,EAAkBl3C,UAAY,CAC5B43C,cA7PF,SAAuBC,GACrB,IAAIzR,EAAOxnC,KAAKwnC,KAChBxnC,KAAKipC,2BACLjpC,KAAKwnC,KAAOxnC,KAAKwnC,MAAQA,EAErBxnC,KAAKgO,GACPirC,EAAIjJ,WAAWhwC,KAAKgO,EAAE+V,EAAE,IAAK/jB,KAAKgO,EAAE+V,EAAE,GAAI/jB,KAAKgO,EAAE+V,EAAE,IAGjD/jB,KAAK8jB,GACPm1B,EAAItJ,MAAM3vC,KAAK8jB,EAAEC,EAAE,GAAI/jB,KAAK8jB,EAAEC,EAAE,GAAI/jB,KAAK8jB,EAAEC,EAAE,IAG3C/jB,KAAKupB,IACP0vB,EAAIvJ,cAAc1vC,KAAKupB,GAAGxF,EAAG/jB,KAAKwpB,GAAGzF,GAGnC/jB,KAAKgkB,EACPi1B,EAAIjK,QAAQhvC,KAAKgkB,EAAED,GAEnBk1B,EAAI3J,SAAStvC,KAAK84C,GAAG/0B,GAAGsrB,QAAQrvC,KAAK64C,GAAG90B,GAAGqrB,QAAQpvC,KAAK44C,GAAG70B,GAAGurB,SAAStvC,KAAKmtC,GAAGppB,EAAE,IAAIsrB,QAAQrvC,KAAKmtC,GAAGppB,EAAE,IAAIqrB,QAAQpvC,KAAKmtC,GAAGppB,EAAE,IAG3H/jB,KAAKsQ,KAAK2T,EAAEH,EACV9jB,KAAKsQ,KAAK2T,EAAE0uB,EACdsG,EAAIjJ,UAAUhwC,KAAKy4C,GAAG10B,EAAG/jB,KAAK04C,GAAG30B,GAAI/jB,KAAK24C,GAAG50B,GAE7Ck1B,EAAIjJ,UAAUhwC,KAAKy4C,GAAG10B,EAAG/jB,KAAK04C,GAAG30B,EAAG,GAGtCk1B,EAAIjJ,UAAUhwC,KAAKikB,EAAEF,EAAE,GAAI/jB,KAAKikB,EAAEF,EAAE,IAAK/jB,KAAKikB,EAAEF,EAAE,GAEtD,EA8NEskB,SA5NF,SAAqB6Q,GACnB,GAAIl5C,KAAKm5B,KAAK7F,WAAWoU,UAAY1nC,KAAK0nC,QAA1C,CAWA,GAPI1nC,KAAK+4C,WACP/4C,KAAKm5C,qBACLn5C,KAAK+4C,UAAW,GAGlB/4C,KAAKipC,2BAEDjpC,KAAKwnC,MAAQ0R,EAAa,CAC5B,IAAItnB,EAqBJ,GApBA5xB,KAAK+jB,EAAE0uB,eAAezyC,KAAKu4C,IAAIxJ,OAE3B/uC,KAAKw4C,uBAAyB,GAChCx4C,KAAK+jB,EAAEisB,WAAWhwC,KAAKgO,EAAE+V,EAAE,IAAK/jB,KAAKgO,EAAE+V,EAAE,GAAI/jB,KAAKgO,EAAE+V,EAAE,IAGpD/jB,KAAKw4C,uBAAyB,GAChCx4C,KAAK+jB,EAAE4rB,MAAM3vC,KAAK8jB,EAAEC,EAAE,GAAI/jB,KAAK8jB,EAAEC,EAAE,GAAI/jB,KAAK8jB,EAAEC,EAAE,IAG9C/jB,KAAKupB,IAAMvpB,KAAKw4C,uBAAyB,GAC3Cx4C,KAAK+jB,EAAE2rB,cAAc1vC,KAAKupB,GAAGxF,EAAG/jB,KAAKwpB,GAAGzF,GAGtC/jB,KAAKgkB,GAAKhkB,KAAKw4C,uBAAyB,EAC1Cx4C,KAAK+jB,EAAEirB,QAAQhvC,KAAKgkB,EAAED,IACZ/jB,KAAKgkB,GAAKhkB,KAAKw4C,uBAAyB,GAClDx4C,KAAK+jB,EAAEurB,SAAStvC,KAAK84C,GAAG/0B,GAAGsrB,QAAQrvC,KAAK64C,GAAG90B,GAAGqrB,QAAQpvC,KAAK44C,GAAG70B,GAAGurB,SAAStvC,KAAKmtC,GAAGppB,EAAE,IAAIsrB,QAAQrvC,KAAKmtC,GAAGppB,EAAE,IAAIqrB,QAAQpvC,KAAKmtC,GAAGppB,EAAE,IAG9H/jB,KAAKo5C,aAAc,CACrB,IAAI5K,EACA6K,EAGJ,GAFAznB,EAAY5xB,KAAKm5B,KAAK7F,WAAW1B,UAE7B5xB,KAAKikB,GAAKjkB,KAAKikB,EAAEqf,WAAatjC,KAAKikB,EAAEq1B,eACnCt5C,KAAKikB,EAAEkjB,SAASjD,UAAYlkC,KAAKikB,EAAE4e,YAAc7iC,KAAKikB,EAAEqf,UAAU,GAAGnf,GACvEqqB,EAAKxuC,KAAKikB,EAAEq1B,gBAAgBt5C,KAAKikB,EAAEqf,UAAU,GAAGnf,EAAI,KAAQyN,EAAW,GACvEynB,EAAKr5C,KAAKikB,EAAEq1B,eAAet5C,KAAKikB,EAAEqf,UAAU,GAAGnf,EAAIyN,EAAW,IACrD5xB,KAAKikB,EAAEkjB,SAASjD,UAAYlkC,KAAKikB,EAAE4e,YAAc7iC,KAAKikB,EAAEqf,UAAUtjC,KAAKikB,EAAEqf,UAAU1rC,OAAS,GAAGusB,GACxGqqB,EAAKxuC,KAAKikB,EAAEq1B,eAAet5C,KAAKikB,EAAEqf,UAAUtjC,KAAKikB,EAAEqf,UAAU1rC,OAAS,GAAGusB,EAAIyN,EAAW,GACxFynB,EAAKr5C,KAAKikB,EAAEq1B,gBAAgBt5C,KAAKikB,EAAEqf,UAAUtjC,KAAKikB,EAAEqf,UAAU1rC,OAAS,GAAGusB,EAAI,KAAQyN,EAAW,KAEjG4c,EAAKxuC,KAAKikB,EAAE8e,GACZsW,EAAKr5C,KAAKikB,EAAEq1B,gBAAgBt5C,KAAKikB,EAAEkjB,SAASjD,UAAYlkC,KAAKikB,EAAE4e,WAAa,KAAQjR,EAAW5xB,KAAKikB,EAAE4e,kBAEnG,GAAI7iC,KAAKy4C,IAAMz4C,KAAKy4C,GAAGnV,WAAatjC,KAAK04C,GAAGpV,WAAatjC,KAAKy4C,GAAGa,gBAAkBt5C,KAAK04C,GAAGY,eAAgB,CAChH9K,EAAK,GACL6K,EAAK,GACL,IAAIZ,EAAKz4C,KAAKy4C,GACVC,EAAK14C,KAAK04C,GAEVD,EAAGtR,SAASjD,UAAYuU,EAAG5V,YAAc4V,EAAGnV,UAAU,GAAGnf,GAC3DqqB,EAAG,GAAKiK,EAAGa,gBAAgBb,EAAGnV,UAAU,GAAGnf,EAAI,KAAQyN,EAAW,GAClE4c,EAAG,GAAKkK,EAAGY,gBAAgBZ,EAAGpV,UAAU,GAAGnf,EAAI,KAAQyN,EAAW,GAClEynB,EAAG,GAAKZ,EAAGa,eAAeb,EAAGnV,UAAU,GAAGnf,EAAIyN,EAAW,GACzDynB,EAAG,GAAKX,EAAGY,eAAeZ,EAAGpV,UAAU,GAAGnf,EAAIyN,EAAW,IAChD6mB,EAAGtR,SAASjD,UAAYuU,EAAG5V,YAAc4V,EAAGnV,UAAUmV,EAAGnV,UAAU1rC,OAAS,GAAGusB,GACxFqqB,EAAG,GAAKiK,EAAGa,eAAeb,EAAGnV,UAAUmV,EAAGnV,UAAU1rC,OAAS,GAAGusB,EAAIyN,EAAW,GAC/E4c,EAAG,GAAKkK,EAAGY,eAAeZ,EAAGpV,UAAUoV,EAAGpV,UAAU1rC,OAAS,GAAGusB,EAAIyN,EAAW,GAC/EynB,EAAG,GAAKZ,EAAGa,gBAAgBb,EAAGnV,UAAUmV,EAAGnV,UAAU1rC,OAAS,GAAGusB,EAAI,KAAQyN,EAAW,GACxFynB,EAAG,GAAKX,EAAGY,gBAAgBZ,EAAGpV,UAAUoV,EAAGpV,UAAU1rC,OAAS,GAAGusB,EAAI,KAAQyN,EAAW,KAExF4c,EAAK,CAACiK,EAAG1V,GAAI2V,EAAG3V,IAChBsW,EAAG,GAAKZ,EAAGa,gBAAgBb,EAAGtR,SAASjD,UAAYuU,EAAG5V,WAAa,KAAQjR,EAAW6mB,EAAG5V,YACzFwW,EAAG,GAAKX,EAAGY,gBAAgBZ,EAAGvR,SAASjD,UAAYwU,EAAG7V,WAAa,KAAQjR,EAAW8mB,EAAG7V,YAE7F,MAEE2L,EADA6K,EAAKhB,EAIPr4C,KAAK+jB,EAAEirB,QAAQ5yC,KAAKiqC,MAAMmI,EAAG,GAAK6K,EAAG,GAAI7K,EAAG,GAAK6K,EAAG,IACtD,CAEIr5C,KAAKsQ,KAAK2T,GAAKjkB,KAAKsQ,KAAK2T,EAAEH,EACzB9jB,KAAKsQ,KAAK2T,EAAE0uB,EACd3yC,KAAK+jB,EAAEisB,UAAUhwC,KAAKy4C,GAAG10B,EAAG/jB,KAAK04C,GAAG30B,GAAI/jB,KAAK24C,GAAG50B,GAEhD/jB,KAAK+jB,EAAEisB,UAAUhwC,KAAKy4C,GAAG10B,EAAG/jB,KAAK04C,GAAG30B,EAAG,GAGzC/jB,KAAK+jB,EAAEisB,UAAUhwC,KAAKikB,EAAEF,EAAE,GAAI/jB,KAAKikB,EAAEF,EAAE,IAAK/jB,KAAKikB,EAAEF,EAAE,GAEzD,CAEA/jB,KAAK0nC,QAAU1nC,KAAKm5B,KAAK7F,WAAWoU,OAvFpC,CAwFF,EAkIEyR,mBAhIF,WAIE,GAHAn5C,KAAKw4C,uBAAyB,EAC9Bx4C,KAAKu4C,IAAIvM,SAEJhsC,KAAKgO,EAAE25B,gBAAgB/vC,SAC1BoI,KAAKu4C,IAAIvI,WAAWhwC,KAAKgO,EAAE+V,EAAE,IAAK/jB,KAAKgO,EAAE+V,EAAE,GAAI/jB,KAAKgO,EAAE+V,EAAE,IACxD/jB,KAAKw4C,uBAAyB,GAK3Bx4C,KAAK8jB,EAAE6jB,gBAAgB/vC,QAA5B,CAOA,GANEoI,KAAKu4C,IAAI5I,MAAM3vC,KAAK8jB,EAAEC,EAAE,GAAI/jB,KAAK8jB,EAAEC,EAAE,GAAI/jB,KAAK8jB,EAAEC,EAAE,IAClD/jB,KAAKw4C,uBAAyB,EAK5Bx4C,KAAKupB,GAAI,CACX,GAAKvpB,KAAKupB,GAAGoe,gBAAgB/vC,QAAWoI,KAAKwpB,GAAGme,gBAAgB/vC,OAI9D,OAHAoI,KAAKu4C,IAAI7I,cAAc1vC,KAAKupB,GAAGxF,EAAG/jB,KAAKwpB,GAAGzF,GAC1C/jB,KAAKw4C,uBAAyB,CAIlC,CAEIx4C,KAAKgkB,EACFhkB,KAAKgkB,EAAE2jB,gBAAgB/vC,SAC1BoI,KAAKu4C,IAAIvJ,QAAQhvC,KAAKgkB,EAAED,GACxB/jB,KAAKw4C,uBAAyB,GAEtBx4C,KAAK84C,GAAGnR,gBAAgB/vC,QAAWoI,KAAK64C,GAAGlR,gBAAgB/vC,QAAWoI,KAAK44C,GAAGjR,gBAAgB/vC,QAAWoI,KAAKmtC,GAAGxF,gBAAgB/vC,SAC3IoI,KAAKu4C,IAAIjJ,SAAStvC,KAAK84C,GAAG/0B,GAAGsrB,QAAQrvC,KAAK64C,GAAG90B,GAAGqrB,QAAQpvC,KAAK44C,GAAG70B,GAAGurB,SAAStvC,KAAKmtC,GAAGppB,EAAE,IAAIsrB,QAAQrvC,KAAKmtC,GAAGppB,EAAE,IAAIqrB,QAAQpvC,KAAKmtC,GAAGppB,EAAE,IAClI/jB,KAAKw4C,uBAAyB,EAlBhC,CAoBF,EA6FEe,WA3FF,WAEA,GA2FAx7B,gBAAgB,CAAC+qB,0BAA2BwP,GAC5CA,EAAkBl3C,UAAU8mC,mBA1F5B,SAA4B7pB,GAC1Bre,KAAKw5C,oBAAoBn7B,GAEzBre,KAAKm5B,KAAK+O,mBAAmB7pB,GAC7Bre,KAAK+4C,UAAW,CAClB,EAsFAT,EAAkBl3C,UAAUo4C,oBAAsB1Q,yBAAyB1nC,UAAU8mC,mBAM9E,CACLuR,qBALF,SAA8BtgB,EAAM7oB,EAAM/e,GACxC,OAAO,IAAI+mD,EAAkBnf,EAAM7oB,EAAM/e,EAC3C,EAKF,CAhR+B,GAkR/B,SAASmoD,mBAAoB,CAkS7B,SAASC,uBAAwB,CA0HjC,SAASC,WAAW5rC,EAAGC,GACrB,OAAyB,IAAlB7R,KAAKC,IAAI2R,EAAIC,IAAe7R,KAAK8a,IAAI9a,KAAKC,IAAI2R,GAAI5R,KAAKC,IAAI4R,GACpE,CAEA,SAAS4rC,UAAUx4C,GACjB,OAAOjF,KAAKC,IAAIgF,IAAM,IACxB,CAEA,SAASy4C,KAAKxN,EAAIC,EAAIwL,GACpB,OAAOzL,GAAM,EAAIyL,GAAUxL,EAAKwL,CAClC,CAEA,SAASgC,UAAUzN,EAAIC,EAAIwL,GACzB,MAAO,CAAC+B,KAAKxN,EAAG,GAAIC,EAAG,GAAIwL,GAAS+B,KAAKxN,EAAG,GAAIC,EAAG,GAAIwL,GACzD,CAEA,SAASiC,UAAUhsC,EAAGC,EAAGC,GAEvB,GAAU,IAANF,EAAS,MAAO,GACpB,IAAI8V,EAAI7V,EAAIA,EAAI,EAAID,EAAIE,EAExB,GAAI4V,EAAI,EAAG,MAAO,GAClB,IAAIm2B,GAAchsC,GAAK,EAAID,GAE3B,GAAU,IAAN8V,EAAS,MAAO,CAACm2B,GACrB,IAAIC,EAAQ99C,KAAK8kB,KAAK4C,IAAM,EAAI9V,GAEhC,MAAO,CAACisC,EAAaC,EAAOD,EAAaC,EAC3C,CAEA,SAASC,uBAAuB7N,EAAIC,EAAI2E,EAAIkJ,GAC1C,MAAO,CAAO,EAAI7N,EAATD,EAAc,EAAI4E,EAAKkJ,EAAI,EAAI9N,EAAK,EAAIC,EAAK,EAAI2E,GAAK,EAAI5E,EAAK,EAAIC,EAAID,EAClF,CAEA,SAAS+N,YAAYp2B,GACnB,OAAO,IAAIq2B,iBAAiBr2B,EAAGA,EAAGA,EAAGA,GAAG,EAC1C,CAEA,SAASq2B,iBAAiBhO,EAAIC,EAAI2E,EAAIkJ,EAAIG,GACpCA,GAAaC,WAAWlO,EAAIC,KAC9BA,EAAKwN,UAAUzN,EAAI8N,EAAI,EAAI,IAGzBG,GAAaC,WAAWtJ,EAAIkJ,KAC9BlJ,EAAK6I,UAAUzN,EAAI8N,EAAI,EAAI,IAG7B,IAAIK,EAASN,uBAAuB7N,EAAG,GAAIC,EAAG,GAAI2E,EAAG,GAAIkJ,EAAG,IACxDM,EAASP,uBAAuB7N,EAAG,GAAIC,EAAG,GAAI2E,EAAG,GAAIkJ,EAAG,IAC5Dp6C,KAAKgO,EAAI,CAACysC,EAAO,GAAIC,EAAO,IAC5B16C,KAAKiO,EAAI,CAACwsC,EAAO,GAAIC,EAAO,IAC5B16C,KAAKkO,EAAI,CAACusC,EAAO,GAAIC,EAAO,IAC5B16C,KAAKqkB,EAAI,CAACo2B,EAAO,GAAIC,EAAO,IAC5B16C,KAAKk7B,OAAS,CAACoR,EAAIC,EAAI2E,EAAIkJ,EAC7B,CAkDA,SAASO,QAAQrY,EAAKxa,GACpB,IAAI5Q,EAAMorB,EAAIpH,OAAO,GAAGpT,GACpB7Q,EAAMqrB,EAAIpH,OAAOoH,EAAIpH,OAAOtjC,OAAS,GAAGkwB,GAE5C,GAAI5Q,EAAMD,EAAK,CACb,IAAI1e,EAAI0e,EACRA,EAAMC,EACNA,EAAM3e,CACR,CAKA,IAFA,IAAI8I,EAAI24C,UAAU,EAAI1X,EAAIt0B,EAAE8Z,GAAO,EAAIwa,EAAIr0B,EAAE6Z,GAAOwa,EAAIp0B,EAAE4Z,IAEjDtgB,EAAI,EAAGA,EAAInG,EAAEzJ,OAAQ4P,GAAK,EACjC,GAAInG,EAAEmG,GAAK,GAAKnG,EAAEmG,GAAK,EAAG,CACxB,IAAIyN,EAAMqtB,EAAIpoB,MAAM7Y,EAAEmG,IAAIsgB,GACtB7S,EAAMiC,EAAKA,EAAMjC,EAAaA,EAAMgC,IAAKA,EAAMhC,EACrD,CAGF,MAAO,CACLiC,IAAKA,EACLD,IAAKA,EAET,CAuBA,SAAS2jC,cAActY,EAAK7B,EAAIoa,GAC9B,IAAIC,EAAMxY,EAAIyY,cACd,MAAO,CACLC,GAAIF,EAAIE,GACRC,GAAIH,EAAIG,GACRp9C,MAAOi9C,EAAIj9C,MACXhM,OAAQipD,EAAIjpD,OACZywC,IAAKA,EACLne,GAAIsc,EAAKoa,GAAM,EACfpa,GAAIA,EACJoa,GAAIA,EAER,CAEA,SAASK,UAAU5qC,GACjB,IAAIrD,EAAQqD,EAAKgyB,IAAIr1B,MAAM,IAC3B,MAAO,CAAC2tC,cAAc3tC,EAAM,GAAIqD,EAAKmwB,GAAInwB,EAAK6T,GAAIy2B,cAAc3tC,EAAM,GAAIqD,EAAK6T,EAAG7T,EAAKuqC,IACzF,CAEA,SAASM,aAAa9J,EAAIhB,GACxB,OAAiC,EAA1Bj0C,KAAKC,IAAIg1C,EAAG2J,GAAK3K,EAAG2K,IAAU3J,EAAGxzC,MAAQwyC,EAAGxyC,OAAmC,EAA1BzB,KAAKC,IAAIg1C,EAAG4J,GAAK5K,EAAG4K,IAAU5J,EAAGx/C,OAASw+C,EAAGx+C,MAC3G,CAEA,SAASupD,eAAe9J,EAAIhB,EAAI+K,EAAOC,EAAWC,EAAeC,GAC/D,GAAKL,aAAa7J,EAAIhB,GAEtB,GAAI+K,GAASG,GAAgBlK,EAAGzzC,OAASy9C,GAAahK,EAAGz/C,QAAUypD,GAAahL,EAAGzyC,OAASy9C,GAAahL,EAAGz+C,QAAUypD,EACpHC,EAAcl8C,KAAK,CAACiyC,EAAGntB,EAAGmsB,EAAGnsB,QAD/B,CAKA,IAAIs3B,EAAMP,UAAU5J,GAChBoK,EAAMR,UAAU5K,GACpB8K,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,GACpEJ,eAAeK,EAAI,GAAIC,EAAI,GAAIL,EAAQ,EAAGC,EAAWC,EAAeC,EAPpE,CAQF,CAoBA,SAASG,aAAa3tC,EAAGC,GACvB,MAAO,CAACD,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GAAID,EAAE,GAAKC,EAAE,GAAKD,EAAE,GAAKC,EAAE,GACvF,CAEA,SAAS2tC,iBAAiBC,EAAQC,EAAMC,EAAQC,GAC9C,IAAIxN,EAAK,CAACqN,EAAO,GAAIA,EAAO,GAAI,GAC5BxC,EAAK,CAACyC,EAAK,GAAIA,EAAK,GAAI,GACxBG,EAAK,CAACF,EAAO,GAAIA,EAAO,GAAI,GAC5BG,EAAK,CAACF,EAAK,GAAIA,EAAK,GAAI,GACxBh4B,EAAI23B,aAAaA,aAAanN,EAAI6K,GAAKsC,aAAaM,EAAIC,IAC5D,OAAIrC,UAAU71B,EAAE,IAAY,KACrB,CAACA,EAAE,GAAKA,EAAE,GAAIA,EAAE,GAAKA,EAAE,GAChC,CAEA,SAASm4B,YAAYl4B,EAAGwpB,EAAO71C,GAC7B,MAAO,CAACqsB,EAAE,GAAK7nB,KAAKsqC,IAAI+G,GAAS71C,EAAQqsB,EAAE,GAAK7nB,KAAK0pC,IAAI2H,GAAS71C,EACpE,CAEA,SAASwkD,cAAc7P,EAAI2E,GACzB,OAAO90C,KAAKigD,MAAM9P,EAAG,GAAK2E,EAAG,GAAI3E,EAAG,GAAK2E,EAAG,GAC9C,CAEA,SAASsJ,WAAWjO,EAAI2E,GACtB,OAAO0I,WAAWrN,EAAG,GAAI2E,EAAG,KAAO0I,WAAWrN,EAAG,GAAI2E,EAAG,GAC1D,CAEA,SAASoL,iBAAkB,CAY3B,SAASC,SAASC,EAActiC,EAAOuzB,EAAO3qB,EAAW25B,EAAWC,EAAcC,GAChF,IAAIC,EAAOnP,EAAQrxC,KAAKwlB,GAAK,EACzBi7B,EAAOpP,EAAQrxC,KAAKwlB,GAAK,EACzB62B,EAAKv+B,EAAM,GAAK9d,KAAKsqC,IAAI+G,GAAS3qB,EAAY25B,EAC9C/D,EAAKx+B,EAAM,GAAK9d,KAAK0pC,IAAI2H,GAAS3qB,EAAY25B,EAClDD,EAAa/S,YAAYgP,EAAIC,EAAID,EAAKr8C,KAAKsqC,IAAIkW,GAAQF,EAAchE,EAAKt8C,KAAK0pC,IAAI8W,GAAQF,EAAcjE,EAAKr8C,KAAKsqC,IAAImW,GAAQF,EAAajE,EAAKt8C,KAAK0pC,IAAI+W,GAAQF,EAAaH,EAAa5kD,SAC9L,CAEA,SAASklD,uBAAuBxe,EAAKC,GACnC,IAAIwe,EAAS,CAACxe,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IACxC0e,EAAiB,IAAV5gD,KAAKwlB,GAEhB,MADoB,CAACxlB,KAAKsqC,IAAIsW,GAAOD,EAAO,GAAK3gD,KAAK0pC,IAAIkX,GAAOD,EAAO,GAAI3gD,KAAK0pC,IAAIkX,GAAOD,EAAO,GAAK3gD,KAAKsqC,IAAIsW,GAAOD,EAAO,GAEjI,CAEA,SAASE,mBAAmB9lD,EAAM+lD,GAChC,IAAIC,EAAoB,IAARD,EAAY/lD,EAAKS,SAAW,EAAIslD,EAAM,EAClDE,GAAaF,EAAM,GAAK/lD,EAAKS,SAG7BylD,EAAUP,uBAFE3lD,EAAK4sB,EAAEo5B,GACPhmD,EAAK4sB,EAAEq5B,IAEvB,OAAOhhD,KAAKiqC,MAAM,EAAG,GAAKjqC,KAAKiqC,MAAMgX,EAAQ,GAAIA,EAAQ,GAC3D,CAEA,SAASC,aAAad,EAAcrlD,EAAM+lD,EAAKT,EAAWc,EAAWC,EAAW16B,GAC9E,IAAI2qB,EAAQwP,mBAAmB9lD,EAAM+lD,GACjChjC,EAAQ/iB,EAAK4sB,EAAEm5B,EAAM/lD,EAAK8lC,SAC1BwgB,EAAYtmD,EAAK4sB,EAAU,IAARm5B,EAAY/lD,EAAK8lC,QAAU,EAAIigB,EAAM,GACxDQ,EAAYvmD,EAAK4sB,GAAGm5B,EAAM,GAAK/lD,EAAK8lC,SACpC0gB,EAAyB,IAAdH,EAAkBphD,KAAK8kB,KAAK9kB,KAAK4kB,IAAI9G,EAAM,GAAKujC,EAAU,GAAI,GAAKrhD,KAAK4kB,IAAI9G,EAAM,GAAKujC,EAAU,GAAI,IAAM,EACtHG,EAAyB,IAAdJ,EAAkBphD,KAAK8kB,KAAK9kB,KAAK4kB,IAAI9G,EAAM,GAAKwjC,EAAU,GAAI,GAAKthD,KAAK4kB,IAAI9G,EAAM,GAAKwjC,EAAU,GAAI,IAAM,EAC1HnB,SAASC,EAAcrlD,EAAK4sB,EAAEm5B,EAAM/lD,EAAK8lC,SAAUwQ,EAAO3qB,EAAW25B,EAAWmB,GAA8B,GAAjBL,EAAY,IAASI,GAA8B,GAAjBJ,EAAY,IAASC,EACtJ,CAEA,SAASK,cAAcrB,EAAc5nB,EAAS6nB,EAAWc,EAAWC,EAAW16B,GAC7E,IAAK,IAAItb,EAAI,EAAGA,EAAI+1C,EAAW/1C,GAAK,EAAG,CACrC,IAAI2c,GAAK3c,EAAI,IAAM+1C,EAAY,GAC3BO,EAAqB,IAAdN,EAAkBphD,KAAK8kB,KAAK9kB,KAAK4kB,IAAI4T,EAAQsG,OAAO,GAAG,GAAKtG,EAAQsG,OAAO,GAAG,GAAI,GAAK9+B,KAAK4kB,IAAI4T,EAAQsG,OAAO,GAAG,GAAKtG,EAAQsG,OAAO,GAAG,GAAI,IAAM,EAC1JuS,EAAQ7Y,EAAQmpB,YAAY55B,GAEhCo4B,SAASC,EADG5nB,EAAQ1a,MAAMiK,GACIspB,EAAO3qB,EAAW25B,EAAWqB,GAA0B,GAAjBP,EAAY,IAASO,GAA0B,GAAjBP,EAAY,IAASC,GACvH16B,GAAaA,CACf,CAEA,OAAOA,CACT,CAqEA,SAASk7B,aAAazR,EAAI2E,EAAI6G,GAC5B,IAAItK,EAAQrxC,KAAKiqC,MAAM6K,EAAG,GAAK3E,EAAG,GAAI2E,EAAG,GAAK3E,EAAG,IACjD,MAAO,CAAC4P,YAAY5P,EAAIkB,EAAOsK,GAASoE,YAAYjL,EAAIzD,EAAOsK,GACjE,CAEA,SAASkG,cAAcrpB,EAASmjB,GAC9B,IAAIzL,EACA4R,EACAC,EACAC,EACAC,EACAjE,EACA7hD,EAEJ+zC,GADA/zC,EAAIylD,aAAappB,EAAQsG,OAAO,GAAItG,EAAQsG,OAAO,GAAI6c,IAChD,GACPmG,EAAM3lD,EAAE,GAER4lD,GADA5lD,EAAIylD,aAAappB,EAAQsG,OAAO,GAAItG,EAAQsG,OAAO,GAAI6c,IAC/C,GACRqG,EAAM7lD,EAAE,GAER8lD,GADA9lD,EAAIylD,aAAappB,EAAQsG,OAAO,GAAItG,EAAQsG,OAAO,GAAI6c,IAC/C,GACRqC,EAAK7hD,EAAE,GACP,IAAIg0C,EAAKqP,iBAAiBtP,EAAI4R,EAAKC,EAAKC,GAC7B,OAAP7R,IAAaA,EAAK2R,GACtB,IAAIhN,EAAK0K,iBAAiByC,EAAKjE,EAAI+D,EAAKC,GAExC,OADW,OAAPlN,IAAaA,EAAKmN,GACf,IAAI/D,iBAAiBhO,EAAIC,EAAI2E,EAAIkJ,EAC1C,CAEA,SAASkE,UAAU9B,EAAc+B,EAAMC,EAAMC,EAAUC,GACrD,IAAIpS,EAAKiS,EAAKrjB,OAAO,GACjBqR,EAAKiS,EAAKtjB,OAAO,GAErB,GAAiB,IAAbujB,EAAgB,OAAOnS,EAE3B,GAAIkO,WAAWlO,EAAIC,GAAK,OAAOD,EAE/B,GAAiB,IAAbmS,EAAgB,CAClB,IAAIE,GAAYJ,EAAKK,aAAa,GAC9BC,GAAWL,EAAKI,aAAa,GAAKxiD,KAAKwlB,GACvCk9B,EAASlD,iBAAiBtP,EAAI6P,YAAY7P,EAAIqS,EAAWviD,KAAKwlB,GAAK,EAAG,KAAM2qB,EAAI4P,YAAY5P,EAAIoS,EAAWviD,KAAKwlB,GAAK,EAAG,MACxHm9B,EAASD,EAAS1C,cAAc0C,EAAQxS,GAAM8P,cAAc9P,EAAIC,GAAM,EACtEsC,EAAMsN,YAAY7P,EAAIqS,EAAU,EAAII,EAASl9B,aAIjD,OAHA26B,EAAahT,QAAQqF,EAAI,GAAIA,EAAI,GAAI,IAAK2N,EAAa5kD,SAAW,GAClEi3C,EAAMsN,YAAY5P,EAAIsS,EAAS,EAAIE,EAASl9B,aAC5C26B,EAAa/S,YAAY8C,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIA,EAAG,GAAIsC,EAAI,GAAIA,EAAI,GAAI2N,EAAa5kD,UAC3E20C,CACT,CAGA,IAEIyS,EAAepD,iBAFVpB,WAAWlO,EAAIiS,EAAKrjB,OAAO,IAAMqjB,EAAKrjB,OAAO,GAAKqjB,EAAKrjB,OAAO,GAE/BoR,EAAIC,EADnCiO,WAAWjO,EAAIiS,EAAKtjB,OAAO,IAAMsjB,EAAKtjB,OAAO,GAAKsjB,EAAKtjB,OAAO,IAGvE,OAAI8jB,GAAgB5C,cAAc4C,EAAc1S,GAAMoS,GACpDlC,EAAa/S,YAAYuV,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIA,EAAa,GAAIxC,EAAa5kD,UACrIonD,GAGF1S,CACT,CAEA,SAAS2S,gBAAgBjxC,EAAGC,GAC1B,IAAIixC,EAAYlxC,EAAEutC,cAActtC,GAEhC,OADIixC,EAAUtnD,QAAUgiD,WAAWsF,EAAU,GAAG,GAAI,IAAIA,EAAUrqB,QAC9DqqB,EAAUtnD,OAAesnD,EAAU,GAChC,IACT,CAEA,SAASC,yBAAyBnxC,EAAGC,GACnC,IAAImxC,EAAOpxC,EAAExH,QACT64C,EAAOpxC,EAAEzH,QACT04C,EAAYD,gBAAgBjxC,EAAEA,EAAEpW,OAAS,GAAIqW,EAAE,IAOnD,OALIixC,IACFE,EAAKpxC,EAAEpW,OAAS,GAAKoW,EAAEA,EAAEpW,OAAS,GAAGqV,MAAMiyC,EAAU,IAAI,GACzDG,EAAK,GAAKpxC,EAAE,GAAGhB,MAAMiyC,EAAU,IAAI,IAGjClxC,EAAEpW,OAAS,GAAKqW,EAAErW,OAAS,IAC7BsnD,EAAYD,gBAAgBjxC,EAAE,GAAIC,EAAEA,EAAErW,OAAS,KAGtC,CAAC,CAACoW,EAAE,GAAGf,MAAMiyC,EAAU,IAAI,IAAK,CAACjxC,EAAEA,EAAErW,OAAS,GAAGqV,MAAMiyC,EAAU,IAAI,KAIzE,CAACE,EAAMC,EAChB,CAEA,SAASC,mBAAmBhtB,GAG1B,IAFA,IAAI/5B,EAEKiP,EAAI,EAAGA,EAAI8qB,EAAS16B,OAAQ4P,GAAK,EACxCjP,EAAI4mD,yBAAyB7sB,EAAS9qB,EAAI,GAAI8qB,EAAS9qB,IACvD8qB,EAAS9qB,EAAI,GAAKjP,EAAE,GACpB+5B,EAAS9qB,GAAKjP,EAAE,GASlB,OANI+5B,EAAS16B,OAAS,IACpBW,EAAI4mD,yBAAyB7sB,EAASA,EAAS16B,OAAS,GAAI06B,EAAS,IACrEA,EAASA,EAAS16B,OAAS,GAAKW,EAAE,GAClC+5B,EAAS,GAAK/5B,EAAE,IAGX+5B,CACT,CAEA,SAASitB,mBAAmB3qB,EAASmjB,GAOnC,IACIx9C,EACAilD,EACAvyC,EACAwyC,EAJAC,EAAO9qB,EAAQ+qB,mBAMnB,GAAoB,IAAhBD,EAAK9nD,OACP,MAAO,CAACqmD,cAAcrpB,EAASmjB,IAGjC,GAAoB,IAAhB2H,EAAK9nD,QAAgBgiD,WAAW8F,EAAK,GAAI,GAI3C,OAFAnlD,GADA0S,EAAQ2nB,EAAQ3nB,MAAMyyC,EAAK,KACd,GACbF,EAAQvyC,EAAM,GACP,CAACgxC,cAAc1jD,EAAMw9C,GAASkG,cAAcuB,EAAOzH,IAI5Dx9C,GADA0S,EAAQ2nB,EAAQ3nB,MAAMyyC,EAAK,KACd,GACb,IAAIv7B,GAAKu7B,EAAK,GAAKA,EAAK,KAAO,EAAIA,EAAK,IAIxC,OAFAD,GADAxyC,EAAQA,EAAM,GAAGA,MAAMkX,IACX,GACZq7B,EAAQvyC,EAAM,GACP,CAACgxC,cAAc1jD,EAAMw9C,GAASkG,cAAcwB,EAAK1H,GAASkG,cAAcuB,EAAOzH,GACxF,CAEA,SAAS6H,qBAAsB,CAwG/B,SAASC,kBAAkBC,GAOzB,IANA,IAAIC,EAASD,EAASE,OAASF,EAASE,OAAO/yC,MAAM,KAAO,GACxDgzC,EAAU,SACVD,EAAS,SACTrnC,EAAMonC,EAAOnoD,OAGR4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAG5B,OAFYu4C,EAAOv4C,GAAGoJ,eAGpB,IAAK,SACHovC,EAAS,SACT,MAEF,IAAK,OACHC,EAAU,MACV,MAEF,IAAK,QACHA,EAAU,MACV,MAEF,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,UACL,IAAK,SACHA,EAAU,MACV,MAEF,IAAK,QACL,IAAK,OACHA,EAAU,MAQhB,MAAO,CACL9uD,MAAO6uD,EACPE,OAAQJ,EAASG,SAAWA,EAEhC,CAriCAliC,gBAAgB,CAAC63B,eAAgB8D,kBAEjCA,iBAAiBt4C,UAAU20C,uBAAyB,SAAU5c,EAAM7oB,GAClEtQ,KAAKqoC,SAAWroC,KAAKk2C,YACrBl2C,KAAKkO,EAAIw6B,gBAAgBC,QAAQxP,EAAM7oB,EAAKpC,EAAG,EAAG,KAAMlO,MACxDA,KAAKooB,EAAIsgB,gBAAgBC,QAAQxP,EAAM7oB,EAAK8X,EAAG,EAAG,KAAMpoB,MACxDA,KAAKmgD,GAAK/H,yBAAyBqB,qBAAqBtgB,EAAM7oB,EAAK6vC,GAAIngD,MACvEA,KAAKogD,GAAK1X,gBAAgBC,QAAQxP,EAAM7oB,EAAK6vC,GAAGC,GAAI,EAAG,IAAMpgD,MAC7DA,KAAKqgD,GAAK3X,gBAAgBC,QAAQxP,EAAM7oB,EAAK6vC,GAAGE,GAAI,EAAG,IAAMrgD,MAC7DA,KAAKsQ,KAAOA,EAEPtQ,KAAK+oC,kBAAkBnxC,QAC1BoI,KAAKqoC,UAAS,GAGhBroC,KAAKgpC,cAAgBhpC,KAAK+oC,kBAAkBnxC,OAC5CoI,KAAKsgD,QAAU,IAAI7R,OACnBzuC,KAAKugD,QAAU,IAAI9R,OACnBzuC,KAAKwgD,QAAU,IAAI/R,OACnBzuC,KAAKygD,QAAU,IAAIhS,OACnBzuC,KAAKmyC,OAAS,IAAI1D,MACpB,EAEAiL,iBAAiBt4C,UAAUs/C,gBAAkB,SAAUJ,EAASC,EAASC,EAASrQ,EAAWxR,EAAMgiB,GACjG,IAAI9gB,EAAM8gB,GAAO,EAAI,EACjBC,EAASzQ,EAAUrsB,EAAEC,EAAE,IAAM,EAAIosB,EAAUrsB,EAAEC,EAAE,KAAO,EAAI4a,GAC1DkiB,EAAS1Q,EAAUrsB,EAAEC,EAAE,IAAM,EAAIosB,EAAUrsB,EAAEC,EAAE,KAAO,EAAI4a,GAC9D2hB,EAAQtQ,UAAUG,EAAUlsB,EAAEF,EAAE,GAAK8b,EAAMlB,EAAMwR,EAAUlsB,EAAEF,EAAE,GAAK8b,EAAMlB,EAAMwR,EAAUlsB,EAAEF,EAAE,IAC9Fw8B,EAAQvQ,WAAWG,EAAUniC,EAAE+V,EAAE,IAAKosB,EAAUniC,EAAE+V,EAAE,GAAIosB,EAAUniC,EAAE+V,EAAE,IACtEw8B,EAAQvR,QAAQmB,EAAUnsB,EAAED,EAAI8b,EAAMlB,GACtC4hB,EAAQvQ,UAAUG,EAAUniC,EAAE+V,EAAE,GAAIosB,EAAUniC,EAAE+V,EAAE,GAAIosB,EAAUniC,EAAE+V,EAAE,IACpEy8B,EAAQxQ,WAAWG,EAAUniC,EAAE+V,EAAE,IAAKosB,EAAUniC,EAAE+V,EAAE,GAAIosB,EAAUniC,EAAE+V,EAAE,IACtEy8B,EAAQ7Q,MAAMgR,EAAM,EAAIC,EAASA,EAAQD,EAAM,EAAIE,EAASA,GAC5DL,EAAQxQ,UAAUG,EAAUniC,EAAE+V,EAAE,GAAIosB,EAAUniC,EAAE+V,EAAE,GAAIosB,EAAUniC,EAAE+V,EAAE,GACtE,EAEA21B,iBAAiBt4C,UAAUo2B,KAAO,SAAU2B,EAAMjZ,EAAK9J,EAAK0qC,GAY1D,IAXA9gD,KAAKm5B,KAAOA,EACZn5B,KAAKkgB,IAAMA,EACXlgB,KAAKoW,IAAMA,EACXpW,KAAK8gD,UAAYA,EACjB9gD,KAAK+gD,eAAiB,EACtB/gD,KAAKghD,UAAY,GACjBhhD,KAAKihD,QAAU,GACfjhD,KAAK0nC,SAAW,EAChB1nC,KAAKkpC,6BAA6B/P,GAClCn5B,KAAK+1C,uBAAuB5c,EAAMjZ,EAAI9J,IAE/BA,EAAM,GACXA,GAAO,EAEPpW,KAAKghD,UAAUE,QAAQhhC,EAAI9J,IAGzBpW,KAAK+oC,kBAAkBnxC,OACzBoI,KAAK0Y,GAAI,EAET1Y,KAAKqoC,UAAS,EAElB,EAEAqR,iBAAiBt4C,UAAU+/C,cAAgB,SAAUC,GACnD,IAAI55C,EACAmR,EAAMyoC,EAASxpD,OAEnB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB45C,EAAS55C,GAAG65C,YAAa,EAEF,OAAnBD,EAAS55C,GAAGigB,IACdznB,KAAKmhD,cAAcC,EAAS55C,GAAG7G,GAGrC,EAEA+4C,iBAAiBt4C,UAAUkgD,cAAgB,SAAUF,GACnD,IAAIG,EAAct5B,KAAKC,MAAMD,KAAKxL,UAAU2kC,IAE5C,OADAphD,KAAKmhD,cAAcI,GACZA,CACT,EAEA7H,iBAAiBt4C,UAAUogD,kBAAoB,SAAUJ,EAAUK,GACjE,IAAIj6C,EACAmR,EAAMyoC,EAASxpD,OAEnB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB45C,EAAS55C,GAAGk6C,QAAUD,EAEC,OAAnBL,EAAS55C,GAAGigB,IACdznB,KAAKwhD,kBAAkBJ,EAAS55C,GAAG7G,GAAI8gD,EAG7C,EAEA/H,iBAAiBt4C,UAAU01C,cAAgB,SAAUjP,GACnD,IAAI8Z,EACAC,EACAp6C,EACAq4B,EACAgiB,EACAC,GAAc,EAElB,GAAI9hD,KAAKwnC,MAAQK,EAAe,CAC9B,IAmEI4Z,EAnEAM,EAAS3lD,KAAKgb,KAAKpX,KAAKkO,EAAE6V,GAE9B,GAAI/jB,KAAKihD,QAAQrpD,OAASmqD,EAAQ,CAChC,KAAO/hD,KAAKihD,QAAQrpD,OAASmqD,GAAQ,CACnC,IAAIC,EAAQ,CACVrhD,GAAIX,KAAKshD,cAActhD,KAAKghD,WAC5Bv5B,GAAI,MAENu6B,EAAMrhD,GAAGtB,KAAK,CACZ2O,EAAG,CACDA,EAAG,EACHi0C,GAAI,EACJvpC,EAAG,CAAC,EAAG,IAETqY,GAAI,YACJ3I,EAAG,CACDpa,EAAG,EACHi0C,GAAI,EACJvpC,EAAG,KAELuL,EAAG,CACDjW,EAAG,EACHi0C,GAAI,EACJvpC,EAAG,CAAC,EAAG,IAETsL,EAAG,CACDhW,EAAG,EACHi0C,GAAI,EACJvpC,EAAG,CAAC,CACFoL,EAAG,EACHvrB,EAAG,EACH4rB,EAAG,GACF,CACDL,EAAG,EACHvrB,EAAG,EACH4rB,EAAG,KAGPL,EAAG,CACD9V,EAAG,EACHi0C,GAAI,EACJvpC,EAAG,CAAC,IAAK,MAEX8Q,GAAI,CACFxb,EAAG,EACHi0C,GAAI,EACJvpC,EAAG,GAEL6Q,GAAI,CACFvb,EAAG,EACHi0C,GAAI,EACJvpC,EAAG,GAEL+O,GAAI,OAENznB,KAAKkgB,IAAIwP,OAAO,EAAG,EAAGsyB,GAEtBhiD,KAAKihD,QAAQvxB,OAAO,EAAG,EAAGsyB,GAE1BhiD,KAAK+gD,gBAAkB,CACzB,CAEA/gD,KAAKm5B,KAAK+oB,eACVJ,GAAc,CAChB,CAKA,IAHAD,EAAO,EAGFr6C,EAAI,EAAGA,GAAKxH,KAAKihD,QAAQrpD,OAAS,EAAG4P,GAAK,EAAG,CAKhD,GAJAi6C,EAAaI,EAAOE,EACpB/hD,KAAKihD,QAAQz5C,GAAGk6C,QAAUD,EAC1BzhD,KAAKwhD,kBAAkBxhD,KAAKihD,QAAQz5C,GAAG7G,GAAI8gD,IAEtCA,EAAY,CACf,IAAIU,EAAQniD,KAAK8gD,UAAUt5C,GAAG7G,GAC1ByhD,EAAgBD,EAAMA,EAAMvqD,OAAS,GAEJ,IAAjCwqD,EAAcjS,UAAU/mB,GAAGrF,GAC7Bq+B,EAAcjS,UAAU/mB,GAAGoe,MAAO,EAClC4a,EAAcjS,UAAU/mB,GAAGrF,EAAI,GAE/Bq+B,EAAcjS,UAAU/mB,GAAGoe,MAAO,CAEtC,CAEAqa,GAAQ,CACV,CAEA7hD,KAAK+gD,eAAiBgB,EAEtB,IAAIv9B,EAASxkB,KAAKooB,EAAErE,EAChBs+B,EAAe79B,EAAS,EACxB89B,EAAc99B,EAAS,EAAIpoB,KAAKib,MAAMmN,GAAUpoB,KAAKgb,KAAKoN,GAC1D+9B,EAASviD,KAAKsgD,QAAQvR,MACtByT,EAASxiD,KAAKugD,QAAQxR,MACtB0T,EAASziD,KAAKwgD,QAAQzR,MAC1B/uC,KAAKsgD,QAAQtU,QACbhsC,KAAKugD,QAAQvU,QACbhsC,KAAKwgD,QAAQxU,QACbhsC,KAAKygD,QAAQzU,QACbhsC,KAAKmyC,OAAOnG,QACZ,IA2BIhlB,EACAC,EA5BAy7B,EAAY,EAEhB,GAAIl+B,EAAS,EAAG,CACd,KAAOk+B,EAAYJ,GACjBtiD,KAAK0gD,gBAAgB1gD,KAAKsgD,QAAStgD,KAAKugD,QAASvgD,KAAKwgD,QAASxgD,KAAKmgD,GAAI,GAAG,GAC3EuC,GAAa,EAGXL,IACFriD,KAAK0gD,gBAAgB1gD,KAAKsgD,QAAStgD,KAAKugD,QAASvgD,KAAKwgD,QAASxgD,KAAKmgD,GAAIkC,GAAc,GACtFK,GAAaL,EAEjB,MAAO,GAAI79B,EAAS,EAAG,CACrB,KAAOk+B,EAAYJ,GACjBtiD,KAAK0gD,gBAAgB1gD,KAAKsgD,QAAStgD,KAAKugD,QAASvgD,KAAKwgD,QAASxgD,KAAKmgD,GAAI,GAAG,GAC3EuC,GAAa,EAGXL,IACFriD,KAAK0gD,gBAAgB1gD,KAAKsgD,QAAStgD,KAAKugD,QAASvgD,KAAKwgD,QAASxgD,KAAKmgD,IAAKkC,GAAc,GACvFK,GAAaL,EAEjB,CAQA,IANA76C,EAAoB,IAAhBxH,KAAKsQ,KAAKy/B,EAAU,EAAI/vC,KAAK+gD,eAAiB,EAClDlhB,EAAsB,IAAhB7/B,KAAKsQ,KAAKy/B,EAAU,GAAK,EAC/B8R,EAAO7hD,KAAK+gD,eAILc,GAAM,CAQX,GALA56B,GADA26B,GADAD,EAAQ3hD,KAAK8gD,UAAUt5C,GAAG7G,IACHghD,EAAM/pD,OAAS,GAAGu4C,UAAUwS,OAAO5+B,EAAEgrB,OACtCn3C,OACtB+pD,EAAMA,EAAM/pD,OAAS,GAAGu4C,UAAUwS,OAAOnb,MAAO,EAChDma,EAAMA,EAAM/pD,OAAS,GAAGu4C,UAAU/mB,GAAGoe,MAAO,EAC5Cma,EAAMA,EAAM/pD,OAAS,GAAGu4C,UAAU/mB,GAAGrF,EAA4B,IAAxB/jB,KAAK+gD,eAAuB/gD,KAAKogD,GAAGr8B,EAAI/jB,KAAKogD,GAAGr8B,GAAK/jB,KAAKqgD,GAAGt8B,EAAI/jB,KAAKogD,GAAGr8B,IAAMvc,GAAKxH,KAAK+gD,eAAiB,IAEjI,IAAd2B,EAAiB,CASnB,KARU,IAANl7C,GAAmB,IAARq4B,GAAar4B,IAAMxH,KAAK+gD,eAAiB,IAAc,IAATlhB,IAC3D7/B,KAAK0gD,gBAAgB1gD,KAAKsgD,QAAStgD,KAAKugD,QAASvgD,KAAKwgD,QAASxgD,KAAKmgD,GAAI,GAAG,GAG7EngD,KAAKmyC,OAAOhC,UAAUqS,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvMxiD,KAAKmyC,OAAOhC,UAAUsS,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KACvMziD,KAAKmyC,OAAOhC,UAAUoS,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,IAAKA,EAAO,KAElMv7B,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB46B,EAAe56B,GAAKhnB,KAAKmyC,OAAOpD,MAAM/nB,GAGxChnB,KAAKmyC,OAAOnG,OACd,MAGE,IAFAhsC,KAAKmyC,OAAOnG,QAEPhlB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB46B,EAAe56B,GAAKhnB,KAAKmyC,OAAOpD,MAAM/nB,GAI1C07B,GAAa,EACbb,GAAQ,EACRr6C,GAAKq4B,CACP,CACF,MAKE,IAJAgiB,EAAO7hD,KAAK+gD,eACZv5C,EAAI,EACJq4B,EAAM,EAECgiB,GAELD,GADAD,EAAQ3hD,KAAK8gD,UAAUt5C,GAAG7G,IACHghD,EAAM/pD,OAAS,GAAGu4C,UAAUwS,OAAO5+B,EAAEgrB,MAC5D4S,EAAMA,EAAM/pD,OAAS,GAAGu4C,UAAUwS,OAAOnb,MAAO,EAChDma,EAAMA,EAAM/pD,OAAS,GAAGu4C,UAAU/mB,GAAGoe,MAAO,EAC5Cqa,GAAQ,EACRr6C,GAAKq4B,EAIT,OAAOiiB,CACT,EAEApI,iBAAiBt4C,UAAUwpC,SAAW,WAAa,EAInD7sB,gBAAgB,CAAC63B,eAAgB+D,sBAEjCA,qBAAqBv4C,UAAU20C,uBAAyB,SAAU5c,EAAM7oB,GACtEtQ,KAAKqoC,SAAWroC,KAAKk2C,YACrBl2C,KAAK4iD,GAAKla,gBAAgBC,QAAQxP,EAAM7oB,EAAK0T,EAAG,EAAG,KAAMhkB,MACzDA,KAAKgpC,cAAgBhpC,KAAK4iD,GAAGjb,gBAAgB/vC,MAC/C,EAEA+hD,qBAAqBv4C,UAAU42C,YAAc,SAAU7gD,EAAM6qB,GAC3D,IAEIxa,EAFA2wC,EAAa7N,UAAUlN,aAC3B+a,EAAWjqC,EAAI/W,EAAK+W,EAEpB,IACI20C,EACAC,EACAC,EACAC,EACAC,EACAC,EAEAxZ,EACAC,EACAC,EACAC,EACAC,EACAC,EAbApxB,EAAMxhB,EAAK8lC,QAOXr6B,EAAQ,EAQZ,IAAK4E,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBq7C,EAAW1rD,EAAK4sB,EAAEvc,GAClBu7C,EAAW5rD,EAAKixB,EAAE5gB,GAClBs7C,EAAW3rD,EAAKqQ,EAAEA,GAEdq7C,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOE,EAAS,IAAMF,EAAS,KAAOC,EAAS,IAAMD,EAAS,KAAOC,EAAS,GAC7G,IAANt7C,GAAWA,IAAMmR,EAAM,GAAOxhB,EAAK+W,GASpC80C,EADQ,IAANx7C,EACQrQ,EAAK4sB,EAAEpL,EAAM,GAEbxhB,EAAK4sB,EAAEvc,EAAI,GAIvB07C,GADAD,EAAW7mD,KAAK8kB,KAAK9kB,KAAK4kB,IAAI6hC,EAAS,GAAKG,EAAQ,GAAI,GAAK5mD,KAAK4kB,IAAI6hC,EAAS,GAAKG,EAAQ,GAAI,KACxE5mD,KAAK8a,IAAI+rC,EAAW,EAAGjhC,GAASihC,EAAW,EAEnEvZ,EADAI,EAAK+Y,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAGhDvZ,EADAI,EAAK8Y,EAAS,IAAMA,EAAS,GAAKG,EAAQ,IAAME,EAEhDtZ,EAAKF,GAAMA,EAAKmZ,EAAS,IAAMhhC,YAC/BgoB,EAAKF,GAAMA,EAAKkZ,EAAS,IAAMhhC,YAC/Bs2B,EAAW1O,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAInnC,GAC/CA,GAAS,EAGPogD,EADEx7C,IAAMmR,EAAM,EACJxhB,EAAK4sB,EAAE,GAEP5sB,EAAK4sB,EAAEvc,EAAI,GAIvB07C,GADAD,EAAW7mD,KAAK8kB,KAAK9kB,KAAK4kB,IAAI6hC,EAAS,GAAKG,EAAQ,GAAI,GAAK5mD,KAAK4kB,IAAI6hC,EAAS,GAAKG,EAAQ,GAAI,KACxE5mD,KAAK8a,IAAI+rC,EAAW,EAAGjhC,GAASihC,EAAW,EAEnEvZ,EADAE,EAAKiZ,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAGhDvZ,EADAE,EAAKgZ,EAAS,IAAMG,EAAQ,GAAKH,EAAS,IAAMK,EAEhDpZ,EAAKJ,GAAMA,EAAKmZ,EAAS,IAAMhhC,YAC/BkoB,EAAKJ,GAAMA,EAAKkZ,EAAS,IAAMhhC,YAC/Bs2B,EAAW1O,YAAYC,EAAIC,EAAIC,EAAIC,EAAIC,EAAIC,EAAInnC,GAC/CA,GAAS,IAvCTu1C,EAAW1O,YAAYoZ,EAAS,GAAIA,EAAS,GAAIE,EAAS,GAAIA,EAAS,GAAID,EAAS,GAAIA,EAAS,GAAIlgD,GAKrGA,GAAS,IAqCXu1C,EAAW1O,YAAYtyC,EAAK4sB,EAAEvc,GAAG,GAAIrQ,EAAK4sB,EAAEvc,GAAG,GAAIrQ,EAAKixB,EAAE5gB,GAAG,GAAIrQ,EAAKixB,EAAE5gB,GAAG,GAAIrQ,EAAKqQ,EAAEA,GAAG,GAAIrQ,EAAKqQ,EAAEA,GAAG,GAAI5E,GAC3GA,GAAS,GAIb,OAAOu1C,CACT,EAEAwB,qBAAqBv4C,UAAU01C,cAAgB,SAAUjP,GACvD,IAAIkP,EACAvvC,EAEAwf,EACAC,EAIE+Y,EACA2L,EAPFhzB,EAAM3Y,KAAK6nB,OAAOjwB,OAGlBgrD,EAAK5iD,KAAK4iD,GAAG7+B,EAEjB,GAAW,IAAP6+B,EAIF,IAAKp7C,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAI3B,GAFAmkC,GADA3L,EAAYhgC,KAAK6nB,OAAOrgB,IACSmkC,qBAE1B3L,EAAUyK,MAAMjD,MAASxnC,KAAKwnC,MAASK,EAM5C,IALA8D,EAAqBd,gBACrB7K,EAAUyK,MAAMjD,MAAO,EACvBuP,EAAa/W,EAAUyK,MAAMiB,MAAM7jB,OACnCZ,EAAO+Y,EAAUyK,MAAMiB,MAAMzO,QAExBjW,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB2kB,EAAqBf,SAAS5qC,KAAKg4C,YAAYjB,EAAW/vB,GAAI47B,IAIlE5iB,EAAUyK,MAAMiB,MAAQ1L,EAAU2L,oBACpC,CAGG3rC,KAAK+oC,kBAAkBnxC,SAC1BoI,KAAKwnC,MAAO,EAEhB,EA0DA8S,iBAAiBl5C,UAAU8Y,MAAQ,SAAUiK,GAC3C,MAAO,GAAGnkB,KAAKgO,EAAE,GAAKmW,EAAInkB,KAAKiO,EAAE,IAAMkW,EAAInkB,KAAKkO,EAAE,IAAMiW,EAAInkB,KAAKqkB,EAAE,KAAMrkB,KAAKgO,EAAE,GAAKmW,EAAInkB,KAAKiO,EAAE,IAAMkW,EAAInkB,KAAKkO,EAAE,IAAMiW,EAAInkB,KAAKqkB,EAAE,GACpI,EAEAi2B,iBAAiBl5C,UAAU+hD,WAAa,SAAUh/B,GAChD,MAAO,EAAE,EAAIA,EAAInkB,KAAKgO,EAAE,GAAK,EAAIhO,KAAKiO,EAAE,IAAMkW,EAAInkB,KAAKkO,EAAE,IAAK,EAAIiW,EAAInkB,KAAKgO,EAAE,GAAK,EAAIhO,KAAKiO,EAAE,IAAMkW,EAAInkB,KAAKkO,EAAE,GAChH,EAEAosC,iBAAiBl5C,UAAUw9C,aAAe,SAAUz6B,GAClD,IAAIF,EAAIjkB,KAAKmjD,WAAWh/B,GACxB,OAAO/nB,KAAKiqC,MAAMpiB,EAAE,GAAIA,EAAE,GAC5B,EAEAq2B,iBAAiBl5C,UAAU28C,YAAc,SAAU55B,GACjD,IAAIF,EAAIjkB,KAAKmjD,WAAWh/B,GACxB,OAAO/nB,KAAKiqC,MAAMpiB,EAAE,GAAIA,EAAE,GAC5B,EAEAq2B,iBAAiBl5C,UAAUu+C,iBAAmB,WAC5C,IAAIyD,EAAQpjD,KAAKgO,EAAE,GAAKhO,KAAKiO,EAAE,GAAKjO,KAAKgO,EAAE,GAAKhO,KAAKiO,EAAE,GACvD,GAAI4rC,UAAUuJ,GAAQ,MAAO,GAC7B,IAAIC,GAAS,IAAOrjD,KAAKgO,EAAE,GAAKhO,KAAKkO,EAAE,GAAKlO,KAAKgO,EAAE,GAAKhO,KAAKkO,EAAE,IAAMk1C,EACjEE,EAASD,EAAQA,EAAQ,EAAI,GAAKrjD,KAAKiO,EAAE,GAAKjO,KAAKkO,EAAE,GAAKlO,KAAKiO,EAAE,GAAKjO,KAAKkO,EAAE,IAAMk1C,EACvF,GAAIE,EAAS,EAAG,MAAO,GACvB,IAAIC,EAAOnnD,KAAK8kB,KAAKoiC,GAErB,OAAIzJ,UAAU0J,GACRA,EAAO,GAAKA,EAAO,EAAU,CAACF,GAC3B,GAGF,CAACA,EAAQE,EAAMF,EAAQE,GAAMljD,QAAO,SAAU2jB,GACnD,OAAOA,EAAI,GAAKA,EAAI,CACtB,GACF,EAEAs2B,iBAAiBl5C,UAAU6L,MAAQ,SAAUkX,GAC3C,GAAIA,GAAK,EAAG,MAAO,CAACk2B,YAAYr6C,KAAKk7B,OAAO,IAAKl7B,MACjD,GAAImkB,GAAK,EAAG,MAAO,CAACnkB,KAAMq6C,YAAYr6C,KAAKk7B,OAAOl7B,KAAKk7B,OAAOtjC,OAAS,KACvE,IAAI4rD,EAAMzJ,UAAU/5C,KAAKk7B,OAAO,GAAIl7B,KAAKk7B,OAAO,GAAI/W,GAChDs/B,EAAM1J,UAAU/5C,KAAKk7B,OAAO,GAAIl7B,KAAKk7B,OAAO,GAAI/W,GAChDuvB,EAAMqG,UAAU/5C,KAAKk7B,OAAO,GAAIl7B,KAAKk7B,OAAO,GAAI/W,GAChDu/B,EAAM3J,UAAUyJ,EAAKC,EAAKt/B,GAC1Bw/B,EAAM5J,UAAU0J,EAAK/P,EAAKvvB,GAC1Bi2B,EAAKL,UAAU2J,EAAKC,EAAKx/B,GAC7B,MAAO,CAAC,IAAIm2B,iBAAiBt6C,KAAKk7B,OAAO,GAAIsoB,EAAKE,EAAKtJ,GAAI,GAAO,IAAIE,iBAAiBF,EAAIuJ,EAAKjQ,EAAK1zC,KAAKk7B,OAAO,IAAI,GACvH,EA4BAof,iBAAiBl5C,UAAUwiD,OAAS,WAClC,MAAO,CACLjkD,EAAGg7C,QAAQ36C,KAAM,GACjBJ,EAAG+6C,QAAQ36C,KAAM,GAErB,EAEAs6C,iBAAiBl5C,UAAU25C,YAAc,WACvC,IAAI6I,EAAS5jD,KAAK4jD,SAClB,MAAO,CACLrpD,KAAMqpD,EAAOjkD,EAAEuX,IACfsoC,MAAOoE,EAAOjkD,EAAEsX,IAChBzc,IAAKopD,EAAOhkD,EAAEsX,IACd/Y,OAAQylD,EAAOhkD,EAAEqX,IACjBpZ,MAAO+lD,EAAOjkD,EAAEsX,IAAM2sC,EAAOjkD,EAAEuX,IAC/BrlB,OAAQ+xD,EAAOhkD,EAAEqX,IAAM2sC,EAAOhkD,EAAEsX,IAChC8jC,IAAK4I,EAAOjkD,EAAEsX,IAAM2sC,EAAOjkD,EAAEuX,KAAO,EACpC+jC,IAAK2I,EAAOhkD,EAAEqX,IAAM2sC,EAAOhkD,EAAEsX,KAAO,EAExC,EAyCAojC,iBAAiBl5C,UAAUm6C,cAAgB,SAAUsI,EAAOvI,EAAWE,QACnDp7C,IAAdk7C,IAAyBA,EAAY,QACpBl7C,IAAjBo7C,IAA4BA,EAAe,GAC/C,IAAID,EAAgB,GAEpB,OADAH,eAAeR,cAAc56C,KAAM,EAAG,GAAI46C,cAAciJ,EAAO,EAAG,GAAI,EAAGvI,EAAWC,EAAeC,GAC5FD,CACT,EAEAjB,iBAAiB1C,aAAe,SAAUrN,EAAW3nC,GACnD,IAAIw6C,GAAax6C,EAAQ,GAAK2nC,EAAU3yC,SACxC,OAAO,IAAI0iD,iBAAiB/P,EAAUxmB,EAAEnhB,GAAQ2nC,EAAUniB,EAAExlB,GAAQ2nC,EAAU/iC,EAAE41C,GAAY7S,EAAUxmB,EAAEq5B,IAAY,EACtH,EAEA9C,iBAAiBwJ,qBAAuB,SAAUvZ,EAAW3nC,GAC3D,IAAIw6C,GAAax6C,EAAQ,GAAK2nC,EAAU3yC,SACxC,OAAO,IAAI0iD,iBAAiB/P,EAAUxmB,EAAEq5B,GAAY7S,EAAU/iC,EAAE41C,GAAY7S,EAAUniB,EAAExlB,GAAQ2nC,EAAUxmB,EAAEnhB,IAAQ,EACtH,EA8BAmb,gBAAgB,CAAC63B,eAAgB0G,gBAEjCA,eAAel7C,UAAU20C,uBAAyB,SAAU5c,EAAM7oB,GAChEtQ,KAAKqoC,SAAWroC,KAAKk2C,YACrBl2C,KAAKy8C,UAAY/T,gBAAgBC,QAAQxP,EAAM7oB,EAAKwT,EAAG,EAAG,KAAM9jB,MAChEA,KAAKu9C,UAAY7U,gBAAgBC,QAAQxP,EAAM7oB,EAAK0T,EAAG,EAAG,KAAMhkB,MAChEA,KAAK+jD,WAAarb,gBAAgBC,QAAQxP,EAAM7oB,EAAKiX,GAAI,EAAG,KAAMvnB,MAClEA,KAAKgpC,YAAwD,IAA1ChpC,KAAKy8C,UAAU9U,gBAAgB/vC,QAA0D,IAA1CoI,KAAKu9C,UAAU5V,gBAAgB/vC,QAA2D,IAA3CoI,KAAK+jD,WAAWpc,gBAAgB/vC,MACnJ,EAiDA0kD,eAAel7C,UAAU42C,YAAc,SAAU7gD,EAAMslD,EAAWc,EAAWC,GAC3E,IAAIwG,EAAQ7sD,EAAK8lC,QACbkb,EAAa7N,UAAUlN,aAO3B,GANA+a,EAAWjqC,EAAI/W,EAAK+W,EAEf/W,EAAK+W,IACR81C,GAAS,GAGG,IAAVA,EAAa,OAAO7L,EACxB,IAAIr1B,GAAa,EACb8R,EAAU0lB,iBAAiB1C,aAAazgD,EAAM,GAClDmmD,aAAanF,EAAYhhD,EAAM,EAAGslD,EAAWc,EAAWC,EAAW16B,GAEnE,IAAK,IAAItb,EAAI,EAAGA,EAAIw8C,EAAOx8C,GAAK,EAC9Bsb,EAAY+6B,cAAc1F,EAAYvjB,EAAS6nB,EAAWc,EAAWC,GAAY16B,GAK/E8R,EAHEptB,IAAMw8C,EAAQ,GAAM7sD,EAAK+W,EAGjBosC,iBAAiB1C,aAAazgD,GAAOqQ,EAAI,GAAKw8C,GAF9C,KAKZ1G,aAAanF,EAAYhhD,EAAMqQ,EAAI,EAAGi1C,EAAWc,EAAWC,EAAW16B,GAGzE,OAAOq1B,CACT,EAEAmE,eAAel7C,UAAU01C,cAAgB,SAAUjP,GACjD,IAAIkP,EACAvvC,EAEAwf,EACAC,EAME+Y,EACA2L,EATFhzB,EAAM3Y,KAAK6nB,OAAOjwB,OAGlB6kD,EAAYz8C,KAAKy8C,UAAU14B,EAC3Bw5B,EAAYnhD,KAAK6a,IAAI,EAAG7a,KAAK4lB,MAAMhiB,KAAKu9C,UAAUx5B,IAClDy5B,EAAYx9C,KAAK+jD,WAAWhgC,EAEhC,GAAkB,IAAd04B,EAIF,IAAKj1C,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAI3B,GAFAmkC,GADA3L,EAAYhgC,KAAK6nB,OAAOrgB,IACSmkC,qBAE1B3L,EAAUyK,MAAMjD,MAASxnC,KAAKwnC,MAASK,EAM5C,IALA8D,EAAqBd,gBACrB7K,EAAUyK,MAAMjD,MAAO,EACvBuP,EAAa/W,EAAUyK,MAAMiB,MAAM7jB,OACnCZ,EAAO+Y,EAAUyK,MAAMiB,MAAMzO,QAExBjW,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB2kB,EAAqBf,SAAS5qC,KAAKg4C,YAAYjB,EAAW/vB,GAAIy1B,EAAWc,EAAWC,IAIxFxd,EAAUyK,MAAMiB,MAAQ1L,EAAU2L,oBACpC,CAGG3rC,KAAK+oC,kBAAkBnxC,SAC1BoI,KAAKwnC,MAAO,EAEhB,EAiJAzpB,gBAAgB,CAAC63B,eAAgBgK,oBAEjCA,mBAAmBx+C,UAAU20C,uBAAyB,SAAU5c,EAAM7oB,GACpEtQ,KAAKqoC,SAAWroC,KAAKk2C,YACrBl2C,KAAK+3C,OAASrP,gBAAgBC,QAAQxP,EAAM7oB,EAAKtC,EAAG,EAAG,KAAMhO,MAC7DA,KAAK0+C,WAAahW,gBAAgBC,QAAQxP,EAAM7oB,EAAK2zC,GAAI,EAAG,KAAMjkD,MAClEA,KAAKy+C,SAAWnuC,EAAK4zC,GACrBlkD,KAAKgpC,YAAqD,IAAvChpC,KAAK+3C,OAAOpQ,gBAAgB/vC,MACjD,EAEAgoD,mBAAmBx+C,UAAU42C,YAAc,SAAUmM,EAAapM,EAAQ0G,EAAUC,GAClF,IAAIlC,EAAelS,UAAUlN,aAC7Bof,EAAatuC,EAAIi2C,EAAYj2C,EAC7B,IAMI1G,EACAwf,EACA4N,EARAovB,EAAQG,EAAYvsD,SAEnBusD,EAAYj2C,IACf81C,GAAS,GAMX,IAAII,EAAgB,GAEpB,IAAK58C,EAAI,EAAGA,EAAIw8C,EAAOx8C,GAAK,EAC1BotB,EAAU0lB,iBAAiB1C,aAAauM,EAAa38C,GACrD48C,EAAc/kD,KAAKkgD,mBAAmB3qB,EAASmjB,IAGjD,IAAKoM,EAAYj2C,EACf,IAAK1G,EAAIw8C,EAAQ,EAAGx8C,GAAK,EAAGA,GAAK,EAC/BotB,EAAU0lB,iBAAiBwJ,qBAAqBK,EAAa38C,GAC7D48C,EAAc/kD,KAAKkgD,mBAAmB3qB,EAASmjB,IAInDqM,EAAgB9E,mBAAmB8E,GAEnC,IAAItlB,EAAY,KACZulB,EAAU,KAEd,IAAK78C,EAAI,EAAGA,EAAI48C,EAAcxsD,OAAQ4P,GAAK,EAAG,CAC5C,IAAI88C,EAAeF,EAAc58C,GAIjC,IAHI68C,IAASvlB,EAAYwf,UAAU9B,EAAc6H,EAASC,EAAa,GAAI7F,EAAUC,IACrF2F,EAAUC,EAAaA,EAAa1sD,OAAS,GAExCovB,EAAI,EAAGA,EAAIs9B,EAAa1sD,OAAQovB,GAAK,EACxC4N,EAAU0vB,EAAat9B,GAEnB8X,GAAa0b,WAAW5lB,EAAQsG,OAAO,GAAI4D,GAC7C0d,EAAahT,QAAQ5U,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAI,IAAKshB,EAAa5kD,SAAW,GAE9F4kD,EAAa/S,YAAY7U,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAIshB,EAAa5kD,UAG5K4kD,EAAa/S,YAAY7U,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAItG,EAAQsG,OAAO,GAAG,GAAIshB,EAAa5kD,UAC1KknC,EAAYlK,EAAQsG,OAAO,EAE/B,CAGA,OADIkpB,EAAcxsD,QAAQ0mD,UAAU9B,EAAc6H,EAASD,EAAc,GAAG,GAAI3F,EAAUC,GACnFlC,CACT,EAEAoD,mBAAmBx+C,UAAU01C,cAAgB,SAAUjP,GACrD,IAAIkP,EACAvvC,EAEAwf,EACAC,EAME+Y,EACA2L,EATFhzB,EAAM3Y,KAAK6nB,OAAOjwB,OAGlBmgD,EAAS/3C,KAAK+3C,OAAOh0B,EACrB26B,EAAa1+C,KAAK0+C,WAAW36B,EAC7B06B,EAAWz+C,KAAKy+C,SAEpB,GAAe,IAAX1G,EAIF,IAAKvwC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAI3B,GAFAmkC,GADA3L,EAAYhgC,KAAK6nB,OAAOrgB,IACSmkC,qBAE1B3L,EAAUyK,MAAMjD,MAASxnC,KAAKwnC,MAASK,EAM5C,IALA8D,EAAqBd,gBACrB7K,EAAUyK,MAAMjD,MAAO,EACvBuP,EAAa/W,EAAUyK,MAAMiB,MAAM7jB,OACnCZ,EAAO+Y,EAAUyK,MAAMiB,MAAMzO,QAExBjW,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB2kB,EAAqBf,SAAS5qC,KAAKg4C,YAAYjB,EAAW/vB,GAAI+wB,EAAQ0G,EAAUC,IAIpF1e,EAAUyK,MAAMiB,MAAQ1L,EAAU2L,oBACpC,CAGG3rC,KAAK+oC,kBAAkBnxC,SAC1BoI,KAAKwnC,MAAO,EAEhB,EAkDA,IAAI+c,YAAc,WAChB,IACIC,EAAY,CACdC,EAAG,EACHjuC,KAAM,EACNqR,OAAQ,GACRvX,KAAM,CACJuX,OAAQ,KAGR68B,EAAqB,GAEzBA,EAAqBA,EAAmB7xD,OAAO,CAAC,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,OAChP,IAAI8xD,EAAwB,OAQxBC,EAAqB,CAAC,WAAY,WAAY,WAAY,WAAY,YAiB1E,SAASC,EAAUC,EAAMC,GACvB,IAAInsD,EAAaklB,UAAU,QAE3BllB,EAAWQ,aAAa,eAAe,GACvCR,EAAWzH,MAAM6zD,WAAaD,EAC9B,IAAIzkD,EAAOwd,UAAU,QAErBxd,EAAKw5B,UAAY,iBAEjBlhC,EAAWzH,MAAMolB,SAAW,WAC5B3d,EAAWzH,MAAMoJ,KAAO,WACxB3B,EAAWzH,MAAMqJ,IAAM,WAEvB5B,EAAWzH,MAAM8zD,SAAW,QAE5BrsD,EAAWzH,MAAM+zD,YAAc,SAC/BtsD,EAAWzH,MAAMg0D,UAAY,SAC7BvsD,EAAWzH,MAAMi0D,WAAa,SAC9BxsD,EAAWzH,MAAMk0D,cAAgB,IACjCzsD,EAAWua,YAAY7S,GACvBvP,SAAS8C,KAAKsf,YAAYva,GAE1B,IAAIiF,EAAQyC,EAAKglD,YAEjB,OADAhlD,EAAKnP,MAAM6zD,WAtCb,SAAyBF,GACvB,IACIt9C,EADA+9C,EAAcT,EAAK73C,MAAM,KAEzB0L,EAAM4sC,EAAY3tD,OAClB4tD,EAAkB,GAEtB,IAAKh+C,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACD,eAAnB+9C,EAAY/9C,IAA0C,cAAnB+9C,EAAY/9C,IACjDg+C,EAAgBnmD,KAAKkmD,EAAY/9C,IAIrC,OAAOg+C,EAAgB7vC,KAAK,IAC9B,CAyB0B8vC,CAAgBX,GAAQ,KAAOC,EAChD,CACLzkD,KAAMA,EACNmkD,EAAG5mD,EACH6nD,OAAQ9sD,EAEZ,CA6CA,SAAS+sD,EAAa7F,EAAU8F,GAC9B,IACIC,EADAC,EAAS/0D,SAAS8C,MAAQ+xD,EAAM,MAAQ,SAExCG,EAAYlG,kBAAkBC,GAElC,GAAe,QAAXgG,EAAkB,CACpB,IAAIE,EAAUxgC,SAAS,QACvBwgC,EAAQ70D,MAAM8zD,SAAW,QAEzBe,EAAQ5sD,aAAa,cAAe0mD,EAASmG,SAC7CD,EAAQ5sD,aAAa,aAAc2sD,EAAU50D,OAC7C60D,EAAQ5sD,aAAa,cAAe2sD,EAAU7F,QAC9C8F,EAAQE,YAAc,IAElBpG,EAASqG,QACXH,EAAQ70D,MAAM6zD,WAAa,UAC3BgB,EAAQ5sD,aAAa,QAAS0mD,EAASqG,SAEvCH,EAAQ70D,MAAM6zD,WAAalF,EAASmG,QAGtCL,EAAIzyC,YAAY6yC,GAChBH,EAASG,CACX,KAAO,CACL,IAAII,EAAgB,IAAIC,gBAAgB,IAAK,KAAK95B,WAAW,MAC7D65B,EAActB,KAAOiB,EAAU50D,MAAQ,IAAM40D,EAAU7F,OAAS,UAAYJ,EAASmG,QACrFJ,EAASO,CACX,CAWA,MAAO,CACLE,YAVF,SAAiBptD,GACf,MAAe,QAAX4sD,GACFD,EAAOK,YAAchtD,EACd2sD,EAAOU,yBAGTV,EAAOS,YAAYptD,GAAM2E,KAClC,EAKF,CAwMA,SAAS2oD,EAAa91C,GACpB,IAAI+1C,EAAY,EACZpwC,EAAQ3F,EAAO+F,WAAW,GAE9B,GAAIJ,GAAS,OAAUA,GAAS,MAAQ,CACtC,IAAIC,EAAS5F,EAAO+F,WAAW,GAE3BH,GAAU,OAAUA,GAAU,QAChCmwC,EAA+B,MAAlBpwC,EAAQ,OAAkBC,EAAS,MAAS,MAE7D,CAEA,OAAOmwC,CACT,CAsBA,SAASC,EAAeh2C,GACtB,IAAI+1C,EAAYD,EAAa91C,GAE7B,OAAI+1C,GApXgC,QAoXgBA,GAnXhB,MAwXtC,CA2CA,IAAIE,EAAO,WACT3mD,KAAKs0B,MAAQ,GACbt0B,KAAKipB,MAAQ,KACbjpB,KAAK4mD,cAAgB,EACrB5mD,KAAK0xB,UAAW,EAChB1xB,KAAK6mD,SAAU,EACf7mD,KAAK04B,SAAWnmC,KAAKu0D,MACrB9mD,KAAK+mD,kBAAoB/mD,KAAKgnD,YAAY/uD,KAAK+H,MAC/CA,KAAKinD,uBAAyBjnD,KAAKknD,iBAAiBjvD,KAAK+H,KAC3D,EAEA2mD,EAAKQ,WAjFL,SAAoBC,EAAeC,GACjC,IAAIC,EAAMF,EAAc7gD,SAAS,IAAM8gD,EAAe9gD,SAAS,IAC/D,OAA4C,IAArCq+C,EAAmBrhD,QAAQ+jD,EACpC,EA+EAX,EAAKY,kBA7EL,SAA2BC,GACzB,OArWiC,OAqW1BA,CACT,EA4EAb,EAAKc,YApDL,SAAqB/2C,GACnB,OAAOg2C,EAAeh2C,EAAOje,OAAO,EAAG,KAAOi0D,EAAeh2C,EAAOje,OAAO,EAAG,GAChF,EAmDAk0D,EAAKD,eAAiBA,EACtBC,EAAKe,oBAlDL,SAA6BC,GAC3B,OAA+C,IAAxCjD,EAAmBnhD,QAAQokD,EACpC,EAiDAhB,EAAKiB,eA5CL,SAAwB1uD,EAAM0J,GAC5B,IAAI6jD,EAAYD,EAAattD,EAAKzG,OAAOmQ,EAAO,IAEhD,GAAI6jD,IAAc9B,EAChB,OAAO,EAGT,IAAIX,EAAQ,EAGZ,IAFAphD,GAAS,EAEFohD,EAAQ,GAAG,CAGhB,IAFAyC,EAAYD,EAAattD,EAAKzG,OAAOmQ,EAAO,KAvZzB,QAyZiB6jD,EAxZjB,OAyZjB,OAAO,EAGTzC,GAAS,EACTphD,GAAS,CACX,CAEA,OAla0B,SAkanB4jD,EAAattD,EAAKzG,OAAOmQ,EAAO,GACzC,EAuBA+jD,EAAKkB,oBA3EL,SAA6BL,GAC3B,OA7WqC,QA6W9BA,CACT,EA0EAb,EAAKhC,sBAAwBA,EAC7B,IAAImD,EAAgB,CAClBtzB,SArMF,SAAkBvL,GAChB,GAAKA,EAAL,CAQA,IAAIzhB,EAJCxH,KAAKipB,QACRjpB,KAAKipB,MAAQ,IAIf,IACIjC,EAEA+gC,EAHApvC,EAAMsQ,EAAMrxB,OAEZqvB,EAAOjnB,KAAKipB,MAAMrxB,OAGtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAI3B,IAHAwf,EAAI,EACJ+gC,GAAQ,EAED/gC,EAAIC,GACLjnB,KAAKipB,MAAMjC,GAAG71B,QAAU83B,EAAMzhB,GAAGrW,OAAS6O,KAAKipB,MAAMjC,GAAGi/B,UAAYh9B,EAAMzhB,GAAGy+C,SAAWjmD,KAAKipB,MAAMjC,GAAGghC,KAAO/+B,EAAMzhB,GAAGwgD,KACxHD,GAAQ,GAGV/gC,GAAK,EAGF+gC,IACH/nD,KAAKipB,MAAM5pB,KAAK4pB,EAAMzhB,IACtByf,GAAQ,EAEZ,CA5BA,CA6BF,EAsKEwN,SAjTF,SAAkBqrB,EAAUvsB,GAC1B,GAAKusB,EAAL,CAKA,GAAI9/C,KAAKipB,MAGP,OAFAjpB,KAAK0xB,UAAW,OAChB1xB,KAAKs0B,MAAQwrB,EAASmI,MAIxB,IAAKl3D,SAAS8C,KAOZ,OANAmM,KAAK0xB,UAAW,EAChBouB,EAASmI,KAAKjvD,SAAQ,SAAUsX,GAC9BA,EAAKu1C,OAASF,EAAar1C,GAC3BA,EAAK43C,MAAQ,CAAC,CAChB,SACAloD,KAAKs0B,MAAQwrB,EAASmI,MAIxB,IACIzgD,EADA2gD,EAAUrI,EAASmI,KAEnBtvC,EAAMwvC,EAAQvwD,OACdwwD,EAAgBzvC,EAEpB,IAAKnR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAC3B,IACI6gD,EACArhC,EAFAshC,GAAiB,EAOrB,GAJAH,EAAQ3gD,GAAG+gD,QAAS,EACpBJ,EAAQ3gD,GAAGghD,SAAW3D,EAAUsD,EAAQ3gD,GAAGy+C,QAAS,aACpDkC,EAAQ3gD,GAAGihD,SAAW5D,EAAUsD,EAAQ3gD,GAAGy+C,QAAS,cAE/CkC,EAAQ3gD,GAAGkhD,OAGT,GAA2B,MAAvBP,EAAQ3gD,GAAGmhD,SAAyC,IAAtBR,EAAQ3gD,GAAGskB,QAOlD,IANAu8B,EAAiBt3D,SAASkF,iBAAiB,kCAAoCkyD,EAAQ3gD,GAAGy+C,QAAU,qCAAuCkC,EAAQ3gD,GAAGy+C,QAAU,OAE7IruD,OAAS,IAC1B0wD,GAAiB,GAGfA,EAAgB,CAClB,IAAIxkC,EAAIhG,UAAU,SAClBgG,EAAE1qB,aAAa,YAAa+uD,EAAQ3gD,GAAGmhD,SACvC7kC,EAAE1qB,aAAa,WAAY+uD,EAAQ3gD,GAAGskB,QACtChI,EAAE1qB,aAAa,WAAY+uD,EAAQ3gD,GAAGy+C,SACtCniC,EAAE7T,KAAO,WACT6T,EAAEgW,UAAY,4BAA8BquB,EAAQ3gD,GAAGy+C,QAAU,mCAAqCkC,EAAQ3gD,GAAGkhD,MAAQ,OACzHn1B,EAAKpgB,YAAY2Q,EACnB,OACK,GAA2B,MAAvBqkC,EAAQ3gD,GAAGmhD,SAAyC,IAAtBR,EAAQ3gD,GAAGskB,OAAc,CAGhE,IAFAu8B,EAAiBt3D,SAASkF,iBAAiB,2CAEtC+wB,EAAI,EAAGA,EAAIqhC,EAAezwD,OAAQovB,GAAK,GACgB,IAAtDqhC,EAAerhC,GAAGmtB,KAAK5wC,QAAQ4kD,EAAQ3gD,GAAGkhD,SAE5CJ,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAIxY,EAAIhyB,UAAU,QAClBgyB,EAAE12C,aAAa,YAAa+uD,EAAQ3gD,GAAGmhD,SACvC7Y,EAAE12C,aAAa,WAAY+uD,EAAQ3gD,GAAGskB,QACtCgkB,EAAE7/B,KAAO,WACT6/B,EAAE8Y,IAAM,aACR9Y,EAAEqE,KAAOgU,EAAQ3gD,GAAGkhD,MACpB33D,SAAS8C,KAAKsf,YAAY28B,EAC5B,CACF,MAAO,GAA2B,MAAvBqY,EAAQ3gD,GAAGmhD,SAAyC,IAAtBR,EAAQ3gD,GAAGskB,OAAc,CAGhE,IAFAu8B,EAAiBt3D,SAASkF,iBAAiB,+CAEtC+wB,EAAI,EAAGA,EAAIqhC,EAAezwD,OAAQovB,GAAK,EACtCmhC,EAAQ3gD,GAAGkhD,QAAUL,EAAerhC,GAAG5T,MAEzCk1C,GAAiB,GAIrB,GAAIA,EAAgB,CAClB,IAAIO,EAAK/qC,UAAU,QACnB+qC,EAAGzvD,aAAa,YAAa+uD,EAAQ3gD,GAAGmhD,SACxCE,EAAGzvD,aAAa,WAAY+uD,EAAQ3gD,GAAGskB,QACvC+8B,EAAGzvD,aAAa,MAAO,cACvByvD,EAAGzvD,aAAa,OAAQ+uD,EAAQ3gD,GAAGkhD,OACnCn1B,EAAKpgB,YAAY01C,EACnB,CACF,OAvDEV,EAAQ3gD,GAAG+gD,QAAS,EACpBH,GAAiB,EAwDnBD,EAAQ3gD,GAAGq+C,OAASF,EAAawC,EAAQ3gD,GAAI+rB,GAC7C40B,EAAQ3gD,GAAG0gD,MAAQ,CAAC,EACpBloD,KAAKs0B,MAAMj1B,KAAK8oD,EAAQ3gD,GAC1B,CAEsB,IAAlB4gD,EACFpoD,KAAK0xB,UAAW,EAIhB19B,WAAWgM,KAAKknD,iBAAiBjvD,KAAK+H,MAAO,IAnG/C,MAFEA,KAAK0xB,UAAW,CAuGpB,EAyMEo3B,YArKF,SAAqBC,EAAO53D,EAAO2zD,GAIjC,IAHA,IAAIt9C,EAAI,EACJmR,EAAM3Y,KAAKipB,MAAMrxB,OAEd4P,EAAImR,GAAK,CACd,GAAI3Y,KAAKipB,MAAMzhB,GAAGwgD,KAAOe,GAAS/oD,KAAKipB,MAAMzhB,GAAGrW,QAAUA,GAAS6O,KAAKipB,MAAMzhB,GAAGy+C,UAAYnB,EAC3F,OAAO9kD,KAAKipB,MAAMzhB,GAGpBA,GAAK,CACP,CAQA,OANsB,iBAAVuhD,GAA8C,KAAxBA,EAAMtyC,WAAW,KAAcsyC,IAAUC,SAAWA,QAAQC,OAC1FjpD,KAAK6mD,UACP7mD,KAAK6mD,SAAU,EACfmC,QAAQC,KAAK,oDAAqDF,EAAO53D,EAAO2zD,IAG3EN,CACT,EAmJE0E,cA5HF,SAAuBl/C,GAIrB,IAHA,IAAIxC,EAAI,EACJmR,EAAM3Y,KAAKs0B,MAAM18B,OAEd4P,EAAImR,GAAK,CACd,GAAI3Y,KAAKs0B,MAAM9sB,GAAG2hD,QAAUn/C,EAC1B,OAAOhK,KAAKs0B,MAAM9sB,GAGpBA,GAAK,CACP,CAEA,OAAOxH,KAAKs0B,MAAM,EACpB,EAgHEgyB,YAlJF,SAAqB8C,EAAQC,EAAU7yC,GACrC,IAAIspC,EAAW9/C,KAAKkpD,cAAcG,GAG9BzmD,EAAQwmD,EAEZ,IAAKtJ,EAASoI,MAAMtlD,GAAQ,CAC1B,IAAIojD,EAAUlG,EAAS+F,OAEvB,GAAe,MAAXuD,EAAgB,CAClB,IAAIE,EAAatD,EAAQM,YAAY,IAAM8C,EAAS,KAChDG,EAAavD,EAAQM,YAAY,MACrCxG,EAASoI,MAAMtlD,IAAU0mD,EAAaC,GAAc,GACtD,MACEzJ,EAASoI,MAAMtlD,GAASojD,EAAQM,YAAY8C,GAAU,GAE1D,CAEA,OAAOtJ,EAASoI,MAAMtlD,GAAS4T,CACjC,EAgIE0wC,iBA3YF,WACE,IAAI1/C,EAEAlH,EACAmkD,EAFA9rC,EAAM3Y,KAAKs0B,MAAM18B,OAGjB4xD,EAAc7wC,EAElB,IAAKnR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBxH,KAAKs0B,MAAM9sB,GAAG+gD,OAChBiB,GAAe,EACoB,MAA1BxpD,KAAKs0B,MAAM9sB,GAAGmhD,SAA4C,IAAzB3oD,KAAKs0B,MAAM9sB,GAAGskB,OACxD9rB,KAAKs0B,MAAM9sB,GAAG+gD,QAAS,GAEvBjoD,EAAON,KAAKs0B,MAAM9sB,GAAGghD,SAASloD,KAC9BmkD,EAAIzkD,KAAKs0B,MAAM9sB,GAAGghD,SAAS/D,EAEvBnkD,EAAKglD,cAAgBb,GACvB+E,GAAe,EACfxpD,KAAKs0B,MAAM9sB,GAAG+gD,QAAS,IAEvBjoD,EAAON,KAAKs0B,MAAM9sB,GAAGihD,SAASnoD,KAC9BmkD,EAAIzkD,KAAKs0B,MAAM9sB,GAAGihD,SAAShE,EAEvBnkD,EAAKglD,cAAgBb,IACvB+E,GAAe,EACfxpD,KAAKs0B,MAAM9sB,GAAG+gD,QAAS,IAIvBvoD,KAAKs0B,MAAM9sB,GAAG+gD,SAChBvoD,KAAKs0B,MAAM9sB,GAAGihD,SAAS/C,OAAO9sD,WAAW6wD,YAAYzpD,KAAKs0B,MAAM9sB,GAAGihD,SAAS/C,QAC5E1lD,KAAKs0B,MAAM9sB,GAAGghD,SAAS9C,OAAO9sD,WAAW6wD,YAAYzpD,KAAKs0B,MAAM9sB,GAAGghD,SAAS9C,UAK9D,IAAhB8D,GAAqBj3D,KAAKu0D,MAAQ9mD,KAAK04B,SAxGxB,IAyGjB1kC,WAAWgM,KAAKinD,uBAAwB,IAExCjzD,WAAWgM,KAAK+mD,kBAAmB,GAEvC,EAmWEC,YA9BF,WACEhnD,KAAK0xB,UAAW,CAClB,GA+BA,OADAi1B,EAAKvlD,UAAY0mD,EACVnB,CACT,CArdkB,GAudlB,SAAS+C,YAAY5gC,GACnB9oB,KAAK8oB,cAAgBA,CACvB,CAUA,SAAS6gC,YAAY7gC,GACnB,OAAO,IAAI4gC,YAAY5gC,EACzB,CAEA,SAAS8gC,oBAAqB,CAZ9BF,YAAYtoD,UAAUunC,QAAU,SAAUr4B,GACxC,OAAItQ,KAAK8oB,cAAc+gC,OAAS7pD,KAAK8oB,cAAc+gC,MAAMv5C,EAAKs4B,KACrD7hC,OAAO+iD,OAAOx5C,EAAMtQ,KAAK8oB,cAAc+gC,MAAMv5C,EAAKs4B,KAAK3kB,GAGzD3T,CACT,EAQAs5C,kBAAkBxoD,UAAY,CAC5B2oD,eAAgB,WAEd/pD,KAAKgqD,WAAY,EAEjBhqD,KAAKiqD,QAAS,EAEdjqD,KAAKkqD,eAAgB,EAErBlqD,KAAKmqD,qBAAuB,EAC9B,EACAC,uBAAwB,SAAgCC,IACA,IAAlDrqD,KAAKmqD,qBAAqB5mD,QAAQ8mD,IACpCrqD,KAAKmqD,qBAAqB9qD,KAAKgrD,EAEnC,EACAC,0BAA2B,SAAmCD,IACN,IAAlDrqD,KAAKmqD,qBAAqB5mD,QAAQ8mD,IACpCrqD,KAAKmqD,qBAAqBz6B,OAAO1vB,KAAKmqD,qBAAqB5mD,QAAQ8mD,GAAY,EAEnF,EACAE,uBAAwB,SAAgCC,GACtDxqD,KAAKyqD,iBAAiBD,EACxB,EACAE,kBAAmB,WACb1qD,KAAK2qD,eAAeC,MAAMxiC,EAAErE,GAAK,GAC9B/jB,KAAKkqD,eAAiBlqD,KAAKszB,WAAWu3B,aAAaC,oBACtD9qD,KAAKkqD,eAAgB,EACrBlqD,KAAKo4B,QAEEp4B,KAAKkqD,gBACdlqD,KAAKkqD,eAAgB,EACrBlqD,KAAKq4B,OAET,EAUAoyB,iBAAkB,SAA0BD,GACtCxqD,KAAKsQ,KAAK6Y,GAAKnpB,KAAKsQ,KAAK+Y,IAAMmhC,GAAOxqD,KAAKsQ,KAAK8Y,GAAKppB,KAAKsQ,KAAK+Y,GAAKmhC,GAC/C,IAAnBxqD,KAAKgqD,YACPhqD,KAAKszB,WAAWkU,MAAO,EACvBxnC,KAAKwnC,MAAO,EACZxnC,KAAKgqD,WAAY,EACjBhqD,KAAKq4B,SAEqB,IAAnBr4B,KAAKgqD,YACdhqD,KAAKszB,WAAWkU,MAAO,EACvBxnC,KAAKgqD,WAAY,EACjBhqD,KAAKo4B,OAET,EACA2yB,iBAAkB,WAChB,IAAIvjD,EACAmR,EAAM3Y,KAAKmqD,qBAAqBvyD,OAEpC,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKmqD,qBAAqB3iD,GAAGyuB,YAAYj2B,KAAK6nC,cAKlD,EACAmjB,iBAAkB,WAChB,MAAO,CACLxwD,IAAK,EACLD,KAAM,EACNsD,MAAO,IACPhM,OAAQ,IAEZ,EACAo5D,aAAc,WACZ,OAAqB,IAAjBjrD,KAAKsQ,KAAKmX,GACL,CACLg9B,EAAGzkD,KAAKsQ,KAAK46C,SAASrtD,MACtBgmB,EAAG7jB,KAAKsQ,KAAK46C,SAASr5D,QAInB,CACL4yD,EAAGzkD,KAAKsQ,KAAKzS,MACbgmB,EAAG7jB,KAAKsQ,KAAKze,OAEjB,GAGF,IAAIs5D,cACEC,eAAiB,CACnB,EAAG,cACH,EAAG,WACH,EAAG,SACH,EAAG,UACH,EAAG,SACH,EAAG,UACH,EAAG,cACH,EAAG,aACH,EAAG,aACH,EAAG,aACH,GAAI,aACJ,GAAI,YACJ,GAAI,MACJ,GAAI,aACJ,GAAI,QACJ,GAAI,cAEC,SAAUr1C,GACf,OAAOq1C,eAAer1C,IAAS,EACjC,GApBIq1C,eAuBN,SAASC,aAAa/6C,EAAM6oB,EAAM5nC,GAChCyO,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAKyT,EAAG,EAAG,EAAGxyB,EACvD,CAEA,SAAS+5D,YAAYh7C,EAAM6oB,EAAM5nC,GAC/ByO,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAKyT,EAAG,EAAG,EAAGxyB,EACvD,CAEA,SAASg6D,YAAYj7C,EAAM6oB,EAAM5nC,GAC/ByO,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAKyT,EAAG,EAAG,EAAGxyB,EACvD,CAEA,SAASi6D,YAAYl7C,EAAM6oB,EAAM5nC,GAC/ByO,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAKyT,EAAG,EAAG,EAAGxyB,EACvD,CAEA,SAASk6D,iBAAiBn7C,EAAM6oB,EAAM5nC,GACpCyO,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAKyT,EAAG,EAAG,EAAGxyB,EACvD,CAEA,SAASm6D,gBAAgBp7C,EAAM6oB,EAAM5nC,GACnCyO,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAKyT,EAAG,EAAG,EAAGxyB,EACvD,CAEA,SAASo6D,eAAer7C,EAAM6oB,EAAM5nC,GAClCyO,KAAKikB,EAAIykB,gBAAgBC,QAAQxP,EAAM7oB,EAAKyT,EAAG,EAAG,EAAGxyB,EACvD,CAEA,SAASq6D,gBACP5rD,KAAKikB,EAAI,CAAC,CACZ,CAEA,SAAS4nC,eAAev7C,EAAM4R,GAC5B,IAEI1a,EAFAskD,EAAUx7C,EAAKy7C,IAAM,GACzB/rD,KAAKgsD,eAAiB,GAEtB,IACIC,EADAtzC,EAAMmzC,EAAQl0D,OAGlB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBykD,EAAa,IAAIC,YAAYJ,EAAQtkD,GAAI0a,GACzCliB,KAAKgsD,eAAe3sD,KAAK4sD,EAE7B,CAEA,SAASC,YAAY57C,EAAM4R,GACzBliB,KAAKw3B,KAAKlnB,EAAM4R,EAClB,CA+DA,SAASiqC,cAAe,CAkFxB,SAASC,eAAgB,CAiDzB,SAASC,eAAe/7C,EAAMgjB,EAAYxL,GACxC9nB,KAAKuiC,YACLviC,KAAK+pD,iBACL/pD,KAAKktB,UAAYoG,EAAW6E,aAAa7nB,EAAKqX,OAC9C3nB,KAAKguB,YAAcsF,EAAWg5B,YAAY19B,SAAS5uB,KAAKktB,WACxDltB,KAAKusD,aAAaj8C,EAAMgjB,EAAYxL,EACtC,CA6BA,SAAS0kC,aAAal8C,EAAMgjB,EAAYxL,GACtC9nB,KAAKuiC,YACLviC,KAAK+pD,iBACL/pD,KAAKktB,UAAYoG,EAAW6E,aAAa7nB,EAAKqX,OAC9C3nB,KAAKusD,aAAaj8C,EAAMgjB,EAAYxL,GACpC9nB,KAAKysD,YAAa,EAClBzsD,KAAK0sD,UAAW,EAChB,IAAIttC,EAAYpf,KAAKszB,WAAWrG,cAAcjtB,KAAKktB,WACnDltB,KAAK+e,MAAQ/e,KAAKszB,WAAWX,gBAAgBxT,YAAYC,GACzDpf,KAAK2sD,aAAe,EACpB3sD,KAAKszB,WAAWX,gBAAgB7T,SAAS9e,MACzCA,KAAK4sD,kBAAoB,EACzB5sD,KAAK4e,QAAU,EACf5e,KAAK6sD,gBAAkB,KACvB7sD,KAAKswB,GAAKhgB,EAAKggB,GAAKoY,gBAAgBC,QAAQ3oC,KAAMsQ,EAAKggB,GAAI,EAAGgD,EAAW1B,UAAW5xB,MAAQ,CAC1F8sD,cAAc,GAEhB9sD,KAAK+sD,GAAKrkB,gBAAgBC,QAAQ3oC,KAAMsQ,EAAK08C,IAAM18C,EAAK08C,GAAGD,GAAKz8C,EAAK08C,GAAGD,GAAK,CAC3Er0C,EAAG,CAAC,MACH,EAAG,IAAM1Y,KACd,CA0EA,SAASitD,eAAgB,CAjUzBlvC,gBAAgB,CAAC+qB,0BAA2BojB,aAC5CA,YAAY9qD,UAAUinC,SAAW6jB,YAAY9qD,UAAU6nC,yBAEvDijB,YAAY9qD,UAAUo2B,KAAO,SAAUlnB,EAAM4R,GAI3C,IAAI1a,EAHJxH,KAAKsQ,KAAOA,EACZtQ,KAAKgsD,eAAiB,GACtBhsD,KAAKkpC,6BAA6BhnB,GAElC,IACIgrC,EADAv0C,EAAM3Y,KAAKsQ,KAAKy7C,GAAGn0D,OAEnBk0D,EAAU9rD,KAAKsQ,KAAKy7C,GAExB,IAAKvkD,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAG3B,OAFA0lD,EAAM,KAEEpB,EAAQtkD,GAAGigB,IACjB,KAAK,EACHylC,EAAM,IAAI7B,aAAaS,EAAQtkD,GAAI0a,EAASliB,MAC5C,MAEF,KAAK,EACHktD,EAAM,IAAI5B,YAAYQ,EAAQtkD,GAAI0a,EAASliB,MAC3C,MAEF,KAAK,EACHktD,EAAM,IAAI3B,YAAYO,EAAQtkD,GAAI0a,EAASliB,MAC3C,MAEF,KAAK,EACHktD,EAAM,IAAI1B,YAAYM,EAAQtkD,GAAI0a,EAASliB,MAC3C,MAEF,KAAK,EACL,KAAK,EACHktD,EAAM,IAAIvB,eAAeG,EAAQtkD,GAAI0a,EAASliB,MAC9C,MAEF,KAAK,GACHktD,EAAM,IAAIzB,iBAAiBK,EAAQtkD,GAAI0a,EAASliB,MAChD,MAEF,KAAK,GACHktD,EAAM,IAAIxB,gBAAgBI,EAAQtkD,GAAI0a,EAASliB,MAC/C,MAEF,KAAK,EACHktD,EAAM,IAAIrB,eAAeC,EAAQtkD,GAAI0a,EAASliB,MAC9C,MAGF,QACEktD,EAAM,IAAItB,cAAcE,EAAQtkD,GAAI0a,EAASliB,MAI7CktD,GACFltD,KAAKgsD,eAAe3sD,KAAK6tD,EAE7B,CACF,EAIAf,YAAY/qD,UAAY,CACtB+rD,WAAY,WACV,IAAKntD,KAAKsQ,KAAK8W,QACb,OAAO,EAMT,IAHA,IAAI5f,EAAI,EACJmR,EAAM3Y,KAAKsQ,KAAKgX,gBAAgB1vB,OAE7B4P,EAAImR,GAAK,CACd,GAA0C,MAAtC3Y,KAAKsQ,KAAKgX,gBAAgB9f,GAAGuO,OAAoD,IAApC/V,KAAKsQ,KAAKgX,gBAAgB9f,GAAGwiB,GAC5E,OAAO,EAGTxiB,GAAK,CACP,CAEA,OAAO,CACT,EACAktB,gBAAiB,WACf,IAAI/T,EAAwBwE,0BAE5B,GAAKxE,EAAL,CAIA,IAAIysC,EAA2BzsC,EAAsB,SACjD0sC,EAA6B1sC,EAAsB,WACnD2sC,EAA2B3sC,EAAsB,SACjD4sC,EAA0B5sC,EAAsB,QAChD6sC,EAA0B7sC,EAAsB,QACpD3gB,KAAKytD,eAAiBL,EAAyBptD,MAE3CA,KAAKsQ,KAAK8W,SAAWpnB,KAAK0tD,aAC5B1tD,KAAKytD,eAAeE,sBAAsB3tD,KAAK0tD,aAGjD,IAAIE,EAAmBP,EAA2BQ,uBAAuB7tD,KAAMA,KAAKytD,gBACpFztD,KAAKytD,eAAeK,yBAAyBF,GAExB,IAAjB5tD,KAAKsQ,KAAKmX,IAAYznB,KAAKsQ,KAAK2gB,GAClCjxB,KAAKmxB,cAAgBq8B,EAAwBxtD,MACnB,IAAjBA,KAAKsQ,KAAKmX,IACnBznB,KAAKytD,eAAeM,eAAiBT,EAAyBttD,KAAKguD,WAAYhuD,KAAKiuD,UAAWjuD,KAAKytD,gBACpGztD,KAAKytD,eAAen7C,QAAUtS,KAAKytD,eAAeM,gBACxB,IAAjB/tD,KAAKsQ,KAAKmX,KACnBznB,KAAKytD,eAAeS,cAAgBX,EAAwBvtD,MAC5DA,KAAKytD,eAAev0D,KAAO8G,KAAKytD,eAAeS,cAvBjD,CAyBF,EACAC,aAAc,WACZ,IAAIC,EAAiBjD,aAAanrD,KAAKsQ,KAAK+9C,KACjCruD,KAAKsuD,aAAetuD,KAAKuuD,cAC/Bp9D,MAAM,kBAAoBi9D,CACjC,EACA7B,aAAc,SAAsBj8C,EAAMgjB,EAAYxL,GACpD9nB,KAAKszB,WAAaA,EAClBtzB,KAAK8nB,KAAOA,EACZ9nB,KAAKsQ,KAAOA,EACZtQ,KAAKwuD,QAAU9qC,kBAEV1jB,KAAKsQ,KAAKgZ,KACbtpB,KAAKsQ,KAAKgZ,GAAK,GAIjBtpB,KAAKyuD,eAAiB,IAAI5C,eAAe7rD,KAAKsQ,KAAMtQ,KAAMA,KAAK+oC,kBACjE,EACA2lB,QAAS,WACP,OAAO1uD,KAAKiQ,IACd,EACA+6C,iBAAkB,WAA6B,GAWjDoB,aAAahrD,UAAY,CAMvBmhC,UAAW,WAETviC,KAAK6nC,eAAgB,EAErB7nC,KAAK+oC,kBAAoB,GAEzB/oC,KAAKwnC,MAAO,CACd,EAYAmnB,kBAAmB,SAA2BnE,EAAKoE,GACjD,IAAIpnD,EACAmR,EAAM3Y,KAAK+oC,kBAAkBnxC,OAEjC,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,GACpBonD,GAAa5uD,KAAK6uD,WAAoD,cAAvC7uD,KAAK+oC,kBAAkBvhC,GAAGs7B,YAC3D9iC,KAAK+oC,kBAAkBvhC,GAAG6gC,WAEtBroC,KAAK+oC,kBAAkBvhC,GAAGggC,OAC5BxnC,KAAKszB,WAAWkU,MAAO,EACvBxnC,KAAKwnC,MAAO,GAIpB,EACAU,mBAAoB,SAA4B7pB,IACA,IAA1Cre,KAAK+oC,kBAAkBxlC,QAAQ8a,IACjCre,KAAK+oC,kBAAkB1pC,KAAKgf,EAEhC,GAWFguC,eAAejrD,UAAU4vB,aAAe,WAAa,EAErDjT,gBAAgB,CAAC6rC,kBAAmBuC,YAAaC,cAAeC,gBAEhEA,eAAejrD,UAAU0tD,eAAiB,WACxC,OAAO,IACT,EAEAzC,eAAejrD,UAAU60B,YAAc,WAAa,EAEpDo2B,eAAejrD,UAAUutB,QAAU,WAAa,EAEhD09B,eAAejrD,UAAUszB,gBAAkB,WACzC,IAAI/T,EAAwBwE,0BAE5B,GAAKxE,EAAL,CAIA,IAAIouC,EAAmBpuC,EAAsB,WAC7C3gB,KAAKytD,eAAiBsB,EAAiB/uD,KAHvC,CAIF,EAEAqsD,eAAejrD,UAAU4tD,eAAiB,WACxC,OAAOhvD,KAAKguB,WACd,EAwBAw+B,aAAaprD,UAAU4vB,aAAe,SAAUw5B,GAI9C,GAHAxqD,KAAKuqD,uBAAuBC,GAAK,GACjCxqD,KAAK2uD,kBAAkBnE,GAAK,GAEvBxqD,KAAKswB,GAAGw8B,aAIX9sD,KAAK2sD,aAAenC,EAAMxqD,KAAKsQ,KAAKgZ,OAJX,CACzB,IAAI2lC,EAAejvD,KAAKswB,GAAGvM,EAC3B/jB,KAAK2sD,aAAesC,CACtB,CAIAjvD,KAAK4e,QAAU5e,KAAK+sD,GAAGhpC,EAAE,GACzB,IAAImrC,EAAclvD,KAAK4e,QAAU5e,KAAK4sD,kBAElC5sD,KAAK6sD,kBAAoBqC,IAC3BlvD,KAAK6sD,gBAAkBqC,EACvBlvD,KAAK+e,MAAMgB,OAAOmvC,GAEtB,EAEAnxC,gBAAgB,CAAC6rC,kBAAmBuC,YAAaC,cAAeI,cAEhEA,aAAaprD,UAAU60B,YAAc,WAC/Bj2B,KAAKgqD,WAAahqD,KAAK0sD,WACpB1sD,KAAKysD,aAIEzsD,KAAK+e,MAAMS,WAAapjB,KAAKC,IAAI2D,KAAK2sD,aAAe3sD,KAAKszB,WAAW1B,UAAY5xB,KAAK+e,MAAMQ,QAAU,KAChHvf,KAAK+e,MAAMQ,KAAKvf,KAAK2sD,aAAe3sD,KAAKszB,WAAW1B,YAJpD5xB,KAAK+e,MAAMxqB,OACXyL,KAAK+e,MAAMQ,KAAKvf,KAAK2sD,aAAe3sD,KAAKszB,WAAW1B,WACpD5xB,KAAKysD,YAAa,GAKxB,EAEAD,aAAaprD,UAAUi3B,KAAO,WAC9B,EAEAm0B,aAAaprD,UAAUg3B,KAAO,WAC5Bp4B,KAAK+e,MAAM1qB,QACX2L,KAAKysD,YAAa,CACpB,EAEAD,aAAaprD,UAAU/M,MAAQ,WAC7B2L,KAAK+e,MAAM1qB,QACX2L,KAAKysD,YAAa,EAClBzsD,KAAK0sD,UAAW,CAClB,EAEAF,aAAaprD,UAAU4d,OAAS,WAC9Bhf,KAAK0sD,UAAW,CAClB,EAEAF,aAAaprD,UAAU6d,QAAU,SAAUC,GACzClf,KAAK+e,MAAMU,KAAKP,EAClB,EAEAstC,aAAaprD,UAAU2e,OAAS,SAAUovC,GACxCnvD,KAAK4sD,kBAAoBuC,EACzBnvD,KAAK6sD,gBAAkBsC,EAAcnvD,KAAK4e,QAC1C5e,KAAK+e,MAAMgB,OAAO/f,KAAK6sD,gBACzB,EAEAL,aAAaprD,UAAU0tD,eAAiB,WACtC,OAAO,IACT,EAEAtC,aAAaprD,UAAUutB,QAAU,WAAa,EAE9C69B,aAAaprD,UAAU4pD,iBAAmB,WAAa,EAEvDwB,aAAaprD,UAAUszB,gBAAkB,WAAa,EAItDu4B,aAAa7rD,UAAUguD,YAAc,SAAU5E,GAC7C,IAAIhjD,EAEA8I,EADAqI,EAAM3Y,KAAK6mB,OAAOjvB,OAItB,IAFAoI,KAAK4mB,gBAAiB,EAEjBpf,EAAImR,EAAM,EAAGnR,GAAK,EAAGA,GAAK,EACxBxH,KAAKohD,SAAS55C,KACjB8I,EAAOtQ,KAAK6mB,OAAOrf,IAEV2hB,GAAK7Y,EAAK+Y,IAAMmhC,EAAMxqD,KAAK6mB,OAAOrf,GAAG6hB,IAAM/Y,EAAK8Y,GAAK9Y,EAAK+Y,GAAKmhC,EAAMxqD,KAAK6mB,OAAOrf,GAAG6hB,IAC3FrpB,KAAKqvD,UAAU7nD,GAInBxH,KAAK4mB,iBAAiB5mB,KAAKohD,SAAS55C,IAAKxH,KAAK4mB,eAGhD5mB,KAAKsvD,sBACP,EAEArC,aAAa7rD,UAAUmuD,WAAa,SAAUC,GAC5C,OAAQA,EAAM/nC,IACZ,KAAK,EACH,OAAOznB,KAAKyvD,YAAYD,GAE1B,KAAK,EACH,OAAOxvD,KAAK0vD,WAAWF,GAEzB,KAAK,EACH,OAAOxvD,KAAK2vD,YAAYH,GAE1B,KAAK,EAkBL,QACE,OAAOxvD,KAAK4vD,WAAWJ,GAhBzB,KAAK,EACH,OAAOxvD,KAAK6vD,YAAYL,GAE1B,KAAK,EACH,OAAOxvD,KAAK8vD,WAAWN,GAEzB,KAAK,EACH,OAAOxvD,KAAKmf,YAAYqwC,GAE1B,KAAK,GACH,OAAOxvD,KAAK+vD,aAAaP,GAE3B,KAAK,GACH,OAAOxvD,KAAKgwD,cAAcR,GAKhC,EAEAvC,aAAa7rD,UAAU2uD,aAAe,WACpC,MAAM,IAAI//B,MAAM,mDAClB,EAEAi9B,aAAa7rD,UAAU+d,YAAc,SAAU7O,GAC7C,OAAO,IAAIk8C,aAAal8C,EAAMtQ,KAAKszB,WAAYtzB,KACjD,EAEAitD,aAAa7rD,UAAU4uD,cAAgB,SAAU1/C,GAC/C,OAAO,IAAI+7C,eAAe/7C,EAAMtQ,KAAKszB,WAAYtzB,KACnD,EAEAitD,aAAa7rD,UAAU6uD,cAAgB,WACrC,IAAIzoD,EACAmR,EAAM3Y,KAAK6mB,OAAOjvB,OAEtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKqvD,UAAU7nD,GAGjBxH,KAAKsvD,sBACP,EAEArC,aAAa7rD,UAAUgzB,cAAgB,SAAUC,GAE/C,IAAI7sB,EADJxH,KAAK4mB,gBAAiB,EAEtB,IACII,EADArO,EAAM0b,EAAUz8B,OAEhBqvB,EAAOjnB,KAAK6mB,OAAOjvB,OAEvB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAGxB,IAFAwf,EAAI,EAEGA,EAAIC,GAAM,CACf,GAAIjnB,KAAK6mB,OAAOG,GAAGr0B,KAAO0hC,EAAU7sB,GAAG7U,GAAI,CACzCqN,KAAK6mB,OAAOG,GAAKqN,EAAU7sB,GAC3B,KACF,CAEAwf,GAAK,CACP,CAEJ,EAEAimC,aAAa7rD,UAAUoyB,oBAAsB,SAAU08B,GACrDlwD,KAAKszB,WAAWb,iBAAmBy9B,CACrC,EAEAjD,aAAa7rD,UAAUs0B,UAAY,WAC5B11B,KAAKszB,WAAW68B,iBACnBnwD,KAAKiwD,eAET,EAEAhD,aAAa7rD,UAAUgvD,sBAAwB,SAAUluC,EAASmuC,EAAYC,GAM5E,IALA,IAAIlP,EAAWphD,KAAKohD,SAChBv6B,EAAS7mB,KAAK6mB,OACdrf,EAAI,EACJmR,EAAMkO,EAAOjvB,OAEV4P,EAAImR,GACLkO,EAAOrf,GAAGq8B,KAAOwsB,IAEdjP,EAAS55C,KAAsB,IAAhB45C,EAAS55C,IAI3B8oD,EAAUjxD,KAAK+hD,EAAS55C,IACxB45C,EAAS55C,GAAG+oD,mBAEanwD,IAArBymB,EAAOrf,GAAGk+C,OACZ1lD,KAAKowD,sBAAsBluC,EAAS2E,EAAOrf,GAAGk+C,OAAQ4K,GAEtDpuC,EAAQsuC,aAAaF,KATvBtwD,KAAKqvD,UAAU7nD,GACfxH,KAAKywD,kBAAkBvuC,KAa3B1a,GAAK,CAET,EAEAylD,aAAa7rD,UAAUqvD,kBAAoB,SAAUvuC,GACnDliB,KAAK0wD,gBAAgBrxD,KAAK6iB,EAC5B,EAEA+qC,aAAa7rD,UAAUi0B,wBAA0B,SAAUtM,GACzD,IAAIvhB,EACAmR,EAAMoQ,EAAOnxB,OAEjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,GAAIuhB,EAAOvhB,GAAGypB,GAAI,CAChB,IAAInJ,EAAO9nB,KAAK0vD,WAAW3mC,EAAOvhB,IAClCsgB,EAAK4M,kBACL10B,KAAKszB,WAAWb,iBAAiB7B,oBAAoB9I,EACvD,CAEJ,EAEAmlC,aAAa7rD,UAAUpQ,eAAiB,SAAU6yC,GAChD,IAAIr8B,EACAmR,EAAM3Y,KAAKohD,SAASxpD,OAExB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,GAAIxH,KAAKohD,SAAS55C,GAAG8I,KAAKuzB,MAAQA,EAChC,OAAO7jC,KAAKohD,SAAS55C,GAIzB,OAAO,IACT,EAEAylD,aAAa7rD,UAAUm3B,iBAAmB,SAAUphC,GAClD,IACI+qB,EADAyuC,EAAYx5D,EAAK09B,QAGrB,GAAyB,iBAAd87B,EACTzuC,EAAUliB,KAAKohD,SAASuP,OACnB,CACL,IAAInpD,EACAmR,EAAM3Y,KAAKohD,SAASxpD,OAExB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,GAAIxH,KAAKohD,SAAS55C,GAAG8I,KAAKygB,KAAO4/B,EAAW,CAC1CzuC,EAAUliB,KAAKohD,SAAS55C,GACxB,KACF,CAEJ,CAEA,OAAoB,IAAhBrQ,EAAKS,OACAsqB,EAGFA,EAAQqW,iBAAiBphC,EAClC,EAEA81D,aAAa7rD,UAAUwvD,gBAAkB,SAAUz7B,EAAU07B,GAC3D7wD,KAAKszB,WAAWiB,YAAc,IAAIgwB,YAClCvkD,KAAKszB,WAAWuV,YAAc8gB,YAAYx0B,GAC1Cn1B,KAAKszB,WAAWiB,YAAYC,SAASW,EAASlM,OAC9CjpB,KAAKszB,WAAWiB,YAAYE,SAASU,EAASb,MAAOu8B,GACrD7wD,KAAKszB,WAAW6E,aAAen4B,KAAK8wD,cAAc34B,aAAalgC,KAAK+H,KAAK8wD,eACzE9wD,KAAKszB,WAAWrG,cAAgBjtB,KAAK8wD,cAAc7jC,cAAch1B,KAAK+H,KAAK8wD,eAC3E9wD,KAAKszB,WAAWg5B,YAActsD,KAAK8wD,cAAcp+B,eACjD1yB,KAAKszB,WAAWX,gBAAkB3yB,KAAK8wD,cAAcn+B,gBACrD3yB,KAAKszB,WAAWoU,QAAU,EAC1B1nC,KAAKszB,WAAW1B,UAAYuD,EAASC,GACrCp1B,KAAKszB,WAAWvC,GAAKoE,EAASpE,GAC9B/wB,KAAKszB,WAAWy9B,SAAW,CACzBtM,EAAGtvB,EAASsvB,EACZ5gC,EAAGsR,EAAStR,EAEhB,EAEA,IAAImtC,YAAc,CAChBC,iBAAkB,mBAGpB,SAASC,mBAAoB,CA6J7B,SAASC,YAAY7gD,EAAM4R,EAASoR,GAClCtzB,KAAKsQ,KAAOA,EACZtQ,KAAKkiB,QAAUA,EACfliB,KAAKszB,WAAaA,EAClBtzB,KAAKq/B,WAAa,GAClBr/B,KAAKsnB,gBAAkBtnB,KAAKsQ,KAAKgX,iBAAmB,GACpDtnB,KAAKoxD,YAAc,KACnB,IACI5pD,EAIArQ,EALAo8B,EAAOvzB,KAAKszB,WAAWC,KAEvB5a,EAAM3Y,KAAKsnB,gBAAkBtnB,KAAKsnB,gBAAgB1vB,OAAS,EAC/DoI,KAAKqxD,SAAW/wC,iBAAiB3H,GACjC3Y,KAAKsxD,UAAY,GAEjB,IAGItqC,EACAC,EAEAsqC,EACAC,EACAC,EACA9xD,EATAuc,EAAalc,KAAKsnB,gBAClB08B,EAAQ,EACR0N,EAAe,GAGflD,EAAU9qC,kBAKViuC,EAAW,WACXC,EAAU,YAEd,IAAKpqD,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAkBxB,IAjB2B,MAAvB0U,EAAW1U,GAAGuO,MAAuC,MAAvBmG,EAAW1U,GAAGuO,MAAgBmG,EAAW1U,GAAGm5C,KAA6B,MAAtBzkC,EAAW1U,GAAG4gB,EAAE1P,GAAawD,EAAW1U,GAAG4gB,EAAEzoB,KAChIgyD,EAAW,OACXC,EAAU,QAGgB,MAAvB11C,EAAW1U,GAAGuO,MAAuC,MAAvBmG,EAAW1U,GAAGuO,MAA2B,IAAViuC,EAOhEuN,EAAO,OANPA,EAAO/rC,SAAS,SACXpsB,aAAa,OAAQ,WAC1Bm4D,EAAKn4D,aAAa,QAAS4G,KAAKkiB,QAAQ4F,KAAKxX,KAAKm0C,GAAK,GACvD8M,EAAKn4D,aAAa,SAAU4G,KAAKkiB,QAAQ4F,KAAKxX,KAAKuT,GAAK,GACxD6tC,EAAaryD,KAAKkyD,IAKpBp6D,EAAOquB,SAAS,QAEW,MAAvBtJ,EAAW1U,GAAGuO,KAEhB/V,KAAKqxD,SAAS7pD,GAAK,CACjB4hB,GAAIsf,gBAAgBC,QAAQ3oC,KAAKkiB,QAAShG,EAAW1U,GAAG4gB,EAAG,EAAG,IAAMpoB,KAAKkiB,SACzE7D,KAAM4sB,qBAAqB4mB,aAAa7xD,KAAKkiB,QAAShG,EAAW1U,GAAI,GACrE2xB,KAAMhiC,EACN26D,SAAU,IAEZv+B,EAAKpgB,YAAYhc,OACZ,CAIL,IAAI46D,EAgCJ,GAnCA/N,GAAS,EACT7sD,EAAKiC,aAAa,OAA+B,MAAvB8iB,EAAW1U,GAAGuO,KAAe,UAAY,WACnE5e,EAAKiC,aAAa,YAAa,WAGL,IAAtB8iB,EAAW1U,GAAG7H,EAAE+Y,GAClBi5C,EAAW,OACXC,EAAU,OACVjyD,EAAI+oC,gBAAgBC,QAAQ3oC,KAAKkiB,QAAShG,EAAW1U,GAAG7H,EAAG,EAAG,KAAMK,KAAKkiB,SACzE6vC,EAAWruC,mBACX8tC,EAAWhsC,SAAS,WACXpsB,aAAa,KAAM24D,IAC5BN,EAAUjsC,SAAS,iBACXpsB,aAAa,WAAY,SACjCq4D,EAAQr4D,aAAa,KAAM,iBAC3Bq4D,EAAQr4D,aAAa,SAAU,KAC/Bo4D,EAASr+C,YAAYs+C,GACrBl+B,EAAKpgB,YAAYq+C,GACjBr6D,EAAKiC,aAAa,SAAiC,MAAvB8iB,EAAW1U,GAAGuO,KAAe,UAAY,aAErE07C,EAAU,KACV9xD,EAAI,MAINK,KAAKq/B,WAAW73B,GAAK,CACnB2xB,KAAMhiC,EACNwI,EAAGA,EACHqyD,MAAOP,EACPK,SAAU,GACVG,aAAc,GACdC,SAAUH,EACVI,WAAY,GAGa,MAAvBj2C,EAAW1U,GAAGuO,KAAc,CAC9BkR,EAAOyqC,EAAa95D,OACpB,IAAI4W,EAAIgX,SAAS,KAEjB,IAAKwB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBxY,EAAE2E,YAAYu+C,EAAa1qC,IAG7B,IAAIorC,EAAO5sC,SAAS,QACpB4sC,EAAKh5D,aAAa,YAAa,SAC/Bg5D,EAAKh5D,aAAa,KAAMo1D,EAAU,IAAMxK,GACxCoO,EAAKj/C,YAAYhc,GACjBo8B,EAAKpgB,YAAYi/C,GACjB5jD,EAAEpV,aAAa,OAAQ,OAASykB,kBAAoB,IAAM2wC,EAAU,IAAMxK,EAAQ,KAClF0N,EAAa95D,OAAS,EACtB85D,EAAaryD,KAAKmP,EACpB,MACEkjD,EAAaryD,KAAKlI,GAGhB+kB,EAAW1U,GAAGm5C,MAAQ3gD,KAAKsxD,YAC7BtxD,KAAKsxD,UAAYtxD,KAAKqyD,wBAIxBryD,KAAKqxD,SAAS7pD,GAAK,CACjB2xB,KAAMhiC,EACN26D,SAAU,GACV1oC,GAAIsf,gBAAgBC,QAAQ3oC,KAAKkiB,QAAShG,EAAW1U,GAAG4gB,EAAG,EAAG,IAAMpoB,KAAKkiB,SACzE7D,KAAM4sB,qBAAqB4mB,aAAa7xD,KAAKkiB,QAAShG,EAAW1U,GAAI,GACrE8qD,QAASf,GAGNvxD,KAAKqxD,SAAS7pD,GAAG6W,KAAK3F,GACzB1Y,KAAKuyD,SAASr2C,EAAW1U,GAAIxH,KAAKqxD,SAAS7pD,GAAG6W,KAAK0F,EAAG/jB,KAAKqxD,SAAS7pD,GAExE,CAMF,IAHAxH,KAAKoxD,YAAc5rC,SAASmsC,GAC5Bh5C,EAAM+4C,EAAa95D,OAEd4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKoxD,YAAYj+C,YAAYu+C,EAAalqD,IAGxCw8C,EAAQ,IACVhkD,KAAKoxD,YAAYh4D,aAAa,KAAMo1D,GACpCxuD,KAAKkiB,QAAQswC,cAAcp5D,aAAaw4D,EAAS,OAAS/zC,kBAAoB,IAAM2wC,EAAU,KAC9Fj7B,EAAKpgB,YAAYnT,KAAKoxD,cAGpBpxD,KAAKqxD,SAASz5D,QAChBoI,KAAKkiB,QAAQkoC,uBAAuBpqD,KAExC,CA3SAkxD,iBAAiB9vD,UAAY,CAC3BqxD,cAAe,WACb,IAAIxZ,EAAM,IAAIxK,OACdzuC,KAAK2qD,eAAiB,CACpBC,MAAO5qD,KAAKsQ,KAAK6X,GAAKiwB,yBAAyBqB,qBAAqBz5C,KAAMA,KAAKsQ,KAAK6X,GAAInoB,MAAQ,CAC9FooB,EAAG,GAELsqC,SAAS,EACTC,cAAc,EACdC,QAAQ,EACR3Z,IAAKA,EACL4Z,SAAU5Z,EACV6Z,aAAc,GAGZ9yD,KAAKsQ,KAAKyiD,KACZ/yD,KAAK2qD,eAAeC,MAAMxR,cAAe,GAIvCp5C,KAAKsQ,KAAKmX,EAEhB,EACAurC,gBAAiB,WAIf,GAHAhzD,KAAK2qD,eAAeiI,OAAS5yD,KAAK2qD,eAAeC,MAAMxiC,EAAEof,MAAQxnC,KAAK6nC,cACtE7nC,KAAK2qD,eAAe+H,QAAU1yD,KAAK2qD,eAAeC,MAAMpjB,MAAQxnC,KAAK6nC,cAEjE7nC,KAAKswD,UAAW,CAClB,IAAIrX,EACAga,EAAWjzD,KAAK2qD,eAAe1R,IAC/BzxC,EAAI,EACJmR,EAAM3Y,KAAKswD,UAAU14D,OAEzB,IAAKoI,KAAK2qD,eAAe+H,QACvB,KAAOlrD,EAAImR,GAAK,CACd,GAAI3Y,KAAKswD,UAAU9oD,GAAGmjD,eAAeC,MAAMpjB,KAAM,CAC/CxnC,KAAK2qD,eAAe+H,SAAU,EAC9B,KACF,CAEAlrD,GAAK,CACP,CAGF,GAAIxH,KAAK2qD,eAAe+H,QAItB,IAHAzZ,EAAMj5C,KAAK2qD,eAAeC,MAAM7mC,EAAEgrB,MAClCkkB,EAASxgB,eAAewG,GAEnBzxC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxByrD,EAAS/gB,SAASlyC,KAAKswD,UAAU9oD,GAAGmjD,eAAeC,MAAM7mC,EAG/D,CAEI/jB,KAAK2qD,eAAe+H,UACtB1yD,KAAK2qD,eAAegI,aAAe3yD,KAAK2qD,eAAe+H,SAGrD1yD,KAAK2qD,eAAeiI,SACtB5yD,KAAK2qD,eAAemI,aAAe9yD,KAAK2qD,eAAeC,MAAMxiC,EAAErE,EAEnE,EACAmvC,qBAAsB,WACpB,GAAIlzD,KAAKmzD,gBAAiB,CACxB,IAAI3rD,EAAI,EACJmR,EAAM3Y,KAAKmzD,gBAAgBv7D,OAG/B,GAFAoI,KAAK2qD,eAAegI,aAAe3yD,KAAK2qD,eAAe+H,SAElD1yD,KAAK2qD,eAAegI,eAAiB3yD,KAAK2qD,eAAeiI,OAC5D,KAAOprD,EAAImR,GACL3Y,KAAKmzD,gBAAgB3rD,GAAGggC,OAC1BxnC,KAAK2qD,eAAegI,cAAe,GAGjC3yD,KAAKmzD,gBAAgB3rD,GAAGorD,SAAW5yD,KAAK2qD,eAAeiI,SACzD5yD,KAAK2qD,eAAemI,aAAe9yD,KAAK2qD,eAAeC,MAAMxiC,EAAErE,EAC/D/jB,KAAK2qD,eAAeiI,QAAS,GAG/BprD,GAAK,EAIT,GAAIxH,KAAK2qD,eAAegI,aAAc,CACpC,IAAIE,EAAW7yD,KAAK2qD,eAAekI,SAGnC,IAFA7yD,KAAKmzD,gBAAgB,GAAGhhB,OAAO3H,MAAMqoB,GAEhCrrD,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAC3B,IAAI4rD,EAAOpzD,KAAKmzD,gBAAgB3rD,GAAG2qC,OACnC0gB,EAAS3gB,SAASkhB,EACpB,CAEAP,EAAS3gB,SAASlyC,KAAK2qD,eAAe1R,IACxC,CAEA,GAAIj5C,KAAK2qD,eAAeiI,OAAQ,CAC9B,IAAIS,EAAUrzD,KAAK2qD,eAAemI,aAElC,IAAKtrD,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB6rD,GAA6C,IAAlCrzD,KAAKmzD,gBAAgB3rD,GAAG1J,QAGrCkC,KAAK2qD,eAAemI,aAAeO,CACrC,CACF,CACF,EACAC,uBAAwB,WACtB,GAAItzD,KAAKuzD,yBAA0B,CACjC,IAAIC,EAAmBxzD,KAAKuzD,yBAAyBE,WAAWzC,YAAYC,kBAE5E,GAAIuC,EAAiB57D,OAAQ,CAC3BoI,KAAKmzD,gBAAkB,GACvBnzD,KAAK2qD,eAAekI,SAAW,IAAIpkB,OACnC,IAAIjnC,EAAI,EACJmR,EAAM66C,EAAiB57D,OAE3B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKmzD,gBAAgB9zD,KAAKm0D,EAAiBhsD,GAE/C,CACF,CACF,EACAksD,cAAe,SAAuBnsC,GACpC,IAAIosC,EAAa,GACjBA,EAAWt0D,KAAKW,KAAK2qD,gBAIrB,IAHA,IAeInjD,EAfAkW,GAAO,EACPoK,EAAO9nB,KAAK8nB,KAETpK,GACDoK,EAAK6iC,gBACH7iC,EAAKxX,KAAK8W,SACZusC,EAAWjkC,OAAO,EAAG,EAAG5H,EAAK6iC,gBAG/B7iC,EAAOA,EAAKA,MAEZpK,GAAO,EAKX,IACIk2C,EADAj7C,EAAMg7C,EAAW/7D,OAGrB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBosD,EAAQD,EAAWnsD,GAAGyxC,IAAI9F,kBAAkB,EAAG,EAAG,GAElD5rB,EAAK,CAACA,EAAG,GAAKqsC,EAAM,GAAIrsC,EAAG,GAAKqsC,EAAM,GAAI,GAG5C,OAAOrsC,CACT,EACAssC,QAAS,IAAIplB,QAqJf0iB,YAAY/vD,UAAU0yD,gBAAkB,SAAU19C,GAChD,OAAOpW,KAAKqxD,SAASj7C,GAAKiI,IAC5B,EAEA8yC,YAAY/vD,UAAU60B,YAAc,SAAU89B,GAC5C,IACIvsD,EADAyrD,EAAWjzD,KAAKkiB,QAAQyoC,eAAe1R,IAEvCtgC,EAAM3Y,KAAKsnB,gBAAgB1vB,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EASxB,IARIxH,KAAKqxD,SAAS7pD,GAAG6W,KAAKmpB,MAAQusB,IAChC/zD,KAAKuyD,SAASvyD,KAAKsnB,gBAAgB9f,GAAIxH,KAAKqxD,SAAS7pD,GAAG6W,KAAK0F,EAAG/jB,KAAKqxD,SAAS7pD,KAG5ExH,KAAKqxD,SAAS7pD,GAAG4hB,GAAGoe,MAAQusB,IAC9B/zD,KAAKqxD,SAAS7pD,GAAG2xB,KAAK//B,aAAa,eAAgB4G,KAAKqxD,SAAS7pD,GAAG4hB,GAAGrF,GAGpC,MAAjC/jB,KAAKsnB,gBAAgB9f,GAAGuO,OACtB/V,KAAKqxD,SAAS7pD,GAAG8qD,UAAYtyD,KAAKkiB,QAAQyoC,eAAeC,MAAMpjB,MAAQusB,IACzE/zD,KAAKqxD,SAAS7pD,GAAG8qD,QAAQl5D,aAAa,YAAa65D,EAASlgB,mBAAmBiB,WAG7Eh0C,KAAKq/B,WAAW73B,GAAG7H,IAAMK,KAAKq/B,WAAW73B,GAAG7H,EAAE6nC,MAAQusB,IAAe,CACvE,IAAItC,EAAUzxD,KAAKq/B,WAAW73B,GAAGwqD,MAE7BhyD,KAAKq/B,WAAW73B,GAAG7H,EAAEokB,EAAI,GACa,UAApC/jB,KAAKq/B,WAAW73B,GAAGyqD,eACrBjyD,KAAKq/B,WAAW73B,GAAGyqD,aAAe,QAClCjyD,KAAKq/B,WAAW73B,GAAG2xB,KAAK//B,aAAa,SAAU,OAASykB,kBAAoB,IAAM7d,KAAKq/B,WAAW73B,GAAG0qD,SAAW,MAGlHT,EAAQr4D,aAAa,UAAW4G,KAAKq/B,WAAW73B,GAAG7H,EAAEokB,KAEb,WAApC/jB,KAAKq/B,WAAW73B,GAAGyqD,eACrBjyD,KAAKq/B,WAAW73B,GAAGyqD,aAAe,SAClCjyD,KAAKq/B,WAAW73B,GAAG2xB,KAAK//B,aAAa,SAAU,OAGjD4G,KAAKq/B,WAAW73B,GAAG2xB,KAAK//B,aAAa,eAAyC,EAAzB4G,KAAKq/B,WAAW73B,GAAG7H,EAAEokB,GAE9E,CAGN,EAEAotC,YAAY/vD,UAAU4yD,eAAiB,WACrC,OAAOh0D,KAAKoxD,WACd,EAEAD,YAAY/vD,UAAUixD,qBAAuB,WAC3C,IAAIl7D,EAAO,QAKX,OAJAA,GAAQ,KAAO6I,KAAKszB,WAAWy9B,SAAStM,EACxCttD,GAAQ,KAAO6I,KAAKszB,WAAWy9B,SAASltC,GACxC1sB,GAAQ,MAAQ6I,KAAKszB,WAAWy9B,SAAStM,GACjC,MAAQzkD,KAAKszB,WAAWy9B,SAASltC,EAAI,GAE/C,EAEAstC,YAAY/vD,UAAUmxD,SAAW,SAAU7oC,EAAUuqC,EAAW5C,GAC9D,IACI7pD,EACAmR,EAFAu7C,EAAa,KAAOD,EAAUlwC,EAAE,GAAG,GAAK,IAAMkwC,EAAUlwC,EAAE,GAAG,GAKjE,IAFApL,EAAMs7C,EAAUh3B,QAEXz1B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAExB0sD,GAAc,KAAOD,EAAU7rC,EAAE5gB,EAAI,GAAG,GAAK,IAAMysD,EAAU7rC,EAAE5gB,EAAI,GAAG,GAAK,IAAMysD,EAAUzsD,EAAEA,GAAG,GAAK,IAAMysD,EAAUzsD,EAAEA,GAAG,GAAK,IAAMysD,EAAUlwC,EAAEvc,GAAG,GAAK,IAAMysD,EAAUlwC,EAAEvc,GAAG,GAShL,GALIysD,EAAU/lD,GAAKyK,EAAM,IACvBu7C,GAAc,KAAOD,EAAU7rC,EAAE5gB,EAAI,GAAG,GAAK,IAAMysD,EAAU7rC,EAAE5gB,EAAI,GAAG,GAAK,IAAMysD,EAAUzsD,EAAE,GAAG,GAAK,IAAMysD,EAAUzsD,EAAE,GAAG,GAAK,IAAMysD,EAAUlwC,EAAE,GAAG,GAAK,IAAMkwC,EAAUlwC,EAAE,GAAG,IAI5KstC,EAASS,WAAaoC,EAAY,CACpC,IAAIC,EAAiB,GAEjB9C,EAASl4B,OACP86B,EAAU/lD,IACZimD,EAAiBzqC,EAASi3B,IAAM3gD,KAAKsxD,UAAY4C,EAAaA,GAGhE7C,EAASl4B,KAAK//B,aAAa,IAAK+6D,IAGlC9C,EAASS,SAAWoC,CACtB,CACF,EAEA/C,YAAY/vD,UAAUutB,QAAU,WAC9B3uB,KAAKkiB,QAAU,KACfliB,KAAKszB,WAAa,KAClBtzB,KAAKoxD,YAAc,KACnBpxD,KAAKsQ,KAAO,KACZtQ,KAAKsnB,gBAAkB,IACzB,EAEA,IAAI8sC,eACO,CACTrmC,aAGA,SAAsBsmC,EAAOC,GAC3B,IAAIC,EAAM/uC,SAAS,UAWnB,OAVA+uC,EAAIn7D,aAAa,KAAMi7D,IAEC,IAApBC,IACFC,EAAIn7D,aAAa,cAAe,qBAChCm7D,EAAIn7D,aAAa,IAAK,MACtBm7D,EAAIn7D,aAAa,IAAK,MACtBm7D,EAAIn7D,aAAa,QAAS,QAC1Bm7D,EAAIn7D,aAAa,SAAU,SAGtBm7D,CACT,EAfAxmC,6BAiBA,WACE,IAAIymC,EAAgBhvC,SAAS,iBAI7B,OAHAgvC,EAAcp7D,aAAa,OAAQ,UACnCo7D,EAAcp7D,aAAa,8BAA+B,QAC1Do7D,EAAcp7D,aAAa,SAAU,8CAC9Bo7D,CACT,GAKEC,eAAiB,WACnB,IAAI1mC,EAAK,CACP4jC,UAAU,EACV+C,eAAe,EACfC,gBAA4C,oBAApBtO,iBAW1B,OARI,WAAWl1C,KAAKiM,UAAUxQ,YAAc,UAAUuE,KAAKiM,UAAUxQ,YAAc,WAAWuE,KAAKiM,UAAUxQ,YAAc,aAAauE,KAAKiM,UAAUxQ,cACrJmhB,EAAG4jC,UAAW,GAGZ,WAAWxgD,KAAKiM,UAAUxQ,aAC5BmhB,EAAG2mC,eAAgB,GAGd3mC,CACT,CAhBqB,GAkBjB6mC,oBAAsB,CAAC,EACvBC,SAAW,iBAEf,SAASC,WAAW37B,GAClB,IAAI3xB,EAOAutD,EANA3tD,EAAS,gBACTuR,EAAMwgB,EAAK7oB,KAAKy7C,GAAK5yB,EAAK7oB,KAAKy7C,GAAGn0D,OAAS,EAC3Cy8D,EAAQ3wC,kBACR6wC,EAAMH,eAAeY,aAAaX,GAAO,GACzCrQ,EAAQ,EAIZ,IAHAhkD,KAAKi1D,QAAU,GAGVztD,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAC3ButD,EAAgB,KAChB,IAAI9kD,EAAOkpB,EAAK7oB,KAAKy7C,GAAGvkD,GAAGigB,GAEvBmtC,oBAAoB3kD,KAEtB8kD,EAAgB,IAAIG,EADPN,oBAAoB3kD,GAAMklD,QACZZ,EAAKp7B,EAAKs1B,eAAezC,eAAexkD,GAAI2xB,EAAM07B,SAAW7Q,EAAO58C,GAC/FA,EAASytD,SAAW7Q,EAEhB4Q,oBAAoB3kD,GAAMmlD,iBAC5BpR,GAAS,IAIT+Q,GACF/0D,KAAKi1D,QAAQ51D,KAAK01D,EAEtB,CAEI/Q,IACF7qB,EAAK7F,WAAWC,KAAKpgB,YAAYohD,GACjCp7B,EAAKo1B,aAAan1D,aAAa,SAAU,OAASykB,kBAAoB,IAAMw2C,EAAQ,MAGlFr0D,KAAKi1D,QAAQr9D,QACfuhC,EAAKixB,uBAAuBpqD,KAEhC,CAyBA,SAASq1D,iBAAiB1iE,EAAIwiE,EAAQC,GACpCR,oBAAoBjiE,GAAM,CACxBwiE,OAAQA,EACRC,eAAgBA,EAEpB,CAEA,SAASE,iBAAkB,CA6L3B,SAASC,mBAAoB,CAgD7B,SAASC,uBAAwB,CAoEjC,SAASC,cAAcnlD,EAAMgjB,EAAYxL,GACvC9nB,KAAKktB,UAAYoG,EAAW6E,aAAa7nB,EAAKqX,OAE1C3nB,KAAKktB,WAAaltB,KAAKktB,UAAU0b,MACnC5oC,KAAKktB,UAAYoG,EAAWuV,YAAYF,QAAQ3oC,KAAKktB,YAGvDltB,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,GACnC9nB,KAAK21D,WAAa,CAChBn7D,IAAK,EACLD,KAAM,EACNsD,MAAOmC,KAAKktB,UAAUu3B,EACtB5yD,OAAQmO,KAAKktB,UAAUrJ,EAE3B,CAkBA,SAAS+xC,iBAAiB1zC,EAAS3L,GACjCvW,KAAKm5B,KAAOjX,EACZliB,KAAKoW,IAAMG,CACb,CAEA,SAASs/C,gBAAiB,CApX1Bf,WAAW1zD,UAAU60B,YAAc,SAAU4R,GAC3C,IAAIrgC,EACAmR,EAAM3Y,KAAKi1D,QAAQr9D,OAEvB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKi1D,QAAQztD,GAAGyuB,YAAY4R,EAEhC,EAEAitB,WAAW1zD,UAAUqyD,WAAa,SAAUxjD,GAC1C,IAAIzI,EACAmR,EAAM3Y,KAAKi1D,QAAQr9D,OACnBk0D,EAAU,GAEd,IAAKtkD,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBxH,KAAKi1D,QAAQztD,GAAGyI,OAASA,GAC3B67C,EAAQzsD,KAAKW,KAAKi1D,QAAQztD,IAI9B,OAAOskD,CACT,EAWAwJ,eAAel0D,UAAY,CACzB00D,oBAAqB,WACnB91D,KAAKuuD,aAAe/oC,SAAS,IAC/B,EACAuwC,wBAAyB,WACvB/1D,KAAKg2D,aAAexwC,SAAS,KAC7BxlB,KAAKi2D,mBAAqBj2D,KAAKuuD,aAC/BvuD,KAAKwyD,cAAgBxyD,KAAKuuD,aAC1BvuD,KAAKk2D,cAAe,EACpB,IAAIC,EAAqB,KAEzB,GAAIn2D,KAAKsQ,KAAK8lD,GAAI,CAChBp2D,KAAKq2D,WAAa,CAAC,EACnB,IAAIC,EAAK9wC,SAAS,KAClB8wC,EAAGl9D,aAAa,KAAM4G,KAAKwuD,SAC3B8H,EAAGnjD,YAAYnT,KAAKuuD,cACpB4H,EAAqBG,EACrBt2D,KAAKszB,WAAWC,KAAKpgB,YAAYmjD,EACnC,MAAWt2D,KAAKsQ,KAAKimD,IACnBv2D,KAAKg2D,aAAa7iD,YAAYnT,KAAKuuD,cACnC4H,EAAqBn2D,KAAKg2D,aAC1Bh2D,KAAKsuD,YAActuD,KAAKg2D,cAExBh2D,KAAKsuD,YAActuD,KAAKuuD,aAY1B,GATIvuD,KAAKsQ,KAAKkmD,IACZx2D,KAAKuuD,aAAan1D,aAAa,KAAM4G,KAAKsQ,KAAKkmD,IAG7Cx2D,KAAKsQ,KAAK0Z,IACZhqB,KAAKuuD,aAAan1D,aAAa,QAAS4G,KAAKsQ,KAAK0Z,IAI/B,IAAjBhqB,KAAKsQ,KAAKmX,KAAaznB,KAAKsQ,KAAKmmD,GAAI,CACvC,IAAIC,EAAKlxC,SAAS,YACd+B,EAAK/B,SAAS,QAClB+B,EAAGnuB,aAAa,IAAK,SAAW4G,KAAKsQ,KAAKm0C,EAAI,OAASzkD,KAAKsQ,KAAKm0C,EAAI,IAAMzkD,KAAKsQ,KAAKuT,EAAI,OAAS7jB,KAAKsQ,KAAKuT,EAAI,KAChH,IAAI8yC,EAASjzC,kBAKb,GAJAgzC,EAAGt9D,aAAa,KAAMu9D,GACtBD,EAAGvjD,YAAYoU,GACfvnB,KAAKszB,WAAWC,KAAKpgB,YAAYujD,GAE7B12D,KAAKmtD,aAAc,CACrB,IAAIyJ,EAAUpxC,SAAS,KACvBoxC,EAAQx9D,aAAa,YAAa,OAASykB,kBAAoB,IAAM84C,EAAS,KAC9EC,EAAQzjD,YAAYnT,KAAKuuD,cACzBvuD,KAAKi2D,mBAAqBW,EAEtBT,EACFA,EAAmBhjD,YAAYnT,KAAKi2D,oBAEpCj2D,KAAKsuD,YAActuD,KAAKi2D,kBAE5B,MACEj2D,KAAKuuD,aAAan1D,aAAa,YAAa,OAASykB,kBAAoB,IAAM84C,EAAS,IAE5F,CAEqB,IAAjB32D,KAAKsQ,KAAK+9C,IACZruD,KAAKmuD,cAET,EACA0I,cAAe,WACT72D,KAAK2qD,eAAegI,cACtB3yD,KAAKi2D,mBAAmB78D,aAAa,YAAa4G,KAAK2qD,eAAekI,SAAS7e,WAG7Eh0C,KAAK2qD,eAAeiI,QACtB5yD,KAAKi2D,mBAAmB78D,aAAa,UAAW4G,KAAK2qD,eAAemI,aAExE,EACAgE,mBAAoB,WAClB92D,KAAKuuD,aAAe,KACpBvuD,KAAKg2D,aAAe,KACpBh2D,KAAK0tD,YAAY/+B,SACnB,EACAmgC,eAAgB,WACd,OAAI9uD,KAAKsQ,KAAKmmD,GACL,KAGFz2D,KAAKsuD,WACd,EACAyI,2BAA4B,WAC1B/2D,KAAK0tD,YAAc,IAAIyD,YAAYnxD,KAAKsQ,KAAMtQ,KAAMA,KAAKszB,YACzDtzB,KAAKuzD,yBAA2B,IAAIuB,WAAW90D,MAC/CA,KAAKszD,wBACP,EACA0D,SAAU,SAAkBC,GAQ1B,GAJKj3D,KAAKq2D,aACRr2D,KAAKq2D,WAAa,CAAC,IAGhBr2D,KAAKq2D,WAAWY,GAAY,CAC/B,IACI5C,EACAE,EACA2C,EACAZ,EAJA3jE,EAAKqN,KAAKwuD,QAAU,IAAMyI,EAM9B,GAAkB,IAAdA,GAAiC,IAAdA,EAAiB,CACtC,IAAIE,EAAS3xC,SAAS,QACtB2xC,EAAO/9D,aAAa,KAAMzG,GAC1BwkE,EAAO/9D,aAAa,YAA2B,IAAd69D,EAAkB,YAAc,UACjEC,EAAa1xC,SAAS,QACXwJ,eAAe,+BAAgC,OAAQ,IAAMhvB,KAAKwuD,SAC7E2I,EAAOhkD,YAAY+jD,GACnBl3D,KAAKszB,WAAWC,KAAKpgB,YAAYgkD,GAE5B1C,eAAe9C,UAA0B,IAAdsF,IAC9BE,EAAO/9D,aAAa,YAAa,aACjCi7D,EAAQ3wC,kBACR6wC,EAAMH,eAAeY,aAAaX,GAClCr0D,KAAKszB,WAAWC,KAAKpgB,YAAYohD,GACjCA,EAAIphD,YAAYihD,eAAegD,iCAC/Bd,EAAK9wC,SAAS,MACXrS,YAAY+jD,GACfC,EAAOhkD,YAAYmjD,GACnBA,EAAGl9D,aAAa,SAAU,OAASykB,kBAAoB,IAAMw2C,EAAQ,KAEzE,MAAO,GAAkB,IAAd4C,EAAiB,CAC1B,IAAII,EAAY7xC,SAAS,QACzB6xC,EAAUj+D,aAAa,KAAMzG,GAC7B0kE,EAAUj+D,aAAa,YAAa,SACpC,IAAIk+D,EAAc9xC,SAAS,KAC3B6xC,EAAUlkD,YAAYmkD,GACtBjD,EAAQ3wC,kBACR6wC,EAAMH,eAAeY,aAAaX,GAElC,IAAIkD,EAAQ/xC,SAAS,uBACrB+xC,EAAMn+D,aAAa,KAAM,iBACzBm7D,EAAIphD,YAAYokD,GAChB,IAAIC,EAAShyC,SAAS,WACtBgyC,EAAOp+D,aAAa,OAAQ,SAC5Bo+D,EAAOp+D,aAAa,cAAe,WACnCm+D,EAAMpkD,YAAYqkD,GAElBx3D,KAAKszB,WAAWC,KAAKpgB,YAAYohD,GACjC,IAAIkD,EAAYjyC,SAAS,QACzBiyC,EAAUr+D,aAAa,QAAS4G,KAAK8nB,KAAKxX,KAAKm0C,GAC/CgT,EAAUr+D,aAAa,SAAU4G,KAAK8nB,KAAKxX,KAAKuT,GAChD4zC,EAAUr+D,aAAa,IAAK,KAC5Bq+D,EAAUr+D,aAAa,IAAK,KAC5Bq+D,EAAUr+D,aAAa,OAAQ,WAC/Bq+D,EAAUr+D,aAAa,UAAW,KAClCk+D,EAAYl+D,aAAa,SAAU,OAASykB,kBAAoB,IAAMw2C,EAAQ,KAC9EiD,EAAYnkD,YAAYskD,IACxBP,EAAa1xC,SAAS,QACXwJ,eAAe,+BAAgC,OAAQ,IAAMhvB,KAAKwuD,SAC7E8I,EAAYnkD,YAAY+jD,GAEnBzC,eAAe9C,WAClB0F,EAAUj+D,aAAa,YAAa,aACpCm7D,EAAIphD,YAAYihD,eAAegD,gCAC/Bd,EAAK9wC,SAAS,KACd8xC,EAAYnkD,YAAYskD,GACxBnB,EAAGnjD,YAAYnT,KAAKuuD,cACpB+I,EAAYnkD,YAAYmjD,IAG1Bt2D,KAAKszB,WAAWC,KAAKpgB,YAAYkkD,EACnC,CAEAr3D,KAAKq2D,WAAWY,GAAatkE,CAC/B,CAEA,OAAOqN,KAAKq2D,WAAWY,EACzB,EACAS,SAAU,SAAkB/kE,GACrBqN,KAAKg2D,cAIVh2D,KAAKg2D,aAAa58D,aAAa,OAAQ,OAASykB,kBAAoB,IAAMlrB,EAAK,IACjF,GAUF4iE,iBAAiBn0D,UAAY,CAM3Bu2D,cAAe,WAEb33D,KAAKswD,UAAY,GAEjBtwD,KAAK6uD,WAAY,EACjB7uD,KAAK43D,gBACP,EASApH,aAAc,SAAsBF,GAClCtwD,KAAKswD,UAAYA,CACnB,EAOAC,YAAa,WACXvwD,KAAK6uD,WAAY,CACnB,EAOA+I,eAAgB,gBACWx3D,IAArBJ,KAAKsQ,KAAKo1C,QACZ1lD,KAAK8nB,KAAKsoC,sBAAsBpwD,KAAMA,KAAKsQ,KAAKo1C,OAAQ,GAE5D,GAoEA3nC,gBAAgB,CAAC6rC,kBAAmBtrC,oBA9DnB,CACfo3C,YAAa,SAAqBplD,EAAMgjB,EAAYxL,GAClD9nB,KAAKuiC,YACLviC,KAAKusD,aAAaj8C,EAAMgjB,EAAYxL,GACpC9nB,KAAKyyD,cAAcniD,EAAMgjB,EAAYxL,GACrC9nB,KAAK23D,gBACL33D,KAAK+pD,iBACL/pD,KAAK81D,sBACL91D,KAAK+1D,0BACL/1D,KAAK+2D,6BACL/2D,KAAK63D,gBACL73D,KAAKo4B,MACP,EACAA,KAAM,WAECp4B,KAAKiqD,QAAYjqD,KAAKgqD,YAAahqD,KAAKkqD,iBAChClqD,KAAKsuD,aAAetuD,KAAKuuD,cAC/Bp9D,MAAMC,QAAU,OACrB4O,KAAKiqD,QAAS,EAElB,EACA5xB,KAAM,WAEAr4B,KAAKgqD,YAAchqD,KAAKkqD,gBACrBlqD,KAAKsQ,KAAKmmD,MACFz2D,KAAKsuD,aAAetuD,KAAKuuD,cAC/Bp9D,MAAMC,QAAU,SAGvB4O,KAAKiqD,QAAS,EACdjqD,KAAK6nC,eAAgB,EAEzB,EACA5R,YAAa,WAGPj2B,KAAKsQ,KAAKmmD,IAAMz2D,KAAKiqD,SAIzBjqD,KAAKgzD,kBACLhzD,KAAK+qD,mBACL/qD,KAAKkzD,uBACLlzD,KAAK62D,gBACL72D,KAAK83D,qBAED93D,KAAK6nC,gBACP7nC,KAAK6nC,eAAgB,GAEzB,EACAiwB,mBAAoB,WAA+B,EACnD9mC,aAAc,SAAsBw5B,GAClCxqD,KAAKwnC,MAAO,EACZxnC,KAAKuqD,uBAAuBC,GAC5BxqD,KAAK2uD,kBAAkBnE,EAAKxqD,KAAKgqD,WACjChqD,KAAK0qD,mBACP,EACA/7B,QAAS,WACP3uB,KAAK+3D,UAAY,KACjB/3D,KAAK82D,oBACP,KAEoEtB,sBAmBxEz3C,gBAAgB,CAACouC,YAAa+E,iBAAkBoE,eAAgBC,iBAAkBnJ,aAAcoJ,sBAAuBC,eAEvHA,cAAcr0D,UAAUy2D,cAAgB,WACtC,IAAIz4C,EAAYpf,KAAKszB,WAAWrG,cAAcjtB,KAAKktB,WACnDltB,KAAK+3D,UAAYvyC,SAAS,SAC1BxlB,KAAK+3D,UAAU3+D,aAAa,QAAS4G,KAAKktB,UAAUu3B,EAAI,MACxDzkD,KAAK+3D,UAAU3+D,aAAa,SAAU4G,KAAKktB,UAAUrJ,EAAI,MACzD7jB,KAAK+3D,UAAU3+D,aAAa,sBAAuB4G,KAAKktB,UAAU8qC,IAAMh4D,KAAKszB,WAAWu3B,aAAaoN,0BACrGj4D,KAAK+3D,UAAU/oC,eAAe,+BAAgC,OAAQ5P,GACtEpf,KAAKuuD,aAAap7C,YAAYnT,KAAK+3D,UACrC,EAEAtC,cAAcr0D,UAAU4pD,iBAAmB,WACzC,OAAOhrD,KAAK21D,UACd,EASAE,cAAcz0D,UAAY,CACxB82D,oBAAqB,SAA6B5nD,GAChD,IAAI9I,EACAmR,EAAM3Y,KAAKm4D,eAAevgE,OAE9B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKm4D,eAAe3wD,GAAGojC,SAASt6B,EAEpC,EACA8nD,2BAA4B,SAAoC9nD,GAI9D,IAHA,IACIqI,EAAM3Y,KAAKm4D,eAAevgE,OADtB,EAGG+gB,GACT,GAAI3Y,KAAKm4D,eAJH,GAIqBE,oBAAoB/nD,GAC7C,OAAO,EAIX,OAAO,CACT,EACAgoD,gBAAiB,WACf,GAAKt4D,KAAKm4D,eAAevgE,OAAzB,CAIA,IAAI4P,EACAmR,EAAM3Y,KAAK6nB,OAAOjwB,OAEtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK6nB,OAAOrgB,GAAGm9B,GAAGqH,QAMpB,IAAKxkC,GAHLmR,EAAM3Y,KAAKm4D,eAAevgE,QAGX,EAAG4P,GAAK,IACAxH,KAAKm4D,eAAe3wD,GAAGsvC,cAAc92C,KAAK6nC,eADvCrgC,GAAK,GAZ/B,CAoBF,EACA+wD,uBAAwB,SAAgCp/B,GAKtD,IAJA,IAAIioB,EAAWphD,KAAKw4D,kBAChBhxD,EAAI,EACJmR,EAAMyoC,EAASxpD,OAEZ4P,EAAImR,GAAK,CACd,GAAIyoC,EAAS55C,GAAG2xB,OAASA,EACvB,OAAOioB,EAAS55C,GAAG4O,IAGrB5O,GAAK,CACP,CAEA,OAAO,CACT,EACAixD,oBAAqB,SAA6Bt/B,EAAM/iB,GAItD,IAHA,IAAIgrC,EAAWphD,KAAKw4D,kBAChBhxD,EAAI45C,EAASxpD,OAEV4P,GAGL,GAAI45C,EAFJ55C,GAAK,GAEW2xB,OAASA,EAEvB,YADAioB,EAAS55C,GAAG4O,IAAMA,GAKtBgrC,EAAS/hD,KAAK,IAAIu2D,iBAAiBz8B,EAAM/iB,GAC3C,EACA4a,aAAc,SAAsBw5B,GAClCxqD,KAAKuqD,uBAAuBC,GAC5BxqD,KAAK2uD,kBAAkBnE,EAAKxqD,KAAKgqD,UACnC,GAGF,IAAI0O,YAAc,CAChB,EAAG,OACH,EAAG,QACH,EAAG,UAEDC,aAAe,CACjB,EAAG,QACH,EAAG,QACH,EAAG,SAGL,SAASC,aAAaC,EAAcC,EAAOruB,GACzCzqC,KAAK+4D,OAAS,GACd/4D,KAAK+/C,OAAS,GACd//C,KAAK64D,aAAeA,EACpB74D,KAAKg5D,KAAO,GACZh5D,KAAK2kC,GAAK8F,EACVzqC,KAAKi5D,IAAMH,EAIX94D,KAAKgpC,cAAgByB,EAAM/xB,EAK3B,IAHA,IAAIlR,EAAI,EACJmR,EAAMkgD,EAAajhE,OAEhB4P,EAAImR,GAAK,CACd,GAAIkgD,EAAarxD,GAAGm7C,OAAO5Z,kBAAkBnxC,OAAQ,CACnDoI,KAAKgpC,aAAc,EACnB,KACF,CAEAxhC,GAAK,CACP,CACF,CAMA,SAAS0xD,aAAa5oD,EAAMwoD,GAC1B94D,KAAKsQ,KAAOA,EACZtQ,KAAKiQ,KAAOK,EAAKmX,GACjBznB,KAAKqkB,EAAI,GACTrkB,KAAKi5D,IAAMH,EACX94D,KAAKwnC,MAAO,EACZxnC,KAAK+pB,QAAqB,IAAZzZ,EAAKmmD,GACnBz2D,KAAKm5D,MAAQ3zC,SAAS,QACtBxlB,KAAKo5D,OAAS,IAChB,CAOA,SAASC,aAAalgC,EAAM7oB,EAAMtZ,EAAUzF,GAU1C,IAAIiW,EATJxH,KAAKm5B,KAAOA,EACZn5B,KAAK0nC,SAAW,EAChB1nC,KAAKs5D,UAAYh5C,iBAAiBhQ,EAAK1Y,QACvCoI,KAAKhJ,SAAWA,EAChBgJ,KAAK0Y,GAAI,EACT1Y,KAAKu5D,QAAU,GACfv5D,KAAKw5D,UAAYx5C,iBAAiB,UAAW1P,EAAK1Y,OAAS0Y,EAAK1Y,OAAS,EAAI,GAC7EoI,KAAKy5D,WAAaz5C,iBAAiB,UAAW,GAC9ChgB,KAAKkpC,6BAA6B33C,GAElC,IACI8sB,EADA1F,EAAMrI,EAAK1Y,QAAU,EAGzB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB6W,EAAOqqB,gBAAgBC,QAAQxP,EAAM7oB,EAAK9I,GAAGuc,EAAG,EAAG,EAAG/jB,MACtDA,KAAK0Y,EAAI2F,EAAK3F,GAAK1Y,KAAK0Y,EACxB1Y,KAAKs5D,UAAU9xD,GAAK,CAClBsR,EAAGxI,EAAK9I,GAAGsR,EACXmL,EAAG5F,GAIFre,KAAK0Y,GACR1Y,KAAKqoC,UAAS,GAGhBroC,KAAKgpC,YAAchpC,KAAK0Y,CAC1B,CAmCA,SAASghD,mBAAmBvgC,EAAM7oB,EAAMqpD,GACtC35D,KAAKkpC,6BAA6B/P,GAClCn5B,KAAKqoC,SAAWroC,KAAKipC,yBACrBjpC,KAAKooB,EAAIsgB,gBAAgBC,QAAQxP,EAAM7oB,EAAK8X,EAAG,EAAG,IAAMpoB,MACxDA,KAAKykD,EAAI/b,gBAAgBC,QAAQxP,EAAM7oB,EAAKm0C,EAAG,EAAG,KAAMzkD,MACxDA,KAAKqkB,EAAI,IAAIg1C,aAAalgC,EAAM7oB,EAAK+T,GAAK,CAAC,EAAG,MAAOrkB,MACrDA,KAAKkO,EAAIw6B,gBAAgBC,QAAQxP,EAAM7oB,EAAKpC,EAAG,EAAG,IAAKlO,MACvDA,KAAK7O,MAAQwoE,EACb35D,KAAKgpC,cAAgBhpC,KAAKgpC,WAC5B,CAIA,SAAS4wB,iBAAiBzgC,EAAM7oB,EAAMqpD,GACpC35D,KAAKkpC,6BAA6B/P,GAClCn5B,KAAKqoC,SAAWroC,KAAKipC,yBACrBjpC,KAAKooB,EAAIsgB,gBAAgBC,QAAQxP,EAAM7oB,EAAK8X,EAAG,EAAG,IAAMpoB,MACxDA,KAAKkO,EAAIw6B,gBAAgBC,QAAQxP,EAAM7oB,EAAKpC,EAAG,EAAG,IAAKlO,MACvDA,KAAK7O,MAAQwoE,CACf,CAIA,SAASE,eAAe1gC,EAAM7oB,EAAMqpD,GAClC35D,KAAKkpC,6BAA6B/P,GAClCn5B,KAAKqoC,SAAWroC,KAAKipC,yBACrBjpC,KAAK7O,MAAQwoE,CACf,CAIA,SAASG,iBAAiB3gC,EAAM7oB,EAAM/e,GACpCyO,KAAKsQ,KAAOA,EACZtQ,KAAKkO,EAAI8R,iBAAiB,SAAmB,EAAT1P,EAAK2T,GACzC,IAAI81C,EAAUzpD,EAAKoI,EAAEA,EAAE,GAAGoL,EAAIxT,EAAKoI,EAAEA,EAAE,GAAGoL,EAAElsB,OAAkB,EAAT0Y,EAAK2T,EAAQ3T,EAAKoI,EAAEA,EAAE9gB,OAAkB,EAAT0Y,EAAK2T,EACzFjkB,KAAKooB,EAAIpI,iBAAiB,UAAW+5C,GACrC/5D,KAAKg6D,OAAQ,EACbh6D,KAAKi6D,OAAQ,EACbj6D,KAAKk6D,aAAel6D,KAAKm6D,mBACzBn6D,KAAKo6D,YAAcL,EACnB/5D,KAAKkpC,6BAA6B33C,GAClCyO,KAAKqe,KAAOqqB,gBAAgBC,QAAQxP,EAAM7oB,EAAKoI,EAAG,EAAG,KAAM1Y,MAC3DA,KAAK0Y,EAAI1Y,KAAKqe,KAAK3F,EACnB1Y,KAAKqoC,UAAS,EAChB,CAqFA,SAASgyB,yBAAyBlhC,EAAM7oB,EAAMqpD,GAC5C35D,KAAKkpC,6BAA6B/P,GAClCn5B,KAAKqoC,SAAWroC,KAAKipC,yBACrBjpC,KAAKs6D,iBAAiBnhC,EAAM7oB,EAAMqpD,EACpC,CAyFA,SAASY,2BAA2BphC,EAAM7oB,EAAMqpD,GAC9C35D,KAAKkpC,6BAA6B/P,GAClCn5B,KAAKqoC,SAAWroC,KAAKipC,yBACrBjpC,KAAKykD,EAAI/b,gBAAgBC,QAAQxP,EAAM7oB,EAAKm0C,EAAG,EAAG,KAAMzkD,MACxDA,KAAKqkB,EAAI,IAAIg1C,aAAalgC,EAAM7oB,EAAK+T,GAAK,CAAC,EAAG,MAAOrkB,MACrDA,KAAKs6D,iBAAiBnhC,EAAM7oB,EAAMqpD,GAClC35D,KAAKgpC,cAAgBhpC,KAAKgpC,WAC5B,CAIA,SAASwxB,iBACPx6D,KAAKW,GAAK,GACVX,KAAKy6D,aAAe,GACpBz6D,KAAK06D,GAAKl1C,SAAS,IACrB,CAEA,SAASm1C,iBAAiBhY,EAAQv5B,EAAI73B,GACpCyO,KAAKmwC,UAAY,CACfwS,OAAQA,EACRv5B,GAAIA,EACJ73B,UAAWA,GAEbyO,KAAKohD,SAAW,GAChBphD,KAAKgpC,YAAchpC,KAAKmwC,UAAUwS,OAAO5Z,kBAAkBnxC,QAAUoI,KAAKmwC,UAAU/mB,GAAGue,gBAAgB/vC,MACzG,CA1UAghE,aAAax3D,UAAU60C,cAAgB,WACrCj2C,KAAKgpC,aAAc,CACrB,EAaAkwB,aAAa93D,UAAU4qC,MAAQ,WAC7BhsC,KAAKqkB,EAAI,GACTrkB,KAAKwnC,MAAO,CACd,EAgCA6xB,aAAaj4D,UAAUinC,SAAW,SAAU6Q,GAC1C,IAAIl5C,KAAKm5B,KAAK7F,WAAWoU,UAAY1nC,KAAK0nC,SAAYwR,KAItDl5C,KAAK0nC,QAAU1nC,KAAKm5B,KAAK7F,WAAWoU,QACpC1nC,KAAKipC,2BACLjpC,KAAKwnC,KAAOxnC,KAAKwnC,MAAQ0R,EAErBl5C,KAAKwnC,MAAM,CACb,IAAIhgC,EAAI,EACJmR,EAAM3Y,KAAKs5D,UAAU1hE,OAMzB,IAJsB,QAAlBoI,KAAKhJ,WACPgJ,KAAKu5D,QAAU,IAGZ/xD,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACI,MAAxBxH,KAAKs5D,UAAU9xD,GAAGsR,EACE,QAAlB9Y,KAAKhJ,SACPgJ,KAAKu5D,SAAW,IAAMv5D,KAAKs5D,UAAU9xD,GAAGyc,EAAEF,EAE1C/jB,KAAKw5D,UAAUhyD,GAAKxH,KAAKs5D,UAAU9xD,GAAGyc,EAAEF,EAG1C/jB,KAAKy5D,WAAW,GAAKz5D,KAAKs5D,UAAU9xD,GAAGyc,EAAEF,CAG/C,CACF,EAEAhG,gBAAgB,CAAC+qB,0BAA2BuwB,cAa5Ct7C,gBAAgB,CAAC+qB,0BAA2B4wB,oBAU5C37C,gBAAgB,CAAC+qB,0BAA2B8wB,kBAQ5C77C,gBAAgB,CAAC+qB,0BAA2B+wB,gBAiB5CC,iBAAiB14D,UAAUw5D,cAAgB,SAAU3wD,EAAQixB,GAK3D,IAJA,IAAI1zB,EAAI,EACJmR,EAAM3Y,KAAKooB,EAAExwB,OAAS,EAGnB4P,EAAImR,GAAK,CAGd,GAFOvc,KAAKC,IAAI4N,EAAW,EAAJzC,GAASyC,EAAgB,EAATixB,EAAiB,EAAJ1zB,IAEzC,IACT,OAAO,EAGTA,GAAK,CACP,CAEA,OAAO,CACT,EAEAsyD,iBAAiB14D,UAAU+4D,iBAAmB,WAC5C,GAAIn6D,KAAKooB,EAAExwB,OAAS,GAAMoI,KAAKkO,EAAEtW,OAAS,EACxC,OAAO,EAGT,GAAIoI,KAAKsQ,KAAKoI,EAAEA,EAAE,GAAGoL,EAInB,IAHA,IAAItc,EAAI,EACJmR,EAAM3Y,KAAKsQ,KAAKoI,EAAEA,EAAE9gB,OAEjB4P,EAAImR,GAAK,CACd,IAAK3Y,KAAK46D,cAAc56D,KAAKsQ,KAAKoI,EAAEA,EAAElR,GAAGsc,EAAG9jB,KAAKsQ,KAAK2T,GACpD,OAAO,EAGTzc,GAAK,CACP,MACK,IAAKxH,KAAK46D,cAAc56D,KAAKsQ,KAAKoI,EAAEA,EAAG1Y,KAAKsQ,KAAK2T,GACtD,OAAO,EAGT,OAAO,CACT,EAEA61C,iBAAiB14D,UAAUinC,SAAW,SAAU6Q,GAM9C,GALAl5C,KAAKqe,KAAKgqB,WACVroC,KAAKwnC,MAAO,EACZxnC,KAAKg6D,OAAQ,EACbh6D,KAAKi6D,OAAQ,EAETj6D,KAAKqe,KAAKmpB,MAAQ0R,EAAa,CACjC,IAAI1xC,EAEA+/B,EACAtyB,EAFA0D,EAAoB,EAAd3Y,KAAKsQ,KAAK2T,EAIpB,IAAKzc,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB+/B,EAAO//B,EAAI,GAAM,EAAI,IAAM,IAC3ByN,EAAM7Y,KAAK4lB,MAAMhiB,KAAKqe,KAAK0F,EAAEvc,GAAK+/B,GAE9BvnC,KAAKkO,EAAE1G,KAAOyN,IAChBjV,KAAKkO,EAAE1G,GAAKyN,EACZjV,KAAKg6D,OAAS9gB,GAIlB,GAAIl5C,KAAKooB,EAAExwB,OAGT,IAFA+gB,EAAM3Y,KAAKqe,KAAK0F,EAAEnsB,OAEb4P,EAAkB,EAAdxH,KAAKsQ,KAAK2T,EAAOzc,EAAImR,EAAKnR,GAAK,EACtC+/B,EAAO//B,EAAI,GAAM,EAAI,IAAM,EAC3ByN,EAAMzN,EAAI,GAAM,EAAIpL,KAAK4lB,MAAuB,IAAjBhiB,KAAKqe,KAAK0F,EAAEvc,IAAYxH,KAAKqe,KAAK0F,EAAEvc,GAE/DxH,KAAKooB,EAAE5gB,EAAkB,EAAdxH,KAAKsQ,KAAK2T,KAAWhP,IAClCjV,KAAKooB,EAAE5gB,EAAkB,EAAdxH,KAAKsQ,KAAK2T,GAAShP,EAC9BjV,KAAKi6D,OAAS/gB,GAKpBl5C,KAAKwnC,MAAQ0R,CACf,CACF,EAEAn7B,gBAAgB,CAAC+qB,0BAA2BgxB,kBAQ5CO,yBAAyBj5D,UAAUk5D,iBAAmB,SAAUnhC,EAAM7oB,EAAMqpD,GAC1E35D,KAAKooB,EAAIsgB,gBAAgBC,QAAQxP,EAAM7oB,EAAK8X,EAAG,EAAG,IAAMpoB,MACxDA,KAAK8jB,EAAI4kB,gBAAgBC,QAAQxP,EAAM7oB,EAAKwT,EAAG,EAAG,KAAM9jB,MACxDA,KAAKzH,EAAImwC,gBAAgBC,QAAQxP,EAAM7oB,EAAK/X,EAAG,EAAG,KAAMyH,MACxDA,KAAK6jB,EAAI6kB,gBAAgBC,QAAQxP,EAAM7oB,EAAKuT,GAAK,CAC/CnL,EAAG,GACF,EAAG,IAAM1Y,MACZA,KAAKgO,EAAI06B,gBAAgBC,QAAQxP,EAAM7oB,EAAKtC,GAAK,CAC/C0K,EAAG,GACF,EAAGiJ,UAAW3hB,MACjBA,KAAKwO,EAAI,IAAIsrD,iBAAiB3gC,EAAM7oB,EAAK9B,EAAGxO,MAC5CA,KAAK7O,MAAQwoE,EACb35D,KAAK66D,MAAQ,GACb76D,KAAK86D,gBAAgBnB,EAAQR,MAAO7oD,GACpCtQ,KAAK+6D,mBAAmBzqD,EAAMqpD,GAC9B35D,KAAKgpC,cAAgBhpC,KAAKgpC,WAC5B,EAEAqxB,yBAAyBj5D,UAAU05D,gBAAkB,SAAUE,EAAa1qD,GAC1E,IAAI2qD,EAAav3C,kBACbw3C,EAAQ11C,SAAoB,IAAXlV,EAAK6T,EAAU,iBAAmB,kBACvD+2C,EAAM9hE,aAAa,KAAM6hE,GACzBC,EAAM9hE,aAAa,eAAgB,OACnC8hE,EAAM9hE,aAAa,gBAAiB,kBACpC,IACIi9B,EACArP,EACAC,EAHA4zC,EAAQ,GAMZ,IAFA5zC,EAAkB,EAAX3W,EAAK9B,EAAEyV,EAET+C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBqP,EAAO7Q,SAAS,QAChB01C,EAAM/nD,YAAYkjB,GAClBwkC,EAAMx7D,KAAKg3B,GAGb2kC,EAAY5hE,aAAyB,OAAZkX,EAAKmX,GAAc,OAAS,SAAU,OAAS5J,kBAAoB,IAAMo9C,EAAa,KAC/Gj7D,KAAKm7D,GAAKD,EACVl7D,KAAKo7D,IAAMP,CACb,EAEAR,yBAAyBj5D,UAAU25D,mBAAqB,SAAUzqD,EAAMqpD,GACtE,GAAI35D,KAAKwO,EAAE4rD,cAAgBp6D,KAAKwO,EAAE0rD,aAAc,CAC9C,IAAI7jC,EACArP,EACAC,EACAmrC,EAAO5sC,SAAS,QAChB4rC,EAAc5rC,SAAS,QAC3B4sC,EAAKj/C,YAAYi+C,GACjB,IAAIiK,EAAY33C,kBACZ43C,EAAS53C,kBACb0uC,EAAKh5D,aAAa,KAAMkiE,GACxB,IAAIC,EAAS/1C,SAAoB,IAAXlV,EAAK6T,EAAU,iBAAmB,kBACxDo3C,EAAOniE,aAAa,KAAMiiE,GAC1BE,EAAOniE,aAAa,eAAgB,OACpCmiE,EAAOniE,aAAa,gBAAiB,kBACrC6tB,EAAO3W,EAAK9B,EAAEkK,EAAEA,EAAE,GAAGoL,EAAIxT,EAAK9B,EAAEkK,EAAEA,EAAE,GAAGoL,EAAElsB,OAAS0Y,EAAK9B,EAAEkK,EAAEA,EAAE9gB,OAC7D,IAAIijE,EAAQ76D,KAAK66D,MAEjB,IAAK7zC,EAAe,EAAX1W,EAAK9B,EAAEyV,EAAO+C,EAAIC,EAAMD,GAAK,GACpCqP,EAAO7Q,SAAS,SACXpsB,aAAa,aAAc,oBAChCmiE,EAAOpoD,YAAYkjB,GACnBwkC,EAAMx7D,KAAKg3B,GAGb+6B,EAAYh4D,aAAyB,OAAZkX,EAAKmX,GAAc,OAAS,SAAU,OAAS5J,kBAAoB,IAAMw9C,EAAY,KAE9F,OAAZ/qD,EAAKmX,KACP2pC,EAAYh4D,aAAa,iBAAkBs/D,YAAYpoD,EAAKkrD,IAAM,IAClEpK,EAAYh4D,aAAa,kBAAmBu/D,aAAaroD,EAAK4zC,IAAM,IAEpD,IAAZ5zC,EAAK4zC,IACPkN,EAAYh4D,aAAa,oBAAqBkX,EAAK2zC,KAIvDjkD,KAAKy7D,GAAKF,EACVv7D,KAAK07D,GAAKtJ,EACVpyD,KAAK27D,IAAMd,EACX76D,KAAKs7D,OAASA,EACd3B,EAAQP,OAAShI,CACnB,CACF,EAEArzC,gBAAgB,CAAC+qB,0BAA2BuxB,0BAW5Ct8C,gBAAgB,CAACs8C,yBAA0BvxB,0BAA2ByxB,4BAkBtE,IAAIqB,iBAAmB,SAA0B3H,EAAWr8D,EAAQmyB,EAAQkvB,GAC1E,GAAe,IAAXrhD,EACF,MAAO,GAGT,IAGI4P,EAHAq0D,EAAK5H,EAAU7rC,EACf0zC,EAAK7H,EAAUzsD,EACfklC,EAAKunB,EAAUlwC,EAEfg4C,EAAc,KAAO9iB,EAAIrF,wBAAwBlH,EAAG,GAAG,GAAIA,EAAG,GAAG,IAErE,IAAKllC,EAAI,EAAGA,EAAI5P,EAAQ4P,GAAK,EAC3Bu0D,GAAe,KAAO9iB,EAAIrF,wBAAwBioB,EAAGr0D,EAAI,GAAG,GAAIq0D,EAAGr0D,EAAI,GAAG,IAAM,IAAMyxC,EAAIrF,wBAAwBkoB,EAAGt0D,GAAG,GAAIs0D,EAAGt0D,GAAG,IAAM,IAAMyxC,EAAIrF,wBAAwBlH,EAAGllC,GAAG,GAAIklC,EAAGllC,GAAG,IAQ5L,OALIuiB,GAAUnyB,IACZmkE,GAAe,KAAO9iB,EAAIrF,wBAAwBioB,EAAGr0D,EAAI,GAAG,GAAIq0D,EAAGr0D,EAAI,GAAG,IAAM,IAAMyxC,EAAIrF,wBAAwBkoB,EAAG,GAAG,GAAIA,EAAG,GAAG,IAAM,IAAM7iB,EAAIrF,wBAAwBlH,EAAG,GAAG,GAAIA,EAAG,GAAG,IAC1LqvB,GAAe,KAGVA,CACT,EAEIC,oBAAsB,WACxB,IAAIC,EAAkB,IAAIxtB,OAEtBytB,EAAgB,IAAIztB,OAqCxB,SAAS0tB,EAAuBC,EAAWC,EAAUtI,IAC/CA,GAAgBsI,EAASlsB,UAAU/mB,GAAGoe,OACxC60B,EAASlsB,UAAU5+C,UAAU6H,aAAa,UAAWijE,EAASlsB,UAAU/mB,GAAGrF,IAGzEgwC,GAAgBsI,EAASlsB,UAAUwS,OAAOnb,OAC5C60B,EAASlsB,UAAU5+C,UAAU6H,aAAa,YAAaijE,EAASlsB,UAAUwS,OAAO5+B,EAAEiwB,UAEvF,CAEA,SAASsoB,IAAc,CAEvB,SAASC,EAAWH,EAAWC,EAAUtI,GACvC,IAAI/sC,EACAC,EACAu1C,EACAC,EACAxI,EACAnkB,EAGApE,EACAuN,EACAyjB,EACAhkD,EALAikD,EAAON,EAAStc,OAAOnoD,OACvBqhE,EAAMoD,EAASpD,IAMnB,IAAKnpB,EAAI,EAAGA,EAAI6sB,EAAM7sB,GAAK,EAAG,CAG5B,GAFA2sB,EAASJ,EAAS13B,GAAG6C,MAAQusB,EAEzBsI,EAAStc,OAAOjQ,GAAGmpB,IAAMA,EAAK,CAKhC,IAJAhgB,EAAMijB,EAAclwB,QACpB0wB,EAAazD,EAAMoD,EAAStc,OAAOjQ,GAAGmpB,IACtCvgD,EAAI2jD,EAASxD,aAAajhE,OAAS,GAE3B6kE,GAAUC,EAAa,GAC7BD,EAASJ,EAASxD,aAAangD,GAAGiqC,OAAOnb,MAAQi1B,EACjDC,GAAc,EACdhkD,GAAK,EAGP,GAAI+jD,EAIF,IAHAC,EAAazD,EAAMoD,EAAStc,OAAOjQ,GAAGmpB,IACtCvgD,EAAI2jD,EAASxD,aAAajhE,OAAS,EAE5B8kE,EAAa,GAClBzjB,EAAI/G,SAASmqB,EAASxD,aAAangD,GAAGiqC,OAAO5+B,GAC7C24C,GAAc,EACdhkD,GAAK,CAGX,MACEugC,EAAMgjB,EAMR,GAFAh1C,GADAykB,EAAQ2wB,EAAS13B,GAAG+G,OACPzO,QAETw/B,EAAQ,CAGV,IAFAD,EAAwB,GAEnBx1C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzBitC,EAAYvoB,EAAM7jB,OAAOb,KAERitC,EAAUh3B,UACzBu/B,GAAyBZ,iBAAiB3H,EAAWA,EAAUh3B,QAASg3B,EAAU/lD,EAAG+qC,IAIzFojB,EAAStD,OAAOjpB,GAAK0sB,CACvB,MACEA,EAAwBH,EAAStD,OAAOjpB,GAG1CusB,EAAStc,OAAOjQ,GAAGzrB,IAAsB,IAAjB+3C,EAAU3F,GAAc,GAAK+F,EACrDH,EAAStc,OAAOjQ,GAAGtI,KAAOi1B,GAAUJ,EAAStc,OAAOjQ,GAAGtI,IACzD,CACF,CAEA,SAASo1B,EAAWR,EAAWC,EAAUtI,GACvC,IAAI8I,EAAYR,EAASlrE,OAErBkrE,EAASnuD,EAAEs5B,MAAQusB,IACrB8I,EAAU1D,MAAM//D,aAAa,OAAQ,OAAS+nB,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,MAGzIs4C,EAASj0C,EAAEof,MAAQusB,IACrB8I,EAAU1D,MAAM//D,aAAa,eAAgBijE,EAASj0C,EAAErE,EAE5D,CAEA,SAAS+4C,EAAqBV,EAAWC,EAAUtI,GACjDgJ,EAAeX,EAAWC,EAAUtI,GACpCiJ,EAAaZ,EAAWC,EAAUtI,EACpC,CAEA,SAASgJ,EAAeX,EAAWC,EAAUtI,GAC3C,IAsBI8G,EACArzD,EACAmR,EACA0d,EA+CEgX,EAxEF6tB,EAAQmB,EAASlB,GACjB8B,EAAaZ,EAAS7tD,EAAE4rD,YACxB97B,EAAM+9B,EAASv4C,EAAEC,EACjBwa,EAAM89B,EAAS9jE,EAAEwrB,EAErB,GAAIs4C,EAASj0C,EAAEof,MAAQusB,EAAc,CACnC,IAAI51C,EAAwB,OAAjBi+C,EAAU30C,GAAc,eAAiB,iBACpD40C,EAASlrE,MAAMgoE,MAAM//D,aAAa+kB,EAAMk+C,EAASj0C,EAAErE,EACrD,CAEA,GAAIs4C,EAASv4C,EAAE0jB,MAAQusB,EAAc,CACnC,IAAImJ,EAAwB,IAAhBd,EAAUj4C,EAAU,KAAO,KACnCg5C,EAAkB,OAAVD,EAAiB,KAAO,KACpChC,EAAM9hE,aAAa8jE,EAAO5+B,EAAI,IAC9B48B,EAAM9hE,aAAa+jE,EAAO7+B,EAAI,IAE1B2+B,IAAeZ,EAAS7tD,EAAE0rD,eAC5BmC,EAASZ,GAAGriE,aAAa8jE,EAAO5+B,EAAI,IACpC+9B,EAASZ,GAAGriE,aAAa+jE,EAAO7+B,EAAI,IAExC,CAOA,GAAI+9B,EAAS7tD,EAAEwrD,OAASjG,EAAc,CACpC8G,EAAQwB,EAASjB,IACjB,IAAIgC,EAAUf,EAAS7tD,EAAEN,EAGzB,IAFAyK,EAAMkiD,EAAMjjE,OAEP4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,GACxB6uB,EAAOwkC,EAAMrzD,IACRpO,aAAa,SAAUgkE,EAAY,EAAJ51D,GAAS,KAC7C6uB,EAAKj9B,aAAa,aAAc,OAASgkE,EAAY,EAAJ51D,EAAQ,GAAK,IAAM41D,EAAY,EAAJ51D,EAAQ,GAAK,IAAM41D,EAAY,EAAJ51D,EAAQ,GAAK,IAExH,CAEA,GAAIy1D,IAAeZ,EAAS7tD,EAAEyrD,OAASlG,GAAe,CACpD,IAAIsJ,EAAUhB,EAAS7tD,EAAE4Z,EAUzB,IAFAzP,GALEkiD,EADEwB,EAAS7tD,EAAE0rD,aACLmC,EAASjB,IAETiB,EAASV,KAGP/jE,OAEP4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB6uB,EAAOwkC,EAAMrzD,GAER60D,EAAS7tD,EAAE0rD,cACd7jC,EAAKj9B,aAAa,SAAUikE,EAAY,EAAJ71D,GAAS,KAG/C6uB,EAAKj9B,aAAa,eAAgBikE,EAAY,EAAJ71D,EAAQ,GAEtD,CAEA,GAAoB,IAAhB40D,EAAUj4C,GACRk4C,EAAS9jE,EAAEivC,MAAQusB,KACrBmH,EAAM9hE,aAAa,KAAMmlC,EAAI,IAC7B28B,EAAM9hE,aAAa,KAAMmlC,EAAI,IAEzB0+B,IAAeZ,EAAS7tD,EAAE0rD,eAC5BmC,EAASZ,GAAGriE,aAAa,KAAMmlC,EAAI,IACnC89B,EAASZ,GAAGriE,aAAa,KAAMmlC,EAAI,WAevC,IATI89B,EAASv4C,EAAE0jB,MAAQ60B,EAAS9jE,EAAEivC,MAAQusB,KACxC1mB,EAAMjxC,KAAK8kB,KAAK9kB,KAAK4kB,IAAIsd,EAAI,GAAKC,EAAI,GAAI,GAAKniC,KAAK4kB,IAAIsd,EAAI,GAAKC,EAAI,GAAI,IACzE28B,EAAM9hE,aAAa,IAAKi0C,GAEpB4vB,IAAeZ,EAAS7tD,EAAE0rD,cAC5BmC,EAASZ,GAAGriE,aAAa,IAAKi0C,IAI9BgvB,EAAS9jE,EAAEivC,MAAQ60B,EAASx4C,EAAE2jB,MAAQ60B,EAASruD,EAAEw5B,MAAQusB,EAAc,CACpE1mB,IACHA,EAAMjxC,KAAK8kB,KAAK9kB,KAAK4kB,IAAIsd,EAAI,GAAKC,EAAI,GAAI,GAAKniC,KAAK4kB,IAAIsd,EAAI,GAAKC,EAAI,GAAI,KAG3E,IAAI++B,EAAMlhE,KAAKiqC,MAAM9H,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/CuD,EAAUw6B,EAASx4C,EAAEE,EAErB8d,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAGb,IAAIic,EAAOzQ,EAAMxL,EACbliC,EAAIvD,KAAKsqC,IAAI42B,EAAMjB,EAASruD,EAAE+V,GAAK+5B,EAAOxf,EAAI,GAC9C1+B,EAAIxD,KAAK0pC,IAAIw3B,EAAMjB,EAASruD,EAAE+V,GAAK+5B,EAAOxf,EAAI,GAClD48B,EAAM9hE,aAAa,KAAMuG,GACzBu7D,EAAM9hE,aAAa,KAAMwG,GAErBq9D,IAAeZ,EAAS7tD,EAAE0rD,eAC5BmC,EAASZ,GAAGriE,aAAa,KAAMuG,GAC/B08D,EAASZ,GAAGriE,aAAa,KAAMwG,GAEnC,CAGJ,CAEA,SAASo9D,EAAaZ,EAAWC,EAAUtI,GACzC,IAAI8I,EAAYR,EAASlrE,MACrBkzB,EAAIg4C,EAASh4C,EAEbA,IAAMA,EAAEmjB,MAAQusB,IAAiB1vC,EAAEk1C,UACrCsD,EAAU1D,MAAM//D,aAAa,mBAAoBirB,EAAEk1C,SACnDsD,EAAU1D,MAAM//D,aAAa,oBAAqBirB,EAAEo1C,WAAW,KAG7D4C,EAASnuD,IAAMmuD,EAASnuD,EAAEs5B,MAAQusB,IACpC8I,EAAU1D,MAAM//D,aAAa,SAAU,OAAS+nB,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,MAG3Is4C,EAASj0C,EAAEof,MAAQusB,IACrB8I,EAAU1D,MAAM//D,aAAa,iBAAkBijE,EAASj0C,EAAErE,IAGxDs4C,EAAS5X,EAAEjd,MAAQusB,KACrB8I,EAAU1D,MAAM//D,aAAa,eAAgBijE,EAAS5X,EAAE1gC,GAEpD84C,EAAUzD,QACZyD,EAAUzD,OAAOhgE,aAAa,eAAgBijE,EAAS5X,EAAE1gC,GAG/D,CAEA,MA7QS,CACPw5C,qBAGF,SAA8BjtD,GAC5B,OAAQA,EAAKmX,IACX,IAAK,KACH,OAAOm1C,EAET,IAAK,KACH,OAAOG,EAET,IAAK,KACH,OAAOD,EAET,IAAK,KACH,OAAOE,EAET,IAAK,KACL,IAAK,KACL,IAAK,KACL,IAAK,KACH,OAAOT,EAET,IAAK,KACH,OAAOJ,EAET,IAAK,KACH,OAAOG,EAET,QACE,OAAO,KAEb,EA6OF,CAnR0B,GAqR1B,SAASkB,gBAAgBltD,EAAMgjB,EAAYxL,GAEzC9nB,KAAK6nB,OAAS,GAEd7nB,KAAKguD,WAAa19C,EAAKuX,OAEvB7nB,KAAKy9D,WAAa,GAElBz9D,KAAKm4D,eAAiB,GAEtBn4D,KAAKiuD,UAAY,GAEjBjuD,KAAKw4D,kBAAoB,GAEzBx4D,KAAK09D,iBAAmB,GACxB19D,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,GAGnC9nB,KAAKy6D,aAAe,EACtB,CAyWA,SAASkD,YAAYv1C,EAAGw1C,EAAI/U,EAAIgV,EAAI9tB,EAAG9rB,GACrCjkB,KAAKooB,EAAIA,EACTpoB,KAAK49D,GAAKA,EACV59D,KAAK6oD,GAAKA,EACV7oD,KAAK69D,GAAKA,EACV79D,KAAK+vC,EAAIA,EACT/vC,KAAKikB,EAAIA,EACTjkB,KAAKwnC,KAAO,CACVpf,GAAG,EACHw1C,KAAMA,EACN/U,KAAMA,EACNgV,KAAMA,EACN9tB,GAAG,EACH9rB,GAAG,EAEP,CAkDA,SAAS65C,aAAa3kC,EAAM7oB,GAC1BtQ,KAAK+9D,SAAWvgD,oBAChBxd,KAAK+iC,GAAK,GACV/iC,KAAK+jB,EAAI,GACT/jB,KAAK+nC,IAAK,EACV/nC,KAAK6nC,eAAgB,EACrB7nC,KAAKwnC,MAAO,EAERl3B,EAAK+T,GAAK/T,EAAK+T,EAAEukB,MACnBt4B,EAAK+T,EAAI8U,EAAK7F,WAAWuV,YAAYF,QAAQr4B,EAAK+T,IAGpDrkB,KAAKsQ,KAAOA,EACZtQ,KAAKm5B,KAAOA,EACZn5B,KAAK8nB,KAAO9nB,KAAKm5B,KAAKrR,KACtB9nB,KAAKg+D,UAAY,EACjBh+D,KAAKi+D,WAAY,EACjBj+D,KAAKk+D,gBAAkB,EACvBl+D,KAAK2nC,gBAAkB,GACvB3nC,KAAKm+D,YAAc,CACjBC,OAAQ,EACRC,SAAUr+D,KAAKs+D,gBACfj9D,EAAG,GACH2+C,OAAQ,GACRC,QAAS,GACT4d,GAAI,GACJ72C,EAAG,GACHu3C,cAAe,GACfzuB,EAAG,GACH0uB,GAAI,EACJC,WAAY,GACZC,GAAI,GACJjD,GAAI,GACJ33C,EAAG,GACH+kC,GAAI,GACJ+U,GAAI,EACJz5C,EAAG,EACHg8B,GAAI,EACJvQ,GAAI,EACJ+uB,GAAI,KACJC,eAAe,EACfC,iBAAiB,EACjBC,iBAAiB,EACjBC,QAAS,EACTC,UAAW,EACXC,UAAW,GACXC,gBAAiB,EACjBh1C,YAAY,GAEdlqB,KAAKm/D,SAASn/D,KAAKm+D,YAAan+D,KAAKsQ,KAAK+T,EAAE3L,EAAE,GAAGoL,GAE5C9jB,KAAKo/D,kBACRp/D,KAAKq/D,iBAAiBr/D,KAAKm+D,YAE/B,CA9dApgD,gBAAgB,CAACouC,YAAa+E,iBAAkBoE,eAAgBO,cAAeN,iBAAkBnJ,aAAcoJ,sBAAuBgI,iBAEtIA,gBAAgBp8D,UAAUk+D,qBAAuB,WAAa,EAE9D9B,gBAAgBp8D,UAAUm+D,eAAiB,IAAI9wB,OAE/C+uB,gBAAgBp8D,UAAUo+D,yBAA2B,WAAa,EAElEhC,gBAAgBp8D,UAAUy2D,cAAgB,WACxC73D,KAAKy/D,aAAaz/D,KAAKguD,WAAYhuD,KAAKiuD,UAAWjuD,KAAKy6D,aAAcz6D,KAAKuuD,aAAc,EAAG,IAAI,GAChGvuD,KAAK0/D,oBACP,EAMAlC,gBAAgBp8D,UAAUs+D,mBAAqB,WAC7C,IAAIl4D,EAEAijC,EACAzjB,EAEA71B,EAJAwnB,EAAM3Y,KAAK6nB,OAAOjwB,OAGlBqvB,EAAOjnB,KAAKy9D,WAAW7lE,OAEvB+nE,EAAa,GACbC,GAAc,EAElB,IAAK54C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAK5B,IAJA71B,EAAQ6O,KAAKy9D,WAAWz2C,GACxB44C,GAAc,EACdD,EAAW/nE,OAAS,EAEf4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,GAGa,KAFrCijC,EAAQzqC,KAAK6nB,OAAOrgB,IAEVu4C,OAAOx8C,QAAQpS,KACvBwuE,EAAWtgE,KAAKorC,GAChBm1B,EAAcn1B,EAAMzB,aAAe42B,GAInCD,EAAW/nE,OAAS,GAAKgoE,GAC3B5/D,KAAK6/D,oBAAoBF,EAE7B,CACF,EAEAnC,gBAAgBp8D,UAAUy+D,oBAAsB,SAAUh4C,GACxD,IAAIrgB,EACAmR,EAAMkP,EAAOjwB,OAEjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBqgB,EAAOrgB,GAAGyuC,eAEd,EAEAunB,gBAAgBp8D,UAAU0+D,mBAAqB,SAAUxvD,EAAMwoD,GAE7D,IAAIiH,EACApG,EAAU,IAAIT,aAAa5oD,EAAMwoD,GACjCkC,EAAcrB,EAAQR,MAgD1B,MA9CgB,OAAZ7oD,EAAKmX,GACPs4C,EAAc,IAAIrG,mBAAmB15D,KAAMsQ,EAAMqpD,GAC5B,OAAZrpD,EAAKmX,GACds4C,EAAc,IAAInG,iBAAiB55D,KAAMsQ,EAAMqpD,GAC1B,OAAZrpD,EAAKmX,IAA2B,OAAZnX,EAAKmX,IAElCs4C,EAAc,IADwB,OAAZzvD,EAAKmX,GAAc4yC,yBAA2BE,4BAClCv6D,KAAMsQ,EAAMqpD,GAClD35D,KAAKszB,WAAWC,KAAKpgB,YAAY4sD,EAAY5E,IAEzC4E,EAAYzE,SACdt7D,KAAKszB,WAAWC,KAAKpgB,YAAY4sD,EAAYrE,IAC7C17D,KAAKszB,WAAWC,KAAKpgB,YAAY4sD,EAAYtE,IAC7CT,EAAY5hE,aAAa,OAAQ,OAASykB,kBAAoB,IAAMkiD,EAAYzE,OAAS,OAEtE,OAAZhrD,EAAKmX,KACds4C,EAAc,IAAIlG,eAAe75D,KAAMsQ,EAAMqpD,IAG/B,OAAZrpD,EAAKmX,IAA2B,OAAZnX,EAAKmX,KAC3BuzC,EAAY5hE,aAAa,iBAAkBs/D,YAAYpoD,EAAKkrD,IAAM,IAClER,EAAY5hE,aAAa,kBAAmBu/D,aAAaroD,EAAK4zC,IAAM,IACpE8W,EAAY5hE,aAAa,eAAgB,KAEzB,IAAZkX,EAAK4zC,IACP8W,EAAY5hE,aAAa,oBAAqBkX,EAAK2zC,KAIxC,IAAX3zC,EAAK0T,GACPg3C,EAAY5hE,aAAa,YAAa,WAGpCkX,EAAKkmD,IACPwE,EAAY5hE,aAAa,KAAMkX,EAAKkmD,IAGlClmD,EAAK0Z,IACPgxC,EAAY5hE,aAAa,QAASkX,EAAK0Z,IAGrC1Z,EAAK+9C,KACP2M,EAAY7pE,MAAM,kBAAoBg6D,aAAa76C,EAAK+9C,KAG1DruD,KAAKy9D,WAAWp+D,KAAKs6D,GACrB35D,KAAKggE,sBAAsB1vD,EAAMyvD,GAC1BA,CACT,EAEAvC,gBAAgBp8D,UAAU6+D,mBAAqB,SAAU3vD,GACvD,IAAIyvD,EAAc,IAAIvF,eActB,OAZIlqD,EAAKkmD,IACPuJ,EAAYrF,GAAGthE,aAAa,KAAMkX,EAAKkmD,IAGrClmD,EAAK0Z,IACP+1C,EAAYrF,GAAGthE,aAAa,QAASkX,EAAK0Z,IAGxC1Z,EAAK+9C,KACP0R,EAAYrF,GAAGvpE,MAAM,kBAAoBg6D,aAAa76C,EAAK+9C,KAGtD0R,CACT,EAEAvC,gBAAgBp8D,UAAU8+D,uBAAyB,SAAU5vD,EAAM/e,GACjE,IAAI4uE,EAAoB/nB,yBAAyBqB,qBAAqBz5C,KAAMsQ,EAAMtQ,MAC9E+/D,EAAc,IAAIpF,iBAAiBwF,EAAmBA,EAAkB/3C,EAAG72B,GAE/E,OADAyO,KAAKggE,sBAAsB1vD,EAAMyvD,GAC1BA,CACT,EAEAvC,gBAAgBp8D,UAAUg/D,mBAAqB,SAAU9vD,EAAM+vD,EAAiBvH,GAC9E,IAAIrxC,EAAK,EAEO,OAAZnX,EAAKmX,GACPA,EAAK,EACgB,OAAZnX,EAAKmX,GACdA,EAAK,EACgB,OAAZnX,EAAKmX,KACdA,EAAK,GAGP,IACIs4C,EAAc,IAAInH,aAAayH,EAAiBvH,EADhC7tB,qBAAqB4mB,aAAa7xD,KAAMsQ,EAAMmX,EAAIznB,OAKtE,OAHAA,KAAK6nB,OAAOxoB,KAAK0gE,GACjB//D,KAAKk4D,oBAAoB6H,GACzB//D,KAAKggE,sBAAsB1vD,EAAMyvD,GAC1BA,CACT,EAEAvC,gBAAgBp8D,UAAU4+D,sBAAwB,SAAU1vD,EAAM4R,GAIhE,IAHA,IAAI1a,EAAI,EACJmR,EAAM3Y,KAAK09D,iBAAiB9lE,OAEzB4P,EAAImR,GAAK,CACd,GAAI3Y,KAAK09D,iBAAiBl2D,GAAG0a,UAAYA,EACvC,OAGF1a,GAAK,CACP,CAEAxH,KAAK09D,iBAAiBr+D,KAAK,CACzBsG,GAAIq2D,oBAAoBuB,qBAAqBjtD,GAC7C4R,QAASA,EACT5R,KAAMA,GAEV,EAEAktD,gBAAgBp8D,UAAUk/D,iBAAmB,SAAUP,GACrD,IACI/4C,EADA9G,EAAM6/C,EAAYhgB,OAElB94B,EAAOjnB,KAAKy9D,WAAW7lE,OAE3B,IAAKovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACpBhnB,KAAKy9D,WAAWz2C,GAAG+C,QACtB7J,EAAI7gB,KAAKW,KAAKy9D,WAAWz2C,GAG/B,EAEAw2C,gBAAgBp8D,UAAU8gD,aAAe,WAEvC,IAAI16C,EADJxH,KAAK6nC,eAAgB,EAErB,IAAIlvB,EAAM3Y,KAAKiuD,UAAUr2D,OAEzB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKy6D,aAAajzD,GAAKxH,KAAKiuD,UAAUzmD,GAOxC,IAJAxH,KAAKy/D,aAAaz/D,KAAKguD,WAAYhuD,KAAKiuD,UAAWjuD,KAAKy6D,aAAcz6D,KAAKuuD,aAAc,EAAG,IAAI,GAChGvuD,KAAK0/D,qBACL/mD,EAAM3Y,KAAK+oC,kBAAkBnxC,OAExB4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK+oC,kBAAkBvhC,GAAG6gC,WAG5BroC,KAAKs4D,iBACP,EAEAkF,gBAAgBp8D,UAAUq+D,aAAe,SAAUv/C,EAAK+tC,EAAWwM,EAAclpE,EAAWunE,EAAOD,EAAc0H,GAC/G,IACI/4D,EAEAwf,EACAC,EAGAu5C,EACAC,EACAC,EATAL,EAAkB,GAAGxtE,OAAOgmE,GAE5BlgD,EAAMuH,EAAItoB,OAAS,EAGnB+oE,EAAY,GACZC,EAAe,GAKnB,IAAKp5D,EAAImR,EAAKnR,GAAK,EAAGA,GAAK,EAAG,CAS5B,IARAk5D,EAAe1gE,KAAKu4D,uBAAuBr4C,EAAI1Y,KAK7CymD,EAAUzmD,GAAKizD,EAAaiG,EAAe,GAF3CxgD,EAAI1Y,GAAGk6C,QAAU6e,EAKD,OAAdrgD,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,GAC5Fi5C,EAGHzS,EAAUzmD,GAAGrW,MAAM44B,QAAS,EAF5BkkC,EAAUzmD,GAAKxH,KAAK8/D,mBAAmB5/C,EAAI1Y,GAAIsxD,GAK7C54C,EAAI1Y,GAAGk6C,SACLuM,EAAUzmD,GAAGrW,MAAMgoE,MAAMvgE,aAAerH,GAC1CA,EAAU4hB,YAAY86C,EAAUzmD,GAAGrW,MAAMgoE,OAI7CwH,EAAUthE,KAAK4uD,EAAUzmD,GAAGrW,YACvB,GAAkB,OAAd+uB,EAAI1Y,GAAGigB,GAAa,CAC7B,GAAKi5C,EAKH,IAFAz5C,EAAOgnC,EAAUzmD,GAAG7G,GAAG/I,OAElBovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBinC,EAAUzmD,GAAGizD,aAAazzC,GAAKinC,EAAUzmD,GAAG7G,GAAGqmB,QALjDinC,EAAUzmD,GAAKxH,KAAKigE,mBAAmB//C,EAAI1Y,IAS7CxH,KAAKy/D,aAAav/C,EAAI1Y,GAAG7G,GAAIstD,EAAUzmD,GAAG7G,GAAIstD,EAAUzmD,GAAGizD,aAAcxM,EAAUzmD,GAAGkzD,GAAI5B,EAAQ,EAAGuH,EAAiBE,GAElHrgD,EAAI1Y,GAAGk6C,SACLuM,EAAUzmD,GAAGkzD,GAAG9hE,aAAerH,GACjCA,EAAU4hB,YAAY86C,EAAUzmD,GAAGkzD,GAGzC,KAAyB,OAAdx6C,EAAI1Y,GAAGigB,IACXi5C,IACHzS,EAAUzmD,GAAKxH,KAAKkgE,uBAAuBhgD,EAAI1Y,GAAIjW,IAGrDivE,EAAmBvS,EAAUzmD,GAAG2oC,UAChCkwB,EAAgBhhE,KAAKmhE,IACE,OAAdtgD,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAC7Ei5C,IACHzS,EAAUzmD,GAAKxH,KAAKogE,mBAAmBlgD,EAAI1Y,GAAI64D,EAAiBvH,IAGlE94D,KAAKsgE,iBAAiBrS,EAAUzmD,KACT,OAAd0Y,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IACzHi5C,GAMHD,EAAWxS,EAAUzmD,IACZuiB,QAAS,IANlB02C,EAAWjrB,eAAeG,YAAYz1B,EAAI1Y,GAAGigB,KACpC+P,KAAKx3B,KAAMkgB,EAAI1Y,IACxBymD,EAAUzmD,GAAKi5D,EACfzgE,KAAKm4D,eAAe94D,KAAKohE,IAM3BG,EAAavhE,KAAKohE,IACK,OAAdvgD,EAAI1Y,GAAGigB,KACXi5C,GAOHD,EAAWxS,EAAUzmD,IACZuiB,QAAS,GAPlB02C,EAAWjrB,eAAeG,YAAYz1B,EAAI1Y,GAAGigB,IAC7CwmC,EAAUzmD,GAAKi5D,EACfA,EAASjpC,KAAKx3B,KAAMkgB,EAAK1Y,EAAGymD,GAC5BjuD,KAAKm4D,eAAe94D,KAAKohE,GACzBF,GAAS,GAMXK,EAAavhE,KAAKohE,IAGpBzgE,KAAKy4D,oBAAoBv4C,EAAI1Y,GAAIA,EAAI,EACvC,CAIA,IAFAmR,EAAMgoD,EAAU/oE,OAEX4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBm5D,EAAUn5D,GAAGuiB,QAAS,EAKxB,IAFApR,EAAMioD,EAAahpE,OAEd4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBo5D,EAAap5D,GAAGuiB,QAAS,CAE7B,EAEAyzC,gBAAgBp8D,UAAU02D,mBAAqB,WAE7C,IAAItwD,EADJxH,KAAKs4D,kBAEL,IAAI3/C,EAAM3Y,KAAKy9D,WAAW7lE,OAE1B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKy9D,WAAWj2D,GAAGwkC,QAKrB,IAFAhsC,KAAK6gE,cAEAr5D,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,GACpBxH,KAAKy9D,WAAWj2D,GAAGggC,MAAQxnC,KAAK6nC,iBAC9B7nC,KAAKy9D,WAAWj2D,GAAG4xD,SACrBp5D,KAAKy9D,WAAWj2D,GAAG4xD,OAAOhgE,aAAa,IAAK4G,KAAKy9D,WAAWj2D,GAAG6c,GAE/DrkB,KAAKy9D,WAAWj2D,GAAG6c,EAAI,OAASrkB,KAAKy9D,WAAWj2D,GAAG6c,GAGrDrkB,KAAKy9D,WAAWj2D,GAAG2xD,MAAM//D,aAAa,IAAK4G,KAAKy9D,WAAWj2D,GAAG6c,GAAK,QAGzE,EAEAm5C,gBAAgBp8D,UAAUy/D,YAAc,WACtC,IAAIr5D,EAEAs5D,EADAnoD,EAAM3Y,KAAK09D,iBAAiB9lE,OAGhC,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBs5D,EAAkB9gE,KAAK09D,iBAAiBl2D,IAEnCxH,KAAK6nC,eAAiBi5B,EAAgB5+C,QAAQ8mB,eAAyC,IAAzB83B,EAAgBxwD,MACjFwwD,EAAgBn7D,GAAGm7D,EAAgBxwD,KAAMwwD,EAAgB5+C,QAASliB,KAAK6nC,cAG7E,EAEA21B,gBAAgBp8D,UAAUutB,QAAU,WAClC3uB,KAAK82D,qBACL92D,KAAKguD,WAAa,KAClBhuD,KAAKiuD,UAAY,IACnB,EAmBA0P,YAAYv8D,UAAU2/D,OAAS,SAAU34C,EAAGw1C,EAAI/U,EAAIgV,EAAI9tB,EAAG9rB,GACzDjkB,KAAKwnC,KAAKpf,GAAI,EACdpoB,KAAKwnC,KAAKo2B,IAAK,EACf59D,KAAKwnC,KAAKqhB,IAAK,EACf7oD,KAAKwnC,KAAKq2B,IAAK,EACf79D,KAAKwnC,KAAKuI,GAAI,EACd/vC,KAAKwnC,KAAKvjB,GAAI,EACd,IAAI+8C,GAAU,EAsCd,OApCIhhE,KAAKooB,IAAMA,IACbpoB,KAAKooB,EAAIA,EACTpoB,KAAKwnC,KAAKpf,GAAI,EACd44C,GAAU,GAGRhhE,KAAK49D,KAAOA,IACd59D,KAAK49D,GAAKA,EACV59D,KAAKwnC,KAAKo2B,IAAK,EACfoD,GAAU,GAGRhhE,KAAK6oD,KAAOA,IACd7oD,KAAK6oD,GAAKA,EACV7oD,KAAKwnC,KAAKqhB,IAAK,EACfmY,GAAU,GAGRhhE,KAAK69D,KAAOA,IACd79D,KAAK69D,GAAKA,EACV79D,KAAKwnC,KAAKq2B,IAAK,EACfmD,GAAU,GAGRhhE,KAAK+vC,IAAMA,IACb/vC,KAAK+vC,EAAIA,EACT/vC,KAAKwnC,KAAKuI,GAAI,EACdixB,GAAU,IAGR/8C,EAAErsB,QAAWoI,KAAKikB,EAAE,KAAOA,EAAE,IAAMjkB,KAAKikB,EAAE,KAAOA,EAAE,IAAMjkB,KAAKikB,EAAE,KAAOA,EAAE,IAAMjkB,KAAKikB,EAAE,KAAOA,EAAE,IAAMjkB,KAAKikB,EAAE,MAAQA,EAAE,KAAOjkB,KAAKikB,EAAE,MAAQA,EAAE,MAChJjkB,KAAKikB,EAAIA,EACTjkB,KAAKwnC,KAAKvjB,GAAI,EACd+8C,GAAU,GAGLA,CACT,EA0DAlD,aAAa18D,UAAUk9D,gBAAkB,CAAC,EAAG,GAE7CR,aAAa18D,UAAU+9D,SAAW,SAAU3+C,EAAKlQ,GAC/C,IAAK,IAAIwT,KAAKxT,EACRvJ,OAAO3F,UAAUsN,eAAe7L,KAAKyN,EAAMwT,KAC7CtD,EAAIsD,GAAKxT,EAAKwT,IAIlB,OAAOtD,CACT,EAEAs9C,aAAa18D,UAAU6/D,eAAiB,SAAU3wD,GAC3CA,EAAK4Z,YACRlqB,KAAKq/D,iBAAiB/uD,GAGxBtQ,KAAKm+D,YAAc7tD,EACnBtQ,KAAKm+D,YAAYE,SAAWr+D,KAAKm+D,YAAYE,UAAYr+D,KAAKs+D,gBAC9Dt+D,KAAKwnC,MAAO,CACd,EAEAs2B,aAAa18D,UAAUg+D,eAAiB,WACtC,OAAOp/D,KAAKkhE,iBACd,EAEApD,aAAa18D,UAAU8/D,gBAAkB,WAOvC,OANAlhE,KAAK+nC,GAAK/nC,KAAKsQ,KAAK+T,EAAE3L,EAAE9gB,OAAS,EAE7BoI,KAAK+nC,IACP/nC,KAAKgoC,UAAUhoC,KAAKmhE,iBAAiBlpE,KAAK+H,OAGrCA,KAAK+nC,EACd,EAEA+1B,aAAa18D,UAAU4mC,UAAY,SAAUC,GAC3CjoC,KAAK2nC,gBAAgBtoC,KAAK4oC,GAC1BjoC,KAAKm5B,KAAK+O,mBAAmBloC,KAC/B,EAEA89D,aAAa18D,UAAUinC,SAAW,SAAU+4B,GAC1C,GAAKphE,KAAKm5B,KAAK7F,WAAWoU,UAAY1nC,KAAK0nC,SAAY1nC,KAAK2nC,gBAAgB/vC,QAAYwpE,EAAxF,CAIAphE,KAAKm+D,YAAYh6C,EAAInkB,KAAKsQ,KAAK+T,EAAE3L,EAAE1Y,KAAKg+D,WAAWl6C,EAAEK,EACrD,IAAIk9C,EAAerhE,KAAKm+D,YACpBmD,EAAethE,KAAKg+D,UAExB,GAAIh+D,KAAK4nC,KACP5nC,KAAKihE,eAAejhE,KAAKm+D,iBAD3B,CAOA,IAAI32D,EAFJxH,KAAK4nC,MAAO,EACZ5nC,KAAKwnC,MAAO,EAEZ,IAAI7uB,EAAM3Y,KAAK2nC,gBAAgB/vC,OAC3BkwC,EAAas5B,GAAephE,KAAKsQ,KAAK+T,EAAE3L,EAAE1Y,KAAKg+D,WAAWl6C,EAE9D,IAAKtc,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAGtBsgC,EADEw5B,IAAiBthE,KAAKg+D,UACXh+D,KAAK2nC,gBAAgBngC,GAAGsgC,EAAYA,EAAW3jB,GAE/CnkB,KAAK2nC,gBAAgBngC,GAAGxH,KAAKm+D,YAAar2B,EAAW3jB,GAIlEk9C,IAAiBv5B,GACnB9nC,KAAKihE,eAAen5B,GAGtB9nC,KAAK+jB,EAAI/jB,KAAKm+D,YACdn+D,KAAK+iC,GAAK/iC,KAAK+jB,EACf/jB,KAAK4nC,MAAO,EACZ5nC,KAAK0nC,QAAU1nC,KAAKm5B,KAAK7F,WAAWoU,OAxBpC,CATA,CAkCF,EAEAo2B,aAAa18D,UAAU+/D,iBAAmB,WAMxC,IALA,IAAII,EAAWvhE,KAAKsQ,KAAK+T,EAAE3L,EACvBgqB,EAAW1iC,KAAKm5B,KAAKrR,KAAKmf,cAC1Bz/B,EAAI,EACJmR,EAAM4oD,EAAS3pE,OAEZ4P,GAAKmR,EAAM,KACZnR,IAAMmR,EAAM,GAAK4oD,EAAS/5D,EAAI,GAAG2c,EAAIue,IAIzCl7B,GAAK,EAOP,OAJIxH,KAAKg+D,YAAcx2D,IACrBxH,KAAKg+D,UAAYx2D,GAGZxH,KAAKsQ,KAAK+T,EAAE3L,EAAE1Y,KAAKg+D,WAAWl6C,CACvC,EAEAg6C,aAAa18D,UAAUogE,eAAiB,SAAUtoE,GAUhD,IATA,IAGIsuD,EACAH,EAJAoa,EAAkB,GAClBj6D,EAAI,EACJmR,EAAMzf,EAAKtB,OAGX8pE,GAAgB,EAChBC,GAAoB,EACpBC,EAAe,GAEZp6D,EAAImR,GACT+oD,EAAgBC,EAChBA,GAAoB,EACpBna,EAAWtuD,EAAKud,WAAWjP,GAC3Bo6D,EAAe1oE,EAAKH,OAAOyO,GAEvB+8C,YAAYmD,oBAAoBF,GAClCka,GAAgB,EACPla,GAAY,OAAUA,GAAY,MACvCjD,YAAYqD,eAAe1uD,EAAMsO,GACnCo6D,EAAe1oE,EAAKzG,OAAO+U,EAAG,KAE9B6/C,EAAiBnuD,EAAKud,WAAWjP,EAAI,KAEf,OAAU6/C,GAAkB,QAC5C9C,YAAY4C,WAAWK,EAAUH,IACnCua,EAAe1oE,EAAKzG,OAAO+U,EAAG,GAC9Bk6D,GAAgB,GAEhBE,EADSrd,YAAYkD,YAAYvuD,EAAKzG,OAAO+U,EAAG,IACjCtO,EAAKzG,OAAO+U,EAAG,GAEftO,EAAKzG,OAAO+U,EAAG,IAI3BggD,EAAW,OACpBH,EAAiBnuD,EAAKud,WAAWjP,EAAI,GAEjC+8C,YAAYsD,oBAAoBL,KAClCka,GAAgB,IAETnd,YAAYgD,kBAAkBC,KACvCka,GAAgB,EAChBC,GAAoB,GAGlBD,GACFD,EAAgBA,EAAgB7pE,OAAS,IAAMgqE,EAC/CF,GAAgB,GAEhBD,EAAgBpiE,KAAKuiE,GAGvBp6D,GAAKo6D,EAAahqE,OAGpB,OAAO6pE,CACT,EAEA3D,aAAa18D,UAAUi+D,iBAAmB,SAAUx2C,GAClDA,EAAaqB,YAAa,EAC1B,IAGI1iB,EACAmR,EACAkpD,EAEA5sD,EAQA+R,EACAC,EAEAiC,EAlBAqL,EAAcv0B,KAAKm5B,KAAK7F,WAAWiB,YACnCjkB,EAAOtQ,KAAKsQ,KACZwxD,EAAU,GAIVl/D,EAAQ,EAERm/D,EAAiBzxD,EAAKy/B,EAAEvhC,EACxBwzD,EAAc,EACdC,EAAa,EACbC,EAAc,EACdzD,EAAa,GACb0D,EAAY,EACZC,EAAe,EAGftiB,EAAWvrB,EAAY20B,cAAcrgC,EAAaxnB,GAElD04D,EAAU,EACVhU,EAAYlG,kBAAkBC,GAClCj3B,EAAao3B,QAAU8F,EAAU7F,OACjCr3B,EAAam3B,OAAS+F,EAAU50D,MAChC03B,EAAam2C,UAAYn2C,EAAa/E,EACtC+E,EAAao2C,UAAYj/D,KAAKwhE,eAAe34C,EAAa1E,GAC1DxL,EAAMkQ,EAAao2C,UAAUrnE,OAC7BixB,EAAaq2C,gBAAkBr2C,EAAa21C,GAC5C,IACIhX,EADA6a,EAAiBx5C,EAAas3B,GAAK,IAAOt3B,EAAam2C,UAG3D,GAAIn2C,EAAa+mB,GAOf,IANA,IAGI0yB,EACArD,EAJAvhD,GAAO,EACP2gD,EAAWx1C,EAAa+mB,GAAG,GAC3B2yB,EAAY15C,EAAa+mB,GAAG,GAIzBlyB,GAAM,CAEX4kD,EAAgB,EAChBH,EAAY,EACZxpD,GAHAsmD,EAAYj/D,KAAKwhE,eAAe34C,EAAa1E,IAG7BvsB,OAChByqE,EAAiBx5C,EAAas3B,GAAK,IAAOt3B,EAAam2C,UACvD,IAAIwD,GAAkB,EAEtB,IAAKh7D,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBggD,EAAWyX,EAAUz3D,GAAGiP,WAAW,GACnCorD,GAAc,EAEO,MAAjB5C,EAAUz3D,GACZg7D,EAAiBh7D,EACK,KAAbggD,GAAgC,IAAbA,IAC5B2a,EAAY,EACZN,GAAc,EACdS,GAAiBz5C,EAAaq2C,iBAA4C,IAAzBr2C,EAAam2C,WAG5DzqC,EAAYtL,OACdC,EAAWqL,EAAYu0B,YAAYmW,EAAUz3D,GAAIs4C,EAASE,OAAQF,EAASmG,SAC3E8T,EAAU8H,EAAc,EAAI34C,EAASu7B,EAAI57B,EAAam2C,UAAY,KAGlEjF,EAAUxlC,EAAY+xB,YAAY2Y,EAAUz3D,GAAIqhB,EAAaxnB,EAAGwnB,EAAam2C,WAG3EmD,EAAYpI,EAAUsE,GAA6B,MAAjBY,EAAUz3D,KACtB,IAApBg7D,EACF7pD,GAAO,EAEPnR,EAAIg7D,EAGNF,GAAiBz5C,EAAaq2C,iBAA4C,IAAzBr2C,EAAam2C,UAC9DC,EAAUvvC,OAAOloB,EAAGg7D,IAAmBh7D,EAAI,EAAI,EAAG,MAElDg7D,GAAkB,EAClBL,EAAY,IAEZA,GAAapI,EACboI,GAAaE,GAIjBC,GAAiBxiB,EAASse,OAASv1C,EAAam2C,UAAY,IAExDh/D,KAAKi+D,WAAap1C,EAAam2C,UAAYh/D,KAAKk+D,iBAAmBqE,EAAYD,GACjFz5C,EAAam2C,WAAa,EAC1Bn2C,EAAaq2C,gBAAkBr2C,EAAam2C,UAAYn2C,EAAa21C,GAAK31C,EAAa/E,IAEvF+E,EAAao2C,UAAYA,EACzBtmD,EAAMkQ,EAAao2C,UAAUrnE,OAC7B8lB,GAAO,EAEX,CAGFykD,GAAaE,EACbtI,EAAU,EACV,IACI0I,EADAC,EAAoB,EAGxB,IAAKl7D,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EA6CxB,GA5CAq6D,GAAc,EAIG,MAFjBra,GADAib,EAAc55C,EAAao2C,UAAUz3D,IACdiP,WAAW,KAEE,IAAb+wC,GACrBkb,EAAoB,EACpBjE,EAAWp/D,KAAK8iE,GAChBC,EAAeD,EAAYC,EAAeD,EAAYC,EACtDD,GAAa,EAAIE,EACjBptD,EAAM,GACN4sD,GAAc,EACdK,GAAe,GAEfjtD,EAAMwtD,EAGJluC,EAAYtL,OACdC,EAAWqL,EAAYu0B,YAAY2Z,EAAa3iB,EAASE,OAAQzrB,EAAY20B,cAAcrgC,EAAaxnB,GAAG4kD,SAC3G8T,EAAU8H,EAAc,EAAI34C,EAASu7B,EAAI57B,EAAam2C,UAAY,KAIlEjF,EAAUxlC,EAAY+xB,YAAYrxC,EAAK4T,EAAaxnB,EAAGwnB,EAAam2C,WAIlD,MAAhByD,EACFC,GAAqB3I,EAAUsI,GAE/BF,GAAapI,EAAUsI,EAAiBK,EACxCA,EAAoB,GAGtBZ,EAAQziE,KAAK,CACXywC,EAAGiqB,EACH4I,GAAI5I,EACJhmE,IAAKiuE,EACLlpD,EAAG+oD,EACHe,UAAW,GACX3tD,IAAKA,EACL4a,KAAMqyC,EACNW,sBAAuB,IAGH,GAAlBd,GAIF,GAFAC,GAAejI,EAEH,KAAR9kD,GAAsB,MAARA,GAAezN,IAAMmR,EAAM,EAAG,CAK9C,IAJY,KAAR1D,GAAsB,MAARA,IAChB+sD,GAAejI,GAGVkI,GAAcz6D,GACnBs6D,EAAQG,GAAYU,GAAKX,EACzBF,EAAQG,GAAYp+B,IAAMjhC,EAC1Bk/D,EAAQG,GAAYa,MAAQ/I,EAC5BkI,GAAc,EAGhBr/D,GAAS,EACTo/D,EAAc,CAChB,OACK,GAAsB,GAAlBD,GAIT,GAFAC,GAAejI,EAEH,KAAR9kD,GAAczN,IAAMmR,EAAM,EAAG,CAK/B,IAJY,KAAR1D,IACF+sD,GAAejI,GAGVkI,GAAcz6D,GACnBs6D,EAAQG,GAAYU,GAAKX,EACzBF,EAAQG,GAAYp+B,IAAMjhC,EAC1Bk/D,EAAQG,GAAYa,MAAQ/I,EAC5BkI,GAAc,EAGhBD,EAAc,EACdp/D,GAAS,CACX,OAEAk/D,EAAQl/D,GAAOihC,IAAMjhC,EACrBk/D,EAAQl/D,GAAOkgE,MAAQ,EACvBlgE,GAAS,EAQb,GAJAimB,EAAainB,EAAIgyB,EACjBM,EAAeD,EAAYC,EAAeD,EAAYC,EACtD3D,EAAWp/D,KAAK8iE,GAEZt5C,EAAa+mB,GACf/mB,EAAaw1C,SAAWx1C,EAAa+mB,GAAG,GACxC/mB,EAAa01C,cAAgB,OAI7B,OAFA11C,EAAaw1C,SAAW+D,EAEhBv5C,EAAa7B,GACnB,KAAK,EACH6B,EAAa01C,eAAiB11C,EAAaw1C,SAC3C,MAEF,KAAK,EACHx1C,EAAa01C,eAAiB11C,EAAaw1C,SAAW,EACtD,MAEF,QACEx1C,EAAa01C,cAAgB,EAInC11C,EAAa41C,WAAaA,EAC1B,IACIsE,EACAC,EAEAC,EACAp/B,EALAq/B,EAAY5yD,EAAKtC,EAGrBiZ,EAAOi8C,EAAUtrE,OAGjB,IAAIurE,EAAU,GAEd,IAAKn8C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAkB5B,KAjBA+7C,EAAeG,EAAUl8C,IAERhZ,EAAE66C,KACjBhgC,EAAag2C,iBAAkB,GAG7BkE,EAAa/0D,EAAE4vD,KACjB/0C,EAAai2C,iBAAkB,IAG7BiE,EAAa/0D,EAAE6vD,IAAMkF,EAAa/0D,EAAEo1D,IAAML,EAAa/0D,EAAEq1D,IAAMN,EAAa/0D,EAAEs1D,MAChFz6C,EAAa+1C,eAAgB,GAG/B/6B,EAAM,EACNo/B,EAAQF,EAAaj/C,EAAE7V,EAElBzG,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,GACxBw7D,EAAalB,EAAQt6D,IACVo7D,UAAU57C,GAAK6c,GAEb,GAATo/B,GAAiC,KAAnBD,EAAW/tD,KAAuB,GAATguD,GAAiC,KAAnBD,EAAW/tD,KAAiC,MAAnB+tD,EAAW/tD,KAAwB,GAATguD,IAAeD,EAAWlqD,GAAuB,KAAlBkqD,EAAW/tD,KAAczN,GAAKmR,EAAM,IAAe,GAATsqD,IAAeD,EAAWlqD,GAAKtR,GAAKmR,EAAM,MAEnM,IAAtBoqD,EAAaj/C,EAAEy/C,IACjBJ,EAAQ9jE,KAAKwkC,GAGfA,GAAO,GAIXvzB,EAAKtC,EAAEgZ,GAAGlD,EAAE0/C,WAAa3/B,EACzB,IACI4/B,EADAC,GAAc,EAGlB,GAA0B,IAAtBX,EAAaj/C,EAAEy/C,GACjB,IAAK/7D,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAGpBk8D,IAFJV,EAAalB,EAAQt6D,IAEQo7D,UAAU57C,KAErC08C,EAAaV,EAAWJ,UAAU57C,GAClCy8C,EAASN,EAAQzzC,OAAOtzB,KAAKib,MAAMjb,KAAKyb,SAAWsrD,EAAQvrE,QAAS,GAAG,IAGzEorE,EAAWJ,UAAU57C,GAAKy8C,CAGhC,CAEA56C,EAAak2C,QAAUl2C,EAAaq2C,iBAA4C,IAAzBr2C,EAAam2C,UACpEn2C,EAAa61C,GAAK71C,EAAa61C,IAAM,EACrC71C,EAAau1C,OAASte,EAASse,OAASv1C,EAAam2C,UAAY,GACnE,EAEAlB,aAAa18D,UAAUk3B,mBAAqB,SAAUqrC,EAAS/gE,GAC7DA,OAAkBxC,IAAVwC,EAAsB5C,KAAKg+D,UAAYp7D,EAC/C,IAAIghE,EAAQ5jE,KAAKm/D,SAAS,CAAC,EAAGn/D,KAAKsQ,KAAK+T,EAAE3L,EAAE9V,GAAOkhB,GACnD8/C,EAAQ5jE,KAAKm/D,SAASyE,EAAOD,GAC7B3jE,KAAKsQ,KAAK+T,EAAE3L,EAAE9V,GAAOkhB,EAAI8/C,EACzB5jE,KAAK6jE,YAAYjhE,GACjB5C,KAAKihE,eAAe2C,GACpB5jE,KAAKm5B,KAAK+O,mBAAmBloC,KAC/B,EAEA89D,aAAa18D,UAAUyiE,YAAc,SAAUjhE,GAC7C,IAAIghE,EAAQ5jE,KAAKsQ,KAAK+T,EAAE3L,EAAE9V,GAAOkhB,EACjC8/C,EAAM15C,YAAa,EACnBlqB,KAAKg+D,UAAY,EACjBh+D,KAAK6nC,eAAgB,EACrB7nC,KAAKqoC,SAASu7B,EAChB,EAEA9F,aAAa18D,UAAU0iE,cAAgB,SAAUC,GAC/C/jE,KAAKi+D,UAAY8F,EACjB/jE,KAAK6jE,YAAY7jE,KAAKg+D,WACtBh+D,KAAKm5B,KAAK+O,mBAAmBloC,KAC/B,EAEA89D,aAAa18D,UAAU4iE,mBAAqB,SAAUC,GACpDjkE,KAAKk+D,gBAAkB9hE,KAAKib,MAAM4sD,IAAe,EACjDjkE,KAAK6jE,YAAY7jE,KAAKg+D,WACtBh+D,KAAKm5B,KAAK+O,mBAAmBloC,KAC/B,EAEA,IAAIkkE,iBAAmB,WACrB,IAAIjtD,EAAM7a,KAAK6a,IACXC,EAAM9a,KAAK8a,IACXG,EAAQjb,KAAKib,MAEjB,SAAS8sD,EAAwBhrC,EAAM7oB,GACrCtQ,KAAKokE,oBAAsB,EAC3BpkE,KAAK0Y,GAAI,EACT1Y,KAAKsQ,KAAOA,EACZtQ,KAAKm5B,KAAOA,EACZn5B,KAAK8nB,KAAOqR,EAAKrR,KACjB9nB,KAAKqkE,OAAS,EACdrkE,KAAKskE,OAAS,EACdtkE,KAAKkpC,6BAA6B/P,GAClCn5B,KAAK8jB,EAAI4kB,gBAAgBC,QAAQxP,EAAM7oB,EAAKwT,GAAK,CAC/CpL,EAAG,GACF,EAAG,EAAG1Y,MAGPA,KAAKzH,EADH,MAAO+X,EACAo4B,gBAAgBC,QAAQxP,EAAM7oB,EAAK/X,EAAG,EAAG,EAAGyH,MAE5C,CACP+jB,EAAG,KAIP/jB,KAAKooB,EAAIsgB,gBAAgBC,QAAQxP,EAAM7oB,EAAK8X,GAAK,CAC/C1P,EAAG,GACF,EAAG,EAAG1Y,MACTA,KAAKukE,GAAK77B,gBAAgBC,QAAQxP,EAAM7oB,EAAKi0D,IAAM,CACjD7rD,EAAG,GACF,EAAG,EAAG1Y,MACTA,KAAKwkE,GAAK97B,gBAAgBC,QAAQxP,EAAM7oB,EAAKk0D,IAAM,CACjD9rD,EAAG,GACF,EAAG,EAAG1Y,MACTA,KAAKykE,GAAK/7B,gBAAgBC,QAAQxP,EAAM7oB,EAAKm0D,IAAM,CACjD/rD,EAAG,KACF,EAAG,EAAG1Y,MACTA,KAAKgO,EAAI06B,gBAAgBC,QAAQxP,EAAM7oB,EAAKtC,EAAG,EAAG,IAAMhO,MAEnDA,KAAK+oC,kBAAkBnxC,QAC1BoI,KAAKqoC,UAET,CA+JA,OA7JA87B,EAAwB/iE,UAAY,CAClCsjE,QAAS,SAAiB7gC,GACpB7jC,KAAKokE,qBAAuBpkE,KAAKm5B,KAAKwrC,aAAaxG,YAAYruB,EAAEl4C,QACnEoI,KAAKqoC,WAGP,IAAIvK,EAAK,EACLC,EAAK,EACLC,EAAK,EACLC,EAAK,EAELj+B,KAAKwkE,GAAGzgD,EAAI,EACd+Z,EAAK99B,KAAKwkE,GAAGzgD,EAAI,IAEjBga,GAAM/9B,KAAKwkE,GAAGzgD,EAAI,IAGhB/jB,KAAKukE,GAAGxgD,EAAI,EACdia,EAAK,EAAMh+B,KAAKukE,GAAGxgD,EAAI,IAEvBka,EAAK,EAAMj+B,KAAKukE,GAAGxgD,EAAI,IAGzB,IAAI6gD,EAAQxqC,cAAc2J,gBAAgBjG,EAAIC,EAAIC,EAAIC,GAAI3zB,IACtDi9B,EAAO,EACPzjB,EAAI9jB,KAAKqkE,OACT9rE,EAAIyH,KAAKskE,OACTr0D,EAAOjQ,KAAKsQ,KAAKq0B,GAErB,GAAa,IAAT10B,EAOFs3B,EAAOq9B,EALLr9B,EADEhvC,IAAMurB,EACD+f,GAAOtrC,EAAI,EAAI,EAEf0e,EAAI,EAAGC,EAAI,IAAO3e,EAAIurB,IAAM+f,EAAM/f,IAAMvrB,EAAIurB,GAAI,UAIpD,GAAa,IAAT7T,EAOTs3B,EAAOq9B,EALLr9B,EADEhvC,IAAMurB,EACD+f,GAAOtrC,EAAI,EAAI,EAEf,EAAI0e,EAAI,EAAGC,EAAI,IAAO3e,EAAIurB,IAAM+f,EAAM/f,IAAMvrB,EAAIurB,GAAI,UAIxD,GAAa,IAAT7T,EACL1X,IAAMurB,EACRyjB,EAAO,GAEPA,EAAOtwB,EAAI,EAAGC,EAAI,IAAO3e,EAAIurB,IAAM+f,EAAM/f,IAAMvrB,EAAIurB,GAAI,KAE5C,GACTyjB,GAAQ,EAERA,EAAO,EAAI,GAAKA,EAAO,IAI3BA,EAAOq9B,EAAMr9B,QACR,GAAa,IAATt3B,EAAY,CACrB,GAAI1X,IAAMurB,EACRyjB,EAAO,MACF,CACL,IAAIs9B,EAAMtsE,EAAIurB,EAKVnkB,GAAKklE,EAAM,GADfhhC,EAAM3sB,EAAID,EAAI,EAAG4sB,EAAM,GAAM/f,GAAIvrB,EAAIurB,IAEjC9V,EAAI62D,EAAM,EACdt9B,EAAOnrC,KAAK8kB,KAAK,EAAIvhB,EAAIA,GAAKqO,EAAIA,GACpC,CAEAu5B,EAAOq9B,EAAMr9B,EACf,MAAoB,IAATt3B,GACL1X,IAAMurB,EACRyjB,EAAO,GAEP1D,EAAM3sB,EAAID,EAAI,EAAG4sB,EAAM,GAAM/f,GAAIvrB,EAAIurB,GACrCyjB,GAAQ,EAAInrC,KAAKsqC,IAAItqC,KAAKwlB,GAAe,EAAVxlB,KAAKwlB,GAASiiB,GAAOtrC,EAAIurB,KAAO,GAGjEyjB,EAAOq9B,EAAMr9B,KAET1D,GAAOxsB,EAAMyM,KAEbyjB,EAAOtwB,EAAI,EAAGC,EADZ2sB,EAAM/f,EAAI,EACM5M,EAAI3e,EAAG,IAAMurB,EAAI+f,GAEjBtrC,EAAIsrC,EAFmB,KAM7C0D,EAAOq9B,EAAMr9B,IAaf,GAAkB,MAAdvnC,KAAKykE,GAAG1gD,EAAW,CACrB,IAAI+gD,EAAyB,IAAZ9kE,KAAKykE,GAAG1gD,EAEN,IAAf+gD,IACFA,EAAa,MAGf,IAAIC,EAAY,GAAmB,GAAbD,EAElBv9B,EAAOw9B,EACTx9B,EAAO,GAEPA,GAAQA,EAAOw9B,GAAaD,GAEjB,IACTv9B,EAAO,EAGb,CAEA,OAAOA,EAAOvnC,KAAKgO,EAAE+V,CACvB,EACAskB,SAAU,SAAkB28B,GAC1BhlE,KAAKipC,2BACLjpC,KAAKwnC,KAAOw9B,GAAgBhlE,KAAKwnC,KACjCxnC,KAAKokE,mBAAqBpkE,KAAKm5B,KAAKwrC,aAAaxG,YAAYruB,EAAEl4C,QAAU,EAErEotE,GAAgC,IAAhBhlE,KAAKsQ,KAAK0T,IAC5BhkB,KAAKzH,EAAEwrB,EAAI/jB,KAAKokE,oBAGlB,IAAIa,EAA0B,IAAhBjlE,KAAKsQ,KAAK0T,EAAU,EAAI,IAAMhkB,KAAKsQ,KAAKkzD,WAClDp7C,EAAIpoB,KAAKooB,EAAErE,EAAIkhD,EACfnhD,EAAI9jB,KAAK8jB,EAAEC,EAAIkhD,EAAU78C,EACzB7vB,EAAIyH,KAAKzH,EAAEwrB,EAAIkhD,EAAU78C,EAE7B,GAAItE,EAAIvrB,EAAG,CACT,IAAIy+C,EAAKlzB,EACTA,EAAIvrB,EACJA,EAAIy+C,CACN,CAEAh3C,KAAKqkE,OAASvgD,EACd9jB,KAAKskE,OAAS/rE,CAChB,GAEFwlB,gBAAgB,CAAC+qB,0BAA2Bq7B,GAMrC,CACLe,oBALF,SAA6B/rC,EAAM7oB,EAAM4P,GACvC,OAAO,IAAIikD,EAAwBhrC,EAAM7oB,EAAM4P,EACjD,EAKF,CA7MuB,GA+MvB,SAASilD,yBAAyBhsC,EAAMisC,EAAe7zE,GACrD,IAAI8zE,EAAc,CAChBviC,UAAU,GAER6F,EAAUD,gBAAgBC,QAC1B28B,EAA0BF,EAAcp3D,EAC5ChO,KAAKgO,EAAI,CACPgW,EAAGshD,EAAwBthD,EAAI2kB,EAAQxP,EAAMmsC,EAAwBthD,EAAG,EAAGrC,UAAWpwB,GAAa8zE,EACnGzsB,GAAI0sB,EAAwB1sB,GAAKjQ,EAAQxP,EAAMmsC,EAAwB1sB,GAAI,EAAGj3B,UAAWpwB,GAAa8zE,EACtGxsB,GAAIysB,EAAwBzsB,GAAKlQ,EAAQxP,EAAMmsC,EAAwBzsB,GAAI,EAAGl3B,UAAWpwB,GAAa8zE,EACtG97C,GAAI+7C,EAAwB/7C,GAAKof,EAAQxP,EAAMmsC,EAAwB/7C,GAAI,EAAG5H,UAAWpwB,GAAa8zE,EACtG77C,GAAI87C,EAAwB97C,GAAKmf,EAAQxP,EAAMmsC,EAAwB97C,GAAI,EAAG7H,UAAWpwB,GAAa8zE,EACtGvhD,EAAGwhD,EAAwBxhD,EAAI6kB,EAAQxP,EAAMmsC,EAAwBxhD,EAAG,EAAG,IAAMvyB,GAAa8zE,EAC9Fr3D,EAAGs3D,EAAwBt3D,EAAI26B,EAAQxP,EAAMmsC,EAAwBt3D,EAAG,EAAG,EAAGzc,GAAa8zE,EAC3Fj9C,EAAGk9C,EAAwBl9C,EAAIugB,EAAQxP,EAAMmsC,EAAwBl9C,EAAG,EAAG,IAAM72B,GAAa8zE,EAC9FphD,EAAGqhD,EAAwBrhD,EAAI0kB,EAAQxP,EAAMmsC,EAAwBrhD,EAAG,EAAG,EAAG1yB,GAAa8zE,EAC3FzH,GAAI0H,EAAwB1H,GAAKj1B,EAAQxP,EAAMmsC,EAAwB1H,GAAI,EAAG,EAAGrsE,GAAa8zE,EAC9Fxc,GAAIyc,EAAwBzc,GAAKlgB,EAAQxP,EAAMmsC,EAAwBzc,GAAI,EAAG,EAAGt3D,GAAa8zE,EAC9FxH,GAAIyH,EAAwBzH,GAAKl1B,EAAQxP,EAAMmsC,EAAwBzH,GAAI,EAAG,EAAGtsE,GAAa8zE,EAC9FjC,GAAIkC,EAAwBlC,GAAKz6B,EAAQxP,EAAMmsC,EAAwBlC,GAAI,EAAG,EAAG7xE,GAAa8zE,EAC9FhC,GAAIiC,EAAwBjC,GAAK16B,EAAQxP,EAAMmsC,EAAwBjC,GAAI,EAAG,IAAM9xE,GAAa8zE,EACjG/B,GAAIgC,EAAwBhC,GAAK36B,EAAQxP,EAAMmsC,EAAwBhC,GAAI,EAAG,IAAM/xE,GAAa8zE,EACjGlhD,EAAGmhD,EAAwBnhD,EAAIwkB,EAAQxP,EAAMmsC,EAAwBnhD,EAAG,EAAG,EAAG5yB,GAAa8zE,GAE7FrlE,KAAK8jB,EAAIogD,iBAAiBgB,oBAAoB/rC,EAAMisC,EAActhD,EAAGvyB,GACrEyO,KAAK8jB,EAAEK,EAAIihD,EAActhD,EAAEK,CAC7B,CAEA,SAASohD,qBAAqBra,EAAUsa,EAAYrsC,GAClDn5B,KAAK6nC,eAAgB,EACrB7nC,KAAKylE,gBAAiB,EACtBzlE,KAAK+9D,UAAY,EACjB/9D,KAAK0lE,UAAYxa,EACjBlrD,KAAK2lE,YAAcH,EACnBxlE,KAAK4lE,MAAQzsC,EACbn5B,KAAK6lE,eAAiBvlD,iBAAiBtgB,KAAK0lE,UAAU13D,EAAEpW,QACxDoI,KAAK8lE,UAAY,CAAC,EAClB9lE,KAAK+lE,aAAe,CAClBC,UAAW,CAAC,GAEdhmE,KAAKimE,gBAAkB,GACvBjmE,KAAKkmE,oBAAqB,EAC1BlmE,KAAKkpC,6BAA6B/P,EACpC,CAwoBA,SAASgtC,eAAgB,CAtoBzBZ,qBAAqBnkE,UAAUglE,iBAAmB,WAChD,IAAI5+D,EAEA49D,EADAzsD,EAAM3Y,KAAK0lE,UAAU13D,EAAEpW,OAEvB+wC,EAAUD,gBAAgBC,QAE9B,IAAKnhC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB49D,EAAgBplE,KAAK0lE,UAAU13D,EAAExG,GACjCxH,KAAK6lE,eAAer+D,GAAK,IAAI29D,yBAAyBnlE,KAAK4lE,MAAOR,EAAeplE,MAG/EA,KAAK0lE,UAAUzhD,GAAK,MAAOjkB,KAAK0lE,UAAUzhD,GAC5CjkB,KAAK8lE,UAAY,CACf93D,EAAG26B,EAAQ3oC,KAAK4lE,MAAO5lE,KAAK0lE,UAAUzhD,EAAEjW,EAAG,EAAG,EAAGhO,MACjDqB,EAAGsnC,EAAQ3oC,KAAK4lE,MAAO5lE,KAAK0lE,UAAUzhD,EAAE5iB,EAAG,EAAG,EAAGrB,MACjD8vC,EAAGnH,EAAQ3oC,KAAK4lE,MAAO5lE,KAAK0lE,UAAUzhD,EAAE6rB,EAAG,EAAG,EAAG9vC,MACjDgkB,EAAG2kB,EAAQ3oC,KAAK4lE,MAAO5lE,KAAK0lE,UAAUzhD,EAAED,EAAG,EAAG,EAAGhkB,MACjDikB,EAAG0kB,EAAQ3oC,KAAK4lE,MAAO5lE,KAAK0lE,UAAUzhD,EAAEA,EAAG,EAAG,EAAGjkB,MACjD+vC,EAAG/vC,KAAK4lE,MAAMlY,YAAYoG,gBAAgB9zD,KAAK0lE,UAAUzhD,EAAE8rB,IAE7D/vC,KAAKylE,gBAAiB,GAEtBzlE,KAAKylE,gBAAiB,EAGxBzlE,KAAK+lE,aAAaC,UAAYr9B,EAAQ3oC,KAAK4lE,MAAO5lE,KAAK0lE,UAAU31B,EAAE/hC,EAAG,EAAG,EAAGhO,KAC9E,EAEAulE,qBAAqBnkE,UAAUilE,YAAc,SAAUx9C,EAAcq9C,GAGnE,GAFAlmE,KAAKkmE,mBAAqBA,EAErBlmE,KAAKwnC,MAASxnC,KAAK6nC,eAAkBq+B,GAAwBlmE,KAAKylE,gBAAmBzlE,KAAK8lE,UAAU/1B,EAAEvI,KAA3G,CAIAxnC,KAAK6nC,eAAgB,EACrB,IAMIy+B,EACAC,EACA/+D,EACAmR,EAEA6tD,EACAC,EACAC,EACAznC,EACAvhB,EACAipD,EACAC,EACAnpB,EACAviB,EACA5I,EACA8M,EACA1B,EACAiB,EACAkoC,EACAzU,EAzBA4T,EAAYhmE,KAAK+lE,aAAaC,UAAUjiD,EACxCm/C,EAAYljE,KAAK6lE,eACjB3a,EAAWlrD,KAAK0lE,UAChBoB,EAAe9mE,KAAK6zD,QACpB2R,EAAaxlE,KAAK2lE,YAClBoB,EAAuB/mE,KAAKimE,gBAAgBruE,OAK5CkqE,EAAUj5C,EAAainB,EAiB3B,GAAI9vC,KAAKylE,eAAgB,CAGvB,GAFArT,EAAOpyD,KAAK8lE,UAAU/1B,GAEjB/vC,KAAK8lE,UAAUhtD,GAAK9Y,KAAK8lE,UAAUt+B,KAAM,CAC5C,IAYIhI,EAZAkM,EAAQ0mB,EAAKruC,EAejB,IAbI/jB,KAAK8lE,UAAU9hD,EAAED,IACnB2nB,EAAQA,EAAM1B,WAIhBw8B,EAAW,CACTQ,QAAS,EACT10C,SAAU,IAEZ3Z,EAAM+yB,EAAMzO,QAAU,EAEtBS,EAAc,EAETl2B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBg4B,EAAa8C,IAAIhD,gBAAgBoM,EAAM3nB,EAAEvc,GAAIkkC,EAAM3nB,EAAEvc,EAAI,GAAI,CAACkkC,EAAMtjB,EAAE5gB,GAAG,GAAKkkC,EAAM3nB,EAAEvc,GAAG,GAAIkkC,EAAMtjB,EAAE5gB,GAAG,GAAKkkC,EAAM3nB,EAAEvc,GAAG,IAAK,CAACkkC,EAAMlkC,EAAEA,EAAI,GAAG,GAAKkkC,EAAM3nB,EAAEvc,EAAI,GAAG,GAAIkkC,EAAMlkC,EAAEA,EAAI,GAAG,GAAKkkC,EAAM3nB,EAAEvc,EAAI,GAAG,KACxMg/D,EAASQ,SAAWxnC,EAAWP,cAC/BunC,EAASl0C,SAASjzB,KAAKmgC,GACvB9B,GAAe8B,EAAWP,cAG5Bz3B,EAAImR,EAEAy5C,EAAKruC,EAAE7V,IACTsxB,EAAa8C,IAAIhD,gBAAgBoM,EAAM3nB,EAAEvc,GAAIkkC,EAAM3nB,EAAE,GAAI,CAAC2nB,EAAMtjB,EAAE5gB,GAAG,GAAKkkC,EAAM3nB,EAAEvc,GAAG,GAAIkkC,EAAMtjB,EAAE5gB,GAAG,GAAKkkC,EAAM3nB,EAAEvc,GAAG,IAAK,CAACkkC,EAAMlkC,EAAE,GAAG,GAAKkkC,EAAM3nB,EAAE,GAAG,GAAI2nB,EAAMlkC,EAAE,GAAG,GAAKkkC,EAAM3nB,EAAE,GAAG,KACpLyiD,EAASQ,SAAWxnC,EAAWP,cAC/BunC,EAASl0C,SAASjzB,KAAKmgC,GACvB9B,GAAe8B,EAAWP,eAG5Bj/B,KAAK8lE,UAAUmB,GAAKT,CACtB,CAUA,GARAA,EAAWxmE,KAAK8lE,UAAUmB,GAC1BR,EAAgBzmE,KAAK8lE,UAAUzkE,EAAE0iB,EACjC6iD,EAAa,EACbD,EAAW,EACX1nC,EAAgB,EAChBvhB,GAAO,EACP4U,EAAWk0C,EAASl0C,SAEhBm0C,EAAgB,GAAKrU,EAAKruC,EAAE7V,EAS9B,IARIs4D,EAASQ,QAAU5qE,KAAKC,IAAIoqE,KAC9BA,GAAiBrqE,KAAKC,IAAIoqE,GAAiBD,EAASQ,SAKtDL,GADAzrC,EAAS5I,EADTs0C,EAAat0C,EAAS16B,OAAS,GACDsjC,QACZtjC,OAAS,EAEpB6uE,EAAgB,GACrBA,GAAiBvrC,EAAOyrC,GAAUvnC,eAClCunC,GAAY,GAEG,IAGbA,GADAzrC,EAAS5I,EADTs0C,GAAc,GACgB1rC,QACZtjC,OAAS,GAMjC6lD,GADAviB,EAAS5I,EAASs0C,GAAY1rC,QACXyrC,EAAW,GAE9BvnC,GADAsnC,EAAexrC,EAAOyrC,IACOvnC,aAC/B,CAEAzmB,EAAMmpD,EAAQlqE,OACd0uE,EAAO,EACPC,EAAO,EACP,IAEInB,EAEAp+C,EACAC,EACAigD,EAEA3/B,EARA4/B,EAAgC,IAAzBt+C,EAAam2C,UAAkB,KACtCoI,GAAY,EAMhBngD,EAAOi8C,EAAUtrE,OAEjB,IACIyvE,EACAC,EACAC,EAKAC,EACA3e,EACA+U,EACAC,EACAnlD,EACA+uD,EACAC,EACAC,EAGAC,EAlBA/jC,GAAO,EAIPgkC,EAAcpB,EACdqB,EAAiBlB,EACjBmB,EAAepB,EACfzE,GAAe,EASf8F,GAAU,GACVC,GAAUjoE,KAAKkoE,kBAGnB,GAAuB,IAAnBr/C,EAAa7B,GAA8B,IAAnB6B,EAAa7B,EAAS,CAChD,IAAI67C,GAAwB,EACxBsF,GAA0B,EAC1BC,GAAuC,IAAnBv/C,EAAa7B,GAAW,IAAO,EACnDqc,GAAY,EACZglC,IAAY,EAEhB,IAAK7gE,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,GAAIs6D,EAAQt6D,GAAGsR,EAAG,CAKhB,IAJI+pD,KACFA,IAAyBsF,IAGpB9kC,GAAY77B,GACjBs6D,EAAQz+B,IAAWw/B,sBAAwBA,GAC3Cx/B,IAAa,EAGfw/B,GAAwB,EACxBwF,IAAY,CACd,KAAO,CACL,IAAKrhD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzBo+C,EAAgBlC,EAAUl8C,GAAGhZ,GAEXmW,EAAE2e,WACdulC,IAAgC,IAAnBx/C,EAAa7B,IAC5BmhD,IAA2B/C,EAAcjhD,EAAEJ,EAAIqkD,KAIjD7gC,EADmB27B,EAAUl8C,GAAGlD,EACR4gD,QAAQ5C,EAAQt6D,GAAGo7D,UAAU57C,GAAIkkC,EAASl9C,EAAEgZ,GAAGlD,EAAE0/C,aAEhE5rE,OACPirE,IAAyBuC,EAAcjhD,EAAEJ,EAAIwjB,EAAK,GAAK6gC,GAEvDvF,IAAyBuC,EAAcjhD,EAAEJ,EAAIwjB,EAAO6gC,IAK1DC,IAAY,CACd,CAOF,IAJIxF,KACFA,IAAyBsF,IAGpB9kC,GAAY77B,GACjBs6D,EAAQz+B,IAAWw/B,sBAAwBA,GAC3Cx/B,IAAa,CAEjB,CAGA,IAAK77B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAI3B,GAHAs/D,EAAa96B,QACbw7B,EAAc,EAEV1F,EAAQt6D,GAAGsR,EACbwtD,EAAO,EACPC,GAAQ19C,EAAak2C,QACrBwH,GAAQa,EAAY,EAAI,EACxBX,EAAgBoB,EAChBT,GAAY,EAERpnE,KAAKylE,iBAEPkB,EAAWoB,EAEXtqB,GADAviB,EAAS5I,EAFTs0C,EAAakB,GAEiB5sC,QACXyrC,EAAW,GAE9BvnC,GADAsnC,EAAexrC,EAAOyrC,IACOvnC,cAC7BH,EAAgB,GAGlB+oC,GAAU,GACVL,EAAW,GACXF,EAAW,GACXG,EAAU,GACVK,GAAUjoE,KAAKkoE,sBACV,CACL,GAAIloE,KAAKylE,eAAgB,CACvB,GAAIvD,IAAgBJ,EAAQt6D,GAAGqoB,KAAM,CACnC,OAAQhH,EAAa7B,GACnB,KAAK,EACHy/C,GAAiB/oC,EAAc7U,EAAa41C,WAAWqD,EAAQt6D,GAAGqoB,MAClE,MAEF,KAAK,EACH42C,IAAkB/oC,EAAc7U,EAAa41C,WAAWqD,EAAQt6D,GAAGqoB,OAAS,EAOhFqyC,EAAcJ,EAAQt6D,GAAGqoB,IAC3B,CAEIgU,IAAQi+B,EAAQt6D,GAAGq8B,MACjBi+B,EAAQj+B,KACV4iC,GAAiB3E,EAAQj+B,GAAKi/B,OAGhC2D,GAAiB3E,EAAQt6D,GAAGm7D,GAAK,EACjC9+B,EAAMi+B,EAAQt6D,GAAGq8B,KAGnB4iC,GAAiBT,EAAU,GAAKlE,EAAQt6D,GAAGm7D,GAAK,KAChD,IAAI2F,GAAiB,EAErB,IAAKthD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzBo+C,EAAgBlC,EAAUl8C,GAAGhZ,GAEXiW,EAAE6e,YAElByE,EADmB27B,EAAUl8C,GAAGlD,EACR4gD,QAAQ5C,EAAQt6D,GAAGo7D,UAAU57C,GAAIkkC,EAASl9C,EAAEgZ,GAAGlD,EAAE0/C,aAEhE5rE,OACP0wE,IAAkBlD,EAAcnhD,EAAEF,EAAE,GAAKwjB,EAAK,GAE9C+gC,IAAkBlD,EAAcnhD,EAAEF,EAAE,GAAKwjB,GAIzC69B,EAAcp3D,EAAE80B,YAElByE,EADmB27B,EAAUl8C,GAAGlD,EACR4gD,QAAQ5C,EAAQt6D,GAAGo7D,UAAU57C,GAAIkkC,EAASl9C,EAAEgZ,GAAGlD,EAAE0/C,aAEhE5rE,OACP0wE,IAAkBlD,EAAcp3D,EAAE+V,EAAE,GAAKwjB,EAAK,GAE9C+gC,IAAkBlD,EAAcp3D,EAAE+V,EAAE,GAAKwjB,GAY/C,IAPA7pB,GAAO,EAEH1d,KAAK8lE,UAAU93D,EAAE+V,IACnB0iD,EAAgC,GAAhB3E,EAAQ,GAAGa,IAAYjlC,EAAc19B,KAAK8lE,UAAUzkE,EAAE0iB,EAAoB,GAAhB+9C,EAAQ,GAAGa,GAA4C,GAAjCb,EAAQA,EAAQlqE,OAAS,GAAG+qE,IAAY9+B,GAAOlrB,EAAM,GACrJ8tD,GAAiBzmE,KAAK8lE,UAAUzkE,EAAE0iB,GAG7BrG,GACDuhB,EAAgBG,GAAiBqnC,EAAgB6B,KAAmBptC,GACtEyD,GAAQ8nC,EAAgB6B,GAAiBrpC,GAAiBynC,EAAatnC,cACvEkoC,EAAW7pB,EAAUvjC,MAAM,IAAMwsD,EAAaxsD,MAAM,GAAKujC,EAAUvjC,MAAM,IAAMykB,EAC/E4oC,EAAW9pB,EAAUvjC,MAAM,IAAMwsD,EAAaxsD,MAAM,GAAKujC,EAAUvjC,MAAM,IAAMykB,EAC/EmoC,EAAa92B,WAAWg2B,EAAU,GAAKlE,EAAQt6D,GAAGm7D,GAAK,MAASqD,EAAU,GAAKmB,EAAQ,KACvFzpD,GAAO,GACEwd,IACT+D,GAAiBynC,EAAatnC,eAC9BunC,GAAY,IAEIzrC,EAAOtjC,SACrB+uE,EAAW,EAGNr0C,EAFLs0C,GAAc,GAYZ1rC,EAAS5I,EAASs0C,GAAY1rC,OAT1Bk3B,EAAKruC,EAAE7V,GACTy4D,EAAW,EAEXzrC,EAAS5I,EADTs0C,EAAa,GACiB1rC,SAE9B+D,GAAiBynC,EAAatnC,cAC9BlE,EAAS,OAOXA,IACFuiB,EAAYipB,EAEZtnC,GADAsnC,EAAexrC,EAAOyrC,IACOvnC,gBAKnCioC,EAAOvF,EAAQt6D,GAAGm7D,GAAK,EAAIb,EAAQt6D,GAAGzT,IACtC+yE,EAAa92B,WAAWq3B,EAAM,EAAG,EACnC,MACEA,EAAOvF,EAAQt6D,GAAGm7D,GAAK,EAAIb,EAAQt6D,GAAGzT,IACtC+yE,EAAa92B,WAAWq3B,EAAM,EAAG,GAEjCP,EAAa92B,WAAWg2B,EAAU,GAAKlE,EAAQt6D,GAAGm7D,GAAK,MAAQqD,EAAU,GAAKmB,EAAO,IAAM,GAG7F,IAAKngD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzBo+C,EAAgBlC,EAAUl8C,GAAGhZ,GAEXmW,EAAE2e,WAElByE,EADmB27B,EAAUl8C,GAAGlD,EACR4gD,QAAQ5C,EAAQt6D,GAAGo7D,UAAU57C,GAAIkkC,EAASl9C,EAAEgZ,GAAGlD,EAAE0/C,YAE5D,IAAT8C,GAAiC,IAAnBz9C,EAAa7B,IACzBhnB,KAAKylE,eACHl+B,EAAK3vC,OACP6uE,GAAiBrB,EAAcjhD,EAAEJ,EAAIwjB,EAAK,GAE1Ck/B,GAAiBrB,EAAcjhD,EAAEJ,EAAIwjB,EAE9BA,EAAK3vC,OACd0uE,GAAQlB,EAAcjhD,EAAEJ,EAAIwjB,EAAK,GAEjC++B,GAAQlB,EAAcjhD,EAAEJ,EAAIwjB,IAsBpC,IAhBI1e,EAAai2C,kBACflB,EAAK/0C,EAAa+0C,IAAM,GAGtB/0C,EAAag2C,kBAEbhW,EADEhgC,EAAaggC,GACV,CAAChgC,EAAaggC,GAAG,GAAIhgC,EAAaggC,GAAG,GAAIhgC,EAAaggC,GAAG,IAEzD,CAAC,EAAG,EAAG,IAIZhgC,EAAa+1C,eAAiB/1C,EAAag1C,KAC7CA,EAAK,CAACh1C,EAAag1C,GAAG,GAAIh1C,EAAag1C,GAAG,GAAIh1C,EAAag1C,GAAG,KAG3D72C,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzBo+C,EAAgBlC,EAAUl8C,GAAGhZ,GAEXA,EAAE80B,YAElByE,EADmB27B,EAAUl8C,GAAGlD,EACR4gD,QAAQ5C,EAAQt6D,GAAGo7D,UAAU57C,GAAIkkC,EAASl9C,EAAEgZ,GAAGlD,EAAE0/C,aAEhE5rE,OACPkvE,EAAa92B,WAAWo1B,EAAcp3D,EAAE+V,EAAE,GAAKwjB,EAAK,IAAK69B,EAAcp3D,EAAE+V,EAAE,GAAKwjB,EAAK,GAAI69B,EAAcp3D,EAAE+V,EAAE,GAAKwjB,EAAK,IAErHu/B,EAAa92B,WAAWo1B,EAAcp3D,EAAE+V,EAAE,GAAKwjB,GAAO69B,EAAcp3D,EAAE+V,EAAE,GAAKwjB,EAAM69B,EAAcp3D,EAAE+V,EAAE,GAAKwjB,IAKhH,IAAKvgB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzBo+C,EAAgBlC,EAAUl8C,GAAGhZ,GAEX8V,EAAEgf,YAElByE,EADmB27B,EAAUl8C,GAAGlD,EACR4gD,QAAQ5C,EAAQt6D,GAAGo7D,UAAU57C,GAAIkkC,EAASl9C,EAAEgZ,GAAGlD,EAAE0/C,aAEhE5rE,OACPkvE,EAAan3B,MAAM,GAAKy1B,EAActhD,EAAEC,EAAE,GAAK,GAAKwjB,EAAK,GAAI,GAAK69B,EAActhD,EAAEC,EAAE,GAAK,GAAKwjB,EAAK,GAAI,GAEvGu/B,EAAan3B,MAAM,GAAKy1B,EAActhD,EAAEC,EAAE,GAAK,GAAKwjB,EAAM,GAAK69B,EAActhD,EAAEC,EAAE,GAAK,GAAKwjB,EAAM,IAKvG,IAAKvgB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAqD5B,GApDAo+C,EAAgBlC,EAAUl8C,GAAGhZ,EAE7Bu5B,EADmB27B,EAAUl8C,GAAGlD,EACR4gD,QAAQ5C,EAAQt6D,GAAGo7D,UAAU57C,GAAIkkC,EAASl9C,EAAEgZ,GAAGlD,EAAE0/C,YAErE4B,EAAc77C,GAAGuZ,WACfyE,EAAK3vC,OACPkvE,EAAap3B,cAAc01B,EAAc77C,GAAGxF,EAAIwjB,EAAK,GAAI69B,EAAc57C,GAAGzF,EAAIwjB,EAAK,IAEnFu/B,EAAap3B,cAAc01B,EAAc77C,GAAGxF,EAAIwjB,EAAM69B,EAAc57C,GAAGzF,EAAIwjB,IAI3E69B,EAAcphD,EAAE8e,WACdyE,EAAK3vC,OACPkvE,EAAax3B,SAAS81B,EAAcphD,EAAED,EAAIwjB,EAAK,IAE/Cu/B,EAAax3B,SAAS81B,EAAcphD,EAAED,EAAIwjB,IAI1C69B,EAAcvsB,GAAG/V,WACfyE,EAAK3vC,OACPkvE,EAAaz3B,QAAQ+1B,EAAcvsB,GAAG90B,EAAIwjB,EAAK,IAE/Cu/B,EAAaz3B,QAAQ+1B,EAAcvsB,GAAG90B,EAAIwjB,IAI1C69B,EAAcxsB,GAAG9V,WACfyE,EAAK3vC,OACPkvE,EAAa13B,QAAQg2B,EAAcxsB,GAAG70B,EAAIwjB,EAAK,IAE/Cu/B,EAAa13B,QAAQg2B,EAAcxsB,GAAG70B,EAAIwjB,IAI1C69B,EAAch9C,EAAE0a,WACdyE,EAAK3vC,OACP4vE,IAAgBpC,EAAch9C,EAAErE,EAAIwjB,EAAK,GAAKigC,GAAejgC,EAAK,GAElEigC,IAAgBpC,EAAch9C,EAAErE,EAAIwjB,EAAOigC,GAAejgC,GAI1D1e,EAAai2C,iBAAmBsG,EAAcxH,GAAG96B,WAC/CyE,EAAK3vC,OACPgmE,GAAMwH,EAAcxH,GAAG75C,EAAIwjB,EAAK,GAEhCq2B,GAAMwH,EAAcxH,GAAG75C,EAAIwjB,GAI3B1e,EAAag2C,iBAAmBuG,EAAcvc,GAAG/lB,SACnD,IAAKpqB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClB6uB,EAAK3vC,OACPixD,EAAGnwC,KAAO0sD,EAAcvc,GAAG9kC,EAAErL,GAAKmwC,EAAGnwC,IAAM6uB,EAAK,GAEhDshB,EAAGnwC,KAAO0sD,EAAcvc,GAAG9kC,EAAErL,GAAKmwC,EAAGnwC,IAAM6uB,EAKjD,GAAI1e,EAAa+1C,eAAiB/1C,EAAag1C,GAAI,CACjD,GAAIuH,EAAcvH,GAAG/6B,SACnB,IAAKpqB,EAAI,EAAGA,EAAI,EAAGA,GAAK,EAClB6uB,EAAK3vC,OACPimE,EAAGnlD,KAAO0sD,EAAcvH,GAAG95C,EAAErL,GAAKmlD,EAAGnlD,IAAM6uB,EAAK,GAEhDs2B,EAAGnlD,KAAO0sD,EAAcvH,GAAG95C,EAAErL,GAAKmlD,EAAGnlD,IAAM6uB,EAK7C69B,EAAchC,GAAGtgC,WAEjB+6B,EADEt2B,EAAK3vC,OACF+sB,YAAYk5C,EAAIuH,EAAchC,GAAGr/C,EAAIwjB,EAAK,IAE1C5iB,YAAYk5C,EAAIuH,EAAchC,GAAGr/C,EAAIwjB,IAI1C69B,EAAc/B,GAAGvgC,WAEjB+6B,EADEt2B,EAAK3vC,OACF0sB,mBAAmBu5C,EAAIuH,EAAc/B,GAAGt/C,EAAIwjB,EAAK,IAEjDjjB,mBAAmBu5C,EAAIuH,EAAc/B,GAAGt/C,EAAIwjB,IAIjD69B,EAAc9B,GAAGxgC,WAEjB+6B,EADEt2B,EAAK3vC,OACF8sB,mBAAmBm5C,EAAIuH,EAAc9B,GAAGv/C,EAAIwjB,EAAK,IAEjD7iB,mBAAmBm5C,EAAIuH,EAAc9B,GAAGv/C,EAAIwjB,GAGvD,CACF,CAEA,IAAKvgB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,GACzBo+C,EAAgBlC,EAAUl8C,GAAGhZ,GAEXiW,EAAE6e,WAElByE,EADmB27B,EAAUl8C,GAAGlD,EACR4gD,QAAQ5C,EAAQt6D,GAAGo7D,UAAU57C,GAAIkkC,EAASl9C,EAAEgZ,GAAGlD,EAAE0/C,YAErExjE,KAAKylE,eACHl+B,EAAK3vC,OACPkvE,EAAa92B,UAAU,EAAGo1B,EAAcnhD,EAAEF,EAAE,GAAKwjB,EAAK,IAAK69B,EAAcnhD,EAAEF,EAAE,GAAKwjB,EAAK,IAEvFu/B,EAAa92B,UAAU,EAAGo1B,EAAcnhD,EAAEF,EAAE,GAAKwjB,GAAO69B,EAAcnhD,EAAEF,EAAE,GAAKwjB,GAExEA,EAAK3vC,OACdkvE,EAAa92B,UAAUo1B,EAAcnhD,EAAEF,EAAE,GAAKwjB,EAAK,GAAI69B,EAAcnhD,EAAEF,EAAE,GAAKwjB,EAAK,IAAK69B,EAAcnhD,EAAEF,EAAE,GAAKwjB,EAAK,IAEpHu/B,EAAa92B,UAAUo1B,EAAcnhD,EAAEF,EAAE,GAAKwjB,EAAM69B,EAAcnhD,EAAEF,EAAE,GAAKwjB,GAAO69B,EAAcnhD,EAAEF,EAAE,GAAKwjB,IAiB/G,GAZI1e,EAAai2C,kBACf2I,EAAW7J,EAAK,EAAI,EAAIA,GAGtB/0C,EAAag2C,kBACf6I,EAAW,OAAStrE,KAAK4lB,MAAc,IAAR6mC,EAAG,IAAY,IAAMzsD,KAAK4lB,MAAc,IAAR6mC,EAAG,IAAY,IAAMzsD,KAAK4lB,MAAc,IAAR6mC,EAAG,IAAY,KAG5GhgC,EAAa+1C,eAAiB/1C,EAAag1C,KAC7C8J,EAAW,OAASvrE,KAAK4lB,MAAc,IAAR67C,EAAG,IAAY,IAAMzhE,KAAK4lB,MAAc,IAAR67C,EAAG,IAAY,IAAMzhE,KAAK4lB,MAAc,IAAR67C,EAAG,IAAY,KAG5G79D,KAAKylE,eAAgB,CAIvB,GAHAqB,EAAa92B,UAAU,GAAInnB,EAAa61C,IACxCoI,EAAa92B,UAAU,EAAGg2B,EAAU,GAAKmB,EAAO,IAAOZ,EAAM,GAEzDvmE,KAAK8lE,UAAU7hD,EAAEF,EAAG,CACtB8iD,GAAYH,EAAaxsD,MAAM,GAAKujC,EAAUvjC,MAAM,KAAOwsD,EAAaxsD,MAAM,GAAKujC,EAAUvjC,MAAM,IACnG,IAAI8iC,GAA4B,IAAtB5gD,KAAKmsE,KAAK1B,GAAkBzqE,KAAKwlB,GAEvC8kD,EAAaxsD,MAAM,GAAKujC,EAAUvjC,MAAM,KAC1C8iC,IAAO,KAGT8pB,EAAa93B,QAAQgO,GAAM5gD,KAAKwlB,GAAK,IACvC,CAEAklD,EAAa92B,UAAUs3B,EAAUC,EAAU,GAC3Cd,GAAiBT,EAAU,GAAKlE,EAAQt6D,GAAGm7D,GAAK,KAE5Cb,EAAQt6D,EAAI,IAAMq8B,IAAQi+B,EAAQt6D,EAAI,GAAGq8B,MAC3C4iC,GAAiB3E,EAAQt6D,GAAGm7D,GAAK,EACjC8D,GAAmC,KAAlB59C,EAAas3B,GAAat3B,EAAam2C,UAE5D,KAAO,CAQL,OAPA8H,EAAa92B,UAAUs2B,EAAMC,EAAM,GAE/B19C,EAAa81C,IAEfmI,EAAa92B,UAAUnnB,EAAa81C,GAAG,GAAI91C,EAAa81C,GAAG,GAAK91C,EAAau1C,OAAQ,GAG/Ev1C,EAAa7B,GACnB,KAAK,EACH8/C,EAAa92B,UAAU8xB,EAAQt6D,GAAGq7D,sBAAwBh6C,EAAa01C,eAAiB11C,EAAaw1C,SAAWx1C,EAAa41C,WAAWqD,EAAQt6D,GAAGqoB,OAAQ,EAAG,GAC9J,MAEF,KAAK,EACHi3C,EAAa92B,UAAU8xB,EAAQt6D,GAAGq7D,sBAAwBh6C,EAAa01C,eAAiB11C,EAAaw1C,SAAWx1C,EAAa41C,WAAWqD,EAAQt6D,GAAGqoB,OAAS,EAAG,EAAG,GAOtKi3C,EAAa92B,UAAU,GAAInnB,EAAa61C,IACxCoI,EAAa92B,UAAUq3B,EAAM,EAAG,GAChCP,EAAa92B,UAAUg2B,EAAU,GAAKlE,EAAQt6D,GAAGm7D,GAAK,KAAOqD,EAAU,GAAKmB,EAAO,IAAM,GACzFb,GAAQxE,EAAQt6D,GAAGsoC,EAAsB,KAAlBjnB,EAAas3B,GAAat3B,EAAam2C,SAChE,CAEmB,SAAfwG,EACFwC,GAAUlB,EAAajzB,QACC,QAAf2xB,EACTwC,GAAUlB,EAAa9yB,UAEvBi0B,GAAU,CAACnB,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,GAAI+3B,EAAa/3B,MAAM,IAAK+3B,EAAa/3B,MAAM,IAAK+3B,EAAa/3B,MAAM,IAAK+3B,EAAa/3B,MAAM,IAAK+3B,EAAa/3B,MAAM,IAAK+3B,EAAa/3B,MAAM,KAG9X64B,EAAUJ,CACZ,CAEIT,GAAwBv/D,GAC1B0/D,EAAc,IAAIvJ,YAAYiK,EAASH,EAAUC,EAAUC,EAAUK,GAASC,IAC9EjoE,KAAKimE,gBAAgB5mE,KAAK6nE,GAC1BH,GAAwB,EACxB/mE,KAAKkmE,oBAAqB,IAE1BgB,EAAclnE,KAAKimE,gBAAgBz+D,GACnCxH,KAAKkmE,mBAAqBgB,EAAYnG,OAAO6G,EAASH,EAAUC,EAAUC,EAAUK,GAASC,KAAYjoE,KAAKkmE,mBAElH,CArlBA,CAslBF,EAEAX,qBAAqBnkE,UAAUinC,SAAW,WACpCroC,KAAK4lE,MAAMtyC,WAAWoU,UAAY1nC,KAAK+9D,WAI3C/9D,KAAK+9D,SAAW/9D,KAAK4lE,MAAMtyC,WAAWoU,QACtC1nC,KAAKipC,2BACP,EAEAs8B,qBAAqBnkE,UAAUyyD,QAAU,IAAIplB,OAC7C82B,qBAAqBnkE,UAAU8mE,kBAAoB,GACnDnqD,gBAAgB,CAAC+qB,0BAA2By8B,sBAI5CY,aAAa/kE,UAAUs0D,YAAc,SAAUplD,EAAMgjB,EAAYxL,GAC/D9nB,KAAKkmE,oBAAqB,EAC1BlmE,KAAKuiC,YACLviC,KAAKusD,aAAaj8C,EAAMgjB,EAAYxL,GACpC9nB,KAAK2kE,aAAe,IAAI7G,aAAa99D,KAAMsQ,EAAK6T,EAAGnkB,KAAK+oC,mBACxD/oC,KAAKwoE,aAAe,IAAIjD,qBAAqBj1D,EAAK6T,EAAGnkB,KAAKwlE,WAAYxlE,MACtEA,KAAKyyD,cAAcniD,EAAMgjB,EAAYxL,GACrC9nB,KAAK23D,gBACL33D,KAAK+pD,iBACL/pD,KAAK81D,sBACL91D,KAAK+1D,0BACL/1D,KAAK+2D,6BACL/2D,KAAK63D,gBACL73D,KAAKo4B,OACLp4B,KAAKwoE,aAAapC,iBAAiBpmE,KAAK+oC,kBAC1C,EAEAo9B,aAAa/kE,UAAU4vB,aAAe,SAAUw5B,GAC9CxqD,KAAKwnC,MAAO,EACZxnC,KAAKuqD,uBAAuBC,GAC5BxqD,KAAK2uD,kBAAkBnE,EAAKxqD,KAAKgqD,UACnC,EAEAmc,aAAa/kE,UAAUqnE,gBAAkB,SAAU3B,EAAcj/C,GAC/D,IAAIb,EAEAitC,EADAhtC,EAAOY,EAAOjwB,OAEd8wE,EAAW,GAEf,IAAK1hD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACJ,OAAjBa,EAAOb,GAAGS,KACZwsC,EAAYpsC,EAAOb,GAAGmB,GAAGzP,EACzBgwD,GAAY9M,iBAAiB3H,EAAWA,EAAUzsD,EAAE5P,QAAQ,EAAMkvE,IAItE,OAAO4B,CACT,EAEAvC,aAAa/kE,UAAUk3B,mBAAqB,SAAUqrC,EAAS/gE,GAC7D5C,KAAK2kE,aAAarsC,mBAAmBqrC,EAAS/gE,EAChD,EAEAujE,aAAa/kE,UAAU0iE,cAAgB,SAAUC,GAC/C/jE,KAAK2kE,aAAab,cAAcC,EAClC,EAEAoC,aAAa/kE,UAAU4iE,mBAAqB,SAAU2E,GACpD3oE,KAAK2kE,aAAaX,mBAAmB2E,EACvC,EAEAxC,aAAa/kE,UAAUwnE,4BAA8B,SAAU//C,EAAci+C,EAAc+B,EAAYvC,EAAMC,GAO3G,OANI19C,EAAa81C,IACfmI,EAAa92B,UAAUnnB,EAAa81C,GAAG,GAAI91C,EAAa81C,GAAG,GAAK91C,EAAau1C,OAAQ,GAGvF0I,EAAa92B,UAAU,GAAInnB,EAAa61C,GAAI,GAEpC71C,EAAa7B,GACnB,KAAK,EACH8/C,EAAa92B,UAAUnnB,EAAa01C,eAAiB11C,EAAaw1C,SAAWx1C,EAAa41C,WAAWoK,IAAc,EAAG,GACtH,MAEF,KAAK,EACH/B,EAAa92B,UAAUnnB,EAAa01C,eAAiB11C,EAAaw1C,SAAWx1C,EAAa41C,WAAWoK,IAAe,EAAG,EAAG,GAO9H/B,EAAa92B,UAAUs2B,EAAMC,EAAM,EACrC,EAEAJ,aAAa/kE,UAAU0nE,WAAa,SAAUC,GAC5C,MAAO,OAAS3sE,KAAK4lB,MAAqB,IAAf+mD,EAAU,IAAY,IAAM3sE,KAAK4lB,MAAqB,IAAf+mD,EAAU,IAAY,IAAM3sE,KAAK4lB,MAAqB,IAAf+mD,EAAU,IAAY,GACjI,EAEA5C,aAAa/kE,UAAU4nE,UAAY,IAAIrL,YAEvCwI,aAAa/kE,UAAUutB,QAAU,WAAa,EAE9Cw3C,aAAa/kE,UAAU6nE,aAAe,YAChCjpE,KAAK2kE,aAAan9B,MAAQxnC,KAAK2kE,aAAa98B,iBAC9C7nC,KAAKkpE,eACLlpE,KAAK2kE,aAAa98B,eAAgB,EAClC7nC,KAAK2kE,aAAan9B,MAAO,EAE7B,EAEA,IAAI2hC,eAAiB,CACnBthD,OAAQ,IAGV,SAASuhD,qBAAqB94D,EAAMgjB,EAAYxL,GAC9C9nB,KAAKqpE,UAAY,GACjBrpE,KAAKwlE,WAAa,MAClBxlE,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,EACrC,CAgVA,SAASwhD,cAAch5D,EAAMgjB,EAAYxL,GACvC9nB,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,EACrC,CAeA,SAASyhD,YAAYj5D,EAAMgjB,EAAYxL,GACrC9nB,KAAKuiC,YACLviC,KAAKusD,aAAaj8C,EAAMgjB,EAAYxL,GACpC9nB,KAAKuiC,YACLviC,KAAKyyD,cAAcniD,EAAMgjB,EAAYxL,GACrC9nB,KAAK23D,eACP,CAoBA,SAAS6R,kBAAmB,CAkQ5B,SAASC,eAAgB,CA4GzB,SAASC,eAAep5D,EAAMgjB,EAAYxL,GACxC9nB,KAAK6mB,OAASvW,EAAKuW,OACnB7mB,KAAK2pE,YAAa,EAClB3pE,KAAK4mB,gBAAiB,EACtB5mB,KAAK0wD,gBAAkB,GACvB1wD,KAAKohD,SAAWphD,KAAK6mB,OAASvG,iBAAiBtgB,KAAK6mB,OAAOjvB,QAAU,GACrEoI,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,GACnC9nB,KAAKswB,GAAKhgB,EAAKggB,GAAKoY,gBAAgBC,QAAQ3oC,KAAMsQ,EAAKggB,GAAI,EAAGgD,EAAW1B,UAAW5xB,MAAQ,CAC1F8sD,cAAc,EAElB,CAQA,SAAS8c,YAAY9Y,EAAe+Y,GAClC7pE,KAAK8wD,cAAgBA,EACrB9wD,KAAK6mB,OAAS,KACd7mB,KAAKinC,eAAiB,EACtBjnC,KAAK8pE,WAAatkD,SAAS,OAC3B,IAAIukD,EAAY,GAEhB,GAAIF,GAAUA,EAAOG,MAAO,CAC1B,IAAIC,EAAezkD,SAAS,SACxB0kD,EAAUxmD,kBACdumD,EAAa7wE,aAAa,KAAM8wE,GAChCD,EAAa/jB,YAAc2jB,EAAOG,MAClChqE,KAAK8pE,WAAW32D,YAAY82D,GAC5BF,GAAaG,CACf,CAEA,GAAIL,GAAUA,EAAOzvD,YAAa,CAChC,IAAI+vD,EAAc3kD,SAAS,QACvB4kD,EAAS1mD,kBACbymD,EAAY/wE,aAAa,KAAMgxE,GAC/BD,EAAYjkB,YAAc2jB,EAAOzvD,YACjCpa,KAAK8pE,WAAW32D,YAAYg3D,GAC5BJ,GAAa,IAAMK,CACrB,CAEIL,GACF/pE,KAAK8pE,WAAW1wE,aAAa,kBAAmB2wE,GAGlD,IAAIx2C,EAAO/N,SAAS,QACpBxlB,KAAK8pE,WAAW32D,YAAYogB,GAC5B,IAAI69B,EAAc5rC,SAAS,KAC3BxlB,KAAK8pE,WAAW32D,YAAYi+C,GAC5BpxD,KAAKuuD,aAAe6C,EACpBpxD,KAAK6qD,aAAe,CAClBwf,oBAAqBR,GAAUA,EAAOQ,qBAAuB,gBAC7DpS,yBAA0B4R,GAAUA,EAAO5R,0BAA4B,iBACvEqS,kBAAmBT,GAAUA,EAAOS,mBAAqB,UACzDna,gBAAiB0Z,GAAUA,EAAO1Z,kBAAmB,EACrDrF,oBAAqB+e,IAAuC,IAA7BA,EAAO/e,mBACtCyf,YAAaV,GAAUA,EAAOU,cAAe,EAC7CC,YAAaX,GAAUA,EAAOW,cAAe,EAC7C7xE,UAAWkxE,GAAUA,EAAOlxE,WAAa,GACzChG,GAAIk3E,GAAUA,EAAOl3E,IAAM,GAC3B83E,UAAWZ,GAAUA,EAAOY,UAC5BC,WAAY,CACV7sE,MAAOgsE,GAAUA,EAAOa,YAAcb,EAAOa,WAAW7sE,OAAS,OACjEhM,OAAQg4E,GAAUA,EAAOa,YAAcb,EAAOa,WAAW74E,QAAU,OACnE8N,EAAGkqE,GAAUA,EAAOa,YAAcb,EAAOa,WAAW/qE,GAAK,KACzDC,EAAGiqE,GAAUA,EAAOa,YAAcb,EAAOa,WAAW9qE,GAAK,MAE3D/B,MAAOgsE,GAAUA,EAAOhsE,MACxBhM,OAAQg4E,GAAUA,EAAOh4E,OACzB84E,gBAAiBd,QAAoCzpE,IAA1BypE,EAAOc,gBAAgCd,EAAOc,gBAE3E3qE,KAAKszB,WAAa,CAChBkU,MAAM,EACN9E,UAAW,EACXnP,KAAMA,EACNs3B,aAAc7qD,KAAK6qD,cAErB7qD,KAAKohD,SAAW,GAChBphD,KAAK0wD,gBAAkB,GACvB1wD,KAAK4qE,WAAY,EACjB5qE,KAAKy1B,aAAe,KACtB,CAQA,SAASo1C,wBACP7qE,KAAK8qE,UAAY,CAAC,EAClB9qE,KAAK+qE,aAAe,GACpB/qE,KAAKgrE,oBAAsB,CAC7B,CAt0BAjtD,gBAAgB,CAACouC,YAAa+E,iBAAkBoE,eAAgBC,iBAAkBnJ,aAAcoJ,qBAAsB2Q,cAAeiD,sBAErIA,qBAAqBhoE,UAAUy2D,cAAgB,WACzC73D,KAAKsQ,KAAK26D,cAAgBjrE,KAAKszB,WAAWiB,YAAYtL,QACxDjpB,KAAKkrE,cAAgB1lD,SAAS,QAElC,EAEA4jD,qBAAqBhoE,UAAU+pE,kBAAoB,SAAUC,GAM3D,IALA,IAAI5jE,EAAI,EACJmR,EAAMyyD,EAAUxzE,OAChByzE,EAAe,GACfC,EAAqB,GAElB9jE,EAAImR,GACLyyD,EAAU5jE,KAAO3G,OAAO0qE,aAAa,KAAOH,EAAU5jE,KAAO3G,OAAO0qE,aAAa,IACnFF,EAAahsE,KAAKisE,GAClBA,EAAqB,IAErBA,GAAsBF,EAAU5jE,GAGlCA,GAAK,EAIP,OADA6jE,EAAahsE,KAAKisE,GACXD,CACT,EAEAjC,qBAAqBhoE,UAAUoqE,eAAiB,SAAUl7D,EAAMq/B,GAK9D,GAAIr/B,EAAKuX,QAAUvX,EAAKuX,OAAOjwB,OAAQ,CACrC,IAAI6yC,EAAQn6B,EAAKuX,OAAO,GAExB,GAAI4iB,EAAM9pC,GAAI,CACZ,IAAI8qE,EAAYhhC,EAAM9pC,GAAG8pC,EAAM9pC,GAAG/I,OAAS,GAEvC6zE,EAAU3nD,IACZ2nD,EAAU3nD,EAAEpL,EAAE,GAAKi3B,EACnB87B,EAAU3nD,EAAEpL,EAAE,GAAKi3B,EAEvB,CACF,CAEA,OAAOr/B,CACT,EAEA84D,qBAAqBhoE,UAAU8nE,aAAe,WAE5C,IAAI1hE,EACAmR,EAFJ3Y,KAAKkoC,mBAAmBloC,MAGxB,IAAI6oB,EAAe7oB,KAAK2kE,aAAaxG,YACrCn+D,KAAKimE,gBAAkB3lD,iBAAiBuI,EAAeA,EAAainB,EAAEl4C,OAAS,GAE3EixB,EAAag1C,GACf79D,KAAKuuD,aAAan1D,aAAa,OAAQ4G,KAAK8oE,WAAWjgD,EAAag1C,KAEpE79D,KAAKuuD,aAAan1D,aAAa,OAAQ,iBAGrCyvB,EAAaggC,KACf7oD,KAAKuuD,aAAan1D,aAAa,SAAU4G,KAAK8oE,WAAWjgD,EAAaggC,KACtE7oD,KAAKuuD,aAAan1D,aAAa,eAAgByvB,EAAa+0C,KAG9D59D,KAAKuuD,aAAan1D,aAAa,YAAayvB,EAAam2C,WACzD,IAAIlf,EAAW9/C,KAAKszB,WAAWiB,YAAY20B,cAAcrgC,EAAaxnB,GAEtE,GAAIy+C,EAASqG,OACXnmD,KAAKuuD,aAAan1D,aAAa,QAAS0mD,EAASqG,YAC5C,CACLnmD,KAAKuuD,aAAan1D,aAAa,cAAe0mD,EAASmG,SACvD,IAAIhG,EAAUp3B,EAAao3B,QACvBD,EAASn3B,EAAam3B,OAC1BhgD,KAAKuuD,aAAan1D,aAAa,aAAc4mD,GAC7ChgD,KAAKuuD,aAAan1D,aAAa,cAAe6mD,EAChD,CAEAjgD,KAAKuuD,aAAan1D,aAAa,aAAcyvB,EAAa1E,GAC1D,IAGIunD,EAHA5J,EAAUj5C,EAAainB,GAAK,GAC5B67B,IAAe3rE,KAAKszB,WAAWiB,YAAYtL,MAC/CtQ,EAAMmpD,EAAQlqE,OAEd,IAAIkvE,EAAe9mE,KAAK6zD,QAEpBoX,EAAcjrE,KAAKsQ,KAAK26D,YACxB3E,EAAO,EACPC,EAAO,EACPa,GAAY,EACZ/E,EAAmC,KAAlBx5C,EAAas3B,GAAat3B,EAAam2C,UAE5D,IAAIiM,GAAgBU,GAAe9iD,EAAa+mB,GA4CzC,CACL,IACI1mB,EADA0iD,EAAoB5rE,KAAKqpE,UAAUzxE,OAGvC,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAS3B,GARKxH,KAAKqpE,UAAU7hE,KAClBxH,KAAKqpE,UAAU7hE,GAAK,CAClBqkE,KAAM,KACNC,UAAW,KACXC,MAAO,QAINJ,IAAeV,GAAqB,IAANzjE,EAAS,CAG1C,GAFAkkE,EAAQE,EAAoBpkE,EAAIxH,KAAKqpE,UAAU7hE,GAAGqkE,KAAOrmD,SAASmmD,EAAa,IAAM,QAEjFC,GAAqBpkE,EAAG,CAM1B,GALAkkE,EAAMtyE,aAAa,iBAAkB,QACrCsyE,EAAMtyE,aAAa,kBAAmB,SACtCsyE,EAAMtyE,aAAa,oBAAqB,KACxC4G,KAAKqpE,UAAU7hE,GAAGqkE,KAAOH,EAErBC,EAAY,CACd,IAAIG,EAAYtmD,SAAS,KACzBkmD,EAAMv4D,YAAY24D,GAClB9rE,KAAKqpE,UAAU7hE,GAAGskE,UAAYA,CAChC,CAEA9rE,KAAKqpE,UAAU7hE,GAAGqkE,KAAOH,EACzB1rE,KAAKuuD,aAAap7C,YAAYu4D,EAChC,CAEAA,EAAMv6E,MAAMC,QAAU,SACxB,CAkBA,GAhBA01E,EAAa96B,QAETi/B,IACEnJ,EAAQt6D,GAAGsR,IACbwtD,GAAQjE,EACRkE,GAAQ19C,EAAak2C,QACrBwH,GAAQa,EAAY,EAAI,EACxBA,GAAY,GAGdpnE,KAAK4oE,4BAA4B//C,EAAci+C,EAAchF,EAAQt6D,GAAGqoB,KAAMy2C,EAAMC,GACpFD,GAAQxE,EAAQt6D,GAAGsoC,GAAK,EAExBw2B,GAAQjE,GAGNsJ,EAAY,CAEd,IAAIK,EAEJ,GAAmB,KAHnB9iD,EAAWlpB,KAAKszB,WAAWiB,YAAYu0B,YAAYjgC,EAAao2C,UAAUz3D,GAAIs4C,EAASE,OAAQhgD,KAAKszB,WAAWiB,YAAY20B,cAAcrgC,EAAaxnB,GAAG4kD,UAG5I9hC,EACX6nD,EAAe,IAAItC,eAAexgD,EAAS5Y,KAAMtQ,KAAKszB,WAAYtzB,UAC7D,CACL,IAAIsQ,EAAO64D,eAEPjgD,EAAS5Y,MAAQ4Y,EAAS5Y,KAAKuX,SACjCvX,EAAOtQ,KAAKwrE,eAAetiD,EAAS5Y,KAAMuY,EAAam2C,YAGzDgN,EAAe,IAAIxO,gBAAgBltD,EAAMtQ,KAAKszB,WAAYtzB,KAC5D,CAEA,GAAIA,KAAKqpE,UAAU7hE,GAAGukE,MAAO,CAC3B,IAAIA,EAAQ/rE,KAAKqpE,UAAU7hE,GAAGukE,MAC9B/rE,KAAKqpE,UAAU7hE,GAAGskE,UAAUriB,YAAYsiB,EAAMxd,cAC9Cwd,EAAMp9C,SACR,CAEA3uB,KAAKqpE,UAAU7hE,GAAGukE,MAAQC,EAC1BA,EAAaC,QAAS,EACtBD,EAAah7C,aAAa,GAC1Bg7C,EAAa/1C,cACbj2B,KAAKqpE,UAAU7hE,GAAGskE,UAAU34D,YAAY64D,EAAazd,cAGlC,IAAfrlC,EAAS/E,GACXnkB,KAAKqpE,UAAU7hE,GAAGskE,UAAU1yE,aAAa,YAAa,SAAWyvB,EAAam2C,UAAY,IAAM,IAAMn2C,EAAam2C,UAAY,IAAM,IAEzI,MACMiM,GACFS,EAAMtyE,aAAa,YAAa,aAAe0tE,EAAa/3B,MAAM,IAAM,IAAM+3B,EAAa/3B,MAAM,IAAM,KAGzG28B,EAAMxlB,YAAc4b,EAAQt6D,GAAGyN,IAC/By2D,EAAM18C,eAAe,uCAAwC,YAAa,WAG9E,CAEIi8C,GAAeS,GACjBA,EAAMtyE,aAAa,IAlJR,GAoJf,KA7IoD,CAClD,IAAI8yE,EAAWlsE,KAAKkrE,cAChBiB,EAAU,QAEd,OAAQtjD,EAAa7B,GACnB,KAAK,EACHmlD,EAAU,MACV,MAEF,KAAK,EACHA,EAAU,SACV,MAEF,QACEA,EAAU,QAIdD,EAAS9yE,aAAa,cAAe+yE,GACrCD,EAAS9yE,aAAa,iBAAkBipE,GACxC,IAAInc,EAAclmD,KAAKmrE,kBAAkBtiD,EAAao2C,WAItD,IAHAtmD,EAAMutC,EAAYtuD,OAClB2uE,EAAO19C,EAAa81C,GAAK91C,EAAa81C,GAAG,GAAK91C,EAAau1C,OAAS,EAE/D52D,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,GACxBkkE,EAAQ1rE,KAAKqpE,UAAU7hE,GAAGqkE,MAAQrmD,SAAS,UACrC0gC,YAAcA,EAAY1+C,GAChCkkE,EAAMtyE,aAAa,IAAK,GACxBsyE,EAAMtyE,aAAa,IAAKmtE,GACxBmF,EAAMv6E,MAAMC,QAAU,UACtB86E,EAAS/4D,YAAYu4D,GAEhB1rE,KAAKqpE,UAAU7hE,KAClBxH,KAAKqpE,UAAU7hE,GAAK,CAClBqkE,KAAM,KACNE,MAAO,OAIX/rE,KAAKqpE,UAAU7hE,GAAGqkE,KAAOH,EACzBnF,GAAQ19C,EAAaq2C,gBAGvBl/D,KAAKuuD,aAAap7C,YAAY+4D,EAChC,CAmGA,KAAO1kE,EAAIxH,KAAKqpE,UAAUzxE,QACxBoI,KAAKqpE,UAAU7hE,GAAGqkE,KAAK16E,MAAMC,QAAU,OACvCoW,GAAK,EAGPxH,KAAKk2D,cAAe,CACtB,EAEAkT,qBAAqBhoE,UAAU4pD,iBAAmB,WAIhD,GAHAhrD,KAAKgxB,aAAahxB,KAAK8nB,KAAKmf,cAAgBjnC,KAAKsQ,KAAK+Y,IACtDrpB,KAAK83D,qBAED93D,KAAKk2D,aAAc,CACrBl2D,KAAKk2D,cAAe,EACpB,IAAIkW,EAAUpsE,KAAKuuD,aAAa5gC,UAChC3tB,KAAKqsE,KAAO,CACV7xE,IAAK4xE,EAAQxsE,EACbrF,KAAM6xE,EAAQzsE,EACd9B,MAAOuuE,EAAQvuE,MACfhM,OAAQu6E,EAAQv6E,OAEpB,CAEA,OAAOmO,KAAKqsE,IACd,EAEAjD,qBAAqBhoE,UAAUinC,SAAW,WACxC,IAAI7gC,EAEAwkE,EADArzD,EAAM3Y,KAAKqpE,UAAUzxE,OAIzB,IAFAoI,KAAKinC,cAAgBjnC,KAAK8nB,KAAKmf,cAE1Bz/B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,GACxBwkE,EAAehsE,KAAKqpE,UAAU7hE,GAAGukE,SAG/BC,EAAah7C,aAAahxB,KAAK8nB,KAAKmf,cAAgBjnC,KAAKsQ,KAAK+Y,IAE1D2iD,EAAaxkC,OACfxnC,KAAKwnC,MAAO,GAIpB,EAEA4hC,qBAAqBhoE,UAAU02D,mBAAqB,WAGlD,GAFA93D,KAAKipE,iBAEAjpE,KAAKsQ,KAAK26D,aAAejrE,KAAKwnC,QACjCxnC,KAAKwoE,aAAanC,YAAYrmE,KAAK2kE,aAAaxG,YAAan+D,KAAKkmE,oBAE9DlmE,KAAKkmE,oBAAsBlmE,KAAKwoE,aAAatC,oBAAoB,CAEnE,IAAI1+D,EACAmR,EAFJ3Y,KAAKk2D,cAAe,EAGpB,IAGIoW,EACAC,EACAP,EALA/F,EAAkBjmE,KAAKwoE,aAAavC,gBACpCnE,EAAU9hE,KAAK2kE,aAAaxG,YAAYruB,EAM5C,IALAn3B,EAAMmpD,EAAQlqE,OAKT4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACnBs6D,EAAQt6D,GAAGsR,IACdwzD,EAAiBrG,EAAgBz+D,GACjC+kE,EAAWvsE,KAAKqpE,UAAU7hE,GAAGqkE,MAC7BG,EAAehsE,KAAKqpE,UAAU7hE,GAAGukE,QAG/BC,EAAa/1C,cAGXq2C,EAAe9kC,KAAKuI,GACtBw8B,EAASnzE,aAAa,YAAakzE,EAAev8B,GAGhDu8B,EAAe9kC,KAAKpf,GACtBmkD,EAASnzE,aAAa,UAAWkzE,EAAelkD,GAG9CkkD,EAAe9kC,KAAKo2B,IACtB2O,EAASnzE,aAAa,eAAgBkzE,EAAe1O,IAGnD0O,EAAe9kC,KAAKqhB,IACtB0jB,EAASnzE,aAAa,SAAUkzE,EAAezjB,IAG7CyjB,EAAe9kC,KAAKq2B,IACtB0O,EAASnzE,aAAa,OAAQkzE,EAAezO,IAIrD,CAEJ,EAMA9/C,gBAAgB,CAAC03C,eAAgB6T,eAEjCA,cAAcloE,UAAUy2D,cAAgB,WACtC,IAAItG,EAAO/rC,SAAS,QAIpB+rC,EAAKn4D,aAAa,QAAS4G,KAAKsQ,KAAKstD,IACrCrM,EAAKn4D,aAAa,SAAU4G,KAAKsQ,KAAKq0B,IACtC4sB,EAAKn4D,aAAa,OAAQ4G,KAAKsQ,KAAKu4C,IACpC7oD,KAAKuuD,aAAap7C,YAAYo+C,EAChC,EAUAgY,YAAYnoE,UAAU4vB,aAAe,SAAUw5B,GAC7CxqD,KAAK2uD,kBAAkBnE,GAAK,EAC9B,EAEA+e,YAAYnoE,UAAU60B,YAAc,WAAa,EAEjDszC,YAAYnoE,UAAU0tD,eAAiB,WACrC,OAAO,IACT,EAEAya,YAAYnoE,UAAUutB,QAAU,WAAa,EAE7C46C,YAAYnoE,UAAU4pD,iBAAmB,WAAa,EAEtDue,YAAYnoE,UAAUg3B,KAAO,WAAa,EAE1Cra,gBAAgB,CAACouC,YAAa+E,iBAAkBqE,iBAAkBnJ,cAAemd,aAIjFxrD,gBAAgB,CAACkvC,cAAeuc,iBAEhCA,gBAAgBpoE,UAAUwuD,WAAa,SAAUt/C,GAC/C,OAAO,IAAIi5D,YAAYj5D,EAAMtQ,KAAKszB,WAAYtzB,KAChD,EAEAwpE,gBAAgBpoE,UAAUyuD,YAAc,SAAUv/C,GAChD,OAAO,IAAIktD,gBAAgBltD,EAAMtQ,KAAKszB,WAAYtzB,KACpD,EAEAwpE,gBAAgBpoE,UAAU0uD,WAAa,SAAUx/C,GAC/C,OAAO,IAAI84D,qBAAqB94D,EAAMtQ,KAAKszB,WAAYtzB,KACzD,EAEAwpE,gBAAgBpoE,UAAUquD,YAAc,SAAUn/C,GAChD,OAAO,IAAImlD,cAAcnlD,EAAMtQ,KAAKszB,WAAYtzB,KAClD,EAEAwpE,gBAAgBpoE,UAAUuuD,YAAc,SAAUr/C,GAChD,OAAO,IAAIg5D,cAAch5D,EAAMtQ,KAAKszB,WAAYtzB,KAClD,EAEAwpE,gBAAgBpoE,UAAUwxB,gBAAkB,SAAUuC,GACpDn1B,KAAK8pE,WAAW1wE,aAAa,QAAS,8BACtC4G,KAAK8pE,WAAW1wE,aAAa,cAAe,gCAExC4G,KAAK6qD,aAAa2f,YACpBxqE,KAAK8pE,WAAW1wE,aAAa,UAAW4G,KAAK6qD,aAAa2f,aAE1DxqE,KAAK8pE,WAAW1wE,aAAa,UAAW,OAAS+7B,EAASsvB,EAAI,IAAMtvB,EAAStR,GAG1E7jB,KAAK6qD,aAAa0f,cACrBvqE,KAAK8pE,WAAW1wE,aAAa,QAAS+7B,EAASsvB,GAC/CzkD,KAAK8pE,WAAW1wE,aAAa,SAAU+7B,EAAStR,GAChD7jB,KAAK8pE,WAAW34E,MAAM0M,MAAQ,OAC9BmC,KAAK8pE,WAAW34E,MAAMU,OAAS,OAC/BmO,KAAK8pE,WAAW34E,MAAMg/C,UAAY,qBAClCnwC,KAAK8pE,WAAW34E,MAAMm5E,kBAAoBtqE,KAAK6qD,aAAayf,mBAG1DtqE,KAAK6qD,aAAahtD,OACpBmC,KAAK8pE,WAAW1wE,aAAa,QAAS4G,KAAK6qD,aAAahtD,OAGtDmC,KAAK6qD,aAAah5D,QACpBmO,KAAK8pE,WAAW1wE,aAAa,SAAU4G,KAAK6qD,aAAah5D,QAGvDmO,KAAK6qD,aAAalyD,WACpBqH,KAAK8pE,WAAW1wE,aAAa,QAAS4G,KAAK6qD,aAAalyD,WAGtDqH,KAAK6qD,aAAal4D,IACpBqN,KAAK8pE,WAAW1wE,aAAa,KAAM4G,KAAK6qD,aAAal4D,SAGnByN,IAAhCJ,KAAK6qD,aAAa4f,WACpBzqE,KAAK8pE,WAAW1wE,aAAa,YAAa4G,KAAK6qD,aAAa4f,WAG9DzqE,KAAK8pE,WAAW1wE,aAAa,sBAAuB4G,KAAK6qD,aAAawf,qBAGtErqE,KAAK8wD,cAAc59B,QAAQ/f,YAAYnT,KAAK8pE,YAE5C,IAAIv2C,EAAOvzB,KAAKszB,WAAWC,KAC3BvzB,KAAK4wD,gBAAgBz7B,EAAU5B,GAC/BvzB,KAAKszB,WAAW68B,gBAAkBnwD,KAAK6qD,aAAasF,gBACpDnwD,KAAKsQ,KAAO6kB,EACZ,IAAIi8B,EAAc5rC,SAAS,YACvB+rC,EAAO/rC,SAAS,QACpB+rC,EAAKn4D,aAAa,QAAS+7B,EAASsvB,GACpC8M,EAAKn4D,aAAa,SAAU+7B,EAAStR,GACrC0tC,EAAKn4D,aAAa,IAAK,GACvBm4D,EAAKn4D,aAAa,IAAK,GACvB,IAAIkiE,EAAS53C,kBACb0tC,EAAYh4D,aAAa,KAAMkiE,GAC/BlK,EAAYj+C,YAAYo+C,GACxBvxD,KAAKuuD,aAAan1D,aAAa,YAAa,OAASykB,kBAAoB,IAAMy9C,EAAS,KACxF/nC,EAAKpgB,YAAYi+C,GACjBpxD,KAAK6mB,OAASsO,EAAStO,OACvB7mB,KAAKohD,SAAW9gC,iBAAiB6U,EAAStO,OAAOjvB,OACnD,EAEA4xE,gBAAgBpoE,UAAUutB,QAAU,WAOlC,IAAInnB,EANAxH,KAAK8wD,cAAc59B,UACrBlzB,KAAK8wD,cAAc59B,QAAQ4G,UAAY,IAGzC95B,KAAKuuD,aAAe,KACpBvuD,KAAKszB,WAAWC,KAAO,KAEvB,IAAI5a,EAAM3Y,KAAK6mB,OAAS7mB,KAAK6mB,OAAOjvB,OAAS,EAE7C,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBxH,KAAKohD,SAAS55C,IAAMxH,KAAKohD,SAAS55C,GAAGmnB,SACvC3uB,KAAKohD,SAAS55C,GAAGmnB,UAIrB3uB,KAAKohD,SAASxpD,OAAS,EACvBoI,KAAK4qE,WAAY,EACjB5qE,KAAK8wD,cAAgB,IACvB,EAEA0Y,gBAAgBpoE,UAAU20B,oBAAsB,WAAa,EAE7DyzC,gBAAgBpoE,UAAUorE,eAAiB,SAAU3oC,GACnD,IAAIr8B,EAAI,EACJmR,EAAM3Y,KAAK6mB,OAAOjvB,OAEtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,GAAIxH,KAAK6mB,OAAOrf,GAAGq8B,MAAQA,EACzB,OAAOr8B,EAIX,OAAQ,CACV,EAEAgiE,gBAAgBpoE,UAAUiuD,UAAY,SAAUj5C,GAC9C,IAAIgrC,EAAWphD,KAAKohD,SAEpB,IAAIA,EAAShrC,IAAgC,KAAxBpW,KAAK6mB,OAAOzQ,GAAKqR,GAAtC,CAIA25B,EAAShrC,IAAO,EAChB,IAAI8L,EAAUliB,KAAKuvD,WAAWvvD,KAAK6mB,OAAOzQ,IAa1C,GAZAgrC,EAAShrC,GAAO8L,EAEZ+C,yBAC0B,IAAxBjlB,KAAK6mB,OAAOzQ,GAAKqR,IACnBznB,KAAKszB,WAAWb,iBAAiB7B,oBAAoB1O,GAGvDA,EAAQwS,mBAGV10B,KAAKysE,mBAAmBvqD,EAAS9L,GAE7BpW,KAAK6mB,OAAOzQ,GAAKmgD,GAAI,CACvB,IAAImW,EAAe,OAAQ1sE,KAAK6mB,OAAOzQ,GAAOpW,KAAKwsE,eAAexsE,KAAK6mB,OAAOzQ,GAAKu2D,IAAMv2D,EAAM,EAE/F,IAAsB,IAAlBs2D,EACF,OAGF,GAAK1sE,KAAKohD,SAASsrB,KAAiD,IAAhC1sE,KAAKohD,SAASsrB,GAG3C,CACL,IACIE,EADexrB,EAASsrB,GACC1V,SAASh3D,KAAK6mB,OAAOzQ,GAAKmgD,IACvDr0C,EAAQw1C,SAASkV,EACnB,MANE5sE,KAAKqvD,UAAUqd,GACf1sE,KAAKywD,kBAAkBvuC,EAM3B,CA/BA,CAgCF,EAEAsnD,gBAAgBpoE,UAAUkuD,qBAAuB,WAC/C,KAAOtvD,KAAK0wD,gBAAgB94D,QAAQ,CAClC,IAAIsqB,EAAUliB,KAAK0wD,gBAAgBpZ,MAGnC,GAFAp1B,EAAQ01C,iBAEJ11C,EAAQ5R,KAAKimD,GAIf,IAHA,IAAI/uD,EAAI,EACJmR,EAAM3Y,KAAKohD,SAASxpD,OAEjB4P,EAAImR,GAAK,CACd,GAAI3Y,KAAKohD,SAAS55C,KAAO0a,EAAS,CAChC,IAAIwqD,EAAe,OAAQxqD,EAAQ5R,KAAOtQ,KAAKwsE,eAAetqD,EAAQ5R,KAAKq8D,IAAMnlE,EAAI,EAEjFolE,EADe5sE,KAAKohD,SAASsrB,GACJ1V,SAASh3D,KAAK6mB,OAAOrf,GAAG+uD,IACrDr0C,EAAQw1C,SAASkV,GACjB,KACF,CAEAplE,GAAK,CACP,CAEJ,CACF,EAEAgiE,gBAAgBpoE,UAAU60B,YAAc,SAAUu0B,GAChD,GAAIxqD,KAAKinC,gBAAkBujB,IAAOxqD,KAAK4qE,UAAvC,CAgBA,IAAIpjE,EAZQ,OAARgjD,EACFA,EAAMxqD,KAAKinC,cAEXjnC,KAAKinC,cAAgBujB,EAKvBxqD,KAAKszB,WAAWoP,SAAW8nB,EAC3BxqD,KAAKszB,WAAWoU,SAAW,EAC3B1nC,KAAKszB,WAAWb,iBAAiBvB,aAAes5B,EAChDxqD,KAAKszB,WAAWkU,MAAO,EAEvB,IAAI7uB,EAAM3Y,KAAK6mB,OAAOjvB,OAMtB,IAJKoI,KAAK4mB,gBACR5mB,KAAKovD,YAAY5E,GAGdhjD,EAAImR,EAAM,EAAGnR,GAAK,EAAGA,GAAK,GACzBxH,KAAK4mB,gBAAkB5mB,KAAKohD,SAAS55C,KACvCxH,KAAKohD,SAAS55C,GAAGwpB,aAAaw5B,EAAMxqD,KAAK6mB,OAAOrf,GAAG6hB,IAIvD,GAAIrpB,KAAKszB,WAAWkU,KAClB,IAAKhgC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,GACpBxH,KAAK4mB,gBAAkB5mB,KAAKohD,SAAS55C,KACvCxH,KAAKohD,SAAS55C,GAAGyuB,aA9BvB,CAkCF,EAEAuzC,gBAAgBpoE,UAAUqrE,mBAAqB,SAAUvqD,EAAS9L,GAChE,IAAIgnB,EAAalb,EAAQ4sC,iBAEzB,GAAK1xB,EAAL,CAOA,IAHA,IACIyvC,EADArlE,EAAI,EAGDA,EAAI4O,GACLpW,KAAKohD,SAAS55C,KAA2B,IAArBxH,KAAKohD,SAAS55C,IAAexH,KAAKohD,SAAS55C,GAAGsnD,mBACpE+d,EAAc7sE,KAAKohD,SAAS55C,GAAGsnD,kBAGjCtnD,GAAK,EAGHqlE,EACF7sE,KAAKuuD,aAAaue,aAAa1vC,EAAYyvC,GAE3C7sE,KAAKuuD,aAAap7C,YAAYiqB,EAhBhC,CAkBF,EAEAosC,gBAAgBpoE,UAAUg3B,KAAO,WAC/Bp4B,KAAKuuD,aAAap9D,MAAMC,QAAU,MACpC,EAEAo4E,gBAAgBpoE,UAAUi3B,KAAO,WAC/Br4B,KAAKuuD,aAAap9D,MAAMC,QAAU,OACpC,EAIA2sB,gBAAgB,CAACouC,YAAa+E,iBAAkBqE,iBAAkBnJ,aAAcoJ,sBAAuBiU,cAEvGA,aAAaroE,UAAUs0D,YAAc,SAAUplD,EAAMgjB,EAAYxL,GAC/D9nB,KAAKuiC,YACLviC,KAAKusD,aAAaj8C,EAAMgjB,EAAYxL,GACpC9nB,KAAKyyD,cAAcniD,EAAMgjB,EAAYxL,GACrC9nB,KAAK+pD,iBACL/pD,KAAK23D,gBACL33D,KAAK81D,sBACL91D,KAAK+1D,0BACL/1D,KAAK+2D,8BAED/2D,KAAKsQ,KAAK2gB,IAAOqC,EAAW68B,iBAC9BnwD,KAAKiwD,gBAGPjwD,KAAKo4B,MACP,EAcAqxC,aAAaroE,UAAU4vB,aAAe,SAAUw5B,GAK9C,GAJAxqD,KAAKwnC,MAAO,EACZxnC,KAAKuqD,uBAAuBC,GAC5BxqD,KAAK2uD,kBAAkBnE,EAAKxqD,KAAKgqD,WAE5BhqD,KAAKgqD,WAAchqD,KAAKsQ,KAAK2gB,GAAlC,CAIA,GAAKjxB,KAAKswB,GAAGw8B,aASX9sD,KAAKinC,cAAgBujB,EAAMxqD,KAAKsQ,KAAKgZ,OATZ,CACzB,IAAI2lC,EAAejvD,KAAKswB,GAAGvM,EAEvBkrC,IAAiBjvD,KAAKsQ,KAAK8Y,KAC7B6lC,EAAejvD,KAAKsQ,KAAK8Y,GAAK,GAGhCppB,KAAKinC,cAAgBgoB,CACvB,CAIA,IAAIznD,EACAmR,EAAM3Y,KAAKohD,SAASxpD,OAOxB,IALKoI,KAAK4mB,gBACR5mB,KAAKovD,YAAYpvD,KAAKinC,eAInBz/B,EAAImR,EAAM,EAAGnR,GAAK,EAAGA,GAAK,GACzBxH,KAAK4mB,gBAAkB5mB,KAAKohD,SAAS55C,MACvCxH,KAAKohD,SAAS55C,GAAGwpB,aAAahxB,KAAKinC,cAAgBjnC,KAAK6mB,OAAOrf,GAAG6hB,IAE9DrpB,KAAKohD,SAAS55C,GAAGggC,OACnBxnC,KAAKwnC,MAAO,GA3BlB,CA+BF,EAEAiiC,aAAaroE,UAAU02D,mBAAqB,WAC1C,IAAItwD,EACAmR,EAAM3Y,KAAK6mB,OAAOjvB,OAEtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,GACpBxH,KAAK4mB,gBAAkB5mB,KAAKohD,SAAS55C,KACvCxH,KAAKohD,SAAS55C,GAAGyuB,aAGvB,EAEAwzC,aAAaroE,UAAU2rE,YAAc,SAAU5qB,GAC7CniD,KAAKohD,SAAWe,CAClB,EAEAsnB,aAAaroE,UAAU4rE,YAAc,WACnC,OAAOhtE,KAAKohD,QACd,EAEAqoB,aAAaroE,UAAU6rE,gBAAkB,WACvC,IAAIzlE,EACAmR,EAAM3Y,KAAK6mB,OAAOjvB,OAEtB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBxH,KAAKohD,SAAS55C,IAChBxH,KAAKohD,SAAS55C,GAAGmnB,SAGvB,EAEA86C,aAAaroE,UAAUutB,QAAU,WAC/B3uB,KAAKitE,kBACLjtE,KAAK82D,oBACP,EAcA/4C,gBAAgB,CAACyrD,gBAAiBC,aAAcnU,gBAAiBoU,gBAEjEA,eAAetoE,UAAUsuD,WAAa,SAAUp/C,GAC9C,OAAO,IAAIo5D,eAAep5D,EAAMtQ,KAAKszB,WAAYtzB,KACnD,EAqEA+d,gBAAgB,CAACyrD,iBAAkBI,aAEnCA,YAAYxoE,UAAUsuD,WAAa,SAAUp/C,GAC3C,OAAO,IAAIo5D,eAAep5D,EAAMtQ,KAAKszB,WAAYtzB,KACnD,EAQA6qE,sBAAsBzpE,UAAY,CAChC8rE,qBAAsB,SAA8BvZ,GAClD,IAAInsD,EACAmR,EAAMg7C,EAAW/7D,OACjB+D,EAAM,IAEV,IAAK6L,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB7L,GAAOg4D,EAAWnsD,GAAG2oC,UAAUx0C,IAAM,IAGvC,IAAIwxE,EAAWntE,KAAK8qE,UAAUnvE,GAY9B,OAVKwxE,IACHA,EAAW,CACTxZ,WAAY,GAAG9gE,OAAO8gE,GACtBhJ,eAAgB,IAAIlc,OACpBjH,MAAM,GAERxnC,KAAK8qE,UAAUnvE,GAAOwxE,EACtBntE,KAAK+qE,aAAa1rE,KAAK8tE,IAGlBA,CACT,EACAC,gBAAiB,SAAyBD,EAAUpZ,GAKlD,IAJA,IAAIvsD,EAAI,EACJmR,EAAMw0D,EAASxZ,WAAW/7D,OAC1B4vC,EAAOusB,EAEJvsD,EAAImR,IAAQo7C,GAAc,CAC/B,GAAIoZ,EAASxZ,WAAWnsD,GAAG2oC,UAAUwS,OAAOnb,KAAM,CAChDA,GAAO,EACP,KACF,CAEAhgC,GAAK,CACP,CAEA,GAAIggC,EAGF,IAFA2lC,EAASxiB,eAAe3e,QAEnBxkC,EAAImR,EAAM,EAAGnR,GAAK,EAAGA,GAAK,EAC7B2lE,EAASxiB,eAAezY,SAASi7B,EAASxZ,WAAWnsD,GAAG2oC,UAAUwS,OAAO5+B,GAI7EopD,EAAS3lC,KAAOA,CAClB,EACA6lC,iBAAkB,SAA0BtZ,GAC1C,IAAIvsD,EACAmR,EAAM3Y,KAAK+qE,aAAanzE,OAE5B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKotE,gBAAgBptE,KAAK+qE,aAAavjE,GAAIusD,EAE/C,EACAuZ,UAAW,WAET,OADAttE,KAAKgrE,qBAAuB,EACrB,IAAMhrE,KAAKgrE,mBACpB,GAGF,IAAIuC,WAAa,WACf,IAAI56E,EAAK,+BACL66E,EAAa,KACbC,EAAgB,KAChBC,EAAM,KA4CV,SAASC,IAtBT,IACMC,EAEArZ,EACApiB,EAmBCq7B,IAtBDI,EAAOpoD,SAAS,OAEhB+uC,EAAM/uC,SAAS,UACf2sB,EAAS3sB,SAAS,iBACtB+uC,EAAIn7D,aAAa,KAAMzG,GACvBw/C,EAAO/4C,aAAa,OAAQ,UAC5B+4C,EAAO/4C,aAAa,8BAA+B,QACnD+4C,EAAO/4C,aAAa,SAAU,sFAC9Bm7D,EAAIphD,YAAYg/B,GAEhBy7B,EAAKz6D,YAAYohD,GAEjBqZ,EAAKx0E,aAAa,KAAMzG,EAAK,QAEzB8hE,eAAeC,gBACjBkZ,EAAKz8E,MAAMC,QAAU,QAQrBs8E,EALKE,EAML78E,SAAS8C,KAAKsf,YAAYu6D,GAC1BF,EAAa1vD,UAAU,WACvB2vD,EAAgBD,EAAWjhD,WAAW,OAExBlsB,OAAS,QAAU1N,EAAK,IACtC86E,EAAcjhD,UAAY,gBAC1BihD,EAAchhD,SAAS,EAAG,EAAG,EAAG,GAEpC,CAcA,MAAO,CACLv6B,KAAMy7E,EACNrjE,IAdF,SAAiB+hB,GASf,OARKmhD,GACHG,IAGFH,EAAW3vE,MAAQwuB,EAAOxuB,MAC1B2vE,EAAW37E,OAASw6B,EAAOx6B,OAE3B47E,EAAcptE,OAAS,QAAU1N,EAAK,IAC/B66E,CACT,EAMF,EAEA,SAASK,aAAahwE,EAAOhM,GAC3B,GAAI4iE,eAAeE,gBACjB,OAAO,IAAItO,gBAAgBxoD,EAAOhM,GAGpC,IAAIw6B,EAASvO,UAAU,UAGvB,OAFAuO,EAAOxuB,MAAQA,EACfwuB,EAAOx6B,OAASA,EACTw6B,CACT,CAEA,IAAIhC,YACK,CACLyjD,eAAgBP,WAAWr7E,KAC3B67E,cAAeR,WAAWjjE,IAC1BujE,aAAcA,cAIdG,kBAAoB,CAAC,EAEzB,SAASC,UAAU90C,GACjB,IAAI3xB,EAGAutD,EAFAp8C,EAAMwgB,EAAK7oB,KAAKy7C,GAAK5yB,EAAK7oB,KAAKy7C,GAAGn0D,OAAS,EAI/C,IAHAoI,KAAKi1D,QAAU,GAGVztD,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAC3ButD,EAAgB,KAChB,IAAI9kD,EAAOkpB,EAAK7oB,KAAKy7C,GAAGvkD,GAAGigB,GAEvBumD,kBAAkB/9D,KAEpB8kD,EAAgB,IAAIG,EADP8Y,kBAAkB/9D,GAAMklD,QACVh8B,EAAKs1B,eAAezC,eAAexkD,GAAI2xB,IAGhE47B,GACF/0D,KAAKi1D,QAAQ51D,KAAK01D,EAEtB,CAEI/0D,KAAKi1D,QAAQr9D,QACfuhC,EAAKixB,uBAAuBpqD,KAEhC,CAyBA,SAASkuE,eAAev7E,EAAIwiE,GAC1B6Y,kBAAkBr7E,GAAM,CACtBwiE,OAAQA,EAEZ,CAEA,SAASgZ,cAAc79D,EAAM4R,GAK3B,IAAI1a,EAJJxH,KAAKsQ,KAAOA,EACZtQ,KAAKkiB,QAAUA,EACfliB,KAAKsnB,gBAAkBtnB,KAAKsQ,KAAKgX,iBAAmB,GACpDtnB,KAAKqxD,SAAW/wC,iBAAiBtgB,KAAKsnB,gBAAgB1vB,QAEtD,IAAI+gB,EAAM3Y,KAAKsnB,gBAAgB1vB,OAC3Bw2E,GAAW,EAEf,IAAK5mE,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACa,MAAjCxH,KAAKsnB,gBAAgB9f,GAAGuO,OAC1Bq4D,GAAW,GAGbpuE,KAAKqxD,SAAS7pD,GAAKyjC,qBAAqB4mB,aAAa7xD,KAAKkiB,QAASliB,KAAKsnB,gBAAgB9f,GAAI,GAG9FxH,KAAKouE,SAAWA,EAEZA,GACFpuE,KAAKkiB,QAAQkoC,uBAAuBpqD,KAExC,CAoDA,SAASquE,gBAAiB,CAvG1BJ,UAAU7sE,UAAU60B,YAAc,SAAU4R,GAC1C,IAAIrgC,EACAmR,EAAM3Y,KAAKi1D,QAAQr9D,OAEvB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKi1D,QAAQztD,GAAGyuB,YAAY4R,EAEhC,EAEAomC,UAAU7sE,UAAUqyD,WAAa,SAAUxjD,GACzC,IAAIzI,EACAmR,EAAM3Y,KAAKi1D,QAAQr9D,OACnBk0D,EAAU,GAEd,IAAKtkD,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBxH,KAAKi1D,QAAQztD,GAAGyI,OAASA,GAC3B67C,EAAQzsD,KAAKW,KAAKi1D,QAAQztD,IAI9B,OAAOskD,CACT,EAgCAqiB,cAAc/sE,UAAU60B,YAAc,WACpC,GAAKj2B,KAAKouE,SAAV,CAIA,IAEI5mE,EAEA+f,EACA8rB,EACA/iC,EANA6/B,EAAYnwC,KAAKkiB,QAAQyoC,eAAe1R,IACxC3sB,EAAMtsB,KAAKkiB,QAAQosD,cAEnB31D,EAAM3Y,KAAKsnB,gBAAgB1vB,OAM/B,IAFA00B,EAAIiiD,YAEC/mE,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,GAAqC,MAAjCxH,KAAKsnB,gBAAgB9f,GAAGuO,KAAc,CAYxC,IAAIiR,EAXAhnB,KAAKsnB,gBAAgB9f,GAAGm5C,MAC1Br0B,EAAIkiD,OAAO,EAAG,GACdliD,EAAImiD,OAAOzuE,KAAKkiB,QAAQoR,WAAWy9B,SAAStM,EAAG,GAC/Cn4B,EAAImiD,OAAOzuE,KAAKkiB,QAAQoR,WAAWy9B,SAAStM,EAAGzkD,KAAKkiB,QAAQoR,WAAWy9B,SAASltC,GAChFyI,EAAImiD,OAAO,EAAGzuE,KAAKkiB,QAAQoR,WAAWy9B,SAASltC,GAC/CyI,EAAImiD,OAAO,EAAG,IAGhBn+D,EAAOtQ,KAAKqxD,SAAS7pD,GAAGuc,EACxBwD,EAAK4oB,EAAUgD,kBAAkB7iC,EAAKyT,EAAE,GAAG,GAAIzT,EAAKyT,EAAE,GAAG,GAAI,GAC7DuI,EAAIkiD,OAAOjnD,EAAG,GAAIA,EAAG,IAErB,IAAIN,EAAO3W,EAAK2sB,QAEhB,IAAKjW,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBqsB,EAAMlD,EAAUoD,oBAAoBjjC,EAAK8X,EAAEpB,EAAI,GAAI1W,EAAK9I,EAAEwf,GAAI1W,EAAKyT,EAAEiD,IACrEsF,EAAIoiD,cAAcr7B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAGhEA,EAAMlD,EAAUoD,oBAAoBjjC,EAAK8X,EAAEpB,EAAI,GAAI1W,EAAK9I,EAAE,GAAI8I,EAAKyT,EAAE,IACrEuI,EAAIoiD,cAAcr7B,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAAIA,EAAI,GAChE,CAGFrzC,KAAKkiB,QAAQoR,WAAWt8B,SAAS23E,MAAK,GACtCriD,EAAIsiD,MAtCJ,CAuCF,EAEAT,cAAc/sE,UAAU0yD,gBAAkB3C,YAAY/vD,UAAU0yD,gBAEhEqa,cAAc/sE,UAAUutB,QAAU,WAChC3uB,KAAKkiB,QAAU,IACjB,EAIA,IAAI2sD,cAAgB,CAClB,EAAG,YACH,EAAG,aACH,EAAG,YACH,EAAG,cA4JL,SAASC,YAAY5sD,EAAS5R,EAAMyvC,EAAQgvB,GAC1C/uE,KAAKgvE,aAAe,GACpBhvE,KAAKmgD,GAAK,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAC1B,IAWI34C,EAXAigB,EAAK,EAEO,OAAZnX,EAAKmX,GACPA,EAAK,EACgB,OAAZnX,EAAKmX,GACdA,EAAK,EACgB,OAAZnX,EAAKmX,KACdA,EAAK,GAGPznB,KAAK2kC,GAAKsG,qBAAqB4mB,aAAa3vC,EAAS5R,EAAMmX,EAAIvF,GAE/D,IACI+sD,EADAt2D,EAAMonC,EAAOnoD,OAGjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACnBu4C,EAAOv4C,GAAGuiB,SACbklD,EAAc,CACZtb,WAAYob,EAAkB7B,qBAAqBntB,EAAOv4C,GAAGmsD,YAC7Dub,QAAS,IAEXlvE,KAAKgvE,aAAa3vE,KAAK4vE,GACvBlvB,EAAOv4C,GAAG45C,SAAS/hD,KAAK4vE,GAG9B,CAIA,SAASE,eAAe7+D,EAAMgjB,EAAYxL,GACxC9nB,KAAK6nB,OAAS,GACd7nB,KAAKguD,WAAa19C,EAAKuX,OACvB7nB,KAAKy9D,WAAa,GAClBz9D,KAAKiuD,UAAY,GACjBjuD,KAAKy6D,aAAe,GACpBz6D,KAAKm4D,eAAiB,GACtBn4D,KAAKw4D,kBAAoB,GACzBx4D,KAAK+uE,kBAAoB,IAAIlE,sBAC7B7qE,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,EACrC,CA4hBA,SAASsnD,cAAc9+D,EAAMgjB,EAAYxL,GACvC9nB,KAAKqpE,UAAY,GACjBrpE,KAAK++D,QAAU,EACf/+D,KAAK4+D,eAAgB,EACrB5+D,KAAK6+D,iBAAkB,EACvB7+D,KAAK8+D,iBAAkB,EACvB9+D,KAAKqvE,QAAS,EACdrvE,KAAKsvE,MAAO,EACZtvE,KAAKu+D,cAAgB,EACrBv+D,KAAKuvE,cAAgB,KACrBvvE,KAAKwlE,WAAa,SAClBxlE,KAAKiK,OAAS,CACZqlE,KAAM,gBACND,OAAQ,gBACRG,OAAQ,EACRC,OAAQ,IAEVzvE,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,EACrC,CAsOA,SAAS4nD,eAAep/D,EAAMgjB,EAAYxL,GACxC9nB,KAAKktB,UAAYoG,EAAW6E,aAAa7nB,EAAKqX,OAC9C3nB,KAAKwtB,IAAM8F,EAAWg5B,YAAY19B,SAAS5uB,KAAKktB,WAChDltB,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,EACrC,CAyCA,SAAS6nD,eAAer/D,EAAMgjB,EAAYxL,GACxC9nB,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,EACrC,CAcA,SAAS8nD,qBAAsB,CAmU/B,SAASC,gBACP7vE,KAAKlC,SAAW,EAChBkC,KAAKmwC,UAAYnwB,iBAAiB,UAAW,IAC7ChgB,KAAKwsB,UAAY,GACjBxsB,KAAK8vE,YAAc,GACnB9vE,KAAKmiE,UAAY,GACjBniE,KAAK+vE,QAAU,GACf/vE,KAAKy+C,SAAW,GAChBz+C,KAAK0+C,WAAa,GAClB1+C,KAAKrN,GAAKyJ,KAAKyb,QACjB,CAEA,SAASm4D,gBAIP,IAAIxoE,EAGJ,IANAxH,KAAKiwE,MAAQ,GACbjwE,KAAKkwE,QAAU,EACflwE,KAAKmwE,IAAM,IAAI1hC,OAIVjnC,EAAI,EAAGA,EAFF,GAEWA,GAAK,EAAG,CAC3B,IAAI8mE,EAAgB,IAAIuB,cACxB7vE,KAAKiwE,MAAMzoE,GAAK8mE,CAClB,CAEAtuE,KAAKi9B,QAPK,GAQVj9B,KAAKowE,cAAgB,KACrBpwE,KAAKqwE,aAAe,IAAI5hC,OACxBzuC,KAAKswE,eAAiB,EAEtBtwE,KAAKuwE,iBAAmB,GACxBvwE,KAAKwwE,iBAAmB,GAExBxwE,KAAKywE,mBAAqB,GAC1BzwE,KAAK0wE,mBAAqB,GAE1B1wE,KAAK2wE,iBAAmB,GACxB3wE,KAAK4wE,iBAAmB,GAExB5wE,KAAK6wE,eAAiB,GACtB7wE,KAAK8wE,eAAiB,GAEtB9wE,KAAK+wE,gBAAkB,GACvB/wE,KAAKgxE,gBAAkB,GAEvBhxE,KAAKixE,kBAAoB,GACzBjxE,KAAKkxE,kBAAoB,EAC3B,CAiNA,SAASC,cAAc7gE,EAAMgjB,EAAYxL,GACvC9nB,KAAK4mB,gBAAiB,EACtB5mB,KAAK6mB,OAASvW,EAAKuW,OACnB7mB,KAAK0wD,gBAAkB,GACvB1wD,KAAKohD,SAAW9gC,iBAAiBtgB,KAAK6mB,OAAOjvB,QAC7CoI,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,GACnC9nB,KAAKswB,GAAKhgB,EAAKggB,GAAKoY,gBAAgBC,QAAQ3oC,KAAMsQ,EAAKggB,GAAI,EAAGgD,EAAW1B,UAAW5xB,MAAQ,CAC1F8sD,cAAc,EAElB,CAyCA,SAASskB,eAAetgB,EAAe+Y,GACrC7pE,KAAK8wD,cAAgBA,EACrB9wD,KAAK6qD,aAAe,CAClBwmB,aAAaxH,QAAiCzpE,IAAvBypE,EAAOwH,aAA4BxH,EAAOwH,YACjEC,QAASzH,GAAUA,EAAOyH,SAAW,KACrCnhB,gBAAiB0Z,GAAUA,EAAO1Z,kBAAmB,EACrDka,oBAAqBR,GAAUA,EAAOQ,qBAAuB,gBAC7DpS,yBAA0B4R,GAAUA,EAAO5R,0BAA4B,iBACvEqS,kBAAmBT,GAAUA,EAAOS,mBAAqB,UACzD3xE,UAAWkxE,GAAUA,EAAOlxE,WAAa,GACzChG,GAAIk3E,GAAUA,EAAOl3E,IAAM,GAC3Bg4E,gBAAiBd,QAAoCzpE,IAA1BypE,EAAOc,gBAAgCd,EAAOc,gBAE3E3qE,KAAK6qD,aAAa0mB,IAAM1H,GAAUA,EAAO0H,KAAO,EAE5CvxE,KAAK8wD,cAAc59B,UACrBlzB,KAAK6qD,aAAa0mB,IAAM1H,GAAUA,EAAO0H,KAAO99E,OAAO+9E,kBAAoB,GAG7ExxE,KAAKinC,eAAiB,EACtBjnC,KAAKszB,WAAa,CAChBoP,UAAW,EACX8E,MAAM,EACNqjB,aAAc7qD,KAAK6qD,aACnB4mB,oBAAqB,GAEvBzxE,KAAK0xE,YAAc,IAAI1B,cACvBhwE,KAAKohD,SAAW,GAChBphD,KAAK0wD,gBAAkB,GACvB1wD,KAAKqwE,aAAe,IAAI5hC,OACxBzuC,KAAK4mB,gBAAiB,EACtB5mB,KAAKy1B,aAAe,SAEhBz1B,KAAK6qD,aAAawmB,cACpBrxE,KAAK2xE,aAAe3xE,KAAK0xE,YAAYvhC,UAAUl4C,KAAK+H,KAAK0xE,aACzD1xE,KAAK4xE,WAAa5xE,KAAK0xE,YAAY5zE,QAAQ7F,KAAK+H,KAAK0xE,aACrD1xE,KAAK6xE,aAAe7xE,KAAK0xE,YAAYllD,UAAUv0B,KAAK+H,KAAK0xE,aACzD1xE,KAAK8xE,eAAiB9xE,KAAK0xE,YAAY5B,YAAY73E,KAAK+H,KAAK0xE,aAC7D1xE,KAAK+xE,aAAe/xE,KAAK0xE,YAAYvP,UAAUlqE,KAAK+H,KAAK0xE,aACzD1xE,KAAKgyE,WAAahyE,KAAK0xE,YAAY3B,QAAQ93E,KAAK+H,KAAK0xE,aACrD1xE,KAAKiyE,YAAcjyE,KAAK0xE,YAAYjzB,SAASxmD,KAAK+H,KAAK0xE,aACvD1xE,KAAKkyE,cAAgBlyE,KAAK0xE,YAAYhzB,WAAWzmD,KAAK+H,KAAK0xE,aAC3D1xE,KAAKmyE,QAAUnyE,KAAK0xE,YAAYpC,KAAKr3E,KAAK+H,KAAK0xE,aAC/C1xE,KAAKoyE,YAAcpyE,KAAK0xE,YAAYjlD,SAASx0B,KAAK+H,KAAK0xE,aACvD1xE,KAAKqyE,UAAYryE,KAAK0xE,YAAYrC,OAAOp3E,KAAK+H,KAAK0xE,aACnD1xE,KAAK2uE,KAAO3uE,KAAK0xE,YAAY/C,KAAK12E,KAAK+H,KAAK0xE,aAEhD,CAQA,SAASY,eAAgB,CAwFzB,SAASC,cAAcjiE,EAAMgjB,EAAYxL,GACvC9nB,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,EACrC,CAwBA,SAAS0qD,cAAcliE,EAAMgjB,EAAYxL,GAEvC9nB,KAAK6nB,OAAS,GAEd7nB,KAAKguD,WAAa19C,EAAKuX,OAEvB7nB,KAAKy9D,WAAa,GAElBz9D,KAAKm4D,eAAiB,GAEtBn4D,KAAKiuD,UAAY,GAEjBjuD,KAAKw4D,kBAAoB,GAEzBx4D,KAAK09D,iBAAmB,GACxB19D,KAAKyyE,gBAAkBjtD,SAAS,KAChCxlB,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,GAGnC9nB,KAAKy6D,aAAe,GACpBz6D,KAAK0yE,YAAc,CACjB/yE,EAAG,OACHC,GAAI,OACJikB,EAAG,EACH4gC,EAAG,EAEP,CA+NA,SAASkuB,aAAariE,EAAMgjB,EAAYxL,GACtC9nB,KAAKqpE,UAAY,GACjBrpE,KAAK4yE,UAAY,GACjB5yE,KAAK0yE,YAAc,CACjB/yE,EAAG,OACHC,GAAI,OACJikB,EAAG,EACH4gC,EAAG,GAELzkD,KAAKwlE,WAAa,MAClBxlE,KAAK6yE,UAAW,EAChB7yE,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,EACrC,CA0RA,SAASgrD,eAAexiE,EAAMgjB,EAAYxL,GACxC9nB,KAAKuiC,YACLviC,KAAKusD,aAAaj8C,EAAMgjB,EAAYxL,GACpC9nB,KAAK23D,gBACL,IAAIhvB,EAAUD,gBAAgBC,QAe9B,GAdA3oC,KAAK+yE,GAAKpqC,EAAQ3oC,KAAMsQ,EAAKyiE,GAAI,EAAG,EAAG/yE,MAEnCsQ,EAAK6X,GAAGlE,EAAEH,GACZ9jB,KAAKy4C,GAAK9P,EAAQ3oC,KAAMsQ,EAAK6X,GAAGlE,EAAEtkB,EAAG,EAAG,EAAGK,MAC3CA,KAAK04C,GAAK/P,EAAQ3oC,KAAMsQ,EAAK6X,GAAGlE,EAAErkB,EAAG,EAAG,EAAGI,MAC3CA,KAAK24C,GAAKhQ,EAAQ3oC,KAAMsQ,EAAK6X,GAAGlE,EAAE0uB,EAAG,EAAG,EAAG3yC,OAE3CA,KAAKikB,EAAI0kB,EAAQ3oC,KAAMsQ,EAAK6X,GAAGlE,EAAG,EAAG,EAAGjkB,MAGtCsQ,EAAK6X,GAAGna,IACVhO,KAAKgO,EAAI26B,EAAQ3oC,KAAMsQ,EAAK6X,GAAGna,EAAG,EAAG,EAAGhO,OAGtCsQ,EAAK6X,GAAGglB,GAAGz0B,EAAE9gB,QAAU0Y,EAAK6X,GAAGglB,GAAGz0B,EAAE,GAAGirB,GAAI,CAC7C,IAAIn8B,EACAmR,EAAMrI,EAAK6X,GAAGglB,GAAGz0B,EAAE9gB,OAEvB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB8I,EAAK6X,GAAGglB,GAAGz0B,EAAElR,GAAGm8B,GAAK,KACrBrzB,EAAK6X,GAAGglB,GAAGz0B,EAAElR,GAAGo8B,GAAK,IAEzB,CAEA5jC,KAAKmtC,GAAKxE,EAAQ3oC,KAAMsQ,EAAK6X,GAAGglB,GAAI,EAAGxrB,UAAW3hB,MAClDA,KAAKmtC,GAAGxI,IAAK,EACb3kC,KAAK44C,GAAKjQ,EAAQ3oC,KAAMsQ,EAAK6X,GAAGywB,GAAI,EAAGj3B,UAAW3hB,MAClDA,KAAK64C,GAAKlQ,EAAQ3oC,KAAMsQ,EAAK6X,GAAG0wB,GAAI,EAAGl3B,UAAW3hB,MAClDA,KAAK84C,GAAKnQ,EAAQ3oC,KAAMsQ,EAAK6X,GAAG2wB,GAAI,EAAGn3B,UAAW3hB,MAClDA,KAAKi5C,IAAM,IAAIxK,OACfzuC,KAAKgzE,SAAW,IAAIvkC,OACpBzuC,KAAK6nC,eAAgB,EAErB7nC,KAAK2qD,eAAiB,CACpBC,MAAO5qD,KAEX,CAyIA,SAASizE,cAAc3iE,EAAMgjB,EAAYxL,GACvC9nB,KAAKktB,UAAYoG,EAAW6E,aAAa7nB,EAAKqX,OAC9C3nB,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,EACrC,CA4BA,SAASorD,mBAAmBpiB,EAAe+Y,GACzC7pE,KAAK8wD,cAAgBA,EACrB9wD,KAAK6mB,OAAS,KACd7mB,KAAKinC,eAAiB,EACtBjnC,KAAK6qD,aAAe,CAClBlyD,UAAWkxE,GAAUA,EAAOlxE,WAAa,GACzCs/D,yBAA0B4R,GAAUA,EAAO5R,0BAA4B,iBACvEnN,oBAAqB+e,IAAuC,IAA7BA,EAAO/e,mBACtC4f,WAAY,CACV7sE,MAAOgsE,GAAUA,EAAOa,YAAcb,EAAOa,WAAW7sE,OAAS,OACjEhM,OAAQg4E,GAAUA,EAAOa,YAAcb,EAAOa,WAAW74E,QAAU,OACnE8N,EAAGkqE,GAAUA,EAAOa,YAAcb,EAAOa,WAAW/qE,GAAK,QACzDC,EAAGiqE,GAAUA,EAAOa,YAAcb,EAAOa,WAAW9qE,GAAK,UAG7DI,KAAKszB,WAAa,CAChBkU,MAAM,EACN9E,UAAW,EACXmoB,aAAc7qD,KAAK6qD,cAErB7qD,KAAK0wD,gBAAkB,GACvB1wD,KAAKohD,SAAW,GAChBphD,KAAKmzE,eAAiB,GACtBnzE,KAAK4qE,WAAY,EACjB5qE,KAAKozE,OAAS,KACdpzE,KAAK2pE,YAAa,EAClB3pE,KAAKy1B,aAAe,MACtB,CAyUA,SAAS49C,aAAa/iE,EAAMgjB,EAAYxL,GACtC9nB,KAAK6mB,OAASvW,EAAKuW,OACnB7mB,KAAK2pE,YAAcr5D,EAAK8W,QACxBpnB,KAAK4mB,gBAAiB,EACtB5mB,KAAK0wD,gBAAkB,GACvB1wD,KAAKohD,SAAWphD,KAAK6mB,OAASvG,iBAAiBtgB,KAAK6mB,OAAOjvB,QAAU,GACrEoI,KAAK01D,YAAYplD,EAAMgjB,EAAYxL,GACnC9nB,KAAKswB,GAAKhgB,EAAKggB,GAAKoY,gBAAgBC,QAAQ3oC,KAAMsQ,EAAKggB,GAAI,EAAGgD,EAAW1B,UAAW5xB,MAAQ,CAC1F8sD,cAAc,EAElB,CA6CA,SAASwmB,eAAexiB,EAAe+Y,GACrC7pE,KAAK8wD,cAAgBA,EACrB9wD,KAAK6mB,OAAS,KACd7mB,KAAKinC,eAAiB,EACtBjnC,KAAK6qD,aAAe,CAClBlyD,UAAWkxE,GAAUA,EAAOlxE,WAAa,GACzCs/D,yBAA0B4R,GAAUA,EAAO5R,0BAA4B,iBACvEnN,oBAAqB+e,IAAuC,IAA7BA,EAAO/e,mBACtC4f,WAAY,CACV7sE,MAAOgsE,GAAUA,EAAOa,YAAcb,EAAOa,WAAW7sE,OAAS,OACjEhM,OAAQg4E,GAAUA,EAAOa,YAAcb,EAAOa,WAAW74E,QAAU,OACnE8N,EAAGkqE,GAAUA,EAAOa,YAAcb,EAAOa,WAAW/qE,GAAK,QACzDC,EAAGiqE,GAAUA,EAAOa,YAAcb,EAAOa,WAAW9qE,GAAK,SAE3D+qE,gBAAiBd,QAAoCzpE,IAA1BypE,EAAOc,gBAAgCd,EAAOc,gBAE3E3qE,KAAKszB,WAAa,CAChBkU,MAAM,EACN9E,UAAW,EACXmoB,aAAc7qD,KAAK6qD,cAErB7qD,KAAK0wD,gBAAkB,GACvB1wD,KAAKohD,SAAW,GAChBphD,KAAKmzE,eAAiB,GACtBnzE,KAAK4qE,WAAY,EACjB5qE,KAAKozE,OAAS,KACdpzE,KAAK2pE,YAAa,EAClB3pE,KAAKy1B,aAAe,MACtB,CAz9FA44C,cAAcjtE,UAAY,CACxBmyE,eAAgB,WAA2B,EAC3Czd,oBAAqB,WAAgC,EACrDC,wBAAyB,WAMvB,GAAI/1D,KAAKsQ,KAAKimD,IAAM,EAAG,CACrBv2D,KAAKwzE,QAAU,GACf,IAAIlF,EAAgBtuE,KAAKszB,WAAWg7C,cAChCmF,EAAeppD,YAAYwjD,aAAaS,EAAcjiD,OAAOxuB,MAAOywE,EAAcjiD,OAAOx6B,QAC7FmO,KAAKwzE,QAAQn0E,KAAKo0E,GAClB,IAAIC,EAAgBrpD,YAAYwjD,aAAaS,EAAcjiD,OAAOxuB,MAAOywE,EAAcjiD,OAAOx6B,QAC9FmO,KAAKwzE,QAAQn0E,KAAKq0E,GAEd1zE,KAAKsQ,KAAKimD,IAAM,IAAMxlE,SAAS4iF,UACjCtpD,YAAYyjD,gBAEhB,CAEA9tE,KAAKsuE,cAAgBtuE,KAAKszB,WAAWg7C,cACrCtuE,KAAK4zE,gBAAkB5zE,KAAKszB,WAAWsgD,gBACvC5zE,KAAKuzD,yBAA2B,IAAI0a,UAAUjuE,MAC9CA,KAAKszD,wBACP,EACAuE,cAAe,WAA0B,EACzC1J,aAAc,WACZ,IAAI76B,EAAatzB,KAAKszB,WAEtB,GAAIA,EAAWugD,YAAc7zE,KAAKsQ,KAAK+9C,GAAI,CACzC/6B,EAAWugD,UAAY7zE,KAAKsQ,KAAK+9C,GACjC,IAAID,EAAiBjD,aAAanrD,KAAKsQ,KAAK+9C,IAC5C/6B,EAAWg7C,cAAcwF,yBAA2B1lB,CACtD,CACF,EACA2I,2BAA4B,WAC1B/2D,KAAK0tD,YAAc,IAAIygB,cAAcnuE,KAAKsQ,KAAMtQ,MAChDA,KAAKwzD,iBAAmBxzD,KAAKuzD,yBAAyBE,WAAWzC,YAAYC,iBAC/E,EACA8iB,YAAa,WACN/zE,KAAKiqD,QAAYjqD,KAAKgqD,YAAahqD,KAAKkqD,gBAC3ClqD,KAAKiqD,QAAS,EAElB,EACA+pB,YAAa,WACPh0E,KAAKgqD,YAAchqD,KAAKkqD,gBAC1BlqD,KAAKiqD,QAAS,EACdjqD,KAAK6nC,eAAgB,EACrB7nC,KAAK0tD,YAAY7lB,eAAgB,EAErC,EACAwpC,YAAa,SAAqB/C,GAChCA,EAAc2F,UAAUj0E,KAAK4zE,gBAAgB3jC,GAAIjwC,KAAK4zE,gBAAgBnsD,GAAIznB,KAAK4zE,gBAAgBnvB,EAAIzkD,KAAK4zE,gBAAgBpkC,GAAIxvC,KAAK4zE,gBAAgB/vD,EAAI7jB,KAAK4zE,gBAAgB/mC,GAC5K,EACAqnC,aAAc,WACZ,GAAIl0E,KAAKsQ,KAAKimD,IAAM,EAAG,CACrB,IACI4d,EADSn0E,KAAKwzE,QAAQ,GACHjnD,WAAW,MAClCvsB,KAAKqxE,YAAY8C,GAEjBA,EAAUC,UAAUp0E,KAAKsuE,cAAcjiD,OAAQ,EAAG,GAGlDrsB,KAAKwgE,iBAAmBxgE,KAAKsuE,cAAc+F,eAC3Cr0E,KAAKsuE,cAAcz+B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/C7vC,KAAKqxE,YAAYrxE,KAAKsuE,eACtBtuE,KAAKsuE,cAAcz+B,aAAa7vC,KAAKwgE,iBACvC,CACF,EACA8T,UAAW,WACT,GAAIt0E,KAAKsQ,KAAKimD,IAAM,EAAG,CACrB,IAAIge,EAASv0E,KAAKwzE,QAAQ,GAItBW,EAAYI,EAAOhoD,WAAW,MAclC,GAbAvsB,KAAKqxE,YAAY8C,GACjBA,EAAUC,UAAUp0E,KAAKsuE,cAAcjiD,OAAQ,EAAG,GAElDrsB,KAAKsuE,cAAcz+B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAC/C7vC,KAAKqxE,YAAYrxE,KAAKsuE,eACtBtuE,KAAKsuE,cAAcz+B,aAAa7vC,KAAKwgE,kBAE1BxgE,KAAK8nB,KAAK92B,eAAe,OAAQgP,KAAKsQ,KAAOtQ,KAAKsQ,KAAKq8D,GAAK3sE,KAAKsQ,KAAKuzB,IAAM,GAClF5N,aAAY,GAEjBj2B,KAAKsuE,cAAcz+B,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAG3C7vC,KAAKsQ,KAAKimD,IAAM,IAAMxlE,SAAS4iF,SAAU,CAG3C,IAAInG,EAAanjD,YAAY0jD,cAAc/tE,KAAKsuE,cAAcjiD,QAC1CmhD,EAAWjhD,WAAW,MAC5B6nD,UAAUp0E,KAAKsuE,cAAcjiD,OAAQ,EAAG,GACtDrsB,KAAKqxE,YAAYrxE,KAAKsuE,eAEtBtuE,KAAKsuE,cAAc8F,UAAU5G,EAAY,EAAG,EAC9C,CAEAxtE,KAAKsuE,cAAcwF,yBAA2BjF,cAAc7uE,KAAKsQ,KAAKimD,IACtEv2D,KAAKsuE,cAAc8F,UAAUG,EAAQ,EAAG,GAGxCv0E,KAAKsuE,cAAcwF,yBAA2B,mBAC9C9zE,KAAKsuE,cAAc8F,UAAUp0E,KAAKwzE,QAAQ,GAAI,EAAG,GACjDxzE,KAAKsuE,cAAcz+B,aAAa7vC,KAAKwgE,kBAErCxgE,KAAKsuE,cAAcwF,yBAA2B,aAChD,CACF,EACA79C,YAAa,SAAqBijB,GAChC,IAAIl5C,KAAKiqD,SAAUjqD,KAAKsQ,KAAKmmD,KAIR,IAAjBz2D,KAAKsQ,KAAK8lD,IAAald,GAA3B,CAIAl5C,KAAKgzD,kBACLhzD,KAAK+qD,mBACL/qD,KAAKkzD,uBACLlzD,KAAKmuD,eACL,IAAIqmB,EAAkC,IAAjBx0E,KAAKsQ,KAAKmX,GAC/BznB,KAAKk0E,eACLl0E,KAAKszB,WAAWt8B,SAAS23E,KAAK6F,GAC9Bx0E,KAAKszB,WAAWt8B,SAAS26E,aAAa3xE,KAAK2qD,eAAekI,SAAS9jB,OACnE/uC,KAAKszB,WAAWt8B,SAAS46E,WAAW5xE,KAAK2qD,eAAemI,cACxD9yD,KAAK83D,qBACL93D,KAAKszB,WAAWt8B,SAASy9E,QAAQD,GACjCx0E,KAAKs0E,YAEDt0E,KAAK0tD,YAAY0gB,UACnBpuE,KAAKszB,WAAWt8B,SAASy9E,SAAQ,GAG/Bz0E,KAAK6nC,gBACP7nC,KAAK6nC,eAAgB,EApBvB,CAsBF,EACAlZ,QAAS,WACP3uB,KAAKsuE,cAAgB,KACrBtuE,KAAKsQ,KAAO,KACZtQ,KAAKszB,WAAa,KAClBtzB,KAAK0tD,YAAY/+B,SACnB,EACAklC,QAAS,IAAIplB,QAEf4/B,cAAcjtE,UAAUg3B,KAAOi2C,cAAcjtE,UAAU2yE,YACvD1F,cAAcjtE,UAAUi3B,KAAOg2C,cAAcjtE,UAAU4yE,YAgCvDlF,YAAY1tE,UAAU60C,cAAgB2iB,aAAax3D,UAAU60C,cAc7Dl4B,gBAAgB,CAACouC,YAAa+E,iBAAkBmd,cAAexY,cAAeN,iBAAkBnJ,aAAcxC,mBAAoBulB,gBAClIA,eAAe/tE,UAAUs0D,YAAcF,qBAAqBp0D,UAAUs0D,YACtEyZ,eAAe/tE,UAAUszE,gBAAkB,CACzC52E,QAAS,EACT80D,QAAQ,GAEVuc,eAAe/tE,UAAUuzE,aAAe,GAExCxF,eAAe/tE,UAAUy2D,cAAgB,WACvC73D,KAAKy/D,aAAaz/D,KAAKguD,WAAYhuD,KAAKiuD,UAAWjuD,KAAKy6D,cAAc,EAAM,GAC9E,EAEA0U,eAAe/tE,UAAU0+D,mBAAqB,SAAUxvD,EAAMqjD,GAC5D,IAAIkJ,EAAY,CACdvsD,KAAMA,EACNL,KAAMK,EAAKmX,GACXmtD,cAAe50E,KAAK+uE,kBAAkB7B,qBAAqBvZ,GAC3DA,WAAY,GACZvS,SAAU,GACVr3B,QAAoB,IAAZzZ,EAAKmmD,IAEXsJ,EAAc,CAAC,EAsBnB,GApBgB,OAAZzvD,EAAKmX,IAA2B,OAAZnX,EAAKmX,IAC3Bs4C,EAAY7xD,EAAIw6B,gBAAgBC,QAAQ3oC,KAAMsQ,EAAKpC,EAAG,EAAG,IAAKlO,MAEzD+/D,EAAY7xD,EAAEwK,IACjBmkD,EAAUgY,GAAK,OAAS1zD,QAAQ4+C,EAAY7xD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQ4+C,EAAY7xD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQ4+C,EAAY7xD,EAAE6V,EAAE,IAAM,MAE3G,OAAZzT,EAAKmX,IAA2B,OAAZnX,EAAKmX,KAClCs4C,EAAYj8C,EAAI4kB,gBAAgBC,QAAQ3oC,KAAMsQ,EAAKwT,EAAG,EAAG,KAAM9jB,MAC/D+/D,EAAYxnE,EAAImwC,gBAAgBC,QAAQ3oC,KAAMsQ,EAAK/X,EAAG,EAAG,KAAMyH,MAC/D+/D,EAAYl8C,EAAI6kB,gBAAgBC,QAAQ3oC,KAAMsQ,EAAKuT,GAAK,CACtDnL,EAAG,GACF,EAAG,IAAM1Y,MACZ+/D,EAAY/xD,EAAI06B,gBAAgBC,QAAQ3oC,KAAMsQ,EAAKtC,GAAK,CACtD0K,EAAG,GACF,EAAGiJ,UAAW3hB,MACjB+/D,EAAYvxD,EAAI,IAAIsrD,iBAAiB95D,KAAMsQ,EAAK9B,EAAGxO,OAGrD+/D,EAAY33C,EAAIsgB,gBAAgBC,QAAQ3oC,KAAMsQ,EAAK8X,EAAG,EAAG,IAAMpoB,MAE/C,OAAZsQ,EAAKmX,IAA2B,OAAZnX,EAAKmX,IAe3B,GAdAo1C,EAAUrB,GAAK9C,YAAYpoD,EAAKkrD,IAAM,GACtCqB,EAAU3Y,GAAKyU,aAAaroD,EAAK4zC,IAAM,GAExB,GAAX5zC,EAAK4zC,KAEP2Y,EAAU5Y,GAAK3zC,EAAK2zC,IAGtB8b,EAAYtb,EAAI/b,gBAAgBC,QAAQ3oC,KAAMsQ,EAAKm0C,EAAG,EAAG,KAAMzkD,MAE1D+/D,EAAYtb,EAAE/rC,IACjBmkD,EAAUiY,GAAK/U,EAAYtb,EAAE1gC,GAG3BzT,EAAK+T,EAAG,CACV,IAAIA,EAAI,IAAIg1C,aAAar5D,KAAMsQ,EAAK+T,EAAG,SAAUrkB,MACjD+/D,EAAY17C,EAAIA,EAEX07C,EAAY17C,EAAE3L,IACjBmkD,EAAUkY,GAAKhV,EAAY17C,EAAEm1C,UAC7BqD,EAAc,GAAIkD,EAAY17C,EAAEo1C,WAAW,GAE/C,OAEAoD,EAAU74C,EAAe,IAAX1T,EAAK0T,EAAU,UAAY,UAK3C,OAFAhkB,KAAKy9D,WAAWp+D,KAAKw9D,GACrBkD,EAAY5uE,MAAQ0rE,EACbkD,CACT,EAEAoP,eAAe/tE,UAAU6+D,mBAAqB,WAK5C,MAJkB,CAChBt/D,GAAI,GACJ85D,aAAc,GAGlB,EAEA0U,eAAe/tE,UAAU8+D,uBAAyB,SAAU5vD,GAU1D,MATkB,CAChB6/B,UAAW,CACTryC,QAAS,EACT80D,QAAQ,EACRj3D,IAAKqE,KAAK+uE,kBAAkBzB,YAC5BlkD,GAAIsf,gBAAgBC,QAAQ3oC,KAAMsQ,EAAK8X,EAAG,EAAG,IAAMpoB,MACnD2iD,OAAQvK,yBAAyBqB,qBAAqBz5C,KAAMsQ,EAAMtQ,OAIxE,EAEAmvE,eAAe/tE,UAAUg/D,mBAAqB,SAAU9vD,GACtD,IAAIyvD,EAAc,IAAI+O,YAAY9uE,KAAMsQ,EAAMtQ,KAAKy9D,WAAYz9D,KAAK+uE,mBAGpE,OAFA/uE,KAAK6nB,OAAOxoB,KAAK0gE,GACjB//D,KAAKk4D,oBAAoB6H,GAClBA,CACT,EAEAoP,eAAe/tE,UAAU8gD,aAAe,WAEtC,IAAI16C,EADJxH,KAAK6nC,eAAgB,EAErB,IAAIlvB,EAAM3Y,KAAKiuD,UAAUr2D,OAEzB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKy6D,aAAajzD,GAAKxH,KAAKiuD,UAAUzmD,GAMxC,IAHAxH,KAAKy/D,aAAaz/D,KAAKguD,WAAYhuD,KAAKiuD,UAAWjuD,KAAKy6D,cAAc,EAAM,IAC5E9hD,EAAM3Y,KAAK+oC,kBAAkBnxC,OAExB4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK+oC,kBAAkBvhC,GAAG6gC,WAG5BroC,KAAKs4D,kBACLt4D,KAAK+uE,kBAAkB1B,iBAAiBrtE,KAAK6nC,cAC/C,EAEAsnC,eAAe/tE,UAAU4zE,wBAA0B,SAAU7kC,GAC3D,IAAI3oC,EACAmR,EAAM3Y,KAAKy9D,WAAW7lE,OAE1B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACnBxH,KAAKy9D,WAAWj2D,GAAGuiB,QACtB/pB,KAAKy9D,WAAWj2D,GAAGmsD,WAAWt0D,KAAK8wC,EAGzC,EAEAg/B,eAAe/tE,UAAU6zE,6BAA+B,WACtD,IAAIztE,EACAmR,EAAM3Y,KAAKy9D,WAAW7lE,OAE1B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACnBxH,KAAKy9D,WAAWj2D,GAAGuiB,QACtB/pB,KAAKy9D,WAAWj2D,GAAGmsD,WAAWrc,KAGpC,EAEA63B,eAAe/tE,UAAU8zE,YAAc,SAAUn1B,GAC/C,IAAIv4C,EACAmR,EAAMonC,EAAOnoD,OAEjB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBu4C,EAAOv4C,GAAGuiB,QAAS,CAEvB,EAEAolD,eAAe/tE,UAAUq+D,aAAe,SAAUv/C,EAAK+tC,EAAWwM,EAAc0a,EAAcxhB,GAC5F,IAAInsD,EAEAwf,EACAC,EAGAy5C,EACAD,EACAD,EAPA7nD,EAAMuH,EAAItoB,OAAS,EAGnB+oE,EAAY,GACZC,EAAe,GAIfwU,EAAgB,GAAGviF,OAAO8gE,GAE9B,IAAKnsD,EAAImR,EAAKnR,GAAK,EAAGA,GAAK,EAAG,CAS5B,IARAk5D,EAAe1gE,KAAKu4D,uBAAuBr4C,EAAI1Y,KAK7CymD,EAAUzmD,GAAKizD,EAAaiG,EAAe,GAF3CxgD,EAAI1Y,GAAG6tE,cAAgBF,EAKP,OAAdj1D,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,GACtEi5C,EAGHzS,EAAUzmD,GAAGrW,MAAM44B,QAAS,EAF5BkkC,EAAUzmD,GAAKxH,KAAK8/D,mBAAmB5/C,EAAI1Y,GAAI4tE,GAKjDzU,EAAUthE,KAAK4uD,EAAUzmD,GAAGrW,YACvB,GAAkB,OAAd+uB,EAAI1Y,GAAGigB,GAAa,CAC7B,GAAKi5C,EAKH,IAFAz5C,EAAOgnC,EAAUzmD,GAAG7G,GAAG/I,OAElBovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzBinC,EAAUzmD,GAAGizD,aAAazzC,GAAKinC,EAAUzmD,GAAG7G,GAAGqmB,QALjDinC,EAAUzmD,GAAKxH,KAAKigE,mBAAmB//C,EAAI1Y,IAS7CxH,KAAKy/D,aAAav/C,EAAI1Y,GAAG7G,GAAIstD,EAAUzmD,GAAG7G,GAAIstD,EAAUzmD,GAAGizD,aAAc0a,EAAcC,EACzF,KAAyB,OAAdl1D,EAAI1Y,GAAGigB,IACXi5C,IACHF,EAAmBxgE,KAAKkgE,uBAAuBhgD,EAAI1Y,IACnDymD,EAAUzmD,GAAKg5D,GAGjB4U,EAAc/1E,KAAK4uD,EAAUzmD,IAC7BxH,KAAKg1E,wBAAwB/mB,EAAUzmD,KAChB,OAAd0Y,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,GAC7Ei5C,IACHzS,EAAUzmD,GAAKxH,KAAKogE,mBAAmBlgD,EAAI1Y,KAEtB,OAAd0Y,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IAA6B,OAAdvH,EAAI1Y,GAAGigB,IACnGi5C,GAMHD,EAAWxS,EAAUzmD,IACZuiB,QAAS,IANlB02C,EAAWjrB,eAAeG,YAAYz1B,EAAI1Y,GAAGigB,KACpC+P,KAAKx3B,KAAMkgB,EAAI1Y,IACxBymD,EAAUzmD,GAAKi5D,EACfzgE,KAAKm4D,eAAe94D,KAAKohE,IAM3BG,EAAavhE,KAAKohE,IACK,OAAdvgD,EAAI1Y,GAAGigB,KACXi5C,GAOHD,EAAWxS,EAAUzmD,IACZuiB,QAAS,GAPlB02C,EAAWjrB,eAAeG,YAAYz1B,EAAI1Y,GAAGigB,IAC7CwmC,EAAUzmD,GAAKi5D,EACfA,EAASjpC,KAAKx3B,KAAMkgB,EAAK1Y,EAAGymD,GAC5BjuD,KAAKm4D,eAAe94D,KAAKohE,GACzB0U,GAAe,GAMjBvU,EAAavhE,KAAKohE,IAGpBzgE,KAAKy4D,oBAAoBv4C,EAAI1Y,GAAIA,EAAI,EACvC,CAMA,IAJAxH,KAAKi1E,+BACLj1E,KAAKk1E,YAAYvU,GACjBhoD,EAAMioD,EAAahpE,OAEd4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBo5D,EAAap5D,GAAGuiB,QAAS,CAE7B,EAEAolD,eAAe/tE,UAAU02D,mBAAqB,WAC5C93D,KAAK00E,gBAAgB52E,QAAU,EAC/BkC,KAAK00E,gBAAgB9hB,QAAS,EAC9B5yD,KAAKs4D,kBACLt4D,KAAK+uE,kBAAkB1B,iBAAiBrtE,KAAK6nC,eAC7C7nC,KAAK6gE,YAAY7gE,KAAK00E,gBAAiB10E,KAAKguD,WAAYhuD,KAAKiuD,WAAW,EAC1E,EAEAkhB,eAAe/tE,UAAUk0E,qBAAuB,SAAUC,EAAiBC,IACrED,EAAgB3iB,QAAU4iB,EAAepsD,GAAGoe,MAAQxnC,KAAK6nC,iBAC3D2tC,EAAe13E,QAAUy3E,EAAgBz3E,QACzC03E,EAAe13E,SAAW03E,EAAepsD,GAAGrF,EAC5CyxD,EAAe5iB,QAAS,EAE5B,EAEAuc,eAAe/tE,UAAUq0E,UAAY,WACnC,IAAIjuE,EAEAwf,EACAC,EACAvO,EACAwO,EACAi7B,EACAhiD,EAGA8P,EACAylE,EAVA/8D,EAAM3Y,KAAKy9D,WAAW7lE,OAOtBZ,EAAWgJ,KAAKszB,WAAWt8B,SAC3Bs1B,EAAMtsB,KAAKszB,WAAWg7C,cAI1B,IAAK9mE,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAQxB,IAAgB,QANhByI,GADAylE,EAAe11E,KAAKy9D,WAAWj2D,IACXyI,OAMa,OAATA,GAAsC,IAApBylE,EAAaZ,KAAaY,EAAaplE,KAAK+kE,eAAuC,IAAtBK,EAAaC,MAAqD,IAAvC31E,KAAKszB,WAAWm+C,mBAA2B,CA2B3K,IA1BAz6E,EAAS23E,OACTxsB,EAAQuzB,EAAat0B,SAER,OAATnxC,GAA0B,OAATA,GACnBjZ,EAAS86E,eAAwB,OAAT7hE,EAAgBylE,EAAab,GAAKa,EAAaE,KAEvE5+E,EAAS+6E,aAAa2D,EAAaZ,IAEnC99E,EAASg7E,WAAW0D,EAAala,IAEjCxkE,EAASi7E,YAAYyD,EAAaxxB,IAElCltD,EAASk7E,cAAcwD,EAAazxB,IAAM,IAE1CjtD,EAAS66E,aAAsB,OAAT5hE,EAAgBylE,EAAab,GAAKa,EAAaE,KAGvE5+E,EAAS46E,WAAW8D,EAAaC,MAEpB,OAAT1lE,GAA0B,OAATA,GACnBqc,EAAIiiD,YAGNv3E,EAAS26E,aAAa+D,EAAad,cAAcjqB,eAAe5b,OAChE9nB,EAAOk7B,EAAMvqD,OAERovB,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAa5B,IAZa,OAAT/W,GAA0B,OAATA,IACnBqc,EAAIiiD,YAEAmH,EAAaX,KACfzoD,EAAIupD,YAAYH,EAAaX,IAC7BzoD,EAAIwpD,eAAiBJ,EAAiB,KAK1CxuD,GADA/mB,EAAQgiD,EAAMn7B,GAAGkoD,SACJt3E,OAER8gB,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACN,MAAfvY,EAAMuY,GAAGyL,EACXmI,EAAIkiD,OAAOruE,EAAMuY,GAAGuL,EAAE,GAAI9jB,EAAMuY,GAAGuL,EAAE,IACb,MAAf9jB,EAAMuY,GAAGyL,EAClBmI,EAAIoiD,cAAcvuE,EAAMuY,GAAG26B,IAAI,GAAIlzC,EAAMuY,GAAG26B,IAAI,GAAIlzC,EAAMuY,GAAG26B,IAAI,GAAIlzC,EAAMuY,GAAG26B,IAAI,GAAIlzC,EAAMuY,GAAG26B,IAAI,GAAIlzC,EAAMuY,GAAG26B,IAAI,IAEpH/mB,EAAIypD,YAIK,OAAT9lE,GAA0B,OAATA,IAEnBjZ,EAASq7E,YAELqD,EAAaX,IACfzoD,EAAIupD,YAAY71E,KAAK20E,cAG3B,CAEa,OAAT1kE,GAA0B,OAATA,GAEnBjQ,KAAKszB,WAAWt8B,SAASm7E,QAAQuD,EAAa1xD,GAGhDhtB,EAASy9E,SACX,CAEJ,EAEAtF,eAAe/tE,UAAUy/D,YAAc,SAAU0U,EAAiB5zB,EAAOrxC,EAAM0lE,GAC7E,IAAIxuE,EAEAguE,EAGJ,IAFAA,EAAiBD,EAEZ/tE,EAJKm6C,EAAM/pD,OAAS,EAIX4P,GAAK,EAAGA,GAAK,EACL,OAAhBm6C,EAAMn6C,GAAGigB,IACX+tD,EAAiBllE,EAAK9I,GAAG2oC,UACzBnwC,KAAKs1E,qBAAqBC,EAAiBC,IAClB,OAAhB7zB,EAAMn6C,GAAGigB,IAA+B,OAAhBk6B,EAAMn6C,GAAGigB,IAA+B,OAAhBk6B,EAAMn6C,GAAGigB,IAA+B,OAAhBk6B,EAAMn6C,GAAGigB,GAC1FznB,KAAKu8D,WAAW5a,EAAMn6C,GAAI8I,EAAK9I,IACN,OAAhBm6C,EAAMn6C,GAAGigB,GAClBznB,KAAK48D,WAAWjb,EAAMn6C,GAAI8I,EAAK9I,GAAIguE,GACV,OAAhB7zB,EAAMn6C,GAAGigB,GAClBznB,KAAKg9D,aAAarb,EAAMn6C,GAAI8I,EAAK9I,GAAIguE,GACZ,OAAhB7zB,EAAMn6C,GAAGigB,IAA+B,OAAhBk6B,EAAMn6C,GAAGigB,GAC1CznB,KAAKi2E,mBAAmBt0B,EAAMn6C,GAAI8I,EAAK9I,GAAIguE,GAClB,OAAhB7zB,EAAMn6C,GAAGigB,GAClBznB,KAAK6gE,YAAY2U,EAAgB7zB,EAAMn6C,GAAG7G,GAAI2P,EAAK9I,GAAG7G,IAC7CghD,EAAMn6C,GAAGigB,GAIlBuuD,GACFh2E,KAAKy1E,WAET,EAEAtG,eAAe/tE,UAAU80E,kBAAoB,SAAUjH,EAAaxkC,GAClE,GAAIzqC,KAAK6nC,eAAiB4C,EAAMjD,MAAQynC,EAAYtb,WAAWnsB,KAAM,CACnE,IAEIhgC,EACAmR,EACAqO,EAJAmvD,EAAalH,EAAYC,QACzBxjC,EAAQjB,EAAMiB,MAIdzkB,EAAOykB,EAAMzO,QACjBk5C,EAAWv+E,OAAS,EACpB,IAAIw+E,EAAoBnH,EAAYtb,WAAWhJ,eAE/C,IAAK3jC,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAAG,CAC5B,IAAIitC,EAAYvoB,EAAM7jB,OAAOb,GAE7B,GAAIitC,GAAaA,EAAUlwC,EAAG,CAG5B,IAFApL,EAAMs7C,EAAUh3B,QAEXz1B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACd,IAANA,GACF2uE,EAAW92E,KAAK,CACd8kB,EAAG,IACHF,EAAGmyD,EAAkBjjC,kBAAkB8gB,EAAUlwC,EAAE,GAAG,GAAIkwC,EAAUlwC,EAAE,GAAG,GAAI,KAIjFoyD,EAAW92E,KAAK,CACd8kB,EAAG,IACHkvB,IAAK+iC,EAAkB7iC,oBAAoB0gB,EAAU7rC,EAAE5gB,EAAI,GAAIysD,EAAUzsD,EAAEA,GAAIysD,EAAUlwC,EAAEvc,MAInF,IAARmR,GACFw9D,EAAW92E,KAAK,CACd8kB,EAAG,IACHF,EAAGmyD,EAAkBjjC,kBAAkB8gB,EAAUlwC,EAAE,GAAG,GAAIkwC,EAAUlwC,EAAE,GAAG,GAAI,KAI7EkwC,EAAU/lD,GAAKyK,IACjBw9D,EAAW92E,KAAK,CACd8kB,EAAG,IACHkvB,IAAK+iC,EAAkB7iC,oBAAoB0gB,EAAU7rC,EAAE5gB,EAAI,GAAIysD,EAAUzsD,EAAE,GAAIysD,EAAUlwC,EAAE,MAE7FoyD,EAAW92E,KAAK,CACd8kB,EAAG,MAGT,CACF,CAEA8qD,EAAYC,QAAUiH,CACxB,CACF,EAEAhH,eAAe/tE,UAAUm7D,WAAa,SAAU7yC,EAAU2yC,GACxD,IAAoB,IAAhB3yC,EAAS+sC,IAAe/sC,EAAS2rD,cAAe,CAClD,IAAI7tE,EACAmR,EAAM0jD,EAAS2S,aAAap3E,OAEhC,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAKk2E,kBAAkB7Z,EAAS2S,aAAaxnE,GAAI60D,EAAS13B,GAE9D,CACF,EAEAwqC,eAAe/tE,UAAUw7D,WAAa,SAAUR,EAAWC,EAAUmZ,GACnE,IAAI3Y,EAAYR,EAASlrE,OAErBkrE,EAASnuD,EAAEs5B,MAAQxnC,KAAK6nC,iBAC1Bg1B,EAAUgY,GAAK,OAAS1zD,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,MAGnHs4C,EAASj0C,EAAEof,MAAQguC,EAAe5iB,QAAU5yD,KAAK6nC,iBACnDg1B,EAAU8Y,KAAOtZ,EAASj0C,EAAErE,EAAIyxD,EAAe13E,QAEnD,EAEAqxE,eAAe/tE,UAAU60E,mBAAqB,SAAU7Z,EAAWC,EAAUmZ,GAC3E,IACII,EADA/Y,EAAYR,EAASlrE,MAGzB,IAAK0rE,EAAU+Y,KAAOvZ,EAAS7tD,EAAEg5B,MAAQ60B,EAASv4C,EAAE0jB,MAAQ60B,EAAS9jE,EAAEivC,MAAwB,IAAhB40B,EAAUj4C,IAAYk4C,EAASx4C,EAAE2jB,MAAQ60B,EAASruD,EAAEw5B,MAAO,CACxI,IAuBIhgC,EAvBA8kB,EAAMtsB,KAAKszB,WAAWg7C,cACtBhwC,EAAM+9B,EAASv4C,EAAEC,EACjBwa,EAAM89B,EAAS9jE,EAAEwrB,EAErB,GAAoB,IAAhBq4C,EAAUj4C,EACZyxD,EAAMtpD,EAAI+pD,qBAAqB/3C,EAAI,GAAIA,EAAI,GAAIC,EAAI,GAAIA,EAAI,QACtD,CACL,IAAI8O,EAAMjxC,KAAK8kB,KAAK9kB,KAAK4kB,IAAIsd,EAAI,GAAKC,EAAI,GAAI,GAAKniC,KAAK4kB,IAAIsd,EAAI,GAAKC,EAAI,GAAI,IACzE++B,EAAMlhE,KAAKiqC,MAAM9H,EAAI,GAAKD,EAAI,GAAIC,EAAI,GAAKD,EAAI,IAC/CuD,EAAUw6B,EAASx4C,EAAEE,EAErB8d,GAAW,EACbA,EAAU,IACDA,IAAY,IACrBA,GAAW,KAGb,IAAIic,EAAOzQ,EAAMxL,EACbliC,EAAIvD,KAAKsqC,IAAI42B,EAAMjB,EAASruD,EAAE+V,GAAK+5B,EAAOxf,EAAI,GAC9C1+B,EAAIxD,KAAK0pC,IAAIw3B,EAAMjB,EAASruD,EAAE+V,GAAK+5B,EAAOxf,EAAI,GAClDs3C,EAAMtpD,EAAIgqD,qBAAqB32E,EAAGC,EAAG,EAAG0+B,EAAI,GAAIA,EAAI,GAAI+O,EAC1D,CAGA,IAAI10B,EAAMyjD,EAAU5tD,EAAEyV,EAClBm5C,EAAUf,EAAS7tD,EAAEN,EACrBpQ,EAAU,EAEd,IAAK0J,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpB60D,EAAS7tD,EAAE4rD,aAAeiC,EAAS7tD,EAAE0rD,eACvCp8D,EAAUu+D,EAAS7tD,EAAE4Z,EAAM,EAAJ5gB,EAAQ,IAGjCouE,EAAIW,aAAanZ,EAAY,EAAJ51D,GAAS,IAAK,QAAU41D,EAAY,EAAJ51D,EAAQ,GAAK,IAAM41D,EAAY,EAAJ51D,EAAQ,GAAK,IAAM41D,EAAY,EAAJ51D,EAAQ,GAAK,IAAM1J,EAAU,KAG9I++D,EAAU+Y,IAAMA,CAClB,CAEA/Y,EAAU8Y,KAAOtZ,EAASj0C,EAAErE,EAAIyxD,EAAe13E,OACjD,EAEAqxE,eAAe/tE,UAAU47D,aAAe,SAAUZ,EAAWC,EAAUmZ,GACrE,IAAI3Y,EAAYR,EAASlrE,MACrBkzB,EAAIg4C,EAASh4C,EAEbA,IAAMA,EAAEmjB,MAAQxnC,KAAK6nC,iBACvBg1B,EAAUkY,GAAK1wD,EAAEm1C,UACjBqD,EAAc,GAAIx4C,EAAEo1C,WAAW,KAG7B4C,EAASnuD,EAAEs5B,MAAQxnC,KAAK6nC,iBAC1Bg1B,EAAUgY,GAAK,OAAS1zD,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,IAAM5C,QAAQk7C,EAASnuD,EAAE6V,EAAE,IAAM,MAGnHs4C,EAASj0C,EAAEof,MAAQguC,EAAe5iB,QAAU5yD,KAAK6nC,iBACnDg1B,EAAU8Y,KAAOtZ,EAASj0C,EAAErE,EAAIyxD,EAAe13E,UAG7Cu+D,EAAS5X,EAAEjd,MAAQxnC,KAAK6nC,iBAC1Bg1B,EAAUiY,GAAKzY,EAAS5X,EAAE1gC,EAE9B,EAEAorD,eAAe/tE,UAAUutB,QAAU,WACjC3uB,KAAKguD,WAAa,KAClBhuD,KAAKszB,WAAa,KAClBtzB,KAAKsuE,cAAgB,KACrBtuE,KAAKy9D,WAAW7lE,OAAS,EACzBoI,KAAKiuD,UAAUr2D,OAAS,CAC1B,EAsBAmmB,gBAAgB,CAACouC,YAAa+E,iBAAkBmd,cAAe9Y,iBAAkBnJ,aAAcxC,kBAAmBuc,cAAeiJ,eACjIA,cAAchuE,UAAU4kD,QAAUloC,UAAU,UAAUyO,WAAW,MAEjE6iD,cAAchuE,UAAU8nE,aAAe,WACrC,IAAIrgD,EAAe7oB,KAAK2kE,aAAaxG,YACrCn+D,KAAKimE,gBAAkB3lD,iBAAiBuI,EAAainB,EAAIjnB,EAAainB,EAAEl4C,OAAS,GACjF,IAAI4+E,GAAU,EAEV3tD,EAAag1C,IACf2Y,GAAU,EACVx2E,KAAKiK,OAAOqlE,KAAOtvE,KAAK8oE,WAAWjgD,EAAag1C,KAEhD79D,KAAKiK,OAAOqlE,KAAO,gBAGrBtvE,KAAKsvE,KAAOkH,EACZ,IAAIC,GAAY,EAEZ5tD,EAAaggC,KACf4tB,GAAY,EACZz2E,KAAKiK,OAAOolE,OAASrvE,KAAK8oE,WAAWjgD,EAAaggC,IAClD7oD,KAAKiK,OAAOulE,OAAS3mD,EAAa+0C,IAGpC,IACIp2D,EACAmR,EAOAuQ,EACA8W,EACAtnB,EACAwO,EACAW,EACAb,EACAC,EACAgtC,EACAyiB,EACAC,EAlBA72B,EAAW9/C,KAAKszB,WAAWiB,YAAY20B,cAAcrgC,EAAaxnB,GAGlEygE,EAAUj5C,EAAainB,EACvBg3B,EAAe9mE,KAAK6zD,QACxB7zD,KAAKqvE,OAASoH,EACdz2E,KAAKiK,OAAOwlE,OAAS5mD,EAAam2C,UAAY,MAAQh/D,KAAKszB,WAAWiB,YAAY20B,cAAcrgC,EAAaxnB,GAAG4kD,QAChHttC,EAAMkQ,EAAao2C,UAAUrnE,OAY7B,IAAIqzE,EAAcjrE,KAAKsQ,KAAK26D,YACxB5I,EAAmC,KAAlBx5C,EAAas3B,GAAat3B,EAAam2C,UACxDsH,EAAO,EACPC,EAAO,EACPa,GAAY,EACZ/8B,EAAM,EAEV,IAAK7iC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAE3Bw4B,GADA9W,EAAWlpB,KAAKszB,WAAWiB,YAAYu0B,YAAYjgC,EAAao2C,UAAUz3D,GAAIs4C,EAASE,OAAQhgD,KAAKszB,WAAWiB,YAAY20B,cAAcrgC,EAAaxnB,GAAG4kD,WACjI/8B,EAAS5Y,MAAQ,CAAC,EAC1Cw2D,EAAa96B,QAETi/B,GAAenJ,EAAQt6D,GAAGsR,IAC5BwtD,GAAQjE,EACRkE,GAAQ19C,EAAak2C,QACrBwH,GAAQa,EAAY,EAAI,EACxBA,GAAY,GAIdngD,GADAY,EAASmY,EAAUnY,OAASmY,EAAUnY,OAAO,GAAGlnB,GAAK,IACvC/I,OACdkvE,EAAan3B,MAAM9mB,EAAam2C,UAAY,IAAKn2C,EAAam2C,UAAY,KAEtEiM,GACFjrE,KAAK4oE,4BAA4B//C,EAAci+C,EAAchF,EAAQt6D,GAAGqoB,KAAMy2C,EAAMC,GAGtFmQ,EAAWp2D,iBAAiB2G,EAAO,GACnC,IAAI2vD,EAAkB,EAEtB,IAAK5vD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EACzB,GAAqB,OAAjBa,EAAOb,GAAGS,GAAa,CAKzB,IAJAP,EAAOW,EAAOb,GAAGmB,GAAGzP,EAAElR,EAAE5P,OACxBq8D,EAAYpsC,EAAOb,GAAGmB,GAAGzP,EACzBi+D,EAAU,GAELj+D,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACf,IAANA,GACFi+D,EAAQt3E,KAAKynE,EAAal0B,SAASqhB,EAAUlwC,EAAE,GAAG,GAAIkwC,EAAUlwC,EAAE,GAAG,GAAI,GAAI+iD,EAAaj0B,SAASohB,EAAUlwC,EAAE,GAAG,GAAIkwC,EAAUlwC,EAAE,GAAG,GAAI,IAG3I4yD,EAAQt3E,KAAKynE,EAAal0B,SAASqhB,EAAU7rC,EAAE1P,EAAI,GAAG,GAAIu7C,EAAU7rC,EAAE1P,EAAI,GAAG,GAAI,GAAIouD,EAAaj0B,SAASohB,EAAU7rC,EAAE1P,EAAI,GAAG,GAAIu7C,EAAU7rC,EAAE1P,EAAI,GAAG,GAAI,GAAIouD,EAAal0B,SAASqhB,EAAUzsD,EAAEkR,GAAG,GAAIu7C,EAAUzsD,EAAEkR,GAAG,GAAI,GAAIouD,EAAaj0B,SAASohB,EAAUzsD,EAAEkR,GAAG,GAAIu7C,EAAUzsD,EAAEkR,GAAG,GAAI,GAAIouD,EAAal0B,SAASqhB,EAAUlwC,EAAErL,GAAG,GAAIu7C,EAAUlwC,EAAErL,GAAG,GAAI,GAAIouD,EAAaj0B,SAASohB,EAAUlwC,EAAErL,GAAG,GAAIu7C,EAAUlwC,EAAErL,GAAG,GAAI,IAG3Zi+D,EAAQt3E,KAAKynE,EAAal0B,SAASqhB,EAAU7rC,EAAE1P,EAAI,GAAG,GAAIu7C,EAAU7rC,EAAE1P,EAAI,GAAG,GAAI,GAAIouD,EAAaj0B,SAASohB,EAAU7rC,EAAE1P,EAAI,GAAG,GAAIu7C,EAAU7rC,EAAE1P,EAAI,GAAG,GAAI,GAAIouD,EAAal0B,SAASqhB,EAAUzsD,EAAE,GAAG,GAAIysD,EAAUzsD,EAAE,GAAG,GAAI,GAAIs/D,EAAaj0B,SAASohB,EAAUzsD,EAAE,GAAG,GAAIysD,EAAUzsD,EAAE,GAAG,GAAI,GAAIs/D,EAAal0B,SAASqhB,EAAUlwC,EAAE,GAAG,GAAIkwC,EAAUlwC,EAAE,GAAG,GAAI,GAAI+iD,EAAaj0B,SAASohB,EAAUlwC,EAAE,GAAG,GAAIkwC,EAAUlwC,EAAE,GAAG,GAAI,IACzZ2yD,EAASE,GAAmBD,EAC5BC,GAAmB,CACrB,CAGE3L,IACF3E,GAAQxE,EAAQt6D,GAAGsoC,EACnBw2B,GAAQjE,GAGNriE,KAAKqpE,UAAUh/B,GACjBrqC,KAAKqpE,UAAUh/B,GAAKlR,KAAOu9C,EAE3B12E,KAAKqpE,UAAUh/B,GAAO,CACpBlR,KAAMu9C,GAIVrsC,GAAO,CACT,CACF,EAEA+kC,cAAchuE,UAAU02D,mBAAqB,WAE3C,IAYItwD,EACAmR,EACAqO,EACAC,EACAvO,EACAwO,EAlBJlnB,KAAKipE,eACKjpE,KAAKsuE,cACXxpB,KAAO9kD,KAAKiK,OAAOwlE,OACvBzvE,KAAKszB,WAAWt8B,SAASg7E,WAAW,QAEpChyE,KAAKszB,WAAWt8B,SAASi7E,YAAY,SAErCjyE,KAAKszB,WAAWt8B,SAASk7E,cAAc,GAElClyE,KAAKsQ,KAAK26D,aACbjrE,KAAKwoE,aAAanC,YAAYrmE,KAAK2kE,aAAaxG,YAAan+D,KAAKkmE,oBASpE,IAGIoG,EAHArG,EAAkBjmE,KAAKwoE,aAAavC,gBACpCnE,EAAU9hE,KAAK2kE,aAAaxG,YAAYruB,EAC5Cn3B,EAAMmpD,EAAQlqE,OAEd,IAGI8+E,EACAC,EAJAE,EAAW,KACXC,EAAa,KACbC,EAAc,KAGd//E,EAAWgJ,KAAKszB,WAAWt8B,SAE/B,IAAKwQ,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,IAAKs6D,EAAQt6D,GAAGsR,EAAG,CASjB,IARAwzD,EAAiBrG,EAAgBz+D,MAG/BxQ,EAAS23E,OACT33E,EAAS26E,aAAarF,EAAeroD,GACrCjtB,EAAS46E,WAAWtF,EAAelkD,IAGjCpoB,KAAKsvE,KAAM,CAeb,IAdIhD,GAAkBA,EAAezO,GAC/BgZ,IAAavK,EAAezO,KAC9B7mE,EAAS66E,aAAavF,EAAezO,IACrCgZ,EAAWvK,EAAezO,IAEnBgZ,IAAa72E,KAAKiK,OAAOqlE,OAClCuH,EAAW72E,KAAKiK,OAAOqlE,KACvBt4E,EAAS66E,aAAa7xE,KAAKiK,OAAOqlE,OAIpCroD,GADAyvD,EAAW12E,KAAKqpE,UAAU7hE,GAAG2xB,MACbvhC,OAChBoI,KAAKszB,WAAWg7C,cAAcC,YAEzBvnD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAKzB,IAHAE,GADAyvD,EAAUD,EAAS1vD,IACJpvB,OACfoI,KAAKszB,WAAWg7C,cAAcE,OAAOmI,EAAQ,GAAIA,EAAQ,IAEpDj+D,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACzB1Y,KAAKszB,WAAWg7C,cAAcI,cAAciI,EAAQj+D,GAAIi+D,EAAQj+D,EAAI,GAAIi+D,EAAQj+D,EAAI,GAAIi+D,EAAQj+D,EAAI,GAAIi+D,EAAQj+D,EAAI,GAAIi+D,EAAQj+D,EAAI,IAIxI1Y,KAAKszB,WAAWg7C,cAAcyH,YAC9B/+E,EAASm7E,SAEX,CAEA,GAAInyE,KAAKqvE,OAAQ,CAyBf,IAxBI/C,GAAkBA,EAAe1O,GAC/BmZ,IAAgBzK,EAAe1O,KACjCmZ,EAAczK,EAAe1O,GAC7B5mE,EAAS+6E,aAAazF,EAAe1O,KAE9BmZ,IAAgB/2E,KAAKiK,OAAOulE,SACrCuH,EAAc/2E,KAAKiK,OAAOulE,OAC1Bx4E,EAAS+6E,aAAa/xE,KAAKiK,OAAOulE,SAGhClD,GAAkBA,EAAezjB,GAC/BiuB,IAAexK,EAAezjB,KAChCiuB,EAAaxK,EAAezjB,GAC5B7xD,EAAS86E,eAAexF,EAAezjB,KAEhCiuB,IAAe92E,KAAKiK,OAAOolE,SACpCyH,EAAa92E,KAAKiK,OAAOolE,OACzBr4E,EAAS86E,eAAe9xE,KAAKiK,OAAOolE,SAItCpoD,GADAyvD,EAAW12E,KAAKqpE,UAAU7hE,GAAG2xB,MACbvhC,OAChBoI,KAAKszB,WAAWg7C,cAAcC,YAEzBvnD,EAAI,EAAGA,EAAIC,EAAMD,GAAK,EAKzB,IAHAE,GADAyvD,EAAUD,EAAS1vD,IACJpvB,OACfoI,KAAKszB,WAAWg7C,cAAcE,OAAOmI,EAAQ,GAAIA,EAAQ,IAEpDj+D,EAAI,EAAGA,EAAIwO,EAAMxO,GAAK,EACzB1Y,KAAKszB,WAAWg7C,cAAcI,cAAciI,EAAQj+D,GAAIi+D,EAAQj+D,EAAI,GAAIi+D,EAAQj+D,EAAI,GAAIi+D,EAAQj+D,EAAI,GAAIi+D,EAAQj+D,EAAI,GAAIi+D,EAAQj+D,EAAI,IAIxI1Y,KAAKszB,WAAWg7C,cAAcyH,YAC9B/+E,EAASq7E,WAEX,CAEI/F,GACFtsE,KAAKszB,WAAWt8B,SAASy9E,SAE7B,CAEJ,EAQA12D,gBAAgB,CAACouC,YAAa+E,iBAAkBmd,cAAe9Y,iBAAkBnJ,aAAcxC,mBAAoB8lB,gBACnHA,eAAetuE,UAAUs0D,YAAc8H,gBAAgBp8D,UAAUs0D,YACjEga,eAAetuE,UAAU4vB,aAAeykC,cAAcr0D,UAAU4vB,aAEhE0+C,eAAetuE,UAAUy2D,cAAgB,WACvC,GAAI73D,KAAKwtB,IAAI3vB,QAAUmC,KAAKktB,UAAUu3B,IAAMzkD,KAAKwtB,IAAI3vB,OAASmC,KAAKktB,UAAUrJ,IAAM7jB,KAAKwtB,IAAI37B,QAAS,CACnG,IAAIw6B,EAASvO,UAAU,UACvBuO,EAAOxuB,MAAQmC,KAAKktB,UAAUu3B,EAC9Bp4B,EAAOx6B,OAASmO,KAAKktB,UAAUrJ,EAC/B,IAKImzD,EACAC,EANA3qD,EAAMD,EAAOE,WAAW,MACxB2qD,EAAOl3E,KAAKwtB,IAAI3vB,MAChBs5E,EAAOn3E,KAAKwtB,IAAI37B,OAChBulF,EAASF,EAAOC,EAChBE,EAAYr3E,KAAKktB,UAAUu3B,EAAIzkD,KAAKktB,UAAUrJ,EAG9CyzD,EAAMt3E,KAAKktB,UAAU8qC,IAAMh4D,KAAKszB,WAAWu3B,aAAaoN,yBAExDmf,EAASC,GAAqB,mBAARC,GAA4BF,EAASC,GAAqB,mBAARC,EAE1EN,GADAC,EAAaE,GACYE,EAGzBJ,GADAD,EAAYE,GACaG,EAG3B/qD,EAAI8nD,UAAUp0E,KAAKwtB,KAAM0pD,EAAOF,GAAa,GAAIG,EAAOF,GAAc,EAAGD,EAAWC,EAAY,EAAG,EAAGj3E,KAAKktB,UAAUu3B,EAAGzkD,KAAKktB,UAAUrJ,GACvI7jB,KAAKwtB,IAAMnB,CACb,CACF,EAEAqjD,eAAetuE,UAAU02D,mBAAqB,WAC5C93D,KAAKsuE,cAAc8F,UAAUp0E,KAAKwtB,IAAK,EAAG,EAC5C,EAEAkiD,eAAetuE,UAAUutB,QAAU,WACjC3uB,KAAKwtB,IAAM,IACb,EAMAzP,gBAAgB,CAACouC,YAAa+E,iBAAkBmd,cAAe9Y,iBAAkBnJ,aAAcxC,mBAAoB+lB,gBACnHA,eAAevuE,UAAUs0D,YAAc8H,gBAAgBp8D,UAAUs0D,YACjEia,eAAevuE,UAAU4vB,aAAeykC,cAAcr0D,UAAU4vB,aAEhE2+C,eAAevuE,UAAU02D,mBAAqB,WAE5C93D,KAAKszB,WAAWt8B,SAAS66E,aAAa7xE,KAAKsQ,KAAKu4C,IAEhD7oD,KAAKszB,WAAWt8B,SAASo7E,YAAY,EAAG,EAAGpyE,KAAKsQ,KAAKstD,GAAI59D,KAAKsQ,KAAKq0B,GAErE,EAIA5mB,gBAAgB,CAACkvC,cAAe2iB,oBAEhCA,mBAAmBxuE,UAAUyuD,YAAc,SAAUv/C,GACnD,OAAO,IAAI6+D,eAAe7+D,EAAMtQ,KAAKszB,WAAYtzB,KACnD,EAEA4vE,mBAAmBxuE,UAAU0uD,WAAa,SAAUx/C,GAClD,OAAO,IAAI8+D,cAAc9+D,EAAMtQ,KAAKszB,WAAYtzB,KAClD,EAEA4vE,mBAAmBxuE,UAAUquD,YAAc,SAAUn/C,GACnD,OAAO,IAAIo/D,eAAep/D,EAAMtQ,KAAKszB,WAAYtzB,KACnD,EAEA4vE,mBAAmBxuE,UAAUuuD,YAAc,SAAUr/C,GACnD,OAAO,IAAIq/D,eAAer/D,EAAMtQ,KAAKszB,WAAYtzB,KACnD,EAEA4vE,mBAAmBxuE,UAAUwuD,WAAaga,YAAYxoE,UAAUwuD,WAEhEggB,mBAAmBxuE,UAAUuwE,aAAe,SAAU5iC,GACnC,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAAyB,IAAbA,EAAM,IAA0B,IAAdA,EAAM,KAA2B,IAAdA,EAAM,KAIrG/uC,KAAKsuE,cAAcn+B,UAAUpB,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,GAAIA,EAAM,IAAKA,EAAM,IACxF,EAEA6gC,mBAAmBxuE,UAAUwwE,WAAa,SAAUxoD,GAClDppB,KAAKsuE,cAAciJ,aAAenuD,EAAK,EAAI,EAAIA,CACjD,EAEAwmD,mBAAmBxuE,UAAUywE,aAAe,SAAU59E,GACpD+L,KAAKsuE,cAAc9hD,UAAYv4B,CACjC,EAEA27E,mBAAmBxuE,UAAU0wE,eAAiB,SAAU79E,GACtD+L,KAAKsuE,cAAcwB,YAAc77E,CACnC,EAEA27E,mBAAmBxuE,UAAU2wE,aAAe,SAAU99E,GACpD+L,KAAKsuE,cAAcnM,UAAYluE,CACjC,EAEA27E,mBAAmBxuE,UAAU4wE,WAAa,SAAU/9E,GAClD+L,KAAKsuE,cAAcyB,QAAU97E,CAC/B,EAEA27E,mBAAmBxuE,UAAU6wE,YAAc,SAAUh+E,GACnD+L,KAAKsuE,cAAc7vB,SAAWxqD,CAChC,EAEA27E,mBAAmBxuE,UAAU8wE,cAAgB,SAAUj+E,GACrD+L,KAAKsuE,cAAc5vB,WAAazqD,CAClC,EAEA27E,mBAAmBxuE,UAAU+wE,QAAU,SAAUqF,GAC/Cx3E,KAAKsuE,cAAcgB,KAAKkI,EAC1B,EAEA5H,mBAAmBxuE,UAAUgxE,YAAc,SAAUzyE,EAAGC,EAAG6kD,EAAG5gC,GAC5D7jB,KAAKsuE,cAAc7hD,SAAS9sB,EAAGC,EAAG6kD,EAAG5gC,EACvC,EAEA+rD,mBAAmBxuE,UAAUixE,UAAY,WACvCryE,KAAKsuE,cAAce,QACrB,EAEAO,mBAAmBxuE,UAAU4qC,MAAQ,WAC9BhsC,KAAK6qD,aAAawmB,YAKvBrxE,KAAK0xE,YAAY1lC,QAJfhsC,KAAKsuE,cAAcmG,SAKvB,EAEA7E,mBAAmBxuE,UAAUutE,KAAO,WAClC3uE,KAAKsuE,cAAcK,MACrB,EAEAiB,mBAAmBxuE,UAAUqzE,QAAU,SAAUgD,GAC1Cz3E,KAAK6qD,aAAawmB,aAKnBoG,IACFz3E,KAAKszB,WAAWugD,UAAY,eAG9B7zE,KAAK0xE,YAAY+C,QAAQgD,IARvBz3E,KAAKsuE,cAAcmG,SASvB,EAEA7E,mBAAmBxuE,UAAUwxB,gBAAkB,SAAUuC,GACvD,GAAIn1B,KAAK8wD,cAAc59B,QAAS,CAC9BlzB,KAAK8wD,cAAcv/D,UAAYusB,UAAU,UACzC,IAAI45D,EAAiB13E,KAAK8wD,cAAcv/D,UAAUJ,MAClDumF,EAAe75E,MAAQ,OACvB65E,EAAe7lF,OAAS,OACxB,IAAIi6B,EAAS,cACb4rD,EAAev1D,gBAAkB2J,EACjC4rD,EAAeC,mBAAqB7rD,EACpC4rD,EAAet1D,sBAAwB0J,EACvC4rD,EAAe,qBAAuB5rD,EACtC4rD,EAAepN,kBAAoBtqE,KAAK6qD,aAAayf,kBACrDtqE,KAAK8wD,cAAc59B,QAAQ/f,YAAYnT,KAAK8wD,cAAcv/D,WAC1DyO,KAAKsuE,cAAgBtuE,KAAK8wD,cAAcv/D,UAAUg7B,WAAW,MAEzDvsB,KAAK6qD,aAAalyD,WACpBqH,KAAK8wD,cAAcv/D,UAAU6H,aAAa,QAAS4G,KAAK6qD,aAAalyD,WAGnEqH,KAAK6qD,aAAal4D,IACpBqN,KAAK8wD,cAAcv/D,UAAU6H,aAAa,KAAM4G,KAAK6qD,aAAal4D,GAEtE,MACEqN,KAAKsuE,cAAgBtuE,KAAK6qD,aAAaymB,QAGzCtxE,KAAK0xE,YAAYkG,WAAW53E,KAAKsuE,eACjCtuE,KAAKsQ,KAAO6kB,EACZn1B,KAAK6mB,OAASsO,EAAStO,OACvB7mB,KAAK4zE,gBAAkB,CACrBnvB,EAAGtvB,EAASsvB,EACZ5gC,EAAGsR,EAAStR,EACZ2rB,GAAI,EACJ3C,GAAI,EACJoD,GAAI,EACJxoB,GAAI,GAENznB,KAAK4wD,gBAAgBz7B,EAAUpkC,SAAS8C,MACxCmM,KAAKszB,WAAWg7C,cAAgBtuE,KAAKsuE,cACrCtuE,KAAKszB,WAAWt8B,SAAWgJ,KAC3BA,KAAKszB,WAAWukD,UAAW,EAC3B73E,KAAKszB,WAAW68B,gBAAkBnwD,KAAK6qD,aAAasF,gBACpDnwD,KAAKszB,WAAWsgD,gBAAkB5zE,KAAK4zE,gBACvC5zE,KAAKohD,SAAW9gC,iBAAiB6U,EAAStO,OAAOjvB,QACjDoI,KAAK+1B,qBACP,EAEA65C,mBAAmBxuE,UAAU20B,oBAAsB,SAAUl4B,EAAOhM,GAElE,IAAIimF,EACAC,EAoBAC,EACAC,EAEJ,GAzBAj4E,KAAKgsC,QAIDnuC,GACFi6E,EAAej6E,EACfk6E,EAAgBlmF,EAChBmO,KAAKsuE,cAAcjiD,OAAOxuB,MAAQi6E,EAClC93E,KAAKsuE,cAAcjiD,OAAOx6B,OAASkmF,IAE/B/3E,KAAK8wD,cAAc59B,SAAWlzB,KAAK8wD,cAAcv/D,WACnDumF,EAAe93E,KAAK8wD,cAAc59B,QAAQoyB,YAC1CyyB,EAAgB/3E,KAAK8wD,cAAc59B,QAAQp/B,eAE3CgkF,EAAe93E,KAAKsuE,cAAcjiD,OAAOxuB,MACzCk6E,EAAgB/3E,KAAKsuE,cAAcjiD,OAAOx6B,QAG5CmO,KAAKsuE,cAAcjiD,OAAOxuB,MAAQi6E,EAAe93E,KAAK6qD,aAAa0mB,IACnEvxE,KAAKsuE,cAAcjiD,OAAOx6B,OAASkmF,EAAgB/3E,KAAK6qD,aAAa0mB,MAMR,IAA3DvxE,KAAK6qD,aAAawf,oBAAoB9mE,QAAQ,UAA8E,IAA5DvD,KAAK6qD,aAAawf,oBAAoB9mE,QAAQ,SAAiB,CACjI,IAAI+zE,EAAMt3E,KAAK6qD,aAAawf,oBAAoBp9D,MAAM,KAClDirE,EAAWZ,EAAI,IAAM,OACrBlhE,EAAMkhE,EAAI,IAAM,WAChBhR,EAAOlwD,EAAI3jB,OAAO,EAAG,GACrB8zE,EAAOnwD,EAAI3jB,OAAO,GACtBulF,EAAaF,EAAeC,GAC5BE,EAAej4E,KAAK4zE,gBAAgBnvB,EAAIzkD,KAAK4zE,gBAAgB/vD,GAE1Cm0D,GAA2B,SAAbE,GAAuBD,EAAeD,GAA2B,UAAbE,GACnFl4E,KAAK4zE,gBAAgBpkC,GAAKsoC,GAAgB93E,KAAK4zE,gBAAgBnvB,EAAIzkD,KAAK6qD,aAAa0mB,KACrFvxE,KAAK4zE,gBAAgB/mC,GAAKirC,GAAgB93E,KAAK4zE,gBAAgBnvB,EAAIzkD,KAAK6qD,aAAa0mB,OAErFvxE,KAAK4zE,gBAAgBpkC,GAAKuoC,GAAiB/3E,KAAK4zE,gBAAgB/vD,EAAI7jB,KAAK6qD,aAAa0mB,KACtFvxE,KAAK4zE,gBAAgB/mC,GAAKkrC,GAAiB/3E,KAAK4zE,gBAAgB/vD,EAAI7jB,KAAK6qD,aAAa0mB,MAItFvxE,KAAK4zE,gBAAgB3jC,GADV,SAATq2B,IAAoB2R,EAAeD,GAA2B,SAAbE,GAAuBD,EAAeD,GAA2B,UAAbE,IAC5EJ,EAAe93E,KAAK4zE,gBAAgBnvB,GAAKszB,EAAgB/3E,KAAK4zE,gBAAgB/vD,IAAM,EAAI7jB,KAAK6qD,aAAa0mB,IACnH,SAATjL,IAAoB2R,EAAeD,GAA2B,SAAbE,GAAuBD,EAAeD,GAA2B,UAAbE,IACnFJ,EAAe93E,KAAK4zE,gBAAgBnvB,GAAKszB,EAAgB/3E,KAAK4zE,gBAAgB/vD,IAAM7jB,KAAK6qD,aAAa0mB,IAEvG,EAI1BvxE,KAAK4zE,gBAAgBnsD,GADV,SAAT8+C,IAAoB0R,EAAeD,GAA2B,SAAbE,GAAuBD,EAAeD,GAA2B,UAAbE,IAC5EH,EAAgB/3E,KAAK4zE,gBAAgB/vD,GAAKi0D,EAAe93E,KAAK4zE,gBAAgBnvB,IAAM,EAAIzkD,KAAK6qD,aAAa0mB,IACnH,SAAThL,IAAoB0R,EAAeD,GAA2B,SAAbE,GAAuBD,EAAeD,GAA2B,UAAbE,IACnFH,EAAgB/3E,KAAK4zE,gBAAgB/vD,GAAKi0D,EAAe93E,KAAK4zE,gBAAgBnvB,IAAMzkD,KAAK6qD,aAAa0mB,IAEvG,CAE9B,KAAqD,SAA1CvxE,KAAK6qD,aAAawf,qBAC3BrqE,KAAK4zE,gBAAgBpkC,GAAKsoC,GAAgB93E,KAAK4zE,gBAAgBnvB,EAAIzkD,KAAK6qD,aAAa0mB,KACrFvxE,KAAK4zE,gBAAgB/mC,GAAKkrC,GAAiB/3E,KAAK4zE,gBAAgB/vD,EAAI7jB,KAAK6qD,aAAa0mB,KACtFvxE,KAAK4zE,gBAAgB3jC,GAAK,EAC1BjwC,KAAK4zE,gBAAgBnsD,GAAK,IAE1BznB,KAAK4zE,gBAAgBpkC,GAAKxvC,KAAK6qD,aAAa0mB,IAC5CvxE,KAAK4zE,gBAAgB/mC,GAAK7sC,KAAK6qD,aAAa0mB,IAC5CvxE,KAAK4zE,gBAAgB3jC,GAAK,EAC1BjwC,KAAK4zE,gBAAgBnsD,GAAK,GAG5BznB,KAAK4zE,gBAAgB7kC,MAAQ,CAAC/uC,KAAK4zE,gBAAgBpkC,GAAI,EAAG,EAAG,EAAG,EAAGxvC,KAAK4zE,gBAAgB/mC,GAAI,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG7sC,KAAK4zE,gBAAgB3jC,GAAIjwC,KAAK4zE,gBAAgBnsD,GAAI,EAAG,GAQnKznB,KAAK2xE,aAAa3xE,KAAK4zE,gBAAgB7kC,OACvC/uC,KAAKsuE,cAAcC,YACnBvuE,KAAKsuE,cAAc/c,KAAK,EAAG,EAAGvxD,KAAK4zE,gBAAgBnvB,EAAGzkD,KAAK4zE,gBAAgB/vD,GAC3E7jB,KAAKsuE,cAAcyH,YACnB/1E,KAAKsuE,cAAcM,OACnB5uE,KAAKi2B,YAAYj2B,KAAKinC,eAAe,EACvC,EAEA2oC,mBAAmBxuE,UAAUutB,QAAU,WAKrC,IAAInnB,EAGJ,IAPIxH,KAAK6qD,aAAawmB,aAAerxE,KAAK8wD,cAAc59B,UACtDlzB,KAAK8wD,cAAc59B,QAAQ4G,UAAY,IAMpCtyB,GAFKxH,KAAK6mB,OAAS7mB,KAAK6mB,OAAOjvB,OAAS,GAE9B,EAAG4P,GAAK,EAAGA,GAAK,EACzBxH,KAAKohD,SAAS55C,IAAMxH,KAAKohD,SAAS55C,GAAGmnB,SACvC3uB,KAAKohD,SAAS55C,GAAGmnB,UAIrB3uB,KAAKohD,SAASxpD,OAAS,EACvBoI,KAAKszB,WAAWg7C,cAAgB,KAChCtuE,KAAK8wD,cAAcv/D,UAAY,KAC/ByO,KAAK4qE,WAAY,CACnB,EAEAgF,mBAAmBxuE,UAAU60B,YAAc,SAAUu0B,EAAKtR,GACxD,IAAIl5C,KAAKinC,gBAAkBujB,IAAyC,IAAlCxqD,KAAK6qD,aAAawmB,aAAyBn4B,KAAel5C,KAAK4qE,YAAsB,IAATpgB,EAA9G,CAWA,IAAIhjD,EAPJxH,KAAKinC,cAAgBujB,EACrBxqD,KAAKszB,WAAWoP,SAAW8nB,EAAMxqD,KAAK8wD,cAAcjpB,cACpD7nC,KAAKszB,WAAWoU,SAAW,EAC3B1nC,KAAKszB,WAAWkU,MAAQxnC,KAAK6qD,aAAawmB,aAAen4B,EACzDl5C,KAAKszB,WAAWb,iBAAiBvB,aAAes5B,EAIhD,IAAI7xC,EAAM3Y,KAAK6mB,OAAOjvB,OAMtB,IAJKoI,KAAK4mB,gBACR5mB,KAAKovD,YAAY5E,GAGdhjD,EAAImR,EAAM,EAAGnR,GAAK,EAAGA,GAAK,GACzBxH,KAAK4mB,gBAAkB5mB,KAAKohD,SAAS55C,KACvCxH,KAAKohD,SAAS55C,GAAGwpB,aAAaw5B,EAAMxqD,KAAK6mB,OAAOrf,GAAG6hB,IAIvD,GAAIrpB,KAAKszB,WAAWkU,KAAM,CAOxB,KANsC,IAAlCxnC,KAAK6qD,aAAawmB,YACpBrxE,KAAKsuE,cAAc2F,UAAU,EAAG,EAAGj0E,KAAK4zE,gBAAgBnvB,EAAGzkD,KAAK4zE,gBAAgB/vD,GAEhF7jB,KAAK2uE,OAGFnnE,EAAImR,EAAM,EAAGnR,GAAK,EAAGA,GAAK,GACzBxH,KAAK4mB,gBAAkB5mB,KAAKohD,SAAS55C,KACvCxH,KAAKohD,SAAS55C,GAAGyuB,eAIiB,IAAlCj2B,KAAK6qD,aAAawmB,aACpBrxE,KAAKy0E,SAET,CAtCA,CAuCF,EAEA7E,mBAAmBxuE,UAAUiuD,UAAY,SAAUj5C,GACjD,IAAIgrC,EAAWphD,KAAKohD,SAEpB,IAAIA,EAAShrC,IAAgC,KAAxBpW,KAAK6mB,OAAOzQ,GAAKqR,GAAtC,CAIA,IAAIvF,EAAUliB,KAAKuvD,WAAWvvD,KAAK6mB,OAAOzQ,GAAMpW,KAAMA,KAAKszB,YAC3D8tB,EAAShrC,GAAO8L,EAChBA,EAAQwS,iBAJR,CAQF,EAEAk7C,mBAAmBxuE,UAAUkuD,qBAAuB,WAClD,KAAOtvD,KAAK0wD,gBAAgB94D,QACZoI,KAAK0wD,gBAAgBpZ,MAC3BsgB,gBAEZ,EAEAgY,mBAAmBxuE,UAAUg3B,KAAO,WAClCp4B,KAAK8wD,cAAcv/D,UAAUJ,MAAMC,QAAU,MAC/C,EAEAw+E,mBAAmBxuE,UAAUi3B,KAAO,WAClCr4B,KAAK8wD,cAAcv/D,UAAUJ,MAAMC,QAAU,OAC/C,EAkDA4+E,cAAc5uE,UAAU+2E,UAAY,WAClC,IAAIC,EAA2B,EAAfp4E,KAAKi9B,QACjBz1B,EAAI,EAER,IAAKA,EAAIxH,KAAKi9B,QAASz1B,EAAI4wE,EAAW5wE,GAAK,EACzCxH,KAAKiwE,MAAMzoE,GAAK,IAAIqoE,cAGtB7vE,KAAKi9B,QAAUm7C,CACjB,EAEApI,cAAc5uE,UAAU4qC,MAAQ,WAC9BhsC,KAAKkwE,QAAU,EACflwE,KAAKmwE,IAAInkC,QACThsC,KAAKiwE,MAAMjwE,KAAKkwE,SAASpyE,QAAU,CACrC,EAEAkyE,cAAc5uE,UAAUqzE,QAAU,SAAU4D,GAC1Cr4E,KAAKkwE,SAAW,EAChB,IAEI1oE,EAFA8wE,EAAiBt4E,KAAKiwE,MAAMjwE,KAAKkwE,SACjC//B,EAAYmoC,EAAenoC,UAE3BjwB,EAAMlgB,KAAKmwE,IAAIphC,MAEnB,IAAKvnC,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB0Y,EAAI1Y,GAAK2oC,EAAU3oC,GAGrB,GAAI6wE,EAAc,CAChBr4E,KAAKowE,cAAcqE,UACnB,IAAI8D,EAAYv4E,KAAKiwE,MAAMjwE,KAAKkwE,QAAU,GAC1ClwE,KAAKwwE,iBAAmB+H,EAAU/rD,UAClCxsB,KAAK0wE,mBAAqB6H,EAAUzI,YACpC9vE,KAAK4wE,iBAAmB2H,EAAUpW,UAClCniE,KAAK8wE,eAAiByH,EAAUxI,QAChC/vE,KAAKgxE,gBAAkBuH,EAAU95B,SACjCz+C,KAAKixE,kBAAoBsH,EAAU75B,UACrC,CAEA1+C,KAAKowE,cAAcvgC,aAAaM,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,IAAKA,EAAU,MAE7GkoC,IAA4C,IAA5BC,EAAex6E,SAAkBkC,KAAKswE,iBAAmBgI,EAAex6E,WAC1FkC,KAAKowE,cAAcmH,YAAce,EAAex6E,QAChDkC,KAAKswE,eAAiBgI,EAAex6E,SAGvCkC,KAAKuwE,iBAAmB+H,EAAe9rD,UACvCxsB,KAAKywE,mBAAqB6H,EAAexI,YACzC9vE,KAAK2wE,iBAAmB2H,EAAenW,UACvCniE,KAAK6wE,eAAiByH,EAAevI,QACrC/vE,KAAK+wE,gBAAkBuH,EAAe75B,SACtCz+C,KAAKkxE,kBAAoBoH,EAAe55B,UAC1C,EAEAsxB,cAAc5uE,UAAUutE,KAAO,SAAU6J,GACnCA,GACFx4E,KAAKowE,cAAczB,OAGrB,IAAI5/B,EAAQ/uC,KAAKmwE,IAAIphC,MAEjB/uC,KAAKi9B,SAAWj9B,KAAKkwE,SACvBlwE,KAAKm4E,YAGP,IACI3wE,EADAixE,EAAez4E,KAAKiwE,MAAMjwE,KAAKkwE,SAGnC,IAAK1oE,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvBixE,EAAatoC,UAAU3oC,GAAKunC,EAAMvnC,GAGpCxH,KAAKkwE,SAAW,EAChB,IAAIwI,EAAW14E,KAAKiwE,MAAMjwE,KAAKkwE,SAC/BwI,EAAS56E,QAAU26E,EAAa36E,QAChC46E,EAASlsD,UAAYisD,EAAajsD,UAClCksD,EAAS5I,YAAc2I,EAAa3I,YACpC4I,EAASvW,UAAYsW,EAAatW,UAClCuW,EAAS3I,QAAU0I,EAAa1I,QAChC2I,EAASj6B,SAAWg6B,EAAah6B,SACjCi6B,EAASh6B,WAAa+5B,EAAa/5B,UACrC,EAEAsxB,cAAc5uE,UAAUu3E,WAAa,SAAU1kF,GAC7C+L,KAAKiwE,MAAMjwE,KAAKkwE,SAASpyE,QAAU7J,CACrC,EAEA+7E,cAAc5uE,UAAUw2E,WAAa,SAAU3jF,GAC7C+L,KAAKowE,cAAgBn8E,CACvB,EAEA+7E,cAAc5uE,UAAUorB,UAAY,SAAUv4B,GACxC+L,KAAKiwE,MAAMjwE,KAAKkwE,SAAS1jD,YAAcv4B,IACzC+L,KAAKuwE,iBAAmBt8E,EACxB+L,KAAKiwE,MAAMjwE,KAAKkwE,SAAS1jD,UAAYv4B,EAEzC,EAEA+7E,cAAc5uE,UAAU0uE,YAAc,SAAU77E,GAC1C+L,KAAKiwE,MAAMjwE,KAAKkwE,SAASJ,cAAgB77E,IAC3C+L,KAAKywE,mBAAqBx8E,EAC1B+L,KAAKiwE,MAAMjwE,KAAKkwE,SAASJ,YAAc77E,EAE3C,EAEA+7E,cAAc5uE,UAAU+gE,UAAY,SAAUluE,GACxC+L,KAAKiwE,MAAMjwE,KAAKkwE,SAAS/N,YAAcluE,IACzC+L,KAAK2wE,iBAAmB18E,EACxB+L,KAAKiwE,MAAMjwE,KAAKkwE,SAAS/N,UAAYluE,EAEzC,EAEA+7E,cAAc5uE,UAAU2uE,QAAU,SAAU97E,GACtC+L,KAAKiwE,MAAMjwE,KAAKkwE,SAASH,UAAY97E,IACvC+L,KAAK6wE,eAAiB58E,EACtB+L,KAAKiwE,MAAMjwE,KAAKkwE,SAASH,QAAU97E,EAEvC,EAEA+7E,cAAc5uE,UAAUq9C,SAAW,SAAUxqD,GACvC+L,KAAKiwE,MAAMjwE,KAAKkwE,SAASzxB,WAAaxqD,IACxC+L,KAAK+wE,gBAAkB98E,EACvB+L,KAAKiwE,MAAMjwE,KAAKkwE,SAASzxB,SAAWxqD,EAExC,EAEA+7E,cAAc5uE,UAAUs9C,WAAa,SAAUzqD,GACzC+L,KAAKiwE,MAAMjwE,KAAKkwE,SAASxxB,aAAezqD,IAC1C+L,KAAKkxE,kBAAoBj9E,EACzB+L,KAAKiwE,MAAMjwE,KAAKkwE,SAASxxB,WAAazqD,EAE1C,EAEA+7E,cAAc5uE,UAAU+uC,UAAY,SAAUpB,GAC5C/uC,KAAKqwE,aAAa59B,eAAe1D,GAEjC,IAAIyxB,EAAmBxgE,KAAKmwE,IAE5BnwE,KAAKqwE,aAAan+B,SAASsuB,GAE3BA,EAAiB/tB,eAAezyC,KAAKqwE,aAAathC,OAClD,IAAI6pC,EAAUpY,EAAiBzxB,MAE/B/uC,KAAKowE,cAAcvgC,aAAa+oC,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,GAAIA,EAAQ,IAAKA,EAAQ,IACvG,EAEA5I,cAAc5uE,UAAUtD,QAAU,SAAUsrB,GAC1C,IAAIknD,EAAiBtwE,KAAKiwE,MAAMjwE,KAAKkwE,SAASpyE,QAC9CwyE,GAAkBlnD,EAAK,EAAI,EAAIA,EAE3BppB,KAAKiwE,MAAMjwE,KAAKkwE,SAASpyE,UAAYwyE,IACnCtwE,KAAKswE,iBAAmBlnD,IAC1BppB,KAAKowE,cAAcmH,YAAcnuD,EACjCppB,KAAKswE,eAAiBlnD,GAGxBppB,KAAKiwE,MAAMjwE,KAAKkwE,SAASpyE,QAAUwyE,EAEvC,EAEAN,cAAc5uE,UAAUkuE,KAAO,SAAUkI,GACnCx3E,KAAKwwE,mBAAqBxwE,KAAKuwE,mBACjCvwE,KAAKwwE,iBAAmBxwE,KAAKuwE,iBAC7BvwE,KAAKowE,cAAc5jD,UAAYxsB,KAAKwwE,kBAGtCxwE,KAAKowE,cAAcd,KAAKkI,EAC1B,EAEAxH,cAAc5uE,UAAUqrB,SAAW,SAAU9sB,EAAGC,EAAG6kD,EAAG5gC,GAChD7jB,KAAKwwE,mBAAqBxwE,KAAKuwE,mBACjCvwE,KAAKwwE,iBAAmBxwE,KAAKuwE,iBAC7BvwE,KAAKowE,cAAc5jD,UAAYxsB,KAAKwwE,kBAGtCxwE,KAAKowE,cAAc3jD,SAAS9sB,EAAGC,EAAG6kD,EAAG5gC,EACvC,EAEAmsD,cAAc5uE,UAAUiuE,OAAS,WAC3BrvE,KAAK0wE,qBAAuB1wE,KAAKywE,qBACnCzwE,KAAK0wE,mBAAqB1wE,KAAKywE,mBAC/BzwE,KAAKowE,cAAcN,YAAc9vE,KAAK0wE,oBAGpC1wE,KAAK4wE,mBAAqB5wE,KAAK2wE,mBACjC3wE,KAAK4wE,iBAAmB5wE,KAAK2wE,iBAC7B3wE,KAAKowE,cAAcjO,UAAYniE,KAAK4wE,kBAGlC5wE,KAAK8wE,iBAAmB9wE,KAAK6wE,iBAC/B7wE,KAAK8wE,eAAiB9wE,KAAK6wE,eAC3B7wE,KAAKowE,cAAcL,QAAU/vE,KAAK8wE,gBAGhC9wE,KAAKgxE,kBAAoBhxE,KAAK+wE,kBAChC/wE,KAAKgxE,gBAAkBhxE,KAAK+wE,gBAC5B/wE,KAAKowE,cAAc3xB,SAAWz+C,KAAKgxE,iBAGjChxE,KAAKixE,oBAAsBjxE,KAAKkxE,oBAClClxE,KAAKixE,kBAAoBjxE,KAAKkxE,kBAC9BlxE,KAAKowE,cAAc1xB,WAAa1+C,KAAKixE,mBAGvCjxE,KAAKowE,cAAcf,QACrB,EAaAtxD,gBAAgB,CAAC6xD,mBAAoBnG,aAAc4E,eAAgB8C,eAEnEA,cAAc/vE,UAAU02D,mBAAqB,WAC3C,IAQItwD,EARA8kB,EAAMtsB,KAAKsuE,cAWf,IAVAhiD,EAAIiiD,YACJjiD,EAAIkiD,OAAO,EAAG,GACdliD,EAAImiD,OAAOzuE,KAAKsQ,KAAKm0C,EAAG,GACxBn4B,EAAImiD,OAAOzuE,KAAKsQ,KAAKm0C,EAAGzkD,KAAKsQ,KAAKuT,GAClCyI,EAAImiD,OAAO,EAAGzuE,KAAKsQ,KAAKuT,GACxByI,EAAImiD,OAAO,EAAG,GACdniD,EAAIsiD,OAICpnE,EAFKxH,KAAK6mB,OAAOjvB,OAEP,EAAG4P,GAAK,EAAGA,GAAK,GACzBxH,KAAK4mB,gBAAkB5mB,KAAKohD,SAAS55C,KACvCxH,KAAKohD,SAAS55C,GAAGyuB,aAGvB,EAEAk7C,cAAc/vE,UAAUutB,QAAU,WAChC,IAAInnB,EAGJ,IAAKA,EAFKxH,KAAK6mB,OAAOjvB,OAEP,EAAG4P,GAAK,EAAGA,GAAK,EACzBxH,KAAKohD,SAAS55C,IAChBxH,KAAKohD,SAAS55C,GAAGmnB,UAIrB3uB,KAAK6mB,OAAS,KACd7mB,KAAKohD,SAAW,IAClB,EAEA+vB,cAAc/vE,UAAUsuD,WAAa,SAAUp/C,GAC7C,OAAO,IAAI6gE,cAAc7gE,EAAMtQ,KAAKszB,WAAYtzB,KAClD,EAmDA+d,gBAAgB,CAAC6xD,oBAAqBwB,gBAEtCA,eAAehwE,UAAUsuD,WAAa,SAAUp/C,GAC9C,OAAO,IAAI6gE,cAAc7gE,EAAMtQ,KAAKszB,WAAYtzB,KAClD,EAIAsyE,aAAalxE,UAAY,CACvBy3E,eAAgB,WAA2B,EAC3C/iB,oBAAqB,WACnB91D,KAAKsuD,YAAcxwC,UAAU9d,KAAKsQ,KAAKwoE,IAAM,OAEzC94E,KAAKsQ,KAAK8W,SACZpnB,KAAK8pE,WAAatkD,SAAS,OAC3BxlB,KAAKuuD,aAAe/oC,SAAS,KAC7BxlB,KAAKwyD,cAAgBxyD,KAAKuuD,aAC1BvuD,KAAK8pE,WAAW32D,YAAYnT,KAAKuuD,cACjCvuD,KAAKsuD,YAAYn7C,YAAYnT,KAAK8pE,aAElC9pE,KAAKuuD,aAAevuD,KAAKsuD,YAG3BrsC,SAASjiB,KAAKsuD,YAChB,EACAyH,wBAAyB,WACvB/1D,KAAKuzD,yBAA2B,IAAI0a,UAAUjuE,MAC9CA,KAAKi2D,mBAAqBj2D,KAAKsuD,YAC/BtuD,KAAKwyD,cAAgBxyD,KAAKuuD,aAEtBvuD,KAAKsQ,KAAKkmD,IACZx2D,KAAKuuD,aAAan1D,aAAa,KAAM4G,KAAKsQ,KAAKkmD,IAG7Cx2D,KAAKsQ,KAAK0Z,IACZhqB,KAAKuuD,aAAan1D,aAAa,QAAS4G,KAAKsQ,KAAK0Z,IAG/B,IAAjBhqB,KAAKsQ,KAAK+9C,IACZruD,KAAKmuD,cAET,EACA0I,cAAe,WACb,IAAIkiB,EAA0B/4E,KAAKi2D,mBAAqBj2D,KAAKi2D,mBAAmB9kE,MAAQ,CAAC,EAEzF,GAAI6O,KAAK2qD,eAAe+H,QAAS,CAC/B,IAAIsmB,EAAch5E,KAAK2qD,eAAe1R,IAAIpF,QAC1CklC,EAAwB5oC,UAAY6oC,EACpCD,EAAwBE,gBAAkBD,CAC5C,CAEIh5E,KAAK2qD,eAAeiI,SACtBmmB,EAAwBj7E,QAAUkC,KAAK2qD,eAAeC,MAAMxiC,EAAErE,EAElE,EACAkS,YAAa,WAGPj2B,KAAKsQ,KAAKmmD,IAAMz2D,KAAKiqD,SAIzBjqD,KAAKgzD,kBACLhzD,KAAK+qD,mBACL/qD,KAAK62D,gBACL72D,KAAK83D,qBAED93D,KAAK6nC,gBACP7nC,KAAK6nC,eAAgB,GAEzB,EACAlZ,QAAS,WACP3uB,KAAKuuD,aAAe,KACpBvuD,KAAKi2D,mBAAqB,KAEtBj2D,KAAKg2D,eACPh2D,KAAKg2D,aAAe,MAGlBh2D,KAAK0tD,cACP1tD,KAAK0tD,YAAY/+B,UACjB3uB,KAAK0tD,YAAc,KAEvB,EACAqJ,2BAA4B,WAC1B/2D,KAAK0tD,YAAc,IAAIyD,YAAYnxD,KAAKsQ,KAAMtQ,KAAMA,KAAKszB,WAC3D,EACA4lD,WAAY,WAAuB,EACnCxhB,SAAU,WAAqB,GAEjC4a,aAAalxE,UAAU0tD,eAAiBwG,eAAel0D,UAAU0tD,eACjEwjB,aAAalxE,UAAU01D,mBAAqBwb,aAAalxE,UAAUutB,QACnE2jD,aAAalxE,UAAUgvD,sBAAwBnD,aAAa7rD,UAAUgvD,sBAMtEryC,gBAAgB,CAACouC,YAAa+E,iBAAkBohB,aAAc/c,iBAAkBnJ,aAAcoJ,sBAAuB+c,eAErHA,cAAcnxE,UAAUy2D,cAAgB,WACtC,IAAItG,EAEAvxD,KAAKsQ,KAAK8W,UACZmqC,EAAO/rC,SAAS,SACXpsB,aAAa,QAAS4G,KAAKsQ,KAAKstD,IACrCrM,EAAKn4D,aAAa,SAAU4G,KAAKsQ,KAAKq0B,IACtC4sB,EAAKn4D,aAAa,OAAQ4G,KAAKsQ,KAAKu4C,IACpC7oD,KAAK8pE,WAAW1wE,aAAa,QAAS4G,KAAKsQ,KAAKstD,IAChD59D,KAAK8pE,WAAW1wE,aAAa,SAAU4G,KAAKsQ,KAAKq0B,OAEjD4sB,EAAOzzC,UAAU,QACZ3sB,MAAM0M,MAAQmC,KAAKsQ,KAAKstD,GAAK,KAClCrM,EAAKpgE,MAAMU,OAASmO,KAAKsQ,KAAKq0B,GAAK,KACnC4sB,EAAKpgE,MAAMgoF,gBAAkBn5E,KAAKsQ,KAAKu4C,IAGzC7oD,KAAKuuD,aAAap7C,YAAYo+C,EAChC,EA8BAxzC,gBAAgB,CAACouC,YAAa+E,iBAAkBqhB,cAAe/U,gBAAiB8U,aAAc/c,iBAAkBnJ,aAAcxC,mBAAoB4oB,eAClJA,cAAcpxE,UAAUg4E,kBAAoB5G,cAAcpxE,UAAU02D,mBAEpE0a,cAAcpxE,UAAUy2D,cAAgB,WACtC,IAAIhW,EAGJ,GAFA7hD,KAAKsuD,YAAYn9D,MAAM8zD,SAAW,EAE9BjlD,KAAKsQ,KAAK8W,QACZpnB,KAAKuuD,aAAap7C,YAAYnT,KAAKyyE,iBACnC5wB,EAAO7hD,KAAK8pE,eACP,CACLjoB,EAAOr8B,SAAS,OAChB,IAAIhP,EAAOxW,KAAK8nB,KAAKxX,KAAOtQ,KAAK8nB,KAAKxX,KAAOtQ,KAAKszB,WAAWy9B,SAC7DlP,EAAKzoD,aAAa,QAASod,EAAKiuC,GAChC5C,EAAKzoD,aAAa,SAAUod,EAAKqN,GACjCg+B,EAAK1uC,YAAYnT,KAAKyyE,iBACtBzyE,KAAKuuD,aAAap7C,YAAY0uC,EAChC,CAEA7hD,KAAKy/D,aAAaz/D,KAAKguD,WAAYhuD,KAAKiuD,UAAWjuD,KAAKy6D,aAAcz6D,KAAKyyE,gBAAiB,EAAG,IAAI,GACnGzyE,KAAK0/D,qBACL1/D,KAAKq5E,UAAYx3B,CACnB,EAEA2wB,cAAcpxE,UAAUk4E,oBAAsB,SAAUzgB,EAAc3+C,GACpE,IAAI1S,EACAmR,EAAMkgD,EAAajhE,OAEvB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB0S,EAAQ2+C,EAAarxD,GAAGm7C,OAAO5+B,EAAEovB,kBAAkBj5B,EAAM,GAAIA,EAAM,GAAI,GAGzE,OAAOA,CACT,EAEAs4D,cAAcpxE,UAAUm4E,0BAA4B,SAAUC,EAAMz+B,GAClE,IAEIvzC,EAEAiyE,EACAC,EACAC,EACAC,EAPAnvC,EAAQ+uC,EAAK70C,GAAG5gB,EAChB80C,EAAe2gB,EAAK3gB,aAEpBlgD,EAAM8xB,EAAMxN,QAMhB,KAAItkB,GAAO,GAAX,CAIA,IAAKnR,EAAI,EAAGA,EAAImR,EAAM,EAAGnR,GAAK,EAC5BiyE,EAASz5E,KAAKs5E,oBAAoBzgB,EAAcpuB,EAAM1mB,EAAEvc,IACxDkyE,EAAS15E,KAAKs5E,oBAAoBzgB,EAAcpuB,EAAMriB,EAAE5gB,IACxDmyE,EAAa35E,KAAKs5E,oBAAoBzgB,EAAcpuB,EAAMjjC,EAAEA,EAAI,IAChEoyE,EAAa55E,KAAKs5E,oBAAoBzgB,EAAcpuB,EAAM1mB,EAAEvc,EAAI,IAChExH,KAAK65E,YAAYJ,EAAQC,EAAQC,EAAYC,EAAY7+B,GAGvDtQ,EAAMv8B,IACRurE,EAASz5E,KAAKs5E,oBAAoBzgB,EAAcpuB,EAAM1mB,EAAEvc,IACxDkyE,EAAS15E,KAAKs5E,oBAAoBzgB,EAAcpuB,EAAMriB,EAAE5gB,IACxDmyE,EAAa35E,KAAKs5E,oBAAoBzgB,EAAcpuB,EAAMjjC,EAAE,IAC5DoyE,EAAa55E,KAAKs5E,oBAAoBzgB,EAAcpuB,EAAM1mB,EAAE,IAC5D/jB,KAAK65E,YAAYJ,EAAQC,EAAQC,EAAYC,EAAY7+B,GAf3D,CAiBF,EAEAy3B,cAAcpxE,UAAUy4E,YAAc,SAAUJ,EAAQC,EAAQC,EAAYC,EAAY7+B,GACtF/6C,KAAK85E,iBAAiBL,EAAQC,EAAQC,EAAYC,GAClD,IAAIh2B,EAAS5jD,KAAK+5E,iBAClBh/B,EAAYp7C,EAAI0hB,MAAMuiC,EAAOrpD,KAAMwgD,EAAYp7C,GAC/Co7C,EAAYi/B,KAAO54D,MAAMwiC,EAAOpE,MAAOzE,EAAYi/B,MACnDj/B,EAAYn7C,EAAIyhB,MAAMuiC,EAAOppD,IAAKugD,EAAYn7C,GAC9Cm7C,EAAYk/B,KAAO74D,MAAMwiC,EAAOzlD,OAAQ48C,EAAYk/B,KACtD,EAEAzH,cAAcpxE,UAAU24E,iBAAmB,CACzCx/E,KAAM,EACNilD,MAAO,EACPhlD,IAAK,EACL2D,OAAQ,GAEVq0E,cAAcpxE,UAAU84E,gBAAkB,CACxCv6E,EAAG,EACHq6E,KAAM,EACNp6E,EAAG,EACHq6E,KAAM,EACNp8E,MAAO,EACPhM,OAAQ,GAGV2gF,cAAcpxE,UAAU04E,iBAAmB,SAAUxtC,EAAIC,EAAI2E,EAAIkJ,GAG/D,IAFA,IAESpsC,EAAGC,EAAGC,EAAGiW,EAAGg2D,EAAM15C,EAAIoa,EAF3B+I,EAAS,CAAC,CAACtX,EAAG,GAAI8N,EAAG,IAAK,CAAC9N,EAAG,GAAI8N,EAAG,KAEN5yC,EAAI,EAAGA,EAAI,IAAKA,EAEjDyG,EAAI,EAAIq+B,EAAG9kC,GAAK,GAAK+kC,EAAG/kC,GAAK,EAAI0pC,EAAG1pC,GACpCwG,GAAK,EAAIs+B,EAAG9kC,GAAK,EAAI+kC,EAAG/kC,GAAK,EAAI0pC,EAAG1pC,GAAK,EAAI4yC,EAAG5yC,GAChD0G,EAAI,EAAIq+B,EAAG/kC,GAAK,EAAI8kC,EAAG9kC,GACvByG,GAAK,EAILC,GAAK,EAEK,IAJVF,GAAK,IAIgB,IAANC,IACE,IAAND,GACTmW,GAAKjW,EAAID,GAED,GAAKkW,EAAI,GACfy/B,EAAOp8C,GAAGnI,KAAKW,KAAKo6E,WAAWj2D,EAAGmoB,EAAIC,EAAI2E,EAAIkJ,EAAI5yC,KAGpD2yE,EAAOlsE,EAAIA,EAAI,EAAIC,EAAIF,IAEX,KACVyyB,IAAOxyB,EAAIgT,OAAOk5D,KAAU,EAAInsE,IACvB,GAAKyyB,EAAK,GAAGmjB,EAAOp8C,GAAGnI,KAAKW,KAAKo6E,WAAW35C,EAAI6L,EAAIC,EAAI2E,EAAIkJ,EAAI5yC,KACzEqzC,IAAO5sC,EAAIgT,OAAOk5D,KAAU,EAAInsE,IACvB,GAAK6sC,EAAK,GAAG+I,EAAOp8C,GAAGnI,KAAKW,KAAKo6E,WAAWv/B,EAAIvO,EAAIC,EAAI2E,EAAIkJ,EAAI5yC,MAK/ExH,KAAK+5E,iBAAiBx/E,KAAO8mB,MAAMnpB,MAAM,KAAM0rD,EAAO,IACtD5jD,KAAK+5E,iBAAiBv/E,IAAM6mB,MAAMnpB,MAAM,KAAM0rD,EAAO,IACrD5jD,KAAK+5E,iBAAiBv6B,MAAQp+B,MAAMlpB,MAAM,KAAM0rD,EAAO,IACvD5jD,KAAK+5E,iBAAiB57E,OAASijB,MAAMlpB,MAAM,KAAM0rD,EAAO,GAC1D,EAEA4uB,cAAcpxE,UAAUg5E,WAAa,SAAUj2D,EAAGmoB,EAAIC,EAAI2E,EAAIkJ,EAAI5yC,GAChE,OAAOuZ,MAAM,EAAIoD,EAAG,GAAKmoB,EAAG9kC,GAAK,EAAIuZ,MAAM,EAAIoD,EAAG,GAAKA,EAAIooB,EAAG/kC,GAAK,GAAK,EAAI2c,GAAKpD,MAAMoD,EAAG,GAAK+sB,EAAG1pC,GAAKuZ,MAAMoD,EAAG,GAAKi2B,EAAG5yC,EAC1H,EAEAgrE,cAAcpxE,UAAUi5E,qBAAuB,SAAUpsB,EAAWlT,GAClE,IAAIvzC,EACAmR,EAAMs1C,EAAUr2D,OAEpB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBymD,EAAUzmD,IAAMymD,EAAUzmD,GAAGm9B,GAC/B3kC,KAAKu5E,0BAA0BtrB,EAAUzmD,GAAIuzC,GACpCkT,EAAUzmD,IAAMymD,EAAUzmD,GAAG7G,GACtCX,KAAKq6E,qBAAqBpsB,EAAUzmD,GAAG7G,GAAIo6C,GAClCkT,EAAUzmD,IAAMymD,EAAUzmD,GAAGrW,OAAS88D,EAAUzmD,GAAGi9C,GAC5DzkD,KAAKs6E,wBAAwBrsB,EAAUzmD,GAAGi9C,EAAG1J,EAGnD,EAEAy3B,cAAcpxE,UAAUk5E,wBAA0B,SAAUC,EAAex/B,GACzE,IAAIl9C,EAAQ,EAEZ,GAAI08E,EAAcj3C,UAAW,CAC3B,IAAK,IAAI97B,EAAI,EAAGA,EAAI+yE,EAAcj3C,UAAU1rC,OAAQ4P,GAAK,EAAG,CAC1D,IAAIgzE,EAAMD,EAAcj3C,UAAU97B,GAAGsc,EAEjC02D,EAAM38E,IACRA,EAAQ28E,EAEZ,CAEA38E,GAAS08E,EAAchzC,IACzB,MACE1pC,EAAQ08E,EAAcx2D,EAAIw2D,EAAchzC,KAG1CwT,EAAYp7C,GAAK9B,EACjBk9C,EAAYi/B,MAAQn8E,EACpBk9C,EAAYn7C,GAAK/B,EACjBk9C,EAAYk/B,MAAQp8E,CACtB,EAEA20E,cAAcpxE,UAAUq5E,mBAAqB,SAAU3/B,GACrD,OAAO96C,KAAK0yE,YAAY/yE,GAAKm7C,EAAIn7C,GAAKK,KAAK0yE,YAAY9yE,GAAKk7C,EAAIl7C,GAAKI,KAAK0yE,YAAY70E,MAAQmC,KAAK0yE,YAAY/yE,GAAKm7C,EAAIn7C,EAAIm7C,EAAIj9C,OAASmC,KAAK0yE,YAAY7gF,OAASmO,KAAK0yE,YAAY9yE,GAAKk7C,EAAIl7C,EAAIk7C,EAAIjpD,MACvM,EAEA2gF,cAAcpxE,UAAU02D,mBAAqB,WAG3C,GAFA93D,KAAKo5E,qBAEAp5E,KAAKiqD,SAAWjqD,KAAK6nC,eAAiB7nC,KAAKwnC,MAAO,CACrD,IAAI0yC,EAAkBl6E,KAAKk6E,gBACvBjjE,EAAM,OASV,GARAijE,EAAgBv6E,EAAIsX,EACpBijE,EAAgBF,MAAQ/iE,EACxBijE,EAAgBt6E,EAAIqX,EACpBijE,EAAgBD,MAAQhjE,EACxBjX,KAAKq6E,qBAAqBr6E,KAAKiuD,UAAWisB,GAC1CA,EAAgBr8E,MAAQq8E,EAAgBF,KAAOE,EAAgBv6E,EAAI,EAAIu6E,EAAgBF,KAAOE,EAAgBv6E,EAC9Gu6E,EAAgBroF,OAASqoF,EAAgBD,KAAOC,EAAgBt6E,EAAI,EAAIs6E,EAAgBD,KAAOC,EAAgBt6E,EAE3GI,KAAKy6E,mBAAmBP,GAC1B,OAGF,IAAIQ,GAAU,EAcd,GAZI16E,KAAK0yE,YAAYjuB,IAAMy1B,EAAgBr8E,QACzCmC,KAAK0yE,YAAYjuB,EAAIy1B,EAAgBr8E,MACrCmC,KAAKq5E,UAAUjgF,aAAa,QAAS8gF,EAAgBr8E,OACrD68E,GAAU,GAGR16E,KAAK0yE,YAAY7uD,IAAMq2D,EAAgBroF,SACzCmO,KAAK0yE,YAAY7uD,EAAIq2D,EAAgBroF,OACrCmO,KAAKq5E,UAAUjgF,aAAa,SAAU8gF,EAAgBroF,QACtD6oF,GAAU,GAGRA,GAAW16E,KAAK0yE,YAAY/yE,IAAMu6E,EAAgBv6E,GAAKK,KAAK0yE,YAAY9yE,IAAMs6E,EAAgBt6E,EAAG,CACnGI,KAAK0yE,YAAYjuB,EAAIy1B,EAAgBr8E,MACrCmC,KAAK0yE,YAAY7uD,EAAIq2D,EAAgBroF,OACrCmO,KAAK0yE,YAAY/yE,EAAIu6E,EAAgBv6E,EACrCK,KAAK0yE,YAAY9yE,EAAIs6E,EAAgBt6E,EACrCI,KAAKq5E,UAAUjgF,aAAa,UAAW4G,KAAK0yE,YAAY/yE,EAAI,IAAMK,KAAK0yE,YAAY9yE,EAAI,IAAMI,KAAK0yE,YAAYjuB,EAAI,IAAMzkD,KAAK0yE,YAAY7uD,GACzI,IAAI82D,EAAa36E,KAAKq5E,UAAUloF,MAC5BypF,EAAiB,aAAe56E,KAAK0yE,YAAY/yE,EAAI,MAAQK,KAAK0yE,YAAY9yE,EAAI,MACtF+6E,EAAWxqC,UAAYyqC,EACvBD,EAAW1B,gBAAkB2B,CAC/B,CACF,CACF,EAgBA78D,gBAAgB,CAACouC,YAAa+E,iBAAkBohB,aAAc/c,iBAAkBnJ,aAAcoJ,qBAAsB2Q,cAAewM,cAEnIA,aAAavxE,UAAUy2D,cAAgB,WAGrC,GAFA73D,KAAK6yE,SAAW7yE,KAAKmtD,aAEjBntD,KAAK6yE,SAAU,CACjB7yE,KAAKwlE,WAAa,MAClBxlE,KAAK66E,MAAQ76E,KAAK8nB,KAAKxX,KAAKm0C,EAC5BzkD,KAAK86E,MAAQ96E,KAAK8nB,KAAKxX,KAAKuT,EAC5B7jB,KAAK8pE,WAAW1wE,aAAa,QAAS4G,KAAK66E,OAC3C76E,KAAK8pE,WAAW1wE,aAAa,SAAU4G,KAAK86E,OAC5C,IAAItsE,EAAIgX,SAAS,KACjBxlB,KAAKwyD,cAAcr/C,YAAY3E,GAC/BxO,KAAK+3D,UAAYvpD,CACnB,MACExO,KAAKwlE,WAAa,OAClBxlE,KAAK+3D,UAAY/3D,KAAKuuD,aAGxBvuD,KAAK43D,gBACP,EAEA+a,aAAavxE,UAAU8nE,aAAe,WACpC,IAAIrgD,EAAe7oB,KAAK2kE,aAAaxG,YACrCn+D,KAAKimE,gBAAkB3lD,iBAAiBuI,EAAainB,EAAIjnB,EAAainB,EAAEl4C,OAAS,GACjF,IAAImjF,EAAiB/6E,KAAK+3D,UAAU5mE,MAChC6pF,EAAYnyD,EAAag1C,GAAK79D,KAAK8oE,WAAWjgD,EAAag1C,IAAM,gBACrEkd,EAAezL,KAAO0L,EACtBD,EAAex2D,MAAQy2D,EAEnBnyD,EAAaggC,KACfkyB,EAAe1L,OAASrvE,KAAK8oE,WAAWjgD,EAAaggC,IACrDkyB,EAAeE,YAAcpyD,EAAa+0C,GAAK,MAGjD,IAiBIp2D,EACAmR,EAlBAmnC,EAAW9/C,KAAKszB,WAAWiB,YAAY20B,cAAcrgC,EAAaxnB,GAEtE,IAAKrB,KAAKszB,WAAWiB,YAAYtL,MAI/B,GAHA8xD,EAAe91B,SAAWp8B,EAAam2C,UAAY,KACnD+b,EAAeG,WAAaryD,EAAam2C,UAAY,KAEjDlf,EAASqG,OACXnmD,KAAK+3D,UAAUp/D,UAAYmnD,EAASqG,WAC/B,CACL40B,EAAe/1B,WAAalF,EAASmG,QACrC,IAAIhG,EAAUp3B,EAAao3B,QACvBD,EAASn3B,EAAam3B,OAC1B+6B,EAAe51B,UAAYnF,EAC3B+6B,EAAe31B,WAAanF,CAC9B,CAKF,IAEIyrB,EACAyP,EACAC,EAJAtZ,EAAUj5C,EAAainB,EAC3Bn3B,EAAMmpD,EAAQlqE,OAId,IACIiwB,EADAi/C,EAAe9mE,KAAK6zD,QAEpB6U,EAAW,GACXr+B,EAAM,EAEV,IAAK7iC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAuC3B,GAtCIxH,KAAKszB,WAAWiB,YAAYtL,OACzBjpB,KAAK4yE,UAAUvoC,GAMlBqhC,EAAQ1rE,KAAK4yE,UAAUvoC,KALvBqhC,EAAQlmD,SAAS,SACXpsB,aAAa,iBAAkBs/D,YAAY,IACjDgT,EAAMtyE,aAAa,kBAAmBu/D,aAAa,IACnD+S,EAAMtyE,aAAa,oBAAqB,MAKrC4G,KAAK6yE,WACJ7yE,KAAKqpE,UAAUh/B,GAEjB+wC,GADAD,EAAUn7E,KAAKqpE,UAAUh/B,IACTgxC,SAAS,KAEzBF,EAAUr9D,UAAU,QACZ3sB,MAAM+pF,WAAa,GAC3BE,EAAQ51D,SAAS,QACXrS,YAAYu4D,GAClBzpD,SAASk5D,MAGHn7E,KAAK6yE,SAYfnH,EAAQ1rE,KAAK4yE,UAAUvoC,GAAOrqC,KAAK4yE,UAAUvoC,GAAO7kB,SAAS,QAXzDxlB,KAAKqpE,UAAUh/B,IACjB8wC,EAAUn7E,KAAKqpE,UAAUh/B,GACzBqhC,EAAQ1rE,KAAK4yE,UAAUvoC,KAGvBpoB,SADAk5D,EAAUr9D,UAAU,SAGpBmE,SADAypD,EAAQ5tD,UAAU,SAElBq9D,EAAQhoE,YAAYu4D,IAOpB1rE,KAAKszB,WAAWiB,YAAYtL,MAAO,CACrC,IACI+W,EADA9W,EAAWlpB,KAAKszB,WAAWiB,YAAYu0B,YAAYjgC,EAAao2C,UAAUz3D,GAAIs4C,EAASE,OAAQhgD,KAAKszB,WAAWiB,YAAY20B,cAAcrgC,EAAaxnB,GAAG4kD,SAkB7J,GAdEjmB,EADE9W,EACUA,EAAS5Y,KAET,KAGdw2D,EAAa96B,QAEThM,GAAaA,EAAUnY,QAAUmY,EAAUnY,OAAOjwB,SACpDiwB,EAASmY,EAAUnY,OAAO,GAAGlnB,GAC7BmmE,EAAan3B,MAAM9mB,EAAam2C,UAAY,IAAKn2C,EAAam2C,UAAY,KAC1E0J,EAAW1oE,KAAKyoE,gBAAgB3B,EAAcj/C,GAC9C6jD,EAAMtyE,aAAa,IAAKsvE,IAGrB1oE,KAAK6yE,SAsBR7yE,KAAK+3D,UAAU5kD,YAAYu4D,OAtBT,CAGlB,GAFA1rE,KAAK+3D,UAAU5kD,YAAYgoE,GAEvBn7C,GAAaA,EAAUnY,OAAQ,CAEjC92B,SAAS8C,KAAKsf,YAAYioE,GAC1B,IAAIrgC,EAAcqgC,EAAMztD,UACxBytD,EAAMhiF,aAAa,QAAS2hD,EAAYl9C,MAAQ,GAChDu9E,EAAMhiF,aAAa,SAAU2hD,EAAYlpD,OAAS,GAClDupF,EAAMhiF,aAAa,UAAW2hD,EAAYp7C,EAAI,EAAI,KAAOo7C,EAAYn7C,EAAI,GAAK,KAAOm7C,EAAYl9C,MAAQ,GAAK,KAAOk9C,EAAYlpD,OAAS,IAC1I,IAAIypF,EAAaF,EAAMjqF,MACnBoqF,EAAmB,cAAgBxgC,EAAYp7C,EAAI,GAAK,OAASo7C,EAAYn7C,EAAI,GAAK,MAC1F07E,EAAWnrC,UAAYorC,EACvBD,EAAWrC,gBAAkBsC,EAC7BzZ,EAAQt6D,GAAGu3D,QAAUhkB,EAAYn7C,EAAI,CACvC,MACEw7E,EAAMhiF,aAAa,QAAS,GAC5BgiF,EAAMhiF,aAAa,SAAU,GAG/B+hF,EAAQhoE,YAAYioE,EACtB,CAGF,MAIE,GAHA1P,EAAMxlB,YAAc4b,EAAQt6D,GAAGyN,IAC/By2D,EAAM18C,eAAe,uCAAwC,YAAa,YAErEhvB,KAAK6yE,SAQR7yE,KAAK+3D,UAAU5kD,YAAYu4D,OART,CAClB1rE,KAAK+3D,UAAU5kD,YAAYgoE,GAE3B,IAAIK,EAAS9P,EAAMv6E,MACfsqF,EAAmB,kBAAoB5yD,EAAam2C,UAAY,IAAM,QAC1Ewc,EAAOrrC,UAAYsrC,EACnBD,EAAOvC,gBAAkBwC,CAC3B,CAMGz7E,KAAK6yE,SAGR7yE,KAAKqpE,UAAUh/B,GAAOqhC,EAFtB1rE,KAAKqpE,UAAUh/B,GAAO8wC,EAKxBn7E,KAAKqpE,UAAUh/B,GAAKl5C,MAAMC,QAAU,QACpC4O,KAAK4yE,UAAUvoC,GAAOqhC,EACtBrhC,GAAO,CACT,CAEA,KAAOA,EAAMrqC,KAAKqpE,UAAUzxE,QAC1BoI,KAAKqpE,UAAUh/B,GAAKl5C,MAAMC,QAAU,OACpCi5C,GAAO,CAEX,EAEAsoC,aAAavxE,UAAU02D,mBAAqB,WAE1C,IAAI4jB,EAEJ,GAHA17E,KAAKipE,eAGDjpE,KAAKsQ,KAAK26D,YAAa,CACzB,IAAKjrE,KAAK6nC,gBAAkB7nC,KAAKkmE,mBAC/B,OAGF,GAAIlmE,KAAK6yE,UAAY7yE,KAAK2qD,eAAe+H,QAAS,CAEhD1yD,KAAK8pE,WAAW1wE,aAAa,WAAY4G,KAAK2qD,eAAeC,MAAM3mC,EAAEF,EAAE,GAAK,KAAO/jB,KAAK2qD,eAAeC,MAAM3mC,EAAEF,EAAE,GAAK,IAAM/jB,KAAK66E,MAAQ,IAAM76E,KAAK86E,OACpJY,EAAW17E,KAAK8pE,WAAW34E,MAC3B,IAAIwqF,EAAc,cAAgB37E,KAAK2qD,eAAeC,MAAM3mC,EAAEF,EAAE,GAAK,OAAS/jB,KAAK2qD,eAAeC,MAAM3mC,EAAEF,EAAE,GAAK,MACjH23D,EAASvrC,UAAYwrC,EACrBD,EAASzC,gBAAkB0C,CAC7B,CACF,CAIA,GAFA37E,KAAKwoE,aAAanC,YAAYrmE,KAAK2kE,aAAaxG,YAAan+D,KAAKkmE,oBAE7DlmE,KAAKkmE,oBAAuBlmE,KAAKwoE,aAAatC,mBAAnD,CAIA,IAAI1+D,EACAmR,EAKA2zD,EACAC,EACAqP,EANA53B,EAAQ,EACRiiB,EAAkBjmE,KAAKwoE,aAAavC,gBACpCnE,EAAU9hE,KAAK2kE,aAAaxG,YAAYruB,EAM5C,IALAn3B,EAAMmpD,EAAQlqE,OAKT4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBs6D,EAAQt6D,GAAGsR,EACbkrC,GAAS,GAETuoB,EAAWvsE,KAAKqpE,UAAU7hE,GAC1Bo0E,EAAW57E,KAAK4yE,UAAUprE,GAC1B8kE,EAAiBrG,EAAgBjiB,GACjCA,GAAS,EAELsoB,EAAe9kC,KAAKuI,IACjB/vC,KAAK6yE,SAIRtG,EAASnzE,aAAa,YAAakzE,EAAev8B,IAHlDw8B,EAASp7E,MAAM8nF,gBAAkB3M,EAAev8B,EAChDw8B,EAASp7E,MAAMg/C,UAAYm8B,EAAev8B,IAO9Cw8B,EAASp7E,MAAM2M,QAAUwuE,EAAelkD,EAEpCkkD,EAAe1O,IAAM0O,EAAe9kC,KAAKo2B,IAC3Cge,EAASxiF,aAAa,eAAgBkzE,EAAe1O,IAGnD0O,EAAezjB,IAAMyjB,EAAe9kC,KAAKqhB,IAC3C+yB,EAASxiF,aAAa,SAAUkzE,EAAezjB,IAG7CyjB,EAAezO,IAAMyO,EAAe9kC,KAAKq2B,KAC3C+d,EAASxiF,aAAa,OAAQkzE,EAAezO,IAC7C+d,EAASzqF,MAAMozB,MAAQ+nD,EAAezO,KAK5C,GAAI79D,KAAK+3D,UAAUpqC,UAAY3tB,KAAKiqD,SAAWjqD,KAAK6nC,eAAiB7nC,KAAKwnC,MAAO,CAC/E,IAAIuT,EAAc/6C,KAAK+3D,UAAUpqC,UAcjC,GAZI3tB,KAAK0yE,YAAYjuB,IAAM1J,EAAYl9C,QACrCmC,KAAK0yE,YAAYjuB,EAAI1J,EAAYl9C,MACjCmC,KAAK8pE,WAAW1wE,aAAa,QAAS2hD,EAAYl9C,QAGhDmC,KAAK0yE,YAAY7uD,IAAMk3B,EAAYlpD,SACrCmO,KAAK0yE,YAAY7uD,EAAIk3B,EAAYlpD,OACjCmO,KAAK8pE,WAAW1wE,aAAa,SAAU2hD,EAAYlpD,SAKjDmO,KAAK0yE,YAAYjuB,IAAM1J,EAAYl9C,MAAQg+E,GAAc77E,KAAK0yE,YAAY7uD,IAAMk3B,EAAYlpD,OAASgqF,GAAc77E,KAAK0yE,YAAY/yE,IAAMo7C,EAAYp7C,EAF7I,GAE2JK,KAAK0yE,YAAY9yE,IAAMm7C,EAAYn7C,EAF9L,EAE0M,CACrNI,KAAK0yE,YAAYjuB,EAAI1J,EAAYl9C,MAAQg+E,EACzC77E,KAAK0yE,YAAY7uD,EAAIk3B,EAAYlpD,OAASgqF,EAC1C77E,KAAK0yE,YAAY/yE,EAAIo7C,EAAYp7C,EALtB,EAMXK,KAAK0yE,YAAY9yE,EAAIm7C,EAAYn7C,EANtB,EAOXI,KAAK8pE,WAAW1wE,aAAa,UAAW4G,KAAK0yE,YAAY/yE,EAAI,IAAMK,KAAK0yE,YAAY9yE,EAAI,IAAMI,KAAK0yE,YAAYjuB,EAAI,IAAMzkD,KAAK0yE,YAAY7uD,GAC1I63D,EAAW17E,KAAK8pE,WAAW34E,MAC3B,IAAI2qF,EAAe,aAAe97E,KAAK0yE,YAAY/yE,EAAI,MAAQK,KAAK0yE,YAAY9yE,EAAI,MACpF87E,EAASvrC,UAAY2rC,EACrBJ,EAASzC,gBAAkB6C,CAC7B,CACF,CA1EA,CA2EF,EA6CA/9D,gBAAgB,CAACouC,YAAaC,aAAcmJ,kBAAmBud,gBAE/DA,eAAe1xE,UAAU26E,MAAQ,WAC/B,IAAIv0E,EAEAsgB,EACAk0D,EACAtE,EAHA/+D,EAAM3Y,KAAK8nB,KAAKqrD,eAAev7E,OAKnC,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAIxB,GAAkB,QAFlBsgB,EAAO9nB,KAAK8nB,KAAKqrD,eAAe3rE,IAEvByI,KAAe,CACtB+rE,EAAmBl0D,EAAKm0D,gBAAgB9qF,MACxCumF,EAAiB5vD,EAAKv2B,UAAUJ,MAChC,IAAI+qF,EAAcl8E,KAAK+yE,GAAGhvD,EAAI,KAC1B+H,EAAS,cACTqmB,EAAS,4CACb6pC,EAAiBE,YAAcA,EAC/BF,EAAiBG,kBAAoBD,EACrCxE,EAAev1D,gBAAkB2J,EACjC4rD,EAAeC,mBAAqB7rD,EACpC4rD,EAAet1D,sBAAwB0J,EACvCkwD,EAAiB7rC,UAAYgC,EAC7B6pC,EAAiB/C,gBAAkB9mC,CACrC,CAEJ,EAEA2gC,eAAe1xE,UAAUmyE,eAAiB,WAAa,EAEvDT,eAAe1xE,UAAUg3B,KAAO,WAAa,EAE7C06C,eAAe1xE,UAAU60B,YAAc,WACrC,IACIzuB,EACAmR,EAFA6uB,EAAOxnC,KAAK6nC,cAIhB,GAAI7nC,KAAKswD,UAGP,IAFA33C,EAAM3Y,KAAKswD,UAAU14D,OAEhB4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBggC,EAAOxnC,KAAKswD,UAAU9oD,GAAGmjD,eAAeC,MAAMpjB,MAAQA,EAI1D,GAAIA,GAAQxnC,KAAK+yE,GAAGvrC,MAAQxnC,KAAKikB,GAAKjkB,KAAKikB,EAAEujB,MAAQxnC,KAAKy4C,KAAOz4C,KAAKy4C,GAAGjR,MAAQxnC,KAAK04C,GAAGlR,MAAQxnC,KAAK24C,GAAGnR,OAASxnC,KAAK44C,GAAGpR,MAAQxnC,KAAK64C,GAAGrR,MAAQxnC,KAAK84C,GAAGtR,MAAQxnC,KAAKmtC,GAAG3F,MAAQxnC,KAAKgO,GAAKhO,KAAKgO,EAAEw5B,KAAM,CAGvM,GAFAxnC,KAAKi5C,IAAIjN,QAELhsC,KAAKswD,UAGP,IAAK9oD,EAFLmR,EAAM3Y,KAAKswD,UAAU14D,OAAS,EAEhB4P,GAAK,EAAGA,GAAK,EAAG,CAC5B,IAAI40E,EAAUp8E,KAAKswD,UAAU9oD,GAAGmjD,eAAeC,MAC/C5qD,KAAKi5C,IAAIjJ,WAAWosC,EAAQn4D,EAAEF,EAAE,IAAKq4D,EAAQn4D,EAAEF,EAAE,GAAIq4D,EAAQn4D,EAAEF,EAAE,IACjE/jB,KAAKi5C,IAAI7J,SAASgtC,EAAQjvC,GAAGppB,EAAE,IAAIsrB,SAAS+sC,EAAQjvC,GAAGppB,EAAE,IAAIurB,QAAQ8sC,EAAQjvC,GAAGppB,EAAE,IAClF/jB,KAAKi5C,IAAI7J,SAASgtC,EAAQxjC,GAAG70B,GAAGsrB,SAAS+sC,EAAQvjC,GAAG90B,GAAGurB,QAAQ8sC,EAAQtjC,GAAG/0B,GAC1E/jB,KAAKi5C,IAAItJ,MAAM,EAAIysC,EAAQt4D,EAAEC,EAAE,GAAI,EAAIq4D,EAAQt4D,EAAEC,EAAE,GAAI,EAAIq4D,EAAQt4D,EAAEC,EAAE,IACvE/jB,KAAKi5C,IAAIjJ,UAAUosC,EAAQpuE,EAAE+V,EAAE,GAAIq4D,EAAQpuE,EAAE+V,EAAE,GAAIq4D,EAAQpuE,EAAE+V,EAAE,GACjE,CASF,GANI/jB,KAAKikB,EACPjkB,KAAKi5C,IAAIjJ,WAAWhwC,KAAKikB,EAAEF,EAAE,IAAK/jB,KAAKikB,EAAEF,EAAE,GAAI/jB,KAAKikB,EAAEF,EAAE,IAExD/jB,KAAKi5C,IAAIjJ,WAAWhwC,KAAKy4C,GAAG10B,GAAI/jB,KAAK04C,GAAG30B,EAAG/jB,KAAK24C,GAAG50B,GAGjD/jB,KAAKgO,EAAG,CACV,IAAIquE,EAGFA,EADEr8E,KAAKikB,EACM,CAACjkB,KAAKikB,EAAEF,EAAE,GAAK/jB,KAAKgO,EAAE+V,EAAE,GAAI/jB,KAAKikB,EAAEF,EAAE,GAAK/jB,KAAKgO,EAAE+V,EAAE,GAAI/jB,KAAKikB,EAAEF,EAAE,GAAK/jB,KAAKgO,EAAE+V,EAAE,IAE9E,CAAC/jB,KAAKy4C,GAAG10B,EAAI/jB,KAAKgO,EAAE+V,EAAE,GAAI/jB,KAAK04C,GAAG30B,EAAI/jB,KAAKgO,EAAE+V,EAAE,GAAI/jB,KAAK24C,GAAG50B,EAAI/jB,KAAKgO,EAAE+V,EAAE,IAGvF,IAAIu4D,EAAMlgF,KAAK8kB,KAAK9kB,KAAK4kB,IAAIq7D,EAAW,GAAI,GAAKjgF,KAAK4kB,IAAIq7D,EAAW,GAAI,GAAKjgF,KAAK4kB,IAAIq7D,EAAW,GAAI,IAElGE,EAAU,CAACF,EAAW,GAAKC,EAAKD,EAAW,GAAKC,EAAKD,EAAW,GAAKC,GACrEE,EAAiBpgF,KAAK8kB,KAAKq7D,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,GAAKA,EAAQ,IAC1EE,EAAargF,KAAKiqC,MAAMk2C,EAAQ,GAAIC,GACpCE,EAAatgF,KAAKiqC,MAAMk2C,EAAQ,IAAKA,EAAQ,IACjDv8E,KAAKi5C,IAAI5J,QAAQqtC,GAAYttC,SAASqtC,EACxC,CAEAz8E,KAAKi5C,IAAI7J,SAASpvC,KAAK44C,GAAG70B,GAAGsrB,SAASrvC,KAAK64C,GAAG90B,GAAGurB,QAAQtvC,KAAK84C,GAAG/0B,GACjE/jB,KAAKi5C,IAAI7J,SAASpvC,KAAKmtC,GAAGppB,EAAE,IAAIsrB,SAASrvC,KAAKmtC,GAAGppB,EAAE,IAAIurB,QAAQtvC,KAAKmtC,GAAGppB,EAAE,IACzE/jB,KAAKi5C,IAAIjJ,UAAUhwC,KAAKszB,WAAWy9B,SAAStM,EAAI,EAAGzkD,KAAKszB,WAAWy9B,SAASltC,EAAI,EAAG,GACnF7jB,KAAKi5C,IAAIjJ,UAAU,EAAG,EAAGhwC,KAAK+yE,GAAGhvD,GACjC,IAAI44D,GAAoB38E,KAAKgzE,SAASzgC,OAAOvyC,KAAKi5C,KAElD,IAAK0jC,GAAoB38E,KAAK+yE,GAAGvrC,OAASxnC,KAAK8nB,KAAKqrD,eAAgB,CAElE,IAAIrrD,EACAk0D,EACAtE,EAEJ,IALA/+D,EAAM3Y,KAAK8nB,KAAKqrD,eAAev7E,OAK1B4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAGxB,GAAkB,QAFlBsgB,EAAO9nB,KAAK8nB,KAAKqrD,eAAe3rE,IAEvByI,KAAe,CACtB,GAAI0sE,EAAkB,CACpB,IAAIC,EAAW58E,KAAKi5C,IAAIpF,SACxB6jC,EAAiB5vD,EAAKv2B,UAAUJ,OACjBg/C,UAAYysC,EAC3BlF,EAAeuB,gBAAkB2D,CACnC,CAEI58E,KAAK+yE,GAAGvrC,QACVw0C,EAAmBl0D,EAAKm0D,gBAAgB9qF,OACvB+qF,YAAcl8E,KAAK+yE,GAAGhvD,EAAI,KAC3Ci4D,EAAiBG,kBAAoBn8E,KAAK+yE,GAAGhvD,EAAI,KAErD,CAGF/jB,KAAKi5C,IAAIzO,MAAMxqC,KAAKgzE,SACtB,CACF,CAEAhzE,KAAK6nC,eAAgB,CACvB,EAEAirC,eAAe1xE,UAAU4vB,aAAe,SAAUw5B,GAChDxqD,KAAK2uD,kBAAkBnE,GAAK,EAC9B,EAEAsoB,eAAe1xE,UAAUutB,QAAU,WAAa,EAEhDmkD,eAAe1xE,UAAU0tD,eAAiB,WACxC,OAAO,IACT,EAOA/wC,gBAAgB,CAACouC,YAAa+E,iBAAkBohB,aAAcC,cAAehd,iBAAkBnJ,aAAcxC,mBAAoBqpB,eAEjIA,cAAc7xE,UAAUy2D,cAAgB,WACtC,IAAIz4C,EAAYpf,KAAKszB,WAAWrG,cAAcjtB,KAAKktB,WAC/CM,EAAM,IAAIqvD,MAEV78E,KAAKsQ,KAAK8W,SACZpnB,KAAK88E,UAAYt3D,SAAS,SAC1BxlB,KAAK88E,UAAU1jF,aAAa,QAAS4G,KAAKktB,UAAUu3B,EAAI,MACxDzkD,KAAK88E,UAAU1jF,aAAa,SAAU4G,KAAKktB,UAAUrJ,EAAI,MACzD7jB,KAAK88E,UAAU9tD,eAAe,+BAAgC,OAAQ5P,GACtEpf,KAAKuuD,aAAap7C,YAAYnT,KAAK88E,WACnC98E,KAAKsuD,YAAYl1D,aAAa,QAAS4G,KAAKktB,UAAUu3B,GACtDzkD,KAAKsuD,YAAYl1D,aAAa,SAAU4G,KAAKktB,UAAUrJ,IAEvD7jB,KAAKuuD,aAAap7C,YAAYqa,GAGhCA,EAAIsB,YAAc,YAClBtB,EAAIpa,IAAMgM,EAENpf,KAAKsQ,KAAKkmD,IACZx2D,KAAKsuD,YAAYl1D,aAAa,KAAM4G,KAAKsQ,KAAKkmD,GAElD,EA+BAz4C,gBAAgB,CAACkvC,cAAeimB,oBAChCA,mBAAmB9xE,UAAUiuD,UAAYua,YAAYxoE,UAAUiuD,UAE/D6jB,mBAAmB9xE,UAAUkuD,qBAAuB,WAClD,KAAOtvD,KAAK0wD,gBAAgB94D,QACZoI,KAAK0wD,gBAAgBpZ,MAC3BsgB,gBAEZ,EAEAsb,mBAAmB9xE,UAAUqrE,mBAAqB,SAAUvqD,EAAS9L,GACnE,IAAI2mE,EAAgB76D,EAAQ4sC,iBAE5B,GAAKiuB,EAAL,CAIA,IAAIvtB,EAAQxvD,KAAK6mB,OAAOzQ,GAExB,GAAKo5C,EAAMwtB,KAAQh9E,KAAK2pE,WA4BtB3pE,KAAKi9E,iBAAiBF,EAAe3mE,QA3BrC,GAAIpW,KAAKmzE,eACPnzE,KAAKi9E,iBAAiBF,EAAe3mE,OAChC,CAML,IALA,IACI8mE,EACAC,EAFA31E,EAAI,EAKDA,EAAI4O,GACLpW,KAAKohD,SAAS55C,KAA2B,IAArBxH,KAAKohD,SAAS55C,IAAexH,KAAKohD,SAAS55C,GAAGsnD,iBACpEquB,EAAYn9E,KAAKohD,SAAS55C,GAE1B01E,GADgBl9E,KAAK6mB,OAAOrf,GAAGw1E,IAAMh9E,KAAKo9E,wBAAwB51E,GAAK21E,EAAUruB,mBAC/CouB,GAGpC11E,GAAK,EAGH01E,EACG1tB,EAAMwtB,KAAQh9E,KAAK2pE,YACtB3pE,KAAKuuD,aAAaue,aAAaiQ,EAAeG,GAEtC1tB,EAAMwtB,KAAQh9E,KAAK2pE,YAC7B3pE,KAAKuuD,aAAap7C,YAAY4pE,EAElC,CA9BF,CAkCF,EAEA7J,mBAAmB9xE,UAAUyuD,YAAc,SAAUv/C,GACnD,OAAKtQ,KAAK2pE,WAIH,IAAI6I,cAAcliE,EAAMtQ,KAAKszB,WAAYtzB,MAHvC,IAAIw9D,gBAAgBltD,EAAMtQ,KAAKszB,WAAYtzB,KAItD,EAEAkzE,mBAAmB9xE,UAAU0uD,WAAa,SAAUx/C,GAClD,OAAKtQ,KAAK2pE,WAIH,IAAIgJ,aAAariE,EAAMtQ,KAAKszB,WAAYtzB,MAHtC,IAAIopE,qBAAqB94D,EAAMtQ,KAAKszB,WAAYtzB,KAI3D,EAEAkzE,mBAAmB9xE,UAAU2uD,aAAe,SAAUz/C,GAEpD,OADAtQ,KAAKozE,OAAS,IAAIN,eAAexiE,EAAMtQ,KAAKszB,WAAYtzB,MACjDA,KAAKozE,MACd,EAEAF,mBAAmB9xE,UAAUquD,YAAc,SAAUn/C,GACnD,OAAKtQ,KAAK2pE,WAIH,IAAIsJ,cAAc3iE,EAAMtQ,KAAKszB,WAAYtzB,MAHvC,IAAIy1D,cAAcnlD,EAAMtQ,KAAKszB,WAAYtzB,KAIpD,EAEAkzE,mBAAmB9xE,UAAUuuD,YAAc,SAAUr/C,GACnD,OAAKtQ,KAAK2pE,WAIH,IAAI4I,cAAcjiE,EAAMtQ,KAAKszB,WAAYtzB,MAHvC,IAAIspE,cAAch5D,EAAMtQ,KAAKszB,WAAYtzB,KAIpD,EAEAkzE,mBAAmB9xE,UAAUwuD,WAAaga,YAAYxoE,UAAUwuD,WAEhEsjB,mBAAmB9xE,UAAUg8E,wBAA0B,SAAUhnE,GAI/D,IAHA,IAAI5O,EAAI,EACJmR,EAAM3Y,KAAKmzE,eAAev7E,OAEvB4P,EAAImR,GAAK,CACd,GAAI3Y,KAAKmzE,eAAe3rE,GAAG61E,UAAYjnE,GAAOpW,KAAKmzE,eAAe3rE,GAAG81E,QAAUlnE,EAC7E,OAAOpW,KAAKmzE,eAAe3rE,GAAGy0E,gBAGhCz0E,GAAK,CACP,CAEA,OAAO,IACT,EAEA0rE,mBAAmB9xE,UAAUm8E,sBAAwB,SAAUnnE,EAAKnG,GAClE,IACI9e,EACAumF,EAFAuE,EAAkBn+D,UAAU,OAGhCmE,SAASg6D,GACT,IAAI1qF,EAAYusB,UAAU,OAG1B,GAFAmE,SAAS1wB,GAEI,OAAT0e,EAAe,EACjB9e,EAAQ8qF,EAAgB9qF,OAClB0M,MAAQmC,KAAKszB,WAAWy9B,SAAStM,EAAI,KAC3CtzD,EAAMU,OAASmO,KAAKszB,WAAWy9B,SAASltC,EAAI,KAC5C,IAAIi7B,EAAS,UACb3tD,EAAMixB,sBAAwB08B,EAC9B3tD,EAAMwmF,mBAAqB74B,EAC3B3tD,EAAMgxB,gBAAkB28B,EAExB,IAAI3M,EAAS,6CADbulC,EAAiBnmF,EAAUJ,OAEZg/C,UAAYgC,EAC3BulC,EAAeuB,gBAAkB9mC,CACnC,CAEA8pC,EAAgB9oE,YAAY5hB,GAE5B,IAAIisF,EAAsB,CACxBjsF,UAAWA,EACX0qF,gBAAiBA,EACjBoB,SAAUjnE,EACVknE,OAAQlnE,EACRnG,KAAMA,GAGR,OADAjQ,KAAKmzE,eAAe9zE,KAAKm+E,GAClBA,CACT,EAEAtK,mBAAmB9xE,UAAUq8E,kBAAoB,WAC/C,IAAIj2E,EAEAk2E,EADA/kE,EAAM3Y,KAAK6mB,OAAOjvB,OAElB+lF,EAAmB,GAEvB,IAAKn2E,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBxH,KAAK6mB,OAAOrf,GAAGw1E,KAA6B,IAAtBh9E,KAAK6mB,OAAOrf,GAAGigB,IACd,OAArBk2D,IACFA,EAAmB,KACnBD,EAA0B19E,KAAKu9E,sBAAsB/1E,EAAG,OAG1Dk2E,EAAwBJ,OAASlhF,KAAK6a,IAAIymE,EAAwBJ,OAAQ91E,KAEjD,OAArBm2E,IACFA,EAAmB,KACnBD,EAA0B19E,KAAKu9E,sBAAsB/1E,EAAG,OAG1Dk2E,EAAwBJ,OAASlhF,KAAK6a,IAAIymE,EAAwBJ,OAAQ91E,IAM9E,IAAKA,GAFLmR,EAAM3Y,KAAKmzE,eAAev7E,QAEX,EAAG4P,GAAK,EAAGA,GAAK,EAC7BxH,KAAK49E,YAAYzqE,YAAYnT,KAAKmzE,eAAe3rE,GAAGy0E,gBAExD,EAEA/I,mBAAmB9xE,UAAU67E,iBAAmB,SAAU9jD,EAAM/iB,GAI9D,IAHA,IAAI5O,EAAI,EACJmR,EAAM3Y,KAAKmzE,eAAev7E,OAEvB4P,EAAImR,GAAK,CACd,GAAIvC,GAAOpW,KAAKmzE,eAAe3rE,GAAG81E,OAAQ,CAIxC,IAHA,IACIzQ,EADA7lD,EAAIhnB,KAAKmzE,eAAe3rE,GAAG61E,SAGxBr2D,EAAI5Q,GACLpW,KAAKohD,SAASp6B,IAAMhnB,KAAKohD,SAASp6B,GAAG8nC,iBACvC+d,EAAc7sE,KAAKohD,SAASp6B,GAAG8nC,kBAGjC9nC,GAAK,EAGH6lD,EACF7sE,KAAKmzE,eAAe3rE,GAAGjW,UAAUu7E,aAAa3zC,EAAM0zC,GAEpD7sE,KAAKmzE,eAAe3rE,GAAGjW,UAAU4hB,YAAYgmB,GAG/C,KACF,CAEA3xB,GAAK,CACP,CACF,EAEA0rE,mBAAmB9xE,UAAUwxB,gBAAkB,SAAUuC,GACvD,IAAIyoD,EAAc9/D,UAAU,OACxBoV,EAAUlzB,KAAK8wD,cAAc59B,QAC7B/hC,EAAQysF,EAAYzsF,MACxBA,EAAM0M,MAAQs3B,EAASsvB,EAAI,KAC3BtzD,EAAMU,OAASsjC,EAAStR,EAAI,KAC5B7jB,KAAK49E,YAAcA,EACnB37D,SAAS27D,GACTzsF,EAAMoxB,eAAiB,OACvBpxB,EAAMsxB,kBAAoB,OAC1BtxB,EAAMqxB,qBAAuB,OAEzBxiB,KAAK6qD,aAAalyD,WACpBilF,EAAYxkF,aAAa,QAAS4G,KAAK6qD,aAAalyD,WAGtDu6B,EAAQ/f,YAAYyqE,GACpBzsF,EAAMkK,SAAW,SACjB,IAAIqyE,EAAMloD,SAAS,OACnBkoD,EAAIt0E,aAAa,QAAS,KAC1Bs0E,EAAIt0E,aAAa,SAAU,KAC3B6oB,SAASyrD,GACT1tE,KAAK49E,YAAYzqE,YAAYu6D,GAC7B,IAAIn6C,EAAO/N,SAAS,QACpBkoD,EAAIv6D,YAAYogB,GAChBvzB,KAAKsQ,KAAO6kB,EAEZn1B,KAAK4wD,gBAAgBz7B,EAAUu4C,GAC/B1tE,KAAKszB,WAAWC,KAAOA,EACvBvzB,KAAK6mB,OAASsO,EAAStO,OACvB7mB,KAAKuuD,aAAevuD,KAAK49E,YACzB59E,KAAKy9E,oBACLz9E,KAAK+1B,qBACP,EAEAm9C,mBAAmB9xE,UAAUutB,QAAU,WAOrC,IAAInnB,EANAxH,KAAK8wD,cAAc59B,UACrBlzB,KAAK8wD,cAAc59B,QAAQ4G,UAAY,IAGzC95B,KAAK8wD,cAAcv/D,UAAY,KAC/ByO,KAAKszB,WAAWC,KAAO,KAEvB,IAAI5a,EAAM3Y,KAAK6mB,OAAS7mB,KAAK6mB,OAAOjvB,OAAS,EAE7C,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACpBxH,KAAKohD,SAAS55C,IAAMxH,KAAKohD,SAAS55C,GAAGmnB,SACvC3uB,KAAKohD,SAAS55C,GAAGmnB,UAIrB3uB,KAAKohD,SAASxpD,OAAS,EACvBoI,KAAK4qE,WAAY,EACjB5qE,KAAK8wD,cAAgB,IACvB,EAEAoiB,mBAAmB9xE,UAAU20B,oBAAsB,WACjD,IAIIyZ,EACA3C,EACAoD,EACAxoB,EAPAqwD,EAAe93E,KAAK8wD,cAAc59B,QAAQoyB,YAC1CyyB,EAAgB/3E,KAAK8wD,cAAc59B,QAAQp/B,aAC3CkkF,EAAaF,EAAeC,EACb/3E,KAAKszB,WAAWy9B,SAAStM,EAAIzkD,KAAKszB,WAAWy9B,SAASltC,EAMtDm0D,GACjBxoC,EAAKsoC,EAAe93E,KAAKszB,WAAWy9B,SAAStM,EAC7C5X,EAAKirC,EAAe93E,KAAKszB,WAAWy9B,SAAStM,EAC7CxU,EAAK,EACLxoB,GAAMswD,EAAgB/3E,KAAKszB,WAAWy9B,SAASltC,GAAKi0D,EAAe93E,KAAKszB,WAAWy9B,SAAStM,IAAM,IAElGjV,EAAKuoC,EAAgB/3E,KAAKszB,WAAWy9B,SAASltC,EAC9CgpB,EAAKkrC,EAAgB/3E,KAAKszB,WAAWy9B,SAASltC,EAC9CosB,GAAM6nC,EAAe93E,KAAKszB,WAAWy9B,SAAStM,GAAKszB,EAAgB/3E,KAAKszB,WAAWy9B,SAASltC,IAAM,EAClG4D,EAAK,GAGP,IAAIt2B,EAAQ6O,KAAK49E,YAAYzsF,MAC7BA,EAAM8nF,gBAAkB,YAAczpC,EAAK,YAAc3C,EAAK,gBAAkBoD,EAAK,IAAMxoB,EAAK,QAChGt2B,EAAMg/C,UAAYh/C,EAAM8nF,eAC1B,EAEA/F,mBAAmB9xE,UAAU60B,YAAc2zC,YAAYxoE,UAAU60B,YAEjEi9C,mBAAmB9xE,UAAUg3B,KAAO,WAClCp4B,KAAK49E,YAAYzsF,MAAMC,QAAU,MACnC,EAEA8hF,mBAAmB9xE,UAAUi3B,KAAO,WAClCr4B,KAAK49E,YAAYzsF,MAAMC,QAAU,OACnC,EAEA8hF,mBAAmB9xE,UAAUs0B,UAAY,WAGvC,GAFA11B,KAAKiwD,gBAEDjwD,KAAKozE,OACPpzE,KAAKozE,OAAO2I,YACP,CACL,IAEIv0E,EAFAq2E,EAAS79E,KAAKszB,WAAWy9B,SAAStM,EAClCq5B,EAAU99E,KAAKszB,WAAWy9B,SAASltC,EAEnClL,EAAM3Y,KAAKmzE,eAAev7E,OAE9B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAAG,CAC3B,IAAIrW,EAAQ6O,KAAKmzE,eAAe3rE,GAAGy0E,gBAAgB9qF,MACnDA,EAAMgrF,kBAAoB//E,KAAK8kB,KAAK9kB,KAAK4kB,IAAI68D,EAAQ,GAAKzhF,KAAK4kB,IAAI88D,EAAS,IAAM,KAClF3sF,EAAM+qF,YAAc/qF,EAAMgrF,iBAC5B,CACF,CACF,EAEAjJ,mBAAmB9xE,UAAUi0B,wBAA0B,SAAUtM,GAC/D,IAAIvhB,EACAmR,EAAMoQ,EAAOnxB,OACbmmF,EAAoBjgE,UAAU,OAElC,IAAKtW,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,GAAIuhB,EAAOvhB,GAAGypB,GAAI,CAChB,IAAInJ,EAAO9nB,KAAK0vD,WAAW3mC,EAAOvhB,GAAIu2E,EAAmB/9E,KAAKszB,WAAWxL,KAAM,MAC/EA,EAAK4M,kBACL10B,KAAKszB,WAAWb,iBAAiB7B,oBAAoB9I,EACvD,CAEJ,EAcA/J,gBAAgB,CAACm1D,mBAAoBzJ,aAAc6I,cAAee,cAClEA,aAAajyE,UAAU48E,6BAA+B3K,aAAajyE,UAAU20D,wBAE7Esd,aAAajyE,UAAU20D,wBAA0B,WAC/C/1D,KAAKg+E,+BAGDh+E,KAAKsQ,KAAK8W,SACZpnB,KAAK8pE,WAAW1wE,aAAa,QAAS4G,KAAKsQ,KAAKm0C,GAChDzkD,KAAK8pE,WAAW1wE,aAAa,SAAU4G,KAAKsQ,KAAKuT,GACjD7jB,KAAKi2D,mBAAqBj2D,KAAKsuD,aAE/BtuD,KAAKi2D,mBAAqBj2D,KAAKuuD,YAEnC,EAEA8kB,aAAajyE,UAAU67E,iBAAmB,SAAU9jD,EAAM/iB,GAIxD,IAHA,IACIy2D,EADA7lD,EAAI,EAGDA,EAAI5Q,GACLpW,KAAKohD,SAASp6B,IAAMhnB,KAAKohD,SAASp6B,GAAG8nC,iBACvC+d,EAAc7sE,KAAKohD,SAASp6B,GAAG8nC,kBAGjC9nC,GAAK,EAGH6lD,EACF7sE,KAAKuuD,aAAaue,aAAa3zC,EAAM0zC,GAErC7sE,KAAKuuD,aAAap7C,YAAYgmB,EAElC,EAEAk6C,aAAajyE,UAAUsuD,WAAa,SAAUp/C,GAC5C,OAAKtQ,KAAK2pE,WAIH,IAAI0J,aAAa/iE,EAAMtQ,KAAKszB,WAAYtzB,MAHtC,IAAI0pE,eAAep5D,EAAMtQ,KAAKszB,WAAYtzB,KAIrD,EAgCA+d,gBAAgB,CAACm1D,oBAAqBI,gBAEtCA,eAAelyE,UAAUsuD,WAAa,SAAUp/C,GAC9C,OAAKtQ,KAAK2pE,WAIH,IAAI0J,aAAa/iE,EAAMtQ,KAAKszB,WAAYtzB,MAHtC,IAAI0pE,eAAep5D,EAAMtQ,KAAKszB,WAAYtzB,KAIrD,EAEA,IAAIwtD,wBACK,SAAU1lC,GACf,SAASm2D,EAAmBj0E,GAI1B,IAHA,IAAIxC,EAAI,EACJmR,EAAMmP,EAAKjB,OAAOjvB,OAEf4P,EAAImR,GAAK,CACd,GAAImP,EAAKjB,OAAOrf,GAAGupB,KAAO/mB,GAAQ8d,EAAKjB,OAAOrf,GAAGq8B,MAAQ75B,EACvD,OAAO8d,EAAKs5B,SAAS55C,GAAGimD,eAG1BjmD,GAAK,CACP,CAEA,OAAO,IACT,CAaA,OAXAT,OAAOO,eAAe22E,EAAoB,QAAS,CACjDhqF,MAAO6zB,EAAKxX,KAAKygB,KAEnBktD,EAAmBzuB,MAAQyuB,EAC3BA,EAAmBC,YAAc,EACjCD,EAAmBpsF,OAASi2B,EAAKxX,KAAKuT,GAAKiE,EAAKwL,WAAWy9B,SAASltC,EACpEo6D,EAAmBpgF,MAAQiqB,EAAKxX,KAAKm0C,GAAK38B,EAAKwL,WAAWy9B,SAAStM,EACnEw5B,EAAmBC,YAAc,EACjCD,EAAmBE,cAAgB,EAAIr2D,EAAKwL,WAAW1B,UACvDqsD,EAAmBG,iBAAmB,EACtCH,EAAmBI,UAAYv2D,EAAKjB,OAAOjvB,OACpCqmF,CACT,EAGF,SAASK,UAAU99D,GAAuV,OAA1O89D,UAArD,mBAAXj0E,QAAoD,iBAApBA,OAAOjI,SAAqC,SAAiBoe,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAY89D,UAAU99D,EAAM,CA2BjY,SAAS+9D,WAAWphD,EAAMS,GAIxB,IAaI4gD,EAbAj0E,EAASvK,KACTnC,EAAQ,IAMZ4gF,EAAU,SAEVC,EAAa9gD,EAAK5c,IAAInjB,EANb,GAOL8gF,EAAe/gD,EAAK5c,IAAI,EALnB,IAML3lB,EAA0B,EAAfsjF,EACXvsB,EAAOv0D,IA6FX,SAAS+gF,EAAKjjF,GACZ,IAAIwoB,EACA06D,EAASljF,EAAI/D,OACbknF,EAAK9+E,KACLwH,EAAI,EACJwf,EAAI83D,EAAGt3E,EAAIs3E,EAAG93D,EAAI,EAClBlD,EAAIg7D,EAAGntE,EAAI,GAOf,IALKktE,IACHljF,EAAM,CAACkjF,MAIFr3E,EAAI3J,GACTimB,EAAEtc,GAAKA,IAGT,IAAKA,EAAI,EAAGA,EAAI3J,EAAO2J,IACrBsc,EAAEtc,GAAKsc,EAAEkD,EAAIorC,EAAOprC,EAAIrrB,EAAI6L,EAAIq3E,IAAW16D,EAAIL,EAAEtc,KACjDsc,EAAEkD,GAAK7C,EAIT26D,EAAGtwE,EAAI,SAAUw1C,GAQf,IANA,IAAI7/B,EACAH,EAAI,EACJxc,EAAIs3E,EAAGt3E,EACPwf,EAAI83D,EAAG93D,EACPlD,EAAIg7D,EAAGntE,EAEJqyC,KACL7/B,EAAIL,EAAEtc,EAAI4qD,EAAO5qD,EAAI,GACrBwc,EAAIA,EAAInmB,EAAQimB,EAAEsuC,GAAQtuC,EAAEtc,GAAKsc,EAAEkD,EAAIorC,EAAOprC,EAAI7C,KAAOL,EAAEkD,GAAK7C,IAKlE,OAFA26D,EAAGt3E,EAAIA,EACPs3E,EAAG93D,EAAIA,EACAhD,CAGT,CACF,CAMA,SAAS+6D,EAAK19E,EAAG8iB,GAIf,OAHAA,EAAE3c,EAAInG,EAAEmG,EACR2c,EAAE6C,EAAI3lB,EAAE2lB,EACR7C,EAAExS,EAAItQ,EAAEsQ,EAAEnL,QACH2d,CACT,CAMA,SAAS66D,EAAQx+D,EAAK66B,GACpB,IAEIh9B,EAFAnc,EAAS,GACT+8E,EAAMX,UAAU99D,GAGpB,GAAI66B,GAAgB,UAAP4jC,EACX,IAAK5gE,KAAQmC,EACX,IACEte,EAAO7C,KAAK2/E,EAAQx+D,EAAInC,GAAOg9B,EAAQ,GACzC,CAAE,MAAO9iD,GAAI,CAIjB,OAAO2J,EAAOtK,OAASsK,EAAgB,UAAP+8E,EAAkBz+D,EAAMA,EAAM,IAChE,CAOA,SAAS0+D,EAAOC,EAAMxjF,GAKpB,IAJA,IACIyjF,EADAC,EAAaF,EAAO,GAEpBn4D,EAAI,EAEDA,EAAIq4D,EAAWznF,QACpB+D,EAAIy2D,EAAOprC,GAAKorC,GAAQgtB,GAAyB,GAAhBzjF,EAAIy2D,EAAOprC,IAAWq4D,EAAW5oE,WAAWuQ,KAG/E,OAAOs4D,EAAS3jF,EAClB,CA2BA,SAAS2jF,EAAStxE,GAChB,OAAOnN,OAAO0qE,aAAarzE,MAAM,EAAG8V,EACtC,CAlIA4vB,EAAK,OAAS6gD,GA3Ed,SAAoBU,EAAM9xE,EAASjY,GACjC,IAAIuG,EAAM,GAKN4jF,EAAYL,EAAOF,GAJvB3xE,GAAsB,IAAZA,EAAmB,CAC3BmyE,SAAS,GACPnyE,GAAW,CAAC,GAEuBmyE,QAAU,CAACL,EAAMG,EAASniD,IAAkB,OAATgiD,EAiL5E,WACE,IACMX,EAIJ,IAAIp5C,EAAM,IAAIq6C,WAAW5hF,GAEzB,OADC0M,EAAOm1E,QAAUn1E,EAAOo1E,UAAUC,gBAAgBx6C,GAC5Ck6C,EAASl6C,EAClB,CAAE,MAAO7sC,GACP,IAAIsnF,EAAUt1E,EAAO6S,UACjB0iE,EAAUD,GAAWA,EAAQC,QACjC,MAAO,EAAE,IAAIvtF,KAAQgY,EAAQu1E,EAASv1E,EAAOw1E,OAAQT,EAASniD,GAChE,CACF,CA/L4F6iD,GAAab,EAAM,GAAIxjF,GAE7GskF,EAAO,IAAIrB,EAAKjjF,GAGhBukF,EAAO,WAOT,IANA,IAAIpnE,EAAImnE,EAAKzxE,EA5BR,GA8BL6V,EAAIq6D,EAEJ/+E,EAAI,EAEGmZ,EAAI6lE,GAET7lE,GAAKA,EAAInZ,GAAK9B,EAEdwmB,GAAKxmB,EAEL8B,EAAIsgF,EAAKzxE,EAAE,GAGb,KAAOsK,GAAKzd,GAEVyd,GAAK,EAELuL,GAAK,EAEL1kB,KAAO,EAGT,OAAQmZ,EAAInZ,GAAK0kB,CACnB,EAcA,OAZA67D,EAAKC,MAAQ,WACX,OAAmB,EAAZF,EAAKzxE,EAAE,EAChB,EAEA0xE,EAAKE,MAAQ,WACX,OAAOH,EAAKzxE,EAAE,GAAK,UACrB,EAEA0xE,EAAa,OAAIA,EAEjBhB,EAAOI,EAASW,EAAKtuE,GAAIwrB,IAEjB9vB,EAAQgzE,MAAQjrF,GAAY,SAAU8qF,EAAMf,EAAMmB,EAAc9wE,GAetE,OAdIA,IAEEA,EAAMmC,GACRotE,EAAKvvE,EAAOywE,GAIdC,EAAK1wE,MAAQ,WACX,OAAOuvE,EAAKkB,EAAM,CAAC,EACrB,GAKEK,GACF1iD,EAAK6gD,GAAWyB,EACTf,GAGGe,CACd,GAAGA,EAAMX,EAAW,WAAYlyE,EAAUA,EAAQ9C,OAASvK,MAAQ49B,EAAMvwB,EAAQmC,MACnF,EA6IA0vE,EAAOthD,EAAK/lB,SAAUslB,EAKxB,CAIA,SAASojD,aAAaj/D,GACpBi9D,WAAW,GAAIj9D,EACjB,CAEA,IAAIk/D,UAAY,CACdC,MAAO,SAGT,SAASC,UAAUlgE,GAAuV,OAA1OkgE,UAArD,mBAAXr2E,QAAoD,iBAApBA,OAAOjI,SAAqC,SAAiBoe,GAAO,cAAcA,CAAK,EAAwB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYkgE,UAAUlgE,EAAM,CAEjY,IAAImgE,kBAAoB,WAGtB,IAAI5yD,GAAK,CAAC,EACN3xB,KAAOklB,OACP7tB,OAAS,KACT1C,SAAW,KACXg6B,eAAiB,KACjB61D,MAAQ,KACRC,OAAS,KACTC,cAAgB,CAAC,EAGrB,SAAS5qD,aACP4qD,cAAgB,CAAC,CACnB,CAEA,SAASC,sBAAsB7gE,GAC7B,OAAOA,EAAIjb,cAAgBnN,OAASooB,EAAIjb,cAAgBmb,YAC1D,CAEA,SAAS4gE,YAAYC,EAAMl9D,GACzB,MAAgB,WAATk9D,GAAqBl9D,aAAa6S,QAAmB,YAATqqD,GAA+B,WAATA,CAC3E,CAEA,SAASC,QAAQlzE,GACf,IAAImzE,EAAOT,UAAU1yE,GAErB,GAAa,WAATmzE,GAAqBnzE,aAAa4oB,QAAmB,YAATuqD,EAC9C,OAAQnzE,EAGV,GAAI+yE,sBAAsB/yE,GAAI,CAC5B,IAAIxG,EACA45E,EAAOpzE,EAAEpW,OACTypF,EAAS,GAEb,IAAK75E,EAAI,EAAGA,EAAI45E,EAAM55E,GAAK,EACzB65E,EAAO75E,IAAMwG,EAAExG,GAGjB,OAAO65E,CACT,CAEA,OAAIrzE,EAAE80B,SACG90B,EAAE+V,GAGH/V,CACV,CAtCAuyE,aAAaj/D,QAwCb,IAAIggE,UAAYlnD,cAAc2J,gBAAgB,KAAO,EAAG,KAAO,KAAO,UAAUz5B,IAC5Ei3E,WAAannD,cAAc2J,gBAAgB,KAAO,KAAO,KAAO,EAAG,WAAWz5B,IAC9Ek3E,aAAepnD,cAAc2J,gBAAgB,IAAM,EAAG,KAAO,EAAG,aAAaz5B,IAEjF,SAASg9C,IAAIt5C,EAAGC,GACd,IAAIkzE,EAAOT,UAAU1yE,GAEjByzE,EAAOf,UAAUzyE,GAErB,GAAI+yE,YAAYG,EAAMnzE,IAAMgzE,YAAYS,EAAMxzE,IAAe,WAATkzE,GAA8B,WAATM,EACvE,OAAOzzE,EAAIC,EAGb,GAAI8yE,sBAAsB/yE,IAAMgzE,YAAYS,EAAMxzE,GAGhD,OAFAD,EAAIA,EAAExH,MAAM,IACV,IAAMyH,EACDD,EAGT,GAAIgzE,YAAYG,EAAMnzE,IAAM+yE,sBAAsB9yE,GAGhD,OAFAA,EAAIA,EAAEzH,MAAM,IACV,GAAKwH,EAAIC,EAAE,GACNA,EAGT,GAAI8yE,sBAAsB/yE,IAAM+yE,sBAAsB9yE,GAAI,CAMxD,IALA,IAAIzG,EAAI,EACJ45E,EAAOpzE,EAAEpW,OACT8pF,EAAOzzE,EAAErW,OACTypF,EAAS,GAEN75E,EAAI45E,GAAQ55E,EAAIk6E,IACA,iBAAT1zE,EAAExG,IAAmBwG,EAAExG,aAAcovB,UAA4B,iBAAT3oB,EAAEzG,IAAmByG,EAAEzG,aAAcovB,QACvGyqD,EAAO75E,GAAKwG,EAAExG,GAAKyG,EAAEzG,GAErB65E,EAAO75E,QAAcpH,IAAT6N,EAAEzG,GAAmBwG,EAAExG,GAAKwG,EAAExG,IAAMyG,EAAEzG,GAGpDA,GAAK,EAGP,OAAO65E,CACT,CAEA,OAAO,CACT,CAEA,IAAIttF,IAAMuzD,IAEV,SAASq6B,IAAI3zE,EAAGC,GACd,IAAIkzE,EAAOT,UAAU1yE,GAEjByzE,EAAOf,UAAUzyE,GAErB,GAAI+yE,YAAYG,EAAMnzE,IAAMgzE,YAAYS,EAAMxzE,GAS5C,MARa,WAATkzE,IACFnzE,EAAI9T,SAAS8T,EAAG,KAGL,WAATyzE,IACFxzE,EAAI/T,SAAS+T,EAAG,KAGXD,EAAIC,EAGb,GAAI8yE,sBAAsB/yE,IAAMgzE,YAAYS,EAAMxzE,GAGhD,OAFAD,EAAIA,EAAExH,MAAM,IACV,IAAMyH,EACDD,EAGT,GAAIgzE,YAAYG,EAAMnzE,IAAM+yE,sBAAsB9yE,GAGhD,OAFAA,EAAIA,EAAEzH,MAAM,IACV,GAAKwH,EAAIC,EAAE,GACNA,EAGT,GAAI8yE,sBAAsB/yE,IAAM+yE,sBAAsB9yE,GAAI,CAMxD,IALA,IAAIzG,EAAI,EACJ45E,EAAOpzE,EAAEpW,OACT8pF,EAAOzzE,EAAErW,OACTypF,EAAS,GAEN75E,EAAI45E,GAAQ55E,EAAIk6E,IACA,iBAAT1zE,EAAExG,IAAmBwG,EAAExG,aAAcovB,UAA4B,iBAAT3oB,EAAEzG,IAAmByG,EAAEzG,aAAcovB,QACvGyqD,EAAO75E,GAAKwG,EAAExG,GAAKyG,EAAEzG,GAErB65E,EAAO75E,QAAcpH,IAAT6N,EAAEzG,GAAmBwG,EAAExG,GAAKwG,EAAExG,IAAMyG,EAAEzG,GAGpDA,GAAK,EAGP,OAAO65E,CACT,CAEA,OAAO,CACT,CAEA,SAASO,IAAI5zE,EAAGC,GACd,IAIIiS,EAMA1Y,EACAmR,EAXAwoE,EAAOT,UAAU1yE,GAEjByzE,EAAOf,UAAUzyE,GAIrB,GAAI+yE,YAAYG,EAAMnzE,IAAMgzE,YAAYS,EAAMxzE,GAC5C,OAAOD,EAAIC,EAMb,GAAI8yE,sBAAsB/yE,IAAMgzE,YAAYS,EAAMxzE,GAAI,CAIpD,IAHA0K,EAAM3K,EAAEpW,OACRsoB,EAAMF,iBAAiB,UAAWrH,GAE7BnR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB0Y,EAAI1Y,GAAKwG,EAAExG,GAAKyG,EAGlB,OAAOiS,CACT,CAEA,GAAI8gE,YAAYG,EAAMnzE,IAAM+yE,sBAAsB9yE,GAAI,CAIpD,IAHA0K,EAAM1K,EAAErW,OACRsoB,EAAMF,iBAAiB,UAAWrH,GAE7BnR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB0Y,EAAI1Y,GAAKwG,EAAIC,EAAEzG,GAGjB,OAAO0Y,CACT,CAEA,OAAO,CACT,CAEA,SAAS6Z,IAAI/rB,EAAGC,GACd,IAIIiS,EAMA1Y,EACAmR,EAXAwoE,EAAOT,UAAU1yE,GAEjByzE,EAAOf,UAAUzyE,GAIrB,GAAI+yE,YAAYG,EAAMnzE,IAAMgzE,YAAYS,EAAMxzE,GAC5C,OAAOD,EAAIC,EAMb,GAAI8yE,sBAAsB/yE,IAAMgzE,YAAYS,EAAMxzE,GAAI,CAIpD,IAHA0K,EAAM3K,EAAEpW,OACRsoB,EAAMF,iBAAiB,UAAWrH,GAE7BnR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB0Y,EAAI1Y,GAAKwG,EAAExG,GAAKyG,EAGlB,OAAOiS,CACT,CAEA,GAAI8gE,YAAYG,EAAMnzE,IAAM+yE,sBAAsB9yE,GAAI,CAIpD,IAHA0K,EAAM1K,EAAErW,OACRsoB,EAAMF,iBAAiB,UAAWrH,GAE7BnR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB0Y,EAAI1Y,GAAKwG,EAAIC,EAAEzG,GAGjB,OAAO0Y,CACT,CAEA,OAAO,CACT,CAEA,SAAS2hE,IAAI7zE,EAAGC,GASd,MARiB,iBAAND,IACTA,EAAI9T,SAAS8T,EAAG,KAGD,iBAANC,IACTA,EAAI/T,SAAS+T,EAAG,KAGXD,EAAIC,CACb,CAEA,IAAI6zE,QAAUx6B,IACVy6B,QAAUJ,IACVK,QAAUJ,IACVK,QAAUloD,IACVmoD,QAAUL,IAEd,SAASM,MAAM33B,EAAKtzC,EAAKD,GACvB,GAAIC,EAAMD,EAAK,CACb,IAAImrE,EAAKnrE,EACTA,EAAMC,EACNA,EAAMkrE,CACR,CAEA,OAAOhmF,KAAK8a,IAAI9a,KAAK6a,IAAIuzC,EAAKtzC,GAAMD,EACtC,CAEA,SAASorE,iBAAiBptE,GACxB,OAAOA,EAAM0M,SACf,CAEA,IAAI2gE,mBAAqBD,iBAEzB,SAASE,iBAAiBttE,GACxB,OAAOA,EAAM0M,SACf,CAEA,IAAI6gE,mBAAqBH,iBACrBI,kBAAoB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,GAExC,SAAS7qF,OAAO8qF,EAAMC,GACpB,GAAoB,iBAATD,GAAqBA,aAAgB9rD,OAE9C,OADA+rD,EAAOA,GAAQ,EACRvmF,KAAKC,IAAIqmF,EAAOC,GAOzB,IAAIn7E,EAJCm7E,IACHA,EAAOF,mBAIT,IAAI9pE,EAAMvc,KAAK8a,IAAIwrE,EAAK9qF,OAAQ+qF,EAAK/qF,QACjC0lC,EAAc,EAElB,IAAK91B,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB81B,GAAelhC,KAAK4kB,IAAI2hE,EAAKn7E,GAAKk7E,EAAKl7E,GAAI,GAG7C,OAAOpL,KAAK8kB,KAAKoc,EACnB,CAEA,SAAS/sB,UAAUqyE,GACjB,OAAO7oD,IAAI6oD,EAAKhrF,OAAOgrF,GACzB,CAEA,SAASC,SAAS5tE,GAChB,IAKI4O,EACAC,EANAE,EAAI/O,EAAI,GACRzG,EAAIyG,EAAI,GACRhH,EAAIgH,EAAI,GACRgC,EAAM7a,KAAK6a,IAAI+M,EAAGxV,EAAGP,GACrBiJ,EAAM9a,KAAK8a,IAAI8M,EAAGxV,EAAGP,GAGrB6hC,GAAK74B,EAAMC,GAAO,EAEtB,GAAID,IAAQC,EACV2M,EAAI,EAEJC,EAAI,MACC,CACL,IAAIO,EAAIpN,EAAMC,EAGd,OAFA4M,EAAIgsB,EAAI,GAAMzrB,GAAK,EAAIpN,EAAMC,GAAOmN,GAAKpN,EAAMC,GAEvCD,GACN,KAAK+M,EACHH,GAAKrV,EAAIP,GAAKoW,GAAK7V,EAAIP,EAAI,EAAI,GAC/B,MAEF,KAAKO,EACHqV,GAAK5V,EAAI+V,GAAKK,EAAI,EAClB,MAEF,KAAKpW,EACH4V,GAAKG,EAAIxV,GAAK6V,EAAI,EAOtBR,GAAK,CACP,CAEA,MAAO,CAACA,EAAGC,EAAGgsB,EAAG76B,EAAI,GACvB,CAEA,SAAS6tE,QAAQ7+D,EAAGC,EAAGC,GAGrB,OAFIA,EAAI,IAAGA,GAAK,GACZA,EAAI,IAAGA,GAAK,GACZA,EAAI,EAAI,EAAUF,EAAc,GAATC,EAAID,GAASE,EACpCA,EAAI,GAAcD,EAClBC,EAAI,EAAI,EAAUF,GAAKC,EAAID,IAAM,EAAI,EAAIE,GAAK,EAC3CF,CACT,CAEA,SAAS8+D,SAAS9tE,GAChB,IAGI+O,EACAxV,EACAP,EALA4V,EAAI5O,EAAI,GACR6O,EAAI7O,EAAI,GACR66B,EAAI76B,EAAI,GAKZ,GAAU,IAAN6O,EACFE,EAAI8rB,EAEJ7hC,EAAI6hC,EAEJthC,EAAIshC,MACC,CACL,IAAI5rB,EAAI4rB,EAAI,GAAMA,GAAK,EAAIhsB,GAAKgsB,EAAIhsB,EAAIgsB,EAAIhsB,EACxCG,EAAI,EAAI6rB,EAAI5rB,EAChBF,EAAI8+D,QAAQ7+D,EAAGC,EAAGL,EAAI,EAAI,GAC1BrV,EAAIs0E,QAAQ7+D,EAAGC,EAAGL,GAClB5V,EAAI60E,QAAQ7+D,EAAGC,EAAGL,EAAI,EAAI,EAC5B,CAEA,MAAO,CAACG,EAAGxV,EAAGP,EAAGgH,EAAI,GACvB,CAEA,SAAS+tE,OAAO7+D,EAAG8+D,EAAMC,EAAMC,EAAQC,GAQrC,QAPehjF,IAAX+iF,QAAmC/iF,IAAXgjF,IAC1BD,EAASF,EACTG,EAASF,EACTD,EAAO,EACPC,EAAO,GAGLA,EAAOD,EAAM,CACf,IAAII,EAAQH,EACZA,EAAOD,EACPA,EAAOI,CACT,CAEA,GAAIl/D,GAAK8+D,EACP,OAAOE,EAGT,GAAIh/D,GAAK++D,EACP,OAAOE,EAGT,IAMI57E,EANAm3B,EAAOukD,IAASD,EAAO,GAAK9+D,EAAI8+D,IAASC,EAAOD,GAEpD,IAAKE,EAAOvrF,OACV,OAAOurF,GAAUC,EAASD,GAAUxkD,EAItC,IAAIhmB,EAAMwqE,EAAOvrF,OACbsoB,EAAMF,iBAAiB,UAAWrH,GAEtC,IAAKnR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB0Y,EAAI1Y,GAAK27E,EAAO37E,IAAM47E,EAAO57E,GAAK27E,EAAO37E,IAAMm3B,EAGjD,OAAOze,CACT,CAEA,SAASrI,OAAOX,EAAKD,GAWnB,QAVY7W,IAAR6W,SACU7W,IAAR8W,GACFA,EAAM,EACND,EAAM,IAENA,EAAMC,EACNA,OAAM9W,IAIN6W,EAAIrf,OAAQ,CACd,IAAI4P,EACAmR,EAAM1B,EAAIrf,OAETsf,IACHA,EAAM8I,iBAAiB,UAAWrH,IAGpC,IAAIuH,EAAMF,iBAAiB,UAAWrH,GAClC2qE,EAAMhiE,OAAOzJ,SAEjB,IAAKrQ,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB0Y,EAAI1Y,GAAK0P,EAAI1P,GAAK87E,GAAOrsE,EAAIzP,GAAK0P,EAAI1P,IAGxC,OAAO0Y,CACT,CAOA,YALY9f,IAAR8W,IACFA,EAAM,GAIDA,EADIoK,OAAOzJ,UACGZ,EAAMC,EAC7B,CAEA,SAASqsE,WAAWroD,EAAQsoD,EAAYC,EAAa15D,GACnD,IAAIviB,EACAmR,EAAMuiB,EAAOtjC,OACbT,EAAOmzC,UAAUlN,aACrBjmC,EAAKkyC,cAActf,EAAQpR,GAC3B,IACI+qE,EACAC,EAFAC,EAAiB,CAAC,EAAG,GAIzB,IAAKp8E,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBk8E,EAAgBF,GAAcA,EAAWh8E,GAAKg8E,EAAWh8E,GAAKo8E,EAC9DD,EAAiBF,GAAeA,EAAYj8E,GAAKi8E,EAAYj8E,GAAKo8E,EAClEzsF,EAAKsyC,YAAYvO,EAAO1zB,GAAG,GAAI0zB,EAAO1zB,GAAG,GAAIm8E,EAAe,GAAKzoD,EAAO1zB,GAAG,GAAIm8E,EAAe,GAAKzoD,EAAO1zB,GAAG,GAAIk8E,EAAc,GAAKxoD,EAAO1zB,GAAG,GAAIk8E,EAAc,GAAKxoD,EAAO1zB,GAAG,GAAIA,GAAG,GAGxL,OAAOrQ,CACT,CAEA,SAAS0sF,mBAAmB1qD,KAAM7oB,KAAMwzE,UAEtC,SAASC,KAAKC,GACZ,OAAOA,CACT,CAEA,IAAK7qD,KAAK7F,WAAWu3B,aAAa8f,eAChC,OAAOoZ,KAGT,IAAI9uE,IAAM3E,KAAK3Q,EACXskF,cAAgB,qBAAqB9yE,KAAK8D,KAE1CivE,cAA0C,IAA3BjvE,IAAI1R,QAAQ,UAE3B4gF,SAAWhrD,KAAK7oB,KAAKmX,GACrB0oB,UACAi0C,cACA9xE,QACA6iD,OACAkvB,aAAeP,SACnBO,aAAaC,YAAcD,aAAa/qC,eACxCvyC,OAAOO,eAAe+8E,aAAc,QAAS,CAC3C/5E,IAAK,WACH,OAAO+5E,aAAatgE,CACtB,IAEFoV,KAAKrR,KAAKq2D,cAAgB,EAAIhlD,KAAKrR,KAAKwL,WAAW1B,UACnDuH,KAAKrR,KAAKs2D,iBAAmB,EAC7B,IAAImG,QAAUprD,KAAK7oB,KAAK6Y,GAAKgQ,KAAKrR,KAAKwL,WAAW1B,UAC9C4yD,SAAWrrD,KAAK7oB,KAAK8Y,GAAK+P,KAAKrR,KAAKwL,WAAW1B,UAC/C/zB,MAAQs7B,KAAK7oB,KAAKstD,GAAKzkC,KAAK7oB,KAAKstD,GAAK,EACtC/rE,OAASsnC,KAAK7oB,KAAKq0B,GAAKxL,KAAK7oB,KAAKq0B,GAAK,EACvC36B,KAAOmvB,KAAK7oB,KAAKygB,GACjB0zD,OACAC,QACAC,QACAC,SACAC,OACAC,QACAC,UACAC,SACAC,OACAC,kBACA3uE,SACA4uE,SACAC,YACAz1C,MACA01C,UACAC,SACAlzB,KACAkyB,YACAiB,eACAC,aAEAC,oBAAsBC,KAAK,oCAAsCzwE,IAAM,0BAA0B,GAEjG0wE,QAAU7B,SAAS/7C,GAAKz3B,KAAKoI,EAAE9gB,OAAS,EACxCguF,QAAU5lF,KAAKsQ,OAAyB,IAAjBtQ,KAAKsQ,KAAKmmD,GAEjCovB,OAAS,SAAgBC,EAAMC,GACjC,IAAIC,EACAh/D,EACAi/D,EAAYjmF,KAAK+iC,GAAGnrC,OAASoI,KAAK+iC,GAAGnrC,OAAS,EAC9CsuF,EAAYlmE,iBAAiB,UAAWimE,GAExCvpB,EAAatgE,KAAKib,MADf,EACqBgZ,MAI5B,IAHA21D,EAAU,EACVh/D,EAAI,EAEGg/D,EAAUtpB,GAAY,CAE3B,IAAK11C,EAAI,EAAGA,EAAIi/D,EAAWj/D,GAAK,EAC9Bk/D,EAAUl/D,KAAO++D,EAAY,EAANA,EAAUzkE,OAAOzJ,SAG1CmuE,GAAW,CACb,CAGA,IAAIG,EAfG,EAeO91D,KACVsO,EAAOwnD,EAAU/pF,KAAKib,MAAM8uE,GAC5BjmE,EAAMF,iBAAiB,UAAWimE,GAEtC,GAAIA,EAAY,EAAG,CACjB,IAAKj/D,EAAI,EAAGA,EAAIi/D,EAAWj/D,GAAK,EAC9B9G,EAAI8G,GAAKhnB,KAAK+iC,GAAG/b,GAAKk/D,EAAUl/D,KAAO++D,EAAY,EAANA,EAAUzkE,OAAOzJ,UAAY8mB,EAI5E,OAAOze,CACT,CAEA,OAAOlgB,KAAK+iC,GAAKmjD,EAAU,KAAOH,EAAY,EAANA,EAAUzkE,OAAOzJ,UAAY8mB,CACvE,EAAE1mC,KAAK+H,MAgBP,SAASomF,eAAen2E,EAAM7c,GAC5B,OAAOqxF,OAAOx0E,EAAM7c,GAAU,EAChC,CAEA,SAASizF,gBAAgBp2E,EAAM7c,GAC7B,OAAOuxF,QAAQ10E,EAAM7c,GAAU,EACjC,CApBIixF,aAAaI,SACfA,OAASJ,aAAaI,OAAOxsF,KAAKosF,cAClCK,QAAUD,QAGRJ,aAAaM,UACfA,QAAUN,aAAaM,QAAQ1sF,KAAKosF,cACpCO,SAAWD,SAGTN,aAAaQ,SACfA,OAASR,aAAaQ,OAAO5sF,KAAKosF,eAWhCrkF,KAAKs5C,iBACPgrC,YAActkF,KAAKs5C,eAAerhD,KAAK+H,OAGrCA,KAAKsmF,oBACPf,eAAiBvlF,KAAKsmF,kBAAkBruF,KAAK+H,OAG/C,IAAI8nB,KAAOqR,KAAKrR,KAAKwL,WAAWb,iBAAiBx6B,KAAKkhC,KAAKrR,KAAKwL,WAAWb,kBAsLvEpC,KACAk2D,SACAtyF,MACAiF,KACAstF,UACAC,UACAC,cA1LJ,SAASC,OAAOC,EAAOC,GACrB,IAAIC,EAAO,CAACD,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,GAAIC,EAAM,GAAKD,EAAM,IACnEG,EAAQ3qF,KAAKiqC,MAAMygD,EAAK,GAAI1qF,KAAK8kB,KAAK4lE,EAAK,GAAKA,EAAK,GAAKA,EAAK,GAAKA,EAAK,KAAOnlE,UAEpF,MAAO,EADIvlB,KAAKiqC,MAAMygD,EAAK,GAAIA,EAAK,IAAMnlE,UAC7BolE,EAAO,EACtB,CAEA,SAASC,QAAQ7iE,EAAG8+D,EAAMC,EAAM+D,EAAMC,GACpC,OAAOC,UAAU5F,WAAYp9D,EAAG8+D,EAAMC,EAAM+D,EAAMC,EACpD,CAEA,SAASE,OAAOjjE,EAAG8+D,EAAMC,EAAM+D,EAAMC,GACnC,OAAOC,UAAU7F,UAAWn9D,EAAG8+D,EAAMC,EAAM+D,EAAMC,EACnD,CAEA,SAASG,KAAKljE,EAAG8+D,EAAMC,EAAM+D,EAAMC,GACjC,OAAOC,UAAU3F,aAAcr9D,EAAG8+D,EAAMC,EAAM+D,EAAMC,EACtD,CAEA,SAASC,UAAUxhF,EAAIwe,EAAG8+D,EAAMC,EAAM+D,EAAMC,QAC7B9mF,IAAT6mF,GACFA,EAAOhE,EACPiE,EAAOhE,GAEP/+D,GAAKA,EAAI8+D,IAASC,EAAOD,GAGvB9+D,EAAI,EACNA,EAAI,EACKA,EAAI,IACbA,EAAI,GAGN,IAAIojB,EAAO5hC,EAAGwe,GAEd,GAAI48D,sBAAsBkG,GAAO,CAC/B,IAAIK,EACAC,EAASN,EAAKrvF,OACdsoB,EAAMF,iBAAiB,UAAWunE,GAEtC,IAAKD,EAAO,EAAGA,EAAOC,EAAQD,GAAQ,EACpCpnE,EAAIonE,IAASJ,EAAKI,GAAQL,EAAKK,IAAS//C,EAAO0/C,EAAKK,GAGtD,OAAOpnE,CACT,CAEA,OAAQgnE,EAAOD,GAAQ1/C,EAAO0/C,CAChC,CAEA,SAASO,WAAWn3D,GAClB,IAAIi3D,EAEA1kF,EACA8gC,EAFA6jD,EAASj3E,KAAKoI,EAAE9gB,OAIpB,GAAK0Y,KAAKoI,EAAE9gB,QAA+B,iBAAd0Y,KAAKoI,EAAE,GAOlC,GAHA9V,GAAS,GACTytB,GAAQ8I,KAAKrR,KAAKwL,WAAW1B,WAElBthB,KAAKoI,EAAE,GAAGyL,EACnBvhB,EAAQ,EACR8gC,EAAUpzB,KAAKoI,EAAE,GAAGyL,MACf,CACL,IAAKmjE,EAAO,EAAGA,EAAOC,EAAS,EAAGD,GAAQ,EAAG,CAC3C,GAAIj3D,IAAS/f,KAAKoI,EAAE4uE,GAAMnjE,EAAG,CAC3BvhB,EAAQ0kF,EAAO,EACf5jD,EAAUpzB,KAAKoI,EAAE4uE,GAAMnjE,EACvB,KACF,CAAO,GAAIkM,EAAO/f,KAAKoI,EAAE4uE,GAAMnjE,GAAKkM,EAAO/f,KAAKoI,EAAE4uE,EAAO,GAAGnjE,EAAG,CACzDkM,EAAO/f,KAAKoI,EAAE4uE,GAAMnjE,EAAI7T,KAAKoI,EAAE4uE,EAAO,GAAGnjE,EAAIkM,GAC/CztB,EAAQ0kF,EAAO,EACf5jD,EAAUpzB,KAAKoI,EAAE4uE,EAAO,GAAGnjE,IAE3BvhB,EAAQ0kF,EAAO,EACf5jD,EAAUpzB,KAAKoI,EAAE4uE,GAAMnjE,GAGzB,KACF,CACF,EAEe,IAAXvhB,IACFA,EAAQ0kF,EAAO,EACf5jD,EAAUpzB,KAAKoI,EAAE4uE,GAAMnjE,EAE3B,MAhCAvhB,EAAQ,EACR8gC,EAAU,EAkCZ,IAAI+jD,EAAQ,CAAC,EAGb,OAFAA,EAAM7kF,MAAQA,EACd6kF,EAAMp3D,KAAOqT,EAAUvK,KAAKrR,KAAKwL,WAAW1B,UACrC61D,CACT,CAEA,SAAS9rF,IAAIkoC,GACX,IAAI4jD,EACAH,EACAC,EAEJ,IAAKj3E,KAAKoI,EAAE9gB,QAA+B,iBAAd0Y,KAAKoI,EAAE,GAClC,MAAM,IAAIsX,MAAM,yCAA2C6T,GAG7DA,GAAO,EACP4jD,EAAQ,CACNp3D,KAAM/f,KAAKoI,EAAEmrB,GAAK1f,EAAIgV,KAAKrR,KAAKwL,WAAW1B,UAC3C39B,MAAO,IAET,IAAIisB,EAAMnZ,OAAO3F,UAAUsN,eAAe7L,KAAKyN,KAAKoI,EAAEmrB,GAAM,KAAOvzB,KAAKoI,EAAEmrB,GAAK/f,EAAIxT,KAAKoI,EAAEmrB,EAAM,GAAGtrC,EAGnG,IAFAgvF,EAASrnE,EAAItoB,OAER0vF,EAAO,EAAGA,EAAOC,EAAQD,GAAQ,EACpCG,EAAMH,GAAQpnE,EAAIonE,GAClBG,EAAMxzF,MAAMqzF,GAAQpnE,EAAIonE,GAG1B,OAAOG,CACT,CAEA,SAASC,aAAatyD,EAAIuyD,GAKxB,OAJKA,IACHA,EAAMxuD,KAAKrR,KAAKwL,WAAW1B,WAGtBwD,EAAKuyD,CACd,CAEA,SAASC,aAAazjE,EAAGwjE,GASvB,OARKxjE,GAAW,IAANA,IACRA,EAAIkM,MAGDs3D,IACHA,EAAMxuD,KAAKrR,KAAKwL,WAAW1B,WAGtBzN,EAAIwjE,CACb,CAEA,SAASpJ,WAAWY,GAClB79D,OAAOumE,WAAWC,SAAW3I,EAC/B,CAEA,SAASn0B,mBACP,OAAO7xB,KAAK6xB,kBACd,CAEA,SAAS+8B,UAAUvwD,EAAMxgB,GACvB,MAAqB,iBAAV/iB,WACGmM,IAAR4W,EACK/iB,MAAM8zF,UAAUvwD,GAGlBvjC,MAAM8zF,UAAUvwD,EAAMxgB,GAGxB,EACT,CAEA,SAASvkB,OAAO+kC,EAAMxgB,GACpB,MAAqB,iBAAV/iB,WACGmM,IAAR4W,EACK/iB,MAAMxB,OAAO+kC,GAGfvjC,MAAMxB,OAAO+kC,EAAMxgB,GAGrB,EACT,CAEA,SAASgxE,cAAcC,GACrB53D,KAA2B,IAApB43D,EAAwB,EAAI7rF,KAAKib,MAAMgZ,KAAO43D,GAAmBA,EACxEh0F,MAAQqwF,YAAYj0D,KACtB,CASA,IAAIztB,MAAQu2B,KAAK7oB,KAAKuzB,IAClBqkD,aAAe/uD,KAAKm3B,YAAan3B,KAAKm3B,UAAU14D,QAChD8tD,OACAoiC,SAAW1rF,KAAKib,MAAsB,IAAhBjb,KAAKyb,UAC3Byb,WAAa6F,KAAK7F,WAEtB,SAAS60D,kBAAkBnE,GAIzB,OAFA/vF,MAAQ+vF,EAEJhkF,KAAKooF,oBAAsBjvD,KAAK7F,WAAWoU,SAA6B,iBAAlB1nC,KAAK8iC,SACtD7uC,OAGa,iBAAlB+L,KAAK8iC,WACP0jD,UAAYxmF,KAAKwmF,UACjBC,UAAYzmF,KAAKymF,UACjBC,cAAgB1mF,KAAK0mF,eAGlBrB,YACHnsF,KAAOigC,KAAKs0B,eAAev0D,KAC3BmsF,UAAYlsD,KAAKs0B,eACjB63B,SAAWnsD,KAAKrR,KAAKqJ,cACrB2zD,QAAUO,UAAUP,QAAQ7sF,KAAKotF,WACjCN,UAAYM,UAAUN,UAAU9sF,KAAKotF,WACrCL,SAAWK,UAAUL,SAAS/sF,KAAKotF,WACnCJ,OAASI,UAAUJ,OAAOhtF,KAAKotF,WAC/BjzB,KAAOizB,UAAUjzB,KAAOizB,UAAUjzB,KAAKn6D,KAAKotF,WAAa,KACzDH,kBAAoBF,UAGjB70C,YACHA,UAAYhX,KAAKs0B,eAAe,wBAChC22B,cAAgBj0C,UAEZA,YACFi1C,YAAcj1C,UAAUi1C,cAOX,IAAbjB,UAAmB7xE,UACrBA,QAAU+yE,UAAU,4BAGjBlwB,SACHA,OAASkwB,UAAU,KAGrB6C,aAAe/uD,KAAKm3B,YAAan3B,KAAKm3B,UAAU14D,WAE9B8tD,SAChBA,OAASvsB,KAAKm3B,UAAU,GAAG7C,gBAG7Bp9B,KAAOrwB,KAAK8nB,KAAKmf,cAAgBjnC,KAAK8nB,KAAKwL,WAAW1B,UAElDsyD,cACF3F,WAAWuJ,SAAWz3D,MAGpB4zD,gBACFsC,SAAWhB,eAAel1D,OAG5Bo1D,sBACAzlF,KAAKooF,kBAAoBjvD,KAAK7F,WAAWoU,QAGzC89C,aAAeA,aAAa1iD,WAAa09C,UAAUC,MAAQ+E,aAAazhE,EAAIyhE,aAE9E,CAIA,OADA2C,kBAAkBE,yBAA2B,CAACjE,cAAegB,YAAa/0D,KAAMk2D,SAAUhC,QAASC,SAAU3mF,MAAOhM,OAAQmY,KAAM06E,QAASE,SAAUC,OAAQI,OAAQC,kBAAmBJ,QAASC,UAAW3yB,KAAM77C,SAAU4uE,SAAUx1C,MAAO21C,SAAUK,QAASC,OAAQC,OAAQO,eAAgBC,gBAAiBv+D,KAAM6+D,OAAQK,QAASI,OAAQC,KAAMG,WAAY7rF,IAAKzC,KAAMstF,UAAWC,UAAWC,cAAegB,aAAcE,aAAc58B,iBAAkB+8B,UAAWt1F,OAAQu1F,cAAeplF,MAAO0wB,YACle60D,iBACT,CAKA,OAHAp6D,GAAG81D,mBAAqBA,mBACxB91D,GAAGs6D,yBAA2B,CAAC50F,OAAQ1C,SAAUg6B,eAAgB61D,MAAOC,OAAQK,QAASntF,IAAK+tF,QAASC,QAASC,QAASC,QAASC,QAASC,MAAOG,mBAAoBC,iBAAkBC,mBAAoBjyE,UAAWsyE,SAAUE,SAAUC,OAAQnrE,OAAQ0rE,WAAYzC,eACvQ/yD,GAAGmI,WAAaA,WACTnI,EACT,CAh2BwB,GAk2BpBu6D,YAAc,WAChB,IAAIv6D,EAAK,CACTA,gBAGA,SAAyBxC,GACvB,IAAIg9D,EAAa,EACbC,EAAY,GA+BhBj9D,EAAUv0B,SAASm6B,cAAgBq8B,wBAAwBjiC,EAAUv0B,UACrEu0B,EAAUv0B,SAASs8B,WAAWb,iBAAiB7B,oBAAoBrF,EAAUv0B,UAC7Eu0B,EAAUv0B,SAASs8B,WAAWm1D,eA/B9B,WACEF,GAAc,CAChB,EA8BAh9D,EAAUv0B,SAASs8B,WAAWo1D,cA5B9B,WAGqB,IAFnBH,GAAc,IAahB,WACE,IAAI/gF,EACAmR,EAAM6vE,EAAU5wF,OAEpB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBghF,EAAUhhF,GAAGnJ,UAGfmqF,EAAU5wF,OAAS,CACrB,CAnBI+wF,EAEJ,EAuBAp9D,EAAUv0B,SAASs8B,WAAWs1D,2BArB9B,SAAoCC,IACK,IAAnCL,EAAUjlF,QAAQslF,IACpBL,EAAUnpF,KAAKwpF,EAEnB,CAkBF,GAEA,OA1CA96D,EAAGmI,WAAayqD,kBAAkBzqD,WA0C3BnI,CACT,CA9CkB,GAgDd+6D,qBAAuB,WACzB,SAASC,EAAc32B,EAAM9hD,GAC3BtQ,KAAKgpF,MAAQ52B,EACbpyD,KAAKipF,MAAQ34E,CACf,CAgDA,OA9CAvJ,OAAOO,eAAeyhF,EAAc3nF,UAAW,WAAY,CACzDkJ,IAAK,WAKH,OAJItK,KAAKgpF,MAAM3qE,KAAK3F,GAClB1Y,KAAKgpF,MAAM3qE,KAAKgqB,WAGXroC,KAAKgpF,MAAM3qE,IACpB,IAEFtX,OAAOO,eAAeyhF,EAAc3nF,UAAW,cAAe,CAC5DkJ,IAAK,WAKH,OAJItK,KAAKgpF,MAAM5/D,GAAG1Q,GAChB1Y,KAAKgpF,MAAM5/D,GAAGif,WAGS,IAAlBroC,KAAKgpF,MAAM5/D,GAAGrF,CACvB,IAGgB,SAAqB2pC,GACrC,IAEIlmD,EAFA0hF,EAAmB5oE,iBAAiBotC,EAAY2D,SAASz5D,QAGzD+gB,EAAM+0C,EAAY2D,SAASz5D,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB0hF,EAAiB1hF,GAAK,IAAIuhF,EAAcr7B,EAAY2D,SAAS7pD,GAAIkmD,EAAYpmC,gBAAgB9f,IAiB/F,OAdmB,SAAsBwC,GAGvC,IAFAxC,EAAI,EAEGA,EAAImR,GAAK,CACd,GAAI+0C,EAAYpmC,gBAAgB9f,GAAGupB,KAAO/mB,EACxC,OAAOk/E,EAAiB1hF,GAG1BA,GAAK,CACP,CAEA,OAAO,IACT,CAGF,CAGF,CArD2B,GAuDvB2hF,4BAA8B,WAChC,IAAIC,EAA6B,CAC/BrmD,GAAI,EACJhf,EAAG,EACHwjB,KAAM,GAEJ8hD,EAA+B,CACjCtmD,GAAI,CAAC,EAAG,EAAG,GACXhf,EAAG,CAAC,EAAG,EAAG,GACVwjB,KAAM,GAGR,SAAS+hD,EAAiBC,EAAiBzF,EAAU7zE,GACnDlJ,OAAOO,eAAeiiF,EAAiB,WAAY,CACjDj/E,IAAK,WACH,OAAOw5E,EAASwC,kBAAkBxC,EAASh8D,KAAKoJ,aAClD,IAEFq4D,EAAgB5D,QAAU7B,EAASxgD,UAAYwgD,EAASxgD,UAAU1rC,OAAS,EAE3E2xF,EAAgB5tF,IAAM,SAAUya,GAC9B,IAAKmzE,EAAgB5D,QACnB,OAAO,EAGT,IAAI1xF,EAGFA,EADE,MAAO6vF,EAASxgD,UAAUltB,EAAM,GAC1B0tE,EAASxgD,UAAUltB,EAAM,GAAG0N,EAC3B,MAAOggE,EAASxgD,UAAUltB,EAAM,GACjC0tE,EAASxgD,UAAUltB,EAAM,GAAG7d,EAE5BurF,EAASxgD,UAAUltB,EAAM,GAAG0N,EAGtC,IAAI0lE,EAAqB,mBAATv5E,EAA4B,IAAI2mB,OAAO3iC,GAAS8S,OAAO+iD,OAAO,CAAC,EAAG71D,GAIlF,OAFAu1F,EAAUn5D,KAAOyzD,EAASxgD,UAAUltB,EAAM,GAAG+N,EAAI2/D,EAAS3qD,KAAKrR,KAAKwL,WAAW1B,UAC/E43D,EAAUv1F,MAAiB,mBAATgc,EAA4Bhc,EAAM,GAAKA,EAClDu1F,CACT,EAEAD,EAAgBjF,YAAcR,EAASxqC,eACvCiwC,EAAgBE,YAAc3F,EAAS4F,eACvCH,EAAgBhE,eAAiBzB,EAASwC,kBAC1CiD,EAAgBI,cAAgB7F,EAAS6F,aAC3C,CAyDA,SAASC,IACP,OAAOR,CACT,CAEA,OAAO,SAAUtF,GACf,OAAKA,EAIqB,mBAAtBA,EAAShhD,SAhEf,SAAyCghD,GAClCA,GAAc,OAAQA,IACzBA,EAAWsF,GAGb,IAAI7hD,EAAO,EAAIu8C,EAASv8C,KACpBtyB,EAAM6uE,EAAS/gD,GAAKwE,EACpBgiD,EAAkB,IAAI3yD,OAAO3hB,GAIjC,OAFAs0E,EAAgBt1F,MAAQghB,EACxBq0E,EAAiBC,EAAiBzF,EAAU,kBACrC,WAcL,OAbIA,EAASprE,GACXorE,EAASz7C,WAGXpzB,EAAM6uE,EAAS//D,EAAIwjB,EAEfgiD,EAAgBt1F,QAAUghB,KAC5Bs0E,EAAkB,IAAI3yD,OAAO3hB,IAEbhhB,MAAQghB,EACxBq0E,EAAiBC,EAAiBzF,EAAU,mBAGvCyF,CACT,CACF,CAsCWM,CAAgC/F,GApC3C,SAA2CA,GACpCA,GAAc,OAAQA,IACzBA,EAAWuF,GAGb,IAAI9hD,EAAO,EAAIu8C,EAASv8C,KACpB5uB,EAAMmrE,EAASxzE,MAAQwzE,EAASxzE,KAAKw/B,GAAKg0C,EAAS/gD,GAAGnrC,OACtD2xF,EAAkBvpE,iBAAiB,UAAWrH,GAC9CmxE,EAAW9pE,iBAAiB,UAAWrH,GAG3C,OAFA4wE,EAAgBt1F,MAAQ61F,EACxBR,EAAiBC,EAAiBzF,EAAU,oBACrC,WACDA,EAASprE,GACXorE,EAASz7C,WAGX,IAAK,IAAI7gC,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAC5BsiF,EAAStiF,GAAKs8E,EAAS//D,EAAEvc,GAAK+/B,EAC9BgiD,EAAgB/hF,GAAKsiF,EAAStiF,GAGhC,OAAO+hF,CACT,CACF,CAgBSQ,CAAkCjG,GAPhC8F,CAQX,CACF,CAtHkC,GAwH9BI,6BACK,SAAU75C,GACf,SAAS85C,EAAcjgF,GACrB,OAAQA,GACN,IAAK,QACL,IAAK,QACL,IAAK,aACL,KAAK,EACH,OAAOigF,EAAct6C,MAEvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,IAAK,gBACL,KAAK,GACH,OAAOs6C,EAAc9E,SAEvB,IAAK,gBACH,OAAO8E,EAAcC,UAEvB,IAAK,gBACH,OAAOD,EAAcE,UAEvB,IAAK,WACL,IAAK,WACL,IAAK,gBACL,KAAK,EACH,OAAOF,EAAc1zE,SAEvB,IAAK,kBACH,OAAO0zE,EAAcG,UAEvB,IAAK,kBACH,OAAOH,EAAcvvF,UAEvB,IAAK,kBACH,OAAOuvF,EAAcI,UAEvB,IAAK,cACL,IAAK,cACL,IAAK,eACL,IAAK,mBACL,KAAK,EACH,OAAOJ,EAAc7E,YAEvB,IAAK,UACL,IAAK,UACL,KAAK,GACH,OAAO6E,EAAcnsF,QAEvB,QACE,OAAO,KAEb,CAkBA,IAAIwsF,EAEAC,EAEAC,EAEAC,EA8CJ,OApEA1jF,OAAOO,eAAe2iF,EAAe,WAAY,CAC/C3/E,IAAK6+E,4BAA4Bh5C,EAAUnsB,GAAKmsB,EAAU2I,MAE5D/xC,OAAOO,eAAe2iF,EAAe,YAAa,CAChD3/E,IAAK6+E,4BAA4Bh5C,EAAU2I,IAAM3I,EAAUnsB,KAE7Djd,OAAOO,eAAe2iF,EAAe,YAAa,CAChD3/E,IAAK6+E,4BAA4Bh5C,EAAUyI,MAE7C7xC,OAAOO,eAAe2iF,EAAe,YAAa,CAChD3/E,IAAK6+E,4BAA4Bh5C,EAAU0I,MAE7C9xC,OAAOO,eAAe2iF,EAAe,QAAS,CAC5C3/E,IAAK6+E,4BAA4Bh5C,EAAUrsB,KAWzCqsB,EAAUlsB,EACZwmE,EAAoBtB,4BAA4Bh5C,EAAUlsB,IAE1DqmE,EAAMnB,4BAA4Bh5C,EAAUsI,IAC5C8xC,EAAMpB,4BAA4Bh5C,EAAUuI,IAExCvI,EAAUwI,KACZ6xC,EAAMrB,4BAA4Bh5C,EAAUwI,MAIhD5xC,OAAOO,eAAe2iF,EAAe,WAAY,CAC/C3/E,IAAK,WACH,OAAI6lC,EAAUlsB,EACLwmE,IAGF,CAACH,IAAOC,IAAOC,EAAMA,IAAQ,EACtC,IAEFzjF,OAAOO,eAAe2iF,EAAe,YAAa,CAChD3/E,IAAK6+E,4BAA4Bh5C,EAAUsI,MAE7C1xC,OAAOO,eAAe2iF,EAAe,YAAa,CAChD3/E,IAAK6+E,4BAA4Bh5C,EAAUuI,MAE7C3xC,OAAOO,eAAe2iF,EAAe,YAAa,CAChD3/E,IAAK6+E,4BAA4Bh5C,EAAUwI,MAE7C5xC,OAAOO,eAAe2iF,EAAe,cAAe,CAClD3/E,IAAK6+E,4BAA4Bh5C,EAAUniC,KAE7CjH,OAAOO,eAAe2iF,EAAe,UAAW,CAC9C3/E,IAAK6+E,4BAA4Bh5C,EAAU/nB,KAE7CrhB,OAAOO,eAAe2iF,EAAe,OAAQ,CAC3C3/E,IAAK6+E,4BAA4Bh5C,EAAU5mB,MAE7CxiB,OAAOO,eAAe2iF,EAAe,WAAY,CAC/C3/E,IAAK6+E,4BAA4Bh5C,EAAU3mB,MAE7CziB,OAAOO,eAAe2iF,EAAe,cAAe,CAClD3/E,IAAK6+E,4BAA4Bh5C,EAAUhD,MAEtC88C,CACT,EAGE78B,yBAA2B,WAC7B,SAASs9B,EAAUr6D,GACjB,IAAIs6D,EAAa,IAAIl8C,OAWrB,YATaruC,IAATiwB,EACerwB,KAAK4lE,MAAMjb,eAAeC,MAAMtR,eAAejpB,GAErDma,MAAMmgD,GAEE3qF,KAAK4lE,MAAMjb,eAAeC,MAChC5R,cAAc2xC,GAGtBA,CACT,CAEA,SAASC,EAAW1qE,EAAKmQ,GACvB,IAAIs6D,EAAa3qF,KAAK0qF,UAAUr6D,GAIhC,OAHAs6D,EAAW57C,MAAM,IAAM,EACvB47C,EAAW57C,MAAM,IAAM,EACvB47C,EAAW57C,MAAM,IAAM,EAChB/uC,KAAK6qF,WAAWF,EAAYzqE,EACrC,CAEA,SAAS4kE,EAAQ5kE,EAAKmQ,GACpB,IAAIs6D,EAAa3qF,KAAK0qF,UAAUr6D,GAChC,OAAOrwB,KAAK6qF,WAAWF,EAAYzqE,EACrC,CAEA,SAAS4qE,EAAa5qE,EAAKmQ,GACzB,IAAIs6D,EAAa3qF,KAAK0qF,UAAUr6D,GAIhC,OAHAs6D,EAAW57C,MAAM,IAAM,EACvB47C,EAAW57C,MAAM,IAAM,EACvB47C,EAAW57C,MAAM,IAAM,EAChB/uC,KAAK+qF,YAAYJ,EAAYzqE,EACtC,CAEA,SAAS6kE,EAAU7kE,EAAKmQ,GACtB,IAAIs6D,EAAa3qF,KAAK0qF,UAAUr6D,GAChC,OAAOrwB,KAAK+qF,YAAYJ,EAAYzqE,EACtC,CAEA,SAAS2qE,EAAW14C,EAAQjyB,GAC1B,GAAIlgB,KAAK4lE,MAAMtV,WAAatwD,KAAK4lE,MAAMtV,UAAU14D,OAAQ,CACvD,IAAI4P,EACAmR,EAAM3Y,KAAK4lE,MAAMtV,UAAU14D,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK4lE,MAAMtV,UAAU9oD,GAAGmjD,eAAeC,MAAM5R,cAAc7G,EAE/D,CAEA,OAAOA,EAAOgB,kBAAkBjzB,EAAI,GAAIA,EAAI,GAAIA,EAAI,IAAM,EAC5D,CAEA,SAAS6qE,EAAY54C,EAAQjyB,GAC3B,GAAIlgB,KAAK4lE,MAAMtV,WAAatwD,KAAK4lE,MAAMtV,UAAU14D,OAAQ,CACvD,IAAI4P,EACAmR,EAAM3Y,KAAK4lE,MAAMtV,UAAU14D,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK4lE,MAAMtV,UAAU9oD,GAAGmjD,eAAeC,MAAM5R,cAAc7G,EAE/D,CAEA,OAAOA,EAAOe,aAAahzB,EAC7B,CAEA,SAAS8kE,EAAS9kE,GAChB,IAAIyqE,EAAa,IAAIl8C,OAKrB,GAJAk8C,EAAW3+C,QAEXhsC,KAAK4lE,MAAMjb,eAAeC,MAAM5R,cAAc2xC,GAE1C3qF,KAAK4lE,MAAMtV,WAAatwD,KAAK4lE,MAAMtV,UAAU14D,OAAQ,CACvD,IAAI4P,EACAmR,EAAM3Y,KAAK4lE,MAAMtV,UAAU14D,OAE/B,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBxH,KAAK4lE,MAAMtV,UAAU9oD,GAAGmjD,eAAeC,MAAM5R,cAAc2xC,GAG7D,OAAOA,EAAWz3C,aAAahzB,EACjC,CAEA,OAAOyqE,EAAWz3C,aAAahzB,EACjC,CAEA,SAAS8qE,IACP,MAAO,CAAC,EAAG,EAAG,EAAG,EACnB,CAEA,OAAO,SAAU7xD,GACf,IAAI8xD,EAUJ,SAAShN,EAAmBj0E,GAC1B,OAAQA,GACN,IAAK,0BACL,IAAK,WACL,KAAK,EACH,OAAOi0E,EAAmBlwB,eAE5B,KAAK,EACL,KAAK,EACL,IAAK,YACL,IAAK,YACL,IAAK,uBACH,OAAOk9B,EAET,KAAK,EACL,IAAK,qBACL,IAAK,UACL,IAAK,UACH,OAAOhN,EAAmB9oB,OAE5B,IAAK,uBACH,OAAO8oB,EAAmB/vB,cAE5B,QACE,OAAO,KAEb,CAEA+vB,EAAmByM,UAAYA,EAC/BzM,EAAmB8M,YAAcA,EACjC9M,EAAmB4M,WAAaA,EAChC5M,EAAmB6G,QAAUA,EAC7B7G,EAAmB2M,WAAaA,EAChC3M,EAAmB8G,UAAYA,EAC/B9G,EAAmB6M,aAAeA,EAClC7M,EAAmBgH,OAASH,EAC5B7G,EAAmB+G,SAAWA,EAC9B/G,EAAmB+M,YAAcA,EACjC/M,EAAmBjzB,iBAAmB7xB,EAAK6xB,iBAAiB/yD,KAAKkhC,GACjE8kD,EAAmBrY,MAAQzsC,EAE3B,IAAI+xD,EAAwB9sE,cAD5B6sE,EAAqBjB,6BAA6B7wD,EAAKwxB,eAAeC,OACR,eAuC9D,OAtCA7jD,OAAO8K,iBAAiBosE,EAAoB,CAC1CiK,UAAW,CACT59E,IAAK,WACH,OAAO6uB,EAAKm3B,UAAU14D,MACxB,GAEF8tD,OAAQ,CACNp7C,IAAK,WACH,OAAO6uB,EAAKm3B,UAAU,GAAG7C,cAC3B,GAEF03B,SAAU/mE,cAAc6sE,EAAoB,YAC5Ct7C,MAAOvxB,cAAc6sE,EAAoB,SACzC10E,SAAU6H,cAAc6sE,EAAoB,YAC5CntF,QAASsgB,cAAc6sE,EAAoB,WAC3C7F,YAAa8F,EACbC,aAAcD,EACd/6C,UAAW,CACT7lC,IAAK,WACH,OAAO2gF,CACT,GAEFrF,OAAQ,CACNt7E,IAAK,WACH,OAAO6uB,EAAK6wB,SACd,KAGJi0B,EAAmBvoF,UAAYyjC,EAAK7oB,KAAK+Y,GACzC40D,EAAmBr7E,MAAQu2B,EAAK7oB,KAAKuzB,IACrCo6C,EAAmB72E,OAAS+xB,EAAK7oB,KAAKqX,MACtCs2D,EAAmBpsF,OAA0B,IAAjBsnC,EAAK7oB,KAAKmX,GAAW0R,EAAK7oB,KAAKuT,EAAI,IAC/Do6D,EAAmBpgF,MAAyB,IAAjBs7B,EAAK7oB,KAAKmX,GAAW0R,EAAK7oB,KAAKm0C,EAAI,IAC9Dw5B,EAAmBsG,QAAUprD,EAAK7oB,KAAK6Y,GAAKgQ,EAAKrR,KAAKwL,WAAW1B,UACjEqsD,EAAmBuG,SAAWrrD,EAAK7oB,KAAK8Y,GAAK+P,EAAKrR,KAAKwL,WAAW1B,UAClEqsD,EAAmBmN,MAAQjyD,EAAK7oB,KAAKygB,GACrCktD,EAAmBtwB,sBAtFnB,SAAgCD,GAC9BuwB,EAAmB7rB,KAAO,IAAI02B,qBAAqBp7B,EAAav0B,EAClE,EAqFA8kD,EAAmBnwB,yBAnFnB,SAAmChC,GACjCmyB,EAAmB9oB,OAASrJ,CAC9B,EAkFOmyB,CACT,CACF,CAzL+B,GA2L3BoN,qBACK,SAAUC,EAAmBC,GAClC,OAAO,SAAUt2E,GAGf,OAFAA,OAAc7U,IAAR6U,EAAoB,EAAIA,IAEnB,EACFq2E,EAGFC,EAAoBt2E,EAAM,EACnC,CACF,EAGEu2E,kBACK,SAAUC,EAAc9B,GAC7B,IAAI2B,EAAoB,CACtBF,MAAOK,GAaT,OAVA,SAAwBx2E,GAGtB,OAFAA,OAAc7U,IAAR6U,EAAoB,EAAIA,IAEnB,EACFq2E,EAGF3B,EAAc10E,EAAM,EAC7B,CAGF,EAGEo4C,2BAA6B,WA4C/B,SAASq+B,EAAqBp7E,EAAM8wC,EAAUuoC,EAAexwD,GAC3D,SAASwyD,EAAe3hF,GAKtB,IAJA,IAAI8hD,EAAUx7C,EAAKy7C,GACfvkD,EAAI,EACJmR,EAAMmzC,EAAQl0D,OAEX4P,EAAImR,GAAK,CACd,GAAI3O,IAAS8hD,EAAQtkD,GAAGupB,IAAM/mB,IAAS8hD,EAAQtkD,GAAGokF,IAAM5hF,IAAS8hD,EAAQtkD,GAAGy6C,GAC1E,OAAsB,IAAlB6J,EAAQtkD,GAAGigB,GACNukC,EAAexkD,GAGjBwkD,EAAexkD,KAGxBA,GAAK,CACP,CAEA,MAAM,IAAIwoB,KACZ,CAEA,IAGIxoB,EAHAqkF,EAAiBR,qBAAqBM,EAAgBhC,GAEtD39B,EAAiB,GAEjBrzC,EAAMrI,EAAKy7C,GAAGn0D,OAElB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACF,IAAlB8I,EAAKy7C,GAAGvkD,GAAGigB,GACbukC,EAAe3sD,KAAKqsF,EAAqBp7E,EAAKy7C,GAAGvkD,GAAI45C,EAAS4K,eAAexkD,GAAI45C,EAAS4K,eAAexkD,GAAGmiF,cAAexwD,IAE3H6yB,EAAe3sD,KAAKysF,EAAqB1qC,EAAS4K,eAAexkD,GAAI8I,EAAKy7C,GAAGvkD,GAAGigB,GAAI0R,EAAM0yD,IA2B9F,MAvBgB,uBAAZv7E,EAAKs7E,IACP7kF,OAAOO,eAAeqkF,EAAgB,QAAS,CAC7CrhF,IAAK,WACH,OAAO0hD,EAAe,IACxB,IAIJjlD,OAAO8K,iBAAiB85E,EAAgB,CACtCI,cAAe,CACbzhF,IAAK,WACH,OAAOgG,EAAK07E,EACd,GAEFZ,MAAO,CACLn3F,MAAOqc,EAAKygB,IAEd44D,cAAe,CACb11F,MAAO43F,KAGXF,EAAeM,QAAsB,IAAZ37E,EAAK47E,GAC9BP,EAAe/F,OAAS+F,EAAeM,QAChCN,CACT,CAEA,SAASG,EAAqB5pE,EAASjS,EAAMkpB,EAAMwwD,GACjD,IAAIwC,EAAqBhD,4BAA4BjnE,EAAQ+B,GAc7D,OAJI/B,EAAQ+B,EAAEmoE,kBACZlqE,EAAQ+B,EAAEmoE,iBAAiBZ,kBAAkB,GAAI7B,IATnD,WACE,OAAa,KAAT15E,EACKkpB,EAAKrR,KAAKqJ,cAAcjP,EAAQ+B,EAAEF,GAGpCooE,GACT,CAOF,CAEA,MA1HS,CACPt+B,uBAGF,SAAgC10B,EAAMwwD,GACpC,GAAIxwD,EAAKs1B,eAAgB,CACvB,IAEIjnD,EAFAwkD,EAAiB,GACjBqgC,EAAclzD,EAAK7oB,KAAKy7C,GAExBpzC,EAAMwgB,EAAKs1B,eAAezC,eAAep0D,OAE7C,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBwkD,EAAe3sD,KAAKqsF,EAAqBW,EAAY7kF,GAAI2xB,EAAKs1B,eAAezC,eAAexkD,GAAImiF,EAAexwD,IAGjH,IAAI2yB,EAAU3yB,EAAK7oB,KAAKy7C,IAAM,GAE1B4/B,EAAiB,SAAwB3hF,GAI3C,IAHAxC,EAAI,EACJmR,EAAMmzC,EAAQl0D,OAEP4P,EAAImR,GAAK,CACd,GAAI3O,IAAS8hD,EAAQtkD,GAAGupB,IAAM/mB,IAAS8hD,EAAQtkD,GAAGokF,IAAM5hF,IAAS8hD,EAAQtkD,GAAGy6C,GAC1E,OAAO+J,EAAexkD,GAGxBA,GAAK,CACP,CAEA,OAAO,IACT,EAOA,OALAT,OAAOO,eAAeqkF,EAAgB,gBAAiB,CACrDrhF,IAAK,WACH,OAAOwhD,EAAQl0D,MACjB,IAEK+zF,CACT,CAEA,OAAO,IACT,EAkFF,CA5HiC,GA8H7BW,mBACK,SAA8B7hD,EAAO8hD,EAAM5C,GAChD,IAAItrE,EAAOkuE,EAAK5nD,GAEhB,SAAS2mD,EAAkBr2E,GACzB,MAAY,UAARA,GAA2B,UAARA,GAA2B,SAARA,GAA0B,SAARA,GAA0B,sBAARA,GAAuC,IAARA,EACpGq2E,EAAkBn0F,KAGpB,IACT,CAEA,IAAI00F,EAAiBR,qBAAqBC,EAAmB3B,GAsC7D,OApCAtrE,EAAK+tE,iBAAiBZ,kBAAkB,OAAQK,IAChD9kF,OAAO8K,iBAAiBy5E,EAAmB,CACzCn0F,KAAM,CACJmT,IAAK,WAKH,OAJI+T,EAAK3F,GACP2F,EAAKgqB,WAGAhqB,CACT,GAEFosB,MAAO,CACLngC,IAAK,WAKH,OAJI+T,EAAK3F,GACP2F,EAAKgqB,WAGAhqB,CACT,GAEF+sE,MAAO,CACLn3F,MAAOw2C,EAAM1Z,IAEfkxB,GAAI,CACFhuD,MAAOw2C,EAAMwX,IAEfuqC,cAAe,CACbv4F,MAAOw2C,EAAMwX,IAEf2pC,GAAI,CACF33F,MAAOw2C,EAAMmhD,IAEfjC,cAAe,CACb11F,MAAO01F,KAGJ2B,CACT,EAGEh+B,yBAA2B,WAC7B,SAASm/B,EAAgB5kE,EAAQ0kE,EAAM5C,GACrC,IACIniF,EADA0Y,EAAM,GAENvH,EAAMkP,EAASA,EAAOjwB,OAAS,EAEnC,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACH,OAAjBqgB,EAAOrgB,GAAGigB,GACZvH,EAAI7gB,KAAKqtF,EAAsB7kE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IACzB,OAAjB9hE,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAKstF,EAAqB9kE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IACxB,OAAjB9hE,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAKutF,EAAuB/kE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IAC1B,OAAjB9hE,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAKwtF,EAAqBhlE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IACxB,OAAjB9hE,EAAOrgB,GAAGigB,KACO,OAAjBI,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAKytF,EAAwBjlE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IAC3B,OAAjB9hE,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAK0tF,EAAqBllE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IACxB,OAAjB9hE,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAKitF,mBAAmBzkE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IACtB,OAAjB9hE,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAK2tF,EAAqBnlE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IACxB,OAAjB9hE,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAK4tF,EAAwBplE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IAC3B,OAAjB9hE,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAK6tF,EAAyBrlE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IAC5B,OAAjB9hE,EAAOrgB,GAAGigB,GACnBvH,EAAI7gB,KAAK8tF,EAA6BtlE,EAAOrgB,GAAI+kF,EAAK/kF,GAAImiF,IAE1DzpE,EAAI7gB,MAA6BwoB,EAAOrgB,GAAI+kF,EAAK/kF,GAuJrD,WACE,OAAO,IACT,KArJA,OAAO0Y,CACT,CAkCA,SAASwsE,EAAsBjiD,EAAO8hD,EAAM5C,GAC1C,IAAI2B,EAAoB,SAA4Br3F,GAClD,OAAQA,GACN,IAAK,qBACL,IAAK,WACL,KAAK,EACH,OAAOq3F,EAAkBh5E,QAK3B,QACE,OAAOg5E,EAAkBn7C,UAE/B,EAEAm7C,EAAkB3B,cAAgB0B,qBAAqBC,EAAmB3B,GAC1E,IAAIr3E,EAjDN,SAAkCm4B,EAAO8hD,EAAM5C,GAC7C,IAAIyD,EAEA9B,EAAoB,SAA4Br3F,GAIlD,IAHA,IAAIuT,EAAI,EACJmR,EAAMy0E,EAAWx1F,OAEd4P,EAAImR,GAAK,CACd,GAAIy0E,EAAW5lF,GAAG4jF,QAAUn3F,GAASm5F,EAAW5lF,GAAGokF,KAAO33F,GAASm5F,EAAW5lF,GAAGglF,gBAAkBv4F,GAASm5F,EAAW5lF,GAAGy6C,KAAOhuD,GAASm5F,EAAW5lF,GAAGq8B,MAAQ5vC,EAC9J,OAAOm5F,EAAW5lF,GAGpBA,GAAK,CACP,CAEA,MAAqB,iBAAVvT,EACFm5F,EAAWn5F,EAAQ,GAGrB,IACT,EAEAq3F,EAAkB3B,cAAgB0B,qBAAqBC,EAAmB3B,GAC1EyD,EAAaX,EAAgBhiD,EAAM9pC,GAAI4rF,EAAK5rF,GAAI2qF,EAAkB3B,eAClE2B,EAAkBS,cAAgBqB,EAAWx1F,OAC7C,IAAIqzF,EAAqBoC,EAA0B5iD,EAAM9pC,GAAG8pC,EAAM9pC,GAAG/I,OAAS,GAAI20F,EAAK5rF,GAAG4rF,EAAK5rF,GAAG/I,OAAS,GAAI0zF,EAAkB3B,eAIjI,OAHA2B,EAAkBn7C,UAAY86C,EAC9BK,EAAkBkB,cAAgB/hD,EAAM6iD,IACxChC,EAAkBF,MAAQ3gD,EAAM1Z,GACzBu6D,CACT,CAmBgBiC,CAAyB9iD,EAAO8hD,EAAMjB,EAAkB3B,eAClEsB,EAAqBoC,EAA0B5iD,EAAM9pC,GAAG8pC,EAAM9pC,GAAG/I,OAAS,GAAI20F,EAAK5rF,GAAG4rF,EAAK5rF,GAAG/I,OAAS,GAAI0zF,EAAkB3B,eAajI,OAZA2B,EAAkBh5E,QAAUA,EAC5Bg5E,EAAkBn7C,UAAY86C,EAC9BlkF,OAAOO,eAAegkF,EAAmB,QAAS,CAChDhhF,IAAK,WACH,OAAOmgC,EAAM1Z,EACf,IAGFu6D,EAAkBS,cAAgBthD,EAAMuhD,GACxCV,EAAkBkB,cAAgB/hD,EAAMwX,GACxCqpC,EAAkBv6D,GAAK0Z,EAAM1Z,GAC7Bu6D,EAAkBM,GAAKnhD,EAAMmhD,GACtBN,CACT,CAEA,SAASqB,EAAqBliD,EAAO8hD,EAAM5C,GACzC,SAAS2B,EAAkBr2E,GACzB,MAAY,UAARA,GAA2B,UAARA,EACdq2E,EAAkB/mE,MAGf,YAARtP,GAA6B,YAARA,EAChBq2E,EAAkBxtF,QAGpB,IACT,CAkBA,OAhBAiJ,OAAO8K,iBAAiBy5E,EAAmB,CACzC/mE,MAAO,CACLja,IAAK6+E,4BAA4BoD,EAAKr+E,IAExCpQ,QAAS,CACPwM,IAAK6+E,4BAA4BoD,EAAKnkE,IAExCgjE,MAAO,CACLn3F,MAAOw2C,EAAM1Z,IAEf66D,GAAI,CACF33F,MAAOw2C,EAAMmhD,MAGjBW,EAAKr+E,EAAEk+E,iBAAiBZ,kBAAkB,QAAS7B,IACnD4C,EAAKnkE,EAAEgkE,iBAAiBZ,kBAAkB,UAAW7B,IAC9C2B,CACT,CAEA,SAAS6B,EAA6B1iD,EAAO8hD,EAAM5C,GACjD,SAAS2B,EAAkBr2E,GACzB,MAAY,gBAARA,GAAiC,gBAARA,EACpBq2E,EAAkBkC,WAGf,cAARv4E,GAA+B,cAARA,EAClBq2E,EAAkBmC,SAGf,YAARx4E,GAA6B,YAARA,EAChBq2E,EAAkBxtF,QAGpB,IACT,CA2BA,OAzBAiJ,OAAO8K,iBAAiBy5E,EAAmB,CACzCkC,WAAY,CACVljF,IAAK6+E,4BAA4BoD,EAAKzoE,IAExC2pE,SAAU,CACRnjF,IAAK6+E,4BAA4BoD,EAAKh0F,IAExCuF,QAAS,CACPwM,IAAK6+E,4BAA4BoD,EAAKnkE,IAExCnY,KAAM,CACJ3F,IAAK,WACH,MAAO,GACT,GAEF8gF,MAAO,CACLn3F,MAAOw2C,EAAM1Z,IAEf66D,GAAI,CACF33F,MAAOw2C,EAAMmhD,MAGjBW,EAAKzoE,EAAEsoE,iBAAiBZ,kBAAkB,cAAe7B,IACzD4C,EAAKh0F,EAAE6zF,iBAAiBZ,kBAAkB,YAAa7B,IACvD4C,EAAKnkE,EAAEgkE,iBAAiBZ,kBAAkB,UAAW7B,IAC9C2B,CACT,CAUA,SAASsB,EAAuBniD,EAAO8hD,EAAM5C,GAC3C,IAUIniF,EAVAqkF,EAAiBR,qBAAqBC,EAAmB3B,GAEzD+D,EAAqBrC,qBAAqBsC,EAAQ9B,GAEtD,SAAS+B,EAAoBpmF,GAC3BT,OAAOO,eAAeqmF,EAAQljD,EAAMpmB,EAAE7c,GAAGupB,GAAI,CAC3CzmB,IAAK6+E,4BAA4BoD,EAAKloE,EAAEi1C,UAAU9xD,GAAGyc,IAEzD,CAGA,IAAItL,EAAM8xB,EAAMpmB,EAAIomB,EAAMpmB,EAAEzsB,OAAS,EACjC+1F,EAAS,CAAC,EAEd,IAAKnmF,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBomF,EAAoBpmF,GACpB+kF,EAAKloE,EAAEi1C,UAAU9xD,GAAGyc,EAAEmoE,iBAAiBsB,GAGzC,SAASpC,EAAkBr2E,GACzB,MAAY,UAARA,GAA2B,UAARA,EACdq2E,EAAkB/mE,MAGf,YAARtP,GAA6B,YAARA,EAChBq2E,EAAkBxtF,QAGf,iBAARmX,GAAkC,iBAARA,EACrBq2E,EAAkBrQ,YAGpB,IACT,CA2BA,OAzBAl0E,OAAO8K,iBAAiBy5E,EAAmB,CACzC/mE,MAAO,CACLja,IAAK6+E,4BAA4BoD,EAAKr+E,IAExCpQ,QAAS,CACPwM,IAAK6+E,4BAA4BoD,EAAKnkE,IAExC6yD,YAAa,CACX3wE,IAAK6+E,4BAA4BoD,EAAK9nC,IAExCopC,KAAM,CACJvjF,IAAK,WACH,OAAOqjF,CACT,GAEFvC,MAAO,CACLn3F,MAAOw2C,EAAM1Z,IAEf66D,GAAI,CACF33F,MAAOw2C,EAAMmhD,MAGjBW,EAAKr+E,EAAEk+E,iBAAiBZ,kBAAkB,QAASK,IACnDU,EAAKnkE,EAAEgkE,iBAAiBZ,kBAAkB,UAAWK,IACrDU,EAAK9nC,EAAE2nC,iBAAiBZ,kBAAkB,eAAgBK,IACnDP,CACT,CAEA,SAASuB,EAAqBpiD,EAAO8hD,EAAM5C,GACzC,SAAS2B,EAAkBr2E,GACzB,OAAIA,IAAQw1B,EAAMlyC,EAAE0pD,IAAc,QAARhtC,GAAyB,QAARA,EAClCq2E,EAAkBt0E,IAGvB/B,IAAQw1B,EAAM3mB,EAAEm+B,GACXqpC,EAAkBv0E,MAGvB9B,IAAQw1B,EAAMriB,EAAE65B,GACXqpC,EAAkB9mE,OAGpB,IACT,CAEA,IAAIqnE,EAAiBR,qBAAqBC,EAAmB3B,GAuB7D,OArBA2B,EAAkBkB,cAAgB/hD,EAAMwX,GACxCsqC,EAAKzoE,EAAEsoE,iBAAiBZ,kBAAkB,QAASK,IACnDU,EAAKh0F,EAAE6zF,iBAAiBZ,kBAAkB,MAAOK,IACjDU,EAAKnkE,EAAEgkE,iBAAiBZ,kBAAkB,SAAUK,IACpDP,EAAkBkB,cAAgB/hD,EAAMwX,GACxCqpC,EAAkB3B,cAAgBA,EAClC5iF,OAAO8K,iBAAiBy5E,EAAmB,CACzCv0E,MAAO,CACLzM,IAAK6+E,4BAA4BoD,EAAKzoE,IAExC9M,IAAK,CACH1M,IAAK6+E,4BAA4BoD,EAAKh0F,IAExCisB,OAAQ,CACNla,IAAK6+E,4BAA4BoD,EAAKnkE,IAExCgjE,MAAO,CACLn3F,MAAOw2C,EAAM1Z,MAGjBu6D,EAAkBM,GAAKnhD,EAAMmhD,GACtBN,CACT,CAEA,SAAS+B,EAA0B5iD,EAAO8hD,EAAM5C,GAC9C,SAAS2B,EAAkBr3F,GACzB,OAAIw2C,EAAMz8B,EAAEi0C,KAAOhuD,GAAmB,iBAAVA,EACnBq3F,EAAkBlG,YAGvB36C,EAAMriB,EAAE65B,KAAOhuD,GAAmB,YAAVA,EACnBq3F,EAAkBxtF,QAGvB2sC,EAAMxmB,EAAEg+B,KAAOhuD,GAAmB,aAAVA,EACnBq3F,EAAkB/0E,SAGvBk0B,EAAMzmB,EAAEi+B,KAAOhuD,GAAmB,aAAVA,GAAkC,yBAAVA,EAC3Cq3F,EAAkBnG,SAGvB16C,EAAM3mB,EAAEm+B,KAAOhuD,GAAmB,UAAVA,EACnBq3F,EAAkB37C,MAGvBlF,EAAMlhB,IAAMkhB,EAAMlhB,GAAG04B,KAAOhuD,GAAmB,SAAVA,EAChCq3F,EAAkB77C,KAGvBhF,EAAMjhB,IAAMihB,EAAMjhB,GAAGy4B,KAAOhuD,GAAmB,cAAVA,EAChCq3F,EAAkBwC,SAGpB,IACT,CAEA,IAAIjC,EAAiBR,qBAAqBC,EAAmB3B,GA2C7D,OAzCA4C,EAAKp8C,UAAUwS,OAAOv6B,EAAEgkE,iBAAiBZ,kBAAkB,UAAWK,IACtEU,EAAKp8C,UAAUwS,OAAO1+B,EAAEmoE,iBAAiBZ,kBAAkB,WAAYK,IACvEU,EAAKp8C,UAAUwS,OAAO30C,EAAEo+E,iBAAiBZ,kBAAkB,eAAgBK,IAC3EU,EAAKp8C,UAAUwS,OAAO7+B,EAAEsoE,iBAAiBZ,kBAAkB,QAASK,IACpEU,EAAKp8C,UAAUwS,OAAO3+B,EAAEooE,iBAAiBZ,kBAAkB,WAAYK,IAEnEU,EAAKp8C,UAAUwS,OAAOp5B,KACxBgjE,EAAKp8C,UAAUwS,OAAOp5B,GAAG6iE,iBAAiBZ,kBAAkB,OAAQK,IACpEU,EAAKp8C,UAAUwS,OAAOn5B,GAAG4iE,iBAAiBZ,kBAAkB,aAAcK,KAG5EU,EAAKp8C,UAAU/mB,GAAGgjE,iBAAiBZ,kBAAkB,UAAWK,IAChE9kF,OAAO8K,iBAAiBy5E,EAAmB,CACzCxtF,QAAS,CACPwM,IAAK6+E,4BAA4BoD,EAAKp8C,UAAUwS,OAAOv6B,IAEzD7R,SAAU,CACRjM,IAAK6+E,4BAA4BoD,EAAKp8C,UAAUwS,OAAO1+B,IAEzDmhE,YAAa,CACX96E,IAAK6+E,4BAA4BoD,EAAKp8C,UAAUwS,OAAO30C,IAEzD2hC,MAAO,CACLrlC,IAAK6+E,4BAA4BoD,EAAKp8C,UAAUwS,OAAO7+B,IAEzDqhE,SAAU,CACR76E,IAAK6+E,4BAA4BoD,EAAKp8C,UAAUwS,OAAO3+B,IAEzDyrB,KAAM,CACJnlC,IAAK6+E,4BAA4BoD,EAAKp8C,UAAUwS,OAAOp5B,KAEzDukE,SAAU,CACRxjF,IAAK6+E,4BAA4BoD,EAAKp8C,UAAUwS,OAAOn5B,KAEzD4hE,MAAO,CACLn3F,MAAOw2C,EAAM1Z,MAGjBu6D,EAAkB7jE,GAAK,KACvB6jE,EAAkBM,GAAKnhD,EAAMmhD,GAC7BN,EAAkB3B,cAAgBA,EAC3B2B,CACT,CAEA,SAASwB,EAAwBriD,EAAO8hD,EAAM5C,GAC5C,SAAS2B,EAAkBr3F,GACzB,OAAIw2C,EAAMxmB,EAAEg+B,KAAOhuD,EACVq3F,EAAkB/0E,SAGvBk0B,EAAM3mB,EAAEm+B,KAAOhuD,EACVq3F,EAAkB90E,KAGpB,IACT,CAEA,IAAIq1E,EAAiBR,qBAAqBC,EAAmB3B,GAE7D2B,EAAkBkB,cAAgB/hD,EAAMwX,GACxC,IAAI5jC,EAAsB,OAAfkuE,EAAK5nD,GAAGld,GAAc8kE,EAAK5nD,GAAGtmB,KAAOkuE,EAAK5nD,GAerD,OAdAtmB,EAAKyF,EAAEsoE,iBAAiBZ,kBAAkB,OAAQK,IAClDxtE,EAAK4F,EAAEmoE,iBAAiBZ,kBAAkB,WAAYK,IACtD9kF,OAAO8K,iBAAiBy5E,EAAmB,CACzC90E,KAAM,CACJlM,IAAK6+E,4BAA4B9qE,EAAKyF,IAExCvN,SAAU,CACRjM,IAAK6+E,4BAA4B9qE,EAAK4F,IAExCmnE,MAAO,CACLn3F,MAAOw2C,EAAM1Z,MAGjBu6D,EAAkBM,GAAKnhD,EAAMmhD,GACtBN,CACT,CAEA,SAASyB,EAAqBtiD,EAAO8hD,EAAM5C,GACzC,SAAS2B,EAAkBr3F,GACzB,OAAIw2C,EAAMxmB,EAAEg+B,KAAOhuD,EACVq3F,EAAkB/0E,SAGvBk0B,EAAMzmB,EAAEi+B,KAAOhuD,EACVq3F,EAAkBnG,SAGvB16C,EAAMljB,GAAG06B,KAAOhuD,EACXq3F,EAAkBpwD,OAGvBuP,EAAM0C,GAAG8U,KAAOhuD,GAAmB,kCAAVA,EACpBq3F,EAAkByC,YAGvBtjD,EAAM2C,GAAG6U,KAAOhuD,EACXq3F,EAAkB0C,gBAGvBvjD,EAAMqC,IAAOrC,EAAMqC,GAAGmV,KAAOhuD,GAAmB,kCAAVA,EAItCw2C,EAAMsC,IAAMtC,EAAMsC,GAAGkV,KAAOhuD,EACvBq3F,EAAkB2C,eAGpB,KAPE3C,EAAkB4C,WAQ7B,CAEA,IAAIrC,EAAiBR,qBAAqBC,EAAmB3B,GAEzDtrE,EAAsB,OAAfkuE,EAAK5nD,GAAGld,GAAc8kE,EAAK5nD,GAAGtmB,KAAOkuE,EAAK5nD,GAwCrD,OAvCA2mD,EAAkBkB,cAAgB/hD,EAAMwX,GACxC5jC,EAAK8uB,GAAGi/C,iBAAiBZ,kBAAkB,eAAgBK,IAC3DxtE,EAAK+uB,GAAGg/C,iBAAiBZ,kBAAkB,kBAAmBK,IAC9DxtE,EAAKkJ,GAAG6kE,iBAAiBZ,kBAAkB,SAAUK,IACrDxtE,EAAK4F,EAAEmoE,iBAAiBZ,kBAAkB,WAAYK,IACtDxtE,EAAK2F,EAAEooE,iBAAiBZ,kBAAkB,WAAYK,IAElDphD,EAAMqC,KACRzuB,EAAKyuB,GAAGs/C,iBAAiBZ,kBAAkB,eAAgBK,IAC3DxtE,EAAK0uB,GAAGq/C,iBAAiBZ,kBAAkB,kBAAmBK,KAGhE9kF,OAAO8K,iBAAiBy5E,EAAmB,CACzC/0E,SAAU,CACRjM,IAAK6+E,4BAA4B9qE,EAAK4F,IAExCkhE,SAAU,CACR76E,IAAK6+E,4BAA4B9qE,EAAK2F,IAExCkX,OAAQ,CACN5wB,IAAK6+E,4BAA4B9qE,EAAKkJ,KAExCwmE,YAAa,CACXzjF,IAAK6+E,4BAA4B9qE,EAAK8uB,KAExC6gD,eAAgB,CACd1jF,IAAK6+E,4BAA4B9qE,EAAK+uB,KAExC8gD,YAAa,CACX5jF,IAAK6+E,4BAA4B9qE,EAAKyuB,KAExCmhD,eAAgB,CACd3jF,IAAK6+E,4BAA4B9qE,EAAK0uB,KAExCq+C,MAAO,CACLn3F,MAAOw2C,EAAM1Z,MAGjBu6D,EAAkBM,GAAKnhD,EAAMmhD,GACtBN,CACT,CAEA,SAAS0B,EAAqBviD,EAAO8hD,EAAM5C,GACzC,SAAS2B,EAAkBr3F,GACzB,OAAIw2C,EAAMxmB,EAAEg+B,KAAOhuD,EACVq3F,EAAkB/0E,SAGvBk0B,EAAMzmB,EAAEi+B,KAAOhuD,EACVq3F,EAAkBh+C,UAGvB7C,EAAM3mB,EAAEm+B,KAAOhuD,GAAmB,SAAVA,GAA8B,0BAAVA,EACvCq3F,EAAkB90E,KAGpB,IACT,CAEA,IAAIq1E,EAAiBR,qBAAqBC,EAAmB3B,GAEzDtrE,EAAsB,OAAfkuE,EAAK5nD,GAAGld,GAAc8kE,EAAK5nD,GAAGtmB,KAAOkuE,EAAK5nD,GAoBrD,OAnBA2mD,EAAkBkB,cAAgB/hD,EAAMwX,GACxC5jC,EAAK4F,EAAEmoE,iBAAiBZ,kBAAkB,WAAYK,IACtDxtE,EAAKyF,EAAEsoE,iBAAiBZ,kBAAkB,OAAQK,IAClDxtE,EAAK2F,EAAEooE,iBAAiBZ,kBAAkB,WAAYK,IACtD9kF,OAAO8K,iBAAiBy5E,EAAmB,CACzC/0E,SAAU,CACRjM,IAAK6+E,4BAA4B9qE,EAAK4F,IAExCqpB,UAAW,CACThjC,IAAK6+E,4BAA4B9qE,EAAK2F,IAExCxN,KAAM,CACJlM,IAAK6+E,4BAA4B9qE,EAAKyF,IAExCsnE,MAAO,CACLn3F,MAAOw2C,EAAM1Z,MAGjBu6D,EAAkBM,GAAKnhD,EAAMmhD,GACtBN,CACT,CAEA,SAAS2B,EAAwBxiD,EAAO8hD,EAAM5C,GAC5C,SAAS2B,EAAkBr3F,GACzB,OAAIw2C,EAAMzmB,EAAEi+B,KAAOhuD,GAAmB,oBAAVA,EACnBq3F,EAAkBvsC,OAGpB,IACT,CAEA,IAAI8sC,EAAiBR,qBAAqBC,EAAmB3B,GAEzDtrE,EAAOkuE,EAYX,OAXAjB,EAAkBkB,cAAgB/hD,EAAMwX,GACxC5jC,EAAKukC,GAAGwpC,iBAAiBZ,kBAAkB,SAAUK,IACrD9kF,OAAO8K,iBAAiBy5E,EAAmB,CACzCvsC,OAAQ,CACNz0C,IAAK6+E,4BAA4B9qE,EAAKukC,KAExCwoC,MAAO,CACLn3F,MAAOw2C,EAAM1Z,MAGjBu6D,EAAkBM,GAAKnhD,EAAMmhD,GACtBN,CACT,CAEA,SAAS4B,EAAyBziD,EAAO8hD,EAAM5C,GAC7C,SAAS2B,EAAkBr3F,GACzB,OAAIw2C,EAAMv8B,EAAE+zC,KAAOhuD,GAAmB,WAAVA,EACnBq3F,EAAkBvpC,OAGvBtX,EAAMriB,EAAE65B,KAAOhuD,GAAmB,WAAVA,EACnBq3F,EAAkB9mE,OAGpB,IACT,CAEA,IAAIqnE,EAAiBR,qBAAqBC,EAAmB3B,GAEzDtrE,EAAOkuE,EAgBX,OAfAjB,EAAkBkB,cAAgB/hD,EAAMwX,GACxC5jC,EAAKnQ,EAAEk+E,iBAAiBZ,kBAAkB,SAAUK,IACpDxtE,EAAK+J,EAAEgkE,iBAAiBZ,kBAAkB,SAAUK,IACpD9kF,OAAO8K,iBAAiBy5E,EAAmB,CACzCvpC,OAAQ,CACNz3C,IAAK6+E,4BAA4B9qE,EAAKnQ,IAExCsW,OAAQ,CACNla,IAAK6+E,4BAA4B9qE,EAAK+J,IAExCgjE,MAAO,CACLn3F,MAAOw2C,EAAM1Z,MAGjBu6D,EAAkBM,GAAKnhD,EAAMmhD,GACtBN,CACT,CAEA,OAAO,SAAUzjE,EAAQ0kE,EAAM5C,GAC7B,IAAIyD,EAEJ,SAASe,EAAmBl6F,GAC1B,GAAqB,iBAAVA,EAGT,OAAc,KAFdA,OAAkBmM,IAAVnM,EAAsB,EAAIA,GAGzB01F,EAGFyD,EAAWn5F,EAAQ,GAM5B,IAHA,IAAIuT,EAAI,EACJmR,EAAMy0E,EAAWx1F,OAEd4P,EAAImR,GAAK,CACd,GAAIy0E,EAAW5lF,GAAG4jF,QAAUn3F,EAC1B,OAAOm5F,EAAW5lF,GAGpBA,GAAK,CACP,CAEA,OAAO,IACT,CAUA,OAJA2mF,EAAmBxE,cAAgB0B,qBAAqB8C,GAJxD,WACE,OAAOxE,CACT,IAGAyD,EAAaX,EAAgB5kE,EAAQ0kE,EAAM4B,EAAmBxE,eAC9DwE,EAAmBpC,cAAgBqB,EAAWx1F,OAC9Cu2F,EAAmB/C,MAAQ,WACpB+C,CACT,CACF,CAnnB+B,GAqnB3B5gC,wBACK,SAAUp0B,GACf,IAAIi1D,EAEJ,SAASnQ,EAAmBj0E,GAC1B,MACO,uBADCA,EAEGi0E,EAAmBoQ,WAGnB,IAEb,CAyBA,OAvBAtnF,OAAOO,eAAe22E,EAAoB,aAAc,CACtD3zE,IAAK,WACH6uB,EAAKwrC,aAAat8B,WAClB,IAAIimD,EAAcn1D,EAAKwrC,aAAaxG,YAAYh6C,EAiBhD,OAfKiqE,GAAeE,IAAgBF,EAAYn6F,SAC9Cm6F,EAAc,IAAIvtF,OAAOytF,IAGbr6F,MAAQq6F,GAAe,IAAIztF,OAAOytF,GAE9CvnF,OAAOO,eAAe8mF,EAAa,QAAS,CAC1C9jF,IAAK,WACH,MAAO,CACLikF,UAAWp1D,EAAKwrC,aAAaxG,YAAYN,GAE7C,KAIGuwB,CACT,IAEKnQ,CACT,EAGF,SAASuQ,QAAQhuE,GAAmV,OAAtOguE,QAArD,mBAAXnkF,QAAoD,iBAApBA,OAAOjI,SAAmC,SAAiBoe,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYguE,QAAQhuE,EAAM,CAEzX,IAAIuuC,kBA0CE0/B,qBAAuB,SAA8Bt1D,GACvD,SAASmyD,EAAkBr3F,GACzB,MAAc,YAAVA,EACKq3F,EAAkBoD,mBAGpB,IACT,CAIA,OAFApD,EAAkBF,MAAQ,UAC1BE,EAAkBoD,iBAnDU,SAAiCv1D,GAC7D,IAAIw1D,EAAsB,GACtBC,EAAkBz1D,EAAK61B,iBAQ3B,SAASoQ,EAAenrE,GACtB,GAAI26F,EAAgB36F,GAIlB,OAHA06F,EAAsB16F,EAGW,WAA7Bu6F,QAFJI,EAAkBA,EAAgB36F,IAGzBmrE,EAGFwvB,EAGT,IAAIC,EAAoB56F,EAAMsP,QAAQorF,GAEtC,IAA2B,IAAvBE,EAA0B,CAC5B,IAAIjsF,EAAQ1I,SAASjG,EAAMxB,OAAOo8F,EAAoBF,EAAoB/2F,QAAS,IAGnF,MAAiC,WAA7B42F,QAFJI,EAAkBA,EAAgBhsF,IAGzBw8D,EAGFwvB,CACT,CAEA,MAAO,EACT,CAEA,OAlCA,WAGE,OAFAD,EAAsB,GACtBC,EAAkBz1D,EAAK61B,iBAChBoQ,CACT,CA+BF,CAYuC0vB,CAAwB31D,GACtDmyD,CACT,EAEO,SAAUnyD,GACf,SAASg1D,EAAmBl6F,GAC1B,MAAc,SAAVA,EACKk6F,EAAmBY,cAGrB,IACT,CAIA,OAFAZ,EAAmB/C,MAAQ,OAC3B+C,EAAmBY,cAAgBN,qBAAqBt1D,GACjDg1D,CACT,GA1BIM,qBA6BFrB,WAAa,CACf59B,MAAOpC,yBACPtB,QAASuB,2BACTvlC,KAAM0lC,wBACN/iB,MAAO6iB,yBACPp0D,KAAMq0D,wBACNyhC,QAASjgC,kBAGX,SAASkgC,aAAah/E,GACpB,OAAOm9E,WAAWn9E,IAAS,IAC7B,CAEA,IAAIi/E,kBAgFK,CACLC,kBAhFF,SAA2Bh2D,EAAM7oB,EAAM+N,GACjC/N,EAAK3Q,IACP0e,EAAK3F,GAAI,EACT2F,EAAK1e,GAAI,EACT0e,EAAKwlE,mBAAqBlD,kBAAkBkD,mBAC5CxlE,EAAKspB,gBAAgBtoC,KAAKgf,EAAKwlE,mBAAmB1qD,EAAM7oB,EAAM+N,GAAMpmB,KAAKomB,IAE7E,EA0EEqrE,eA3DF,SAAwBhnD,GACtB,IACI8L,EAAKxuC,KAAKs5C,eAAe5W,GACzB2W,EAAKr5C,KAAKs5C,eAAe5W,GAFhB,KAGT0sD,EAAQ,EAEZ,GAAI5gD,EAAG52C,OAAQ,CACb,IAAI4P,EAEJ,IAAKA,EAAI,EAAGA,EAAIgnC,EAAG52C,OAAQ4P,GAAK,EAC9B4nF,GAAShzF,KAAK4kB,IAAIq4B,EAAG7xC,GAAKgnC,EAAGhnC,GAAI,GAGnC4nF,EAA2B,IAAnBhzF,KAAK8kB,KAAKkuE,EACpB,MACEA,EAAQ,EAGV,OAAOA,CACT,EAyCE9I,kBAvCF,SAA2B5jD,GACzB,QAAiBtiC,IAAbJ,KAAKooC,IACP,OAAOpoC,KAAKooC,IAGd,IAIIm+C,EAIE/+E,EARF0yC,GAAS,KAET1L,EAAKxuC,KAAKs5C,eAAe5W,GACzB2W,EAAKr5C,KAAKs5C,eAAe5W,EAAWwX,GAGxC,GAAI1L,EAAG52C,OAIL,IAHA2uF,EAAWvmE,iBAAiB,UAAWwuB,EAAG52C,QAGrC4P,EAAI,EAAGA,EAAIgnC,EAAG52C,OAAQ4P,GAAK,EAI9B++E,EAAS/+E,IAAM6xC,EAAG7xC,GAAKgnC,EAAGhnC,IAAM0yC,OAGlCqsC,GAAYltC,EAAK7K,GAAM0L,EAGzB,OAAOqsC,CACT,EAcEjtC,eA1EF,SAAwB5W,GAUtB,OATAA,GAAY1iC,KAAKm5B,KAAK7F,WAAW1B,WACjC8Q,GAAY1iC,KAAK6iC,cAEA7iC,KAAKqvF,eAAenrD,YACnClkC,KAAKqvF,eAAehsD,UAAYrjC,KAAKqvF,eAAenrD,UAAYxB,EAAW1iC,KAAKqvF,eAAehsD,UAAY,EAC3GrjC,KAAKqvF,eAAep7F,MAAQ+L,KAAKyiC,iBAAiBC,EAAU1iC,KAAKqvF,gBACjErvF,KAAKqvF,eAAenrD,UAAYxB,GAG3B1iC,KAAKqvF,eAAep7F,KAC7B,EAgEEq7F,qBAbF,WACE,OAAOtvF,KAAK+iC,EACd,EAYEqpD,iBAVF,SAA0BzC,GACxB3pF,KAAK2pF,cAAgBA,CACvB,GAYF,SAAS4F,uBACP,SAAS5K,EAAQ10E,EAAM7c,EAAUo8F,GAC/B,IAAKxvF,KAAK0Y,IAAM1Y,KAAKsjC,UACnB,OAAOtjC,KAAK+iC,GAGd9yB,EAAOA,EAAOA,EAAKW,cAAgB,GACnC,IAQI6+E,EACAC,EAmBAloF,EACAmR,EACAg3E,EA9BAz+D,EAAelxB,KAAK8nB,KAAKmf,cACzB3D,EAAYtjC,KAAKsjC,UACjBssD,EAAetsD,EAAUA,EAAU1rC,OAAS,GAAGusB,EAEnD,GAAI+M,GAAgB0+D,EAClB,OAAO5vF,KAAK+iC,GA2Bd,GArBKysD,EAcHE,EAAgBE,GAHdH,EAHGr8F,EAGagJ,KAAKC,IAAIuzF,EAAe5vF,KAAKm5B,KAAKrR,KAAKwL,WAAW1B,UAAYx+B,GAF9DgJ,KAAK6a,IAAI,EAAG24E,EAAe5vF,KAAKm5B,KAAK7oB,KAAK6Y,QARvD/1B,GAAYA,EAAWkwC,EAAU1rC,OAAS,KAC7CxE,EAAWkwC,EAAU1rC,OAAS,GAIhC63F,EAAgBG,GADhBF,EAAgBpsD,EAAUA,EAAU1rC,OAAS,EAAIxE,GAAU+wB,IAgBhD,aAATlU,GAGF,GAFiB7T,KAAKib,OAAO6Z,EAAew+D,GAAiBD,GAE5C,GAAM,EACrB,OAAOzvF,KAAKs5C,gBAAgBm2C,GAAiBv+D,EAAew+D,GAAiBD,EAAgBC,GAAiB1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,OAE3I,IAAa,WAAT3hB,EAAmB,CAC5B,IAAI4/E,EAAQ7vF,KAAKs5C,eAAeo2C,EAAgB1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GAC5Ek+D,EAAO9vF,KAAKs5C,eAAes2C,EAAe5vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GAC1Em+D,EAAU/vF,KAAKs5C,iBAAiBpoB,EAAew+D,GAAiBD,EAAgBC,GAAiB1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GAEjIo+D,EAAU5zF,KAAKib,OAAO6Z,EAAew+D,GAAiBD,GAE1D,GAAIzvF,KAAK+iC,GAAGnrC,OAAQ,CAIlB,IAFA+gB,GADAg3E,EAAM,IAAI73F,MAAM+3F,EAAMj4F,SACZA,OAEL4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBmoF,EAAInoF,IAAMsoF,EAAKtoF,GAAKqoF,EAAMroF,IAAMwoF,EAAUD,EAAQvoF,GAGpD,OAAOmoF,CACT,CAEA,OAAQG,EAAOD,GAASG,EAAUD,CACpC,CAAO,GAAa,aAAT9/E,EAAqB,CAC9B,IAAIggF,EAAYjwF,KAAKs5C,eAAes2C,EAAe5vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GAC/Es+D,EAAgBlwF,KAAKs5C,gBAAgBs2C,EAAe,MAAS5vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GAEjG,GAAI5xB,KAAK+iC,GAAGnrC,OAAQ,CAIlB,IAFA+gB,GADAg3E,EAAM,IAAI73F,MAAMm4F,EAAUr4F,SAChBA,OAEL4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBmoF,EAAInoF,GAAKyoF,EAAUzoF,IAAMyoF,EAAUzoF,GAAK0oF,EAAc1oF,MAAQ0pB,EAAe0+D,GAAgB5vF,KAAK8nB,KAAKwL,WAAW1B,WAAa,KAGjI,OAAO+9D,CACT,CAEA,OAAOM,GAA4C/+D,EAAe0+D,GAAgB,MAA9DK,EAAYC,EAClC,EAEA,OAAOlwF,KAAKs5C,iBAAiBpoB,EAAew+D,GAAiBD,EAAgBC,GAAiB1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,EAChI,CAEA,SAAS6yD,EAAOx0E,EAAM7c,EAAUo8F,GAC9B,IAAKxvF,KAAK0Y,EACR,OAAO1Y,KAAK+iC,GAGd9yB,EAAOA,EAAOA,EAAKW,cAAgB,GACnC,IAQI6+E,EACAG,EAmBApoF,EACAmR,EACAg3E,EA9BAz+D,EAAelxB,KAAK8nB,KAAKmf,cACzB3D,EAAYtjC,KAAKsjC,UACjBosD,EAAgBpsD,EAAU,GAAGnf,EAEjC,GAAI+M,GAAgBw+D,EAClB,OAAO1vF,KAAK+iC,GA2Bd,GArBKysD,EAcHI,EAAeF,GAHbD,EAHGr8F,EAGagJ,KAAKC,IAAI2D,KAAKm5B,KAAKrR,KAAKwL,WAAW1B,UAAYx+B,GAF/CgJ,KAAK6a,IAAI,EAAGjX,KAAKm5B,KAAK7oB,KAAK8Y,GAAKsmE,OAR7Ct8F,GAAYA,EAAWkwC,EAAU1rC,OAAS,KAC7CxE,EAAWkwC,EAAU1rC,OAAS,GAIhC63F,GADAG,EAAetsD,EAAUlwC,GAAU+wB,GACJurE,GAepB,aAATz/E,GAGF,GAFiB7T,KAAKib,OAAOq4E,EAAgBx+D,GAAgBu+D,GAE5C,GAAM,EACrB,OAAOzvF,KAAKs5C,iBAAiBo2C,EAAgBx+D,GAAgBu+D,EAAgBC,GAAiB1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,OAE3H,IAAa,WAAT3hB,EAAmB,CAC5B,IAAI4/E,EAAQ7vF,KAAKs5C,eAAeo2C,EAAgB1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GAC5Ek+D,EAAO9vF,KAAKs5C,eAAes2C,EAAe5vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GAC1Em+D,EAAU/vF,KAAKs5C,gBAAgBm2C,GAAiBC,EAAgBx+D,GAAgBu+D,EAAgBC,GAAiB1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GACjJo+D,EAAU5zF,KAAKib,OAAOq4E,EAAgBx+D,GAAgBu+D,GAAiB,EAE3E,GAAIzvF,KAAK+iC,GAAGnrC,OAAQ,CAIlB,IAFA+gB,GADAg3E,EAAM,IAAI73F,MAAM+3F,EAAMj4F,SACZA,OAEL4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBmoF,EAAInoF,GAAKuoF,EAAQvoF,IAAMsoF,EAAKtoF,GAAKqoF,EAAMroF,IAAMwoF,EAG/C,OAAOL,CACT,CAEA,OAAOI,GAAWD,EAAOD,GAASG,CACpC,CAAO,GAAa,aAAT//E,EAAqB,CAC9B,IAAIkgF,EAAanwF,KAAKs5C,eAAeo2C,EAAgB1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GACjFw+D,EAAiBpwF,KAAKs5C,gBAAgBo2C,EAAgB,MAAS1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,GAEnG,GAAI5xB,KAAK+iC,GAAGnrC,OAAQ,CAIlB,IAFA+gB,GADAg3E,EAAM,IAAI73F,MAAMq4F,EAAWv4F,SACjBA,OAEL4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxBmoF,EAAInoF,GAAK2oF,EAAW3oF,IAAM2oF,EAAW3oF,GAAK4oF,EAAe5oF,KAAOkoF,EAAgBx+D,GAAgB,KAGlG,OAAOy+D,CACT,CAEA,OAAOQ,GAAcA,EAAaC,IAAmBV,EAAgBx+D,GAAgB,IACvF,EAEA,OAAOlxB,KAAKs5C,gBAAgBm2C,IAAkBC,EAAgBx+D,GAAgBu+D,EAAgBC,IAAkB1vF,KAAK8nB,KAAKwL,WAAW1B,UAAW,EAClJ,CAEA,SAASizD,EAAOhnF,EAAOwyF,GACrB,IAAKrwF,KAAK0Y,EACR,OAAO1Y,KAAK+iC,GAMd,GAHAllC,EAAyB,IAAhBA,GAAS,KAClBwyF,EAAUj0F,KAAKib,MAAMg5E,GAAW,KAEjB,EACb,OAAOrwF,KAAK+iC,GAGd,IAMI9uC,EAQAq8F,EAdA3tE,EAAc3iB,KAAK8nB,KAAKmf,cAAgBjnC,KAAK8nB,KAAKwL,WAAW1B,UAC7D2Q,EAAY5f,EAAc9kB,EAE1B0yF,EAAkBF,EAAU,GADjB1tE,EAAc9kB,EACmB0kC,IAAc8tD,EAAU,GAAK,EACzE7oF,EAAI,EACJwf,EAAI,EAWR,IAPE/yB,EADE+L,KAAK+iC,GAAGnrC,OACFooB,iBAAiB,UAAWhgB,KAAK+iC,GAAGnrC,QAEpC,EAKH4P,EAAI6oF,GAAS,CAGlB,GAFAC,EAActwF,KAAKs5C,eAAe/W,EAAY/6B,EAAI+oF,GAE9CvwF,KAAK+iC,GAAGnrC,OACV,IAAKovB,EAAI,EAAGA,EAAIhnB,KAAK+iC,GAAGnrC,OAAQovB,GAAK,EACnC/yB,EAAM+yB,IAAMspE,EAAYtpE,QAG1B/yB,GAASq8F,EAGX9oF,GAAK,CACP,CAEA,GAAIxH,KAAK+iC,GAAGnrC,OACV,IAAKovB,EAAI,EAAGA,EAAIhnB,KAAK+iC,GAAGnrC,OAAQovB,GAAK,EACnC/yB,EAAM+yB,IAAMqpE,OAGdp8F,GAASo8F,EAGX,OAAOp8F,CACT,CAEA,SAASu8F,EAAwBngE,GAC1BrwB,KAAKywF,0BACRzwF,KAAKywF,wBAA0B,CAC7B1sE,EAAG,IAAI0qB,SAKX,IAAI0D,EAASnyC,KAAKywF,wBAAwB1sE,EAG1C,GAFAouB,EAAOM,eAAezyC,KAAKu4C,IAAIxJ,OAE3B/uC,KAAKw4C,uBAAyB,EAAG,CACnC,IAAIk4C,EAAS1wF,KAAKgO,EAAEsrC,eAAejpB,GACnC8hB,EAAOnC,WAAW0gD,EAAO,GAAK1wF,KAAKgO,EAAEu5B,MAAOmpD,EAAO,GAAK1wF,KAAKgO,EAAEu5B,KAAMmpD,EAAO,GAAK1wF,KAAKgO,EAAEu5B,KAC1F,CAEA,GAAIvnC,KAAKw4C,uBAAyB,EAAG,CACnC,IAAI7I,EAAQ3vC,KAAK8jB,EAAEw1B,eAAejpB,GAClC8hB,EAAOxC,MAAMA,EAAM,GAAK3vC,KAAK8jB,EAAEyjB,KAAMoI,EAAM,GAAK3vC,KAAK8jB,EAAEyjB,KAAMoI,EAAM,GAAK3vC,KAAK8jB,EAAEyjB,KACjF,CAEA,GAAIvnC,KAAKupB,IAAMvpB,KAAKw4C,uBAAyB,EAAG,CAC9C,IAAI/I,EAAOzvC,KAAKupB,GAAG+vB,eAAejpB,GAC9By9D,EAAW9tF,KAAKwpB,GAAG8vB,eAAejpB,GACtC8hB,EAAOzC,cAAcD,EAAOzvC,KAAKupB,GAAGge,KAAMumD,EAAW9tF,KAAKwpB,GAAG+d,KAC/D,CAEA,GAAIvnC,KAAKgkB,GAAKhkB,KAAKw4C,uBAAyB,EAAG,CAC7C,IAAI2sC,EAAWnlF,KAAKgkB,EAAEs1B,eAAejpB,GACrC8hB,EAAOnD,QAAQm2C,EAAWnlF,KAAKgkB,EAAEujB,KACnC,MAAO,IAAKvnC,KAAKgkB,GAAKhkB,KAAKw4C,uBAAyB,EAAG,CACrD,IAAIm4C,EAAY3wF,KAAK84C,GAAGQ,eAAejpB,GACnCugE,EAAY5wF,KAAK64C,GAAGS,eAAejpB,GACnCwgE,EAAY7wF,KAAK44C,GAAGU,eAAejpB,GACnCygE,EAAc9wF,KAAKmtC,GAAGmM,eAAejpB,GACzC8hB,EAAO7C,SAASqhD,EAAY3wF,KAAK84C,GAAGvR,MAAM8H,QAAQuhD,EAAY5wF,KAAK64C,GAAGtR,MAAM6H,QAAQyhD,EAAY7wF,KAAK44C,GAAGrR,MAAM+H,SAASwhD,EAAY,GAAK9wF,KAAKmtC,GAAG5F,MAAM8H,QAAQyhD,EAAY,GAAK9wF,KAAKmtC,GAAG5F,MAAM6H,QAAQ0hD,EAAY,GAAK9wF,KAAKmtC,GAAG5F,KAChO,CAEA,GAAIvnC,KAAKsQ,KAAK2T,GAAKjkB,KAAKsQ,KAAK2T,EAAEH,EAAG,CAChC,IAAIitE,EAAY/wF,KAAKy4C,GAAGa,eAAejpB,GACnC2gE,EAAYhxF,KAAK04C,GAAGY,eAAejpB,GAEvC,GAAIrwB,KAAKsQ,KAAK2T,EAAE0uB,EAAG,CACjB,IAAIs+C,EAAYjxF,KAAK24C,GAAGW,eAAejpB,GACvC8hB,EAAOnC,UAAU+gD,EAAY/wF,KAAKy4C,GAAGlR,KAAMypD,EAAYhxF,KAAK04C,GAAGnR,MAAO0pD,EAAYjxF,KAAK24C,GAAGpR,KAC5F,MACE4K,EAAOnC,UAAU+gD,EAAY/wF,KAAKy4C,GAAGlR,KAAMypD,EAAYhxF,KAAK04C,GAAGnR,KAAM,EAEzE,KAAO,CACL,IAAIhxB,EAAWvW,KAAKikB,EAAEq1B,eAAejpB,GACrC8hB,EAAOnC,UAAUz5B,EAAS,GAAKvW,KAAKikB,EAAEsjB,KAAMhxB,EAAS,GAAKvW,KAAKikB,EAAEsjB,MAAOhxB,EAAS,GAAKvW,KAAKikB,EAAEsjB,KAC/F,CAEA,OAAO4K,CACT,CAEA,SAAS++C,IACP,OAAOlxF,KAAK+jB,EAAEymB,MAAM,IAAIiE,OAC1B,CAEA,IAAIgL,EAAuBrB,yBAAyBqB,qBAEpDrB,yBAAyBqB,qBAAuB,SAAUtgB,EAAM7oB,EAAM/e,GACpE,IAAI8sB,EAAOo7B,EAAqBtgB,EAAM7oB,EAAM/e,GAS5C,OAPI8sB,EAAK0qB,kBAAkBnxC,OACzBymB,EAAKi7B,eAAiBk3C,EAAwBv4F,KAAKomB,GAEnDA,EAAKi7B,eAAiB43C,EAA8Bj5F,KAAKomB,GAG3DA,EAAK+tE,iBAAmB8C,kBAAkB9C,iBACnC/tE,CACT,EAEA,IAAI8yE,EAAkBzoD,gBAAgBC,QAEtCD,gBAAgBC,QAAU,SAAUxP,EAAM7oB,EAAML,EAAMs3B,EAAMh2C,GAC1D,IAAI8sB,EAAO8yE,EAAgBh4D,EAAM7oB,EAAML,EAAMs3B,EAAMh2C,GAI/C8sB,EAAK0pB,GACP1pB,EAAKi7B,eAAiB41C,kBAAkB51C,eAAerhD,KAAKomB,GAE5DA,EAAKi7B,eAAiB41C,kBAAkBI,qBAAqBr3F,KAAKomB,GAGpEA,EAAK+tE,iBAAmB8C,kBAAkB9C,iBAC1C/tE,EAAKsmE,QAAUA,EACftmE,EAAKomE,OAASA,EACdpmE,EAAKwmE,OAASA,EACdxmE,EAAKioE,kBAAoB4I,kBAAkB5I,kBAAkBruF,KAAKomB,GAClEA,EAAKqrE,eAAiBwF,kBAAkBxF,eAAezxF,KAAKomB,GAC5DA,EAAKsnE,QAAqB,IAAXr1E,EAAKtC,EAAUsC,EAAKoI,EAAE9gB,OAAS,EAC9CymB,EAAKmuE,cAAgBl8E,EAAK2xC,GAC1B,IAAIhuD,EAAQ,EAiBZ,OAfa,IAATgc,IACFhc,EAAQ+rB,iBAAiB,UAAsB,IAAX1P,EAAKtC,EAAUsC,EAAKoI,EAAE,GAAGoL,EAAElsB,OAAS0Y,EAAKoI,EAAE9gB,SAGjFymB,EAAKgxE,eAAiB,CACpBnrD,UAAW1mB,oBACX6lB,UAAW,EACXpvC,MAAOA,GAETi7F,kBAAkBC,kBAAkBh2D,EAAM7oB,EAAM+N,GAE5CA,EAAK3F,GACPnnB,EAAU22C,mBAAmB7pB,GAGxBA,CACT,EAwBA,IAAI+yE,EAAmCnmD,qBAAqBomD,yBACxDC,EAA4CrmD,qBAAqBsmD,kCAErE,SAASC,IAAoB,CAE7BA,EAAiBpwF,UAAY,CAC3B8oC,SAAU,SAAkB7rB,EAAMgS,GAC5BrwB,KAAK0Y,GACP1Y,KAAKqoC,WAGP,IAMI7gC,EANA+iC,EAAYvqC,KAAK+jB,OAER3jB,IAATiwB,IACFka,EAAYvqC,KAAKs5C,eAAejpB,EAAM,IAIxC,IAAI1X,EAAM4xB,EAAUtN,QAChBiN,EAAWK,EAAUlsB,GACrB6c,EAASqP,EAAUxmB,EACnB7D,EAAMI,iBAAiB3H,GAE3B,IAAKnR,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EAEtB0Y,EAAI1Y,GADO,MAAT6W,GAAyB,MAATA,EACT,CAAC6rB,EAAS1iC,GAAG,GAAK0zB,EAAO1zB,GAAG,GAAI0iC,EAAS1iC,GAAG,GAAK0zB,EAAO1zB,GAAG,IAE3D,CAAC0iC,EAAS1iC,GAAG,GAAI0iC,EAAS1iC,GAAG,IAI1C,OAAO0Y,CACT,EACAgb,OAAQ,SAAgB7K,GACtB,OAAOrwB,KAAKkqC,SAAS,IAAK7Z,EAC5B,EACAmzD,WAAY,SAAoBnzD,GAC9B,OAAOrwB,KAAKkqC,SAAS,IAAK7Z,EAC5B,EACAozD,YAAa,SAAqBpzD,GAChC,OAAOrwB,KAAKkqC,SAAS,IAAK7Z,EAC5B,EACAohE,SAAU,WACR,OAAOzxF,KAAK+jB,EAAE7V,CAChB,EACAwjF,YAAa,SAAqB/yD,EAAMtO,GACtC,IAAIka,EAAYvqC,KAAK+jB,OAER3jB,IAATiwB,IACFka,EAAYvqC,KAAKs5C,eAAejpB,EAAM,IAGnCrwB,KAAK2xF,kBACR3xF,KAAK2xF,gBAAkBrvD,IAAIvC,kBAAkBwK,IAW/C,IARA,IAMIhjB,EANA0Y,EAAiBjgC,KAAK2xF,gBACtBn0D,EAAUyC,EAAezC,QACzBmC,EAAYM,EAAevC,YAAciB,EACzCn3B,EAAI,EACJmR,EAAM6kB,EAAQ5lC,OACdg6F,EAAoB,EAGjBpqF,EAAImR,GAAK,CACd,GAAIi5E,EAAoBp0D,EAAQh2B,GAAG81B,YAAcqC,EAAW,CAC1D,IAAIkyD,EAAYrqF,EACZsqF,EAAWvnD,EAAUr8B,GAAK1G,IAAMmR,EAAM,EAAI,EAAInR,EAAI,EAClDw8B,GAAerE,EAAYiyD,GAAqBp0D,EAAQh2B,GAAG81B,YAC/D/V,EAAK+a,IAAIV,kBAAkB2I,EAAUxmB,EAAE8tE,GAAYtnD,EAAUxmB,EAAE+tE,GAAWvnD,EAAUniB,EAAEypE,GAAYtnD,EAAU/iC,EAAEsqF,GAAW9tD,EAAaxG,EAAQh2B,IAC9I,KACF,CACEoqF,GAAqBp0D,EAAQh2B,GAAG81B,YAGlC91B,GAAK,CACP,CAMA,OAJK+f,IACHA,EAAKgjB,EAAUr8B,EAAI,CAACq8B,EAAUxmB,EAAE,GAAG,GAAIwmB,EAAUxmB,EAAE,GAAG,IAAM,CAACwmB,EAAUxmB,EAAEwmB,EAAUtN,QAAU,GAAG,GAAIsN,EAAUxmB,EAAEwmB,EAAUtN,QAAU,GAAG,KAGlI1V,CACT,EACAwqE,aAAc,SAAsBpzD,EAAMtO,EAAM2hE,GAElC,GAARrzD,EAEFA,EAAO3+B,KAAK+jB,EAAE7V,EACG,GAARywB,IAETA,EAAO,MAGT,IAAIL,EAAMt+B,KAAK0xF,YAAY/yD,EAAMtO,GAC7BkO,EAAMv+B,KAAK0xF,YAAY/yD,EAAO,KAAOtO,GACrC4hE,EAAU1zD,EAAI,GAAKD,EAAI,GACvB4zD,EAAU3zD,EAAI,GAAKD,EAAI,GACvB6zD,EAAY/1F,KAAK8kB,KAAK9kB,KAAK4kB,IAAIixE,EAAS,GAAK71F,KAAK4kB,IAAIkxE,EAAS,IAEnE,OAAkB,IAAdC,EACK,CAAC,EAAG,GAGmB,YAAfH,EAA2B,CAACC,EAAUE,EAAWD,EAAUC,GAAa,EAAED,EAAUC,EAAWF,EAAUE,EAE5H,EACAC,cAAe,SAAuBzzD,EAAMtO,GAC1C,OAAOrwB,KAAK+xF,aAAapzD,EAAMtO,EAAM,UACvC,EACAgiE,aAAc,SAAsB1zD,EAAMtO,GACxC,OAAOrwB,KAAK+xF,aAAapzD,EAAMtO,EAAM,SACvC,EACA+7D,iBAAkB8C,kBAAkB9C,iBACpC9yC,eAAgB41C,kBAAkBI,sBAEpCvxE,gBAAgB,CAACyzE,GAAmBJ,GACpCrzE,gBAAgB,CAACyzE,GAAmBF,GACpCA,EAA0ClwF,UAAUk4C,eA5IpD,SAA6B5W,GAmB3B,OAjBK1iC,KAAKqvF,iBACRrvF,KAAKqvF,eAAiB,CACpBiD,WAAYhoD,UAAUE,MAAMxqC,KAAK+iC,IACjCM,UAAW,EACXkvD,SAAU/0E,sBAIdklB,GAAY1iC,KAAKm5B,KAAK7F,WAAW1B,WACjC8Q,GAAY1iC,KAAK6iC,cAEA7iC,KAAKqvF,eAAekD,WACnCvyF,KAAKqvF,eAAehsD,UAAYrjC,KAAKqvF,eAAekD,SAAW7vD,EAAW1iC,KAAKmnC,SAAS9D,UAAY,EACpGrjC,KAAKqvF,eAAekD,SAAW7vD,EAC/B1iC,KAAKkrC,iBAAiBxI,EAAU1iC,KAAKqvF,eAAeiD,WAAYtyF,KAAKqvF,iBAGhErvF,KAAKqvF,eAAeiD,UAC7B,EAyHAhB,EAA0ClwF,UAAUyiF,mBAAqBlD,kBAAkBkD,mBAC3F,IAAI2O,EAAuBvnD,qBAAqB4mB,aAEhD5mB,qBAAqB4mB,aAAe,SAAU14B,EAAM7oB,EAAML,EAAMiQ,EAAKuyE,GACnE,IAAIp0E,EAAOm0E,EAAqBr5D,EAAM7oB,EAAML,EAAMiQ,EAAKuyE,GAcvD,OAbAp0E,EAAKmuE,cAAgBl8E,EAAK2xC,GAC1B5jC,EAAKupB,MAAO,EAEC,IAAT33B,EACFi/E,kBAAkBC,kBAAkBh2D,EAAM7oB,EAAKiX,GAAIlJ,GACjC,IAATpO,GACTi/E,kBAAkBC,kBAAkBh2D,EAAM7oB,EAAK6X,GAAI9J,GAGjDA,EAAK3F,GACPygB,EAAK+O,mBAAmB7pB,GAGnBA,CACT,CACF,CAEA,SAASq0E,eACPnD,sBACF,CAEA,SAASoD,eAWP70B,aAAa18D,UAAUwxF,mBAAqB,SAAUvxB,EAAcnoE,GAClE,IAAI0pC,EAAW5iC,KAAK6yF,oBAAoB35F,GAExC,GAAImoE,EAAal9C,IAAMye,EAAU,CAC/B,IAAI+gC,EAAU,CAAC,EAIf,OAHA3jE,KAAKm/D,SAASwE,EAAStC,GACvBsC,EAAQx/C,EAAIye,EAASr8B,WACrBo9D,EAAQz5C,YAAa,EACdy5C,CACT,CAEA,OAAOtC,CACT,EAEAvD,aAAa18D,UAAUg+D,eAAiB,WACtC,IAAI0zB,EAAc9yF,KAAKkhE,kBACnB6xB,EAAiB/yF,KAAKmvF,oBAE1B,OADAnvF,KAAK+nC,GAAK+qD,GAAeC,EAClB/yF,KAAK+nC,EACd,EAEA+1B,aAAa18D,UAAU+tF,kBA/BvB,WACE,OAAInvF,KAAKsQ,KAAK+T,EAAE1kB,GACdK,KAAK6yF,oBAAsBlS,kBAAkBkD,mBAAmB5rF,KAAK+H,KAA1C2gF,CAAgD3gF,KAAKm5B,KAAMn5B,KAAKsQ,KAAK+T,EAAGrkB,MACnGA,KAAKgoC,UAAUhoC,KAAK4yF,mBAAmB36F,KAAK+H,QACrC,GAGF,IACT,CAwBF,CAEA,SAASgzF,aACPL,cACF,CAEA,SAASM,sBAAuB,CAEhCA,oBAAoB7xF,UAAY,CAC9B8xF,gBAAiB,SAAyBC,EAAUC,GAClD,IAEIC,EACA7rF,EAHA8rF,EAAU9tE,SAAS,WAKvB,IAJA8tE,EAAQl6F,aAAa,SAAU+5F,GAI1B3rF,EAAI,EAAGA,EAAI4rF,EAAIx7F,OAAQ4P,GAAK,GAC/B6rF,EAAc7tE,SAAS,gBACXpsB,aAAa,KAAMg6F,EAAI5rF,IACnC8rF,EAAQngF,YAAYkgF,GACpBC,EAAQngF,YAAYkgF,GAGtB,OAAOC,CACT,GAGF,IAAIC,kBAAoB,mFAExB,SAASC,cAAcnzF,EAAQ00D,EAAe57B,EAAMxmC,EAAIyU,GACtDpH,KAAK+0D,cAAgBA,EACrB,IAAIP,EAAgBhvC,SAAS,iBAC7BgvC,EAAcp7D,aAAa,OAAQ,UACnCo7D,EAAcp7D,aAAa,8BAA+B,aAC1Do7D,EAAcp7D,aAAa,SAAUm6F,kBAAoB,QACzDvzF,KAAKyzF,aAAej/B,EACpBA,EAAcp7D,aAAa,SAAUzG,EAAK,WAC1C0N,EAAO8S,YAAYqhD,IACnBA,EAAgBhvC,SAAS,kBACXpsB,aAAa,OAAQ,UACnCo7D,EAAcp7D,aAAa,8BAA+B,QAC1Do7D,EAAcp7D,aAAa,SAAU,2CACrCo7D,EAAcp7D,aAAa,SAAUzG,EAAK,WAC1C0N,EAAO8S,YAAYqhD,GACnBx0D,KAAK0zF,aAAel/B,EACpB,IAAI8+B,EAAUtzF,KAAKkzF,gBAAgBvgG,EAAI,CAACyU,EAAQzU,EAAK,UAAWA,EAAK,YACrE0N,EAAO8S,YAAYmgF,EACrB,CAcA,SAASK,cAActzF,EAAQ00D,EAAe57B,EAAMxmC,GAClDqN,KAAK+0D,cAAgBA,EACrB,IAAIP,EAAgBhvC,SAAS,iBAC7BgvC,EAAcp7D,aAAa,OAAQ,UACnCo7D,EAAcp7D,aAAa,8BAA+B,QAC1Do7D,EAAcp7D,aAAa,SAAU,2CACrCo7D,EAAcp7D,aAAa,SAAUzG,GACrC0N,EAAO8S,YAAYqhD,GACnBx0D,KAAK0zF,aAAel/B,CACtB,CAUA,SAASo/B,gBAAgBr/B,EAAKQ,EAAe57B,GAC3Cn5B,KAAK6zF,aAAc,EACnB7zF,KAAK+0D,cAAgBA,EACrB/0D,KAAKm5B,KAAOA,EACZn5B,KAAK0rC,MAAQ,EACf,CAgIA,SAASooD,iBAAiBzzF,EAAQ00D,EAAe57B,EAAMxmC,GACrDqN,KAAK+0D,cAAgBA,EACrB,IAAIP,EAAgBhvC,SAAS,iBAC7BgvC,EAAcp7D,aAAa,OAAQ,UACnCo7D,EAAcp7D,aAAa,8BAA+B,aAC1Do7D,EAAcp7D,aAAa,SAAU,wFACrCiH,EAAO8S,YAAYqhD,GACnB,IAAIu/B,EAAsBvuE,SAAS,uBACnCuuE,EAAoB36F,aAAa,8BAA+B,QAChE26F,EAAoB36F,aAAa,SAAUzG,GAC3CqN,KAAK0zF,aAAeK,EACpB,IAAIC,EAAUxuE,SAAS,WACvBwuE,EAAQ56F,aAAa,OAAQ,SAC7B26F,EAAoB5gF,YAAY6gF,GAChCh0F,KAAKg0F,QAAUA,EACf,IAAIC,EAAUzuE,SAAS,WACvByuE,EAAQ76F,aAAa,OAAQ,SAC7B26F,EAAoB5gF,YAAY8gF,GAChCj0F,KAAKi0F,QAAUA,EACf,IAAIC,EAAU1uE,SAAS,WACvB0uE,EAAQ96F,aAAa,OAAQ,SAC7B26F,EAAoB5gF,YAAY+gF,GAChCl0F,KAAKk0F,QAAUA,EACf7zF,EAAO8S,YAAY4gF,EACrB,CAgBA,SAASI,mBAAmB9zF,EAAQ00D,EAAe57B,EAAMxmC,GACvDqN,KAAK+0D,cAAgBA,EACrB,IAAI/I,EAAiBhsD,KAAK+0D,cAAc/I,eACpC+nC,EAAsBvuE,SAAS,wBAE/BwmC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,KACzR/jB,KAAKg0F,QAAUh0F,KAAKo0F,aAAa,UAAWL,KAI1C/nC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,KACzR/jB,KAAKi0F,QAAUj0F,KAAKo0F,aAAa,UAAWL,KAI1C/nC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,KACzR/jB,KAAKk0F,QAAUl0F,KAAKo0F,aAAa,UAAWL,KAI1C/nC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,GAAWioC,EAAe,IAAI/nC,EAAEvL,GAAgC,IAA3BszC,EAAe,IAAI/nC,EAAEF,KACzR/jB,KAAKq0F,QAAUr0F,KAAKo0F,aAAa,UAAWL,KAI1C/zF,KAAKg0F,SAAWh0F,KAAKi0F,SAAWj0F,KAAKk0F,SAAWl0F,KAAKq0F,WACvDN,EAAoB36F,aAAa,8BAA+B,QAChEiH,EAAO8S,YAAY4gF,KAGjB/nC,EAAe,GAAG/nC,EAAEvL,GAA+B,IAA1BszC,EAAe,GAAG/nC,EAAEF,GAAWioC,EAAe,GAAG/nC,EAAEvL,GAA+B,IAA1BszC,EAAe,GAAG/nC,EAAEF,GAAWioC,EAAe,GAAG/nC,EAAEvL,GAA+B,IAA1BszC,EAAe,GAAG/nC,EAAEF,GAAWioC,EAAe,GAAG/nC,EAAEvL,GAA+B,IAA1BszC,EAAe,GAAG/nC,EAAEF,GAAWioC,EAAe,GAAG/nC,EAAEvL,GAA+B,IAA1BszC,EAAe,GAAG/nC,EAAEF,MAC/QgwE,EAAsBvuE,SAAS,wBACXpsB,aAAa,8BAA+B,QAChE26F,EAAoB36F,aAAa,SAAUzG,GAC3C0N,EAAO8S,YAAY4gF,GACnB/zF,KAAKs0F,gBAAkBt0F,KAAKo0F,aAAa,UAAWL,GACpD/zF,KAAKu0F,gBAAkBv0F,KAAKo0F,aAAa,UAAWL,GACpD/zF,KAAKw0F,gBAAkBx0F,KAAKo0F,aAAa,UAAWL,GAExD,CA4EA,SAASU,oBAAoBp0F,EAAQ00D,EAAe57B,EAAMxmC,EAAIyU,GAC5D,IAAIstF,EAAmB3/B,EAAcxjE,UAAU+hC,WAAWu3B,aAAa6f,WACnEA,EAAa3V,EAAczkD,KAAK+yD,IAAMqxB,EAC1Cr0F,EAAOjH,aAAa,IAAKsxE,EAAW/qE,GAAK+0F,EAAiB/0F,GAC1DU,EAAOjH,aAAa,IAAKsxE,EAAW9qE,GAAK80F,EAAiB90F,GAC1DS,EAAOjH,aAAa,QAASsxE,EAAW7sE,OAAS62F,EAAiB72F,OAClEwC,EAAOjH,aAAa,SAAUsxE,EAAW74E,QAAU6iG,EAAiB7iG,QACpEmO,KAAK+0D,cAAgBA,EACrB,IAAI4/B,EAAiBnvE,SAAS,kBAC9BmvE,EAAev7F,aAAa,KAAM,eAClCu7F,EAAev7F,aAAa,SAAUzG,EAAK,kBAC3CgiG,EAAev7F,aAAa,eAAgB,KAC5C4G,KAAK20F,eAAiBA,EACtBt0F,EAAO8S,YAAYwhF,GACnB,IAAIC,EAAWpvE,SAAS,YACxBovE,EAASx7F,aAAa,KAAM,MAC5Bw7F,EAASx7F,aAAa,KAAM,KAC5Bw7F,EAASx7F,aAAa,KAAMzG,EAAK,kBACjCiiG,EAASx7F,aAAa,SAAUzG,EAAK,kBACrCqN,KAAK40F,SAAWA,EAChBv0F,EAAO8S,YAAYyhF,GACnB,IAAIC,EAAUrvE,SAAS,WACvBqvE,EAAQz7F,aAAa,cAAe,WACpCy7F,EAAQz7F,aAAa,gBAAiB,KACtCy7F,EAAQz7F,aAAa,SAAUzG,EAAK,kBACpCqN,KAAK60F,QAAUA,EACfx0F,EAAO8S,YAAY0hF,GACnB,IAAIC,EAActvE,SAAS,eAC3BsvE,EAAY17F,aAAa,KAAMzG,EAAK,kBACpCmiG,EAAY17F,aAAa,MAAOzG,EAAK,kBACrCmiG,EAAY17F,aAAa,WAAY,MACrC07F,EAAY17F,aAAa,SAAUzG,EAAK,kBACxC0N,EAAO8S,YAAY2hF,GACnB,IAAIxB,EAAUtzF,KAAKkzF,gBAAgBvgG,EAAI,CAACA,EAAK,iBAAkByU,IAC/D/G,EAAO8S,YAAYmgF,EACrB,CAlWAv1E,gBAAgB,CAACk1E,qBAAsBO,eAEvCA,cAAcpyF,UAAU60B,YAAc,SAAUijB,GAC9C,GAAIA,GAAel5C,KAAK+0D,cAAcvtB,KAAM,CAC1C,IAAIutD,EAAa/0F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EACpDixE,EAAah1F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EACpDjmB,EAAUkC,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAI,IACzD/jB,KAAKyzF,aAAar6F,aAAa,SAAUm6F,kBAAoB,IAAMz1F,EAAU,MAC7EkC,KAAK0zF,aAAat6F,aAAa,SAAU47F,EAAW,GAAKD,EAAW,GAAK,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,KAAOC,EAAW,GAAKD,EAAW,IAAM,UAAYA,EAAW,GAAK,aAC/O,CACF,EAaApB,cAAcvyF,UAAU60B,YAAc,SAAUijB,GAC9C,GAAIA,GAAel5C,KAAK+0D,cAAcvtB,KAAM,CAC1C,IAAIjjB,EAAQvkB,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAC/CjmB,EAAUkC,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EACrD/jB,KAAK0zF,aAAat6F,aAAa,SAAU,WAAamrB,EAAM,GAAK,YAAcA,EAAM,GAAK,YAAcA,EAAM,GAAK,UAAYzmB,EAAU,KAC3I,CACF,EASA81F,gBAAgBxyF,UAAU4xF,WAAa,WACrC,IACI77F,EACA89F,EACAztF,EACAmR,EAJAu8E,EAAel1F,KAAKm5B,KAAKo1B,aAAa8sB,UAAYr7E,KAAKm5B,KAAKo1B,aAAa11D,WAmB7E,IAbiD,IAA7CmH,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,GACzCpL,EAAM3Y,KAAKm5B,KAAKu0B,YAAYpmC,gBAAgB1vB,OAC5C4P,EAAI,GAGJmR,EAAU,GADVnR,EAAIxH,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAI,IAIjDkxE,EAAYzvE,SAAS,MACXpsB,aAAa,OAAQ,QAC/B67F,EAAU77F,aAAa,iBAAkB,SACzC67F,EAAU77F,aAAa,oBAAqB,GAEpCoO,EAAImR,EAAKnR,GAAK,EACpBrQ,EAAOquB,SAAS,QAChByvE,EAAU9hF,YAAYhc,GACtB6I,KAAK0rC,MAAMrsC,KAAK,CACd4kB,EAAG9sB,EACH44C,EAAGvoC,IAIP,GAAkD,IAA9CxH,KAAK+0D,cAAc/I,eAAe,IAAI/nC,EAAEF,EAAS,CACnD,IAAIquC,EAAO5sC,SAAS,QAChB7yB,EAAK+wB,kBACT0uC,EAAKh5D,aAAa,KAAMzG,GACxBy/D,EAAKh5D,aAAa,YAAa,SAC/Bg5D,EAAKj/C,YAAY8hF,GACjBj1F,KAAKm5B,KAAK7F,WAAWC,KAAKpgB,YAAYi/C,GACtC,IAAI5jD,EAAIgX,SAAS,KAGjB,IAFAhX,EAAEpV,aAAa,OAAQ,OAASykB,kBAAoB,IAAMlrB,EAAK,KAExDuiG,EAAa,IAClB1mF,EAAE2E,YAAY+hF,EAAa,IAG7Bl1F,KAAKm5B,KAAKo1B,aAAap7C,YAAY3E,GACnCxO,KAAKm3D,OAAS/E,EACd6iC,EAAU77F,aAAa,SAAU,OACnC,MAAO,GAAkD,IAA9C4G,KAAK+0D,cAAc/I,eAAe,IAAI/nC,EAAEF,GAAyD,IAA9C/jB,KAAK+0D,cAAc/I,eAAe,IAAI/nC,EAAEF,EAAS,CAC7G,GAAkD,IAA9C/jB,KAAK+0D,cAAc/I,eAAe,IAAI/nC,EAAEF,EAG1C,IAFAmxE,EAAel1F,KAAKm5B,KAAKo1B,aAAa8sB,UAAYr7E,KAAKm5B,KAAKo1B,aAAa11D,WAElEq8F,EAAat9F,QAClBoI,KAAKm5B,KAAKo1B,aAAa9E,YAAYyrC,EAAa,IAIpDl1F,KAAKm5B,KAAKo1B,aAAap7C,YAAY8hF,GACnCj1F,KAAKm5B,KAAKo1B,aAAahuD,gBAAgB,QACvC00F,EAAU77F,aAAa,SAAU,OACnC,CAEA4G,KAAK6zF,aAAc,EACnB7zF,KAAKm1F,WAAaF,CACpB,EAEArB,gBAAgBxyF,UAAU60B,YAAc,SAAUijB,GAKhD,IAAI1xC,EAJCxH,KAAK6zF,aACR7zF,KAAKgzF,aAIP,IACI5gC,EACAj7D,EAFAwhB,EAAM3Y,KAAK0rC,MAAM9zC,OAIrB,IAAK4P,EAAI,EAAGA,EAAImR,EAAKnR,GAAK,EACxB,IAAyB,IAArBxH,KAAK0rC,MAAMlkC,GAAGuoC,IAChBqiB,EAAOpyD,KAAKm5B,KAAKu0B,YAAY2D,SAASrxD,KAAK0rC,MAAMlkC,GAAGuoC,GACpD54C,EAAO6I,KAAK0rC,MAAMlkC,GAAGyc,GAEjBi1B,GAAel5C,KAAK+0D,cAAcvtB,MAAQ4qB,EAAK/zC,KAAKmpB,OACtDrwC,EAAKiC,aAAa,IAAKg5D,EAAKN,UAG1B5Y,GAAel5C,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,MAAQxnC,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,MAAQxnC,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,MAAQxnC,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,MAAQ4qB,EAAK/zC,KAAKmpB,MAAM,CAC7N,IAAI4tD,EAEJ,GAAiD,IAA7Cp1F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,GAAwD,MAA7C/jB,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAW,CACtG,IAAID,EAAmG,IAA/F1nB,KAAK8a,IAAIlX,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAG/jB,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,GAC9FxrB,EAAmG,IAA/F6D,KAAK6a,IAAIjX,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAG/jB,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,GAC9F+rB,EAAI34C,EAAKk+F,iBACbD,EAAiB,SAAWtlD,EAAIhsB,EAAI,IACpC,IAGIkD,EAHAsuE,EAAaxlD,GAAKv3C,EAAIurB,GACtB8Q,EAAU,EAA+C,EAA3C50B,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAQ/jB,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAI,IACxGwxE,EAAQn5F,KAAKib,MAAMi+E,EAAa1gE,GAGpC,IAAK5N,EAAI,EAAGA,EAAIuuE,EAAOvuE,GAAK,EAC1BouE,GAAkB,KAAkD,EAA3Cp1F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAQ/jB,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAI,IAAO,IAG5HqxE,GAAkB,KAAW,GAAJtlD,EAAS,MACpC,MACEslD,EAAiB,KAAkD,EAA3Cp1F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAQ/jB,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAI,IAGpH5sB,EAAKiC,aAAa,mBAAoBg8F,EACxC,CAYJ,IARIl8C,GAAel5C,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,OACxDxnC,KAAKm1F,WAAW/7F,aAAa,eAA2D,EAA3C4G,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,IAGlFm1B,GAAel5C,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,OACxDxnC,KAAKm1F,WAAW/7F,aAAa,UAAW4G,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,IAG/B,IAA9C/jB,KAAK+0D,cAAc/I,eAAe,IAAI/nC,EAAEF,GAAyD,IAA9C/jB,KAAK+0D,cAAc/I,eAAe,IAAI/nC,EAAEF,KACzFm1B,GAAel5C,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,MAAM,CAC9D,IAAIjjB,EAAQvkB,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EACnD/jB,KAAKm1F,WAAW/7F,aAAa,SAAU,OAAS+nB,QAAmB,IAAXoD,EAAM,IAAY,IAAMpD,QAAmB,IAAXoD,EAAM,IAAY,IAAMpD,QAAmB,IAAXoD,EAAM,IAAY,IAC5I,CAEJ,EA4BAuvE,iBAAiB1yF,UAAU60B,YAAc,SAAUijB,GACjD,GAAIA,GAAel5C,KAAK+0D,cAAcvtB,KAAM,CAC1C,IAAIguD,EAASx1F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAChD0xE,EAASz1F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAChD2xE,EAAS11F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAChD4xE,EAASD,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDI,EAASF,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACpDK,EAASH,EAAO,GAAK,IAAMD,EAAO,GAAK,IAAMD,EAAO,GACxDx1F,KAAKg0F,QAAQ56F,aAAa,cAAeu8F,GACzC31F,KAAKi0F,QAAQ76F,aAAa,cAAew8F,GACzC51F,KAAKk0F,QAAQ96F,aAAa,cAAey8F,EAC3C,CACF,EA2CA1B,mBAAmB/yF,UAAUgzF,aAAe,SAAUnkF,EAAM8jF,GAC1D,IAAIv8B,EAAShyC,SAASvV,GAGtB,OAFAunD,EAAOp+D,aAAa,OAAQ,SAC5B26F,EAAoB5gF,YAAYqkD,GACzBA,CACT,EAEA28B,mBAAmB/yF,UAAU00F,cAAgB,SAAUC,EAAYC,EAAYC,EAAOC,EAAaC,GAcjG,IAbA,IAEIx3D,EAMAy3D,EARA/rD,EAAM,EAGNnzB,EAAM9a,KAAK8a,IAAI6+E,EAAYC,GAC3B/+E,EAAM7a,KAAK6a,IAAI8+E,EAAYC,GAC3BK,EAAQv+F,MAAM+K,KAAK,KAAM,CAC3BjL,OALa,MAQXwe,EAAM,EACNkgF,EAAcH,EAAcD,EAC5BK,EAAaP,EAAaD,EAEvB1rD,GAAO,KAIV+rD,GAHFz3D,EAAO0L,EAAM,MAEDnzB,EACGq/E,EAAa,EAAIJ,EAAcD,EACnCv3D,GAAQ1nB,EACJs/E,EAAa,EAAIL,EAAcC,EAE/BD,EAAcI,EAAcl6F,KAAK4kB,KAAK2d,EAAOo3D,GAAcQ,EAAY,EAAIN,GAG1FI,EAAMjgF,GAAOggF,EACbhgF,GAAO,EACPi0B,GAAO,IAAM,IAGf,OAAOgsD,EAAM1gF,KAAK,IACpB,EAEAw+E,mBAAmB/yF,UAAU60B,YAAc,SAAUijB,GACnD,GAAIA,GAAel5C,KAAK+0D,cAAcvtB,KAAM,CAC1C,IAAIvyB,EACA+2C,EAAiBhsD,KAAK+0D,cAAc/I,eAEpChsD,KAAKs0F,kBAAoBp7C,GAAe8S,EAAe,GAAG/nC,EAAEujB,MAAQwkB,EAAe,GAAG/nC,EAAEujB,MAAQwkB,EAAe,GAAG/nC,EAAEujB,MAAQwkB,EAAe,GAAG/nC,EAAEujB,MAAQwkB,EAAe,GAAG/nC,EAAEujB,QAC9KvyB,EAAMjV,KAAK81F,cAAc9pC,EAAe,GAAG/nC,EAAEF,EAAGioC,EAAe,GAAG/nC,EAAEF,EAAGioC,EAAe,GAAG/nC,EAAEF,EAAGioC,EAAe,GAAG/nC,EAAEF,EAAGioC,EAAe,GAAG/nC,EAAEF,GACzI/jB,KAAKs0F,gBAAgBl7F,aAAa,cAAe6b,GACjDjV,KAAKu0F,gBAAgBn7F,aAAa,cAAe6b,GACjDjV,KAAKw0F,gBAAgBp7F,aAAa,cAAe6b,IAG/CjV,KAAKg0F,UAAY96C,GAAe8S,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,QAC3KvyB,EAAMjV,KAAK81F,cAAc9pC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,GAC9I/jB,KAAKg0F,QAAQ56F,aAAa,cAAe6b,IAGvCjV,KAAKi0F,UAAY/6C,GAAe8S,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,QAC3KvyB,EAAMjV,KAAK81F,cAAc9pC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,GAC9I/jB,KAAKi0F,QAAQ76F,aAAa,cAAe6b,IAGvCjV,KAAKk0F,UAAYh7C,GAAe8S,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,QAC3KvyB,EAAMjV,KAAK81F,cAAc9pC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,GAC9I/jB,KAAKk0F,QAAQ96F,aAAa,cAAe6b,IAGvCjV,KAAKq0F,UAAYn7C,GAAe8S,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,MAAQwkB,EAAe,IAAI/nC,EAAEujB,QAC3KvyB,EAAMjV,KAAK81F,cAAc9pC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,EAAGioC,EAAe,IAAI/nC,EAAEF,GAC9I/jB,KAAKq0F,QAAQj7F,aAAa,cAAe6b,GAE7C,CACF,EAuCA8I,gBAAgB,CAACk1E,qBAAsBwB,qBAEvCA,oBAAoBrzF,UAAU60B,YAAc,SAAUijB,GACpD,GAAIA,GAAel5C,KAAK+0D,cAAcvtB,KAAM,CAK1C,IAJI0R,GAAel5C,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,OACxDxnC,KAAK20F,eAAev7F,aAAa,eAAgB4G,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAI,GAG1Fm1B,GAAel5C,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,KAAM,CAC9D,IAAIgvD,EAAMx2F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EACjD/jB,KAAK60F,QAAQz7F,aAAa,cAAewrB,SAASxoB,KAAK4lB,MAAe,IAATw0E,EAAI,IAAWp6F,KAAK4lB,MAAe,IAATw0E,EAAI,IAAWp6F,KAAK4lB,MAAe,IAATw0E,EAAI,KACvH,CAMA,IAJIt9C,GAAel5C,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,OACxDxnC,KAAK60F,QAAQz7F,aAAa,gBAAiB4G,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAI,KAGpFm1B,GAAel5C,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,MAAQxnC,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEujB,KAAM,CAC7G,IAAIyb,EAAWjjD,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAClD0pB,GAASztC,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAI,IAAMpC,UAC1DhiB,EAAIsjD,EAAW7mD,KAAKsqC,IAAI+G,GACxB7tC,EAAIqjD,EAAW7mD,KAAK0pC,IAAI2H,GAC5BztC,KAAK40F,SAASx7F,aAAa,KAAMuG,GACjCK,KAAK40F,SAASx7F,aAAa,KAAMwG,EACnC,CACF,CACF,EAEA,IAAI62F,iBAAmB,GAEvB,SAASC,gBAAgBC,EAAY5hC,EAAe57B,GAClDn5B,KAAK6zF,aAAc,EACnB7zF,KAAK+0D,cAAgBA,EACrB/0D,KAAK22F,WAAaA,EAClB32F,KAAKm5B,KAAOA,EACZA,EAAK68B,aAAexwC,SAAS,KAC7B2T,EAAK68B,aAAa7iD,YAAYgmB,EAAKo1B,cACnCp1B,EAAK68B,aAAa7iD,YAAYgmB,EAAK88B,oBACnC98B,EAAKm1B,YAAcn1B,EAAK68B,YAC1B,CAqGA,SAAS4gC,sBAAsBv2F,EAAQ00D,EAAe57B,EAAMxmC,GAE1D0N,EAAOjH,aAAa,IAAK,SACzBiH,EAAOjH,aAAa,IAAK,SACzBiH,EAAOjH,aAAa,QAAS,QAC7BiH,EAAOjH,aAAa,SAAU,QAC9B4G,KAAK+0D,cAAgBA,EACrB,IAAI4/B,EAAiBnvE,SAAS,kBAC9BmvE,EAAev7F,aAAa,SAAUzG,GACtC0N,EAAO8S,YAAYwhF,GACnB30F,KAAK20F,eAAiBA,CACxB,CA6BA,SAASkC,kBAAmB,CAwC5B,SAASC,mBAAmBrmE,EAAGskC,GAC7B/0D,KAAKw3B,KAAKu9B,EACZ,CAIA,SAASgiC,kBAAkBtoC,GACzBzuD,KAAKw3B,KAAKi3B,EACZ,CA+BA,OA1NAioC,gBAAgBt1F,UAAU41F,WAAa,SAAU5kC,GAI/C,IAHA,IAAI5qD,EAAI,EACJmR,EAAM89E,iBAAiB7+F,OAEpB4P,EAAImR,GAAK,CACd,GAAI89E,iBAAiBjvF,KAAO4qD,EAC1B,OAAOqkC,iBAAiBjvF,GAG1BA,GAAK,CACP,CAEA,OAAO,IACT,EAEAkvF,gBAAgBt1F,UAAU61F,gBAAkB,SAAU7kC,EAAM8kC,GAC1D,IAAIt+F,EAAaw5D,EAAK7D,aAAa31D,WAEnC,GAAKA,EAAL,CAQA,IAJA,IAYIu+F,EAZA9b,EAAWziF,EAAWyiF,SACtB7zE,EAAI,EACJmR,EAAM0iE,EAASzjF,OAEZ4P,EAAImR,GACL0iE,EAAS7zE,KAAO4qD,EAAK7D,cAIzB/mD,GAAK,EAKHA,GAAKmR,EAAM,IACbw+E,EAAY9b,EAAS7zE,EAAI,IAG3B,IAAI4vF,EAAU5xE,SAAS,OACvB4xE,EAAQh+F,aAAa,OAAQ,IAAM89F,GAE/BC,EACFv+F,EAAWk0E,aAAasqB,EAASD,GAEjCv+F,EAAWua,YAAYikF,EA1BzB,CA4BF,EAEAV,gBAAgBt1F,UAAUi2F,iBAAmB,SAAUl+D,EAAMi5B,GAC3D,IAAKpyD,KAAKg3F,WAAW5kC,GAAO,CAC1B,IAAI8kC,EAAWxzE,kBACXyzC,EAAS3xC,SAAS,QACtB2xC,EAAO/9D,aAAa,KAAMg5D,EAAK5D,SAC/B2I,EAAO/9D,aAAa,YAAa,SAEjCq9F,iBAAiBp3F,KAAK+yD,GAEtB,IAAI7+B,EAAO4F,EAAK7F,WAAWC,KAC3BA,EAAKpgB,YAAYgkD,GACjB,IAAI9lD,EAASmU,SAAS,UACtBnU,EAAOjY,aAAa,KAAM89F,GAC1Bl3F,KAAKi3F,gBAAgB7kC,EAAM8kC,GAC3B7lF,EAAO8B,YAAYi/C,EAAK7D,cACxBh7B,EAAKpgB,YAAY9B,GACjB,IAAI+lF,EAAU5xE,SAAS,OACvB4xE,EAAQh+F,aAAa,OAAQ,IAAM89F,GACnC//B,EAAOhkD,YAAYikF,GACnBhlC,EAAK9hD,KAAKmmD,IAAK,EACfrE,EAAK/5B,MACP,CAEAc,EAAKu+B,SAAStF,EAAK5D,QACrB,EAEAkoC,gBAAgBt1F,UAAU4xF,WAAa,WAMrC,IALA,IAAInvD,EAAM7jC,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAC7Cq9B,EAAWphD,KAAKm5B,KAAKrR,KAAKs5B,SAC1B55C,EAAI,EACJmR,EAAMyoC,EAASxpD,OAEZ4P,EAAImR,GACLyoC,EAAS55C,IAAM45C,EAAS55C,GAAG8I,KAAKuzB,MAAQA,GAC1C7jC,KAAKq3F,iBAAiBr3F,KAAKm5B,KAAMioB,EAAS55C,IAG5CA,GAAK,EAGPxH,KAAK6zF,aAAc,CACrB,EAEA6C,gBAAgBt1F,UAAU60B,YAAc,WACjCj2B,KAAK6zF,aACR7zF,KAAKgzF,YAET,EAeA4D,sBAAsBx1F,UAAU60B,YAAc,SAAUijB,GACtD,GAAIA,GAAel5C,KAAK+0D,cAAcvtB,KAAM,CAE1C,IACI8vD,EADqB,GACbt3F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAO/CwzE,EAAav3F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EACpDyzE,EAAuB,GAAdD,EAAkB,EAAID,EAE/BG,EAAuB,GAAdF,EAAkB,EAAID,EAEnCt3F,KAAK20F,eAAev7F,aAAa,eAAgBo+F,EAAS,IAAMC,GAKhE,IAAIC,EAAuD,GAA5C13F,KAAK+0D,cAAc/I,eAAe,GAAG/nC,EAAEF,EAAS,OAAS,YAExE/jB,KAAK20F,eAAev7F,aAAa,WAAYs+F,EAC/C,CACF,EAIAb,gBAAgBz1F,UAAUo2B,KAAO,SAAUi3B,GACzCzuD,KAAKyuD,eAAiBA,EACtBzuD,KAAKiQ,KAAO+gD,YAAYC,iBACxBjxD,KAAKmyC,OAAS,IAAI1D,OAClBzuC,KAAKlC,SAAW,EAChBkC,KAAKwnC,MAAO,EACZxnC,KAAK4yD,QAAS,CAChB,EAEAikC,gBAAgBz1F,UAAU60B,YAAc,SAAU0hE,GAIhD,GAHA33F,KAAK4yD,QAAS,EACd5yD,KAAKwnC,MAAO,EAERmwD,GAAc33F,KAAKyuD,eAAejnB,KAAM,CAC1C,IAAIwkB,EAAiBhsD,KAAKyuD,eAAezC,eACrC0kC,EAAS1kC,EAAe,GAAG/nC,EAAEF,EAC7BxN,EAAWy1C,EAAe,GAAG/nC,EAAEF,EAC/B6zE,EAA2C,IAA1B5rC,EAAe,GAAG/nC,EAAEF,EACrC8zE,EAAc7rC,EAAe,GAAG/nC,EAAEF,EAClC+zE,EAAaF,EAAiBC,EAAc7rC,EAAe,GAAG/nC,EAAEF,EAChE0rB,EAAOuc,EAAe,GAAG/nC,EAAEF,EAC3B+pE,EAAW9hC,EAAe,GAAG/nC,EAAEF,EAC/BohE,EAAWn5B,EAAe,GAAG/nC,EAAEF,EACnC/jB,KAAKmyC,OAAOnG,QACZhsC,KAAKmyC,OAAOnC,WAAW0gD,EAAO,IAAKA,EAAO,GAAIA,EAAO,IACrD1wF,KAAKmyC,OAAOxC,MAAmB,IAAbmoD,EAAiC,IAAdD,EAAoB,GACzD73F,KAAKmyC,OAAOnD,QAAQm2C,EAAWxjE,WAC/B3hB,KAAKmyC,OAAOzC,cAAcD,EAAO9tB,WAAYmsE,EAAW,IAAMnsE,WAC9D3hB,KAAKmyC,OAAOnC,UAAUz5B,EAAS,GAAIA,EAAS,GAAI,GAChDvW,KAAKwnC,MAAO,EAERxnC,KAAKlC,UAAYkuD,EAAe,GAAG/nC,EAAEF,IACvC/jB,KAAKlC,QAAUkuD,EAAe,GAAG/nC,EAAEF,EACnC/jB,KAAK4yD,QAAS,EAElB,CACF,EAMA70C,gBAAgB,CAAC84E,iBAAkBC,oBAMnC/4E,gBAAgB,CAAC84E,iBAAkBE,mBAEnC1lE,iBAAiB,SAAU+/C,gBAC3B//C,iBAAiB,OAAQiiD,gBACzBjiD,iBAAiB,MAAOu4C,aAExBp0B,eAAeE,iBAAiB,KAAMG,cACtCL,eAAeE,iBAAiB,KAAMI,wBACtCN,eAAeE,iBAAiB,KAAMgE,kBACtClE,eAAeE,iBAAiB,KAAMiE,sBACtCnE,eAAeE,iBAAiB,KAAM4G,gBACtC9G,eAAeE,iBAAiB,KAAMkK,oBAEtC56B,qBAAqBsjE,aACrBpjE,wBAAwB+pE,cACxByD,eACAM,aAEA39B,iBAAiB,GAAIm+B,eAAe,GACpCn+B,iBAAiB,GAAIs+B,eAAe,GACpCt+B,iBAAiB,GAAIu+B,iBAAiB,GACtCv+B,iBAAiB,GAAIy+B,kBAAkB,GACvCz+B,iBAAiB,GAAI8+B,oBAAoB,GACzC9+B,iBAAiB,GAAIo/B,qBAAqB,GAC1Cp/B,iBAAiB,GAAIqhC,iBAAiB,GACtCrhC,iBAAiB,GAAIuhC,uBAAuB,GAC5CvhC,iBAAiB,GAAIyhC,oBAAoB,GACzC5oB,eAAe,GAAI6oB,mBAEZhgG,MAER,EA1rnBgE0J,OAAOC,QAAUyc,6BCIlF,IAAiDA,EAS9C/Y,KAT8C+Y,EASxC,WACT,MAAgB,MACN,IAAI46E,EAAsB,CAE9B,8BAIA,CAAEt3F,EAAQC,EAAS,KAEzB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAElB,IAAIC,EAASC,EAAuB,EAAwC,wBAExEC,EAASD,EAAuB,EAAyC,yBAE7E,SAASA,EAAuB13E,GAAO,OAAOA,GAAOA,EAAI43E,WAAa53E,EAAM,CAAEw3E,QAASx3E,EAAO,CAI9F,SAAS63E,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CAW5T,IAAI8qF,EAA2B,WAC7B,SAASA,KAdX,SAAyBC,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CAepJ43F,CAAgBx4F,KAAMs4F,GAOtBt4F,KAAKy4F,KAAO,KAOZz4F,KAAK04F,QAAU,KAOf14F,KAAK24F,SAAW,KAOhB34F,KAAK44F,YAAc,KAOnB54F,KAAK+W,MAAQ,EAOb/W,KAAKgX,IAAM,EAOXhX,KAAKrN,IAAK,EAAIwlG,EAAOH,cAA0C,IAA1Bh4F,KAAKiF,YAAY+E,KAAuBhK,KAAKiF,YAAY+E,KAAK4G,cAAgB,IAAM,gBAOzH5Q,KAAK64F,wBAA0B,CAAC,CAClC,CApEF,IAAsBl/E,EAAam/E,EA0XjC,OA1XoBn/E,EA4EP2+E,GA5EoBQ,EA4EP,CAAC,CACzBn9F,IAAK,WACL1H,MAAO,SAAkBiuB,GACvBliB,KAAKy4F,KAAOv2E,EACZliB,KAAK04F,QAAU14F,KAAKy4F,KAAKlsE,WAAW,KAAMvsB,KAAK64F,wBACjD,GAQC,CACDl9F,IAAK,eACL1H,MAAO,SAAsBiuB,GAC3BliB,KAAK24F,SAAWz2E,EAChBliB,KAAK44F,YAAc54F,KAAK24F,SAASpsE,WAAW,KAAMvsB,KAAK64F,wBACzD,GAUC,CACDl9F,IAAK,mBACL1H,MAAO,SAA0B6jF,EAAcihB,EAAYl7F,EAAOhM,GAGhEmO,KAAK+W,MAAQ/W,KAAKy4F,KAAKO,WAAaD,GAAc,EAClD/4F,KAAKgX,IAAMhX,KAAK+W,MAAQ+gE,EAAeihB,EAEvC/4F,KAAKy4F,KAAK56F,MAAQA,EAClBmC,KAAKy4F,KAAK5mG,OAASA,EACnB,IAAIonG,EAAc,CAChBp7F,MAAOi6E,EAAe,OAExB,EAAImgB,EAAOD,SAASh4F,KAAKy4F,KAAMQ,GAE3Bj5F,KAAKk5F,oBAEPl5F,KAAK24F,SAAS96F,MAAQA,EACtBmC,KAAK24F,SAAS9mG,OAASA,GACvB,EAAIomG,EAAOD,SAASh4F,KAAK24F,SAAUM,GAEvC,GAKC,CACDt9F,IAAK,YACL1H,MAAO,WAEL+L,KAAK04F,QAAQzkB,UAAU,EAAG,EAAGj0E,KAAK04F,QAAQrsE,OAAOxuB,MAAOmC,KAAK04F,QAAQrsE,OAAOx6B,QAExEmO,KAAKk5F,mBACPl5F,KAAK44F,YAAY3kB,UAAU,EAAG,EAAGj0E,KAAK44F,YAAYvsE,OAAOxuB,MAAOmC,KAAK44F,YAAYvsE,OAAOx6B,OAE5F,GAQC,CACD8J,IAAK,gBACL1H,MAAO,SAAuBzC,EAAWC,GACvCuO,KAAK04F,QAAQlsE,UAAYh7B,EAErBwO,KAAKk5F,oBACPl5F,KAAK44F,YAAYpsE,UAAY/6B,EAEjC,GAOC,CACDkK,IAAK,wBACL1H,MAAO,SAA+BklG,GAChCA,IAEFn5F,KAAK04F,QAAQ7oD,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAErC7vC,KAAKk5F,mBACPl5F,KAAK44F,YAAY/oD,aAAa,EAAG,EAAG,EAAG,EAAG,EAAG,GAGnD,GAWC,CACDl0C,IAAK,YACL1H,MAAO,SAAmB0L,EAAGC,EAAG/B,EAAOhM,EAAQktD,GAC7C/+C,KAAKo5F,kBAAkBp5F,KAAK04F,QAAS/4F,EAAGC,EAAG/B,EAAOhM,EAAQktD,GAEtD/+C,KAAKk5F,mBACPl5F,KAAKo5F,kBAAkBp5F,KAAK44F,YAAaj5F,EAAGC,EAAG/B,EAAOhM,EAAQktD,EAElE,GAYC,CACDpjD,IAAK,oBACL1H,MAAO,SAA2Bq4B,EAAK3sB,EAAGC,EAAG/B,EAAOhM,EAAQktD,GACrDzyB,IAIDyyB,EACF/+C,KAAKq5F,gBAAgB/sE,EAAK3sB,EAAGC,EAAG/B,EAAOhM,EAAQktD,GAE/CzyB,EAAIG,SAAS9sB,EAAGC,EAAG/B,EAAOhM,GAE9B,GAeC,CACD8J,IAAK,kBACL1H,MAAO,SAAyBq4B,EAAK3sB,EAAGC,EAAG/B,EAAOhM,EAAQktD,GACzC,IAAXltD,IAMAA,EAAS,IAEX+N,GADA/N,IAAW,GAIby6B,EAAIiiD,YACJjiD,EAAIkiD,OAAO7uE,EAAIo/C,EAAQn/C,GACvB0sB,EAAImiD,OAAO9uE,EAAI9B,EAAQkhD,EAAQn/C,GAC/B0sB,EAAIgtE,iBAAiB35F,EAAI9B,EAAO+B,EAAGD,EAAI9B,EAAO+B,EAAIm/C,GAClDzyB,EAAImiD,OAAO9uE,EAAI9B,EAAO+B,EAAI/N,EAASktD,GACnCzyB,EAAIgtE,iBAAiB35F,EAAI9B,EAAO+B,EAAI/N,EAAQ8N,EAAI9B,EAAQkhD,EAAQn/C,EAAI/N,GACpEy6B,EAAImiD,OAAO9uE,EAAIo/C,EAAQn/C,EAAI/N,GAC3By6B,EAAIgtE,iBAAiB35F,EAAGC,EAAI/N,EAAQ8N,EAAGC,EAAI/N,EAASktD,GACpDzyB,EAAImiD,OAAO9uE,EAAGC,EAAIm/C,GAClBzyB,EAAIgtE,iBAAiB35F,EAAGC,EAAGD,EAAIo/C,EAAQn/C,GACvC0sB,EAAIypD,YACJzpD,EAAIgjD,OACN,GAcC,CACD3zE,IAAK,YACL1H,MAAO,SAAmBslG,EAAOC,EAAQC,EAAOC,EAAS3iF,EAAOC,GAC9DhX,KAAK25F,kBAAkB35F,KAAK04F,QAASa,EAAOC,EAAQC,EAAOC,EAAS3iF,EAAOC,GAEvEhX,KAAKk5F,mBACPl5F,KAAK25F,kBAAkB35F,KAAK44F,YAAaW,EAAOC,EAAQC,EAAOC,EAAS3iF,EAAOC,EAEnF,GAeC,CACDrb,IAAK,oBACL1H,MAAO,SAA2Bq4B,EAAKitE,EAAOC,EAAQC,EAAOC,EAAS3iF,EAAOC,GAC3E,GAAKsV,EAAL,CAIA,IAcI9kB,EAAGoyF,EAAM/1E,EAdTjsB,EAAS2hG,EAAM3hG,OAAS,EACxBye,EAAQja,KAAK4lB,MAAMpqB,EAASoI,KAAK+W,OAIjC8iF,EAAcxjF,EACdyjF,EAFO19F,KAAK4lB,MAAMpqB,EAASoI,KAAKgX,KAAO,EAGvC24B,EAAQ3vC,KAAKy4F,KAAK56F,OAASi8F,EAAYD,EAAc,GAErDE,EAAaN,EAAQC,EACrBM,EAAaR,EAASC,EAM1B,IALAntE,EAAIiiD,YACJjiD,EAAIkiD,QAAQqrB,EAAcxjF,GAASs5B,EAAOoqD,GAC1CztE,EAAImiD,QAAQorB,EAAcxjF,GAASs5B,EAAOoqD,EAAa39F,KAAK4lB,OAAOu3E,EAAM,EAAIM,IAAgB,GAAKG,IAG7FxyF,EAAIqyF,EAAaryF,EAAIsyF,EAAWtyF,IACnCoyF,EAAOL,EAAM,EAAI/xF,IAAM,EACvBqc,EAAIznB,KAAK4lB,MAAM43E,EAAOI,GACtB1tE,EAAImiD,QAAQjnE,EAAI6O,GAASs5B,EAAQ3vC,KAAKi6F,UAAWF,EAAal2E,GAOhE,IAFA,IAAImD,EAAI8yE,EAAY,EAEZ9yE,GAAK6yE,EAAa7yE,IACxB4yE,EAAOL,EAAM,EAAIvyE,EAAI,IAAM,EAC3BnD,EAAIznB,KAAK4lB,MAAM43E,EAAOI,GACtB1tE,EAAImiD,QAAQznD,EAAI3Q,GAASs5B,EAAQ3vC,KAAKi6F,UAAWF,EAAal2E,GAGhEyI,EAAImiD,QAAQorB,EAAcxjF,GAASs5B,EAAOoqD,EAAa39F,KAAK4lB,OAAOu3E,EAAM,EAAIM,EAAc,IAAM,GAAKG,IACtG1tE,EAAIypD,YACJzpD,EAAIgjD,MApCJ,CAqCF,GAKC,CACD3zE,IAAK,UACL1H,MAAO,WACL+L,KAAK04F,QAAU,KACf14F,KAAKy4F,KAAO,KACZz4F,KAAK44F,YAAc,KACnB54F,KAAK24F,SAAW,IAClB,GAeC,CACDh9F,IAAK,WACL1H,MAAO,SAAkBimG,EAAQC,EAASlqF,GACxC,IAAI9X,EAAQ6H,KAEZ,MAAa,SAATiQ,EACK,IAAImqF,SAAQ,SAAUC,GAC3BliG,EAAMsgG,KAAK6B,OAAOD,EAASH,EAAQC,EACrC,IACkB,YAATlqF,EACFjQ,KAAKy4F,KAAK8B,UAAUL,EAAQC,QAD9B,CAGT,MAvX0E9B,EAAkB1+E,EAAYvY,UAAW03F,GA0X9GR,CACT,CAlX+B,GAoX/B53F,EAAQs3F,QAAUM,EAClB73F,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,kBAIA,CAAEv3F,EAAQC,EAAS,KAEzB,aAGA,SAAS8tF,EAAQhuE,GAAmV,OAAtOguE,EAArD,mBAAXnkF,QAAoD,iBAApBA,OAAOjI,SAAmC,SAAiBoe,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYguE,EAAQhuE,EAAM,CAEzXzZ,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAElB,IAAIwC,EAIJ,SAAiCh6E,EAAKi6E,GAAe,GAAoBj6E,GAAOA,EAAI43E,WAAc,OAAO53E,EAAO,GAAY,OAARA,GAAiC,WAAjBguE,EAAQhuE,IAAoC,mBAARA,EAAsB,MAAO,CAAEw3E,QAASx3E,GAAS,IAAI0nC,EAAQwyC,EAAyBD,GAAc,GAAIvyC,GAASA,EAAMjhD,IAAIuZ,GAAQ,OAAO0nC,EAAM59C,IAAIkW,GAAQ,IAAIm6E,EAAS,CAAC,EAAOC,EAAwB7zF,OAAOO,gBAAkBP,OAAOQ,yBAA0B,IAAK,IAAI5L,KAAO6kB,EAAO,GAAY,YAAR7kB,GAAqBoL,OAAO3F,UAAUsN,eAAe7L,KAAK2d,EAAK7kB,GAAM,CAAE,IAAIgf,EAAOigF,EAAwB7zF,OAAOQ,yBAAyBiZ,EAAK7kB,GAAO,KAAUgf,IAASA,EAAKrQ,KAAOqQ,EAAK3L,KAAQjI,OAAOO,eAAeqzF,EAAQh/F,EAAKgf,GAAgBggF,EAAOh/F,GAAO6kB,EAAI7kB,EAAQ,CAAiE,OAA7Dg/F,EAAO3C,QAAUx3E,EAAS0nC,GAASA,EAAMl5C,IAAIwR,EAAKm6E,GAAkBA,CAAQ,CAJ1xBE,CAAwB,EAAkC,wBAErE,SAASH,EAAyBD,GAAe,GAAuB,mBAAZlrF,QAAwB,OAAO,KAAM,IAAIurF,EAAoB,IAAIvrF,QAAewrF,EAAmB,IAAIxrF,QAAW,OAAQmrF,EAA2B,SAAkCD,GAAe,OAAOA,EAAcM,EAAmBD,CAAmB,GAAGL,EAAc,CAM9U,SAASpC,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CAM5T,SAASwtF,EAAgB5yE,EAAGnE,GAA+G,OAA1G+2E,EAAkBj0F,OAAO0B,gBAAkB,SAAyB2f,EAAGnE,GAAsB,OAAjBmE,EAAEtT,UAAYmP,EAAUmE,CAAG,EAAU4yE,EAAgB5yE,EAAGnE,EAAI,CAUzK,SAASg3E,EAAgB7yE,GAAwJ,OAAnJ6yE,EAAkBl0F,OAAO0B,eAAiB1B,OAAOW,eAAiB,SAAyB0gB,GAAK,OAAOA,EAAEtT,WAAa/N,OAAOW,eAAe0gB,EAAI,EAAU6yE,EAAgB7yE,EAAI,CAO5M,IAAI8yE,EAAsB,SAAUC,IAnBpC,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz6F,UAAU,sDAAyDw6F,EAASh6F,UAAY2F,OAAO/F,OAAOq6F,GAAcA,EAAWj6F,UAAW,CAAE6D,YAAa,CAAEhR,MAAOmnG,EAAU/yF,UAAU,EAAM/G,cAAc,KAAe+5F,GAAYL,EAAgBI,EAAUC,EAAa,CAoB9XC,CAAUJ,EAAQC,GAElB,IAxBoBxhF,EAAam/E,EAMbyC,EAAeC,EAkB/BC,GAlBgBF,EAkBML,EAlBSM,EAMrC,WAAuC,GAAuB,oBAAZE,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAU7tF,KAAM,OAAO,EAAO,GAAqB,mBAAV8tF,MAAsB,OAAO,EAAM,IAAsF,OAAhFz2F,QAAQ/D,UAAU8T,QAAQrS,KAAK64F,QAAQC,UAAUx2F,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO5M,GAAK,OAAO,CAAO,CAAE,CANvQsjG,GAAoC,WAAkC,IAAsC35F,EAAlC45F,EAAQb,EAAgBM,GAAkB,GAAIC,EAA2B,CAAE,IAAIO,EAAYd,EAAgBj7F,MAAMiF,YAAa/C,EAASw5F,QAAQC,UAAUG,EAAOnkG,UAAWokG,EAAY,MAAS75F,EAAS45F,EAAM5jG,MAAM8H,KAAMrI,WAAc,OAEpX,SAAoCyM,EAAMvB,GAAQ,GAAIA,IAA2B,WAAlB2rF,EAAQ3rF,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIjC,UAAU,4DAA+D,OAE1P,SAAgCwD,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI43F,eAAe,6DAAgE,OAAO53F,CAAM,CAF4F63F,CAAuB73F,EAAO,CAF4F83F,CAA2Bl8F,KAAMkC,EAAS,GAwBna,SAASg5F,EAAO3pG,EAAW0hC,GACzB,IAAI96B,EA8BJ,OAjEJ,SAAyBogG,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CAqCpJ43F,CAAgBx4F,KAAMk7F,IAEtB/iG,EAAQsjG,EAAO54F,KAAK7C,OACdzO,UAAYipG,EAAK2B,gBAAgB5qG,EAAW0hC,EAAOkmE,UAKzDhhG,EAAM86B,OAASA,EAMf96B,EAAM0F,MAAQ,EAMd1F,EAAMtG,OAASohC,EAAOphC,OAASsG,EAAM86B,OAAOmpE,WAC5CjkG,EAAMkkG,QAAU,EAMhBlkG,EAAM+6B,QAAU,KACT/6B,CACT,CA8YA,OA5coBwhB,EAwEPuhF,GAxEoBpC,EAwEZ,CAAC,CACpBn9F,IAAK,QACL1H,MAAO,SAAemP,EAAI28C,GACxB,OAAOy6C,EAAKrpG,MAAMiS,EAAI28C,EACxB,GAMC,CACDpkD,IAAK,gBACL1H,MAAO,WACL+L,KAAKkzB,QAAUsnE,EAAK2B,gBAAgBn8F,KAAKzO,UAAU4hB,YAAYpiB,SAAS0Z,cAAc,SAAUzK,KAAKizB,OAAOkmE,UAC5Gn5F,KAAK7O,MAAM6O,KAAKkzB,QAAS,CACvB9hC,QAAS,QACTmlB,SAAU,WACV+lF,WAAY,OACZC,iBAAkB,OAClB1qG,OAAQmO,KAAKizB,OAAOphC,OAAS,QAG3BmO,KAAKizB,OAAOupE,YAAcx8F,KAAKizB,OAAOlhC,eACxCiO,KAAK7O,MAAM6O,KAAKkzB,QAAS,CACvBr1B,MAAO,OACP4+F,UAAWz8F,KAAKizB,OAAOypE,cAAgB,SAAW,OAClDC,UAAW,WAIf38F,KAAK48F,oBACP,GASC,CACDjhG,IAAK,cACL1H,MAAO,SAAqBsE,EAAGskG,IAC5BA,GAAatkG,EAAEoE,iBAChB,IAKIg8F,EALAmE,EAAUtC,EAAK2B,gBAAgB5jG,EAAEwkG,cAAgBxkG,EAAEwkG,cAAc,GAAKxkG,EAAGyH,KAAKizB,OAAOkmE,UAAU2D,QAC/FzwB,EAAOrsE,KAAKkzB,QAAQv4B,wBACpBqiG,EAAeh9F,KAAKnC,MACpBo/F,EAAcj9F,KAAKk9F,WACnBC,EAAiBn9F,KAAKo9F,kBAAkB/wB,EAAMywB,GASlD,OALEnE,GADG34F,KAAKizB,OAAOupE,YAAcQ,EAAeC,EACjCE,GAAkBn9F,KAAKizB,OAAOmpE,WAAaY,IAAiB,GAE3DG,EAAiBn9F,KAAKkzB,QAAQmqE,YAAcr9F,KAAKkzB,QAAQrzB,aAAe,EAG/E26F,EAAKrY,MAAMwW,EAAU,EAAG,EACjC,GACC,CACDh9F,IAAK,oBACL1H,MAAO,SAA2BqpG,EAAaR,GAC7C,OAAI98F,KAAKizB,OAAOsqE,IACPD,EAAY99C,MAAQs9C,EAEpBA,EAAUQ,EAAY/iG,IAEjC,GACC,CACDoB,IAAK,qBACL1H,MAAO,WACL,IAAIupG,EAASx9F,KAEbA,KAAKkzB,QAAQj+B,iBAAiB,SAAS,SAAUsD,GAC/C,IAAIklG,EAAgBjD,EAAK2B,gBAAgB5jG,EAAGilG,EAAOvqE,OAAOkmE,UACtDuE,EAAkBF,EAAOtqE,QAAQp/B,aAAe0pG,EAAOtqE,QAAQyqE,aAEnE,GAAwB,IAApBD,EAAuB,CAEzB,IAAIrxB,EAAOmxB,EAAOtqE,QAAQv4B,wBAE1B,GAAI8iG,EAAcG,SAAWvxB,EAAKluE,OAASu/F,EAEzC,MAEJ,CAEIF,EAAOvqE,OAAO4qE,UAChBL,EAAOM,UAAU,QAASvlG,EAAGilG,EAAOO,YAAYxlG,GAEpD,IACAyH,KAAKkzB,QAAQj+B,iBAAiB,YAAY,SAAUsD,GAC9CilG,EAAOvqE,OAAO4qE,UAChBL,EAAOM,UAAU,WAAYvlG,EAAGilG,EAAOO,YAAYxlG,GAEvD,IACAyH,KAAKkzB,QAAQj+B,iBAAiB,UAAU,SAAUsD,GAChD,OAAOilG,EAAOM,UAAU,SAAUvlG,EACpC,GACF,GAaC,CACDoD,IAAK,YACL1H,MAAO,SAAmBslG,EAAO3hG,EAAQmf,EAAOC,GACzChX,KAAKg+F,SAASpmG,IACjBoI,KAAKi+F,YAGPj+F,KAAKizB,OAAOnhC,SAAWkO,KAAKk+F,SAAS3E,EAAO,EAAGxiF,EAAOC,GAAOhX,KAAKm+F,SAAS5E,EAAO,EAAGxiF,EAAOC,EAC9F,GAKC,CACDrb,IAAK,cACL1H,MAAO,WACgB,OAAjB+L,KAAKkzB,UACPlzB,KAAKkzB,QAAQmqE,WAAa,EAE9B,GAOC,CACD1hG,IAAK,WACL1H,MAAO,SAAkB4tC,GACvB,IAAItrB,EAAWvW,KAAKkzB,QAAQrzB,YAAcgiC,EAC1C7hC,KAAKo+F,mBAAmB7nF,GAAU,EACpC,GASC,CACD5a,IAAK,qBACL1H,MAAO,SAA4BsiB,EAAU/e,GAC3C,IAAI6lG,EAAar9F,KAAKkzB,QAAQmqE,WAC1BgB,KAAUr+F,KAAKkzB,QAAQorE,YAAc,GACrCC,EAAYv+F,KAAKkzB,QAAQrzB,YAAcG,KAAKkzB,QAAQorE,YACpD7lG,EAAS8d,EAAW8nF,EACpB75E,EAAS/rB,EAAS4kG,EAEtB,GAAiB,GAAbkB,EAAJ,CAMA,IAAK/mG,IAAc6mG,GAAQ75E,GAAUA,EAAS65E,EAAM,CAElD,IAAI5+E,EAAOzf,KAAKizB,OAAOurE,eAEvB/+E,GAAQ4+E,EACR5+E,GAAQ8+E,EAER9lG,EAAS4kG,GADT74E,EAASpoB,KAAK6a,KAAKwI,EAAMrjB,KAAK8a,IAAIuI,EAAM+E,IAE1C,EAGA/rB,EAAS2D,KAAK6a,IAAI,EAAG7a,KAAK8a,IAAIqnF,EAAW9lG,MAE3B4kG,IACZr9F,KAAKkzB,QAAQmqE,WAAa5kG,EAjB5B,CAmBF,GAOC,CACDkD,IAAK,aACL1H,MAAO,WACL,IAAI0L,EAAI,EAER,GAAIK,KAAKkzB,QAAS,CAChB,IAAIkpE,EAAap8F,KAAKizB,OAAOmpE,WAO7B,GANAz8F,EAAIvD,KAAK4lB,MAAMhiB,KAAKkzB,QAAQmqE,WAAajB,GAMrCp8F,KAAKizB,OAAOlhC,aAAc,CAC5B,IAAIwsG,KAAev+F,KAAKkzB,QAAQrzB,YAAcu8F,EAAap8F,KAAKk9F,YAChEv9F,EAAIvD,KAAK8a,IAAIqnF,EAAWniG,KAAK6a,IAAI,EAAGtX,GACtC,CACF,CAEA,OAAOA,CACT,GAOC,CACDhE,IAAK,WACL1H,MAAO,WACL,OAAOmI,KAAK4lB,MAAMhiB,KAAKzO,UAAU+sG,YAAct+F,KAAKizB,OAAOmpE,WAC7D,GAQC,CACDzgG,IAAK,WACL1H,MAAO,SAAkB4J,GACvB,GAAImC,KAAKnC,OAASA,EAChB,OAAO,EAKT,GAFAmC,KAAKnC,MAAQA,EAETmC,KAAKizB,OAAOupE,YAAcx8F,KAAKizB,OAAOlhC,aACxCiO,KAAK7O,MAAM6O,KAAKkzB,QAAS,CACvBr1B,MAAO,SAEJ,CACL,IAAI4gG,KAAcz+F,KAAKnC,MAAQmC,KAAKizB,OAAOmpE,YAAc,KACzDp8F,KAAK7O,MAAM6O,KAAKkzB,QAAS,CACvBr1B,MAAO4gG,GAEX,CAGA,OADAz+F,KAAK0+F,cACE,CACT,GAQC,CACD/iG,IAAK,YACL1H,MAAO,SAAmBpC,GACxB,OAAIA,GAAUmO,KAAKnO,SAInBmO,KAAKnO,OAASA,EACdmO,KAAK7O,MAAM6O,KAAKkzB,QAAS,CACvBrhC,UAAWmO,KAAKnO,OAASmO,KAAKizB,OAAOmpE,YAAc,OAErDp8F,KAAK0+F,cACE,EACT,GAOC,CACD/iG,IAAK,WACL1H,MAAO,SAAkB0qG,GACvB,IAAIC,EAAa,EAAI5+F,KAAKizB,OAAOmpE,WAC7BhmF,EAAMha,KAAK4lB,MAAM28E,EAAY3+F,KAAKnC,OAAS+gG,EAE/C,GAAIxoF,EAAMpW,KAAKq8F,SAAWjmF,EAAMpW,KAAKq8F,SAAWuC,EAAY,CAG1D,GAFA5+F,KAAKq8F,QAAUjmF,EAEXpW,KAAKizB,OAAOlhC,cAAgBiO,KAAKizB,OAAO4rE,WAAY,CACtD,IAAIC,KAAY9+F,KAAKkzB,QAAQrzB,YAAc8+F,GAC3C3+F,KAAKo+F,mBAAmBU,EAAQ9+F,KAAKizB,OAAO8rE,sBAC9C,CAEA/+F,KAAKtL,eAAe0hB,EACtB,CACF,GAKC,CACDza,IAAK,UACL1H,MAAO,WACL+L,KAAKg/F,QAEDh/F,KAAKkzB,UACHlzB,KAAKkzB,QAAQt6B,YAAcoH,KAAKzO,UAAU0tG,YAC5Cj/F,KAAKzO,UAAUk4D,YAAYzpD,KAAKkzB,QAAQ+rE,YAG1Cj/F,KAAKkzB,QAAU,KAEnB,GASC,CACDv3B,IAAK,eACL1H,MAAO,WAAyB,GAO/B,CACD0H,IAAK,aACL1H,MAAO,WAAuB,GAe7B,CACD0H,IAAK,WACL1H,MAAO,SAAkBslG,EAAO2F,EAAcnoF,EAAOC,GAAM,GAe1D,CACDrb,IAAK,WACL1H,MAAO,SAAkBslG,EAAO2F,EAAcnoF,EAAOC,GAAM,GAO1D,CACDrb,IAAK,YACL1H,MAAO,WAAsB,GAQ5B,CACD0H,IAAK,iBACL1H,MAAO,SAAwBsiB,GAAW,MAzcgC8hF,EAAkB1+E,EAAYvY,UAAW03F,GA4c9GoC,CACT,CAxb0B,CAwbxBV,EAAK2E,UAEPz+F,EAAQs3F,QAAUkD,EAClBz6F,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,8BAIA,CAAEv3F,EAAQC,EAAS,KAEzB,aAGA,SAAS8tF,EAAQhuE,GAAmV,OAAtOguE,EAArD,mBAAXnkF,QAAoD,iBAApBA,OAAOjI,SAAmC,SAAiBoe,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYguE,EAAQhuE,EAAM,CAEzXzZ,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAElB,IAAIoH,EAAUlH,EAAuB,EAAoC,oBAErEsC,EAMJ,SAAiCh6E,EAAKi6E,GAAe,GAAoBj6E,GAAOA,EAAI43E,WAAc,OAAO53E,EAAO,GAAY,OAARA,GAAiC,WAAjBguE,EAAQhuE,IAAoC,mBAARA,EAAsB,MAAO,CAAEw3E,QAASx3E,GAAS,IAAI0nC,EAAQwyC,EAAyBD,GAAc,GAAIvyC,GAASA,EAAMjhD,IAAIuZ,GAAQ,OAAO0nC,EAAM59C,IAAIkW,GAAQ,IAAIm6E,EAAS,CAAC,EAAOC,EAAwB7zF,OAAOO,gBAAkBP,OAAOQ,yBAA0B,IAAK,IAAI5L,KAAO6kB,EAAO,GAAY,YAAR7kB,GAAqBoL,OAAO3F,UAAUsN,eAAe7L,KAAK2d,EAAK7kB,GAAM,CAAE,IAAIgf,EAAOigF,EAAwB7zF,OAAOQ,yBAAyBiZ,EAAK7kB,GAAO,KAAUgf,IAASA,EAAKrQ,KAAOqQ,EAAK3L,KAAQjI,OAAOO,eAAeqzF,EAAQh/F,EAAKgf,GAAgBggF,EAAOh/F,GAAO6kB,EAAI7kB,EAAQ,CAAiE,OAA7Dg/F,EAAO3C,QAAUx3E,EAAS0nC,GAASA,EAAMl5C,IAAIwR,EAAKm6E,GAAkBA,CAAQ,CAN1xBE,CAAwB,EAAkC,wBAEjEwE,EAAWnH,EAAuB,EAAgD,gCAEtF,SAASwC,EAAyBD,GAAe,GAAuB,mBAAZlrF,QAAwB,OAAO,KAAM,IAAIurF,EAAoB,IAAIvrF,QAAewrF,EAAmB,IAAIxrF,QAAW,OAAQmrF,EAA2B,SAAkCD,GAAe,OAAOA,EAAcM,EAAmBD,CAAmB,GAAGL,EAAc,CAI9U,SAASvC,EAAuB13E,GAAO,OAAOA,GAAOA,EAAI43E,WAAa53E,EAAM,CAAEw3E,QAASx3E,EAAO,CAI9F,SAAS63E,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CAM5T,SAASwtF,EAAgB5yE,EAAGnE,GAA+G,OAA1G+2E,EAAkBj0F,OAAO0B,gBAAkB,SAAyB2f,EAAGnE,GAAsB,OAAjBmE,EAAEtT,UAAYmP,EAAUmE,CAAG,EAAU4yE,EAAgB5yE,EAAGnE,EAAI,CAUzK,SAASg3E,EAAgB7yE,GAAwJ,OAAnJ6yE,EAAkBl0F,OAAO0B,eAAiB1B,OAAOW,eAAiB,SAAyB0gB,GAAK,OAAOA,EAAEtT,WAAa/N,OAAOW,eAAe0gB,EAAI,EAAU6yE,EAAgB7yE,EAAI,CAS5M,IAAIk3E,EAA2B,SAAUC,IArBzC,SAAmBnE,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz6F,UAAU,sDAAyDw6F,EAASh6F,UAAY2F,OAAO/F,OAAOq6F,GAAcA,EAAWj6F,UAAW,CAAE6D,YAAa,CAAEhR,MAAOmnG,EAAU/yF,UAAU,EAAM/G,cAAc,KAAe+5F,GAAYL,EAAgBI,EAAUC,EAAa,CAsB9XC,CAAUgE,EAAaC,GAEvB,IA1BoB5lF,EAAam/E,EAMbyC,EAAeC,EAoB/BC,GApBgBF,EAoBM+D,EApBS9D,EAMrC,WAAuC,GAAuB,oBAAZE,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAU7tF,KAAM,OAAO,EAAO,GAAqB,mBAAV8tF,MAAsB,OAAO,EAAM,IAAsF,OAAhFz2F,QAAQ/D,UAAU8T,QAAQrS,KAAK64F,QAAQC,UAAUx2F,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO5M,GAAK,OAAO,CAAO,CAAE,CANvQsjG,GAAoC,WAAkC,IAAsC35F,EAAlC45F,EAAQb,EAAgBM,GAAkB,GAAIC,EAA2B,CAAE,IAAIO,EAAYd,EAAgBj7F,MAAMiF,YAAa/C,EAASw5F,QAAQC,UAAUG,EAAOnkG,UAAWokG,EAAY,MAAS75F,EAAS45F,EAAM5jG,MAAM8H,KAAMrI,WAAc,OAEpX,SAAoCyM,EAAMvB,GAAQ,GAAIA,IAA2B,WAAlB2rF,EAAQ3rF,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIjC,UAAU,4DAA+D,OAE1P,SAAgCwD,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI43F,eAAe,6DAAgE,OAAO53F,CAAM,CAF4F63F,CAAuB73F,EAAO,CAF4F83F,CAA2Bl8F,KAAMkC,EAAS,GA0Bna,SAASo9F,EAAY/tG,EAAW0hC,GAC9B,IAAI96B,EA4EJ,OAjHJ,SAAyBogG,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CAuCpJ43F,CAAgBx4F,KAAMs/F,IAEtBnnG,EAAQsjG,EAAO54F,KAAK7C,KAAMzO,EAAW0hC,IAK/BusE,eAAiBvsE,EAAOusE,eAK9BrnG,EAAMsnG,sBAAwBrjG,KAAK4lB,MAAMiR,EAAOusE,eAAiBvsE,EAAOmpE,YAQxEjkG,EAAM+gG,kBAAoBjmE,EAAOzhC,WAAayhC,EAAOxhC,cAKrD0G,EAAM8hG,UAAY,GAAMhnE,EAAOmpE,WAO/BjkG,EAAMunG,SAAW,GAKjBvnG,EAAMwnG,aAAe,KAOrBxnG,EAAMynG,WAAaP,EAASrH,QAO5B7/F,EAAM0gG,wBAA0B5lE,EAAO4sE,yBAQvC1nG,EAAM2nG,QAAU,EAAI1jG,KAAKgb,KAAK6b,EAAOmpE,WAAa,GAOlDjkG,EAAMlG,UAAYghC,EAAOhhC,WAAa,EAOtCkG,EAAMghG,SAAWlmE,EAAOkmE,SACjBhhG,CACT,CAyhBA,OAvoBoBwhB,EAoHP2lF,EApHoBxG,EAoHP,CAAC,CACzBn9F,IAAK,OACL1H,MAAO,WACL+L,KAAK+/F,gBACL//F,KAAKuzE,gBACP,GAMC,CACD53E,IAAK,iBACL1H,MAAO,WACL+L,KAAK2/F,aAAenF,EAAK2B,gBAAgBn8F,KAAKkzB,QAAQ/f,YAAYpiB,SAAS0Z,cAAc,SAAUzK,KAAKizB,OAAOkmE,UAC/Gn5F,KAAK7O,MAAM6O,KAAK2/F,aAAc,CAC5BppF,SAAU,WACVypF,OAAQ,EACRzlG,KAAM,EACNC,IAAK,EACL2D,OAAQ,EACR9C,SAAU,SACVwC,MAAO,IACPzM,QAAS,OACT6uG,UAAW,aACXC,iBAAkB,QAClBC,cAAe,SAEjBngG,KAAKogG,YACLpgG,KAAKqgG,cACP,GAKC,CACD1kG,IAAK,eACL1H,MAAO,WACL+L,KAAK7O,MAAM6O,KAAK2/F,aAAc,CAC5BW,iBAAkBtgG,KAAKizB,OAAOthC,YAAc,KAC5C4uG,iBAAkBvgG,KAAKizB,OAAOvhC,aAElC,GAKC,CACDiK,IAAK,aACL1H,MAAO,WAML,IALA,IAAIupG,EAASx9F,KAET+4F,EAAa38F,KAAK4lB,MAAMhiB,KAAKnC,MAAQmC,KAAKizB,OAAOmpE,YACjDoE,EAAmBpkG,KAAKgb,KAAK2hF,GAAc/4F,KAAKy/F,sBAAwBz/F,KAAK8/F,UAE1E9/F,KAAK0/F,SAAS9nG,OAAS4oG,GAC5BxgG,KAAKogG,YAIP,KAAOpgG,KAAK0/F,SAAS9nG,OAAS4oG,GAC5BxgG,KAAKygG,eAGP,IAAIC,EAAc1gG,KAAKw/F,eAAiBx/F,KAAK8/F,QACzCa,EAAa3gG,KAAK0/F,SAAS9nG,OAAS,EACxCoI,KAAK0/F,SAAS1mG,SAAQ,SAAU4nG,EAAOp5F,GACjCA,GAAKm5F,IACPD,EAAclD,EAAO3/F,MAAQ2/F,EAAOgC,eAAiBmB,GAGvDnD,EAAOqD,iBAAiBD,EAAOF,EAAalD,EAAO3rG,QAEnD+uG,EAAM3C,WACR,GACF,GAMC,CACDtiG,IAAK,YACL1H,MAAO,WACL,IAAI2sG,EAAQ,IAAI5gG,KAAK4/F,WACrBgB,EAAM/H,wBAA0B74F,KAAK64F,wBACrC+H,EAAM1H,kBAAoBl5F,KAAKk5F,kBAC/B0H,EAAM3G,UAAYj6F,KAAKi6F,UACvB,IAAI6G,EAAa9gG,KAAKy/F,sBAAwBz/F,KAAK0/F,SAAS9nG,OAExD6gG,EAAO+B,EAAK2B,gBAAgBn8F,KAAKkzB,QAAQ/f,YAAYpiB,SAAS0Z,cAAc,WAAYzK,KAAKizB,OAAOkmE,UAYxG,GAXAn5F,KAAK7O,MAAMsnG,EAAM,CACfliF,SAAU,WACVypF,OAAQ,EACRzlG,KAAMumG,EAAa,KACnBtmG,IAAK,EACL2D,OAAQ,EACRtM,OAAQ,OACRsuG,cAAe,SAEjBS,EAAMG,SAAStI,GAEXz4F,KAAKk5F,kBAAmB,CAC1B,IAAIP,EAAW6B,EAAK2B,gBAAgBn8F,KAAK2/F,aAAaxsF,YAAYpiB,SAAS0Z,cAAc,WAAYzK,KAAKizB,OAAOkmE,UACjHn5F,KAAK7O,MAAMwnG,EAAU,CACnBpiF,SAAU,WACVhc,KAAMumG,EAAa,KACnBtmG,IAAK,EACL2D,OAAQ,EACRtM,OAAQ,SAEV+uG,EAAMI,aAAarI,EACrB,CAEA34F,KAAK0/F,SAASrgG,KAAKuhG,EACrB,GAMC,CACDjlG,IAAK,eACL1H,MAAO,WACL,IAAIgtG,EAAYjhG,KAAK0/F,SAAS1/F,KAAK0/F,SAAS9nG,OAAS,GAErDqpG,EAAUxI,KAAKyI,cAAcz3C,YAAYw3C,EAAUxI,KAAKwG,YAEpDj/F,KAAKk5F,mBACP+H,EAAUtI,SAASuI,cAAcz3C,YAAYw3C,EAAUtI,SAASsG,YAI9DgC,IACFA,EAAUtyE,UACVsyE,EAAY,MAGdjhG,KAAK0/F,SAASpoD,KAChB,GASC,CACD37C,IAAK,mBACL1H,MAAO,SAA0B2sG,EAAO/iG,EAAOhM,GAC7C,IAAIimF,EAAe17E,KAAK4lB,MAAMnkB,EAAQmC,KAAKizB,OAAOmpE,YAC9CrD,EAAa38F,KAAK4lB,MAAMhiB,KAAKnC,MAAQmC,KAAKizB,OAAOmpE,YAErDwE,EAAMC,iBAAiB/oB,EAAcihB,EAAYl7F,EAAOhM,GAExDmO,KAAK7O,MAAM6O,KAAK2/F,aAAc,CAC5BvuG,QAAS,SAEb,GAKC,CACDuK,IAAK,YACL1H,MAAO,WACL,IAAIktG,EAASnhG,KAEbw6F,EAAK4G,OAAM,WACTD,EAAOzB,SAAS1mG,SAAQ,SAAU4nG,GAChC,OAAOA,EAAM3C,WACf,GACF,GAJAzD,EAKF,GAeC,CACD7+F,IAAK,WACL1H,MAAO,SAAkBslG,EAAO2F,EAAcnoF,EAAOC,GACnD,IAAIqqF,EAASrhG,KAEb,OAAOA,KAAKshG,YAAY/H,EAAO2F,EAAcnoF,EAAOC,GAAK,SAAUuqF,GACjE,IAAI/H,EAAS+H,EAAK/H,OACdgI,EAAaD,EAAKC,WAElB9H,GADS6H,EAAK1vG,OACJ0vG,EAAK7H,SACfD,EAAQ8H,EAAK9H,MACbF,EAAQgI,EAAKhI,MACbvxC,EAAKu5C,EAAKrC,aAId,QAAc9+F,IAAV2W,EAeJ,IAVA,IAAI0qF,EAAiBD,EAAa,EAAI,EAClC5pG,EAAS2hG,EAAM3hG,OAAS6pG,EACxBC,EAAML,EAAOpuE,OAAOnhC,SAAWuvG,EAAOpuE,OAAOmpE,WAE7Cj6F,EAAOu/F,GADwB,OAAzBL,EAAOpuE,OAAO0uE,OAAkBvlG,KAAK6a,IAAIoqF,EAAOpuE,OAAOmpE,cAAesF,EAAM,IAAMtlG,KAAK6a,IAAIoqF,EAAOpuE,OAAOmpE,WAAYiF,EAAOpuE,OAAO0uE,OAASN,EAAOpuE,OAAOmpE,aAEhKzsD,EAAQ/3C,EAASypG,EAAOxjG,MAExB+jG,EAAO5qF,EACPxP,EAFQuP,EAIJvP,EAAIo6F,EAAMp6F,GAAKrF,EAAM,CAC3B,IAAIy3F,EAAOL,EAAMn9F,KAAKib,MAAM7P,EAAImoC,EAAQ8xD,KAAoB,EACxD59E,EAAIznB,KAAK4lB,MAAM43E,EAAOJ,EAASC,GAI1B,GAAL51E,GAAUw9E,EAAOpuE,OAAO4uE,eAC1Bh+E,EAAIw9E,EAAOpuE,OAAO4uE,cAGpBR,EAAO50E,SAASjlB,EAAI65F,EAAOpH,UAAWR,EAAQ51E,EAAI61E,EAASgI,EAAML,EAAOpH,UAAe,EAAJp2E,EAAOw9E,EAAOpvG,UAAW+1D,EAC9G,CACF,GACF,GAeC,CACDrsD,IAAK,WACL1H,MAAO,SAAkBslG,EAAO2F,EAAcnoF,EAAOC,GACnD,IAAI8qF,EAAS9hG,KAEb,OAAOA,KAAKshG,YAAY/H,EAAO2F,EAAcnoF,EAAOC,GAAK,SAAU+qF,GACjE,IAAIvI,EAASuI,EAAMvI,OACfgI,EAAaO,EAAMP,WAEnB9H,GADSqI,EAAMlwG,OACLkwG,EAAMrI,SAChBD,EAAQsI,EAAMtI,MACdF,EAAQwI,EAAMxI,MACd2F,EAAe6C,EAAM7C,aAEzB,IAAKsC,EAAY,CAKf,IAJA,IAAIQ,EAAiB,GACjBrpF,EAAM4gF,EAAM3hG,OACZ4P,EAAI,EAEAA,EAAImR,EAAKnR,IACfw6F,EAAe,EAAIx6F,GAAK+xF,EAAM/xF,GAC9Bw6F,EAAe,EAAIx6F,EAAI,IAAM+xF,EAAM/xF,GAGrC+xF,EAAQyI,CACV,MAIc5hG,IAAV2W,GACF+qF,EAAOG,SAAS1I,EAAOC,EAAQC,EAAOC,EAAS3iF,EAAOC,EAAKkoF,GAI7D4C,EAAOr1E,SAAS,EAAGgtE,EAAQC,EAAUoI,EAAO7H,UAAW6H,EAAOjkG,MAAOikG,EAAO7H,UAAW6H,EAAO7vG,UAAWitG,EAC3G,GACF,GAeC,CACDvjG,IAAK,WACL1H,MAAO,SAAkBslG,EAAOC,EAAQC,EAAOC,EAAS3iF,EAAOC,EAAKkoF,GAClE,IAAIgD,EAASliG,KAETmiG,EAAQniG,KAAKizB,OAAOmvE,qBAAqBC,cAAcnD,IAAiB,CAAC,EACzE1tG,EAAY2wG,EAAM3wG,UAClBC,EAAgB0wG,EAAM1wG,cAE1BuO,KAAK0/F,SAAS1mG,SAAQ,SAAU4nG,EAAOp5F,GACrC06F,EAAOI,cAAc1B,EAAOpvG,EAAWC,GAEvCywG,EAAOK,sBAAsB3B,EAAOsB,EAAOjvE,OAAOkmE,UAElDyH,EAAM4B,UAAUjJ,EAAOC,EAAQC,EAAOC,EAAS3iF,EAAOC,EACxD,GACF,GAYC,CACDrb,IAAK,WACL1H,MAAO,SAAkB0L,EAAGC,EAAG/B,EAAOhM,EAAQktD,EAAQmgD,GAKpD,IAJA,IAAIuD,EAAcrmG,KAAKib,MAAM1X,EAAIK,KAAKw/F,gBAClCkD,EAAYtmG,KAAK8a,IAAI9a,KAAKgb,MAAMzX,EAAI9B,GAASmC,KAAKw/F,gBAAkB,EAAGx/F,KAAK0/F,SAAS9nG,QACrF4P,EAAIi7F,EAEAj7F,EAAIk7F,EAAWl7F,IAAK,CAC1B,IAAIo5F,EAAQ5gG,KAAK0/F,SAASl4F,GACtBs5F,EAAat5F,EAAIxH,KAAKw/F,eACtBxgD,EAAe,CACjBlhB,GAAI1hC,KAAK6a,IAAItX,EAAG6H,EAAIxH,KAAKw/F,gBACzBzhE,GAAIn+B,EACJo+B,GAAI5hC,KAAK8a,IAAIvX,EAAI9B,EAAO2J,EAAIxH,KAAKw/F,eAAiBoB,EAAMnI,KAAK56F,OAC7DogC,GAAIr+B,EAAI/N,GAGV,GAAImtD,EAAalhB,GAAKkhB,EAAahhB,GAAI,CACrC,IAAI2kE,EAAQ3iG,KAAKizB,OAAOmvE,qBAAqBC,cAAcnD,IAAiB,CAAC,EACzE1tG,EAAYmxG,EAAMnxG,UAClBC,EAAgBkxG,EAAMlxG,cAE1BuO,KAAKsiG,cAAc1B,EAAOpvG,EAAWC,GACrCuO,KAAKuiG,sBAAsB3B,EAAO5gG,KAAKizB,OAAOkmE,UAC9CyH,EAAMgC,UAAU5jD,EAAalhB,GAAKgjE,EAAY9hD,EAAajhB,GAAIihB,EAAahhB,GAAKghB,EAAalhB,GAAIkhB,EAAa/gB,GAAK+gB,EAAajhB,GAAIghB,EACvI,CACF,CACF,GAQC,CACDpjD,IAAK,cACL1H,MAAO,SAAqBirG,GAC1B,OAAOl/F,KAAKizB,OAAO4vE,eAAiB7iG,KAAKizB,OAAOmvE,qBAAqBU,eAAex/F,SAAS47F,EAC/F,GAmBC,CACDvjG,IAAK,cACL1H,MAAO,SAAqBslG,EAAO2F,EAAcnoF,EAAOC,EAAKrR,EAAIo9F,EAAWC,GAC1E,IAAIC,EAASjjG,KAEb,OAAOw6F,EAAK4G,OAAM,WAEhB,GAAI7H,EAAM,aAAczhG,MAAO,CAC7B,IAAIorG,EAAW3J,EAEf,GAAI0J,EAAOhwE,OAAO4vE,cAAe,CAC/B,IAQIM,EARAC,EAAmBF,EAAS7iG,QAAO,SAAU6N,EAAG1G,GAClD,OAAQy7F,EAAOI,YAAY77F,EAC7B,IAeA,OAbKy7F,EAAOhwE,OAAOmvE,qBAAqBkB,SACtCL,EAAOM,UAAUnnG,KAAK6a,IAAImsF,EAAiBxrG,OAAQ,GAAKqrG,EAAOhwE,OAAOphC,OAASoxG,EAAOhwE,OAAOmpE,YAK3F6G,EAAOhwE,OAAOmvE,sBAAwBa,EAAOhwE,OAAOmvE,qBAAqBoB,wBAE3EL,EAAgB3I,EAAKvjF,IAAIisF,EAAS5+F,KAAI,SAAUm/F,GAC9C,OAAOjJ,EAAKkJ,OAAOD,EACrB,MAGKP,EAASlqG,SAAQ,SAAUyqG,EAAcj8F,GAC9C,OAAOy7F,EAAO3B,YAAYmC,EAAcj8F,EAAGuP,EAAOC,EAAKrR,EAAIy9F,EAAiB7/F,QAAQkgG,GAAeN,EACrG,GACF,CAEA5J,EAAQ2J,EAAS,EACnB,CAGA,IAAID,EAAOI,YAAYnE,GAAvB,CAOA,IAAI1F,EAAS,EAAIyJ,EAAOhwE,OAAOrhC,UAE3BqxG,EAAOhwE,OAAO1iB,YAChBipF,OAA2Bp5F,IAAlB4iG,EAA8BxI,EAAKkJ,OAAOnK,GAASyJ,GAK9D,IAAIxB,EAAa,GAAGj9F,KAAK1B,KAAK02F,GAAO,SAAUtkF,GAC7C,OAAOA,EAAM,CACf,IACIpjB,EAASoxG,EAAOhwE,OAAOphC,OAASoxG,EAAOhwE,OAAOmpE,WAC9C3C,EAAQ5nG,EAAS,EACjB6nG,EAAU7nG,EAASkxG,GAAa,EAMpC,OAJIE,EAAOhwE,OAAOmvE,sBAAwBa,EAAOhwE,OAAOmvE,qBAAqBkB,UAC3E5J,EAAU,GAGL/zF,EAAG,CACR6zF,OAAQA,EACRgI,WAAYA,EACZ3vG,OAAQA,EACR6nG,QAASA,EACTD,MAAOA,EACPF,MAAOA,EACP2F,aAAcA,GA/BhB,CAiCF,GAnEO1E,EAoET,GASC,CACD7+F,IAAK,gBACL1H,MAAO,SAAuB2sG,GAC5B,IAAIpvG,EAAYmG,UAAUC,OAAS,QAAsBwI,IAAjBzI,UAAU,GAAmBA,UAAU,GAAKqI,KAAKizB,OAAOzhC,UAC5FC,EAAgBkG,UAAUC,OAAS,QAAsBwI,IAAjBzI,UAAU,GAAmBA,UAAU,GAAKqI,KAAKizB,OAAOxhC,cACpGmvG,EAAM0B,cAAc9wG,EAAWC,EACjC,GAQC,CACDkK,IAAK,wBACL1H,MAAO,SAA+B2sG,GACpC,IAAIzH,EAAWxhG,UAAUC,OAAS,QAAsBwI,IAAjBzI,UAAU,IAAmBA,UAAU,GAC9EipG,EAAM2B,sBAAsBpJ,EAC9B,GAgBC,CACDx9F,IAAK,WACL1H,MAAO,SAAkBimG,EAAQC,EAASlqF,GACxC,GAAa,SAATA,EACF,OAAOmqF,QAAQuJ,IAAI3jG,KAAK0/F,SAASp7F,KAAI,SAAUs8F,GAC7C,OAAOA,EAAMgD,SAAS1J,EAAQC,EAASlqF,EACzC,KACK,GAAa,YAATA,EAAoB,CAC7B,IAAIke,EAASnuB,KAAK0/F,SAASp7F,KAAI,SAAUs8F,GACvC,OAAOA,EAAMgD,SAAS1J,EAAQC,EAASlqF,EACzC,IACA,OAAOke,EAAOv2B,OAAS,EAAIu2B,EAASA,EAAO,EAC7C,CACF,GAOC,CACDxyB,IAAK,iBACL1H,MAAO,SAAwBsiB,GAC7BvW,KAAK7O,MAAM6O,KAAK2/F,aAAc,CAC5B9hG,MAAO0Y,EAAW,MAEtB,IApoB8DuiF,GAAYT,EAAkB1+E,EAAYvY,UAAW03F,GAuoB9GwG,CACT,CAjnB+B,CAinB7BF,EAAQpH,SAEVt3F,EAAQs3F,QAAUsH,EAClB7+F,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,iCAIA,CAAEv3F,EAAQC,EAAS,KAEzB,aAGA,SAAS8tF,EAAQhuE,GAAmV,OAAtOguE,EAArD,mBAAXnkF,QAAoD,iBAApBA,OAAOjI,SAAmC,SAAiBoe,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYguE,EAAQhuE,EAAM,CAOzX,IAEgCA,EAIhC,SAAS63E,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CAI5T,SAASq2F,EAAKprG,EAAQqrF,EAAUggB,GAAuV,OAAtRD,EAA9B,oBAAZnI,SAA2BA,QAAQpxF,IAAcoxF,QAAQpxF,IAAqB,SAAc7R,EAAQqrF,EAAUggB,GAAY,IAAIC,EAErL,SAAwBz9F,EAAQw9E,GAAY,MAAQ/8E,OAAO3F,UAAUsN,eAAe7L,KAAKyD,EAAQw9E,IAA8D,QAAjDx9E,EAAS20F,EAAgB30F,MAAuC,OAAOA,CAAQ,CAFD09F,CAAevrG,EAAQqrF,GAAW,GAAKigB,EAAL,CAAmB,IAAIppF,EAAO5T,OAAOQ,yBAAyBw8F,EAAMjgB,GAAW,OAAInpE,EAAKrQ,IAAcqQ,EAAKrQ,IAAIzH,KAAKihG,GAAoBnpF,EAAK1mB,KAA5H,CAAmI,EAAY4vG,EAAKprG,EAAQqrF,EAAUggB,GAAYrrG,EAAS,CAM1a,SAASuiG,EAAgB5yE,EAAGnE,GAA+G,OAA1G+2E,EAAkBj0F,OAAO0B,gBAAkB,SAAyB2f,EAAGnE,GAAsB,OAAjBmE,EAAEtT,UAAYmP,EAAUmE,CAAG,EAAU4yE,EAAgB5yE,EAAGnE,EAAI,CAUzK,SAASg3E,EAAgB7yE,GAAwJ,OAAnJ6yE,EAAkBl0F,OAAO0B,eAAiB1B,OAAOW,eAAiB,SAAyB0gB,GAAK,OAAOA,EAAEtT,WAAa/N,OAAOW,eAAe0gB,EAAI,EAAU6yE,EAAgB7yE,EAAI,CA/B5MrhB,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAuClB,IAAIiM,EAAoC,SAAUC,IAvBlD,SAAmB9I,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz6F,UAAU,sDAAyDw6F,EAASh6F,UAAY2F,OAAO/F,OAAOq6F,GAAcA,EAAWj6F,UAAW,CAAE6D,YAAa,CAAEhR,MAAOmnG,EAAU/yF,UAAU,EAAM/G,cAAc,KAAe+5F,GAAYL,EAAgBI,EAAUC,EAAa,CAwB9XC,CAAU2I,EAAsBC,GAEhC,IAhCoBvqF,EAAam/E,EAUbyC,EAAeC,EAsB/BC,GAtBgBF,EAsBM0I,EAtBSzI,EAMrC,WAAuC,GAAuB,oBAAZE,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAU7tF,KAAM,OAAO,EAAO,GAAqB,mBAAV8tF,MAAsB,OAAO,EAAM,IAAsF,OAAhFz2F,QAAQ/D,UAAU8T,QAAQrS,KAAK64F,QAAQC,UAAUx2F,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO5M,GAAK,OAAO,CAAO,CAAE,CANvQsjG,GAAoC,WAAkC,IAAsC35F,EAAlC45F,EAAQb,EAAgBM,GAAkB,GAAIC,EAA2B,CAAE,IAAIO,EAAYd,EAAgBj7F,MAAMiF,YAAa/C,EAASw5F,QAAQC,UAAUG,EAAOnkG,UAAWokG,EAAY,MAAS75F,EAAS45F,EAAM5jG,MAAM8H,KAAMrI,WAAc,OAEpX,SAAoCyM,EAAMvB,GAAQ,GAAIA,IAA2B,WAAlB2rF,EAAQ3rF,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIjC,UAAU,4DAA+D,OAE1P,SAAgCwD,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI43F,eAAe,6DAAgE,OAAO53F,CAAM,CAF4F63F,CAAuB73F,EAAO,CAF4F83F,CAA2Bl8F,KAAMkC,EAAS,GA6Bna,SAAS+hG,EAAqBhxE,GAC5B,IAAI96B,EAWJ,OAvDJ,SAAyBogG,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CA8CpJ43F,CAAgBx4F,KAAMikG,IAEtB9rG,EAAQsjG,EAAO54F,KAAK7C,KAAMizB,IAGpBA,OAASA,EAGf96B,EAAMgsG,mBAAqB,KACpBhsG,CACT,CAiEA,OArHoBwhB,EA0DPsqF,GA1DoBnL,EA0DE,CAAC,CAClCn9F,IAAK,OACL1H,MAAO,WACL+L,KAAKokG,gBAAgBpkG,KAAKizB,OAAOoxE,WACjCrkG,KAAKskG,cACLtkG,KAAKukG,mBACLvkG,KAAKwkG,mBACLxkG,KAAKykG,oBACP,GAWC,CACD9oG,IAAK,QACL1H,MAAO,SAAeywG,EAAOnL,EAAOoL,GAClCd,EAAK5I,EAAgBgJ,EAAqB7iG,WAAY,QAASpB,MAAM6C,KAAK7C,KAAM0kG,EAAOnL,EAAOoL,GAE9F3kG,KAAK4kG,yBAAyBF,EAChC,GAQC,CACD/oG,IAAK,2BACL1H,MAAO,SAAkC4wG,GACvC7kG,KAAKmkG,mBAAqBnkG,KAAK8kG,GAAGF,yBAAyBC,GAC3D7kG,KAAKmkG,mBAAmBY,QAAQ/kG,KAAKglG,SACvC,GACC,CACDrpG,IAAK,OACL1H,MAAO,SAAc8iB,EAAOC,GAE1B,OADAhX,KAAKilG,qBACEpB,EAAK5I,EAAgBgJ,EAAqB7iG,WAAY,OAAQpB,MAAM6C,KAAK7C,KAAM+W,EAAOC,EAC/F,GAMC,CACDrb,IAAK,UACL1H,MAAO,WACL4vG,EAAK5I,EAAgBgJ,EAAqB7iG,WAAY,UAAWpB,MAAM6C,KAAK7C,MAE5EA,KAAKklG,iBACP,MAlH0E7M,EAAkB1+E,EAAYvY,UAAW03F,GAqH9GmL,CACT,CAzFwC,GAnCRzjF,EAFW,EAA0C,2BAEhCA,EAAI43E,WAAa53E,EAAM,CAAEw3E,QAASx3E,IA4HvEw3E,SAEhBt3F,EAAQs3F,QAAUiM,EAClBxjG,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,wBAIA,CAAEv3F,EAAQC,EAAS,KAEzB,aAGA,SAAS8tF,EAAQhuE,GAAmV,OAAtOguE,EAArD,mBAAXnkF,QAAoD,iBAApBA,OAAOjI,SAAmC,SAAiBoe,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYguE,EAAQhuE,EAAM,CAEzXzZ,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAElB,IAQgCx3E,EAR5B2kF,GAQ4B3kF,EARO,EAAsC,uBAQxBA,EAAI43E,WAAa53E,EAAM,CAAEw3E,QAASx3E,GANnFg6E,EAIJ,SAAiCh6E,EAAKi6E,GAAe,GAAoBj6E,GAAOA,EAAI43E,WAAc,OAAO53E,EAAO,GAAY,OAARA,GAAiC,WAAjBguE,EAAQhuE,IAAoC,mBAARA,EAAsB,MAAO,CAAEw3E,QAASx3E,GAAS,IAAI0nC,EAAQwyC,EAAyBD,GAAc,GAAIvyC,GAASA,EAAMjhD,IAAIuZ,GAAQ,OAAO0nC,EAAM59C,IAAIkW,GAAQ,IAAIm6E,EAAS,CAAC,EAAOC,EAAwB7zF,OAAOO,gBAAkBP,OAAOQ,yBAA0B,IAAK,IAAI5L,KAAO6kB,EAAO,GAAY,YAAR7kB,GAAqBoL,OAAO3F,UAAUsN,eAAe7L,KAAK2d,EAAK7kB,GAAM,CAAE,IAAIgf,EAAOigF,EAAwB7zF,OAAOQ,yBAAyBiZ,EAAK7kB,GAAO,KAAUgf,IAASA,EAAKrQ,KAAOqQ,EAAK3L,KAAQjI,OAAOO,eAAeqzF,EAAQh/F,EAAKgf,GAAgBggF,EAAOh/F,GAAO6kB,EAAI7kB,EAAQ,CAAiE,OAA7Dg/F,EAAO3C,QAAUx3E,EAAS0nC,GAASA,EAAMl5C,IAAIwR,EAAKm6E,GAAkBA,CAAQ,CAJ1xBE,CAAwB,EAAkC,wBAErE,SAASH,EAAyBD,GAAe,GAAuB,mBAAZlrF,QAAwB,OAAO,KAAM,IAAIurF,EAAoB,IAAIvrF,QAAewrF,EAAmB,IAAIxrF,QAAW,OAAQmrF,EAA2B,SAAkCD,GAAe,OAAOA,EAAcM,EAAmBD,CAAmB,GAAGL,EAAc,CAQ9U,SAASpC,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CAI5T,SAASq2F,EAAKprG,EAAQqrF,EAAUggB,GAAuV,OAAtRD,EAA9B,oBAAZnI,SAA2BA,QAAQpxF,IAAcoxF,QAAQpxF,IAAqB,SAAc7R,EAAQqrF,EAAUggB,GAAY,IAAIC,EAErL,SAAwBz9F,EAAQw9E,GAAY,MAAQ/8E,OAAO3F,UAAUsN,eAAe7L,KAAKyD,EAAQw9E,IAA8D,QAAjDx9E,EAAS20F,EAAgB30F,MAAuC,OAAOA,CAAQ,CAFD09F,CAAevrG,EAAQqrF,GAAW,GAAKigB,EAAL,CAAmB,IAAIppF,EAAO5T,OAAOQ,yBAAyBw8F,EAAMjgB,GAAW,OAAInpE,EAAKrQ,IAAcqQ,EAAKrQ,IAAIzH,KAAKihG,GAAoBnpF,EAAK1mB,KAA5H,CAAmI,EAAY4vG,EAAKprG,EAAQqrF,EAAUggB,GAAYrrG,EAAS,CAM1a,SAASuiG,EAAgB5yE,EAAGnE,GAA+G,OAA1G+2E,EAAkBj0F,OAAO0B,gBAAkB,SAAyB2f,EAAGnE,GAAsB,OAAjBmE,EAAEtT,UAAYmP,EAAUmE,CAAG,EAAU4yE,EAAgB5yE,EAAGnE,EAAI,CAUzK,SAASg3E,EAAgB7yE,GAAwJ,OAAnJ6yE,EAAkBl0F,OAAO0B,eAAiB1B,OAAOW,eAAiB,SAAyB0gB,GAAK,OAAOA,EAAEtT,WAAa/N,OAAOW,eAAe0gB,EAAI,EAAU6yE,EAAgB7yE,EAAI,CAK5M,IAAIg9E,EAA4B,SAAUC,IAjB1C,SAAmBjK,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz6F,UAAU,sDAAyDw6F,EAASh6F,UAAY2F,OAAO/F,OAAOq6F,GAAcA,EAAWj6F,UAAW,CAAE6D,YAAa,CAAEhR,MAAOmnG,EAAU/yF,UAAU,EAAM/G,cAAc,KAAe+5F,GAAYL,EAAgBI,EAAUC,EAAa,CAkB9XC,CAAU8J,EAAcC,GAExB,IA1BoB1rF,EAAam/E,EAUbyC,EAAeC,EAgB/BC,GAhBgBF,EAgBM6J,EAhBS5J,EAMrC,WAAuC,GAAuB,oBAAZE,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAU7tF,KAAM,OAAO,EAAO,GAAqB,mBAAV8tF,MAAsB,OAAO,EAAM,IAAsF,OAAhFz2F,QAAQ/D,UAAU8T,QAAQrS,KAAK64F,QAAQC,UAAUx2F,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO5M,GAAK,OAAO,CAAO,CAAE,CANvQsjG,GAAoC,WAAkC,IAAsC35F,EAAlC45F,EAAQb,EAAgBM,GAAkB,GAAIC,EAA2B,CAAE,IAAIO,EAAYd,EAAgBj7F,MAAMiF,YAAa/C,EAASw5F,QAAQC,UAAUG,EAAOnkG,UAAWokG,EAAY,MAAS75F,EAAS45F,EAAM5jG,MAAM8H,KAAMrI,WAAc,OAEpX,SAAoCyM,EAAMvB,GAAQ,GAAIA,IAA2B,WAAlB2rF,EAAQ3rF,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIjC,UAAU,4DAA+D,OAE1P,SAAgCwD,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI43F,eAAe,6DAAgE,OAAO53F,CAAM,CAF4F63F,CAAuB73F,EAAO,CAF4F83F,CAA2Bl8F,KAAMkC,EAAS,GAuBna,SAASkjG,EAAanyE,GACpB,IAAI96B,EAkDJ,OAxFJ,SAAyBogG,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CAwCpJ43F,CAAgBx4F,KAAMolG,IAEtBjtG,EAAQsjG,EAAO54F,KAAK7C,KAAMizB,IAGpBA,OAASA,EAOf96B,EAAMusG,MAAQ,CACZ/hF,YAAa,EACbvvB,SAAU,EACVkyG,QAAQ,EACRC,aAAc,EACdhxG,KAAM,WAAiB,EACvBF,MAAO,WAAkB,EACzB0rB,OAAQ,GAIV5nB,EAAMqtG,UAAYvyE,EAAOuyE,UAAU50F,cAGnCzY,EAAMstG,gBAAkBxyE,EAAOwyE,gBAG/BttG,EAAMohG,MAAQ,KAGdphG,EAAMotG,aAAe,EAGrBptG,EAAM4nB,OAAS,EAGf5nB,EAAMutG,SAAU,EAGhBvtG,EAAMo8E,OAAS,KAGfp8E,EAAMwtG,UAAY,KAGlBxtG,EAAMytG,eAAiB,CAAC,EACjBztG,CACT,CAucA,OA5hBoBwhB,EA2FPyrF,GA3FoBtM,EA2FN,CAAC,CAC1Bn9F,IAAK,OACL1H,MAAO,WACL+L,KAAKokG,gBAAgBpkG,KAAKizB,OAAOoxE,WACjCrkG,KAAKskG,aACP,GAKC,CACD3oG,IAAK,uBACL1H,MAAO,WACL,IAAIupG,EAASx9F,KAEbA,KAAK4lG,eAAe//F,MAAQ,WAC1B23F,EAAOM,UAAU,QAAS,8BAC5B,EAEA99F,KAAK4lG,eAAeC,QAAU,WAC5BrI,EAAOM,UAAU,UACnB,EAEA99F,KAAK4lG,eAAeE,MAAQ,WAC1BtI,EAAOM,UAAU,SACnB,EAIA99F,KAAK4lG,eAAerxG,KAAO,WACzBipG,EAAOM,UAAU,OACnB,EAEA99F,KAAK4lG,eAAevxG,MAAQ,WAC1BmpG,EAAOM,UAAU,QACnB,EAEA99F,KAAK4lG,eAAeG,OAAS,SAAUhmG,GACrCy9F,EAAOM,UAAU,OACnB,EAEA99F,KAAK4lG,eAAeI,aAAe,SAAUjmG,GAC3Cy9F,EAAOkI,QAAUlI,EAAOkH,MAAMuB,MAE1BzI,EAAOkI,QACTlI,EAAOz9E,OAAS,EAEhBy9E,EAAOz9E,OAASy9E,EAAOkH,MAAM3kF,OAG/By9E,EAAOM,UAAU,SACnB,EAGA/2F,OAAOM,KAAKrH,KAAK4lG,gBAAgB5sG,SAAQ,SAAUrG,GACjD6qG,EAAOkH,MAAM5oG,oBAAoBnJ,EAAI6qG,EAAOoI,eAAejzG,IAE3D6qG,EAAOkH,MAAMzvG,iBAAiBtC,EAAI6qG,EAAOoI,eAAejzG,GAC1D,GACF,GAKC,CACDgJ,IAAK,cACL1H,MAAO,WACL,IAAIktG,EAASnhG,KAabA,KAAK9K,GAAG,QAXa,SAASgxG,IACxB/E,EAAOlvE,aAIXkvE,EAAOrD,UAAU,eAAgBqD,EAAOrsG,kBAGxC0lG,EAAK4G,MAAM8E,EAAX1L,GACF,IAKAx6F,KAAK9K,GAAG,SAAS,WACfisG,EAAOrD,UAAU,eAAgBqD,EAAOrsG,iBAC1C,GACF,GAaC,CACD6G,IAAK,OACL1H,MAAO,SAAcuyB,EAAKj1B,EAAWgoG,EAAOoL,GAC1C,IAAID,EAAQ3zG,SAAS0Z,cAAczK,KAAKwlG,WACxCd,EAAMyB,SAAWnmG,KAAKizB,OAAOmzE,cAC7B1B,EAAMxtG,SAAW8I,KAAKizB,OAAO/7B,WAAY,EACzCwtG,EAAMC,QAAqB,MAAXA,EAAkB,OAASA,EAC3CD,EAAMtxF,IAAMoT,EACZk+E,EAAMvzG,MAAM0M,MAAQ,OACpB,IAAIwoG,EAAY90G,EAAU6J,cAAc4E,KAAKwlG,WAEzCa,GACF90G,EAAUk4D,YAAY48C,GAGxB90G,EAAU4hB,YAAYuxF,GAEtB1kG,KAAKsmG,MAAM5B,EAAOnL,EAAOoL,EAC3B,GAQC,CACDhpG,IAAK,UACL1H,MAAO,SAAiBsyG,EAAKhN,GAC3BgN,EAAIJ,SAAWnmG,KAAKizB,OAAOmzE,cAC3BG,EAAIrvG,SAAW8I,KAAKizB,OAAO/7B,WAAY,EAEvC8I,KAAKsmG,MAAMC,EAAKhN,EAAOgN,EAAI5B,QAC7B,GAaC,CACDhpG,IAAK,QACL1H,MAAO,SAAeywG,EAAOnL,EAAOoL,GAElC,KAAMD,aAAiB8B,wBAAuD,IAA3B9B,EAAMzvG,iBACvD,MAAM,IAAI+6B,MAAM,gDAQO,mBAAd00E,EAAMxyG,MAAwBqnG,GAAoB,QAAXoL,GAIhDD,EAAMxyG,OAGR8N,KAAK0kG,MAAQA,EAEb1kG,KAAKymG,uBAELzmG,KAAKu5F,MAAQA,EACbv5F,KAAK2lG,UAAY,KACjB3lG,KAAKu0E,OAAS,KACdv0E,KAAK0lG,QAAUhB,EAAMuB,MACrBjmG,KAAKokG,gBAAgBpkG,KAAKulG,cAC1BvlG,KAAK9L,UAAU8L,KAAK+f,OACtB,GAOC,CACDpkB,IAAK,WACL1H,MAAO,WACL,OAAQ+L,KAAK0kG,OAAS1kG,KAAK0kG,MAAMY,MACnC,GAOC,CACD3pG,IAAK,cACL1H,MAAO,WACL,GAAI+L,KAAK0mG,iBACP,OAAO1mG,KAAK0mG,iBAGd,IAAItzG,GAAY4M,KAAKu0E,QAAUv0E,KAAK0kG,OAAOtxG,SAO3C,OALIA,GAAYuzG,MAEdvzG,EAAW4M,KAAK0kG,MAAMkC,SAAS5vF,IAAI,IAG9B5jB,CACT,GAQC,CACDuI,IAAK,iBACL1H,MAAO,WACL,OAAO+L,KAAK0kG,OAAS1kG,KAAK0kG,MAAM/hF,WAClC,GAOC,CACDhnB,IAAK,oBACL1H,MAAO,WACL,OAAO+L,KAAKlL,iBAAmBkL,KAAK9M,eAAiB,CACvD,GAOC,CACDyI,IAAK,kBACL1H,MAAO,WACL,OAAO+L,KAAKulG,cAAgBvlG,KAAK0kG,MAAMa,YACzC,GAOC,CACD5pG,IAAK,kBACL1H,MAAO,SAAyBA,GAC9B+L,KAAKulG,aAAetxG,GAAS,EAC7B+L,KAAK0kG,MAAMa,aAAevlG,KAAKulG,YACjC,GAOC,CACD5pG,IAAK,SACL1H,MAAO,SAAgB8iB,GACR,MAATA,IACF/W,KAAK0kG,MAAM/hF,YAAc5L,GAG3B/W,KAAK6mG,cACP,GAWC,CACDlrG,IAAK,OACL1H,MAAO,SAAc8iB,EAAOC,GAC1BhX,KAAK8mG,OAAO/vF,GACZ,IAAIgwF,EAAU/mG,KAAK0kG,MAAMnwG,OAEzB,OADAyiB,GAAOhX,KAAKgnG,WAAWhwF,GAChB+vF,CACT,GAQC,CACDprG,IAAK,QACL1H,MAAO,WACL,IAAI8yG,EAOJ,OALI/mG,KAAK0kG,QACPqC,EAAU/mG,KAAK0kG,MAAMrwG,SAGvB2L,KAAK6mG,eACEE,CACT,GAOC,CACDprG,IAAK,aACL1H,MAAO,SAAoB+iB,GACzB,IAAIqqF,EAASrhG,KAEbA,KAAK6mG,eAEL7mG,KAAKinG,WAAa,SAAU52E,GACtBA,GAAQrZ,IACVqqF,EAAOhtG,QAEPgtG,EAAOyF,OAAO9vF,GAElB,EAEAhX,KAAK9K,GAAG,eAAgB8K,KAAKinG,WAC/B,GAGC,CACDtrG,IAAK,eACL1H,MAAO,WACD+L,KAAKinG,aACPjnG,KAAKknG,GAAG,eAAgBlnG,KAAKinG,YAC7BjnG,KAAKinG,WAAa,KAEtB,GAYC,CACDtrG,IAAK,WACL1H,MAAO,SAAkB2D,EAAQye,EAAOurF,GACtC,OAAI5hG,KAAKu0E,OACAsvB,EAAK5I,EAAgBmK,EAAahkG,WAAY,WAAYpB,MAAM6C,KAAK7C,KAAMpI,EAAQye,EAAOurF,GAG5F5hG,KAAKu5F,OAAS,EACvB,GASC,CACD59F,IAAK,YACL1H,MAAO,SAAmBkzG,GACxB,OAAIA,EACGnnG,KAAK0kG,MAAM0C,UAITpnG,KAAK0kG,MAAM0C,UAAUD,GAHnB/M,QAAQiN,OAAO,IAAIr3E,MAAM,+CAM7BoqE,QAAQiN,OAAO,IAAIr3E,MAAM,qBAAuBm3E,GACzD,GAOC,CACDxrG,IAAK,YACL1H,MAAO,WACL,OAAO+L,KAAK+f,MACd,GAOC,CACDpkB,IAAK,YACL1H,MAAO,SAAmBA,GACxB+L,KAAK+f,OAAS9rB,EAEV+L,KAAK0kG,MAAM3kF,SAAW/f,KAAK+f,SAC7B/f,KAAK0kG,MAAM3kF,OAAS/f,KAAK+f,OAE7B,GAQC,CACDpkB,IAAK,UACL1H,MAAO,SAAiBgyG,GAGtBjmG,KAAK0lG,QAAU1lG,KAAK0kG,MAAMuB,MAAQA,CACpC,GAMC,CACDtqG,IAAK,UACL1H,MAAO,WACL,IAAI6tG,EAAS9hG,KAEbA,KAAK3L,QACL2L,KAAKg/F,QACLh/F,KAAK4qE,WAAY,EAEjB7jE,OAAOM,KAAKrH,KAAK4lG,gBAAgB5sG,SAAQ,SAAUrG,GAC7CmvG,EAAO4C,OACT5C,EAAO4C,MAAM5oG,oBAAoBnJ,EAAImvG,EAAO8D,eAAejzG,GAE/D,IAEIqN,KAAKizB,OAAOq0E,6BAA+BtnG,KAAK0kG,OAAS1kG,KAAK0kG,MAAM9rG,YACtEoH,KAAK0kG,MAAM9rG,WAAW6wD,YAAYzpD,KAAK0kG,OAGzC1kG,KAAK0kG,MAAQ,IACf,MAzhB0ErM,EAAkB1+E,EAAYvY,UAAW03F,GA4hB9GsM,CACT,CAtgBgC,CAsgB9BD,EAAUnN,SAEZt3F,EAAQs3F,QAAUoN,EAClB3kG,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,qBAIA,CAAEv3F,EAAQC,KAEhB,aAUA,SAAS23F,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CAP5TzG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAalB,IAAIuP,EAAyB,WAI3B,SAASA,KAfX,SAAyBhP,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CAgBpJ43F,CAAgBx4F,KAAMunG,GAEtBvnG,KAAKwnG,gBACP,CAfF,IAAsB7tF,EAAam/E,EAyIjC,OAzIoBn/E,EAqBP4tF,GArBoBzO,EAqBT,CAAC,CACvBn9F,IAAK,iBACL1H,MAAO,WAOL+L,KAAKynG,gBAAkB,GAOvBznG,KAAK0nG,iBAAmB,CAC1B,GAUC,CACD/rG,IAAK,sBACL1H,MAAO,SAA6B2D,EAAQmf,EAAOC,GAC7Cpf,GAAUoI,KAAK0nG,kBACjB1nG,KAAKwnG,iBACLxnG,KAAK0nG,gBAAkB9vG,GAOzB,IAHA,IAAI+vG,EAAiB,GACjBngG,EAAI,EAEDA,EAAIxH,KAAKynG,gBAAgB7vG,QAAUoI,KAAKynG,gBAAgBjgG,GAAKuP,GAClEvP,IAWF,IAJIA,EAAI,GAAK,GACXmgG,EAAetoG,KAAK0X,GAGfvP,EAAIxH,KAAKynG,gBAAgB7vG,QAAUoI,KAAKynG,gBAAgBjgG,IAAMwP,GACnE2wF,EAAetoG,KAAKW,KAAKynG,gBAAgBjgG,IACzCA,IAIEA,EAAI,GAAK,GACXmgG,EAAetoG,KAAK2X,GAItB2wF,EAAiBA,EAAetnG,QAAO,SAAUm5E,EAAMpjE,EAAK8J,GAC1D,OAAW,GAAP9J,EACKojE,GAAQt5D,EAAI9J,EAAM,GAChBA,GAAO8J,EAAItoB,OAAS,EACtB4hF,GAAQt5D,EAAI9J,EAAM,GAGpBojE,GAAQt5D,EAAI9J,EAAM,IAAMojE,GAAQt5D,EAAI9J,EAAM,EACnD,IAIApW,KAAKynG,gBAAkBznG,KAAKynG,gBAAgB50G,OAAO80G,GACnD3nG,KAAKynG,gBAAkBznG,KAAKynG,gBAAgBG,MAAK,SAAU55F,EAAGC,GAC5D,OAAOD,EAAIC,CACb,IAAG5N,QAAO,SAAUm5E,EAAMpjE,EAAK8J,GAC7B,OAAW,GAAP9J,EACKojE,GAAQt5D,EAAI9J,EAAM,GAChBA,GAAO8J,EAAItoB,OAAS,EACtB4hF,GAAQt5D,EAAI9J,EAAM,GAGpBojE,GAAQt5D,EAAI9J,EAAM,IAAMojE,GAAQt5D,EAAI9J,EAAM,EACnD,IAGA,IAAIyxF,EAAqB,GAEzB,IAAKrgG,EAAI,EAAGA,EAAImgG,EAAe/vG,OAAQ4P,GAAK,EAC1CqgG,EAAmBxoG,KAAK,CAACsoG,EAAengG,GAAImgG,EAAengG,EAAI,KAGjE,OAAOqgG,CACT,GAOC,CACDlsG,IAAK,iBACL1H,MAAO,WACL,IACIuT,EADAsgG,EAAsB,GAG1B,IAAKtgG,EAAI,EAAGA,EAAIxH,KAAKynG,gBAAgB7vG,OAAQ4P,GAAK,EAChDsgG,EAAoBzoG,KAAK,CAACW,KAAKynG,gBAAgBjgG,GAAIxH,KAAKynG,gBAAgBjgG,EAAI,KAG9E,OAAOsgG,CACT,MAtI0EzP,EAAkB1+E,EAAYvY,UAAW03F,GAyI9GyO,CACT,CAnI6B,GAqI7B7mG,EAAQs3F,QAAUuP,EAClB9mG,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,uBAIA,CAAEv3F,EAAQC,EAAS,KAEzB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QAgBR,SAAgB/tF,GACd,IAAIgN,GAAM,EAAI8wF,EAAK/P,SAAS/tF,GACxBiN,GAAM,EAAI8wF,EAAKhQ,SAAS/tF,GAC5B,OAAQiN,EAAMD,GAAOC,EAAMD,CAC7B,EAlBA,IAAI8wF,EAAO7P,EAAuB,EAAiC,sBAE/D8P,EAAO9P,EAAuB,EAAiC,sBAEnE,SAASA,EAAuB13E,GAAO,OAAOA,GAAOA,EAAI43E,WAAa53E,EAAM,CAAEw3E,QAASx3E,EAAO,CAgB9F/f,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,sBAIA,CAAEv3F,EAAQC,KAEhB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QAUR,SAAe/iF,EAAKiC,EAAKD,GACvB,OAAO7a,KAAK8a,IAAI9a,KAAK6a,IAAIC,EAAKjC,GAAMgC,EACtC,EAEAxW,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,sBAIA,CAAEv3F,EAAQC,EAAS,KAEzB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QAoIR,SAAmB3qF,GACjB,IAAKA,EACH,MAAM,IAAI2iB,MAAM,yBACX,IAAK3iB,EAAQmZ,IAClB,MAAM,IAAIwJ,MAAM,qBAGlB,IAAIuoE,EAAW,IAAI0P,EAAUjQ,QACzBkQ,EAAe,IAAIC,QACnBC,EAAe,IAAIC,QAAQh7F,EAAQmZ,KAEvC+xE,EAAS+P,WAAa,IAAIC,gBAEtBl7F,GAAWA,EAAQm7F,gBAErBn7F,EAAQm7F,eAAexvG,SAAQ,SAAUyvG,GACvCP,EAAah5E,OAAOu5E,EAAO9sG,IAAK8sG,EAAOx0G,MACzC,IAIF,IAAIy2B,EAAerd,EAAQqd,cAAgB,OACvCg+E,EAAe,CACjBrjG,OAAQgI,EAAQhI,QAAU,MAC1BsjG,QAAST,EACTnyF,KAAM1I,EAAQ0I,MAAQ,OACtB6yF,YAAav7F,EAAQu7F,aAAe,cACpC1gD,MAAO76C,EAAQ66C,OAAS,UACxB2gD,SAAUx7F,EAAQw7F,UAAY,SAC9BC,SAAUz7F,EAAQy7F,UAAY,SAC9BC,OAAQxQ,EAAS+P,WAAWS,QAqE9B,OAnEAnoB,MAAMwnB,EAAcM,GAAcM,MAAK,SAAUr+E,GAE/C4tE,EAAS5tE,SAAWA,EACpB,IAAIs+E,GAAoB,EAEnBt+E,EAAS92B,OAGZo1G,GAAoB,GAItB,IAAIC,EAAgBv+E,EAASg+E,QAAQr+F,IAAI,kBASzC,OAPsB,OAAlB4+F,IAIFD,GAAoB,GAGjBA,GAML1Q,EAAS4Q,WAAa,SAAU5wG,GAC9BggG,EAASuF,UAAU,WAAYvlG,EACjC,EAEO,IAAI6wG,SAAS,IAAIC,eAAe,IAAIC,EAAgB/Q,EAAU2Q,EAAev+E,IAAY+9E,IARvF/9E,CASX,IAAGq+E,MAAK,SAAUr+E,GAChB,IAAI4+E,EAEJ,GAAI5+E,EAAS6+E,GACX,OAAQ9+E,GACN,IAAK,cACH,OAAOC,EAAS8+E,cAElB,IAAK,OACH,OAAO9+E,EAAS++E,OAElB,IAAK,OACH,OAAO/+E,EAASpE,OAElB,IAAK,OACH,OAAOoE,EAASzxB,OAElB,QACEqwG,EAAS,yBAA2B7+E,EAS1C,MAJK6+E,IACHA,EAAS,sBAAwB5+E,EAASQ,QAGtC,IAAI6E,MAAMu5E,EAClB,IAAGP,MAAK,SAAUr+E,GAChB4tE,EAASuF,UAAU,UAAWnzE,EAChC,IAAGg/E,OAAM,SAAU9jG,GACjB0yF,EAASuF,UAAU,QAASj4F,EAC9B,IAEA0yF,EAAS6P,aAAeA,EACjB7P,CACT,EAtOA,IAEgC/3E,EAF5BynF,GAE4BznF,EAFO,EAAsC,4BAExBA,EAAI43E,WAAa53E,EAAM,CAAEw3E,QAASx3E,GAIvF,SAAS63E,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CAI5T,IAAI87F,EAA+B,WAQjC,SAASA,EAAgB/Q,EAAU2Q,EAAev+E,IAdpD,SAAyB4tE,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CAepJ43F,CAAgBx4F,KAAMspG,GAEtBtpG,KAAKu4F,SAAWA,EAChBv4F,KAAKu4F,SAASqR,QAAUj/E,EAAS92B,KAAKg2G,YACtC7pG,KAAK8pG,MAAQ5vG,SAASgvG,EAAe,IACrClpG,KAAKuoD,OAAS,CAChB,CAjBF,IAAsB5uC,EAAam/E,EA6EjC,OA7EoBn/E,EA2BP2vF,GA3BoBxQ,EA2BH,CAAC,CAC7Bn9F,IAAK,QACL1H,MAAO,SAAeq0G,GACpB,IAAInwG,EAAQ6H,MAED,SAAS+pG,IAGlB5xG,EAAMogG,SAASqR,QAAQG,OAAOf,MAAK,SAAUzH,GAC3C,IAAIz+F,EAAOy+F,EAAKz+F,KACZ7O,EAAQstG,EAAKttG,MAKjB,GAAI6O,EAYF,OAVoB,IAAhB3K,EAAM2xG,OACR3xG,EAAMogG,SAAS4Q,WAAWtmG,KAAK1K,EAAMogG,SAAU,CAC7ChwC,OAAQpwD,EAAMowD,OACduhD,MAAO3xG,EAAM2xG,MACbE,kBAAkB,SAKtB1B,EAAW51F,QAIbva,EAAMowD,QAAUt0D,EAAMg2G,WAEtB9xG,EAAMogG,SAAS4Q,WAAWtmG,KAAK1K,EAAMogG,SAAU,CAC7ChwC,OAAQpwD,EAAMowD,OACduhD,MAAO3xG,EAAM2xG,MACbE,mBAAoC,IAAhB7xG,EAAM2xG,SAI5BxB,EAAW4B,QAAQj2G,GACnB81G,GACF,IAAGJ,OAAM,SAAU9jG,GACjByiG,EAAWziG,MAAMA,EACnB,GACF,CAEAkkG,EACF,MA1E0E1R,EAAkB1+E,EAAYvY,UAAW03F,GA6E9GwQ,CACT,CA5EmC,GA8NnC7oG,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,sBAIA,CAAEv3F,EAAQC,EAAS,KAEzB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QAcR,SAAe1gG,GACb,OAAO,WACL,IAAK,IAAII,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAGzB,OAAO,EAAIoyG,EAAuBnS,UAAS,WACzC,OAAO1gG,EAAKY,WAAM,EAAQL,EAC5B,GACF,CACF,EAtBA,IAEgC2oB,EAF5B2pF,GAE4B3pF,EAFoB,EAAqD,2CAEpDA,EAAI43E,WAAa53E,EAAM,CAAEw3E,QAASx3E,GAsBvF/f,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,uBAIA,CAAEv3F,EAAQC,KAEhB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QAaR,SAAe1jD,GAKb,YAJel0C,IAAXk0C,IACFA,EAAS,eAGJA,EAASl4C,KAAKyb,SAAStR,SAAS,IAAIwhF,UAAU,EACvD,EAEAtnF,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,sBAIA,CAAEoS,EAAyB1pG,EAAS,KAE1C,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAET8S,OAAOO,eAAe5G,EAAS,QAAS,CACtC0H,YAAY,EACZkC,IAAK,WACH,OAAO6tF,EAAOH,OAChB,IAEFjxF,OAAOO,eAAe5G,EAAS,MAAO,CACpC0H,YAAY,EACZkC,IAAK,WACH,OAAOy9F,EAAK/P,OACd,IAEFjxF,OAAOO,eAAe5G,EAAS,MAAO,CACpC0H,YAAY,EACZkC,IAAK,WACH,OAAO09F,EAAKhQ,OACd,IAEFjxF,OAAOO,eAAe5G,EAAS,SAAU,CACvC0H,YAAY,EACZkC,IAAK,WACH,OAAO+/F,EAAQrS,OACjB,IAEFjxF,OAAOO,eAAe5G,EAAS,WAAY,CACzC0H,YAAY,EACZkC,IAAK,WACH,OAAO29F,EAAUjQ,OACnB,IAEFjxF,OAAOO,eAAe5G,EAAS,QAAS,CACtC0H,YAAY,EACZkC,IAAK,WACH,OAAO2tF,EAAOD,OAChB,IAEFjxF,OAAOO,eAAe5G,EAAS,wBAAyB,CACtD0H,YAAY,EACZkC,IAAK,WACH,OAAO6/F,EAAuBnS,OAChC,IAEFjxF,OAAOO,eAAe5G,EAAS,QAAS,CACtC0H,YAAY,EACZkC,IAAK,WACH,OAAOggG,EAAOtS,OAChB,IAEFjxF,OAAOO,eAAe5G,EAAS,WAAY,CACzC0H,YAAY,EACZkC,IAAK,WACH,OAAOigG,EAAUvS,OACnB,IAEFjxF,OAAOO,eAAe5G,EAAS,eAAgB,CAC7C0H,YAAY,EACZkC,IAAK,WACH,OAAOkgG,EAAcxS,OACvB,IAEFjxF,OAAOO,eAAe5G,EAAS,YAAa,CAC1C0H,YAAY,EACZkC,IAAK,WACH,OAAOmgG,EAAOzS,OAChB,IAEFjxF,OAAOO,eAAe5G,EAAS,QAAS,CACtC0H,YAAY,EACZkC,IAAK,WACH,OAAOogG,EAAO1S,OAChB,IAEFjxF,OAAOO,eAAe5G,EAAS,kBAAmB,CAChD0H,YAAY,EACZkC,IAAK,WACH,OAAOqgG,EAAa3S,OACtB,IAEFjxF,OAAOO,eAAe5G,EAAS,oBAAqB,CAClD0H,YAAY,EACZkC,IAAK,WACH,OAAOsgG,EAAa5S,OACtB,IAGF,IAAIG,EAASD,EAAuB,EAAoC,yBAEpE6P,EAAO7P,EAAuB,EAAiC,sBAE/D8P,EAAO9P,EAAuB,EAAiC,sBAE/DmS,EAAUnS,EAAuB,EAAoC,yBAErE+P,EAAY/P,EAAuB,EAAsC,2BAEzED,EAASC,EAAuB,EAAmC,wBAEnEiS,EAAyBjS,EAAuB,EAAqD,0CAErGoS,EAASpS,EAAuB,EAAmC,wBAEnEqS,EAAYrS,EAAuB,EAAoC,qCAEvEsS,EAAgBtS,EAAuB,EAA2C,gCAElFuS,EAASvS,EAAuB,EAAmC,wBAEnEwS,EAASxS,EAAuB,EAAmC,wBAEnEyS,EAAezS,EAAuB,EAAyC,8BAE/E0S,EAAe1S,EAAuB,EAA0C,+BAEpF,SAASA,EAAuB13E,GAAO,OAAOA,GAAOA,EAAI43E,WAAa53E,EAAM,CAAEw3E,QAASx3E,EAAO,CAEvF,EAED,oBAIA,CAAE/f,EAAQC,KAEhB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QASR,SAAa/tF,GACX,IAAI4gG,GAAU,IAMd,OALA9jG,OAAOM,KAAK4C,GAAQjR,SAAQ,SAAUwO,GAChCyC,EAAOzC,GAAKqjG,IACdA,EAAU5gG,EAAOzC,GAErB,IACOqjG,CACT,EAEApqG,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,oBAIA,CAAEv3F,EAAQC,KAEhB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QASR,SAAa/tF,GACX,IAAI6gG,EAAWl0E,OAAO+vE,KAMtB,OALA5/F,OAAOM,KAAK4C,GAAQjR,SAAQ,SAAUwO,GAChCyC,EAAOzC,GAAKsjG,IACdA,EAAW7gG,EAAOzC,GAEtB,IACOsjG,CACT,EAEArqG,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,yBAIA,CAAEv3F,EAAQC,KAEhB,aAUA,SAAS23F,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CAP5TzG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAkBlB,IAAImH,EAAwB,WAI1B,SAASA,KApBX,SAAyB5G,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CAqBpJ43F,CAAgBx4F,KAAMm/F,GAOtBn/F,KAAK+qG,wBAA0B,GAC/B/qG,KAAKgrG,SAAW,IAClB,CA1BF,IAAsBrxF,EAAam/E,EAqLjC,OArLoBn/E,EAoCPwlF,EApCoBrG,EAoCV,CAAC,CACtBn9F,IAAK,KACL1H,MAAO,SAAY8L,EAAO4F,GACxB,IAAIxN,EAAQ6H,KAEPA,KAAKgrG,WACRhrG,KAAKgrG,SAAW,CAAC,GAGnB,IAAIA,EAAWhrG,KAAKgrG,SAASjrG,GAQ7B,OANKirG,IACHA,EAAWhrG,KAAKgrG,SAASjrG,GAAS,IAGpCirG,EAAS3rG,KAAKsG,GAEP,CACLqE,KAAMjK,EACN3K,SAAUuQ,EACVuhG,GAAI,SAAY3uG,EAAGoN,GACjB,OAAOxN,EAAM+uG,GAAG3uG,EAAGoN,EACrB,EAEJ,GASC,CACDhK,IAAK,KACL1H,MAAO,SAAY8L,EAAO4F,GACxB,GAAK3F,KAAKgrG,SAAV,CAIA,IACIxjG,EADAwjG,EAAWhrG,KAAKgrG,SAASjrG,GAG7B,GAAIirG,EACF,GAAIrlG,EACF,IAAK6B,EAAIwjG,EAASpzG,OAAS,EAAG4P,GAAK,EAAGA,IAChCwjG,EAASxjG,IAAM7B,GACjBqlG,EAASt7E,OAAOloB,EAAG,QAIvBwjG,EAASpzG,OAAS,CAbtB,CAgBF,GAKC,CACD+D,IAAK,QACL1H,MAAO,WACL+L,KAAKgrG,SAAW,IAClB,GAUC,CACDrvG,IAAK,OACL1H,MAAO,SAAc8L,EAAOkrG,GAC1B,IAAIzN,EAASx9F,KAgBb,OAAOA,KAAK9K,GAAG6K,GAdN,SAAS4F,IAChB,IAAK,IAAIjO,EAAOC,UAAUC,OAAQC,EAAO,IAAIC,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAC/EF,EAAKE,GAAQJ,UAAUI,GAIzBkzG,EAAQ/yG,MAAMslG,EAAQ3lG,GAGtB7D,YAAW,WACTwpG,EAAO0J,GAAGnnG,EAAO4F,EACnB,GAAG,EACL,GAGF,GAYC,CACDhK,IAAK,4BACL1H,MAAO,SAAmCi3G,GACxClrG,KAAK+qG,wBAA0BG,CACjC,GAMC,CACDvvG,IAAK,2BACL1H,MAAO,SAAkC8L,GACvC,OAAOC,KAAK+qG,yBAA2B/qG,KAAK+qG,wBAAwBznG,SAASvD,EAC/E,GAQC,CACDpE,IAAK,YACL1H,MAAO,SAAmB8L,GACxB,IAAK,IAAIorG,EAAQxzG,UAAUC,OAAQC,EAAO,IAAIC,MAAMqzG,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxGvzG,EAAKuzG,EAAQ,GAAKzzG,UAAUyzG,GAG9B,GAAKprG,KAAKgrG,WAAYhrG,KAAKqrG,yBAAyBtrG,GAApD,CAIA,IAAIirG,EAAWhrG,KAAKgrG,SAASjrG,GAC7BirG,GAAYA,EAAShyG,SAAQ,SAAU2M,GACrCA,EAAGzN,WAAM,EAAQL,EACnB,GALA,CAMF,IAlL8DihG,GAAYT,EAAkB1+E,EAAYvY,UAAW03F,GAqL9GqG,CACT,CA1K4B,GA4K5Bz+F,EAAQs3F,QAAUmH,EAClB1+F,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,4BAIA,CAAEv3F,EAAQC,KAEhB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QAwDR,SAASmE,EAAgB1jG,EAAQ0gG,GAC/B,OAAI1gG,EAAO6yG,GACF7yG,EAEA,IAAImjG,MAAMnjG,EAAQ,CACvB6R,IAAK,SAAakW,EAAKnC,EAAMylF,GAC3B,GAAIzlF,IAASitF,EACX,OAAO,EACF,GAAa,eAATjtF,EACT,OAAOmC,EACF,GAAa,UAATnC,EACT,OAAO89E,EAAgB37E,EAAIrvB,MAAOgoG,GAC7B,GAAa,WAAT96E,EACT,OAAO89E,EAAgB37E,EAAI6L,OAAQ8sE,GAC9B,GAAa,0BAAT96E,EACT,OAAO,WACL,OAAO89E,EAAgB37E,EAAI7lB,sBAAsBzC,MAAMsoB,EAAK7oB,WAAYwhG,EAC1E,EACK,GAAa,eAAT96E,EACT,OAAO,WACL,OAAO89E,EAAgB37E,EAAI+L,WAAWr0B,MAAMsoB,EAAK7oB,WAAYwhG,EAC/D,EAEA,IAAIllG,EAAQusB,EAAI+qF,EAAQltF,EAAM86E,IAC9B,MAAuB,mBAATllG,EAAsBA,EAAMgE,KAAKuoB,GAAOvsB,CAE1D,EACA+a,IAAK,SAAawR,EAAKnC,EAAMpqB,GAE3B,OADAusB,EAAI+qF,EAAQltF,EAAM86E,IAAallG,GACxB,CACT,GAGN,EAxFA,IAAIu3G,EAAkB,CACpB3tG,MAAO,SACPhM,OAAQ,QACR4qG,UAAW,YACXE,UAAW,YACX2B,YAAa,eACbX,aAAc,cACdb,QAAS,UACTc,QAAS,UACT/9F,YAAa,eACbw9F,WAAY,YACZrE,WAAY,YACZyS,UAAW,aACX33G,aAAc,cACdwxD,YAAa,eACb/qD,KAAM,MACNilD,MAAO,SACPhlD,IAAK,OACL2D,OAAQ,QACR+hG,iBAAkB,oBAClBI,iBAAkB,oBAClBC,iBAAkB,qBAUpB,SAASgL,EAAQltF,EAAM86E,GACrB,OAAIpyF,OAAO3F,UAAUsN,eAAe7L,KAAK2oG,EAAiBntF,IACjD86E,EAAWqS,EAAgBntF,GAE3BA,CAEX,CAEA,IAAIitF,EAAUjhG,OAAO,WAmDrB5J,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,8BAIA,CAAEv3F,EAAQC,KAEhB,aAcA,SAASgrG,EAAoB3rG,GAC3BA,EAAM4rG,kBACN56G,SAAS8C,KAAKiI,oBAAoB,QAAS4vG,GAAqB,EAClE,CAdA3kG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QAmBR,SAAsB/tF,GACpBlZ,SAAS8C,KAAKoB,iBAAiB,QAASy2G,GAAqB,EAC/D,EAEAjrG,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,wCAIA,CAAEv3F,EAAQC,KAEhB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAUlB,IAAI4T,GAAYn4G,OAAO+lC,uBAAyB/lC,OAAOo4G,6BAA+Bp4G,OAAOq4G,0BAA4Br4G,OAAOs4G,wBAA0Bt4G,OAAOu4G,yBAA2B,SAAU52G,EAAU8sB,GAC9M,OAAOluB,WAAWoB,EAAU,IAAO,GACrC,GAAG6C,KAAKxE,QAERiN,EAAQs3F,QAAU4T,EAClBnrG,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,6BAIA,CAAEv3F,EAAQC,KAEhB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QAaR,WAKE,IAEIiU,EAAMl7G,SAAS0Z,cAAc,OACjCwhG,EAAIh5G,UAAY,0CAChB,IAAIi5G,EAAkBD,EAAI5wB,SAAS7B,KAAK,GACxC0yB,EAAgB94F,IALA,81BAMhB84F,EAAgBvH,QAAU,OAC1BuH,EAAgBj8F,KAAO,aACvBi8F,EAAgBC,uBAAwB,EAExCD,EAAgB33G,OAEhB23G,EAAgBl5G,SAChBi5G,EAAIj5G,QACN,EAEAyN,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,sBAIA,CAAEv3F,EAAQC,KAEhB,aAGAqG,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,QAUR,SAAe50F,EAAI28C,GAMjB,OALAh5C,OAAOM,KAAK04C,GAAQ/mD,SAAQ,SAAUqlB,GAChCjb,EAAGjS,MAAMktB,KAAU0hC,EAAO1hC,KAC5Bjb,EAAGjS,MAAMktB,GAAQ0hC,EAAO1hC,GAE5B,IACOjb,CACT,EAEA3C,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,sBAIA,CAAEv3F,EAAQC,EAAS,KAEzB,aAGA,SAAS8tF,EAAQhuE,GAAmV,OAAtOguE,EAArD,mBAAXnkF,QAAoD,iBAApBA,OAAOjI,SAAmC,SAAiBoe,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYguE,EAAQhuE,EAAM,CAEzXzZ,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAElB,IAAIwC,EAgBJ,SAAiCh6E,EAAKi6E,GAAe,GAAoBj6E,GAAOA,EAAI43E,WAAc,OAAO53E,EAAO,GAAY,OAARA,GAAiC,WAAjBguE,EAAQhuE,IAAoC,mBAARA,EAAsB,MAAO,CAAEw3E,QAASx3E,GAAS,IAAI0nC,EAAQwyC,EAAyBD,GAAc,GAAIvyC,GAASA,EAAMjhD,IAAIuZ,GAAQ,OAAO0nC,EAAM59C,IAAIkW,GAAQ,IAAIm6E,EAAS,CAAC,EAAOC,EAAwB7zF,OAAOO,gBAAkBP,OAAOQ,yBAA0B,IAAK,IAAI5L,KAAO6kB,EAAO,GAAY,YAAR7kB,GAAqBoL,OAAO3F,UAAUsN,eAAe7L,KAAK2d,EAAK7kB,GAAM,CAAE,IAAIgf,EAAOigF,EAAwB7zF,OAAOQ,yBAAyBiZ,EAAK7kB,GAAO,KAAUgf,IAASA,EAAKrQ,KAAOqQ,EAAK3L,KAAQjI,OAAOO,eAAeqzF,EAAQh/F,EAAKgf,GAAgBggF,EAAOh/F,GAAO6kB,EAAI7kB,EAAQ,CAAiE,OAA7Dg/F,EAAO3C,QAAUx3E,EAAS0nC,GAASA,EAAMl5C,IAAIwR,EAAKm6E,GAAkBA,CAAQ,CAhB1xBE,CAAwB,EAAkC,wBAEjEuE,EAAUlH,EAAuB,EAAgD,gCAEjFiN,EAAYjN,EAAuB,EAAsC,sBAEzEkU,EAAgBlU,EAAuB,EAA0C,0BAEjFmU,EAAanU,EAAuB,EAAuC,uBAE3EoU,EAAwBpU,EAAuB,EAAmD,mCAEtG,SAASA,EAAuB13E,GAAO,OAAOA,GAAOA,EAAI43E,WAAa53E,EAAM,CAAEw3E,QAASx3E,EAAO,CAE9F,SAASk6E,EAAyBD,GAAe,GAAuB,mBAAZlrF,QAAwB,OAAO,KAAM,IAAIurF,EAAoB,IAAIvrF,QAAewrF,EAAmB,IAAIxrF,QAAW,OAAQmrF,EAA2B,SAAkCD,GAAe,OAAOA,EAAcM,EAAmBD,CAAmB,GAAGL,EAAc,CAM9U,SAASO,EAAgB5yE,EAAGnE,GAA+G,OAA1G+2E,EAAkBj0F,OAAO0B,gBAAkB,SAAyB2f,EAAGnE,GAAsB,OAAjBmE,EAAEtT,UAAYmP,EAAUmE,CAAG,EAAU4yE,EAAgB5yE,EAAGnE,EAAI,CAIzK,SAASi4E,EAA2B93F,EAAMvB,GAAQ,GAAIA,IAA2B,WAAlB2rF,EAAQ3rF,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIjC,UAAU,4DAA+D,OAAOq7F,EAAuB73F,EAAO,CAE/R,SAAS63F,EAAuB73F,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI43F,eAAe,6DAAgE,OAAO53F,CAAM,CAIrK,SAAS62F,EAAgB7yE,GAAwJ,OAAnJ6yE,EAAkBl0F,OAAO0B,eAAiB1B,OAAOW,eAAiB,SAAyB0gB,GAAK,OAAOA,EAAEtT,WAAa/N,OAAOW,eAAe0gB,EAAI,EAAU6yE,EAAgB7yE,EAAI,CAI5M,SAASiwE,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CA6L5T,IAwEIlc,EAA0B,SAAU6pG,IArRxC,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz6F,UAAU,sDAAyDw6F,EAASh6F,UAAY2F,OAAO/F,OAAOq6F,GAAcA,EAAWj6F,UAAW,CAAE6D,YAAa,CAAEhR,MAAOmnG,EAAU/yF,UAAU,EAAM/G,cAAc,KAAe+5F,GAAYL,EAAgBI,EAAUC,EAAa,CAsR9XC,CAAUhqG,EAAY6pG,GAEtB,IApRoBI,EAAeC,EAcf7hF,EAAam/E,EAAYyT,EAsQzC9Q,GApRgBF,EAoRMjqG,EApRSkqG,EAMrC,WAAuC,GAAuB,oBAAZE,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAU7tF,KAAM,OAAO,EAAO,GAAqB,mBAAV8tF,MAAsB,OAAO,EAAM,IAAsF,OAAhFz2F,QAAQ/D,UAAU8T,QAAQrS,KAAK64F,QAAQC,UAAUx2F,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO5M,GAAK,OAAO,CAAO,CAAE,CANvQsjG,GAAoC,WAAkC,IAAsC35F,EAAlC45F,EAAQb,EAAgBM,GAAkB,GAAIC,EAA2B,CAAE,IAAIO,EAAYd,EAAgBj7F,MAAMiF,YAAa/C,EAASw5F,QAAQC,UAAUG,EAAOnkG,UAAWokG,EAAY,MAAS75F,EAAS45F,EAAM5jG,MAAM8H,KAAMrI,WAAc,OAAOukG,EAA2Bl8F,KAAMkC,EAAS,GA8Rna,SAAS5Q,EAAW2hC,GAClB,IAAI96B,EAgFJ,GArWJ,SAAyBogG,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CAuRpJ43F,CAAgBx4F,KAAM1O,IAEtB6G,EAAQsjG,EAAO54F,KAAK7C,OAMdwsG,cAAgB,CACpBC,aAAc,KACdC,qBAAsB,KACtBrI,UAAW,EACXxF,YAAY,EACZL,eAAgB,EAChBO,uBAAuB,EACvB4N,QAAS,WACTxzB,gBAAiB,KACjBvnF,UAAW,EACXK,UAAW,EACX0vG,OAAQ,KACRE,aAAc,KACdtwG,UAAW,KACXG,YAAa,OACbC,YAAa,EACbi7G,eAAe,EACf/M,yBAA0B,CAIxBgN,gBAAgB,GAElBz5G,SAAU,KACVopG,YAAY,EACZsQ,aAAa,EACbj7G,OAAQ,IACR6qG,eAAe,EACfqQ,mBAAmB,EACnBlP,UAAU,EACVmP,eAAe,EACfxN,eAAgB,IAChByN,eAAgB,KAChB7G,eAAe,EACfZ,UAAW,QACX0H,YAAa,GACb38F,WAAW,EACX48F,eAAe,EACf/Q,WAAY3oG,OAAO+9E,kBAAoBuO,OAAOqtB,WAAartB,OAAOstB,YAClEvtB,QAAS,GACTruF,cAAe,OACf61G,6BAA6B,EAC7BtwG,SAAUooG,EAAQpH,QAClBhmG,YAAY,EACZurG,KAAK,EACLxrG,cAAc,EACdu7G,WAAY,EACZzK,eAAe,EACfT,qBAAsB,CACpBkB,SAAS,EACTjB,cAAe,CAAC,EAChBS,eAAgB,GAChBU,uBAAuB,GAEzBrK,UAAU,EACV3nG,UAAW,OACX+4B,IAAK,CAAC,GAERpyB,EAAMo1G,SAAW,CACfnI,aAAcgH,EAAcpU,QAC5BwV,SAAUrI,EAAUnN,QACpBiM,qBAAsBqI,EAAsBtU,SAE9C7/F,EAAMqiG,KAAOA,EACbriG,EAAM86B,OAASlsB,OAAO+iD,OAAO,CAAC,EAAG3xD,EAAMq0G,cAAev5E,GACtD96B,EAAM86B,OAAOmvE,qBAAuBr7F,OAAO+iD,OAAO,CAAC,EAAG3xD,EAAMq0G,cAAcpK,qBAAsBnvE,EAAOmvE,sBAGvGjqG,EAAM5G,UAAY,iBAAmB0hC,EAAO1hC,UAAYR,SAASqK,cAAcjD,EAAM86B,OAAO1hC,WAAa4G,EAAM86B,OAAO1hC,WAEjH4G,EAAM5G,UACT,MAAM,IAAIy+B,MAAM,+BAclB,GAXmC,MAA/B73B,EAAM86B,OAAOg6E,eAEf90G,EAAM80G,eAAiB90G,EAAM5G,UACkB,iBAA/B4G,EAAM86B,OAAOg6E,eAE7B90G,EAAM80G,eAAiBl8G,SAASqK,cAAcjD,EAAM86B,OAAOg6E,gBAG3D90G,EAAM80G,eAAiB90G,EAAM86B,OAAOg6E,gBAGjC90G,EAAM80G,eACT,MAAM,IAAIj9E,MAAM,qCAGlB,GAAI73B,EAAM86B,OAAOusE,gBAAkB,EACjC,MAAM,IAAIxvE,MAAM,yCACX,GAAI73B,EAAM86B,OAAOusE,eAAiB,GAAK,EAC5C,MAAM,IAAIxvE,MAAM,yCA0DlB,IAvDyB,IAArB73B,EAAM86B,OAAOsqE,OACe,IAA1BplG,EAAM86B,OAAOkmE,SACfqB,EAAKrpG,MAAMgH,EAAM5G,UAAW,CAC1B4+C,UAAW,oBAGbqqD,EAAKrpG,MAAMgH,EAAM5G,UAAW,CAC1B4+C,UAAW,qBAKbh4C,EAAM86B,OAAOkmD,iBACfhhF,EAAMs1G,mBAAmBt1G,EAAM86B,OAAOkmD,iBASxChhF,EAAMu1G,YAAc,EAMpBv1G,EAAMutG,SAAU,EAOhBvtG,EAAMw1G,UAAY,GAMlBx1G,EAAMy1G,eAAiB,KAGvBz1G,EAAM01G,YAAc,KAGpB11G,EAAM21G,OAAS,KAGf31G,EAAMw0G,QAAU,KAGhBx0G,EAAM41G,UAAY,KAEmB,mBAA1B51G,EAAM86B,OAAOj8B,SACtB,MAAM,IAAIg5B,MAAM,iCAOlB73B,EAAM+iG,OAAS/iG,EAAM86B,OAAOj8B,SAMA,gBAAxBmB,EAAM86B,OAAO05E,UACfx0G,EAAM86B,OAAO05E,QAAU,gBAGI,YAAxBx0G,EAAM86B,OAAO05E,SAAkD,yBAAzBx0G,EAAM86B,OAAO05E,SAAwCxH,EAAUnN,QAAQ52F,UAAU4sG,iBAAiBnrG,KAAK,QAChJ1K,EAAM86B,OAAO05E,QAAU,gBAGzBx0G,EAAM81G,QAAU91G,EAAMo1G,SAASp1G,EAAM86B,OAAO05E,SAK5Cx0G,EAAM+1G,sBAAwB,CAAC,EAG/B/1G,EAAMg2G,aAAc,EAQpBh2G,EAAMi2G,SAAU,EAIhB,IAAIC,EAAY,EAQhB,OAPAl2G,EAAMm2G,UAAY9T,EAAKnjG,UAAS,WAC1Bg3G,GAAal2G,EAAM21G,OAAO56E,QAAQorE,aAAgBnmG,EAAM86B,OAAOlhC,eACjEs8G,EAAYl2G,EAAM21G,OAAO56E,QAAQorE,YAEjCnmG,EAAM21G,OAAOhQ,UAAU,UAE3B,GAAsC,iBAA5B3lG,EAAM86B,OAAOjhC,WAA0BmG,EAAM86B,OAAOjhC,WAAa,KACpEkqG,EAA2B/jG,EAAO8jG,EAAuB9jG,GAClE,CAm4CA,OAv2DoBwhB,EA+eProB,EA/egCi7G,EA00DzC,CAAC,CACH5wG,IAAK,SACL1H,MAYA,SAAgBg/B,GAEd,OADiB,IAAI3hC,EAAW2hC,GACduE,MACpB,KA31D+BshE,EA+eR,CAAC,CACxBn9F,IAAK,OACL1H,MAAO,WAKL,OAJA+L,KAAKuuG,gBAAgBvuG,KAAKizB,OAAO6sD,SACjC9/E,KAAKwuG,eACLxuG,KAAKyuG,gBACLzuG,KAAK0uG,kBACE1uG,IACT,GAUC,CACDrE,IAAK,kBACL1H,MAAO,SAAyB6rF,GAC9B,IAAI0d,EAASx9F,KAeb,OAZA8/E,EAAQ9mF,SAAQ,SAAU07C,GACxB,OAAO8oD,EAAOmR,UAAUj6D,EAC1B,IAEAorC,EAAQ9mF,SAAQ,SAAU07C,GAGnBA,EAAOk6D,WACVpR,EAAOqR,WAAWn6D,EAAO1qC,KAE7B,IACAhK,KAAK89F,UAAU,qBAAsBhe,GAC9B9/E,IACT,GAQC,CACDrE,IAAK,mBACL1H,MAAO,WACL,OAAO+L,KAAKkuG,qBACd,GAUC,CACDvyG,IAAK,YACL1H,MAAO,SAAmBygD,GACxB,IAAIysD,EAASnhG,KAEb,IAAK00C,EAAO1qC,KACV,MAAM,IAAIgmB,MAAM,gCAGlB,IAAK0kB,EAAO6jD,SACV,MAAM,IAAIvoE,MAAM,UAAUn9B,OAAO6hD,EAAO1qC,KAAM,yCAI5C0qC,EAAO63D,aACTxlG,OAAOM,KAAKqtC,EAAO63D,aAAavzG,SAAQ,SAAU81G,GAKhD3N,EAAO2N,GAAoBp6D,EAAO63D,YAAYuC,EAChD,IAGF,IAAIC,EAAWr6D,EAAO6jD,SActB,OAZ4BxxF,OAAOmN,oBAAoBsmF,EAAK2E,SAAS/9F,WAC/CpI,SAAQ,SAAU2C,GACtCozG,EAAS3tG,UAAUzF,GAAO6+F,EAAK2E,SAAS/9F,UAAUzF,EACpD,IAOAqE,KAAK00C,EAAO1qC,MAAQ,IAAI+kG,EAASr6D,EAAOzhB,QAAU,CAAC,EAAGjzB,MACtDA,KAAK89F,UAAU,eAAgBppD,EAAO1qC,MAC/BhK,IACT,GAUC,CACDrE,IAAK,aACL1H,MAAO,SAAoB+V,GACzB,IAAKhK,KAAKgK,GACR,MAAM,IAAIgmB,MAAM,UAAUn9B,OAAOmX,EAAM,6BAWzC,OARIhK,KAAKkuG,sBAAsBlkG,IAE7BhK,KAAKgvG,cAAchlG,GAGrBhK,KAAKgK,GAAMwtB,OACXx3B,KAAKkuG,sBAAsBlkG,IAAQ,EACnChK,KAAK89F,UAAU,qBAAsB9zF,GAC9BhK,IACT,GAUC,CACDrE,IAAK,gBACL1H,MAAO,SAAuB+V,GAC5B,IAAKhK,KAAKgK,GACR,MAAM,IAAIgmB,MAAM,UAAUn9B,OAAOmX,EAAM,qDAGzC,IAAKhK,KAAKkuG,sBAAsBlkG,GAC9B,MAAM,IAAIgmB,MAAM,UAAUn9B,OAAOmX,EAAM,4CAGzC,GAAkC,mBAAvBhK,KAAKgK,GAAM2kB,QACpB,MAAM,IAAIqB,MAAM,UAAUn9B,OAAOmX,EAAM,uCAMzC,OAHAhK,KAAKgK,GAAM2kB,iBACJ3uB,KAAKkuG,sBAAsBlkG,GAClChK,KAAK89F,UAAU,mBAAoB9zF,GAC5BhK,IACT,GAQC,CACDrE,IAAK,oBACL1H,MAAO,WACL,IAAIotG,EAASrhG,KAEb+G,OAAOM,KAAKrH,KAAKkuG,uBAAuBl1G,SAAQ,SAAUgR,GACxD,OAAOq3F,EAAO2N,cAAchlG,EAC9B,GACF,GAQC,CACDrO,IAAK,eACL1H,MAAO,WACL,IAAI6tG,EAAS9hG,KAEbA,KAAK8tG,OAAS,IAAI9tG,KAAKk7F,OAAOl7F,KAAKzO,UAAWyO,KAAKizB,QACnDjzB,KAAK8tG,OAAOt2E,OACZx3B,KAAK89F,UAAU,iBAAkB99F,KAAK8tG,SAEP,IAA3B9tG,KAAKizB,OAAOjhC,aACdyB,OAAOwB,iBAAiB,SAAU+K,KAAKsuG,WAAW,GAClD76G,OAAOwB,iBAAiB,oBAAqB+K,KAAKsuG,WAAW,IAG/DtuG,KAAK8tG,OAAO54G,GAAG,UAAU,WACvB4sG,EAAOmN,aAEPnN,EAAOgM,OAAOnV,SAASmJ,EAAO6K,QAAQuC,oBACxC,IAEAlvG,KAAK8tG,OAAO54G,GAAG,SAAS,SAAUqD,EAAGogG,GACnC3kG,YAAW,WACT,OAAO8tG,EAAOgF,OAAOnO,EACvB,GAAG,EACL,IAEA34F,KAAK8tG,OAAO54G,GAAG,UAAU,SAAUqD,GAC7BupG,EAAO7uE,OAAOk6E,eAChBrL,EAAOmN,aAGTnN,EAAOhE,UAAU,SAAUvlG,EAC7B,GACF,GAQC,CACDoD,IAAK,gBACL1H,MAAO,WACL,IAAIiuG,EAASliG,KAETA,KAAK2sG,SACP3sG,KAAK2sG,QAAQh+E,UAGf3uB,KAAK2sG,QAAU,IAAI3sG,KAAKiuG,QAAQjuG,KAAKizB,QACrCjzB,KAAK2sG,QAAQn1E,OACbx3B,KAAK89F,UAAU,kBAAmB99F,KAAK2sG,SACvC3sG,KAAK2sG,QAAQz3G,GAAG,UAAU,WACxBgtG,EAAO4L,OAAOnV,SAASuJ,EAAOyK,QAAQuC,qBAEtChN,EAAOpE,UAAU,SACnB,IACA99F,KAAK2sG,QAAQz3G,GAAG,QAAQ,WACtB,OAAOgtG,EAAOpE,UAAU,OAC1B,IACA99F,KAAK2sG,QAAQz3G,GAAG,SAAS,WACvB,OAAOgtG,EAAOpE,UAAU,QAC1B,IACA99F,KAAK2sG,QAAQz3G,GAAG,gBAAgB,SAAUm7B,GACxC6xE,EAAO4L,OAAOnV,SAASuJ,EAAOyK,QAAQuC,qBAEtChN,EAAOpE,UAAU,eAAgBztE,EACnC,IAE4B,iBAAxBrwB,KAAKizB,OAAO05E,SAAsD,yBAAxB3sG,KAAKizB,OAAO05E,UACxD3sG,KAAK2sG,QAAQz3G,GAAG,QAAQ,WACtBgtG,EAAO4L,OAAOnV,SAASuJ,EAAOyK,QAAQuC,oBACxC,IACAlvG,KAAK2sG,QAAQz3G,GAAG,UAAU,WACxB,IAAIi6G,EAAYjN,EAAOpiF,YAEvBoiF,EAAOpE,UAAU,SAAUqR,GAEvBjN,EAAOyK,QAAQjH,UAAYxD,EAAOwD,UACpCxD,EAAOwD,QAAUxD,EAAOyK,QAAQjH,QAEhCxD,EAAOpE,UAAU,OAAQoE,EAAOwD,SAEpC,IAEJ,GAOC,CACD/pG,IAAK,kBACL1H,MAAO,WACD+L,KAAKizB,OAAOk6E,gBACdntG,KAAK+tG,UAAY,IAAI1B,EAAWrU,QAEpC,GAQC,CACDr8F,IAAK,cACL1H,MAAO,WACL,OAAO+L,KAAK2sG,QAAQz5G,aACtB,GAQC,CACDyI,IAAK,iBACL1H,MAAO,WACL,OAAO+L,KAAK2sG,QAAQ73G,gBACtB,GAQC,CACD6G,IAAK,iBACL1H,MAAO,SAAwB3B,GACzBA,GAAW0N,KAAK9M,cAClB8M,KAAK8mG,OAAO,GAEZ9mG,KAAK8mG,OAAOx0G,EAAU0N,KAAK9M,cAE/B,GAcC,CACDyI,IAAK,OACL1H,MAAO,SAAc8iB,EAAOC,GAC1B,IAAIisF,EAASjjG,KAUb,OARIA,KAAKizB,OAAO85E,mBAEdvS,EAAKuS,oBAGP/sG,KAAK89F,UAAU,eAAe,WAC5B,OAAOmF,EAAO1uG,KAAKwiB,EAAOC,EAC5B,IACOhX,KAAK2sG,QAAQp4G,KAAKwiB,EAAOC,EAClC,GAQC,CACDrb,IAAK,aACL1H,MAAO,SAAoBsiB,GACzBvW,KAAK2sG,QAAQ3F,WAAWzwF,EAC1B,GAQC,CACD5a,IAAK,QACL1H,MAAO,WACL,IAAK+L,KAAK2sG,QAAQ16E,WAChB,OAAOjyB,KAAK2sG,QAAQt4G,OAExB,GAQC,CACDsH,IAAK,YACL1H,MAAO,WACL,OAAO+L,KAAK2sG,QAAQ16E,WAAajyB,KAAKzL,OAASyL,KAAK3L,OACtD,GAQC,CACDsH,IAAK,YACL1H,MAAO,WACL,OAAQ+L,KAAK2sG,QAAQ16E,UACvB,GASC,CACDt2B,IAAK,eACL1H,MAAO,SAAsB3B,GAC3B0N,KAAKovG,MAAM98G,IAAY0N,KAAKizB,OAAOq6E,WACrC,GASC,CACD3xG,IAAK,cACL1H,MAAO,SAAqB3B,GAC1B0N,KAAKovG,KAAK98G,GAAW0N,KAAKizB,OAAOq6E,WACnC,GAWC,CACD3xG,IAAK,OACL1H,MAAO,SAAcuwB,GACnB,IAAIpxB,EAAW4M,KAAK9M,eAAiB,EACjCqjB,EAAWvW,KAAKlL,kBAAoB,EACxCyhB,EAAWna,KAAK6a,IAAI,EAAG7a,KAAK8a,IAAI9jB,EAAUmjB,GAAYiO,GAAU,KAChExkB,KAAKqvG,cAAc94F,EAAWnjB,EAChC,GAUC,CACDuI,IAAK,gBACL1H,MAAO,SAAuB0kG,GAC5B34F,KAAK8mG,OAAOnO,GACZ34F,KAAK8tG,OAAOwB,SAAS3W,EACvB,GAYC,CACDh9F,IAAK,SACL1H,MAAO,SAAgB0kG,GACrB,IAAI4W,EAASvvG,KAGb,GAAwB,iBAAb24F,IAA0B6W,SAAS7W,IAAaA,EAAW,GAAKA,EAAW,EACpF,MAAM,IAAI3oE,MAAM,gFAGlBhwB,KAAK89F,UAAU,eAAe,WAC5B,OAAOyR,EAAOzI,OAAOnO,EACvB,IACA,IAAI8W,EAA4C,aAAxBzvG,KAAKizB,OAAO05E,QAChCrH,EAAStlG,KAAK2sG,QAAQ16E,WAEtBw9E,IAAsBnK,GACxBtlG,KAAK2sG,QAAQt4G,QAIf,IAAIq7G,EAAkB1vG,KAAKizB,OAAOlhC,aAClCiO,KAAKizB,OAAOlhC,cAAe,EAC3BiO,KAAK2sG,QAAQ7F,OAAOnO,EAAW34F,KAAK9M,eACpC8M,KAAK8tG,OAAOnV,SAASA,GAEjB8W,IAAsBnK,GACxBtlG,KAAK2sG,QAAQp4G,OAGfyL,KAAKizB,OAAOlhC,aAAe29G,EAC3B1vG,KAAK89F,UAAU,OAAQnF,EACzB,GAOC,CACDh9F,IAAK,OACL1H,MAAO,WACL+L,KAAK3L,QACL2L,KAAK8mG,OAAO,GACZ9mG,KAAK8tG,OAAOnV,SAAS,EACvB,GAUC,CACDh9F,IAAK,YACL1H,MAAO,SAAmBkzG,GACxB,OAAOnnG,KAAK2sG,QAAQvF,UAAUD,EAChC,GASC,CACDxrG,IAAK,YACL1H,MAAO,SAAmBk7G,GACxBnvG,KAAK2sG,QAAQz4G,UAAUi7G,GACvBnvG,KAAK89F,UAAU,SAAUqR,EAC3B,GAQC,CACDxzG,IAAK,YACL1H,MAAO,WACL,OAAO+L,KAAK2sG,QAAQ7sF,WACtB,GASC,CACDnkB,IAAK,kBACL1H,MAAO,SAAyBwrB,GAC9Bzf,KAAK2sG,QAAQvI,gBAAgB3kF,EAC/B,GAOC,CACD9jB,IAAK,kBACL1H,MAAO,WACL,OAAO+L,KAAK2sG,QAAQgD,iBACtB,GAUC,CACDh0G,IAAK,aACL1H,MAAO,WACL+L,KAAK4vG,SAAS5vG,KAAK0lG,QACrB,GAaC,CACD/pG,IAAK,UACL1H,MAAO,SAAiB2rB,GAElBA,IAAS5f,KAAK0lG,SAKd1lG,KAAK2sG,QAAQiD,SAGf5vG,KAAK2sG,QAAQiD,QAAQhwF,GACrB5f,KAAK0lG,QAAU9lF,GAEXA,GAGF5f,KAAK0tG,YAAc1tG,KAAK2sG,QAAQ7sF,YAChC9f,KAAK2sG,QAAQz4G,UAAU,GACvB8L,KAAK0lG,SAAU,EACf1lG,KAAK89F,UAAU,SAAU,KAIzB99F,KAAK2sG,QAAQz4G,UAAU8L,KAAK0tG,aAC5B1tG,KAAK0lG,SAAU,EACf1lG,KAAK89F,UAAU,SAAU99F,KAAK0tG,cAIlC1tG,KAAK89F,UAAU,OAAQ99F,KAAK0lG,UA1B1B1lG,KAAK89F,UAAU,OAAQ99F,KAAK0lG,QA2BhC,GAQC,CACD/pG,IAAK,UACL1H,MAAO,WACL,OAAO+L,KAAK0lG,OACd,GASC,CACD/pG,IAAK,aACL1H,MAAO,WACL,OAAO+L,KAAK2sG,QAAQ13C,SAAW,EACjC,GAOC,CACDt5D,IAAK,eACL1H,MAAO,WACL+L,KAAKizB,OAAOlhC,cAAgBiO,KAAKizB,OAAOlhC,aACxCiO,KAAKivG,YACP,GAOC,CACDtzG,IAAK,oBACL1H,MAAO,WACL+L,KAAKizB,OAAO4qE,UAAY79F,KAAKizB,OAAO4qE,QACtC,GAOC,CACDliG,IAAK,eACL1H,MAAO,WACL,OAAO+L,KAAKizB,OAAOzhC,SACrB,GAQC,CACDmK,IAAK,eACL1H,MAAO,SAAsBswB,GAC3BvkB,KAAKizB,OAAOzhC,UAAY+yB,EACxBvkB,KAAKivG,YACP,GAOC,CACDtzG,IAAK,mBACL1H,MAAO,WACL,OAAO+L,KAAKizB,OAAOxhC,aACrB,GAQC,CACDkK,IAAK,mBACL1H,MAAO,SAA0BswB,GAC/BvkB,KAAKizB,OAAOxhC,cAAgB8yB,EAC5BvkB,KAAKivG,YACP,GAOC,CACDtzG,IAAK,qBACL1H,MAAO,WACL,OAAO+L,KAAKizB,OAAOkmD,eACrB,GAQC,CACDx9E,IAAK,qBACL1H,MAAO,SAA4BswB,GACjCvkB,KAAKizB,OAAOkmD,gBAAkB50D,EAC9Bi2E,EAAKrpG,MAAM6O,KAAKzO,UAAW,CACzBs+G,WAAY7vG,KAAKizB,OAAOkmD,iBAE5B,GAQC,CACDx9E,IAAK,iBACL1H,MAAO,WACL,OAAO+L,KAAKizB,OAAOvhC,WACrB,GASC,CACDiK,IAAK,iBACL1H,MAAO,SAAwBswB,GAC7BvkB,KAAKizB,OAAOvhC,YAAc6yB,EAC1BvkB,KAAK8tG,OAAOzN,cACd,GAOC,CACD1kG,IAAK,YACL1H,MAAO,WACL,OAAO+L,KAAKizB,OAAOphC,MACrB,GAQC,CACD8J,IAAK,YACL1H,MAAO,SAAmBpC,GACxBmO,KAAKizB,OAAOphC,OAASA,EACrBmO,KAAK8tG,OAAOvK,UAAU1xG,EAASmO,KAAKizB,OAAOmpE,YAC3Cp8F,KAAKivG,YACP,GAeC,CACDtzG,IAAK,sBACL1H,MAAO,SAA6B67G,GAClC9vG,KAAKizB,OAAOmvE,qBAAqBU,eAAiBgN,EAClD9vG,KAAKivG,YACP,GAQC,CACDtzG,IAAK,aACL1H,MAAO,WACL,IAaIslG,EAbAyD,EAAe5gG,KAAK4lB,MAAMhiB,KAAK9M,cAAgB8M,KAAKizB,OAAOi6E,YAAcltG,KAAKizB,OAAOmpE,YACrFa,EAAcj9F,KAAK8tG,OAAO5Q,WAC1Br/F,EAAQm/F,EAERjmF,EAAQ,EACRC,EAAM5a,KAAK6a,IAAIF,EAAQkmF,EAAap/F,GAUxC,GARImC,KAAKizB,OAAOupE,cAAgBx8F,KAAKizB,OAAOlhC,cAAgBirG,EAAeC,KAEzElmF,EAAQ,EACRC,EAFAnZ,EAAQo/F,GAONj9F,KAAKizB,OAAOk6E,cAAe,CAC7B,IACI3lG,EADAuoG,EAAY/vG,KAAK+tG,UAAUiC,oBAAoBnyG,EAAOkZ,EAAOC,GAGjE,IAAKxP,EAAI,EAAGA,EAAIuoG,EAAUn4G,OAAQ4P,IAChC+xF,EAAQv5F,KAAK2sG,QAAQsD,SAASpyG,EAAOkyG,EAAUvoG,GAAG,GAAIuoG,EAAUvoG,GAAG,IACnExH,KAAK8tG,OAAOoC,UAAU3W,EAAO17F,EAAOkyG,EAAUvoG,GAAG,GAAIuoG,EAAUvoG,GAAG,GAEtE,MACE+xF,EAAQv5F,KAAK2sG,QAAQsD,SAASpyG,EAAOkZ,EAAOC,GAC5ChX,KAAK8tG,OAAOoC,UAAU3W,EAAO17F,EAAOkZ,EAAOC,GAG7ChX,KAAK89F,UAAU,SAAUvE,EAAO17F,EAClC,GAYC,CACDlC,IAAK,OACL1H,MAAO,SAAck8G,GACdA,GAIHnwG,KAAKizB,OAAOi6E,YAAciD,EAC1BnwG,KAAKizB,OAAOlhC,cAAe,IAJ3BiO,KAAKizB,OAAOi6E,YAAcltG,KAAKwsG,cAAcU,YAC7CltG,KAAKizB,OAAOlhC,cAAe,GAM7BiO,KAAKivG,aACLjvG,KAAK8tG,OAAOnV,SAAS34F,KAAK2sG,QAAQuC,qBAClClvG,KAAK8tG,OAAOwB,SAAStvG,KAAKlL,iBAAmBkL,KAAK9M,eAClD8M,KAAK89F,UAAU,OAAQqS,EACzB,GAQC,CACDx0G,IAAK,kBACL1H,MAAO,SAAyB45G,GAC9B,IAAIuC,EAASpwG,KAEbA,KAAKqwG,kBAAkBxC,GAAa,SAAUv9F,GACvC8/F,EAAOjC,aACViC,EAAOE,kBAAkBhgG,EAE7B,GACF,GASC,CACD3U,IAAK,oBACL1H,MAAO,SAA2BsgF,GAChCv0E,KAAK2sG,QAAQz6G,KAAKqiF,GAClBv0E,KAAKivG,aACLjvG,KAAKouG,SAAU,EACfpuG,KAAK89F,UAAU,QACjB,GAQC,CACDniG,IAAK,WACL1H,MAAO,SAAkBsyB,GACvB,IAAIgqF,EAAUvwG,KAGVwwG,EAAS,IAAIC,WACjBD,EAAOv7G,iBAAiB,YAAY,SAAUsD,GAC5C,OAAOg4G,EAAQpH,WAAW5wG,EAC5B,IACAi4G,EAAOv7G,iBAAiB,QAAQ,SAAUsD,GACxC,OAAOg4G,EAAQG,gBAAgBn4G,EAAEE,OAAOyJ,OAC1C,IACAsuG,EAAOv7G,iBAAiB,SAAS,WAC/B,OAAOs7G,EAAQzS,UAAU,QAAS,qBACpC,IACA0S,EAAOG,kBAAkBpqF,GACzBvmB,KAAK4wG,OACP,GA6BC,CACDj1G,IAAK,OACL1H,MAAO,SAAcuyB,EAAK+yE,EAAOoL,EAASvxG,GACxC,IAAKozB,EACH,MAAM,IAAIwJ,MAAM,iCAKlB,GAFAhwB,KAAK4wG,QAEDjM,EAAS,CAGX,IAAIkM,EAAuB,CACzB,+CAAkG,IAAnD,CAAC,OAAQ,WAAY,QAAQttG,QAAQohG,GACpF,0BAA2BpL,EAC3B,mEAA8I,IAA3E,CAAC,eAAgB,wBAAwBh2F,QAAQvD,KAAKizB,OAAO05E,SAChI,4BAA4C,iBAARnmF,GAElCsqF,EAAgB/pG,OAAOM,KAAKwpG,GAAsBxwG,QAAO,SAAU0wG,GACrE,OAAOF,EAAqBE,EAC9B,IAEID,EAAcl5G,SAEhBoxD,QAAQC,KAAK,sEAAwE6nD,EAAcn7F,KAAK,WAExGgvF,EAAU,KAEd,CAQA,OAJ4B,aAAxB3kG,KAAKizB,OAAO05E,SAA0BnmF,aAAeggF,mBACvDhgF,EAAMA,EAAIpT,KAGJpT,KAAKizB,OAAO05E,SAClB,IAAK,WACH,OAAO3sG,KAAKgxG,WAAWxqF,EAAK+yE,EAAOnmG,GAErC,IAAK,eACL,IAAK,uBACH,OAAO4M,KAAKixG,iBAAiBzqF,EAAK+yE,EAAOoL,EAASvxG,GAExD,GAYC,CACDuI,IAAK,aACL1H,MAAO,SAAoBuyB,EAAK+yE,EAAOnmG,GACrC,IAAI89G,EAAUlxG,KAEV9N,EAAO,SAAci/G,GAKvB,OAJIA,GACFD,EAAQvD,UAAUtuG,KAAK6xG,EAAQE,KAAK,QAASD,IAGxCD,EAAQG,eAAe7qF,GAAK,SAAUlW,GAC3C,OAAO4gG,EAAQR,gBAAgBpgG,EACjC,GACF,EAEA,IAAIipF,EAMF,OAAOrnG,IALP8N,KAAK2sG,QAAQ2E,SAAS/X,EAAOnmG,GAC7B4M,KAAKivG,aACLjvG,KAAK89F,UAAU,kBACf99F,KAAK2tG,UAAUtuG,KAAKW,KAAKoxG,KAAK,cAAel/G,GAIjD,GAeC,CACDyJ,IAAK,mBACL1H,MAAO,SAA0Bs9G,EAAUhY,EAAOoL,EAASvxG,GACzD,IAAIo+G,EAAUxxG,KAEVwmB,EAAM+qF,EAEV,GAAwB,iBAAbA,EACTvxG,KAAK2sG,QAAQz6G,KAAKs0B,EAAKxmB,KAAKitG,eAAgB1T,EAAOoL,OAC9C,CACL,IAAI4B,EAAMgL,EACVvxG,KAAK2sG,QAAQ8E,QAAQlL,EAAKhN,GAG1B/yE,EAAM+/E,EAAInzF,GACZ,CAEApT,KAAK2tG,UAAUtuG,KAAKW,KAAK2sG,QAAQyE,KAAK,WAAW,WAE1CI,EAAQ7E,QAAQ/hC,YACnB4mC,EAAQvC,aAERuC,EAAQpD,SAAU,EAElBoD,EAAQ1T,UAAU,SAEtB,IAAI99F,KAAK2sG,QAAQyE,KAAK,SAAS,SAAUpmF,GACvC,OAAOwmF,EAAQ1T,UAAU,QAAS9yE,EACpC,KAEIuuE,IACFv5F,KAAK2sG,QAAQ2E,SAAS/X,EAAOnmG,GAC7B4M,KAAKivG,aACLjvG,KAAK89F,UAAU,mBAMXvE,IAASv5F,KAAKizB,OAAO65E,cAAgB9sG,KAAK2sG,QAAQqB,oBACtDhuG,KAAKqxG,eAAe7qF,GAAK,SAAUqnF,GACjC2D,EAAQnB,kBAAkBxC,GAAa,SAAUt5B,GAC/Ci9B,EAAQ7E,QAAQp4B,OAASA,EAEzBi9B,EAAQ7E,QAAQ2E,SAAS,MAEzBE,EAAQvC,aAERuC,EAAQ1T,UAAU,iBACpB,GACF,GAEJ,GASC,CACDniG,IAAK,oBACL1H,MAAO,SAA2B45G,EAAaz4G,GAC7C,IAAIs8G,EAAU1xG,KAETA,KAAKmuG,cACRnuG,KAAK6tG,YAAcA,EACnB7tG,KAAK2sG,QAAQ0D,kBAAkBxC,GAAa,SAAUv9F,GAG/CohG,EAAQvD,aAAeuD,EAAQ7D,aAAeA,IACjDz4G,EAASkb,GACTohG,EAAQ7D,YAAc,KAE1B,IAAG,WACD,OAAO6D,EAAQ5T,UAAU,QAAS,6BACpC,IAEJ,GAUC,CACDniG,IAAK,iBACL1H,MAAO,SAAwBuyB,EAAKpxB,GAClC,IAAIu8G,EAAU3xG,KAEVqN,EAAUtG,OAAO+iD,OAAO,CAC1BtjC,IAAKA,EACLkE,aAAc,eACb1qB,KAAKizB,OAAO1I,KACXqnF,EAAUpX,EAAKqX,UAAUxkG,GAY7B,OAXArN,KAAK4tG,eAAiBgE,EACtB5xG,KAAK2tG,UAAUtuG,KAAKuyG,EAAQ18G,GAAG,YAAY,SAAUqD,GACnDo5G,EAAQxI,WAAW5wG,EACrB,IAAIq5G,EAAQ18G,GAAG,WAAW,SAAUob,GAClClb,EAASkb,GACTqhG,EAAQ/D,eAAiB,IAC3B,IAAIgE,EAAQ18G,GAAG,SAAS,SAAUqD,GAChCo5G,EAAQ7T,UAAU,QAASvlG,GAE3Bo5G,EAAQ/D,eAAiB,IAC3B,KACOgE,CACT,GASC,CACDj2G,IAAK,aACL1H,MAAO,SAAoBsE,GACzB,IAAIu5G,EAGFA,EADEv5G,EAAEyxG,iBACczxG,EAAEgwD,OAAShwD,EAAEuxG,MAIbvxG,EAAEgwD,QAAUhwD,EAAEgwD,OAAS,KAG3CvoD,KAAK89F,UAAU,UAAW1hG,KAAK4lB,MAAwB,IAAlB8vF,GAAwBv5G,EAAEE,OACjE,GAcC,CACDkD,IAAK,YACL1H,MAAO,SAAmB2D,EAAQm6G,EAAUC,EAAUj7F,EAAOC,GAC3Dpf,EAASA,GAAU,KACnBmf,EAAQA,GAAS,EACjBg7F,EAAWA,GAAY,IACvBC,EAAWA,IAAY,EACvB,IAAIzY,EAAQv5F,KAAK2sG,QAAQsD,SAASr4G,EAAQmf,EAAOC,GAC7CkJ,EAAM,GAAG5b,IAAIzB,KAAK02F,GAAO,SAAUtkF,GACrC,OAAO7Y,KAAK4lB,MAAM/M,EAAM88F,GAAYA,CACtC,IACA,OAAO,IAAI3X,SAAQ,SAAUC,EAASgN,GACpC,IAAK2K,EAAU,CACb,IAAIC,EAAW,IAAI3rF,KAAK,CAAC2B,KAAKxL,UAAUyD,IAAO,CAC7CjQ,KAAM,mCAEJiiG,EAASzrF,IAAIC,gBAAgBurF,GACjCx+G,OAAO6f,KAAK4+F,GACZzrF,IAAI0rF,gBAAgBD,EACtB,CAEA7X,EAAQn6E,EACV,GACF,GAoBC,CACDvkB,IAAK,cACL1H,MAAO,SAAqBimG,EAAQC,EAASlqF,GAa3C,OAZKiqF,IACHA,EAAS,aAGNC,IACHA,EAAU,GAGPlqF,IACHA,EAAO,WAGFjQ,KAAK8tG,OAAOlK,SAAS1J,EAAQC,EAASlqF,EAC/C,GAKC,CACDtU,IAAK,aACL1H,MAAO,WACD+L,KAAK4tG,gBAAkB5tG,KAAK4tG,eAAetF,aAIzCtoG,KAAK4tG,eAAehE,SAEtB5pG,KAAK4tG,eAAehE,QAAQwI,SAASzI,OAAM,SAAU3+E,GAAM,IAG7DhrB,KAAK4tG,eAAetF,WAAW+J,QAC/BryG,KAAK4tG,eAAiB,KAE1B,GAKC,CACDjyG,IAAK,iBACL1H,MAAO,WACL+L,KAAK2tG,UAAU30G,SAAQ,SAAUT,GAC/B,OAAOA,EAAE2uG,IACX,GACF,GAKC,CACDvrG,IAAK,QACL1H,MAAO,WACA+L,KAAK2sG,QAAQ16E,aAChBjyB,KAAKq2B,OACLr2B,KAAK2sG,QAAQ2F,oBAGftyG,KAAKouG,SAAU,EACfpuG,KAAKuyG,aACLvyG,KAAKwyG,iBAELxyG,KAAK8tG,OAAOnV,SAAS,GACrB34F,KAAK8tG,OAAO9P,SAAS,GACrBh+F,KAAK8tG,OAAOoC,UAAU,CACpBt4G,OAAQoI,KAAK8tG,OAAO5Q,YACnB,EACL,GAOC,CACDvhG,IAAK,UACL1H,MAAO,WACL+L,KAAKyyG,oBACLzyG,KAAK89F,UAAU,WACf99F,KAAKuyG,aACLvyG,KAAKwyG,iBACLxyG,KAAKg/F,SAE0B,IAA3Bh/F,KAAKizB,OAAOjhC,aACdyB,OAAOqI,oBAAoB,SAAUkE,KAAKsuG,WAAW,GACrD76G,OAAOqI,oBAAoB,oBAAqBkE,KAAKsuG,WAAW,IAG9DtuG,KAAK2sG,UACP3sG,KAAK2sG,QAAQh+E,UAEb3uB,KAAK2sG,QAAU,MAGb3sG,KAAK8tG,QACP9tG,KAAK8tG,OAAOn/E,UAGd3uB,KAAKmuG,aAAc,EACnBnuG,KAAKouG,SAAU,EACfpuG,KAAK6tG,YAAc,IACrB,MAz0D0ExV,EAAkB1+E,EAAYvY,UAAW03F,GAAiByT,GAAalU,EAAkB1+E,EAAa4yF,GAu2D3Kj7G,CACT,CArmD8B,CAqmD5BkpG,EAAK2E,UAEPz+F,EAAQs3F,QAAU1mG,EAClBA,EAAWohH,QAAU,QACrBphH,EAAWkpG,KAAOA,EAClB/5F,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,oBAIA,CAAEv3F,EAAQC,EAAS,KAEzB,aAGA,SAAS8tF,EAAQhuE,GAAmV,OAAtOguE,EAArD,mBAAXnkF,QAAoD,iBAApBA,OAAOjI,SAAmC,SAAiBoe,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,mBAAXnW,QAAyBmW,EAAIvb,cAAgBoF,QAAUmW,IAAQnW,OAAOjJ,UAAY,gBAAkBof,CAAK,EAAYguE,EAAQhuE,EAAM,CAEzXzZ,OAAOO,eAAe5G,EAAS,aAAc,CAC3CzM,OAAO,IAETyM,EAAQs3F,aAAU,EAElB,IAAIwC,EAIJ,SAAiCh6E,EAAKi6E,GAAe,GAAoBj6E,GAAOA,EAAI43E,WAAc,OAAO53E,EAAO,GAAY,OAARA,GAAiC,WAAjBguE,EAAQhuE,IAAoC,mBAARA,EAAsB,MAAO,CAAEw3E,QAASx3E,GAAS,IAAI0nC,EAAQwyC,EAAyBD,GAAc,GAAIvyC,GAASA,EAAMjhD,IAAIuZ,GAAQ,OAAO0nC,EAAM59C,IAAIkW,GAAQ,IAAIm6E,EAAS,CAAC,EAAOC,EAAwB7zF,OAAOO,gBAAkBP,OAAOQ,yBAA0B,IAAK,IAAI5L,KAAO6kB,EAAO,GAAY,YAAR7kB,GAAqBoL,OAAO3F,UAAUsN,eAAe7L,KAAK2d,EAAK7kB,GAAM,CAAE,IAAIgf,EAAOigF,EAAwB7zF,OAAOQ,yBAAyBiZ,EAAK7kB,GAAO,KAAUgf,IAASA,EAAKrQ,KAAOqQ,EAAK3L,KAAQjI,OAAOO,eAAeqzF,EAAQh/F,EAAKgf,GAAgBggF,EAAOh/F,GAAO6kB,EAAI7kB,EAAQ,CAAiE,OAA7Dg/F,EAAO3C,QAAUx3E,EAAS0nC,GAASA,EAAMl5C,IAAIwR,EAAKm6E,GAAkBA,CAAQ,CAJ1xBE,CAAwB,EAAkC,wBAErE,SAASH,EAAyBD,GAAe,GAAuB,mBAAZlrF,QAAwB,OAAO,KAAM,IAAIurF,EAAoB,IAAIvrF,QAAewrF,EAAmB,IAAIxrF,QAAW,OAAQmrF,EAA2B,SAAkCD,GAAe,OAAOA,EAAcM,EAAmBD,CAAmB,GAAGL,EAAc,CAI9U,SAASkY,EAAgBnyF,EAAK7kB,EAAK1H,GAAiK,OAApJ0H,KAAO6kB,EAAOzZ,OAAOO,eAAekZ,EAAK7kB,EAAK,CAAE1H,MAAOA,EAAOmU,YAAY,EAAM9G,cAAc,EAAM+G,UAAU,IAAkBmY,EAAI7kB,GAAO1H,EAAgBusB,CAAK,CAIhN,SAAS63E,EAAkB5/F,EAAQs2C,GAAS,IAAK,IAAIvnC,EAAI,EAAGA,EAAIunC,EAAMn3C,OAAQ4P,IAAK,CAAE,IAAIgG,EAAauhC,EAAMvnC,GAAIgG,EAAWpF,WAAaoF,EAAWpF,aAAc,EAAOoF,EAAWlM,cAAe,EAAU,UAAWkM,IAAYA,EAAWnF,UAAW,GAAMtB,OAAOO,eAAe7O,EAAQ+U,EAAW7R,IAAK6R,EAAa,CAAE,CAM5T,SAASwtF,EAAgB5yE,EAAGnE,GAA+G,OAA1G+2E,EAAkBj0F,OAAO0B,gBAAkB,SAAyB2f,EAAGnE,GAAsB,OAAjBmE,EAAEtT,UAAYmP,EAAUmE,CAAG,EAAU4yE,EAAgB5yE,EAAGnE,EAAI,CAUzK,SAASg3E,EAAgB7yE,GAAwJ,OAAnJ6yE,EAAkBl0F,OAAO0B,eAAiB1B,OAAOW,eAAiB,SAAyB0gB,GAAK,OAAOA,EAAEtT,WAAa/N,OAAOW,eAAe0gB,EAAI,EAAU6yE,EAAgB7yE,EAAI,CAG5M,IAAIwqF,EAAU,UACVC,EAAS,SACTC,EAAW,WAOXtF,EAAwB,SAAUrS,IAxBtC,SAAmBC,EAAUC,GAAc,GAA0B,mBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAIz6F,UAAU,sDAAyDw6F,EAASh6F,UAAY2F,OAAO/F,OAAOq6F,GAAcA,EAAWj6F,UAAW,CAAE6D,YAAa,CAAEhR,MAAOmnG,EAAU/yF,UAAU,EAAM/G,cAAc,KAAe+5F,GAAYL,EAAgBI,EAAUC,EAAa,CAyB9XC,CAAUkS,EAAUrS,GAEpB,IA7BoBxhF,EAAam/E,EAMbyC,EAAeC,EAuB/BC,GAvBgBF,EAuBMiS,EAvBShS,EAMrC,WAAuC,GAAuB,oBAAZE,UAA4BA,QAAQC,UAAW,OAAO,EAAO,GAAID,QAAQC,UAAU7tF,KAAM,OAAO,EAAO,GAAqB,mBAAV8tF,MAAsB,OAAO,EAAM,IAAsF,OAAhFz2F,QAAQ/D,UAAU8T,QAAQrS,KAAK64F,QAAQC,UAAUx2F,QAAS,IAAI,WAAa,MAAY,CAAM,CAAE,MAAO5M,GAAK,OAAO,CAAO,CAAE,CANvQsjG,GAAoC,WAAkC,IAAsC35F,EAAlC45F,EAAQb,EAAgBM,GAAkB,GAAIC,EAA2B,CAAE,IAAIO,EAAYd,EAAgBj7F,MAAMiF,YAAa/C,EAASw5F,QAAQC,UAAUG,EAAOnkG,UAAWokG,EAAY,MAAS75F,EAAS45F,EAAM5jG,MAAM8H,KAAMrI,WAAc,OAEpX,SAAoCyM,EAAMvB,GAAQ,GAAIA,IAA2B,WAAlB2rF,EAAQ3rF,IAAsC,mBAATA,GAAwB,OAAOA,EAAa,QAAa,IAATA,EAAmB,MAAM,IAAIjC,UAAU,4DAA+D,OAE1P,SAAgCwD,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAI43F,eAAe,6DAAgE,OAAO53F,CAAM,CAF4F63F,CAAuB73F,EAAO,CAF4F83F,CAA2Bl8F,KAAMkC,EAAS,GA8Bna,SAASsrG,EAASv6E,GAChB,IAAI8/E,EAAsBC,EAEtB76G,EAuGJ,OAlJJ,SAAyBogG,EAAU5+E,GAAe,KAAM4+E,aAAoB5+E,GAAgB,MAAM,IAAI/Y,UAAU,oCAAwC,CA6CpJ43F,CAAgBx4F,KAAMwtG,IAEtBr1G,EAAQsjG,EAAO54F,KAAK7C,OAGdysG,aAAe,KACrBt0G,EAAM86G,oBAAsB,KAC5B96G,EAAM+6G,gBAA6CP,EAA3BI,EAAuB,CAAC,EAAyCH,EAAS,CAChGp7E,KAAM,WACJx3B,KAAKmzG,mBACP,EACAjE,kBAAmB,WACjB,IAAI97G,EAAW4M,KAAK9M,cACpB,OAAO8M,KAAKlL,iBAAmB1B,GAAY,CAC7C,EACA0B,eAAgB,WACd,OAAOkL,KAAKozG,cAAgBpzG,KAAKqzG,eACnC,IACEV,EAAgBI,EAAsBF,EAAQ,CAChDr7E,KAAM,WACJx3B,KAAKszG,sBACP,EACApE,kBAAmB,WACjB,IAAI97G,EAAW4M,KAAK9M,cACpB,OAAO8M,KAAKlL,iBAAmB1B,GAAY,CAC7C,EACA0B,eAAgB,WACd,OAAOkL,KAAKozG,aACd,IACET,EAAgBI,EAAsBD,EAAU,CAClDt7E,KAAM,WACJx3B,KAAKszG,uBACLtzG,KAAK89F,UAAU,SACjB,EACAoR,kBAAmB,WACjB,OAAO,CACT,EACAp6G,eAAgB,WACd,OAAOkL,KAAK9M,aACd,IACE6/G,GACJ56G,EAAM86B,OAASA,EAGf96B,EAAM2sG,GAAK7xE,EAAOw5E,eAAiBt0G,EAAM61G,mBAAqB71G,EAAMo7G,kBAAoB,CAAC,GAGzFp7G,EAAMq7G,SAAWr7G,EAAM2sG,GAAGniF,YAG1BxqB,EAAMi7G,cAAgB,EAGtBj7G,EAAMs7G,eAAiB,KAGvBt7G,EAAMu7G,QAA6Bf,EAAnBK,EAAe,CAAC,EAAiCJ,EAAS7rG,OAAO/F,OAAO7I,EAAM+6G,eAAeN,KAAYD,EAAgBK,EAAcH,EAAQ9rG,OAAO/F,OAAO7I,EAAM+6G,eAAeL,KAAWF,EAAgBK,EAAcF,EAAU/rG,OAAO/F,OAAO7I,EAAM+6G,eAAeJ,KAAaE,GAGrS76G,EAAMo8E,OAAS,KAGfp8E,EAAM88D,QAAU,GAGhB98D,EAAMw7G,SAAW,KAGjBx7G,EAAMy7G,YAAc,KAGpBz7G,EAAM07G,UAAY,KAGlB17G,EAAMohG,MAAQ,KAGdphG,EAAMotG,aAAe,EAGrBptG,EAAM6sG,SAAW,KAGjB7sG,EAAM27G,WAAa,KAGnB37G,EAAMiP,OAAS,KAGfjP,EAAM47G,WAAa,GAGnB57G,EAAMqX,MAAQ,KAGdrX,EAAMuuG,iBAAmBzzE,EAAO7/B,SAKhC+E,EAAMyyE,WAAY,EACXzyE,CACT,CAktBA,OAj2BoBwhB,EAqJP6zF,EArJoB1U,EAqJV,CAAC,CACtBn9F,IAAK,mBACL1H,MAcA,WACE,SAAUR,OAAOugH,eAAgBvgH,OAAOwgH,mBAC1C,GAOC,CACDt4G,IAAK,kBACL1H,MAAO,WAKL,OAJKR,OAAOygH,yBACVzgH,OAAOygH,uBAAyB,IAAKzgH,OAAOugH,cAAgBvgH,OAAOwgH,qBAG9DxgH,OAAOygH,sBAChB,GASC,CACDv4G,IAAK,yBACL1H,MAAO,SAAgCkgH,GAKrC,OAJK1gH,OAAO2gH,gCACV3gH,OAAO2gH,8BAAgC,IAAK3gH,OAAO4gH,qBAAuB5gH,OAAO6gH,2BAA2B,EAAG,EAAGH,IAG7G1gH,OAAO2gH,6BAChB,GACC,CACDz4G,IAAK,OACL1H,MAAO,WACL+L,KAAKukG,mBACLvkG,KAAKwkG,mBACLxkG,KAAKykG,qBACLzkG,KAAKu0G,SAAS1B,GACd7yG,KAAKokG,gBAAgBpkG,KAAKizB,OAAOoxE,WACjCrkG,KAAKspC,UAAU,EACjB,GAGC,CACD3tC,IAAK,oBACL1H,MAAO,WACD+L,KAAKi1D,UACPj1D,KAAKi1D,QAAQj8D,SAAQ,SAAUqH,GAC7BA,GAAUA,EAAOm0G,YACnB,IACAx0G,KAAKi1D,QAAU,KAEfj1D,KAAKglG,SAASD,QAAQ/kG,KAAK2zG,UAE/B,GAOC,CACDh4G,IAAK,WACL1H,MAAO,SAAkBub,GACnBxP,KAAKwP,QAAUxP,KAAK0zG,OAAOlkG,KAC7BxP,KAAKwP,MAAQxP,KAAK0zG,OAAOlkG,GACzBxP,KAAKwP,MAAMgoB,KAAK30B,KAAK7C,MAEzB,GAOC,CACDrE,IAAK,YACL1H,MAAO,WACL,IAAK,IAAIyD,EAAOC,UAAUC,OAAQq9D,EAAU,IAAIn9D,MAAMJ,GAAOK,EAAO,EAAGA,EAAOL,EAAMK,IAClFk9D,EAAQl9D,GAAQJ,UAAUI,GAG5BiI,KAAKy0G,WAAWx/C,EAClB,GAUC,CACDt5D,IAAK,aACL1H,MAAO,SAAoBghE,GAEzBj1D,KAAK00G,oBAEDz/C,GAAWA,EAAQr9D,SACrBoI,KAAKi1D,QAAUA,EAEfj1D,KAAKglG,SAASwP,aAEdv/C,EAAQ0/C,QAAO,SAAUC,EAAMC,GAE7B,OADAD,EAAK7P,QAAQ8P,GACNA,CACT,GAAG70G,KAAKglG,UAAUD,QAAQ/kG,KAAK2zG,UAEnC,GAGC,CACDh4G,IAAK,mBACL1H,MAAO,WACD+L,KAAKizB,OAAOy5E,qBACd1sG,KAAK8zG,WAAa9zG,KAAKizB,OAAOy5E,qBAE1B1sG,KAAK8kG,GAAGgQ,sBACV90G,KAAK8zG,WAAa9zG,KAAK8kG,GAAGgQ,sBAAsBtH,EAASuH,kBAEzD/0G,KAAK8zG,WAAa9zG,KAAK8kG,GAAGkQ,qBAAqBxH,EAASuH,kBAI5D/0G,KAAK8zG,WAAW/O,QAAQ/kG,KAAK8kG,GAAG7mF,YAClC,GAGC,CACDtiB,IAAK,oBACL1H,MAAO,WACL,IAAIupG,EAASx9F,KAEbA,KAAK8zG,WAAWmB,eAAiB,WAC/B,IAAI5kF,EAAOmtE,EAAO1oG,iBAEdu7B,GAAQmtE,EAAOtqG,eACjBsqG,EAAO+W,SAASzB,GAEhBtV,EAAOM,UAAU,UACRztE,GAAQmtE,EAAOiW,eACxBjW,EAAOnpG,QACEmpG,EAAOhuF,QAAUguF,EAAOkW,OAAOd,IACxCpV,EAAOM,UAAU,eAAgBztE,EAErC,CACF,GAGC,CACD10B,IAAK,uBACL1H,MAAO,WACL+L,KAAK8zG,WAAWmB,eAAiB,IACnC,GAGC,CACDt5G,IAAK,qBACL1H,MAAO,WACL+L,KAAKglG,SAAWhlG,KAAK8kG,GAAGoQ,iBACxBl1G,KAAKglG,SAASD,QAAQ/kG,KAAK2zG,SAC7B,GAMC,CACDh4G,IAAK,mBACL1H,MAAO,WAED+L,KAAK8kG,GAAGqQ,WACVn1G,KAAK2zG,SAAW3zG,KAAK8kG,GAAGqQ,aAExBn1G,KAAK2zG,SAAW3zG,KAAK8kG,GAAGsQ,iBAI1Bp1G,KAAK2zG,SAAS5O,QAAQ/kG,KAAK8kG,GAAG7mF,YAChC,GASC,CACDtiB,IAAK,YACL1H,MAAO,SAAmBkzG,GACxB,GAAIA,EAAU,CAMZ,IAAIpoF,EAAQ,IAAItrB,OAAO4hH,MAEvB,IAAKt2F,EAAMqoF,UACT,OAAOhN,QAAQiN,OAAO,IAAIr3E,MAAM,+CAGlCjR,EAAM7nB,UAAW,EACjB,IAAIo+G,EAAOt1G,KAAK8kG,GAAGyQ,+BAInB,OAHAv1G,KAAK2zG,SAASa,aACdx0G,KAAK2zG,SAAS5O,QAAQuQ,GACtBv2F,EAAMy2F,UAAYF,EAAKG,OAChB12F,EAAMqoF,UAAUD,EACzB,CACE,OAAO/M,QAAQiN,OAAO,IAAIr3E,MAAM,qBAAuBm3E,GAE3D,GAOC,CACDxrG,IAAK,YACL1H,MAAO,SAAmBA,GACxB+L,KAAK2zG,SAAS+B,KAAKC,eAAe1hH,EAAO+L,KAAK8kG,GAAGniF,YACnD,GAOC,CACDhnB,IAAK,YACL1H,MAAO,WACL,OAAO+L,KAAK2zG,SAAS+B,KAAKzhH,KAC5B,GAUC,CACD0H,IAAK,oBACL1H,MAAO,SAA2B45G,EAAaz4G,EAAUwgH,GAClD51G,KAAK6zG,YACR7zG,KAAK6zG,UAAY7zG,KAAK61G,uBAAuB71G,KAAK8kG,IAAM9kG,KAAK8kG,GAAGqP,WAAan0G,KAAK8kG,GAAGqP,WAAa,QAGhG,uBAAwB1gH,OAG1BuM,KAAK6zG,UAAUiC,gBAAgBjI,GAAa,SAAUv9F,GACpD,OAAOlb,EAASkb,EAClB,GAAGslG,GAEH51G,KAAK6zG,UAAUiC,gBAAgBjI,GAAa7E,MAAK,SAAU14F,GACzD,OAAOlb,EAASkb,EAClB,IAAGq5F,OAAM,SAAU3+E,GACjB,OAAO4qF,EAAQ5qF,EACjB,GAEJ,GAQC,CACDrvB,IAAK,WACL1H,MAAO,SAAkBslG,EAAOnmG,GACd,MAAZA,IACF4M,KAAK0mG,iBAAmBtzG,GAG1B4M,KAAKu5F,MAAQA,CACf,GAOC,CACD59F,IAAK,YACL1H,MAAO,SAAmB2D,GAExB,IAAIoI,KAAK4zG,aAAeh8G,GAAU,EAAIoI,KAAK4zG,YAAYh8G,OAAS,EAAI,EAApE,CAIAoI,KAAK+zG,WAAa,GAClB/zG,KAAK4zG,YAAc,GAGnB,IACI1lG,EADAg1F,EAAWljG,KAAKu0E,OAASv0E,KAAKu0E,OAAOwhC,iBAAmB,EAG5D,IAAK7nG,EAAI,EAAGA,EAAIg1F,EAAUh1F,IACxBlO,KAAK+zG,WAAW7lG,GAAK,GACrBlO,KAAK+zG,WAAW7lG,GAAG,GAAKtW,EAAS,IAAM,EACvCoI,KAAK+zG,WAAW7lG,GAAG,GAAKtW,EAAS,GAAK,GAAK,EAG7CoI,KAAK4zG,YAAY,GAAKh8G,EAAS,IAAM,EACrCoI,KAAK4zG,YAAY,GAAKh8G,EAAS,GAAK,GAAK,CAhBzC,CAiBF,GAWC,CACD+D,IAAK,WACL1H,MAAO,SAAkB2D,EAAQye,EAAOurF,GACtC,GAAI5hG,KAAKu5F,MACP,OAAOv5F,KAAKu5F,MAGd,IAAKv5F,KAAKu0E,OACR,MAAO,GAOT,GAJAl+D,EAAQA,GAAS,EACjBurF,EAAOA,GAAQhqG,EAAS,EACxBoI,KAAKspC,UAAU1xC,IAEVoI,KAAKu0E,OACR,OAAOv0E,KAAKizB,OAAO4vE,cAAgB7iG,KAAK+zG,WAAa/zG,KAAK4zG,YAW5D,IAAK5zG,KAAKu0E,OAAO38E,OAAQ,CACvB,IAAIo+G,EAAYh2G,KAAKi2G,aAAa,EAAG,KAAMj2G,KAAKm0G,YAChDn0G,KAAKu0E,OAASyhC,EAAUzhC,MAC1B,CAEA,IAGIrmE,EAHAgoG,EAAal2G,KAAKu0E,OAAO38E,OAASA,EAClCu+G,KAAgBD,EAAa,KAAO,EACpChT,EAAWljG,KAAKu0E,OAAOwhC,iBAG3B,IAAK7nG,EAAI,EAAGA,EAAIg1F,EAAUh1F,IAAK,CAC7B,IAAIqrF,EAAQv5F,KAAK+zG,WAAW7lG,GACxBkoG,EAAOp2G,KAAKu0E,OAAO8hC,eAAenoG,GAClC1G,OAAI,EAER,IAAKA,EAAI6O,EAAO7O,GAAKo6F,EAAMp6F,IAAK,CAC9B,IAAIuP,KAAWvP,EAAI0uG,GACfl/F,KAASD,EAAQm/F,GAQjBh/F,EAAMk/F,EAAKr/F,GACXE,EAAMC,EACN8P,OAAI,EAER,IAAKA,EAAIjQ,EAAOiQ,EAAIhQ,EAAKgQ,GAAKmvF,EAAY,CACxC,IAAIliH,EAAQmiH,EAAKpvF,GAEb/yB,EAAQgjB,IACVA,EAAMhjB,GAGJA,EAAQijB,IACVA,EAAMjjB,EAEV,CAEAslG,EAAM,EAAI/xF,GAAKyP,EACfsiF,EAAM,EAAI/xF,EAAI,GAAK0P,GAEV,GAALhJ,GAAU+I,EAAMjX,KAAK4zG,YAAY,EAAIpsG,MACvCxH,KAAK4zG,YAAY,EAAIpsG,GAAKyP,IAGnB,GAAL/I,GAAUgJ,EAAMlX,KAAK4zG,YAAY,EAAIpsG,EAAI,MAC3CxH,KAAK4zG,YAAY,EAAIpsG,EAAI,GAAK0P,EAElC,CACF,CAEA,OAAOlX,KAAKizB,OAAO4vE,cAAgB7iG,KAAK+zG,WAAa/zG,KAAK4zG,WAC5D,GAOC,CACDj4G,IAAK,oBACL1H,MAAO,WACL,OAAO+L,KAAKwP,MAAM0/F,kBAAkBrsG,KAAK7C,KAC3C,GAGC,CACDrE,IAAK,mBACL1H,MAAO,WACD+L,KAAKoH,QACPpH,KAAKoH,OAAOotG,YAEhB,GAKC,CACD74G,IAAK,kBACL1H,MAAO,WACL+L,KAAK00G,oBACL10G,KAAKsyG,mBACLtyG,KAAK2zG,SAASa,aACdx0G,KAAK8zG,WAAWU,aAChBx0G,KAAKglG,SAASwP,aAEVx0G,KAAKizB,OAAOqjF,oBAEe,mBAAlBt2G,KAAK8kG,GAAGpyF,OAAyC,UAAjB1S,KAAK8kG,GAAGt1F,OACjDxP,KAAK8kG,GAAGpyF,QAIV1S,KAAK8kG,GAAK,KAGL9kG,KAAKizB,OAAOw5E,aAGfzsG,KAAKizB,OAAOw5E,aAAe,KAF3Bh5G,OAAOygH,uBAAyB,KAMlCzgH,OAAO2gH,8BAAgC,KAE3C,GAKC,CACDz4G,IAAK,UACL1H,MAAO,WACA+L,KAAKiyB,YACRjyB,KAAK3L,QAGP2L,KAAKg/F,QACLh/F,KAAKu0E,OAAS,KACdv0E,KAAK4qE,WAAY,EACjB5qE,KAAKklG,iBACP,GAOC,CACDvpG,IAAK,OACL1H,MAAO,SAAcsgF,GACnBv0E,KAAKozG,cAAgB,EACrBpzG,KAAKwzG,SAAWxzG,KAAK8kG,GAAGniF,YACxB3iB,KAAKu0E,OAASA,EACdv0E,KAAKu2G,cACP,GAGC,CACD56G,IAAK,eACL1H,MAAO,WACL+L,KAAKsyG,mBACLtyG,KAAKoH,OAASpH,KAAK8kG,GAAG0R,qBAEtBx2G,KAAKoH,OAAO2P,MAAQ/W,KAAKoH,OAAO2P,OAAS/W,KAAKoH,OAAOqvG,YACrDz2G,KAAKoH,OAAOivB,KAAOr2B,KAAKoH,OAAOivB,MAAQr2B,KAAKoH,OAAOsvG,QACnD12G,KAAKokG,gBAAgBpkG,KAAKulG,cAC1BvlG,KAAKoH,OAAOmtE,OAASv0E,KAAKu0E,OAC1Bv0E,KAAKoH,OAAO29F,QAAQ/kG,KAAKglG,SAC3B,GAOC,CACDrpG,IAAK,qBACL1H,MAAO,WACgB,aAAjB+L,KAAK8kG,GAAGt1F,OACVxP,KAAK8kG,GAAG9lF,QAAUhf,KAAK8kG,GAAG9lF,QAE9B,GAOC,CACDrjB,IAAK,WACL1H,MAAO,WACL,OAAO+L,KAAKwP,QAAUxP,KAAK0zG,OAAOd,EACpC,GAOC,CACDj3G,IAAK,cACL1H,MAAO,WACL,OAAI+L,KAAK0mG,iBACA1mG,KAAK0mG,iBAGT1mG,KAAKu0E,OAIHv0E,KAAKu0E,OAAOnhF,SAHV,CAIX,GAUC,CACDuI,IAAK,SACL1H,MAAO,SAAgB8iB,EAAOC,GAC5B,GAAKhX,KAAKu0E,OAyBV,OArBAv0E,KAAKyzG,eAAiB,KAET,MAAT18F,IACFA,EAAQ/W,KAAKlL,mBAEAkL,KAAK9M,gBAChB6jB,EAAQ,GAID,MAAPC,IACFA,EAAMhX,KAAK9M,eAGb8M,KAAKozG,cAAgBr8F,EACrB/W,KAAKwzG,SAAWxzG,KAAK8kG,GAAGniF,YAEpB3iB,KAAKwP,QAAUxP,KAAK0zG,OAAOZ,IAC7B9yG,KAAKu0G,SAAS1B,GAGT,CACL97F,MAAOA,EACPC,IAAKA,EAET,GAOC,CACDrb,IAAK,gBACL1H,MAAO,WACL,OAAQ+L,KAAK8kG,GAAGniF,YAAc3iB,KAAKwzG,UAAYxzG,KAAKulG,YACtD,GASC,CACD5pG,IAAK,OACL1H,MAAO,SAAc8iB,EAAOC,GAC1B,GAAKhX,KAAKu0E,OAAV,CAKAv0E,KAAKu2G,eACL,IAAII,EAAe32G,KAAK8mG,OAAO/vF,EAAOC,GACtCD,EAAQ4/F,EAAa5/F,MACrBC,EAAM2/F,EAAa3/F,IACnBhX,KAAKyzG,eAAiBz8F,EACtBhX,KAAKoH,OAAO2P,MAAM,EAAGA,GACrB/W,KAAKilG,qBACLjlG,KAAKu0G,SAAS3B,GACd5yG,KAAK89F,UAAU,OAXf,CAYF,GAKC,CACDniG,IAAK,QACL1H,MAAO,WACL+L,KAAKyzG,eAAiB,KACtBzzG,KAAKozG,eAAiBpzG,KAAKqzG,gBAE3B,IACErzG,KAAKoH,QAAUpH,KAAKoH,OAAOivB,KAAK,EAClC,CAAE,MAAOrL,GAMT,CAEAhrB,KAAKu0G,SAAS1B,GACd7yG,KAAK89F,UAAU,QACjB,GAQC,CACDniG,IAAK,iBACL1H,MAAO,WACL,OAAO+L,KAAKwP,MAAM1a,eAAe+N,KAAK7C,KACxC,GAOC,CACDrE,IAAK,kBACL1H,MAAO,WACL,OAAO+L,KAAKulG,YACd,GAOC,CACD5pG,IAAK,kBACL1H,MAAO,SAAyBA,GAC9B+L,KAAKulG,aAAetxG,GAAS,EAC7B+L,KAAKoH,QAAUpH,KAAKoH,OAAOm+F,aAAaoQ,eAAe31G,KAAKulG,aAAcvlG,KAAK8kG,GAAGniF,YACpF,GAQC,CACDhnB,IAAK,aACL1H,MAAO,SAAoB+iB,GACzBhX,KAAKyzG,eAAiBz8F,CACxB,IA91B8D8hF,GAAYT,EAAkB1+E,EAAYvY,UAAW03F,GAi2B9G0U,CACT,CAx0B4B,CAw0B1BhT,EAAK2E,UAEPz+F,EAAQs3F,QAAUwV,EAClBA,EAASuH,iBAAmB,IAC5Bt0G,EAAOC,QAAUA,EAAQs3F,OAElB,EAED,mCAIEv3F,IAgBR,SAASpJ,EAASC,EAAMs/G,EAAMp/G,GAC5B,IAAIq/G,EAASh/G,EAAMy5E,EAASwlC,EAAW50G,EAGvC,SAAS60G,IACP,IAAInV,EAAOrvG,KAAKu0D,MAAQgwD,EAEpBlV,EAAOgV,GAAQhV,GAAQ,EACzBiV,EAAU7iH,WAAW+iH,EAAOH,EAAOhV,IAEnCiV,EAAU,KACLr/G,IACH0K,EAAS5K,EAAKY,MAAMo5E,EAASz5E,GAC7By5E,EAAUz5E,EAAO,MAGvB,CAdI,MAAQ++G,IAAMA,EAAO,KAgBzB,IAAII,EAAY,WACd1lC,EAAUtxE,KACVnI,EAAOF,UACPm/G,EAAYvkH,KAAKu0D,MACjB,IAAImwD,EAAUz/G,IAAcq/G,EAO5B,OANKA,IAASA,EAAU7iH,WAAW+iH,EAAOH,IACtCK,IACF/0G,EAAS5K,EAAKY,MAAMo5E,EAASz5E,GAC7By5E,EAAUz5E,EAAO,MAGZqK,CACT,EAmBA,OAjBA80G,EAAUE,MAAQ,WACZL,IACFz+G,aAAay+G,GACbA,EAAU,KAEd,EAEAG,EAAUG,MAAQ,WACZN,IACF30G,EAAS5K,EAAKY,MAAMo5E,EAASz5E,GAC7By5E,EAAUz5E,EAAO,KAEjBO,aAAay+G,GACbA,EAAU,KAEd,EAEOG,CACT,CAGA3/G,EAASA,SAAWA,EAEpBoJ,EAAOC,QAAUrJ,CAGV,GAKO+/G,EAA2B,CAAC,EA4B5B,EAzBJ,SAAS,EAAoBC,GAE5B,IAAIC,EAAeF,EAAyBC,GAC5C,QAAqBj3G,IAAjBk3G,EACH,OAAOA,EAAa52G,QAGrB,IAAID,EAAS22G,EAAyBC,GAAY,CAGjD32G,QAAS,CAAC,GAOX,OAHAq3F,EAAoBsf,GAAU52G,EAAQA,EAAOC,QAAS,GAG/CD,EAAOC,OACf,CAO0B,CAAoB,uBAE9C,OAAO,CACP,EA13MM,EA43MhB,EAp4MED,EAAOC,QAAUyc,MCNfi6F,yBAA2B,CAAC,EAGhC,SAASG,oBAAoBF,GAE5B,IAAIC,EAAeF,yBAAyBC,GAC5C,QAAqBj3G,IAAjBk3G,EACH,OAAOA,EAAa52G,QAGrB,IAAID,EAAS22G,yBAAyBC,GAAY,CAGjD32G,QAAS,CAAC,GAOX,OAHAq3F,oBAAoBsf,GAAUx0G,KAAKpC,EAAOC,QAASD,EAAQA,EAAOC,QAAS62G,qBAGpE92G,EAAOC,OACf,CCtBA62G,oBAAoBC,KAAO,CAAC,ECC5BD,oBAAoBz+F,EAAI,SAASrY,GAChC,IAAIg3G,EAASh3G,GAAUA,EAAO23F,WAC7B,WAAa,OAAO33F,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADA82G,oBAAoBlzF,EAAEozF,EAAQ,CAAEzpG,EAAGypG,IAC5BA,CACR,ECNAF,oBAAoBlzF,EAAI,SAAS3jB,EAASg3G,GACzC,IAAI,IAAI/7G,KAAO+7G,EACXH,oBAAoBnvF,EAAEsvF,EAAY/7G,KAAS47G,oBAAoBnvF,EAAE1nB,EAAS/E,IAC5EoL,OAAOO,eAAe5G,EAAS/E,EAAK,CAAEyM,YAAY,EAAMkC,IAAKotG,EAAW/7G,IAG3E,ECPA47G,oBAAoB/oG,EAAI,WACvB,GAA0B,iBAAfD,WAAyB,OAAOA,WAC3C,IACC,OAAOvO,MAAQ,IAAIyO,SAAS,cAAb,EAChB,CAAE,MAAOlW,GACR,GAAsB,iBAAX9E,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxB8jH,oBAAoBnvF,EAAI,SAAS5H,EAAKnC,GAAQ,OAAOtX,OAAO3F,UAAUsN,eAAe7L,KAAK2d,EAAKnC,EAAO,ECCtGk5F,oBAAoBvzF,EAAI,SAAStjB,GACX,oBAAX2J,QAA0BA,OAAOstG,aAC1C5wG,OAAOO,eAAe5G,EAAS2J,OAAOstG,YAAa,CAAE1jH,MAAO,WAE7D8S,OAAOO,eAAe5G,EAAS,aAAc,CAAEzM,OAAO,GACvD,ECHA,IAAI2jH,oBAAsBL,oBAAoB","sources":["webpack:///./audioPlayer.js","webpack:///./main.js","webpack:///./modal.js","webpack:///../../node_modules/core-js/internals/a-function.js","webpack:///../../node_modules/core-js/internals/a-possible-prototype.js","webpack:///../../node_modules/core-js/internals/add-to-unscopables.js","webpack:///../../node_modules/core-js/internals/an-object.js","webpack:///../../node_modules/core-js/internals/array-for-each.js","webpack:///../../node_modules/core-js/internals/array-from.js","webpack:///../../node_modules/core-js/internals/array-includes.js","webpack:///../../node_modules/core-js/internals/array-iteration.js","webpack:///../../node_modules/core-js/internals/array-method-has-species-support.js","webpack:///../../node_modules/core-js/internals/array-method-is-strict.js","webpack:///../../node_modules/core-js/internals/array-species-constructor.js","webpack:///../../node_modules/core-js/internals/array-species-create.js","webpack:///../../node_modules/core-js/internals/call-with-safe-iteration-closing.js","webpack:///../../node_modules/core-js/internals/check-correctness-of-iteration.js","webpack:///../../node_modules/core-js/internals/classof-raw.js","webpack:///../../node_modules/core-js/internals/classof.js","webpack:///../../node_modules/core-js/internals/copy-constructor-properties.js","webpack:///../../node_modules/core-js/internals/correct-prototype-getter.js","webpack:///../../node_modules/core-js/internals/create-iterator-constructor.js","webpack:///../../node_modules/core-js/internals/create-non-enumerable-property.js","webpack:///../../node_modules/core-js/internals/create-property-descriptor.js","webpack:///../../node_modules/core-js/internals/create-property.js","webpack:///../../node_modules/core-js/internals/define-iterator.js","webpack:///../../node_modules/core-js/internals/define-well-known-symbol.js","webpack:///../../node_modules/core-js/internals/descriptors.js","webpack:///../../node_modules/core-js/internals/document-create-element.js","webpack:///../../node_modules/core-js/internals/dom-iterables.js","webpack:///../../node_modules/core-js/internals/engine-user-agent.js","webpack:///../../node_modules/core-js/internals/engine-v8-version.js","webpack:///../../node_modules/core-js/internals/enum-bug-keys.js","webpack:///../../node_modules/core-js/internals/export.js","webpack:///../../node_modules/core-js/internals/fails.js","webpack:///../../node_modules/core-js/internals/function-bind-context.js","webpack:///../../node_modules/core-js/internals/get-built-in.js","webpack:///../../node_modules/core-js/internals/get-iterator-method.js","webpack:///../../node_modules/core-js/internals/global.js","webpack:///../../node_modules/core-js/internals/has.js","webpack:///../../node_modules/core-js/internals/hidden-keys.js","webpack:///../../node_modules/core-js/internals/html.js","webpack:///../../node_modules/core-js/internals/ie8-dom-define.js","webpack:///../../node_modules/core-js/internals/indexed-object.js","webpack:///../../node_modules/core-js/internals/inspect-source.js","webpack:///../../node_modules/core-js/internals/internal-state.js","webpack:///../../node_modules/core-js/internals/is-array-iterator-method.js","webpack:///../../node_modules/core-js/internals/is-array.js","webpack:///../../node_modules/core-js/internals/is-forced.js","webpack:///../../node_modules/core-js/internals/is-object.js","webpack:///../../node_modules/core-js/internals/is-pure.js","webpack:///../../node_modules/core-js/internals/is-symbol.js","webpack:///../../node_modules/core-js/internals/iterator-close.js","webpack:///../../node_modules/core-js/internals/iterators-core.js","webpack:///../../node_modules/core-js/internals/iterators.js","webpack:///../../node_modules/core-js/internals/native-symbol.js","webpack:///../../node_modules/core-js/internals/native-weak-map.js","webpack:///../../node_modules/core-js/internals/number-parse-int.js","webpack:///../../node_modules/core-js/internals/object-create.js","webpack:///../../node_modules/core-js/internals/object-define-properties.js","webpack:///../../node_modules/core-js/internals/object-define-property.js","webpack:///../../node_modules/core-js/internals/object-get-own-property-descriptor.js","webpack:///../../node_modules/core-js/internals/object-get-own-property-names-external.js","webpack:///../../node_modules/core-js/internals/object-get-own-property-names.js","webpack:///../../node_modules/core-js/internals/object-get-own-property-symbols.js","webpack:///../../node_modules/core-js/internals/object-get-prototype-of.js","webpack:///../../node_modules/core-js/internals/object-keys-internal.js","webpack:///../../node_modules/core-js/internals/object-keys.js","webpack:///../../node_modules/core-js/internals/object-property-is-enumerable.js","webpack:///../../node_modules/core-js/internals/object-set-prototype-of.js","webpack:///../../node_modules/core-js/internals/object-to-string.js","webpack:///../../node_modules/core-js/internals/ordinary-to-primitive.js","webpack:///../../node_modules/core-js/internals/own-keys.js","webpack:///../../node_modules/core-js/internals/path.js","webpack:///../../node_modules/core-js/internals/redefine.js","webpack:///../../node_modules/core-js/internals/require-object-coercible.js","webpack:///../../node_modules/core-js/internals/set-global.js","webpack:///../../node_modules/core-js/internals/set-to-string-tag.js","webpack:///../../node_modules/core-js/internals/shared-key.js","webpack:///../../node_modules/core-js/internals/shared-store.js","webpack:///../../node_modules/core-js/internals/shared.js","webpack:///../../node_modules/core-js/internals/string-multibyte.js","webpack:///../../node_modules/core-js/internals/string-trim.js","webpack:///../../node_modules/core-js/internals/to-absolute-index.js","webpack:///../../node_modules/core-js/internals/to-indexed-object.js","webpack:///../../node_modules/core-js/internals/to-integer.js","webpack:///../../node_modules/core-js/internals/to-length.js","webpack:///../../node_modules/core-js/internals/to-object.js","webpack:///../../node_modules/core-js/internals/to-primitive.js","webpack:///../../node_modules/core-js/internals/to-property-key.js","webpack:///../../node_modules/core-js/internals/to-string-tag-support.js","webpack:///../../node_modules/core-js/internals/to-string.js","webpack:///../../node_modules/core-js/internals/uid.js","webpack:///../../node_modules/core-js/internals/use-symbol-as-uid.js","webpack:///../../node_modules/core-js/internals/well-known-symbol-wrapped.js","webpack:///../../node_modules/core-js/internals/well-known-symbol.js","webpack:///../../node_modules/core-js/internals/whitespaces.js","webpack:///../../node_modules/core-js/modules/es.array.concat.js","webpack:///../../node_modules/core-js/modules/es.array.filter.js","webpack:///../../node_modules/core-js/modules/es.array.from.js","webpack:///../../node_modules/core-js/modules/es.array.iterator.js","webpack:///../../node_modules/core-js/modules/es.array.slice.js","webpack:///../../node_modules/core-js/modules/es.function.name.js","webpack:///../../node_modules/core-js/modules/es.object.to-string.js","webpack:///../../node_modules/core-js/modules/es.parse-int.js","webpack:///../../node_modules/core-js/modules/es.string.iterator.js","webpack:///../../node_modules/core-js/modules/es.symbol.description.js","webpack:///../../node_modules/core-js/modules/es.symbol.iterator.js","webpack:///../../node_modules/core-js/modules/es.symbol.js","webpack:///../../node_modules/core-js/modules/web.dom-collections.for-each.js","webpack:///../../node_modules/core-js/modules/web.dom-collections.iterator.js","webpack:///../../node_modules/lottie-web/build/player/lottie.js","webpack:///../../node_modules/wavesurfer.js/dist/wavesurfer.js","webpack:///webpack/bootstrap","webpack:///webpack/runtime/amd options","webpack:///webpack/runtime/compat get default export","webpack:///webpack/runtime/define property getters","webpack:///webpack/runtime/global","webpack:///webpack/runtime/hasOwnProperty shorthand","webpack:///webpack/runtime/make namespace object","webpack:///webpack/startup"],"sourcesContent":["import WaveSurfer from 'wavesurfer.js';\r\n\r\n// Hide IE progress bar\r\nconst preventIEBar = document.getElementById('preventable-progress-container');\r\nconst urgentIEBar = document.getElementById('urgent-progress-container');\r\nconst relatedIEBar = document.getElementById('related-progress-container');\r\npreventIEBar.style.display = 'none';\r\nurgentIEBar.style.display = 'none';\r\nrelatedIEBar.style.display = 'none';\r\n\r\n// Wavesurfer elements\r\nconst urgentWavesurfer = WaveSurfer.create({\r\n container: '#urgent-waveform',\r\n waveColor: 'white',\r\n progressColor: '#f2c047',\r\n cursorColor: '#f2c047',\r\n cursorWidth: 2,\r\n barHeight: '4',\r\n height: 50,\r\n barWidth: '2',\r\n scrollParent: false,\r\n responsive: true,\r\n barRadius: 2,\r\n});\r\nurgentWavesurfer.load('./assets/audio/urgent.mp3');\r\nconst relatedWavesurfer = WaveSurfer.create({\r\n container: '#related-waveform',\r\n waveColor: 'white',\r\n progressColor: '#823180',\r\n cursorColor: '#823180',\r\n cursorWidth: 2,\r\n barHeight: '4',\r\n height: 50,\r\n barWidth: '2',\r\n scrollParent: false,\r\n responsive: true,\r\n barRadius: 2,\r\n});\r\nrelatedWavesurfer.load('./assets/audio/related.mp3');\r\nconst preventableWavesurfer = WaveSurfer.create({\r\n container: '#preventable-waveform',\r\n waveColor: 'white',\r\n progressColor: '#005eaa',\r\n cursorColor: '#005eaa',\r\n cursorWidth: 2,\r\n barHeight: '4',\r\n height: 50,\r\n barWidth: '2',\r\n scrollParent: false,\r\n responsive: true,\r\n barRadius: 2,\r\n});\r\npreventableWavesurfer.load('./assets/audio/preventable.mp3');\r\n\r\n/**\r\n * Converts seconds to MM:SS format for display\r\n * @param {number} seconds number of seconds to convert\r\n * @returns string with converted time\r\n */\r\nconst convertToDisplayTime = (seconds) => new Date(seconds * 1000).toISOString().substr(15, 4);\r\n\r\n/**\r\n * Handles the audio finishing playing\r\n * @param {string} id identifier for the audio player\r\n */\r\nconst endAudio = (id) => {\r\n const player = document.getElementById(`${id}-ap-container`);\r\n const playButton = document.getElementById(`${id}-play`);\r\n player.classList.remove('play');\r\n playButton.innerHTML = '';\r\n};\r\n\r\n/**\r\n * Gets the duration for each audio file when the page loads\r\n */\r\nconst getDuration = (waveSurferElement, id) => {\r\n const duration = waveSurferElement.getDuration();\r\n const timeDisplay = document.getElementById(`${id}-time`);\r\n timeDisplay.innerHTML = `0:00/${convertToDisplayTime(duration)}`;\r\n};\r\n\r\n/**\r\n * Opens and closes the volume slider\r\n * {string} id identifier for the audio player\r\n */\r\nconst openSlider = (id) => {\r\n const volumeSliderContainer = document.getElementById(`${id}-volume-slider`);\r\n const volumeSlider = document.getElementById(`${id}-volume-input`);\r\n const volumeButton = document.getElementById(`${id}-volume`);\r\n\r\n if (window.innerWidth >= 576) {\r\n if (volumeSliderContainer.classList.contains('d-sm-none')) {\r\n volumeSliderContainer.classList.toggle('d-sm-none');\r\n document.body.offsetHeight;\r\n volumeButton.classList.add('expanded');\r\n volumeSlider.classList.add('expanded');\r\n } else {\r\n document.body.offsetHeight;\r\n volumeSlider.classList.remove('expanded');\r\n setTimeout(() => {\r\n volumeButton.classList.remove('expanded');\r\n volumeSliderContainer.classList.toggle('d-sm-none');\r\n }, 100);\r\n }\r\n }\r\n\r\n // On mobile the slider is always visible, so that button behavior changes to mute/ unmute\r\n if (window.innerWidth < 576) {\r\n if (volumeSlider.value > 0) {\r\n volumeSlider.value = 0;\r\n setVolume(id);\r\n } else {\r\n volumeSlider.value = 0.5;\r\n setVolume(id);\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Pauses audio that is currently playing\r\n * @param {string} id identifier for the audio player\r\n */\r\nconst pauseAudio = (id) => {\r\n const player = document.getElementById(`${id}-ap-container`);\r\n\r\n player.classList.remove('play');\r\n\r\n switch (id) {\r\n case 'urgent': {\r\n urgentWavesurfer.pause();\r\n break;\r\n }\r\n case 'related': {\r\n relatedWavesurfer.pause();\r\n break;\r\n }\r\n case 'preventable': {\r\n preventableWavesurfer.pause();\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n};\r\n\r\n/**\r\n * Starts and stops the audio when the play button is clicked.\r\n * @param {string} id identifier for the audio player\r\n */\r\nconst playAudio = (id) => {\r\n // const audio = document.getElementById(`${id}-audio`);\r\n const volumeInput = document.getElementById(`${id}-volume-input`);\r\n const player = document.getElementById(`${id}-ap-container`);\r\n const playButton = document.getElementById(`${id}-play`);\r\n\r\n // pause the audio if it's currently playing\r\n if (player.classList.contains('play')) {\r\n player.classList.remove('play');\r\n playButton.innerHTML = '';\r\n pauseAudio(id);\r\n return;\r\n }\r\n\r\n playButton.innerHTML = '';\r\n\r\n switch (id) {\r\n case 'urgent': {\r\n urgentWavesurfer.setVolume(volumeInput.value);\r\n urgentWavesurfer.play();\r\n break;\r\n }\r\n case 'related': {\r\n relatedWavesurfer.setVolume(volumeInput.value);\r\n relatedWavesurfer.play();\r\n break;\r\n }\r\n case 'preventable': {\r\n preventableWavesurfer.setVolume(volumeInput.value);\r\n preventableWavesurfer.play();\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n\r\n player.classList.add('play');\r\n};\r\n\r\n/**\r\n * Handles input change on the volume slider and sets volume\r\n * @param {*} id identifier for the audio player\r\n */\r\nconst setVolume = (id) => {\r\n const volumeInput = document.getElementById(`${id}-volume-input`);\r\n\r\n switch (id) {\r\n case 'urgent': {\r\n urgentWavesurfer.setVolume(volumeInput.value);\r\n break;\r\n }\r\n case 'related': {\r\n relatedWavesurfer.setVolume(volumeInput.value);\r\n break;\r\n }\r\n case 'preventable': {\r\n preventableWavesurfer.setVolume(volumeInput.value);\r\n break;\r\n }\r\n default: {\r\n break;\r\n }\r\n }\r\n\r\n const audioVolumeButton = document.getElementById(`${id}-volume`);\r\n\r\n if (volumeInput.value < 0.01) {\r\n audioVolumeButton.firstElementChild.classList.remove('fa-volume-up');\r\n audioVolumeButton.firstElementChild.classList.add('fa-volume-slash');\r\n } else {\r\n audioVolumeButton.firstElementChild.classList.remove('fa-volume-slash');\r\n audioVolumeButton.firstElementChild.classList.add('fa-volume-up');\r\n }\r\n};\r\n\r\n/**\r\n * Updates the scrubber bar and time display as audio plays\r\n * @param {Event} e audio updated event\r\n * @param {*} id identifier for the audio player\r\n */\r\nconst updateProgress = (id) => {\r\n const timeDisplay = document.getElementById(`${id}-time`);\r\n\r\n const updateTime = (waveSurferElement) => {\r\n const elapsed = waveSurferElement.getCurrentTime();\r\n const duration = waveSurferElement.getDuration();\r\n const elapsedDisplay = convertToDisplayTime(elapsed);\r\n const durationDisplay = convertToDisplayTime(duration);\r\n timeDisplay.innerHTML = `${elapsedDisplay}/${durationDisplay}`;\r\n };\r\n\r\n switch (id) {\r\n case 'urgent': {\r\n updateTime(urgentWavesurfer);\r\n break;\r\n }\r\n case 'related': {\r\n updateTime(relatedWavesurfer);\r\n break;\r\n }\r\n case 'preventable': {\r\n updateTime(preventableWavesurfer);\r\n break;\r\n }\r\n default: break;\r\n }\r\n};\r\n\r\n// urgent event listeners\r\ndocument.getElementById('urgent-play').addEventListener('click', () => {\r\n playAudio('urgent');\r\n});\r\n\r\ndocument.getElementById('urgent-volume-input').addEventListener('input', () => {\r\n setVolume('urgent');\r\n});\r\n\r\ndocument.getElementById('urgent-volume').addEventListener('click', () => {\r\n openSlider('urgent');\r\n});\r\n\r\nurgentWavesurfer.on('audioprocess', () => {\r\n updateProgress('urgent');\r\n});\r\n\r\nurgentWavesurfer.on('finish', () => {\r\n endAudio('urgent');\r\n});\r\nurgentWavesurfer.on('ready', () => {\r\n getDuration(urgentWavesurfer, 'urgent');\r\n});\r\n\r\n// related event listeners\r\ndocument.getElementById('related-play').addEventListener('click', () => {\r\n playAudio('related');\r\n});\r\n\r\ndocument\r\n .getElementById('related-volume-input')\r\n .addEventListener('input', () => {\r\n setVolume('related');\r\n });\r\n\r\ndocument.getElementById('related-volume').addEventListener('click', () => {\r\n openSlider('related');\r\n});\r\n\r\nrelatedWavesurfer.on('audioprocess', () => {\r\n updateProgress('related');\r\n});\r\n\r\nrelatedWavesurfer.on('finish', () => {\r\n endAudio('related');\r\n});\r\nrelatedWavesurfer.on('ready', () => {\r\n getDuration(relatedWavesurfer, 'related');\r\n});\r\n\r\n// preventable event listeners\r\ndocument.getElementById('preventable-play').addEventListener('click', () => {\r\n playAudio('preventable');\r\n});\r\n\r\ndocument\r\n .getElementById('preventable-volume-input')\r\n .addEventListener('input', () => {\r\n setVolume('preventable');\r\n });\r\n\r\ndocument.getElementById('preventable-volume').addEventListener('click', () => {\r\n openSlider('preventable');\r\n});\r\n\r\npreventableWavesurfer.on('audioprocess', () => {\r\n updateProgress('preventable');\r\n});\r\n\r\npreventableWavesurfer.on('finish', () => {\r\n endAudio('preventable');\r\n});\r\npreventableWavesurfer.on('ready', () => {\r\n getDuration(preventableWavesurfer, 'preventable');\r\n});\r\n","import lottie from \"lottie-web\";\r\n\r\n// Component imports\r\nrequire(\"./modal\");\r\nrequire(\"./audioPlayer\");\r\n\r\nlet currentSlide = 0;\r\nlet scroll = false;\r\nlet scrollBehavior = \"smooth\";\r\nexport let reducedMotion = false;\r\n\r\n// DOM ELEMENTs\r\nconst accordionButtons = document.querySelectorAll(\".accordion\");\r\nconst accordionPanels = document.querySelectorAll(\".panel\");\r\nconst progressBars = document.querySelectorAll(\".apha-progress-bar-container\");\r\nconst progressBarButtons = document.querySelectorAll(\r\n \".apha-progress-bar-button\"\r\n);\r\nconst resetSlideShowButton = document.getElementById(\"reset-slideshow\");\r\nconst startArrowButton = document.getElementById(\"start-arrow\");\r\nconst scrollToggleButtons = document.querySelectorAll(\r\n \".apha-reduced-motion-toggle\"\r\n);\r\nconst vennDiagramButtons = document.querySelectorAll(\".apha-venn-button\");\r\nconst vennDiagramButtonCircles = document.querySelectorAll(\".apha-venn-circle\");\r\nconst vennDiagramButtonText = document.querySelectorAll(\".apha-venn-text\");\r\nconst mediaQuery = window.matchMedia(\"(prefers-reduced-motion: reduce)\");\r\nconst slide2Content = document.getElementById(\"slide2Content\");\r\n\r\n// Lottie animations\r\nconst slideSixAnimation = lottie.loadAnimation({\r\n container: document.getElementById(\"apha-slide6-preventable-animation\"), // the dom element that will contain the animation\r\n renderer: \"svg\",\r\n loop: true,\r\n autoplay: true,\r\n path: \"./assets/animations/data.json\", // the path to the animation json\r\n});\r\n\r\nconst slideTwoAnimation = lottie.loadAnimation({\r\n container: document.getElementById(\"apha-slide2-spotlights-animation\"), // the dom element that will contain the animation\r\n renderer: \"svg\",\r\n loop: false,\r\n autoplay: false,\r\n path: \"./assets/animations/Spotlights.json\", // the path to the animation json\r\n});\r\n\r\n/**\r\n * Restores all animations\r\n */\r\nconst animationRestore = () => {\r\n slideTwoAnimation.goToAndStop(1, true);\r\n unShrinkCircles();\r\n slideSixAnimation.play();\r\n};\r\n\r\n/**\r\n * Stops all animations\r\n */\r\nconst animationStop = () => {\r\n slideSixAnimation.pause();\r\n shrinkCircles();\r\n slideTwoAnimation.goToAndStop(slideTwoAnimation.totalFrames - 1, true);\r\n};\r\n\r\n/**\r\n * Debounces a function call\r\n *\r\n * @param {function} func function to invoke\r\n * @param {number} delay delay in ms\r\n * @param {boolean} immediate start at leading or trailing edge\r\n * @returns function call\r\n */\r\nexport const debounce = (func, delay, immediate) => {\r\n let timerId;\r\n return (...args) => {\r\n const boundFunc = func.bind(this, ...args);\r\n clearTimeout(timerId);\r\n if (immediate && !timerId) {\r\n boundFunc();\r\n }\r\n const calleeFunc = immediate\r\n ? () => {\r\n timerId = null;\r\n }\r\n : boundFunc;\r\n timerId = setTimeout(calleeFunc, delay);\r\n };\r\n};\r\n\r\n/**\r\n * Opens and closes accordion panels\r\n * @param {MouseEvent} e click event\r\n */\r\nconst handleAccordianClick = (e, accordionButton) => {\r\n let target;\r\n\r\n if (!accordionButton) {\r\n if (\r\n e.target.className === \"accordion\" ||\r\n e.target.className === \"accordion accordion-active\"\r\n ) {\r\n target = e.target;\r\n } else {\r\n target = e.target.parentNode;\r\n }\r\n } else {\r\n target = accordionButton;\r\n }\r\n\r\n const arrow = target.childNodes[1];\r\n\r\n const buttonNumber = target.id.charAt(22);\r\n\r\n vennDiagramButtonCircles.forEach((circle) =>\r\n circle.classList.remove(\"active\")\r\n );\r\n vennDiagramButtonText.forEach((text) => text.classList.remove(\"active\"));\r\n const circle = document.getElementById(`venn-circle${buttonNumber}`);\r\n const text = document.getElementById(`venn-text${buttonNumber}`);\r\n\r\n if (target.className !== \"accordion accordion-active\") {\r\n // remove active state from all buttons and set aria-expanded to false\r\n accordionButtons.forEach((button) => {\r\n button.classList.remove(\"accordion-active\");\r\n button.setAttribute(\"aria-expanded\", \"false\");\r\n });\r\n\r\n // set aria-expanded for the target to true\r\n target.setAttribute(\"aria-expanded\", \"true\");\r\n\r\n // remove height from any open panels\r\n accordionPanels.forEach((panel) => {\r\n panel.style.maxHeight = null;\r\n });\r\n\r\n circle.classList.add(\"active\");\r\n text.classList.add(\"active\");\r\n } else {\r\n target.setAttribute(\"aria-expanded\", \"false\");\r\n }\r\n\r\n target.classList.toggle(\"accordion-active\");\r\n arrow.classList.toggle(\"open\");\r\n\r\n const panel = target.nextElementSibling;\r\n\r\n if (panel.style.maxHeight) {\r\n panel.style.maxHeight = null;\r\n } else {\r\n panel.style.maxHeight = `${panel.scrollHeight}px`;\r\n }\r\n};\r\n\r\n/**\r\n * Handles a click the venn diagram image buttons\r\n * @param {MouseEvent} e click event\r\n */\r\nconst handleVennDiagramClick = (e) => {\r\n const accordionHeaderId = e.currentTarget.getAttribute(\"data-id\");\r\n\r\n const accordionHeader = document.getElementById(accordionHeaderId);\r\n\r\n handleAccordianClick(null, accordionHeader);\r\n};\r\n\r\n/**\r\n * Handles up and down keypress in slideshow mode\r\n * @param {MouseEvent} e click event\r\n * @returns\r\n */\r\nconst handleKeypress = (e) => {\r\n // do nothing if on mobile view\r\n if (\r\n window.innerWidth <= 992 ||\r\n window.innerHeight <= 750 ||\r\n scroll === true\r\n ) {\r\n return;\r\n }\r\n\r\n const key = e.code;\r\n const ieKeyCode = e.keyCode;\r\n\r\n if (key === \"ArrowUp\" || ieKeyCode === 38) {\r\n e.preventDefault();\r\n slideUp();\r\n } else if (key === \"ArrowDown\" || ieKeyCode === 40) {\r\n e.preventDefault();\r\n slideDown();\r\n }\r\n};\r\n\r\n/**\r\n * Handles clicks on progress bar buttons\r\n * @param {MouseEvent} e click event\r\n */\r\nconst handleProgressBarButtonClick = (e) => {\r\n const slideNumber = e.currentTarget.dataset.slide;\r\n\r\n if (parseInt(slideNumber) === 0) {\r\n resetSlideShow();\r\n return;\r\n }\r\n\r\n if (currentSlide === slideNumber) {\r\n return;\r\n }\r\n\r\n if (currentSlide < slideNumber) {\r\n slideDown(slideNumber);\r\n } else {\r\n slideUp(slideNumber);\r\n }\r\n};\r\n\r\n/**\r\n * Handles mouse wheel scroll up and down while in slideshow mode\r\n * @param {MouseEvent} e wheel event\r\n */\r\nconst handleWheelEvent = (e) => {\r\n // do nothing if on mobile view\r\n if (\r\n window.innerWidth <= 992 ||\r\n window.innerHeight <= 750 ||\r\n scroll === true\r\n ) {\r\n return;\r\n }\r\n\r\n const scrollAmount = e.deltaY;\r\n\r\n if (scrollAmount >= 1) {\r\n slideDown();\r\n }\r\n\r\n if (scrollAmount <= -1) {\r\n slideUp();\r\n }\r\n};\r\n\r\n/**\r\n * Moves to the top of the slideshow\r\n */\r\nconst resetSlideShow = () => {\r\n window.scrollTo({ left: 0, top: 0, behavior: scrollBehavior });\r\n currentSlide = 0;\r\n};\r\n\r\n/**\r\n * Navigates down one slide or to a certain slide #\r\n * @param {int} slideNumber the slide to navigate to\r\n */\r\nconst slideDown = (slideNumber) => {\r\n // do nothing if on the last slide and there is no slide number argument (down arrow pressed)\r\n if (currentSlide === 9 && !slideNumber) {\r\n return;\r\n }\r\n\r\n // set the current slide to the next slide\r\n if (slideNumber) {\r\n currentSlide = parseInt(slideNumber);\r\n } else {\r\n currentSlide++;\r\n }\r\n\r\n // get the position of the next slide\r\n const topOfNextSlide = document\r\n .getElementById(`slide${currentSlide}`)\r\n .getBoundingClientRect().top;\r\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n const yPosition = topOfNextSlide + scrollTop;\r\n\r\n // different scrollTo method invocations for ie/ not ie\r\n if (window.document.documentMode) {\r\n window.scrollTo(0, yPosition);\r\n } else {\r\n window.scrollTo({ left: 0, top: yPosition, behavior: scrollBehavior });\r\n }\r\n\r\n if (currentSlide === 2 && !reducedMotion) {\r\n setTimeout(() => {\r\n slideTwoAnimation.play();\r\n slide2Content.classList.add(\"fade-in\");\r\n }, 600);\r\n }\r\n\r\n if (currentSlide === 7 && !reducedMotion) {\r\n setTimeout(() => {\r\n shrinkCircles();\r\n }, 500);\r\n }\r\n};\r\n\r\n/**\r\n * Navigates up one slide or to a certain slide #\r\n * @param {int} slideNumber the slide to navigate to\r\n */\r\nconst slideUp = (slideNumber) => {\r\n if (currentSlide === 0) {\r\n return;\r\n }\r\n\r\n // set the current slide to the next slide\r\n if (slideNumber) {\r\n currentSlide = parseInt(slideNumber);\r\n } else {\r\n currentSlide--;\r\n }\r\n\r\n const topOfPreviousSlide = document\r\n .getElementById(`slide${currentSlide}`)\r\n .getBoundingClientRect().top;\r\n const scrollTop = window.pageYOffset || document.documentElement.scrollTop;\r\n const yPosition = topOfPreviousSlide + scrollTop;\r\n if (window.document.documentMode) {\r\n window.scrollTo(0, yPosition);\r\n } else {\r\n window.scrollTo({ left: 0, top: yPosition, behavior: scrollBehavior });\r\n }\r\n\r\n if (currentSlide === 2 && !reducedMotion) {\r\n setTimeout(() => {\r\n slideTwoAnimation.play();\r\n slide2Content.classList.add(\"fade-in\");\r\n }, 500);\r\n }\r\n\r\n if (currentSlide === 7 && !reducedMotion) {\r\n setTimeout(() => {\r\n shrinkCircles();\r\n }, 500);\r\n }\r\n};\r\n\r\n/**\r\n * Starts the shrinking circles animation on slide 7\r\n */\r\nconst shrinkCircles = () => {\r\n const circles = document.querySelectorAll(\".circle\");\r\n circles.forEach((circle) => {\r\n circle.classList.add(\"shrink\");\r\n });\r\n};\r\n\r\n/**\r\n * Detects and qualifies swipes on a touchscreen\r\n * @param {function} callback function to call after touch event ends\r\n */\r\nconst swipedetect = (callback) => {\r\n let swipedir;\r\n let startX;\r\n let startY;\r\n let distX;\r\n let distY;\r\n const threshold = 150; // required min distance traveled to be considered swipe\r\n const restraint = 100; // maximum distance allowed at the same time in perpendicular direction\r\n const allowedTime = 300; // maximum time allowed to travel that distance\r\n let elapsedTime;\r\n let startTime;\r\n const handleswipe = callback;\r\n\r\n document.addEventListener(\r\n \"touchstart\",\r\n (e) => {\r\n const touchobj = e.changedTouches[0];\r\n swipedir = \"none\";\r\n // dist = 0;\r\n startX = touchobj.pageX;\r\n startY = touchobj.pageY;\r\n startTime = new Date().getTime(); // record time when finger first makes contact with surface\r\n },\r\n false\r\n );\r\n\r\n document.addEventListener(\r\n \"touchend\",\r\n (e) => {\r\n const touchobj = e.changedTouches[0];\r\n distX = touchobj.pageX - startX;\r\n // get horizontal dist traveled by finger while in contact with surface\r\n distY = touchobj.pageY - startY;\r\n // get vertical dist traveled by finger while in contact with surface\r\n elapsedTime = new Date().getTime() - startTime; // get time elapsed\r\n if (elapsedTime <= allowedTime) {\r\n // first condition for awipe met\r\n if (Math.abs(distX) >= threshold && Math.abs(distY) <= restraint) {\r\n // 2nd condition for horizontal swipe met\r\n swipedir = distX < 0 ? \"left\" : \"right\"; // if dist traveled is negative, it indicates left swipe\r\n } else if (\r\n Math.abs(distY) >= threshold &&\r\n Math.abs(distX) <= restraint\r\n ) {\r\n // 2nd condition for vertical swipe met\r\n swipedir = distY < 0 ? \"up\" : \"down\"; // if dist traveled is negative, it indicates up swipe\r\n }\r\n }\r\n handleswipe(swipedir);\r\n },\r\n false\r\n );\r\n};\r\n\r\n/**\r\n * Moves to slide 1 when the arrow on slide 0 is clicked\r\n */\r\nconst startSlideshow = () => {\r\n slideDown();\r\n};\r\n\r\n/**\r\n * Toggles slideshow mode on and off\r\n */\r\nconst toggleReducedMotion = (e) => {\r\n if (scroll === false) {\r\n reducedMotion = true;\r\n\r\n animationStop();\r\n scrollBehavior = \"auto\";\r\n\r\n scrollToggleButtons.forEach((button) => {\r\n button.innerHTML = \"Reduced Motion ON\";\r\n });\r\n document.querySelector(\"body\").style.overflow = \"auto\";\r\n progressBars.forEach((progressBar) => {\r\n progressBar.classList.add(\"d-none\");\r\n });\r\n slide2Content.classList.add(\"fade-in\");\r\n scroll = true;\r\n } else if (scroll === true) {\r\n const targetSlide = e.target.dataset.slide;\r\n reducedMotion = false;\r\n\r\n animationRestore();\r\n scrollBehavior = \"smooth\";\r\n\r\n scrollToggleButtons.forEach((button) => {\r\n button.innerHTML = \"Reduced Motion OFF\";\r\n });\r\n document.querySelector(\"body\").style.overflow = \"hidden\";\r\n progressBars.forEach((progressBar) => {\r\n progressBar.classList.remove(\"d-none\");\r\n });\r\n\r\n scroll = false;\r\n slideDown(targetSlide);\r\n turnOnReducedMotionWithTab();\r\n }\r\n};\r\n\r\n/**\r\n * Turns off slideshow mode when tab is pressed.\r\n */\r\nconst turnOnReducedMotionWithTab = () => {\r\n document.addEventListener(\r\n \"keydown\",\r\n function tabPress(e) {\r\n const key = e.keyCode || e.code;\r\n\r\n if (key === 9 || key === \"Tab\") {\r\n toggleReducedMotion();\r\n document.removeEventListener(\"keydown\", tabPress, false);\r\n }\r\n },\r\n false\r\n );\r\n};\r\n\r\n/**\r\n * Resets the shrinking circles animation on slide 7\r\n */\r\nconst unShrinkCircles = () => {\r\n const circles = document.querySelectorAll(\".circle\");\r\n circles.forEach((circle) => {\r\n circle.classList.remove(\"shrink\");\r\n });\r\n};\r\n\r\n/**\r\n * Runs when the script is loaded\r\n */\r\n(() => {\r\n // Starts swipe detection\r\n swipedetect((swipedir) => {\r\n if (swipedir === \"down\") {\r\n slideUp();\r\n }\r\n if (swipedir === \"up\") {\r\n slideDown();\r\n }\r\n });\r\n\r\n // Starts the event listener for the tab to toggle reduced motion\r\n turnOnReducedMotionWithTab();\r\n\r\n // Scrolls to the top before refresh\r\n window.onbeforeunload = function () {\r\n window.scrollTo(0, 0);\r\n };\r\n\r\n // Turns on reduced motion if enabled in OS\r\n window.onload = () => {\r\n if (mediaQuery.matches) {\r\n toggleReducedMotion();\r\n }\r\n };\r\n})();\r\n\r\n// EVENT LISTENERS\r\ndocument.addEventListener(\"keydown\", handleKeypress);\r\ndocument.addEventListener(\"scroll\", () => {\r\n if (\r\n !reducedMotion &&\r\n (window.innerWidth < 992 || window.innerHeight <= 750)\r\n ) {\r\n const top = window.pageYOffset || document.documentElement.scrollTop;\r\n const slideTwoLottie = document.querySelector(\r\n \".apha-slide2-image-animated-container\"\r\n );\r\n const slideTwoLottieTop =\r\n slideTwoLottie.getBoundingClientRect().top +\r\n top -\r\n window.innerHeight +\r\n 400;\r\n const slideSevenAnimation = document.querySelector(\r\n \".apha-shrinking-circles\"\r\n );\r\n const slideSevenAnimationTop =\r\n slideSevenAnimation.getBoundingClientRect().top +\r\n top -\r\n window.innerHeight +\r\n 400;\r\n\r\n if (top > slideTwoLottieTop) {\r\n setTimeout(() => {\r\n slideTwoAnimation.play();\r\n slide2Content.classList.add(\"fade-in\");\r\n }, 500);\r\n }\r\n\r\n if (top > slideSevenAnimationTop) {\r\n setTimeout(() => {\r\n shrinkCircles();\r\n }, 500);\r\n }\r\n }\r\n});\r\ndocument.addEventListener(\"wheel\", debounce(handleWheelEvent, 250, true));\r\nvennDiagramButtons.forEach((button) => {\r\n button.addEventListener(\"click\", handleVennDiagramClick);\r\n});\r\naccordionButtons.forEach((button) => {\r\n button.addEventListener(\"click\", handleAccordianClick);\r\n});\r\nprogressBarButtons.forEach((button) => {\r\n button.addEventListener(\"click\", handleProgressBarButtonClick);\r\n});\r\nresetSlideShowButton.addEventListener(\"click\", resetSlideShow);\r\nscrollToggleButtons.forEach((button) => {\r\n button.addEventListener(\"click\", toggleReducedMotion);\r\n});\r\nstartArrowButton.addEventListener(\"click\", startSlideshow);\r\n","// Imports\r\nimport { debounce, reducedMotion } from './main';\r\n\r\n// DOM ELEMENTS\r\nconst understandingCloseButtons = document.getElementsByClassName(\r\n 'understanding-close-button',\r\n);\r\nconst understandingOpenButtons = document.getElementsByClassName(\r\n 'understanding-button',\r\n);\r\nconst strategyCloseButton = document.querySelector('.strategy-close-button');\r\nconst strategyOpenButton = document.getElementById('strategy-button');\r\n\r\n// list of tabbable elements\r\nconst CANDIDATES = `\r\n a, button, input, select, textarea, svg, area, details, summary,\r\n iframe, object, embed, \r\n [tabindex], [contenteditable]\r\n`;\r\nlet focusTrap;\r\n// variable for close on escape function so event listener can be removed\r\nlet closeFunction;\r\nconst openModals = [];\r\nconst windowWidth = window.innerWidth;\r\n\r\n/**\r\n * Closes all open modals\r\n */\r\nconst closeAllModals = () => {\r\n if (!document.getElementById('strategy-modal').classList.contains('d-none')) { closeStrategyModal(); }\r\n openModals.forEach((modal) => {\r\n closeReducedMotionModal(modal);\r\n });\r\n};\r\n\r\n/**\r\n * Closes an open understanding modal with animation for slide-show view\r\n * @param {HTMLElement} modal The modal to close\r\n * @param {HTMLElement} card The card which contains the modal button\r\n */\r\nconst closeAnimatedFullscreenModal = (modal, card) => {\r\n const finalWidth = card.getBoundingClientRect().width - 10;\r\n\r\n modal.firstElementChild.style.opacity = '0';\r\n setTimeout(() => {\r\n modal.style.width = `${finalWidth}px`;\r\n }, 500);\r\n setTimeout(() => {\r\n modal.style.opacity = '0';\r\n }, 1000);\r\n setTimeout(() => {\r\n modal.style.width = null;\r\n modal.style.height = null;\r\n modal.style.top = null;\r\n modal.style.left = null;\r\n modal.classList.add('d-none');\r\n modal.firstElementChild.classList.add('d-none');\r\n modal.classList.remove('motion-off');\r\n modal.firstElementChild.classList.remove('motion-off');\r\n }, 1500);\r\n};\r\n\r\n/**\r\n * Closes an open understanding modal with animation for mobile\r\n * @param {HTMLElement} modal The modal to close\r\n * @param {HTMLElement} card The card which contains the modal button\r\n */\r\nconst closeAnimatedMobileModal = (modal, card) => {\r\n const windowY = window.scrollY || window.pageYOffset;\r\n const yFinal = card.getBoundingClientRect().bottom + windowY + 5;\r\n\r\n modal.firstElementChild.style.opacity = '0';\r\n setTimeout(() => {\r\n modal.style.height = '0';\r\n modal.style.top = `${yFinal}px`;\r\n }, 500);\r\n setTimeout(() => {\r\n modal.style.opacity = '0';\r\n modal.style.width = null;\r\n modal.style.height = null;\r\n modal.style.top = null;\r\n modal.style.left = null;\r\n modal.classList.add('d-none');\r\n modal.firstElementChild.classList.add('d-none');\r\n modal.classList.remove('motion-off');\r\n modal.firstElementChild.classList.remove('motion-off');\r\n }, 1000);\r\n};\r\n\r\n/**\r\n * Closes an open understanding modal without animation\r\n * @param {HTMLElement} modal the modal to close\r\n */\r\nconst closeReducedMotionModal = (modal) => {\r\n modal.style.opacity = '0';\r\n modal.firstElementChild.style.opacity = '0';\r\n\r\n modal.style.width = null;\r\n modal.style.height = null;\r\n modal.style.top = null;\r\n modal.style.left = null;\r\n modal.classList.add('d-none');\r\n modal.firstElementChild.classList.add('d-none');\r\n modal.classList.remove('motion-off');\r\n modal.firstElementChild.classList.remove('motion-off');\r\n\r\n if (focusTrap) { focusTrap.release(); }\r\n};\r\n\r\n/**\r\n * Closes modal windows when the escape key is pressed, releases focus trap, and removes esc\r\n * key event listener\r\n * @param {MouseEvent} e click event\r\n * @param {HTMLElement} modal\r\n * @param {function} _close\r\n * @returns\r\n */\r\nconst closeOnEscape = (e, modal, _close) => {\r\n if (e.keyCode !== 27) {\r\n return;\r\n }\r\n\r\n if (modal.id === 'strategy-modal') {\r\n closeStrategyModal();\r\n return;\r\n }\r\n\r\n const targetCard = modal.querySelector('button').dataset.card;\r\n const card = document.getElementById(targetCard);\r\n const cardButton = document.getElementById(`${modal.id}-button`);\r\n\r\n if (!reducedMotion && window.innerWidth >= 992) {\r\n closeAnimatedFullscreenModal(modal, card);\r\n }\r\n\r\n if (!reducedMotion && window.innerWidth < 992) {\r\n closeAnimatedMobileModal(modal, card);\r\n }\r\n\r\n if (reducedMotion) {\r\n closeReducedMotionModal(modal);\r\n }\r\n\r\n if (focusTrap) { focusTrap.release(); }\r\n\r\n cardButton.focus();\r\n\r\n document.removeEventListener('keydown', _close, true);\r\n};\r\n\r\n/**\r\n * Handles the button click to close understanding modals\r\n * @param {MouseEvent} e click event\r\n */\r\nconst closeUnderstandingModal = (e) => {\r\n const _close = closeFunction;\r\n\r\n const closeButton = e.currentTarget;\r\n const modalToClose = closeButton.dataset.modal;\r\n const cardId = closeButton.dataset.card;\r\n const modal = document.getElementById(modalToClose);\r\n const card = document.getElementById(cardId);\r\n const cardButton = document.getElementById(`${modalToClose}-button`);\r\n\r\n if (!reducedMotion && window.innerWidth >= 992) {\r\n closeAnimatedFullscreenModal(modal, card);\r\n }\r\n\r\n if (!reducedMotion && window.innerWidth < 992) {\r\n closeAnimatedMobileModal(modal, card);\r\n }\r\n\r\n if (reducedMotion) {\r\n closeReducedMotionModal(modal);\r\n }\r\n\r\n if (focusTrap) { focusTrap.release(); }\r\n cardButton.focus();\r\n\r\n document.removeEventListener('keydown', _close, true);\r\n};\r\n\r\n/**\r\n * Handles the button click to open understanding modals\r\n * @param {MouseEvent} e click event\r\n */\r\nconst openUnderStandingModal = (e) => {\r\n const targetModal = e.currentTarget.dataset.id;\r\n const modalContainer = document.getElementById(targetModal);\r\n const modalContent = modalContainer.firstElementChild;\r\n const cardsContainer = document.getElementById('understanding-content');\r\n const targetCard = e.currentTarget.dataset.card;\r\n const card = document.getElementById(targetCard);\r\n\r\n openModals.push(modalContainer);\r\n\r\n focusTrap = trapFocus(modalContainer);\r\n\r\n if (!reducedMotion && window.innerWidth >= 992) {\r\n const initialWidth = card.getBoundingClientRect().width - 10;\r\n const height = card.getBoundingClientRect().height - 10;\r\n\r\n const windowX = window.scrollX || window.pageXOffset;\r\n const windowY = window.scrollY || window.pageYOffset;\r\n\r\n const x = document.getElementById('understanding-aces-card').getBoundingClientRect()\r\n .left\r\n + windowX\r\n + 5;\r\n const y = document.getElementById('understanding-aces-card').getBoundingClientRect()\r\n .top\r\n + windowY\r\n + 5;\r\n\r\n const finalWidth = cardsContainer.scrollWidth - 10;\r\n\r\n modalContainer.style.height = `${height}px`;\r\n modalContainer.style.width = `${initialWidth}px`;\r\n modalContainer.style.top = `${y}px`;\r\n modalContainer.style.left = `${x}px`;\r\n modalContainer.classList.remove('d-none');\r\n document.body.offsetHeight;\r\n modalContainer.style.opacity = '1';\r\n modalContainer.style.width = `${finalWidth}px`;\r\n\r\n // setTimeout(() => {\r\n // modalContainer.style.width = finalWidth + \"px\";\r\n // }, 200);\r\n\r\n setTimeout(() => {\r\n modalContent.classList.remove('d-none');\r\n document.body.offsetHeight;\r\n modalContent.style.opacity = '1';\r\n }, 500);\r\n }\r\n\r\n if (reducedMotion && window.innerWidth >= 992) {\r\n const width = cardsContainer.scrollWidth - 10;\r\n const height = cardsContainer.scrollHeight - 10;\r\n\r\n const windowX = window.scrollX || window.pageXOffset;\r\n const windowY = window.scrollY || window.pageYOffset;\r\n\r\n const x = document.getElementById('understanding-aces-card').getBoundingClientRect()\r\n .left\r\n + windowX\r\n + 5;\r\n const y = document.getElementById('understanding-aces-card').getBoundingClientRect()\r\n .top\r\n + windowY\r\n + 5;\r\n\r\n modalContainer.style.height = `${height}px`;\r\n modalContainer.style.width = `${width}px`;\r\n modalContainer.style.top = `${y}px`;\r\n modalContainer.style.left = `${x}px`;\r\n modalContainer.style.opacity = '1';\r\n modalContent.style.opacity = '1';\r\n modalContainer.classList.add('motion-off');\r\n modalContent.classList.add('motion-off');\r\n modalContainer.classList.remove('d-none');\r\n modalContent.classList.remove('d-none');\r\n }\r\n\r\n if (reducedMotion && window.innerWidth < 992) {\r\n const width = card.scrollWidth - 10;\r\n const height = card.scrollHeight - 10;\r\n\r\n const windowX = window.scrollX || window.pageXOffset;\r\n const windowY = window.scrollY || window.pageYOffset;\r\n\r\n const x = card.getBoundingClientRect().left + windowX + 5;\r\n const y = card.getBoundingClientRect().top + windowY + 5;\r\n\r\n modalContainer.style.height = `${height}px`;\r\n modalContainer.style.width = `${width}px`;\r\n modalContainer.style.top = `${y}px`;\r\n modalContainer.style.left = `${x}px`;\r\n modalContainer.style.opacity = '1';\r\n modalContent.style.opacity = '1';\r\n modalContainer.classList.add('motion-off');\r\n modalContent.classList.add('motion-off');\r\n modalContainer.classList.remove('d-none');\r\n modalContent.classList.remove('d-none');\r\n }\r\n\r\n if (!reducedMotion && window.innerWidth < 992) {\r\n const width = card.scrollWidth - 10;\r\n const height = card.scrollHeight - 10;\r\n\r\n const windowX = window.scrollX || window.pageXOffset;\r\n const windowY = window.scrollY || window.pageYOffset;\r\n\r\n const x = card.getBoundingClientRect().left + windowX + 5;\r\n const yInitial = card.getBoundingClientRect().bottom + windowY + 5;\r\n const yFinal = card.getBoundingClientRect().top + windowY + 5;\r\n\r\n modalContainer.style.height = `${0}px`;\r\n modalContainer.style.width = `${width}px`;\r\n modalContainer.style.top = `${yInitial}px`;\r\n modalContainer.style.left = `${x}px`;\r\n\r\n modalContainer.classList.remove('d-none');\r\n\r\n modalContainer.style.opacity = '1';\r\n document.body.offsetHeight;\r\n modalContainer.style.height = `${height}px`;\r\n modalContainer.style.top = `${yFinal}px`;\r\n\r\n setTimeout(() => {\r\n modalContent.classList.remove('d-none');\r\n document.body.offsetHeight;\r\n modalContent.style.opacity = '1';\r\n }, 500);\r\n }\r\n\r\n document.addEventListener(\r\n 'keydown',\r\n function _close(event) {\r\n this.closeFunction = _close;\r\n closeOnEscape(event, modalContainer, _close);\r\n },\r\n true,\r\n );\r\n};\r\n\r\n/**\r\n * Handles the button click to open the strategy modal\r\n */\r\nconst openStrategyModal = () => {\r\n const modal = document.getElementById('strategy-modal');\r\n focusTrap = trapFocus(modal);\r\n\r\n modal.classList.remove('d-none');\r\n\r\n document.addEventListener(\r\n 'keydown',\r\n function _close(event) {\r\n this.closeFunction = _close;\r\n closeOnEscape(event, modal, _close);\r\n },\r\n true,\r\n );\r\n};\r\n\r\n/**\r\n * Handles the button click to open strategy modal\r\n * @param {MouseEvent} e click event\r\n */\r\nconst closeStrategyModal = () => {\r\n const _close = closeFunction;\r\n const modal = document.getElementById('strategy-modal');\r\n modal.classList.add('d-none');\r\n\r\n if (focusTrap) { focusTrap.release(); }\r\n\r\n strategyOpenButton.focus();\r\n\r\n document.removeEventListener('keydown', _close, true);\r\n};\r\n\r\n/**\r\n * Creates a focus trap on a modal window. Removes the tabindex attribute from all HTML elements\r\n * @param {HTMLElement} focusNode the node to apply the focus trap\r\n * @param {HTMLElement} rootNode the root node (set to document as default)\r\n * @returns function to release the focus trap\r\n */\r\nconst trapFocus = (focusNode, rootNode = document) => {\r\n const nodes = [...rootNode.querySelectorAll(CANDIDATES)].filter(\r\n (node) => !focusNode.contains(node) && node.getAttribute('tabindex') !== '-1',\r\n );\r\n nodes.forEach((node) => node.setAttribute('tabindex', '-1'));\r\n return {\r\n release() {\r\n nodes.forEach((node) => node.removeAttribute('tabindex'));\r\n },\r\n };\r\n};\r\n\r\n// Event Listeners\r\n$(() => {\r\n window.addEventListener('resize', debounce(() => {\r\n if (window.innerWidth !== windowWidth) {\r\n closeAllModals();\r\n }\r\n }, 1000, true));\r\n understandingOpenButtons.forEach((button) => {\r\n button.addEventListener('click', openUnderStandingModal);\r\n });\r\n understandingCloseButtons.forEach((button) => {\r\n button.addEventListener('click', closeUnderstandingModal);\r\n });\r\n strategyCloseButton.addEventListener('click', closeStrategyModal);\r\n strategyOpenButton.addEventListener('click', openStrategyModal);\r\n});\r\n","module.exports = function (it) {\n if (typeof it != 'function') {\n throw TypeError(String(it) + ' is not a function');\n } return it;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it) && it !== null) {\n throw TypeError(\"Can't set \" + String(it) + ' as a prototype');\n } return it;\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar create = require('../internals/object-create');\nvar definePropertyModule = require('../internals/object-define-property');\n\nvar UNSCOPABLES = wellKnownSymbol('unscopables');\nvar ArrayPrototype = Array.prototype;\n\n// Array.prototype[@@unscopables]\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\nif (ArrayPrototype[UNSCOPABLES] == undefined) {\n definePropertyModule.f(ArrayPrototype, UNSCOPABLES, {\n configurable: true,\n value: create(null)\n });\n}\n\n// add a key to Array.prototype[@@unscopables]\nmodule.exports = function (key) {\n ArrayPrototype[UNSCOPABLES][key] = true;\n};\n","var isObject = require('../internals/is-object');\n\nmodule.exports = function (it) {\n if (!isObject(it)) {\n throw TypeError(String(it) + ' is not an object');\n } return it;\n};\n","'use strict';\nvar $forEach = require('../internals/array-iteration').forEach;\nvar arrayMethodIsStrict = require('../internals/array-method-is-strict');\n\nvar STRICT_METHOD = arrayMethodIsStrict('forEach');\n\n// `Array.prototype.forEach` method implementation\n// https://tc39.es/ecma262/#sec-array.prototype.foreach\nmodule.exports = !STRICT_METHOD ? function forEach(callbackfn /* , thisArg */) {\n return $forEach(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n// eslint-disable-next-line es/no-array-prototype-foreach -- safe\n} : [].forEach;\n","'use strict';\nvar bind = require('../internals/function-bind-context');\nvar toObject = require('../internals/to-object');\nvar callWithSafeIterationClosing = require('../internals/call-with-safe-iteration-closing');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\n// `Array.from` method implementation\n// https://tc39.es/ecma262/#sec-array.from\nmodule.exports = function from(arrayLike /* , mapfn = undefined, thisArg = undefined */) {\n var O = toObject(arrayLike);\n var C = typeof this == 'function' ? this : Array;\n var argumentsLength = arguments.length;\n var mapfn = argumentsLength > 1 ? arguments[1] : undefined;\n var mapping = mapfn !== undefined;\n var iteratorMethod = getIteratorMethod(O);\n var index = 0;\n var length, result, step, iterator, next, value;\n if (mapping) mapfn = bind(mapfn, argumentsLength > 2 ? arguments[2] : undefined, 2);\n // if the target is not iterable or it's an array with the default iterator - use a simple case\n if (iteratorMethod != undefined && !(C == Array && isArrayIteratorMethod(iteratorMethod))) {\n iterator = iteratorMethod.call(O);\n next = iterator.next;\n result = new C();\n for (;!(step = next.call(iterator)).done; index++) {\n value = mapping ? callWithSafeIterationClosing(iterator, mapfn, [step.value, index], true) : step.value;\n createProperty(result, index, value);\n }\n } else {\n length = toLength(O.length);\n result = new C(length);\n for (;length > index; index++) {\n value = mapping ? mapfn(O[index], index) : O[index];\n createProperty(result, index, value);\n }\n }\n result.length = index;\n return result;\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toLength = require('../internals/to-length');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = toLength(O.length);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var bind = require('../internals/function-bind-context');\nvar IndexedObject = require('../internals/indexed-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar arraySpeciesCreate = require('../internals/array-species-create');\n\nvar push = [].push;\n\n// `Array.prototype.{ forEach, map, filter, some, every, find, findIndex, filterReject }` methods implementation\nvar createMethod = function (TYPE) {\n var IS_MAP = TYPE == 1;\n var IS_FILTER = TYPE == 2;\n var IS_SOME = TYPE == 3;\n var IS_EVERY = TYPE == 4;\n var IS_FIND_INDEX = TYPE == 6;\n var IS_FILTER_REJECT = TYPE == 7;\n var NO_HOLES = TYPE == 5 || IS_FIND_INDEX;\n return function ($this, callbackfn, that, specificCreate) {\n var O = toObject($this);\n var self = IndexedObject(O);\n var boundFunction = bind(callbackfn, that, 3);\n var length = toLength(self.length);\n var index = 0;\n var create = specificCreate || arraySpeciesCreate;\n var target = IS_MAP ? create($this, length) : IS_FILTER || IS_FILTER_REJECT ? create($this, 0) : undefined;\n var value, result;\n for (;length > index; index++) if (NO_HOLES || index in self) {\n value = self[index];\n result = boundFunction(value, index, O);\n if (TYPE) {\n if (IS_MAP) target[index] = result; // map\n else if (result) switch (TYPE) {\n case 3: return true; // some\n case 5: return value; // find\n case 6: return index; // findIndex\n case 2: push.call(target, value); // filter\n } else switch (TYPE) {\n case 4: return false; // every\n case 7: push.call(target, value); // filterReject\n }\n }\n }\n return IS_FIND_INDEX ? -1 : IS_SOME || IS_EVERY ? IS_EVERY : target;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.forEach` method\n // https://tc39.es/ecma262/#sec-array.prototype.foreach\n forEach: createMethod(0),\n // `Array.prototype.map` method\n // https://tc39.es/ecma262/#sec-array.prototype.map\n map: createMethod(1),\n // `Array.prototype.filter` method\n // https://tc39.es/ecma262/#sec-array.prototype.filter\n filter: createMethod(2),\n // `Array.prototype.some` method\n // https://tc39.es/ecma262/#sec-array.prototype.some\n some: createMethod(3),\n // `Array.prototype.every` method\n // https://tc39.es/ecma262/#sec-array.prototype.every\n every: createMethod(4),\n // `Array.prototype.find` method\n // https://tc39.es/ecma262/#sec-array.prototype.find\n find: createMethod(5),\n // `Array.prototype.findIndex` method\n // https://tc39.es/ecma262/#sec-array.prototype.findIndex\n findIndex: createMethod(6),\n // `Array.prototype.filterReject` method\n // https://github.com/tc39/proposal-array-filtering\n filterReject: createMethod(7)\n};\n","var fails = require('../internals/fails');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (METHOD_NAME) {\n // We can't use this feature detection in V8 since it causes\n // deoptimization and serious performance degradation\n // https://github.com/zloirock/core-js/issues/677\n return V8_VERSION >= 51 || !fails(function () {\n var array = [];\n var constructor = array.constructor = {};\n constructor[SPECIES] = function () {\n return { foo: 1 };\n };\n return array[METHOD_NAME](Boolean).foo !== 1;\n });\n};\n","'use strict';\nvar fails = require('../internals/fails');\n\nmodule.exports = function (METHOD_NAME, argument) {\n var method = [][METHOD_NAME];\n return !!method && fails(function () {\n // eslint-disable-next-line no-useless-call,no-throw-literal -- required for testing\n method.call(null, argument || function () { throw 1; }, 1);\n });\n};\n","var isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// a part of `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray) {\n var C;\n if (isArray(originalArray)) {\n C = originalArray.constructor;\n // cross-realm fallback\n if (typeof C == 'function' && (C === Array || isArray(C.prototype))) C = undefined;\n else if (isObject(C)) {\n C = C[SPECIES];\n if (C === null) C = undefined;\n }\n } return C === undefined ? Array : C;\n};\n","var arraySpeciesConstructor = require('../internals/array-species-constructor');\n\n// `ArraySpeciesCreate` abstract operation\n// https://tc39.es/ecma262/#sec-arrayspeciescreate\nmodule.exports = function (originalArray, length) {\n return new (arraySpeciesConstructor(originalArray))(length === 0 ? 0 : length);\n};\n","var anObject = require('../internals/an-object');\nvar iteratorClose = require('../internals/iterator-close');\n\n// call something on iterator step with safe closing on error\nmodule.exports = function (iterator, fn, value, ENTRIES) {\n try {\n return ENTRIES ? fn(anObject(value)[0], value[1]) : fn(value);\n } catch (error) {\n iteratorClose(iterator);\n throw error;\n }\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var toString = {}.toString;\n\nmodule.exports = function (it) {\n return toString.call(it).slice(8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && typeof O.callee == 'function' ? 'Arguments' : result;\n};\n","var has = require('../internals/has');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!has(target, key)) defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(1, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","'use strict';\nvar toPropertyKey = require('../internals/to-property-key');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = function (object, key, value) {\n var propertyKey = toPropertyKey(key);\n if (propertyKey in object) definePropertyModule.f(object, propertyKey, createPropertyDescriptor(0, value));\n else object[propertyKey] = value;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar createIteratorConstructor = require('../internals/create-iterator-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (IteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (typeof CurrentIteratorPrototype[ITERATOR] != 'function') {\n createNonEnumerableProperty(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return nativeIterator.call(this); };\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n createNonEnumerableProperty(IterablePrototype, ITERATOR, defaultIterator);\n }\n Iterators[NAME] = defaultIterator;\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n redefine(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n return methods;\n};\n","var path = require('../internals/path');\nvar has = require('../internals/has');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineProperty = require('../internals/object-define-property').f;\n\nmodule.exports = function (NAME) {\n var Symbol = path.Symbol || (path.Symbol = {});\n if (!has(Symbol, NAME)) defineProperty(Symbol, NAME, {\n value: wrappedWellKnownSymbolModule.f(NAME)\n });\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('navigator', 'userAgent') || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n version = match[0] < 4 ? 1 : match[0] + match[1];\n} else if (userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = match[1];\n }\n}\n\nmodule.exports = version && +version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var global = require('../internals/global');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar setGlobal = require('../internals/set-global');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar isForced = require('../internals/is-forced');\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.noTargetGet - prevent calling a getter on target\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var FORCED, target, key, targetProperty, sourceProperty, descriptor;\n if (GLOBAL) {\n target = global;\n } else if (STATIC) {\n target = global[TARGET] || setGlobal(TARGET, {});\n } else {\n target = (global[TARGET] || {}).prototype;\n }\n if (target) for (key in source) {\n sourceProperty = source[key];\n if (options.noTargetGet) {\n descriptor = getOwnPropertyDescriptor(target, key);\n targetProperty = descriptor && descriptor.value;\n } else targetProperty = target[key];\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contained in target\n if (!FORCED && targetProperty !== undefined) {\n if (typeof sourceProperty === typeof targetProperty) continue;\n copyConstructorProperties(sourceProperty, targetProperty);\n }\n // add a flag to not completely full polyfills\n if (options.sham || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(sourceProperty, 'sham', true);\n }\n // extend global\n redefine(target, key, sourceProperty, options);\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var aFunction = require('../internals/a-function');\n\n// optional / simple context binding\nmodule.exports = function (fn, that, length) {\n aFunction(fn);\n if (that === undefined) return fn;\n switch (length) {\n case 0: return function () {\n return fn.call(that);\n };\n case 1: return function (a) {\n return fn.call(that, a);\n };\n case 2: return function (a, b) {\n return fn.call(that, a, b);\n };\n case 3: return function (a, b, c) {\n return fn.call(that, a, b, c);\n };\n }\n return function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var global = require('../internals/global');\n\nvar aFunction = function (variable) {\n return typeof variable == 'function' ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(global[namespace]) : global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (it != undefined) return it[ITERATOR]\n || it['@@iterator']\n || Iterators[classof(it)];\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var toObject = require('../internals/to-object');\n\nvar hasOwnProperty = {}.hasOwnProperty;\n\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty.call(toObject(it), key);\n};\n","module.exports = {};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thank's IE8 for his funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- requied for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar split = ''.split;\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split.call(it, '') : Object(it);\n} : Object;\n","var store = require('../internals/shared-store');\n\nvar functionToString = Function.toString;\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (typeof store.inspectSource != 'function') {\n store.inspectSource = function (it) {\n return functionToString.call(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var NATIVE_WEAK_MAP = require('../internals/native-weak-map');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar objectHas = require('../internals/has');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n var wmget = store.get;\n var wmhas = store.has;\n var wmset = store.set;\n set = function (it, metadata) {\n if (wmhas.call(store, it)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n wmset.call(store, it, metadata);\n return metadata;\n };\n get = function (it) {\n return wmget.call(store, it) || {};\n };\n has = function (it) {\n return wmhas.call(store, it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (objectHas(it, STATE)) throw new TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return objectHas(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return objectHas(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var classof = require('../internals/classof-raw');\n\n// `IsArray` abstract operation\n// https://tc39.es/ecma262/#sec-isarray\n// eslint-disable-next-line es/no-array-isarray -- safe\nmodule.exports = Array.isArray || function isArray(arg) {\n return classof(arg) == 'Array';\n};\n","var fails = require('../internals/fails');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : typeof detection == 'function' ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","module.exports = function (it) {\n return typeof it === 'object' ? it !== null : typeof it === 'function';\n};\n","module.exports = false;\n","var getBuiltIn = require('../internals/get-built-in');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return typeof $Symbol == 'function' && Object(it) instanceof $Symbol;\n};\n","var anObject = require('../internals/an-object');\n\nmodule.exports = function (iterator) {\n var returnMethod = iterator['return'];\n if (returnMethod !== undefined) {\n return anObject(returnMethod.call(iterator)).value;\n }\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\nvar returnThis = function () { return this; };\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = IteratorPrototype == undefined || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif ((!IS_PURE || NEW_ITERATOR_PROTOTYPE) && !has(IteratorPrototype, ITERATOR)) {\n createNonEnumerableProperty(IteratorPrototype, ITERATOR, returnThis);\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar inspectSource = require('../internals/inspect-source');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = typeof WeakMap === 'function' && /native code/.test(inspectSource(WeakMap));\n","var global = require('../internals/global');\nvar toString = require('../internals/to-string');\nvar trim = require('../internals/string-trim').trim;\nvar whitespaces = require('../internals/whitespaces');\n\nvar $parseInt = global.parseInt;\nvar hex = /^[+-]?0[Xx]/;\nvar FORCED = $parseInt(whitespaces + '08') !== 8 || $parseInt(whitespaces + '0x16') !== 22;\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\nmodule.exports = FORCED ? function parseInt(string, radix) {\n var S = trim(toString(string));\n return $parseInt(S, (radix >>> 0) || (hex.test(S) ? 16 : 10));\n} : $parseInt;\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar defineProperties = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n if (iframe.style) {\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n }\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = document.domain && activeXDocument ?\n NullProtoObjectViaActiveX(activeXDocument) : // old IE\n NullProtoObjectViaIFrame() ||\n NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : defineProperties(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nmodule.exports = DESCRIPTORS ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], Properties[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar has = require('../internals/has');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (has(O, P)) return createPropertyDescriptor(!propertyIsEnumerableModule.f.call(O, P), O[P]);\n};\n","/* eslint-disable es/no-object-getownpropertynames -- safe */\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar $getOwnPropertyNames = require('../internals/object-get-own-property-names').f;\n\nvar toString = {}.toString;\n\nvar windowNames = typeof window == 'object' && window && Object.getOwnPropertyNames\n ? Object.getOwnPropertyNames(window) : [];\n\nvar getWindowNames = function (it) {\n try {\n return $getOwnPropertyNames(it);\n } catch (error) {\n return windowNames.slice();\n }\n};\n\n// fallback for IE11 buggy Object.getOwnPropertyNames with iframe and window\nmodule.exports.f = function getOwnPropertyNames(it) {\n return windowNames && toString.call(it) == '[object Window]'\n ? getWindowNames(it)\n : $getOwnPropertyNames(toIndexedObject(it));\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var has = require('../internals/has');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar ObjectPrototype = Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? Object.getPrototypeOf : function (O) {\n O = toObject(O);\n if (has(O, IE_PROTO)) return O[IE_PROTO];\n if (typeof O.constructor == 'function' && O instanceof O.constructor) {\n return O.constructor.prototype;\n } return O instanceof Object ? ObjectPrototype : null;\n};\n","var has = require('../internals/has');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !has(hiddenKeys, key) && has(O, key) && result.push(key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (has(O, key = names[i++])) {\n ~indexOf(result, key) || result.push(key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n setter = Object.getOwnPropertyDescriptor(Object.prototype, '__proto__').set;\n setter.call(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter.call(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var isObject = require('../internals/is-object');\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n if (typeof (fn = input.valueOf) == 'function' && !isObject(val = fn.call(input))) return val;\n if (pref !== 'string' && typeof (fn = input.toString) == 'function' && !isObject(val = fn.call(input))) return val;\n throw TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? keys.concat(getOwnPropertySymbols(it)) : keys;\n};\n","var global = require('../internals/global');\n\nmodule.exports = global;\n","var global = require('../internals/global');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar has = require('../internals/has');\nvar setGlobal = require('../internals/set-global');\nvar inspectSource = require('../internals/inspect-source');\nvar InternalStateModule = require('../internals/internal-state');\n\nvar getInternalState = InternalStateModule.get;\nvar enforceInternalState = InternalStateModule.enforce;\nvar TEMPLATE = String(String).split('String');\n\n(module.exports = function (O, key, value, options) {\n var unsafe = options ? !!options.unsafe : false;\n var simple = options ? !!options.enumerable : false;\n var noTargetGet = options ? !!options.noTargetGet : false;\n var state;\n if (typeof value == 'function') {\n if (typeof key == 'string' && !has(value, 'name')) {\n createNonEnumerableProperty(value, 'name', key);\n }\n state = enforceInternalState(value);\n if (!state.source) {\n state.source = TEMPLATE.join(typeof key == 'string' ? key : '');\n }\n }\n if (O === global) {\n if (simple) O[key] = value;\n else setGlobal(key, value);\n return;\n } else if (!unsafe) {\n delete O[key];\n } else if (!noTargetGet && O[key]) {\n simple = true;\n }\n if (simple) O[key] = value;\n else createNonEnumerableProperty(O, key, value);\n// add fake Function#toString for correct work wrapped methods / constructors with methods like LoDash isNative\n})(Function.prototype, 'toString', function toString() {\n return typeof this == 'function' && getInternalState(this).source || inspectSource(this);\n});\n","// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (it == undefined) throw TypeError(\"Can't call method on \" + it);\n return it;\n};\n","var global = require('../internals/global');\n\nmodule.exports = function (key, value) {\n try {\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var defineProperty = require('../internals/object-define-property').f;\nvar has = require('../internals/has');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC) {\n if (it && !has(it = STATIC ? it : it.prototype, TO_STRING_TAG)) {\n defineProperty(it, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar setGlobal = require('../internals/set-global');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || setGlobal(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.16.0',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2021 Denis Pushkarev (zloirock.ru)'\n});\n","var toInteger = require('../internals/to-integer');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `String.prototype.codePointAt` methods implementation\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toInteger(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = S.charCodeAt(position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = S.charCodeAt(position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING ? S.charAt(position) : first\n : CONVERT_TO_STRING ? S.slice(position, position + 2) : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\nvar toString = require('../internals/to-string');\nvar whitespaces = require('../internals/whitespaces');\n\nvar whitespace = '[' + whitespaces + ']';\nvar ltrim = RegExp('^' + whitespace + whitespace + '*');\nvar rtrim = RegExp(whitespace + whitespace + '*$');\n\n// `String.prototype.{ trim, trimStart, trimEnd, trimLeft, trimRight }` methods implementation\nvar createMethod = function (TYPE) {\n return function ($this) {\n var string = toString(requireObjectCoercible($this));\n if (TYPE & 1) string = string.replace(ltrim, '');\n if (TYPE & 2) string = string.replace(rtrim, '');\n return string;\n };\n};\n\nmodule.exports = {\n // `String.prototype.{ trimLeft, trimStart }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimstart\n start: createMethod(1),\n // `String.prototype.{ trimRight, trimEnd }` methods\n // https://tc39.es/ecma262/#sec-string.prototype.trimend\n end: createMethod(2),\n // `String.prototype.trim` method\n // https://tc39.es/ecma262/#sec-string.prototype.trim\n trim: createMethod(3)\n};\n","var toInteger = require('../internals/to-integer');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toInteger(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `ToInteger` abstract operation\n// https://tc39.es/ecma262/#sec-tointeger\nmodule.exports = function (argument) {\n return isNaN(argument = +argument) ? 0 : (argument > 0 ? floor : ceil)(argument);\n};\n","var toInteger = require('../internals/to-integer');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toInteger(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return Object(requireObjectCoercible(argument));\n};\n","var isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = input[TO_PRIMITIVE];\n var result;\n if (exoticToPrim !== undefined) {\n if (pref === undefined) pref = 'default';\n result = exoticToPrim.call(input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : String(key);\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var isSymbol = require('../internals/is-symbol');\n\nmodule.exports = function (argument) {\n if (isSymbol(argument)) throw TypeError('Cannot convert a Symbol value to a string');\n return String(argument);\n};\n","var id = 0;\nvar postfix = Math.random();\n\nmodule.exports = function (key) {\n return 'Symbol(' + String(key === undefined ? '' : key) + ')_' + (++id + postfix).toString(36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nexports.f = wellKnownSymbol;\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar has = require('../internals/has');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar WellKnownSymbolsStore = shared('wks');\nvar Symbol = global.Symbol;\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!has(WellKnownSymbolsStore, name) || !(NATIVE_SYMBOL || typeof WellKnownSymbolsStore[name] == 'string')) {\n if (NATIVE_SYMBOL && has(Symbol, name)) {\n WellKnownSymbolsStore[name] = Symbol[name];\n } else {\n WellKnownSymbolsStore[name] = createWellKnownSymbol('Symbol.' + name);\n }\n } return WellKnownSymbolsStore[name];\n};\n","// a string of all valid unicode whitespaces\nmodule.exports = '\\u0009\\u000A\\u000B\\u000C\\u000D\\u0020\\u00A0\\u1680\\u2000\\u2001\\u2002' +\n '\\u2003\\u2004\\u2005\\u2006\\u2007\\u2008\\u2009\\u200A\\u202F\\u205F\\u3000\\u2028\\u2029\\uFEFF';\n","'use strict';\nvar $ = require('../internals/export');\nvar fails = require('../internals/fails');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar toObject = require('../internals/to-object');\nvar toLength = require('../internals/to-length');\nvar createProperty = require('../internals/create-property');\nvar arraySpeciesCreate = require('../internals/array-species-create');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar IS_CONCAT_SPREADABLE = wellKnownSymbol('isConcatSpreadable');\nvar MAX_SAFE_INTEGER = 0x1FFFFFFFFFFFFF;\nvar MAXIMUM_ALLOWED_INDEX_EXCEEDED = 'Maximum allowed index exceeded';\n\n// We can't use this feature detection in V8 since it causes\n// deoptimization and serious performance degradation\n// https://github.com/zloirock/core-js/issues/679\nvar IS_CONCAT_SPREADABLE_SUPPORT = V8_VERSION >= 51 || !fails(function () {\n var array = [];\n array[IS_CONCAT_SPREADABLE] = false;\n return array.concat()[0] !== array;\n});\n\nvar SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('concat');\n\nvar isConcatSpreadable = function (O) {\n if (!isObject(O)) return false;\n var spreadable = O[IS_CONCAT_SPREADABLE];\n return spreadable !== undefined ? !!spreadable : isArray(O);\n};\n\nvar FORCED = !IS_CONCAT_SPREADABLE_SUPPORT || !SPECIES_SUPPORT;\n\n// `Array.prototype.concat` method\n// https://tc39.es/ecma262/#sec-array.prototype.concat\n// with adding support of @@isConcatSpreadable and @@species\n$({ target: 'Array', proto: true, forced: FORCED }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n concat: function concat(arg) {\n var O = toObject(this);\n var A = arraySpeciesCreate(O, 0);\n var n = 0;\n var i, k, length, len, E;\n for (i = -1, length = arguments.length; i < length; i++) {\n E = i === -1 ? O : arguments[i];\n if (isConcatSpreadable(E)) {\n len = toLength(E.length);\n if (n + len > MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n for (k = 0; k < len; k++, n++) if (k in E) createProperty(A, n, E[k]);\n } else {\n if (n >= MAX_SAFE_INTEGER) throw TypeError(MAXIMUM_ALLOWED_INDEX_EXCEEDED);\n createProperty(A, n++, E);\n }\n }\n A.length = n;\n return A;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar $filter = require('../internals/array-iteration').filter;\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('filter');\n\n// `Array.prototype.filter` method\n// https://tc39.es/ecma262/#sec-array.prototype.filter\n// with adding support of @@species\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n filter: function filter(callbackfn /* , thisArg */) {\n return $filter(this, callbackfn, arguments.length > 1 ? arguments[1] : undefined);\n }\n});\n","var $ = require('../internals/export');\nvar from = require('../internals/array-from');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\n\nvar INCORRECT_ITERATION = !checkCorrectnessOfIteration(function (iterable) {\n // eslint-disable-next-line es/no-array-from -- required for testing\n Array.from(iterable);\n});\n\n// `Array.from` method\n// https://tc39.es/ecma262/#sec-array.from\n$({ target: 'Array', stat: true, forced: INCORRECT_ITERATION }, {\n from: from\n});\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return { value: undefined, done: true };\n }\n if (kind == 'keys') return { value: index, done: false };\n if (kind == 'values') return { value: target[index], done: false };\n return { value: [index, target[index]], done: false };\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nIterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n","'use strict';\nvar $ = require('../internals/export');\nvar isObject = require('../internals/is-object');\nvar isArray = require('../internals/is-array');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar toLength = require('../internals/to-length');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar createProperty = require('../internals/create-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar arrayMethodHasSpeciesSupport = require('../internals/array-method-has-species-support');\n\nvar HAS_SPECIES_SUPPORT = arrayMethodHasSpeciesSupport('slice');\n\nvar SPECIES = wellKnownSymbol('species');\nvar nativeSlice = [].slice;\nvar max = Math.max;\n\n// `Array.prototype.slice` method\n// https://tc39.es/ecma262/#sec-array.prototype.slice\n// fallback for not array-like ES3 strings and DOM objects\n$({ target: 'Array', proto: true, forced: !HAS_SPECIES_SUPPORT }, {\n slice: function slice(start, end) {\n var O = toIndexedObject(this);\n var length = toLength(O.length);\n var k = toAbsoluteIndex(start, length);\n var fin = toAbsoluteIndex(end === undefined ? length : end, length);\n // inline `ArraySpeciesCreate` for usage native `Array#slice` where it's possible\n var Constructor, result, n;\n if (isArray(O)) {\n Constructor = O.constructor;\n // cross-realm fallback\n if (typeof Constructor == 'function' && (Constructor === Array || isArray(Constructor.prototype))) {\n Constructor = undefined;\n } else if (isObject(Constructor)) {\n Constructor = Constructor[SPECIES];\n if (Constructor === null) Constructor = undefined;\n }\n if (Constructor === Array || Constructor === undefined) {\n return nativeSlice.call(O, k, fin);\n }\n }\n result = new (Constructor === undefined ? Array : Constructor)(max(fin - k, 0));\n for (n = 0; k < fin; k++, n++) if (k in O) createProperty(result, n, O[k]);\n result.length = n;\n return result;\n }\n});\n","var DESCRIPTORS = require('../internals/descriptors');\nvar defineProperty = require('../internals/object-define-property').f;\n\nvar FunctionPrototype = Function.prototype;\nvar FunctionPrototypeToString = FunctionPrototype.toString;\nvar nameRE = /^\\s*function ([^ (]*)/;\nvar NAME = 'name';\n\n// Function instances `.name` property\n// https://tc39.es/ecma262/#sec-function-instances-name\nif (DESCRIPTORS && !(NAME in FunctionPrototype)) {\n defineProperty(FunctionPrototype, NAME, {\n configurable: true,\n get: function () {\n try {\n return FunctionPrototypeToString.call(this).match(nameRE)[1];\n } catch (error) {\n return '';\n }\n }\n });\n}\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar redefine = require('../internals/redefine');\nvar toString = require('../internals/object-to-string');\n\n// `Object.prototype.toString` method\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nif (!TO_STRING_TAG_SUPPORT) {\n redefine(Object.prototype, 'toString', toString, { unsafe: true });\n}\n","var $ = require('../internals/export');\nvar parseIntImplementation = require('../internals/number-parse-int');\n\n// `parseInt` method\n// https://tc39.es/ecma262/#sec-parseint-string-radix\n$({ global: true, forced: parseInt != parseIntImplementation }, {\n parseInt: parseIntImplementation\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/define-iterator');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return { value: undefined, done: true };\n point = charAt(string, index);\n state.index += point.length;\n return { value: point, done: false };\n});\n","// `Symbol.prototype.description` getter\n// https://tc39.es/ecma262/#sec-symbol.prototype.description\n'use strict';\nvar $ = require('../internals/export');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar global = require('../internals/global');\nvar has = require('../internals/has');\nvar isObject = require('../internals/is-object');\nvar defineProperty = require('../internals/object-define-property').f;\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\n\nvar NativeSymbol = global.Symbol;\n\nif (DESCRIPTORS && typeof NativeSymbol == 'function' && (!('description' in NativeSymbol.prototype) ||\n // Safari 12 bug\n NativeSymbol().description !== undefined\n)) {\n var EmptyStringDescriptionStore = {};\n // wrap Symbol constructor for correct work with undefined description\n var SymbolWrapper = function Symbol() {\n var description = arguments.length < 1 || arguments[0] === undefined ? undefined : String(arguments[0]);\n var result = this instanceof SymbolWrapper\n ? new NativeSymbol(description)\n // in Edge 13, String(Symbol(undefined)) === 'Symbol(undefined)'\n : description === undefined ? NativeSymbol() : NativeSymbol(description);\n if (description === '') EmptyStringDescriptionStore[result] = true;\n return result;\n };\n copyConstructorProperties(SymbolWrapper, NativeSymbol);\n var symbolPrototype = SymbolWrapper.prototype = NativeSymbol.prototype;\n symbolPrototype.constructor = SymbolWrapper;\n\n var symbolToString = symbolPrototype.toString;\n var native = String(NativeSymbol('test')) == 'Symbol(test)';\n var regexp = /^Symbol\\((.*)\\)[^)]+$/;\n defineProperty(symbolPrototype, 'description', {\n configurable: true,\n get: function description() {\n var symbol = isObject(this) ? this.valueOf() : this;\n var string = symbolToString.call(symbol);\n if (has(EmptyStringDescriptionStore, symbol)) return '';\n var desc = native ? string.slice(7, -1) : string.replace(regexp, '$1');\n return desc === '' ? undefined : desc;\n }\n });\n\n $({ global: true, forced: true }, {\n Symbol: SymbolWrapper\n });\n}\n","var defineWellKnownSymbol = require('../internals/define-well-known-symbol');\n\n// `Symbol.iterator` well-known symbol\n// https://tc39.es/ecma262/#sec-symbol.iterator\ndefineWellKnownSymbol('iterator');\n","'use strict';\nvar $ = require('../internals/export');\nvar global = require('../internals/global');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\nvar NATIVE_SYMBOL = require('../internals/native-symbol');\nvar fails = require('../internals/fails');\nvar has = require('../internals/has');\nvar isArray = require('../internals/is-array');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar anObject = require('../internals/an-object');\nvar toObject = require('../internals/to-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar $toString = require('../internals/to-string');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar nativeObjectCreate = require('../internals/object-create');\nvar objectKeys = require('../internals/object-keys');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertyNamesExternal = require('../internals/object-get-own-property-names-external');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar redefine = require('../internals/redefine');\nvar shared = require('../internals/shared');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar uid = require('../internals/uid');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar wrappedWellKnownSymbolModule = require('../internals/well-known-symbol-wrapped');\nvar defineWellKnownSymbol = require('../internals/define-well-known-symbol');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar InternalStateModule = require('../internals/internal-state');\nvar $forEach = require('../internals/array-iteration').forEach;\n\nvar HIDDEN = sharedKey('hidden');\nvar SYMBOL = 'Symbol';\nvar PROTOTYPE = 'prototype';\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(SYMBOL);\nvar ObjectPrototype = Object[PROTOTYPE];\nvar $Symbol = global.Symbol;\nvar $stringify = getBuiltIn('JSON', 'stringify');\nvar nativeGetOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\nvar nativeDefineProperty = definePropertyModule.f;\nvar nativeGetOwnPropertyNames = getOwnPropertyNamesExternal.f;\nvar nativePropertyIsEnumerable = propertyIsEnumerableModule.f;\nvar AllSymbols = shared('symbols');\nvar ObjectPrototypeSymbols = shared('op-symbols');\nvar StringToSymbolRegistry = shared('string-to-symbol-registry');\nvar SymbolToStringRegistry = shared('symbol-to-string-registry');\nvar WellKnownSymbolsStore = shared('wks');\nvar QObject = global.QObject;\n// Don't use setters in Qt Script, https://github.com/zloirock/core-js/issues/173\nvar USE_SETTER = !QObject || !QObject[PROTOTYPE] || !QObject[PROTOTYPE].findChild;\n\n// fallback for old Android, https://code.google.com/p/v8/issues/detail?id=687\nvar setSymbolDescriptor = DESCRIPTORS && fails(function () {\n return nativeObjectCreate(nativeDefineProperty({}, 'a', {\n get: function () { return nativeDefineProperty(this, 'a', { value: 7 }).a; }\n })).a != 7;\n}) ? function (O, P, Attributes) {\n var ObjectPrototypeDescriptor = nativeGetOwnPropertyDescriptor(ObjectPrototype, P);\n if (ObjectPrototypeDescriptor) delete ObjectPrototype[P];\n nativeDefineProperty(O, P, Attributes);\n if (ObjectPrototypeDescriptor && O !== ObjectPrototype) {\n nativeDefineProperty(ObjectPrototype, P, ObjectPrototypeDescriptor);\n }\n} : nativeDefineProperty;\n\nvar wrap = function (tag, description) {\n var symbol = AllSymbols[tag] = nativeObjectCreate($Symbol[PROTOTYPE]);\n setInternalState(symbol, {\n type: SYMBOL,\n tag: tag,\n description: description\n });\n if (!DESCRIPTORS) symbol.description = description;\n return symbol;\n};\n\nvar $defineProperty = function defineProperty(O, P, Attributes) {\n if (O === ObjectPrototype) $defineProperty(ObjectPrototypeSymbols, P, Attributes);\n anObject(O);\n var key = toPropertyKey(P);\n anObject(Attributes);\n if (has(AllSymbols, key)) {\n if (!Attributes.enumerable) {\n if (!has(O, HIDDEN)) nativeDefineProperty(O, HIDDEN, createPropertyDescriptor(1, {}));\n O[HIDDEN][key] = true;\n } else {\n if (has(O, HIDDEN) && O[HIDDEN][key]) O[HIDDEN][key] = false;\n Attributes = nativeObjectCreate(Attributes, { enumerable: createPropertyDescriptor(0, false) });\n } return setSymbolDescriptor(O, key, Attributes);\n } return nativeDefineProperty(O, key, Attributes);\n};\n\nvar $defineProperties = function defineProperties(O, Properties) {\n anObject(O);\n var properties = toIndexedObject(Properties);\n var keys = objectKeys(properties).concat($getOwnPropertySymbols(properties));\n $forEach(keys, function (key) {\n if (!DESCRIPTORS || $propertyIsEnumerable.call(properties, key)) $defineProperty(O, key, properties[key]);\n });\n return O;\n};\n\nvar $create = function create(O, Properties) {\n return Properties === undefined ? nativeObjectCreate(O) : $defineProperties(nativeObjectCreate(O), Properties);\n};\n\nvar $propertyIsEnumerable = function propertyIsEnumerable(V) {\n var P = toPropertyKey(V);\n var enumerable = nativePropertyIsEnumerable.call(this, P);\n if (this === ObjectPrototype && has(AllSymbols, P) && !has(ObjectPrototypeSymbols, P)) return false;\n return enumerable || !has(this, P) || !has(AllSymbols, P) || has(this, HIDDEN) && this[HIDDEN][P] ? enumerable : true;\n};\n\nvar $getOwnPropertyDescriptor = function getOwnPropertyDescriptor(O, P) {\n var it = toIndexedObject(O);\n var key = toPropertyKey(P);\n if (it === ObjectPrototype && has(AllSymbols, key) && !has(ObjectPrototypeSymbols, key)) return;\n var descriptor = nativeGetOwnPropertyDescriptor(it, key);\n if (descriptor && has(AllSymbols, key) && !(has(it, HIDDEN) && it[HIDDEN][key])) {\n descriptor.enumerable = true;\n }\n return descriptor;\n};\n\nvar $getOwnPropertyNames = function getOwnPropertyNames(O) {\n var names = nativeGetOwnPropertyNames(toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (!has(AllSymbols, key) && !has(hiddenKeys, key)) result.push(key);\n });\n return result;\n};\n\nvar $getOwnPropertySymbols = function getOwnPropertySymbols(O) {\n var IS_OBJECT_PROTOTYPE = O === ObjectPrototype;\n var names = nativeGetOwnPropertyNames(IS_OBJECT_PROTOTYPE ? ObjectPrototypeSymbols : toIndexedObject(O));\n var result = [];\n $forEach(names, function (key) {\n if (has(AllSymbols, key) && (!IS_OBJECT_PROTOTYPE || has(ObjectPrototype, key))) {\n result.push(AllSymbols[key]);\n }\n });\n return result;\n};\n\n// `Symbol` constructor\n// https://tc39.es/ecma262/#sec-symbol-constructor\nif (!NATIVE_SYMBOL) {\n $Symbol = function Symbol() {\n if (this instanceof $Symbol) throw TypeError('Symbol is not a constructor');\n var description = !arguments.length || arguments[0] === undefined ? undefined : $toString(arguments[0]);\n var tag = uid(description);\n var setter = function (value) {\n if (this === ObjectPrototype) setter.call(ObjectPrototypeSymbols, value);\n if (has(this, HIDDEN) && has(this[HIDDEN], tag)) this[HIDDEN][tag] = false;\n setSymbolDescriptor(this, tag, createPropertyDescriptor(1, value));\n };\n if (DESCRIPTORS && USE_SETTER) setSymbolDescriptor(ObjectPrototype, tag, { configurable: true, set: setter });\n return wrap(tag, description);\n };\n\n redefine($Symbol[PROTOTYPE], 'toString', function toString() {\n return getInternalState(this).tag;\n });\n\n redefine($Symbol, 'withoutSetter', function (description) {\n return wrap(uid(description), description);\n });\n\n propertyIsEnumerableModule.f = $propertyIsEnumerable;\n definePropertyModule.f = $defineProperty;\n getOwnPropertyDescriptorModule.f = $getOwnPropertyDescriptor;\n getOwnPropertyNamesModule.f = getOwnPropertyNamesExternal.f = $getOwnPropertyNames;\n getOwnPropertySymbolsModule.f = $getOwnPropertySymbols;\n\n wrappedWellKnownSymbolModule.f = function (name) {\n return wrap(wellKnownSymbol(name), name);\n };\n\n if (DESCRIPTORS) {\n // https://github.com/tc39/proposal-Symbol-description\n nativeDefineProperty($Symbol[PROTOTYPE], 'description', {\n configurable: true,\n get: function description() {\n return getInternalState(this).description;\n }\n });\n if (!IS_PURE) {\n redefine(ObjectPrototype, 'propertyIsEnumerable', $propertyIsEnumerable, { unsafe: true });\n }\n }\n}\n\n$({ global: true, wrap: true, forced: !NATIVE_SYMBOL, sham: !NATIVE_SYMBOL }, {\n Symbol: $Symbol\n});\n\n$forEach(objectKeys(WellKnownSymbolsStore), function (name) {\n defineWellKnownSymbol(name);\n});\n\n$({ target: SYMBOL, stat: true, forced: !NATIVE_SYMBOL }, {\n // `Symbol.for` method\n // https://tc39.es/ecma262/#sec-symbol.for\n 'for': function (key) {\n var string = $toString(key);\n if (has(StringToSymbolRegistry, string)) return StringToSymbolRegistry[string];\n var symbol = $Symbol(string);\n StringToSymbolRegistry[string] = symbol;\n SymbolToStringRegistry[symbol] = string;\n return symbol;\n },\n // `Symbol.keyFor` method\n // https://tc39.es/ecma262/#sec-symbol.keyfor\n keyFor: function keyFor(sym) {\n if (!isSymbol(sym)) throw TypeError(sym + ' is not a symbol');\n if (has(SymbolToStringRegistry, sym)) return SymbolToStringRegistry[sym];\n },\n useSetter: function () { USE_SETTER = true; },\n useSimple: function () { USE_SETTER = false; }\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL, sham: !DESCRIPTORS }, {\n // `Object.create` method\n // https://tc39.es/ecma262/#sec-object.create\n create: $create,\n // `Object.defineProperty` method\n // https://tc39.es/ecma262/#sec-object.defineproperty\n defineProperty: $defineProperty,\n // `Object.defineProperties` method\n // https://tc39.es/ecma262/#sec-object.defineproperties\n defineProperties: $defineProperties,\n // `Object.getOwnPropertyDescriptor` method\n // https://tc39.es/ecma262/#sec-object.getownpropertydescriptors\n getOwnPropertyDescriptor: $getOwnPropertyDescriptor\n});\n\n$({ target: 'Object', stat: true, forced: !NATIVE_SYMBOL }, {\n // `Object.getOwnPropertyNames` method\n // https://tc39.es/ecma262/#sec-object.getownpropertynames\n getOwnPropertyNames: $getOwnPropertyNames,\n // `Object.getOwnPropertySymbols` method\n // https://tc39.es/ecma262/#sec-object.getownpropertysymbols\n getOwnPropertySymbols: $getOwnPropertySymbols\n});\n\n// Chrome 38 and 39 `Object.getOwnPropertySymbols` fails on primitives\n// https://bugs.chromium.org/p/v8/issues/detail?id=3443\n$({ target: 'Object', stat: true, forced: fails(function () { getOwnPropertySymbolsModule.f(1); }) }, {\n getOwnPropertySymbols: function getOwnPropertySymbols(it) {\n return getOwnPropertySymbolsModule.f(toObject(it));\n }\n});\n\n// `JSON.stringify` method behavior with symbols\n// https://tc39.es/ecma262/#sec-json.stringify\nif ($stringify) {\n var FORCED_JSON_STRINGIFY = !NATIVE_SYMBOL || fails(function () {\n var symbol = $Symbol();\n // MS Edge converts symbol values to JSON as {}\n return $stringify([symbol]) != '[null]'\n // WebKit converts symbol values to JSON as null\n || $stringify({ a: symbol }) != '{}'\n // V8 throws on boxed symbols\n || $stringify(Object(symbol)) != '{}';\n });\n\n $({ target: 'JSON', stat: true, forced: FORCED_JSON_STRINGIFY }, {\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n stringify: function stringify(it, replacer, space) {\n var args = [it];\n var index = 1;\n var $replacer;\n while (arguments.length > index) args.push(arguments[index++]);\n $replacer = replacer;\n if (!isObject(replacer) && it === undefined || isSymbol(it)) return; // IE8 returns string on undefined\n if (!isArray(replacer)) replacer = function (key, value) {\n if (typeof $replacer == 'function') value = $replacer.call(this, key, value);\n if (!isSymbol(value)) return value;\n };\n args[1] = replacer;\n return $stringify.apply(null, args);\n }\n });\n}\n\n// `Symbol.prototype[@@toPrimitive]` method\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@toprimitive\nif (!$Symbol[PROTOTYPE][TO_PRIMITIVE]) {\n createNonEnumerableProperty($Symbol[PROTOTYPE], TO_PRIMITIVE, $Symbol[PROTOTYPE].valueOf);\n}\n// `Symbol.prototype[@@toStringTag]` property\n// https://tc39.es/ecma262/#sec-symbol.prototype-@@tostringtag\nsetToStringTag($Symbol, SYMBOL);\n\nhiddenKeys[HIDDEN] = true;\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar forEach = require('../internals/array-for-each');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype && CollectionPrototype.forEach !== forEach) try {\n createNonEnumerableProperty(CollectionPrototype, 'forEach', forEach);\n } catch (error) {\n CollectionPrototype.forEach = forEach;\n }\n}\n","var global = require('../internals/global');\nvar DOMIterables = require('../internals/dom-iterables');\nvar ArrayIteratorMethods = require('../modules/es.array.iterator');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar ArrayValues = ArrayIteratorMethods.values;\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[ITERATOR] !== ArrayValues) try {\n createNonEnumerableProperty(CollectionPrototype, ITERATOR, ArrayValues);\n } catch (error) {\n CollectionPrototype[ITERATOR] = ArrayValues;\n }\n if (!CollectionPrototype[TO_STRING_TAG]) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n if (DOMIterables[COLLECTION_NAME]) for (var METHOD_NAME in ArrayIteratorMethods) {\n // some Chrome versions have non-configurable methods on DOMTokenList\n if (CollectionPrototype[METHOD_NAME] !== ArrayIteratorMethods[METHOD_NAME]) try {\n createNonEnumerableProperty(CollectionPrototype, METHOD_NAME, ArrayIteratorMethods[METHOD_NAME]);\n } catch (error) {\n CollectionPrototype[METHOD_NAME] = ArrayIteratorMethods[METHOD_NAME];\n }\n }\n }\n}\n","(typeof navigator !== \"undefined\") && (function (global, factory) {\n typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :\n typeof define === 'function' && define.amd ? define(factory) :\n (global = typeof globalThis !== 'undefined' ? globalThis : global || self, global.lottie = factory());\n})(this, (function () { 'use strict';\n\n var svgNS = 'http://www.w3.org/2000/svg';\n var locationHref = '';\n var _useWebWorker = false;\n var initialDefaultFrame = -999999;\n\n var setWebWorker = function setWebWorker(flag) {\n _useWebWorker = !!flag;\n };\n\n var getWebWorker = function getWebWorker() {\n return _useWebWorker;\n };\n\n var setLocationHref = function setLocationHref(value) {\n locationHref = value;\n };\n\n var getLocationHref = function getLocationHref() {\n return locationHref;\n };\n\n function createTag(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElement(type);\n }\n\n function extendPrototype(sources, destination) {\n var i;\n var len = sources.length;\n var sourcePrototype;\n\n for (i = 0; i < len; i += 1) {\n sourcePrototype = sources[i].prototype;\n\n for (var attr in sourcePrototype) {\n if (Object.prototype.hasOwnProperty.call(sourcePrototype, attr)) destination.prototype[attr] = sourcePrototype[attr];\n }\n }\n }\n\n function getDescriptor(object, prop) {\n return Object.getOwnPropertyDescriptor(object, prop);\n }\n\n function createProxyFunction(prototype) {\n function ProxyFunction() {}\n\n ProxyFunction.prototype = prototype;\n return ProxyFunction;\n }\n\n // import Howl from '../../3rd_party/howler';\n var audioControllerFactory = function () {\n function AudioController(audioFactory) {\n this.audios = [];\n this.audioFactory = audioFactory;\n this._volume = 1;\n this._isMuted = false;\n }\n\n AudioController.prototype = {\n addAudio: function addAudio(audio) {\n this.audios.push(audio);\n },\n pause: function pause() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].pause();\n }\n },\n resume: function resume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].resume();\n }\n },\n setRate: function setRate(rateValue) {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].setRate(rateValue);\n }\n },\n createAudio: function createAudio(assetPath) {\n if (this.audioFactory) {\n return this.audioFactory(assetPath);\n }\n\n if (window.Howl) {\n return new window.Howl({\n src: [assetPath]\n });\n }\n\n return {\n isPlaying: false,\n play: function play() {\n this.isPlaying = true;\n },\n seek: function seek() {\n this.isPlaying = false;\n },\n playing: function playing() {},\n rate: function rate() {},\n setVolume: function setVolume() {}\n };\n },\n setAudioFactory: function setAudioFactory(audioFactory) {\n this.audioFactory = audioFactory;\n },\n setVolume: function setVolume(value) {\n this._volume = value;\n\n this._updateVolume();\n },\n mute: function mute() {\n this._isMuted = true;\n\n this._updateVolume();\n },\n unmute: function unmute() {\n this._isMuted = false;\n\n this._updateVolume();\n },\n getVolume: function getVolume() {\n return this._volume;\n },\n _updateVolume: function _updateVolume() {\n var i;\n var len = this.audios.length;\n\n for (i = 0; i < len; i += 1) {\n this.audios[i].volume(this._volume * (this._isMuted ? 0 : 1));\n }\n }\n };\n return function () {\n return new AudioController();\n };\n }();\n\n var createTypedArray = function () {\n function createRegularArray(type, len) {\n var i = 0;\n var arr = [];\n var value;\n\n switch (type) {\n case 'int16':\n case 'uint8c':\n value = 1;\n break;\n\n default:\n value = 1.1;\n break;\n }\n\n for (i = 0; i < len; i += 1) {\n arr.push(value);\n }\n\n return arr;\n }\n\n function createTypedArrayFactory(type, len) {\n if (type === 'float32') {\n return new Float32Array(len);\n }\n\n if (type === 'int16') {\n return new Int16Array(len);\n }\n\n if (type === 'uint8c') {\n return new Uint8ClampedArray(len);\n }\n\n return createRegularArray(type, len);\n }\n\n if (typeof Uint8ClampedArray === 'function' && typeof Float32Array === 'function') {\n return createTypedArrayFactory;\n }\n\n return createRegularArray;\n }();\n\n function createSizedArray(len) {\n return Array.apply(null, {\n length: len\n });\n }\n\n function _typeof$6(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$6 = function _typeof(obj) { return typeof obj; }; } else { _typeof$6 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$6(obj); }\n var subframeEnabled = true;\n var expressionsPlugin = null;\n var expressionsInterfaces = null;\n var idPrefix$1 = '';\n var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);\n var _shouldRoundValues = false;\n var bmPow = Math.pow;\n var bmSqrt = Math.sqrt;\n var bmFloor = Math.floor;\n var bmMax = Math.max;\n var bmMin = Math.min;\n var BMMath = {};\n\n (function () {\n var propertyNames = ['abs', 'acos', 'acosh', 'asin', 'asinh', 'atan', 'atanh', 'atan2', 'ceil', 'cbrt', 'expm1', 'clz32', 'cos', 'cosh', 'exp', 'floor', 'fround', 'hypot', 'imul', 'log', 'log1p', 'log2', 'log10', 'max', 'min', 'pow', 'random', 'round', 'sign', 'sin', 'sinh', 'sqrt', 'tan', 'tanh', 'trunc', 'E', 'LN10', 'LN2', 'LOG10E', 'LOG2E', 'PI', 'SQRT1_2', 'SQRT2'];\n var i;\n var len = propertyNames.length;\n\n for (i = 0; i < len; i += 1) {\n BMMath[propertyNames[i]] = Math[propertyNames[i]];\n }\n })();\n\n function ProjectInterface$1() {\n return {};\n }\n\n BMMath.random = Math.random;\n\n BMMath.abs = function (val) {\n var tOfVal = _typeof$6(val);\n\n if (tOfVal === 'object' && val.length) {\n var absArr = createSizedArray(val.length);\n var i;\n var len = val.length;\n\n for (i = 0; i < len; i += 1) {\n absArr[i] = Math.abs(val[i]);\n }\n\n return absArr;\n }\n\n return Math.abs(val);\n };\n\n var defaultCurveSegments = 150;\n var degToRads = Math.PI / 180;\n var roundCorner = 0.5519;\n\n function roundValues(flag) {\n _shouldRoundValues = !!flag;\n }\n\n function bmRnd(value) {\n if (_shouldRoundValues) {\n return Math.round(value);\n }\n\n return value;\n }\n\n function styleDiv(element) {\n element.style.position = 'absolute';\n element.style.top = 0;\n element.style.left = 0;\n element.style.display = 'block';\n element.style.transformOrigin = '0 0';\n element.style.webkitTransformOrigin = '0 0';\n element.style.backfaceVisibility = 'visible';\n element.style.webkitBackfaceVisibility = 'visible';\n element.style.transformStyle = 'preserve-3d';\n element.style.webkitTransformStyle = 'preserve-3d';\n element.style.mozTransformStyle = 'preserve-3d';\n }\n\n function BMEnterFrameEvent(type, currentTime, totalTime, frameMultiplier) {\n this.type = type;\n this.currentTime = currentTime;\n this.totalTime = totalTime;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteEvent(type, frameMultiplier) {\n this.type = type;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMCompleteLoopEvent(type, totalLoops, currentLoop, frameMultiplier) {\n this.type = type;\n this.currentLoop = currentLoop;\n this.totalLoops = totalLoops;\n this.direction = frameMultiplier < 0 ? -1 : 1;\n }\n\n function BMSegmentStartEvent(type, firstFrame, totalFrames) {\n this.type = type;\n this.firstFrame = firstFrame;\n this.totalFrames = totalFrames;\n }\n\n function BMDestroyEvent(type, target) {\n this.type = type;\n this.target = target;\n }\n\n function BMRenderFrameErrorEvent(nativeError, currentTime) {\n this.type = 'renderFrameError';\n this.nativeError = nativeError;\n this.currentTime = currentTime;\n }\n\n function BMConfigErrorEvent(nativeError) {\n this.type = 'configError';\n this.nativeError = nativeError;\n }\n\n function BMAnimationConfigErrorEvent(type, nativeError) {\n this.type = type;\n this.nativeError = nativeError;\n }\n\n var createElementID = function () {\n var _count = 0;\n return function createID() {\n _count += 1;\n return idPrefix$1 + '__lottie_element_' + _count;\n };\n }();\n\n function HSVtoRGB(h, s, v) {\n var r;\n var g;\n var b;\n var i;\n var f;\n var p;\n var q;\n var t;\n i = Math.floor(h * 6);\n f = h * 6 - i;\n p = v * (1 - s);\n q = v * (1 - f * s);\n t = v * (1 - (1 - f) * s);\n\n switch (i % 6) {\n case 0:\n r = v;\n g = t;\n b = p;\n break;\n\n case 1:\n r = q;\n g = v;\n b = p;\n break;\n\n case 2:\n r = p;\n g = v;\n b = t;\n break;\n\n case 3:\n r = p;\n g = q;\n b = v;\n break;\n\n case 4:\n r = t;\n g = p;\n b = v;\n break;\n\n case 5:\n r = v;\n g = p;\n b = q;\n break;\n\n default:\n break;\n }\n\n return [r, g, b];\n }\n\n function RGBtoHSV(r, g, b) {\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var d = max - min;\n var h;\n var s = max === 0 ? 0 : d / max;\n var v = max / 255;\n\n switch (max) {\n case min:\n h = 0;\n break;\n\n case r:\n h = g - b + d * (g < b ? 6 : 0);\n h /= 6 * d;\n break;\n\n case g:\n h = b - r + d * 2;\n h /= 6 * d;\n break;\n\n case b:\n h = r - g + d * 4;\n h /= 6 * d;\n break;\n\n default:\n break;\n }\n\n return [h, s, v];\n }\n\n function addSaturationToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[1] += offset;\n\n if (hsv[1] > 1) {\n hsv[1] = 1;\n } else if (hsv[1] <= 0) {\n hsv[1] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addBrightnessToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[2] += offset;\n\n if (hsv[2] > 1) {\n hsv[2] = 1;\n } else if (hsv[2] < 0) {\n hsv[2] = 0;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n function addHueToRGB(color, offset) {\n var hsv = RGBtoHSV(color[0] * 255, color[1] * 255, color[2] * 255);\n hsv[0] += offset / 360;\n\n if (hsv[0] > 1) {\n hsv[0] -= 1;\n } else if (hsv[0] < 0) {\n hsv[0] += 1;\n }\n\n return HSVtoRGB(hsv[0], hsv[1], hsv[2]);\n }\n\n var rgbToHex = function () {\n var colorMap = [];\n var i;\n var hex;\n\n for (i = 0; i < 256; i += 1) {\n hex = i.toString(16);\n colorMap[i] = hex.length === 1 ? '0' + hex : hex;\n }\n\n return function (r, g, b) {\n if (r < 0) {\n r = 0;\n }\n\n if (g < 0) {\n g = 0;\n }\n\n if (b < 0) {\n b = 0;\n }\n\n return '#' + colorMap[r] + colorMap[g] + colorMap[b];\n };\n }();\n\n var setSubframeEnabled = function setSubframeEnabled(flag) {\n subframeEnabled = !!flag;\n };\n\n var getSubframeEnabled = function getSubframeEnabled() {\n return subframeEnabled;\n };\n\n var setExpressionsPlugin = function setExpressionsPlugin(value) {\n expressionsPlugin = value;\n };\n\n var getExpressionsPlugin = function getExpressionsPlugin() {\n return expressionsPlugin;\n };\n\n var setExpressionInterfaces = function setExpressionInterfaces(value) {\n expressionsInterfaces = value;\n };\n\n var getExpressionInterfaces = function getExpressionInterfaces() {\n return expressionsInterfaces;\n };\n\n var setDefaultCurveSegments = function setDefaultCurveSegments(value) {\n defaultCurveSegments = value;\n };\n\n var getDefaultCurveSegments = function getDefaultCurveSegments() {\n return defaultCurveSegments;\n };\n\n var setIdPrefix = function setIdPrefix(value) {\n idPrefix$1 = value;\n };\n\n var getIdPrefix = function getIdPrefix() {\n return idPrefix$1;\n };\n\n function createNS(type) {\n // return {appendChild:function(){},setAttribute:function(){},style:{}}\n return document.createElementNS(svgNS, type);\n }\n\n function _typeof$5(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$5 = function _typeof(obj) { return typeof obj; }; } else { _typeof$5 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$5(obj); }\n\n var dataManager = function () {\n var _counterId = 1;\n var processes = [];\n var workerFn;\n var workerInstance;\n var workerProxy = {\n onmessage: function onmessage() {},\n postMessage: function postMessage(path) {\n workerFn({\n data: path\n });\n }\n };\n var _workerSelf = {\n postMessage: function postMessage(data) {\n workerProxy.onmessage({\n data: data\n });\n }\n };\n\n function createWorker(fn) {\n if (window.Worker && window.Blob && getWebWorker()) {\n var blob = new Blob(['var _workerSelf = self; self.onmessage = ', fn.toString()], {\n type: 'text/javascript'\n }); // var blob = new Blob(['self.onmessage = ', fn.toString()], { type: 'text/javascript' });\n\n var url = URL.createObjectURL(blob);\n return new Worker(url);\n }\n\n workerFn = fn;\n return workerProxy;\n }\n\n function setupWorker() {\n if (!workerInstance) {\n workerInstance = createWorker(function workerStart(e) {\n function dataFunctionManager() {\n function completeLayers(layers, comps) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if ('ks' in layerData && !layerData.completed) {\n layerData.completed = true;\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k);\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].s[0]);\n }\n\n if (maskProps[j].pt.k[k].e) {\n convertPathsToAbsoluteValues(maskProps[j].pt.k[k].e[0]);\n }\n }\n }\n }\n }\n\n if (layerData.ty === 0) {\n layerData.layers = findCompLayers(layerData.refId, comps);\n completeLayers(layerData.layers, comps);\n } else if (layerData.ty === 4) {\n completeShapes(layerData.shapes);\n } else if (layerData.ty === 5) {\n completeText(layerData);\n }\n }\n }\n }\n\n function completeChars(chars, assets) {\n if (chars) {\n var i = 0;\n var len = chars.length;\n\n for (i = 0; i < len; i += 1) {\n if (chars[i].t === 1) {\n // var compData = findComp(chars[i].data.refId, assets);\n chars[i].data.layers = findCompLayers(chars[i].data.refId, assets); // chars[i].data.ip = 0;\n // chars[i].data.op = 99999;\n // chars[i].data.st = 0;\n // chars[i].data.sr = 1;\n // chars[i].w = compData.w;\n // chars[i].data.ks = {\n // a: { k: [0, 0, 0], a: 0 },\n // p: { k: [0, -compData.h, 0], a: 0 },\n // r: { k: 0, a: 0 },\n // s: { k: [100, 100], a: 0 },\n // o: { k: 100, a: 0 },\n // };\n\n completeLayers(chars[i].data.layers, assets);\n }\n }\n }\n }\n\n function findComp(id, comps) {\n var i = 0;\n var len = comps.length;\n\n while (i < len) {\n if (comps[i].id === id) {\n return comps[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function findCompLayers(id, comps) {\n var comp = findComp(id, comps);\n\n if (comp) {\n if (!comp.layers.__used) {\n comp.layers.__used = true;\n return comp.layers;\n }\n\n return JSON.parse(JSON.stringify(comp.layers));\n }\n\n return null;\n }\n\n function completeShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n convertPathsToAbsoluteValues(arr[i].ks.k);\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].s[0]);\n }\n\n if (arr[i].ks.k[j].e) {\n convertPathsToAbsoluteValues(arr[i].ks.k[j].e[0]);\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeShapes(arr[i].it);\n }\n }\n }\n\n function convertPathsToAbsoluteValues(path) {\n var i;\n var len = path.i.length;\n\n for (i = 0; i < len; i += 1) {\n path.i[i][0] += path.v[i][0];\n path.i[i][1] += path.v[i][1];\n path.o[i][0] += path.v[i][0];\n path.o[i][1] += path.v[i][1];\n }\n }\n\n function checkVersion(minimum, animVersionString) {\n var animVersion = animVersionString ? animVersionString.split('.') : [100, 100, 100];\n\n if (minimum[0] > animVersion[0]) {\n return true;\n }\n\n if (animVersion[0] > minimum[0]) {\n return false;\n }\n\n if (minimum[1] > animVersion[1]) {\n return true;\n }\n\n if (animVersion[1] > minimum[1]) {\n return false;\n }\n\n if (minimum[2] > animVersion[2]) {\n return true;\n }\n\n if (animVersion[2] > minimum[2]) {\n return false;\n }\n\n return null;\n }\n\n var checkText = function () {\n var minimumVersion = [4, 4, 14];\n\n function updateTextLayer(textLayer) {\n var documentData = textLayer.t.d;\n textLayer.t.d = {\n k: [{\n s: documentData,\n t: 0\n }]\n };\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkChars = function () {\n var minimumVersion = [4, 7, 99];\n return function (animationData) {\n if (animationData.chars && !checkVersion(minimumVersion, animationData.v)) {\n var i;\n var len = animationData.chars.length;\n\n for (i = 0; i < len; i += 1) {\n var charData = animationData.chars[i];\n\n if (charData.data && charData.data.shapes) {\n completeShapes(charData.data.shapes);\n charData.data.ip = 0;\n charData.data.op = 99999;\n charData.data.st = 0;\n charData.data.sr = 1;\n charData.data.ks = {\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n }\n };\n\n if (!animationData.chars[i].t) {\n charData.data.shapes.push({\n ty: 'no'\n });\n charData.data.shapes[0].it.push({\n p: {\n k: [0, 0],\n a: 0\n },\n s: {\n k: [100, 100],\n a: 0\n },\n a: {\n k: [0, 0],\n a: 0\n },\n r: {\n k: 0,\n a: 0\n },\n o: {\n k: 100,\n a: 0\n },\n sk: {\n k: 0,\n a: 0\n },\n sa: {\n k: 0,\n a: 0\n },\n ty: 'tr'\n });\n }\n }\n }\n }\n };\n }();\n\n var checkPathProperties = function () {\n var minimumVersion = [5, 7, 15];\n\n function updateTextLayer(textLayer) {\n var pathData = textLayer.t.p;\n\n if (typeof pathData.a === 'number') {\n pathData.a = {\n a: 0,\n k: pathData.a\n };\n }\n\n if (typeof pathData.p === 'number') {\n pathData.p = {\n a: 0,\n k: pathData.p\n };\n }\n\n if (typeof pathData.r === 'number') {\n pathData.r = {\n a: 0,\n k: pathData.r\n };\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 5) {\n updateTextLayer(layers[i]);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkColors = function () {\n var minimumVersion = [4, 1, 9];\n\n function iterateShapes(shapes) {\n var i;\n var len = shapes.length;\n var j;\n var jLen;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n iterateShapes(shapes[i].it);\n } else if (shapes[i].ty === 'fl' || shapes[i].ty === 'st') {\n if (shapes[i].c.k && shapes[i].c.k[0].i) {\n jLen = shapes[i].c.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[i].c.k[j].s) {\n shapes[i].c.k[j].s[0] /= 255;\n shapes[i].c.k[j].s[1] /= 255;\n shapes[i].c.k[j].s[2] /= 255;\n shapes[i].c.k[j].s[3] /= 255;\n }\n\n if (shapes[i].c.k[j].e) {\n shapes[i].c.k[j].e[0] /= 255;\n shapes[i].c.k[j].e[1] /= 255;\n shapes[i].c.k[j].e[2] /= 255;\n shapes[i].c.k[j].e[3] /= 255;\n }\n }\n } else {\n shapes[i].c.k[0] /= 255;\n shapes[i].c.k[1] /= 255;\n shapes[i].c.k[2] /= 255;\n shapes[i].c.k[3] /= 255;\n }\n }\n }\n }\n\n function iterateLayers(layers) {\n var i;\n var len = layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (layers[i].ty === 4) {\n iterateShapes(layers[i].shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n var checkShapes = function () {\n var minimumVersion = [4, 4, 18];\n\n function completeClosingShapes(arr) {\n var i;\n var len = arr.length;\n var j;\n var jLen;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (arr[i].ty === 'sh') {\n if (arr[i].ks.k.i) {\n arr[i].ks.k.c = arr[i].closed;\n } else {\n jLen = arr[i].ks.k.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (arr[i].ks.k[j].s) {\n arr[i].ks.k[j].s[0].c = arr[i].closed;\n }\n\n if (arr[i].ks.k[j].e) {\n arr[i].ks.k[j].e[0].c = arr[i].closed;\n }\n }\n }\n } else if (arr[i].ty === 'gr') {\n completeClosingShapes(arr[i].it);\n }\n }\n }\n\n function iterateLayers(layers) {\n var layerData;\n var i;\n var len = layers.length;\n var j;\n var jLen;\n var k;\n var kLen;\n\n for (i = 0; i < len; i += 1) {\n layerData = layers[i];\n\n if (layerData.hasMask) {\n var maskProps = layerData.masksProperties;\n jLen = maskProps.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (maskProps[j].pt.k.i) {\n maskProps[j].pt.k.c = maskProps[j].cl;\n } else {\n kLen = maskProps[j].pt.k.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (maskProps[j].pt.k[k].s) {\n maskProps[j].pt.k[k].s[0].c = maskProps[j].cl;\n }\n\n if (maskProps[j].pt.k[k].e) {\n maskProps[j].pt.k[k].e[0].c = maskProps[j].cl;\n }\n }\n }\n }\n }\n\n if (layerData.ty === 4) {\n completeClosingShapes(layerData.shapes);\n }\n }\n }\n\n return function (animationData) {\n if (checkVersion(minimumVersion, animationData.v)) {\n iterateLayers(animationData.layers);\n\n if (animationData.assets) {\n var i;\n var len = animationData.assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (animationData.assets[i].layers) {\n iterateLayers(animationData.assets[i].layers);\n }\n }\n }\n }\n };\n }();\n\n function completeData(animationData) {\n if (animationData.__complete) {\n return;\n }\n\n checkColors(animationData);\n checkText(animationData);\n checkChars(animationData);\n checkPathProperties(animationData);\n checkShapes(animationData);\n completeLayers(animationData.layers, animationData.assets);\n completeChars(animationData.chars, animationData.assets);\n animationData.__complete = true;\n }\n\n function completeText(data) {\n if (data.t.a.length === 0 && !('m' in data.t.p)) {// data.singleShape = true;\n }\n }\n\n var moduleOb = {};\n moduleOb.completeData = completeData;\n moduleOb.checkColors = checkColors;\n moduleOb.checkChars = checkChars;\n moduleOb.checkPathProperties = checkPathProperties;\n moduleOb.checkShapes = checkShapes;\n moduleOb.completeLayers = completeLayers;\n return moduleOb;\n }\n\n if (!_workerSelf.dataManager) {\n _workerSelf.dataManager = dataFunctionManager();\n }\n\n if (!_workerSelf.assetLoader) {\n _workerSelf.assetLoader = function () {\n function formatResponse(xhr) {\n // using typeof doubles the time of execution of this method,\n // so if available, it's better to use the header to validate the type\n var contentTypeHeader = xhr.getResponseHeader('content-type');\n\n if (contentTypeHeader && xhr.responseType === 'json' && contentTypeHeader.indexOf('json') !== -1) {\n return xhr.response;\n }\n\n if (xhr.response && _typeof$5(xhr.response) === 'object') {\n return xhr.response;\n }\n\n if (xhr.response && typeof xhr.response === 'string') {\n return JSON.parse(xhr.response);\n }\n\n if (xhr.responseText) {\n return JSON.parse(xhr.responseText);\n }\n\n return null;\n }\n\n function loadAsset(path, fullPath, callback, errorCallback) {\n var response;\n var xhr = new XMLHttpRequest(); // set responseType after calling open or IE will break.\n\n try {\n // This crashes on Android WebView prior to KitKat\n xhr.responseType = 'json';\n } catch (err) {} // eslint-disable-line no-empty\n\n\n xhr.onreadystatechange = function () {\n if (xhr.readyState === 4) {\n if (xhr.status === 200) {\n response = formatResponse(xhr);\n callback(response);\n } else {\n try {\n response = formatResponse(xhr);\n callback(response);\n } catch (err) {\n if (errorCallback) {\n errorCallback(err);\n }\n }\n }\n }\n };\n\n try {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), path, true);\n } catch (error) {\n // Hack to workaround banner validation\n xhr.open(['G', 'E', 'T'].join(''), fullPath + '/' + path, true);\n }\n\n xhr.send();\n }\n\n return {\n load: loadAsset\n };\n }();\n }\n\n if (e.data.type === 'loadAnimation') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.dataManager.completeData(data);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n } else if (e.data.type === 'complete') {\n var animation = e.data.animation;\n\n _workerSelf.dataManager.completeData(animation);\n\n _workerSelf.postMessage({\n id: e.data.id,\n payload: animation,\n status: 'success'\n });\n } else if (e.data.type === 'loadData') {\n _workerSelf.assetLoader.load(e.data.path, e.data.fullPath, function (data) {\n _workerSelf.postMessage({\n id: e.data.id,\n payload: data,\n status: 'success'\n });\n }, function () {\n _workerSelf.postMessage({\n id: e.data.id,\n status: 'error'\n });\n });\n }\n });\n\n workerInstance.onmessage = function (event) {\n var data = event.data;\n var id = data.id;\n var process = processes[id];\n processes[id] = null;\n\n if (data.status === 'success') {\n process.onComplete(data.payload);\n } else if (process.onError) {\n process.onError();\n }\n };\n }\n }\n\n function createProcess(onComplete, onError) {\n _counterId += 1;\n var id = 'processId_' + _counterId;\n processes[id] = {\n onComplete: onComplete,\n onError: onError\n };\n return id;\n }\n\n function loadAnimation(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadAnimation',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function loadData(path, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'loadData',\n path: path,\n fullPath: window.location.origin + window.location.pathname,\n id: processId\n });\n }\n\n function completeAnimation(anim, onComplete, onError) {\n setupWorker();\n var processId = createProcess(onComplete, onError);\n workerInstance.postMessage({\n type: 'complete',\n animation: anim,\n id: processId\n });\n }\n\n return {\n loadAnimation: loadAnimation,\n loadData: loadData,\n completeAnimation: completeAnimation\n };\n }();\n\n var ImagePreloader = function () {\n var proxyImage = function () {\n var canvas = createTag('canvas');\n canvas.width = 1;\n canvas.height = 1;\n var ctx = canvas.getContext('2d');\n ctx.fillStyle = 'rgba(0,0,0,0)';\n ctx.fillRect(0, 0, 1, 1);\n return canvas;\n }();\n\n function imageLoaded() {\n this.loadedAssets += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function footageLoaded() {\n this.loadedFootagesCount += 1;\n\n if (this.loadedAssets === this.totalImages && this.loadedFootagesCount === this.totalFootages) {\n if (this.imagesLoadedCb) {\n this.imagesLoadedCb(null);\n }\n }\n }\n\n function getAssetsPath(assetData, assetsPath, originalPath) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = assetsPath + imagePath;\n } else {\n path = originalPath;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n }\n\n function testImageLoaded(img) {\n var _count = 0;\n var intervalId = setInterval(function () {\n var box = img.getBBox();\n\n if (box.width || _count > 500) {\n this._imageLoaded();\n\n clearInterval(intervalId);\n }\n\n _count += 1;\n }.bind(this), 50);\n }\n\n function createImageData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createNS('image');\n\n if (isSafari) {\n this.testImageLoaded(img);\n } else {\n img.addEventListener('load', this._imageLoaded, false);\n }\n\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.setAttributeNS('http://www.w3.org/1999/xlink', 'href', path);\n\n if (this._elementHelper.append) {\n this._elementHelper.append(img);\n } else {\n this._elementHelper.appendChild(img);\n }\n\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createImgData(assetData) {\n var path = getAssetsPath(assetData, this.assetsPath, this.path);\n var img = createTag('img');\n img.crossOrigin = 'anonymous';\n img.addEventListener('load', this._imageLoaded, false);\n img.addEventListener('error', function () {\n ob.img = proxyImage;\n\n this._imageLoaded();\n }.bind(this), false);\n img.src = path;\n var ob = {\n img: img,\n assetData: assetData\n };\n return ob;\n }\n\n function createFootageData(data) {\n var ob = {\n assetData: data\n };\n var path = getAssetsPath(data, this.assetsPath, this.path);\n dataManager.loadData(path, function (footageData) {\n ob.img = footageData;\n\n this._footageLoaded();\n }.bind(this), function () {\n ob.img = {};\n\n this._footageLoaded();\n }.bind(this));\n return ob;\n }\n\n function loadAssets(assets, cb) {\n this.imagesLoadedCb = cb;\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (!assets[i].layers) {\n if (!assets[i].t || assets[i].t === 'seq') {\n this.totalImages += 1;\n this.images.push(this._createImageData(assets[i]));\n } else if (assets[i].t === 3) {\n this.totalFootages += 1;\n this.images.push(this.createFootageData(assets[i]));\n }\n }\n }\n }\n\n function setPath(path) {\n this.path = path || '';\n }\n\n function setAssetsPath(path) {\n this.assetsPath = path || '';\n }\n\n function getAsset(assetData) {\n var i = 0;\n var len = this.images.length;\n\n while (i < len) {\n if (this.images[i].assetData === assetData) {\n return this.images[i].img;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function destroy() {\n this.imagesLoadedCb = null;\n this.images.length = 0;\n }\n\n function loadedImages() {\n return this.totalImages === this.loadedAssets;\n }\n\n function loadedFootages() {\n return this.totalFootages === this.loadedFootagesCount;\n }\n\n function setCacheType(type, elementHelper) {\n if (type === 'svg') {\n this._elementHelper = elementHelper;\n this._createImageData = this.createImageData.bind(this);\n } else {\n this._createImageData = this.createImgData.bind(this);\n }\n }\n\n function ImagePreloaderFactory() {\n this._imageLoaded = imageLoaded.bind(this);\n this._footageLoaded = footageLoaded.bind(this);\n this.testImageLoaded = testImageLoaded.bind(this);\n this.createFootageData = createFootageData.bind(this);\n this.assetsPath = '';\n this.path = '';\n this.totalImages = 0;\n this.totalFootages = 0;\n this.loadedAssets = 0;\n this.loadedFootagesCount = 0;\n this.imagesLoadedCb = null;\n this.images = [];\n }\n\n ImagePreloaderFactory.prototype = {\n loadAssets: loadAssets,\n setAssetsPath: setAssetsPath,\n setPath: setPath,\n loadedImages: loadedImages,\n loadedFootages: loadedFootages,\n destroy: destroy,\n getAsset: getAsset,\n createImgData: createImgData,\n createImageData: createImageData,\n imageLoaded: imageLoaded,\n footageLoaded: footageLoaded,\n setCacheType: setCacheType\n };\n return ImagePreloaderFactory;\n }();\n\n function BaseEvent() {}\n\n BaseEvent.prototype = {\n triggerEvent: function triggerEvent(eventName, args) {\n if (this._cbs[eventName]) {\n var callbacks = this._cbs[eventName];\n\n for (var i = 0; i < callbacks.length; i += 1) {\n callbacks[i](args);\n }\n }\n },\n addEventListener: function addEventListener(eventName, callback) {\n if (!this._cbs[eventName]) {\n this._cbs[eventName] = [];\n }\n\n this._cbs[eventName].push(callback);\n\n return function () {\n this.removeEventListener(eventName, callback);\n }.bind(this);\n },\n removeEventListener: function removeEventListener(eventName, callback) {\n if (!callback) {\n this._cbs[eventName] = null;\n } else if (this._cbs[eventName]) {\n var i = 0;\n var len = this._cbs[eventName].length;\n\n while (i < len) {\n if (this._cbs[eventName][i] === callback) {\n this._cbs[eventName].splice(i, 1);\n\n i -= 1;\n len -= 1;\n }\n\n i += 1;\n }\n\n if (!this._cbs[eventName].length) {\n this._cbs[eventName] = null;\n }\n }\n }\n };\n\n var markerParser = function () {\n function parsePayloadLines(payload) {\n var lines = payload.split('\\r\\n');\n var keys = {};\n var line;\n var keysCount = 0;\n\n for (var i = 0; i < lines.length; i += 1) {\n line = lines[i].split(':');\n\n if (line.length === 2) {\n keys[line[0]] = line[1].trim();\n keysCount += 1;\n }\n }\n\n if (keysCount === 0) {\n throw new Error();\n }\n\n return keys;\n }\n\n return function (_markers) {\n var markers = [];\n\n for (var i = 0; i < _markers.length; i += 1) {\n var _marker = _markers[i];\n var markerData = {\n time: _marker.tm,\n duration: _marker.dr\n };\n\n try {\n markerData.payload = JSON.parse(_markers[i].cm);\n } catch (_) {\n try {\n markerData.payload = parsePayloadLines(_markers[i].cm);\n } catch (__) {\n markerData.payload = {\n name: _markers[i].cm\n };\n }\n }\n\n markers.push(markerData);\n }\n\n return markers;\n };\n }();\n\n var ProjectInterface = function () {\n function registerComposition(comp) {\n this.compositions.push(comp);\n }\n\n return function () {\n function _thisProjectFunction(name) {\n var i = 0;\n var len = this.compositions.length;\n\n while (i < len) {\n if (this.compositions[i].data && this.compositions[i].data.nm === name) {\n if (this.compositions[i].prepareFrame && this.compositions[i].data.xt) {\n this.compositions[i].prepareFrame(this.currentFrame);\n }\n\n return this.compositions[i].compInterface;\n }\n\n i += 1;\n }\n\n return null;\n }\n\n _thisProjectFunction.compositions = [];\n _thisProjectFunction.currentFrame = 0;\n _thisProjectFunction.registerComposition = registerComposition;\n return _thisProjectFunction;\n };\n }();\n\n var renderers = {};\n\n var registerRenderer = function registerRenderer(key, value) {\n renderers[key] = value;\n };\n\n function getRenderer(key) {\n return renderers[key];\n }\n\n function getRegisteredRenderer() {\n // Returns canvas by default for compatibility\n if (renderers.canvas) {\n return 'canvas';\n } // Returns any renderer that is registered\n\n\n for (var key in renderers) {\n if (renderers[key]) {\n return key;\n }\n }\n\n return '';\n }\n\n function _typeof$4(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$4 = function _typeof(obj) { return typeof obj; }; } else { _typeof$4 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$4(obj); }\n\n var AnimationItem = function AnimationItem() {\n this._cbs = [];\n this.name = '';\n this.path = '';\n this.isLoaded = false;\n this.currentFrame = 0;\n this.currentRawFrame = 0;\n this.firstFrame = 0;\n this.totalFrames = 0;\n this.frameRate = 0;\n this.frameMult = 0;\n this.playSpeed = 1;\n this.playDirection = 1;\n this.playCount = 0;\n this.animationData = {};\n this.assets = [];\n this.isPaused = true;\n this.autoplay = false;\n this.loop = true;\n this.renderer = null;\n this.animationID = createElementID();\n this.assetsPath = '';\n this.timeCompleted = 0;\n this.segmentPos = 0;\n this.isSubframeEnabled = getSubframeEnabled();\n this.segments = [];\n this._idle = true;\n this._completedLoop = false;\n this.projectInterface = ProjectInterface();\n this.imagePreloader = new ImagePreloader();\n this.audioController = audioControllerFactory();\n this.markers = [];\n this.configAnimation = this.configAnimation.bind(this);\n this.onSetupError = this.onSetupError.bind(this);\n this.onSegmentComplete = this.onSegmentComplete.bind(this);\n this.drawnFrameEvent = new BMEnterFrameEvent('drawnFrame', 0, 0, 0);\n this.expressionsPlugin = getExpressionsPlugin();\n };\n\n extendPrototype([BaseEvent], AnimationItem);\n\n AnimationItem.prototype.setParams = function (params) {\n if (params.wrapper || params.container) {\n this.wrapper = params.wrapper || params.container;\n }\n\n var animType = 'svg';\n\n if (params.animType) {\n animType = params.animType;\n } else if (params.renderer) {\n animType = params.renderer;\n }\n\n var RendererClass = getRenderer(animType);\n this.renderer = new RendererClass(this, params.rendererSettings);\n this.imagePreloader.setCacheType(animType, this.renderer.globalData.defs);\n this.renderer.setProjectInterface(this.projectInterface);\n this.animType = animType;\n\n if (params.loop === '' || params.loop === null || params.loop === undefined || params.loop === true) {\n this.loop = true;\n } else if (params.loop === false) {\n this.loop = false;\n } else {\n this.loop = parseInt(params.loop, 10);\n }\n\n this.autoplay = 'autoplay' in params ? params.autoplay : true;\n this.name = params.name ? params.name : '';\n this.autoloadSegments = Object.prototype.hasOwnProperty.call(params, 'autoloadSegments') ? params.autoloadSegments : true;\n this.assetsPath = params.assetsPath;\n this.initialSegment = params.initialSegment;\n\n if (params.audioFactory) {\n this.audioController.setAudioFactory(params.audioFactory);\n }\n\n if (params.animationData) {\n this.setupAnimation(params.animationData);\n } else if (params.path) {\n if (params.path.lastIndexOf('\\\\') !== -1) {\n this.path = params.path.substr(0, params.path.lastIndexOf('\\\\') + 1);\n } else {\n this.path = params.path.substr(0, params.path.lastIndexOf('/') + 1);\n }\n\n this.fileName = params.path.substr(params.path.lastIndexOf('/') + 1);\n this.fileName = this.fileName.substr(0, this.fileName.lastIndexOf('.json'));\n dataManager.loadAnimation(params.path, this.configAnimation, this.onSetupError);\n }\n };\n\n AnimationItem.prototype.onSetupError = function () {\n this.trigger('data_failed');\n };\n\n AnimationItem.prototype.setupAnimation = function (data) {\n dataManager.completeAnimation(data, this.configAnimation);\n };\n\n AnimationItem.prototype.setData = function (wrapper, animationData) {\n if (animationData) {\n if (_typeof$4(animationData) !== 'object') {\n animationData = JSON.parse(animationData);\n }\n }\n\n var params = {\n wrapper: wrapper,\n animationData: animationData\n };\n var wrapperAttributes = wrapper.attributes;\n params.path = wrapperAttributes.getNamedItem('data-animation-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-animation-path').value : wrapperAttributes.getNamedItem('data-bm-path') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-path').value : wrapperAttributes.getNamedItem('bm-path') ? wrapperAttributes.getNamedItem('bm-path').value : '';\n params.animType = wrapperAttributes.getNamedItem('data-anim-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-type').value : wrapperAttributes.getNamedItem('data-bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-type').value : wrapperAttributes.getNamedItem('bm-type') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('bm-type').value : wrapperAttributes.getNamedItem('data-bm-renderer') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-renderer').value : wrapperAttributes.getNamedItem('bm-renderer') ? wrapperAttributes.getNamedItem('bm-renderer').value : getRegisteredRenderer() || 'canvas';\n var loop = wrapperAttributes.getNamedItem('data-anim-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-loop').value : wrapperAttributes.getNamedItem('data-bm-loop') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-loop').value : wrapperAttributes.getNamedItem('bm-loop') ? wrapperAttributes.getNamedItem('bm-loop').value : '';\n\n if (loop === 'false') {\n params.loop = false;\n } else if (loop === 'true') {\n params.loop = true;\n } else if (loop !== '') {\n params.loop = parseInt(loop, 10);\n }\n\n var autoplay = wrapperAttributes.getNamedItem('data-anim-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-autoplay').value : wrapperAttributes.getNamedItem('data-bm-autoplay') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-autoplay').value : wrapperAttributes.getNamedItem('bm-autoplay') ? wrapperAttributes.getNamedItem('bm-autoplay').value : true;\n params.autoplay = autoplay !== 'false';\n params.name = wrapperAttributes.getNamedItem('data-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-name').value : wrapperAttributes.getNamedItem('data-bm-name') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-name').value : wrapperAttributes.getNamedItem('bm-name') ? wrapperAttributes.getNamedItem('bm-name').value : '';\n var prerender = wrapperAttributes.getNamedItem('data-anim-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-anim-prerender').value : wrapperAttributes.getNamedItem('data-bm-prerender') // eslint-disable-line no-nested-ternary\n ? wrapperAttributes.getNamedItem('data-bm-prerender').value : wrapperAttributes.getNamedItem('bm-prerender') ? wrapperAttributes.getNamedItem('bm-prerender').value : '';\n\n if (prerender === 'false') {\n params.prerender = false;\n }\n\n if (!params.path) {\n this.trigger('destroy');\n } else {\n this.setParams(params);\n }\n };\n\n AnimationItem.prototype.includeLayers = function (data) {\n if (data.op > this.animationData.op) {\n this.animationData.op = data.op;\n this.totalFrames = Math.floor(data.op - this.animationData.ip);\n }\n\n var layers = this.animationData.layers;\n var i;\n var len = layers.length;\n var newLayers = data.layers;\n var j;\n var jLen = newLayers.length;\n\n for (j = 0; j < jLen; j += 1) {\n i = 0;\n\n while (i < len) {\n if (layers[i].id === newLayers[j].id) {\n layers[i] = newLayers[j];\n break;\n }\n\n i += 1;\n }\n }\n\n if (data.chars || data.fonts) {\n this.renderer.globalData.fontManager.addChars(data.chars);\n this.renderer.globalData.fontManager.addFonts(data.fonts, this.renderer.globalData.defs);\n }\n\n if (data.assets) {\n len = data.assets.length;\n\n for (i = 0; i < len; i += 1) {\n this.animationData.assets.push(data.assets[i]);\n }\n }\n\n this.animationData.__complete = false;\n dataManager.completeAnimation(this.animationData, this.onSegmentComplete);\n };\n\n AnimationItem.prototype.onSegmentComplete = function (data) {\n this.animationData = data;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.loadNextSegment = function () {\n var segments = this.animationData.segments;\n\n if (!segments || segments.length === 0 || !this.autoloadSegments) {\n this.trigger('data_ready');\n this.timeCompleted = this.totalFrames;\n return;\n }\n\n var segment = segments.shift();\n this.timeCompleted = segment.time * this.frameRate;\n var segmentPath = this.path + this.fileName + '_' + this.segmentPos + '.json';\n this.segmentPos += 1;\n dataManager.loadData(segmentPath, this.includeLayers.bind(this), function () {\n this.trigger('data_failed');\n }.bind(this));\n };\n\n AnimationItem.prototype.loadSegments = function () {\n var segments = this.animationData.segments;\n\n if (!segments) {\n this.timeCompleted = this.totalFrames;\n }\n\n this.loadNextSegment();\n };\n\n AnimationItem.prototype.imagesLoaded = function () {\n this.trigger('loaded_images');\n this.checkLoaded();\n };\n\n AnimationItem.prototype.preloadImages = function () {\n this.imagePreloader.setAssetsPath(this.assetsPath);\n this.imagePreloader.setPath(this.path);\n this.imagePreloader.loadAssets(this.animationData.assets, this.imagesLoaded.bind(this));\n };\n\n AnimationItem.prototype.configAnimation = function (animData) {\n if (!this.renderer) {\n return;\n }\n\n try {\n this.animationData = animData;\n\n if (this.initialSegment) {\n this.totalFrames = Math.floor(this.initialSegment[1] - this.initialSegment[0]);\n this.firstFrame = Math.round(this.initialSegment[0]);\n } else {\n this.totalFrames = Math.floor(this.animationData.op - this.animationData.ip);\n this.firstFrame = Math.round(this.animationData.ip);\n }\n\n this.renderer.configAnimation(animData);\n\n if (!animData.assets) {\n animData.assets = [];\n }\n\n this.assets = this.animationData.assets;\n this.frameRate = this.animationData.fr;\n this.frameMult = this.animationData.fr / 1000;\n this.renderer.searchExtraCompositions(animData.assets);\n this.markers = markerParser(animData.markers || []);\n this.trigger('config_ready');\n this.preloadImages();\n this.loadSegments();\n this.updaFrameModifier();\n this.waitForFontsLoaded();\n\n if (this.isPaused) {\n this.audioController.pause();\n }\n } catch (error) {\n this.triggerConfigError(error);\n }\n };\n\n AnimationItem.prototype.waitForFontsLoaded = function () {\n if (!this.renderer) {\n return;\n }\n\n if (this.renderer.globalData.fontManager.isLoaded) {\n this.checkLoaded();\n } else {\n setTimeout(this.waitForFontsLoaded.bind(this), 20);\n }\n };\n\n AnimationItem.prototype.checkLoaded = function () {\n if (!this.isLoaded && this.renderer.globalData.fontManager.isLoaded && (this.imagePreloader.loadedImages() || this.renderer.rendererType !== 'canvas') && this.imagePreloader.loadedFootages()) {\n this.isLoaded = true;\n var expressionsPlugin = getExpressionsPlugin();\n\n if (expressionsPlugin) {\n expressionsPlugin.initExpressions(this);\n }\n\n this.renderer.initItems();\n setTimeout(function () {\n this.trigger('DOMLoaded');\n }.bind(this), 0);\n this.gotoFrame();\n\n if (this.autoplay) {\n this.play();\n }\n }\n };\n\n AnimationItem.prototype.resize = function (width, height) {\n // Adding this validation for backwards compatibility in case an event object was being passed down\n var _width = typeof width === 'number' ? width : undefined;\n\n var _height = typeof height === 'number' ? height : undefined;\n\n this.renderer.updateContainerSize(_width, _height);\n };\n\n AnimationItem.prototype.setSubframe = function (flag) {\n this.isSubframeEnabled = !!flag;\n };\n\n AnimationItem.prototype.gotoFrame = function () {\n this.currentFrame = this.isSubframeEnabled ? this.currentRawFrame : ~~this.currentRawFrame; // eslint-disable-line no-bitwise\n\n if (this.timeCompleted !== this.totalFrames && this.currentFrame > this.timeCompleted) {\n this.currentFrame = this.timeCompleted;\n }\n\n this.trigger('enterFrame');\n this.renderFrame();\n this.trigger('drawnFrame');\n };\n\n AnimationItem.prototype.renderFrame = function () {\n if (this.isLoaded === false || !this.renderer) {\n return;\n }\n\n try {\n if (this.expressionsPlugin) {\n this.expressionsPlugin.resetFrame();\n }\n\n this.renderer.renderFrame(this.currentFrame + this.firstFrame);\n } catch (error) {\n this.triggerRenderFrameError(error);\n }\n };\n\n AnimationItem.prototype.play = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.isPaused = false;\n this.trigger('_play');\n this.audioController.resume();\n\n if (this._idle) {\n this._idle = false;\n this.trigger('_active');\n }\n }\n };\n\n AnimationItem.prototype.pause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === false) {\n this.isPaused = true;\n this.trigger('_pause');\n this._idle = true;\n this.trigger('_idle');\n this.audioController.pause();\n }\n };\n\n AnimationItem.prototype.togglePause = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n if (this.isPaused === true) {\n this.play();\n } else {\n this.pause();\n }\n };\n\n AnimationItem.prototype.stop = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.pause();\n this.playCount = 0;\n this._completedLoop = false;\n this.setCurrentRawFrameValue(0);\n };\n\n AnimationItem.prototype.getMarkerData = function (markerName) {\n var marker;\n\n for (var i = 0; i < this.markers.length; i += 1) {\n marker = this.markers[i];\n\n if (marker.payload && marker.payload.name === markerName) {\n return marker;\n }\n }\n\n return null;\n };\n\n AnimationItem.prototype.goToAndStop = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n this.goToAndStop(marker.time, true);\n }\n } else if (isFrame) {\n this.setCurrentRawFrameValue(value);\n } else {\n this.setCurrentRawFrameValue(value * this.frameModifier);\n }\n\n this.pause();\n };\n\n AnimationItem.prototype.goToAndPlay = function (value, isFrame, name) {\n if (name && this.name !== name) {\n return;\n }\n\n var numValue = Number(value);\n\n if (isNaN(numValue)) {\n var marker = this.getMarkerData(value);\n\n if (marker) {\n if (!marker.duration) {\n this.goToAndStop(marker.time, true);\n } else {\n this.playSegments([marker.time, marker.time + marker.duration], true);\n }\n }\n } else {\n this.goToAndStop(numValue, isFrame, name);\n }\n\n this.play();\n };\n\n AnimationItem.prototype.advanceTime = function (value) {\n if (this.isPaused === true || this.isLoaded === false) {\n return;\n }\n\n var nextValue = this.currentRawFrame + value * this.frameModifier;\n var _isComplete = false; // Checking if nextValue > totalFrames - 1 for addressing non looping and looping animations.\n // If animation won't loop, it should stop at totalFrames - 1. If it will loop it should complete the last frame and then loop.\n\n if (nextValue >= this.totalFrames - 1 && this.frameModifier > 0) {\n if (!this.loop || this.playCount === this.loop) {\n if (!this.checkSegments(nextValue > this.totalFrames ? nextValue % this.totalFrames : 0)) {\n _isComplete = true;\n nextValue = this.totalFrames - 1;\n }\n } else if (nextValue >= this.totalFrames) {\n this.playCount += 1;\n\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n this.setCurrentRawFrameValue(nextValue % this.totalFrames);\n this._completedLoop = true;\n this.trigger('loopComplete');\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n } else if (nextValue < 0) {\n if (!this.checkSegments(nextValue % this.totalFrames)) {\n if (this.loop && !(this.playCount-- <= 0 && this.loop !== true)) {\n // eslint-disable-line no-plusplus\n this.setCurrentRawFrameValue(this.totalFrames + nextValue % this.totalFrames);\n\n if (!this._completedLoop) {\n this._completedLoop = true;\n } else {\n this.trigger('loopComplete');\n }\n } else {\n _isComplete = true;\n nextValue = 0;\n }\n }\n } else {\n this.setCurrentRawFrameValue(nextValue);\n }\n\n if (_isComplete) {\n this.setCurrentRawFrameValue(nextValue);\n this.pause();\n this.trigger('complete');\n }\n };\n\n AnimationItem.prototype.adjustSegment = function (arr, offset) {\n this.playCount = 0;\n\n if (arr[1] < arr[0]) {\n if (this.frameModifier > 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(-1);\n }\n }\n\n this.totalFrames = arr[0] - arr[1];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[1];\n this.setCurrentRawFrameValue(this.totalFrames - 0.001 - offset);\n } else if (arr[1] > arr[0]) {\n if (this.frameModifier < 0) {\n if (this.playSpeed < 0) {\n this.setSpeed(-this.playSpeed);\n } else {\n this.setDirection(1);\n }\n }\n\n this.totalFrames = arr[1] - arr[0];\n this.timeCompleted = this.totalFrames;\n this.firstFrame = arr[0];\n this.setCurrentRawFrameValue(0.001 + offset);\n }\n\n this.trigger('segmentStart');\n };\n\n AnimationItem.prototype.setSegment = function (init, end) {\n var pendingFrame = -1;\n\n if (this.isPaused) {\n if (this.currentRawFrame + this.firstFrame < init) {\n pendingFrame = init;\n } else if (this.currentRawFrame + this.firstFrame > end) {\n pendingFrame = end - init;\n }\n }\n\n this.firstFrame = init;\n this.totalFrames = end - init;\n this.timeCompleted = this.totalFrames;\n\n if (pendingFrame !== -1) {\n this.goToAndStop(pendingFrame, true);\n }\n };\n\n AnimationItem.prototype.playSegments = function (arr, forceFlag) {\n if (forceFlag) {\n this.segments.length = 0;\n }\n\n if (_typeof$4(arr[0]) === 'object') {\n var i;\n var len = arr.length;\n\n for (i = 0; i < len; i += 1) {\n this.segments.push(arr[i]);\n }\n } else {\n this.segments.push(arr);\n }\n\n if (this.segments.length && forceFlag) {\n this.adjustSegment(this.segments.shift(), 0);\n }\n\n if (this.isPaused) {\n this.play();\n }\n };\n\n AnimationItem.prototype.resetSegments = function (forceFlag) {\n this.segments.length = 0;\n this.segments.push([this.animationData.ip, this.animationData.op]);\n\n if (forceFlag) {\n this.checkSegments(0);\n }\n };\n\n AnimationItem.prototype.checkSegments = function (offset) {\n if (this.segments.length) {\n this.adjustSegment(this.segments.shift(), offset);\n return true;\n }\n\n return false;\n };\n\n AnimationItem.prototype.destroy = function (name) {\n if (name && this.name !== name || !this.renderer) {\n return;\n }\n\n this.renderer.destroy();\n this.imagePreloader.destroy();\n this.trigger('destroy');\n this._cbs = null;\n this.onEnterFrame = null;\n this.onLoopComplete = null;\n this.onComplete = null;\n this.onSegmentStart = null;\n this.onDestroy = null;\n this.renderer = null;\n this.expressionsPlugin = null;\n this.imagePreloader = null;\n this.projectInterface = null;\n };\n\n AnimationItem.prototype.setCurrentRawFrameValue = function (value) {\n this.currentRawFrame = value;\n this.gotoFrame();\n };\n\n AnimationItem.prototype.setSpeed = function (val) {\n this.playSpeed = val;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setDirection = function (val) {\n this.playDirection = val < 0 ? -1 : 1;\n this.updaFrameModifier();\n };\n\n AnimationItem.prototype.setLoop = function (isLooping) {\n this.loop = isLooping;\n };\n\n AnimationItem.prototype.setVolume = function (val, name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.setVolume(val);\n };\n\n AnimationItem.prototype.getVolume = function () {\n return this.audioController.getVolume();\n };\n\n AnimationItem.prototype.mute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.mute();\n };\n\n AnimationItem.prototype.unmute = function (name) {\n if (name && this.name !== name) {\n return;\n }\n\n this.audioController.unmute();\n };\n\n AnimationItem.prototype.updaFrameModifier = function () {\n this.frameModifier = this.frameMult * this.playSpeed * this.playDirection;\n this.audioController.setRate(this.playSpeed * this.playDirection);\n };\n\n AnimationItem.prototype.getPath = function () {\n return this.path;\n };\n\n AnimationItem.prototype.getAssetsPath = function (assetData) {\n var path = '';\n\n if (assetData.e) {\n path = assetData.p;\n } else if (this.assetsPath) {\n var imagePath = assetData.p;\n\n if (imagePath.indexOf('images/') !== -1) {\n imagePath = imagePath.split('/')[1];\n }\n\n path = this.assetsPath + imagePath;\n } else {\n path = this.path;\n path += assetData.u ? assetData.u : '';\n path += assetData.p;\n }\n\n return path;\n };\n\n AnimationItem.prototype.getAssetData = function (id) {\n var i = 0;\n var len = this.assets.length;\n\n while (i < len) {\n if (id === this.assets[i].id) {\n return this.assets[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n AnimationItem.prototype.hide = function () {\n this.renderer.hide();\n };\n\n AnimationItem.prototype.show = function () {\n this.renderer.show();\n };\n\n AnimationItem.prototype.getDuration = function (isFrame) {\n return isFrame ? this.totalFrames : this.totalFrames / this.frameRate;\n };\n\n AnimationItem.prototype.updateDocumentData = function (path, documentData, index) {\n try {\n var element = this.renderer.getElementByPath(path);\n element.updateDocumentData(documentData, index);\n } catch (error) {// TODO: decide how to handle catch case\n }\n };\n\n AnimationItem.prototype.trigger = function (name) {\n if (this._cbs && this._cbs[name]) {\n switch (name) {\n case 'enterFrame':\n this.triggerEvent(name, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameModifier));\n break;\n\n case 'drawnFrame':\n this.drawnFrameEvent.currentTime = this.currentFrame;\n this.drawnFrameEvent.totalTime = this.totalFrames;\n this.drawnFrameEvent.direction = this.frameModifier;\n this.triggerEvent(name, this.drawnFrameEvent);\n break;\n\n case 'loopComplete':\n this.triggerEvent(name, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n break;\n\n case 'complete':\n this.triggerEvent(name, new BMCompleteEvent(name, this.frameMult));\n break;\n\n case 'segmentStart':\n this.triggerEvent(name, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n break;\n\n case 'destroy':\n this.triggerEvent(name, new BMDestroyEvent(name, this));\n break;\n\n default:\n this.triggerEvent(name);\n }\n }\n\n if (name === 'enterFrame' && this.onEnterFrame) {\n this.onEnterFrame.call(this, new BMEnterFrameEvent(name, this.currentFrame, this.totalFrames, this.frameMult));\n }\n\n if (name === 'loopComplete' && this.onLoopComplete) {\n this.onLoopComplete.call(this, new BMCompleteLoopEvent(name, this.loop, this.playCount, this.frameMult));\n }\n\n if (name === 'complete' && this.onComplete) {\n this.onComplete.call(this, new BMCompleteEvent(name, this.frameMult));\n }\n\n if (name === 'segmentStart' && this.onSegmentStart) {\n this.onSegmentStart.call(this, new BMSegmentStartEvent(name, this.firstFrame, this.totalFrames));\n }\n\n if (name === 'destroy' && this.onDestroy) {\n this.onDestroy.call(this, new BMDestroyEvent(name, this));\n }\n };\n\n AnimationItem.prototype.triggerRenderFrameError = function (nativeError) {\n var error = new BMRenderFrameErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n AnimationItem.prototype.triggerConfigError = function (nativeError) {\n var error = new BMConfigErrorEvent(nativeError, this.currentFrame);\n this.triggerEvent('error', error);\n\n if (this.onError) {\n this.onError.call(this, error);\n }\n };\n\n var animationManager = function () {\n var moduleOb = {};\n var registeredAnimations = [];\n var initTime = 0;\n var len = 0;\n var playingAnimationsNum = 0;\n var _stopped = true;\n var _isFrozen = false;\n\n function removeElement(ev) {\n var i = 0;\n var animItem = ev.target;\n\n while (i < len) {\n if (registeredAnimations[i].animation === animItem) {\n registeredAnimations.splice(i, 1);\n i -= 1;\n len -= 1;\n\n if (!animItem.isPaused) {\n subtractPlayingCount();\n }\n }\n\n i += 1;\n }\n }\n\n function registerAnimation(element, animationData) {\n if (!element) {\n return null;\n }\n\n var i = 0;\n\n while (i < len) {\n if (registeredAnimations[i].elem === element && registeredAnimations[i].elem !== null) {\n return registeredAnimations[i].animation;\n }\n\n i += 1;\n }\n\n var animItem = new AnimationItem();\n setupAnimation(animItem, element);\n animItem.setData(element, animationData);\n return animItem;\n }\n\n function getRegisteredAnimations() {\n var i;\n var lenAnims = registeredAnimations.length;\n var animations = [];\n\n for (i = 0; i < lenAnims; i += 1) {\n animations.push(registeredAnimations[i].animation);\n }\n\n return animations;\n }\n\n function addPlayingCount() {\n playingAnimationsNum += 1;\n activate();\n }\n\n function subtractPlayingCount() {\n playingAnimationsNum -= 1;\n }\n\n function setupAnimation(animItem, element) {\n animItem.addEventListener('destroy', removeElement);\n animItem.addEventListener('_active', addPlayingCount);\n animItem.addEventListener('_idle', subtractPlayingCount);\n registeredAnimations.push({\n elem: element,\n animation: animItem\n });\n len += 1;\n }\n\n function loadAnimation(params) {\n var animItem = new AnimationItem();\n setupAnimation(animItem, null);\n animItem.setParams(params);\n return animItem;\n }\n\n function setSpeed(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setSpeed(val, animation);\n }\n }\n\n function setDirection(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setDirection(val, animation);\n }\n }\n\n function play(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.play(animation);\n }\n }\n\n function resume(nowTime) {\n var elapsedTime = nowTime - initTime;\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.advanceTime(elapsedTime);\n }\n\n initTime = nowTime;\n\n if (playingAnimationsNum && !_isFrozen) {\n window.requestAnimationFrame(resume);\n } else {\n _stopped = true;\n }\n }\n\n function first(nowTime) {\n initTime = nowTime;\n window.requestAnimationFrame(resume);\n }\n\n function pause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.pause(animation);\n }\n }\n\n function goToAndStop(value, isFrame, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.goToAndStop(value, isFrame, animation);\n }\n }\n\n function stop(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.stop(animation);\n }\n }\n\n function togglePause(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.togglePause(animation);\n }\n }\n\n function destroy(animation) {\n var i;\n\n for (i = len - 1; i >= 0; i -= 1) {\n registeredAnimations[i].animation.destroy(animation);\n }\n }\n\n function searchAnimations(animationData, standalone, renderer) {\n var animElements = [].concat([].slice.call(document.getElementsByClassName('lottie')), [].slice.call(document.getElementsByClassName('bodymovin')));\n var i;\n var lenAnims = animElements.length;\n\n for (i = 0; i < lenAnims; i += 1) {\n if (renderer) {\n animElements[i].setAttribute('data-bm-type', renderer);\n }\n\n registerAnimation(animElements[i], animationData);\n }\n\n if (standalone && lenAnims === 0) {\n if (!renderer) {\n renderer = 'svg';\n }\n\n var body = document.getElementsByTagName('body')[0];\n body.innerText = '';\n var div = createTag('div');\n div.style.width = '100%';\n div.style.height = '100%';\n div.setAttribute('data-bm-type', renderer);\n body.appendChild(div);\n registerAnimation(div, animationData);\n }\n }\n\n function resize() {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.resize();\n }\n }\n\n function activate() {\n if (!_isFrozen && playingAnimationsNum) {\n if (_stopped) {\n window.requestAnimationFrame(first);\n _stopped = false;\n }\n }\n }\n\n function freeze() {\n _isFrozen = true;\n }\n\n function unfreeze() {\n _isFrozen = false;\n activate();\n }\n\n function setVolume(val, animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.setVolume(val, animation);\n }\n }\n\n function mute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.mute(animation);\n }\n }\n\n function unmute(animation) {\n var i;\n\n for (i = 0; i < len; i += 1) {\n registeredAnimations[i].animation.unmute(animation);\n }\n }\n\n moduleOb.registerAnimation = registerAnimation;\n moduleOb.loadAnimation = loadAnimation;\n moduleOb.setSpeed = setSpeed;\n moduleOb.setDirection = setDirection;\n moduleOb.play = play;\n moduleOb.pause = pause;\n moduleOb.stop = stop;\n moduleOb.togglePause = togglePause;\n moduleOb.searchAnimations = searchAnimations;\n moduleOb.resize = resize; // moduleOb.start = start;\n\n moduleOb.goToAndStop = goToAndStop;\n moduleOb.destroy = destroy;\n moduleOb.freeze = freeze;\n moduleOb.unfreeze = unfreeze;\n moduleOb.setVolume = setVolume;\n moduleOb.mute = mute;\n moduleOb.unmute = unmute;\n moduleOb.getRegisteredAnimations = getRegisteredAnimations;\n return moduleOb;\n }();\n\n /* eslint-disable */\n var BezierFactory = function () {\n /**\r\n * BezierEasing - use bezier curve for transition easing function\r\n * by Gaëtan Renaudeau 2014 - 2015 – MIT License\r\n *\r\n * Credits: is based on Firefox's nsSMILKeySpline.cpp\r\n * Usage:\r\n * var spline = BezierEasing([ 0.25, 0.1, 0.25, 1.0 ])\r\n * spline.get(x) => returns the easing value | x must be in [0, 1] range\r\n *\r\n */\n var ob = {};\n ob.getBezierEasing = getBezierEasing;\n var beziers = {};\n\n function getBezierEasing(a, b, c, d, nm) {\n var str = nm || ('bez_' + a + '_' + b + '_' + c + '_' + d).replace(/\\./g, 'p');\n\n if (beziers[str]) {\n return beziers[str];\n }\n\n var bezEasing = new BezierEasing([a, b, c, d]);\n beziers[str] = bezEasing;\n return bezEasing;\n } // These values are established by empiricism with tests (tradeoff: performance VS precision)\n\n\n var NEWTON_ITERATIONS = 4;\n var NEWTON_MIN_SLOPE = 0.001;\n var SUBDIVISION_PRECISION = 0.0000001;\n var SUBDIVISION_MAX_ITERATIONS = 10;\n var kSplineTableSize = 11;\n var kSampleStepSize = 1.0 / (kSplineTableSize - 1.0);\n var float32ArraySupported = typeof Float32Array === 'function';\n\n function A(aA1, aA2) {\n return 1.0 - 3.0 * aA2 + 3.0 * aA1;\n }\n\n function B(aA1, aA2) {\n return 3.0 * aA2 - 6.0 * aA1;\n }\n\n function C(aA1) {\n return 3.0 * aA1;\n } // Returns x(t) given t, x1, and x2, or y(t) given t, y1, and y2.\n\n\n function calcBezier(aT, aA1, aA2) {\n return ((A(aA1, aA2) * aT + B(aA1, aA2)) * aT + C(aA1)) * aT;\n } // Returns dx/dt given t, x1, and x2, or dy/dt given t, y1, and y2.\n\n\n function getSlope(aT, aA1, aA2) {\n return 3.0 * A(aA1, aA2) * aT * aT + 2.0 * B(aA1, aA2) * aT + C(aA1);\n }\n\n function binarySubdivide(aX, aA, aB, mX1, mX2) {\n var currentX,\n currentT,\n i = 0;\n\n do {\n currentT = aA + (aB - aA) / 2.0;\n currentX = calcBezier(currentT, mX1, mX2) - aX;\n\n if (currentX > 0.0) {\n aB = currentT;\n } else {\n aA = currentT;\n }\n } while (Math.abs(currentX) > SUBDIVISION_PRECISION && ++i < SUBDIVISION_MAX_ITERATIONS);\n\n return currentT;\n }\n\n function newtonRaphsonIterate(aX, aGuessT, mX1, mX2) {\n for (var i = 0; i < NEWTON_ITERATIONS; ++i) {\n var currentSlope = getSlope(aGuessT, mX1, mX2);\n if (currentSlope === 0.0) return aGuessT;\n var currentX = calcBezier(aGuessT, mX1, mX2) - aX;\n aGuessT -= currentX / currentSlope;\n }\n\n return aGuessT;\n }\n /**\r\n * points is an array of [ mX1, mY1, mX2, mY2 ]\r\n */\n\n\n function BezierEasing(points) {\n this._p = points;\n this._mSampleValues = float32ArraySupported ? new Float32Array(kSplineTableSize) : new Array(kSplineTableSize);\n this._precomputed = false;\n this.get = this.get.bind(this);\n }\n\n BezierEasing.prototype = {\n get: function get(x) {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n if (!this._precomputed) this._precompute();\n if (mX1 === mY1 && mX2 === mY2) return x; // linear\n // Because JavaScript number are imprecise, we should guarantee the extremes are right.\n\n if (x === 0) return 0;\n if (x === 1) return 1;\n return calcBezier(this._getTForX(x), mY1, mY2);\n },\n // Private part\n _precompute: function _precompute() {\n var mX1 = this._p[0],\n mY1 = this._p[1],\n mX2 = this._p[2],\n mY2 = this._p[3];\n this._precomputed = true;\n\n if (mX1 !== mY1 || mX2 !== mY2) {\n this._calcSampleValues();\n }\n },\n _calcSampleValues: function _calcSampleValues() {\n var mX1 = this._p[0],\n mX2 = this._p[2];\n\n for (var i = 0; i < kSplineTableSize; ++i) {\n this._mSampleValues[i] = calcBezier(i * kSampleStepSize, mX1, mX2);\n }\n },\n\n /**\r\n * getTForX chose the fastest heuristic to determine the percentage value precisely from a given X projection.\r\n */\n _getTForX: function _getTForX(aX) {\n var mX1 = this._p[0],\n mX2 = this._p[2],\n mSampleValues = this._mSampleValues;\n var intervalStart = 0.0;\n var currentSample = 1;\n var lastSample = kSplineTableSize - 1;\n\n for (; currentSample !== lastSample && mSampleValues[currentSample] <= aX; ++currentSample) {\n intervalStart += kSampleStepSize;\n }\n\n --currentSample; // Interpolate to provide an initial guess for t\n\n var dist = (aX - mSampleValues[currentSample]) / (mSampleValues[currentSample + 1] - mSampleValues[currentSample]);\n var guessForT = intervalStart + dist * kSampleStepSize;\n var initialSlope = getSlope(guessForT, mX1, mX2);\n\n if (initialSlope >= NEWTON_MIN_SLOPE) {\n return newtonRaphsonIterate(aX, guessForT, mX1, mX2);\n }\n\n if (initialSlope === 0.0) {\n return guessForT;\n }\n\n return binarySubdivide(aX, intervalStart, intervalStart + kSampleStepSize, mX1, mX2);\n }\n };\n return ob;\n }();\n\n var pooling = function () {\n function _double(arr) {\n return arr.concat(createSizedArray(arr.length));\n }\n\n return {\n \"double\": _double\n };\n }();\n\n var poolFactory = function () {\n return function (initialLength, _create, _release) {\n var _length = 0;\n var _maxLength = initialLength;\n var pool = createSizedArray(_maxLength);\n var ob = {\n newElement: newElement,\n release: release\n };\n\n function newElement() {\n var element;\n\n if (_length) {\n _length -= 1;\n element = pool[_length];\n } else {\n element = _create();\n }\n\n return element;\n }\n\n function release(element) {\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n if (_release) {\n _release(element);\n }\n\n pool[_length] = element;\n _length += 1;\n }\n\n return ob;\n };\n }();\n\n var bezierLengthPool = function () {\n function create() {\n return {\n addedLength: 0,\n percents: createTypedArray('float32', getDefaultCurveSegments()),\n lengths: createTypedArray('float32', getDefaultCurveSegments())\n };\n }\n\n return poolFactory(8, create);\n }();\n\n var segmentsLengthPool = function () {\n function create() {\n return {\n lengths: [],\n totalLength: 0\n };\n }\n\n function release(element) {\n var i;\n var len = element.lengths.length;\n\n for (i = 0; i < len; i += 1) {\n bezierLengthPool.release(element.lengths[i]);\n }\n\n element.lengths.length = 0;\n }\n\n return poolFactory(8, create, release);\n }();\n\n function bezFunction() {\n var math = Math;\n\n function pointOnLine2D(x1, y1, x2, y2, x3, y3) {\n var det1 = x1 * y2 + y1 * x3 + x2 * y3 - x3 * y2 - y3 * x1 - x2 * y1;\n return det1 > -0.001 && det1 < 0.001;\n }\n\n function pointOnLine3D(x1, y1, z1, x2, y2, z2, x3, y3, z3) {\n if (z1 === 0 && z2 === 0 && z3 === 0) {\n return pointOnLine2D(x1, y1, x2, y2, x3, y3);\n }\n\n var dist1 = math.sqrt(math.pow(x2 - x1, 2) + math.pow(y2 - y1, 2) + math.pow(z2 - z1, 2));\n var dist2 = math.sqrt(math.pow(x3 - x1, 2) + math.pow(y3 - y1, 2) + math.pow(z3 - z1, 2));\n var dist3 = math.sqrt(math.pow(x3 - x2, 2) + math.pow(y3 - y2, 2) + math.pow(z3 - z2, 2));\n var diffDist;\n\n if (dist1 > dist2) {\n if (dist1 > dist3) {\n diffDist = dist1 - dist2 - dist3;\n } else {\n diffDist = dist3 - dist2 - dist1;\n }\n } else if (dist3 > dist2) {\n diffDist = dist3 - dist2 - dist1;\n } else {\n diffDist = dist2 - dist1 - dist3;\n }\n\n return diffDist > -0.0001 && diffDist < 0.0001;\n }\n\n var getBezierLength = function () {\n return function (pt1, pt2, pt3, pt4) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point = [];\n var lastPoint = [];\n var lengthData = bezierLengthPool.newElement();\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * pt3[i] + 3 * (1 - perc) * bmPow(perc, 2) * pt4[i] + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint[i] !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n\n lastPoint[i] = point[i];\n }\n\n if (ptDistance) {\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n }\n\n lengthData.percents[k] = perc;\n lengthData.lengths[k] = addedLength;\n }\n\n lengthData.addedLength = addedLength;\n return lengthData;\n };\n }();\n\n function getSegmentsLength(shapeData) {\n var segmentsLength = segmentsLengthPool.newElement();\n var closed = shapeData.c;\n var pathV = shapeData.v;\n var pathO = shapeData.o;\n var pathI = shapeData.i;\n var i;\n var len = shapeData._length;\n var lengths = segmentsLength.lengths;\n var totalLength = 0;\n\n for (i = 0; i < len - 1; i += 1) {\n lengths[i] = getBezierLength(pathV[i], pathV[i + 1], pathO[i], pathI[i + 1]);\n totalLength += lengths[i].addedLength;\n }\n\n if (closed && len) {\n lengths[i] = getBezierLength(pathV[i], pathV[0], pathO[i], pathI[0]);\n totalLength += lengths[i].addedLength;\n }\n\n segmentsLength.totalLength = totalLength;\n return segmentsLength;\n }\n\n function BezierData(length) {\n this.segmentLength = 0;\n this.points = new Array(length);\n }\n\n function PointData(partial, point) {\n this.partialLength = partial;\n this.point = point;\n }\n\n var buildBezierData = function () {\n var storedData = {};\n return function (pt1, pt2, pt3, pt4) {\n var bezierName = (pt1[0] + '_' + pt1[1] + '_' + pt2[0] + '_' + pt2[1] + '_' + pt3[0] + '_' + pt3[1] + '_' + pt4[0] + '_' + pt4[1]).replace(/\\./g, 'p');\n\n if (!storedData[bezierName]) {\n var curveSegments = getDefaultCurveSegments();\n var k;\n var i;\n var len;\n var ptCoord;\n var perc;\n var addedLength = 0;\n var ptDistance;\n var point;\n var lastPoint = null;\n\n if (pt1.length === 2 && (pt1[0] !== pt2[0] || pt1[1] !== pt2[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt1[0] + pt3[0], pt1[1] + pt3[1]) && pointOnLine2D(pt1[0], pt1[1], pt2[0], pt2[1], pt2[0] + pt4[0], pt2[1] + pt4[1])) {\n curveSegments = 2;\n }\n\n var bezierData = new BezierData(curveSegments);\n len = pt3.length;\n\n for (k = 0; k < curveSegments; k += 1) {\n point = createSizedArray(len);\n perc = k / (curveSegments - 1);\n ptDistance = 0;\n\n for (i = 0; i < len; i += 1) {\n ptCoord = bmPow(1 - perc, 3) * pt1[i] + 3 * bmPow(1 - perc, 2) * perc * (pt1[i] + pt3[i]) + 3 * (1 - perc) * bmPow(perc, 2) * (pt2[i] + pt4[i]) + bmPow(perc, 3) * pt2[i];\n point[i] = ptCoord;\n\n if (lastPoint !== null) {\n ptDistance += bmPow(point[i] - lastPoint[i], 2);\n }\n }\n\n ptDistance = bmSqrt(ptDistance);\n addedLength += ptDistance;\n bezierData.points[k] = new PointData(ptDistance, point);\n lastPoint = point;\n }\n\n bezierData.segmentLength = addedLength;\n storedData[bezierName] = bezierData;\n }\n\n return storedData[bezierName];\n };\n }();\n\n function getDistancePerc(perc, bezierData) {\n var percents = bezierData.percents;\n var lengths = bezierData.lengths;\n var len = percents.length;\n var initPos = bmFloor((len - 1) * perc);\n var lengthPos = perc * bezierData.addedLength;\n var lPerc = 0;\n\n if (initPos === len - 1 || initPos === 0 || lengthPos === lengths[initPos]) {\n return percents[initPos];\n }\n\n var dir = lengths[initPos] > lengthPos ? -1 : 1;\n var flag = true;\n\n while (flag) {\n if (lengths[initPos] <= lengthPos && lengths[initPos + 1] > lengthPos) {\n lPerc = (lengthPos - lengths[initPos]) / (lengths[initPos + 1] - lengths[initPos]);\n flag = false;\n } else {\n initPos += dir;\n }\n\n if (initPos < 0 || initPos >= len - 1) {\n // FIX for TypedArrays that don't store floating point values with enough accuracy\n if (initPos === len - 1) {\n return percents[initPos];\n }\n\n flag = false;\n }\n }\n\n return percents[initPos] + (percents[initPos + 1] - percents[initPos]) * lPerc;\n }\n\n function getPointInSegment(pt1, pt2, pt3, pt4, percent, bezierData) {\n var t1 = getDistancePerc(percent, bezierData);\n var u1 = 1 - t1;\n var ptX = math.round((u1 * u1 * u1 * pt1[0] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[0] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[0] + t1 * t1 * t1 * pt2[0]) * 1000) / 1000;\n var ptY = math.round((u1 * u1 * u1 * pt1[1] + (t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1) * pt3[1] + (t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1) * pt4[1] + t1 * t1 * t1 * pt2[1]) * 1000) / 1000;\n return [ptX, ptY];\n }\n\n var bezierSegmentPoints = createTypedArray('float32', 8);\n\n function getNewSegment(pt1, pt2, pt3, pt4, startPerc, endPerc, bezierData) {\n if (startPerc < 0) {\n startPerc = 0;\n } else if (startPerc > 1) {\n startPerc = 1;\n }\n\n var t0 = getDistancePerc(startPerc, bezierData);\n endPerc = endPerc > 1 ? 1 : endPerc;\n var t1 = getDistancePerc(endPerc, bezierData);\n var i;\n var len = pt1.length;\n var u0 = 1 - t0;\n var u1 = 1 - t1;\n var u0u0u0 = u0 * u0 * u0;\n var t0u0u0_3 = t0 * u0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0u0_3 = t0 * t0 * u0 * 3; // eslint-disable-line camelcase\n\n var t0t0t0 = t0 * t0 * t0; //\n\n var u0u0u1 = u0 * u0 * u1;\n var t0u0u1_3 = t0 * u0 * u1 + u0 * t0 * u1 + u0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0u1_3 = t0 * t0 * u1 + u0 * t0 * t1 + t0 * u0 * t1; // eslint-disable-line camelcase\n\n var t0t0t1 = t0 * t0 * t1; //\n\n var u0u1u1 = u0 * u1 * u1;\n var t0u1u1_3 = t0 * u1 * u1 + u0 * t1 * u1 + u0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1u1_3 = t0 * t1 * u1 + u0 * t1 * t1 + t0 * u1 * t1; // eslint-disable-line camelcase\n\n var t0t1t1 = t0 * t1 * t1; //\n\n var u1u1u1 = u1 * u1 * u1;\n var t1u1u1_3 = t1 * u1 * u1 + u1 * t1 * u1 + u1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1u1_3 = t1 * t1 * u1 + u1 * t1 * t1 + t1 * u1 * t1; // eslint-disable-line camelcase\n\n var t1t1t1 = t1 * t1 * t1;\n\n for (i = 0; i < len; i += 1) {\n bezierSegmentPoints[i * 4] = math.round((u0u0u0 * pt1[i] + t0u0u0_3 * pt3[i] + t0t0u0_3 * pt4[i] + t0t0t0 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 1] = math.round((u0u0u1 * pt1[i] + t0u0u1_3 * pt3[i] + t0t0u1_3 * pt4[i] + t0t0t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 2] = math.round((u0u1u1 * pt1[i] + t0u1u1_3 * pt3[i] + t0t1u1_3 * pt4[i] + t0t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n\n bezierSegmentPoints[i * 4 + 3] = math.round((u1u1u1 * pt1[i] + t1u1u1_3 * pt3[i] + t1t1u1_3 * pt4[i] + t1t1t1 * pt2[i]) * 1000) / 1000; // eslint-disable-line camelcase\n }\n\n return bezierSegmentPoints;\n }\n\n return {\n getSegmentsLength: getSegmentsLength,\n getNewSegment: getNewSegment,\n getPointInSegment: getPointInSegment,\n buildBezierData: buildBezierData,\n pointOnLine2D: pointOnLine2D,\n pointOnLine3D: pointOnLine3D\n };\n }\n\n var bez = bezFunction();\n\n var initFrame = initialDefaultFrame;\n var mathAbs = Math.abs;\n\n function interpolateValue(frameNum, caching) {\n var offsetTime = this.offsetTime;\n var newValue;\n\n if (this.propType === 'multidimensional') {\n newValue = createTypedArray('float32', this.pv.length);\n }\n\n var iterationIndex = caching.lastIndex;\n var i = iterationIndex;\n var len = this.keyframes.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = this.keyframes[i];\n nextKeyData = this.keyframes[i + 1];\n\n if (i === len - 1 && frameNum >= nextKeyData.t - offsetTime) {\n if (keyData.h) {\n keyData = nextKeyData;\n }\n\n iterationIndex = 0;\n break;\n }\n\n if (nextKeyData.t - offsetTime > frameNum) {\n iterationIndex = i;\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n iterationIndex = 0;\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n var k;\n var kLen;\n var perc;\n var jLen;\n var j;\n var fnc;\n var nextKeyTime = nextKeyData.t - offsetTime;\n var keyTime = keyData.t - offsetTime;\n var endValue;\n\n if (keyData.to) {\n if (!keyframeMetadata.bezierData) {\n keyframeMetadata.bezierData = bez.buildBezierData(keyData.s, nextKeyData.s || keyData.e, keyData.to, keyData.ti);\n }\n\n var bezierData = keyframeMetadata.bezierData;\n\n if (frameNum >= nextKeyTime || frameNum < keyTime) {\n var ind = frameNum >= nextKeyTime ? bezierData.points.length - 1 : 0;\n kLen = bezierData.points[ind].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[ind].point[k];\n } // caching._lastKeyframeIndex = -1;\n\n } else {\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y, keyData.n).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n var distanceInLine = bezierData.segmentLength * perc;\n var segmentPerc;\n var addedLength = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastAddedLength : 0;\n j = caching.lastFrame < frameNum && caching._lastKeyframeIndex === i ? caching._lastPoint : 0;\n flag = true;\n jLen = bezierData.points.length;\n\n while (flag) {\n addedLength += bezierData.points[j].partialLength;\n\n if (distanceInLine === 0 || perc === 0 || j === bezierData.points.length - 1) {\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k];\n }\n\n break;\n } else if (distanceInLine >= addedLength && distanceInLine < addedLength + bezierData.points[j + 1].partialLength) {\n segmentPerc = (distanceInLine - addedLength) / bezierData.points[j + 1].partialLength;\n kLen = bezierData.points[j].point.length;\n\n for (k = 0; k < kLen; k += 1) {\n newValue[k] = bezierData.points[j].point[k] + (bezierData.points[j + 1].point[k] - bezierData.points[j].point[k]) * segmentPerc;\n }\n\n break;\n }\n\n if (j < jLen - 1) {\n j += 1;\n } else {\n flag = false;\n }\n }\n\n caching._lastPoint = j;\n caching._lastAddedLength = addedLength - bezierData.points[j].partialLength;\n caching._lastKeyframeIndex = i;\n }\n } else {\n var outX;\n var outY;\n var inX;\n var inY;\n var keyValue;\n len = keyData.s.length;\n endValue = nextKeyData.s || keyData.e;\n\n if (this.sh && keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n newValue[0] = endValue[0];\n newValue[1] = endValue[1];\n newValue[2] = endValue[2];\n } else if (frameNum <= keyTime) {\n newValue[0] = keyData.s[0];\n newValue[1] = keyData.s[1];\n newValue[2] = keyData.s[2];\n } else {\n var quatStart = createQuaternion(keyData.s);\n var quatEnd = createQuaternion(endValue);\n var time = (frameNum - keyTime) / (nextKeyTime - keyTime);\n quaternionToEuler(newValue, slerp(quatStart, quatEnd, time));\n }\n } else {\n for (i = 0; i < len; i += 1) {\n if (keyData.h !== 1) {\n if (frameNum >= nextKeyTime) {\n perc = 1;\n } else if (frameNum < keyTime) {\n perc = 0;\n } else {\n if (keyData.o.x.constructor === Array) {\n if (!keyframeMetadata.__fnct) {\n keyframeMetadata.__fnct = [];\n }\n\n if (!keyframeMetadata.__fnct[i]) {\n outX = keyData.o.x[i] === undefined ? keyData.o.x[0] : keyData.o.x[i];\n outY = keyData.o.y[i] === undefined ? keyData.o.y[0] : keyData.o.y[i];\n inX = keyData.i.x[i] === undefined ? keyData.i.x[0] : keyData.i.x[i];\n inY = keyData.i.y[i] === undefined ? keyData.i.y[0] : keyData.i.y[i];\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyframeMetadata.__fnct[i] = fnc;\n } else {\n fnc = keyframeMetadata.__fnct[i];\n }\n } else if (!keyframeMetadata.__fnct) {\n outX = keyData.o.x;\n outY = keyData.o.y;\n inX = keyData.i.x;\n inY = keyData.i.y;\n fnc = BezierFactory.getBezierEasing(outX, outY, inX, inY).get;\n keyData.keyframeMetadata = fnc;\n } else {\n fnc = keyframeMetadata.__fnct;\n }\n\n perc = fnc((frameNum - keyTime) / (nextKeyTime - keyTime));\n }\n }\n\n endValue = nextKeyData.s || keyData.e;\n keyValue = keyData.h === 1 ? keyData.s[i] : keyData.s[i] + (endValue[i] - keyData.s[i]) * perc;\n\n if (this.propType === 'multidimensional') {\n newValue[i] = keyValue;\n } else {\n newValue = keyValue;\n }\n }\n }\n }\n\n caching.lastIndex = iterationIndex;\n return newValue;\n } // based on @Toji's https://github.com/toji/gl-matrix/\n\n\n function slerp(a, b, t) {\n var out = [];\n var ax = a[0];\n var ay = a[1];\n var az = a[2];\n var aw = a[3];\n var bx = b[0];\n var by = b[1];\n var bz = b[2];\n var bw = b[3];\n var omega;\n var cosom;\n var sinom;\n var scale0;\n var scale1;\n cosom = ax * bx + ay * by + az * bz + aw * bw;\n\n if (cosom < 0.0) {\n cosom = -cosom;\n bx = -bx;\n by = -by;\n bz = -bz;\n bw = -bw;\n }\n\n if (1.0 - cosom > 0.000001) {\n omega = Math.acos(cosom);\n sinom = Math.sin(omega);\n scale0 = Math.sin((1.0 - t) * omega) / sinom;\n scale1 = Math.sin(t * omega) / sinom;\n } else {\n scale0 = 1.0 - t;\n scale1 = t;\n }\n\n out[0] = scale0 * ax + scale1 * bx;\n out[1] = scale0 * ay + scale1 * by;\n out[2] = scale0 * az + scale1 * bz;\n out[3] = scale0 * aw + scale1 * bw;\n return out;\n }\n\n function quaternionToEuler(out, quat) {\n var qx = quat[0];\n var qy = quat[1];\n var qz = quat[2];\n var qw = quat[3];\n var heading = Math.atan2(2 * qy * qw - 2 * qx * qz, 1 - 2 * qy * qy - 2 * qz * qz);\n var attitude = Math.asin(2 * qx * qy + 2 * qz * qw);\n var bank = Math.atan2(2 * qx * qw - 2 * qy * qz, 1 - 2 * qx * qx - 2 * qz * qz);\n out[0] = heading / degToRads;\n out[1] = attitude / degToRads;\n out[2] = bank / degToRads;\n }\n\n function createQuaternion(values) {\n var heading = values[0] * degToRads;\n var attitude = values[1] * degToRads;\n var bank = values[2] * degToRads;\n var c1 = Math.cos(heading / 2);\n var c2 = Math.cos(attitude / 2);\n var c3 = Math.cos(bank / 2);\n var s1 = Math.sin(heading / 2);\n var s2 = Math.sin(attitude / 2);\n var s3 = Math.sin(bank / 2);\n var w = c1 * c2 * c3 - s1 * s2 * s3;\n var x = s1 * s2 * c3 + c1 * c2 * s3;\n var y = s1 * c2 * c3 + c1 * s2 * s3;\n var z = c1 * s2 * c3 - s1 * c2 * s3;\n return [x, y, z, w];\n }\n\n function getValueAtCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n\n if (!(frameNum === this._caching.lastFrame || this._caching.lastFrame !== initFrame && (this._caching.lastFrame >= endTime && frameNum >= endTime || this._caching.lastFrame < initTime && frameNum < initTime))) {\n if (this._caching.lastFrame >= frameNum) {\n this._caching._lastKeyframeIndex = -1;\n this._caching.lastIndex = 0;\n }\n\n var renderResult = this.interpolateValue(frameNum, this._caching);\n this.pv = renderResult;\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function setVValue(val) {\n var multipliedValue;\n\n if (this.propType === 'unidimensional') {\n multipliedValue = val * this.mult;\n\n if (mathAbs(this.v - multipliedValue) > 0.00001) {\n this.v = multipliedValue;\n this._mdf = true;\n }\n } else {\n var i = 0;\n var len = this.v.length;\n\n while (i < len) {\n multipliedValue = val[i] * this.mult;\n\n if (mathAbs(this.v[i] - multipliedValue) > 0.00001) {\n this.v[i] = multipliedValue;\n this._mdf = true;\n }\n\n i += 1;\n }\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) {\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = this._isFirstFrame;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = this.kf ? this.pv : this.data.k;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this._isFirstFrame = false;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n function ValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.mult = mult || 1;\n this.data = data;\n this.v = mult ? data.k * mult : data.k;\n this.pv = data.k;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.vel = 0;\n this.effectsSequence = [];\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function MultiDimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n this.mult = mult || 1;\n this.data = data;\n this._mdf = false;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.k = false;\n this.kf = false;\n this.frameId = -1;\n var i;\n var len = data.k.length;\n this.v = createTypedArray('float32', len);\n this.pv = createTypedArray('float32', len);\n this.vel = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n this.v[i] = data.k[i] * this.mult;\n this.pv[i] = data.k[i];\n }\n\n this._isFirstFrame = true;\n this.effectsSequence = [];\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.addEffect = addEffect;\n }\n\n function KeyframedValueProperty(elem, data, mult, container) {\n this.propType = 'unidimensional';\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.frameId = -1;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: 0,\n _lastKeyframeIndex: -1\n };\n this.k = true;\n this.kf = true;\n this.data = data;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.v = initFrame;\n this.pv = initFrame;\n this._isFirstFrame = true;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.addEffect = addEffect;\n }\n\n function KeyframedMultidimensionalProperty(elem, data, mult, container) {\n this.propType = 'multidimensional';\n var i;\n var len = data.k.length;\n var s;\n var e;\n var to;\n var ti;\n\n for (i = 0; i < len - 1; i += 1) {\n if (data.k[i].to && data.k[i].s && data.k[i + 1] && data.k[i + 1].s) {\n s = data.k[i].s;\n e = data.k[i + 1].s;\n to = data.k[i].to;\n ti = data.k[i].ti;\n\n if (s.length === 2 && !(s[0] === e[0] && s[1] === e[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], s[0] + to[0], s[1] + to[1]) && bez.pointOnLine2D(s[0], s[1], e[0], e[1], e[0] + ti[0], e[1] + ti[1]) || s.length === 3 && !(s[0] === e[0] && s[1] === e[1] && s[2] === e[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], s[0] + to[0], s[1] + to[1], s[2] + to[2]) && bez.pointOnLine3D(s[0], s[1], s[2], e[0], e[1], e[2], e[0] + ti[0], e[1] + ti[1], e[2] + ti[2])) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n\n if (s[0] === e[0] && s[1] === e[1] && to[0] === 0 && to[1] === 0 && ti[0] === 0 && ti[1] === 0) {\n if (s.length === 2 || s[2] === e[2] && to[2] === 0 && ti[2] === 0) {\n data.k[i].to = null;\n data.k[i].ti = null;\n }\n }\n }\n }\n\n this.effectsSequence = [getValueAtCurrentTime.bind(this)];\n this.data = data;\n this.keyframes = data.k;\n this.keyframesMetadata = [];\n this.offsetTime = elem.data.st;\n this.k = true;\n this.kf = true;\n this._isFirstFrame = true;\n this.mult = mult || 1;\n this.elem = elem;\n this.container = container;\n this.comp = elem.comp;\n this.getValue = processEffectsSequence;\n this.setVValue = setVValue;\n this.interpolateValue = interpolateValue;\n this.frameId = -1;\n var arrLen = data.k[0].s.length;\n this.v = createTypedArray('float32', arrLen);\n this.pv = createTypedArray('float32', arrLen);\n\n for (i = 0; i < arrLen; i += 1) {\n this.v[i] = initFrame;\n this.pv[i] = initFrame;\n }\n\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0,\n value: createTypedArray('float32', arrLen)\n };\n this.addEffect = addEffect;\n }\n\n var PropertyFactory = function () {\n function getProp(elem, data, type, mult, container) {\n if (data.sid) {\n data = elem.globalData.slotManager.getProp(data);\n }\n\n var p;\n\n if (!data.k.length) {\n p = new ValueProperty(elem, data, mult, container);\n } else if (typeof data.k[0] === 'number') {\n p = new MultiDimensionalProperty(elem, data, mult, container);\n } else {\n switch (type) {\n case 0:\n p = new KeyframedValueProperty(elem, data, mult, container);\n break;\n\n case 1:\n p = new KeyframedMultidimensionalProperty(elem, data, mult, container);\n break;\n\n default:\n break;\n }\n }\n\n if (p.effectsSequence.length) {\n container.addDynamicProperty(p);\n }\n\n return p;\n }\n\n var ob = {\n getProp: getProp\n };\n return ob;\n }();\n\n function DynamicPropertyContainer() {}\n\n DynamicPropertyContainer.prototype = {\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n this.container.addDynamicProperty(this);\n this._isAnimated = true;\n }\n },\n iterateDynamicProperties: function iterateDynamicProperties() {\n this._mdf = false;\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this._mdf = true;\n }\n }\n },\n initDynamicPropertyContainer: function initDynamicPropertyContainer(container) {\n this.container = container;\n this.dynamicProperties = [];\n this._mdf = false;\n this._isAnimated = false;\n }\n };\n\n var pointPool = function () {\n function create() {\n return createTypedArray('float32', 2);\n }\n\n return poolFactory(8, create);\n }();\n\n function ShapePath() {\n this.c = false;\n this._length = 0;\n this._maxLength = 8;\n this.v = createSizedArray(this._maxLength);\n this.o = createSizedArray(this._maxLength);\n this.i = createSizedArray(this._maxLength);\n }\n\n ShapePath.prototype.setPathData = function (closed, len) {\n this.c = closed;\n this.setLength(len);\n var i = 0;\n\n while (i < len) {\n this.v[i] = pointPool.newElement();\n this.o[i] = pointPool.newElement();\n this.i[i] = pointPool.newElement();\n i += 1;\n }\n };\n\n ShapePath.prototype.setLength = function (len) {\n while (this._maxLength < len) {\n this.doubleArrayLength();\n }\n\n this._length = len;\n };\n\n ShapePath.prototype.doubleArrayLength = function () {\n this.v = this.v.concat(createSizedArray(this._maxLength));\n this.i = this.i.concat(createSizedArray(this._maxLength));\n this.o = this.o.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n };\n\n ShapePath.prototype.setXYAt = function (x, y, type, pos, replace) {\n var arr;\n this._length = Math.max(this._length, pos + 1);\n\n if (this._length >= this._maxLength) {\n this.doubleArrayLength();\n }\n\n switch (type) {\n case 'v':\n arr = this.v;\n break;\n\n case 'i':\n arr = this.i;\n break;\n\n case 'o':\n arr = this.o;\n break;\n\n default:\n arr = [];\n break;\n }\n\n if (!arr[pos] || arr[pos] && !replace) {\n arr[pos] = pointPool.newElement();\n }\n\n arr[pos][0] = x;\n arr[pos][1] = y;\n };\n\n ShapePath.prototype.setTripleAt = function (vX, vY, oX, oY, iX, iY, pos, replace) {\n this.setXYAt(vX, vY, 'v', pos, replace);\n this.setXYAt(oX, oY, 'o', pos, replace);\n this.setXYAt(iX, iY, 'i', pos, replace);\n };\n\n ShapePath.prototype.reverse = function () {\n var newPath = new ShapePath();\n newPath.setPathData(this.c, this._length);\n var vertices = this.v;\n var outPoints = this.o;\n var inPoints = this.i;\n var init = 0;\n\n if (this.c) {\n newPath.setTripleAt(vertices[0][0], vertices[0][1], inPoints[0][0], inPoints[0][1], outPoints[0][0], outPoints[0][1], 0, false);\n init = 1;\n }\n\n var cnt = this._length - 1;\n var len = this._length;\n var i;\n\n for (i = init; i < len; i += 1) {\n newPath.setTripleAt(vertices[cnt][0], vertices[cnt][1], inPoints[cnt][0], inPoints[cnt][1], outPoints[cnt][0], outPoints[cnt][1], i, false);\n cnt -= 1;\n }\n\n return newPath;\n };\n\n ShapePath.prototype.length = function () {\n return this._length;\n };\n\n var shapePool = function () {\n function create() {\n return new ShapePath();\n }\n\n function release(shapePath) {\n var len = shapePath._length;\n var i;\n\n for (i = 0; i < len; i += 1) {\n pointPool.release(shapePath.v[i]);\n pointPool.release(shapePath.i[i]);\n pointPool.release(shapePath.o[i]);\n shapePath.v[i] = null;\n shapePath.i[i] = null;\n shapePath.o[i] = null;\n }\n\n shapePath._length = 0;\n shapePath.c = false;\n }\n\n function clone(shape) {\n var cloned = factory.newElement();\n var i;\n var len = shape._length === undefined ? shape.v.length : shape._length;\n cloned.setLength(len);\n cloned.c = shape.c;\n\n for (i = 0; i < len; i += 1) {\n cloned.setTripleAt(shape.v[i][0], shape.v[i][1], shape.o[i][0], shape.o[i][1], shape.i[i][0], shape.i[i][1], i);\n }\n\n return cloned;\n }\n\n var factory = poolFactory(4, create, release);\n factory.clone = clone;\n return factory;\n }();\n\n function ShapeCollection() {\n this._length = 0;\n this._maxLength = 4;\n this.shapes = createSizedArray(this._maxLength);\n }\n\n ShapeCollection.prototype.addShape = function (shapeData) {\n if (this._length === this._maxLength) {\n this.shapes = this.shapes.concat(createSizedArray(this._maxLength));\n this._maxLength *= 2;\n }\n\n this.shapes[this._length] = shapeData;\n this._length += 1;\n };\n\n ShapeCollection.prototype.releaseShapes = function () {\n var i;\n\n for (i = 0; i < this._length; i += 1) {\n shapePool.release(this.shapes[i]);\n }\n\n this._length = 0;\n };\n\n var shapeCollectionPool = function () {\n var ob = {\n newShapeCollection: newShapeCollection,\n release: release\n };\n var _length = 0;\n var _maxLength = 4;\n var pool = createSizedArray(_maxLength);\n\n function newShapeCollection() {\n var shapeCollection;\n\n if (_length) {\n _length -= 1;\n shapeCollection = pool[_length];\n } else {\n shapeCollection = new ShapeCollection();\n }\n\n return shapeCollection;\n }\n\n function release(shapeCollection) {\n var i;\n var len = shapeCollection._length;\n\n for (i = 0; i < len; i += 1) {\n shapePool.release(shapeCollection.shapes[i]);\n }\n\n shapeCollection._length = 0;\n\n if (_length === _maxLength) {\n pool = pooling[\"double\"](pool);\n _maxLength *= 2;\n }\n\n pool[_length] = shapeCollection;\n _length += 1;\n }\n\n return ob;\n }();\n\n var ShapePropertyFactory = function () {\n var initFrame = -999999;\n\n function interpolateShape(frameNum, previousValue, caching) {\n var iterationIndex = caching.lastIndex;\n var keyPropS;\n var keyPropE;\n var isHold;\n var j;\n var k;\n var jLen;\n var kLen;\n var perc;\n var vertexValue;\n var kf = this.keyframes;\n\n if (frameNum < kf[0].t - this.offsetTime) {\n keyPropS = kf[0].s[0];\n isHold = true;\n iterationIndex = 0;\n } else if (frameNum >= kf[kf.length - 1].t - this.offsetTime) {\n keyPropS = kf[kf.length - 1].s ? kf[kf.length - 1].s[0] : kf[kf.length - 2].e[0];\n /* if(kf[kf.length - 1].s){\r\n keyPropS = kf[kf.length - 1].s[0];\r\n }else{\r\n keyPropS = kf[kf.length - 2].e[0];\r\n } */\n\n isHold = true;\n } else {\n var i = iterationIndex;\n var len = kf.length - 1;\n var flag = true;\n var keyData;\n var nextKeyData;\n var keyframeMetadata;\n\n while (flag) {\n keyData = kf[i];\n nextKeyData = kf[i + 1];\n\n if (nextKeyData.t - this.offsetTime > frameNum) {\n break;\n }\n\n if (i < len - 1) {\n i += 1;\n } else {\n flag = false;\n }\n }\n\n keyframeMetadata = this.keyframesMetadata[i] || {};\n isHold = keyData.h === 1;\n iterationIndex = i;\n\n if (!isHold) {\n if (frameNum >= nextKeyData.t - this.offsetTime) {\n perc = 1;\n } else if (frameNum < keyData.t - this.offsetTime) {\n perc = 0;\n } else {\n var fnc;\n\n if (keyframeMetadata.__fnct) {\n fnc = keyframeMetadata.__fnct;\n } else {\n fnc = BezierFactory.getBezierEasing(keyData.o.x, keyData.o.y, keyData.i.x, keyData.i.y).get;\n keyframeMetadata.__fnct = fnc;\n }\n\n perc = fnc((frameNum - (keyData.t - this.offsetTime)) / (nextKeyData.t - this.offsetTime - (keyData.t - this.offsetTime)));\n }\n\n keyPropE = nextKeyData.s ? nextKeyData.s[0] : keyData.e[0];\n }\n\n keyPropS = keyData.s[0];\n }\n\n jLen = previousValue._length;\n kLen = keyPropS.i[0].length;\n caching.lastIndex = iterationIndex;\n\n for (j = 0; j < jLen; j += 1) {\n for (k = 0; k < kLen; k += 1) {\n vertexValue = isHold ? keyPropS.i[j][k] : keyPropS.i[j][k] + (keyPropE.i[j][k] - keyPropS.i[j][k]) * perc;\n previousValue.i[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.o[j][k] : keyPropS.o[j][k] + (keyPropE.o[j][k] - keyPropS.o[j][k]) * perc;\n previousValue.o[j][k] = vertexValue;\n vertexValue = isHold ? keyPropS.v[j][k] : keyPropS.v[j][k] + (keyPropE.v[j][k] - keyPropS.v[j][k]) * perc;\n previousValue.v[j][k] = vertexValue;\n }\n }\n }\n\n function interpolateShapeCurrentTime() {\n var frameNum = this.comp.renderedFrame - this.offsetTime;\n var initTime = this.keyframes[0].t - this.offsetTime;\n var endTime = this.keyframes[this.keyframes.length - 1].t - this.offsetTime;\n var lastFrame = this._caching.lastFrame;\n\n if (!(lastFrame !== initFrame && (lastFrame < initTime && frameNum < initTime || lastFrame > endTime && frameNum > endTime))) {\n /// /\n this._caching.lastIndex = lastFrame < frameNum ? this._caching.lastIndex : 0;\n this.interpolateShape(frameNum, this.pv, this._caching); /// /\n }\n\n this._caching.lastFrame = frameNum;\n return this.pv;\n }\n\n function resetShape() {\n this.paths = this.localShapeCollection;\n }\n\n function shapesEqual(shape1, shape2) {\n if (shape1._length !== shape2._length || shape1.c !== shape2.c) {\n return false;\n }\n\n var i;\n var len = shape1._length;\n\n for (i = 0; i < len; i += 1) {\n if (shape1.v[i][0] !== shape2.v[i][0] || shape1.v[i][1] !== shape2.v[i][1] || shape1.o[i][0] !== shape2.o[i][0] || shape1.o[i][1] !== shape2.o[i][1] || shape1.i[i][0] !== shape2.i[i][0] || shape1.i[i][1] !== shape2.i[i][1]) {\n return false;\n }\n }\n\n return true;\n }\n\n function setVValue(newPath) {\n if (!shapesEqual(this.v, newPath)) {\n this.v = shapePool.clone(newPath);\n this.localShapeCollection.releaseShapes();\n this.localShapeCollection.addShape(this.v);\n this._mdf = true;\n this.paths = this.localShapeCollection;\n }\n }\n\n function processEffectsSequence() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (!this.effectsSequence.length) {\n this._mdf = false;\n return;\n }\n\n if (this.lock) {\n this.setVValue(this.pv);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var finalValue;\n\n if (this.kf) {\n finalValue = this.pv;\n } else if (this.data.ks) {\n finalValue = this.data.ks.k;\n } else {\n finalValue = this.data.pt.k;\n }\n\n var i;\n var len = this.effectsSequence.length;\n\n for (i = 0; i < len; i += 1) {\n finalValue = this.effectsSequence[i](finalValue);\n }\n\n this.setVValue(finalValue);\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n }\n\n function ShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.container = elem;\n this.elem = elem;\n this.data = data;\n this.k = false;\n this.kf = false;\n this._mdf = false;\n var pathData = type === 3 ? data.pt.k : data.ks.k;\n this.v = shapePool.clone(pathData);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.reset = resetShape;\n this.effectsSequence = [];\n }\n\n function addEffect(effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.container.addDynamicProperty(this);\n }\n\n ShapeProperty.prototype.interpolateShape = interpolateShape;\n ShapeProperty.prototype.getValue = processEffectsSequence;\n ShapeProperty.prototype.setVValue = setVValue;\n ShapeProperty.prototype.addEffect = addEffect;\n\n function KeyframedShapeProperty(elem, data, type) {\n this.propType = 'shape';\n this.comp = elem.comp;\n this.elem = elem;\n this.container = elem;\n this.offsetTime = elem.data.st;\n this.keyframes = type === 3 ? data.pt.k : data.ks.k;\n this.keyframesMetadata = [];\n this.k = true;\n this.kf = true;\n var len = this.keyframes[0].s[0].i.length;\n this.v = shapePool.newElement();\n this.v.setPathData(this.keyframes[0].s[0].c, len);\n this.pv = shapePool.clone(this.v);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.paths.addShape(this.v);\n this.lastFrame = initFrame;\n this.reset = resetShape;\n this._caching = {\n lastFrame: initFrame,\n lastIndex: 0\n };\n this.effectsSequence = [interpolateShapeCurrentTime.bind(this)];\n }\n\n KeyframedShapeProperty.prototype.getValue = processEffectsSequence;\n KeyframedShapeProperty.prototype.interpolateShape = interpolateShape;\n KeyframedShapeProperty.prototype.setVValue = setVValue;\n KeyframedShapeProperty.prototype.addEffect = addEffect;\n\n var EllShapeProperty = function () {\n var cPoint = roundCorner;\n\n function EllShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 4);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.paths = this.localShapeCollection;\n this.localShapeCollection.addShape(this.v);\n this.d = data.d;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertEllToPath();\n }\n }\n\n EllShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertEllToPath();\n }\n },\n convertEllToPath: function convertEllToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var s0 = this.s.v[0] / 2;\n var s1 = this.s.v[1] / 2;\n\n var _cw = this.d !== 3;\n\n var _v = this.v;\n _v.v[0][0] = p0;\n _v.v[0][1] = p1 - s1;\n _v.v[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.v[1][1] = p1;\n _v.v[2][0] = p0;\n _v.v[2][1] = p1 + s1;\n _v.v[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.v[3][1] = p1;\n _v.i[0][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.i[0][1] = p1 - s1;\n _v.i[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.i[1][1] = p1 - s1 * cPoint;\n _v.i[2][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.i[2][1] = p1 + s1;\n _v.i[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.i[3][1] = p1 + s1 * cPoint;\n _v.o[0][0] = _cw ? p0 + s0 * cPoint : p0 - s0 * cPoint;\n _v.o[0][1] = p1 - s1;\n _v.o[1][0] = _cw ? p0 + s0 : p0 - s0;\n _v.o[1][1] = p1 + s1 * cPoint;\n _v.o[2][0] = _cw ? p0 - s0 * cPoint : p0 + s0 * cPoint;\n _v.o[2][1] = p1 + s1;\n _v.o[3][0] = _cw ? p0 - s0 : p0 + s0;\n _v.o[3][1] = p1 - s1 * cPoint;\n }\n };\n extendPrototype([DynamicPropertyContainer], EllShapePropertyFactory);\n return EllShapePropertyFactory;\n }();\n\n var StarShapeProperty = function () {\n function StarShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.setPathData(true, 0);\n this.elem = elem;\n this.comp = elem.comp;\n this.data = data;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n\n if (data.sy === 1) {\n this.ir = PropertyFactory.getProp(elem, data.ir, 0, 0, this);\n this.is = PropertyFactory.getProp(elem, data.is, 0, 0.01, this);\n this.convertToPath = this.convertStarToPath;\n } else {\n this.convertToPath = this.convertPolygonToPath;\n }\n\n this.pt = PropertyFactory.getProp(elem, data.pt, 0, 0, this);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, degToRads, this);\n this.or = PropertyFactory.getProp(elem, data.or, 0, 0, this);\n this.os = PropertyFactory.getProp(elem, data.os, 0, 0.01, this);\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertToPath();\n }\n }\n\n StarShapePropertyFactory.prototype = {\n reset: resetShape,\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertToPath();\n }\n },\n convertStarToPath: function convertStarToPath() {\n var numPts = Math.floor(this.pt.v) * 2;\n var angle = Math.PI * 2 / numPts;\n /* this.v.v.length = numPts;\r\n this.v.i.length = numPts;\r\n this.v.o.length = numPts; */\n\n var longFlag = true;\n var longRad = this.or.v;\n var shortRad = this.ir.v;\n var longRound = this.os.v;\n var shortRound = this.is.v;\n var longPerimSegment = 2 * Math.PI * longRad / (numPts * 2);\n var shortPerimSegment = 2 * Math.PI * shortRad / (numPts * 2);\n var i;\n var rad;\n var roundness;\n var perimSegment;\n var currentAng = -Math.PI / 2;\n currentAng += this.r.v;\n var dir = this.data.d === 3 ? -1 : 1;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n rad = longFlag ? longRad : shortRad;\n roundness = longFlag ? longRound : shortRound;\n perimSegment = longFlag ? longPerimSegment : shortPerimSegment;\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n /* this.v.v[i] = [x,y];\r\n this.v.i[i] = [x+ox*perimSegment*roundness*dir,y+oy*perimSegment*roundness*dir];\r\n this.v.o[i] = [x-ox*perimSegment*roundness*dir,y-oy*perimSegment*roundness*dir];\r\n this.v._length = numPts; */\n\n longFlag = !longFlag;\n currentAng += angle * dir;\n }\n },\n convertPolygonToPath: function convertPolygonToPath() {\n var numPts = Math.floor(this.pt.v);\n var angle = Math.PI * 2 / numPts;\n var rad = this.or.v;\n var roundness = this.os.v;\n var perimSegment = 2 * Math.PI * rad / (numPts * 4);\n var i;\n var currentAng = -Math.PI * 0.5;\n var dir = this.data.d === 3 ? -1 : 1;\n currentAng += this.r.v;\n this.v._length = 0;\n\n for (i = 0; i < numPts; i += 1) {\n var x = rad * Math.cos(currentAng);\n var y = rad * Math.sin(currentAng);\n var ox = x === 0 && y === 0 ? 0 : y / Math.sqrt(x * x + y * y);\n var oy = x === 0 && y === 0 ? 0 : -x / Math.sqrt(x * x + y * y);\n x += +this.p.v[0];\n y += +this.p.v[1];\n this.v.setTripleAt(x, y, x - ox * perimSegment * roundness * dir, y - oy * perimSegment * roundness * dir, x + ox * perimSegment * roundness * dir, y + oy * perimSegment * roundness * dir, i, true);\n currentAng += angle * dir;\n }\n\n this.paths.length = 0;\n this.paths[0] = this.v;\n }\n };\n extendPrototype([DynamicPropertyContainer], StarShapePropertyFactory);\n return StarShapePropertyFactory;\n }();\n\n var RectShapeProperty = function () {\n function RectShapePropertyFactory(elem, data) {\n this.v = shapePool.newElement();\n this.v.c = true;\n this.localShapeCollection = shapeCollectionPool.newShapeCollection();\n this.localShapeCollection.addShape(this.v);\n this.paths = this.localShapeCollection;\n this.elem = elem;\n this.comp = elem.comp;\n this.frameId = -1;\n this.d = data.d;\n this.initDynamicPropertyContainer(elem);\n this.p = PropertyFactory.getProp(elem, data.p, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, 0, this);\n this.r = PropertyFactory.getProp(elem, data.r, 0, 0, this);\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.k = false;\n this.convertRectToPath();\n }\n }\n\n RectShapePropertyFactory.prototype = {\n convertRectToPath: function convertRectToPath() {\n var p0 = this.p.v[0];\n var p1 = this.p.v[1];\n var v0 = this.s.v[0] / 2;\n var v1 = this.s.v[1] / 2;\n var round = bmMin(v0, v1, this.r.v);\n var cPoint = round * (1 - roundCorner);\n this.v._length = 0;\n\n if (this.d === 2 || this.d === 1) {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, 0, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, p0 + v0, p1 + v1 - round, 1, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, 2, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0 + round, p1 + v1, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, 4, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1 + round, 5, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, 6, true);\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, p0 + v0 - round, p1 - v1, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0 + cPoint, p1 + v1, p0 - v0, p1 + v1, 2);\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0, p1 - v1 + cPoint, p0 - v0, p1 - v1, 3);\n }\n } else {\n this.v.setTripleAt(p0 + v0, p1 - v1 + round, p0 + v0, p1 - v1 + cPoint, p0 + v0, p1 - v1 + round, 0, true);\n\n if (round !== 0) {\n this.v.setTripleAt(p0 + v0 - round, p1 - v1, p0 + v0 - round, p1 - v1, p0 + v0 - cPoint, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0 + round, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0 + round, p1 - v1, 2, true);\n this.v.setTripleAt(p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + round, p0 - v0, p1 - v1 + cPoint, 3, true);\n this.v.setTripleAt(p0 - v0, p1 + v1 - round, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1 - round, 4, true);\n this.v.setTripleAt(p0 - v0 + round, p1 + v1, p0 - v0 + round, p1 + v1, p0 - v0 + cPoint, p1 + v1, 5, true);\n this.v.setTripleAt(p0 + v0 - round, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0 - round, p1 + v1, 6, true);\n this.v.setTripleAt(p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - round, p0 + v0, p1 + v1 - cPoint, 7, true);\n } else {\n this.v.setTripleAt(p0 - v0, p1 - v1, p0 - v0 + cPoint, p1 - v1, p0 - v0, p1 - v1, 1, true);\n this.v.setTripleAt(p0 - v0, p1 + v1, p0 - v0, p1 + v1 - cPoint, p0 - v0, p1 + v1, 2, true);\n this.v.setTripleAt(p0 + v0, p1 + v1, p0 + v0 - cPoint, p1 + v1, p0 + v0, p1 + v1, 3, true);\n }\n }\n },\n getValue: function getValue() {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n\n if (this._mdf) {\n this.convertRectToPath();\n }\n },\n reset: resetShape\n };\n extendPrototype([DynamicPropertyContainer], RectShapePropertyFactory);\n return RectShapePropertyFactory;\n }();\n\n function getShapeProp(elem, data, type) {\n var prop;\n\n if (type === 3 || type === 4) {\n var dataProp = type === 3 ? data.pt : data.ks;\n var keys = dataProp.k;\n\n if (keys.length) {\n prop = new KeyframedShapeProperty(elem, data, type);\n } else {\n prop = new ShapeProperty(elem, data, type);\n }\n } else if (type === 5) {\n prop = new RectShapeProperty(elem, data);\n } else if (type === 6) {\n prop = new EllShapeProperty(elem, data);\n } else if (type === 7) {\n prop = new StarShapeProperty(elem, data);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n }\n\n function getConstructorFunction() {\n return ShapeProperty;\n }\n\n function getKeyframedConstructorFunction() {\n return KeyframedShapeProperty;\n }\n\n var ob = {};\n ob.getShapeProp = getShapeProp;\n ob.getConstructorFunction = getConstructorFunction;\n ob.getKeyframedConstructorFunction = getKeyframedConstructorFunction;\n return ob;\n }();\n\n /*!\r\n Transformation Matrix v2.0\r\n (c) Epistemex 2014-2015\r\n www.epistemex.com\r\n By Ken Fyrstenberg\r\n Contributions by leeoniya.\r\n License: MIT, header required.\r\n */\n\n /**\r\n * 2D transformation matrix object initialized with identity matrix.\r\n *\r\n * The matrix can synchronize a canvas context by supplying the context\r\n * as an argument, or later apply current absolute transform to an\r\n * existing context.\r\n *\r\n * All values are handled as floating point values.\r\n *\r\n * @param {CanvasRenderingContext2D} [context] - Optional context to sync with Matrix\r\n * @prop {number} a - scale x\r\n * @prop {number} b - shear y\r\n * @prop {number} c - shear x\r\n * @prop {number} d - scale y\r\n * @prop {number} e - translate x\r\n * @prop {number} f - translate y\r\n * @prop {CanvasRenderingContext2D|null} [context=null] - set or get current canvas context\r\n * @constructor\r\n */\n\n var Matrix = function () {\n var _cos = Math.cos;\n var _sin = Math.sin;\n var _tan = Math.tan;\n var _rnd = Math.round;\n\n function reset() {\n this.props[0] = 1;\n this.props[1] = 0;\n this.props[2] = 0;\n this.props[3] = 0;\n this.props[4] = 0;\n this.props[5] = 1;\n this.props[6] = 0;\n this.props[7] = 0;\n this.props[8] = 0;\n this.props[9] = 0;\n this.props[10] = 1;\n this.props[11] = 0;\n this.props[12] = 0;\n this.props[13] = 0;\n this.props[14] = 0;\n this.props[15] = 1;\n return this;\n }\n\n function rotate(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function rotateX(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(1, 0, 0, 0, 0, mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateY(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, 0, mSin, 0, 0, 1, 0, 0, -mSin, 0, mCos, 0, 0, 0, 0, 1);\n }\n\n function rotateZ(angle) {\n if (angle === 0) {\n return this;\n }\n\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1);\n }\n\n function shear(sx, sy) {\n return this._t(1, sy, sx, 1, 0, 0);\n }\n\n function skew(ax, ay) {\n return this.shear(_tan(ax), _tan(ay));\n }\n\n function skewFromAxis(ax, angle) {\n var mCos = _cos(angle);\n\n var mSin = _sin(angle);\n\n return this._t(mCos, mSin, 0, 0, -mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(1, 0, 0, 0, _tan(ax), 1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1)._t(mCos, -mSin, 0, 0, mSin, mCos, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1); // return this._t(mCos, mSin, -mSin, mCos, 0, 0)._t(1, 0, _tan(ax), 1, 0, 0)._t(mCos, -mSin, mSin, mCos, 0, 0);\n }\n\n function scale(sx, sy, sz) {\n if (!sz && sz !== 0) {\n sz = 1;\n }\n\n if (sx === 1 && sy === 1 && sz === 1) {\n return this;\n }\n\n return this._t(sx, 0, 0, 0, 0, sy, 0, 0, 0, 0, sz, 0, 0, 0, 0, 1);\n }\n\n function setTransform(a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p) {\n this.props[0] = a;\n this.props[1] = b;\n this.props[2] = c;\n this.props[3] = d;\n this.props[4] = e;\n this.props[5] = f;\n this.props[6] = g;\n this.props[7] = h;\n this.props[8] = i;\n this.props[9] = j;\n this.props[10] = k;\n this.props[11] = l;\n this.props[12] = m;\n this.props[13] = n;\n this.props[14] = o;\n this.props[15] = p;\n return this;\n }\n\n function translate(tx, ty, tz) {\n tz = tz || 0;\n\n if (tx !== 0 || ty !== 0 || tz !== 0) {\n return this._t(1, 0, 0, 0, 0, 1, 0, 0, 0, 0, 1, 0, tx, ty, tz, 1);\n }\n\n return this;\n }\n\n function transform(a2, b2, c2, d2, e2, f2, g2, h2, i2, j2, k2, l2, m2, n2, o2, p2) {\n var _p = this.props;\n\n if (a2 === 1 && b2 === 0 && c2 === 0 && d2 === 0 && e2 === 0 && f2 === 1 && g2 === 0 && h2 === 0 && i2 === 0 && j2 === 0 && k2 === 1 && l2 === 0) {\n // NOTE: commenting this condition because TurboFan deoptimizes code when present\n // if(m2 !== 0 || n2 !== 0 || o2 !== 0){\n _p[12] = _p[12] * a2 + _p[15] * m2;\n _p[13] = _p[13] * f2 + _p[15] * n2;\n _p[14] = _p[14] * k2 + _p[15] * o2;\n _p[15] *= p2; // }\n\n this._identityCalculated = false;\n return this;\n }\n\n var a1 = _p[0];\n var b1 = _p[1];\n var c1 = _p[2];\n var d1 = _p[3];\n var e1 = _p[4];\n var f1 = _p[5];\n var g1 = _p[6];\n var h1 = _p[7];\n var i1 = _p[8];\n var j1 = _p[9];\n var k1 = _p[10];\n var l1 = _p[11];\n var m1 = _p[12];\n var n1 = _p[13];\n var o1 = _p[14];\n var p1 = _p[15];\n /* matrix order (canvas compatible):\r\n * ace\r\n * bdf\r\n * 001\r\n */\n\n _p[0] = a1 * a2 + b1 * e2 + c1 * i2 + d1 * m2;\n _p[1] = a1 * b2 + b1 * f2 + c1 * j2 + d1 * n2;\n _p[2] = a1 * c2 + b1 * g2 + c1 * k2 + d1 * o2;\n _p[3] = a1 * d2 + b1 * h2 + c1 * l2 + d1 * p2;\n _p[4] = e1 * a2 + f1 * e2 + g1 * i2 + h1 * m2;\n _p[5] = e1 * b2 + f1 * f2 + g1 * j2 + h1 * n2;\n _p[6] = e1 * c2 + f1 * g2 + g1 * k2 + h1 * o2;\n _p[7] = e1 * d2 + f1 * h2 + g1 * l2 + h1 * p2;\n _p[8] = i1 * a2 + j1 * e2 + k1 * i2 + l1 * m2;\n _p[9] = i1 * b2 + j1 * f2 + k1 * j2 + l1 * n2;\n _p[10] = i1 * c2 + j1 * g2 + k1 * k2 + l1 * o2;\n _p[11] = i1 * d2 + j1 * h2 + k1 * l2 + l1 * p2;\n _p[12] = m1 * a2 + n1 * e2 + o1 * i2 + p1 * m2;\n _p[13] = m1 * b2 + n1 * f2 + o1 * j2 + p1 * n2;\n _p[14] = m1 * c2 + n1 * g2 + o1 * k2 + p1 * o2;\n _p[15] = m1 * d2 + n1 * h2 + o1 * l2 + p1 * p2;\n this._identityCalculated = false;\n return this;\n }\n\n function multiply(matrix) {\n var matrixProps = matrix.props;\n return this.transform(matrixProps[0], matrixProps[1], matrixProps[2], matrixProps[3], matrixProps[4], matrixProps[5], matrixProps[6], matrixProps[7], matrixProps[8], matrixProps[9], matrixProps[10], matrixProps[11], matrixProps[12], matrixProps[13], matrixProps[14], matrixProps[15]);\n }\n\n function isIdentity() {\n if (!this._identityCalculated) {\n this._identity = !(this.props[0] !== 1 || this.props[1] !== 0 || this.props[2] !== 0 || this.props[3] !== 0 || this.props[4] !== 0 || this.props[5] !== 1 || this.props[6] !== 0 || this.props[7] !== 0 || this.props[8] !== 0 || this.props[9] !== 0 || this.props[10] !== 1 || this.props[11] !== 0 || this.props[12] !== 0 || this.props[13] !== 0 || this.props[14] !== 0 || this.props[15] !== 1);\n this._identityCalculated = true;\n }\n\n return this._identity;\n }\n\n function equals(matr) {\n var i = 0;\n\n while (i < 16) {\n if (matr.props[i] !== this.props[i]) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n }\n\n function clone(matr) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n matr.props[i] = this.props[i];\n }\n\n return matr;\n }\n\n function cloneFromProps(props) {\n var i;\n\n for (i = 0; i < 16; i += 1) {\n this.props[i] = props[i];\n }\n }\n\n function applyToPoint(x, y, z) {\n return {\n x: x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12],\n y: x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13],\n z: x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]\n };\n /* return {\r\n x: x * me.a + y * me.c + me.e,\r\n y: x * me.b + y * me.d + me.f\r\n }; */\n }\n\n function applyToX(x, y, z) {\n return x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12];\n }\n\n function applyToY(x, y, z) {\n return x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13];\n }\n\n function applyToZ(x, y, z) {\n return x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14];\n }\n\n function getInverseMatrix() {\n var determinant = this.props[0] * this.props[5] - this.props[1] * this.props[4];\n var a = this.props[5] / determinant;\n var b = -this.props[1] / determinant;\n var c = -this.props[4] / determinant;\n var d = this.props[0] / determinant;\n var e = (this.props[4] * this.props[13] - this.props[5] * this.props[12]) / determinant;\n var f = -(this.props[0] * this.props[13] - this.props[1] * this.props[12]) / determinant;\n var inverseMatrix = new Matrix();\n inverseMatrix.props[0] = a;\n inverseMatrix.props[1] = b;\n inverseMatrix.props[4] = c;\n inverseMatrix.props[5] = d;\n inverseMatrix.props[12] = e;\n inverseMatrix.props[13] = f;\n return inverseMatrix;\n }\n\n function inversePoint(pt) {\n var inverseMatrix = this.getInverseMatrix();\n return inverseMatrix.applyToPointArray(pt[0], pt[1], pt[2] || 0);\n }\n\n function inversePoints(pts) {\n var i;\n var len = pts.length;\n var retPts = [];\n\n for (i = 0; i < len; i += 1) {\n retPts[i] = inversePoint(pts[i]);\n }\n\n return retPts;\n }\n\n function applyToTriplePoints(pt1, pt2, pt3) {\n var arr = createTypedArray('float32', 6);\n\n if (this.isIdentity()) {\n arr[0] = pt1[0];\n arr[1] = pt1[1];\n arr[2] = pt2[0];\n arr[3] = pt2[1];\n arr[4] = pt3[0];\n arr[5] = pt3[1];\n } else {\n var p0 = this.props[0];\n var p1 = this.props[1];\n var p4 = this.props[4];\n var p5 = this.props[5];\n var p12 = this.props[12];\n var p13 = this.props[13];\n arr[0] = pt1[0] * p0 + pt1[1] * p4 + p12;\n arr[1] = pt1[0] * p1 + pt1[1] * p5 + p13;\n arr[2] = pt2[0] * p0 + pt2[1] * p4 + p12;\n arr[3] = pt2[0] * p1 + pt2[1] * p5 + p13;\n arr[4] = pt3[0] * p0 + pt3[1] * p4 + p12;\n arr[5] = pt3[0] * p1 + pt3[1] * p5 + p13;\n }\n\n return arr;\n }\n\n function applyToPointArray(x, y, z) {\n var arr;\n\n if (this.isIdentity()) {\n arr = [x, y, z];\n } else {\n arr = [x * this.props[0] + y * this.props[4] + z * this.props[8] + this.props[12], x * this.props[1] + y * this.props[5] + z * this.props[9] + this.props[13], x * this.props[2] + y * this.props[6] + z * this.props[10] + this.props[14]];\n }\n\n return arr;\n }\n\n function applyToPointStringified(x, y) {\n if (this.isIdentity()) {\n return x + ',' + y;\n }\n\n var _p = this.props;\n return Math.round((x * _p[0] + y * _p[4] + _p[12]) * 100) / 100 + ',' + Math.round((x * _p[1] + y * _p[5] + _p[13]) * 100) / 100;\n }\n\n function toCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var i = 0;\n var props = this.props;\n var cssValue = 'matrix3d(';\n var v = 10000;\n\n while (i < 16) {\n cssValue += _rnd(props[i] * v) / v;\n cssValue += i === 15 ? ')' : ',';\n i += 1;\n }\n\n return cssValue;\n }\n\n function roundMatrixProperty(val) {\n var v = 10000;\n\n if (val < 0.000001 && val > 0 || val > -0.000001 && val < 0) {\n return _rnd(val * v) / v;\n }\n\n return val;\n }\n\n function to2dCSS() {\n // Doesn't make much sense to add this optimization. If it is an identity matrix, it's very likely this will get called only once since it won't be keyframed.\n\n /* if(this.isIdentity()) {\r\n return '';\r\n } */\n var props = this.props;\n\n var _a = roundMatrixProperty(props[0]);\n\n var _b = roundMatrixProperty(props[1]);\n\n var _c = roundMatrixProperty(props[4]);\n\n var _d = roundMatrixProperty(props[5]);\n\n var _e = roundMatrixProperty(props[12]);\n\n var _f = roundMatrixProperty(props[13]);\n\n return 'matrix(' + _a + ',' + _b + ',' + _c + ',' + _d + ',' + _e + ',' + _f + ')';\n }\n\n return function () {\n this.reset = reset;\n this.rotate = rotate;\n this.rotateX = rotateX;\n this.rotateY = rotateY;\n this.rotateZ = rotateZ;\n this.skew = skew;\n this.skewFromAxis = skewFromAxis;\n this.shear = shear;\n this.scale = scale;\n this.setTransform = setTransform;\n this.translate = translate;\n this.transform = transform;\n this.multiply = multiply;\n this.applyToPoint = applyToPoint;\n this.applyToX = applyToX;\n this.applyToY = applyToY;\n this.applyToZ = applyToZ;\n this.applyToPointArray = applyToPointArray;\n this.applyToTriplePoints = applyToTriplePoints;\n this.applyToPointStringified = applyToPointStringified;\n this.toCSS = toCSS;\n this.to2dCSS = to2dCSS;\n this.clone = clone;\n this.cloneFromProps = cloneFromProps;\n this.equals = equals;\n this.inversePoints = inversePoints;\n this.inversePoint = inversePoint;\n this.getInverseMatrix = getInverseMatrix;\n this._t = this.transform;\n this.isIdentity = isIdentity;\n this._identity = true;\n this._identityCalculated = false;\n this.props = createTypedArray('float32', 16);\n this.reset();\n };\n }();\n\n function _typeof$3(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$3 = function _typeof(obj) { return typeof obj; }; } else { _typeof$3 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$3(obj); }\n var lottie = {};\n var standalone = '__[STANDALONE]__';\n var animationData = '__[ANIMATIONDATA]__';\n var renderer = '';\n\n function setLocation(href) {\n setLocationHref(href);\n }\n\n function searchAnimations() {\n if (standalone === true) {\n animationManager.searchAnimations(animationData, standalone, renderer);\n } else {\n animationManager.searchAnimations();\n }\n }\n\n function setSubframeRendering(flag) {\n setSubframeEnabled(flag);\n }\n\n function setPrefix(prefix) {\n setIdPrefix(prefix);\n }\n\n function loadAnimation(params) {\n if (standalone === true) {\n params.animationData = JSON.parse(animationData);\n }\n\n return animationManager.loadAnimation(params);\n }\n\n function setQuality(value) {\n if (typeof value === 'string') {\n switch (value) {\n case 'high':\n setDefaultCurveSegments(200);\n break;\n\n default:\n case 'medium':\n setDefaultCurveSegments(50);\n break;\n\n case 'low':\n setDefaultCurveSegments(10);\n break;\n }\n } else if (!isNaN(value) && value > 1) {\n setDefaultCurveSegments(value);\n }\n\n if (getDefaultCurveSegments() >= 50) {\n roundValues(false);\n } else {\n roundValues(true);\n }\n }\n\n function inBrowser() {\n return typeof navigator !== 'undefined';\n }\n\n function installPlugin(type, plugin) {\n if (type === 'expressions') {\n setExpressionsPlugin(plugin);\n }\n }\n\n function getFactory(name) {\n switch (name) {\n case 'propertyFactory':\n return PropertyFactory;\n\n case 'shapePropertyFactory':\n return ShapePropertyFactory;\n\n case 'matrix':\n return Matrix;\n\n default:\n return null;\n }\n }\n\n lottie.play = animationManager.play;\n lottie.pause = animationManager.pause;\n lottie.setLocationHref = setLocation;\n lottie.togglePause = animationManager.togglePause;\n lottie.setSpeed = animationManager.setSpeed;\n lottie.setDirection = animationManager.setDirection;\n lottie.stop = animationManager.stop;\n lottie.searchAnimations = searchAnimations;\n lottie.registerAnimation = animationManager.registerAnimation;\n lottie.loadAnimation = loadAnimation;\n lottie.setSubframeRendering = setSubframeRendering;\n lottie.resize = animationManager.resize; // lottie.start = start;\n\n lottie.goToAndStop = animationManager.goToAndStop;\n lottie.destroy = animationManager.destroy;\n lottie.setQuality = setQuality;\n lottie.inBrowser = inBrowser;\n lottie.installPlugin = installPlugin;\n lottie.freeze = animationManager.freeze;\n lottie.unfreeze = animationManager.unfreeze;\n lottie.setVolume = animationManager.setVolume;\n lottie.mute = animationManager.mute;\n lottie.unmute = animationManager.unmute;\n lottie.getRegisteredAnimations = animationManager.getRegisteredAnimations;\n lottie.useWebWorker = setWebWorker;\n lottie.setIDPrefix = setPrefix;\n lottie.__getFactory = getFactory;\n lottie.version = '5.12.2';\n\n function checkReady() {\n if (document.readyState === 'complete') {\n clearInterval(readyStateCheckInterval);\n searchAnimations();\n }\n }\n\n function getQueryVariable(variable) {\n var vars = queryString.split('&');\n\n for (var i = 0; i < vars.length; i += 1) {\n var pair = vars[i].split('=');\n\n if (decodeURIComponent(pair[0]) == variable) {\n // eslint-disable-line eqeqeq\n return decodeURIComponent(pair[1]);\n }\n }\n\n return null;\n }\n\n var queryString = '';\n\n if (standalone) {\n var scripts = document.getElementsByTagName('script');\n var index = scripts.length - 1;\n var myScript = scripts[index] || {\n src: ''\n };\n queryString = myScript.src ? myScript.src.replace(/^[^\\?]+\\??/, '') : ''; // eslint-disable-line no-useless-escape\n\n renderer = getQueryVariable('renderer');\n }\n\n var readyStateCheckInterval = setInterval(checkReady, 100); // this adds bodymovin to the window object for backwards compatibility\n\n try {\n if (!((typeof exports === \"undefined\" ? \"undefined\" : _typeof$3(exports)) === 'object' && typeof module !== 'undefined') && !(typeof define === 'function' && define.amd) // eslint-disable-line no-undef\n ) {\n window.bodymovin = lottie;\n }\n } catch (err) {//\n }\n\n var ShapeModifiers = function () {\n var ob = {};\n var modifiers = {};\n ob.registerModifier = registerModifier;\n ob.getModifier = getModifier;\n\n function registerModifier(nm, factory) {\n if (!modifiers[nm]) {\n modifiers[nm] = factory;\n }\n }\n\n function getModifier(nm, elem, data) {\n return new modifiers[nm](elem, data);\n }\n\n return ob;\n }();\n\n function ShapeModifier() {}\n\n ShapeModifier.prototype.initModifierProperties = function () {};\n\n ShapeModifier.prototype.addShapeToModifier = function () {};\n\n ShapeModifier.prototype.addShape = function (data) {\n if (!this.closed) {\n // Adding shape to dynamic properties. It covers the case where a shape has no effects applied, to reset it's _mdf state on every tick.\n data.sh.container.addDynamicProperty(data.sh);\n var shapeData = {\n shape: data.sh,\n data: data,\n localShapeCollection: shapeCollectionPool.newShapeCollection()\n };\n this.shapes.push(shapeData);\n this.addShapeToModifier(shapeData);\n\n if (this._isAnimated) {\n data.setAsAnimated();\n }\n }\n };\n\n ShapeModifier.prototype.init = function (elem, data) {\n this.shapes = [];\n this.elem = elem;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, data);\n this.frameId = initialDefaultFrame;\n this.closed = false;\n this.k = false;\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n ShapeModifier.prototype.processKeys = function () {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n extendPrototype([DynamicPropertyContainer], ShapeModifier);\n\n function TrimModifier() {}\n\n extendPrototype([ShapeModifier], TrimModifier);\n\n TrimModifier.prototype.initModifierProperties = function (elem, data) {\n this.s = PropertyFactory.getProp(elem, data.s, 0, 0.01, this);\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0.01, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0, this);\n this.sValue = 0;\n this.eValue = 0;\n this.getValue = this.processKeys;\n this.m = data.m;\n this._isAnimated = !!this.s.effectsSequence.length || !!this.e.effectsSequence.length || !!this.o.effectsSequence.length;\n };\n\n TrimModifier.prototype.addShapeToModifier = function (shapeData) {\n shapeData.pathsData = [];\n };\n\n TrimModifier.prototype.calculateShapeEdges = function (s, e, shapeLength, addedLength, totalModifierLength) {\n var segments = [];\n\n if (e <= 1) {\n segments.push({\n s: s,\n e: e\n });\n } else if (s >= 1) {\n segments.push({\n s: s - 1,\n e: e - 1\n });\n } else {\n segments.push({\n s: s,\n e: 1\n });\n segments.push({\n s: 0,\n e: e - 1\n });\n }\n\n var shapeSegments = [];\n var i;\n var len = segments.length;\n var segmentOb;\n\n for (i = 0; i < len; i += 1) {\n segmentOb = segments[i];\n\n if (!(segmentOb.e * totalModifierLength < addedLength || segmentOb.s * totalModifierLength > addedLength + shapeLength)) {\n var shapeS;\n var shapeE;\n\n if (segmentOb.s * totalModifierLength <= addedLength) {\n shapeS = 0;\n } else {\n shapeS = (segmentOb.s * totalModifierLength - addedLength) / shapeLength;\n }\n\n if (segmentOb.e * totalModifierLength >= addedLength + shapeLength) {\n shapeE = 1;\n } else {\n shapeE = (segmentOb.e * totalModifierLength - addedLength) / shapeLength;\n }\n\n shapeSegments.push([shapeS, shapeE]);\n }\n }\n\n if (!shapeSegments.length) {\n shapeSegments.push([0, 0]);\n }\n\n return shapeSegments;\n };\n\n TrimModifier.prototype.releasePathsData = function (pathsData) {\n var i;\n var len = pathsData.length;\n\n for (i = 0; i < len; i += 1) {\n segmentsLengthPool.release(pathsData[i]);\n }\n\n pathsData.length = 0;\n return pathsData;\n };\n\n TrimModifier.prototype.processShapes = function (_isFirstFrame) {\n var s;\n var e;\n\n if (this._mdf || _isFirstFrame) {\n var o = this.o.v % 360 / 360;\n\n if (o < 0) {\n o += 1;\n }\n\n if (this.s.v > 1) {\n s = 1 + o;\n } else if (this.s.v < 0) {\n s = 0 + o;\n } else {\n s = this.s.v + o;\n }\n\n if (this.e.v > 1) {\n e = 1 + o;\n } else if (this.e.v < 0) {\n e = 0 + o;\n } else {\n e = this.e.v + o;\n }\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n s = Math.round(s * 10000) * 0.0001;\n e = Math.round(e * 10000) * 0.0001;\n this.sValue = s;\n this.eValue = e;\n } else {\n s = this.sValue;\n e = this.eValue;\n }\n\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var pathsData;\n var pathData;\n var totalShapeLength;\n var totalModifierLength = 0;\n\n if (e === s) {\n for (i = 0; i < len; i += 1) {\n this.shapes[i].localShapeCollection.releaseShapes();\n this.shapes[i].shape._mdf = true;\n this.shapes[i].shape.paths = this.shapes[i].localShapeCollection;\n\n if (this._mdf) {\n this.shapes[i].pathsData.length = 0;\n }\n }\n } else if (!(e === 1 && s === 0 || e === 0 && s === 1)) {\n var segments = [];\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i]; // if shape hasn't changed and trim properties haven't changed, cached previous path can be used\n\n if (!shapeData.shape._mdf && !this._mdf && !_isFirstFrame && this.m !== 2) {\n shapeData.shape.paths = shapeData.localShapeCollection;\n } else {\n shapePaths = shapeData.shape.paths;\n jLen = shapePaths._length;\n totalShapeLength = 0;\n\n if (!shapeData.shape._mdf && shapeData.pathsData.length) {\n totalShapeLength = shapeData.totalShapeLength;\n } else {\n pathsData = this.releasePathsData(shapeData.pathsData);\n\n for (j = 0; j < jLen; j += 1) {\n pathData = bez.getSegmentsLength(shapePaths.shapes[j]);\n pathsData.push(pathData);\n totalShapeLength += pathData.totalLength;\n }\n\n shapeData.totalShapeLength = totalShapeLength;\n shapeData.pathsData = pathsData;\n }\n\n totalModifierLength += totalShapeLength;\n shapeData.shape._mdf = true;\n }\n }\n\n var shapeS = s;\n var shapeE = e;\n var addedLength = 0;\n var edges;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shapeData = this.shapes[i];\n\n if (shapeData.shape._mdf) {\n localShapeCollection = shapeData.localShapeCollection;\n localShapeCollection.releaseShapes(); // if m === 2 means paths are trimmed individually so edges need to be found for this specific shape relative to whoel group\n\n if (this.m === 2 && len > 1) {\n edges = this.calculateShapeEdges(s, e, shapeData.totalShapeLength, addedLength, totalModifierLength);\n addedLength += shapeData.totalShapeLength;\n } else {\n edges = [[shapeS, shapeE]];\n }\n\n jLen = edges.length;\n\n for (j = 0; j < jLen; j += 1) {\n shapeS = edges[j][0];\n shapeE = edges[j][1];\n segments.length = 0;\n\n if (shapeE <= 1) {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength * shapeE\n });\n } else if (shapeS >= 1) {\n segments.push({\n s: shapeData.totalShapeLength * (shapeS - 1),\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n } else {\n segments.push({\n s: shapeData.totalShapeLength * shapeS,\n e: shapeData.totalShapeLength\n });\n segments.push({\n s: 0,\n e: shapeData.totalShapeLength * (shapeE - 1)\n });\n }\n\n var newShapesData = this.addShapes(shapeData, segments[0]);\n\n if (segments[0].s !== segments[0].e) {\n if (segments.length > 1) {\n var lastShapeInCollection = shapeData.shape.paths.shapes[shapeData.shape.paths._length - 1];\n\n if (lastShapeInCollection.c) {\n var lastShape = newShapesData.pop();\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1], lastShape);\n } else {\n this.addPaths(newShapesData, localShapeCollection);\n newShapesData = this.addShapes(shapeData, segments[1]);\n }\n }\n\n this.addPaths(newShapesData, localShapeCollection);\n }\n }\n\n shapeData.shape.paths = localShapeCollection;\n }\n }\n } else if (this._mdf) {\n for (i = 0; i < len; i += 1) {\n // Releasign Trim Cached paths data when no trim applied in case shapes are modified inbetween.\n // Don't remove this even if it's losing cached info.\n this.shapes[i].pathsData.length = 0;\n this.shapes[i].shape._mdf = true;\n }\n }\n };\n\n TrimModifier.prototype.addPaths = function (newPaths, localShapeCollection) {\n var i;\n var len = newPaths.length;\n\n for (i = 0; i < len; i += 1) {\n localShapeCollection.addShape(newPaths[i]);\n }\n };\n\n TrimModifier.prototype.addSegment = function (pt1, pt2, pt3, pt4, shapePath, pos, newShape) {\n shapePath.setXYAt(pt2[0], pt2[1], 'o', pos);\n shapePath.setXYAt(pt3[0], pt3[1], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(pt1[0], pt1[1], 'v', pos);\n }\n\n shapePath.setXYAt(pt4[0], pt4[1], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addSegmentFromArray = function (points, shapePath, pos, newShape) {\n shapePath.setXYAt(points[1], points[5], 'o', pos);\n shapePath.setXYAt(points[2], points[6], 'i', pos + 1);\n\n if (newShape) {\n shapePath.setXYAt(points[0], points[4], 'v', pos);\n }\n\n shapePath.setXYAt(points[3], points[7], 'v', pos + 1);\n };\n\n TrimModifier.prototype.addShapes = function (shapeData, shapeSegment, shapePath) {\n var pathsData = shapeData.pathsData;\n var shapePaths = shapeData.shape.paths.shapes;\n var i;\n var len = shapeData.shape.paths._length;\n var j;\n var jLen;\n var addedLength = 0;\n var currentLengthData;\n var segmentCount;\n var lengths;\n var segment;\n var shapes = [];\n var initPos;\n var newShape = true;\n\n if (!shapePath) {\n shapePath = shapePool.newElement();\n segmentCount = 0;\n initPos = 0;\n } else {\n segmentCount = shapePath._length;\n initPos = shapePath._length;\n }\n\n shapes.push(shapePath);\n\n for (i = 0; i < len; i += 1) {\n lengths = pathsData[i].lengths;\n shapePath.c = shapePaths[i].c;\n jLen = shapePaths[i].c ? lengths.length : lengths.length + 1;\n\n for (j = 1; j < jLen; j += 1) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength + currentLengthData.addedLength < shapeSegment.s) {\n addedLength += currentLengthData.addedLength;\n shapePath.c = false;\n } else if (addedLength > shapeSegment.e) {\n shapePath.c = false;\n break;\n } else {\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + currentLengthData.addedLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[j], shapePaths[i].v[j], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[j], shapePaths[i].o[j - 1], shapePaths[i].i[j], (shapeSegment.s - addedLength) / currentLengthData.addedLength, (shapeSegment.e - addedLength) / currentLengthData.addedLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n }\n\n if (shapePaths[i].c && lengths.length) {\n currentLengthData = lengths[j - 1];\n\n if (addedLength <= shapeSegment.e) {\n var segmentLength = lengths[j - 1].addedLength;\n\n if (shapeSegment.s <= addedLength && shapeSegment.e >= addedLength + segmentLength) {\n this.addSegment(shapePaths[i].v[j - 1], shapePaths[i].o[j - 1], shapePaths[i].i[0], shapePaths[i].v[0], shapePath, segmentCount, newShape);\n newShape = false;\n } else {\n segment = bez.getNewSegment(shapePaths[i].v[j - 1], shapePaths[i].v[0], shapePaths[i].o[j - 1], shapePaths[i].i[0], (shapeSegment.s - addedLength) / segmentLength, (shapeSegment.e - addedLength) / segmentLength, lengths[j - 1]);\n this.addSegmentFromArray(segment, shapePath, segmentCount, newShape); // this.addSegment(segment.pt1, segment.pt3, segment.pt4, segment.pt2, shapePath, segmentCount, newShape);\n\n newShape = false;\n shapePath.c = false;\n }\n } else {\n shapePath.c = false;\n }\n\n addedLength += currentLengthData.addedLength;\n segmentCount += 1;\n }\n\n if (shapePath._length) {\n shapePath.setXYAt(shapePath.v[initPos][0], shapePath.v[initPos][1], 'i', initPos);\n shapePath.setXYAt(shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1], 'o', shapePath._length - 1);\n }\n\n if (addedLength > shapeSegment.e) {\n break;\n }\n\n if (i < len - 1) {\n shapePath = shapePool.newElement();\n newShape = true;\n shapes.push(shapePath);\n segmentCount = 0;\n }\n }\n\n return shapes;\n };\n\n function PuckerAndBloatModifier() {}\n\n extendPrototype([ShapeModifier], PuckerAndBloatModifier);\n\n PuckerAndBloatModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this._isAnimated = !!this.amount.effectsSequence.length;\n };\n\n PuckerAndBloatModifier.prototype.processPath = function (path, amount) {\n var percent = amount / 100;\n var centerPoint = [0, 0];\n var pathLength = path._length;\n var i = 0;\n\n for (i = 0; i < pathLength; i += 1) {\n centerPoint[0] += path.v[i][0];\n centerPoint[1] += path.v[i][1];\n }\n\n centerPoint[0] /= pathLength;\n centerPoint[1] /= pathLength;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < pathLength; i += 1) {\n vX = path.v[i][0] + (centerPoint[0] - path.v[i][0]) * percent;\n vY = path.v[i][1] + (centerPoint[1] - path.v[i][1]) * percent;\n oX = path.o[i][0] + (centerPoint[0] - path.o[i][0]) * -percent;\n oY = path.o[i][1] + (centerPoint[1] - path.o[i][1]) * -percent;\n iX = path.i[i][0] + (centerPoint[0] - path.i[i][0]) * -percent;\n iY = path.i[i][1] + (centerPoint[1] - path.i[i][1]) * -percent;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, i);\n }\n\n return clonedPath;\n };\n\n PuckerAndBloatModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n var TransformPropertyFactory = function () {\n var defaultVector = [0, 0];\n\n function applyToMatrix(mat) {\n var _mdf = this._mdf;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || _mdf;\n\n if (this.a) {\n mat.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.s) {\n mat.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk) {\n mat.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r) {\n mat.rotate(-this.r.v);\n } else {\n mat.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.data.p.s) {\n if (this.data.p.z) {\n mat.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n mat.translate(this.px.v, this.py.v, 0);\n }\n } else {\n mat.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n function processKeys(forceRender) {\n if (this.elem.globalData.frameId === this.frameId) {\n return;\n }\n\n if (this._isDirty) {\n this.precalculateMatrix();\n this._isDirty = false;\n }\n\n this.iterateDynamicProperties();\n\n if (this._mdf || forceRender) {\n var frameRate;\n this.v.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n this.v.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n }\n\n if (this.appliedTransformations < 2) {\n this.v.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n this.v.skewFromAxis(-this.sk.v, this.sa.v);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n this.v.rotate(-this.r.v);\n } else if (!this.r && this.appliedTransformations < 4) {\n this.v.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n }\n\n if (this.autoOriented) {\n var v1;\n var v2;\n frameRate = this.elem.globalData.frameRate;\n\n if (this.p && this.p.keyframes && this.p.getValueAtTime) {\n if (this.p._caching.lastFrame + this.p.offsetTime <= this.p.keyframes[0].t) {\n v1 = this.p.getValueAtTime((this.p.keyframes[0].t + 0.01) / frameRate, 0);\n v2 = this.p.getValueAtTime(this.p.keyframes[0].t / frameRate, 0);\n } else if (this.p._caching.lastFrame + this.p.offsetTime >= this.p.keyframes[this.p.keyframes.length - 1].t) {\n v1 = this.p.getValueAtTime(this.p.keyframes[this.p.keyframes.length - 1].t / frameRate, 0);\n v2 = this.p.getValueAtTime((this.p.keyframes[this.p.keyframes.length - 1].t - 0.05) / frameRate, 0);\n } else {\n v1 = this.p.pv;\n v2 = this.p.getValueAtTime((this.p._caching.lastFrame + this.p.offsetTime - 0.01) / frameRate, this.p.offsetTime);\n }\n } else if (this.px && this.px.keyframes && this.py.keyframes && this.px.getValueAtTime && this.py.getValueAtTime) {\n v1 = [];\n v2 = [];\n var px = this.px;\n var py = this.py;\n\n if (px._caching.lastFrame + px.offsetTime <= px.keyframes[0].t) {\n v1[0] = px.getValueAtTime((px.keyframes[0].t + 0.01) / frameRate, 0);\n v1[1] = py.getValueAtTime((py.keyframes[0].t + 0.01) / frameRate, 0);\n v2[0] = px.getValueAtTime(px.keyframes[0].t / frameRate, 0);\n v2[1] = py.getValueAtTime(py.keyframes[0].t / frameRate, 0);\n } else if (px._caching.lastFrame + px.offsetTime >= px.keyframes[px.keyframes.length - 1].t) {\n v1[0] = px.getValueAtTime(px.keyframes[px.keyframes.length - 1].t / frameRate, 0);\n v1[1] = py.getValueAtTime(py.keyframes[py.keyframes.length - 1].t / frameRate, 0);\n v2[0] = px.getValueAtTime((px.keyframes[px.keyframes.length - 1].t - 0.01) / frameRate, 0);\n v2[1] = py.getValueAtTime((py.keyframes[py.keyframes.length - 1].t - 0.01) / frameRate, 0);\n } else {\n v1 = [px.pv, py.pv];\n v2[0] = px.getValueAtTime((px._caching.lastFrame + px.offsetTime - 0.01) / frameRate, px.offsetTime);\n v2[1] = py.getValueAtTime((py._caching.lastFrame + py.offsetTime - 0.01) / frameRate, py.offsetTime);\n }\n } else {\n v2 = defaultVector;\n v1 = v2;\n }\n\n this.v.rotate(-Math.atan2(v1[1] - v2[1], v1[0] - v2[0]));\n }\n\n if (this.data.p && this.data.p.s) {\n if (this.data.p.z) {\n this.v.translate(this.px.v, this.py.v, -this.pz.v);\n } else {\n this.v.translate(this.px.v, this.py.v, 0);\n }\n } else {\n this.v.translate(this.p.v[0], this.p.v[1], -this.p.v[2]);\n }\n }\n\n this.frameId = this.elem.globalData.frameId;\n }\n\n function precalculateMatrix() {\n this.appliedTransformations = 0;\n this.pre.reset();\n\n if (!this.a.effectsSequence.length) {\n this.pre.translate(-this.a.v[0], -this.a.v[1], this.a.v[2]);\n this.appliedTransformations = 1;\n } else {\n return;\n }\n\n if (!this.s.effectsSequence.length) {\n this.pre.scale(this.s.v[0], this.s.v[1], this.s.v[2]);\n this.appliedTransformations = 2;\n } else {\n return;\n }\n\n if (this.sk) {\n if (!this.sk.effectsSequence.length && !this.sa.effectsSequence.length) {\n this.pre.skewFromAxis(-this.sk.v, this.sa.v);\n this.appliedTransformations = 3;\n } else {\n return;\n }\n }\n\n if (this.r) {\n if (!this.r.effectsSequence.length) {\n this.pre.rotate(-this.r.v);\n this.appliedTransformations = 4;\n }\n } else if (!this.rz.effectsSequence.length && !this.ry.effectsSequence.length && !this.rx.effectsSequence.length && !this.or.effectsSequence.length) {\n this.pre.rotateZ(-this.rz.v).rotateY(this.ry.v).rotateX(this.rx.v).rotateZ(-this.or.v[2]).rotateY(this.or.v[1]).rotateX(this.or.v[0]);\n this.appliedTransformations = 4;\n }\n }\n\n function autoOrient() {//\n // var prevP = this.getValueAtTime();\n }\n\n function addDynamicProperty(prop) {\n this._addDynamicProperty(prop);\n\n this.elem.addDynamicProperty(prop);\n this._isDirty = true;\n }\n\n function TransformProperty(elem, data, container) {\n this.elem = elem;\n this.frameId = -1;\n this.propType = 'transform';\n this.data = data;\n this.v = new Matrix(); // Precalculated matrix with non animated properties\n\n this.pre = new Matrix();\n this.appliedTransformations = 0;\n this.initDynamicPropertyContainer(container || elem);\n\n if (data.p && data.p.s) {\n this.px = PropertyFactory.getProp(elem, data.p.x, 0, 0, this);\n this.py = PropertyFactory.getProp(elem, data.p.y, 0, 0, this);\n\n if (data.p.z) {\n this.pz = PropertyFactory.getProp(elem, data.p.z, 0, 0, this);\n }\n } else {\n this.p = PropertyFactory.getProp(elem, data.p || {\n k: [0, 0, 0]\n }, 1, 0, this);\n }\n\n if (data.rx) {\n this.rx = PropertyFactory.getProp(elem, data.rx, 0, degToRads, this);\n this.ry = PropertyFactory.getProp(elem, data.ry, 0, degToRads, this);\n this.rz = PropertyFactory.getProp(elem, data.rz, 0, degToRads, this);\n\n if (data.or.k[0].ti) {\n var i;\n var len = data.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.or.k[i].to = null;\n data.or.k[i].ti = null;\n }\n }\n\n this.or = PropertyFactory.getProp(elem, data.or, 1, degToRads, this); // sh Indicates it needs to be capped between -180 and 180\n\n this.or.sh = true;\n } else {\n this.r = PropertyFactory.getProp(elem, data.r || {\n k: 0\n }, 0, degToRads, this);\n }\n\n if (data.sk) {\n this.sk = PropertyFactory.getProp(elem, data.sk, 0, degToRads, this);\n this.sa = PropertyFactory.getProp(elem, data.sa, 0, degToRads, this);\n }\n\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: [0, 0, 0]\n }, 1, 0, this);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: [100, 100, 100]\n }, 1, 0.01, this); // Opacity is not part of the transform properties, that's why it won't use this.dynamicProperties. That way transforms won't get updated if opacity changes.\n\n if (data.o) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, elem);\n } else {\n this.o = {\n _mdf: false,\n v: 1\n };\n }\n\n this._isDirty = true;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n }\n\n TransformProperty.prototype = {\n applyToMatrix: applyToMatrix,\n getValue: processKeys,\n precalculateMatrix: precalculateMatrix,\n autoOrient: autoOrient\n };\n extendPrototype([DynamicPropertyContainer], TransformProperty);\n TransformProperty.prototype.addDynamicProperty = addDynamicProperty;\n TransformProperty.prototype._addDynamicProperty = DynamicPropertyContainer.prototype.addDynamicProperty;\n\n function getTransformProperty(elem, data, container) {\n return new TransformProperty(elem, data, container);\n }\n\n return {\n getTransformProperty: getTransformProperty\n };\n }();\n\n function RepeaterModifier() {}\n\n extendPrototype([ShapeModifier], RepeaterModifier);\n\n RepeaterModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.c = PropertyFactory.getProp(elem, data.c, 0, null, this);\n this.o = PropertyFactory.getProp(elem, data.o, 0, null, this);\n this.tr = TransformPropertyFactory.getTransformProperty(elem, data.tr, this);\n this.so = PropertyFactory.getProp(elem, data.tr.so, 0, 0.01, this);\n this.eo = PropertyFactory.getProp(elem, data.tr.eo, 0, 0.01, this);\n this.data = data;\n\n if (!this.dynamicProperties.length) {\n this.getValue(true);\n }\n\n this._isAnimated = !!this.dynamicProperties.length;\n this.pMatrix = new Matrix();\n this.rMatrix = new Matrix();\n this.sMatrix = new Matrix();\n this.tMatrix = new Matrix();\n this.matrix = new Matrix();\n };\n\n RepeaterModifier.prototype.applyTransforms = function (pMatrix, rMatrix, sMatrix, transform, perc, inv) {\n var dir = inv ? -1 : 1;\n var scaleX = transform.s.v[0] + (1 - transform.s.v[0]) * (1 - perc);\n var scaleY = transform.s.v[1] + (1 - transform.s.v[1]) * (1 - perc);\n pMatrix.translate(transform.p.v[0] * dir * perc, transform.p.v[1] * dir * perc, transform.p.v[2]);\n rMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n rMatrix.rotate(-transform.r.v * dir * perc);\n rMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n sMatrix.translate(-transform.a.v[0], -transform.a.v[1], transform.a.v[2]);\n sMatrix.scale(inv ? 1 / scaleX : scaleX, inv ? 1 / scaleY : scaleY);\n sMatrix.translate(transform.a.v[0], transform.a.v[1], transform.a.v[2]);\n };\n\n RepeaterModifier.prototype.init = function (elem, arr, pos, elemsData) {\n this.elem = elem;\n this.arr = arr;\n this.pos = pos;\n this.elemsData = elemsData;\n this._currentCopies = 0;\n this._elements = [];\n this._groups = [];\n this.frameId = -1;\n this.initDynamicPropertyContainer(elem);\n this.initModifierProperties(elem, arr[pos]);\n\n while (pos > 0) {\n pos -= 1; // this._elements.unshift(arr.splice(pos,1)[0]);\n\n this._elements.unshift(arr[pos]);\n }\n\n if (this.dynamicProperties.length) {\n this.k = true;\n } else {\n this.getValue(true);\n }\n };\n\n RepeaterModifier.prototype.resetElements = function (elements) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._processed = false;\n\n if (elements[i].ty === 'gr') {\n this.resetElements(elements[i].it);\n }\n }\n };\n\n RepeaterModifier.prototype.cloneElements = function (elements) {\n var newElements = JSON.parse(JSON.stringify(elements));\n this.resetElements(newElements);\n return newElements;\n };\n\n RepeaterModifier.prototype.changeGroupRender = function (elements, renderFlag) {\n var i;\n var len = elements.length;\n\n for (i = 0; i < len; i += 1) {\n elements[i]._render = renderFlag;\n\n if (elements[i].ty === 'gr') {\n this.changeGroupRender(elements[i].it, renderFlag);\n }\n }\n };\n\n RepeaterModifier.prototype.processShapes = function (_isFirstFrame) {\n var items;\n var itemsTransform;\n var i;\n var dir;\n var cont;\n var hasReloaded = false;\n\n if (this._mdf || _isFirstFrame) {\n var copies = Math.ceil(this.c.v);\n\n if (this._groups.length < copies) {\n while (this._groups.length < copies) {\n var group = {\n it: this.cloneElements(this._elements),\n ty: 'gr'\n };\n group.it.push({\n a: {\n a: 0,\n ix: 1,\n k: [0, 0]\n },\n nm: 'Transform',\n o: {\n a: 0,\n ix: 7,\n k: 100\n },\n p: {\n a: 0,\n ix: 2,\n k: [0, 0]\n },\n r: {\n a: 1,\n ix: 6,\n k: [{\n s: 0,\n e: 0,\n t: 0\n }, {\n s: 0,\n e: 0,\n t: 1\n }]\n },\n s: {\n a: 0,\n ix: 3,\n k: [100, 100]\n },\n sa: {\n a: 0,\n ix: 5,\n k: 0\n },\n sk: {\n a: 0,\n ix: 4,\n k: 0\n },\n ty: 'tr'\n });\n this.arr.splice(0, 0, group);\n\n this._groups.splice(0, 0, group);\n\n this._currentCopies += 1;\n }\n\n this.elem.reloadShapes();\n hasReloaded = true;\n }\n\n cont = 0;\n var renderFlag;\n\n for (i = 0; i <= this._groups.length - 1; i += 1) {\n renderFlag = cont < copies;\n this._groups[i]._render = renderFlag;\n this.changeGroupRender(this._groups[i].it, renderFlag);\n\n if (!renderFlag) {\n var elems = this.elemsData[i].it;\n var transformData = elems[elems.length - 1];\n\n if (transformData.transform.op.v !== 0) {\n transformData.transform.op._mdf = true;\n transformData.transform.op.v = 0;\n } else {\n transformData.transform.op._mdf = false;\n }\n }\n\n cont += 1;\n }\n\n this._currentCopies = copies; /// /\n\n var offset = this.o.v;\n var offsetModulo = offset % 1;\n var roundOffset = offset > 0 ? Math.floor(offset) : Math.ceil(offset);\n var pProps = this.pMatrix.props;\n var rProps = this.rMatrix.props;\n var sProps = this.sMatrix.props;\n this.pMatrix.reset();\n this.rMatrix.reset();\n this.sMatrix.reset();\n this.tMatrix.reset();\n this.matrix.reset();\n var iteration = 0;\n\n if (offset > 0) {\n while (iteration < roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n iteration += 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, offsetModulo, false);\n iteration += offsetModulo;\n }\n } else if (offset < 0) {\n while (iteration > roundOffset) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, true);\n iteration -= 1;\n }\n\n if (offsetModulo) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, -offsetModulo, true);\n iteration -= offsetModulo;\n }\n }\n\n i = this.data.m === 1 ? 0 : this._currentCopies - 1;\n dir = this.data.m === 1 ? 1 : -1;\n cont = this._currentCopies;\n var j;\n var jLen;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n jLen = itemsTransform.length;\n items[items.length - 1].transform.mProps._mdf = true;\n items[items.length - 1].transform.op._mdf = true;\n items[items.length - 1].transform.op.v = this._currentCopies === 1 ? this.so.v : this.so.v + (this.eo.v - this.so.v) * (i / (this._currentCopies - 1));\n\n if (iteration !== 0) {\n if (i !== 0 && dir === 1 || i !== this._currentCopies - 1 && dir === -1) {\n this.applyTransforms(this.pMatrix, this.rMatrix, this.sMatrix, this.tr, 1, false);\n }\n\n this.matrix.transform(rProps[0], rProps[1], rProps[2], rProps[3], rProps[4], rProps[5], rProps[6], rProps[7], rProps[8], rProps[9], rProps[10], rProps[11], rProps[12], rProps[13], rProps[14], rProps[15]);\n this.matrix.transform(sProps[0], sProps[1], sProps[2], sProps[3], sProps[4], sProps[5], sProps[6], sProps[7], sProps[8], sProps[9], sProps[10], sProps[11], sProps[12], sProps[13], sProps[14], sProps[15]);\n this.matrix.transform(pProps[0], pProps[1], pProps[2], pProps[3], pProps[4], pProps[5], pProps[6], pProps[7], pProps[8], pProps[9], pProps[10], pProps[11], pProps[12], pProps[13], pProps[14], pProps[15]);\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n\n this.matrix.reset();\n } else {\n this.matrix.reset();\n\n for (j = 0; j < jLen; j += 1) {\n itemsTransform[j] = this.matrix.props[j];\n }\n }\n\n iteration += 1;\n cont -= 1;\n i += dir;\n }\n } else {\n cont = this._currentCopies;\n i = 0;\n dir = 1;\n\n while (cont) {\n items = this.elemsData[i].it;\n itemsTransform = items[items.length - 1].transform.mProps.v.props;\n items[items.length - 1].transform.mProps._mdf = false;\n items[items.length - 1].transform.op._mdf = false;\n cont -= 1;\n i += dir;\n }\n }\n\n return hasReloaded;\n };\n\n RepeaterModifier.prototype.addShape = function () {};\n\n function RoundCornersModifier() {}\n\n extendPrototype([ShapeModifier], RoundCornersModifier);\n\n RoundCornersModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.rd = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this._isAnimated = !!this.rd.effectsSequence.length;\n };\n\n RoundCornersModifier.prototype.processPath = function (path, round) {\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n var i;\n var len = path._length;\n var currentV;\n var currentI;\n var currentO;\n var closerV;\n var distance;\n var newPosPerc;\n var index = 0;\n var vX;\n var vY;\n var oX;\n var oY;\n var iX;\n var iY;\n\n for (i = 0; i < len; i += 1) {\n currentV = path.v[i];\n currentO = path.o[i];\n currentI = path.i[i];\n\n if (currentV[0] === currentO[0] && currentV[1] === currentO[1] && currentV[0] === currentI[0] && currentV[1] === currentI[1]) {\n if ((i === 0 || i === len - 1) && !path.c) {\n clonedPath.setTripleAt(currentV[0], currentV[1], currentO[0], currentO[1], currentI[0], currentI[1], index);\n /* clonedPath.v[index] = currentV;\r\n clonedPath.o[index] = currentO;\r\n clonedPath.i[index] = currentI; */\n\n index += 1;\n } else {\n if (i === 0) {\n closerV = path.v[len - 1];\n } else {\n closerV = path.v[i - 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n iX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = iX;\n iY = currentV[1] - (currentV[1] - closerV[1]) * newPosPerc;\n vY = iY;\n oX = vX - (vX - currentV[0]) * roundCorner;\n oY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n\n if (i === len - 1) {\n closerV = path.v[0];\n } else {\n closerV = path.v[i + 1];\n }\n\n distance = Math.sqrt(Math.pow(currentV[0] - closerV[0], 2) + Math.pow(currentV[1] - closerV[1], 2));\n newPosPerc = distance ? Math.min(distance / 2, round) / distance : 0;\n oX = currentV[0] + (closerV[0] - currentV[0]) * newPosPerc;\n vX = oX;\n oY = currentV[1] + (closerV[1] - currentV[1]) * newPosPerc;\n vY = oY;\n iX = vX - (vX - currentV[0]) * roundCorner;\n iY = vY - (vY - currentV[1]) * roundCorner;\n clonedPath.setTripleAt(vX, vY, oX, oY, iX, iY, index);\n index += 1;\n }\n } else {\n clonedPath.setTripleAt(path.v[i][0], path.v[i][1], path.o[i][0], path.o[i][1], path.i[i][0], path.i[i][1], index);\n index += 1;\n }\n }\n\n return clonedPath;\n };\n\n RoundCornersModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var rd = this.rd.v;\n\n if (rd !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], rd));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function floatEqual(a, b) {\n return Math.abs(a - b) * 100000 <= Math.min(Math.abs(a), Math.abs(b));\n }\n\n function floatZero(f) {\n return Math.abs(f) <= 0.00001;\n }\n\n function lerp(p0, p1, amount) {\n return p0 * (1 - amount) + p1 * amount;\n }\n\n function lerpPoint(p0, p1, amount) {\n return [lerp(p0[0], p1[0], amount), lerp(p0[1], p1[1], amount)];\n }\n\n function quadRoots(a, b, c) {\n // no root\n if (a === 0) return [];\n var s = b * b - 4 * a * c; // Complex roots\n\n if (s < 0) return [];\n var singleRoot = -b / (2 * a); // 1 root\n\n if (s === 0) return [singleRoot];\n var delta = Math.sqrt(s) / (2 * a); // 2 roots\n\n return [singleRoot - delta, singleRoot + delta];\n }\n\n function polynomialCoefficients(p0, p1, p2, p3) {\n return [-p0 + 3 * p1 - 3 * p2 + p3, 3 * p0 - 6 * p1 + 3 * p2, -3 * p0 + 3 * p1, p0];\n }\n\n function singlePoint(p) {\n return new PolynomialBezier(p, p, p, p, false);\n }\n\n function PolynomialBezier(p0, p1, p2, p3, linearize) {\n if (linearize && pointEqual(p0, p1)) {\n p1 = lerpPoint(p0, p3, 1 / 3);\n }\n\n if (linearize && pointEqual(p2, p3)) {\n p2 = lerpPoint(p0, p3, 2 / 3);\n }\n\n var coeffx = polynomialCoefficients(p0[0], p1[0], p2[0], p3[0]);\n var coeffy = polynomialCoefficients(p0[1], p1[1], p2[1], p3[1]);\n this.a = [coeffx[0], coeffy[0]];\n this.b = [coeffx[1], coeffy[1]];\n this.c = [coeffx[2], coeffy[2]];\n this.d = [coeffx[3], coeffy[3]];\n this.points = [p0, p1, p2, p3];\n }\n\n PolynomialBezier.prototype.point = function (t) {\n return [((this.a[0] * t + this.b[0]) * t + this.c[0]) * t + this.d[0], ((this.a[1] * t + this.b[1]) * t + this.c[1]) * t + this.d[1]];\n };\n\n PolynomialBezier.prototype.derivative = function (t) {\n return [(3 * t * this.a[0] + 2 * this.b[0]) * t + this.c[0], (3 * t * this.a[1] + 2 * this.b[1]) * t + this.c[1]];\n };\n\n PolynomialBezier.prototype.tangentAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[1], p[0]);\n };\n\n PolynomialBezier.prototype.normalAngle = function (t) {\n var p = this.derivative(t);\n return Math.atan2(p[0], p[1]);\n };\n\n PolynomialBezier.prototype.inflectionPoints = function () {\n var denom = this.a[1] * this.b[0] - this.a[0] * this.b[1];\n if (floatZero(denom)) return [];\n var tcusp = -0.5 * (this.a[1] * this.c[0] - this.a[0] * this.c[1]) / denom;\n var square = tcusp * tcusp - 1 / 3 * (this.b[1] * this.c[0] - this.b[0] * this.c[1]) / denom;\n if (square < 0) return [];\n var root = Math.sqrt(square);\n\n if (floatZero(root)) {\n if (root > 0 && root < 1) return [tcusp];\n return [];\n }\n\n return [tcusp - root, tcusp + root].filter(function (r) {\n return r > 0 && r < 1;\n });\n };\n\n PolynomialBezier.prototype.split = function (t) {\n if (t <= 0) return [singlePoint(this.points[0]), this];\n if (t >= 1) return [this, singlePoint(this.points[this.points.length - 1])];\n var p10 = lerpPoint(this.points[0], this.points[1], t);\n var p11 = lerpPoint(this.points[1], this.points[2], t);\n var p12 = lerpPoint(this.points[2], this.points[3], t);\n var p20 = lerpPoint(p10, p11, t);\n var p21 = lerpPoint(p11, p12, t);\n var p3 = lerpPoint(p20, p21, t);\n return [new PolynomialBezier(this.points[0], p10, p20, p3, true), new PolynomialBezier(p3, p21, p12, this.points[3], true)];\n };\n\n function extrema(bez, comp) {\n var min = bez.points[0][comp];\n var max = bez.points[bez.points.length - 1][comp];\n\n if (min > max) {\n var e = max;\n max = min;\n min = e;\n } // Derivative roots to find min/max\n\n\n var f = quadRoots(3 * bez.a[comp], 2 * bez.b[comp], bez.c[comp]);\n\n for (var i = 0; i < f.length; i += 1) {\n if (f[i] > 0 && f[i] < 1) {\n var val = bez.point(f[i])[comp];\n if (val < min) min = val;else if (val > max) max = val;\n }\n }\n\n return {\n min: min,\n max: max\n };\n }\n\n PolynomialBezier.prototype.bounds = function () {\n return {\n x: extrema(this, 0),\n y: extrema(this, 1)\n };\n };\n\n PolynomialBezier.prototype.boundingBox = function () {\n var bounds = this.bounds();\n return {\n left: bounds.x.min,\n right: bounds.x.max,\n top: bounds.y.min,\n bottom: bounds.y.max,\n width: bounds.x.max - bounds.x.min,\n height: bounds.y.max - bounds.y.min,\n cx: (bounds.x.max + bounds.x.min) / 2,\n cy: (bounds.y.max + bounds.y.min) / 2\n };\n };\n\n function intersectData(bez, t1, t2) {\n var box = bez.boundingBox();\n return {\n cx: box.cx,\n cy: box.cy,\n width: box.width,\n height: box.height,\n bez: bez,\n t: (t1 + t2) / 2,\n t1: t1,\n t2: t2\n };\n }\n\n function splitData(data) {\n var split = data.bez.split(0.5);\n return [intersectData(split[0], data.t1, data.t), intersectData(split[1], data.t, data.t2)];\n }\n\n function boxIntersect(b1, b2) {\n return Math.abs(b1.cx - b2.cx) * 2 < b1.width + b2.width && Math.abs(b1.cy - b2.cy) * 2 < b1.height + b2.height;\n }\n\n function intersectsImpl(d1, d2, depth, tolerance, intersections, maxRecursion) {\n if (!boxIntersect(d1, d2)) return;\n\n if (depth >= maxRecursion || d1.width <= tolerance && d1.height <= tolerance && d2.width <= tolerance && d2.height <= tolerance) {\n intersections.push([d1.t, d2.t]);\n return;\n }\n\n var d1s = splitData(d1);\n var d2s = splitData(d2);\n intersectsImpl(d1s[0], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[0], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[0], depth + 1, tolerance, intersections, maxRecursion);\n intersectsImpl(d1s[1], d2s[1], depth + 1, tolerance, intersections, maxRecursion);\n }\n\n PolynomialBezier.prototype.intersections = function (other, tolerance, maxRecursion) {\n if (tolerance === undefined) tolerance = 2;\n if (maxRecursion === undefined) maxRecursion = 7;\n var intersections = [];\n intersectsImpl(intersectData(this, 0, 1), intersectData(other, 0, 1), 0, tolerance, intersections, maxRecursion);\n return intersections;\n };\n\n PolynomialBezier.shapeSegment = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[index], shapePath.o[index], shapePath.i[nextIndex], shapePath.v[nextIndex], true);\n };\n\n PolynomialBezier.shapeSegmentInverted = function (shapePath, index) {\n var nextIndex = (index + 1) % shapePath.length();\n return new PolynomialBezier(shapePath.v[nextIndex], shapePath.i[nextIndex], shapePath.o[index], shapePath.v[index], true);\n };\n\n function crossProduct(a, b) {\n return [a[1] * b[2] - a[2] * b[1], a[2] * b[0] - a[0] * b[2], a[0] * b[1] - a[1] * b[0]];\n }\n\n function lineIntersection(start1, end1, start2, end2) {\n var v1 = [start1[0], start1[1], 1];\n var v2 = [end1[0], end1[1], 1];\n var v3 = [start2[0], start2[1], 1];\n var v4 = [end2[0], end2[1], 1];\n var r = crossProduct(crossProduct(v1, v2), crossProduct(v3, v4));\n if (floatZero(r[2])) return null;\n return [r[0] / r[2], r[1] / r[2]];\n }\n\n function polarOffset(p, angle, length) {\n return [p[0] + Math.cos(angle) * length, p[1] - Math.sin(angle) * length];\n }\n\n function pointDistance(p1, p2) {\n return Math.hypot(p1[0] - p2[0], p1[1] - p2[1]);\n }\n\n function pointEqual(p1, p2) {\n return floatEqual(p1[0], p2[0]) && floatEqual(p1[1], p2[1]);\n }\n\n function ZigZagModifier() {}\n\n extendPrototype([ShapeModifier], ZigZagModifier);\n\n ZigZagModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amplitude = PropertyFactory.getProp(elem, data.s, 0, null, this);\n this.frequency = PropertyFactory.getProp(elem, data.r, 0, null, this);\n this.pointsType = PropertyFactory.getProp(elem, data.pt, 0, null, this);\n this._isAnimated = this.amplitude.effectsSequence.length !== 0 || this.frequency.effectsSequence.length !== 0 || this.pointsType.effectsSequence.length !== 0;\n };\n\n function setPoint(outputBezier, point, angle, direction, amplitude, outAmplitude, inAmplitude) {\n var angO = angle - Math.PI / 2;\n var angI = angle + Math.PI / 2;\n var px = point[0] + Math.cos(angle) * direction * amplitude;\n var py = point[1] - Math.sin(angle) * direction * amplitude;\n outputBezier.setTripleAt(px, py, px + Math.cos(angO) * outAmplitude, py - Math.sin(angO) * outAmplitude, px + Math.cos(angI) * inAmplitude, py - Math.sin(angI) * inAmplitude, outputBezier.length());\n }\n\n function getPerpendicularVector(pt1, pt2) {\n var vector = [pt2[0] - pt1[0], pt2[1] - pt1[1]];\n var rot = -Math.PI * 0.5;\n var rotatedVector = [Math.cos(rot) * vector[0] - Math.sin(rot) * vector[1], Math.sin(rot) * vector[0] + Math.cos(rot) * vector[1]];\n return rotatedVector;\n }\n\n function getProjectingAngle(path, cur) {\n var prevIndex = cur === 0 ? path.length() - 1 : cur - 1;\n var nextIndex = (cur + 1) % path.length();\n var prevPoint = path.v[prevIndex];\n var nextPoint = path.v[nextIndex];\n var pVector = getPerpendicularVector(prevPoint, nextPoint);\n return Math.atan2(0, 1) - Math.atan2(pVector[1], pVector[0]);\n }\n\n function zigZagCorner(outputBezier, path, cur, amplitude, frequency, pointType, direction) {\n var angle = getProjectingAngle(path, cur);\n var point = path.v[cur % path._length];\n var prevPoint = path.v[cur === 0 ? path._length - 1 : cur - 1];\n var nextPoint = path.v[(cur + 1) % path._length];\n var prevDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - prevPoint[0], 2) + Math.pow(point[1] - prevPoint[1], 2)) : 0;\n var nextDist = pointType === 2 ? Math.sqrt(Math.pow(point[0] - nextPoint[0], 2) + Math.pow(point[1] - nextPoint[1], 2)) : 0;\n setPoint(outputBezier, path.v[cur % path._length], angle, direction, amplitude, nextDist / ((frequency + 1) * 2), prevDist / ((frequency + 1) * 2), pointType);\n }\n\n function zigZagSegment(outputBezier, segment, amplitude, frequency, pointType, direction) {\n for (var i = 0; i < frequency; i += 1) {\n var t = (i + 1) / (frequency + 1);\n var dist = pointType === 2 ? Math.sqrt(Math.pow(segment.points[3][0] - segment.points[0][0], 2) + Math.pow(segment.points[3][1] - segment.points[0][1], 2)) : 0;\n var angle = segment.normalAngle(t);\n var point = segment.point(t);\n setPoint(outputBezier, point, angle, direction, amplitude, dist / ((frequency + 1) * 2), dist / ((frequency + 1) * 2), pointType);\n direction = -direction;\n }\n\n return direction;\n }\n\n ZigZagModifier.prototype.processPath = function (path, amplitude, frequency, pointType) {\n var count = path._length;\n var clonedPath = shapePool.newElement();\n clonedPath.c = path.c;\n\n if (!path.c) {\n count -= 1;\n }\n\n if (count === 0) return clonedPath;\n var direction = -1;\n var segment = PolynomialBezier.shapeSegment(path, 0);\n zigZagCorner(clonedPath, path, 0, amplitude, frequency, pointType, direction);\n\n for (var i = 0; i < count; i += 1) {\n direction = zigZagSegment(clonedPath, segment, amplitude, frequency, pointType, -direction);\n\n if (i === count - 1 && !path.c) {\n segment = null;\n } else {\n segment = PolynomialBezier.shapeSegment(path, (i + 1) % count);\n }\n\n zigZagCorner(clonedPath, path, i + 1, amplitude, frequency, pointType, direction);\n }\n\n return clonedPath;\n };\n\n ZigZagModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amplitude = this.amplitude.v;\n var frequency = Math.max(0, Math.round(this.frequency.v));\n var pointType = this.pointsType.v;\n\n if (amplitude !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amplitude, frequency, pointType));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function linearOffset(p1, p2, amount) {\n var angle = Math.atan2(p2[0] - p1[0], p2[1] - p1[1]);\n return [polarOffset(p1, angle, amount), polarOffset(p2, angle, amount)];\n }\n\n function offsetSegment(segment, amount) {\n var p0;\n var p1a;\n var p1b;\n var p2b;\n var p2a;\n var p3;\n var e;\n e = linearOffset(segment.points[0], segment.points[1], amount);\n p0 = e[0];\n p1a = e[1];\n e = linearOffset(segment.points[1], segment.points[2], amount);\n p1b = e[0];\n p2b = e[1];\n e = linearOffset(segment.points[2], segment.points[3], amount);\n p2a = e[0];\n p3 = e[1];\n var p1 = lineIntersection(p0, p1a, p1b, p2b);\n if (p1 === null) p1 = p1a;\n var p2 = lineIntersection(p2a, p3, p1b, p2b);\n if (p2 === null) p2 = p2a;\n return new PolynomialBezier(p0, p1, p2, p3);\n }\n\n function joinLines(outputBezier, seg1, seg2, lineJoin, miterLimit) {\n var p0 = seg1.points[3];\n var p1 = seg2.points[0]; // Bevel\n\n if (lineJoin === 3) return p0; // Connected, they don't need a joint\n\n if (pointEqual(p0, p1)) return p0; // Round\n\n if (lineJoin === 2) {\n var angleOut = -seg1.tangentAngle(1);\n var angleIn = -seg2.tangentAngle(0) + Math.PI;\n var center = lineIntersection(p0, polarOffset(p0, angleOut + Math.PI / 2, 100), p1, polarOffset(p1, angleOut + Math.PI / 2, 100));\n var radius = center ? pointDistance(center, p0) : pointDistance(p0, p1) / 2;\n var tan = polarOffset(p0, angleOut, 2 * radius * roundCorner);\n outputBezier.setXYAt(tan[0], tan[1], 'o', outputBezier.length() - 1);\n tan = polarOffset(p1, angleIn, 2 * radius * roundCorner);\n outputBezier.setTripleAt(p1[0], p1[1], p1[0], p1[1], tan[0], tan[1], outputBezier.length());\n return p1;\n } // Miter\n\n\n var t0 = pointEqual(p0, seg1.points[2]) ? seg1.points[0] : seg1.points[2];\n var t1 = pointEqual(p1, seg2.points[1]) ? seg2.points[3] : seg2.points[1];\n var intersection = lineIntersection(t0, p0, p1, t1);\n\n if (intersection && pointDistance(intersection, p0) < miterLimit) {\n outputBezier.setTripleAt(intersection[0], intersection[1], intersection[0], intersection[1], intersection[0], intersection[1], outputBezier.length());\n return intersection;\n }\n\n return p0;\n }\n\n function getIntersection(a, b) {\n var intersect = a.intersections(b);\n if (intersect.length && floatEqual(intersect[0][0], 1)) intersect.shift();\n if (intersect.length) return intersect[0];\n return null;\n }\n\n function pruneSegmentIntersection(a, b) {\n var outa = a.slice();\n var outb = b.slice();\n var intersect = getIntersection(a[a.length - 1], b[0]);\n\n if (intersect) {\n outa[a.length - 1] = a[a.length - 1].split(intersect[0])[0];\n outb[0] = b[0].split(intersect[1])[1];\n }\n\n if (a.length > 1 && b.length > 1) {\n intersect = getIntersection(a[0], b[b.length - 1]);\n\n if (intersect) {\n return [[a[0].split(intersect[0])[0]], [b[b.length - 1].split(intersect[1])[1]]];\n }\n }\n\n return [outa, outb];\n }\n\n function pruneIntersections(segments) {\n var e;\n\n for (var i = 1; i < segments.length; i += 1) {\n e = pruneSegmentIntersection(segments[i - 1], segments[i]);\n segments[i - 1] = e[0];\n segments[i] = e[1];\n }\n\n if (segments.length > 1) {\n e = pruneSegmentIntersection(segments[segments.length - 1], segments[0]);\n segments[segments.length - 1] = e[0];\n segments[0] = e[1];\n }\n\n return segments;\n }\n\n function offsetSegmentSplit(segment, amount) {\n /*\r\n We split each bezier segment into smaller pieces based\r\n on inflection points, this ensures the control point\r\n polygon is convex.\r\n (A cubic bezier can have none, one, or two inflection points)\r\n */\n var flex = segment.inflectionPoints();\n var left;\n var right;\n var split;\n var mid;\n\n if (flex.length === 0) {\n return [offsetSegment(segment, amount)];\n }\n\n if (flex.length === 1 || floatEqual(flex[1], 1)) {\n split = segment.split(flex[0]);\n left = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(right, amount)];\n }\n\n split = segment.split(flex[0]);\n left = split[0];\n var t = (flex[1] - flex[0]) / (1 - flex[0]);\n split = split[1].split(t);\n mid = split[0];\n right = split[1];\n return [offsetSegment(left, amount), offsetSegment(mid, amount), offsetSegment(right, amount)];\n }\n\n function OffsetPathModifier() {}\n\n extendPrototype([ShapeModifier], OffsetPathModifier);\n\n OffsetPathModifier.prototype.initModifierProperties = function (elem, data) {\n this.getValue = this.processKeys;\n this.amount = PropertyFactory.getProp(elem, data.a, 0, null, this);\n this.miterLimit = PropertyFactory.getProp(elem, data.ml, 0, null, this);\n this.lineJoin = data.lj;\n this._isAnimated = this.amount.effectsSequence.length !== 0;\n };\n\n OffsetPathModifier.prototype.processPath = function (inputBezier, amount, lineJoin, miterLimit) {\n var outputBezier = shapePool.newElement();\n outputBezier.c = inputBezier.c;\n var count = inputBezier.length();\n\n if (!inputBezier.c) {\n count -= 1;\n }\n\n var i;\n var j;\n var segment;\n var multiSegments = [];\n\n for (i = 0; i < count; i += 1) {\n segment = PolynomialBezier.shapeSegment(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n\n if (!inputBezier.c) {\n for (i = count - 1; i >= 0; i -= 1) {\n segment = PolynomialBezier.shapeSegmentInverted(inputBezier, i);\n multiSegments.push(offsetSegmentSplit(segment, amount));\n }\n }\n\n multiSegments = pruneIntersections(multiSegments); // Add bezier segments to the output and apply line joints\n\n var lastPoint = null;\n var lastSeg = null;\n\n for (i = 0; i < multiSegments.length; i += 1) {\n var multiSegment = multiSegments[i];\n if (lastSeg) lastPoint = joinLines(outputBezier, lastSeg, multiSegment[0], lineJoin, miterLimit);\n lastSeg = multiSegment[multiSegment.length - 1];\n\n for (j = 0; j < multiSegment.length; j += 1) {\n segment = multiSegment[j];\n\n if (lastPoint && pointEqual(segment.points[0], lastPoint)) {\n outputBezier.setXYAt(segment.points[1][0], segment.points[1][1], 'o', outputBezier.length() - 1);\n } else {\n outputBezier.setTripleAt(segment.points[0][0], segment.points[0][1], segment.points[1][0], segment.points[1][1], segment.points[0][0], segment.points[0][1], outputBezier.length());\n }\n\n outputBezier.setTripleAt(segment.points[3][0], segment.points[3][1], segment.points[3][0], segment.points[3][1], segment.points[2][0], segment.points[2][1], outputBezier.length());\n lastPoint = segment.points[3];\n }\n }\n\n if (multiSegments.length) joinLines(outputBezier, lastSeg, multiSegments[0][0], lineJoin, miterLimit);\n return outputBezier;\n };\n\n OffsetPathModifier.prototype.processShapes = function (_isFirstFrame) {\n var shapePaths;\n var i;\n var len = this.shapes.length;\n var j;\n var jLen;\n var amount = this.amount.v;\n var miterLimit = this.miterLimit.v;\n var lineJoin = this.lineJoin;\n\n if (amount !== 0) {\n var shapeData;\n var localShapeCollection;\n\n for (i = 0; i < len; i += 1) {\n shapeData = this.shapes[i];\n localShapeCollection = shapeData.localShapeCollection;\n\n if (!(!shapeData.shape._mdf && !this._mdf && !_isFirstFrame)) {\n localShapeCollection.releaseShapes();\n shapeData.shape._mdf = true;\n shapePaths = shapeData.shape.paths.shapes;\n jLen = shapeData.shape.paths._length;\n\n for (j = 0; j < jLen; j += 1) {\n localShapeCollection.addShape(this.processPath(shapePaths[j], amount, lineJoin, miterLimit));\n }\n }\n\n shapeData.shape.paths = shapeData.localShapeCollection;\n }\n }\n\n if (!this.dynamicProperties.length) {\n this._mdf = false;\n }\n };\n\n function getFontProperties(fontData) {\n var styles = fontData.fStyle ? fontData.fStyle.split(' ') : [];\n var fWeight = 'normal';\n var fStyle = 'normal';\n var len = styles.length;\n var styleName;\n\n for (var i = 0; i < len; i += 1) {\n styleName = styles[i].toLowerCase();\n\n switch (styleName) {\n case 'italic':\n fStyle = 'italic';\n break;\n\n case 'bold':\n fWeight = '700';\n break;\n\n case 'black':\n fWeight = '900';\n break;\n\n case 'medium':\n fWeight = '500';\n break;\n\n case 'regular':\n case 'normal':\n fWeight = '400';\n break;\n\n case 'light':\n case 'thin':\n fWeight = '200';\n break;\n\n default:\n break;\n }\n }\n\n return {\n style: fStyle,\n weight: fontData.fWeight || fWeight\n };\n }\n\n var FontManager = function () {\n var maxWaitingTime = 5000;\n var emptyChar = {\n w: 0,\n size: 0,\n shapes: [],\n data: {\n shapes: []\n }\n };\n var combinedCharacters = []; // Hindi characters\n\n combinedCharacters = combinedCharacters.concat([2304, 2305, 2306, 2307, 2362, 2363, 2364, 2364, 2366, 2367, 2368, 2369, 2370, 2371, 2372, 2373, 2374, 2375, 2376, 2377, 2378, 2379, 2380, 2381, 2382, 2383, 2387, 2388, 2389, 2390, 2391, 2402, 2403]);\n var BLACK_FLAG_CODE_POINT = 127988;\n var CANCEL_TAG_CODE_POINT = 917631;\n var A_TAG_CODE_POINT = 917601;\n var Z_TAG_CODE_POINT = 917626;\n var VARIATION_SELECTOR_16_CODE_POINT = 65039;\n var ZERO_WIDTH_JOINER_CODE_POINT = 8205;\n var REGIONAL_CHARACTER_A_CODE_POINT = 127462;\n var REGIONAL_CHARACTER_Z_CODE_POINT = 127487;\n var surrogateModifiers = ['d83cdffb', 'd83cdffc', 'd83cdffd', 'd83cdffe', 'd83cdfff'];\n\n function trimFontOptions(font) {\n var familyArray = font.split(',');\n var i;\n var len = familyArray.length;\n var enabledFamilies = [];\n\n for (i = 0; i < len; i += 1) {\n if (familyArray[i] !== 'sans-serif' && familyArray[i] !== 'monospace') {\n enabledFamilies.push(familyArray[i]);\n }\n }\n\n return enabledFamilies.join(',');\n }\n\n function setUpNode(font, family) {\n var parentNode = createTag('span'); // Node is invisible to screen readers.\n\n parentNode.setAttribute('aria-hidden', true);\n parentNode.style.fontFamily = family;\n var node = createTag('span'); // Characters that vary significantly among different fonts\n\n node.innerText = 'giItT1WQy@!-/#'; // Visible - so we can measure it - but not on the screen\n\n parentNode.style.position = 'absolute';\n parentNode.style.left = '-10000px';\n parentNode.style.top = '-10000px'; // Large font size makes even subtle changes obvious\n\n parentNode.style.fontSize = '300px'; // Reset any font properties\n\n parentNode.style.fontVariant = 'normal';\n parentNode.style.fontStyle = 'normal';\n parentNode.style.fontWeight = 'normal';\n parentNode.style.letterSpacing = '0';\n parentNode.appendChild(node);\n document.body.appendChild(parentNode); // Remember width with no applied web font\n\n var width = node.offsetWidth;\n node.style.fontFamily = trimFontOptions(font) + ', ' + family;\n return {\n node: node,\n w: width,\n parent: parentNode\n };\n }\n\n function checkLoadedFonts() {\n var i;\n var len = this.fonts.length;\n var node;\n var w;\n var loadedCount = len;\n\n for (i = 0; i < len; i += 1) {\n if (this.fonts[i].loaded) {\n loadedCount -= 1;\n } else if (this.fonts[i].fOrigin === 'n' || this.fonts[i].origin === 0) {\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].monoCase.node;\n w = this.fonts[i].monoCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n } else {\n node = this.fonts[i].sansCase.node;\n w = this.fonts[i].sansCase.w;\n\n if (node.offsetWidth !== w) {\n loadedCount -= 1;\n this.fonts[i].loaded = true;\n }\n }\n\n if (this.fonts[i].loaded) {\n this.fonts[i].sansCase.parent.parentNode.removeChild(this.fonts[i].sansCase.parent);\n this.fonts[i].monoCase.parent.parentNode.removeChild(this.fonts[i].monoCase.parent);\n }\n }\n }\n\n if (loadedCount !== 0 && Date.now() - this.initTime < maxWaitingTime) {\n setTimeout(this.checkLoadedFontsBinded, 20);\n } else {\n setTimeout(this.setIsLoadedBinded, 10);\n }\n }\n\n function createHelper(fontData, def) {\n var engine = document.body && def ? 'svg' : 'canvas';\n var helper;\n var fontProps = getFontProperties(fontData);\n\n if (engine === 'svg') {\n var tHelper = createNS('text');\n tHelper.style.fontSize = '100px'; // tHelper.style.fontFamily = fontData.fFamily;\n\n tHelper.setAttribute('font-family', fontData.fFamily);\n tHelper.setAttribute('font-style', fontProps.style);\n tHelper.setAttribute('font-weight', fontProps.weight);\n tHelper.textContent = '1';\n\n if (fontData.fClass) {\n tHelper.style.fontFamily = 'inherit';\n tHelper.setAttribute('class', fontData.fClass);\n } else {\n tHelper.style.fontFamily = fontData.fFamily;\n }\n\n def.appendChild(tHelper);\n helper = tHelper;\n } else {\n var tCanvasHelper = new OffscreenCanvas(500, 500).getContext('2d');\n tCanvasHelper.font = fontProps.style + ' ' + fontProps.weight + ' 100px ' + fontData.fFamily;\n helper = tCanvasHelper;\n }\n\n function measure(text) {\n if (engine === 'svg') {\n helper.textContent = text;\n return helper.getComputedTextLength();\n }\n\n return helper.measureText(text).width;\n }\n\n return {\n measureText: measure\n };\n }\n\n function addFonts(fontData, defs) {\n if (!fontData) {\n this.isLoaded = true;\n return;\n }\n\n if (this.chars) {\n this.isLoaded = true;\n this.fonts = fontData.list;\n return;\n }\n\n if (!document.body) {\n this.isLoaded = true;\n fontData.list.forEach(function (data) {\n data.helper = createHelper(data);\n data.cache = {};\n });\n this.fonts = fontData.list;\n return;\n }\n\n var fontArr = fontData.list;\n var i;\n var len = fontArr.length;\n var _pendingFonts = len;\n\n for (i = 0; i < len; i += 1) {\n var shouldLoadFont = true;\n var loadedSelector;\n var j;\n fontArr[i].loaded = false;\n fontArr[i].monoCase = setUpNode(fontArr[i].fFamily, 'monospace');\n fontArr[i].sansCase = setUpNode(fontArr[i].fFamily, 'sans-serif');\n\n if (!fontArr[i].fPath) {\n fontArr[i].loaded = true;\n _pendingFonts -= 1;\n } else if (fontArr[i].fOrigin === 'p' || fontArr[i].origin === 3) {\n loadedSelector = document.querySelectorAll('style[f-forigin=\"p\"][f-family=\"' + fontArr[i].fFamily + '\"], style[f-origin=\"3\"][f-family=\"' + fontArr[i].fFamily + '\"]');\n\n if (loadedSelector.length > 0) {\n shouldLoadFont = false;\n }\n\n if (shouldLoadFont) {\n var s = createTag('style');\n s.setAttribute('f-forigin', fontArr[i].fOrigin);\n s.setAttribute('f-origin', fontArr[i].origin);\n s.setAttribute('f-family', fontArr[i].fFamily);\n s.type = 'text/css';\n s.innerText = '@font-face {font-family: ' + fontArr[i].fFamily + \"; font-style: normal; src: url('\" + fontArr[i].fPath + \"');}\";\n defs.appendChild(s);\n }\n } else if (fontArr[i].fOrigin === 'g' || fontArr[i].origin === 1) {\n loadedSelector = document.querySelectorAll('link[f-forigin=\"g\"], link[f-origin=\"1\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (loadedSelector[j].href.indexOf(fontArr[i].fPath) !== -1) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var l = createTag('link');\n l.setAttribute('f-forigin', fontArr[i].fOrigin);\n l.setAttribute('f-origin', fontArr[i].origin);\n l.type = 'text/css';\n l.rel = 'stylesheet';\n l.href = fontArr[i].fPath;\n document.body.appendChild(l);\n }\n } else if (fontArr[i].fOrigin === 't' || fontArr[i].origin === 2) {\n loadedSelector = document.querySelectorAll('script[f-forigin=\"t\"], script[f-origin=\"2\"]');\n\n for (j = 0; j < loadedSelector.length; j += 1) {\n if (fontArr[i].fPath === loadedSelector[j].src) {\n // Font is already loaded\n shouldLoadFont = false;\n }\n }\n\n if (shouldLoadFont) {\n var sc = createTag('link');\n sc.setAttribute('f-forigin', fontArr[i].fOrigin);\n sc.setAttribute('f-origin', fontArr[i].origin);\n sc.setAttribute('rel', 'stylesheet');\n sc.setAttribute('href', fontArr[i].fPath);\n defs.appendChild(sc);\n }\n }\n\n fontArr[i].helper = createHelper(fontArr[i], defs);\n fontArr[i].cache = {};\n this.fonts.push(fontArr[i]);\n }\n\n if (_pendingFonts === 0) {\n this.isLoaded = true;\n } else {\n // On some cases even if the font is loaded, it won't load correctly when measuring text on canvas.\n // Adding this timeout seems to fix it\n setTimeout(this.checkLoadedFonts.bind(this), 100);\n }\n }\n\n function addChars(chars) {\n if (!chars) {\n return;\n }\n\n if (!this.chars) {\n this.chars = [];\n }\n\n var i;\n var len = chars.length;\n var j;\n var jLen = this.chars.length;\n var found;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n found = false;\n\n while (j < jLen) {\n if (this.chars[j].style === chars[i].style && this.chars[j].fFamily === chars[i].fFamily && this.chars[j].ch === chars[i].ch) {\n found = true;\n }\n\n j += 1;\n }\n\n if (!found) {\n this.chars.push(chars[i]);\n jLen += 1;\n }\n }\n }\n\n function getCharData(_char, style, font) {\n var i = 0;\n var len = this.chars.length;\n\n while (i < len) {\n if (this.chars[i].ch === _char && this.chars[i].style === style && this.chars[i].fFamily === font) {\n return this.chars[i];\n }\n\n i += 1;\n }\n\n if ((typeof _char === 'string' && _char.charCodeAt(0) !== 13 || !_char) && console && console.warn // eslint-disable-line no-console\n && !this._warned) {\n this._warned = true;\n console.warn('Missing character from exported characters list: ', _char, style, font); // eslint-disable-line no-console\n }\n\n return emptyChar;\n }\n\n function measureText(_char2, fontName, size) {\n var fontData = this.getFontByName(fontName); // Using the char instead of char.charCodeAt(0)\n // to avoid collisions between equal chars\n\n var index = _char2;\n\n if (!fontData.cache[index]) {\n var tHelper = fontData.helper;\n\n if (_char2 === ' ') {\n var doubleSize = tHelper.measureText('|' + _char2 + '|');\n var singleSize = tHelper.measureText('||');\n fontData.cache[index] = (doubleSize - singleSize) / 100;\n } else {\n fontData.cache[index] = tHelper.measureText(_char2) / 100;\n }\n }\n\n return fontData.cache[index] * size;\n }\n\n function getFontByName(name) {\n var i = 0;\n var len = this.fonts.length;\n\n while (i < len) {\n if (this.fonts[i].fName === name) {\n return this.fonts[i];\n }\n\n i += 1;\n }\n\n return this.fonts[0];\n }\n\n function getCodePoint(string) {\n var codePoint = 0;\n var first = string.charCodeAt(0);\n\n if (first >= 0xD800 && first <= 0xDBFF) {\n var second = string.charCodeAt(1);\n\n if (second >= 0xDC00 && second <= 0xDFFF) {\n codePoint = (first - 0xD800) * 0x400 + second - 0xDC00 + 0x10000;\n }\n }\n\n return codePoint;\n } // Skin tone modifiers\n\n\n function isModifier(firstCharCode, secondCharCode) {\n var sum = firstCharCode.toString(16) + secondCharCode.toString(16);\n return surrogateModifiers.indexOf(sum) !== -1;\n }\n\n function isZeroWidthJoiner(charCode) {\n return charCode === ZERO_WIDTH_JOINER_CODE_POINT;\n } // This codepoint may change the appearance of the preceding character.\n // If that is a symbol, dingbat or emoji, U+FE0F forces it to be rendered\n // as a colorful image as compared to a monochrome text variant.\n\n\n function isVariationSelector(charCode) {\n return charCode === VARIATION_SELECTOR_16_CODE_POINT;\n } // The regional indicator symbols are a set of 26 alphabetic Unicode\n /// characters (A–Z) intended to be used to encode ISO 3166-1 alpha-2\n // two-letter country codes in a way that allows optional special treatment.\n\n\n function isRegionalCode(string) {\n var codePoint = getCodePoint(string);\n\n if (codePoint >= REGIONAL_CHARACTER_A_CODE_POINT && codePoint <= REGIONAL_CHARACTER_Z_CODE_POINT) {\n return true;\n }\n\n return false;\n } // Some Emoji implementations represent combinations of\n // two “regional indicator” letters as a single flag symbol.\n\n\n function isFlagEmoji(string) {\n return isRegionalCode(string.substr(0, 2)) && isRegionalCode(string.substr(2, 2));\n }\n\n function isCombinedCharacter(_char3) {\n return combinedCharacters.indexOf(_char3) !== -1;\n } // Regional flags start with a BLACK_FLAG_CODE_POINT\n // folowed by 5 chars in the TAG range\n // and end with a CANCEL_TAG_CODE_POINT\n\n\n function isRegionalFlag(text, index) {\n var codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint !== BLACK_FLAG_CODE_POINT) {\n return false;\n }\n\n var count = 0;\n index += 2;\n\n while (count < 5) {\n codePoint = getCodePoint(text.substr(index, 2));\n\n if (codePoint < A_TAG_CODE_POINT || codePoint > Z_TAG_CODE_POINT) {\n return false;\n }\n\n count += 1;\n index += 2;\n }\n\n return getCodePoint(text.substr(index, 2)) === CANCEL_TAG_CODE_POINT;\n }\n\n function setIsLoaded() {\n this.isLoaded = true;\n }\n\n var Font = function Font() {\n this.fonts = [];\n this.chars = null;\n this.typekitLoaded = 0;\n this.isLoaded = false;\n this._warned = false;\n this.initTime = Date.now();\n this.setIsLoadedBinded = this.setIsLoaded.bind(this);\n this.checkLoadedFontsBinded = this.checkLoadedFonts.bind(this);\n };\n\n Font.isModifier = isModifier;\n Font.isZeroWidthJoiner = isZeroWidthJoiner;\n Font.isFlagEmoji = isFlagEmoji;\n Font.isRegionalCode = isRegionalCode;\n Font.isCombinedCharacter = isCombinedCharacter;\n Font.isRegionalFlag = isRegionalFlag;\n Font.isVariationSelector = isVariationSelector;\n Font.BLACK_FLAG_CODE_POINT = BLACK_FLAG_CODE_POINT;\n var fontPrototype = {\n addChars: addChars,\n addFonts: addFonts,\n getCharData: getCharData,\n getFontByName: getFontByName,\n measureText: measureText,\n checkLoadedFonts: checkLoadedFonts,\n setIsLoaded: setIsLoaded\n };\n Font.prototype = fontPrototype;\n return Font;\n }();\n\n function SlotManager(animationData) {\n this.animationData = animationData;\n }\n\n SlotManager.prototype.getProp = function (data) {\n if (this.animationData.slots && this.animationData.slots[data.sid]) {\n return Object.assign(data, this.animationData.slots[data.sid].p);\n }\n\n return data;\n };\n\n function slotFactory(animationData) {\n return new SlotManager(animationData);\n }\n\n function RenderableElement() {}\n\n RenderableElement.prototype = {\n initRenderable: function initRenderable() {\n // layer's visibility related to inpoint and outpoint. Rename isVisible to isInRange\n this.isInRange = false; // layer's display state\n\n this.hidden = false; // If layer's transparency equals 0, it can be hidden\n\n this.isTransparent = false; // list of animated components\n\n this.renderableComponents = [];\n },\n addRenderableComponent: function addRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) === -1) {\n this.renderableComponents.push(component);\n }\n },\n removeRenderableComponent: function removeRenderableComponent(component) {\n if (this.renderableComponents.indexOf(component) !== -1) {\n this.renderableComponents.splice(this.renderableComponents.indexOf(component), 1);\n }\n },\n prepareRenderableFrame: function prepareRenderableFrame(num) {\n this.checkLayerLimits(num);\n },\n checkTransparency: function checkTransparency() {\n if (this.finalTransform.mProp.o.v <= 0) {\n if (!this.isTransparent && this.globalData.renderConfig.hideOnTransparent) {\n this.isTransparent = true;\n this.hide();\n }\n } else if (this.isTransparent) {\n this.isTransparent = false;\n this.show();\n }\n },\n\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n *\r\n */\n checkLayerLimits: function checkLayerLimits(num) {\n if (this.data.ip - this.data.st <= num && this.data.op - this.data.st > num) {\n if (this.isInRange !== true) {\n this.globalData._mdf = true;\n this._mdf = true;\n this.isInRange = true;\n this.show();\n }\n } else if (this.isInRange !== false) {\n this.globalData._mdf = true;\n this.isInRange = false;\n this.hide();\n }\n },\n renderRenderable: function renderRenderable() {\n var i;\n var len = this.renderableComponents.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderableComponents[i].renderFrame(this._isFirstFrame);\n }\n /* this.maskManager.renderFrame(this.finalTransform.mat);\r\n this.renderableEffectsManager.renderFrame(this._isFirstFrame); */\n\n },\n sourceRectAtTime: function sourceRectAtTime() {\n return {\n top: 0,\n left: 0,\n width: 100,\n height: 100\n };\n },\n getLayerSize: function getLayerSize() {\n if (this.data.ty === 5) {\n return {\n w: this.data.textData.width,\n h: this.data.textData.height\n };\n }\n\n return {\n w: this.data.width,\n h: this.data.height\n };\n }\n };\n\n var getBlendMode = function () {\n var blendModeEnums = {\n 0: 'source-over',\n 1: 'multiply',\n 2: 'screen',\n 3: 'overlay',\n 4: 'darken',\n 5: 'lighten',\n 6: 'color-dodge',\n 7: 'color-burn',\n 8: 'hard-light',\n 9: 'soft-light',\n 10: 'difference',\n 11: 'exclusion',\n 12: 'hue',\n 13: 'saturation',\n 14: 'color',\n 15: 'luminosity'\n };\n return function (mode) {\n return blendModeEnums[mode] || '';\n };\n }();\n\n function SliderEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function AngleEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function ColorEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function PointEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 1, 0, container);\n }\n\n function LayerIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function MaskIndexEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function CheckboxEffect(data, elem, container) {\n this.p = PropertyFactory.getProp(elem, data.v, 0, 0, container);\n }\n\n function NoValueEffect() {\n this.p = {};\n }\n\n function EffectsManager(data, element) {\n var effects = data.ef || [];\n this.effectElements = [];\n var i;\n var len = effects.length;\n var effectItem;\n\n for (i = 0; i < len; i += 1) {\n effectItem = new GroupEffect(effects[i], element);\n this.effectElements.push(effectItem);\n }\n }\n\n function GroupEffect(data, element) {\n this.init(data, element);\n }\n\n extendPrototype([DynamicPropertyContainer], GroupEffect);\n GroupEffect.prototype.getValue = GroupEffect.prototype.iterateDynamicProperties;\n\n GroupEffect.prototype.init = function (data, element) {\n this.data = data;\n this.effectElements = [];\n this.initDynamicPropertyContainer(element);\n var i;\n var len = this.data.ef.length;\n var eff;\n var effects = this.data.ef;\n\n for (i = 0; i < len; i += 1) {\n eff = null;\n\n switch (effects[i].ty) {\n case 0:\n eff = new SliderEffect(effects[i], element, this);\n break;\n\n case 1:\n eff = new AngleEffect(effects[i], element, this);\n break;\n\n case 2:\n eff = new ColorEffect(effects[i], element, this);\n break;\n\n case 3:\n eff = new PointEffect(effects[i], element, this);\n break;\n\n case 4:\n case 7:\n eff = new CheckboxEffect(effects[i], element, this);\n break;\n\n case 10:\n eff = new LayerIndexEffect(effects[i], element, this);\n break;\n\n case 11:\n eff = new MaskIndexEffect(effects[i], element, this);\n break;\n\n case 5:\n eff = new EffectsManager(effects[i], element, this);\n break;\n // case 6:\n\n default:\n eff = new NoValueEffect(effects[i], element, this);\n break;\n }\n\n if (eff) {\n this.effectElements.push(eff);\n }\n }\n };\n\n function BaseElement() {}\n\n BaseElement.prototype = {\n checkMasks: function checkMasks() {\n if (!this.data.hasMask) {\n return false;\n }\n\n var i = 0;\n var len = this.data.masksProperties.length;\n\n while (i < len) {\n if (this.data.masksProperties[i].mode !== 'n' && this.data.masksProperties[i].cl !== false) {\n return true;\n }\n\n i += 1;\n }\n\n return false;\n },\n initExpressions: function initExpressions() {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var LayerExpressionInterface = expressionsInterfaces('layer');\n var EffectsExpressionInterface = expressionsInterfaces('effects');\n var ShapeExpressionInterface = expressionsInterfaces('shape');\n var TextExpressionInterface = expressionsInterfaces('text');\n var CompExpressionInterface = expressionsInterfaces('comp');\n this.layerInterface = LayerExpressionInterface(this);\n\n if (this.data.hasMask && this.maskManager) {\n this.layerInterface.registerMaskInterface(this.maskManager);\n }\n\n var effectsInterface = EffectsExpressionInterface.createEffectsInterface(this, this.layerInterface);\n this.layerInterface.registerEffectsInterface(effectsInterface);\n\n if (this.data.ty === 0 || this.data.xt) {\n this.compInterface = CompExpressionInterface(this);\n } else if (this.data.ty === 4) {\n this.layerInterface.shapeInterface = ShapeExpressionInterface(this.shapesData, this.itemsData, this.layerInterface);\n this.layerInterface.content = this.layerInterface.shapeInterface;\n } else if (this.data.ty === 5) {\n this.layerInterface.textInterface = TextExpressionInterface(this);\n this.layerInterface.text = this.layerInterface.textInterface;\n }\n },\n setBlendMode: function setBlendMode() {\n var blendModeValue = getBlendMode(this.data.bm);\n var elem = this.baseElement || this.layerElement;\n elem.style['mix-blend-mode'] = blendModeValue;\n },\n initBaseData: function initBaseData(data, globalData, comp) {\n this.globalData = globalData;\n this.comp = comp;\n this.data = data;\n this.layerId = createElementID(); // Stretch factor for old animations missing this property.\n\n if (!this.data.sr) {\n this.data.sr = 1;\n } // effects manager\n\n\n this.effectsManager = new EffectsManager(this.data, this, this.dynamicProperties);\n },\n getType: function getType() {\n return this.type;\n },\n sourceRectAtTime: function sourceRectAtTime() {}\n };\n\n /**\r\n * @file\r\n * Handles element's layer frame update.\r\n * Checks layer in point and out point\r\n *\r\n */\n function FrameElement() {}\n\n FrameElement.prototype = {\n /**\r\n * @function\r\n * Initializes frame related properties.\r\n *\r\n */\n initFrame: function initFrame() {\n // set to true when inpoint is rendered\n this._isFirstFrame = false; // list of animated properties\n\n this.dynamicProperties = []; // If layer has been modified in current tick this will be true\n\n this._mdf = false;\n },\n\n /**\r\n * @function\r\n * Calculates all dynamic values\r\n *\r\n * @param {number} num\r\n * current frame number in Layer's time\r\n * @param {boolean} isVisible\r\n * if layers is currently in range\r\n *\r\n */\n prepareProperties: function prepareProperties(num, isVisible) {\n var i;\n var len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (isVisible || this._isParent && this.dynamicProperties[i].propType === 'transform') {\n this.dynamicProperties[i].getValue();\n\n if (this.dynamicProperties[i]._mdf) {\n this.globalData._mdf = true;\n this._mdf = true;\n }\n }\n }\n },\n addDynamicProperty: function addDynamicProperty(prop) {\n if (this.dynamicProperties.indexOf(prop) === -1) {\n this.dynamicProperties.push(prop);\n }\n }\n };\n\n function FootageElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.footageData = globalData.imageLoader.getAsset(this.assetData);\n this.initBaseData(data, globalData, comp);\n }\n\n FootageElement.prototype.prepareFrame = function () {};\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], FootageElement);\n\n FootageElement.prototype.getBaseElement = function () {\n return null;\n };\n\n FootageElement.prototype.renderFrame = function () {};\n\n FootageElement.prototype.destroy = function () {};\n\n FootageElement.prototype.initExpressions = function () {\n var expressionsInterfaces = getExpressionInterfaces();\n\n if (!expressionsInterfaces) {\n return;\n }\n\n var FootageInterface = expressionsInterfaces('footage');\n this.layerInterface = FootageInterface(this);\n };\n\n FootageElement.prototype.getFootageData = function () {\n return this.footageData;\n };\n\n function AudioElement(data, globalData, comp) {\n this.initFrame();\n this.initRenderable();\n this.assetData = globalData.getAssetData(data.refId);\n this.initBaseData(data, globalData, comp);\n this._isPlaying = false;\n this._canPlay = false;\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.audio = this.globalData.audioController.createAudio(assetPath);\n this._currentTime = 0;\n this.globalData.audioController.addAudio(this);\n this._volumeMultiplier = 1;\n this._volume = 1;\n this._previousVolume = null;\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n this.lv = PropertyFactory.getProp(this, data.au && data.au.lv ? data.au.lv : {\n k: [100]\n }, 1, 0.01, this);\n }\n\n AudioElement.prototype.prepareFrame = function (num) {\n this.prepareRenderableFrame(num, true);\n this.prepareProperties(num, true);\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n this._currentTime = timeRemapped;\n } else {\n this._currentTime = num / this.data.sr;\n }\n\n this._volume = this.lv.v[0];\n var totalVolume = this._volume * this._volumeMultiplier;\n\n if (this._previousVolume !== totalVolume) {\n this._previousVolume = totalVolume;\n this.audio.volume(totalVolume);\n }\n };\n\n extendPrototype([RenderableElement, BaseElement, FrameElement], AudioElement);\n\n AudioElement.prototype.renderFrame = function () {\n if (this.isInRange && this._canPlay) {\n if (!this._isPlaying) {\n this.audio.play();\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n this._isPlaying = true;\n } else if (!this.audio.playing() || Math.abs(this._currentTime / this.globalData.frameRate - this.audio.seek()) > 0.1) {\n this.audio.seek(this._currentTime / this.globalData.frameRate);\n }\n }\n };\n\n AudioElement.prototype.show = function () {// this.audio.play()\n };\n\n AudioElement.prototype.hide = function () {\n this.audio.pause();\n this._isPlaying = false;\n };\n\n AudioElement.prototype.pause = function () {\n this.audio.pause();\n this._isPlaying = false;\n this._canPlay = false;\n };\n\n AudioElement.prototype.resume = function () {\n this._canPlay = true;\n };\n\n AudioElement.prototype.setRate = function (rateValue) {\n this.audio.rate(rateValue);\n };\n\n AudioElement.prototype.volume = function (volumeValue) {\n this._volumeMultiplier = volumeValue;\n this._previousVolume = volumeValue * this._volume;\n this.audio.volume(this._previousVolume);\n };\n\n AudioElement.prototype.getBaseElement = function () {\n return null;\n };\n\n AudioElement.prototype.destroy = function () {};\n\n AudioElement.prototype.sourceRectAtTime = function () {};\n\n AudioElement.prototype.initExpressions = function () {};\n\n function BaseRenderer() {}\n\n BaseRenderer.prototype.checkLayers = function (num) {\n var i;\n var len = this.layers.length;\n var data;\n this.completeLayers = true;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (!this.elements[i]) {\n data = this.layers[i];\n\n if (data.ip - data.st <= num - this.layers[i].st && data.op - data.st > num - this.layers[i].st) {\n this.buildItem(i);\n }\n }\n\n this.completeLayers = this.elements[i] ? this.completeLayers : false;\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.createItem = function (layer) {\n switch (layer.ty) {\n case 2:\n return this.createImage(layer);\n\n case 0:\n return this.createComp(layer);\n\n case 1:\n return this.createSolid(layer);\n\n case 3:\n return this.createNull(layer);\n\n case 4:\n return this.createShape(layer);\n\n case 5:\n return this.createText(layer);\n\n case 6:\n return this.createAudio(layer);\n\n case 13:\n return this.createCamera(layer);\n\n case 15:\n return this.createFootage(layer);\n\n default:\n return this.createNull(layer);\n }\n };\n\n BaseRenderer.prototype.createCamera = function () {\n throw new Error('You\\'re using a 3d camera. Try the html renderer.');\n };\n\n BaseRenderer.prototype.createAudio = function (data) {\n return new AudioElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.createFootage = function (data) {\n return new FootageElement(data, this.globalData, this);\n };\n\n BaseRenderer.prototype.buildAllItems = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n this.buildItem(i);\n }\n\n this.checkPendingElements();\n };\n\n BaseRenderer.prototype.includeLayers = function (newLayers) {\n this.completeLayers = false;\n var i;\n var len = newLayers.length;\n var j;\n var jLen = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n j = 0;\n\n while (j < jLen) {\n if (this.layers[j].id === newLayers[i].id) {\n this.layers[j] = newLayers[i];\n break;\n }\n\n j += 1;\n }\n }\n };\n\n BaseRenderer.prototype.setProjectInterface = function (pInterface) {\n this.globalData.projectInterface = pInterface;\n };\n\n BaseRenderer.prototype.initItems = function () {\n if (!this.globalData.progressiveLoad) {\n this.buildAllItems();\n }\n };\n\n BaseRenderer.prototype.buildElementParenting = function (element, parentName, hierarchy) {\n var elements = this.elements;\n var layers = this.layers;\n var i = 0;\n var len = layers.length;\n\n while (i < len) {\n if (layers[i].ind == parentName) {\n // eslint-disable-line eqeqeq\n if (!elements[i] || elements[i] === true) {\n this.buildItem(i);\n this.addPendingElement(element);\n } else {\n hierarchy.push(elements[i]);\n elements[i].setAsParent();\n\n if (layers[i].parent !== undefined) {\n this.buildElementParenting(element, layers[i].parent, hierarchy);\n } else {\n element.setHierarchy(hierarchy);\n }\n }\n }\n\n i += 1;\n }\n };\n\n BaseRenderer.prototype.addPendingElement = function (element) {\n this.pendingElements.push(element);\n };\n\n BaseRenderer.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i]);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n BaseRenderer.prototype.getElementById = function (ind) {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.ind === ind) {\n return this.elements[i];\n }\n }\n\n return null;\n };\n\n BaseRenderer.prototype.getElementByPath = function (path) {\n var pathValue = path.shift();\n var element;\n\n if (typeof pathValue === 'number') {\n element = this.elements[pathValue];\n } else {\n var i;\n var len = this.elements.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i].data.nm === pathValue) {\n element = this.elements[i];\n break;\n }\n }\n }\n\n if (path.length === 0) {\n return element;\n }\n\n return element.getElementByPath(path);\n };\n\n BaseRenderer.prototype.setupGlobalData = function (animData, fontsContainer) {\n this.globalData.fontManager = new FontManager();\n this.globalData.slotManager = slotFactory(animData);\n this.globalData.fontManager.addChars(animData.chars);\n this.globalData.fontManager.addFonts(animData.fonts, fontsContainer);\n this.globalData.getAssetData = this.animationItem.getAssetData.bind(this.animationItem);\n this.globalData.getAssetsPath = this.animationItem.getAssetsPath.bind(this.animationItem);\n this.globalData.imageLoader = this.animationItem.imagePreloader;\n this.globalData.audioController = this.animationItem.audioController;\n this.globalData.frameId = 0;\n this.globalData.frameRate = animData.fr;\n this.globalData.nm = animData.nm;\n this.globalData.compSize = {\n w: animData.w,\n h: animData.h\n };\n };\n\n var effectTypes = {\n TRANSFORM_EFFECT: 'transformEFfect'\n };\n\n function TransformElement() {}\n\n TransformElement.prototype = {\n initTransform: function initTransform() {\n var mat = new Matrix();\n this.finalTransform = {\n mProp: this.data.ks ? TransformPropertyFactory.getTransformProperty(this, this.data.ks, this) : {\n o: 0\n },\n _matMdf: false,\n _localMatMdf: false,\n _opMdf: false,\n mat: mat,\n localMat: mat,\n localOpacity: 1\n };\n\n if (this.data.ao) {\n this.finalTransform.mProp.autoOriented = true;\n } // TODO: check TYPE 11: Guided elements\n\n\n if (this.data.ty !== 11) {// this.createElements();\n }\n },\n renderTransform: function renderTransform() {\n this.finalTransform._opMdf = this.finalTransform.mProp.o._mdf || this._isFirstFrame;\n this.finalTransform._matMdf = this.finalTransform.mProp._mdf || this._isFirstFrame;\n\n if (this.hierarchy) {\n var mat;\n var finalMat = this.finalTransform.mat;\n var i = 0;\n var len = this.hierarchy.length; // Checking if any of the transformation matrices in the hierarchy chain has changed.\n\n if (!this.finalTransform._matMdf) {\n while (i < len) {\n if (this.hierarchy[i].finalTransform.mProp._mdf) {\n this.finalTransform._matMdf = true;\n break;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._matMdf) {\n mat = this.finalTransform.mProp.v.props;\n finalMat.cloneFromProps(mat);\n\n for (i = 0; i < len; i += 1) {\n finalMat.multiply(this.hierarchy[i].finalTransform.mProp.v);\n }\n }\n }\n\n if (this.finalTransform._matMdf) {\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n }\n\n if (this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n }\n },\n renderLocalTransform: function renderLocalTransform() {\n if (this.localTransforms) {\n var i = 0;\n var len = this.localTransforms.length;\n this.finalTransform._localMatMdf = this.finalTransform._matMdf;\n\n if (!this.finalTransform._localMatMdf || !this.finalTransform._opMdf) {\n while (i < len) {\n if (this.localTransforms[i]._mdf) {\n this.finalTransform._localMatMdf = true;\n }\n\n if (this.localTransforms[i]._opMdf && !this.finalTransform._opMdf) {\n this.finalTransform.localOpacity = this.finalTransform.mProp.o.v;\n this.finalTransform._opMdf = true;\n }\n\n i += 1;\n }\n }\n\n if (this.finalTransform._localMatMdf) {\n var localMat = this.finalTransform.localMat;\n this.localTransforms[0].matrix.clone(localMat);\n\n for (i = 1; i < len; i += 1) {\n var lmat = this.localTransforms[i].matrix;\n localMat.multiply(lmat);\n }\n\n localMat.multiply(this.finalTransform.mat);\n }\n\n if (this.finalTransform._opMdf) {\n var localOp = this.finalTransform.localOpacity;\n\n for (i = 0; i < len; i += 1) {\n localOp *= this.localTransforms[i].opacity * 0.01;\n }\n\n this.finalTransform.localOpacity = localOp;\n }\n }\n },\n searchEffectTransforms: function searchEffectTransforms() {\n if (this.renderableEffectsManager) {\n var transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n\n if (transformEffects.length) {\n this.localTransforms = [];\n this.finalTransform.localMat = new Matrix();\n var i = 0;\n var len = transformEffects.length;\n\n for (i = 0; i < len; i += 1) {\n this.localTransforms.push(transformEffects[i]);\n }\n }\n }\n },\n globalToLocal: function globalToLocal(pt) {\n var transforms = [];\n transforms.push(this.finalTransform);\n var flag = true;\n var comp = this.comp;\n\n while (flag) {\n if (comp.finalTransform) {\n if (comp.data.hasMask) {\n transforms.splice(0, 0, comp.finalTransform);\n }\n\n comp = comp.comp;\n } else {\n flag = false;\n }\n }\n\n var i;\n var len = transforms.length;\n var ptNew;\n\n for (i = 0; i < len; i += 1) {\n ptNew = transforms[i].mat.applyToPointArray(0, 0, 0); // ptNew = transforms[i].mat.applyToPointArray(pt[0],pt[1],pt[2]);\n\n pt = [pt[0] - ptNew[0], pt[1] - ptNew[1], 0];\n }\n\n return pt;\n },\n mHelper: new Matrix()\n };\n\n function MaskElement(data, element, globalData) {\n this.data = data;\n this.element = element;\n this.globalData = globalData;\n this.storedData = [];\n this.masksProperties = this.data.masksProperties || [];\n this.maskElement = null;\n var defs = this.globalData.defs;\n var i;\n var len = this.masksProperties ? this.masksProperties.length : 0;\n this.viewData = createSizedArray(len);\n this.solidPath = '';\n var path;\n var properties = this.masksProperties;\n var count = 0;\n var currentMasks = [];\n var j;\n var jLen;\n var layerId = createElementID();\n var rect;\n var expansor;\n var feMorph;\n var x;\n var maskType = 'clipPath';\n var maskRef = 'clip-path';\n\n for (i = 0; i < len; i += 1) {\n if (properties[i].mode !== 'a' && properties[i].mode !== 'n' || properties[i].inv || properties[i].o.k !== 100 || properties[i].o.x) {\n maskType = 'mask';\n maskRef = 'mask';\n }\n\n if ((properties[i].mode === 's' || properties[i].mode === 'i') && count === 0) {\n rect = createNS('rect');\n rect.setAttribute('fill', '#ffffff');\n rect.setAttribute('width', this.element.comp.data.w || 0);\n rect.setAttribute('height', this.element.comp.data.h || 0);\n currentMasks.push(rect);\n } else {\n rect = null;\n }\n\n path = createNS('path');\n\n if (properties[i].mode === 'n') {\n // TODO move this to a factory or to a constructor\n this.viewData[i] = {\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n elem: path,\n lastPath: ''\n };\n defs.appendChild(path);\n } else {\n count += 1;\n path.setAttribute('fill', properties[i].mode === 's' ? '#000000' : '#ffffff');\n path.setAttribute('clip-rule', 'nonzero');\n var filterID;\n\n if (properties[i].x.k !== 0) {\n maskType = 'mask';\n maskRef = 'mask';\n x = PropertyFactory.getProp(this.element, properties[i].x, 0, null, this.element);\n filterID = createElementID();\n expansor = createNS('filter');\n expansor.setAttribute('id', filterID);\n feMorph = createNS('feMorphology');\n feMorph.setAttribute('operator', 'erode');\n feMorph.setAttribute('in', 'SourceGraphic');\n feMorph.setAttribute('radius', '0');\n expansor.appendChild(feMorph);\n defs.appendChild(expansor);\n path.setAttribute('stroke', properties[i].mode === 's' ? '#000000' : '#ffffff');\n } else {\n feMorph = null;\n x = null;\n } // TODO move this to a factory or to a constructor\n\n\n this.storedData[i] = {\n elem: path,\n x: x,\n expan: feMorph,\n lastPath: '',\n lastOperator: '',\n filterId: filterID,\n lastRadius: 0\n };\n\n if (properties[i].mode === 'i') {\n jLen = currentMasks.length;\n var g = createNS('g');\n\n for (j = 0; j < jLen; j += 1) {\n g.appendChild(currentMasks[j]);\n }\n\n var mask = createNS('mask');\n mask.setAttribute('mask-type', 'alpha');\n mask.setAttribute('id', layerId + '_' + count);\n mask.appendChild(path);\n defs.appendChild(mask);\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + layerId + '_' + count + ')');\n currentMasks.length = 0;\n currentMasks.push(g);\n } else {\n currentMasks.push(path);\n }\n\n if (properties[i].inv && !this.solidPath) {\n this.solidPath = this.createLayerSolidPath();\n } // TODO move this to a factory or to a constructor\n\n\n this.viewData[i] = {\n elem: path,\n lastPath: '',\n op: PropertyFactory.getProp(this.element, properties[i].o, 0, 0.01, this.element),\n prop: ShapePropertyFactory.getShapeProp(this.element, properties[i], 3),\n invRect: rect\n };\n\n if (!this.viewData[i].prop.k) {\n this.drawPath(properties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n }\n }\n\n this.maskElement = createNS(maskType);\n len = currentMasks.length;\n\n for (i = 0; i < len; i += 1) {\n this.maskElement.appendChild(currentMasks[i]);\n }\n\n if (count > 0) {\n this.maskElement.setAttribute('id', layerId);\n this.element.maskedElement.setAttribute(maskRef, 'url(' + getLocationHref() + '#' + layerId + ')');\n defs.appendChild(this.maskElement);\n }\n\n if (this.viewData.length) {\n this.element.addRenderableComponent(this);\n }\n }\n\n MaskElement.prototype.getMaskProperty = function (pos) {\n return this.viewData[pos].prop;\n };\n\n MaskElement.prototype.renderFrame = function (isFirstFrame) {\n var finalMat = this.element.finalTransform.mat;\n var i;\n var len = this.masksProperties.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.viewData[i].prop._mdf || isFirstFrame) {\n this.drawPath(this.masksProperties[i], this.viewData[i].prop.v, this.viewData[i]);\n }\n\n if (this.viewData[i].op._mdf || isFirstFrame) {\n this.viewData[i].elem.setAttribute('fill-opacity', this.viewData[i].op.v);\n }\n\n if (this.masksProperties[i].mode !== 'n') {\n if (this.viewData[i].invRect && (this.element.finalTransform.mProp._mdf || isFirstFrame)) {\n this.viewData[i].invRect.setAttribute('transform', finalMat.getInverseMatrix().to2dCSS());\n }\n\n if (this.storedData[i].x && (this.storedData[i].x._mdf || isFirstFrame)) {\n var feMorph = this.storedData[i].expan;\n\n if (this.storedData[i].x.v < 0) {\n if (this.storedData[i].lastOperator !== 'erode') {\n this.storedData[i].lastOperator = 'erode';\n this.storedData[i].elem.setAttribute('filter', 'url(' + getLocationHref() + '#' + this.storedData[i].filterId + ')');\n }\n\n feMorph.setAttribute('radius', -this.storedData[i].x.v);\n } else {\n if (this.storedData[i].lastOperator !== 'dilate') {\n this.storedData[i].lastOperator = 'dilate';\n this.storedData[i].elem.setAttribute('filter', null);\n }\n\n this.storedData[i].elem.setAttribute('stroke-width', this.storedData[i].x.v * 2);\n }\n }\n }\n }\n };\n\n MaskElement.prototype.getMaskelement = function () {\n return this.maskElement;\n };\n\n MaskElement.prototype.createLayerSolidPath = function () {\n var path = 'M0,0 ';\n path += ' h' + this.globalData.compSize.w;\n path += ' v' + this.globalData.compSize.h;\n path += ' h-' + this.globalData.compSize.w;\n path += ' v-' + this.globalData.compSize.h + ' ';\n return path;\n };\n\n MaskElement.prototype.drawPath = function (pathData, pathNodes, viewData) {\n var pathString = ' M' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n var i;\n var len;\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[i][0]+','+pathNodes.i[i][1] + \" \"+pathNodes.v[i][0]+','+pathNodes.v[i][1];\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[i][0] + ',' + pathNodes.i[i][1] + ' ' + pathNodes.v[i][0] + ',' + pathNodes.v[i][1];\n } // pathString += \" C\"+pathNodes.o[i-1][0]+','+pathNodes.o[i-1][1] + \" \"+pathNodes.i[0][0]+','+pathNodes.i[0][1] + \" \"+pathNodes.v[0][0]+','+pathNodes.v[0][1];\n\n\n if (pathNodes.c && len > 1) {\n pathString += ' C' + pathNodes.o[i - 1][0] + ',' + pathNodes.o[i - 1][1] + ' ' + pathNodes.i[0][0] + ',' + pathNodes.i[0][1] + ' ' + pathNodes.v[0][0] + ',' + pathNodes.v[0][1];\n } // pathNodes.__renderedString = pathString;\n\n\n if (viewData.lastPath !== pathString) {\n var pathShapeValue = '';\n\n if (viewData.elem) {\n if (pathNodes.c) {\n pathShapeValue = pathData.inv ? this.solidPath + pathString : pathString;\n }\n\n viewData.elem.setAttribute('d', pathShapeValue);\n }\n\n viewData.lastPath = pathString;\n }\n };\n\n MaskElement.prototype.destroy = function () {\n this.element = null;\n this.globalData = null;\n this.maskElement = null;\n this.data = null;\n this.masksProperties = null;\n };\n\n var filtersFactory = function () {\n var ob = {};\n ob.createFilter = createFilter;\n ob.createAlphaToLuminanceFilter = createAlphaToLuminanceFilter;\n\n function createFilter(filId, skipCoordinates) {\n var fil = createNS('filter');\n fil.setAttribute('id', filId);\n\n if (skipCoordinates !== true) {\n fil.setAttribute('filterUnits', 'objectBoundingBox');\n fil.setAttribute('x', '0%');\n fil.setAttribute('y', '0%');\n fil.setAttribute('width', '100%');\n fil.setAttribute('height', '100%');\n }\n\n return fil;\n }\n\n function createAlphaToLuminanceFilter() {\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 1');\n return feColorMatrix;\n }\n\n return ob;\n }();\n\n var featureSupport = function () {\n var ob = {\n maskType: true,\n svgLumaHidden: true,\n offscreenCanvas: typeof OffscreenCanvas !== 'undefined'\n };\n\n if (/MSIE 10/i.test(navigator.userAgent) || /MSIE 9/i.test(navigator.userAgent) || /rv:11.0/i.test(navigator.userAgent) || /Edge\\/\\d./i.test(navigator.userAgent)) {\n ob.maskType = false;\n }\n\n if (/firefox/i.test(navigator.userAgent)) {\n ob.svgLumaHidden = false;\n }\n\n return ob;\n }();\n\n var registeredEffects$1 = {};\n var idPrefix = 'filter_result_';\n\n function SVGEffects(elem) {\n var i;\n var source = 'SourceGraphic';\n var len = elem.data.ef ? elem.data.ef.length : 0;\n var filId = createElementID();\n var fil = filtersFactory.createFilter(filId, true);\n var count = 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects$1[type]) {\n var Effect = registeredEffects$1[type].effect;\n filterManager = new Effect(fil, elem.effectsManager.effectElements[i], elem, idPrefix + count, source);\n source = idPrefix + count;\n\n if (registeredEffects$1[type].countsAsEffect) {\n count += 1;\n }\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (count) {\n elem.globalData.defs.appendChild(fil);\n elem.layerElement.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n SVGEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n SVGEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect$1(id, effect, countsAsEffect) {\n registeredEffects$1[id] = {\n effect: effect,\n countsAsEffect: countsAsEffect\n };\n }\n\n function SVGBaseElement() {}\n\n SVGBaseElement.prototype = {\n initRendererElement: function initRendererElement() {\n this.layerElement = createNS('g');\n },\n createContainerElements: function createContainerElements() {\n this.matteElement = createNS('g');\n this.transformedElement = this.layerElement;\n this.maskedElement = this.layerElement;\n this._sizeChanged = false;\n var layerElementParent = null; // If this layer acts as a mask for the following layer\n\n if (this.data.td) {\n this.matteMasks = {};\n var gg = createNS('g');\n gg.setAttribute('id', this.layerId);\n gg.appendChild(this.layerElement);\n layerElementParent = gg;\n this.globalData.defs.appendChild(gg);\n } else if (this.data.tt) {\n this.matteElement.appendChild(this.layerElement);\n layerElementParent = this.matteElement;\n this.baseElement = this.matteElement;\n } else {\n this.baseElement = this.layerElement;\n }\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n } // Clipping compositions to hide content that exceeds boundaries. If collapsed transformations is on, component should not be clipped\n\n\n if (this.data.ty === 0 && !this.data.hd) {\n var cp = createNS('clipPath');\n var pt = createNS('path');\n pt.setAttribute('d', 'M0,0 L' + this.data.w + ',0 L' + this.data.w + ',' + this.data.h + ' L0,' + this.data.h + 'z');\n var clipId = createElementID();\n cp.setAttribute('id', clipId);\n cp.appendChild(pt);\n this.globalData.defs.appendChild(cp);\n\n if (this.checkMasks()) {\n var cpGroup = createNS('g');\n cpGroup.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n cpGroup.appendChild(this.layerElement);\n this.transformedElement = cpGroup;\n\n if (layerElementParent) {\n layerElementParent.appendChild(this.transformedElement);\n } else {\n this.baseElement = this.transformedElement;\n }\n } else {\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + clipId + ')');\n }\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n if (this.finalTransform._localMatMdf) {\n this.transformedElement.setAttribute('transform', this.finalTransform.localMat.to2dCSS());\n }\n\n if (this.finalTransform._opMdf) {\n this.transformedElement.setAttribute('opacity', this.finalTransform.localOpacity);\n }\n },\n destroyBaseElement: function destroyBaseElement() {\n this.layerElement = null;\n this.matteElement = null;\n this.maskManager.destroy();\n },\n getBaseElement: function getBaseElement() {\n if (this.data.hd) {\n return null;\n }\n\n return this.baseElement;\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n this.renderableEffectsManager = new SVGEffects(this);\n this.searchEffectTransforms();\n },\n getMatte: function getMatte(matteType) {\n // This should not be a common case. But for backward compatibility, we'll create the matte object.\n // It solves animations that have two consecutive layers marked as matte masks.\n // Which is an undefined behavior in AE.\n if (!this.matteMasks) {\n this.matteMasks = {};\n }\n\n if (!this.matteMasks[matteType]) {\n var id = this.layerId + '_' + matteType;\n var filId;\n var fil;\n var useElement;\n var gg;\n\n if (matteType === 1 || matteType === 3) {\n var masker = createNS('mask');\n masker.setAttribute('id', id);\n masker.setAttribute('mask-type', matteType === 3 ? 'luminance' : 'alpha');\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n masker.appendChild(useElement);\n this.globalData.defs.appendChild(masker);\n\n if (!featureSupport.maskType && matteType === 1) {\n masker.setAttribute('mask-type', 'luminance');\n filId = createElementID();\n fil = filtersFactory.createFilter(filId);\n this.globalData.defs.appendChild(fil);\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n gg.appendChild(useElement);\n masker.appendChild(gg);\n gg.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n }\n } else if (matteType === 2) {\n var maskGroup = createNS('mask');\n maskGroup.setAttribute('id', id);\n maskGroup.setAttribute('mask-type', 'alpha');\n var maskGrouper = createNS('g');\n maskGroup.appendChild(maskGrouper);\n filId = createElementID();\n fil = filtersFactory.createFilter(filId); /// /\n\n var feCTr = createNS('feComponentTransfer');\n feCTr.setAttribute('in', 'SourceGraphic');\n fil.appendChild(feCTr);\n var feFunc = createNS('feFuncA');\n feFunc.setAttribute('type', 'table');\n feFunc.setAttribute('tableValues', '1.0 0.0');\n feCTr.appendChild(feFunc); /// /\n\n this.globalData.defs.appendChild(fil);\n var alphaRect = createNS('rect');\n alphaRect.setAttribute('width', this.comp.data.w);\n alphaRect.setAttribute('height', this.comp.data.h);\n alphaRect.setAttribute('x', '0');\n alphaRect.setAttribute('y', '0');\n alphaRect.setAttribute('fill', '#ffffff');\n alphaRect.setAttribute('opacity', '0');\n maskGrouper.setAttribute('filter', 'url(' + getLocationHref() + '#' + filId + ')');\n maskGrouper.appendChild(alphaRect);\n useElement = createNS('use');\n useElement.setAttributeNS('http://www.w3.org/1999/xlink', 'href', '#' + this.layerId);\n maskGrouper.appendChild(useElement);\n\n if (!featureSupport.maskType) {\n maskGroup.setAttribute('mask-type', 'luminance');\n fil.appendChild(filtersFactory.createAlphaToLuminanceFilter());\n gg = createNS('g');\n maskGrouper.appendChild(alphaRect);\n gg.appendChild(this.layerElement);\n maskGrouper.appendChild(gg);\n }\n\n this.globalData.defs.appendChild(maskGroup);\n }\n\n this.matteMasks[matteType] = id;\n }\n\n return this.matteMasks[matteType];\n },\n setMatte: function setMatte(id) {\n if (!this.matteElement) {\n return;\n }\n\n this.matteElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n }\n };\n\n /**\r\n * @file\r\n * Handles AE's layer parenting property.\r\n *\r\n */\n function HierarchyElement() {}\n\n HierarchyElement.prototype = {\n /**\r\n * @function\r\n * Initializes hierarchy properties\r\n *\r\n */\n initHierarchy: function initHierarchy() {\n // element's parent list\n this.hierarchy = []; // if element is parent of another layer _isParent will be true\n\n this._isParent = false;\n this.checkParenting();\n },\n\n /**\r\n * @function\r\n * Sets layer's hierarchy.\r\n * @param {array} hierarch\r\n * layer's parent list\r\n *\r\n */\n setHierarchy: function setHierarchy(hierarchy) {\n this.hierarchy = hierarchy;\n },\n\n /**\r\n * @function\r\n * Sets layer as parent.\r\n *\r\n */\n setAsParent: function setAsParent() {\n this._isParent = true;\n },\n\n /**\r\n * @function\r\n * Searches layer's parenting chain\r\n *\r\n */\n checkParenting: function checkParenting() {\n if (this.data.parent !== undefined) {\n this.comp.buildElementParenting(this, this.data.parent, []);\n }\n }\n };\n\n function RenderableDOMElement() {}\n\n (function () {\n var _prototype = {\n initElement: function initElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n },\n hide: function hide() {\n // console.log('HIDE', this);\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'none';\n this.hidden = true;\n }\n },\n show: function show() {\n // console.log('SHOW', this);\n if (this.isInRange && !this.isTransparent) {\n if (!this.data.hd) {\n var elem = this.baseElement || this.layerElement;\n elem.style.display = 'block';\n }\n\n this.hidden = false;\n this._isFirstFrame = true;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n renderInnerContent: function renderInnerContent() {},\n prepareFrame: function prepareFrame(num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n this.checkTransparency();\n },\n destroy: function destroy() {\n this.innerElem = null;\n this.destroyBaseElement();\n }\n };\n extendPrototype([RenderableElement, createProxyFunction(_prototype)], RenderableDOMElement);\n })();\n\n function IImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n\n if (this.assetData && this.assetData.sid) {\n this.assetData = globalData.slotManager.getProp(this.assetData);\n }\n\n this.initElement(data, globalData, comp);\n this.sourceRect = {\n top: 0,\n left: 0,\n width: this.assetData.w,\n height: this.assetData.h\n };\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], IImageElement);\n\n IImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n this.innerElem = createNS('image');\n this.innerElem.setAttribute('width', this.assetData.w + 'px');\n this.innerElem.setAttribute('height', this.assetData.h + 'px');\n this.innerElem.setAttribute('preserveAspectRatio', this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio);\n this.innerElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.innerElem);\n };\n\n IImageElement.prototype.sourceRectAtTime = function () {\n return this.sourceRect;\n };\n\n function ProcessedElement(element, position) {\n this.elem = element;\n this.pos = position;\n }\n\n function IShapeElement() {}\n\n IShapeElement.prototype = {\n addShapeToModifiers: function addShapeToModifiers(data) {\n var i;\n var len = this.shapeModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapeModifiers[i].addShape(data);\n }\n },\n isShapeInAnimatedModifiers: function isShapeInAnimatedModifiers(data) {\n var i = 0;\n var len = this.shapeModifiers.length;\n\n while (i < len) {\n if (this.shapeModifiers[i].isAnimatedWithShape(data)) {\n return true;\n }\n }\n\n return false;\n },\n renderModifiers: function renderModifiers() {\n if (!this.shapeModifiers.length) {\n return;\n }\n\n var i;\n var len = this.shapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.shapes[i].sh.reset();\n }\n\n len = this.shapeModifiers.length;\n var shouldBreakProcess;\n\n for (i = len - 1; i >= 0; i -= 1) {\n shouldBreakProcess = this.shapeModifiers[i].processShapes(this._isFirstFrame); // workaround to fix cases where a repeater resets the shape so the following processes get called twice\n // TODO: find a better solution for this\n\n if (shouldBreakProcess) {\n break;\n }\n }\n },\n searchProcessedElement: function searchProcessedElement(elem) {\n var elements = this.processedElements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i].elem === elem) {\n return elements[i].pos;\n }\n\n i += 1;\n }\n\n return 0;\n },\n addProcessedElement: function addProcessedElement(elem, pos) {\n var elements = this.processedElements;\n var i = elements.length;\n\n while (i) {\n i -= 1;\n\n if (elements[i].elem === elem) {\n elements[i].pos = pos;\n return;\n }\n }\n\n elements.push(new ProcessedElement(elem, pos));\n },\n prepareFrame: function prepareFrame(num) {\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n }\n };\n\n var lineCapEnum = {\n 1: 'butt',\n 2: 'round',\n 3: 'square'\n };\n var lineJoinEnum = {\n 1: 'miter',\n 2: 'round',\n 3: 'bevel'\n };\n\n function SVGShapeData(transformers, level, shape) {\n this.caches = [];\n this.styles = [];\n this.transformers = transformers;\n this.lStr = '';\n this.sh = shape;\n this.lvl = level; // TODO find if there are some cases where _isAnimated can be false.\n // For now, since shapes add up with other shapes. They have to be calculated every time.\n // One way of finding out is checking if all styles associated to this shape depend only of this shape\n\n this._isAnimated = !!shape.k; // TODO: commenting this for now since all shapes are animated\n\n var i = 0;\n var len = transformers.length;\n\n while (i < len) {\n if (transformers[i].mProps.dynamicProperties.length) {\n this._isAnimated = true;\n break;\n }\n\n i += 1;\n }\n }\n\n SVGShapeData.prototype.setAsAnimated = function () {\n this._isAnimated = true;\n };\n\n function SVGStyleData(data, level) {\n this.data = data;\n this.type = data.ty;\n this.d = '';\n this.lvl = level;\n this._mdf = false;\n this.closed = data.hd === true;\n this.pElem = createNS('path');\n this.msElem = null;\n }\n\n SVGStyleData.prototype.reset = function () {\n this.d = '';\n this._mdf = false;\n };\n\n function DashProperty(elem, data, renderer, container) {\n this.elem = elem;\n this.frameId = -1;\n this.dataProps = createSizedArray(data.length);\n this.renderer = renderer;\n this.k = false;\n this.dashStr = '';\n this.dashArray = createTypedArray('float32', data.length ? data.length - 1 : 0);\n this.dashoffset = createTypedArray('float32', 1);\n this.initDynamicPropertyContainer(container);\n var i;\n var len = data.length || 0;\n var prop;\n\n for (i = 0; i < len; i += 1) {\n prop = PropertyFactory.getProp(elem, data[i].v, 0, 0, this);\n this.k = prop.k || this.k;\n this.dataProps[i] = {\n n: data[i].n,\n p: prop\n };\n }\n\n if (!this.k) {\n this.getValue(true);\n }\n\n this._isAnimated = this.k;\n }\n\n DashProperty.prototype.getValue = function (forceRender) {\n if (this.elem.globalData.frameId === this.frameId && !forceRender) {\n return;\n }\n\n this.frameId = this.elem.globalData.frameId;\n this.iterateDynamicProperties();\n this._mdf = this._mdf || forceRender;\n\n if (this._mdf) {\n var i = 0;\n var len = this.dataProps.length;\n\n if (this.renderer === 'svg') {\n this.dashStr = '';\n }\n\n for (i = 0; i < len; i += 1) {\n if (this.dataProps[i].n !== 'o') {\n if (this.renderer === 'svg') {\n this.dashStr += ' ' + this.dataProps[i].p.v;\n } else {\n this.dashArray[i] = this.dataProps[i].p.v;\n }\n } else {\n this.dashoffset[0] = this.dataProps[i].p.v;\n }\n }\n }\n };\n\n extendPrototype([DynamicPropertyContainer], DashProperty);\n\n function SVGStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGStrokeStyleData);\n\n function SVGFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.c = PropertyFactory.getProp(elem, data.c, 1, 255, this);\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGFillStyleData);\n\n function SVGNoStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.style = styleOb;\n }\n\n extendPrototype([DynamicPropertyContainer], SVGNoStyleData);\n\n function GradientProperty(elem, data, container) {\n this.data = data;\n this.c = createTypedArray('uint8c', data.p * 4);\n var cLength = data.k.k[0].s ? data.k.k[0].s.length - data.p * 4 : data.k.k.length - data.p * 4;\n this.o = createTypedArray('float32', cLength);\n this._cmdf = false;\n this._omdf = false;\n this._collapsable = this.checkCollapsable();\n this._hasOpacity = cLength;\n this.initDynamicPropertyContainer(container);\n this.prop = PropertyFactory.getProp(elem, data.k, 1, null, this);\n this.k = this.prop.k;\n this.getValue(true);\n }\n\n GradientProperty.prototype.comparePoints = function (values, points) {\n var i = 0;\n var len = this.o.length / 2;\n var diff;\n\n while (i < len) {\n diff = Math.abs(values[i * 4] - values[points * 4 + i * 2]);\n\n if (diff > 0.01) {\n return false;\n }\n\n i += 1;\n }\n\n return true;\n };\n\n GradientProperty.prototype.checkCollapsable = function () {\n if (this.o.length / 2 !== this.c.length / 4) {\n return false;\n }\n\n if (this.data.k.k[0].s) {\n var i = 0;\n var len = this.data.k.k.length;\n\n while (i < len) {\n if (!this.comparePoints(this.data.k.k[i].s, this.data.p)) {\n return false;\n }\n\n i += 1;\n }\n } else if (!this.comparePoints(this.data.k.k, this.data.p)) {\n return false;\n }\n\n return true;\n };\n\n GradientProperty.prototype.getValue = function (forceRender) {\n this.prop.getValue();\n this._mdf = false;\n this._cmdf = false;\n this._omdf = false;\n\n if (this.prop._mdf || forceRender) {\n var i;\n var len = this.data.p * 4;\n var mult;\n var val;\n\n for (i = 0; i < len; i += 1) {\n mult = i % 4 === 0 ? 100 : 255;\n val = Math.round(this.prop.v[i] * mult);\n\n if (this.c[i] !== val) {\n this.c[i] = val;\n this._cmdf = !forceRender;\n }\n }\n\n if (this.o.length) {\n len = this.prop.v.length;\n\n for (i = this.data.p * 4; i < len; i += 1) {\n mult = i % 2 === 0 ? 100 : 1;\n val = i % 2 === 0 ? Math.round(this.prop.v[i] * 100) : this.prop.v[i];\n\n if (this.o[i - this.data.p * 4] !== val) {\n this.o[i - this.data.p * 4] = val;\n this._omdf = !forceRender;\n }\n }\n }\n\n this._mdf = !forceRender;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], GradientProperty);\n\n function SVGGradientFillStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.initGradientData(elem, data, styleOb);\n }\n\n SVGGradientFillStyleData.prototype.initGradientData = function (elem, data, styleOb) {\n this.o = PropertyFactory.getProp(elem, data.o, 0, 0.01, this);\n this.s = PropertyFactory.getProp(elem, data.s, 1, null, this);\n this.e = PropertyFactory.getProp(elem, data.e, 1, null, this);\n this.h = PropertyFactory.getProp(elem, data.h || {\n k: 0\n }, 0, 0.01, this);\n this.a = PropertyFactory.getProp(elem, data.a || {\n k: 0\n }, 0, degToRads, this);\n this.g = new GradientProperty(elem, data.g, this);\n this.style = styleOb;\n this.stops = [];\n this.setGradientData(styleOb.pElem, data);\n this.setGradientOpacity(data, styleOb);\n this._isAnimated = !!this._isAnimated;\n };\n\n SVGGradientFillStyleData.prototype.setGradientData = function (pathElement, data) {\n var gradientId = createElementID();\n var gfill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n gfill.setAttribute('id', gradientId);\n gfill.setAttribute('spreadMethod', 'pad');\n gfill.setAttribute('gradientUnits', 'userSpaceOnUse');\n var stops = [];\n var stop;\n var j;\n var jLen;\n jLen = data.g.p * 4;\n\n for (j = 0; j < jLen; j += 4) {\n stop = createNS('stop');\n gfill.appendChild(stop);\n stops.push(stop);\n }\n\n pathElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + gradientId + ')');\n this.gf = gfill;\n this.cst = stops;\n };\n\n SVGGradientFillStyleData.prototype.setGradientOpacity = function (data, styleOb) {\n if (this.g._hasOpacity && !this.g._collapsable) {\n var stop;\n var j;\n var jLen;\n var mask = createNS('mask');\n var maskElement = createNS('path');\n mask.appendChild(maskElement);\n var opacityId = createElementID();\n var maskId = createElementID();\n mask.setAttribute('id', maskId);\n var opFill = createNS(data.t === 1 ? 'linearGradient' : 'radialGradient');\n opFill.setAttribute('id', opacityId);\n opFill.setAttribute('spreadMethod', 'pad');\n opFill.setAttribute('gradientUnits', 'userSpaceOnUse');\n jLen = data.g.k.k[0].s ? data.g.k.k[0].s.length : data.g.k.k.length;\n var stops = this.stops;\n\n for (j = data.g.p * 4; j < jLen; j += 2) {\n stop = createNS('stop');\n stop.setAttribute('stop-color', 'rgb(255,255,255)');\n opFill.appendChild(stop);\n stops.push(stop);\n }\n\n maskElement.setAttribute(data.ty === 'gf' ? 'fill' : 'stroke', 'url(' + getLocationHref() + '#' + opacityId + ')');\n\n if (data.ty === 'gs') {\n maskElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n maskElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n\n if (data.lj === 1) {\n maskElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n this.of = opFill;\n this.ms = mask;\n this.ost = stops;\n this.maskId = maskId;\n styleOb.msElem = maskElement;\n }\n };\n\n extendPrototype([DynamicPropertyContainer], SVGGradientFillStyleData);\n\n function SVGGradientStrokeStyleData(elem, data, styleOb) {\n this.initDynamicPropertyContainer(elem);\n this.getValue = this.iterateDynamicProperties;\n this.w = PropertyFactory.getProp(elem, data.w, 0, null, this);\n this.d = new DashProperty(elem, data.d || {}, 'svg', this);\n this.initGradientData(elem, data, styleOb);\n this._isAnimated = !!this._isAnimated;\n }\n\n extendPrototype([SVGGradientFillStyleData, DynamicPropertyContainer], SVGGradientStrokeStyleData);\n\n function ShapeGroupData() {\n this.it = [];\n this.prevViewData = [];\n this.gr = createNS('g');\n }\n\n function SVGTransformData(mProps, op, container) {\n this.transform = {\n mProps: mProps,\n op: op,\n container: container\n };\n this.elements = [];\n this._isAnimated = this.transform.mProps.dynamicProperties.length || this.transform.op.effectsSequence.length;\n }\n\n var buildShapeString = function buildShapeString(pathNodes, length, closed, mat) {\n if (length === 0) {\n return '';\n }\n\n var _o = pathNodes.o;\n var _i = pathNodes.i;\n var _v = pathNodes.v;\n var i;\n var shapeString = ' M' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n\n for (i = 1; i < length; i += 1) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[i][0], _i[i][1]) + ' ' + mat.applyToPointStringified(_v[i][0], _v[i][1]);\n }\n\n if (closed && length) {\n shapeString += ' C' + mat.applyToPointStringified(_o[i - 1][0], _o[i - 1][1]) + ' ' + mat.applyToPointStringified(_i[0][0], _i[0][1]) + ' ' + mat.applyToPointStringified(_v[0][0], _v[0][1]);\n shapeString += 'z';\n }\n\n return shapeString;\n };\n\n var SVGElementsRenderer = function () {\n var _identityMatrix = new Matrix();\n\n var _matrixHelper = new Matrix();\n\n var ob = {\n createRenderFunction: createRenderFunction\n };\n\n function createRenderFunction(data) {\n switch (data.ty) {\n case 'fl':\n return renderFill;\n\n case 'gf':\n return renderGradient;\n\n case 'gs':\n return renderGradientStroke;\n\n case 'st':\n return renderStroke;\n\n case 'sh':\n case 'el':\n case 'rc':\n case 'sr':\n return renderPath;\n\n case 'tr':\n return renderContentTransform;\n\n case 'no':\n return renderNoop;\n\n default:\n return null;\n }\n }\n\n function renderContentTransform(styleData, itemData, isFirstFrame) {\n if (isFirstFrame || itemData.transform.op._mdf) {\n itemData.transform.container.setAttribute('opacity', itemData.transform.op.v);\n }\n\n if (isFirstFrame || itemData.transform.mProps._mdf) {\n itemData.transform.container.setAttribute('transform', itemData.transform.mProps.v.to2dCSS());\n }\n }\n\n function renderNoop() {}\n\n function renderPath(styleData, itemData, isFirstFrame) {\n var j;\n var jLen;\n var pathStringTransformed;\n var redraw;\n var pathNodes;\n var l;\n var lLen = itemData.styles.length;\n var lvl = itemData.lvl;\n var paths;\n var mat;\n var iterations;\n var k;\n\n for (l = 0; l < lLen; l += 1) {\n redraw = itemData.sh._mdf || isFirstFrame;\n\n if (itemData.styles[l].lvl < lvl) {\n mat = _matrixHelper.reset();\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (!redraw && iterations > 0) {\n redraw = itemData.transformers[k].mProps._mdf || redraw;\n iterations -= 1;\n k -= 1;\n }\n\n if (redraw) {\n iterations = lvl - itemData.styles[l].lvl;\n k = itemData.transformers.length - 1;\n\n while (iterations > 0) {\n mat.multiply(itemData.transformers[k].mProps.v);\n iterations -= 1;\n k -= 1;\n }\n }\n } else {\n mat = _identityMatrix;\n }\n\n paths = itemData.sh.paths;\n jLen = paths._length;\n\n if (redraw) {\n pathStringTransformed = '';\n\n for (j = 0; j < jLen; j += 1) {\n pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes._length) {\n pathStringTransformed += buildShapeString(pathNodes, pathNodes._length, pathNodes.c, mat);\n }\n }\n\n itemData.caches[l] = pathStringTransformed;\n } else {\n pathStringTransformed = itemData.caches[l];\n }\n\n itemData.styles[l].d += styleData.hd === true ? '' : pathStringTransformed;\n itemData.styles[l]._mdf = redraw || itemData.styles[l]._mdf;\n }\n }\n\n function renderFill(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('fill-opacity', itemData.o.v);\n }\n }\n\n function renderGradientStroke(styleData, itemData, isFirstFrame) {\n renderGradient(styleData, itemData, isFirstFrame);\n renderStroke(styleData, itemData, isFirstFrame);\n }\n\n function renderGradient(styleData, itemData, isFirstFrame) {\n var gfill = itemData.gf;\n var hasOpacity = itemData.g._hasOpacity;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (itemData.o._mdf || isFirstFrame) {\n var attr = styleData.ty === 'gf' ? 'fill-opacity' : 'stroke-opacity';\n itemData.style.pElem.setAttribute(attr, itemData.o.v);\n }\n\n if (itemData.s._mdf || isFirstFrame) {\n var attr1 = styleData.t === 1 ? 'x1' : 'cx';\n var attr2 = attr1 === 'x1' ? 'y1' : 'cy';\n gfill.setAttribute(attr1, pt1[0]);\n gfill.setAttribute(attr2, pt1[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute(attr1, pt1[0]);\n itemData.of.setAttribute(attr2, pt1[1]);\n }\n }\n\n var stops;\n var i;\n var len;\n var stop;\n\n if (itemData.g._cmdf || isFirstFrame) {\n stops = itemData.cst;\n var cValues = itemData.g.c;\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n stop.setAttribute('offset', cValues[i * 4] + '%');\n stop.setAttribute('stop-color', 'rgb(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ')');\n }\n }\n\n if (hasOpacity && (itemData.g._omdf || isFirstFrame)) {\n var oValues = itemData.g.o;\n\n if (itemData.g._collapsable) {\n stops = itemData.cst;\n } else {\n stops = itemData.ost;\n }\n\n len = stops.length;\n\n for (i = 0; i < len; i += 1) {\n stop = stops[i];\n\n if (!itemData.g._collapsable) {\n stop.setAttribute('offset', oValues[i * 2] + '%');\n }\n\n stop.setAttribute('stop-opacity', oValues[i * 2 + 1]);\n }\n }\n\n if (styleData.t === 1) {\n if (itemData.e._mdf || isFirstFrame) {\n gfill.setAttribute('x2', pt2[0]);\n gfill.setAttribute('y2', pt2[1]);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('x2', pt2[0]);\n itemData.of.setAttribute('y2', pt2[1]);\n }\n }\n } else {\n var rad;\n\n if (itemData.s._mdf || itemData.e._mdf || isFirstFrame) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n gfill.setAttribute('r', rad);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('r', rad);\n }\n }\n\n if (itemData.e._mdf || itemData.h._mdf || itemData.a._mdf || isFirstFrame) {\n if (!rad) {\n rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n }\n\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n gfill.setAttribute('fx', x);\n gfill.setAttribute('fy', y);\n\n if (hasOpacity && !itemData.g._collapsable) {\n itemData.of.setAttribute('fx', x);\n itemData.of.setAttribute('fy', y);\n }\n } // gfill.setAttribute('fy','200');\n\n }\n }\n\n function renderStroke(styleData, itemData, isFirstFrame) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || isFirstFrame) && d.dashStr) {\n styleElem.pElem.setAttribute('stroke-dasharray', d.dashStr);\n styleElem.pElem.setAttribute('stroke-dashoffset', d.dashoffset[0]);\n }\n\n if (itemData.c && (itemData.c._mdf || isFirstFrame)) {\n styleElem.pElem.setAttribute('stroke', 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')');\n }\n\n if (itemData.o._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-opacity', itemData.o.v);\n }\n\n if (itemData.w._mdf || isFirstFrame) {\n styleElem.pElem.setAttribute('stroke-width', itemData.w.v);\n\n if (styleElem.msElem) {\n styleElem.msElem.setAttribute('stroke-width', itemData.w.v);\n }\n }\n }\n\n return ob;\n }();\n\n function SVGShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = []; // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableDOMElement], SVGShapeElement);\n\n SVGShapeElement.prototype.initSecondaryElement = function () {};\n\n SVGShapeElement.prototype.identityMatrix = new Matrix();\n\n SVGShapeElement.prototype.buildExpressionInterface = function () {};\n\n SVGShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n };\n /*\r\n This method searches for multiple shapes that affect a single element and one of them is animated\r\n */\n\n\n SVGShapeElement.prototype.filterUniqueShapes = function () {\n var i;\n var len = this.shapes.length;\n var shape;\n var j;\n var jLen = this.stylesList.length;\n var style;\n var tempShapes = [];\n var areAnimated = false;\n\n for (j = 0; j < jLen; j += 1) {\n style = this.stylesList[j];\n areAnimated = false;\n tempShapes.length = 0;\n\n for (i = 0; i < len; i += 1) {\n shape = this.shapes[i];\n\n if (shape.styles.indexOf(style) !== -1) {\n tempShapes.push(shape);\n areAnimated = shape._isAnimated || areAnimated;\n }\n }\n\n if (tempShapes.length > 1 && areAnimated) {\n this.setShapesAsAnimated(tempShapes);\n }\n }\n };\n\n SVGShapeElement.prototype.setShapesAsAnimated = function (shapes) {\n var i;\n var len = shapes.length;\n\n for (i = 0; i < len; i += 1) {\n shapes[i].setAsAnimated();\n }\n };\n\n SVGShapeElement.prototype.createStyleElement = function (data, level) {\n // TODO: prevent drawing of hidden styles\n var elementData;\n var styleOb = new SVGStyleData(data, level);\n var pathElement = styleOb.pElem;\n\n if (data.ty === 'st') {\n elementData = new SVGStrokeStyleData(this, data, styleOb);\n } else if (data.ty === 'fl') {\n elementData = new SVGFillStyleData(this, data, styleOb);\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n var GradientConstructor = data.ty === 'gf' ? SVGGradientFillStyleData : SVGGradientStrokeStyleData;\n elementData = new GradientConstructor(this, data, styleOb);\n this.globalData.defs.appendChild(elementData.gf);\n\n if (elementData.maskId) {\n this.globalData.defs.appendChild(elementData.ms);\n this.globalData.defs.appendChild(elementData.of);\n pathElement.setAttribute('mask', 'url(' + getLocationHref() + '#' + elementData.maskId + ')');\n }\n } else if (data.ty === 'no') {\n elementData = new SVGNoStyleData(this, data, styleOb);\n }\n\n if (data.ty === 'st' || data.ty === 'gs') {\n pathElement.setAttribute('stroke-linecap', lineCapEnum[data.lc || 2]);\n pathElement.setAttribute('stroke-linejoin', lineJoinEnum[data.lj || 2]);\n pathElement.setAttribute('fill-opacity', '0');\n\n if (data.lj === 1) {\n pathElement.setAttribute('stroke-miterlimit', data.ml);\n }\n }\n\n if (data.r === 2) {\n pathElement.setAttribute('fill-rule', 'evenodd');\n }\n\n if (data.ln) {\n pathElement.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n pathElement.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n pathElement.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n this.stylesList.push(styleOb);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createGroupElement = function (data) {\n var elementData = new ShapeGroupData();\n\n if (data.ln) {\n elementData.gr.setAttribute('id', data.ln);\n }\n\n if (data.cl) {\n elementData.gr.setAttribute('class', data.cl);\n }\n\n if (data.bm) {\n elementData.gr.style['mix-blend-mode'] = getBlendMode(data.bm);\n }\n\n return elementData;\n };\n\n SVGShapeElement.prototype.createTransformElement = function (data, container) {\n var transformProperty = TransformPropertyFactory.getTransformProperty(this, data, this);\n var elementData = new SVGTransformData(transformProperty, transformProperty.o, container);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.createShapeElement = function (data, ownTransformers, level) {\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n var shapeProperty = ShapePropertyFactory.getShapeProp(this, data, ty, this);\n var elementData = new SVGShapeData(ownTransformers, level, shapeProperty);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n this.addToAnimatedContents(data, elementData);\n return elementData;\n };\n\n SVGShapeElement.prototype.addToAnimatedContents = function (data, element) {\n var i = 0;\n var len = this.animatedContents.length;\n\n while (i < len) {\n if (this.animatedContents[i].element === element) {\n return;\n }\n\n i += 1;\n }\n\n this.animatedContents.push({\n fn: SVGElementsRenderer.createRenderFunction(data),\n element: element,\n data: data\n });\n };\n\n SVGShapeElement.prototype.setElementStyles = function (elementData) {\n var arr = elementData.styles;\n var j;\n var jLen = this.stylesList.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (!this.stylesList[j].closed) {\n arr.push(this.stylesList[j]);\n }\n }\n };\n\n SVGShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.layerElement, 0, [], true);\n this.filterUniqueShapes();\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n };\n\n SVGShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, container, level, transformers, render) {\n var ownTransformers = [].concat(transformers);\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var currentTransform;\n var modifier;\n var processedPos;\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._render = render;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs' || arr[i].ty === 'no') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], level);\n } else {\n itemsData[i].style.closed = false;\n }\n\n if (arr[i]._render) {\n if (itemsData[i].style.pElem.parentNode !== container) {\n container.appendChild(itemsData[i].style.pElem);\n }\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, itemsData[i].gr, level + 1, ownTransformers, render);\n\n if (arr[i]._render) {\n if (itemsData[i].gr.parentNode !== container) {\n container.appendChild(itemsData[i].gr);\n }\n }\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n itemsData[i] = this.createTransformElement(arr[i], container);\n }\n\n currentTransform = itemsData[i].transform;\n ownTransformers.push(currentTransform);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i], ownTransformers, level);\n }\n\n this.setElementStyles(itemsData[i]);\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'ms' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n render = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n len = ownStyles.length;\n\n for (i = 0; i < len; i += 1) {\n ownStyles[i].closed = true;\n }\n\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n SVGShapeElement.prototype.renderInnerContent = function () {\n this.renderModifiers();\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n this.stylesList[i].reset();\n }\n\n this.renderShape();\n\n for (i = 0; i < len; i += 1) {\n if (this.stylesList[i]._mdf || this._isFirstFrame) {\n if (this.stylesList[i].msElem) {\n this.stylesList[i].msElem.setAttribute('d', this.stylesList[i].d); // Adding M0 0 fixes same mask bug on all browsers\n\n this.stylesList[i].d = 'M0 0' + this.stylesList[i].d;\n }\n\n this.stylesList[i].pElem.setAttribute('d', this.stylesList[i].d || 'M0 0');\n }\n }\n };\n\n SVGShapeElement.prototype.renderShape = function () {\n var i;\n var len = this.animatedContents.length;\n var animatedContent;\n\n for (i = 0; i < len; i += 1) {\n animatedContent = this.animatedContents[i];\n\n if ((this._isFirstFrame || animatedContent.element._isAnimated) && animatedContent.data !== true) {\n animatedContent.fn(animatedContent.data, animatedContent.element, this._isFirstFrame);\n }\n }\n };\n\n SVGShapeElement.prototype.destroy = function () {\n this.destroyBaseElement();\n this.shapesData = null;\n this.itemsData = null;\n };\n\n function LetterProps(o, sw, sc, fc, m, p) {\n this.o = o;\n this.sw = sw;\n this.sc = sc;\n this.fc = fc;\n this.m = m;\n this.p = p;\n this._mdf = {\n o: true,\n sw: !!sw,\n sc: !!sc,\n fc: !!fc,\n m: true,\n p: true\n };\n }\n\n LetterProps.prototype.update = function (o, sw, sc, fc, m, p) {\n this._mdf.o = false;\n this._mdf.sw = false;\n this._mdf.sc = false;\n this._mdf.fc = false;\n this._mdf.m = false;\n this._mdf.p = false;\n var updated = false;\n\n if (this.o !== o) {\n this.o = o;\n this._mdf.o = true;\n updated = true;\n }\n\n if (this.sw !== sw) {\n this.sw = sw;\n this._mdf.sw = true;\n updated = true;\n }\n\n if (this.sc !== sc) {\n this.sc = sc;\n this._mdf.sc = true;\n updated = true;\n }\n\n if (this.fc !== fc) {\n this.fc = fc;\n this._mdf.fc = true;\n updated = true;\n }\n\n if (this.m !== m) {\n this.m = m;\n this._mdf.m = true;\n updated = true;\n }\n\n if (p.length && (this.p[0] !== p[0] || this.p[1] !== p[1] || this.p[4] !== p[4] || this.p[5] !== p[5] || this.p[12] !== p[12] || this.p[13] !== p[13])) {\n this.p = p;\n this._mdf.p = true;\n updated = true;\n }\n\n return updated;\n };\n\n function TextProperty(elem, data) {\n this._frameId = initialDefaultFrame;\n this.pv = '';\n this.v = '';\n this.kf = false;\n this._isFirstFrame = true;\n this._mdf = false;\n\n if (data.d && data.d.sid) {\n data.d = elem.globalData.slotManager.getProp(data.d);\n }\n\n this.data = data;\n this.elem = elem;\n this.comp = this.elem.comp;\n this.keysIndex = 0;\n this.canResize = false;\n this.minimumFontSize = 1;\n this.effectsSequence = [];\n this.currentData = {\n ascent: 0,\n boxWidth: this.defaultBoxWidth,\n f: '',\n fStyle: '',\n fWeight: '',\n fc: '',\n j: '',\n justifyOffset: '',\n l: [],\n lh: 0,\n lineWidths: [],\n ls: '',\n of: '',\n s: '',\n sc: '',\n sw: 0,\n t: 0,\n tr: 0,\n sz: 0,\n ps: null,\n fillColorAnim: false,\n strokeColorAnim: false,\n strokeWidthAnim: false,\n yOffset: 0,\n finalSize: 0,\n finalText: [],\n finalLineHeight: 0,\n __complete: false\n };\n this.copyData(this.currentData, this.data.d.k[0].s);\n\n if (!this.searchProperty()) {\n this.completeTextData(this.currentData);\n }\n }\n\n TextProperty.prototype.defaultBoxWidth = [0, 0];\n\n TextProperty.prototype.copyData = function (obj, data) {\n for (var s in data) {\n if (Object.prototype.hasOwnProperty.call(data, s)) {\n obj[s] = data[s];\n }\n }\n\n return obj;\n };\n\n TextProperty.prototype.setCurrentData = function (data) {\n if (!data.__complete) {\n this.completeTextData(data);\n }\n\n this.currentData = data;\n this.currentData.boxWidth = this.currentData.boxWidth || this.defaultBoxWidth;\n this._mdf = true;\n };\n\n TextProperty.prototype.searchProperty = function () {\n return this.searchKeyframes();\n };\n\n TextProperty.prototype.searchKeyframes = function () {\n this.kf = this.data.d.k.length > 1;\n\n if (this.kf) {\n this.addEffect(this.getKeyframeValue.bind(this));\n }\n\n return this.kf;\n };\n\n TextProperty.prototype.addEffect = function (effectFunction) {\n this.effectsSequence.push(effectFunction);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.getValue = function (_finalValue) {\n if ((this.elem.globalData.frameId === this.frameId || !this.effectsSequence.length) && !_finalValue) {\n return;\n }\n\n this.currentData.t = this.data.d.k[this.keysIndex].s.t;\n var currentValue = this.currentData;\n var currentIndex = this.keysIndex;\n\n if (this.lock) {\n this.setCurrentData(this.currentData);\n return;\n }\n\n this.lock = true;\n this._mdf = false;\n var i;\n var len = this.effectsSequence.length;\n var finalValue = _finalValue || this.data.d.k[this.keysIndex].s;\n\n for (i = 0; i < len; i += 1) {\n // Checking if index changed to prevent creating a new object every time the expression updates.\n if (currentIndex !== this.keysIndex) {\n finalValue = this.effectsSequence[i](finalValue, finalValue.t);\n } else {\n finalValue = this.effectsSequence[i](this.currentData, finalValue.t);\n }\n }\n\n if (currentValue !== finalValue) {\n this.setCurrentData(finalValue);\n }\n\n this.v = this.currentData;\n this.pv = this.v;\n this.lock = false;\n this.frameId = this.elem.globalData.frameId;\n };\n\n TextProperty.prototype.getKeyframeValue = function () {\n var textKeys = this.data.d.k;\n var frameNum = this.elem.comp.renderedFrame;\n var i = 0;\n var len = textKeys.length;\n\n while (i <= len - 1) {\n if (i === len - 1 || textKeys[i + 1].t > frameNum) {\n break;\n }\n\n i += 1;\n }\n\n if (this.keysIndex !== i) {\n this.keysIndex = i;\n }\n\n return this.data.d.k[this.keysIndex].s;\n };\n\n TextProperty.prototype.buildFinalText = function (text) {\n var charactersArray = [];\n var i = 0;\n var len = text.length;\n var charCode;\n var secondCharCode;\n var shouldCombine = false;\n var shouldCombineNext = false;\n var currentChars = '';\n\n while (i < len) {\n shouldCombine = shouldCombineNext;\n shouldCombineNext = false;\n charCode = text.charCodeAt(i);\n currentChars = text.charAt(i);\n\n if (FontManager.isCombinedCharacter(charCode)) {\n shouldCombine = true; // It's a potential surrogate pair (this is the High surrogate)\n } else if (charCode >= 0xD800 && charCode <= 0xDBFF) {\n if (FontManager.isRegionalFlag(text, i)) {\n currentChars = text.substr(i, 14);\n } else {\n secondCharCode = text.charCodeAt(i + 1); // It's a surrogate pair (this is the Low surrogate)\n\n if (secondCharCode >= 0xDC00 && secondCharCode <= 0xDFFF) {\n if (FontManager.isModifier(charCode, secondCharCode)) {\n currentChars = text.substr(i, 2);\n shouldCombine = true;\n } else if (FontManager.isFlagEmoji(text.substr(i, 4))) {\n currentChars = text.substr(i, 4);\n } else {\n currentChars = text.substr(i, 2);\n }\n }\n }\n } else if (charCode > 0xDBFF) {\n secondCharCode = text.charCodeAt(i + 1);\n\n if (FontManager.isVariationSelector(charCode)) {\n shouldCombine = true;\n }\n } else if (FontManager.isZeroWidthJoiner(charCode)) {\n shouldCombine = true;\n shouldCombineNext = true;\n }\n\n if (shouldCombine) {\n charactersArray[charactersArray.length - 1] += currentChars;\n shouldCombine = false;\n } else {\n charactersArray.push(currentChars);\n }\n\n i += currentChars.length;\n }\n\n return charactersArray;\n };\n\n TextProperty.prototype.completeTextData = function (documentData) {\n documentData.__complete = true;\n var fontManager = this.elem.globalData.fontManager;\n var data = this.data;\n var letters = [];\n var i;\n var len;\n var newLineFlag;\n var index = 0;\n var val;\n var anchorGrouping = data.m.g;\n var currentSize = 0;\n var currentPos = 0;\n var currentLine = 0;\n var lineWidths = [];\n var lineWidth = 0;\n var maxLineWidth = 0;\n var j;\n var jLen;\n var fontData = fontManager.getFontByName(documentData.f);\n var charData;\n var cLength = 0;\n var fontProps = getFontProperties(fontData);\n documentData.fWeight = fontProps.weight;\n documentData.fStyle = fontProps.style;\n documentData.finalSize = documentData.s;\n documentData.finalText = this.buildFinalText(documentData.t);\n len = documentData.finalText.length;\n documentData.finalLineHeight = documentData.lh;\n var trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var charCode;\n\n if (documentData.sz) {\n var flag = true;\n var boxWidth = documentData.sz[0];\n var boxHeight = documentData.sz[1];\n var currentHeight;\n var finalText;\n\n while (flag) {\n finalText = this.buildFinalText(documentData.t);\n currentHeight = 0;\n lineWidth = 0;\n len = finalText.length;\n trackingOffset = documentData.tr / 1000 * documentData.finalSize;\n var lastSpaceIndex = -1;\n\n for (i = 0; i < len; i += 1) {\n charCode = finalText[i].charCodeAt(0);\n newLineFlag = false;\n\n if (finalText[i] === ' ') {\n lastSpaceIndex = i;\n } else if (charCode === 13 || charCode === 3) {\n lineWidth = 0;\n newLineFlag = true;\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(finalText[i], fontData.fStyle, fontData.fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // tCanvasHelper.font = documentData.s + 'px '+ fontData.fFamily;\n cLength = fontManager.measureText(finalText[i], documentData.f, documentData.finalSize);\n }\n\n if (lineWidth + cLength > boxWidth && finalText[i] !== ' ') {\n if (lastSpaceIndex === -1) {\n len += 1;\n } else {\n i = lastSpaceIndex;\n }\n\n currentHeight += documentData.finalLineHeight || documentData.finalSize * 1.2;\n finalText.splice(i, lastSpaceIndex === i ? 1 : 0, '\\r'); // finalText = finalText.substr(0,i) + \"\\r\" + finalText.substr(i === lastSpaceIndex ? i + 1 : i);\n\n lastSpaceIndex = -1;\n lineWidth = 0;\n } else {\n lineWidth += cLength;\n lineWidth += trackingOffset;\n }\n }\n\n currentHeight += fontData.ascent * documentData.finalSize / 100;\n\n if (this.canResize && documentData.finalSize > this.minimumFontSize && boxHeight < currentHeight) {\n documentData.finalSize -= 1;\n documentData.finalLineHeight = documentData.finalSize * documentData.lh / documentData.s;\n } else {\n documentData.finalText = finalText;\n len = documentData.finalText.length;\n flag = false;\n }\n }\n }\n\n lineWidth = -trackingOffset;\n cLength = 0;\n var uncollapsedSpaces = 0;\n var currentChar;\n\n for (i = 0; i < len; i += 1) {\n newLineFlag = false;\n currentChar = documentData.finalText[i];\n charCode = currentChar.charCodeAt(0);\n\n if (charCode === 13 || charCode === 3) {\n uncollapsedSpaces = 0;\n lineWidths.push(lineWidth);\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidth = -2 * trackingOffset;\n val = '';\n newLineFlag = true;\n currentLine += 1;\n } else {\n val = currentChar;\n }\n\n if (fontManager.chars) {\n charData = fontManager.getCharData(currentChar, fontData.fStyle, fontManager.getFontByName(documentData.f).fFamily);\n cLength = newLineFlag ? 0 : charData.w * documentData.finalSize / 100;\n } else {\n // var charWidth = fontManager.measureText(val, documentData.f, documentData.finalSize);\n // tCanvasHelper.font = documentData.finalSize + 'px '+ fontManager.getFontByName(documentData.f).fFamily;\n cLength = fontManager.measureText(val, documentData.f, documentData.finalSize);\n } //\n\n\n if (currentChar === ' ') {\n uncollapsedSpaces += cLength + trackingOffset;\n } else {\n lineWidth += cLength + trackingOffset + uncollapsedSpaces;\n uncollapsedSpaces = 0;\n }\n\n letters.push({\n l: cLength,\n an: cLength,\n add: currentSize,\n n: newLineFlag,\n anIndexes: [],\n val: val,\n line: currentLine,\n animatorJustifyOffset: 0\n });\n\n if (anchorGrouping == 2) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || val === ' ' || i === len - 1) {\n if (val === '' || val === ' ') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n index += 1;\n currentSize = 0;\n }\n } else if (anchorGrouping == 3) {\n // eslint-disable-line eqeqeq\n currentSize += cLength;\n\n if (val === '' || i === len - 1) {\n if (val === '') {\n currentSize -= cLength;\n }\n\n while (currentPos <= i) {\n letters[currentPos].an = currentSize;\n letters[currentPos].ind = index;\n letters[currentPos].extra = cLength;\n currentPos += 1;\n }\n\n currentSize = 0;\n index += 1;\n }\n } else {\n letters[index].ind = index;\n letters[index].extra = 0;\n index += 1;\n }\n }\n\n documentData.l = letters;\n maxLineWidth = lineWidth > maxLineWidth ? lineWidth : maxLineWidth;\n lineWidths.push(lineWidth);\n\n if (documentData.sz) {\n documentData.boxWidth = documentData.sz[0];\n documentData.justifyOffset = 0;\n } else {\n documentData.boxWidth = maxLineWidth;\n\n switch (documentData.j) {\n case 1:\n documentData.justifyOffset = -documentData.boxWidth;\n break;\n\n case 2:\n documentData.justifyOffset = -documentData.boxWidth / 2;\n break;\n\n default:\n documentData.justifyOffset = 0;\n }\n }\n\n documentData.lineWidths = lineWidths;\n var animators = data.a;\n var animatorData;\n var letterData;\n jLen = animators.length;\n var based;\n var ind;\n var indexes = [];\n\n for (j = 0; j < jLen; j += 1) {\n animatorData = animators[j];\n\n if (animatorData.a.sc) {\n documentData.strokeColorAnim = true;\n }\n\n if (animatorData.a.sw) {\n documentData.strokeWidthAnim = true;\n }\n\n if (animatorData.a.fc || animatorData.a.fh || animatorData.a.fs || animatorData.a.fb) {\n documentData.fillColorAnim = true;\n }\n\n ind = 0;\n based = animatorData.s.b;\n\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n letterData.anIndexes[j] = ind;\n\n if (based == 1 && letterData.val !== '' || based == 2 && letterData.val !== '' && letterData.val !== ' ' || based == 3 && (letterData.n || letterData.val == ' ' || i == len - 1) || based == 4 && (letterData.n || i == len - 1)) {\n // eslint-disable-line eqeqeq\n if (animatorData.s.rn === 1) {\n indexes.push(ind);\n }\n\n ind += 1;\n }\n }\n\n data.a[j].s.totalChars = ind;\n var currentInd = -1;\n var newInd;\n\n if (animatorData.s.rn === 1) {\n for (i = 0; i < len; i += 1) {\n letterData = letters[i];\n\n if (currentInd != letterData.anIndexes[j]) {\n // eslint-disable-line eqeqeq\n currentInd = letterData.anIndexes[j];\n newInd = indexes.splice(Math.floor(Math.random() * indexes.length), 1)[0];\n }\n\n letterData.anIndexes[j] = newInd;\n }\n }\n }\n\n documentData.yOffset = documentData.finalLineHeight || documentData.finalSize * 1.2;\n documentData.ls = documentData.ls || 0;\n documentData.ascent = fontData.ascent * documentData.finalSize / 100;\n };\n\n TextProperty.prototype.updateDocumentData = function (newData, index) {\n index = index === undefined ? this.keysIndex : index;\n var dData = this.copyData({}, this.data.d.k[index].s);\n dData = this.copyData(dData, newData);\n this.data.d.k[index].s = dData;\n this.recalculate(index);\n this.setCurrentData(dData);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.recalculate = function (index) {\n var dData = this.data.d.k[index].s;\n dData.__complete = false;\n this.keysIndex = 0;\n this._isFirstFrame = true;\n this.getValue(dData);\n };\n\n TextProperty.prototype.canResizeFont = function (_canResize) {\n this.canResize = _canResize;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n TextProperty.prototype.setMinimumFontSize = function (_fontValue) {\n this.minimumFontSize = Math.floor(_fontValue) || 1;\n this.recalculate(this.keysIndex);\n this.elem.addDynamicProperty(this);\n };\n\n var TextSelectorProp = function () {\n var max = Math.max;\n var min = Math.min;\n var floor = Math.floor;\n\n function TextSelectorPropFactory(elem, data) {\n this._currentTextLength = -1;\n this.k = false;\n this.data = data;\n this.elem = elem;\n this.comp = elem.comp;\n this.finalS = 0;\n this.finalE = 0;\n this.initDynamicPropertyContainer(elem);\n this.s = PropertyFactory.getProp(elem, data.s || {\n k: 0\n }, 0, 0, this);\n\n if ('e' in data) {\n this.e = PropertyFactory.getProp(elem, data.e, 0, 0, this);\n } else {\n this.e = {\n v: 100\n };\n }\n\n this.o = PropertyFactory.getProp(elem, data.o || {\n k: 0\n }, 0, 0, this);\n this.xe = PropertyFactory.getProp(elem, data.xe || {\n k: 0\n }, 0, 0, this);\n this.ne = PropertyFactory.getProp(elem, data.ne || {\n k: 0\n }, 0, 0, this);\n this.sm = PropertyFactory.getProp(elem, data.sm || {\n k: 100\n }, 0, 0, this);\n this.a = PropertyFactory.getProp(elem, data.a, 0, 0.01, this);\n\n if (!this.dynamicProperties.length) {\n this.getValue();\n }\n }\n\n TextSelectorPropFactory.prototype = {\n getMult: function getMult(ind) {\n if (this._currentTextLength !== this.elem.textProperty.currentData.l.length) {\n this.getValue();\n }\n\n var x1 = 0;\n var y1 = 0;\n var x2 = 1;\n var y2 = 1;\n\n if (this.ne.v > 0) {\n x1 = this.ne.v / 100.0;\n } else {\n y1 = -this.ne.v / 100.0;\n }\n\n if (this.xe.v > 0) {\n x2 = 1.0 - this.xe.v / 100.0;\n } else {\n y2 = 1.0 + this.xe.v / 100.0;\n }\n\n var easer = BezierFactory.getBezierEasing(x1, y1, x2, y2).get;\n var mult = 0;\n var s = this.finalS;\n var e = this.finalE;\n var type = this.data.sh;\n\n if (type === 2) {\n if (e === s) {\n mult = ind >= e ? 1 : 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 3) {\n if (e === s) {\n mult = ind >= e ? 0 : 1;\n } else {\n mult = 1 - max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n }\n\n mult = easer(mult);\n } else if (type === 4) {\n if (e === s) {\n mult = 0;\n } else {\n mult = max(0, min(0.5 / (e - s) + (ind - s) / (e - s), 1));\n\n if (mult < 0.5) {\n mult *= 2;\n } else {\n mult = 1 - 2 * (mult - 0.5);\n }\n }\n\n mult = easer(mult);\n } else if (type === 5) {\n if (e === s) {\n mult = 0;\n } else {\n var tot = e - s;\n /* ind += 0.5;\r\n mult = -4/(tot*tot)*(ind*ind)+(4/tot)*ind; */\n\n ind = min(max(0, ind + 0.5 - s), e - s);\n var x = -tot / 2 + ind;\n var a = tot / 2;\n mult = Math.sqrt(1 - x * x / (a * a));\n }\n\n mult = easer(mult);\n } else if (type === 6) {\n if (e === s) {\n mult = 0;\n } else {\n ind = min(max(0, ind + 0.5 - s), e - s);\n mult = (1 + Math.cos(Math.PI + Math.PI * 2 * ind / (e - s))) / 2; // eslint-disable-line\n }\n\n mult = easer(mult);\n } else {\n if (ind >= floor(s)) {\n if (ind - s < 0) {\n mult = max(0, min(min(e, 1) - (s - ind), 1));\n } else {\n mult = max(0, min(e - ind, 1));\n }\n }\n\n mult = easer(mult);\n } // Smoothness implementation.\n // The smoothness represents a reduced range of the original [0; 1] range.\n // if smoothness is 25%, the new range will be [0.375; 0.625]\n // Steps are:\n // - find the lower value of the new range (threshold)\n // - if multiplier is smaller than that value, floor it to 0\n // - if it is larger,\n // - subtract the threshold\n // - divide it by the smoothness (this will return the range to [0; 1])\n // Note: If it doesn't work on some scenarios, consider applying it before the easer.\n\n\n if (this.sm.v !== 100) {\n var smoothness = this.sm.v * 0.01;\n\n if (smoothness === 0) {\n smoothness = 0.00000001;\n }\n\n var threshold = 0.5 - smoothness * 0.5;\n\n if (mult < threshold) {\n mult = 0;\n } else {\n mult = (mult - threshold) / smoothness;\n\n if (mult > 1) {\n mult = 1;\n }\n }\n }\n\n return mult * this.a.v;\n },\n getValue: function getValue(newCharsFlag) {\n this.iterateDynamicProperties();\n this._mdf = newCharsFlag || this._mdf;\n this._currentTextLength = this.elem.textProperty.currentData.l.length || 0;\n\n if (newCharsFlag && this.data.r === 2) {\n this.e.v = this._currentTextLength;\n }\n\n var divisor = this.data.r === 2 ? 1 : 100 / this.data.totalChars;\n var o = this.o.v / divisor;\n var s = this.s.v / divisor + o;\n var e = this.e.v / divisor + o;\n\n if (s > e) {\n var _s = s;\n s = e;\n e = _s;\n }\n\n this.finalS = s;\n this.finalE = e;\n }\n };\n extendPrototype([DynamicPropertyContainer], TextSelectorPropFactory);\n\n function getTextSelectorProp(elem, data, arr) {\n return new TextSelectorPropFactory(elem, data, arr);\n }\n\n return {\n getTextSelectorProp: getTextSelectorProp\n };\n }();\n\n function TextAnimatorDataProperty(elem, animatorProps, container) {\n var defaultData = {\n propType: false\n };\n var getProp = PropertyFactory.getProp;\n var textAnimatorAnimatables = animatorProps.a;\n this.a = {\n r: textAnimatorAnimatables.r ? getProp(elem, textAnimatorAnimatables.r, 0, degToRads, container) : defaultData,\n rx: textAnimatorAnimatables.rx ? getProp(elem, textAnimatorAnimatables.rx, 0, degToRads, container) : defaultData,\n ry: textAnimatorAnimatables.ry ? getProp(elem, textAnimatorAnimatables.ry, 0, degToRads, container) : defaultData,\n sk: textAnimatorAnimatables.sk ? getProp(elem, textAnimatorAnimatables.sk, 0, degToRads, container) : defaultData,\n sa: textAnimatorAnimatables.sa ? getProp(elem, textAnimatorAnimatables.sa, 0, degToRads, container) : defaultData,\n s: textAnimatorAnimatables.s ? getProp(elem, textAnimatorAnimatables.s, 1, 0.01, container) : defaultData,\n a: textAnimatorAnimatables.a ? getProp(elem, textAnimatorAnimatables.a, 1, 0, container) : defaultData,\n o: textAnimatorAnimatables.o ? getProp(elem, textAnimatorAnimatables.o, 0, 0.01, container) : defaultData,\n p: textAnimatorAnimatables.p ? getProp(elem, textAnimatorAnimatables.p, 1, 0, container) : defaultData,\n sw: textAnimatorAnimatables.sw ? getProp(elem, textAnimatorAnimatables.sw, 0, 0, container) : defaultData,\n sc: textAnimatorAnimatables.sc ? getProp(elem, textAnimatorAnimatables.sc, 1, 0, container) : defaultData,\n fc: textAnimatorAnimatables.fc ? getProp(elem, textAnimatorAnimatables.fc, 1, 0, container) : defaultData,\n fh: textAnimatorAnimatables.fh ? getProp(elem, textAnimatorAnimatables.fh, 0, 0, container) : defaultData,\n fs: textAnimatorAnimatables.fs ? getProp(elem, textAnimatorAnimatables.fs, 0, 0.01, container) : defaultData,\n fb: textAnimatorAnimatables.fb ? getProp(elem, textAnimatorAnimatables.fb, 0, 0.01, container) : defaultData,\n t: textAnimatorAnimatables.t ? getProp(elem, textAnimatorAnimatables.t, 0, 0, container) : defaultData\n };\n this.s = TextSelectorProp.getTextSelectorProp(elem, animatorProps.s, container);\n this.s.t = animatorProps.s.t;\n }\n\n function TextAnimatorProperty(textData, renderType, elem) {\n this._isFirstFrame = true;\n this._hasMaskedPath = false;\n this._frameId = -1;\n this._textData = textData;\n this._renderType = renderType;\n this._elem = elem;\n this._animatorsData = createSizedArray(this._textData.a.length);\n this._pathData = {};\n this._moreOptions = {\n alignment: {}\n };\n this.renderedLetters = [];\n this.lettersChangedFlag = false;\n this.initDynamicPropertyContainer(elem);\n }\n\n TextAnimatorProperty.prototype.searchProperties = function () {\n var i;\n var len = this._textData.a.length;\n var animatorProps;\n var getProp = PropertyFactory.getProp;\n\n for (i = 0; i < len; i += 1) {\n animatorProps = this._textData.a[i];\n this._animatorsData[i] = new TextAnimatorDataProperty(this._elem, animatorProps, this);\n }\n\n if (this._textData.p && 'm' in this._textData.p) {\n this._pathData = {\n a: getProp(this._elem, this._textData.p.a, 0, 0, this),\n f: getProp(this._elem, this._textData.p.f, 0, 0, this),\n l: getProp(this._elem, this._textData.p.l, 0, 0, this),\n r: getProp(this._elem, this._textData.p.r, 0, 0, this),\n p: getProp(this._elem, this._textData.p.p, 0, 0, this),\n m: this._elem.maskManager.getMaskProperty(this._textData.p.m)\n };\n this._hasMaskedPath = true;\n } else {\n this._hasMaskedPath = false;\n }\n\n this._moreOptions.alignment = getProp(this._elem, this._textData.m.a, 1, 0, this);\n };\n\n TextAnimatorProperty.prototype.getMeasures = function (documentData, lettersChangedFlag) {\n this.lettersChangedFlag = lettersChangedFlag;\n\n if (!this._mdf && !this._isFirstFrame && !lettersChangedFlag && (!this._hasMaskedPath || !this._pathData.m._mdf)) {\n return;\n }\n\n this._isFirstFrame = false;\n var alignment = this._moreOptions.alignment.v;\n var animators = this._animatorsData;\n var textData = this._textData;\n var matrixHelper = this.mHelper;\n var renderType = this._renderType;\n var renderedLettersCount = this.renderedLetters.length;\n var xPos;\n var yPos;\n var i;\n var len;\n var letters = documentData.l;\n var pathInfo;\n var currentLength;\n var currentPoint;\n var segmentLength;\n var flag;\n var pointInd;\n var segmentInd;\n var prevPoint;\n var points;\n var segments;\n var partialLength;\n var totalLength;\n var perc;\n var tanAngle;\n var mask;\n\n if (this._hasMaskedPath) {\n mask = this._pathData.m;\n\n if (!this._pathData.n || this._pathData._mdf) {\n var paths = mask.v;\n\n if (this._pathData.r.v) {\n paths = paths.reverse();\n } // TODO: release bezier data cached from previous pathInfo: this._pathData.pi\n\n\n pathInfo = {\n tLength: 0,\n segments: []\n };\n len = paths._length - 1;\n var bezierData;\n totalLength = 0;\n\n for (i = 0; i < len; i += 1) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[i + 1], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[i + 1][0] - paths.v[i + 1][0], paths.i[i + 1][1] - paths.v[i + 1][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n i = len;\n\n if (mask.v.c) {\n bezierData = bez.buildBezierData(paths.v[i], paths.v[0], [paths.o[i][0] - paths.v[i][0], paths.o[i][1] - paths.v[i][1]], [paths.i[0][0] - paths.v[0][0], paths.i[0][1] - paths.v[0][1]]);\n pathInfo.tLength += bezierData.segmentLength;\n pathInfo.segments.push(bezierData);\n totalLength += bezierData.segmentLength;\n }\n\n this._pathData.pi = pathInfo;\n }\n\n pathInfo = this._pathData.pi;\n currentLength = this._pathData.f.v;\n segmentInd = 0;\n pointInd = 1;\n segmentLength = 0;\n flag = true;\n segments = pathInfo.segments;\n\n if (currentLength < 0 && mask.v.c) {\n if (pathInfo.tLength < Math.abs(currentLength)) {\n currentLength = -Math.abs(currentLength) % pathInfo.tLength;\n }\n\n segmentInd = segments.length - 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n\n while (currentLength < 0) {\n currentLength += points[pointInd].partialLength;\n pointInd -= 1;\n\n if (pointInd < 0) {\n segmentInd -= 1;\n points = segments[segmentInd].points;\n pointInd = points.length - 1;\n }\n }\n }\n\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n\n len = letters.length;\n xPos = 0;\n yPos = 0;\n var yOff = documentData.finalSize * 1.2 * 0.714;\n var firstLine = true;\n var animatorProps;\n var animatorSelector;\n var j;\n var jLen;\n var letterValue;\n jLen = animators.length;\n var mult;\n var ind = -1;\n var offf;\n var xPathPos;\n var yPathPos;\n var initPathPos = currentLength;\n var initSegmentInd = segmentInd;\n var initPointInd = pointInd;\n var currentLine = -1;\n var elemOpacity;\n var sc;\n var sw;\n var fc;\n var k;\n var letterSw;\n var letterSc;\n var letterFc;\n var letterM = '';\n var letterP = this.defaultPropsArray;\n var letterO; //\n\n if (documentData.j === 2 || documentData.j === 1) {\n var animatorJustifyOffset = 0;\n var animatorFirstCharOffset = 0;\n var justifyOffsetMult = documentData.j === 2 ? -0.5 : -1;\n var lastIndex = 0;\n var isNewLine = true;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n\n animatorJustifyOffset = 0;\n isNewLine = true;\n } else {\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n if (isNewLine && documentData.j === 2) {\n animatorFirstCharOffset += animatorProps.t.v * justifyOffsetMult;\n }\n\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorJustifyOffset += animatorProps.t.v * mult[0] * justifyOffsetMult;\n } else {\n animatorJustifyOffset += animatorProps.t.v * mult * justifyOffsetMult;\n }\n }\n }\n\n isNewLine = false;\n }\n }\n\n if (animatorJustifyOffset) {\n animatorJustifyOffset += animatorFirstCharOffset;\n }\n\n while (lastIndex < i) {\n letters[lastIndex].animatorJustifyOffset = animatorJustifyOffset;\n lastIndex += 1;\n }\n } //\n\n\n for (i = 0; i < len; i += 1) {\n matrixHelper.reset();\n elemOpacity = 1;\n\n if (letters[i].n) {\n xPos = 0;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n currentLength = initPathPos;\n firstLine = false;\n\n if (this._hasMaskedPath) {\n segmentInd = initSegmentInd;\n pointInd = initPointInd;\n points = segments[segmentInd].points;\n prevPoint = points[pointInd - 1];\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n segmentLength = 0;\n }\n\n letterM = '';\n letterFc = '';\n letterSw = '';\n letterO = '';\n letterP = this.defaultPropsArray;\n } else {\n if (this._hasMaskedPath) {\n if (currentLine !== letters[i].line) {\n switch (documentData.j) {\n case 1:\n currentLength += totalLength - documentData.lineWidths[letters[i].line];\n break;\n\n case 2:\n currentLength += (totalLength - documentData.lineWidths[letters[i].line]) / 2;\n break;\n\n default:\n break;\n }\n\n currentLine = letters[i].line;\n }\n\n if (ind !== letters[i].ind) {\n if (letters[ind]) {\n currentLength += letters[ind].extra;\n }\n\n currentLength += letters[i].an / 2;\n ind = letters[i].ind;\n }\n\n currentLength += alignment[0] * letters[i].an * 0.005;\n var animatorOffset = 0;\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.p.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.p.v[0] * mult;\n }\n }\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n animatorOffset += animatorProps.a.v[0] * mult[0];\n } else {\n animatorOffset += animatorProps.a.v[0] * mult;\n }\n }\n }\n\n flag = true; // Force alignment only works with a single line for now\n\n if (this._pathData.a.v) {\n currentLength = letters[0].an * 0.5 + (totalLength - this._pathData.f.v - letters[0].an * 0.5 - letters[letters.length - 1].an * 0.5) * ind / (len - 1);\n currentLength += this._pathData.f.v;\n }\n\n while (flag) {\n if (segmentLength + partialLength >= currentLength + animatorOffset || !points) {\n perc = (currentLength + animatorOffset - segmentLength) / currentPoint.partialLength;\n xPathPos = prevPoint.point[0] + (currentPoint.point[0] - prevPoint.point[0]) * perc;\n yPathPos = prevPoint.point[1] + (currentPoint.point[1] - prevPoint.point[1]) * perc;\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -(alignment[1] * yOff) * 0.01);\n flag = false;\n } else if (points) {\n segmentLength += currentPoint.partialLength;\n pointInd += 1;\n\n if (pointInd >= points.length) {\n pointInd = 0;\n segmentInd += 1;\n\n if (!segments[segmentInd]) {\n if (mask.v.c) {\n pointInd = 0;\n segmentInd = 0;\n points = segments[segmentInd].points;\n } else {\n segmentLength -= currentPoint.partialLength;\n points = null;\n }\n } else {\n points = segments[segmentInd].points;\n }\n }\n\n if (points) {\n prevPoint = currentPoint;\n currentPoint = points[pointInd];\n partialLength = currentPoint.partialLength;\n }\n }\n }\n\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0);\n } else {\n offf = letters[i].an / 2 - letters[i].add;\n matrixHelper.translate(-offf, 0, 0); // Grouping alignment\n\n matrixHelper.translate(-alignment[0] * letters[i].an * 0.005, -alignment[1] * yOff * 0.01, 0);\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.t.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars); // This condition is to prevent applying tracking to first character in each line. Might be better to use a boolean \"isNewLine\"\n\n if (xPos !== 0 || documentData.j !== 0) {\n if (this._hasMaskedPath) {\n if (mult.length) {\n currentLength += animatorProps.t.v * mult[0];\n } else {\n currentLength += animatorProps.t.v * mult;\n }\n } else if (mult.length) {\n xPos += animatorProps.t.v * mult[0];\n } else {\n xPos += animatorProps.t.v * mult;\n }\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n sw = documentData.sw || 0;\n }\n\n if (documentData.strokeColorAnim) {\n if (documentData.sc) {\n sc = [documentData.sc[0], documentData.sc[1], documentData.sc[2]];\n } else {\n sc = [0, 0, 0];\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n fc = [documentData.fc[0], documentData.fc[1], documentData.fc[2]];\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.a.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.translate(-animatorProps.a.v[0] * mult[0], -animatorProps.a.v[1] * mult[1], animatorProps.a.v[2] * mult[2]);\n } else {\n matrixHelper.translate(-animatorProps.a.v[0] * mult, -animatorProps.a.v[1] * mult, animatorProps.a.v[2] * mult);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.s.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (mult.length) {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult[0], 1 + (animatorProps.s.v[1] - 1) * mult[1], 1);\n } else {\n matrixHelper.scale(1 + (animatorProps.s.v[0] - 1) * mult, 1 + (animatorProps.s.v[1] - 1) * mult, 1);\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (animatorProps.sk.propType) {\n if (mult.length) {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult[0], animatorProps.sa.v * mult[1]);\n } else {\n matrixHelper.skewFromAxis(-animatorProps.sk.v * mult, animatorProps.sa.v * mult);\n }\n }\n\n if (animatorProps.r.propType) {\n if (mult.length) {\n matrixHelper.rotateZ(-animatorProps.r.v * mult[2]);\n } else {\n matrixHelper.rotateZ(-animatorProps.r.v * mult);\n }\n }\n\n if (animatorProps.ry.propType) {\n if (mult.length) {\n matrixHelper.rotateY(animatorProps.ry.v * mult[1]);\n } else {\n matrixHelper.rotateY(animatorProps.ry.v * mult);\n }\n }\n\n if (animatorProps.rx.propType) {\n if (mult.length) {\n matrixHelper.rotateX(animatorProps.rx.v * mult[0]);\n } else {\n matrixHelper.rotateX(animatorProps.rx.v * mult);\n }\n }\n\n if (animatorProps.o.propType) {\n if (mult.length) {\n elemOpacity += (animatorProps.o.v * mult[0] - elemOpacity) * mult[0];\n } else {\n elemOpacity += (animatorProps.o.v * mult - elemOpacity) * mult;\n }\n }\n\n if (documentData.strokeWidthAnim && animatorProps.sw.propType) {\n if (mult.length) {\n sw += animatorProps.sw.v * mult[0];\n } else {\n sw += animatorProps.sw.v * mult;\n }\n }\n\n if (documentData.strokeColorAnim && animatorProps.sc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult[0];\n } else {\n sc[k] += (animatorProps.sc.v[k] - sc[k]) * mult;\n }\n }\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n if (animatorProps.fc.propType) {\n for (k = 0; k < 3; k += 1) {\n if (mult.length) {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult[0];\n } else {\n fc[k] += (animatorProps.fc.v[k] - fc[k]) * mult;\n }\n }\n }\n\n if (animatorProps.fh.propType) {\n if (mult.length) {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult[0]);\n } else {\n fc = addHueToRGB(fc, animatorProps.fh.v * mult);\n }\n }\n\n if (animatorProps.fs.propType) {\n if (mult.length) {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult[0]);\n } else {\n fc = addSaturationToRGB(fc, animatorProps.fs.v * mult);\n }\n }\n\n if (animatorProps.fb.propType) {\n if (mult.length) {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult[0]);\n } else {\n fc = addBrightnessToRGB(fc, animatorProps.fb.v * mult);\n }\n }\n }\n }\n\n for (j = 0; j < jLen; j += 1) {\n animatorProps = animators[j].a;\n\n if (animatorProps.p.propType) {\n animatorSelector = animators[j].s;\n mult = animatorSelector.getMult(letters[i].anIndexes[j], textData.a[j].s.totalChars);\n\n if (this._hasMaskedPath) {\n if (mult.length) {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult[0], -animatorProps.p.v[2] * mult[1]);\n } else {\n matrixHelper.translate(0, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n } else if (mult.length) {\n matrixHelper.translate(animatorProps.p.v[0] * mult[0], animatorProps.p.v[1] * mult[1], -animatorProps.p.v[2] * mult[2]);\n } else {\n matrixHelper.translate(animatorProps.p.v[0] * mult, animatorProps.p.v[1] * mult, -animatorProps.p.v[2] * mult);\n }\n }\n }\n\n if (documentData.strokeWidthAnim) {\n letterSw = sw < 0 ? 0 : sw;\n }\n\n if (documentData.strokeColorAnim) {\n letterSc = 'rgb(' + Math.round(sc[0] * 255) + ',' + Math.round(sc[1] * 255) + ',' + Math.round(sc[2] * 255) + ')';\n }\n\n if (documentData.fillColorAnim && documentData.fc) {\n letterFc = 'rgb(' + Math.round(fc[0] * 255) + ',' + Math.round(fc[1] * 255) + ',' + Math.round(fc[2] * 255) + ')';\n }\n\n if (this._hasMaskedPath) {\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(0, alignment[1] * yOff * 0.01 + yPos, 0);\n\n if (this._pathData.p.v) {\n tanAngle = (currentPoint.point[1] - prevPoint.point[1]) / (currentPoint.point[0] - prevPoint.point[0]);\n var rot = Math.atan(tanAngle) * 180 / Math.PI;\n\n if (currentPoint.point[0] < prevPoint.point[0]) {\n rot += 180;\n }\n\n matrixHelper.rotate(-rot * Math.PI / 180);\n }\n\n matrixHelper.translate(xPathPos, yPathPos, 0);\n currentLength -= alignment[0] * letters[i].an * 0.005;\n\n if (letters[i + 1] && ind !== letters[i + 1].ind) {\n currentLength += letters[i].an / 2;\n currentLength += documentData.tr * 0.001 * documentData.finalSize;\n }\n } else {\n matrixHelper.translate(xPos, yPos, 0);\n\n if (documentData.ps) {\n // matrixHelper.translate(documentData.ps[0],documentData.ps[1],0);\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(letters[i].animatorJustifyOffset + documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[letters[i].line]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(0, -documentData.ls);\n matrixHelper.translate(offf, 0, 0);\n matrixHelper.translate(alignment[0] * letters[i].an * 0.005, alignment[1] * yOff * 0.01, 0);\n xPos += letters[i].l + documentData.tr * 0.001 * documentData.finalSize;\n }\n\n if (renderType === 'html') {\n letterM = matrixHelper.toCSS();\n } else if (renderType === 'svg') {\n letterM = matrixHelper.to2dCSS();\n } else {\n letterP = [matrixHelper.props[0], matrixHelper.props[1], matrixHelper.props[2], matrixHelper.props[3], matrixHelper.props[4], matrixHelper.props[5], matrixHelper.props[6], matrixHelper.props[7], matrixHelper.props[8], matrixHelper.props[9], matrixHelper.props[10], matrixHelper.props[11], matrixHelper.props[12], matrixHelper.props[13], matrixHelper.props[14], matrixHelper.props[15]];\n }\n\n letterO = elemOpacity;\n }\n\n if (renderedLettersCount <= i) {\n letterValue = new LetterProps(letterO, letterSw, letterSc, letterFc, letterM, letterP);\n this.renderedLetters.push(letterValue);\n renderedLettersCount += 1;\n this.lettersChangedFlag = true;\n } else {\n letterValue = this.renderedLetters[i];\n this.lettersChangedFlag = letterValue.update(letterO, letterSw, letterSc, letterFc, letterM, letterP) || this.lettersChangedFlag;\n }\n }\n };\n\n TextAnimatorProperty.prototype.getValue = function () {\n if (this._elem.globalData.frameId === this._frameId) {\n return;\n }\n\n this._frameId = this._elem.globalData.frameId;\n this.iterateDynamicProperties();\n };\n\n TextAnimatorProperty.prototype.mHelper = new Matrix();\n TextAnimatorProperty.prototype.defaultPropsArray = [];\n extendPrototype([DynamicPropertyContainer], TextAnimatorProperty);\n\n function ITextElement() {}\n\n ITextElement.prototype.initElement = function (data, globalData, comp) {\n this.lettersChangedFlag = true;\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.textProperty = new TextProperty(this, data.t, this.dynamicProperties);\n this.textAnimator = new TextAnimatorProperty(data.t, this.renderType, this);\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n this.initRenderable();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n this.createContent();\n this.hide();\n this.textAnimator.searchProperties(this.dynamicProperties);\n };\n\n ITextElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n };\n\n ITextElement.prototype.createPathShape = function (matrixHelper, shapes) {\n var j;\n var jLen = shapes.length;\n var pathNodes;\n var shapeStr = '';\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n pathNodes = shapes[j].ks.k;\n shapeStr += buildShapeString(pathNodes, pathNodes.i.length, true, matrixHelper);\n }\n }\n\n return shapeStr;\n };\n\n ITextElement.prototype.updateDocumentData = function (newData, index) {\n this.textProperty.updateDocumentData(newData, index);\n };\n\n ITextElement.prototype.canResizeFont = function (_canResize) {\n this.textProperty.canResizeFont(_canResize);\n };\n\n ITextElement.prototype.setMinimumFontSize = function (_fontSize) {\n this.textProperty.setMinimumFontSize(_fontSize);\n };\n\n ITextElement.prototype.applyTextPropertiesToMatrix = function (documentData, matrixHelper, lineNumber, xPos, yPos) {\n if (documentData.ps) {\n matrixHelper.translate(documentData.ps[0], documentData.ps[1] + documentData.ascent, 0);\n }\n\n matrixHelper.translate(0, -documentData.ls, 0);\n\n switch (documentData.j) {\n case 1:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]), 0, 0);\n break;\n\n case 2:\n matrixHelper.translate(documentData.justifyOffset + (documentData.boxWidth - documentData.lineWidths[lineNumber]) / 2, 0, 0);\n break;\n\n default:\n break;\n }\n\n matrixHelper.translate(xPos, yPos, 0);\n };\n\n ITextElement.prototype.buildColor = function (colorData) {\n return 'rgb(' + Math.round(colorData[0] * 255) + ',' + Math.round(colorData[1] * 255) + ',' + Math.round(colorData[2] * 255) + ')';\n };\n\n ITextElement.prototype.emptyProp = new LetterProps();\n\n ITextElement.prototype.destroy = function () {};\n\n ITextElement.prototype.validateText = function () {\n if (this.textProperty._mdf || this.textProperty._isFirstFrame) {\n this.buildNewText();\n this.textProperty._isFirstFrame = false;\n this.textProperty._mdf = false;\n }\n };\n\n var emptyShapeData = {\n shapes: []\n };\n\n function SVGTextLottieElement(data, globalData, comp) {\n this.textSpans = [];\n this.renderType = 'svg';\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, SVGBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], SVGTextLottieElement);\n\n SVGTextLottieElement.prototype.createContent = function () {\n if (this.data.singleShape && !this.globalData.fontManager.chars) {\n this.textContainer = createNS('text');\n }\n };\n\n SVGTextLottieElement.prototype.buildTextContents = function (textArray) {\n var i = 0;\n var len = textArray.length;\n var textContents = [];\n var currentTextContent = '';\n\n while (i < len) {\n if (textArray[i] === String.fromCharCode(13) || textArray[i] === String.fromCharCode(3)) {\n textContents.push(currentTextContent);\n currentTextContent = '';\n } else {\n currentTextContent += textArray[i];\n }\n\n i += 1;\n }\n\n textContents.push(currentTextContent);\n return textContents;\n };\n\n SVGTextLottieElement.prototype.buildShapeData = function (data, scale) {\n // data should probably be cloned to apply scale separately to each instance of a text on different layers\n // but since text internal content gets only rendered once and then it's never rerendered,\n // it's probably safe not to clone data and reuse always the same instance even if the object is mutated.\n // Avoiding cloning is preferred since cloning each character shape data is expensive\n if (data.shapes && data.shapes.length) {\n var shape = data.shapes[0];\n\n if (shape.it) {\n var shapeItem = shape.it[shape.it.length - 1];\n\n if (shapeItem.s) {\n shapeItem.s.k[0] = scale;\n shapeItem.s.k[1] = scale;\n }\n }\n }\n\n return data;\n };\n\n SVGTextLottieElement.prototype.buildNewText = function () {\n this.addDynamicProperty(this);\n var i;\n var len;\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData ? documentData.l.length : 0);\n\n if (documentData.fc) {\n this.layerElement.setAttribute('fill', this.buildColor(documentData.fc));\n } else {\n this.layerElement.setAttribute('fill', 'rgba(0,0,0,0)');\n }\n\n if (documentData.sc) {\n this.layerElement.setAttribute('stroke', this.buildColor(documentData.sc));\n this.layerElement.setAttribute('stroke-width', documentData.sw);\n }\n\n this.layerElement.setAttribute('font-size', documentData.finalSize);\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (fontData.fClass) {\n this.layerElement.setAttribute('class', fontData.fClass);\n } else {\n this.layerElement.setAttribute('font-family', fontData.fFamily);\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n this.layerElement.setAttribute('font-style', fStyle);\n this.layerElement.setAttribute('font-weight', fWeight);\n }\n\n this.layerElement.setAttribute('aria-label', documentData.t);\n var letters = documentData.l || [];\n var usesGlyphs = !!this.globalData.fontManager.chars;\n len = letters.length;\n var tSpan;\n var matrixHelper = this.mHelper;\n var shapeStr = '';\n var singleShape = this.data.singleShape;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n\n if (singleShape && !usesGlyphs && !documentData.sz) {\n var tElement = this.textContainer;\n var justify = 'start';\n\n switch (documentData.j) {\n case 1:\n justify = 'end';\n break;\n\n case 2:\n justify = 'middle';\n break;\n\n default:\n justify = 'start';\n break;\n }\n\n tElement.setAttribute('text-anchor', justify);\n tElement.setAttribute('letter-spacing', trackingOffset);\n var textContent = this.buildTextContents(documentData.finalText);\n len = textContent.length;\n yPos = documentData.ps ? documentData.ps[1] + documentData.ascent : 0;\n\n for (i = 0; i < len; i += 1) {\n tSpan = this.textSpans[i].span || createNS('tspan');\n tSpan.textContent = textContent[i];\n tSpan.setAttribute('x', 0);\n tSpan.setAttribute('y', yPos);\n tSpan.style.display = 'inherit';\n tElement.appendChild(tSpan);\n\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n glyph: null\n };\n }\n\n this.textSpans[i].span = tSpan;\n yPos += documentData.finalLineHeight;\n }\n\n this.layerElement.appendChild(tElement);\n } else {\n var cachedSpansLength = this.textSpans.length;\n var charData;\n\n for (i = 0; i < len; i += 1) {\n if (!this.textSpans[i]) {\n this.textSpans[i] = {\n span: null,\n childSpan: null,\n glyph: null\n };\n }\n\n if (!usesGlyphs || !singleShape || i === 0) {\n tSpan = cachedSpansLength > i ? this.textSpans[i].span : createNS(usesGlyphs ? 'g' : 'text');\n\n if (cachedSpansLength <= i) {\n tSpan.setAttribute('stroke-linecap', 'butt');\n tSpan.setAttribute('stroke-linejoin', 'round');\n tSpan.setAttribute('stroke-miterlimit', '4');\n this.textSpans[i].span = tSpan;\n\n if (usesGlyphs) {\n var childSpan = createNS('g');\n tSpan.appendChild(childSpan);\n this.textSpans[i].childSpan = childSpan;\n }\n\n this.textSpans[i].span = tSpan;\n this.layerElement.appendChild(tSpan);\n }\n\n tSpan.style.display = 'inherit';\n }\n\n matrixHelper.reset();\n\n if (singleShape) {\n if (letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n xPos += letters[i].l || 0; // xPos += letters[i].val === ' ' ? 0 : trackingOffset;\n\n xPos += trackingOffset;\n }\n\n if (usesGlyphs) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var glyphElement; // t === 1 means the character has been replaced with an animated shaped\n\n if (charData.t === 1) {\n glyphElement = new SVGCompElement(charData.data, this.globalData, this);\n } else {\n var data = emptyShapeData;\n\n if (charData.data && charData.data.shapes) {\n data = this.buildShapeData(charData.data, documentData.finalSize);\n }\n\n glyphElement = new SVGShapeElement(data, this.globalData, this);\n }\n\n if (this.textSpans[i].glyph) {\n var glyph = this.textSpans[i].glyph;\n this.textSpans[i].childSpan.removeChild(glyph.layerElement);\n glyph.destroy();\n }\n\n this.textSpans[i].glyph = glyphElement;\n glyphElement._debug = true;\n glyphElement.prepareFrame(0);\n glyphElement.renderFrame();\n this.textSpans[i].childSpan.appendChild(glyphElement.layerElement); // when using animated shapes, the layer will be scaled instead of replacing the internal scale\n // this might have issues with strokes and might need a different solution\n\n if (charData.t === 1) {\n this.textSpans[i].childSpan.setAttribute('transform', 'scale(' + documentData.finalSize / 100 + ',' + documentData.finalSize / 100 + ')');\n }\n } else {\n if (singleShape) {\n tSpan.setAttribute('transform', 'translate(' + matrixHelper.props[12] + ',' + matrixHelper.props[13] + ')');\n }\n\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n } //\n\n }\n\n if (singleShape && tSpan) {\n tSpan.setAttribute('d', shapeStr);\n }\n }\n\n while (i < this.textSpans.length) {\n this.textSpans[i].span.style.display = 'none';\n i += 1;\n }\n\n this._sizeChanged = true;\n };\n\n SVGTextLottieElement.prototype.sourceRectAtTime = function () {\n this.prepareFrame(this.comp.renderedFrame - this.data.st);\n this.renderInnerContent();\n\n if (this._sizeChanged) {\n this._sizeChanged = false;\n var textBox = this.layerElement.getBBox();\n this.bbox = {\n top: textBox.y,\n left: textBox.x,\n width: textBox.width,\n height: textBox.height\n };\n }\n\n return this.bbox;\n };\n\n SVGTextLottieElement.prototype.getValue = function () {\n var i;\n var len = this.textSpans.length;\n var glyphElement;\n this.renderedFrame = this.comp.renderedFrame;\n\n for (i = 0; i < len; i += 1) {\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.prepareFrame(this.comp.renderedFrame - this.data.st);\n\n if (glyphElement._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n SVGTextLottieElement.prototype.renderInnerContent = function () {\n this.validateText();\n\n if (!this.data.singleShape || this._mdf) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (this.lettersChangedFlag || this.textAnimator.lettersChangedFlag) {\n this._sizeChanged = true;\n var i;\n var len;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var glyphElement;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n textSpan = this.textSpans[i].span;\n glyphElement = this.textSpans[i].glyph;\n\n if (glyphElement) {\n glyphElement.renderFrame();\n }\n\n if (renderedLetter._mdf.m) {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n\n if (renderedLetter._mdf.o) {\n textSpan.setAttribute('opacity', renderedLetter.o);\n }\n\n if (renderedLetter._mdf.sw) {\n textSpan.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter._mdf.sc) {\n textSpan.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter._mdf.fc) {\n textSpan.setAttribute('fill', renderedLetter.fc);\n }\n }\n }\n }\n }\n };\n\n function ISolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([IImageElement], ISolidElement);\n\n ISolidElement.prototype.createContent = function () {\n var rect = createNS('rect'); /// /rect.style.width = this.data.sw;\n /// /rect.style.height = this.data.sh;\n /// /rect.style.fill = this.data.sc;\n\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.layerElement.appendChild(rect);\n };\n\n function NullElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initFrame();\n this.initTransform(data, globalData, comp);\n this.initHierarchy();\n }\n\n NullElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n NullElement.prototype.renderFrame = function () {};\n\n NullElement.prototype.getBaseElement = function () {\n return null;\n };\n\n NullElement.prototype.destroy = function () {};\n\n NullElement.prototype.sourceRectAtTime = function () {};\n\n NullElement.prototype.hide = function () {};\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement], NullElement);\n\n function SVGRendererBase() {}\n\n extendPrototype([BaseRenderer], SVGRendererBase);\n\n SVGRendererBase.prototype.createNull = function (data) {\n return new NullElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createShape = function (data) {\n return new SVGShapeElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createText = function (data) {\n return new SVGTextLottieElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createImage = function (data) {\n return new IImageElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.createSolid = function (data) {\n return new ISolidElement(data, this.globalData, this);\n };\n\n SVGRendererBase.prototype.configAnimation = function (animData) {\n this.svgElement.setAttribute('xmlns', 'http://www.w3.org/2000/svg');\n this.svgElement.setAttribute('xmlns:xlink', 'http://www.w3.org/1999/xlink');\n\n if (this.renderConfig.viewBoxSize) {\n this.svgElement.setAttribute('viewBox', this.renderConfig.viewBoxSize);\n } else {\n this.svgElement.setAttribute('viewBox', '0 0 ' + animData.w + ' ' + animData.h);\n }\n\n if (!this.renderConfig.viewBoxOnly) {\n this.svgElement.setAttribute('width', animData.w);\n this.svgElement.setAttribute('height', animData.h);\n this.svgElement.style.width = '100%';\n this.svgElement.style.height = '100%';\n this.svgElement.style.transform = 'translate3d(0,0,0)';\n this.svgElement.style.contentVisibility = this.renderConfig.contentVisibility;\n }\n\n if (this.renderConfig.width) {\n this.svgElement.setAttribute('width', this.renderConfig.width);\n }\n\n if (this.renderConfig.height) {\n this.svgElement.setAttribute('height', this.renderConfig.height);\n }\n\n if (this.renderConfig.className) {\n this.svgElement.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.svgElement.setAttribute('id', this.renderConfig.id);\n }\n\n if (this.renderConfig.focusable !== undefined) {\n this.svgElement.setAttribute('focusable', this.renderConfig.focusable);\n }\n\n this.svgElement.setAttribute('preserveAspectRatio', this.renderConfig.preserveAspectRatio); // this.layerElement.style.transform = 'translate3d(0,0,0)';\n // this.layerElement.style.transformOrigin = this.layerElement.style.mozTransformOrigin = this.layerElement.style.webkitTransformOrigin = this.layerElement.style['-webkit-transform'] = \"0px 0px 0px\";\n\n this.animationItem.wrapper.appendChild(this.svgElement); // Mask animation\n\n var defs = this.globalData.defs;\n this.setupGlobalData(animData, defs);\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.data = animData;\n var maskElement = createNS('clipPath');\n var rect = createNS('rect');\n rect.setAttribute('width', animData.w);\n rect.setAttribute('height', animData.h);\n rect.setAttribute('x', 0);\n rect.setAttribute('y', 0);\n var maskId = createElementID();\n maskElement.setAttribute('id', maskId);\n maskElement.appendChild(rect);\n this.layerElement.setAttribute('clip-path', 'url(' + getLocationHref() + '#' + maskId + ')');\n defs.appendChild(maskElement);\n this.layers = animData.layers;\n this.elements = createSizedArray(animData.layers.length);\n };\n\n SVGRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.layerElement = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n SVGRendererBase.prototype.updateContainerSize = function () {};\n\n SVGRendererBase.prototype.findIndexByInd = function (ind) {\n var i = 0;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ind === ind) {\n return i;\n }\n }\n\n return -1;\n };\n\n SVGRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n elements[pos] = true;\n var element = this.createItem(this.layers[pos]);\n elements[pos] = element;\n\n if (getExpressionsPlugin()) {\n if (this.layers[pos].ty === 0) {\n this.globalData.projectInterface.registerComposition(element);\n }\n\n element.initExpressions();\n }\n\n this.appendElementInPos(element, pos);\n\n if (this.layers[pos].tt) {\n var elementIndex = 'tp' in this.layers[pos] ? this.findIndexByInd(this.layers[pos].tp) : pos - 1;\n\n if (elementIndex === -1) {\n return;\n }\n\n if (!this.elements[elementIndex] || this.elements[elementIndex] === true) {\n this.buildItem(elementIndex);\n this.addPendingElement(element);\n } else {\n var matteElement = elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[pos].tt);\n element.setMatte(matteMask);\n }\n }\n };\n\n SVGRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n\n if (element.data.tt) {\n var i = 0;\n var len = this.elements.length;\n\n while (i < len) {\n if (this.elements[i] === element) {\n var elementIndex = 'tp' in element.data ? this.findIndexByInd(element.data.tp) : i - 1;\n var matteElement = this.elements[elementIndex];\n var matteMask = matteElement.getMatte(this.layers[i].tt);\n element.setMatte(matteMask);\n break;\n }\n\n i += 1;\n }\n }\n }\n };\n\n SVGRendererBase.prototype.renderFrame = function (num) {\n if (this.renderedFrame === num || this.destroyed) {\n return;\n }\n\n if (num === null) {\n num = this.renderedFrame;\n } else {\n this.renderedFrame = num;\n } // console.log('-------');\n // console.log('FRAME ',num);\n\n\n this.globalData.frameNum = num;\n this.globalData.frameId += 1;\n this.globalData.projectInterface.currentFrame = num;\n this.globalData._mdf = false;\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n }\n };\n\n SVGRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newElement = element.getBaseElement();\n\n if (!newElement) {\n return;\n }\n\n var i = 0;\n var nextElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement()) {\n nextElement = this.elements[i].getBaseElement();\n }\n\n i += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(newElement, nextElement);\n } else {\n this.layerElement.appendChild(newElement);\n }\n };\n\n SVGRendererBase.prototype.hide = function () {\n this.layerElement.style.display = 'none';\n };\n\n SVGRendererBase.prototype.show = function () {\n this.layerElement.style.display = 'block';\n };\n\n function ICompElement() {}\n\n extendPrototype([BaseElement, TransformElement, HierarchyElement, FrameElement, RenderableDOMElement], ICompElement);\n\n ICompElement.prototype.initElement = function (data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initTransform(data, globalData, comp);\n this.initRenderable();\n this.initHierarchy();\n this.initRendererElement();\n this.createContainerElements();\n this.createRenderableComponents();\n\n if (this.data.xt || !globalData.progressiveLoad) {\n this.buildAllItems();\n }\n\n this.hide();\n };\n /* ICompElement.prototype.hide = function(){\r\n if(!this.hidden){\r\n this.hideElement();\r\n var i,len = this.elements.length;\r\n for( i = 0; i < len; i+=1 ){\r\n if(this.elements[i]){\r\n this.elements[i].hide();\r\n }\r\n }\r\n }\r\n }; */\n\n\n ICompElement.prototype.prepareFrame = function (num) {\n this._mdf = false;\n this.prepareRenderableFrame(num);\n this.prepareProperties(num, this.isInRange);\n\n if (!this.isInRange && !this.data.xt) {\n return;\n }\n\n if (!this.tm._placeholder) {\n var timeRemapped = this.tm.v;\n\n if (timeRemapped === this.data.op) {\n timeRemapped = this.data.op - 1;\n }\n\n this.renderedFrame = timeRemapped;\n } else {\n this.renderedFrame = num / this.data.sr;\n }\n\n var i;\n var len = this.elements.length;\n\n if (!this.completeLayers) {\n this.checkLayers(this.renderedFrame);\n } // This iteration needs to be backwards because of how expressions connect between each other\n\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(this.renderedFrame - this.layers[i].st);\n\n if (this.elements[i]._mdf) {\n this._mdf = true;\n }\n }\n }\n };\n\n ICompElement.prototype.renderInnerContent = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n ICompElement.prototype.setElements = function (elems) {\n this.elements = elems;\n };\n\n ICompElement.prototype.getElements = function () {\n return this.elements;\n };\n\n ICompElement.prototype.destroyElements = function () {\n var i;\n var len = this.layers.length;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n };\n\n ICompElement.prototype.destroy = function () {\n this.destroyElements();\n this.destroyBaseElement();\n };\n\n function SVGCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = true;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([SVGRendererBase, ICompElement, SVGBaseElement], SVGCompElement);\n\n SVGCompElement.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function SVGRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.svgElement = createNS('svg');\n var ariaLabel = '';\n\n if (config && config.title) {\n var titleElement = createNS('title');\n var titleId = createElementID();\n titleElement.setAttribute('id', titleId);\n titleElement.textContent = config.title;\n this.svgElement.appendChild(titleElement);\n ariaLabel += titleId;\n }\n\n if (config && config.description) {\n var descElement = createNS('desc');\n var descId = createElementID();\n descElement.setAttribute('id', descId);\n descElement.textContent = config.description;\n this.svgElement.appendChild(descElement);\n ariaLabel += ' ' + descId;\n }\n\n if (ariaLabel) {\n this.svgElement.setAttribute('aria-labelledby', ariaLabel);\n }\n\n var defs = createNS('defs');\n this.svgElement.appendChild(defs);\n var maskElement = createNS('g');\n this.svgElement.appendChild(maskElement);\n this.layerElement = maskElement;\n this.renderConfig = {\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n progressiveLoad: config && config.progressiveLoad || false,\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n viewBoxOnly: config && config.viewBoxOnly || false,\n viewBoxSize: config && config.viewBoxSize || false,\n className: config && config.className || '',\n id: config && config.id || '',\n focusable: config && config.focusable,\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '100%',\n height: config && config.filterSize && config.filterSize.height || '100%',\n x: config && config.filterSize && config.filterSize.x || '0%',\n y: config && config.filterSize && config.filterSize.y || '0%'\n },\n width: config && config.width,\n height: config && config.height,\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n defs: defs,\n renderConfig: this.renderConfig\n };\n this.elements = [];\n this.pendingElements = [];\n this.destroyed = false;\n this.rendererType = 'svg';\n }\n\n extendPrototype([SVGRendererBase], SVGRenderer);\n\n SVGRenderer.prototype.createComp = function (data) {\n return new SVGCompElement(data, this.globalData, this);\n };\n\n function ShapeTransformManager() {\n this.sequences = {};\n this.sequenceList = [];\n this.transform_key_count = 0;\n }\n\n ShapeTransformManager.prototype = {\n addTransformSequence: function addTransformSequence(transforms) {\n var i;\n var len = transforms.length;\n var key = '_';\n\n for (i = 0; i < len; i += 1) {\n key += transforms[i].transform.key + '_';\n }\n\n var sequence = this.sequences[key];\n\n if (!sequence) {\n sequence = {\n transforms: [].concat(transforms),\n finalTransform: new Matrix(),\n _mdf: false\n };\n this.sequences[key] = sequence;\n this.sequenceList.push(sequence);\n }\n\n return sequence;\n },\n processSequence: function processSequence(sequence, isFirstFrame) {\n var i = 0;\n var len = sequence.transforms.length;\n var _mdf = isFirstFrame;\n\n while (i < len && !isFirstFrame) {\n if (sequence.transforms[i].transform.mProps._mdf) {\n _mdf = true;\n break;\n }\n\n i += 1;\n }\n\n if (_mdf) {\n sequence.finalTransform.reset();\n\n for (i = len - 1; i >= 0; i -= 1) {\n sequence.finalTransform.multiply(sequence.transforms[i].transform.mProps.v);\n }\n }\n\n sequence._mdf = _mdf;\n },\n processSequences: function processSequences(isFirstFrame) {\n var i;\n var len = this.sequenceList.length;\n\n for (i = 0; i < len; i += 1) {\n this.processSequence(this.sequenceList[i], isFirstFrame);\n }\n },\n getNewKey: function getNewKey() {\n this.transform_key_count += 1;\n return '_' + this.transform_key_count;\n }\n };\n\n var lumaLoader = function lumaLoader() {\n var id = '__lottie_element_luma_buffer';\n var lumaBuffer = null;\n var lumaBufferCtx = null;\n var svg = null; // This alternate solution has a slight delay before the filter is applied, resulting in a flicker on the first frame.\n // Keeping this here for reference, and in the future, if offscreen canvas supports url filters, this can be used.\n // For now, neither of them work for offscreen canvas, so canvas workers can't support the luma track matte mask.\n // Naming it solution 2 to mark the extra comment lines.\n\n /*\r\n var svgString = [\r\n '',\r\n '',\r\n '',\r\n '',\r\n '',\r\n ].join('');\r\n var blob = new Blob([svgString], { type: 'image/svg+xml' });\r\n var url = URL.createObjectURL(blob);\r\n */\n\n function createLumaSvgFilter() {\n var _svg = createNS('svg');\n\n var fil = createNS('filter');\n var matrix = createNS('feColorMatrix');\n fil.setAttribute('id', id);\n matrix.setAttribute('type', 'matrix');\n matrix.setAttribute('color-interpolation-filters', 'sRGB');\n matrix.setAttribute('values', '0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0, 0.3, 0.3, 0.3, 0, 0');\n fil.appendChild(matrix);\n\n _svg.appendChild(fil);\n\n _svg.setAttribute('id', id + '_svg');\n\n if (featureSupport.svgLumaHidden) {\n _svg.style.display = 'none';\n }\n\n return _svg;\n }\n\n function loadLuma() {\n if (!lumaBuffer) {\n svg = createLumaSvgFilter();\n document.body.appendChild(svg);\n lumaBuffer = createTag('canvas');\n lumaBufferCtx = lumaBuffer.getContext('2d'); // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n lumaBufferCtx.fillStyle = 'rgba(0,0,0,0)';\n lumaBufferCtx.fillRect(0, 0, 1, 1);\n }\n }\n\n function getLuma(canvas) {\n if (!lumaBuffer) {\n loadLuma();\n }\n\n lumaBuffer.width = canvas.width;\n lumaBuffer.height = canvas.height; // lumaBufferCtx.filter = `url('${url}#__lottie_element_luma_buffer')`; // part of solution 2\n\n lumaBufferCtx.filter = 'url(#' + id + ')';\n return lumaBuffer;\n }\n\n return {\n load: loadLuma,\n get: getLuma\n };\n };\n\n function createCanvas(width, height) {\n if (featureSupport.offscreenCanvas) {\n return new OffscreenCanvas(width, height);\n }\n\n var canvas = createTag('canvas');\n canvas.width = width;\n canvas.height = height;\n return canvas;\n }\n\n var assetLoader = function () {\n return {\n loadLumaCanvas: lumaLoader.load,\n getLumaCanvas: lumaLoader.get,\n createCanvas: createCanvas\n };\n }();\n\n var registeredEffects = {};\n\n function CVEffects(elem) {\n var i;\n var len = elem.data.ef ? elem.data.ef.length : 0;\n this.filters = [];\n var filterManager;\n\n for (i = 0; i < len; i += 1) {\n filterManager = null;\n var type = elem.data.ef[i].ty;\n\n if (registeredEffects[type]) {\n var Effect = registeredEffects[type].effect;\n filterManager = new Effect(elem.effectsManager.effectElements[i], elem);\n }\n\n if (filterManager) {\n this.filters.push(filterManager);\n }\n }\n\n if (this.filters.length) {\n elem.addRenderableComponent(this);\n }\n }\n\n CVEffects.prototype.renderFrame = function (_isFirstFrame) {\n var i;\n var len = this.filters.length;\n\n for (i = 0; i < len; i += 1) {\n this.filters[i].renderFrame(_isFirstFrame);\n }\n };\n\n CVEffects.prototype.getEffects = function (type) {\n var i;\n var len = this.filters.length;\n var effects = [];\n\n for (i = 0; i < len; i += 1) {\n if (this.filters[i].type === type) {\n effects.push(this.filters[i]);\n }\n }\n\n return effects;\n };\n\n function registerEffect(id, effect) {\n registeredEffects[id] = {\n effect: effect\n };\n }\n\n function CVMaskElement(data, element) {\n this.data = data;\n this.element = element;\n this.masksProperties = this.data.masksProperties || [];\n this.viewData = createSizedArray(this.masksProperties.length);\n var i;\n var len = this.masksProperties.length;\n var hasMasks = false;\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n hasMasks = true;\n }\n\n this.viewData[i] = ShapePropertyFactory.getShapeProp(this.element, this.masksProperties[i], 3);\n }\n\n this.hasMasks = hasMasks;\n\n if (hasMasks) {\n this.element.addRenderableComponent(this);\n }\n }\n\n CVMaskElement.prototype.renderFrame = function () {\n if (!this.hasMasks) {\n return;\n }\n\n var transform = this.element.finalTransform.mat;\n var ctx = this.element.canvasContext;\n var i;\n var len = this.masksProperties.length;\n var pt;\n var pts;\n var data;\n ctx.beginPath();\n\n for (i = 0; i < len; i += 1) {\n if (this.masksProperties[i].mode !== 'n') {\n if (this.masksProperties[i].inv) {\n ctx.moveTo(0, 0);\n ctx.lineTo(this.element.globalData.compSize.w, 0);\n ctx.lineTo(this.element.globalData.compSize.w, this.element.globalData.compSize.h);\n ctx.lineTo(0, this.element.globalData.compSize.h);\n ctx.lineTo(0, 0);\n }\n\n data = this.viewData[i].v;\n pt = transform.applyToPointArray(data.v[0][0], data.v[0][1], 0);\n ctx.moveTo(pt[0], pt[1]);\n var j;\n var jLen = data._length;\n\n for (j = 1; j < jLen; j += 1) {\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[j], data.v[j]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n\n pts = transform.applyToTriplePoints(data.o[j - 1], data.i[0], data.v[0]);\n ctx.bezierCurveTo(pts[0], pts[1], pts[2], pts[3], pts[4], pts[5]);\n }\n }\n\n this.element.globalData.renderer.save(true);\n ctx.clip();\n };\n\n CVMaskElement.prototype.getMaskProperty = MaskElement.prototype.getMaskProperty;\n\n CVMaskElement.prototype.destroy = function () {\n this.element = null;\n };\n\n function CVBaseElement() {}\n\n var operationsMap = {\n 1: 'source-in',\n 2: 'source-out',\n 3: 'source-in',\n 4: 'source-out'\n };\n CVBaseElement.prototype = {\n createElements: function createElements() {},\n initRendererElement: function initRendererElement() {},\n createContainerElements: function createContainerElements() {\n // If the layer is masked we will use two buffers to store each different states of the drawing\n // This solution is not ideal for several reason. But unfortunately, because of the recursive\n // nature of the render tree, it's the only simple way to make sure one inner mask doesn't override an outer mask.\n // TODO: try to reduce the size of these buffers to the size of the composition contaning the layer\n // It might be challenging because the layer most likely is transformed in some way\n if (this.data.tt >= 1) {\n this.buffers = [];\n var canvasContext = this.globalData.canvasContext;\n var bufferCanvas = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas);\n var bufferCanvas2 = assetLoader.createCanvas(canvasContext.canvas.width, canvasContext.canvas.height);\n this.buffers.push(bufferCanvas2);\n\n if (this.data.tt >= 3 && !document._isProxy) {\n assetLoader.loadLumaCanvas();\n }\n }\n\n this.canvasContext = this.globalData.canvasContext;\n this.transformCanvas = this.globalData.transformCanvas;\n this.renderableEffectsManager = new CVEffects(this);\n this.searchEffectTransforms();\n },\n createContent: function createContent() {},\n setBlendMode: function setBlendMode() {\n var globalData = this.globalData;\n\n if (globalData.blendMode !== this.data.bm) {\n globalData.blendMode = this.data.bm;\n var blendModeValue = getBlendMode(this.data.bm);\n globalData.canvasContext.globalCompositeOperation = blendModeValue;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new CVMaskElement(this.data, this);\n this.transformEffects = this.renderableEffectsManager.getEffects(effectTypes.TRANSFORM_EFFECT);\n },\n hideElement: function hideElement() {\n if (!this.hidden && (!this.isInRange || this.isTransparent)) {\n this.hidden = true;\n }\n },\n showElement: function showElement() {\n if (this.isInRange && !this.isTransparent) {\n this.hidden = false;\n this._isFirstFrame = true;\n this.maskManager._isFirstFrame = true;\n }\n },\n clearCanvas: function clearCanvas(canvasContext) {\n canvasContext.clearRect(this.transformCanvas.tx, this.transformCanvas.ty, this.transformCanvas.w * this.transformCanvas.sx, this.transformCanvas.h * this.transformCanvas.sy);\n },\n prepareLayer: function prepareLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[0];\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx); // on the first buffer we store the current state of the global drawing\n\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // The next four lines are to clear the canvas\n // TODO: Check if there is a way to clear the canvas without resetting the transform\n\n this.currentTransform = this.canvasContext.getTransform();\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform);\n }\n },\n exitLayer: function exitLayer() {\n if (this.data.tt >= 1) {\n var buffer = this.buffers[1]; // On the second buffer we store the current state of the global drawing\n // that only contains the content of this layer\n // (if it is a composition, it also includes the nested layers)\n\n var bufferCtx = buffer.getContext('2d');\n this.clearCanvas(bufferCtx);\n bufferCtx.drawImage(this.canvasContext.canvas, 0, 0); // We clear the canvas again\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0);\n this.clearCanvas(this.canvasContext);\n this.canvasContext.setTransform(this.currentTransform); // We draw the mask\n\n var mask = this.comp.getElementById('tp' in this.data ? this.data.tp : this.data.ind - 1);\n mask.renderFrame(true); // We draw the second buffer (that contains the content of this layer)\n\n this.canvasContext.setTransform(1, 0, 0, 1, 0, 0); // If the mask is a Luma matte, we need to do two extra painting operations\n // the _isProxy check is to avoid drawing a fake canvas in workers that will throw an error\n\n if (this.data.tt >= 3 && !document._isProxy) {\n // We copy the painted mask to a buffer that has a color matrix filter applied to it\n // that applies the rgb values to the alpha channel\n var lumaBuffer = assetLoader.getLumaCanvas(this.canvasContext.canvas);\n var lumaBufferCtx = lumaBuffer.getContext('2d');\n lumaBufferCtx.drawImage(this.canvasContext.canvas, 0, 0);\n this.clearCanvas(this.canvasContext); // we repaint the context with the mask applied to it\n\n this.canvasContext.drawImage(lumaBuffer, 0, 0);\n }\n\n this.canvasContext.globalCompositeOperation = operationsMap[this.data.tt];\n this.canvasContext.drawImage(buffer, 0, 0); // We finally draw the first buffer (that contains the content of the global drawing)\n // We use destination-over to draw the global drawing below the current layer\n\n this.canvasContext.globalCompositeOperation = 'destination-over';\n this.canvasContext.drawImage(this.buffers[0], 0, 0);\n this.canvasContext.setTransform(this.currentTransform); // We reset the globalCompositeOperation to source-over, the standard type of operation\n\n this.canvasContext.globalCompositeOperation = 'source-over';\n }\n },\n renderFrame: function renderFrame(forceRender) {\n if (this.hidden || this.data.hd) {\n return;\n }\n\n if (this.data.td === 1 && !forceRender) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderLocalTransform();\n this.setBlendMode();\n var forceRealStack = this.data.ty === 0;\n this.prepareLayer();\n this.globalData.renderer.save(forceRealStack);\n this.globalData.renderer.ctxTransform(this.finalTransform.localMat.props);\n this.globalData.renderer.ctxOpacity(this.finalTransform.localOpacity);\n this.renderInnerContent();\n this.globalData.renderer.restore(forceRealStack);\n this.exitLayer();\n\n if (this.maskManager.hasMasks) {\n this.globalData.renderer.restore(true);\n }\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.canvasContext = null;\n this.data = null;\n this.globalData = null;\n this.maskManager.destroy();\n },\n mHelper: new Matrix()\n };\n CVBaseElement.prototype.hide = CVBaseElement.prototype.hideElement;\n CVBaseElement.prototype.show = CVBaseElement.prototype.showElement;\n\n function CVShapeData(element, data, styles, transformsManager) {\n this.styledShapes = [];\n this.tr = [0, 0, 0, 0, 0, 0];\n var ty = 4;\n\n if (data.ty === 'rc') {\n ty = 5;\n } else if (data.ty === 'el') {\n ty = 6;\n } else if (data.ty === 'sr') {\n ty = 7;\n }\n\n this.sh = ShapePropertyFactory.getShapeProp(element, data, ty, element);\n var i;\n var len = styles.length;\n var styledShape;\n\n for (i = 0; i < len; i += 1) {\n if (!styles[i].closed) {\n styledShape = {\n transforms: transformsManager.addTransformSequence(styles[i].transforms),\n trNodes: []\n };\n this.styledShapes.push(styledShape);\n styles[i].elements.push(styledShape);\n }\n }\n }\n\n CVShapeData.prototype.setAsAnimated = SVGShapeData.prototype.setAsAnimated;\n\n function CVShapeElement(data, globalData, comp) {\n this.shapes = [];\n this.shapesData = data.shapes;\n this.stylesList = [];\n this.itemsData = [];\n this.prevViewData = [];\n this.shapeModifiers = [];\n this.processedElements = [];\n this.transformsManager = new ShapeTransformManager();\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, IShapeElement, HierarchyElement, FrameElement, RenderableElement], CVShapeElement);\n CVShapeElement.prototype.initElement = RenderableDOMElement.prototype.initElement;\n CVShapeElement.prototype.transformHelper = {\n opacity: 1,\n _opMdf: false\n };\n CVShapeElement.prototype.dashResetter = [];\n\n CVShapeElement.prototype.createContent = function () {\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n };\n\n CVShapeElement.prototype.createStyleElement = function (data, transforms) {\n var styleElem = {\n data: data,\n type: data.ty,\n preTransforms: this.transformsManager.addTransformSequence(transforms),\n transforms: [],\n elements: [],\n closed: data.hd === true\n };\n var elementData = {};\n\n if (data.ty === 'fl' || data.ty === 'st') {\n elementData.c = PropertyFactory.getProp(this, data.c, 1, 255, this);\n\n if (!elementData.c.k) {\n styleElem.co = 'rgb(' + bmFloor(elementData.c.v[0]) + ',' + bmFloor(elementData.c.v[1]) + ',' + bmFloor(elementData.c.v[2]) + ')';\n }\n } else if (data.ty === 'gf' || data.ty === 'gs') {\n elementData.s = PropertyFactory.getProp(this, data.s, 1, null, this);\n elementData.e = PropertyFactory.getProp(this, data.e, 1, null, this);\n elementData.h = PropertyFactory.getProp(this, data.h || {\n k: 0\n }, 0, 0.01, this);\n elementData.a = PropertyFactory.getProp(this, data.a || {\n k: 0\n }, 0, degToRads, this);\n elementData.g = new GradientProperty(this, data.g, this);\n }\n\n elementData.o = PropertyFactory.getProp(this, data.o, 0, 0.01, this);\n\n if (data.ty === 'st' || data.ty === 'gs') {\n styleElem.lc = lineCapEnum[data.lc || 2];\n styleElem.lj = lineJoinEnum[data.lj || 2];\n\n if (data.lj == 1) {\n // eslint-disable-line eqeqeq\n styleElem.ml = data.ml;\n }\n\n elementData.w = PropertyFactory.getProp(this, data.w, 0, null, this);\n\n if (!elementData.w.k) {\n styleElem.wi = elementData.w.v;\n }\n\n if (data.d) {\n var d = new DashProperty(this, data.d, 'canvas', this);\n elementData.d = d;\n\n if (!elementData.d.k) {\n styleElem.da = elementData.d.dashArray;\n styleElem[\"do\"] = elementData.d.dashoffset[0];\n }\n }\n } else {\n styleElem.r = data.r === 2 ? 'evenodd' : 'nonzero';\n }\n\n this.stylesList.push(styleElem);\n elementData.style = styleElem;\n return elementData;\n };\n\n CVShapeElement.prototype.createGroupElement = function () {\n var elementData = {\n it: [],\n prevViewData: []\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createTransformElement = function (data) {\n var elementData = {\n transform: {\n opacity: 1,\n _opMdf: false,\n key: this.transformsManager.getNewKey(),\n op: PropertyFactory.getProp(this, data.o, 0, 0.01, this),\n mProps: TransformPropertyFactory.getTransformProperty(this, data, this)\n }\n };\n return elementData;\n };\n\n CVShapeElement.prototype.createShapeElement = function (data) {\n var elementData = new CVShapeData(this, data, this.stylesList, this.transformsManager);\n this.shapes.push(elementData);\n this.addShapeToModifiers(elementData);\n return elementData;\n };\n\n CVShapeElement.prototype.reloadShapes = function () {\n this._isFirstFrame = true;\n var i;\n var len = this.itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n this.prevViewData[i] = this.itemsData[i];\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, true, []);\n len = this.dynamicProperties.length;\n\n for (i = 0; i < len; i += 1) {\n this.dynamicProperties[i].getValue();\n }\n\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n };\n\n CVShapeElement.prototype.addTransformToStyleList = function (transform) {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.push(transform);\n }\n }\n };\n\n CVShapeElement.prototype.removeTransformFromStyleList = function () {\n var i;\n var len = this.stylesList.length;\n\n for (i = 0; i < len; i += 1) {\n if (!this.stylesList[i].closed) {\n this.stylesList[i].transforms.pop();\n }\n }\n };\n\n CVShapeElement.prototype.closeStyles = function (styles) {\n var i;\n var len = styles.length;\n\n for (i = 0; i < len; i += 1) {\n styles[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.searchShapes = function (arr, itemsData, prevViewData, shouldRender, transforms) {\n var i;\n var len = arr.length - 1;\n var j;\n var jLen;\n var ownStyles = [];\n var ownModifiers = [];\n var processedPos;\n var modifier;\n var currentTransform;\n var ownTransforms = [].concat(transforms);\n\n for (i = len; i >= 0; i -= 1) {\n processedPos = this.searchProcessedElement(arr[i]);\n\n if (!processedPos) {\n arr[i]._shouldRender = shouldRender;\n } else {\n itemsData[i] = prevViewData[processedPos - 1];\n }\n\n if (arr[i].ty === 'fl' || arr[i].ty === 'st' || arr[i].ty === 'gf' || arr[i].ty === 'gs') {\n if (!processedPos) {\n itemsData[i] = this.createStyleElement(arr[i], ownTransforms);\n } else {\n itemsData[i].style.closed = false;\n }\n\n ownStyles.push(itemsData[i].style);\n } else if (arr[i].ty === 'gr') {\n if (!processedPos) {\n itemsData[i] = this.createGroupElement(arr[i]);\n } else {\n jLen = itemsData[i].it.length;\n\n for (j = 0; j < jLen; j += 1) {\n itemsData[i].prevViewData[j] = itemsData[i].it[j];\n }\n }\n\n this.searchShapes(arr[i].it, itemsData[i].it, itemsData[i].prevViewData, shouldRender, ownTransforms);\n } else if (arr[i].ty === 'tr') {\n if (!processedPos) {\n currentTransform = this.createTransformElement(arr[i]);\n itemsData[i] = currentTransform;\n }\n\n ownTransforms.push(itemsData[i]);\n this.addTransformToStyleList(itemsData[i]);\n } else if (arr[i].ty === 'sh' || arr[i].ty === 'rc' || arr[i].ty === 'el' || arr[i].ty === 'sr') {\n if (!processedPos) {\n itemsData[i] = this.createShapeElement(arr[i]);\n }\n } else if (arr[i].ty === 'tm' || arr[i].ty === 'rd' || arr[i].ty === 'pb' || arr[i].ty === 'zz' || arr[i].ty === 'op') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n modifier.init(this, arr[i]);\n itemsData[i] = modifier;\n this.shapeModifiers.push(modifier);\n } else {\n modifier = itemsData[i];\n modifier.closed = false;\n }\n\n ownModifiers.push(modifier);\n } else if (arr[i].ty === 'rp') {\n if (!processedPos) {\n modifier = ShapeModifiers.getModifier(arr[i].ty);\n itemsData[i] = modifier;\n modifier.init(this, arr, i, itemsData);\n this.shapeModifiers.push(modifier);\n shouldRender = false;\n } else {\n modifier = itemsData[i];\n modifier.closed = true;\n }\n\n ownModifiers.push(modifier);\n }\n\n this.addProcessedElement(arr[i], i + 1);\n }\n\n this.removeTransformFromStyleList();\n this.closeStyles(ownStyles);\n len = ownModifiers.length;\n\n for (i = 0; i < len; i += 1) {\n ownModifiers[i].closed = true;\n }\n };\n\n CVShapeElement.prototype.renderInnerContent = function () {\n this.transformHelper.opacity = 1;\n this.transformHelper._opMdf = false;\n this.renderModifiers();\n this.transformsManager.processSequences(this._isFirstFrame);\n this.renderShape(this.transformHelper, this.shapesData, this.itemsData, true);\n };\n\n CVShapeElement.prototype.renderShapeTransform = function (parentTransform, groupTransform) {\n if (parentTransform._opMdf || groupTransform.op._mdf || this._isFirstFrame) {\n groupTransform.opacity = parentTransform.opacity;\n groupTransform.opacity *= groupTransform.op.v;\n groupTransform._opMdf = true;\n }\n };\n\n CVShapeElement.prototype.drawLayer = function () {\n var i;\n var len = this.stylesList.length;\n var j;\n var jLen;\n var k;\n var kLen;\n var elems;\n var nodes;\n var renderer = this.globalData.renderer;\n var ctx = this.globalData.canvasContext;\n var type;\n var currentStyle;\n\n for (i = 0; i < len; i += 1) {\n currentStyle = this.stylesList[i];\n type = currentStyle.type; // Skipping style when\n // Stroke width equals 0\n // style should not be rendered (extra unused repeaters)\n // current opacity equals 0\n // global opacity equals 0\n\n if (!((type === 'st' || type === 'gs') && currentStyle.wi === 0 || !currentStyle.data._shouldRender || currentStyle.coOp === 0 || this.globalData.currentGlobalAlpha === 0)) {\n renderer.save();\n elems = currentStyle.elements;\n\n if (type === 'st' || type === 'gs') {\n renderer.ctxStrokeStyle(type === 'st' ? currentStyle.co : currentStyle.grd); // ctx.strokeStyle = type === 'st' ? currentStyle.co : currentStyle.grd;\n\n renderer.ctxLineWidth(currentStyle.wi); // ctx.lineWidth = currentStyle.wi;\n\n renderer.ctxLineCap(currentStyle.lc); // ctx.lineCap = currentStyle.lc;\n\n renderer.ctxLineJoin(currentStyle.lj); // ctx.lineJoin = currentStyle.lj;\n\n renderer.ctxMiterLimit(currentStyle.ml || 0); // ctx.miterLimit = currentStyle.ml || 0;\n } else {\n renderer.ctxFillStyle(type === 'fl' ? currentStyle.co : currentStyle.grd); // ctx.fillStyle = type === 'fl' ? currentStyle.co : currentStyle.grd;\n }\n\n renderer.ctxOpacity(currentStyle.coOp);\n\n if (type !== 'st' && type !== 'gs') {\n ctx.beginPath();\n }\n\n renderer.ctxTransform(currentStyle.preTransforms.finalTransform.props);\n jLen = elems.length;\n\n for (j = 0; j < jLen; j += 1) {\n if (type === 'st' || type === 'gs') {\n ctx.beginPath();\n\n if (currentStyle.da) {\n ctx.setLineDash(currentStyle.da);\n ctx.lineDashOffset = currentStyle[\"do\"];\n }\n }\n\n nodes = elems[j].trNodes;\n kLen = nodes.length;\n\n for (k = 0; k < kLen; k += 1) {\n if (nodes[k].t === 'm') {\n ctx.moveTo(nodes[k].p[0], nodes[k].p[1]);\n } else if (nodes[k].t === 'c') {\n ctx.bezierCurveTo(nodes[k].pts[0], nodes[k].pts[1], nodes[k].pts[2], nodes[k].pts[3], nodes[k].pts[4], nodes[k].pts[5]);\n } else {\n ctx.closePath();\n }\n }\n\n if (type === 'st' || type === 'gs') {\n // ctx.stroke();\n renderer.ctxStroke();\n\n if (currentStyle.da) {\n ctx.setLineDash(this.dashResetter);\n }\n }\n }\n\n if (type !== 'st' && type !== 'gs') {\n // ctx.fill(currentStyle.r);\n this.globalData.renderer.ctxFill(currentStyle.r);\n }\n\n renderer.restore();\n }\n }\n };\n\n CVShapeElement.prototype.renderShape = function (parentTransform, items, data, isMain) {\n var i;\n var len = items.length - 1;\n var groupTransform;\n groupTransform = parentTransform;\n\n for (i = len; i >= 0; i -= 1) {\n if (items[i].ty === 'tr') {\n groupTransform = data[i].transform;\n this.renderShapeTransform(parentTransform, groupTransform);\n } else if (items[i].ty === 'sh' || items[i].ty === 'el' || items[i].ty === 'rc' || items[i].ty === 'sr') {\n this.renderPath(items[i], data[i]);\n } else if (items[i].ty === 'fl') {\n this.renderFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'st') {\n this.renderStroke(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gf' || items[i].ty === 'gs') {\n this.renderGradientFill(items[i], data[i], groupTransform);\n } else if (items[i].ty === 'gr') {\n this.renderShape(groupTransform, items[i].it, data[i].it);\n } else if (items[i].ty === 'tm') {//\n }\n }\n\n if (isMain) {\n this.drawLayer();\n }\n };\n\n CVShapeElement.prototype.renderStyledShape = function (styledShape, shape) {\n if (this._isFirstFrame || shape._mdf || styledShape.transforms._mdf) {\n var shapeNodes = styledShape.trNodes;\n var paths = shape.paths;\n var i;\n var len;\n var j;\n var jLen = paths._length;\n shapeNodes.length = 0;\n var groupTransformMat = styledShape.transforms.finalTransform;\n\n for (j = 0; j < jLen; j += 1) {\n var pathNodes = paths.shapes[j];\n\n if (pathNodes && pathNodes.v) {\n len = pathNodes._length;\n\n for (i = 1; i < len; i += 1) {\n if (i === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[i], pathNodes.v[i])\n });\n }\n\n if (len === 1) {\n shapeNodes.push({\n t: 'm',\n p: groupTransformMat.applyToPointArray(pathNodes.v[0][0], pathNodes.v[0][1], 0)\n });\n }\n\n if (pathNodes.c && len) {\n shapeNodes.push({\n t: 'c',\n pts: groupTransformMat.applyToTriplePoints(pathNodes.o[i - 1], pathNodes.i[0], pathNodes.v[0])\n });\n shapeNodes.push({\n t: 'z'\n });\n }\n }\n }\n\n styledShape.trNodes = shapeNodes;\n }\n };\n\n CVShapeElement.prototype.renderPath = function (pathData, itemData) {\n if (pathData.hd !== true && pathData._shouldRender) {\n var i;\n var len = itemData.styledShapes.length;\n\n for (i = 0; i < len; i += 1) {\n this.renderStyledShape(itemData.styledShapes[i], itemData.sh);\n }\n }\n };\n\n CVShapeElement.prototype.renderFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n };\n\n CVShapeElement.prototype.renderGradientFill = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var grd;\n\n if (!styleElem.grd || itemData.g._mdf || itemData.s._mdf || itemData.e._mdf || styleData.t !== 1 && (itemData.h._mdf || itemData.a._mdf)) {\n var ctx = this.globalData.canvasContext;\n var pt1 = itemData.s.v;\n var pt2 = itemData.e.v;\n\n if (styleData.t === 1) {\n grd = ctx.createLinearGradient(pt1[0], pt1[1], pt2[0], pt2[1]);\n } else {\n var rad = Math.sqrt(Math.pow(pt1[0] - pt2[0], 2) + Math.pow(pt1[1] - pt2[1], 2));\n var ang = Math.atan2(pt2[1] - pt1[1], pt2[0] - pt1[0]);\n var percent = itemData.h.v;\n\n if (percent >= 1) {\n percent = 0.99;\n } else if (percent <= -1) {\n percent = -0.99;\n }\n\n var dist = rad * percent;\n var x = Math.cos(ang + itemData.a.v) * dist + pt1[0];\n var y = Math.sin(ang + itemData.a.v) * dist + pt1[1];\n grd = ctx.createRadialGradient(x, y, 0, pt1[0], pt1[1], rad);\n }\n\n var i;\n var len = styleData.g.p;\n var cValues = itemData.g.c;\n var opacity = 1;\n\n for (i = 0; i < len; i += 1) {\n if (itemData.g._hasOpacity && itemData.g._collapsable) {\n opacity = itemData.g.o[i * 2 + 1];\n }\n\n grd.addColorStop(cValues[i * 4] / 100, 'rgba(' + cValues[i * 4 + 1] + ',' + cValues[i * 4 + 2] + ',' + cValues[i * 4 + 3] + ',' + opacity + ')');\n }\n\n styleElem.grd = grd;\n }\n\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n };\n\n CVShapeElement.prototype.renderStroke = function (styleData, itemData, groupTransform) {\n var styleElem = itemData.style;\n var d = itemData.d;\n\n if (d && (d._mdf || this._isFirstFrame)) {\n styleElem.da = d.dashArray;\n styleElem[\"do\"] = d.dashoffset[0];\n }\n\n if (itemData.c._mdf || this._isFirstFrame) {\n styleElem.co = 'rgb(' + bmFloor(itemData.c.v[0]) + ',' + bmFloor(itemData.c.v[1]) + ',' + bmFloor(itemData.c.v[2]) + ')';\n }\n\n if (itemData.o._mdf || groupTransform._opMdf || this._isFirstFrame) {\n styleElem.coOp = itemData.o.v * groupTransform.opacity;\n }\n\n if (itemData.w._mdf || this._isFirstFrame) {\n styleElem.wi = itemData.w.v;\n }\n };\n\n CVShapeElement.prototype.destroy = function () {\n this.shapesData = null;\n this.globalData = null;\n this.canvasContext = null;\n this.stylesList.length = 0;\n this.itemsData.length = 0;\n };\n\n function CVTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.yOffset = 0;\n this.fillColorAnim = false;\n this.strokeColorAnim = false;\n this.strokeWidthAnim = false;\n this.stroke = false;\n this.fill = false;\n this.justifyOffset = 0;\n this.currentRender = null;\n this.renderType = 'canvas';\n this.values = {\n fill: 'rgba(0,0,0,0)',\n stroke: 'rgba(0,0,0,0)',\n sWidth: 0,\n fValue: ''\n };\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement, ITextElement], CVTextElement);\n CVTextElement.prototype.tHelper = createTag('canvas').getContext('2d');\n\n CVTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var hasFill = false;\n\n if (documentData.fc) {\n hasFill = true;\n this.values.fill = this.buildColor(documentData.fc);\n } else {\n this.values.fill = 'rgba(0,0,0,0)';\n }\n\n this.fill = hasFill;\n var hasStroke = false;\n\n if (documentData.sc) {\n hasStroke = true;\n this.values.stroke = this.buildColor(documentData.sc);\n this.values.sWidth = documentData.sw;\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n var i;\n var len;\n var letters = documentData.l;\n var matrixHelper = this.mHelper;\n this.stroke = hasStroke;\n this.values.fValue = documentData.finalSize + 'px ' + this.globalData.fontManager.getFontByName(documentData.f).fFamily;\n len = documentData.finalText.length; // this.tHelper.font = this.values.fValue;\n\n var charData;\n var shapeData;\n var k;\n var kLen;\n var shapes;\n var j;\n var jLen;\n var pathNodes;\n var commands;\n var pathArr;\n var singleShape = this.data.singleShape;\n var trackingOffset = documentData.tr * 0.001 * documentData.finalSize;\n var xPos = 0;\n var yPos = 0;\n var firstLine = true;\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n shapeData = charData && charData.data || {};\n matrixHelper.reset();\n\n if (singleShape && letters[i].n) {\n xPos = -trackingOffset;\n yPos += documentData.yOffset;\n yPos += firstLine ? 1 : 0;\n firstLine = false;\n }\n\n shapes = shapeData.shapes ? shapeData.shapes[0].it : [];\n jLen = shapes.length;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n\n if (singleShape) {\n this.applyTextPropertiesToMatrix(documentData, matrixHelper, letters[i].line, xPos, yPos);\n }\n\n commands = createSizedArray(jLen - 1);\n var commandsCounter = 0;\n\n for (j = 0; j < jLen; j += 1) {\n if (shapes[j].ty === 'sh') {\n kLen = shapes[j].ks.k.i.length;\n pathNodes = shapes[j].ks.k;\n pathArr = [];\n\n for (k = 1; k < kLen; k += 1) {\n if (k === 1) {\n pathArr.push(matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToY(pathNodes.i[k][0], pathNodes.i[k][1], 0), matrixHelper.applyToX(pathNodes.v[k][0], pathNodes.v[k][1], 0), matrixHelper.applyToY(pathNodes.v[k][0], pathNodes.v[k][1], 0));\n }\n\n pathArr.push(matrixHelper.applyToX(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToY(pathNodes.o[k - 1][0], pathNodes.o[k - 1][1], 0), matrixHelper.applyToX(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToY(pathNodes.i[0][0], pathNodes.i[0][1], 0), matrixHelper.applyToX(pathNodes.v[0][0], pathNodes.v[0][1], 0), matrixHelper.applyToY(pathNodes.v[0][0], pathNodes.v[0][1], 0));\n commands[commandsCounter] = pathArr;\n commandsCounter += 1;\n }\n }\n\n if (singleShape) {\n xPos += letters[i].l;\n xPos += trackingOffset;\n }\n\n if (this.textSpans[cnt]) {\n this.textSpans[cnt].elem = commands;\n } else {\n this.textSpans[cnt] = {\n elem: commands\n };\n }\n\n cnt += 1;\n }\n };\n\n CVTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var ctx = this.canvasContext;\n ctx.font = this.values.fValue;\n this.globalData.renderer.ctxLineCap('butt'); // ctx.lineCap = 'butt';\n\n this.globalData.renderer.ctxLineJoin('miter'); // ctx.lineJoin = 'miter';\n\n this.globalData.renderer.ctxMiterLimit(4); // ctx.miterLimit = 4;\n\n if (!this.data.singleShape) {\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n }\n\n var i;\n var len;\n var j;\n var jLen;\n var k;\n var kLen;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var lastFill = null;\n var lastStroke = null;\n var lastStrokeW = null;\n var commands;\n var pathArr;\n var renderer = this.globalData.renderer;\n\n for (i = 0; i < len; i += 1) {\n if (!letters[i].n) {\n renderedLetter = renderedLetters[i];\n\n if (renderedLetter) {\n renderer.save();\n renderer.ctxTransform(renderedLetter.p);\n renderer.ctxOpacity(renderedLetter.o);\n }\n\n if (this.fill) {\n if (renderedLetter && renderedLetter.fc) {\n if (lastFill !== renderedLetter.fc) {\n renderer.ctxFillStyle(renderedLetter.fc);\n lastFill = renderedLetter.fc; // ctx.fillStyle = renderedLetter.fc;\n }\n } else if (lastFill !== this.values.fill) {\n lastFill = this.values.fill;\n renderer.ctxFillStyle(this.values.fill); // ctx.fillStyle = this.values.fill;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxFill(); // this.globalData.canvasContext.fill();\n /// ctx.fillText(this.textSpans[i].val,0,0);\n }\n\n if (this.stroke) {\n if (renderedLetter && renderedLetter.sw) {\n if (lastStrokeW !== renderedLetter.sw) {\n lastStrokeW = renderedLetter.sw;\n renderer.ctxLineWidth(renderedLetter.sw); // ctx.lineWidth = renderedLetter.sw;\n }\n } else if (lastStrokeW !== this.values.sWidth) {\n lastStrokeW = this.values.sWidth;\n renderer.ctxLineWidth(this.values.sWidth); // ctx.lineWidth = this.values.sWidth;\n }\n\n if (renderedLetter && renderedLetter.sc) {\n if (lastStroke !== renderedLetter.sc) {\n lastStroke = renderedLetter.sc;\n renderer.ctxStrokeStyle(renderedLetter.sc); // ctx.strokeStyle = renderedLetter.sc;\n }\n } else if (lastStroke !== this.values.stroke) {\n lastStroke = this.values.stroke;\n renderer.ctxStrokeStyle(this.values.stroke); // ctx.strokeStyle = this.values.stroke;\n }\n\n commands = this.textSpans[i].elem;\n jLen = commands.length;\n this.globalData.canvasContext.beginPath();\n\n for (j = 0; j < jLen; j += 1) {\n pathArr = commands[j];\n kLen = pathArr.length;\n this.globalData.canvasContext.moveTo(pathArr[0], pathArr[1]);\n\n for (k = 2; k < kLen; k += 6) {\n this.globalData.canvasContext.bezierCurveTo(pathArr[k], pathArr[k + 1], pathArr[k + 2], pathArr[k + 3], pathArr[k + 4], pathArr[k + 5]);\n }\n }\n\n this.globalData.canvasContext.closePath();\n renderer.ctxStroke(); // this.globalData.canvasContext.stroke();\n /// ctx.strokeText(letters[i].val,0,0);\n }\n\n if (renderedLetter) {\n this.globalData.renderer.restore();\n }\n }\n }\n };\n\n function CVImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.img = globalData.imageLoader.getAsset(this.assetData);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVImageElement);\n CVImageElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVImageElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVImageElement.prototype.createContent = function () {\n if (this.img.width && (this.assetData.w !== this.img.width || this.assetData.h !== this.img.height)) {\n var canvas = createTag('canvas');\n canvas.width = this.assetData.w;\n canvas.height = this.assetData.h;\n var ctx = canvas.getContext('2d');\n var imgW = this.img.width;\n var imgH = this.img.height;\n var imgRel = imgW / imgH;\n var canvasRel = this.assetData.w / this.assetData.h;\n var widthCrop;\n var heightCrop;\n var par = this.assetData.pr || this.globalData.renderConfig.imagePreserveAspectRatio;\n\n if (imgRel > canvasRel && par === 'xMidYMid slice' || imgRel < canvasRel && par !== 'xMidYMid slice') {\n heightCrop = imgH;\n widthCrop = heightCrop * canvasRel;\n } else {\n widthCrop = imgW;\n heightCrop = widthCrop / canvasRel;\n }\n\n ctx.drawImage(this.img, (imgW - widthCrop) / 2, (imgH - heightCrop) / 2, widthCrop, heightCrop, 0, 0, this.assetData.w, this.assetData.h);\n this.img = canvas;\n }\n };\n\n CVImageElement.prototype.renderInnerContent = function () {\n this.canvasContext.drawImage(this.img, 0, 0);\n };\n\n CVImageElement.prototype.destroy = function () {\n this.img = null;\n };\n\n function CVSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, CVBaseElement, HierarchyElement, FrameElement, RenderableElement], CVSolidElement);\n CVSolidElement.prototype.initElement = SVGShapeElement.prototype.initElement;\n CVSolidElement.prototype.prepareFrame = IImageElement.prototype.prepareFrame;\n\n CVSolidElement.prototype.renderInnerContent = function () {\n // var ctx = this.canvasContext;\n this.globalData.renderer.ctxFillStyle(this.data.sc); // ctx.fillStyle = this.data.sc;\n\n this.globalData.renderer.ctxFillRect(0, 0, this.data.sw, this.data.sh); // ctx.fillRect(0, 0, this.data.sw, this.data.sh);\n //\n };\n\n function CanvasRendererBase() {}\n\n extendPrototype([BaseRenderer], CanvasRendererBase);\n\n CanvasRendererBase.prototype.createShape = function (data) {\n return new CVShapeElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createText = function (data) {\n return new CVTextElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createImage = function (data) {\n return new CVImageElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createSolid = function (data) {\n return new CVSolidElement(data, this.globalData, this);\n };\n\n CanvasRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n CanvasRendererBase.prototype.ctxTransform = function (props) {\n if (props[0] === 1 && props[1] === 0 && props[4] === 0 && props[5] === 1 && props[12] === 0 && props[13] === 0) {\n return;\n }\n\n this.canvasContext.transform(props[0], props[1], props[4], props[5], props[12], props[13]);\n };\n\n CanvasRendererBase.prototype.ctxOpacity = function (op) {\n this.canvasContext.globalAlpha *= op < 0 ? 0 : op;\n };\n\n CanvasRendererBase.prototype.ctxFillStyle = function (value) {\n this.canvasContext.fillStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxStrokeStyle = function (value) {\n this.canvasContext.strokeStyle = value;\n };\n\n CanvasRendererBase.prototype.ctxLineWidth = function (value) {\n this.canvasContext.lineWidth = value;\n };\n\n CanvasRendererBase.prototype.ctxLineCap = function (value) {\n this.canvasContext.lineCap = value;\n };\n\n CanvasRendererBase.prototype.ctxLineJoin = function (value) {\n this.canvasContext.lineJoin = value;\n };\n\n CanvasRendererBase.prototype.ctxMiterLimit = function (value) {\n this.canvasContext.miterLimit = value;\n };\n\n CanvasRendererBase.prototype.ctxFill = function (rule) {\n this.canvasContext.fill(rule);\n };\n\n CanvasRendererBase.prototype.ctxFillRect = function (x, y, w, h) {\n this.canvasContext.fillRect(x, y, w, h);\n };\n\n CanvasRendererBase.prototype.ctxStroke = function () {\n this.canvasContext.stroke();\n };\n\n CanvasRendererBase.prototype.reset = function () {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n this.contextData.reset();\n };\n\n CanvasRendererBase.prototype.save = function () {\n this.canvasContext.save();\n };\n\n CanvasRendererBase.prototype.restore = function (actionFlag) {\n if (!this.renderConfig.clearCanvas) {\n this.canvasContext.restore();\n return;\n }\n\n if (actionFlag) {\n this.globalData.blendMode = 'source-over';\n }\n\n this.contextData.restore(actionFlag);\n };\n\n CanvasRendererBase.prototype.configAnimation = function (animData) {\n if (this.animationItem.wrapper) {\n this.animationItem.container = createTag('canvas');\n var containerStyle = this.animationItem.container.style;\n containerStyle.width = '100%';\n containerStyle.height = '100%';\n var origin = '0px 0px 0px';\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n containerStyle['-webkit-transform'] = origin;\n containerStyle.contentVisibility = this.renderConfig.contentVisibility;\n this.animationItem.wrapper.appendChild(this.animationItem.container);\n this.canvasContext = this.animationItem.container.getContext('2d');\n\n if (this.renderConfig.className) {\n this.animationItem.container.setAttribute('class', this.renderConfig.className);\n }\n\n if (this.renderConfig.id) {\n this.animationItem.container.setAttribute('id', this.renderConfig.id);\n }\n } else {\n this.canvasContext = this.renderConfig.context;\n }\n\n this.contextData.setContext(this.canvasContext);\n this.data = animData;\n this.layers = animData.layers;\n this.transformCanvas = {\n w: animData.w,\n h: animData.h,\n sx: 0,\n sy: 0,\n tx: 0,\n ty: 0\n };\n this.setupGlobalData(animData, document.body);\n this.globalData.canvasContext = this.canvasContext;\n this.globalData.renderer = this;\n this.globalData.isDashed = false;\n this.globalData.progressiveLoad = this.renderConfig.progressiveLoad;\n this.globalData.transformCanvas = this.transformCanvas;\n this.elements = createSizedArray(animData.layers.length);\n this.updateContainerSize();\n };\n\n CanvasRendererBase.prototype.updateContainerSize = function (width, height) {\n this.reset();\n var elementWidth;\n var elementHeight;\n\n if (width) {\n elementWidth = width;\n elementHeight = height;\n this.canvasContext.canvas.width = elementWidth;\n this.canvasContext.canvas.height = elementHeight;\n } else {\n if (this.animationItem.wrapper && this.animationItem.container) {\n elementWidth = this.animationItem.wrapper.offsetWidth;\n elementHeight = this.animationItem.wrapper.offsetHeight;\n } else {\n elementWidth = this.canvasContext.canvas.width;\n elementHeight = this.canvasContext.canvas.height;\n }\n\n this.canvasContext.canvas.width = elementWidth * this.renderConfig.dpr;\n this.canvasContext.canvas.height = elementHeight * this.renderConfig.dpr;\n }\n\n var elementRel;\n var animationRel;\n\n if (this.renderConfig.preserveAspectRatio.indexOf('meet') !== -1 || this.renderConfig.preserveAspectRatio.indexOf('slice') !== -1) {\n var par = this.renderConfig.preserveAspectRatio.split(' ');\n var fillType = par[1] || 'meet';\n var pos = par[0] || 'xMidYMid';\n var xPos = pos.substr(0, 4);\n var yPos = pos.substr(4);\n elementRel = elementWidth / elementHeight;\n animationRel = this.transformCanvas.w / this.transformCanvas.h;\n\n if (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n } else {\n this.transformCanvas.sx = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n }\n\n if (xPos === 'xMid' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) / 2 * this.renderConfig.dpr;\n } else if (xPos === 'xMax' && (animationRel < elementRel && fillType === 'meet' || animationRel > elementRel && fillType === 'slice')) {\n this.transformCanvas.tx = (elementWidth - this.transformCanvas.w * (elementHeight / this.transformCanvas.h)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.tx = 0;\n }\n\n if (yPos === 'YMid' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) / 2 * this.renderConfig.dpr;\n } else if (yPos === 'YMax' && (animationRel > elementRel && fillType === 'meet' || animationRel < elementRel && fillType === 'slice')) {\n this.transformCanvas.ty = (elementHeight - this.transformCanvas.h * (elementWidth / this.transformCanvas.w)) * this.renderConfig.dpr;\n } else {\n this.transformCanvas.ty = 0;\n }\n } else if (this.renderConfig.preserveAspectRatio === 'none') {\n this.transformCanvas.sx = elementWidth / (this.transformCanvas.w / this.renderConfig.dpr);\n this.transformCanvas.sy = elementHeight / (this.transformCanvas.h / this.renderConfig.dpr);\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n } else {\n this.transformCanvas.sx = this.renderConfig.dpr;\n this.transformCanvas.sy = this.renderConfig.dpr;\n this.transformCanvas.tx = 0;\n this.transformCanvas.ty = 0;\n }\n\n this.transformCanvas.props = [this.transformCanvas.sx, 0, 0, 0, 0, this.transformCanvas.sy, 0, 0, 0, 0, 1, 0, this.transformCanvas.tx, this.transformCanvas.ty, 0, 1];\n /* var i, len = this.elements.length;\r\n for(i=0;i= 0; i -= 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.globalData.canvasContext = null;\n this.animationItem.container = null;\n this.destroyed = true;\n };\n\n CanvasRendererBase.prototype.renderFrame = function (num, forceRender) {\n if (this.renderedFrame === num && this.renderConfig.clearCanvas === true && !forceRender || this.destroyed || num === -1) {\n return;\n }\n\n this.renderedFrame = num;\n this.globalData.frameNum = num - this.animationItem._isFirstFrame;\n this.globalData.frameId += 1;\n this.globalData._mdf = !this.renderConfig.clearCanvas || forceRender;\n this.globalData.projectInterface.currentFrame = num; // console.log('--------');\n // console.log('NEW: ',num);\n\n var i;\n var len = this.layers.length;\n\n if (!this.completeLayers) {\n this.checkLayers(num);\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].prepareFrame(num - this.layers[i].st);\n }\n }\n\n if (this.globalData._mdf) {\n if (this.renderConfig.clearCanvas === true) {\n this.canvasContext.clearRect(0, 0, this.transformCanvas.w, this.transformCanvas.h);\n } else {\n this.save();\n }\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n\n if (this.renderConfig.clearCanvas !== true) {\n this.restore();\n }\n }\n };\n\n CanvasRendererBase.prototype.buildItem = function (pos) {\n var elements = this.elements;\n\n if (elements[pos] || this.layers[pos].ty === 99) {\n return;\n }\n\n var element = this.createItem(this.layers[pos], this, this.globalData);\n elements[pos] = element;\n element.initExpressions();\n /* if(this.layers[pos].ty === 0){\r\n element.resize(this.globalData.transformCanvas);\r\n } */\n };\n\n CanvasRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n CanvasRendererBase.prototype.hide = function () {\n this.animationItem.container.style.display = 'none';\n };\n\n CanvasRendererBase.prototype.show = function () {\n this.animationItem.container.style.display = 'block';\n };\n\n function CanvasContext() {\n this.opacity = -1;\n this.transform = createTypedArray('float32', 16);\n this.fillStyle = '';\n this.strokeStyle = '';\n this.lineWidth = '';\n this.lineCap = '';\n this.lineJoin = '';\n this.miterLimit = '';\n this.id = Math.random();\n }\n\n function CVContextData() {\n this.stack = [];\n this.cArrPos = 0;\n this.cTr = new Matrix();\n var i;\n var len = 15;\n\n for (i = 0; i < len; i += 1) {\n var canvasContext = new CanvasContext();\n this.stack[i] = canvasContext;\n }\n\n this._length = len;\n this.nativeContext = null;\n this.transformMat = new Matrix();\n this.currentOpacity = 1; //\n\n this.currentFillStyle = '';\n this.appliedFillStyle = ''; //\n\n this.currentStrokeStyle = '';\n this.appliedStrokeStyle = ''; //\n\n this.currentLineWidth = '';\n this.appliedLineWidth = ''; //\n\n this.currentLineCap = '';\n this.appliedLineCap = ''; //\n\n this.currentLineJoin = '';\n this.appliedLineJoin = ''; //\n\n this.appliedMiterLimit = '';\n this.currentMiterLimit = '';\n }\n\n CVContextData.prototype.duplicate = function () {\n var newLength = this._length * 2;\n var i = 0;\n\n for (i = this._length; i < newLength; i += 1) {\n this.stack[i] = new CanvasContext();\n }\n\n this._length = newLength;\n };\n\n CVContextData.prototype.reset = function () {\n this.cArrPos = 0;\n this.cTr.reset();\n this.stack[this.cArrPos].opacity = 1;\n };\n\n CVContextData.prototype.restore = function (forceRestore) {\n this.cArrPos -= 1;\n var currentContext = this.stack[this.cArrPos];\n var transform = currentContext.transform;\n var i;\n var arr = this.cTr.props;\n\n for (i = 0; i < 16; i += 1) {\n arr[i] = transform[i];\n }\n\n if (forceRestore) {\n this.nativeContext.restore();\n var prevStack = this.stack[this.cArrPos + 1];\n this.appliedFillStyle = prevStack.fillStyle;\n this.appliedStrokeStyle = prevStack.strokeStyle;\n this.appliedLineWidth = prevStack.lineWidth;\n this.appliedLineCap = prevStack.lineCap;\n this.appliedLineJoin = prevStack.lineJoin;\n this.appliedMiterLimit = prevStack.miterLimit;\n }\n\n this.nativeContext.setTransform(transform[0], transform[1], transform[4], transform[5], transform[12], transform[13]);\n\n if (forceRestore || currentContext.opacity !== -1 && this.currentOpacity !== currentContext.opacity) {\n this.nativeContext.globalAlpha = currentContext.opacity;\n this.currentOpacity = currentContext.opacity;\n }\n\n this.currentFillStyle = currentContext.fillStyle;\n this.currentStrokeStyle = currentContext.strokeStyle;\n this.currentLineWidth = currentContext.lineWidth;\n this.currentLineCap = currentContext.lineCap;\n this.currentLineJoin = currentContext.lineJoin;\n this.currentMiterLimit = currentContext.miterLimit;\n };\n\n CVContextData.prototype.save = function (saveOnNativeFlag) {\n if (saveOnNativeFlag) {\n this.nativeContext.save();\n }\n\n var props = this.cTr.props;\n\n if (this._length <= this.cArrPos) {\n this.duplicate();\n }\n\n var currentStack = this.stack[this.cArrPos];\n var i;\n\n for (i = 0; i < 16; i += 1) {\n currentStack.transform[i] = props[i];\n }\n\n this.cArrPos += 1;\n var newStack = this.stack[this.cArrPos];\n newStack.opacity = currentStack.opacity;\n newStack.fillStyle = currentStack.fillStyle;\n newStack.strokeStyle = currentStack.strokeStyle;\n newStack.lineWidth = currentStack.lineWidth;\n newStack.lineCap = currentStack.lineCap;\n newStack.lineJoin = currentStack.lineJoin;\n newStack.miterLimit = currentStack.miterLimit;\n };\n\n CVContextData.prototype.setOpacity = function (value) {\n this.stack[this.cArrPos].opacity = value;\n };\n\n CVContextData.prototype.setContext = function (value) {\n this.nativeContext = value;\n };\n\n CVContextData.prototype.fillStyle = function (value) {\n if (this.stack[this.cArrPos].fillStyle !== value) {\n this.currentFillStyle = value;\n this.stack[this.cArrPos].fillStyle = value;\n }\n };\n\n CVContextData.prototype.strokeStyle = function (value) {\n if (this.stack[this.cArrPos].strokeStyle !== value) {\n this.currentStrokeStyle = value;\n this.stack[this.cArrPos].strokeStyle = value;\n }\n };\n\n CVContextData.prototype.lineWidth = function (value) {\n if (this.stack[this.cArrPos].lineWidth !== value) {\n this.currentLineWidth = value;\n this.stack[this.cArrPos].lineWidth = value;\n }\n };\n\n CVContextData.prototype.lineCap = function (value) {\n if (this.stack[this.cArrPos].lineCap !== value) {\n this.currentLineCap = value;\n this.stack[this.cArrPos].lineCap = value;\n }\n };\n\n CVContextData.prototype.lineJoin = function (value) {\n if (this.stack[this.cArrPos].lineJoin !== value) {\n this.currentLineJoin = value;\n this.stack[this.cArrPos].lineJoin = value;\n }\n };\n\n CVContextData.prototype.miterLimit = function (value) {\n if (this.stack[this.cArrPos].miterLimit !== value) {\n this.currentMiterLimit = value;\n this.stack[this.cArrPos].miterLimit = value;\n }\n };\n\n CVContextData.prototype.transform = function (props) {\n this.transformMat.cloneFromProps(props); // Taking the last transform value from the stored stack of transforms\n\n var currentTransform = this.cTr; // Applying the last transform value after the new transform to respect the order of transformations\n\n this.transformMat.multiply(currentTransform); // Storing the new transformed value in the stored transform\n\n currentTransform.cloneFromProps(this.transformMat.props);\n var trProps = currentTransform.props; // Applying the new transform to the canvas\n\n this.nativeContext.setTransform(trProps[0], trProps[1], trProps[4], trProps[5], trProps[12], trProps[13]);\n };\n\n CVContextData.prototype.opacity = function (op) {\n var currentOpacity = this.stack[this.cArrPos].opacity;\n currentOpacity *= op < 0 ? 0 : op;\n\n if (this.stack[this.cArrPos].opacity !== currentOpacity) {\n if (this.currentOpacity !== op) {\n this.nativeContext.globalAlpha = op;\n this.currentOpacity = op;\n }\n\n this.stack[this.cArrPos].opacity = currentOpacity;\n }\n };\n\n CVContextData.prototype.fill = function (rule) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fill(rule);\n };\n\n CVContextData.prototype.fillRect = function (x, y, w, h) {\n if (this.appliedFillStyle !== this.currentFillStyle) {\n this.appliedFillStyle = this.currentFillStyle;\n this.nativeContext.fillStyle = this.appliedFillStyle;\n }\n\n this.nativeContext.fillRect(x, y, w, h);\n };\n\n CVContextData.prototype.stroke = function () {\n if (this.appliedStrokeStyle !== this.currentStrokeStyle) {\n this.appliedStrokeStyle = this.currentStrokeStyle;\n this.nativeContext.strokeStyle = this.appliedStrokeStyle;\n }\n\n if (this.appliedLineWidth !== this.currentLineWidth) {\n this.appliedLineWidth = this.currentLineWidth;\n this.nativeContext.lineWidth = this.appliedLineWidth;\n }\n\n if (this.appliedLineCap !== this.currentLineCap) {\n this.appliedLineCap = this.currentLineCap;\n this.nativeContext.lineCap = this.appliedLineCap;\n }\n\n if (this.appliedLineJoin !== this.currentLineJoin) {\n this.appliedLineJoin = this.currentLineJoin;\n this.nativeContext.lineJoin = this.appliedLineJoin;\n }\n\n if (this.appliedMiterLimit !== this.currentMiterLimit) {\n this.appliedMiterLimit = this.currentMiterLimit;\n this.nativeContext.miterLimit = this.appliedMiterLimit;\n }\n\n this.nativeContext.stroke();\n };\n\n function CVCompElement(data, globalData, comp) {\n this.completeLayers = false;\n this.layers = data.layers;\n this.pendingElements = [];\n this.elements = createSizedArray(this.layers.length);\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([CanvasRendererBase, ICompElement, CVBaseElement], CVCompElement);\n\n CVCompElement.prototype.renderInnerContent = function () {\n var ctx = this.canvasContext;\n ctx.beginPath();\n ctx.moveTo(0, 0);\n ctx.lineTo(this.data.w, 0);\n ctx.lineTo(this.data.w, this.data.h);\n ctx.lineTo(0, this.data.h);\n ctx.lineTo(0, 0);\n ctx.clip();\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.completeLayers || this.elements[i]) {\n this.elements[i].renderFrame();\n }\n }\n };\n\n CVCompElement.prototype.destroy = function () {\n var i;\n var len = this.layers.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n if (this.elements[i]) {\n this.elements[i].destroy();\n }\n }\n\n this.layers = null;\n this.elements = null;\n };\n\n CVCompElement.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function CanvasRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.renderConfig = {\n clearCanvas: config && config.clearCanvas !== undefined ? config.clearCanvas : true,\n context: config && config.context || null,\n progressiveLoad: config && config.progressiveLoad || false,\n preserveAspectRatio: config && config.preserveAspectRatio || 'xMidYMid meet',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n contentVisibility: config && config.contentVisibility || 'visible',\n className: config && config.className || '',\n id: config && config.id || '',\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.renderConfig.dpr = config && config.dpr || 1;\n\n if (this.animationItem.wrapper) {\n this.renderConfig.dpr = config && config.dpr || window.devicePixelRatio || 1;\n }\n\n this.renderedFrame = -1;\n this.globalData = {\n frameNum: -1,\n _mdf: false,\n renderConfig: this.renderConfig,\n currentGlobalAlpha: -1\n };\n this.contextData = new CVContextData();\n this.elements = [];\n this.pendingElements = [];\n this.transformMat = new Matrix();\n this.completeLayers = false;\n this.rendererType = 'canvas';\n\n if (this.renderConfig.clearCanvas) {\n this.ctxTransform = this.contextData.transform.bind(this.contextData);\n this.ctxOpacity = this.contextData.opacity.bind(this.contextData);\n this.ctxFillStyle = this.contextData.fillStyle.bind(this.contextData);\n this.ctxStrokeStyle = this.contextData.strokeStyle.bind(this.contextData);\n this.ctxLineWidth = this.contextData.lineWidth.bind(this.contextData);\n this.ctxLineCap = this.contextData.lineCap.bind(this.contextData);\n this.ctxLineJoin = this.contextData.lineJoin.bind(this.contextData);\n this.ctxMiterLimit = this.contextData.miterLimit.bind(this.contextData);\n this.ctxFill = this.contextData.fill.bind(this.contextData);\n this.ctxFillRect = this.contextData.fillRect.bind(this.contextData);\n this.ctxStroke = this.contextData.stroke.bind(this.contextData);\n this.save = this.contextData.save.bind(this.contextData);\n }\n }\n\n extendPrototype([CanvasRendererBase], CanvasRenderer);\n\n CanvasRenderer.prototype.createComp = function (data) {\n return new CVCompElement(data, this.globalData, this);\n };\n\n function HBaseElement() {}\n\n HBaseElement.prototype = {\n checkBlendMode: function checkBlendMode() {},\n initRendererElement: function initRendererElement() {\n this.baseElement = createTag(this.data.tg || 'div');\n\n if (this.data.hasMask) {\n this.svgElement = createNS('svg');\n this.layerElement = createNS('g');\n this.maskedElement = this.layerElement;\n this.svgElement.appendChild(this.layerElement);\n this.baseElement.appendChild(this.svgElement);\n } else {\n this.layerElement = this.baseElement;\n }\n\n styleDiv(this.baseElement);\n },\n createContainerElements: function createContainerElements() {\n this.renderableEffectsManager = new CVEffects(this);\n this.transformedElement = this.baseElement;\n this.maskedElement = this.layerElement;\n\n if (this.data.ln) {\n this.layerElement.setAttribute('id', this.data.ln);\n }\n\n if (this.data.cl) {\n this.layerElement.setAttribute('class', this.data.cl);\n }\n\n if (this.data.bm !== 0) {\n this.setBlendMode();\n }\n },\n renderElement: function renderElement() {\n var transformedElementStyle = this.transformedElement ? this.transformedElement.style : {};\n\n if (this.finalTransform._matMdf) {\n var matrixValue = this.finalTransform.mat.toCSS();\n transformedElementStyle.transform = matrixValue;\n transformedElementStyle.webkitTransform = matrixValue;\n }\n\n if (this.finalTransform._opMdf) {\n transformedElementStyle.opacity = this.finalTransform.mProp.o.v;\n }\n },\n renderFrame: function renderFrame() {\n // If it is exported as hidden (data.hd === true) no need to render\n // If it is not visible no need to render\n if (this.data.hd || this.hidden) {\n return;\n }\n\n this.renderTransform();\n this.renderRenderable();\n this.renderElement();\n this.renderInnerContent();\n\n if (this._isFirstFrame) {\n this._isFirstFrame = false;\n }\n },\n destroy: function destroy() {\n this.layerElement = null;\n this.transformedElement = null;\n\n if (this.matteElement) {\n this.matteElement = null;\n }\n\n if (this.maskManager) {\n this.maskManager.destroy();\n this.maskManager = null;\n }\n },\n createRenderableComponents: function createRenderableComponents() {\n this.maskManager = new MaskElement(this.data, this, this.globalData);\n },\n addEffects: function addEffects() {},\n setMatte: function setMatte() {}\n };\n HBaseElement.prototype.getBaseElement = SVGBaseElement.prototype.getBaseElement;\n HBaseElement.prototype.destroyBaseElement = HBaseElement.prototype.destroy;\n HBaseElement.prototype.buildElementParenting = BaseRenderer.prototype.buildElementParenting;\n\n function HSolidElement(data, globalData, comp) {\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement], HSolidElement);\n\n HSolidElement.prototype.createContent = function () {\n var rect;\n\n if (this.data.hasMask) {\n rect = createNS('rect');\n rect.setAttribute('width', this.data.sw);\n rect.setAttribute('height', this.data.sh);\n rect.setAttribute('fill', this.data.sc);\n this.svgElement.setAttribute('width', this.data.sw);\n this.svgElement.setAttribute('height', this.data.sh);\n } else {\n rect = createTag('div');\n rect.style.width = this.data.sw + 'px';\n rect.style.height = this.data.sh + 'px';\n rect.style.backgroundColor = this.data.sc;\n }\n\n this.layerElement.appendChild(rect);\n };\n\n function HShapeElement(data, globalData, comp) {\n // List of drawable elements\n this.shapes = []; // Full shape data\n\n this.shapesData = data.shapes; // List of styles that will be applied to shapes\n\n this.stylesList = []; // List of modifiers that will be applied to shapes\n\n this.shapeModifiers = []; // List of items in shape tree\n\n this.itemsData = []; // List of items in previous shape tree\n\n this.processedElements = []; // List of animated components\n\n this.animatedContents = [];\n this.shapesContainer = createNS('g');\n this.initElement(data, globalData, comp); // Moving any property that doesn't get too much access after initialization because of v8 way of handling more than 10 properties.\n // List of elements that have been created\n\n this.prevViewData = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n }\n\n extendPrototype([BaseElement, TransformElement, HSolidElement, SVGShapeElement, HBaseElement, HierarchyElement, FrameElement, RenderableElement], HShapeElement);\n HShapeElement.prototype._renderShapeFrame = HShapeElement.prototype.renderInnerContent;\n\n HShapeElement.prototype.createContent = function () {\n var cont;\n this.baseElement.style.fontSize = 0;\n\n if (this.data.hasMask) {\n this.layerElement.appendChild(this.shapesContainer);\n cont = this.svgElement;\n } else {\n cont = createNS('svg');\n var size = this.comp.data ? this.comp.data : this.globalData.compSize;\n cont.setAttribute('width', size.w);\n cont.setAttribute('height', size.h);\n cont.appendChild(this.shapesContainer);\n this.layerElement.appendChild(cont);\n }\n\n this.searchShapes(this.shapesData, this.itemsData, this.prevViewData, this.shapesContainer, 0, [], true);\n this.filterUniqueShapes();\n this.shapeCont = cont;\n };\n\n HShapeElement.prototype.getTransformedPoint = function (transformers, point) {\n var i;\n var len = transformers.length;\n\n for (i = 0; i < len; i += 1) {\n point = transformers[i].mProps.v.applyToPointArray(point[0], point[1], 0);\n }\n\n return point;\n };\n\n HShapeElement.prototype.calculateShapeBoundingBox = function (item, boundingBox) {\n var shape = item.sh.v;\n var transformers = item.transformers;\n var i;\n var len = shape._length;\n var vPoint;\n var oPoint;\n var nextIPoint;\n var nextVPoint;\n\n if (len <= 1) {\n return;\n }\n\n for (i = 0; i < len - 1; i += 1) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[i + 1]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[i + 1]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n\n if (shape.c) {\n vPoint = this.getTransformedPoint(transformers, shape.v[i]);\n oPoint = this.getTransformedPoint(transformers, shape.o[i]);\n nextIPoint = this.getTransformedPoint(transformers, shape.i[0]);\n nextVPoint = this.getTransformedPoint(transformers, shape.v[0]);\n this.checkBounds(vPoint, oPoint, nextIPoint, nextVPoint, boundingBox);\n }\n };\n\n HShapeElement.prototype.checkBounds = function (vPoint, oPoint, nextIPoint, nextVPoint, boundingBox) {\n this.getBoundsOfCurve(vPoint, oPoint, nextIPoint, nextVPoint);\n var bounds = this.shapeBoundingBox;\n boundingBox.x = bmMin(bounds.left, boundingBox.x);\n boundingBox.xMax = bmMax(bounds.right, boundingBox.xMax);\n boundingBox.y = bmMin(bounds.top, boundingBox.y);\n boundingBox.yMax = bmMax(bounds.bottom, boundingBox.yMax);\n };\n\n HShapeElement.prototype.shapeBoundingBox = {\n left: 0,\n right: 0,\n top: 0,\n bottom: 0\n };\n HShapeElement.prototype.tempBoundingBox = {\n x: 0,\n xMax: 0,\n y: 0,\n yMax: 0,\n width: 0,\n height: 0\n };\n\n HShapeElement.prototype.getBoundsOfCurve = function (p0, p1, p2, p3) {\n var bounds = [[p0[0], p3[0]], [p0[1], p3[1]]];\n\n for (var a, b, c, t, b2ac, t1, t2, i = 0; i < 2; ++i) {\n // eslint-disable-line no-plusplus\n b = 6 * p0[i] - 12 * p1[i] + 6 * p2[i];\n a = -3 * p0[i] + 9 * p1[i] - 9 * p2[i] + 3 * p3[i];\n c = 3 * p1[i] - 3 * p0[i];\n b |= 0; // eslint-disable-line no-bitwise\n\n a |= 0; // eslint-disable-line no-bitwise\n\n c |= 0; // eslint-disable-line no-bitwise\n\n if (a === 0 && b === 0) {//\n } else if (a === 0) {\n t = -c / b;\n\n if (t > 0 && t < 1) {\n bounds[i].push(this.calculateF(t, p0, p1, p2, p3, i));\n }\n } else {\n b2ac = b * b - 4 * c * a;\n\n if (b2ac >= 0) {\n t1 = (-b + bmSqrt(b2ac)) / (2 * a);\n if (t1 > 0 && t1 < 1) bounds[i].push(this.calculateF(t1, p0, p1, p2, p3, i));\n t2 = (-b - bmSqrt(b2ac)) / (2 * a);\n if (t2 > 0 && t2 < 1) bounds[i].push(this.calculateF(t2, p0, p1, p2, p3, i));\n }\n }\n }\n\n this.shapeBoundingBox.left = bmMin.apply(null, bounds[0]);\n this.shapeBoundingBox.top = bmMin.apply(null, bounds[1]);\n this.shapeBoundingBox.right = bmMax.apply(null, bounds[0]);\n this.shapeBoundingBox.bottom = bmMax.apply(null, bounds[1]);\n };\n\n HShapeElement.prototype.calculateF = function (t, p0, p1, p2, p3, i) {\n return bmPow(1 - t, 3) * p0[i] + 3 * bmPow(1 - t, 2) * t * p1[i] + 3 * (1 - t) * bmPow(t, 2) * p2[i] + bmPow(t, 3) * p3[i];\n };\n\n HShapeElement.prototype.calculateBoundingBox = function (itemsData, boundingBox) {\n var i;\n var len = itemsData.length;\n\n for (i = 0; i < len; i += 1) {\n if (itemsData[i] && itemsData[i].sh) {\n this.calculateShapeBoundingBox(itemsData[i], boundingBox);\n } else if (itemsData[i] && itemsData[i].it) {\n this.calculateBoundingBox(itemsData[i].it, boundingBox);\n } else if (itemsData[i] && itemsData[i].style && itemsData[i].w) {\n this.expandStrokeBoundingBox(itemsData[i].w, boundingBox);\n }\n }\n };\n\n HShapeElement.prototype.expandStrokeBoundingBox = function (widthProperty, boundingBox) {\n var width = 0;\n\n if (widthProperty.keyframes) {\n for (var i = 0; i < widthProperty.keyframes.length; i += 1) {\n var kfw = widthProperty.keyframes[i].s;\n\n if (kfw > width) {\n width = kfw;\n }\n }\n\n width *= widthProperty.mult;\n } else {\n width = widthProperty.v * widthProperty.mult;\n }\n\n boundingBox.x -= width;\n boundingBox.xMax += width;\n boundingBox.y -= width;\n boundingBox.yMax += width;\n };\n\n HShapeElement.prototype.currentBoxContains = function (box) {\n return this.currentBBox.x <= box.x && this.currentBBox.y <= box.y && this.currentBBox.width + this.currentBBox.x >= box.x + box.width && this.currentBBox.height + this.currentBBox.y >= box.y + box.height;\n };\n\n HShapeElement.prototype.renderInnerContent = function () {\n this._renderShapeFrame();\n\n if (!this.hidden && (this._isFirstFrame || this._mdf)) {\n var tempBoundingBox = this.tempBoundingBox;\n var max = 999999;\n tempBoundingBox.x = max;\n tempBoundingBox.xMax = -max;\n tempBoundingBox.y = max;\n tempBoundingBox.yMax = -max;\n this.calculateBoundingBox(this.itemsData, tempBoundingBox);\n tempBoundingBox.width = tempBoundingBox.xMax < tempBoundingBox.x ? 0 : tempBoundingBox.xMax - tempBoundingBox.x;\n tempBoundingBox.height = tempBoundingBox.yMax < tempBoundingBox.y ? 0 : tempBoundingBox.yMax - tempBoundingBox.y; // var tempBoundingBox = this.shapeCont.getBBox();\n\n if (this.currentBoxContains(tempBoundingBox)) {\n return;\n }\n\n var changed = false;\n\n if (this.currentBBox.w !== tempBoundingBox.width) {\n this.currentBBox.w = tempBoundingBox.width;\n this.shapeCont.setAttribute('width', tempBoundingBox.width);\n changed = true;\n }\n\n if (this.currentBBox.h !== tempBoundingBox.height) {\n this.currentBBox.h = tempBoundingBox.height;\n this.shapeCont.setAttribute('height', tempBoundingBox.height);\n changed = true;\n }\n\n if (changed || this.currentBBox.x !== tempBoundingBox.x || this.currentBBox.y !== tempBoundingBox.y) {\n this.currentBBox.w = tempBoundingBox.width;\n this.currentBBox.h = tempBoundingBox.height;\n this.currentBBox.x = tempBoundingBox.x;\n this.currentBBox.y = tempBoundingBox.y;\n this.shapeCont.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n var shapeStyle = this.shapeCont.style;\n var shapeTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n shapeStyle.transform = shapeTransform;\n shapeStyle.webkitTransform = shapeTransform;\n }\n }\n };\n\n function HTextElement(data, globalData, comp) {\n this.textSpans = [];\n this.textPaths = [];\n this.currentBBox = {\n x: 999999,\n y: -999999,\n h: 0,\n w: 0\n };\n this.renderType = 'svg';\n this.isMasked = false;\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HierarchyElement, FrameElement, RenderableDOMElement, ITextElement], HTextElement);\n\n HTextElement.prototype.createContent = function () {\n this.isMasked = this.checkMasks();\n\n if (this.isMasked) {\n this.renderType = 'svg';\n this.compW = this.comp.data.w;\n this.compH = this.comp.data.h;\n this.svgElement.setAttribute('width', this.compW);\n this.svgElement.setAttribute('height', this.compH);\n var g = createNS('g');\n this.maskedElement.appendChild(g);\n this.innerElem = g;\n } else {\n this.renderType = 'html';\n this.innerElem = this.layerElement;\n }\n\n this.checkParenting();\n };\n\n HTextElement.prototype.buildNewText = function () {\n var documentData = this.textProperty.currentData;\n this.renderedLetters = createSizedArray(documentData.l ? documentData.l.length : 0);\n var innerElemStyle = this.innerElem.style;\n var textColor = documentData.fc ? this.buildColor(documentData.fc) : 'rgba(0,0,0,0)';\n innerElemStyle.fill = textColor;\n innerElemStyle.color = textColor;\n\n if (documentData.sc) {\n innerElemStyle.stroke = this.buildColor(documentData.sc);\n innerElemStyle.strokeWidth = documentData.sw + 'px';\n }\n\n var fontData = this.globalData.fontManager.getFontByName(documentData.f);\n\n if (!this.globalData.fontManager.chars) {\n innerElemStyle.fontSize = documentData.finalSize + 'px';\n innerElemStyle.lineHeight = documentData.finalSize + 'px';\n\n if (fontData.fClass) {\n this.innerElem.className = fontData.fClass;\n } else {\n innerElemStyle.fontFamily = fontData.fFamily;\n var fWeight = documentData.fWeight;\n var fStyle = documentData.fStyle;\n innerElemStyle.fontStyle = fStyle;\n innerElemStyle.fontWeight = fWeight;\n }\n }\n\n var i;\n var len;\n var letters = documentData.l;\n len = letters.length;\n var tSpan;\n var tParent;\n var tCont;\n var matrixHelper = this.mHelper;\n var shapes;\n var shapeStr = '';\n var cnt = 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.globalData.fontManager.chars) {\n if (!this.textPaths[cnt]) {\n tSpan = createNS('path');\n tSpan.setAttribute('stroke-linecap', lineCapEnum[1]);\n tSpan.setAttribute('stroke-linejoin', lineJoinEnum[2]);\n tSpan.setAttribute('stroke-miterlimit', '4');\n } else {\n tSpan = this.textPaths[cnt];\n }\n\n if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tCont = tParent.children[0];\n } else {\n tParent = createTag('div');\n tParent.style.lineHeight = 0;\n tCont = createNS('svg');\n tCont.appendChild(tSpan);\n styleDiv(tParent);\n }\n }\n } else if (!this.isMasked) {\n if (this.textSpans[cnt]) {\n tParent = this.textSpans[cnt];\n tSpan = this.textPaths[cnt];\n } else {\n tParent = createTag('span');\n styleDiv(tParent);\n tSpan = createTag('span');\n styleDiv(tSpan);\n tParent.appendChild(tSpan);\n }\n } else {\n tSpan = this.textPaths[cnt] ? this.textPaths[cnt] : createNS('text');\n } // tSpan.setAttribute('visibility', 'hidden');\n\n\n if (this.globalData.fontManager.chars) {\n var charData = this.globalData.fontManager.getCharData(documentData.finalText[i], fontData.fStyle, this.globalData.fontManager.getFontByName(documentData.f).fFamily);\n var shapeData;\n\n if (charData) {\n shapeData = charData.data;\n } else {\n shapeData = null;\n }\n\n matrixHelper.reset();\n\n if (shapeData && shapeData.shapes && shapeData.shapes.length) {\n shapes = shapeData.shapes[0].it;\n matrixHelper.scale(documentData.finalSize / 100, documentData.finalSize / 100);\n shapeStr = this.createPathShape(matrixHelper, shapes);\n tSpan.setAttribute('d', shapeStr);\n }\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent);\n\n if (shapeData && shapeData.shapes) {\n // document.body.appendChild is needed to get exact measure of shape\n document.body.appendChild(tCont);\n var boundingBox = tCont.getBBox();\n tCont.setAttribute('width', boundingBox.width + 2);\n tCont.setAttribute('height', boundingBox.height + 2);\n tCont.setAttribute('viewBox', boundingBox.x - 1 + ' ' + (boundingBox.y - 1) + ' ' + (boundingBox.width + 2) + ' ' + (boundingBox.height + 2));\n var tContStyle = tCont.style;\n var tContTranslation = 'translate(' + (boundingBox.x - 1) + 'px,' + (boundingBox.y - 1) + 'px)';\n tContStyle.transform = tContTranslation;\n tContStyle.webkitTransform = tContTranslation;\n letters[i].yOffset = boundingBox.y - 1;\n } else {\n tCont.setAttribute('width', 1);\n tCont.setAttribute('height', 1);\n }\n\n tParent.appendChild(tCont);\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } else {\n tSpan.textContent = letters[i].val;\n tSpan.setAttributeNS('http://www.w3.org/XML/1998/namespace', 'xml:space', 'preserve');\n\n if (!this.isMasked) {\n this.innerElem.appendChild(tParent); //\n\n var tStyle = tSpan.style;\n var tSpanTranslation = 'translate3d(0,' + -documentData.finalSize / 1.2 + 'px,0)';\n tStyle.transform = tSpanTranslation;\n tStyle.webkitTransform = tSpanTranslation;\n } else {\n this.innerElem.appendChild(tSpan);\n }\n } //\n\n\n if (!this.isMasked) {\n this.textSpans[cnt] = tParent;\n } else {\n this.textSpans[cnt] = tSpan;\n }\n\n this.textSpans[cnt].style.display = 'block';\n this.textPaths[cnt] = tSpan;\n cnt += 1;\n }\n\n while (cnt < this.textSpans.length) {\n this.textSpans[cnt].style.display = 'none';\n cnt += 1;\n }\n };\n\n HTextElement.prototype.renderInnerContent = function () {\n this.validateText();\n var svgStyle;\n\n if (this.data.singleShape) {\n if (!this._isFirstFrame && !this.lettersChangedFlag) {\n return;\n }\n\n if (this.isMasked && this.finalTransform._matMdf) {\n // Todo Benchmark if using this is better than getBBox\n this.svgElement.setAttribute('viewBox', -this.finalTransform.mProp.p.v[0] + ' ' + -this.finalTransform.mProp.p.v[1] + ' ' + this.compW + ' ' + this.compH);\n svgStyle = this.svgElement.style;\n var translation = 'translate(' + -this.finalTransform.mProp.p.v[0] + 'px,' + -this.finalTransform.mProp.p.v[1] + 'px)';\n svgStyle.transform = translation;\n svgStyle.webkitTransform = translation;\n }\n }\n\n this.textAnimator.getMeasures(this.textProperty.currentData, this.lettersChangedFlag);\n\n if (!this.lettersChangedFlag && !this.textAnimator.lettersChangedFlag) {\n return;\n }\n\n var i;\n var len;\n var count = 0;\n var renderedLetters = this.textAnimator.renderedLetters;\n var letters = this.textProperty.currentData.l;\n len = letters.length;\n var renderedLetter;\n var textSpan;\n var textPath;\n\n for (i = 0; i < len; i += 1) {\n if (letters[i].n) {\n count += 1;\n } else {\n textSpan = this.textSpans[i];\n textPath = this.textPaths[i];\n renderedLetter = renderedLetters[count];\n count += 1;\n\n if (renderedLetter._mdf.m) {\n if (!this.isMasked) {\n textSpan.style.webkitTransform = renderedLetter.m;\n textSpan.style.transform = renderedLetter.m;\n } else {\n textSpan.setAttribute('transform', renderedLetter.m);\n }\n } /// /textSpan.setAttribute('opacity',renderedLetter.o);\n\n\n textSpan.style.opacity = renderedLetter.o;\n\n if (renderedLetter.sw && renderedLetter._mdf.sw) {\n textPath.setAttribute('stroke-width', renderedLetter.sw);\n }\n\n if (renderedLetter.sc && renderedLetter._mdf.sc) {\n textPath.setAttribute('stroke', renderedLetter.sc);\n }\n\n if (renderedLetter.fc && renderedLetter._mdf.fc) {\n textPath.setAttribute('fill', renderedLetter.fc);\n textPath.style.color = renderedLetter.fc;\n }\n }\n }\n\n if (this.innerElem.getBBox && !this.hidden && (this._isFirstFrame || this._mdf)) {\n var boundingBox = this.innerElem.getBBox();\n\n if (this.currentBBox.w !== boundingBox.width) {\n this.currentBBox.w = boundingBox.width;\n this.svgElement.setAttribute('width', boundingBox.width);\n }\n\n if (this.currentBBox.h !== boundingBox.height) {\n this.currentBBox.h = boundingBox.height;\n this.svgElement.setAttribute('height', boundingBox.height);\n }\n\n var margin = 1;\n\n if (this.currentBBox.w !== boundingBox.width + margin * 2 || this.currentBBox.h !== boundingBox.height + margin * 2 || this.currentBBox.x !== boundingBox.x - margin || this.currentBBox.y !== boundingBox.y - margin) {\n this.currentBBox.w = boundingBox.width + margin * 2;\n this.currentBBox.h = boundingBox.height + margin * 2;\n this.currentBBox.x = boundingBox.x - margin;\n this.currentBBox.y = boundingBox.y - margin;\n this.svgElement.setAttribute('viewBox', this.currentBBox.x + ' ' + this.currentBBox.y + ' ' + this.currentBBox.w + ' ' + this.currentBBox.h);\n svgStyle = this.svgElement.style;\n var svgTransform = 'translate(' + this.currentBBox.x + 'px,' + this.currentBBox.y + 'px)';\n svgStyle.transform = svgTransform;\n svgStyle.webkitTransform = svgTransform;\n }\n }\n };\n\n function HCameraElement(data, globalData, comp) {\n this.initFrame();\n this.initBaseData(data, globalData, comp);\n this.initHierarchy();\n var getProp = PropertyFactory.getProp;\n this.pe = getProp(this, data.pe, 0, 0, this);\n\n if (data.ks.p.s) {\n this.px = getProp(this, data.ks.p.x, 1, 0, this);\n this.py = getProp(this, data.ks.p.y, 1, 0, this);\n this.pz = getProp(this, data.ks.p.z, 1, 0, this);\n } else {\n this.p = getProp(this, data.ks.p, 1, 0, this);\n }\n\n if (data.ks.a) {\n this.a = getProp(this, data.ks.a, 1, 0, this);\n }\n\n if (data.ks.or.k.length && data.ks.or.k[0].to) {\n var i;\n var len = data.ks.or.k.length;\n\n for (i = 0; i < len; i += 1) {\n data.ks.or.k[i].to = null;\n data.ks.or.k[i].ti = null;\n }\n }\n\n this.or = getProp(this, data.ks.or, 1, degToRads, this);\n this.or.sh = true;\n this.rx = getProp(this, data.ks.rx, 0, degToRads, this);\n this.ry = getProp(this, data.ks.ry, 0, degToRads, this);\n this.rz = getProp(this, data.ks.rz, 0, degToRads, this);\n this.mat = new Matrix();\n this._prevMat = new Matrix();\n this._isFirstFrame = true; // TODO: find a better way to make the HCamera element to be compatible with the LayerInterface and TransformInterface.\n\n this.finalTransform = {\n mProp: this\n };\n }\n\n extendPrototype([BaseElement, FrameElement, HierarchyElement], HCameraElement);\n\n HCameraElement.prototype.setup = function () {\n var i;\n var len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n // [perspectiveElem,container]\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n perspectiveStyle = comp.perspectiveElem.style;\n containerStyle = comp.container.style;\n var perspective = this.pe.v + 'px';\n var origin = '0px 0px 0px';\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n perspectiveStyle.perspective = perspective;\n perspectiveStyle.webkitPerspective = perspective;\n containerStyle.transformOrigin = origin;\n containerStyle.mozTransformOrigin = origin;\n containerStyle.webkitTransformOrigin = origin;\n perspectiveStyle.transform = matrix;\n perspectiveStyle.webkitTransform = matrix;\n }\n }\n };\n\n HCameraElement.prototype.createElements = function () {};\n\n HCameraElement.prototype.hide = function () {};\n\n HCameraElement.prototype.renderFrame = function () {\n var _mdf = this._isFirstFrame;\n var i;\n var len;\n\n if (this.hierarchy) {\n len = this.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n _mdf = this.hierarchy[i].finalTransform.mProp._mdf || _mdf;\n }\n }\n\n if (_mdf || this.pe._mdf || this.p && this.p._mdf || this.px && (this.px._mdf || this.py._mdf || this.pz._mdf) || this.rx._mdf || this.ry._mdf || this.rz._mdf || this.or._mdf || this.a && this.a._mdf) {\n this.mat.reset();\n\n if (this.hierarchy) {\n len = this.hierarchy.length - 1;\n\n for (i = len; i >= 0; i -= 1) {\n var mTransf = this.hierarchy[i].finalTransform.mProp;\n this.mat.translate(-mTransf.p.v[0], -mTransf.p.v[1], mTransf.p.v[2]);\n this.mat.rotateX(-mTransf.or.v[0]).rotateY(-mTransf.or.v[1]).rotateZ(mTransf.or.v[2]);\n this.mat.rotateX(-mTransf.rx.v).rotateY(-mTransf.ry.v).rotateZ(mTransf.rz.v);\n this.mat.scale(1 / mTransf.s.v[0], 1 / mTransf.s.v[1], 1 / mTransf.s.v[2]);\n this.mat.translate(mTransf.a.v[0], mTransf.a.v[1], mTransf.a.v[2]);\n }\n }\n\n if (this.p) {\n this.mat.translate(-this.p.v[0], -this.p.v[1], this.p.v[2]);\n } else {\n this.mat.translate(-this.px.v, -this.py.v, this.pz.v);\n }\n\n if (this.a) {\n var diffVector;\n\n if (this.p) {\n diffVector = [this.p.v[0] - this.a.v[0], this.p.v[1] - this.a.v[1], this.p.v[2] - this.a.v[2]];\n } else {\n diffVector = [this.px.v - this.a.v[0], this.py.v - this.a.v[1], this.pz.v - this.a.v[2]];\n }\n\n var mag = Math.sqrt(Math.pow(diffVector[0], 2) + Math.pow(diffVector[1], 2) + Math.pow(diffVector[2], 2)); // var lookDir = getNormalizedPoint(getDiffVector(this.a.v,this.p.v));\n\n var lookDir = [diffVector[0] / mag, diffVector[1] / mag, diffVector[2] / mag];\n var lookLengthOnXZ = Math.sqrt(lookDir[2] * lookDir[2] + lookDir[0] * lookDir[0]);\n var mRotationX = Math.atan2(lookDir[1], lookLengthOnXZ);\n var mRotationY = Math.atan2(lookDir[0], -lookDir[2]);\n this.mat.rotateY(mRotationY).rotateX(-mRotationX);\n }\n\n this.mat.rotateX(-this.rx.v).rotateY(-this.ry.v).rotateZ(this.rz.v);\n this.mat.rotateX(-this.or.v[0]).rotateY(-this.or.v[1]).rotateZ(this.or.v[2]);\n this.mat.translate(this.globalData.compSize.w / 2, this.globalData.compSize.h / 2, 0);\n this.mat.translate(0, 0, this.pe.v);\n var hasMatrixChanged = !this._prevMat.equals(this.mat);\n\n if ((hasMatrixChanged || this.pe._mdf) && this.comp.threeDElements) {\n len = this.comp.threeDElements.length;\n var comp;\n var perspectiveStyle;\n var containerStyle;\n\n for (i = 0; i < len; i += 1) {\n comp = this.comp.threeDElements[i];\n\n if (comp.type === '3d') {\n if (hasMatrixChanged) {\n var matValue = this.mat.toCSS();\n containerStyle = comp.container.style;\n containerStyle.transform = matValue;\n containerStyle.webkitTransform = matValue;\n }\n\n if (this.pe._mdf) {\n perspectiveStyle = comp.perspectiveElem.style;\n perspectiveStyle.perspective = this.pe.v + 'px';\n perspectiveStyle.webkitPerspective = this.pe.v + 'px';\n }\n }\n }\n\n this.mat.clone(this._prevMat);\n }\n }\n\n this._isFirstFrame = false;\n };\n\n HCameraElement.prototype.prepareFrame = function (num) {\n this.prepareProperties(num, true);\n };\n\n HCameraElement.prototype.destroy = function () {};\n\n HCameraElement.prototype.getBaseElement = function () {\n return null;\n };\n\n function HImageElement(data, globalData, comp) {\n this.assetData = globalData.getAssetData(data.refId);\n this.initElement(data, globalData, comp);\n }\n\n extendPrototype([BaseElement, TransformElement, HBaseElement, HSolidElement, HierarchyElement, FrameElement, RenderableElement], HImageElement);\n\n HImageElement.prototype.createContent = function () {\n var assetPath = this.globalData.getAssetsPath(this.assetData);\n var img = new Image();\n\n if (this.data.hasMask) {\n this.imageElem = createNS('image');\n this.imageElem.setAttribute('width', this.assetData.w + 'px');\n this.imageElem.setAttribute('height', this.assetData.h + 'px');\n this.imageElem.setAttributeNS('http://www.w3.org/1999/xlink', 'href', assetPath);\n this.layerElement.appendChild(this.imageElem);\n this.baseElement.setAttribute('width', this.assetData.w);\n this.baseElement.setAttribute('height', this.assetData.h);\n } else {\n this.layerElement.appendChild(img);\n }\n\n img.crossOrigin = 'anonymous';\n img.src = assetPath;\n\n if (this.data.ln) {\n this.baseElement.setAttribute('id', this.data.ln);\n }\n };\n\n function HybridRendererBase(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n }\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([BaseRenderer], HybridRendererBase);\n HybridRendererBase.prototype.buildItem = SVGRenderer.prototype.buildItem;\n\n HybridRendererBase.prototype.checkPendingElements = function () {\n while (this.pendingElements.length) {\n var element = this.pendingElements.pop();\n element.checkParenting();\n }\n };\n\n HybridRendererBase.prototype.appendElementInPos = function (element, pos) {\n var newDOMElement = element.getBaseElement();\n\n if (!newDOMElement) {\n return;\n }\n\n var layer = this.layers[pos];\n\n if (!layer.ddd || !this.supports3d) {\n if (this.threeDElements) {\n this.addTo3dContainer(newDOMElement, pos);\n } else {\n var i = 0;\n var nextDOMElement;\n var nextLayer;\n var tmpDOMElement;\n\n while (i < pos) {\n if (this.elements[i] && this.elements[i] !== true && this.elements[i].getBaseElement) {\n nextLayer = this.elements[i];\n tmpDOMElement = this.layers[i].ddd ? this.getThreeDContainerByPos(i) : nextLayer.getBaseElement();\n nextDOMElement = tmpDOMElement || nextDOMElement;\n }\n\n i += 1;\n }\n\n if (nextDOMElement) {\n if (!layer.ddd || !this.supports3d) {\n this.layerElement.insertBefore(newDOMElement, nextDOMElement);\n }\n } else if (!layer.ddd || !this.supports3d) {\n this.layerElement.appendChild(newDOMElement);\n }\n }\n } else {\n this.addTo3dContainer(newDOMElement, pos);\n }\n };\n\n HybridRendererBase.prototype.createShape = function (data) {\n if (!this.supports3d) {\n return new SVGShapeElement(data, this.globalData, this);\n }\n\n return new HShapeElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createText = function (data) {\n if (!this.supports3d) {\n return new SVGTextLottieElement(data, this.globalData, this);\n }\n\n return new HTextElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createCamera = function (data) {\n this.camera = new HCameraElement(data, this.globalData, this);\n return this.camera;\n };\n\n HybridRendererBase.prototype.createImage = function (data) {\n if (!this.supports3d) {\n return new IImageElement(data, this.globalData, this);\n }\n\n return new HImageElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createSolid = function (data) {\n if (!this.supports3d) {\n return new ISolidElement(data, this.globalData, this);\n }\n\n return new HSolidElement(data, this.globalData, this);\n };\n\n HybridRendererBase.prototype.createNull = SVGRenderer.prototype.createNull;\n\n HybridRendererBase.prototype.getThreeDContainerByPos = function (pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (this.threeDElements[i].startPos <= pos && this.threeDElements[i].endPos >= pos) {\n return this.threeDElements[i].perspectiveElem;\n }\n\n i += 1;\n }\n\n return null;\n };\n\n HybridRendererBase.prototype.createThreeDContainer = function (pos, type) {\n var perspectiveElem = createTag('div');\n var style;\n var containerStyle;\n styleDiv(perspectiveElem);\n var container = createTag('div');\n styleDiv(container);\n\n if (type === '3d') {\n style = perspectiveElem.style;\n style.width = this.globalData.compSize.w + 'px';\n style.height = this.globalData.compSize.h + 'px';\n var center = '50% 50%';\n style.webkitTransformOrigin = center;\n style.mozTransformOrigin = center;\n style.transformOrigin = center;\n containerStyle = container.style;\n var matrix = 'matrix3d(1,0,0,0,0,1,0,0,0,0,1,0,0,0,0,1)';\n containerStyle.transform = matrix;\n containerStyle.webkitTransform = matrix;\n }\n\n perspectiveElem.appendChild(container); // this.resizerElem.appendChild(perspectiveElem);\n\n var threeDContainerData = {\n container: container,\n perspectiveElem: perspectiveElem,\n startPos: pos,\n endPos: pos,\n type: type\n };\n this.threeDElements.push(threeDContainerData);\n return threeDContainerData;\n };\n\n HybridRendererBase.prototype.build3dContainers = function () {\n var i;\n var len = this.layers.length;\n var lastThreeDContainerData;\n var currentContainer = '';\n\n for (i = 0; i < len; i += 1) {\n if (this.layers[i].ddd && this.layers[i].ty !== 3) {\n if (currentContainer !== '3d') {\n currentContainer = '3d';\n lastThreeDContainerData = this.createThreeDContainer(i, '3d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n } else {\n if (currentContainer !== '2d') {\n currentContainer = '2d';\n lastThreeDContainerData = this.createThreeDContainer(i, '2d');\n }\n\n lastThreeDContainerData.endPos = Math.max(lastThreeDContainerData.endPos, i);\n }\n }\n\n len = this.threeDElements.length;\n\n for (i = len - 1; i >= 0; i -= 1) {\n this.resizerElem.appendChild(this.threeDElements[i].perspectiveElem);\n }\n };\n\n HybridRendererBase.prototype.addTo3dContainer = function (elem, pos) {\n var i = 0;\n var len = this.threeDElements.length;\n\n while (i < len) {\n if (pos <= this.threeDElements[i].endPos) {\n var j = this.threeDElements[i].startPos;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.threeDElements[i].container.insertBefore(elem, nextElement);\n } else {\n this.threeDElements[i].container.appendChild(elem);\n }\n\n break;\n }\n\n i += 1;\n }\n };\n\n HybridRendererBase.prototype.configAnimation = function (animData) {\n var resizerElem = createTag('div');\n var wrapper = this.animationItem.wrapper;\n var style = resizerElem.style;\n style.width = animData.w + 'px';\n style.height = animData.h + 'px';\n this.resizerElem = resizerElem;\n styleDiv(resizerElem);\n style.transformStyle = 'flat';\n style.mozTransformStyle = 'flat';\n style.webkitTransformStyle = 'flat';\n\n if (this.renderConfig.className) {\n resizerElem.setAttribute('class', this.renderConfig.className);\n }\n\n wrapper.appendChild(resizerElem);\n style.overflow = 'hidden';\n var svg = createNS('svg');\n svg.setAttribute('width', '1');\n svg.setAttribute('height', '1');\n styleDiv(svg);\n this.resizerElem.appendChild(svg);\n var defs = createNS('defs');\n svg.appendChild(defs);\n this.data = animData; // Mask animation\n\n this.setupGlobalData(animData, svg);\n this.globalData.defs = defs;\n this.layers = animData.layers;\n this.layerElement = this.resizerElem;\n this.build3dContainers();\n this.updateContainerSize();\n };\n\n HybridRendererBase.prototype.destroy = function () {\n if (this.animationItem.wrapper) {\n this.animationItem.wrapper.innerText = '';\n }\n\n this.animationItem.container = null;\n this.globalData.defs = null;\n var i;\n var len = this.layers ? this.layers.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (this.elements[i] && this.elements[i].destroy) {\n this.elements[i].destroy();\n }\n }\n\n this.elements.length = 0;\n this.destroyed = true;\n this.animationItem = null;\n };\n\n HybridRendererBase.prototype.updateContainerSize = function () {\n var elementWidth = this.animationItem.wrapper.offsetWidth;\n var elementHeight = this.animationItem.wrapper.offsetHeight;\n var elementRel = elementWidth / elementHeight;\n var animationRel = this.globalData.compSize.w / this.globalData.compSize.h;\n var sx;\n var sy;\n var tx;\n var ty;\n\n if (animationRel > elementRel) {\n sx = elementWidth / this.globalData.compSize.w;\n sy = elementWidth / this.globalData.compSize.w;\n tx = 0;\n ty = (elementHeight - this.globalData.compSize.h * (elementWidth / this.globalData.compSize.w)) / 2;\n } else {\n sx = elementHeight / this.globalData.compSize.h;\n sy = elementHeight / this.globalData.compSize.h;\n tx = (elementWidth - this.globalData.compSize.w * (elementHeight / this.globalData.compSize.h)) / 2;\n ty = 0;\n }\n\n var style = this.resizerElem.style;\n style.webkitTransform = 'matrix3d(' + sx + ',0,0,0,0,' + sy + ',0,0,0,0,1,0,' + tx + ',' + ty + ',0,1)';\n style.transform = style.webkitTransform;\n };\n\n HybridRendererBase.prototype.renderFrame = SVGRenderer.prototype.renderFrame;\n\n HybridRendererBase.prototype.hide = function () {\n this.resizerElem.style.display = 'none';\n };\n\n HybridRendererBase.prototype.show = function () {\n this.resizerElem.style.display = 'block';\n };\n\n HybridRendererBase.prototype.initItems = function () {\n this.buildAllItems();\n\n if (this.camera) {\n this.camera.setup();\n } else {\n var cWidth = this.globalData.compSize.w;\n var cHeight = this.globalData.compSize.h;\n var i;\n var len = this.threeDElements.length;\n\n for (i = 0; i < len; i += 1) {\n var style = this.threeDElements[i].perspectiveElem.style;\n style.webkitPerspective = Math.sqrt(Math.pow(cWidth, 2) + Math.pow(cHeight, 2)) + 'px';\n style.perspective = style.webkitPerspective;\n }\n }\n };\n\n HybridRendererBase.prototype.searchExtraCompositions = function (assets) {\n var i;\n var len = assets.length;\n var floatingContainer = createTag('div');\n\n for (i = 0; i < len; i += 1) {\n if (assets[i].xt) {\n var comp = this.createComp(assets[i], floatingContainer, this.globalData.comp, null);\n comp.initExpressions();\n this.globalData.projectInterface.registerComposition(comp);\n }\n }\n };\n\n function HCompElement(data, globalData, comp) {\n this.layers = data.layers;\n this.supports3d = !data.hasMask;\n this.completeLayers = false;\n this.pendingElements = [];\n this.elements = this.layers ? createSizedArray(this.layers.length) : [];\n this.initElement(data, globalData, comp);\n this.tm = data.tm ? PropertyFactory.getProp(this, data.tm, 0, globalData.frameRate, this) : {\n _placeholder: true\n };\n }\n\n extendPrototype([HybridRendererBase, ICompElement, HBaseElement], HCompElement);\n HCompElement.prototype._createBaseContainerElements = HCompElement.prototype.createContainerElements;\n\n HCompElement.prototype.createContainerElements = function () {\n this._createBaseContainerElements(); // divElement.style.clip = 'rect(0px, '+this.data.w+'px, '+this.data.h+'px, 0px)';\n\n\n if (this.data.hasMask) {\n this.svgElement.setAttribute('width', this.data.w);\n this.svgElement.setAttribute('height', this.data.h);\n this.transformedElement = this.baseElement;\n } else {\n this.transformedElement = this.layerElement;\n }\n };\n\n HCompElement.prototype.addTo3dContainer = function (elem, pos) {\n var j = 0;\n var nextElement;\n\n while (j < pos) {\n if (this.elements[j] && this.elements[j].getBaseElement) {\n nextElement = this.elements[j].getBaseElement();\n }\n\n j += 1;\n }\n\n if (nextElement) {\n this.layerElement.insertBefore(elem, nextElement);\n } else {\n this.layerElement.appendChild(elem);\n }\n };\n\n HCompElement.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n function HybridRenderer(animationItem, config) {\n this.animationItem = animationItem;\n this.layers = null;\n this.renderedFrame = -1;\n this.renderConfig = {\n className: config && config.className || '',\n imagePreserveAspectRatio: config && config.imagePreserveAspectRatio || 'xMidYMid slice',\n hideOnTransparent: !(config && config.hideOnTransparent === false),\n filterSize: {\n width: config && config.filterSize && config.filterSize.width || '400%',\n height: config && config.filterSize && config.filterSize.height || '400%',\n x: config && config.filterSize && config.filterSize.x || '-100%',\n y: config && config.filterSize && config.filterSize.y || '-100%'\n },\n runExpressions: !config || config.runExpressions === undefined || config.runExpressions\n };\n this.globalData = {\n _mdf: false,\n frameNum: -1,\n renderConfig: this.renderConfig\n };\n this.pendingElements = [];\n this.elements = [];\n this.threeDElements = [];\n this.destroyed = false;\n this.camera = null;\n this.supports3d = true;\n this.rendererType = 'html';\n }\n\n extendPrototype([HybridRendererBase], HybridRenderer);\n\n HybridRenderer.prototype.createComp = function (data) {\n if (!this.supports3d) {\n return new SVGCompElement(data, this.globalData, this);\n }\n\n return new HCompElement(data, this.globalData, this);\n };\n\n var CompExpressionInterface = function () {\n return function (comp) {\n function _thisLayerFunction(name) {\n var i = 0;\n var len = comp.layers.length;\n\n while (i < len) {\n if (comp.layers[i].nm === name || comp.layers[i].ind === name) {\n return comp.elements[i].layerInterface;\n }\n\n i += 1;\n }\n\n return null; // return {active:false};\n }\n\n Object.defineProperty(_thisLayerFunction, '_name', {\n value: comp.data.nm\n });\n _thisLayerFunction.layer = _thisLayerFunction;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.height = comp.data.h || comp.globalData.compSize.h;\n _thisLayerFunction.width = comp.data.w || comp.globalData.compSize.w;\n _thisLayerFunction.pixelAspect = 1;\n _thisLayerFunction.frameDuration = 1 / comp.globalData.frameRate;\n _thisLayerFunction.displayStartTime = 0;\n _thisLayerFunction.numLayers = comp.layers.length;\n return _thisLayerFunction;\n };\n }();\n\n function _typeof$2(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$2 = function _typeof(obj) { return typeof obj; }; } else { _typeof$2 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$2(obj); }\n\n /* eslint-disable */\n\n /*\r\n Copyright 2014 David Bau.\r\n\r\n Permission is hereby granted, free of charge, to any person obtaining\r\n a copy of this software and associated documentation files (the\r\n \"Software\"), to deal in the Software without restriction, including\r\n without limitation the rights to use, copy, modify, merge, publish,\r\n distribute, sublicense, and/or sell copies of the Software, and to\r\n permit persons to whom the Software is furnished to do so, subject to\r\n the following conditions:\r\n\r\n The above copyright notice and this permission notice shall be\r\n included in all copies or substantial portions of the Software.\r\n\r\n THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\r\n EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\r\n MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.\r\n IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY\r\n CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,\r\n TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE\r\n SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\r\n\r\n */\n function seedRandom(pool, math) {\n //\n // The following constants are related to IEEE 754 limits.\n //\n var global = this,\n width = 256,\n // each RC4 output is 0 <= x < 256\n chunks = 6,\n // at least six RC4 outputs for each double\n digits = 52,\n // there are 52 significant digits in a double\n rngname = 'random',\n // rngname: name for Math.random and Math.seedrandom\n startdenom = math.pow(width, chunks),\n significance = math.pow(2, digits),\n overflow = significance * 2,\n mask = width - 1,\n nodecrypto; // node.js crypto module, initialized at the bottom.\n //\n // seedrandom()\n // This is the seedrandom function described above.\n //\n\n function seedrandom(seed, options, callback) {\n var key = [];\n options = options === true ? {\n entropy: true\n } : options || {}; // Flatten the seed string or build one from local entropy if needed.\n\n var shortseed = mixkey(flatten(options.entropy ? [seed, tostring(pool)] : seed === null ? autoseed() : seed, 3), key); // Use the seed to initialize an ARC4 generator.\n\n var arc4 = new ARC4(key); // This function returns a random double in [0, 1) that contains\n // randomness in every bit of the mantissa of the IEEE 754 value.\n\n var prng = function prng() {\n var n = arc4.g(chunks),\n // Start with a numerator n < 2 ^ 48\n d = startdenom,\n // and denominator d = 2 ^ 48.\n x = 0; // and no 'extra last byte'.\n\n while (n < significance) {\n // Fill up all significant digits by\n n = (n + x) * width; // shifting numerator and\n\n d *= width; // denominator and generating a\n\n x = arc4.g(1); // new least-significant-byte.\n }\n\n while (n >= overflow) {\n // To avoid rounding up, before adding\n n /= 2; // last byte, shift everything\n\n d /= 2; // right using integer math until\n\n x >>>= 1; // we have exactly the desired bits.\n }\n\n return (n + x) / d; // Form the number within [0, 1).\n };\n\n prng.int32 = function () {\n return arc4.g(4) | 0;\n };\n\n prng.quick = function () {\n return arc4.g(4) / 0x100000000;\n };\n\n prng[\"double\"] = prng; // Mix the randomness into accumulated entropy.\n\n mixkey(tostring(arc4.S), pool); // Calling convention: what to return as a function of prng, seed, is_math.\n\n return (options.pass || callback || function (prng, seed, is_math_call, state) {\n if (state) {\n // Load the arc4 state from the given state if it has an S array.\n if (state.S) {\n copy(state, arc4);\n } // Only provide the .state method if requested via options.state.\n\n\n prng.state = function () {\n return copy(arc4, {});\n };\n } // If called as a method of Math (Math.seedrandom()), mutate\n // Math.random because that is how seedrandom.js has worked since v1.0.\n\n\n if (is_math_call) {\n math[rngname] = prng;\n return seed;\n } // Otherwise, it is a newer calling convention, so return the\n // prng directly.\n else return prng;\n })(prng, shortseed, 'global' in options ? options.global : this == math, options.state);\n }\n\n math['seed' + rngname] = seedrandom; //\n // ARC4\n //\n // An ARC4 implementation. The constructor takes a key in the form of\n // an array of at most (width) integers that should be 0 <= x < (width).\n //\n // The g(count) method returns a pseudorandom integer that concatenates\n // the next (count) outputs from ARC4. Its return value is a number x\n // that is in the range 0 <= x < (width ^ count).\n //\n\n function ARC4(key) {\n var t,\n keylen = key.length,\n me = this,\n i = 0,\n j = me.i = me.j = 0,\n s = me.S = []; // The empty key [] is treated as [0].\n\n if (!keylen) {\n key = [keylen++];\n } // Set up S using the standard key scheduling algorithm.\n\n\n while (i < width) {\n s[i] = i++;\n }\n\n for (i = 0; i < width; i++) {\n s[i] = s[j = mask & j + key[i % keylen] + (t = s[i])];\n s[j] = t;\n } // The \"g\" method returns the next (count) outputs as one number.\n\n\n me.g = function (count) {\n // Using instance members instead of closure state nearly doubles speed.\n var t,\n r = 0,\n i = me.i,\n j = me.j,\n s = me.S;\n\n while (count--) {\n t = s[i = mask & i + 1];\n r = r * width + s[mask & (s[i] = s[j = mask & j + t]) + (s[j] = t)];\n }\n\n me.i = i;\n me.j = j;\n return r; // For robust unpredictability, the function call below automatically\n // discards an initial batch of values. This is called RC4-drop[256].\n // See http://google.com/search?q=rsa+fluhrer+response&btnI\n };\n } //\n // copy()\n // Copies internal state of ARC4 to or from a plain object.\n //\n\n\n function copy(f, t) {\n t.i = f.i;\n t.j = f.j;\n t.S = f.S.slice();\n return t;\n } //\n // flatten()\n // Converts an object tree to nested arrays of strings.\n //\n\n\n function flatten(obj, depth) {\n var result = [],\n typ = _typeof$2(obj),\n prop;\n\n if (depth && typ == 'object') {\n for (prop in obj) {\n try {\n result.push(flatten(obj[prop], depth - 1));\n } catch (e) {}\n }\n }\n\n return result.length ? result : typ == 'string' ? obj : obj + '\\0';\n } //\n // mixkey()\n // Mixes a string seed into a key that is an array of integers, and\n // returns a shortened string seed that is equivalent to the result key.\n //\n\n\n function mixkey(seed, key) {\n var stringseed = seed + '',\n smear,\n j = 0;\n\n while (j < stringseed.length) {\n key[mask & j] = mask & (smear ^= key[mask & j] * 19) + stringseed.charCodeAt(j++);\n }\n\n return tostring(key);\n } //\n // autoseed()\n // Returns an object for autoseeding, using window.crypto and Node crypto\n // module if available.\n //\n\n\n function autoseed() {\n try {\n if (nodecrypto) {\n return tostring(nodecrypto.randomBytes(width));\n }\n\n var out = new Uint8Array(width);\n (global.crypto || global.msCrypto).getRandomValues(out);\n return tostring(out);\n } catch (e) {\n var browser = global.navigator,\n plugins = browser && browser.plugins;\n return [+new Date(), global, plugins, global.screen, tostring(pool)];\n }\n } //\n // tostring()\n // Converts an array of charcodes to a string\n //\n\n\n function tostring(a) {\n return String.fromCharCode.apply(0, a);\n } //\n // When seedrandom.js is loaded, we immediately mix a few bits\n // from the built-in RNG into the entropy pool. Because we do\n // not want to interfere with deterministic PRNG state later,\n // seedrandom will not call math.random on its own again after\n // initialization.\n //\n\n\n mixkey(math.random(), pool); //\n // Nodejs and AMD support: export the implementation as a module using\n // either convention.\n //\n // End anonymous scope, and pass initial values.\n }\n\n ;\n\n function initialize$2(BMMath) {\n seedRandom([], BMMath);\n }\n\n var propTypes = {\n SHAPE: 'shape'\n };\n\n function _typeof$1(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof$1 = function _typeof(obj) { return typeof obj; }; } else { _typeof$1 = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof$1(obj); }\n\n var ExpressionManager = function () {\n 'use strict';\n\n var ob = {};\n var Math = BMMath;\n var window = null;\n var document = null;\n var XMLHttpRequest = null;\n var fetch = null;\n var frames = null;\n var _lottieGlobal = {};\n initialize$2(BMMath);\n\n function resetFrame() {\n _lottieGlobal = {};\n }\n\n function $bm_isInstanceOfArray(arr) {\n return arr.constructor === Array || arr.constructor === Float32Array;\n }\n\n function isNumerable(tOfV, v) {\n return tOfV === 'number' || v instanceof Number || tOfV === 'boolean' || tOfV === 'string';\n }\n\n function $bm_neg(a) {\n var tOfA = _typeof$1(a);\n\n if (tOfA === 'number' || a instanceof Number || tOfA === 'boolean') {\n return -a;\n }\n\n if ($bm_isInstanceOfArray(a)) {\n var i;\n var lenA = a.length;\n var retArr = [];\n\n for (i = 0; i < lenA; i += 1) {\n retArr[i] = -a[i];\n }\n\n return retArr;\n }\n\n if (a.propType) {\n return a.v;\n }\n\n return -a;\n }\n\n var easeInBez = BezierFactory.getBezierEasing(0.333, 0, 0.833, 0.833, 'easeIn').get;\n var easeOutBez = BezierFactory.getBezierEasing(0.167, 0.167, 0.667, 1, 'easeOut').get;\n var easeInOutBez = BezierFactory.getBezierEasing(0.33, 0, 0.667, 1, 'easeInOut').get;\n\n function sum(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b) || tOfA === 'string' || tOfB === 'string') {\n return a + b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] += b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a + b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] + b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n var add = sum;\n\n function sub(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n if (tOfA === 'string') {\n a = parseInt(a, 10);\n }\n\n if (tOfB === 'string') {\n b = parseInt(b, 10);\n }\n\n return a - b;\n }\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n a = a.slice(0);\n a[0] -= b;\n return a;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n b = b.slice(0);\n b[0] = a - b[0];\n return b;\n }\n\n if ($bm_isInstanceOfArray(a) && $bm_isInstanceOfArray(b)) {\n var i = 0;\n var lenA = a.length;\n var lenB = b.length;\n var retArr = [];\n\n while (i < lenA || i < lenB) {\n if ((typeof a[i] === 'number' || a[i] instanceof Number) && (typeof b[i] === 'number' || b[i] instanceof Number)) {\n retArr[i] = a[i] - b[i];\n } else {\n retArr[i] = b[i] === undefined ? a[i] : a[i] || b[i];\n }\n\n i += 1;\n }\n\n return retArr;\n }\n\n return 0;\n }\n\n function mul(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a * b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] * b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a * b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function div(a, b) {\n var tOfA = _typeof$1(a);\n\n var tOfB = _typeof$1(b);\n\n var arr;\n\n if (isNumerable(tOfA, a) && isNumerable(tOfB, b)) {\n return a / b;\n }\n\n var i;\n var len;\n\n if ($bm_isInstanceOfArray(a) && isNumerable(tOfB, b)) {\n len = a.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a[i] / b;\n }\n\n return arr;\n }\n\n if (isNumerable(tOfA, a) && $bm_isInstanceOfArray(b)) {\n len = b.length;\n arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = a / b[i];\n }\n\n return arr;\n }\n\n return 0;\n }\n\n function mod(a, b) {\n if (typeof a === 'string') {\n a = parseInt(a, 10);\n }\n\n if (typeof b === 'string') {\n b = parseInt(b, 10);\n }\n\n return a % b;\n }\n\n var $bm_sum = sum;\n var $bm_sub = sub;\n var $bm_mul = mul;\n var $bm_div = div;\n var $bm_mod = mod;\n\n function clamp(num, min, max) {\n if (min > max) {\n var mm = max;\n max = min;\n min = mm;\n }\n\n return Math.min(Math.max(num, min), max);\n }\n\n function radiansToDegrees(val) {\n return val / degToRads;\n }\n\n var radians_to_degrees = radiansToDegrees;\n\n function degreesToRadians(val) {\n return val * degToRads;\n }\n\n var degrees_to_radians = radiansToDegrees;\n var helperLengthArray = [0, 0, 0, 0, 0, 0];\n\n function length(arr1, arr2) {\n if (typeof arr1 === 'number' || arr1 instanceof Number) {\n arr2 = arr2 || 0;\n return Math.abs(arr1 - arr2);\n }\n\n if (!arr2) {\n arr2 = helperLengthArray;\n }\n\n var i;\n var len = Math.min(arr1.length, arr2.length);\n var addedLength = 0;\n\n for (i = 0; i < len; i += 1) {\n addedLength += Math.pow(arr2[i] - arr1[i], 2);\n }\n\n return Math.sqrt(addedLength);\n }\n\n function normalize(vec) {\n return div(vec, length(vec));\n }\n\n function rgbToHsl(val) {\n var r = val[0];\n var g = val[1];\n var b = val[2];\n var max = Math.max(r, g, b);\n var min = Math.min(r, g, b);\n var h;\n var s;\n var l = (max + min) / 2;\n\n if (max === min) {\n h = 0; // achromatic\n\n s = 0; // achromatic\n } else {\n var d = max - min;\n s = l > 0.5 ? d / (2 - max - min) : d / (max + min);\n\n switch (max) {\n case r:\n h = (g - b) / d + (g < b ? 6 : 0);\n break;\n\n case g:\n h = (b - r) / d + 2;\n break;\n\n case b:\n h = (r - g) / d + 4;\n break;\n\n default:\n break;\n }\n\n h /= 6;\n }\n\n return [h, s, l, val[3]];\n }\n\n function hue2rgb(p, q, t) {\n if (t < 0) t += 1;\n if (t > 1) t -= 1;\n if (t < 1 / 6) return p + (q - p) * 6 * t;\n if (t < 1 / 2) return q;\n if (t < 2 / 3) return p + (q - p) * (2 / 3 - t) * 6;\n return p;\n }\n\n function hslToRgb(val) {\n var h = val[0];\n var s = val[1];\n var l = val[2];\n var r;\n var g;\n var b;\n\n if (s === 0) {\n r = l; // achromatic\n\n b = l; // achromatic\n\n g = 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 [r, g, b, val[3]];\n }\n\n function linear(t, tMin, tMax, value1, value2) {\n if (value1 === undefined || value2 === undefined) {\n value1 = tMin;\n value2 = tMax;\n tMin = 0;\n tMax = 1;\n }\n\n if (tMax < tMin) {\n var _tMin = tMax;\n tMax = tMin;\n tMin = _tMin;\n }\n\n if (t <= tMin) {\n return value1;\n }\n\n if (t >= tMax) {\n return value2;\n }\n\n var perc = tMax === tMin ? 0 : (t - tMin) / (tMax - tMin);\n\n if (!value1.length) {\n return value1 + (value2 - value1) * perc;\n }\n\n var i;\n var len = value1.length;\n var arr = createTypedArray('float32', len);\n\n for (i = 0; i < len; i += 1) {\n arr[i] = value1[i] + (value2[i] - value1[i]) * perc;\n }\n\n return arr;\n }\n\n function random(min, max) {\n if (max === undefined) {\n if (min === undefined) {\n min = 0;\n max = 1;\n } else {\n max = min;\n min = undefined;\n }\n }\n\n if (max.length) {\n var i;\n var len = max.length;\n\n if (!min) {\n min = createTypedArray('float32', len);\n }\n\n var arr = createTypedArray('float32', len);\n var rnd = BMMath.random();\n\n for (i = 0; i < len; i += 1) {\n arr[i] = min[i] + rnd * (max[i] - min[i]);\n }\n\n return arr;\n }\n\n if (min === undefined) {\n min = 0;\n }\n\n var rndm = BMMath.random();\n return min + rndm * (max - min);\n }\n\n function createPath(points, inTangents, outTangents, closed) {\n var i;\n var len = points.length;\n var path = shapePool.newElement();\n path.setPathData(!!closed, len);\n var arrPlaceholder = [0, 0];\n var inVertexPoint;\n var outVertexPoint;\n\n for (i = 0; i < len; i += 1) {\n inVertexPoint = inTangents && inTangents[i] ? inTangents[i] : arrPlaceholder;\n outVertexPoint = outTangents && outTangents[i] ? outTangents[i] : arrPlaceholder;\n path.setTripleAt(points[i][0], points[i][1], outVertexPoint[0] + points[i][0], outVertexPoint[1] + points[i][1], inVertexPoint[0] + points[i][0], inVertexPoint[1] + points[i][1], i, true);\n }\n\n return path;\n }\n\n function initiateExpression(elem, data, property) {\n // Bail out if we don't want expressions\n function noOp(_value) {\n return _value;\n }\n\n if (!elem.globalData.renderConfig.runExpressions) {\n return noOp;\n }\n\n var val = data.x;\n var needsVelocity = /velocity(?![\\w\\d])/.test(val);\n\n var _needsRandom = val.indexOf('random') !== -1;\n\n var elemType = elem.data.ty;\n var transform;\n var $bm_transform;\n var content;\n var effect;\n var thisProperty = property;\n thisProperty.valueAtTime = thisProperty.getValueAtTime;\n Object.defineProperty(thisProperty, 'value', {\n get: function get() {\n return thisProperty.v;\n }\n });\n elem.comp.frameDuration = 1 / elem.comp.globalData.frameRate;\n elem.comp.displayStartTime = 0;\n var inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n var outPoint = elem.data.op / elem.comp.globalData.frameRate;\n var width = elem.data.sw ? elem.data.sw : 0;\n var height = elem.data.sh ? elem.data.sh : 0;\n var name = elem.data.nm;\n var loopIn;\n var loop_in;\n var loopOut;\n var loop_out;\n var smooth;\n var toWorld;\n var fromWorld;\n var fromComp;\n var toComp;\n var fromCompToSurface;\n var position;\n var rotation;\n var anchorPoint;\n var scale;\n var thisLayer;\n var thisComp;\n var mask;\n var valueAtTime;\n var velocityAtTime;\n var scoped_bm_rt; // val = val.replace(/(\\\\?\"|')((http)(s)?(:\\/))?\\/.*?(\\\\?\"|')/g, \"\\\"\\\"\"); // deter potential network calls\n\n var expression_function = eval('[function _expression_function(){' + val + ';scoped_bm_rt=$bm_rt}]')[0]; // eslint-disable-line no-eval\n\n var numKeys = property.kf ? data.k.length : 0;\n var active = !this.data || this.data.hd !== true;\n\n var wiggle = function wiggle(freq, amp) {\n var iWiggle;\n var j;\n var lenWiggle = this.pv.length ? this.pv.length : 1;\n var addedAmps = createTypedArray('float32', lenWiggle);\n freq = 5;\n var iterations = Math.floor(time * freq);\n iWiggle = 0;\n j = 0;\n\n while (iWiggle < iterations) {\n // var rnd = BMMath.random();\n for (j = 0; j < lenWiggle; j += 1) {\n addedAmps[j] += -amp + amp * 2 * BMMath.random(); // addedAmps[j] += -amp + amp*2*rnd;\n }\n\n iWiggle += 1;\n } // var rnd2 = BMMath.random();\n\n\n var periods = time * freq;\n var perc = periods - Math.floor(periods);\n var arr = createTypedArray('float32', lenWiggle);\n\n if (lenWiggle > 1) {\n for (j = 0; j < lenWiggle; j += 1) {\n arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp * 2 * BMMath.random()) * perc; // arr[j] = this.pv[j] + addedAmps[j] + (-amp + amp*2*rnd)*perc;\n // arr[i] = this.pv[i] + addedAmp + amp1*perc + amp2*(1-perc);\n }\n\n return arr;\n }\n\n return this.pv + addedAmps[0] + (-amp + amp * 2 * BMMath.random()) * perc;\n }.bind(this);\n\n if (thisProperty.loopIn) {\n loopIn = thisProperty.loopIn.bind(thisProperty);\n loop_in = loopIn;\n }\n\n if (thisProperty.loopOut) {\n loopOut = thisProperty.loopOut.bind(thisProperty);\n loop_out = loopOut;\n }\n\n if (thisProperty.smooth) {\n smooth = thisProperty.smooth.bind(thisProperty);\n }\n\n function loopInDuration(type, duration) {\n return loopIn(type, duration, true);\n }\n\n function loopOutDuration(type, duration) {\n return loopOut(type, duration, true);\n }\n\n if (this.getValueAtTime) {\n valueAtTime = this.getValueAtTime.bind(this);\n }\n\n if (this.getVelocityAtTime) {\n velocityAtTime = this.getVelocityAtTime.bind(this);\n }\n\n var comp = elem.comp.globalData.projectInterface.bind(elem.comp.globalData.projectInterface);\n\n function lookAt(elem1, elem2) {\n var fVec = [elem2[0] - elem1[0], elem2[1] - elem1[1], elem2[2] - elem1[2]];\n var pitch = Math.atan2(fVec[0], Math.sqrt(fVec[1] * fVec[1] + fVec[2] * fVec[2])) / degToRads;\n var yaw = -Math.atan2(fVec[1], fVec[2]) / degToRads;\n return [yaw, pitch, 0];\n }\n\n function easeOut(t, tMin, tMax, val1, val2) {\n return applyEase(easeOutBez, t, tMin, tMax, val1, val2);\n }\n\n function easeIn(t, tMin, tMax, val1, val2) {\n return applyEase(easeInBez, t, tMin, tMax, val1, val2);\n }\n\n function ease(t, tMin, tMax, val1, val2) {\n return applyEase(easeInOutBez, t, tMin, tMax, val1, val2);\n }\n\n function applyEase(fn, t, tMin, tMax, val1, val2) {\n if (val1 === undefined) {\n val1 = tMin;\n val2 = tMax;\n } else {\n t = (t - tMin) / (tMax - tMin);\n }\n\n if (t > 1) {\n t = 1;\n } else if (t < 0) {\n t = 0;\n }\n\n var mult = fn(t);\n\n if ($bm_isInstanceOfArray(val1)) {\n var iKey;\n var lenKey = val1.length;\n var arr = createTypedArray('float32', lenKey);\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n arr[iKey] = (val2[iKey] - val1[iKey]) * mult + val1[iKey];\n }\n\n return arr;\n }\n\n return (val2 - val1) * mult + val1;\n }\n\n function nearestKey(time) {\n var iKey;\n var lenKey = data.k.length;\n var index;\n var keyTime;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n index = 0;\n keyTime = 0;\n } else {\n index = -1;\n time *= elem.comp.globalData.frameRate;\n\n if (time < data.k[0].t) {\n index = 1;\n keyTime = data.k[0].t;\n } else {\n for (iKey = 0; iKey < lenKey - 1; iKey += 1) {\n if (time === data.k[iKey].t) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n break;\n } else if (time > data.k[iKey].t && time < data.k[iKey + 1].t) {\n if (time - data.k[iKey].t > data.k[iKey + 1].t - time) {\n index = iKey + 2;\n keyTime = data.k[iKey + 1].t;\n } else {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n\n break;\n }\n }\n\n if (index === -1) {\n index = iKey + 1;\n keyTime = data.k[iKey].t;\n }\n }\n }\n\n var obKey = {};\n obKey.index = index;\n obKey.time = keyTime / elem.comp.globalData.frameRate;\n return obKey;\n }\n\n function key(ind) {\n var obKey;\n var iKey;\n var lenKey;\n\n if (!data.k.length || typeof data.k[0] === 'number') {\n throw new Error('The property has no keyframe at index ' + ind);\n }\n\n ind -= 1;\n obKey = {\n time: data.k[ind].t / elem.comp.globalData.frameRate,\n value: []\n };\n var arr = Object.prototype.hasOwnProperty.call(data.k[ind], 's') ? data.k[ind].s : data.k[ind - 1].e;\n lenKey = arr.length;\n\n for (iKey = 0; iKey < lenKey; iKey += 1) {\n obKey[iKey] = arr[iKey];\n obKey.value[iKey] = arr[iKey];\n }\n\n return obKey;\n }\n\n function framesToTime(fr, fps) {\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return fr / fps;\n }\n\n function timeToFrames(t, fps) {\n if (!t && t !== 0) {\n t = time;\n }\n\n if (!fps) {\n fps = elem.comp.globalData.frameRate;\n }\n\n return t * fps;\n }\n\n function seedRandom(seed) {\n BMMath.seedrandom(randSeed + seed);\n }\n\n function sourceRectAtTime() {\n return elem.sourceRectAtTime();\n }\n\n function substring(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substring(init);\n }\n\n return value.substring(init, end);\n }\n\n return '';\n }\n\n function substr(init, end) {\n if (typeof value === 'string') {\n if (end === undefined) {\n return value.substr(init);\n }\n\n return value.substr(init, end);\n }\n\n return '';\n }\n\n function posterizeTime(framesPerSecond) {\n time = framesPerSecond === 0 ? 0 : Math.floor(time * framesPerSecond) / framesPerSecond;\n value = valueAtTime(time);\n }\n\n var time;\n var velocity;\n var value;\n var text;\n var textIndex;\n var textTotal;\n var selectorValue;\n var index = elem.data.ind;\n var hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n var parent;\n var randSeed = Math.floor(Math.random() * 1000000);\n var globalData = elem.globalData;\n\n function executeExpression(_value) {\n // globalData.pushExpression();\n value = _value;\n\n if (this.frameExpressionId === elem.globalData.frameId && this.propType !== 'textSelector') {\n return value;\n }\n\n if (this.propType === 'textSelector') {\n textIndex = this.textIndex;\n textTotal = this.textTotal;\n selectorValue = this.selectorValue;\n }\n\n if (!thisLayer) {\n text = elem.layerInterface.text;\n thisLayer = elem.layerInterface;\n thisComp = elem.comp.compInterface;\n toWorld = thisLayer.toWorld.bind(thisLayer);\n fromWorld = thisLayer.fromWorld.bind(thisLayer);\n fromComp = thisLayer.fromComp.bind(thisLayer);\n toComp = thisLayer.toComp.bind(thisLayer);\n mask = thisLayer.mask ? thisLayer.mask.bind(thisLayer) : null;\n fromCompToSurface = fromComp;\n }\n\n if (!transform) {\n transform = elem.layerInterface('ADBE Transform Group');\n $bm_transform = transform;\n\n if (transform) {\n anchorPoint = transform.anchorPoint;\n /* position = transform.position;\r\n rotation = transform.rotation;\r\n scale = transform.scale; */\n }\n }\n\n if (elemType === 4 && !content) {\n content = thisLayer('ADBE Root Vectors Group');\n }\n\n if (!effect) {\n effect = thisLayer(4);\n }\n\n hasParent = !!(elem.hierarchy && elem.hierarchy.length);\n\n if (hasParent && !parent) {\n parent = elem.hierarchy[0].layerInterface;\n }\n\n time = this.comp.renderedFrame / this.comp.globalData.frameRate;\n\n if (_needsRandom) {\n seedRandom(randSeed + time);\n }\n\n if (needsVelocity) {\n velocity = velocityAtTime(time);\n }\n\n expression_function();\n this.frameExpressionId = elem.globalData.frameId; // TODO: Check if it's possible to return on ShapeInterface the .v value\n // Changed this to a ternary operation because Rollup failed compiling it correctly\n\n scoped_bm_rt = scoped_bm_rt.propType === propTypes.SHAPE ? scoped_bm_rt.v : scoped_bm_rt;\n return scoped_bm_rt;\n } // Bundlers will see these as dead code and unless we reference them\n\n\n executeExpression.__preventDeadCodeRemoval = [$bm_transform, anchorPoint, time, velocity, inPoint, outPoint, width, height, name, loop_in, loop_out, smooth, toComp, fromCompToSurface, toWorld, fromWorld, mask, position, rotation, scale, thisComp, numKeys, active, wiggle, loopInDuration, loopOutDuration, comp, lookAt, easeOut, easeIn, ease, nearestKey, key, text, textIndex, textTotal, selectorValue, framesToTime, timeToFrames, sourceRectAtTime, substring, substr, posterizeTime, index, globalData];\n return executeExpression;\n }\n\n ob.initiateExpression = initiateExpression;\n ob.__preventDeadCodeRemoval = [window, document, XMLHttpRequest, fetch, frames, $bm_neg, add, $bm_sum, $bm_sub, $bm_mul, $bm_div, $bm_mod, clamp, radians_to_degrees, degreesToRadians, degrees_to_radians, normalize, rgbToHsl, hslToRgb, linear, random, createPath, _lottieGlobal];\n ob.resetFrame = resetFrame;\n return ob;\n }();\n\n var Expressions = function () {\n var ob = {};\n ob.initExpressions = initExpressions;\n ob.resetFrame = ExpressionManager.resetFrame;\n\n function initExpressions(animation) {\n var stackCount = 0;\n var registers = [];\n\n function pushExpression() {\n stackCount += 1;\n }\n\n function popExpression() {\n stackCount -= 1;\n\n if (stackCount === 0) {\n releaseInstances();\n }\n }\n\n function registerExpressionProperty(expression) {\n if (registers.indexOf(expression) === -1) {\n registers.push(expression);\n }\n }\n\n function releaseInstances() {\n var i;\n var len = registers.length;\n\n for (i = 0; i < len; i += 1) {\n registers[i].release();\n }\n\n registers.length = 0;\n }\n\n animation.renderer.compInterface = CompExpressionInterface(animation.renderer);\n animation.renderer.globalData.projectInterface.registerComposition(animation.renderer);\n animation.renderer.globalData.pushExpression = pushExpression;\n animation.renderer.globalData.popExpression = popExpression;\n animation.renderer.globalData.registerExpressionProperty = registerExpressionProperty;\n }\n\n return ob;\n }();\n\n var MaskManagerInterface = function () {\n function MaskInterface(mask, data) {\n this._mask = mask;\n this._data = data;\n }\n\n Object.defineProperty(MaskInterface.prototype, 'maskPath', {\n get: function get() {\n if (this._mask.prop.k) {\n this._mask.prop.getValue();\n }\n\n return this._mask.prop;\n }\n });\n Object.defineProperty(MaskInterface.prototype, 'maskOpacity', {\n get: function get() {\n if (this._mask.op.k) {\n this._mask.op.getValue();\n }\n\n return this._mask.op.v * 100;\n }\n });\n\n var MaskManager = function MaskManager(maskManager) {\n var _masksInterfaces = createSizedArray(maskManager.viewData.length);\n\n var i;\n var len = maskManager.viewData.length;\n\n for (i = 0; i < len; i += 1) {\n _masksInterfaces[i] = new MaskInterface(maskManager.viewData[i], maskManager.masksProperties[i]);\n }\n\n var maskFunction = function maskFunction(name) {\n i = 0;\n\n while (i < len) {\n if (maskManager.masksProperties[i].nm === name) {\n return _masksInterfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n return maskFunction;\n };\n\n return MaskManager;\n }();\n\n var ExpressionPropertyInterface = function () {\n var defaultUnidimensionalValue = {\n pv: 0,\n v: 0,\n mult: 1\n };\n var defaultMultidimensionalValue = {\n pv: [0, 0, 0],\n v: [0, 0, 0],\n mult: 1\n };\n\n function completeProperty(expressionValue, property, type) {\n Object.defineProperty(expressionValue, 'velocity', {\n get: function get() {\n return property.getVelocityAtTime(property.comp.currentFrame);\n }\n });\n expressionValue.numKeys = property.keyframes ? property.keyframes.length : 0;\n\n expressionValue.key = function (pos) {\n if (!expressionValue.numKeys) {\n return 0;\n }\n\n var value = '';\n\n if ('s' in property.keyframes[pos - 1]) {\n value = property.keyframes[pos - 1].s;\n } else if ('e' in property.keyframes[pos - 2]) {\n value = property.keyframes[pos - 2].e;\n } else {\n value = property.keyframes[pos - 2].s;\n }\n\n var valueProp = type === 'unidimensional' ? new Number(value) : Object.assign({}, value); // eslint-disable-line no-new-wrappers\n\n valueProp.time = property.keyframes[pos - 1].t / property.elem.comp.globalData.frameRate;\n valueProp.value = type === 'unidimensional' ? value[0] : value;\n return valueProp;\n };\n\n expressionValue.valueAtTime = property.getValueAtTime;\n expressionValue.speedAtTime = property.getSpeedAtTime;\n expressionValue.velocityAtTime = property.getVelocityAtTime;\n expressionValue.propertyGroup = property.propertyGroup;\n }\n\n function UnidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultUnidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var val = property.pv * mult;\n var expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n val = property.v * mult;\n\n if (expressionValue.value !== val) {\n expressionValue = new Number(val); // eslint-disable-line no-new-wrappers\n\n expressionValue.value = val;\n completeProperty(expressionValue, property, 'unidimensional');\n }\n\n return expressionValue;\n };\n }\n\n function MultidimensionalPropertyInterface(property) {\n if (!property || !('pv' in property)) {\n property = defaultMultidimensionalValue;\n }\n\n var mult = 1 / property.mult;\n var len = property.data && property.data.l || property.pv.length;\n var expressionValue = createTypedArray('float32', len);\n var arrValue = createTypedArray('float32', len);\n expressionValue.value = arrValue;\n completeProperty(expressionValue, property, 'multidimensional');\n return function () {\n if (property.k) {\n property.getValue();\n }\n\n for (var i = 0; i < len; i += 1) {\n arrValue[i] = property.v[i] * mult;\n expressionValue[i] = arrValue[i];\n }\n\n return expressionValue;\n };\n } // TODO: try to avoid using this getter\n\n\n function defaultGetter() {\n return defaultUnidimensionalValue;\n }\n\n return function (property) {\n if (!property) {\n return defaultGetter;\n }\n\n if (property.propType === 'unidimensional') {\n return UnidimensionalPropertyInterface(property);\n }\n\n return MultidimensionalPropertyInterface(property);\n };\n }();\n\n var TransformExpressionInterface = function () {\n return function (transform) {\n function _thisFunction(name) {\n switch (name) {\n case 'scale':\n case 'Scale':\n case 'ADBE Scale':\n case 6:\n return _thisFunction.scale;\n\n case 'rotation':\n case 'Rotation':\n case 'ADBE Rotation':\n case 'ADBE Rotate Z':\n case 10:\n return _thisFunction.rotation;\n\n case 'ADBE Rotate X':\n return _thisFunction.xRotation;\n\n case 'ADBE Rotate Y':\n return _thisFunction.yRotation;\n\n case 'position':\n case 'Position':\n case 'ADBE Position':\n case 2:\n return _thisFunction.position;\n\n case 'ADBE Position_0':\n return _thisFunction.xPosition;\n\n case 'ADBE Position_1':\n return _thisFunction.yPosition;\n\n case 'ADBE Position_2':\n return _thisFunction.zPosition;\n\n case 'anchorPoint':\n case 'AnchorPoint':\n case 'Anchor Point':\n case 'ADBE AnchorPoint':\n case 1:\n return _thisFunction.anchorPoint;\n\n case 'opacity':\n case 'Opacity':\n case 11:\n return _thisFunction.opacity;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisFunction, 'rotation', {\n get: ExpressionPropertyInterface(transform.r || transform.rz)\n });\n Object.defineProperty(_thisFunction, 'zRotation', {\n get: ExpressionPropertyInterface(transform.rz || transform.r)\n });\n Object.defineProperty(_thisFunction, 'xRotation', {\n get: ExpressionPropertyInterface(transform.rx)\n });\n Object.defineProperty(_thisFunction, 'yRotation', {\n get: ExpressionPropertyInterface(transform.ry)\n });\n Object.defineProperty(_thisFunction, 'scale', {\n get: ExpressionPropertyInterface(transform.s)\n });\n\n var _px;\n\n var _py;\n\n var _pz;\n\n var _transformFactory;\n\n if (transform.p) {\n _transformFactory = ExpressionPropertyInterface(transform.p);\n } else {\n _px = ExpressionPropertyInterface(transform.px);\n _py = ExpressionPropertyInterface(transform.py);\n\n if (transform.pz) {\n _pz = ExpressionPropertyInterface(transform.pz);\n }\n }\n\n Object.defineProperty(_thisFunction, 'position', {\n get: function get() {\n if (transform.p) {\n return _transformFactory();\n }\n\n return [_px(), _py(), _pz ? _pz() : 0];\n }\n });\n Object.defineProperty(_thisFunction, 'xPosition', {\n get: ExpressionPropertyInterface(transform.px)\n });\n Object.defineProperty(_thisFunction, 'yPosition', {\n get: ExpressionPropertyInterface(transform.py)\n });\n Object.defineProperty(_thisFunction, 'zPosition', {\n get: ExpressionPropertyInterface(transform.pz)\n });\n Object.defineProperty(_thisFunction, 'anchorPoint', {\n get: ExpressionPropertyInterface(transform.a)\n });\n Object.defineProperty(_thisFunction, 'opacity', {\n get: ExpressionPropertyInterface(transform.o)\n });\n Object.defineProperty(_thisFunction, 'skew', {\n get: ExpressionPropertyInterface(transform.sk)\n });\n Object.defineProperty(_thisFunction, 'skewAxis', {\n get: ExpressionPropertyInterface(transform.sa)\n });\n Object.defineProperty(_thisFunction, 'orientation', {\n get: ExpressionPropertyInterface(transform.or)\n });\n return _thisFunction;\n };\n }();\n\n var LayerExpressionInterface = function () {\n function getMatrix(time) {\n var toWorldMat = new Matrix();\n\n if (time !== undefined) {\n var propMatrix = this._elem.finalTransform.mProp.getValueAtTime(time);\n\n propMatrix.clone(toWorldMat);\n } else {\n var transformMat = this._elem.finalTransform.mProp;\n transformMat.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat;\n }\n\n function toWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.applyPoint(toWorldMat, arr);\n }\n\n function toWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.applyPoint(toWorldMat, arr);\n }\n\n function fromWorldVec(arr, time) {\n var toWorldMat = this.getMatrix(time);\n toWorldMat.props[12] = 0;\n toWorldMat.props[13] = 0;\n toWorldMat.props[14] = 0;\n return this.invertPoint(toWorldMat, arr);\n }\n\n function fromWorld(arr, time) {\n var toWorldMat = this.getMatrix(time);\n return this.invertPoint(toWorldMat, arr);\n }\n\n function applyPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.applyToPointArray(arr[0], arr[1], arr[2] || 0);\n }\n\n function invertPoint(matrix, arr) {\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(matrix);\n }\n }\n\n return matrix.inversePoint(arr);\n }\n\n function fromComp(arr) {\n var toWorldMat = new Matrix();\n toWorldMat.reset();\n\n this._elem.finalTransform.mProp.applyToMatrix(toWorldMat);\n\n if (this._elem.hierarchy && this._elem.hierarchy.length) {\n var i;\n var len = this._elem.hierarchy.length;\n\n for (i = 0; i < len; i += 1) {\n this._elem.hierarchy[i].finalTransform.mProp.applyToMatrix(toWorldMat);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n return toWorldMat.inversePoint(arr);\n }\n\n function sampleImage() {\n return [1, 1, 1, 1];\n }\n\n return function (elem) {\n var transformInterface;\n\n function _registerMaskInterface(maskManager) {\n _thisLayerFunction.mask = new MaskManagerInterface(maskManager, elem);\n }\n\n function _registerEffectsInterface(effects) {\n _thisLayerFunction.effect = effects;\n }\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Root Vectors Group':\n case 'Contents':\n case 2:\n return _thisLayerFunction.shapeInterface;\n\n case 1:\n case 6:\n case 'Transform':\n case 'transform':\n case 'ADBE Transform Group':\n return transformInterface;\n\n case 4:\n case 'ADBE Effect Parade':\n case 'effects':\n case 'Effects':\n return _thisLayerFunction.effect;\n\n case 'ADBE Text Properties':\n return _thisLayerFunction.textInterface;\n\n default:\n return null;\n }\n }\n\n _thisLayerFunction.getMatrix = getMatrix;\n _thisLayerFunction.invertPoint = invertPoint;\n _thisLayerFunction.applyPoint = applyPoint;\n _thisLayerFunction.toWorld = toWorld;\n _thisLayerFunction.toWorldVec = toWorldVec;\n _thisLayerFunction.fromWorld = fromWorld;\n _thisLayerFunction.fromWorldVec = fromWorldVec;\n _thisLayerFunction.toComp = toWorld;\n _thisLayerFunction.fromComp = fromComp;\n _thisLayerFunction.sampleImage = sampleImage;\n _thisLayerFunction.sourceRectAtTime = elem.sourceRectAtTime.bind(elem);\n _thisLayerFunction._elem = elem;\n transformInterface = TransformExpressionInterface(elem.finalTransform.mProp);\n var anchorPointDescriptor = getDescriptor(transformInterface, 'anchorPoint');\n Object.defineProperties(_thisLayerFunction, {\n hasParent: {\n get: function get() {\n return elem.hierarchy.length;\n }\n },\n parent: {\n get: function get() {\n return elem.hierarchy[0].layerInterface;\n }\n },\n rotation: getDescriptor(transformInterface, 'rotation'),\n scale: getDescriptor(transformInterface, 'scale'),\n position: getDescriptor(transformInterface, 'position'),\n opacity: getDescriptor(transformInterface, 'opacity'),\n anchorPoint: anchorPointDescriptor,\n anchor_point: anchorPointDescriptor,\n transform: {\n get: function get() {\n return transformInterface;\n }\n },\n active: {\n get: function get() {\n return elem.isInRange;\n }\n }\n });\n _thisLayerFunction.startTime = elem.data.st;\n _thisLayerFunction.index = elem.data.ind;\n _thisLayerFunction.source = elem.data.refId;\n _thisLayerFunction.height = elem.data.ty === 0 ? elem.data.h : 100;\n _thisLayerFunction.width = elem.data.ty === 0 ? elem.data.w : 100;\n _thisLayerFunction.inPoint = elem.data.ip / elem.comp.globalData.frameRate;\n _thisLayerFunction.outPoint = elem.data.op / elem.comp.globalData.frameRate;\n _thisLayerFunction._name = elem.data.nm;\n _thisLayerFunction.registerMaskInterface = _registerMaskInterface;\n _thisLayerFunction.registerEffectsInterface = _registerEffectsInterface;\n return _thisLayerFunction;\n };\n }();\n\n var propertyGroupFactory = function () {\n return function (interfaceFunction, parentPropertyGroup) {\n return function (val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return parentPropertyGroup(val - 1);\n };\n };\n }();\n\n var PropertyInterface = function () {\n return function (propertyName, propertyGroup) {\n var interfaceFunction = {\n _name: propertyName\n };\n\n function _propertyGroup(val) {\n val = val === undefined ? 1 : val;\n\n if (val <= 0) {\n return interfaceFunction;\n }\n\n return propertyGroup(val - 1);\n }\n\n return _propertyGroup;\n };\n }();\n\n var EffectsExpressionInterface = function () {\n var ob = {\n createEffectsInterface: createEffectsInterface\n };\n\n function createEffectsInterface(elem, propertyGroup) {\n if (elem.effectsManager) {\n var effectElements = [];\n var effectsData = elem.data.ef;\n var i;\n var len = elem.effectsManager.effectElements.length;\n\n for (i = 0; i < len; i += 1) {\n effectElements.push(createGroupInterface(effectsData[i], elem.effectsManager.effectElements[i], propertyGroup, elem));\n }\n\n var effects = elem.data.ef || [];\n\n var groupInterface = function groupInterface(name) {\n i = 0;\n len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n return effectElements[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n Object.defineProperty(groupInterface, 'numProperties', {\n get: function get() {\n return effects.length;\n }\n });\n return groupInterface;\n }\n\n return null;\n }\n\n function createGroupInterface(data, elements, propertyGroup, elem) {\n function groupInterface(name) {\n var effects = data.ef;\n var i = 0;\n var len = effects.length;\n\n while (i < len) {\n if (name === effects[i].nm || name === effects[i].mn || name === effects[i].ix) {\n if (effects[i].ty === 5) {\n return effectElements[i];\n }\n\n return effectElements[i]();\n }\n\n i += 1;\n }\n\n throw new Error();\n }\n\n var _propertyGroup = propertyGroupFactory(groupInterface, propertyGroup);\n\n var effectElements = [];\n var i;\n var len = data.ef.length;\n\n for (i = 0; i < len; i += 1) {\n if (data.ef[i].ty === 5) {\n effectElements.push(createGroupInterface(data.ef[i], elements.effectElements[i], elements.effectElements[i].propertyGroup, elem));\n } else {\n effectElements.push(createValueInterface(elements.effectElements[i], data.ef[i].ty, elem, _propertyGroup));\n }\n }\n\n if (data.mn === 'ADBE Color Control') {\n Object.defineProperty(groupInterface, 'color', {\n get: function get() {\n return effectElements[0]();\n }\n });\n }\n\n Object.defineProperties(groupInterface, {\n numProperties: {\n get: function get() {\n return data.np;\n }\n },\n _name: {\n value: data.nm\n },\n propertyGroup: {\n value: _propertyGroup\n }\n });\n groupInterface.enabled = data.en !== 0;\n groupInterface.active = groupInterface.enabled;\n return groupInterface;\n }\n\n function createValueInterface(element, type, elem, propertyGroup) {\n var expressionProperty = ExpressionPropertyInterface(element.p);\n\n function interfaceFunction() {\n if (type === 10) {\n return elem.comp.compInterface(element.p.v);\n }\n\n return expressionProperty();\n }\n\n if (element.p.setGroupProperty) {\n element.p.setGroupProperty(PropertyInterface('', propertyGroup));\n }\n\n return interfaceFunction;\n }\n\n return ob;\n }();\n\n var ShapePathInterface = function () {\n return function pathInterfaceFactory(shape, view, propertyGroup) {\n var prop = view.sh;\n\n function interfaceFunction(val) {\n if (val === 'Shape' || val === 'shape' || val === 'Path' || val === 'path' || val === 'ADBE Vector Shape' || val === 2) {\n return interfaceFunction.path;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n prop.setGroupProperty(PropertyInterface('Path', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n path: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n shape: {\n get: function get() {\n if (prop.k) {\n prop.getValue();\n }\n\n return prop;\n }\n },\n _name: {\n value: shape.nm\n },\n ix: {\n value: shape.ix\n },\n propertyIndex: {\n value: shape.ix\n },\n mn: {\n value: shape.mn\n },\n propertyGroup: {\n value: propertyGroup\n }\n });\n return interfaceFunction;\n };\n }();\n\n var ShapeExpressionInterface = function () {\n function iterateElements(shapes, view, propertyGroup) {\n var arr = [];\n var i;\n var len = shapes ? shapes.length : 0;\n\n for (i = 0; i < len; i += 1) {\n if (shapes[i].ty === 'gr') {\n arr.push(groupInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'fl') {\n arr.push(fillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'st') {\n arr.push(strokeInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tm') {\n arr.push(trimInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'tr') {// arr.push(transformInterfaceFactory(shapes[i],view[i],propertyGroup));\n } else if (shapes[i].ty === 'el') {\n arr.push(ellipseInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sr') {\n arr.push(starInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'sh') {\n arr.push(ShapePathInterface(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rc') {\n arr.push(rectInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rd') {\n arr.push(roundedInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'rp') {\n arr.push(repeaterInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else if (shapes[i].ty === 'gf') {\n arr.push(gradientFillInterfaceFactory(shapes[i], view[i], propertyGroup));\n } else {\n arr.push(defaultInterfaceFactory(shapes[i], view[i], propertyGroup));\n }\n }\n\n return arr;\n }\n\n function contentsInterfaceFactory(shape, view, propertyGroup) {\n var interfaces;\n\n var interfaceFunction = function _interfaceFunction(value) {\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value || interfaces[i].mn === value || interfaces[i].propertyIndex === value || interfaces[i].ix === value || interfaces[i].ind === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n if (typeof value === 'number') {\n return interfaces[value - 1];\n }\n\n return null;\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n interfaces = iterateElements(shape.it, view.it, interfaceFunction.propertyGroup);\n interfaceFunction.numProperties = interfaces.length;\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.transform = transformInterface;\n interfaceFunction.propertyIndex = shape.cix;\n interfaceFunction._name = shape.nm;\n return interfaceFunction;\n }\n\n function groupInterfaceFactory(shape, view, propertyGroup) {\n var interfaceFunction = function _interfaceFunction(value) {\n switch (value) {\n case 'ADBE Vectors Group':\n case 'Contents':\n case 2:\n return interfaceFunction.content;\n // Not necessary for now. Keeping them here in case a new case appears\n // case 'ADBE Vector Transform Group':\n // case 3:\n\n default:\n return interfaceFunction.transform;\n }\n };\n\n interfaceFunction.propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n var content = contentsInterfaceFactory(shape, view, interfaceFunction.propertyGroup);\n var transformInterface = transformInterfaceFactory(shape.it[shape.it.length - 1], view.it[view.it.length - 1], interfaceFunction.propertyGroup);\n interfaceFunction.content = content;\n interfaceFunction.transform = transformInterface;\n Object.defineProperty(interfaceFunction, '_name', {\n get: function get() {\n return shape.nm;\n }\n }); // interfaceFunction.content = interfaceFunction;\n\n interfaceFunction.numProperties = shape.np;\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.nm = shape.nm;\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function fillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function gradientFillInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === 'Start Point' || val === 'start point') {\n return interfaceFunction.startPoint;\n }\n\n if (val === 'End Point' || val === 'end point') {\n return interfaceFunction.endPoint;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n startPoint: {\n get: ExpressionPropertyInterface(view.s)\n },\n endPoint: {\n get: ExpressionPropertyInterface(view.e)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n type: {\n get: function get() {\n return 'a';\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.s.setGroupProperty(PropertyInterface('Start Point', propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End Point', propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', propertyGroup));\n return interfaceFunction;\n }\n\n function defaultInterfaceFactory() {\n function interfaceFunction() {\n return null;\n }\n\n return interfaceFunction;\n }\n\n function strokeInterfaceFactory(shape, view, propertyGroup) {\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var _dashPropertyGroup = propertyGroupFactory(dashOb, _propertyGroup);\n\n function addPropertyToDashOb(i) {\n Object.defineProperty(dashOb, shape.d[i].nm, {\n get: ExpressionPropertyInterface(view.d.dataProps[i].p)\n });\n }\n\n var i;\n var len = shape.d ? shape.d.length : 0;\n var dashOb = {};\n\n for (i = 0; i < len; i += 1) {\n addPropertyToDashOb(i);\n view.d.dataProps[i].p.setGroupProperty(_dashPropertyGroup);\n }\n\n function interfaceFunction(val) {\n if (val === 'Color' || val === 'color') {\n return interfaceFunction.color;\n }\n\n if (val === 'Opacity' || val === 'opacity') {\n return interfaceFunction.opacity;\n }\n\n if (val === 'Stroke Width' || val === 'stroke width') {\n return interfaceFunction.strokeWidth;\n }\n\n return null;\n }\n\n Object.defineProperties(interfaceFunction, {\n color: {\n get: ExpressionPropertyInterface(view.c)\n },\n opacity: {\n get: ExpressionPropertyInterface(view.o)\n },\n strokeWidth: {\n get: ExpressionPropertyInterface(view.w)\n },\n dash: {\n get: function get() {\n return dashOb;\n }\n },\n _name: {\n value: shape.nm\n },\n mn: {\n value: shape.mn\n }\n });\n view.c.setGroupProperty(PropertyInterface('Color', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.w.setGroupProperty(PropertyInterface('Stroke Width', _propertyGroup));\n return interfaceFunction;\n }\n\n function trimInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(val) {\n if (val === shape.e.ix || val === 'End' || val === 'end') {\n return interfaceFunction.end;\n }\n\n if (val === shape.s.ix) {\n return interfaceFunction.start;\n }\n\n if (val === shape.o.ix) {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n view.s.setGroupProperty(PropertyInterface('Start', _propertyGroup));\n view.e.setGroupProperty(PropertyInterface('End', _propertyGroup));\n view.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n interfaceFunction.propertyIndex = shape.ix;\n interfaceFunction.propertyGroup = propertyGroup;\n Object.defineProperties(interfaceFunction, {\n start: {\n get: ExpressionPropertyInterface(view.s)\n },\n end: {\n get: ExpressionPropertyInterface(view.e)\n },\n offset: {\n get: ExpressionPropertyInterface(view.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function transformInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.a.ix === value || value === 'Anchor Point') {\n return interfaceFunction.anchorPoint;\n }\n\n if (shape.o.ix === value || value === 'Opacity') {\n return interfaceFunction.opacity;\n }\n\n if (shape.p.ix === value || value === 'Position') {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value || value === 'Rotation' || value === 'ADBE Vector Rotation') {\n return interfaceFunction.rotation;\n }\n\n if (shape.s.ix === value || value === 'Scale') {\n return interfaceFunction.scale;\n }\n\n if (shape.sk && shape.sk.ix === value || value === 'Skew') {\n return interfaceFunction.skew;\n }\n\n if (shape.sa && shape.sa.ix === value || value === 'Skew Axis') {\n return interfaceFunction.skewAxis;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n view.transform.mProps.o.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n view.transform.mProps.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n view.transform.mProps.a.setGroupProperty(PropertyInterface('Anchor Point', _propertyGroup));\n view.transform.mProps.s.setGroupProperty(PropertyInterface('Scale', _propertyGroup));\n view.transform.mProps.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (view.transform.mProps.sk) {\n view.transform.mProps.sk.setGroupProperty(PropertyInterface('Skew', _propertyGroup));\n view.transform.mProps.sa.setGroupProperty(PropertyInterface('Skew Angle', _propertyGroup));\n }\n\n view.transform.op.setGroupProperty(PropertyInterface('Opacity', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n opacity: {\n get: ExpressionPropertyInterface(view.transform.mProps.o)\n },\n position: {\n get: ExpressionPropertyInterface(view.transform.mProps.p)\n },\n anchorPoint: {\n get: ExpressionPropertyInterface(view.transform.mProps.a)\n },\n scale: {\n get: ExpressionPropertyInterface(view.transform.mProps.s)\n },\n rotation: {\n get: ExpressionPropertyInterface(view.transform.mProps.r)\n },\n skew: {\n get: ExpressionPropertyInterface(view.transform.mProps.sk)\n },\n skewAxis: {\n get: ExpressionPropertyInterface(view.transform.mProps.sa)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.ty = 'tr';\n interfaceFunction.mn = shape.mn;\n interfaceFunction.propertyGroup = propertyGroup;\n return interfaceFunction;\n }\n\n function ellipseInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.s.ix === value) {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n interfaceFunction.propertyIndex = shape.ix;\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function starInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.rotation;\n }\n\n if (shape.pt.ix === value) {\n return interfaceFunction.points;\n }\n\n if (shape.or.ix === value || value === 'ADBE Vector Star Outer Radius') {\n return interfaceFunction.outerRadius;\n }\n\n if (shape.os.ix === value) {\n return interfaceFunction.outerRoundness;\n }\n\n if (shape.ir && (shape.ir.ix === value || value === 'ADBE Vector Star Inner Radius')) {\n return interfaceFunction.innerRadius;\n }\n\n if (shape.is && shape.is.ix === value) {\n return interfaceFunction.innerRoundness;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.or.setGroupProperty(PropertyInterface('Outer Radius', _propertyGroup));\n prop.os.setGroupProperty(PropertyInterface('Outer Roundness', _propertyGroup));\n prop.pt.setGroupProperty(PropertyInterface('Points', _propertyGroup));\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n\n if (shape.ir) {\n prop.ir.setGroupProperty(PropertyInterface('Inner Radius', _propertyGroup));\n prop.is.setGroupProperty(PropertyInterface('Inner Roundness', _propertyGroup));\n }\n\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n rotation: {\n get: ExpressionPropertyInterface(prop.r)\n },\n points: {\n get: ExpressionPropertyInterface(prop.pt)\n },\n outerRadius: {\n get: ExpressionPropertyInterface(prop.or)\n },\n outerRoundness: {\n get: ExpressionPropertyInterface(prop.os)\n },\n innerRadius: {\n get: ExpressionPropertyInterface(prop.ir)\n },\n innerRoundness: {\n get: ExpressionPropertyInterface(prop.is)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function rectInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.p.ix === value) {\n return interfaceFunction.position;\n }\n\n if (shape.r.ix === value) {\n return interfaceFunction.roundness;\n }\n\n if (shape.s.ix === value || value === 'Size' || value === 'ADBE Vector Rect Size') {\n return interfaceFunction.size;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view.sh.ty === 'tm' ? view.sh.prop : view.sh;\n interfaceFunction.propertyIndex = shape.ix;\n prop.p.setGroupProperty(PropertyInterface('Position', _propertyGroup));\n prop.s.setGroupProperty(PropertyInterface('Size', _propertyGroup));\n prop.r.setGroupProperty(PropertyInterface('Rotation', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n position: {\n get: ExpressionPropertyInterface(prop.p)\n },\n roundness: {\n get: ExpressionPropertyInterface(prop.r)\n },\n size: {\n get: ExpressionPropertyInterface(prop.s)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function roundedInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.r.ix === value || value === 'Round Corners 1') {\n return interfaceFunction.radius;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.rd.setGroupProperty(PropertyInterface('Radius', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n radius: {\n get: ExpressionPropertyInterface(prop.rd)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n function repeaterInterfaceFactory(shape, view, propertyGroup) {\n function interfaceFunction(value) {\n if (shape.c.ix === value || value === 'Copies') {\n return interfaceFunction.copies;\n }\n\n if (shape.o.ix === value || value === 'Offset') {\n return interfaceFunction.offset;\n }\n\n return null;\n }\n\n var _propertyGroup = propertyGroupFactory(interfaceFunction, propertyGroup);\n\n var prop = view;\n interfaceFunction.propertyIndex = shape.ix;\n prop.c.setGroupProperty(PropertyInterface('Copies', _propertyGroup));\n prop.o.setGroupProperty(PropertyInterface('Offset', _propertyGroup));\n Object.defineProperties(interfaceFunction, {\n copies: {\n get: ExpressionPropertyInterface(prop.c)\n },\n offset: {\n get: ExpressionPropertyInterface(prop.o)\n },\n _name: {\n value: shape.nm\n }\n });\n interfaceFunction.mn = shape.mn;\n return interfaceFunction;\n }\n\n return function (shapes, view, propertyGroup) {\n var interfaces;\n\n function _interfaceFunction(value) {\n if (typeof value === 'number') {\n value = value === undefined ? 1 : value;\n\n if (value === 0) {\n return propertyGroup;\n }\n\n return interfaces[value - 1];\n }\n\n var i = 0;\n var len = interfaces.length;\n\n while (i < len) {\n if (interfaces[i]._name === value) {\n return interfaces[i];\n }\n\n i += 1;\n }\n\n return null;\n }\n\n function parentGroupWrapper() {\n return propertyGroup;\n }\n\n _interfaceFunction.propertyGroup = propertyGroupFactory(_interfaceFunction, parentGroupWrapper);\n interfaces = iterateElements(shapes, view, _interfaceFunction.propertyGroup);\n _interfaceFunction.numProperties = interfaces.length;\n _interfaceFunction._name = 'Contents';\n return _interfaceFunction;\n };\n }();\n\n var TextExpressionInterface = function () {\n return function (elem) {\n var _sourceText;\n\n function _thisLayerFunction(name) {\n switch (name) {\n case 'ADBE Text Document':\n return _thisLayerFunction.sourceText;\n\n default:\n return null;\n }\n }\n\n Object.defineProperty(_thisLayerFunction, 'sourceText', {\n get: function get() {\n elem.textProperty.getValue();\n var stringValue = elem.textProperty.currentData.t;\n\n if (!_sourceText || stringValue !== _sourceText.value) {\n _sourceText = new String(stringValue); // eslint-disable-line no-new-wrappers\n // If stringValue is an empty string, eval returns undefined, so it has to be returned as a String primitive\n\n _sourceText.value = stringValue || new String(stringValue); // eslint-disable-line no-new-wrappers\n\n Object.defineProperty(_sourceText, 'style', {\n get: function get() {\n return {\n fillColor: elem.textProperty.currentData.fc\n };\n }\n });\n }\n\n return _sourceText;\n }\n });\n return _thisLayerFunction;\n };\n }();\n\n function _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\n var FootageInterface = function () {\n var outlineInterfaceFactory = function outlineInterfaceFactory(elem) {\n var currentPropertyName = '';\n var currentProperty = elem.getFootageData();\n\n function init() {\n currentPropertyName = '';\n currentProperty = elem.getFootageData();\n return searchProperty;\n }\n\n function searchProperty(value) {\n if (currentProperty[value]) {\n currentPropertyName = value;\n currentProperty = currentProperty[value];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n var propertyNameIndex = value.indexOf(currentPropertyName);\n\n if (propertyNameIndex !== -1) {\n var index = parseInt(value.substr(propertyNameIndex + currentPropertyName.length), 10);\n currentProperty = currentProperty[index];\n\n if (_typeof(currentProperty) === 'object') {\n return searchProperty;\n }\n\n return currentProperty;\n }\n\n return '';\n }\n\n return init;\n };\n\n var dataInterfaceFactory = function dataInterfaceFactory(elem) {\n function interfaceFunction(value) {\n if (value === 'Outline') {\n return interfaceFunction.outlineInterface();\n }\n\n return null;\n }\n\n interfaceFunction._name = 'Outline';\n interfaceFunction.outlineInterface = outlineInterfaceFactory(elem);\n return interfaceFunction;\n };\n\n return function (elem) {\n function _interfaceFunction(value) {\n if (value === 'Data') {\n return _interfaceFunction.dataInterface;\n }\n\n return null;\n }\n\n _interfaceFunction._name = 'Data';\n _interfaceFunction.dataInterface = dataInterfaceFactory(elem);\n return _interfaceFunction;\n };\n }();\n\n var interfaces = {\n layer: LayerExpressionInterface,\n effects: EffectsExpressionInterface,\n comp: CompExpressionInterface,\n shape: ShapeExpressionInterface,\n text: TextExpressionInterface,\n footage: FootageInterface\n };\n\n function getInterface(type) {\n return interfaces[type] || null;\n }\n\n var expressionHelpers = function () {\n function searchExpressions(elem, data, prop) {\n if (data.x) {\n prop.k = true;\n prop.x = true;\n prop.initiateExpression = ExpressionManager.initiateExpression;\n prop.effectsSequence.push(prop.initiateExpression(elem, data, prop).bind(prop));\n }\n }\n\n function getValueAtTime(frameNum) {\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastFrame) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastFrame < frameNum ? this._cachingAtTime.lastIndex : 0;\n this._cachingAtTime.value = this.interpolateValue(frameNum, this._cachingAtTime);\n this._cachingAtTime.lastFrame = frameNum;\n }\n\n return this._cachingAtTime.value;\n }\n\n function getSpeedAtTime(frameNum) {\n var delta = -0.01;\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var speed = 0;\n\n if (v1.length) {\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n speed += Math.pow(v2[i] - v1[i], 2);\n }\n\n speed = Math.sqrt(speed) * 100;\n } else {\n speed = 0;\n }\n\n return speed;\n }\n\n function getVelocityAtTime(frameNum) {\n if (this.vel !== undefined) {\n return this.vel;\n }\n\n var delta = -0.001; // frameNum += this.elem.data.st;\n\n var v1 = this.getValueAtTime(frameNum);\n var v2 = this.getValueAtTime(frameNum + delta);\n var velocity;\n\n if (v1.length) {\n velocity = createTypedArray('float32', v1.length);\n var i;\n\n for (i = 0; i < v1.length; i += 1) {\n // removing frameRate\n // if needed, don't add it here\n // velocity[i] = this.elem.globalData.frameRate*((v2[i] - v1[i])/delta);\n velocity[i] = (v2[i] - v1[i]) / delta;\n }\n } else {\n velocity = (v2 - v1) / delta;\n }\n\n return velocity;\n }\n\n function getStaticValueAtTime() {\n return this.pv;\n }\n\n function setGroupProperty(propertyGroup) {\n this.propertyGroup = propertyGroup;\n }\n\n return {\n searchExpressions: searchExpressions,\n getSpeedAtTime: getSpeedAtTime,\n getVelocityAtTime: getVelocityAtTime,\n getValueAtTime: getValueAtTime,\n getStaticValueAtTime: getStaticValueAtTime,\n setGroupProperty: setGroupProperty\n };\n }();\n\n function addPropertyDecorator() {\n function loopOut(type, duration, durationFlag) {\n if (!this.k || !this.keyframes) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var lastKeyFrame = keyframes[keyframes.length - 1].t;\n\n if (currentFrame <= lastKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var firstKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n firstKeyFrame = keyframes[keyframes.length - 1 - duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, lastKeyFrame - this.elem.data.ip);\n } else {\n cycleDuration = Math.abs(lastKeyFrame - this.elem.comp.globalData.frameRate * duration);\n }\n\n firstKeyFrame = lastKeyFrame - cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (iterations % 2 !== 0) {\n return this.getValueAtTime((cycleDuration - (currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n\n var repeats = Math.floor((currentFrame - firstKeyFrame) / cycleDuration);\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = (endV[i] - initV[i]) * repeats + current[i];\n }\n\n return ret;\n }\n\n return (endV - initV) * repeats + current;\n } else if (type === 'continue') {\n var lastValue = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var nextLastValue = this.getValueAtTime((lastKeyFrame - 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(lastValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = lastValue[i] + (lastValue[i] - nextLastValue[i]) * ((currentFrame - lastKeyFrame) / this.comp.globalData.frameRate) / 0.0005; // eslint-disable-line\n }\n\n return ret;\n }\n\n return lastValue + (lastValue - nextLastValue) * ((currentFrame - lastKeyFrame) / 0.001);\n }\n\n return this.getValueAtTime(((currentFrame - firstKeyFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function loopIn(type, duration, durationFlag) {\n if (!this.k) {\n return this.pv;\n }\n\n type = type ? type.toLowerCase() : '';\n var currentFrame = this.comp.renderedFrame;\n var keyframes = this.keyframes;\n var firstKeyFrame = keyframes[0].t;\n\n if (currentFrame >= firstKeyFrame) {\n return this.pv;\n }\n\n var cycleDuration;\n var lastKeyFrame;\n\n if (!durationFlag) {\n if (!duration || duration > keyframes.length - 1) {\n duration = keyframes.length - 1;\n }\n\n lastKeyFrame = keyframes[duration].t;\n cycleDuration = lastKeyFrame - firstKeyFrame;\n } else {\n if (!duration) {\n cycleDuration = Math.max(0, this.elem.data.op - firstKeyFrame);\n } else {\n cycleDuration = Math.abs(this.elem.comp.globalData.frameRate * duration);\n }\n\n lastKeyFrame = firstKeyFrame + cycleDuration;\n }\n\n var i;\n var len;\n var ret;\n\n if (type === 'pingpong') {\n var iterations = Math.floor((firstKeyFrame - currentFrame) / cycleDuration);\n\n if (iterations % 2 === 0) {\n return this.getValueAtTime(((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n } else if (type === 'offset') {\n var initV = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var endV = this.getValueAtTime(lastKeyFrame / this.comp.globalData.frameRate, 0);\n var current = this.getValueAtTime((cycleDuration - (firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame) / this.comp.globalData.frameRate, 0);\n var repeats = Math.floor((firstKeyFrame - currentFrame) / cycleDuration) + 1;\n\n if (this.pv.length) {\n ret = new Array(initV.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = current[i] - (endV[i] - initV[i]) * repeats;\n }\n\n return ret;\n }\n\n return current - (endV - initV) * repeats;\n } else if (type === 'continue') {\n var firstValue = this.getValueAtTime(firstKeyFrame / this.comp.globalData.frameRate, 0);\n var nextFirstValue = this.getValueAtTime((firstKeyFrame + 0.001) / this.comp.globalData.frameRate, 0);\n\n if (this.pv.length) {\n ret = new Array(firstValue.length);\n len = ret.length;\n\n for (i = 0; i < len; i += 1) {\n ret[i] = firstValue[i] + (firstValue[i] - nextFirstValue[i]) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return ret;\n }\n\n return firstValue + (firstValue - nextFirstValue) * (firstKeyFrame - currentFrame) / 0.001;\n }\n\n return this.getValueAtTime((cycleDuration - ((firstKeyFrame - currentFrame) % cycleDuration + firstKeyFrame)) / this.comp.globalData.frameRate, 0); // eslint-disable-line\n }\n\n function smooth(width, samples) {\n if (!this.k) {\n return this.pv;\n }\n\n width = (width || 0.4) * 0.5;\n samples = Math.floor(samples || 5);\n\n if (samples <= 1) {\n return this.pv;\n }\n\n var currentTime = this.comp.renderedFrame / this.comp.globalData.frameRate;\n var initFrame = currentTime - width;\n var endFrame = currentTime + width;\n var sampleFrequency = samples > 1 ? (endFrame - initFrame) / (samples - 1) : 1;\n var i = 0;\n var j = 0;\n var value;\n\n if (this.pv.length) {\n value = createTypedArray('float32', this.pv.length);\n } else {\n value = 0;\n }\n\n var sampleValue;\n\n while (i < samples) {\n sampleValue = this.getValueAtTime(initFrame + i * sampleFrequency);\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] += sampleValue[j];\n }\n } else {\n value += sampleValue;\n }\n\n i += 1;\n }\n\n if (this.pv.length) {\n for (j = 0; j < this.pv.length; j += 1) {\n value[j] /= samples;\n }\n } else {\n value /= samples;\n }\n\n return value;\n }\n\n function getTransformValueAtTime(time) {\n if (!this._transformCachingAtTime) {\n this._transformCachingAtTime = {\n v: new Matrix()\n };\n } /// /\n\n\n var matrix = this._transformCachingAtTime.v;\n matrix.cloneFromProps(this.pre.props);\n\n if (this.appliedTransformations < 1) {\n var anchor = this.a.getValueAtTime(time);\n matrix.translate(-anchor[0] * this.a.mult, -anchor[1] * this.a.mult, anchor[2] * this.a.mult);\n }\n\n if (this.appliedTransformations < 2) {\n var scale = this.s.getValueAtTime(time);\n matrix.scale(scale[0] * this.s.mult, scale[1] * this.s.mult, scale[2] * this.s.mult);\n }\n\n if (this.sk && this.appliedTransformations < 3) {\n var skew = this.sk.getValueAtTime(time);\n var skewAxis = this.sa.getValueAtTime(time);\n matrix.skewFromAxis(-skew * this.sk.mult, skewAxis * this.sa.mult);\n }\n\n if (this.r && this.appliedTransformations < 4) {\n var rotation = this.r.getValueAtTime(time);\n matrix.rotate(-rotation * this.r.mult);\n } else if (!this.r && this.appliedTransformations < 4) {\n var rotationZ = this.rz.getValueAtTime(time);\n var rotationY = this.ry.getValueAtTime(time);\n var rotationX = this.rx.getValueAtTime(time);\n var orientation = this.or.getValueAtTime(time);\n matrix.rotateZ(-rotationZ * this.rz.mult).rotateY(rotationY * this.ry.mult).rotateX(rotationX * this.rx.mult).rotateZ(-orientation[2] * this.or.mult).rotateY(orientation[1] * this.or.mult).rotateX(orientation[0] * this.or.mult);\n }\n\n if (this.data.p && this.data.p.s) {\n var positionX = this.px.getValueAtTime(time);\n var positionY = this.py.getValueAtTime(time);\n\n if (this.data.p.z) {\n var positionZ = this.pz.getValueAtTime(time);\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, -positionZ * this.pz.mult);\n } else {\n matrix.translate(positionX * this.px.mult, positionY * this.py.mult, 0);\n }\n } else {\n var position = this.p.getValueAtTime(time);\n matrix.translate(position[0] * this.p.mult, position[1] * this.p.mult, -position[2] * this.p.mult);\n }\n\n return matrix; /// /\n }\n\n function getTransformStaticValueAtTime() {\n return this.v.clone(new Matrix());\n }\n\n var getTransformProperty = TransformPropertyFactory.getTransformProperty;\n\n TransformPropertyFactory.getTransformProperty = function (elem, data, container) {\n var prop = getTransformProperty(elem, data, container);\n\n if (prop.dynamicProperties.length) {\n prop.getValueAtTime = getTransformValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = getTransformStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n return prop;\n };\n\n var propertyGetProp = PropertyFactory.getProp;\n\n PropertyFactory.getProp = function (elem, data, type, mult, container) {\n var prop = propertyGetProp(elem, data, type, mult, container); // prop.getVelocityAtTime = getVelocityAtTime;\n // prop.loopOut = loopOut;\n // prop.loopIn = loopIn;\n\n if (prop.kf) {\n prop.getValueAtTime = expressionHelpers.getValueAtTime.bind(prop);\n } else {\n prop.getValueAtTime = expressionHelpers.getStaticValueAtTime.bind(prop);\n }\n\n prop.setGroupProperty = expressionHelpers.setGroupProperty;\n prop.loopOut = loopOut;\n prop.loopIn = loopIn;\n prop.smooth = smooth;\n prop.getVelocityAtTime = expressionHelpers.getVelocityAtTime.bind(prop);\n prop.getSpeedAtTime = expressionHelpers.getSpeedAtTime.bind(prop);\n prop.numKeys = data.a === 1 ? data.k.length : 0;\n prop.propertyIndex = data.ix;\n var value = 0;\n\n if (type !== 0) {\n value = createTypedArray('float32', data.a === 1 ? data.k[0].s.length : data.k.length);\n }\n\n prop._cachingAtTime = {\n lastFrame: initialDefaultFrame,\n lastIndex: 0,\n value: value\n };\n expressionHelpers.searchExpressions(elem, data, prop);\n\n if (prop.k) {\n container.addDynamicProperty(prop);\n }\n\n return prop;\n };\n\n function getShapeValueAtTime(frameNum) {\n // For now this caching object is created only when needed instead of creating it when the shape is initialized.\n if (!this._cachingAtTime) {\n this._cachingAtTime = {\n shapeValue: shapePool.clone(this.pv),\n lastIndex: 0,\n lastTime: initialDefaultFrame\n };\n }\n\n frameNum *= this.elem.globalData.frameRate;\n frameNum -= this.offsetTime;\n\n if (frameNum !== this._cachingAtTime.lastTime) {\n this._cachingAtTime.lastIndex = this._cachingAtTime.lastTime < frameNum ? this._caching.lastIndex : 0;\n this._cachingAtTime.lastTime = frameNum;\n this.interpolateShape(frameNum, this._cachingAtTime.shapeValue, this._cachingAtTime);\n }\n\n return this._cachingAtTime.shapeValue;\n }\n\n var ShapePropertyConstructorFunction = ShapePropertyFactory.getConstructorFunction();\n var KeyframedShapePropertyConstructorFunction = ShapePropertyFactory.getKeyframedConstructorFunction();\n\n function ShapeExpressions() {}\n\n ShapeExpressions.prototype = {\n vertices: function vertices(prop, time) {\n if (this.k) {\n this.getValue();\n }\n\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n var i;\n var len = shapePath._length;\n var vertices = shapePath[prop];\n var points = shapePath.v;\n var arr = createSizedArray(len);\n\n for (i = 0; i < len; i += 1) {\n if (prop === 'i' || prop === 'o') {\n arr[i] = [vertices[i][0] - points[i][0], vertices[i][1] - points[i][1]];\n } else {\n arr[i] = [vertices[i][0], vertices[i][1]];\n }\n }\n\n return arr;\n },\n points: function points(time) {\n return this.vertices('v', time);\n },\n inTangents: function inTangents(time) {\n return this.vertices('i', time);\n },\n outTangents: function outTangents(time) {\n return this.vertices('o', time);\n },\n isClosed: function isClosed() {\n return this.v.c;\n },\n pointOnPath: function pointOnPath(perc, time) {\n var shapePath = this.v;\n\n if (time !== undefined) {\n shapePath = this.getValueAtTime(time, 0);\n }\n\n if (!this._segmentsLength) {\n this._segmentsLength = bez.getSegmentsLength(shapePath);\n }\n\n var segmentsLength = this._segmentsLength;\n var lengths = segmentsLength.lengths;\n var lengthPos = segmentsLength.totalLength * perc;\n var i = 0;\n var len = lengths.length;\n var accumulatedLength = 0;\n var pt;\n\n while (i < len) {\n if (accumulatedLength + lengths[i].addedLength > lengthPos) {\n var initIndex = i;\n var endIndex = shapePath.c && i === len - 1 ? 0 : i + 1;\n var segmentPerc = (lengthPos - accumulatedLength) / lengths[i].addedLength;\n pt = bez.getPointInSegment(shapePath.v[initIndex], shapePath.v[endIndex], shapePath.o[initIndex], shapePath.i[endIndex], segmentPerc, lengths[i]);\n break;\n } else {\n accumulatedLength += lengths[i].addedLength;\n }\n\n i += 1;\n }\n\n if (!pt) {\n pt = shapePath.c ? [shapePath.v[0][0], shapePath.v[0][1]] : [shapePath.v[shapePath._length - 1][0], shapePath.v[shapePath._length - 1][1]];\n }\n\n return pt;\n },\n vectorOnPath: function vectorOnPath(perc, time, vectorType) {\n // perc doesn't use triple equality because it can be a Number object as well as a primitive.\n if (perc == 1) {\n // eslint-disable-line eqeqeq\n perc = this.v.c;\n } else if (perc == 0) {\n // eslint-disable-line eqeqeq\n perc = 0.999;\n }\n\n var pt1 = this.pointOnPath(perc, time);\n var pt2 = this.pointOnPath(perc + 0.001, time);\n var xLength = pt2[0] - pt1[0];\n var yLength = pt2[1] - pt1[1];\n var magnitude = Math.sqrt(Math.pow(xLength, 2) + Math.pow(yLength, 2));\n\n if (magnitude === 0) {\n return [0, 0];\n }\n\n var unitVector = vectorType === 'tangent' ? [xLength / magnitude, yLength / magnitude] : [-yLength / magnitude, xLength / magnitude];\n return unitVector;\n },\n tangentOnPath: function tangentOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'tangent');\n },\n normalOnPath: function normalOnPath(perc, time) {\n return this.vectorOnPath(perc, time, 'normal');\n },\n setGroupProperty: expressionHelpers.setGroupProperty,\n getValueAtTime: expressionHelpers.getStaticValueAtTime\n };\n extendPrototype([ShapeExpressions], ShapePropertyConstructorFunction);\n extendPrototype([ShapeExpressions], KeyframedShapePropertyConstructorFunction);\n KeyframedShapePropertyConstructorFunction.prototype.getValueAtTime = getShapeValueAtTime;\n KeyframedShapePropertyConstructorFunction.prototype.initiateExpression = ExpressionManager.initiateExpression;\n var propertyGetShapeProp = ShapePropertyFactory.getShapeProp;\n\n ShapePropertyFactory.getShapeProp = function (elem, data, type, arr, trims) {\n var prop = propertyGetShapeProp(elem, data, type, arr, trims);\n prop.propertyIndex = data.ix;\n prop.lock = false;\n\n if (type === 3) {\n expressionHelpers.searchExpressions(elem, data.pt, prop);\n } else if (type === 4) {\n expressionHelpers.searchExpressions(elem, data.ks, prop);\n }\n\n if (prop.k) {\n elem.addDynamicProperty(prop);\n }\n\n return prop;\n };\n }\n\n function initialize$1() {\n addPropertyDecorator();\n }\n\n function addDecorator() {\n function searchExpressions() {\n if (this.data.d.x) {\n this.calculateExpression = ExpressionManager.initiateExpression.bind(this)(this.elem, this.data.d, this);\n this.addEffect(this.getExpressionValue.bind(this));\n return true;\n }\n\n return null;\n }\n\n TextProperty.prototype.getExpressionValue = function (currentValue, text) {\n var newValue = this.calculateExpression(text);\n\n if (currentValue.t !== newValue) {\n var newData = {};\n this.copyData(newData, currentValue);\n newData.t = newValue.toString();\n newData.__complete = false;\n return newData;\n }\n\n return currentValue;\n };\n\n TextProperty.prototype.searchProperty = function () {\n var isKeyframed = this.searchKeyframes();\n var hasExpressions = this.searchExpressions();\n this.kf = isKeyframed || hasExpressions;\n return this.kf;\n };\n\n TextProperty.prototype.searchExpressions = searchExpressions;\n }\n\n function initialize() {\n addDecorator();\n }\n\n function SVGComposableEffect() {}\n\n SVGComposableEffect.prototype = {\n createMergeNode: function createMergeNode(resultId, ins) {\n var feMerge = createNS('feMerge');\n feMerge.setAttribute('result', resultId);\n var feMergeNode;\n var i;\n\n for (i = 0; i < ins.length; i += 1) {\n feMergeNode = createNS('feMergeNode');\n feMergeNode.setAttribute('in', ins[i]);\n feMerge.appendChild(feMergeNode);\n feMerge.appendChild(feMergeNode);\n }\n\n return feMerge;\n }\n };\n\n var linearFilterValue = '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0';\n\n function SVGTintFilter(filter, filterManager, elem, id, source) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', linearFilterValue + ' 1 0');\n this.linearFilter = feColorMatrix;\n feColorMatrix.setAttribute('result', id + '_tint_1');\n filter.appendChild(feColorMatrix);\n feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id + '_tint_2');\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n var feMerge = this.createMergeNode(id, [source, id + '_tint_1', id + '_tint_2']);\n filter.appendChild(feMerge);\n }\n\n extendPrototype([SVGComposableEffect], SVGTintFilter);\n\n SVGTintFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var colorBlack = this.filterManager.effectElements[0].p.v;\n var colorWhite = this.filterManager.effectElements[1].p.v;\n var opacity = this.filterManager.effectElements[2].p.v / 100;\n this.linearFilter.setAttribute('values', linearFilterValue + ' ' + opacity + ' 0');\n this.matrixFilter.setAttribute('values', colorWhite[0] - colorBlack[0] + ' 0 0 0 ' + colorBlack[0] + ' ' + (colorWhite[1] - colorBlack[1]) + ' 0 0 0 ' + colorBlack[1] + ' ' + (colorWhite[2] - colorBlack[2]) + ' 0 0 0 ' + colorBlack[2] + ' 0 0 0 1 0');\n }\n };\n\n function SVGFillFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'sRGB');\n feColorMatrix.setAttribute('values', '1 0 0 0 0 0 1 0 0 0 0 0 1 0 0 0 0 0 1 0');\n feColorMatrix.setAttribute('result', id);\n filter.appendChild(feColorMatrix);\n this.matrixFilter = feColorMatrix;\n }\n\n SVGFillFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color = this.filterManager.effectElements[2].p.v;\n var opacity = this.filterManager.effectElements[6].p.v;\n this.matrixFilter.setAttribute('values', '0 0 0 0 ' + color[0] + ' 0 0 0 0 ' + color[1] + ' 0 0 0 0 ' + color[2] + ' 0 0 0 ' + opacity + ' 0');\n }\n };\n\n function SVGStrokeEffect(fil, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.elem = elem;\n this.paths = [];\n }\n\n SVGStrokeEffect.prototype.initialize = function () {\n var elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n var path;\n var groupPath;\n var i;\n var len;\n\n if (this.filterManager.effectElements[1].p.v === 1) {\n len = this.elem.maskManager.masksProperties.length;\n i = 0;\n } else {\n i = this.filterManager.effectElements[0].p.v - 1;\n len = i + 1;\n }\n\n groupPath = createNS('g');\n groupPath.setAttribute('fill', 'none');\n groupPath.setAttribute('stroke-linecap', 'round');\n groupPath.setAttribute('stroke-dashoffset', 1);\n\n for (i; i < len; i += 1) {\n path = createNS('path');\n groupPath.appendChild(path);\n this.paths.push({\n p: path,\n m: i\n });\n }\n\n if (this.filterManager.effectElements[10].p.v === 3) {\n var mask = createNS('mask');\n var id = createElementID();\n mask.setAttribute('id', id);\n mask.setAttribute('mask-type', 'alpha');\n mask.appendChild(groupPath);\n this.elem.globalData.defs.appendChild(mask);\n var g = createNS('g');\n g.setAttribute('mask', 'url(' + getLocationHref() + '#' + id + ')');\n\n while (elemChildren[0]) {\n g.appendChild(elemChildren[0]);\n }\n\n this.elem.layerElement.appendChild(g);\n this.masker = mask;\n groupPath.setAttribute('stroke', '#fff');\n } else if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (this.filterManager.effectElements[10].p.v === 2) {\n elemChildren = this.elem.layerElement.children || this.elem.layerElement.childNodes;\n\n while (elemChildren.length) {\n this.elem.layerElement.removeChild(elemChildren[0]);\n }\n }\n\n this.elem.layerElement.appendChild(groupPath);\n this.elem.layerElement.removeAttribute('mask');\n groupPath.setAttribute('stroke', '#fff');\n }\n\n this.initialized = true;\n this.pathMasker = groupPath;\n };\n\n SVGStrokeEffect.prototype.renderFrame = function (forceRender) {\n if (!this.initialized) {\n this.initialize();\n }\n\n var i;\n var len = this.paths.length;\n var mask;\n var path;\n\n for (i = 0; i < len; i += 1) {\n if (this.paths[i].m !== -1) {\n mask = this.elem.maskManager.viewData[this.paths[i].m];\n path = this.paths[i].p;\n\n if (forceRender || this.filterManager._mdf || mask.prop._mdf) {\n path.setAttribute('d', mask.lastPath);\n }\n\n if (forceRender || this.filterManager.effectElements[9].p._mdf || this.filterManager.effectElements[4].p._mdf || this.filterManager.effectElements[7].p._mdf || this.filterManager.effectElements[8].p._mdf || mask.prop._mdf) {\n var dasharrayValue;\n\n if (this.filterManager.effectElements[7].p.v !== 0 || this.filterManager.effectElements[8].p.v !== 100) {\n var s = Math.min(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var e = Math.max(this.filterManager.effectElements[7].p.v, this.filterManager.effectElements[8].p.v) * 0.01;\n var l = path.getTotalLength();\n dasharrayValue = '0 0 0 ' + l * s + ' ';\n var lineLength = l * (e - s);\n var segment = 1 + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n var units = Math.floor(lineLength / segment);\n var j;\n\n for (j = 0; j < units; j += 1) {\n dasharrayValue += '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01 + ' ';\n }\n\n dasharrayValue += '0 ' + l * 10 + ' 0 0';\n } else {\n dasharrayValue = '1 ' + this.filterManager.effectElements[4].p.v * 2 * this.filterManager.effectElements[9].p.v * 0.01;\n }\n\n path.setAttribute('stroke-dasharray', dasharrayValue);\n }\n }\n }\n\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.pathMasker.setAttribute('stroke-width', this.filterManager.effectElements[4].p.v * 2);\n }\n\n if (forceRender || this.filterManager.effectElements[6].p._mdf) {\n this.pathMasker.setAttribute('opacity', this.filterManager.effectElements[6].p.v);\n }\n\n if (this.filterManager.effectElements[10].p.v === 1 || this.filterManager.effectElements[10].p.v === 2) {\n if (forceRender || this.filterManager.effectElements[3].p._mdf) {\n var color = this.filterManager.effectElements[3].p.v;\n this.pathMasker.setAttribute('stroke', 'rgb(' + bmFloor(color[0] * 255) + ',' + bmFloor(color[1] * 255) + ',' + bmFloor(color[2] * 255) + ')');\n }\n }\n };\n\n function SVGTritoneFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var feColorMatrix = createNS('feColorMatrix');\n feColorMatrix.setAttribute('type', 'matrix');\n feColorMatrix.setAttribute('color-interpolation-filters', 'linearRGB');\n feColorMatrix.setAttribute('values', '0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0.3333 0.3333 0.3333 0 0 0 0 0 1 0');\n filter.appendChild(feColorMatrix);\n var feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n this.matrixFilter = feComponentTransfer;\n var feFuncR = createNS('feFuncR');\n feFuncR.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncR);\n this.feFuncR = feFuncR;\n var feFuncG = createNS('feFuncG');\n feFuncG.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncG);\n this.feFuncG = feFuncG;\n var feFuncB = createNS('feFuncB');\n feFuncB.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFuncB);\n this.feFuncB = feFuncB;\n filter.appendChild(feComponentTransfer);\n }\n\n SVGTritoneFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var color1 = this.filterManager.effectElements[0].p.v;\n var color2 = this.filterManager.effectElements[1].p.v;\n var color3 = this.filterManager.effectElements[2].p.v;\n var tableR = color3[0] + ' ' + color2[0] + ' ' + color1[0];\n var tableG = color3[1] + ' ' + color2[1] + ' ' + color1[1];\n var tableB = color3[2] + ' ' + color2[2] + ' ' + color1[2];\n this.feFuncR.setAttribute('tableValues', tableR);\n this.feFuncG.setAttribute('tableValues', tableG);\n this.feFuncB.setAttribute('tableValues', tableB);\n }\n };\n\n function SVGProLevelsFilter(filter, filterManager, elem, id) {\n this.filterManager = filterManager;\n var effectElements = this.filterManager.effectElements;\n var feComponentTransfer = createNS('feComponentTransfer'); // Red\n\n if (effectElements[10].p.k || effectElements[10].p.v !== 0 || effectElements[11].p.k || effectElements[11].p.v !== 1 || effectElements[12].p.k || effectElements[12].p.v !== 1 || effectElements[13].p.k || effectElements[13].p.v !== 0 || effectElements[14].p.k || effectElements[14].p.v !== 1) {\n this.feFuncR = this.createFeFunc('feFuncR', feComponentTransfer);\n } // Green\n\n\n if (effectElements[17].p.k || effectElements[17].p.v !== 0 || effectElements[18].p.k || effectElements[18].p.v !== 1 || effectElements[19].p.k || effectElements[19].p.v !== 1 || effectElements[20].p.k || effectElements[20].p.v !== 0 || effectElements[21].p.k || effectElements[21].p.v !== 1) {\n this.feFuncG = this.createFeFunc('feFuncG', feComponentTransfer);\n } // Blue\n\n\n if (effectElements[24].p.k || effectElements[24].p.v !== 0 || effectElements[25].p.k || effectElements[25].p.v !== 1 || effectElements[26].p.k || effectElements[26].p.v !== 1 || effectElements[27].p.k || effectElements[27].p.v !== 0 || effectElements[28].p.k || effectElements[28].p.v !== 1) {\n this.feFuncB = this.createFeFunc('feFuncB', feComponentTransfer);\n } // Alpha\n\n\n if (effectElements[31].p.k || effectElements[31].p.v !== 0 || effectElements[32].p.k || effectElements[32].p.v !== 1 || effectElements[33].p.k || effectElements[33].p.v !== 1 || effectElements[34].p.k || effectElements[34].p.v !== 0 || effectElements[35].p.k || effectElements[35].p.v !== 1) {\n this.feFuncA = this.createFeFunc('feFuncA', feComponentTransfer);\n } // RGB\n\n\n if (this.feFuncR || this.feFuncG || this.feFuncB || this.feFuncA) {\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n filter.appendChild(feComponentTransfer);\n }\n\n if (effectElements[3].p.k || effectElements[3].p.v !== 0 || effectElements[4].p.k || effectElements[4].p.v !== 1 || effectElements[5].p.k || effectElements[5].p.v !== 1 || effectElements[6].p.k || effectElements[6].p.v !== 0 || effectElements[7].p.k || effectElements[7].p.v !== 1) {\n feComponentTransfer = createNS('feComponentTransfer');\n feComponentTransfer.setAttribute('color-interpolation-filters', 'sRGB');\n feComponentTransfer.setAttribute('result', id);\n filter.appendChild(feComponentTransfer);\n this.feFuncRComposed = this.createFeFunc('feFuncR', feComponentTransfer);\n this.feFuncGComposed = this.createFeFunc('feFuncG', feComponentTransfer);\n this.feFuncBComposed = this.createFeFunc('feFuncB', feComponentTransfer);\n }\n }\n\n SVGProLevelsFilter.prototype.createFeFunc = function (type, feComponentTransfer) {\n var feFunc = createNS(type);\n feFunc.setAttribute('type', 'table');\n feComponentTransfer.appendChild(feFunc);\n return feFunc;\n };\n\n SVGProLevelsFilter.prototype.getTableValue = function (inputBlack, inputWhite, gamma, outputBlack, outputWhite) {\n var cnt = 0;\n var segments = 256;\n var perc;\n var min = Math.min(inputBlack, inputWhite);\n var max = Math.max(inputBlack, inputWhite);\n var table = Array.call(null, {\n length: segments\n });\n var colorValue;\n var pos = 0;\n var outputDelta = outputWhite - outputBlack;\n var inputDelta = inputWhite - inputBlack;\n\n while (cnt <= 256) {\n perc = cnt / 256;\n\n if (perc <= min) {\n colorValue = inputDelta < 0 ? outputWhite : outputBlack;\n } else if (perc >= max) {\n colorValue = inputDelta < 0 ? outputBlack : outputWhite;\n } else {\n colorValue = outputBlack + outputDelta * Math.pow((perc - inputBlack) / inputDelta, 1 / gamma);\n }\n\n table[pos] = colorValue;\n pos += 1;\n cnt += 256 / (segments - 1);\n }\n\n return table.join(' ');\n };\n\n SVGProLevelsFilter.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n var val;\n var effectElements = this.filterManager.effectElements;\n\n if (this.feFuncRComposed && (forceRender || effectElements[3].p._mdf || effectElements[4].p._mdf || effectElements[5].p._mdf || effectElements[6].p._mdf || effectElements[7].p._mdf)) {\n val = this.getTableValue(effectElements[3].p.v, effectElements[4].p.v, effectElements[5].p.v, effectElements[6].p.v, effectElements[7].p.v);\n this.feFuncRComposed.setAttribute('tableValues', val);\n this.feFuncGComposed.setAttribute('tableValues', val);\n this.feFuncBComposed.setAttribute('tableValues', val);\n }\n\n if (this.feFuncR && (forceRender || effectElements[10].p._mdf || effectElements[11].p._mdf || effectElements[12].p._mdf || effectElements[13].p._mdf || effectElements[14].p._mdf)) {\n val = this.getTableValue(effectElements[10].p.v, effectElements[11].p.v, effectElements[12].p.v, effectElements[13].p.v, effectElements[14].p.v);\n this.feFuncR.setAttribute('tableValues', val);\n }\n\n if (this.feFuncG && (forceRender || effectElements[17].p._mdf || effectElements[18].p._mdf || effectElements[19].p._mdf || effectElements[20].p._mdf || effectElements[21].p._mdf)) {\n val = this.getTableValue(effectElements[17].p.v, effectElements[18].p.v, effectElements[19].p.v, effectElements[20].p.v, effectElements[21].p.v);\n this.feFuncG.setAttribute('tableValues', val);\n }\n\n if (this.feFuncB && (forceRender || effectElements[24].p._mdf || effectElements[25].p._mdf || effectElements[26].p._mdf || effectElements[27].p._mdf || effectElements[28].p._mdf)) {\n val = this.getTableValue(effectElements[24].p.v, effectElements[25].p.v, effectElements[26].p.v, effectElements[27].p.v, effectElements[28].p.v);\n this.feFuncB.setAttribute('tableValues', val);\n }\n\n if (this.feFuncA && (forceRender || effectElements[31].p._mdf || effectElements[32].p._mdf || effectElements[33].p._mdf || effectElements[34].p._mdf || effectElements[35].p._mdf)) {\n val = this.getTableValue(effectElements[31].p.v, effectElements[32].p.v, effectElements[33].p.v, effectElements[34].p.v, effectElements[35].p.v);\n this.feFuncA.setAttribute('tableValues', val);\n }\n }\n };\n\n function SVGDropShadowEffect(filter, filterManager, elem, id, source) {\n var globalFilterSize = filterManager.container.globalData.renderConfig.filterSize;\n var filterSize = filterManager.data.fs || globalFilterSize;\n filter.setAttribute('x', filterSize.x || globalFilterSize.x);\n filter.setAttribute('y', filterSize.y || globalFilterSize.y);\n filter.setAttribute('width', filterSize.width || globalFilterSize.width);\n filter.setAttribute('height', filterSize.height || globalFilterSize.height);\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('in', 'SourceAlpha');\n feGaussianBlur.setAttribute('result', id + '_drop_shadow_1');\n feGaussianBlur.setAttribute('stdDeviation', '0');\n this.feGaussianBlur = feGaussianBlur;\n filter.appendChild(feGaussianBlur);\n var feOffset = createNS('feOffset');\n feOffset.setAttribute('dx', '25');\n feOffset.setAttribute('dy', '0');\n feOffset.setAttribute('in', id + '_drop_shadow_1');\n feOffset.setAttribute('result', id + '_drop_shadow_2');\n this.feOffset = feOffset;\n filter.appendChild(feOffset);\n var feFlood = createNS('feFlood');\n feFlood.setAttribute('flood-color', '#00ff00');\n feFlood.setAttribute('flood-opacity', '1');\n feFlood.setAttribute('result', id + '_drop_shadow_3');\n this.feFlood = feFlood;\n filter.appendChild(feFlood);\n var feComposite = createNS('feComposite');\n feComposite.setAttribute('in', id + '_drop_shadow_3');\n feComposite.setAttribute('in2', id + '_drop_shadow_2');\n feComposite.setAttribute('operator', 'in');\n feComposite.setAttribute('result', id + '_drop_shadow_4');\n filter.appendChild(feComposite);\n var feMerge = this.createMergeNode(id, [id + '_drop_shadow_4', source]);\n filter.appendChild(feMerge); //\n }\n\n extendPrototype([SVGComposableEffect], SVGDropShadowEffect);\n\n SVGDropShadowEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n if (forceRender || this.filterManager.effectElements[4].p._mdf) {\n this.feGaussianBlur.setAttribute('stdDeviation', this.filterManager.effectElements[4].p.v / 4);\n }\n\n if (forceRender || this.filterManager.effectElements[0].p._mdf) {\n var col = this.filterManager.effectElements[0].p.v;\n this.feFlood.setAttribute('flood-color', rgbToHex(Math.round(col[0] * 255), Math.round(col[1] * 255), Math.round(col[2] * 255)));\n }\n\n if (forceRender || this.filterManager.effectElements[1].p._mdf) {\n this.feFlood.setAttribute('flood-opacity', this.filterManager.effectElements[1].p.v / 255);\n }\n\n if (forceRender || this.filterManager.effectElements[2].p._mdf || this.filterManager.effectElements[3].p._mdf) {\n var distance = this.filterManager.effectElements[3].p.v;\n var angle = (this.filterManager.effectElements[2].p.v - 90) * degToRads;\n var x = distance * Math.cos(angle);\n var y = distance * Math.sin(angle);\n this.feOffset.setAttribute('dx', x);\n this.feOffset.setAttribute('dy', y);\n }\n }\n };\n\n var _svgMatteSymbols = [];\n\n function SVGMatte3Effect(filterElem, filterManager, elem) {\n this.initialized = false;\n this.filterManager = filterManager;\n this.filterElem = filterElem;\n this.elem = elem;\n elem.matteElement = createNS('g');\n elem.matteElement.appendChild(elem.layerElement);\n elem.matteElement.appendChild(elem.transformedElement);\n elem.baseElement = elem.matteElement;\n }\n\n SVGMatte3Effect.prototype.findSymbol = function (mask) {\n var i = 0;\n var len = _svgMatteSymbols.length;\n\n while (i < len) {\n if (_svgMatteSymbols[i] === mask) {\n return _svgMatteSymbols[i];\n }\n\n i += 1;\n }\n\n return null;\n };\n\n SVGMatte3Effect.prototype.replaceInParent = function (mask, symbolId) {\n var parentNode = mask.layerElement.parentNode;\n\n if (!parentNode) {\n return;\n }\n\n var children = parentNode.children;\n var i = 0;\n var len = children.length;\n\n while (i < len) {\n if (children[i] === mask.layerElement) {\n break;\n }\n\n i += 1;\n }\n\n var nextChild;\n\n if (i <= len - 2) {\n nextChild = children[i + 1];\n }\n\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n\n if (nextChild) {\n parentNode.insertBefore(useElem, nextChild);\n } else {\n parentNode.appendChild(useElem);\n }\n };\n\n SVGMatte3Effect.prototype.setElementAsMask = function (elem, mask) {\n if (!this.findSymbol(mask)) {\n var symbolId = createElementID();\n var masker = createNS('mask');\n masker.setAttribute('id', mask.layerId);\n masker.setAttribute('mask-type', 'alpha');\n\n _svgMatteSymbols.push(mask);\n\n var defs = elem.globalData.defs;\n defs.appendChild(masker);\n var symbol = createNS('symbol');\n symbol.setAttribute('id', symbolId);\n this.replaceInParent(mask, symbolId);\n symbol.appendChild(mask.layerElement);\n defs.appendChild(symbol);\n var useElem = createNS('use');\n useElem.setAttribute('href', '#' + symbolId);\n masker.appendChild(useElem);\n mask.data.hd = false;\n mask.show();\n }\n\n elem.setMatte(mask.layerId);\n };\n\n SVGMatte3Effect.prototype.initialize = function () {\n var ind = this.filterManager.effectElements[0].p.v;\n var elements = this.elem.comp.elements;\n var i = 0;\n var len = elements.length;\n\n while (i < len) {\n if (elements[i] && elements[i].data.ind === ind) {\n this.setElementAsMask(this.elem, elements[i]);\n }\n\n i += 1;\n }\n\n this.initialized = true;\n };\n\n SVGMatte3Effect.prototype.renderFrame = function () {\n if (!this.initialized) {\n this.initialize();\n }\n };\n\n function SVGGaussianBlurEffect(filter, filterManager, elem, id) {\n // Outset the filter region by 100% on all sides to accommodate blur expansion.\n filter.setAttribute('x', '-100%');\n filter.setAttribute('y', '-100%');\n filter.setAttribute('width', '300%');\n filter.setAttribute('height', '300%');\n this.filterManager = filterManager;\n var feGaussianBlur = createNS('feGaussianBlur');\n feGaussianBlur.setAttribute('result', id);\n filter.appendChild(feGaussianBlur);\n this.feGaussianBlur = feGaussianBlur;\n }\n\n SVGGaussianBlurEffect.prototype.renderFrame = function (forceRender) {\n if (forceRender || this.filterManager._mdf) {\n // Empirical value, matching AE's blur appearance.\n var kBlurrinessToSigma = 0.3;\n var sigma = this.filterManager.effectElements[0].p.v * kBlurrinessToSigma; // Dimensions mapping:\n //\n // 1 -> horizontal & vertical\n // 2 -> horizontal only\n // 3 -> vertical only\n //\n\n var dimensions = this.filterManager.effectElements[1].p.v;\n var sigmaX = dimensions == 3 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n var sigmaY = dimensions == 2 ? 0 : sigma; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('stdDeviation', sigmaX + ' ' + sigmaY); // Repeat edges mapping:\n //\n // 0 -> off -> duplicate\n // 1 -> on -> wrap\n\n var edgeMode = this.filterManager.effectElements[2].p.v == 1 ? 'wrap' : 'duplicate'; // eslint-disable-line eqeqeq\n\n this.feGaussianBlur.setAttribute('edgeMode', edgeMode);\n }\n };\n\n function TransformEffect() {}\n\n TransformEffect.prototype.init = function (effectsManager) {\n this.effectsManager = effectsManager;\n this.type = effectTypes.TRANSFORM_EFFECT;\n this.matrix = new Matrix();\n this.opacity = -1;\n this._mdf = false;\n this._opMdf = false;\n };\n\n TransformEffect.prototype.renderFrame = function (forceFrame) {\n this._opMdf = false;\n this._mdf = false;\n\n if (forceFrame || this.effectsManager._mdf) {\n var effectElements = this.effectsManager.effectElements;\n var anchor = effectElements[0].p.v;\n var position = effectElements[1].p.v;\n var isUniformScale = effectElements[2].p.v === 1;\n var scaleHeight = effectElements[3].p.v;\n var scaleWidth = isUniformScale ? scaleHeight : effectElements[4].p.v;\n var skew = effectElements[5].p.v;\n var skewAxis = effectElements[6].p.v;\n var rotation = effectElements[7].p.v;\n this.matrix.reset();\n this.matrix.translate(-anchor[0], -anchor[1], anchor[2]);\n this.matrix.scale(scaleWidth * 0.01, scaleHeight * 0.01, 1);\n this.matrix.rotate(-rotation * degToRads);\n this.matrix.skewFromAxis(-skew * degToRads, (skewAxis + 90) * degToRads);\n this.matrix.translate(position[0], position[1], 0);\n this._mdf = true;\n\n if (this.opacity !== effectElements[8].p.v) {\n this.opacity = effectElements[8].p.v;\n this._opMdf = true;\n }\n }\n };\n\n function SVGTransformEffect(_, filterManager) {\n this.init(filterManager);\n }\n\n extendPrototype([TransformEffect], SVGTransformEffect);\n\n function CVTransformEffect(effectsManager) {\n this.init(effectsManager);\n }\n\n extendPrototype([TransformEffect], CVTransformEffect);\n\n registerRenderer('canvas', CanvasRenderer);\n registerRenderer('html', HybridRenderer);\n registerRenderer('svg', SVGRenderer); // Registering shape modifiers\n\n ShapeModifiers.registerModifier('tm', TrimModifier);\n ShapeModifiers.registerModifier('pb', PuckerAndBloatModifier);\n ShapeModifiers.registerModifier('rp', RepeaterModifier);\n ShapeModifiers.registerModifier('rd', RoundCornersModifier);\n ShapeModifiers.registerModifier('zz', ZigZagModifier);\n ShapeModifiers.registerModifier('op', OffsetPathModifier); // Registering expression plugin\n\n setExpressionsPlugin(Expressions);\n setExpressionInterfaces(getInterface);\n initialize$1();\n initialize(); // Registering svg effects\n\n registerEffect$1(20, SVGTintFilter, true);\n registerEffect$1(21, SVGFillFilter, true);\n registerEffect$1(22, SVGStrokeEffect, false);\n registerEffect$1(23, SVGTritoneFilter, true);\n registerEffect$1(24, SVGProLevelsFilter, true);\n registerEffect$1(25, SVGDropShadowEffect, true);\n registerEffect$1(28, SVGMatte3Effect, false);\n registerEffect$1(29, SVGGaussianBlurEffect, true);\n registerEffect$1(35, SVGTransformEffect, false);\n registerEffect(35, CVTransformEffect);\n\n return lottie;\n\n}));\n","/*!\n * wavesurfer.js 5.2.0 (2021-08-16)\n * https://wavesurfer-js.org\n * @license BSD-3-Clause\n */\n(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory();\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine(\"WaveSurfer\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"WaveSurfer\"] = factory();\n\telse\n\t\troot[\"WaveSurfer\"] = factory();\n})(self, function() {\nreturn /******/ (() => { // webpackBootstrap\n/******/ \tvar __webpack_modules__ = ({\n\n/***/ \"./src/drawer.canvasentry.js\":\n/*!***********************************!*\\\n !*** ./src/drawer.canvasentry.js ***!\n \\***********************************/\n/***/ ((module, exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _style = _interopRequireDefault(__webpack_require__(/*! ./util/style */ \"./src/util/style.js\"));\n\nvar _getId = _interopRequireDefault(__webpack_require__(/*! ./util/get-id */ \"./src/util/get-id.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\n/**\n * The `CanvasEntry` class represents an element consisting of a wave `canvas`\n * and an (optional) progress wave `canvas`.\n *\n * The `MultiCanvas` renderer uses one or more `CanvasEntry` instances to\n * render a waveform, depending on the zoom level.\n */\nvar CanvasEntry = /*#__PURE__*/function () {\n function CanvasEntry() {\n _classCallCheck(this, CanvasEntry);\n\n /**\n * The wave node\n *\n * @type {HTMLCanvasElement}\n */\n this.wave = null;\n /**\n * The wave canvas rendering context\n *\n * @type {CanvasRenderingContext2D}\n */\n\n this.waveCtx = null;\n /**\n * The (optional) progress wave node\n *\n * @type {HTMLCanvasElement}\n */\n\n this.progress = null;\n /**\n * The (optional) progress wave canvas rendering context\n *\n * @type {CanvasRenderingContext2D}\n */\n\n this.progressCtx = null;\n /**\n * Start of the area the canvas should render, between 0 and 1\n *\n * @type {number}\n */\n\n this.start = 0;\n /**\n * End of the area the canvas should render, between 0 and 1\n *\n * @type {number}\n */\n\n this.end = 1;\n /**\n * Unique identifier for this entry\n *\n * @type {string}\n */\n\n this.id = (0, _getId.default)(typeof this.constructor.name !== 'undefined' ? this.constructor.name.toLowerCase() + '_' : 'canvasentry_');\n /**\n * Canvas 2d context attributes\n *\n * @type {object}\n */\n\n this.canvasContextAttributes = {};\n }\n /**\n * Store the wave canvas element and create the 2D rendering context\n *\n * @param {HTMLCanvasElement} element The wave `canvas` element.\n */\n\n\n _createClass(CanvasEntry, [{\n key: \"initWave\",\n value: function initWave(element) {\n this.wave = element;\n this.waveCtx = this.wave.getContext('2d', this.canvasContextAttributes);\n }\n /**\n * Store the progress wave canvas element and create the 2D rendering\n * context\n *\n * @param {HTMLCanvasElement} element The progress wave `canvas` element.\n */\n\n }, {\n key: \"initProgress\",\n value: function initProgress(element) {\n this.progress = element;\n this.progressCtx = this.progress.getContext('2d', this.canvasContextAttributes);\n }\n /**\n * Update the dimensions\n *\n * @param {number} elementWidth Width of the entry\n * @param {number} totalWidth Total width of the multi canvas renderer\n * @param {number} width The new width of the element\n * @param {number} height The new height of the element\n */\n\n }, {\n key: \"updateDimensions\",\n value: function updateDimensions(elementWidth, totalWidth, width, height) {\n // where the canvas starts and ends in the waveform, represented as a\n // decimal between 0 and 1\n this.start = this.wave.offsetLeft / totalWidth || 0;\n this.end = this.start + elementWidth / totalWidth; // set wave canvas dimensions\n\n this.wave.width = width;\n this.wave.height = height;\n var elementSize = {\n width: elementWidth + 'px'\n };\n (0, _style.default)(this.wave, elementSize);\n\n if (this.hasProgressCanvas) {\n // set progress canvas dimensions\n this.progress.width = width;\n this.progress.height = height;\n (0, _style.default)(this.progress, elementSize);\n }\n }\n /**\n * Clear the wave and progress rendering contexts\n */\n\n }, {\n key: \"clearWave\",\n value: function clearWave() {\n // wave\n this.waveCtx.clearRect(0, 0, this.waveCtx.canvas.width, this.waveCtx.canvas.height); // progress\n\n if (this.hasProgressCanvas) {\n this.progressCtx.clearRect(0, 0, this.progressCtx.canvas.width, this.progressCtx.canvas.height);\n }\n }\n /**\n * Set the fill styles for wave and progress\n *\n * @param {string} waveColor Fill color for the wave canvas\n * @param {?string} progressColor Fill color for the progress canvas\n */\n\n }, {\n key: \"setFillStyles\",\n value: function setFillStyles(waveColor, progressColor) {\n this.waveCtx.fillStyle = waveColor;\n\n if (this.hasProgressCanvas) {\n this.progressCtx.fillStyle = progressColor;\n }\n }\n /**\n * Set the canvas transforms for wave and progress\n *\n * @param {boolean} vertical Whether to render vertically\n */\n\n }, {\n key: \"applyCanvasTransforms\",\n value: function applyCanvasTransforms(vertical) {\n if (vertical) {\n // Reflect the waveform across the line y = -x\n this.waveCtx.setTransform(0, 1, 1, 0, 0, 0);\n\n if (this.hasProgressCanvas) {\n this.progressCtx.setTransform(0, 1, 1, 0, 0, 0);\n }\n }\n }\n /**\n * Draw a rectangle for wave and progress\n *\n * @param {number} x X start position\n * @param {number} y Y start position\n * @param {number} width Width of the rectangle\n * @param {number} height Height of the rectangle\n * @param {number} radius Radius of the rectangle\n */\n\n }, {\n key: \"fillRects\",\n value: function fillRects(x, y, width, height, radius) {\n this.fillRectToContext(this.waveCtx, x, y, width, height, radius);\n\n if (this.hasProgressCanvas) {\n this.fillRectToContext(this.progressCtx, x, y, width, height, radius);\n }\n }\n /**\n * Draw the actual rectangle on a `canvas` element\n *\n * @param {CanvasRenderingContext2D} ctx Rendering context of target canvas\n * @param {number} x X start position\n * @param {number} y Y start position\n * @param {number} width Width of the rectangle\n * @param {number} height Height of the rectangle\n * @param {number} radius Radius of the rectangle\n */\n\n }, {\n key: \"fillRectToContext\",\n value: function fillRectToContext(ctx, x, y, width, height, radius) {\n if (!ctx) {\n return;\n }\n\n if (radius) {\n this.drawRoundedRect(ctx, x, y, width, height, radius);\n } else {\n ctx.fillRect(x, y, width, height);\n }\n }\n /**\n * Draw a rounded rectangle on Canvas\n *\n * @param {CanvasRenderingContext2D} ctx Canvas context\n * @param {number} x X-position of the rectangle\n * @param {number} y Y-position of the rectangle\n * @param {number} width Width of the rectangle\n * @param {number} height Height of the rectangle\n * @param {number} radius Radius of the rectangle\n *\n * @return {void}\n * @example drawRoundedRect(ctx, 50, 50, 5, 10, 3)\n */\n\n }, {\n key: \"drawRoundedRect\",\n value: function drawRoundedRect(ctx, x, y, width, height, radius) {\n if (height === 0) {\n return;\n } // peaks are float values from -1 to 1. Use absolute height values in\n // order to correctly calculate rounded rectangle coordinates\n\n\n if (height < 0) {\n height *= -1;\n y -= height;\n }\n\n ctx.beginPath();\n ctx.moveTo(x + radius, y);\n ctx.lineTo(x + width - radius, y);\n ctx.quadraticCurveTo(x + width, y, x + width, y + radius);\n ctx.lineTo(x + width, y + height - radius);\n ctx.quadraticCurveTo(x + width, y + height, x + width - radius, y + height);\n ctx.lineTo(x + radius, y + height);\n ctx.quadraticCurveTo(x, y + height, x, y + height - radius);\n ctx.lineTo(x, y + radius);\n ctx.quadraticCurveTo(x, y, x + radius, y);\n ctx.closePath();\n ctx.fill();\n }\n /**\n * Render the actual wave and progress lines\n *\n * @param {number[]} peaks Array with peaks data\n * @param {number} absmax Maximum peak value (absolute)\n * @param {number} halfH Half the height of the waveform\n * @param {number} offsetY Offset to the top\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that\n * should be rendered\n */\n\n }, {\n key: \"drawLines\",\n value: function drawLines(peaks, absmax, halfH, offsetY, start, end) {\n this.drawLineToContext(this.waveCtx, peaks, absmax, halfH, offsetY, start, end);\n\n if (this.hasProgressCanvas) {\n this.drawLineToContext(this.progressCtx, peaks, absmax, halfH, offsetY, start, end);\n }\n }\n /**\n * Render the actual waveform line on a `canvas` element\n *\n * @param {CanvasRenderingContext2D} ctx Rendering context of target canvas\n * @param {number[]} peaks Array with peaks data\n * @param {number} absmax Maximum peak value (absolute)\n * @param {number} halfH Half the height of the waveform\n * @param {number} offsetY Offset to the top\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that\n * should be rendered\n */\n\n }, {\n key: \"drawLineToContext\",\n value: function drawLineToContext(ctx, peaks, absmax, halfH, offsetY, start, end) {\n if (!ctx) {\n return;\n }\n\n var length = peaks.length / 2;\n var first = Math.round(length * this.start); // use one more peak value to make sure we join peaks at ends -- unless,\n // of course, this is the last canvas\n\n var last = Math.round(length * this.end) + 1;\n var canvasStart = first;\n var canvasEnd = last;\n var scale = this.wave.width / (canvasEnd - canvasStart - 1); // optimization\n\n var halfOffset = halfH + offsetY;\n var absmaxHalf = absmax / halfH;\n ctx.beginPath();\n ctx.moveTo((canvasStart - first) * scale, halfOffset);\n ctx.lineTo((canvasStart - first) * scale, halfOffset - Math.round((peaks[2 * canvasStart] || 0) / absmaxHalf));\n var i, peak, h;\n\n for (i = canvasStart; i < canvasEnd; i++) {\n peak = peaks[2 * i] || 0;\n h = Math.round(peak / absmaxHalf);\n ctx.lineTo((i - first) * scale + this.halfPixel, halfOffset - h);\n } // draw the bottom edge going backwards, to make a single\n // closed hull to fill\n\n\n var j = canvasEnd - 1;\n\n for (j; j >= canvasStart; j--) {\n peak = peaks[2 * j + 1] || 0;\n h = Math.round(peak / absmaxHalf);\n ctx.lineTo((j - first) * scale + this.halfPixel, halfOffset - h);\n }\n\n ctx.lineTo((canvasStart - first) * scale, halfOffset - Math.round((peaks[2 * canvasStart + 1] || 0) / absmaxHalf));\n ctx.closePath();\n ctx.fill();\n }\n /**\n * Destroys this entry\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.waveCtx = null;\n this.wave = null;\n this.progressCtx = null;\n this.progress = null;\n }\n /**\n * Return image data of the wave `canvas` element\n *\n * When using a `type` of `'blob'`, this will return a `Promise` that\n * resolves with a `Blob` instance.\n *\n * @param {string} format='image/png' An optional value of a format type.\n * @param {number} quality=0.92 An optional value between 0 and 1.\n * @param {string} type='dataURL' Either 'dataURL' or 'blob'.\n * @return {string|Promise} When using the default `'dataURL'` `type` this\n * returns a data URL. When using the `'blob'` `type` this returns a\n * `Promise` that resolves with a `Blob` instance.\n */\n\n }, {\n key: \"getImage\",\n value: function getImage(format, quality, type) {\n var _this = this;\n\n if (type === 'blob') {\n return new Promise(function (resolve) {\n _this.wave.toBlob(resolve, format, quality);\n });\n } else if (type === 'dataURL') {\n return this.wave.toDataURL(format, quality);\n }\n }\n }]);\n\n return CanvasEntry;\n}();\n\nexports.default = CanvasEntry;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./src/drawer.js\":\n/*!***********************!*\\\n !*** ./src/drawer.js ***!\n \\***********************/\n/***/ ((module, exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar util = _interopRequireWildcard(__webpack_require__(/*! ./util */ \"./src/util/index.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * Parent class for renderers\n *\n * @extends {Observer}\n */\nvar Drawer = /*#__PURE__*/function (_util$Observer) {\n _inherits(Drawer, _util$Observer);\n\n var _super = _createSuper(Drawer);\n\n /**\n * @param {HTMLElement} container The container node of the wavesurfer instance\n * @param {WavesurferParams} params The wavesurfer initialisation options\n */\n function Drawer(container, params) {\n var _this;\n\n _classCallCheck(this, Drawer);\n\n _this = _super.call(this);\n _this.container = util.withOrientation(container, params.vertical);\n /**\n * @type {WavesurferParams}\n */\n\n _this.params = params;\n /**\n * The width of the renderer\n * @type {number}\n */\n\n _this.width = 0;\n /**\n * The height of the renderer\n * @type {number}\n */\n\n _this.height = params.height * _this.params.pixelRatio;\n _this.lastPos = 0;\n /**\n * The `` element which is added to the container\n * @type {HTMLElement}\n */\n\n _this.wrapper = null;\n return _this;\n }\n /**\n * Alias of `util.style`\n *\n * @param {HTMLElement} el The element that the styles will be applied to\n * @param {Object} styles The map of propName: attribute, both are used as-is\n * @return {HTMLElement} el\n */\n\n\n _createClass(Drawer, [{\n key: \"style\",\n value: function style(el, styles) {\n return util.style(el, styles);\n }\n /**\n * Create the wrapper `` element, style it and set up the events for\n * interaction\n */\n\n }, {\n key: \"createWrapper\",\n value: function createWrapper() {\n this.wrapper = util.withOrientation(this.container.appendChild(document.createElement('wave')), this.params.vertical);\n this.style(this.wrapper, {\n display: 'block',\n position: 'relative',\n userSelect: 'none',\n webkitUserSelect: 'none',\n height: this.params.height + 'px'\n });\n\n if (this.params.fillParent || this.params.scrollParent) {\n this.style(this.wrapper, {\n width: '100%',\n overflowX: this.params.hideScrollbar ? 'hidden' : 'auto',\n overflowY: 'hidden'\n });\n }\n\n this.setupWrapperEvents();\n }\n /**\n * Handle click event\n *\n * @param {Event} e Click event\n * @param {?boolean} noPrevent Set to true to not call `e.preventDefault()`\n * @return {number} Playback position from 0 to 1\n */\n\n }, {\n key: \"handleEvent\",\n value: function handleEvent(e, noPrevent) {\n !noPrevent && e.preventDefault();\n var clientX = util.withOrientation(e.targetTouches ? e.targetTouches[0] : e, this.params.vertical).clientX;\n var bbox = this.wrapper.getBoundingClientRect();\n var nominalWidth = this.width;\n var parentWidth = this.getWidth();\n var progressPixels = this.getProgressPixels(bbox, clientX);\n var progress;\n\n if (!this.params.fillParent && nominalWidth < parentWidth) {\n progress = progressPixels * (this.params.pixelRatio / nominalWidth) || 0;\n } else {\n progress = (progressPixels + this.wrapper.scrollLeft) / this.wrapper.scrollWidth || 0;\n }\n\n return util.clamp(progress, 0, 1);\n }\n }, {\n key: \"getProgressPixels\",\n value: function getProgressPixels(wrapperBbox, clientX) {\n if (this.params.rtl) {\n return wrapperBbox.right - clientX;\n } else {\n return clientX - wrapperBbox.left;\n }\n }\n }, {\n key: \"setupWrapperEvents\",\n value: function setupWrapperEvents() {\n var _this2 = this;\n\n this.wrapper.addEventListener('click', function (e) {\n var orientedEvent = util.withOrientation(e, _this2.params.vertical);\n var scrollbarHeight = _this2.wrapper.offsetHeight - _this2.wrapper.clientHeight;\n\n if (scrollbarHeight !== 0) {\n // scrollbar is visible. Check if click was on it\n var bbox = _this2.wrapper.getBoundingClientRect();\n\n if (orientedEvent.clientY >= bbox.bottom - scrollbarHeight) {\n // ignore mousedown as it was on the scrollbar\n return;\n }\n }\n\n if (_this2.params.interact) {\n _this2.fireEvent('click', e, _this2.handleEvent(e));\n }\n });\n this.wrapper.addEventListener('dblclick', function (e) {\n if (_this2.params.interact) {\n _this2.fireEvent('dblclick', e, _this2.handleEvent(e));\n }\n });\n this.wrapper.addEventListener('scroll', function (e) {\n return _this2.fireEvent('scroll', e);\n });\n }\n /**\n * Draw peaks on the canvas\n *\n * @param {number[]|Number.} peaks Can also be an array of arrays\n * for split channel rendering\n * @param {number} length The width of the area that should be drawn\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that should be\n * rendered\n */\n\n }, {\n key: \"drawPeaks\",\n value: function drawPeaks(peaks, length, start, end) {\n if (!this.setWidth(length)) {\n this.clearWave();\n }\n\n this.params.barWidth ? this.drawBars(peaks, 0, start, end) : this.drawWave(peaks, 0, start, end);\n }\n /**\n * Scroll to the beginning\n */\n\n }, {\n key: \"resetScroll\",\n value: function resetScroll() {\n if (this.wrapper !== null) {\n this.wrapper.scrollLeft = 0;\n }\n }\n /**\n * Recenter the view-port at a certain percent of the waveform\n *\n * @param {number} percent Value from 0 to 1 on the waveform\n */\n\n }, {\n key: \"recenter\",\n value: function recenter(percent) {\n var position = this.wrapper.scrollWidth * percent;\n this.recenterOnPosition(position, true);\n }\n /**\n * Recenter the view-port on a position, either scroll there immediately or\n * in steps of 5 pixels\n *\n * @param {number} position X-offset in pixels\n * @param {boolean} immediate Set to true to immediately scroll somewhere\n */\n\n }, {\n key: \"recenterOnPosition\",\n value: function recenterOnPosition(position, immediate) {\n var scrollLeft = this.wrapper.scrollLeft;\n var half = ~~(this.wrapper.clientWidth / 2);\n var maxScroll = this.wrapper.scrollWidth - this.wrapper.clientWidth;\n var target = position - half;\n var offset = target - scrollLeft;\n\n if (maxScroll == 0) {\n // no need to continue if scrollbar is not there\n return;\n } // if the cursor is currently visible...\n\n\n if (!immediate && -half <= offset && offset < half) {\n // set rate at which waveform is centered\n var rate = this.params.autoCenterRate; // make rate depend on width of view and length of waveform\n\n rate /= half;\n rate *= maxScroll;\n offset = Math.max(-rate, Math.min(rate, offset));\n target = scrollLeft + offset;\n } // limit target to valid range (0 to maxScroll)\n\n\n target = Math.max(0, Math.min(maxScroll, target)); // no use attempting to scroll if we're not moving\n\n if (target != scrollLeft) {\n this.wrapper.scrollLeft = target;\n }\n }\n /**\n * Get the current scroll position in pixels\n *\n * @return {number} Horizontal scroll position in pixels\n */\n\n }, {\n key: \"getScrollX\",\n value: function getScrollX() {\n var x = 0;\n\n if (this.wrapper) {\n var pixelRatio = this.params.pixelRatio;\n x = Math.round(this.wrapper.scrollLeft * pixelRatio); // In cases of elastic scroll (safari with mouse wheel) you can\n // scroll beyond the limits of the container\n // Calculate and floor the scrollable extent to make sure an out\n // of bounds value is not returned\n // Ticket #1312\n\n if (this.params.scrollParent) {\n var maxScroll = ~~(this.wrapper.scrollWidth * pixelRatio - this.getWidth());\n x = Math.min(maxScroll, Math.max(0, x));\n }\n }\n\n return x;\n }\n /**\n * Get the width of the container\n *\n * @return {number} The width of the container\n */\n\n }, {\n key: \"getWidth\",\n value: function getWidth() {\n return Math.round(this.container.clientWidth * this.params.pixelRatio);\n }\n /**\n * Set the width of the container\n *\n * @param {number} width The new width of the container\n * @return {boolean} Whether the width of the container was updated or not\n */\n\n }, {\n key: \"setWidth\",\n value: function setWidth(width) {\n if (this.width == width) {\n return false;\n }\n\n this.width = width;\n\n if (this.params.fillParent || this.params.scrollParent) {\n this.style(this.wrapper, {\n width: ''\n });\n } else {\n var newWidth = ~~(this.width / this.params.pixelRatio) + 'px';\n this.style(this.wrapper, {\n width: newWidth\n });\n }\n\n this.updateSize();\n return true;\n }\n /**\n * Set the height of the container\n *\n * @param {number} height The new height of the container.\n * @return {boolean} Whether the height of the container was updated or not\n */\n\n }, {\n key: \"setHeight\",\n value: function setHeight(height) {\n if (height == this.height) {\n return false;\n }\n\n this.height = height;\n this.style(this.wrapper, {\n height: ~~(this.height / this.params.pixelRatio) + 'px'\n });\n this.updateSize();\n return true;\n }\n /**\n * Called by wavesurfer when progress should be rendered\n *\n * @param {number} progress From 0 to 1\n */\n\n }, {\n key: \"progress\",\n value: function progress(_progress) {\n var minPxDelta = 1 / this.params.pixelRatio;\n var pos = Math.round(_progress * this.width) * minPxDelta;\n\n if (pos < this.lastPos || pos - this.lastPos >= minPxDelta) {\n this.lastPos = pos;\n\n if (this.params.scrollParent && this.params.autoCenter) {\n var newPos = ~~(this.wrapper.scrollWidth * _progress);\n this.recenterOnPosition(newPos, this.params.autoCenterImmediately);\n }\n\n this.updateProgress(pos);\n }\n }\n /**\n * This is called when wavesurfer is destroyed\n */\n\n }, {\n key: \"destroy\",\n value: function destroy() {\n this.unAll();\n\n if (this.wrapper) {\n if (this.wrapper.parentNode == this.container.domElement) {\n this.container.removeChild(this.wrapper.domElement);\n }\n\n this.wrapper = null;\n }\n }\n /* Renderer-specific methods */\n\n /**\n * Called after cursor related params have changed.\n *\n * @abstract\n */\n\n }, {\n key: \"updateCursor\",\n value: function updateCursor() {}\n /**\n * Called when the size of the container changes so the renderer can adjust\n *\n * @abstract\n */\n\n }, {\n key: \"updateSize\",\n value: function updateSize() {}\n /**\n * Draw a waveform with bars\n *\n * @abstract\n * @param {number[]|Number.} peaks Can also be an array of arrays for split channel\n * rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that should be\n * rendered\n */\n\n }, {\n key: \"drawBars\",\n value: function drawBars(peaks, channelIndex, start, end) {}\n /**\n * Draw a waveform\n *\n * @abstract\n * @param {number[]|Number.} peaks Can also be an array of arrays for split channel\n * rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that should be\n * rendered\n */\n\n }, {\n key: \"drawWave\",\n value: function drawWave(peaks, channelIndex, start, end) {}\n /**\n * Clear the waveform\n *\n * @abstract\n */\n\n }, {\n key: \"clearWave\",\n value: function clearWave() {}\n /**\n * Render the new progress\n *\n * @abstract\n * @param {number} position X-Offset of progress position in pixels\n */\n\n }, {\n key: \"updateProgress\",\n value: function updateProgress(position) {}\n }]);\n\n return Drawer;\n}(util.Observer);\n\nexports.default = Drawer;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./src/drawer.multicanvas.js\":\n/*!***********************************!*\\\n !*** ./src/drawer.multicanvas.js ***!\n \\***********************************/\n/***/ ((module, exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _drawer = _interopRequireDefault(__webpack_require__(/*! ./drawer */ \"./src/drawer.js\"));\n\nvar util = _interopRequireWildcard(__webpack_require__(/*! ./util */ \"./src/util/index.js\"));\n\nvar _drawer2 = _interopRequireDefault(__webpack_require__(/*! ./drawer.canvasentry */ \"./src/drawer.canvasentry.js\"));\n\nfunction _getRequireWildcardCache(nodeInterop) { if (typeof WeakMap !== \"function\") return null; var cacheBabelInterop = new WeakMap(); var cacheNodeInterop = new WeakMap(); return (_getRequireWildcardCache = function _getRequireWildcardCache(nodeInterop) { return nodeInterop ? cacheNodeInterop : cacheBabelInterop; })(nodeInterop); }\n\nfunction _interopRequireWildcard(obj, nodeInterop) { if (!nodeInterop && obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { default: obj }; } var cache = _getRequireWildcardCache(nodeInterop); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (key !== \"default\" && Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj.default = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * MultiCanvas renderer for wavesurfer. Is currently the default and sole\n * builtin renderer.\n *\n * A `MultiCanvas` consists of one or more `CanvasEntry` instances, depending\n * on the zoom level.\n */\nvar MultiCanvas = /*#__PURE__*/function (_Drawer) {\n _inherits(MultiCanvas, _Drawer);\n\n var _super = _createSuper(MultiCanvas);\n\n /**\n * @param {HTMLElement} container The container node of the wavesurfer instance\n * @param {WavesurferParams} params The wavesurfer initialisation options\n */\n function MultiCanvas(container, params) {\n var _this;\n\n _classCallCheck(this, MultiCanvas);\n\n _this = _super.call(this, container, params);\n /**\n * @type {number}\n */\n\n _this.maxCanvasWidth = params.maxCanvasWidth;\n /**\n * @type {number}\n */\n\n _this.maxCanvasElementWidth = Math.round(params.maxCanvasWidth / params.pixelRatio);\n /**\n * Whether or not the progress wave is rendered. If the `waveColor`\n * and `progressColor` are the same color it is not.\n *\n * @type {boolean}\n */\n\n _this.hasProgressCanvas = params.waveColor != params.progressColor;\n /**\n * @type {number}\n */\n\n _this.halfPixel = 0.5 / params.pixelRatio;\n /**\n * List of `CanvasEntry` instances.\n *\n * @type {Array}\n */\n\n _this.canvases = [];\n /**\n * @type {HTMLElement}\n */\n\n _this.progressWave = null;\n /**\n * Class used to generate entries.\n *\n * @type {function}\n */\n\n _this.EntryClass = _drawer2.default;\n /**\n * Canvas 2d context attributes.\n *\n * @type {object}\n */\n\n _this.canvasContextAttributes = params.drawingContextAttributes;\n /**\n * Overlap added between entries to prevent vertical white stripes\n * between `canvas` elements.\n *\n * @type {number}\n */\n\n _this.overlap = 2 * Math.ceil(params.pixelRatio / 2);\n /**\n * The radius of the wave bars. Makes bars rounded\n *\n * @type {number}\n */\n\n _this.barRadius = params.barRadius || 0;\n /**\n * Whether to render the waveform vertically. Defaults to false.\n *\n * @type {boolean}\n */\n\n _this.vertical = params.vertical;\n return _this;\n }\n /**\n * Initialize the drawer\n */\n\n\n _createClass(MultiCanvas, [{\n key: \"init\",\n value: function init() {\n this.createWrapper();\n this.createElements();\n }\n /**\n * Create the canvas elements and style them\n *\n */\n\n }, {\n key: \"createElements\",\n value: function createElements() {\n this.progressWave = util.withOrientation(this.wrapper.appendChild(document.createElement('wave')), this.params.vertical);\n this.style(this.progressWave, {\n position: 'absolute',\n zIndex: 3,\n left: 0,\n top: 0,\n bottom: 0,\n overflow: 'hidden',\n width: '0',\n display: 'none',\n boxSizing: 'border-box',\n borderRightStyle: 'solid',\n pointerEvents: 'none'\n });\n this.addCanvas();\n this.updateCursor();\n }\n /**\n * Update cursor style\n */\n\n }, {\n key: \"updateCursor\",\n value: function updateCursor() {\n this.style(this.progressWave, {\n borderRightWidth: this.params.cursorWidth + 'px',\n borderRightColor: this.params.cursorColor\n });\n }\n /**\n * Adjust to the updated size by adding or removing canvases\n */\n\n }, {\n key: \"updateSize\",\n value: function updateSize() {\n var _this2 = this;\n\n var totalWidth = Math.round(this.width / this.params.pixelRatio);\n var requiredCanvases = Math.ceil(totalWidth / (this.maxCanvasElementWidth + this.overlap)); // add required canvases\n\n while (this.canvases.length < requiredCanvases) {\n this.addCanvas();\n } // remove older existing canvases, if any\n\n\n while (this.canvases.length > requiredCanvases) {\n this.removeCanvas();\n }\n\n var canvasWidth = this.maxCanvasWidth + this.overlap;\n var lastCanvas = this.canvases.length - 1;\n this.canvases.forEach(function (entry, i) {\n if (i == lastCanvas) {\n canvasWidth = _this2.width - _this2.maxCanvasWidth * lastCanvas;\n }\n\n _this2.updateDimensions(entry, canvasWidth, _this2.height);\n\n entry.clearWave();\n });\n }\n /**\n * Add a canvas to the canvas list\n *\n */\n\n }, {\n key: \"addCanvas\",\n value: function addCanvas() {\n var entry = new this.EntryClass();\n entry.canvasContextAttributes = this.canvasContextAttributes;\n entry.hasProgressCanvas = this.hasProgressCanvas;\n entry.halfPixel = this.halfPixel;\n var leftOffset = this.maxCanvasElementWidth * this.canvases.length; // wave\n\n var wave = util.withOrientation(this.wrapper.appendChild(document.createElement('canvas')), this.params.vertical);\n this.style(wave, {\n position: 'absolute',\n zIndex: 2,\n left: leftOffset + 'px',\n top: 0,\n bottom: 0,\n height: '100%',\n pointerEvents: 'none'\n });\n entry.initWave(wave); // progress\n\n if (this.hasProgressCanvas) {\n var progress = util.withOrientation(this.progressWave.appendChild(document.createElement('canvas')), this.params.vertical);\n this.style(progress, {\n position: 'absolute',\n left: leftOffset + 'px',\n top: 0,\n bottom: 0,\n height: '100%'\n });\n entry.initProgress(progress);\n }\n\n this.canvases.push(entry);\n }\n /**\n * Pop single canvas from the list\n *\n */\n\n }, {\n key: \"removeCanvas\",\n value: function removeCanvas() {\n var lastEntry = this.canvases[this.canvases.length - 1]; // wave\n\n lastEntry.wave.parentElement.removeChild(lastEntry.wave.domElement); // progress\n\n if (this.hasProgressCanvas) {\n lastEntry.progress.parentElement.removeChild(lastEntry.progress.domElement);\n } // cleanup\n\n\n if (lastEntry) {\n lastEntry.destroy();\n lastEntry = null;\n }\n\n this.canvases.pop();\n }\n /**\n * Update the dimensions of a canvas element\n *\n * @param {CanvasEntry} entry Target entry\n * @param {number} width The new width of the element\n * @param {number} height The new height of the element\n */\n\n }, {\n key: \"updateDimensions\",\n value: function updateDimensions(entry, width, height) {\n var elementWidth = Math.round(width / this.params.pixelRatio);\n var totalWidth = Math.round(this.width / this.params.pixelRatio); // update canvas dimensions\n\n entry.updateDimensions(elementWidth, totalWidth, width, height); // style element\n\n this.style(this.progressWave, {\n display: 'block'\n });\n }\n /**\n * Clear the whole multi-canvas\n */\n\n }, {\n key: \"clearWave\",\n value: function clearWave() {\n var _this3 = this;\n\n util.frame(function () {\n _this3.canvases.forEach(function (entry) {\n return entry.clearWave();\n });\n })();\n }\n /**\n * Draw a waveform with bars\n *\n * @param {number[]|Number.} peaks Can also be an array of arrays\n * for split channel rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0. Must be an integer.\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that should be\n * rendered\n * @returns {void}\n */\n\n }, {\n key: \"drawBars\",\n value: function drawBars(peaks, channelIndex, start, end) {\n var _this4 = this;\n\n return this.prepareDraw(peaks, channelIndex, start, end, function (_ref) {\n var absmax = _ref.absmax,\n hasMinVals = _ref.hasMinVals,\n height = _ref.height,\n offsetY = _ref.offsetY,\n halfH = _ref.halfH,\n peaks = _ref.peaks,\n ch = _ref.channelIndex;\n\n // if drawBars was called within ws.empty we don't pass a start and\n // don't want anything to happen\n if (start === undefined) {\n return;\n } // Skip every other value if there are negatives.\n\n\n var peakIndexScale = hasMinVals ? 2 : 1;\n var length = peaks.length / peakIndexScale;\n var bar = _this4.params.barWidth * _this4.params.pixelRatio;\n var gap = _this4.params.barGap === null ? Math.max(_this4.params.pixelRatio, ~~(bar / 2)) : Math.max(_this4.params.pixelRatio, _this4.params.barGap * _this4.params.pixelRatio);\n var step = bar + gap;\n var scale = length / _this4.width;\n var first = start;\n var last = end;\n var i = first;\n\n for (i; i < last; i += step) {\n var peak = peaks[Math.floor(i * scale * peakIndexScale)] || 0;\n var h = Math.round(peak / absmax * halfH);\n /* in case of silences, allow the user to specify that we\n * always draw *something* (normally a 1px high bar) */\n\n if (h == 0 && _this4.params.barMinHeight) {\n h = _this4.params.barMinHeight;\n }\n\n _this4.fillRect(i + _this4.halfPixel, halfH - h + offsetY, bar + _this4.halfPixel, h * 2, _this4.barRadius, ch);\n }\n });\n }\n /**\n * Draw a waveform\n *\n * @param {number[]|Number.} peaks Can also be an array of arrays\n * for split channel rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0\n * @param {number?} start The x-offset of the beginning of the area that\n * should be rendered (If this isn't set only a flat line is rendered)\n * @param {number?} end The x-offset of the end of the area that should be\n * rendered\n * @returns {void}\n */\n\n }, {\n key: \"drawWave\",\n value: function drawWave(peaks, channelIndex, start, end) {\n var _this5 = this;\n\n return this.prepareDraw(peaks, channelIndex, start, end, function (_ref2) {\n var absmax = _ref2.absmax,\n hasMinVals = _ref2.hasMinVals,\n height = _ref2.height,\n offsetY = _ref2.offsetY,\n halfH = _ref2.halfH,\n peaks = _ref2.peaks,\n channelIndex = _ref2.channelIndex;\n\n if (!hasMinVals) {\n var reflectedPeaks = [];\n var len = peaks.length;\n var i = 0;\n\n for (i; i < len; i++) {\n reflectedPeaks[2 * i] = peaks[i];\n reflectedPeaks[2 * i + 1] = -peaks[i];\n }\n\n peaks = reflectedPeaks;\n } // if drawWave was called within ws.empty we don't pass a start and\n // end and simply want a flat line\n\n\n if (start !== undefined) {\n _this5.drawLine(peaks, absmax, halfH, offsetY, start, end, channelIndex);\n } // always draw a median line\n\n\n _this5.fillRect(0, halfH + offsetY - _this5.halfPixel, _this5.width, _this5.halfPixel, _this5.barRadius, channelIndex);\n });\n }\n /**\n * Tell the canvas entries to render their portion of the waveform\n *\n * @param {number[]} peaks Peaks data\n * @param {number} absmax Maximum peak value (absolute)\n * @param {number} halfH Half the height of the waveform\n * @param {number} offsetY Offset to the top\n * @param {number} start The x-offset of the beginning of the area that\n * should be rendered\n * @param {number} end The x-offset of the end of the area that\n * should be rendered\n * @param {channelIndex} channelIndex The channel index of the line drawn\n */\n\n }, {\n key: \"drawLine\",\n value: function drawLine(peaks, absmax, halfH, offsetY, start, end, channelIndex) {\n var _this6 = this;\n\n var _ref3 = this.params.splitChannelsOptions.channelColors[channelIndex] || {},\n waveColor = _ref3.waveColor,\n progressColor = _ref3.progressColor;\n\n this.canvases.forEach(function (entry, i) {\n _this6.setFillStyles(entry, waveColor, progressColor);\n\n _this6.applyCanvasTransforms(entry, _this6.params.vertical);\n\n entry.drawLines(peaks, absmax, halfH, offsetY, start, end);\n });\n }\n /**\n * Draw a rectangle on the multi-canvas\n *\n * @param {number} x X-position of the rectangle\n * @param {number} y Y-position of the rectangle\n * @param {number} width Width of the rectangle\n * @param {number} height Height of the rectangle\n * @param {number} radius Radius of the rectangle\n * @param {channelIndex} channelIndex The channel index of the bar drawn\n */\n\n }, {\n key: \"fillRect\",\n value: function fillRect(x, y, width, height, radius, channelIndex) {\n var startCanvas = Math.floor(x / this.maxCanvasWidth);\n var endCanvas = Math.min(Math.ceil((x + width) / this.maxCanvasWidth) + 1, this.canvases.length);\n var i = startCanvas;\n\n for (i; i < endCanvas; i++) {\n var entry = this.canvases[i];\n var leftOffset = i * this.maxCanvasWidth;\n var intersection = {\n x1: Math.max(x, i * this.maxCanvasWidth),\n y1: y,\n x2: Math.min(x + width, i * this.maxCanvasWidth + entry.wave.width),\n y2: y + height\n };\n\n if (intersection.x1 < intersection.x2) {\n var _ref4 = this.params.splitChannelsOptions.channelColors[channelIndex] || {},\n waveColor = _ref4.waveColor,\n progressColor = _ref4.progressColor;\n\n this.setFillStyles(entry, waveColor, progressColor);\n this.applyCanvasTransforms(entry, this.params.vertical);\n entry.fillRects(intersection.x1 - leftOffset, intersection.y1, intersection.x2 - intersection.x1, intersection.y2 - intersection.y1, radius);\n }\n }\n }\n /**\n * Returns whether to hide the channel from being drawn based on params.\n *\n * @param {number} channelIndex The index of the current channel.\n * @returns {bool} True to hide the channel, false to draw.\n */\n\n }, {\n key: \"hideChannel\",\n value: function hideChannel(channelIndex) {\n return this.params.splitChannels && this.params.splitChannelsOptions.filterChannels.includes(channelIndex);\n }\n /**\n * Performs preparation tasks and calculations which are shared by `drawBars`\n * and `drawWave`\n *\n * @param {number[]|Number.} peaks Can also be an array of arrays for\n * split channel rendering\n * @param {number} channelIndex The index of the current channel. Normally\n * should be 0\n * @param {number?} start The x-offset of the beginning of the area that\n * should be rendered. If this isn't set only a flat line is rendered\n * @param {number?} end The x-offset of the end of the area that should be\n * rendered\n * @param {function} fn The render function to call, e.g. `drawWave`\n * @param {number} drawIndex The index of the current channel after filtering.\n * @param {number?} normalizedMax Maximum modulation value across channels for use with relativeNormalization. Ignored when undefined\n * @returns {void}\n */\n\n }, {\n key: \"prepareDraw\",\n value: function prepareDraw(peaks, channelIndex, start, end, fn, drawIndex, normalizedMax) {\n var _this7 = this;\n\n return util.frame(function () {\n // Split channels and call this function with the channelIndex set\n if (peaks[0] instanceof Array) {\n var channels = peaks;\n\n if (_this7.params.splitChannels) {\n var filteredChannels = channels.filter(function (c, i) {\n return !_this7.hideChannel(i);\n });\n\n if (!_this7.params.splitChannelsOptions.overlay) {\n _this7.setHeight(Math.max(filteredChannels.length, 1) * _this7.params.height * _this7.params.pixelRatio);\n }\n\n var overallAbsMax;\n\n if (_this7.params.splitChannelsOptions && _this7.params.splitChannelsOptions.relativeNormalization) {\n // calculate maximum peak across channels to use for normalization\n overallAbsMax = util.max(channels.map(function (channelPeaks) {\n return util.absMax(channelPeaks);\n }));\n }\n\n return channels.forEach(function (channelPeaks, i) {\n return _this7.prepareDraw(channelPeaks, i, start, end, fn, filteredChannels.indexOf(channelPeaks), overallAbsMax);\n });\n }\n\n peaks = channels[0];\n } // Return and do not draw channel peaks if hidden.\n\n\n if (_this7.hideChannel(channelIndex)) {\n return;\n } // calculate maximum modulation value, either from the barHeight\n // parameter or if normalize=true from the largest value in the peak\n // set\n\n\n var absmax = 1 / _this7.params.barHeight;\n\n if (_this7.params.normalize) {\n absmax = normalizedMax === undefined ? util.absMax(peaks) : normalizedMax;\n } // Bar wave draws the bottom only as a reflection of the top,\n // so we don't need negative values\n\n\n var hasMinVals = [].some.call(peaks, function (val) {\n return val < 0;\n });\n var height = _this7.params.height * _this7.params.pixelRatio;\n var halfH = height / 2;\n var offsetY = height * drawIndex || 0; // Override offsetY if overlay is true\n\n if (_this7.params.splitChannelsOptions && _this7.params.splitChannelsOptions.overlay) {\n offsetY = 0;\n }\n\n return fn({\n absmax: absmax,\n hasMinVals: hasMinVals,\n height: height,\n offsetY: offsetY,\n halfH: halfH,\n peaks: peaks,\n channelIndex: channelIndex\n });\n })();\n }\n /**\n * Set the fill styles for a certain entry (wave and progress)\n *\n * @param {CanvasEntry} entry Target entry\n * @param {string} waveColor Wave color to draw this entry\n * @param {string} progressColor Progress color to draw this entry\n */\n\n }, {\n key: \"setFillStyles\",\n value: function setFillStyles(entry) {\n var waveColor = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : this.params.waveColor;\n var progressColor = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : this.params.progressColor;\n entry.setFillStyles(waveColor, progressColor);\n }\n /**\n * Set the canvas transforms for a certain entry (wave and progress)\n *\n * @param {CanvasEntry} entry Target entry\n * @param {boolean} vertical Whether to render the waveform vertically\n */\n\n }, {\n key: \"applyCanvasTransforms\",\n value: function applyCanvasTransforms(entry) {\n var vertical = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n entry.applyCanvasTransforms(vertical);\n }\n /**\n * Return image data of the multi-canvas\n *\n * When using a `type` of `'blob'`, this will return a `Promise`.\n *\n * @param {string} format='image/png' An optional value of a format type.\n * @param {number} quality=0.92 An optional value between 0 and 1.\n * @param {string} type='dataURL' Either 'dataURL' or 'blob'.\n * @return {string|string[]|Promise} When using the default `'dataURL'`\n * `type` this returns a single data URL or an array of data URLs,\n * one for each canvas. When using the `'blob'` `type` this returns a\n * `Promise` that resolves with an array of `Blob` instances, one for each\n * canvas.\n */\n\n }, {\n key: \"getImage\",\n value: function getImage(format, quality, type) {\n if (type === 'blob') {\n return Promise.all(this.canvases.map(function (entry) {\n return entry.getImage(format, quality, type);\n }));\n } else if (type === 'dataURL') {\n var images = this.canvases.map(function (entry) {\n return entry.getImage(format, quality, type);\n });\n return images.length > 1 ? images : images[0];\n }\n }\n /**\n * Render the new progress\n *\n * @param {number} position X-offset of progress position in pixels\n */\n\n }, {\n key: \"updateProgress\",\n value: function updateProgress(position) {\n this.style(this.progressWave, {\n width: position + 'px'\n });\n }\n }]);\n\n return MultiCanvas;\n}(_drawer.default);\n\nexports.default = MultiCanvas;\nmodule.exports = exports.default;\n\n/***/ }),\n\n/***/ \"./src/mediaelement-webaudio.js\":\n/*!**************************************!*\\\n !*** ./src/mediaelement-webaudio.js ***!\n \\**************************************/\n/***/ ((module, exports, __webpack_require__) => {\n\n\"use strict\";\n\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", ({\n value: true\n}));\nexports.default = void 0;\n\nvar _mediaelement = _interopRequireDefault(__webpack_require__(/*! ./mediaelement */ \"./src/mediaelement.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if (\"value\" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _get(target, property, receiver) { if (typeof Reflect !== \"undefined\" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }\n\nfunction _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf(Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf(this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn(this, result); }; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } else if (call !== void 0) { throw new TypeError(\"Derived constructors may only return object or undefined\"); } return _assertThisInitialized(self); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\n/**\n * MediaElementWebAudio backend: load audio via an HTML5 audio tag, but playback with the WebAudio API.\n * The advantage here is that the html5