{"version":3,"file":"static/js/main.42cd776a.js","mappings":"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,QAAU,CACfqpC,QAAS,CACP3kC,KAAM,EACNklC,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,kEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,sEAIN5C,IAAK,CACH7F,IAAK,EACLyI,OAAQ,CACN,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,iEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,kEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,mEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,oEAEF,CACE,mEACA,2GCrwBR,IAAIlD,EAAQ1mC,EACR6N,EAAK7D,EAAQ,OACb68B,EAAY78B,EAAQ,OACpB88B,EAAW98B,EAAQ,OAEvB08B,EAAM5a,OAAS+a,EACfH,EAAM9Y,QAAUkZ,EAASlZ,QACzB8Y,EAAMC,MAAQG,EAASH,MACvBD,EAAMhb,MAAQob,EAASpb,MACvBgb,EAAMttB,OAAS0tB,EAAS1tB,OA6BxBstB,EAAMK,OA1BN,SAAgB5Z,EAAKU,EAAG7W,GACtB,IAAIgwB,EAAM,IAAI1mC,MAAMiV,KAAK6X,IAAID,EAAIuD,YAAa1Z,GAAQ,GACtDgwB,EAAIC,KAAK,GAKT,IAHA,IAAIxN,EAAK,GAAM5L,EAAI,EACfsB,EAAIhC,EAAIoB,QAEHnuB,EAAI,EAAGA,EAAI4mC,EAAI7mC,OAAQC,IAAK,CACnC,IAAI6gC,EACA9S,EAAMgB,EAAEiB,MAAMqJ,EAAK,GACnBtK,EAAE0N,SAEFoE,EADE9S,GAAOsL,GAAM,GAAK,GACfA,GAAM,GAAKtL,EAEZA,EACNgB,EAAEkM,MAAM4F,IAERA,EAAI,EAGN+F,EAAI5mC,GAAK6gC,EACT9R,EAAEkB,OAAO,GAGX,OAAO2W,GA2DTN,EAAMQ,OAtDN,SAAgBC,EAAIC,GAClB,IAAIC,EAAM,CACR,GACA,IAGFF,EAAKA,EAAG5Y,QACR6Y,EAAKA,EAAG7Y,QAIR,IAHA,IAEI+Y,EAFAC,EAAK,EACLC,EAAK,EAEFL,EAAG/J,MAAMmK,GAAM,GAAKH,EAAGhK,MAAMoK,GAAM,GAAG,CAE3C,IAMIC,EAYAC,EAlBAC,EAAOR,EAAG/W,MAAM,GAAKmX,EAAM,EAC3BK,EAAOR,EAAGhX,MAAM,GAAKoX,EAAM,EACnB,IAARG,IACFA,GAAO,GACG,IAARC,IACFA,GAAO,GAGPH,EADgB,KAAP,EAANE,GACE,EAGO,KADZL,EAAMH,EAAG/W,MAAM,GAAKmX,EAAM,IACF,IAAPD,GAAqB,IAARM,EAGvBD,GAFCA,EAIVN,EAAI,GAAGzkC,KAAK6kC,GAIVC,EADgB,KAAP,EAANE,GACE,EAGO,KADZN,EAAMF,EAAGhX,MAAM,GAAKoX,EAAM,IACF,IAAPF,GAAqB,IAARK,EAGvBC,GAFCA,EAIVP,EAAI,GAAGzkC,KAAK8kC,GAGR,EAAIH,IAAOE,EAAK,IAClBF,EAAK,EAAIA,GACP,EAAIC,IAAOE,EAAK,IAClBF,EAAK,EAAIA,GACXL,EAAG9W,OAAO,GACV+W,EAAG/W,OAAO,GAGZ,OAAOgX,GAWTX,EAAMmB,eAPN,SAAwBxiC,EAAKoD,EAAMq/B,GACjC,IAAI5mC,EAAM,IAAMuH,EAChBpD,EAAItC,UAAU0F,GAAQ,WACpB,YAAqBzG,IAAdL,KAAKT,GAAqBS,KAAKT,GACpCS,KAAKT,GAAO4mC,EAASrjC,KAAK9C,QAShC+kC,EAAMqB,WAJN,SAAoBpmB,GAClB,MAAwB,kBAAVA,EAAqB+kB,EAAM9Y,QAAQjM,EAAO,OACtDA,GAOJ+kB,EAAMsB,UAHN,SAAmBrmB,GACjB,OAAO,IAAI9T,EAAG8T,EAAO,MAAO,+BCnH9B,SAAW5hB,EAAQC,GACjB,aAGA,SAAS8rB,EAAQC,EAAKxd,GACpB,IAAKwd,EAAK,MAAM,IAAIlf,MAAM0B,GAAO,oBAKnC,SAASyd,EAAUC,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAASrpB,UAAYmpB,EAAUnpB,UAC/BkpB,EAAKlpB,UAAY,IAAIqpB,EACrBH,EAAKlpB,UAAUqC,YAAc6mB,EAK/B,SAASpe,EAAIwe,EAAQ1mB,EAAM2mB,GACzB,GAAIze,EAAGZ,KAAKof,GACV,OAAOA,EAGT1qB,KAAK4qB,SAAW,EAChB5qB,KAAK6qB,MAAQ,KACb7qB,KAAKxB,OAAS,EAGdwB,KAAK8qB,IAAM,KAEI,OAAXJ,IACW,OAAT1mB,GAA0B,OAATA,IACnB2mB,EAAS3mB,EACTA,EAAO,IAGThE,KAAK+qB,MAAML,GAAU,EAAG1mB,GAAQ,GAAI2mB,GAAU,OAYlD,IAAI5a,EATkB,kBAAX3R,EACTA,EAAOC,QAAU6N,EAEjB7N,EAAQ6N,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGsT,SAAW,GAGd,IAEIzP,EADoB,qBAAXib,QAAmD,qBAAlBA,OAAOjb,OACxCib,OAAOjb,OAEP1H,EAAAA,OAAAA,OAEX,MAAO5F,IAgIT,SAASwoB,EAAeC,EAAQ/b,GAC9B,IAAIwP,EAAIuM,EAAO/E,WAAWhX,GAE1B,OAAIwP,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,GAItB,SAASwM,EAAcD,EAAQE,EAAYjc,GACzC,IAAI8C,EAAIgZ,EAAcC,EAAQ/b,GAI9B,OAHIA,EAAQ,GAAKic,IACfnZ,GAAKgZ,EAAcC,EAAQ/b,EAAQ,IAAM,GAEpC8C,EA8CT,SAASoZ,EAAWvF,EAAKwF,EAAOC,EAAKnV,GAGnC,IAFA,IAAInE,EAAI,EACJ1T,EAAMqV,KAAKwD,IAAI0O,EAAItnB,OAAQ+sB,GACtB9sB,EAAI6sB,EAAO7sB,EAAIF,EAAKE,IAAK,CAChC,IAAIkgB,EAAImH,EAAIK,WAAW1nB,GAAK,GAE5BwT,GAAKmE,EAIHnE,GADE0M,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,EAGT,OAAO1M,EAnNT/F,EAAGZ,KAAO,SAAekgB,GACvB,OAAIA,aAAetf,GAIJ,OAARsf,GAA+B,kBAARA,GAC5BA,EAAI/nB,YAAY+b,WAAatT,EAAGsT,UAAY7gB,MAAME,QAAQ2sB,EAAIX,QAGlE3e,EAAGuf,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTzf,EAAGkL,IAAM,SAAcsU,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTzf,EAAG9K,UAAU2pB,MAAQ,SAAeL,EAAQ1mB,EAAM2mB,GAChD,GAAsB,kBAAXD,EACT,OAAO1qB,KAAK6rB,YAAYnB,EAAQ1mB,EAAM2mB,GAGxC,GAAsB,kBAAXD,EACT,OAAO1qB,KAAK8rB,WAAWpB,EAAQ1mB,EAAM2mB,GAG1B,QAAT3mB,IACFA,EAAO,IAETmmB,EAAOnmB,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAIsnB,EAAQ,EACM,OAFlBZ,EAASA,EAAOlmB,WAAWka,QAAQ,OAAQ,KAEhC,KACT4M,IACAtrB,KAAK4qB,SAAW,GAGdU,EAAQZ,EAAOlsB,SACJ,KAATwF,EACFhE,KAAK+rB,UAAUrB,EAAQY,EAAOX,IAE9B3qB,KAAKgsB,WAAWtB,EAAQ1mB,EAAMsnB,GACf,OAAXX,GACF3qB,KAAK8rB,WAAW9rB,KAAKisB,UAAWjoB,EAAM2mB,MAM9Cze,EAAG9K,UAAUyqB,YAAc,SAAsBnB,EAAQ1mB,EAAM2mB,GACzDD,EAAS,IACX1qB,KAAK4qB,SAAW,EAChBF,GAAUA,GAERA,EAAS,UACX1qB,KAAK6qB,MAAQ,CAAW,SAATH,GACf1qB,KAAKxB,OAAS,GACLksB,EAAS,kBAClB1qB,KAAK6qB,MAAQ,CACF,SAATH,EACCA,EAAS,SAAa,UAEzB1qB,KAAKxB,OAAS,IAEd2rB,EAAOO,EAAS,kBAChB1qB,KAAK6qB,MAAQ,CACF,SAATH,EACCA,EAAS,SAAa,SACvB,GAEF1qB,KAAKxB,OAAS,GAGD,OAAXmsB,GAGJ3qB,KAAK8rB,WAAW9rB,KAAKisB,UAAWjoB,EAAM2mB,IAGxCze,EAAG9K,UAAU0qB,WAAa,SAAqBpB,EAAQ1mB,EAAM2mB,GAG3D,GADAR,EAAgC,kBAAlBO,EAAOlsB,QACjBksB,EAAOlsB,QAAU,EAGnB,OAFAwB,KAAK6qB,MAAQ,CAAE,GACf7qB,KAAKxB,OAAS,EACPwB,KAGTA,KAAKxB,OAASoV,KAAKC,KAAK6W,EAAOlsB,OAAS,GACxCwB,KAAK6qB,MAAQ,IAAIlsB,MAAMqB,KAAKxB,QAC5B,IAAK,IAAIC,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAC/BuB,KAAK6qB,MAAMpsB,GAAK,EAGlB,IAAI+mB,EAAG0G,EACHC,EAAM,EACV,GAAe,OAAXxB,EACF,IAAKlsB,EAAIisB,EAAOlsB,OAAS,EAAGgnB,EAAI,EAAG/mB,GAAK,EAAGA,GAAK,EAC9CytB,EAAIxB,EAAOjsB,GAAMisB,EAAOjsB,EAAI,IAAM,EAAMisB,EAAOjsB,EAAI,IAAM,GACzDuB,KAAK6qB,MAAMrF,IAAO0G,GAAKC,EAAO,SAC9BnsB,KAAK6qB,MAAMrF,EAAI,GAAM0G,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP3G,UAGC,GAAe,OAAXmF,EACT,IAAKlsB,EAAI,EAAG+mB,EAAI,EAAG/mB,EAAIisB,EAAOlsB,OAAQC,GAAK,EACzCytB,EAAIxB,EAAOjsB,GAAMisB,EAAOjsB,EAAI,IAAM,EAAMisB,EAAOjsB,EAAI,IAAM,GACzDuB,KAAK6qB,MAAMrF,IAAO0G,GAAKC,EAAO,SAC9BnsB,KAAK6qB,MAAMrF,EAAI,GAAM0G,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP3G,KAIN,OAAOxlB,KAAKosB,SAyBdlgB,EAAG9K,UAAU2qB,UAAY,SAAoBrB,EAAQY,EAAOX,GAE1D3qB,KAAKxB,OAASoV,KAAKC,MAAM6W,EAAOlsB,OAAS8sB,GAAS,GAClDtrB,KAAK6qB,MAAQ,IAAIlsB,MAAMqB,KAAKxB,QAC5B,IAAK,IAAIC,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAC/BuB,KAAK6qB,MAAMpsB,GAAK,EAIlB,IAGIytB,EAHAC,EAAM,EACN3G,EAAI,EAGR,GAAe,OAAXmF,EACF,IAAKlsB,EAAIisB,EAAOlsB,OAAS,EAAGC,GAAK6sB,EAAO7sB,GAAK,EAC3CytB,EAAIf,EAAaT,EAAQY,EAAO7sB,IAAM0tB,EACtCnsB,KAAK6qB,MAAMrF,IAAU,SAAJ0G,EACbC,GAAO,IACTA,GAAO,GACP3G,GAAK,EACLxlB,KAAK6qB,MAAMrF,IAAM0G,IAAM,IAEvBC,GAAO,OAKX,IAAK1tB,GADaisB,EAAOlsB,OAAS8sB,GACX,IAAM,EAAIA,EAAQ,EAAIA,EAAO7sB,EAAIisB,EAAOlsB,OAAQC,GAAK,EAC1EytB,EAAIf,EAAaT,EAAQY,EAAO7sB,IAAM0tB,EACtCnsB,KAAK6qB,MAAMrF,IAAU,SAAJ0G,EACbC,GAAO,IACTA,GAAO,GACP3G,GAAK,EACLxlB,KAAK6qB,MAAMrF,IAAM0G,IAAM,IAEvBC,GAAO,EAKbnsB,KAAKosB,SA2BPlgB,EAAG9K,UAAU4qB,WAAa,SAAqBtB,EAAQ1mB,EAAMsnB,GAE3DtrB,KAAK6qB,MAAQ,CAAE,GACf7qB,KAAKxB,OAAS,EAGd,IAAK,IAAI6tB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWtoB,EAClEqoB,IAEFA,IACAC,EAAWA,EAAUtoB,EAAQ,EAO7B,IALA,IAAIuoB,EAAQ7B,EAAOlsB,OAAS8sB,EACxBkB,EAAMD,EAAQF,EACdd,EAAM3X,KAAKwD,IAAImV,EAAOA,EAAQC,GAAOlB,EAErCmB,EAAO,EACFhuB,EAAI6sB,EAAO7sB,EAAI8sB,EAAK9sB,GAAK4tB,EAChCI,EAAOpB,EAAUX,EAAQjsB,EAAGA,EAAI4tB,EAASroB,GAEzChE,KAAK+T,MAAMuY,GACPtsB,KAAK6qB,MAAM,GAAK4B,EAAO,SACzBzsB,KAAK6qB,MAAM,IAAM4B,EAEjBzsB,KAAK0sB,OAAOD,GAIhB,GAAY,IAARD,EAAW,CACb,IAAIpD,EAAM,EAGV,IAFAqD,EAAOpB,EAAUX,EAAQjsB,EAAGisB,EAAOlsB,OAAQwF,GAEtCvF,EAAI,EAAGA,EAAI+tB,EAAK/tB,IACnB2qB,GAAOplB,EAGThE,KAAK+T,MAAMqV,GACPppB,KAAK6qB,MAAM,GAAK4B,EAAO,SACzBzsB,KAAK6qB,MAAM,IAAM4B,EAEjBzsB,KAAK0sB,OAAOD,GAIhBzsB,KAAKosB,SAGPlgB,EAAG9K,UAAU+P,KAAO,SAAewb,GACjCA,EAAK9B,MAAQ,IAAIlsB,MAAMqB,KAAKxB,QAC5B,IAAK,IAAIC,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAC/BkuB,EAAK9B,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,GAE7BkuB,EAAKnuB,OAASwB,KAAKxB,OACnBmuB,EAAK/B,SAAW5qB,KAAK4qB,SACrB+B,EAAK7B,IAAM9qB,KAAK8qB,KAGlB5e,EAAG9K,UAAUwrB,MAAQ,WACnB,IAAI3a,EAAI,IAAI/F,EAAG,MAEf,OADAlM,KAAKmR,KAAKc,GACHA,GAGT/F,EAAG9K,UAAUyrB,QAAU,SAAkBjJ,GACvC,KAAO5jB,KAAKxB,OAASolB,GACnB5jB,KAAK6qB,MAAM7qB,KAAKxB,UAAY,EAE9B,OAAOwB,MAITkM,EAAG9K,UAAUgrB,MAAQ,WACnB,KAAOpsB,KAAKxB,OAAS,GAAqC,IAAhCwB,KAAK6qB,MAAM7qB,KAAKxB,OAAS,IACjDwB,KAAKxB,SAEP,OAAOwB,KAAK8sB,aAGd5gB,EAAG9K,UAAU0rB,UAAY,WAKvB,OAHoB,IAAhB9sB,KAAKxB,QAAkC,IAAlBwB,KAAK6qB,MAAM,KAClC7qB,KAAK4qB,SAAW,GAEX5qB,MAGTkM,EAAG9K,UAAU2rB,QAAU,WACrB,OAAQ/sB,KAAK8qB,IAAM,UAAY,SAAW9qB,KAAKwE,SAAS,IAAM,KAiChE,IAAIwoB,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAsjB9D,SAASC,EAAYpuB,EAAMysB,EAAK4B,GAC9BA,EAAIxC,SAAWY,EAAIZ,SAAW7rB,EAAK6rB,SACnC,IAAIrsB,EAAOQ,EAAKP,OAASgtB,EAAIhtB,OAAU,EACvC4uB,EAAI5uB,OAASD,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIyC,EAAoB,EAAhBjC,EAAK8rB,MAAM,GACfwC,EAAmB,EAAf7B,EAAIX,MAAM,GACd5Y,EAAIjR,EAAIqsB,EAERC,EAAS,SAAJrb,EACLsb,EAAStb,EAAI,SAAa,EAC9Bmb,EAAIvC,MAAM,GAAKyC,EAEf,IAAK,IAAIE,EAAI,EAAGA,EAAIjvB,EAAKivB,IAAK,CAM5B,IAHA,IAAIC,EAASF,IAAU,GACnBG,EAAgB,SAARH,EACRI,EAAO/Z,KAAKwD,IAAIoW,EAAGhC,EAAIhtB,OAAS,GAC3BgnB,EAAI5R,KAAK6X,IAAI,EAAG+B,EAAIzuB,EAAKP,OAAS,GAAIgnB,GAAKmI,EAAMnI,IAAK,CAC7D,IAAI/mB,EAAK+uB,EAAIhI,EAAK,EAIlBiI,IADAxb,GAFAjR,EAAoB,EAAhBjC,EAAK8rB,MAAMpsB,KACf4uB,EAAmB,EAAf7B,EAAIX,MAAMrF,IACFkI,GACG,SAAa,EAC5BA,EAAY,SAAJzb,EAEVmb,EAAIvC,MAAM2C,GAAa,EAARE,EACfH,EAAiB,EAATE,EAQV,OANc,IAAVF,EACFH,EAAIvC,MAAM2C,GAAa,EAARD,EAEfH,EAAI5uB,SAGC4uB,EAAIhB,QAzlBblgB,EAAG9K,UAAUoD,SAAW,SAAmBR,EAAM4pB,GAI/C,IAAIR,EACJ,GAHAQ,EAAoB,EAAVA,GAAe,EAGZ,MAJb5pB,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCopB,EAAM,GAGN,IAFA,IAAIjB,EAAM,EACNoB,EAAQ,EACH9uB,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAAK,CACpC,IAAIytB,EAAIlsB,KAAK6qB,MAAMpsB,GACfguB,GAA+B,UAArBP,GAAKC,EAAOoB,IAAmB/oB,SAAS,IAGpD4oB,EADY,KADdG,EAASrB,IAAO,GAAKC,EAAQ,WACV1tB,IAAMuB,KAAKxB,OAAS,EAC/BwuB,EAAM,EAAIP,EAAKjuB,QAAUiuB,EAAOW,EAEhCX,EAAOW,GAEfjB,GAAO,IACI,KACTA,GAAO,GACP1tB,KAMJ,IAHc,IAAV8uB,IACFH,EAAMG,EAAM/oB,SAAS,IAAM4oB,GAEtBA,EAAI5uB,OAASovB,IAAY,GAC9BR,EAAM,IAAMA,EAKd,OAHsB,IAAlBptB,KAAK4qB,WACPwC,EAAM,IAAMA,GAEPA,EAGT,GAAIppB,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI6pB,EAAYZ,EAAWjpB,GAEvB8pB,EAAYZ,EAAWlpB,GAC3BopB,EAAM,GACN,IAAIzO,EAAI3e,KAAK4sB,QAEb,IADAjO,EAAEiM,SAAW,GACLjM,EAAEyE,UAAU,CAClB,IAAInR,EAAI0M,EAAEoP,KAAKD,GAAWtpB,SAASR,GAMjCopB,GALFzO,EAAIA,EAAEqP,MAAMF,IAEL1K,SAGCnR,EAAImb,EAFJJ,EAAMa,EAAY5b,EAAEzT,QAAUyT,EAAImb,EAQ5C,IAHIptB,KAAKojB,WACPgK,EAAM,IAAMA,GAEPA,EAAI5uB,OAASovB,IAAY,GAC9BR,EAAM,IAAMA,EAKd,OAHsB,IAAlBptB,KAAK4qB,WACPwC,EAAM,IAAMA,GAEPA,EAGTjD,GAAO,EAAO,oCAGhBje,EAAG9K,UAAUiR,SAAW,WACtB,IAAI4b,EAAMjuB,KAAK6qB,MAAM,GASrB,OARoB,IAAhB7qB,KAAKxB,OACPyvB,GAAuB,SAAhBjuB,KAAK6qB,MAAM,GACO,IAAhB7qB,KAAKxB,QAAkC,IAAlBwB,KAAK6qB,MAAM,GAEzCoD,GAAO,iBAAoC,SAAhBjuB,KAAK6qB,MAAM,GAC7B7qB,KAAKxB,OAAS,GACvB2rB,GAAO,EAAO,8CAEU,IAAlBnqB,KAAK4qB,UAAmBqD,EAAMA,GAGxC/hB,EAAG9K,UAAU8sB,OAAS,WACpB,OAAOluB,KAAKwE,SAAS,KAGvB0H,EAAG9K,UAAUgR,SAAW,SAAmBuY,EAAQnsB,GAEjD,OADA2rB,EAAyB,qBAAXpa,GACP/P,KAAKmuB,YAAYpe,EAAQ4a,EAAQnsB,IAG1C0N,EAAG9K,UAAU6qB,QAAU,SAAkBtB,EAAQnsB,GAC/C,OAAOwB,KAAKmuB,YAAYxvB,MAAOgsB,EAAQnsB,IAGzC0N,EAAG9K,UAAU+sB,YAAc,SAAsBC,EAAWzD,EAAQnsB,GAClE,IAAI6vB,EAAaruB,KAAKquB,aAClBC,EAAY9vB,GAAUoV,KAAK6X,IAAI,EAAG4C,GACtClE,EAAOkE,GAAcC,EAAW,yCAChCnE,EAAOmE,EAAY,EAAG,+BAEtBtuB,KAAKosB,QACL,IAGIiB,EAAG5uB,EAHH8vB,EAA0B,OAAX5D,EACfpF,EAAM,IAAI6I,EAAUE,GAGpBE,EAAIxuB,KAAK4sB,QACb,GAAK2B,EAYE,CACL,IAAK9vB,EAAI,GAAI+vB,EAAEpL,SAAU3kB,IACvB4uB,EAAImB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETnJ,EAAI9mB,GAAK4uB,EAGX,KAAO5uB,EAAI6vB,EAAW7vB,IACpB8mB,EAAI9mB,GAAK,MArBM,CAEjB,IAAKA,EAAI,EAAGA,EAAI6vB,EAAYD,EAAY5vB,IACtC8mB,EAAI9mB,GAAK,EAGX,IAAKA,EAAI,GAAI+vB,EAAEpL,SAAU3kB,IACvB4uB,EAAImB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETnJ,EAAI+I,EAAY7vB,EAAI,GAAK4uB,EAe7B,OAAO9H,GAGL3R,KAAK+a,MACPziB,EAAG9K,UAAUwtB,WAAa,SAAqB1C,GAC7C,OAAO,GAAKtY,KAAK+a,MAAMzC,IAGzBhgB,EAAG9K,UAAUwtB,WAAa,SAAqB1C,GAC7C,IAAI2C,EAAI3C,EACJja,EAAI,EAiBR,OAhBI4c,GAAK,OACP5c,GAAK,GACL4c,KAAO,IAELA,GAAK,KACP5c,GAAK,EACL4c,KAAO,GAELA,GAAK,IACP5c,GAAK,EACL4c,KAAO,GAELA,GAAK,IACP5c,GAAK,EACL4c,KAAO,GAEF5c,EAAI4c,GAIf3iB,EAAG9K,UAAU0tB,UAAY,SAAoB5C,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAI2C,EAAI3C,EACJja,EAAI,EAoBR,OAnBqB,KAAZ,KAAJ4c,KACH5c,GAAK,GACL4c,KAAO,IAEU,KAAV,IAAJA,KACH5c,GAAK,EACL4c,KAAO,GAES,KAAT,GAAJA,KACH5c,GAAK,EACL4c,KAAO,GAES,KAAT,EAAJA,KACH5c,GAAK,EACL4c,KAAO,GAES,KAAT,EAAJA,IACH5c,IAEKA,GAIT/F,EAAG9K,UAAU2tB,UAAY,WACvB,IAAI7C,EAAIlsB,KAAK6qB,MAAM7qB,KAAKxB,OAAS,GAC7BwwB,EAAKhvB,KAAK4uB,WAAW1C,GACzB,OAA2B,IAAnBlsB,KAAKxB,OAAS,GAAUwwB,GAiBlC9iB,EAAG9K,UAAU6tB,SAAW,WACtB,GAAIjvB,KAAKojB,SAAU,OAAO,EAG1B,IADA,IAAInR,EAAI,EACCxT,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAAK,CACpC,IAAI4uB,EAAIrtB,KAAK8uB,UAAU9uB,KAAK6qB,MAAMpsB,IAElC,GADAwT,GAAKob,EACK,KAANA,EAAU,MAEhB,OAAOpb,GAGT/F,EAAG9K,UAAUitB,WAAa,WACxB,OAAOza,KAAKC,KAAK7T,KAAK+uB,YAAc,IAGtC7iB,EAAG9K,UAAUmjB,OAAS,SAAiB2K,GACrC,OAAsB,IAAlBlvB,KAAK4qB,SACA5qB,KAAKmvB,MAAMC,MAAMF,GAAO3b,MAAM,GAEhCvT,KAAK4sB,SAGd1gB,EAAG9K,UAAUojB,SAAW,SAAmB0K,GACzC,OAAIlvB,KAAKqvB,MAAMH,EAAQ,GACdlvB,KAAKsvB,KAAKJ,GAAO3b,MAAM,GAAGgc,OAE5BvvB,KAAK4sB,SAGd1gB,EAAG9K,UAAU8nB,MAAQ,WACnB,OAAyB,IAAlBlpB,KAAK4qB,UAId1e,EAAG9K,UAAUouB,IAAM,WACjB,OAAOxvB,KAAK4sB,QAAQ2C,QAGtBrjB,EAAG9K,UAAUmuB,KAAO,WAKlB,OAJKvvB,KAAKojB,WACRpjB,KAAK4qB,UAAY,GAGZ5qB,MAITkM,EAAG9K,UAAUquB,KAAO,SAAejE,GACjC,KAAOxrB,KAAKxB,OAASgtB,EAAIhtB,QACvBwB,KAAK6qB,MAAM7qB,KAAKxB,UAAY,EAG9B,IAAK,IAAIC,EAAI,EAAGA,EAAI+sB,EAAIhtB,OAAQC,IAC9BuB,KAAK6qB,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,GAAK+sB,EAAIX,MAAMpsB,GAG5C,OAAOuB,KAAKosB,SAGdlgB,EAAG9K,UAAUsuB,IAAM,SAAclE,GAE/B,OADArB,EAA0C,KAAlCnqB,KAAK4qB,SAAWY,EAAIZ,WACrB5qB,KAAKyvB,KAAKjE,IAInBtf,EAAG9K,UAAUmoB,GAAK,SAAaiC,GAC7B,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQ8C,IAAIlE,GAC/CA,EAAIoB,QAAQ8C,IAAI1vB,OAGzBkM,EAAG9K,UAAUuuB,IAAM,SAAcnE,GAC/B,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQ6C,KAAKjE,GAChDA,EAAIoB,QAAQ6C,KAAKzvB,OAI1BkM,EAAG9K,UAAUwuB,MAAQ,SAAgBpE,GAEnC,IAAI6B,EAEFA,EADErtB,KAAKxB,OAASgtB,EAAIhtB,OAChBgtB,EAEAxrB,KAGN,IAAK,IAAIvB,EAAI,EAAGA,EAAI4uB,EAAE7uB,OAAQC,IAC5BuB,KAAK6qB,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,GAAK+sB,EAAIX,MAAMpsB,GAK5C,OAFAuB,KAAKxB,OAAS6uB,EAAE7uB,OAETwB,KAAKosB,SAGdlgB,EAAG9K,UAAUyuB,KAAO,SAAerE,GAEjC,OADArB,EAA0C,KAAlCnqB,KAAK4qB,SAAWY,EAAIZ,WACrB5qB,KAAK4vB,MAAMpE,IAIpBtf,EAAG9K,UAAUkoB,IAAM,SAAckC,GAC/B,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQiD,KAAKrE,GAChDA,EAAIoB,QAAQiD,KAAK7vB,OAG1BkM,EAAG9K,UAAU0uB,KAAO,SAAetE,GACjC,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQgD,MAAMpE,GACjDA,EAAIoB,QAAQgD,MAAM5vB,OAI3BkM,EAAG9K,UAAU2uB,MAAQ,SAAgBvE,GAEnC,IAAIxqB,EACAqsB,EACArtB,KAAKxB,OAASgtB,EAAIhtB,QACpBwC,EAAIhB,KACJqtB,EAAI7B,IAEJxqB,EAAIwqB,EACJ6B,EAAIrtB,MAGN,IAAK,IAAIvB,EAAI,EAAGA,EAAI4uB,EAAE7uB,OAAQC,IAC5BuB,KAAK6qB,MAAMpsB,GAAKuC,EAAE6pB,MAAMpsB,GAAK4uB,EAAExC,MAAMpsB,GAGvC,GAAIuB,OAASgB,EACX,KAAOvC,EAAIuC,EAAExC,OAAQC,IACnBuB,KAAK6qB,MAAMpsB,GAAKuC,EAAE6pB,MAAMpsB,GAM5B,OAFAuB,KAAKxB,OAASwC,EAAExC,OAETwB,KAAKosB,SAGdlgB,EAAG9K,UAAU4uB,KAAO,SAAexE,GAEjC,OADArB,EAA0C,KAAlCnqB,KAAK4qB,SAAWY,EAAIZ,WACrB5qB,KAAK+vB,MAAMvE,IAIpBtf,EAAG9K,UAAUooB,IAAM,SAAcgC,GAC/B,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQoD,KAAKxE,GAChDA,EAAIoB,QAAQoD,KAAKhwB,OAG1BkM,EAAG9K,UAAU6uB,KAAO,SAAezE,GACjC,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQmD,MAAMvE,GACjDA,EAAIoB,QAAQmD,MAAM/vB,OAI3BkM,EAAG9K,UAAUguB,MAAQ,SAAgBF,GACnC/E,EAAwB,kBAAV+E,GAAsBA,GAAS,GAE7C,IAAIgB,EAAsC,EAAxBtc,KAAKC,KAAKqb,EAAQ,IAChCiB,EAAWjB,EAAQ,GAGvBlvB,KAAK6sB,QAAQqD,GAETC,EAAW,GACbD,IAIF,IAAK,IAAIzxB,EAAI,EAAGA,EAAIyxB,EAAazxB,IAC/BuB,KAAK6qB,MAAMpsB,GAAsB,UAAhBuB,KAAK6qB,MAAMpsB,GAS9B,OALI0xB,EAAW,IACbnwB,KAAK6qB,MAAMpsB,IAAMuB,KAAK6qB,MAAMpsB,GAAM,UAAc,GAAK0xB,GAIhDnwB,KAAKosB,SAGdlgB,EAAG9K,UAAUkuB,KAAO,SAAeJ,GACjC,OAAOlvB,KAAK4sB,QAAQwC,MAAMF,IAI5BhjB,EAAG9K,UAAUgvB,KAAO,SAAeC,EAAKjG,GACtCD,EAAsB,kBAARkG,GAAoBA,GAAO,GAEzC,IAAIlE,EAAOkE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARArwB,KAAK6sB,QAAQV,EAAM,GAGjBnsB,KAAK6qB,MAAMsB,GADT/B,EACgBpqB,KAAK6qB,MAAMsB,GAAQ,GAAKmE,EAExBtwB,KAAK6qB,MAAMsB,KAAS,GAAKmE,GAGtCtwB,KAAKosB,SAIdlgB,EAAG9K,UAAU4S,KAAO,SAAewX,GACjC,IAAIvZ,EAkBAjR,EAAGqsB,EAfP,GAAsB,IAAlBrtB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,SAI7B,OAHA5qB,KAAK4qB,SAAW,EAChB3Y,EAAIjS,KAAKuwB,KAAK/E,GACdxrB,KAAK4qB,UAAY,EACV5qB,KAAK8sB,YAGP,GAAsB,IAAlB9sB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,SAIpC,OAHAY,EAAIZ,SAAW,EACf3Y,EAAIjS,KAAKuwB,KAAK/E,GACdA,EAAIZ,SAAW,EACR3Y,EAAE6a,YAKP9sB,KAAKxB,OAASgtB,EAAIhtB,QACpBwC,EAAIhB,KACJqtB,EAAI7B,IAEJxqB,EAAIwqB,EACJ6B,EAAIrtB,MAIN,IADA,IAAIutB,EAAQ,EACH9uB,EAAI,EAAGA,EAAI4uB,EAAE7uB,OAAQC,IAC5BwT,GAAkB,EAAbjR,EAAE6pB,MAAMpsB,KAAwB,EAAb4uB,EAAExC,MAAMpsB,IAAU8uB,EAC1CvtB,KAAK6qB,MAAMpsB,GAAS,SAAJwT,EAChBsb,EAAQtb,IAAM,GAEhB,KAAiB,IAAVsb,GAAe9uB,EAAIuC,EAAExC,OAAQC,IAClCwT,GAAkB,EAAbjR,EAAE6pB,MAAMpsB,IAAU8uB,EACvBvtB,KAAK6qB,MAAMpsB,GAAS,SAAJwT,EAChBsb,EAAQtb,IAAM,GAIhB,GADAjS,KAAKxB,OAASwC,EAAExC,OACF,IAAV+uB,EACFvtB,KAAK6qB,MAAM7qB,KAAKxB,QAAU+uB,EAC1BvtB,KAAKxB,cAEA,GAAIwC,IAAMhB,KACf,KAAOvB,EAAIuC,EAAExC,OAAQC,IACnBuB,KAAK6qB,MAAMpsB,GAAKuC,EAAE6pB,MAAMpsB,GAI5B,OAAOuB,MAITkM,EAAG9K,UAAUkW,IAAM,SAAckU,GAC/B,IAAIjG,EACJ,OAAqB,IAAjBiG,EAAIZ,UAAoC,IAAlB5qB,KAAK4qB,UAC7BY,EAAIZ,SAAW,EACfrF,EAAMvlB,KAAKqX,IAAImU,GACfA,EAAIZ,UAAY,EACTrF,GACmB,IAAjBiG,EAAIZ,UAAoC,IAAlB5qB,KAAK4qB,UACpC5qB,KAAK4qB,SAAW,EAChBrF,EAAMiG,EAAInU,IAAIrX,MACdA,KAAK4qB,SAAW,EACTrF,GAGLvlB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQ5Y,KAAKwX,GAEhDA,EAAIoB,QAAQ5Y,KAAKhU,OAI1BkM,EAAG9K,UAAUmvB,KAAO,SAAe/E,GAEjC,GAAqB,IAAjBA,EAAIZ,SAAgB,CACtBY,EAAIZ,SAAW,EACf,IAAI3Y,EAAIjS,KAAKgU,KAAKwX,GAElB,OADAA,EAAIZ,SAAW,EACR3Y,EAAE6a,YAGJ,GAAsB,IAAlB9sB,KAAK4qB,SAId,OAHA5qB,KAAK4qB,SAAW,EAChB5qB,KAAKgU,KAAKwX,GACVxrB,KAAK4qB,SAAW,EACT5qB,KAAK8sB,YAId,IAWI9rB,EAAGqsB,EAXHzB,EAAM5rB,KAAK4rB,IAAIJ,GAGnB,GAAY,IAARI,EAIF,OAHA5rB,KAAK4qB,SAAW,EAChB5qB,KAAKxB,OAAS,EACdwB,KAAK6qB,MAAM,GAAK,EACT7qB,KAKL4rB,EAAM,GACR5qB,EAAIhB,KACJqtB,EAAI7B,IAEJxqB,EAAIwqB,EACJ6B,EAAIrtB,MAIN,IADA,IAAIutB,EAAQ,EACH9uB,EAAI,EAAGA,EAAI4uB,EAAE7uB,OAAQC,IAE5B8uB,GADAtb,GAAkB,EAAbjR,EAAE6pB,MAAMpsB,KAAwB,EAAb4uB,EAAExC,MAAMpsB,IAAU8uB,IAC7B,GACbvtB,KAAK6qB,MAAMpsB,GAAS,SAAJwT,EAElB,KAAiB,IAAVsb,GAAe9uB,EAAIuC,EAAExC,OAAQC,IAElC8uB,GADAtb,GAAkB,EAAbjR,EAAE6pB,MAAMpsB,IAAU8uB,IACV,GACbvtB,KAAK6qB,MAAMpsB,GAAS,SAAJwT,EAIlB,GAAc,IAAVsb,GAAe9uB,EAAIuC,EAAExC,QAAUwC,IAAMhB,KACvC,KAAOvB,EAAIuC,EAAExC,OAAQC,IACnBuB,KAAK6qB,MAAMpsB,GAAKuC,EAAE6pB,MAAMpsB,GAU5B,OANAuB,KAAKxB,OAASoV,KAAK6X,IAAIzrB,KAAKxB,OAAQC,GAEhCuC,IAAMhB,OACRA,KAAK4qB,SAAW,GAGX5qB,KAAKosB,SAIdlgB,EAAG9K,UAAUiW,IAAM,SAAcmU,GAC/B,OAAOxrB,KAAK4sB,QAAQ2D,KAAK/E,IA+C3B,IAAIgF,EAAc,SAAsBzxB,EAAMysB,EAAK4B,GACjD,IAIIE,EACAmD,EACAzB,EANAhuB,EAAIjC,EAAK8rB,MACTwC,EAAI7B,EAAIX,MACR5oB,EAAImrB,EAAIvC,MACRlM,EAAI,EAIJ+R,EAAY,EAAP1vB,EAAE,GACP2vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7vB,EAAE,GACP8vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhwB,EAAE,GACPiwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnwB,EAAE,GACPowB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtwB,EAAE,GACPuwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzwB,EAAE,GACP0wB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5wB,EAAE,GACP6wB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/wB,EAAE,GACPgxB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlxB,EAAE,GACPmxB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrxB,EAAE,GACPsxB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnF,EAAE,GACPoF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtF,EAAE,GACPuF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzF,EAAE,GACP0F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5F,EAAE,GACP6F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/F,EAAE,GACPgG,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPlG,EAAE,GACPmG,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPrG,EAAE,GACPsG,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPxG,EAAE,GACPyG,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP3G,EAAE,GACP4G,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP9G,EAAE,GACP+G,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB/G,EAAIxC,SAAW7rB,EAAK6rB,SAAWY,EAAIZ,SACnCwC,EAAI5uB,OAAS,GAMb,IAAI81B,IAAQ3V,GAJZ2O,EAAK1Z,KAAK2gB,KAAK5D,EAAK8B,IAIE,KAAa,MAFnChC,GADAA,EAAM7c,KAAK2gB,KAAK5D,EAAK+B,IACR9e,KAAK2gB,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrD9T,IAFAqQ,EAAKpb,KAAK2gB,KAAK3D,EAAK8B,KAEPjC,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENhH,EAAK1Z,KAAK2gB,KAAKzD,EAAK2B,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKzD,EAAK4B,IACR9e,KAAK2gB,KAAKxD,EAAK0B,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQ7V,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKkC,GAAQ,GACvBjf,KAAK2gB,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrDjU,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKiC,GAAQ,IAErBpC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENlH,EAAK1Z,KAAK2gB,KAAKtD,EAAKwB,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKtD,EAAKyB,IACR9e,KAAK2gB,KAAKrD,EAAKuB,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKrD,EAAKwB,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAK8B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAK+B,GAAQ,GACvBjf,KAAK2gB,KAAKxD,EAAK6B,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQ9V,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKqC,GAAQ,GACvBpf,KAAK2gB,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrDpU,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKoC,GAAQ,IAErBvC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAK1Z,KAAK2gB,KAAKnD,EAAKqB,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKnD,EAAKsB,IACR9e,KAAK2gB,KAAKlD,EAAKoB,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKlD,EAAKqB,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAK2B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAK4B,GAAQ,GACvBjf,KAAK2gB,KAAKrD,EAAK0B,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAK2B,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKiC,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKkC,GAAQ,GACvBpf,KAAK2gB,KAAKxD,EAAKgC,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQ/V,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKwC,GAAQ,GACvBvf,KAAK2gB,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrDvU,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKuC,GAAQ,IAErB1C,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENpH,EAAK1Z,KAAK2gB,KAAKhD,EAAKkB,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKhD,EAAKmB,IACR9e,KAAK2gB,KAAK/C,EAAKiB,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAK/C,EAAKkB,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKwB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKyB,GAAQ,GACvBjf,KAAK2gB,KAAKlD,EAAKuB,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKwB,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAK8B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAK+B,GAAQ,GACvBpf,KAAK2gB,KAAKrD,EAAK6B,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAK8B,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKoC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKqC,GAAQ,GACvBvf,KAAK2gB,KAAKxD,EAAKmC,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQhW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAK2C,IAAQ,GACvB1f,KAAK2gB,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrD1U,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAK0C,IAAQ,IAErB7C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENrH,EAAK1Z,KAAK2gB,KAAK7C,EAAKe,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAK7C,EAAKgB,IACR9e,KAAK2gB,KAAK5C,EAAKc,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAK5C,EAAKe,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKqB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKsB,GAAQ,GACvBjf,KAAK2gB,KAAK/C,EAAKoB,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKqB,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAK2B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAK4B,GAAQ,GACvBpf,KAAK2gB,KAAKlD,EAAK0B,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAK2B,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKiC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKkC,GAAQ,GACvBvf,KAAK2gB,KAAKrD,EAAKgC,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKiC,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKuC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKwC,IAAQ,GACvB1f,KAAK2gB,KAAKxD,EAAKsC,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQjW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAK8C,IAAQ,GACvB7f,KAAK2gB,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrD7U,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAK6C,IAAQ,IAErBhD,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENtH,EAAK1Z,KAAK2gB,KAAK1C,EAAKY,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAK1C,EAAKa,IACR9e,KAAK2gB,KAAKzC,EAAKW,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKzC,EAAKY,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKkB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKmB,GAAQ,GACvBjf,KAAK2gB,KAAK5C,EAAKiB,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKkB,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKwB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKyB,GAAQ,GACvBpf,KAAK2gB,KAAK/C,EAAKuB,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKwB,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAK8B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAK+B,GAAQ,GACvBvf,KAAK2gB,KAAKlD,EAAK6B,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAK8B,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKoC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKqC,IAAQ,GACvB1f,KAAK2gB,KAAKrD,EAAKmC,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKoC,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAK0C,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAK2C,IAAQ,GACvB7f,KAAK2gB,KAAKxD,EAAKyC,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQlW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKiD,IAAQ,GACvBhgB,KAAK2gB,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrDhV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKgD,IAAQ,IAErBnD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENvH,EAAK1Z,KAAK2gB,KAAKvC,EAAKS,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKvC,EAAKU,IACR9e,KAAK2gB,KAAKtC,EAAKQ,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKtC,EAAKS,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKe,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKgB,GAAQ,GACvBjf,KAAK2gB,KAAKzC,EAAKc,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKe,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKqB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKsB,GAAQ,GACvBpf,KAAK2gB,KAAK5C,EAAKoB,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKqB,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAK2B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAK4B,GAAQ,GACvBvf,KAAK2gB,KAAK/C,EAAK0B,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAK2B,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKiC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKkC,IAAQ,GACvB1f,KAAK2gB,KAAKlD,EAAKgC,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKiC,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKuC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKwC,IAAQ,GACvB7f,KAAK2gB,KAAKrD,EAAKsC,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKuC,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAK6C,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAK8C,IAAQ,GACvBhgB,KAAK2gB,KAAKxD,EAAK4C,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQnW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKoD,IAAQ,GACvBngB,KAAK2gB,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrDnV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKmD,IAAQ,IAErBtD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENxH,EAAK1Z,KAAK2gB,KAAKpC,EAAKM,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKpC,EAAKO,IACR9e,KAAK2gB,KAAKnC,EAAKK,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKnC,EAAKM,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKY,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKa,GAAQ,GACvBjf,KAAK2gB,KAAKtC,EAAKW,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKY,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKkB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKmB,GAAQ,GACvBpf,KAAK2gB,KAAKzC,EAAKiB,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKkB,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKwB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKyB,GAAQ,GACvBvf,KAAK2gB,KAAK5C,EAAKuB,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKwB,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAK8B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAK+B,IAAQ,GACvB1f,KAAK2gB,KAAK/C,EAAK6B,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAK8B,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKoC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKqC,IAAQ,GACvB7f,KAAK2gB,KAAKlD,EAAKmC,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKoC,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAK0C,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAK2C,IAAQ,GACvBhgB,KAAK2gB,KAAKrD,EAAKyC,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAK0C,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKgD,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKiD,IAAQ,GACvBngB,KAAK2gB,KAAKxD,EAAK+C,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQpW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKuD,IAAQ,GACvBtgB,KAAK2gB,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrDtV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKsD,IAAQ,IAErBzD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENzH,EAAK1Z,KAAK2gB,KAAKjC,EAAKG,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKI,IACR9e,KAAK2gB,KAAKhC,EAAKE,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKhC,EAAKG,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKS,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKU,GAAQ,GACvBjf,KAAK2gB,KAAKnC,EAAKQ,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKS,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKe,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKgB,GAAQ,GACvBpf,KAAK2gB,KAAKtC,EAAKc,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKe,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKqB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKsB,GAAQ,GACvBvf,KAAK2gB,KAAKzC,EAAKoB,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKqB,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAK2B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAK4B,IAAQ,GACvB1f,KAAK2gB,KAAK5C,EAAK0B,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAK2B,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKiC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKkC,IAAQ,GACvB7f,KAAK2gB,KAAK/C,EAAKgC,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKiC,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKuC,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKwC,IAAQ,GACvBhgB,KAAK2gB,KAAKlD,EAAKsC,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKuC,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAK6C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAK8C,IAAQ,GACvBngB,KAAK2gB,KAAKrD,EAAK4C,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAK6C,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKmD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKoD,IAAQ,GACvBtgB,KAAK2gB,KAAKxD,EAAKkD,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQrW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAK0D,IAAQ,GACvBzgB,KAAK2gB,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKyD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAEN1H,EAAK1Z,KAAK2gB,KAAKjC,EAAKM,GAEpBnC,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKO,IACRjf,KAAK2gB,KAAKhC,EAAKK,GAAQ,EACpC5D,EAAKpb,KAAK2gB,KAAKhC,EAAKM,GACpBvF,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKY,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKa,GAAQ,GACvBpf,KAAK2gB,KAAKnC,EAAKW,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKY,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKkB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKmB,GAAQ,GACvBvf,KAAK2gB,KAAKtC,EAAKiB,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKkB,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKwB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKyB,IAAQ,GACvB1f,KAAK2gB,KAAKzC,EAAKuB,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKwB,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAK8B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAK+B,IAAQ,GACvB7f,KAAK2gB,KAAK5C,EAAK6B,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAK8B,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKoC,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKqC,IAAQ,GACvBhgB,KAAK2gB,KAAK/C,EAAKmC,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKoC,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAK0C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAK2C,IAAQ,GACvBngB,KAAK2gB,KAAKlD,EAAKyC,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAK0C,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKgD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKiD,IAAQ,GACvBtgB,KAAK2gB,KAAKrD,EAAK+C,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAAStW,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKuD,IAAQ,GACvBzgB,KAAK2gB,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKsD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP3H,EAAK1Z,KAAK2gB,KAAKjC,EAAKS,GAEpBtC,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKU,IACRpf,KAAK2gB,KAAKhC,EAAKQ,GAAQ,EACpC/D,EAAKpb,KAAK2gB,KAAKhC,EAAKS,GACpB1F,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKe,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKgB,GAAQ,GACvBvf,KAAK2gB,KAAKnC,EAAKc,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKe,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKqB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKsB,IAAQ,GACvB1f,KAAK2gB,KAAKtC,EAAKoB,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKqB,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAK2B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAK4B,IAAQ,GACvB7f,KAAK2gB,KAAKzC,EAAK0B,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAK2B,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKiC,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKkC,IAAQ,GACvBhgB,KAAK2gB,KAAK5C,EAAKgC,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKiC,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKuC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKwC,IAAQ,GACvBngB,KAAK2gB,KAAK/C,EAAKsC,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKuC,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAK6C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAK8C,IAAQ,GACvBtgB,KAAK2gB,KAAKlD,EAAK4C,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAASvW,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKoD,IAAQ,GACvBzgB,KAAK2gB,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKmD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEP5H,EAAK1Z,KAAK2gB,KAAKjC,EAAKY,GAEpBzC,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKa,IACRvf,KAAK2gB,KAAKhC,EAAKW,GAAQ,EACpClE,EAAKpb,KAAK2gB,KAAKhC,EAAKY,GACpB7F,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKkB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKmB,IAAQ,GACvB1f,KAAK2gB,KAAKnC,EAAKiB,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKkB,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKwB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKyB,IAAQ,GACvB7f,KAAK2gB,KAAKtC,EAAKuB,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKwB,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAK8B,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAK+B,IAAQ,GACvBhgB,KAAK2gB,KAAKzC,EAAK6B,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAK8B,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKoC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKqC,IAAQ,GACvBngB,KAAK2gB,KAAK5C,EAAKmC,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKoC,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAK0C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAK2C,IAAQ,GACvBtgB,KAAK2gB,KAAK/C,EAAKyC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAASxW,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKiD,IAAQ,GACvBzgB,KAAK2gB,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKgD,IAAQ,IAErB5D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEP7H,EAAK1Z,KAAK2gB,KAAKjC,EAAKe,GAEpB5C,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKgB,KACR1f,KAAK2gB,KAAKhC,EAAKc,GAAQ,EACpCrE,EAAKpb,KAAK2gB,KAAKhC,EAAKe,IACpBhG,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKqB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKsB,IAAQ,GACvB7f,KAAK2gB,KAAKnC,EAAKoB,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKqB,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAK2B,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAK4B,IAAQ,GACvBhgB,KAAK2gB,KAAKtC,EAAK0B,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAK2B,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKiC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKkC,IAAQ,GACvBngB,KAAK2gB,KAAKzC,EAAKgC,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKiC,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKuC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKwC,IAAQ,GACvBtgB,KAAK2gB,KAAK5C,EAAKsC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASzW,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAK8C,IAAQ,GACvBzgB,KAAK2gB,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAK6C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEP9H,EAAK1Z,KAAK2gB,KAAKjC,EAAKkB,IAEpB/C,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKmB,KACR7f,KAAK2gB,KAAKhC,EAAKiB,IAAQ,EACpCxE,EAAKpb,KAAK2gB,KAAKhC,EAAKkB,IACpBnG,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKwB,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKyB,IAAQ,GACvBhgB,KAAK2gB,KAAKnC,EAAKuB,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKwB,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAK8B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAK+B,IAAQ,GACvBngB,KAAK2gB,KAAKtC,EAAK6B,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAK8B,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKoC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKqC,IAAQ,GACvBtgB,KAAK2gB,KAAKzC,EAAKmC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAAS1W,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAK2C,IAAQ,GACvBzgB,KAAK2gB,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAK0C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEP/H,EAAK1Z,KAAK2gB,KAAKjC,EAAKqB,IAEpBlD,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKsB,KACRhgB,KAAK2gB,KAAKhC,EAAKoB,IAAQ,EACpC3E,EAAKpb,KAAK2gB,KAAKhC,EAAKqB,IACpBtG,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAK2B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAK4B,IAAQ,GACvBngB,KAAK2gB,KAAKnC,EAAK0B,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAK2B,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKiC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKkC,IAAQ,GACvBtgB,KAAK2gB,KAAKtC,EAAKgC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAAS3W,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKwC,IAAQ,GACvBzgB,KAAK2gB,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKuC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPhI,EAAK1Z,KAAK2gB,KAAKjC,EAAKwB,IAEpBrD,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKyB,KACRngB,KAAK2gB,KAAKhC,EAAKuB,IAAQ,EACpC9E,EAAKpb,KAAK2gB,KAAKhC,EAAKwB,IACpBzG,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAK8B,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAK+B,IAAQ,GACvBtgB,KAAK2gB,KAAKnC,EAAK6B,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAAS5W,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKqC,IAAQ,GACvBzgB,KAAK2gB,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKoC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEPjI,EAAK1Z,KAAK2gB,KAAKjC,EAAK2B,IAEpBxD,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAK4B,KACRtgB,KAAK2gB,KAAKhC,EAAK0B,IAAQ,EACpCjF,EAAKpb,KAAK2gB,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAAS7W,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKkC,IAAQ,GACvBzgB,KAAK2gB,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKiC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAS9W,GAJb2O,EAAK1Z,KAAK2gB,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC3D,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAK+B,KACRzgB,KAAK2gB,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAzV,IAFAqQ,EAAKpb,KAAK2gB,KAAKhC,EAAK8B,MAEP5D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACPxzB,EAAE,GAAKqyB,GACPryB,EAAE,GAAKuyB,GACPvyB,EAAE,GAAKwyB,GACPxyB,EAAE,GAAKyyB,GACPzyB,EAAE,GAAK0yB,GACP1yB,EAAE,GAAK2yB,GACP3yB,EAAE,GAAK4yB,GACP5yB,EAAE,GAAK6yB,GACP7yB,EAAE,GAAK8yB,GACP9yB,EAAE,GAAK+yB,GACP/yB,EAAE,IAAMgzB,GACRhzB,EAAE,IAAMizB,GACRjzB,EAAE,IAAMkzB,GACRlzB,EAAE,IAAMmzB,GACRnzB,EAAE,IAAMozB,GACRpzB,EAAE,IAAMqzB,GACRrzB,EAAE,IAAMszB,GACRtzB,EAAE,IAAMuzB,GACRvzB,EAAE,IAAMwzB,GACE,IAAN9W,IACF1c,EAAE,IAAM0c,EACRyO,EAAI5uB,UAEC4uB,GAiDT,SAASsI,EAAY32B,EAAMysB,EAAK4B,GAE9B,OADW,IAAIuI,GACHC,KAAK72B,EAAMysB,EAAK4B,GAsB9B,SAASuI,EAAM7N,EAAG+N,GAChB71B,KAAK8nB,EAAIA,EACT9nB,KAAK61B,EAAIA,EAvENjiB,KAAK2gB,OACR/D,EAAcrD,GAiDhBjhB,EAAG9K,UAAU00B,MAAQ,SAAgBtK,EAAK4B,GACxC,IAAI7H,EACAhnB,EAAMyB,KAAKxB,OAASgtB,EAAIhtB,OAW5B,OATE+mB,EADkB,KAAhBvlB,KAAKxB,QAAgC,KAAfgtB,EAAIhtB,OACtBgyB,EAAYxwB,KAAMwrB,EAAK4B,GACpB7uB,EAAM,GACT4uB,EAAWntB,KAAMwrB,EAAK4B,GACnB7uB,EAAM,KArDnB,SAAmBQ,EAAMysB,EAAK4B,GAC5BA,EAAIxC,SAAWY,EAAIZ,SAAW7rB,EAAK6rB,SACnCwC,EAAI5uB,OAASO,EAAKP,OAASgtB,EAAIhtB,OAI/B,IAFA,IAAI+uB,EAAQ,EACRwI,EAAU,EACLvI,EAAI,EAAGA,EAAIJ,EAAI5uB,OAAS,EAAGgvB,IAAK,CAGvC,IAAIC,EAASsI,EACbA,EAAU,EAGV,IAFA,IAAIrI,EAAgB,SAARH,EACRI,EAAO/Z,KAAKwD,IAAIoW,EAAGhC,EAAIhtB,OAAS,GAC3BgnB,EAAI5R,KAAK6X,IAAI,EAAG+B,EAAIzuB,EAAKP,OAAS,GAAIgnB,GAAKmI,EAAMnI,IAAK,CAC7D,IAAI/mB,EAAI+uB,EAAIhI,EAGRvT,GAFoB,EAAhBlT,EAAK8rB,MAAMpsB,KACI,EAAf+sB,EAAIX,MAAMrF,IAGd8H,EAAS,SAAJrb,EAGTyb,EAAa,UADbJ,EAAMA,EAAKI,EAAS,GAIpBqI,IAFAtI,GAHAA,EAAUA,GAAWxb,EAAI,SAAa,GAAM,IAGxBqb,IAAO,IAAO,KAEZ,GACtBG,GAAU,SAEZL,EAAIvC,MAAM2C,GAAKE,EACfH,EAAQE,EACRA,EAASsI,EAQX,OANc,IAAVxI,EACFH,EAAIvC,MAAM2C,GAAKD,EAEfH,EAAI5uB,SAGC4uB,EAAIhB,QAgBH4J,CAASh2B,KAAMwrB,EAAK4B,GAEpBsI,EAAW11B,KAAMwrB,EAAK4B,GAGvB7H,GAWToQ,EAAKv0B,UAAU60B,QAAU,SAAkBC,GAGzC,IAFA,IAAIrH,EAAI,IAAIlwB,MAAMu3B,GACdC,EAAIjqB,EAAG9K,UAAUwtB,WAAWsH,GAAK,EAC5Bz3B,EAAI,EAAGA,EAAIy3B,EAAGz3B,IACrBowB,EAAEpwB,GAAKuB,KAAKo2B,OAAO33B,EAAG03B,EAAGD,GAG3B,OAAOrH,GAIT8G,EAAKv0B,UAAUg1B,OAAS,SAAiBtO,EAAGqO,EAAGD,GAC7C,GAAU,IAANpO,GAAWA,IAAMoO,EAAI,EAAG,OAAOpO,EAGnC,IADA,IAAIuO,EAAK,EACA53B,EAAI,EAAGA,EAAI03B,EAAG13B,IACrB43B,IAAW,EAAJvO,IAAWqO,EAAI13B,EAAI,EAC1BqpB,IAAM,EAGR,OAAOuO,GAKTV,EAAKv0B,UAAUk1B,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAIz3B,EAAI,EAAGA,EAAIy3B,EAAGz3B,IACrBi4B,EAAKj4B,GAAK+3B,EAAID,EAAI93B,IAClBk4B,EAAKl4B,GAAKg4B,EAAIF,EAAI93B,KAItBk3B,EAAKv0B,UAAUw1B,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtEv2B,KAAKs2B,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAI3zB,EAAI,EAAGA,EAAI2zB,EAAG3zB,IAAM,EAM3B,IALA,IAAI4zB,EAAI5zB,GAAK,EAETs0B,EAAQjjB,KAAKkjB,IAAI,EAAIljB,KAAKmjB,GAAKZ,GAC/Ba,EAAQpjB,KAAKqjB,IAAI,EAAIrjB,KAAKmjB,GAAKZ,GAE1B/vB,EAAI,EAAGA,EAAI8vB,EAAG9vB,GAAK+vB,EAI1B,IAHA,IAAIe,EAASL,EACTM,EAASH,EAEJxR,EAAI,EAAGA,EAAIjjB,EAAGijB,IAAK,CAC1B,IAAI4R,EAAKV,EAAKtwB,EAAIof,GACd6R,EAAKV,EAAKvwB,EAAIof,GAEd8R,EAAKZ,EAAKtwB,EAAIof,EAAIjjB,GAClBg1B,EAAKZ,EAAKvwB,EAAIof,EAAIjjB,GAElBi1B,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELd,EAAKtwB,EAAIof,GAAK4R,EAAKE,EACnBX,EAAKvwB,EAAIof,GAAK6R,EAAKE,EAEnBb,EAAKtwB,EAAIof,EAAIjjB,GAAK60B,EAAKE,EACvBX,EAAKvwB,EAAIof,EAAIjjB,GAAK80B,EAAKE,EAGnB/R,IAAM2Q,IACRqB,EAAKX,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASM,KAOnB7B,EAAKv0B,UAAUq2B,YAAc,SAAsBj1B,EAAGk1B,GACpD,IAAIxB,EAAqB,EAAjBtiB,KAAK6X,IAAIiM,EAAGl1B,GAChBm1B,EAAU,EAAJzB,EACNz3B,EAAI,EACR,IAAKy3B,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/Bz3B,IAGF,OAAO,GAAKA,EAAI,EAAIk5B,GAGtBhC,EAAKv0B,UAAUw2B,UAAY,SAAoBpB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIz3B,EAAI,EAAGA,EAAIy3B,EAAI,EAAGz3B,IAAK,CAC9B,IAAIowB,EAAI2H,EAAI/3B,GAEZ+3B,EAAI/3B,GAAK+3B,EAAIN,EAAIz3B,EAAI,GACrB+3B,EAAIN,EAAIz3B,EAAI,GAAKowB,EAEjBA,EAAI4H,EAAIh4B,GAERg4B,EAAIh4B,IAAMg4B,EAAIP,EAAIz3B,EAAI,GACtBg4B,EAAIP,EAAIz3B,EAAI,IAAMowB,IAItB8G,EAAKv0B,UAAUy2B,aAAe,SAAuBC,EAAI5B,GAEvD,IADA,IAAI3I,EAAQ,EACH9uB,EAAI,EAAGA,EAAIy3B,EAAI,EAAGz3B,IAAK,CAC9B,IAAIytB,EAAoC,KAAhCtY,KAAKmkB,MAAMD,EAAG,EAAIr5B,EAAI,GAAKy3B,GACjCtiB,KAAKmkB,MAAMD,EAAG,EAAIr5B,GAAKy3B,GACvB3I,EAEFuK,EAAGr5B,GAAS,SAAJytB,EAGNqB,EADErB,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAO4L,GAGTnC,EAAKv0B,UAAU42B,WAAa,SAAqBF,EAAIv5B,EAAKi4B,EAAKN,GAE7D,IADA,IAAI3I,EAAQ,EACH9uB,EAAI,EAAGA,EAAIF,EAAKE,IACvB8uB,GAAyB,EAARuK,EAAGr5B,GAEpB+3B,EAAI,EAAI/3B,GAAa,KAAR8uB,EAAgBA,KAAkB,GAC/CiJ,EAAI,EAAI/3B,EAAI,GAAa,KAAR8uB,EAAgBA,KAAkB,GAIrD,IAAK9uB,EAAI,EAAIF,EAAKE,EAAIy3B,IAAKz3B,EACzB+3B,EAAI/3B,GAAK,EAGX0rB,EAAiB,IAAVoD,GACPpD,EAA6B,MAAb,KAARoD,KAGVoI,EAAKv0B,UAAU62B,KAAO,SAAe/B,GAEnC,IADA,IAAIgC,EAAK,IAAIv5B,MAAMu3B,GACVz3B,EAAI,EAAGA,EAAIy3B,EAAGz3B,IACrBy5B,EAAGz5B,GAAK,EAGV,OAAOy5B,GAGTvC,EAAKv0B,UAAUw0B,KAAO,SAAe9N,EAAG+N,EAAGzI,GACzC,IAAI8I,EAAI,EAAIl2B,KAAKy3B,YAAY3P,EAAEtpB,OAAQq3B,EAAEr3B,QAErC+3B,EAAMv2B,KAAKi2B,QAAQC,GAEnBiC,EAAIn4B,KAAKi4B,KAAK/B,GAEdM,EAAM,IAAI73B,MAAMu3B,GAChBkC,EAAO,IAAIz5B,MAAMu3B,GACjBmC,EAAO,IAAI15B,MAAMu3B,GAEjBoC,EAAO,IAAI35B,MAAMu3B,GACjBqC,EAAQ,IAAI55B,MAAMu3B,GAClBsC,EAAQ,IAAI75B,MAAMu3B,GAElBuC,EAAOrL,EAAIvC,MACf4N,EAAKj6B,OAAS03B,EAEdl2B,KAAKg4B,WAAWlQ,EAAE+C,MAAO/C,EAAEtpB,OAAQg4B,EAAKN,GACxCl2B,KAAKg4B,WAAWnC,EAAEhL,MAAOgL,EAAEr3B,OAAQ85B,EAAMpC,GAEzCl2B,KAAK42B,UAAUJ,EAAK2B,EAAGC,EAAMC,EAAMnC,EAAGK,GACtCv2B,KAAK42B,UAAU0B,EAAMH,EAAGI,EAAOC,EAAOtC,EAAGK,GAEzC,IAAK,IAAI93B,EAAI,EAAGA,EAAIy3B,EAAGz3B,IAAK,CAC1B,IAAI+4B,EAAKY,EAAK35B,GAAK85B,EAAM95B,GAAK45B,EAAK55B,GAAK+5B,EAAM/5B,GAC9C45B,EAAK55B,GAAK25B,EAAK35B,GAAK+5B,EAAM/5B,GAAK45B,EAAK55B,GAAK85B,EAAM95B,GAC/C25B,EAAK35B,GAAK+4B,EAUZ,OAPAx3B,KAAK43B,UAAUQ,EAAMC,EAAMnC,GAC3Bl2B,KAAK42B,UAAUwB,EAAMC,EAAMI,EAAMN,EAAGjC,EAAGK,GACvCv2B,KAAK43B,UAAUa,EAAMN,EAAGjC,GACxBl2B,KAAK63B,aAAaY,EAAMvC,GAExB9I,EAAIxC,SAAW9C,EAAE8C,SAAWiL,EAAEjL,SAC9BwC,EAAI5uB,OAASspB,EAAEtpB,OAASq3B,EAAEr3B,OACnB4uB,EAAIhB,SAIblgB,EAAG9K,UAAUgV,IAAM,SAAcoV,GAC/B,IAAI4B,EAAM,IAAIlhB,EAAG,MAEjB,OADAkhB,EAAIvC,MAAQ,IAAIlsB,MAAMqB,KAAKxB,OAASgtB,EAAIhtB,QACjCwB,KAAK81B,MAAMtK,EAAK4B,IAIzBlhB,EAAG9K,UAAUs3B,KAAO,SAAelN,GACjC,IAAI4B,EAAM,IAAIlhB,EAAG,MAEjB,OADAkhB,EAAIvC,MAAQ,IAAIlsB,MAAMqB,KAAKxB,OAASgtB,EAAIhtB,QACjCk3B,EAAW11B,KAAMwrB,EAAK4B,IAI/BlhB,EAAG9K,UAAUmzB,KAAO,SAAe/I,GACjC,OAAOxrB,KAAK4sB,QAAQkJ,MAAMtK,EAAKxrB,OAGjCkM,EAAG9K,UAAU2S,MAAQ,SAAgByX,GACnCrB,EAAsB,kBAARqB,GACdrB,EAAOqB,EAAM,UAIb,IADA,IAAI+B,EAAQ,EACH9uB,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAAK,CACpC,IAAIytB,GAAqB,EAAhBlsB,KAAK6qB,MAAMpsB,IAAU+sB,EAC1B8B,GAAU,SAAJpB,IAA0B,SAARqB,GAC5BA,IAAU,GACVA,GAAUrB,EAAI,SAAa,EAE3BqB,GAASD,IAAO,GAChBttB,KAAK6qB,MAAMpsB,GAAU,SAAL6uB,EAQlB,OALc,IAAVC,IACFvtB,KAAK6qB,MAAMpsB,GAAK8uB,EAChBvtB,KAAKxB,UAGAwB,MAGTkM,EAAG9K,UAAUyX,KAAO,SAAe2S,GACjC,OAAOxrB,KAAK4sB,QAAQ7Y,MAAMyX,IAI5Btf,EAAG9K,UAAUu3B,IAAM,WACjB,OAAO34B,KAAKoW,IAAIpW,OAIlBkM,EAAG9K,UAAUw3B,KAAO,WAClB,OAAO54B,KAAKu0B,KAAKv0B,KAAK4sB,UAIxB1gB,EAAG9K,UAAUgoB,IAAM,SAAcoC,GAC/B,IAAIU,EAxxCN,SAAqBV,GAGnB,IAFA,IAAIU,EAAI,IAAIvtB,MAAM6sB,EAAIuD,aAEbsB,EAAM,EAAGA,EAAMnE,EAAE1tB,OAAQ6xB,IAAO,CACvC,IAAIlE,EAAOkE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBnE,EAAEmE,IAAQ7E,EAAIX,MAAMsB,GAAQ,GAAKmE,KAAWA,EAG9C,OAAOpE,EA8wCC2M,CAAWrN,GACnB,GAAiB,IAAbU,EAAE1tB,OAAc,OAAO,IAAI0N,EAAG,GAIlC,IADA,IAAIqZ,EAAMvlB,KACDvB,EAAI,EAAGA,EAAIytB,EAAE1tB,QACP,IAAT0tB,EAAEztB,GADsBA,IAAK8mB,EAAMA,EAAIoT,OAI7C,KAAMl6B,EAAIytB,EAAE1tB,OACV,IAAK,IAAIgwB,EAAIjJ,EAAIoT,MAAOl6B,EAAIytB,EAAE1tB,OAAQC,IAAK+vB,EAAIA,EAAEmK,MAClC,IAATzM,EAAEztB,KAEN8mB,EAAMA,EAAInP,IAAIoY,IAIlB,OAAOjJ,GAITrZ,EAAG9K,UAAU03B,OAAS,SAAiBzjB,GACrC8U,EAAuB,kBAAT9U,GAAqBA,GAAQ,GAC3C,IAGI5W,EAHAwT,EAAIoD,EAAO,GACX9S,GAAK8S,EAAOpD,GAAK,GACjB8mB,EAAa,WAAe,GAAK9mB,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIsb,EAAQ,EAEZ,IAAK9uB,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAAK,CAChC,IAAIu6B,EAAWh5B,KAAK6qB,MAAMpsB,GAAKs6B,EAC3Bpa,GAAsB,EAAhB3e,KAAK6qB,MAAMpsB,IAAUu6B,GAAa/mB,EAC5CjS,KAAK6qB,MAAMpsB,GAAKkgB,EAAI4O,EACpBA,EAAQyL,IAAc,GAAK/mB,EAGzBsb,IACFvtB,KAAK6qB,MAAMpsB,GAAK8uB,EAChBvtB,KAAKxB,UAIT,GAAU,IAAN+D,EAAS,CACX,IAAK9D,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,EAAGA,IAChCuB,KAAK6qB,MAAMpsB,EAAI8D,GAAKvC,KAAK6qB,MAAMpsB,GAGjC,IAAKA,EAAI,EAAGA,EAAI8D,EAAG9D,IACjBuB,KAAK6qB,MAAMpsB,GAAK,EAGlBuB,KAAKxB,QAAU+D,EAGjB,OAAOvC,KAAKosB,SAGdlgB,EAAG9K,UAAU63B,MAAQ,SAAgB5jB,GAGnC,OADA8U,EAAyB,IAAlBnqB,KAAK4qB,UACL5qB,KAAK84B,OAAOzjB,IAMrBnJ,EAAG9K,UAAUstB,OAAS,SAAiBrZ,EAAM6jB,EAAMC,GAEjD,IAAIC,EADJjP,EAAuB,kBAAT9U,GAAqBA,GAAQ,GAGzC+jB,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAIjnB,EAAIoD,EAAO,GACX9S,EAAIqR,KAAKwD,KAAK/B,EAAOpD,GAAK,GAAIjS,KAAKxB,QACnC2lB,EAAO,SAAc,WAAclS,GAAMA,EACzConB,EAAcF,EAMlB,GAJAC,GAAK72B,EACL62B,EAAIxlB,KAAK6X,IAAI,EAAG2N,GAGZC,EAAa,CACf,IAAK,IAAI56B,EAAI,EAAGA,EAAI8D,EAAG9D,IACrB46B,EAAYxO,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,GAEpC46B,EAAY76B,OAAS+D,EAGvB,GAAU,IAANA,QAEG,GAAIvC,KAAKxB,OAAS+D,EAEvB,IADAvC,KAAKxB,QAAU+D,EACV9D,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAC3BuB,KAAK6qB,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,EAAI8D,QAGjCvC,KAAK6qB,MAAM,GAAK,EAChB7qB,KAAKxB,OAAS,EAGhB,IAAI+uB,EAAQ,EACZ,IAAK9uB,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,IAAgB,IAAV8uB,GAAe9uB,GAAK26B,GAAI36B,IAAK,CAChE,IAAIguB,EAAuB,EAAhBzsB,KAAK6qB,MAAMpsB,GACtBuB,KAAK6qB,MAAMpsB,GAAM8uB,GAAU,GAAKtb,EAAOwa,IAASxa,EAChDsb,EAAQd,EAAOtI,EAajB,OATIkV,GAAyB,IAAV9L,IACjB8L,EAAYxO,MAAMwO,EAAY76B,UAAY+uB,GAGxB,IAAhBvtB,KAAKxB,SACPwB,KAAK6qB,MAAM,GAAK,EAChB7qB,KAAKxB,OAAS,GAGTwB,KAAKosB,SAGdlgB,EAAG9K,UAAUk4B,MAAQ,SAAgBjkB,EAAM6jB,EAAMC,GAG/C,OADAhP,EAAyB,IAAlBnqB,KAAK4qB,UACL5qB,KAAK0uB,OAAOrZ,EAAM6jB,EAAMC,IAIjCjtB,EAAG9K,UAAUsoB,KAAO,SAAerU,GACjC,OAAOrV,KAAK4sB,QAAQqM,MAAM5jB,IAG5BnJ,EAAG9K,UAAUm4B,MAAQ,SAAgBlkB,GACnC,OAAOrV,KAAK4sB,QAAQkM,OAAOzjB,IAI7BnJ,EAAG9K,UAAUuoB,KAAO,SAAetU,GACjC,OAAOrV,KAAK4sB,QAAQ0M,MAAMjkB,IAG5BnJ,EAAG9K,UAAUo4B,MAAQ,SAAgBnkB,GACnC,OAAOrV,KAAK4sB,QAAQ8B,OAAOrZ,IAI7BnJ,EAAG9K,UAAUiuB,MAAQ,SAAgBgB,GACnClG,EAAsB,kBAARkG,GAAoBA,GAAO,GACzC,IAAIpe,EAAIoe,EAAM,GACV9tB,GAAK8tB,EAAMpe,GAAK,GAChBuc,EAAI,GAAKvc,EAGb,QAAIjS,KAAKxB,QAAU+D,OAGXvC,KAAK6qB,MAAMtoB,GAELisB,IAIhBtiB,EAAG9K,UAAUq4B,OAAS,SAAiBpkB,GACrC8U,EAAuB,kBAAT9U,GAAqBA,GAAQ,GAC3C,IAAIpD,EAAIoD,EAAO,GACX9S,GAAK8S,EAAOpD,GAAK,GAIrB,GAFAkY,EAAyB,IAAlBnqB,KAAK4qB,SAAgB,2CAExB5qB,KAAKxB,QAAU+D,EACjB,OAAOvC,KAQT,GALU,IAANiS,GACF1P,IAEFvC,KAAKxB,OAASoV,KAAKwD,IAAI7U,EAAGvC,KAAKxB,QAErB,IAANyT,EAAS,CACX,IAAIkS,EAAO,SAAc,WAAclS,GAAMA,EAC7CjS,KAAK6qB,MAAM7qB,KAAKxB,OAAS,IAAM2lB,EAGjC,OAAOnkB,KAAKosB,SAIdlgB,EAAG9K,UAAUqoB,MAAQ,SAAgBpU,GACnC,OAAOrV,KAAK4sB,QAAQ6M,OAAOpkB,IAI7BnJ,EAAG9K,UAAUmS,MAAQ,SAAgBiY,GAGnC,OAFArB,EAAsB,kBAARqB,GACdrB,EAAOqB,EAAM,UACTA,EAAM,EAAUxrB,KAAK05B,OAAOlO,GAGV,IAAlBxrB,KAAK4qB,SACa,IAAhB5qB,KAAKxB,SAAiC,EAAhBwB,KAAK6qB,MAAM,IAAUW,GAC7CxrB,KAAK6qB,MAAM,GAAKW,GAAuB,EAAhBxrB,KAAK6qB,MAAM,IAClC7qB,KAAK4qB,SAAW,EACT5qB,OAGTA,KAAK4qB,SAAW,EAChB5qB,KAAK05B,MAAMlO,GACXxrB,KAAK4qB,SAAW,EACT5qB,MAIFA,KAAK0sB,OAAOlB,IAGrBtf,EAAG9K,UAAUsrB,OAAS,SAAiBlB,GACrCxrB,KAAK6qB,MAAM,IAAMW,EAGjB,IAAK,IAAI/sB,EAAI,EAAGA,EAAIuB,KAAKxB,QAAUwB,KAAK6qB,MAAMpsB,IAAM,SAAWA,IAC7DuB,KAAK6qB,MAAMpsB,IAAM,SACbA,IAAMuB,KAAKxB,OAAS,EACtBwB,KAAK6qB,MAAMpsB,EAAI,GAAK,EAEpBuB,KAAK6qB,MAAMpsB,EAAI,KAKnB,OAFAuB,KAAKxB,OAASoV,KAAK6X,IAAIzrB,KAAKxB,OAAQC,EAAI,GAEjCuB,MAITkM,EAAG9K,UAAUs4B,MAAQ,SAAgBlO,GAGnC,GAFArB,EAAsB,kBAARqB,GACdrB,EAAOqB,EAAM,UACTA,EAAM,EAAG,OAAOxrB,KAAKuT,OAAOiY,GAEhC,GAAsB,IAAlBxrB,KAAK4qB,SAIP,OAHA5qB,KAAK4qB,SAAW,EAChB5qB,KAAKuT,MAAMiY,GACXxrB,KAAK4qB,SAAW,EACT5qB,KAKT,GAFAA,KAAK6qB,MAAM,IAAMW,EAEG,IAAhBxrB,KAAKxB,QAAgBwB,KAAK6qB,MAAM,GAAK,EACvC7qB,KAAK6qB,MAAM,IAAM7qB,KAAK6qB,MAAM,GAC5B7qB,KAAK4qB,SAAW,OAGhB,IAAK,IAAInsB,EAAI,EAAGA,EAAIuB,KAAKxB,QAAUwB,KAAK6qB,MAAMpsB,GAAK,EAAGA,IACpDuB,KAAK6qB,MAAMpsB,IAAM,SACjBuB,KAAK6qB,MAAMpsB,EAAI,IAAM,EAIzB,OAAOuB,KAAKosB,SAGdlgB,EAAG9K,UAAUgS,KAAO,SAAeoY,GACjC,OAAOxrB,KAAK4sB,QAAQrZ,MAAMiY,IAG5Btf,EAAG9K,UAAU+X,KAAO,SAAeqS,GACjC,OAAOxrB,KAAK4sB,QAAQ8M,MAAMlO,IAG5Btf,EAAG9K,UAAUu4B,KAAO,WAGlB,OAFA35B,KAAK4qB,SAAW,EAET5qB,MAGTkM,EAAG9K,UAAU+tB,IAAM,WACjB,OAAOnvB,KAAK4sB,QAAQ+M,QAGtBztB,EAAG9K,UAAUw4B,aAAe,SAAuBpO,EAAKpV,EAAKyjB,GAC3D,IACIp7B,EAIAytB,EALA3tB,EAAMitB,EAAIhtB,OAASq7B,EAGvB75B,KAAK6sB,QAAQtuB,GAGb,IAAIgvB,EAAQ,EACZ,IAAK9uB,EAAI,EAAGA,EAAI+sB,EAAIhtB,OAAQC,IAAK,CAC/BytB,GAA6B,EAAxBlsB,KAAK6qB,MAAMpsB,EAAIo7B,IAActM,EAClC,IAAI5B,GAAwB,EAAfH,EAAIX,MAAMpsB,IAAU2X,EAEjCmX,IADArB,GAAa,SAARP,IACS,KAAQA,EAAQ,SAAa,GAC3C3rB,KAAK6qB,MAAMpsB,EAAIo7B,GAAa,SAAJ3N,EAE1B,KAAOztB,EAAIuB,KAAKxB,OAASq7B,EAAOp7B,IAE9B8uB,GADArB,GAA6B,EAAxBlsB,KAAK6qB,MAAMpsB,EAAIo7B,IAActM,IACrB,GACbvtB,KAAK6qB,MAAMpsB,EAAIo7B,GAAa,SAAJ3N,EAG1B,GAAc,IAAVqB,EAAa,OAAOvtB,KAAKosB,QAK7B,IAFAjC,GAAkB,IAAXoD,GACPA,EAAQ,EACH9uB,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAE3B8uB,GADArB,IAAsB,EAAhBlsB,KAAK6qB,MAAMpsB,IAAU8uB,IACd,GACbvtB,KAAK6qB,MAAMpsB,GAAS,SAAJytB,EAIlB,OAFAlsB,KAAK4qB,SAAW,EAET5qB,KAAKosB,SAGdlgB,EAAG9K,UAAU04B,SAAW,SAAmBtO,EAAKuO,GAC9C,IAAIF,GAAQ75B,KAAKxB,OAASgtB,EAAIhtB,QAE1BwC,EAAIhB,KAAK4sB,QACTS,EAAI7B,EAGJwO,EAA8B,EAAxB3M,EAAExC,MAAMwC,EAAE7uB,OAAS,GAGf,KADdq7B,EAAQ,GADM75B,KAAK4uB,WAAWoL,MAG5B3M,EAAIA,EAAEkM,MAAMM,GACZ74B,EAAE83B,OAAOe,GACTG,EAA8B,EAAxB3M,EAAExC,MAAMwC,EAAE7uB,OAAS,IAI3B,IACIgwB,EADAkJ,EAAI12B,EAAExC,OAAS6uB,EAAE7uB,OAGrB,GAAa,QAATu7B,EAAgB,EAClBvL,EAAI,IAAItiB,EAAG,OACT1N,OAASk5B,EAAI,EACflJ,EAAE3D,MAAQ,IAAIlsB,MAAM6vB,EAAEhwB,QACtB,IAAK,IAAIC,EAAI,EAAGA,EAAI+vB,EAAEhwB,OAAQC,IAC5B+vB,EAAE3D,MAAMpsB,GAAK,EAIjB,IAAIw7B,EAAOj5B,EAAE4rB,QAAQgN,aAAavM,EAAG,EAAGqK,GAClB,IAAlBuC,EAAKrP,WACP5pB,EAAIi5B,EACAzL,IACFA,EAAE3D,MAAM6M,GAAK,IAIjB,IAAK,IAAIlS,EAAIkS,EAAI,EAAGlS,GAAK,EAAGA,IAAK,CAC/B,IAAI0U,EAAmC,UAAL,EAAxBl5B,EAAE6pB,MAAMwC,EAAE7uB,OAASgnB,KACE,EAA5BxkB,EAAE6pB,MAAMwC,EAAE7uB,OAASgnB,EAAI,IAO1B,IAHA0U,EAAKtmB,KAAKwD,IAAK8iB,EAAKF,EAAO,EAAG,UAE9Bh5B,EAAE44B,aAAavM,EAAG6M,EAAI1U,GACA,IAAfxkB,EAAE4pB,UACPsP,IACAl5B,EAAE4pB,SAAW,EACb5pB,EAAE44B,aAAavM,EAAG,EAAG7H,GAChBxkB,EAAEoiB,WACLpiB,EAAE4pB,UAAY,GAGd4D,IACFA,EAAE3D,MAAMrF,GAAK0U,GAajB,OAVI1L,GACFA,EAAEpC,QAEJprB,EAAEorB,QAGW,QAAT2N,GAA4B,IAAVF,GACpB74B,EAAE0tB,OAAOmL,GAGJ,CACL5Q,IAAKuF,GAAK,KACVhC,IAAKxrB,IAQTkL,EAAG9K,UAAU+4B,OAAS,SAAiB3O,EAAKuO,EAAMK,GAGhD,OAFAjQ,GAAQqB,EAAIpI,UAERpjB,KAAKojB,SACA,CACL6F,IAAK,IAAI/c,EAAG,GACZsgB,IAAK,IAAItgB,EAAG,IAKM,IAAlBlM,KAAK4qB,UAAmC,IAAjBY,EAAIZ,UAC7BrF,EAAMvlB,KAAKwvB,MAAM2K,OAAO3O,EAAKuO,GAEhB,QAATA,IACF9Q,EAAM1D,EAAI0D,IAAIuG,OAGH,QAATuK,IACFvN,EAAMjH,EAAIiH,IAAIgD,MACV4K,GAA6B,IAAjB5N,EAAI5B,UAClB4B,EAAIxY,KAAKwX,IAIN,CACLvC,IAAKA,EACLuD,IAAKA,IAIa,IAAlBxsB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,UAC7BrF,EAAMvlB,KAAKm6B,OAAO3O,EAAIgE,MAAOuK,GAEhB,QAATA,IACF9Q,EAAM1D,EAAI0D,IAAIuG,OAGT,CACLvG,IAAKA,EACLuD,IAAKjH,EAAIiH,MAI0B,KAAlCxsB,KAAK4qB,SAAWY,EAAIZ,WACvBrF,EAAMvlB,KAAKwvB,MAAM2K,OAAO3O,EAAIgE,MAAOuK,GAEtB,QAATA,IACFvN,EAAMjH,EAAIiH,IAAIgD,MACV4K,GAA6B,IAAjB5N,EAAI5B,UAClB4B,EAAI+D,KAAK/E,IAIN,CACLvC,IAAK1D,EAAI0D,IACTuD,IAAKA,IAOLhB,EAAIhtB,OAASwB,KAAKxB,QAAUwB,KAAK4rB,IAAIJ,GAAO,EACvC,CACLvC,IAAK,IAAI/c,EAAG,GACZsgB,IAAKxsB,MAKU,IAAfwrB,EAAIhtB,OACO,QAATu7B,EACK,CACL9Q,IAAKjpB,KAAKqZ,KAAKmS,EAAIX,MAAM,IACzB2B,IAAK,MAII,QAATuN,EACK,CACL9Q,IAAK,KACLuD,IAAK,IAAItgB,EAAGlM,KAAK+tB,KAAKvC,EAAIX,MAAM,MAI7B,CACL5B,IAAKjpB,KAAKqZ,KAAKmS,EAAIX,MAAM,IACzB2B,IAAK,IAAItgB,EAAGlM,KAAK+tB,KAAKvC,EAAIX,MAAM,MAI7B7qB,KAAK85B,SAAStO,EAAKuO,GAlF1B,IAAI9Q,EAAKuD,EAAKjH,GAsFhBrZ,EAAG9K,UAAU6nB,IAAM,SAAcuC,GAC/B,OAAOxrB,KAAKm6B,OAAO3O,EAAK,OAAO,GAAOvC,KAIxC/c,EAAG9K,UAAUorB,IAAM,SAAchB,GAC/B,OAAOxrB,KAAKm6B,OAAO3O,EAAK,OAAO,GAAOgB,KAGxCtgB,EAAG9K,UAAU+nB,KAAO,SAAeqC,GACjC,OAAOxrB,KAAKm6B,OAAO3O,EAAK,OAAO,GAAMgB,KAIvCtgB,EAAG9K,UAAUi5B,SAAW,SAAmB7O,GACzC,IAAI8O,EAAKt6B,KAAKm6B,OAAO3O,GAGrB,GAAI8O,EAAG9N,IAAIpJ,SAAU,OAAOkX,EAAGrR,IAE/B,IAAIuD,EAA0B,IAApB8N,EAAGrR,IAAI2B,SAAiB0P,EAAG9N,IAAI+D,KAAK/E,GAAO8O,EAAG9N,IAEpD+N,EAAO/O,EAAIgO,MAAM,GACjBgB,EAAKhP,EAAIiD,MAAM,GACf7C,EAAMY,EAAIZ,IAAI2O,GAGlB,OAAI3O,EAAM,GAAY,IAAP4O,GAAoB,IAAR5O,EAAkB0O,EAAGrR,IAGrB,IAApBqR,EAAGrR,IAAI2B,SAAiB0P,EAAGrR,IAAIyQ,MAAM,GAAKY,EAAGrR,IAAI1V,MAAM,IAGhErH,EAAG9K,UAAU2sB,KAAO,SAAevC,GACjCrB,EAAOqB,GAAO,UAId,IAHA,IAAIplB,GAAK,GAAK,IAAMolB,EAEhB7b,EAAM,EACDlR,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,EAAGA,IACpCkR,GAAOvJ,EAAIuJ,GAAuB,EAAhB3P,KAAK6qB,MAAMpsB,KAAW+sB,EAG1C,OAAO7b,GAITzD,EAAG9K,UAAU4sB,MAAQ,SAAgBxC,GACnCrB,EAAOqB,GAAO,UAGd,IADA,IAAI+B,EAAQ,EACH9uB,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,EAAGA,IAAK,CACzC,IAAIytB,GAAqB,EAAhBlsB,KAAK6qB,MAAMpsB,IAAkB,SAAR8uB,EAC9BvtB,KAAK6qB,MAAMpsB,GAAMytB,EAAIV,EAAO,EAC5B+B,EAAQrB,EAAIV,EAGd,OAAOxrB,KAAKosB,SAGdlgB,EAAG9K,UAAUiY,KAAO,SAAemS,GACjC,OAAOxrB,KAAK4sB,QAAQoB,MAAMxC,IAG5Btf,EAAG9K,UAAUq5B,KAAO,SAAer0B,GACjC+jB,EAAsB,IAAf/jB,EAAEwkB,UACTT,GAAQ/jB,EAAEgd,UAEV,IAAI0E,EAAI9nB,KACJ61B,EAAIzvB,EAAEwmB,QAGR9E,EADiB,IAAfA,EAAE8C,SACA9C,EAAEqB,KAAK/iB,GAEP0hB,EAAE8E,QAaR,IATA,IAAI8N,EAAI,IAAIxuB,EAAG,GACXyuB,EAAI,IAAIzuB,EAAG,GAGX0uB,EAAI,IAAI1uB,EAAG,GACX2uB,EAAI,IAAI3uB,EAAG,GAEX4uB,EAAI,EAEDhT,EAAE1O,UAAYyc,EAAEzc,UACrB0O,EAAE4G,OAAO,GACTmH,EAAEnH,OAAO,KACPoM,EAMJ,IAHA,IAAIC,EAAKlF,EAAEjJ,QACPoO,EAAKlT,EAAE8E,SAEH9E,EAAE1E,UAAU,CAClB,IAAK,IAAI3kB,EAAI,EAAGw8B,EAAK,EAAyB,KAArBnT,EAAE+C,MAAM,GAAKoQ,IAAax8B,EAAI,KAAMA,EAAGw8B,IAAO,GACvE,GAAIx8B,EAAI,EAEN,IADAqpB,EAAE4G,OAAOjwB,GACFA,KAAM,IACPi8B,EAAEQ,SAAWP,EAAEO,WACjBR,EAAE1mB,KAAK+mB,GACPJ,EAAEpK,KAAKyK,IAGTN,EAAEhM,OAAO,GACTiM,EAAEjM,OAAO,GAIb,IAAK,IAAIlJ,EAAI,EAAG2V,EAAK,EAAyB,KAArBtF,EAAEhL,MAAM,GAAKsQ,IAAa3V,EAAI,KAAMA,EAAG2V,IAAO,GACvE,GAAI3V,EAAI,EAEN,IADAqQ,EAAEnH,OAAOlJ,GACFA,KAAM,IACPoV,EAAEM,SAAWL,EAAEK,WACjBN,EAAE5mB,KAAK+mB,GACPF,EAAEtK,KAAKyK,IAGTJ,EAAElM,OAAO,GACTmM,EAAEnM,OAAO,GAIT5G,EAAE8D,IAAIiK,IAAM,GACd/N,EAAEyI,KAAKsF,GACP6E,EAAEnK,KAAKqK,GACPD,EAAEpK,KAAKsK,KAEPhF,EAAEtF,KAAKzI,GACP8S,EAAErK,KAAKmK,GACPG,EAAEtK,KAAKoK,IAIX,MAAO,CACL35B,EAAG45B,EACHvN,EAAGwN,EACHO,IAAKvF,EAAEiD,OAAOgC,KAOlB5uB,EAAG9K,UAAUi6B,OAAS,SAAiBj1B,GACrC+jB,EAAsB,IAAf/jB,EAAEwkB,UACTT,GAAQ/jB,EAAEgd,UAEV,IAAIpiB,EAAIhB,KACJqtB,EAAIjnB,EAAEwmB,QAGR5rB,EADiB,IAAfA,EAAE4pB,SACA5pB,EAAEmoB,KAAK/iB,GAEPpF,EAAE4rB,QAQR,IALA,IAuCIrH,EAvCA+V,EAAK,IAAIpvB,EAAG,GACZqvB,EAAK,IAAIrvB,EAAG,GAEZsvB,EAAQnO,EAAET,QAEP5rB,EAAEy6B,KAAK,GAAK,GAAKpO,EAAEoO,KAAK,GAAK,GAAG,CACrC,IAAK,IAAIh9B,EAAI,EAAGw8B,EAAK,EAAyB,KAArBj6B,EAAE6pB,MAAM,GAAKoQ,IAAax8B,EAAI,KAAMA,EAAGw8B,IAAO,GACvE,GAAIx8B,EAAI,EAEN,IADAuC,EAAE0tB,OAAOjwB,GACFA,KAAM,GACP68B,EAAGJ,SACLI,EAAGtnB,KAAKwnB,GAGVF,EAAG5M,OAAO,GAId,IAAK,IAAIlJ,EAAI,EAAG2V,EAAK,EAAyB,KAArB9N,EAAExC,MAAM,GAAKsQ,IAAa3V,EAAI,KAAMA,EAAG2V,IAAO,GACvE,GAAI3V,EAAI,EAEN,IADA6H,EAAEqB,OAAOlJ,GACFA,KAAM,GACP+V,EAAGL,SACLK,EAAGvnB,KAAKwnB,GAGVD,EAAG7M,OAAO,GAIV1tB,EAAE4qB,IAAIyB,IAAM,GACdrsB,EAAEuvB,KAAKlD,GACPiO,EAAG/K,KAAKgL,KAERlO,EAAEkD,KAAKvvB,GACPu6B,EAAGhL,KAAK+K,IAeZ,OATE/V,EADgB,IAAdvkB,EAAEy6B,KAAK,GACHH,EAEAC,GAGAE,KAAK,GAAK,GAChBlW,EAAIvR,KAAK5N,GAGJmf,GAGTrZ,EAAG9K,UAAUg6B,IAAM,SAAc5P,GAC/B,GAAIxrB,KAAKojB,SAAU,OAAOoI,EAAI2D,MAC9B,GAAI3D,EAAIpI,SAAU,OAAOpjB,KAAKmvB,MAE9B,IAAInuB,EAAIhB,KAAK4sB,QACTS,EAAI7B,EAAIoB,QACZ5rB,EAAE4pB,SAAW,EACbyC,EAAEzC,SAAW,EAGb,IAAK,IAAIiP,EAAQ,EAAG74B,EAAEoY,UAAYiU,EAAEjU,SAAUygB,IAC5C74B,EAAE0tB,OAAO,GACTrB,EAAEqB,OAAO,GAGX,OAAG,CACD,KAAO1tB,EAAEoY,UACPpY,EAAE0tB,OAAO,GAEX,KAAOrB,EAAEjU,UACPiU,EAAEqB,OAAO,GAGX,IAAIzc,EAAIjR,EAAE4qB,IAAIyB,GACd,GAAIpb,EAAI,EAAG,CAET,IAAI4c,EAAI7tB,EACRA,EAAIqsB,EACJA,EAAIwB,OACC,GAAU,IAAN5c,GAAyB,IAAdob,EAAEoO,KAAK,GAC3B,MAGFz6B,EAAEuvB,KAAKlD,GAGT,OAAOA,EAAEyL,OAAOe,IAIlB3tB,EAAG9K,UAAUs6B,KAAO,SAAelQ,GACjC,OAAOxrB,KAAKy6B,KAAKjP,GAAKxqB,EAAEmoB,KAAKqC,IAG/Btf,EAAG9K,UAAUgY,OAAS,WACpB,OAA+B,KAAP,EAAhBpZ,KAAK6qB,MAAM,KAGrB3e,EAAG9K,UAAU85B,MAAQ,WACnB,OAA+B,KAAP,EAAhBl7B,KAAK6qB,MAAM,KAIrB3e,EAAG9K,UAAUqtB,MAAQ,SAAgBjD,GACnC,OAAOxrB,KAAK6qB,MAAM,GAAKW,GAIzBtf,EAAG9K,UAAUu6B,MAAQ,SAAgBtL,GACnClG,EAAsB,kBAARkG,GACd,IAAIpe,EAAIoe,EAAM,GACV9tB,GAAK8tB,EAAMpe,GAAK,GAChBuc,EAAI,GAAKvc,EAGb,GAAIjS,KAAKxB,QAAU+D,EAGjB,OAFAvC,KAAK6sB,QAAQtqB,EAAI,GACjBvC,KAAK6qB,MAAMtoB,IAAMisB,EACVxuB,KAKT,IADA,IAAIutB,EAAQiB,EACH/vB,EAAI8D,EAAa,IAAVgrB,GAAe9uB,EAAIuB,KAAKxB,OAAQC,IAAK,CACnD,IAAIytB,EAAoB,EAAhBlsB,KAAK6qB,MAAMpsB,GAEnB8uB,GADArB,GAAKqB,KACS,GACdrB,GAAK,SACLlsB,KAAK6qB,MAAMpsB,GAAKytB,EAMlB,OAJc,IAAVqB,IACFvtB,KAAK6qB,MAAMpsB,GAAK8uB,EAChBvtB,KAAKxB,UAEAwB,MAGTkM,EAAG9K,UAAUgiB,OAAS,WACpB,OAAuB,IAAhBpjB,KAAKxB,QAAkC,IAAlBwB,KAAK6qB,MAAM,IAGzC3e,EAAG9K,UAAUq6B,KAAO,SAAejQ,GACjC,IAOIjG,EAPAqF,EAAWY,EAAM,EAErB,GAAsB,IAAlBxrB,KAAK4qB,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB5qB,KAAK4qB,UAAkBA,EAAU,OAAO,EAK5C,GAHA5qB,KAAKosB,QAGDpsB,KAAKxB,OAAS,EAChB+mB,EAAM,MACD,CACDqF,IACFY,GAAOA,GAGTrB,EAAOqB,GAAO,SAAW,qBAEzB,IAAIU,EAAoB,EAAhBlsB,KAAK6qB,MAAM,GACnBtF,EAAM2G,IAAMV,EAAM,EAAIU,EAAIV,GAAO,EAAI,EAEvC,OAAsB,IAAlBxrB,KAAK4qB,SAA8B,GAANrF,EAC1BA,GAOTrZ,EAAG9K,UAAUwqB,IAAM,SAAcJ,GAC/B,GAAsB,IAAlBxrB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,SAAgB,OAAQ,EACvD,GAAsB,IAAlB5qB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,SAAgB,OAAO,EAEtD,IAAIrF,EAAMvlB,KAAK47B,KAAKpQ,GACpB,OAAsB,IAAlBxrB,KAAK4qB,SAA8B,GAANrF,EAC1BA,GAITrZ,EAAG9K,UAAUw6B,KAAO,SAAepQ,GAEjC,GAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAQ,OAAO,EACrC,GAAIwB,KAAKxB,OAASgtB,EAAIhtB,OAAQ,OAAQ,EAGtC,IADA,IAAI+mB,EAAM,EACD9mB,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,EAAGA,IAAK,CACzC,IAAIuC,EAAoB,EAAhBhB,KAAK6qB,MAAMpsB,GACf4uB,EAAmB,EAAf7B,EAAIX,MAAMpsB,GAElB,GAAIuC,IAAMqsB,EAAV,CACIrsB,EAAIqsB,EACN9H,GAAO,EACEvkB,EAAIqsB,IACb9H,EAAM,GAER,OAEF,OAAOA,GAGTrZ,EAAG9K,UAAUy6B,IAAM,SAAcrQ,GAC/B,OAA0B,IAAnBxrB,KAAKy7B,KAAKjQ,IAGnBtf,EAAG9K,UAAUwO,GAAK,SAAa4b,GAC7B,OAAyB,IAAlBxrB,KAAK4rB,IAAIJ,IAGlBtf,EAAG9K,UAAU06B,KAAO,SAAetQ,GACjC,OAAOxrB,KAAKy7B,KAAKjQ,IAAQ,GAG3Btf,EAAG9K,UAAUoL,IAAM,SAAcgf,GAC/B,OAAOxrB,KAAK4rB,IAAIJ,IAAQ,GAG1Btf,EAAG9K,UAAU26B,IAAM,SAAcvQ,GAC/B,OAA2B,IAApBxrB,KAAKy7B,KAAKjQ,IAGnBtf,EAAG9K,UAAUiV,GAAK,SAAamV,GAC7B,OAA0B,IAAnBxrB,KAAK4rB,IAAIJ,IAGlBtf,EAAG9K,UAAU46B,KAAO,SAAexQ,GACjC,OAAOxrB,KAAKy7B,KAAKjQ,IAAQ,GAG3Btf,EAAG9K,UAAUwoB,IAAM,SAAc4B,GAC/B,OAAOxrB,KAAK4rB,IAAIJ,IAAQ,GAG1Btf,EAAG9K,UAAUkV,IAAM,SAAckV,GAC/B,OAA0B,IAAnBxrB,KAAKy7B,KAAKjQ,IAGnBtf,EAAG9K,UAAUoO,GAAK,SAAagc,GAC7B,OAAyB,IAAlBxrB,KAAK4rB,IAAIJ,IAOlBtf,EAAG4e,IAAM,SAAcU,GACrB,OAAO,IAAIyQ,EAAIzQ,IAGjBtf,EAAG9K,UAAU86B,MAAQ,SAAgBC,GAGnC,OAFAhS,GAAQnqB,KAAK8qB,IAAK,yCAClBX,EAAyB,IAAlBnqB,KAAK4qB,SAAgB,iCACrBuR,EAAIC,UAAUp8B,MAAMq8B,UAAUF,IAGvCjwB,EAAG9K,UAAUk7B,QAAU,WAErB,OADAnS,EAAOnqB,KAAK8qB,IAAK,wDACV9qB,KAAK8qB,IAAIyR,YAAYv8B,OAG9BkM,EAAG9K,UAAUi7B,UAAY,SAAoBF,GAE3C,OADAn8B,KAAK8qB,IAAMqR,EACJn8B,MAGTkM,EAAG9K,UAAUo7B,SAAW,SAAmBL,GAEzC,OADAhS,GAAQnqB,KAAK8qB,IAAK,yCACX9qB,KAAKq8B,UAAUF,IAGxBjwB,EAAG9K,UAAUq7B,OAAS,SAAiBjR,GAErC,OADArB,EAAOnqB,KAAK8qB,IAAK,sCACV9qB,KAAK8qB,IAAIxT,IAAItX,KAAMwrB,IAG5Btf,EAAG9K,UAAUs7B,QAAU,SAAkBlR,GAEvC,OADArB,EAAOnqB,KAAK8qB,IAAK,uCACV9qB,KAAK8qB,IAAI9W,KAAKhU,KAAMwrB,IAG7Btf,EAAG9K,UAAUu7B,OAAS,SAAiBnR,GAErC,OADArB,EAAOnqB,KAAK8qB,IAAK,sCACV9qB,KAAK8qB,IAAIzT,IAAIrX,KAAMwrB,IAG5Btf,EAAG9K,UAAUw7B,QAAU,SAAkBpR,GAEvC,OADArB,EAAOnqB,KAAK8qB,IAAK,uCACV9qB,KAAK8qB,IAAIyF,KAAKvwB,KAAMwrB,IAG7Btf,EAAG9K,UAAUy7B,OAAS,SAAiBrR,GAErC,OADArB,EAAOnqB,KAAK8qB,IAAK,sCACV9qB,KAAK8qB,IAAIgS,IAAI98B,KAAMwrB,IAG5Btf,EAAG9K,UAAU27B,OAAS,SAAiBvR,GAGrC,OAFArB,EAAOnqB,KAAK8qB,IAAK,sCACjB9qB,KAAK8qB,IAAIkS,SAASh9B,KAAMwrB,GACjBxrB,KAAK8qB,IAAI1U,IAAIpW,KAAMwrB,IAG5Btf,EAAG9K,UAAU67B,QAAU,SAAkBzR,GAGvC,OAFArB,EAAOnqB,KAAK8qB,IAAK,sCACjB9qB,KAAK8qB,IAAIkS,SAASh9B,KAAMwrB,GACjBxrB,KAAK8qB,IAAIyJ,KAAKv0B,KAAMwrB,IAG7Btf,EAAG9K,UAAU87B,OAAS,WAGpB,OAFA/S,EAAOnqB,KAAK8qB,IAAK,sCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI6N,IAAI34B,OAGtBkM,EAAG9K,UAAUg8B,QAAU,WAGrB,OAFAjT,EAAOnqB,KAAK8qB,IAAK,uCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI8N,KAAK54B,OAIvBkM,EAAG9K,UAAUi8B,QAAU,WAGrB,OAFAlT,EAAOnqB,KAAK8qB,IAAK,uCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAIwS,KAAKt9B,OAGvBkM,EAAG9K,UAAUm8B,QAAU,WAGrB,OAFApT,EAAOnqB,KAAK8qB,IAAK,uCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI4Q,KAAK17B,OAIvBkM,EAAG9K,UAAUo8B,OAAS,WAGpB,OAFArT,EAAOnqB,KAAK8qB,IAAK,sCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI0E,IAAIxvB,OAGtBkM,EAAG9K,UAAUq8B,OAAS,SAAiBjS,GAGrC,OAFArB,EAAOnqB,KAAK8qB,MAAQU,EAAIV,IAAK,qBAC7B9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI1B,IAAIppB,KAAMwrB,IAI5B,IAAIkS,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQj3B,EAAMV,GAErBpG,KAAK8G,KAAOA,EACZ9G,KAAKoG,EAAI,IAAI8F,EAAG9F,EAAG,IACnBpG,KAAKwC,EAAIxC,KAAKoG,EAAE2oB,YAChB/uB,KAAKwtB,EAAI,IAAIthB,EAAG,GAAG4sB,OAAO94B,KAAKwC,GAAG+tB,KAAKvwB,KAAKoG,GAE5CpG,KAAKg+B,IAAMh+B,KAAKi+B,OAiDlB,SAASC,IACPH,EAAOj7B,KACL9C,KACA,OACA,2EA+DJ,SAASm+B,IACPJ,EAAOj7B,KACL9C,KACA,OACA,kEAIJ,SAASo+B,IACPL,EAAOj7B,KACL9C,KACA,OACA,yDAIJ,SAASq+B,IAEPN,EAAOj7B,KACL9C,KACA,QACA,uEA8CJ,SAASi8B,EAAKvE,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI4G,EAAQpyB,EAAGqyB,OAAO7G,GACtB13B,KAAK03B,EAAI4G,EAAMl4B,EACfpG,KAAKs+B,MAAQA,OAEbnU,EAAOuN,EAAEmE,IAAI,GAAI,kCACjB77B,KAAK03B,EAAIA,EACT13B,KAAKs+B,MAAQ,KAkOjB,SAASE,EAAM9G,GACbuE,EAAIn5B,KAAK9C,KAAM03B,GAEf13B,KAAK65B,MAAQ75B,KAAK03B,EAAE3I,YAChB/uB,KAAK65B,MAAQ,KAAO,IACtB75B,KAAK65B,OAAS,GAAM75B,KAAK65B,MAAQ,IAGnC75B,KAAKiS,EAAI,IAAI/F,EAAG,GAAG4sB,OAAO94B,KAAK65B,OAC/B75B,KAAKw6B,GAAKx6B,KAAKy+B,KAAKz+B,KAAKiS,EAAE0mB,OAC3B34B,KAAK0+B,KAAO1+B,KAAKiS,EAAEopB,OAAOr7B,KAAK03B,GAE/B13B,KAAK2+B,KAAO3+B,KAAK0+B,KAAKtoB,IAAIpW,KAAKiS,GAAGynB,MAAM,GAAGzQ,IAAIjpB,KAAK03B,GACpD13B,KAAK2+B,KAAO3+B,KAAK2+B,KAAKxV,KAAKnpB,KAAKiS,GAChCjS,KAAK2+B,KAAO3+B,KAAKiS,EAAEoF,IAAIrX,KAAK2+B,MA5a9BZ,EAAO38B,UAAU68B,KAAO,WACtB,IAAID,EAAM,IAAI9xB,EAAG,MAEjB,OADA8xB,EAAInT,MAAQ,IAAIlsB,MAAMiV,KAAKC,KAAK7T,KAAKwC,EAAI,KAClCw7B,GAGTD,EAAO38B,UAAUw9B,QAAU,SAAkBpT,GAG3C,IACIqT,EADA5sB,EAAIuZ,EAGR,GACExrB,KAAKynB,MAAMxV,EAAGjS,KAAKg+B,KAGnBa,GADA5sB,GADAA,EAAIjS,KAAK8+B,MAAM7sB,IACT+B,KAAKhU,KAAKg+B,MACPjP,kBACF8P,EAAO7+B,KAAKwC,GAErB,IAAIopB,EAAMiT,EAAO7+B,KAAKwC,GAAK,EAAIyP,EAAE2pB,KAAK57B,KAAKoG,GAgB3C,OAfY,IAARwlB,GACF3Z,EAAE4Y,MAAM,GAAK,EACb5Y,EAAEzT,OAAS,GACFotB,EAAM,EACf3Z,EAAEse,KAAKvwB,KAAKoG,QAEI/F,IAAZ4R,EAAEma,MAEJna,EAAEma,QAGFna,EAAE8sB,SAIC9sB,GAGT8rB,EAAO38B,UAAUqmB,MAAQ,SAAgBxN,EAAOmT,GAC9CnT,EAAMyU,OAAO1uB,KAAKwC,EAAG,EAAG4qB,IAG1B2Q,EAAO38B,UAAU09B,MAAQ,SAAgBtT,GACvC,OAAOA,EAAI+I,KAAKv0B,KAAKwtB,IASvBnD,EAAS6T,EAAMH,GAEfG,EAAK98B,UAAUqmB,MAAQ,SAAgBxN,EAAO0K,GAK5C,IAHA,IAAIR,EAAO,QAEP6a,EAASprB,KAAKwD,IAAI6C,EAAMzb,OAAQ,GAC3BC,EAAI,EAAGA,EAAIugC,EAAQvgC,IAC1BkmB,EAAOkG,MAAMpsB,GAAKwb,EAAM4Q,MAAMpsB,GAIhC,GAFAkmB,EAAOnmB,OAASwgC,EAEZ/kB,EAAMzb,QAAU,EAGlB,OAFAyb,EAAM4Q,MAAM,GAAK,OACjB5Q,EAAMzb,OAAS,GAKjB,IAAIygC,EAAOhlB,EAAM4Q,MAAM,GAGvB,IAFAlG,EAAOkG,MAAMlG,EAAOnmB,UAAYygC,EAAO9a,EAElC1lB,EAAI,GAAIA,EAAIwb,EAAMzb,OAAQC,IAAK,CAClC,IAAIuE,EAAwB,EAAjBiX,EAAM4Q,MAAMpsB,GACvBwb,EAAM4Q,MAAMpsB,EAAI,KAAQuE,EAAOmhB,IAAS,EAAM8a,IAAS,GACvDA,EAAOj8B,EAETi8B,KAAU,GACVhlB,EAAM4Q,MAAMpsB,EAAI,IAAMwgC,EACT,IAATA,GAAchlB,EAAMzb,OAAS,GAC/Byb,EAAMzb,QAAU,GAEhByb,EAAMzb,QAAU,GAIpB0/B,EAAK98B,UAAU09B,MAAQ,SAAgBtT,GAErCA,EAAIX,MAAMW,EAAIhtB,QAAU,EACxBgtB,EAAIX,MAAMW,EAAIhtB,OAAS,GAAK,EAC5BgtB,EAAIhtB,QAAU,EAId,IADA,IAAI8uB,EAAK,EACA7uB,EAAI,EAAGA,EAAI+sB,EAAIhtB,OAAQC,IAAK,CACnC,IAAIytB,EAAmB,EAAfV,EAAIX,MAAMpsB,GAClB6uB,GAAU,IAAJpB,EACNV,EAAIX,MAAMpsB,GAAU,SAAL6uB,EACfA,EAAS,GAAJpB,GAAaoB,EAAK,SAAa,GAUtC,OANkC,IAA9B9B,EAAIX,MAAMW,EAAIhtB,OAAS,KACzBgtB,EAAIhtB,SAC8B,IAA9BgtB,EAAIX,MAAMW,EAAIhtB,OAAS,IACzBgtB,EAAIhtB,UAGDgtB,GASTnB,EAAS8T,EAAMJ,GAQf1T,EAAS+T,EAAML,GASf1T,EAASgU,EAAQN,GAEjBM,EAAOj9B,UAAU09B,MAAQ,SAAgBtT,GAGvC,IADA,IAAI+B,EAAQ,EACH9uB,EAAI,EAAGA,EAAI+sB,EAAIhtB,OAAQC,IAAK,CACnC,IAAIuwB,EAA0B,IAAL,EAAfxD,EAAIX,MAAMpsB,IAAiB8uB,EACjCD,EAAU,SAAL0B,EACTA,KAAQ,GAERxD,EAAIX,MAAMpsB,GAAK6uB,EACfC,EAAQyB,EAKV,OAHc,IAAVzB,IACF/B,EAAIX,MAAMW,EAAIhtB,UAAY+uB,GAErB/B,GAITtf,EAAGqyB,OAAS,SAAgBz3B,GAE1B,GAAI42B,EAAO52B,GAAO,OAAO42B,EAAO52B,GAEhC,IAAIw3B,EACJ,GAAa,SAATx3B,EACFw3B,EAAQ,IAAIJ,OACP,GAAa,SAATp3B,EACTw3B,EAAQ,IAAIH,OACP,GAAa,SAATr3B,EACTw3B,EAAQ,IAAIF,MACP,IAAa,WAATt3B,EAGT,MAAM,IAAIoE,MAAM,iBAAmBpE,GAFnCw3B,EAAQ,IAAID,EAMd,OAFAX,EAAO52B,GAAQw3B,EAERA,GAkBTrC,EAAI76B,UAAU+7B,SAAW,SAAmBn8B,GAC1CmpB,EAAsB,IAAfnpB,EAAE4pB,SAAgB,iCACzBT,EAAOnpB,EAAE8pB,IAAK,oCAGhBmR,EAAI76B,UAAU47B,SAAW,SAAmBh8B,EAAGqsB,GAC7ClD,EAAqC,KAA7BnpB,EAAE4pB,SAAWyC,EAAEzC,UAAiB,iCACxCT,EAAOnpB,EAAE8pB,KAAO9pB,EAAE8pB,MAAQuC,EAAEvC,IAC1B,oCAGJmR,EAAI76B,UAAUq9B,KAAO,SAAez9B,GAClC,OAAIhB,KAAKs+B,MAAct+B,KAAKs+B,MAAMM,QAAQ59B,GAAGq7B,UAAUr8B,MAChDgB,EAAEmoB,KAAKnpB,KAAK03B,GAAG2E,UAAUr8B,OAGlCi8B,EAAI76B,UAAUouB,IAAM,SAAcxuB,GAChC,OAAIA,EAAEoiB,SACGpiB,EAAE4rB,QAGJ5sB,KAAK03B,EAAErgB,IAAIrW,GAAGq7B,UAAUr8B,OAGjCi8B,EAAI76B,UAAUkW,IAAM,SAActW,EAAGqsB,GACnCrtB,KAAKg9B,SAASh8B,EAAGqsB,GAEjB,IAAI9H,EAAMvkB,EAAEsW,IAAI+V,GAIhB,OAHI9H,EAAIqG,IAAI5rB,KAAK03B,IAAM,GACrBnS,EAAIgL,KAAKvwB,KAAK03B,GAETnS,EAAI8W,UAAUr8B,OAGvBi8B,EAAI76B,UAAU4S,KAAO,SAAehT,EAAGqsB,GACrCrtB,KAAKg9B,SAASh8B,EAAGqsB,GAEjB,IAAI9H,EAAMvkB,EAAEgT,KAAKqZ,GAIjB,OAHI9H,EAAIqG,IAAI5rB,KAAK03B,IAAM,GACrBnS,EAAIgL,KAAKvwB,KAAK03B,GAETnS,GAGT0W,EAAI76B,UAAUiW,IAAM,SAAcrW,EAAGqsB,GACnCrtB,KAAKg9B,SAASh8B,EAAGqsB,GAEjB,IAAI9H,EAAMvkB,EAAEqW,IAAIgW,GAIhB,OAHI9H,EAAIkW,KAAK,GAAK,GAChBlW,EAAIvR,KAAKhU,KAAK03B,GAETnS,EAAI8W,UAAUr8B,OAGvBi8B,EAAI76B,UAAUmvB,KAAO,SAAevvB,EAAGqsB,GACrCrtB,KAAKg9B,SAASh8B,EAAGqsB,GAEjB,IAAI9H,EAAMvkB,EAAEuvB,KAAKlD,GAIjB,OAHI9H,EAAIkW,KAAK,GAAK,GAChBlW,EAAIvR,KAAKhU,KAAK03B,GAETnS,GAGT0W,EAAI76B,UAAU07B,IAAM,SAAc97B,EAAGwqB,GAEnC,OADAxrB,KAAKm9B,SAASn8B,GACPhB,KAAKy+B,KAAKz9B,EAAEu4B,MAAM/N,KAG3ByQ,EAAI76B,UAAUmzB,KAAO,SAAevzB,EAAGqsB,GAErC,OADArtB,KAAKg9B,SAASh8B,EAAGqsB,GACVrtB,KAAKy+B,KAAKz9B,EAAEuzB,KAAKlH,KAG1B4O,EAAI76B,UAAUgV,IAAM,SAAcpV,EAAGqsB,GAEnC,OADArtB,KAAKg9B,SAASh8B,EAAGqsB,GACVrtB,KAAKy+B,KAAKz9B,EAAEoV,IAAIiX,KAGzB4O,EAAI76B,UAAUw3B,KAAO,SAAe53B,GAClC,OAAOhB,KAAKu0B,KAAKvzB,EAAGA,EAAE4rB,UAGxBqP,EAAI76B,UAAUu3B,IAAM,SAAc33B,GAChC,OAAOhB,KAAKoW,IAAIpV,EAAGA,IAGrBi7B,EAAI76B,UAAUk8B,KAAO,SAAet8B,GAClC,GAAIA,EAAEoiB,SAAU,OAAOpiB,EAAE4rB,QAEzB,IAAIsS,EAAOl/B,KAAK03B,EAAEjJ,MAAM,GAIxB,GAHAtE,EAAO+U,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAI9V,EAAMppB,KAAK03B,EAAEpgB,IAAI,IAAIpL,EAAG,IAAIwiB,OAAO,GACvC,OAAO1uB,KAAKopB,IAAIpoB,EAAGooB,GAQrB,IAFA,IAAIoF,EAAIxuB,KAAK03B,EAAEve,KAAK,GAChB5W,EAAI,GACAisB,EAAEpL,UAA2B,IAAfoL,EAAEC,MAAM,IAC5BlsB,IACAisB,EAAEE,OAAO,GAEXvE,GAAQqE,EAAEpL,UAEV,IAAI+b,EAAM,IAAIjzB,EAAG,GAAGgwB,MAAMl8B,MACtBo/B,EAAOD,EAAI3B,SAIX6B,EAAOr/B,KAAK03B,EAAEve,KAAK,GAAGuV,OAAO,GAC7B4Q,EAAIt/B,KAAK03B,EAAE3I,YAGf,IAFAuQ,EAAI,IAAIpzB,EAAG,EAAIozB,EAAIA,GAAGpD,MAAMl8B,MAEW,IAAhCA,KAAKopB,IAAIkW,EAAGD,GAAMzT,IAAIwT,IAC3BE,EAAE5C,QAAQ0C,GAOZ,IAJA,IAAIzgB,EAAI3e,KAAKopB,IAAIkW,EAAG9Q,GAChBvc,EAAIjS,KAAKopB,IAAIpoB,EAAGwtB,EAAEpb,KAAK,GAAGsb,OAAO,IACjCG,EAAI7uB,KAAKopB,IAAIpoB,EAAGwtB,GAChBkJ,EAAIn1B,EACc,IAAfssB,EAAEjD,IAAIuT,IAAY,CAEvB,IADA,IAAInB,EAAMnP,EACDpwB,EAAI,EAAoB,IAAjBu/B,EAAIpS,IAAIuT,GAAY1gC,IAClCu/B,EAAMA,EAAId,SAEZ/S,EAAO1rB,EAAIi5B,GACX,IAAIrK,EAAIrtB,KAAKopB,IAAIzK,EAAG,IAAIzS,EAAG,GAAG4sB,OAAOpB,EAAIj5B,EAAI,IAE7CwT,EAAIA,EAAE8qB,OAAO1P,GACb1O,EAAI0O,EAAE6P,SACNrO,EAAIA,EAAEkO,OAAOpe,GACb+Y,EAAIj5B,EAGN,OAAOwT,GAGTgqB,EAAI76B,UAAUs6B,KAAO,SAAe16B,GAClC,IAAIu+B,EAAMv+B,EAAEq6B,OAAOr7B,KAAK03B,GACxB,OAAqB,IAAjB6H,EAAI3U,UACN2U,EAAI3U,SAAW,EACR5qB,KAAKy+B,KAAKc,GAAK/B,UAEfx9B,KAAKy+B,KAAKc,IAIrBtD,EAAI76B,UAAUgoB,IAAM,SAAcpoB,EAAGwqB,GACnC,GAAIA,EAAIpI,SAAU,OAAO,IAAIlX,EAAG,GAAGgwB,MAAMl8B,MACzC,GAAoB,IAAhBwrB,EAAIiQ,KAAK,GAAU,OAAOz6B,EAAE4rB,QAEhC,IACI4S,EAAM,IAAI7gC,MAAM,IACpB6gC,EAAI,GAAK,IAAItzB,EAAG,GAAGgwB,MAAMl8B,MACzBw/B,EAAI,GAAKx+B,EACT,IAAK,IAAIvC,EAAI,EAAGA,EAAI+gC,EAAIhhC,OAAQC,IAC9B+gC,EAAI/gC,GAAKuB,KAAKoW,IAAIopB,EAAI/gC,EAAI,GAAIuC,GAGhC,IAAIukB,EAAMia,EAAI,GACVxZ,EAAU,EACVyZ,EAAa,EACbnU,EAAQE,EAAIuD,YAAc,GAK9B,IAJc,IAAVzD,IACFA,EAAQ,IAGL7sB,EAAI+sB,EAAIhtB,OAAS,EAAGC,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIguB,EAAOjB,EAAIX,MAAMpsB,GACZ+mB,EAAI8F,EAAQ,EAAG9F,GAAK,EAAGA,IAAK,CACnC,IAAI6K,EAAO5D,GAAQjH,EAAK,EACpBD,IAAQia,EAAI,KACdja,EAAMvlB,KAAK24B,IAAIpT,IAGL,IAAR8K,GAAyB,IAAZrK,GAKjBA,IAAY,EACZA,GAAWqK,GA9BE,MA+BboP,GACwC,IAANhhC,GAAiB,IAAN+mB,KAE7CD,EAAMvlB,KAAKoW,IAAImP,EAAKia,EAAIxZ,IACxByZ,EAAa,EACbzZ,EAAU,IAXRyZ,EAAa,EAajBnU,EAAQ,GAGV,OAAO/F,GAGT0W,EAAI76B,UAAUg7B,UAAY,SAAoB5Q,GAC5C,IAAIvZ,EAAIuZ,EAAIrC,KAAKnpB,KAAK03B,GAEtB,OAAOzlB,IAAMuZ,EAAMvZ,EAAE2a,QAAU3a,GAGjCgqB,EAAI76B,UAAUm7B,YAAc,SAAsB/Q,GAChD,IAAIjG,EAAMiG,EAAIoB,QAEd,OADArH,EAAIuF,IAAM,KACHvF,GAOTrZ,EAAGwzB,KAAO,SAAelU,GACvB,OAAO,IAAIgT,EAAKhT,IAmBlBnB,EAASmU,EAAMvC,GAEfuC,EAAKp9B,UAAUg7B,UAAY,SAAoB5Q,GAC7C,OAAOxrB,KAAKy+B,KAAKjT,EAAI+N,MAAMv5B,KAAK65B,SAGlC2E,EAAKp9B,UAAUm7B,YAAc,SAAsB/Q,GACjD,IAAIvZ,EAAIjS,KAAKy+B,KAAKjT,EAAIpV,IAAIpW,KAAK0+B,OAE/B,OADAzsB,EAAE6Y,IAAM,KACD7Y,GAGTusB,EAAKp9B,UAAUmzB,KAAO,SAAevzB,EAAGqsB,GACtC,GAAIrsB,EAAEoiB,UAAYiK,EAAEjK,SAGlB,OAFApiB,EAAE6pB,MAAM,GAAK,EACb7pB,EAAExC,OAAS,EACJwC,EAGT,IAAI6tB,EAAI7tB,EAAEuzB,KAAKlH,GACX1O,EAAIkQ,EAAEpF,MAAMzpB,KAAK65B,OAAOzjB,IAAIpW,KAAK2+B,MAAMlF,OAAOz5B,KAAK65B,OAAOzjB,IAAIpW,KAAK03B,GACnEiI,EAAI9Q,EAAE0B,KAAK5R,GAAG+P,OAAO1uB,KAAK65B,OAC1BtU,EAAMoa,EAQV,OANIA,EAAE/T,IAAI5rB,KAAK03B,IAAM,EACnBnS,EAAMoa,EAAEpP,KAAKvwB,KAAK03B,GACTiI,EAAElE,KAAK,GAAK,IACrBlW,EAAMoa,EAAE3rB,KAAKhU,KAAK03B,IAGbnS,EAAI8W,UAAUr8B,OAGvBw+B,EAAKp9B,UAAUgV,IAAM,SAAcpV,EAAGqsB,GACpC,GAAIrsB,EAAEoiB,UAAYiK,EAAEjK,SAAU,OAAO,IAAIlX,EAAG,GAAGmwB,UAAUr8B,MAEzD,IAAI6uB,EAAI7tB,EAAEoV,IAAIiX,GACV1O,EAAIkQ,EAAEpF,MAAMzpB,KAAK65B,OAAOzjB,IAAIpW,KAAK2+B,MAAMlF,OAAOz5B,KAAK65B,OAAOzjB,IAAIpW,KAAK03B,GACnEiI,EAAI9Q,EAAE0B,KAAK5R,GAAG+P,OAAO1uB,KAAK65B,OAC1BtU,EAAMoa,EAOV,OANIA,EAAE/T,IAAI5rB,KAAK03B,IAAM,EACnBnS,EAAMoa,EAAEpP,KAAKvwB,KAAK03B,GACTiI,EAAElE,KAAK,GAAK,IACrBlW,EAAMoa,EAAE3rB,KAAKhU,KAAK03B,IAGbnS,EAAI8W,UAAUr8B,OAGvBw+B,EAAKp9B,UAAUs6B,KAAO,SAAe16B,GAGnC,OADUhB,KAAKy+B,KAAKz9B,EAAEq6B,OAAOr7B,KAAK03B,GAAGthB,IAAIpW,KAAKw6B,KACnC6B,UAAUr8B,OAn3GzB,YAq3G4CA,yBCr3G5C,IAAI+8F,EAAgB,WACnB,GAAoB,kBAATh+F,MAAqBA,KAAM,OAAOA,KAC7C,GAAsB,kBAAXisB,QAAuBA,OAAQ,OAAOA,OACjD,MAAM,IAAI9f,MAAM,oCAGjB9M,EAAOC,QAAW,WACjB,GAAI2B,KAAM,OAAOA,KAKjB,GAA0B,kBAAfg9F,YAA2BA,WAAY,OAAOA,WAKzD,IACCp7F,OAAOC,eAAeD,OAAOR,UAAW,aAAc,CACrDyC,IAAK,WAAc,OAAO7D,MAC1B0B,cAAc,IAEd,MAAO/B,GAGR,OAAOo9F,IAER,IAEC,OAAKE,YAAmBF,IAFzB,eAKQn7F,OAAOR,UAAU67F,YA1BR,mCCClB,SAAS7rF,EAAO9P,EAAQ47F,GACtB,QAAe78F,IAAXiB,GAAmC,OAAXA,EAC1B,MAAM,IAAId,UAAU,2CAItB,IADA,IAAIwR,EAAKpQ,OAAON,GACP7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CACzC,IAAI0+F,EAAaj9F,UAAUzB,GAC3B,QAAmB4B,IAAf88F,GAA2C,OAAfA,EAKhC,IADA,IAAIC,EAAYx7F,OAAO4D,KAAK5D,OAAOu7F,IAC1BE,EAAY,EAAG9+F,EAAM6+F,EAAU5+F,OAAQ6+F,EAAY9+F,EAAK8+F,IAAa,CAC5E,IAAIC,EAAUF,EAAUC,GACpBp5F,EAAOrC,OAAOsC,yBAAyBi5F,EAAYG,QAC1Cj9F,IAAT4D,GAAsBA,EAAKxC,aAC7BuQ,EAAGsrF,GAAWH,EAAWG,KAI/B,OAAOtrF,EAcT5T,EAAOC,QAAU,CACf+S,OAAQA,EACRmsF,SAbF,WACO37F,OAAOwP,QACVxP,OAAOC,eAAeD,OAAQ,SAAU,CACtCH,YAAY,EACZC,cAAc,EACdC,UAAU,EACVjC,MAAO0R,mMCnCPwnC,GAFWvwC,EAAQ,OACZA,EAAQ,OACIA,EAAQ,QAI3Bm1F,EAAe,SAACC,EAAaC,GAAd,OAA+BD,EAAcC,GAC5DC,EAAqB,CAAC,OAAQ,UAE9BC,EAAAA,SAAAA,kCAMJ,aAAwB,MAAXj1F,EAAW,uDAAJ,GAAI,kBACtB,gBAEKk1F,oBAAsBl1F,EAAKm1F,oBAAsB,IAEtD,EAAKC,mBACL,EAAKC,cAAgB,KACrB,EAAKC,YAAa,EAElB,EAAKC,eAAiB,EAAKA,eAAe/8F,KAApB,MACtB,EAAKg9F,kBAAoB,EAAKA,kBAAkBh9F,KAAvB,MACzB,EAAKi9F,mBAAqB,EAAKA,mBAAmBj9F,KAAxB,MAE1B,EAAKk9F,uBAbiB,qCAgBxB,WACE,OAAOr+F,KAAKi+F,0CAGd,WACE,OAAOj+F,KAAKg+F,uEAGd,6FAEMh+F,KAAKg+F,cAFX,yCAEiCh+F,KAAKg+F,eAFtC,uBAI4B,IAAIn+F,SAAQ,SAAAV,GAAO,OAAI,EAAKm/F,KAAK,SAAUn/F,MAJvE,cAIQo/F,EAJR,yBAMSA,GANT,sIAUA,SAAoBC,GAEdA,EACF,sDAAyBA,GAEzB,uDAGFx+F,KAAKq+F,uBAELr+F,KAAKm+F,0CAOP,gCAIA,gDAQA,WAEEn+F,KAAKy+F,eAAe,cAAez+F,KAAKk+F,gBACxCl+F,KAAKy+F,eAAe,iBAAkBz+F,KAAKm+F,mBAE3Cn+F,KAAK0+F,GAAG,cAAe1+F,KAAKk+F,gBAC5Bl+F,KAAK0+F,GAAG,iBAAkB1+F,KAAKm+F,iDAGjC,SAAgBK,EAAWhmD,GAEpBmlD,EAAmBlwF,SAAS+wF,IACjCx+F,KAAK2+F,+CAGP,SAAmBH,EAAWhmD,GAExBx4C,KAAK4+F,6BAA+B,GACxC5+F,KAAK6+F,uCAGP,WACM7+F,KAAKi+F,aACTj+F,KAAKi+F,YAAa,EAElBj+F,KAAK8+F,2BACL9+F,KAAK++F,mCAGP,WACO/+F,KAAKi+F,aACVj+F,KAAKi+F,YAAa,EAClBj+F,KAAKg/F,0BACLh/F,KAAKi/F,kDAGP,WAA8B,WAC5B,OAAOtB,EACJnyF,KAAI,SAAAgzF,GAAS,OAAI,EAAKU,cAAcV,MACpC9uF,OAAO8tF,sCAGZ,SAAqB2B,GACnB,IAAMC,EAAep/F,KAAKg+F,cAEtBoB,GAAiBC,EAASF,IAAaE,EAASD,IACpDp/F,KAAKs/F,iBAAiBH,mCAGxB,SAAkBA,GAChB,IAAMI,EAAWv/F,KAAKg+F,cACtBh+F,KAAKg+F,cAAgBmB,EACrBn/F,KAAK8L,KAAK,SAAUqzF,GACpBn/F,KAAK8L,KAAK,OAAQ,CAAEyzF,SAAAA,EAAUJ,SAAAA,2CAGhC,WAEEn/F,KAAK8+F,2BAEL9+F,KAAK+9F,mBAAqBrlD,WAAW14C,KAAKo+F,mBAAoBp+F,KAAK69F,qBAE/D79F,KAAK+9F,mBAAmByB,OAC1Bx/F,KAAK+9F,mBAAmByB,gDAI5B,WACE98C,aAAa1iD,KAAK+9F,sDAGpB,WACE/9F,KAAKg+F,cAAgB,WA7InBJ,CAAyBhlD,GAoJ/B,SAASymD,EAASI,GAChB,OAAOnwF,OAAO4N,SAASuiF,EAAQ,IAHjCrhG,EAAOC,QAAUu/F,sIC3JX8B,EAAOr3F,EAAQ,OACfu1F,EAAmBv1F,EAAQ,OAI3Bs3F,EAAAA,SAAAA,kCAEJ,aAAwB,MAAXh3F,EAAW,uDAAJ,GAElB,GAFsB,WAEjBA,EAAKi3F,SAAU,MAAM,IAAI10F,MAAM,gDACpC,IAAM20F,EAAkBl3F,EAAKk3F,iBAAmB,IAC1CC,EAAen3F,EAAKm3F,cAAgBD,EAAkB,GACtDE,OAAmD1/F,IAA7BsI,EAAKo3F,qBAAoCp3F,EAAKo3F,oBACpEC,EAAmBr3F,EAAKq3F,mBAAoB,EAN5B,OAQtB,cAAMp+F,OAAOwP,OAAO,CAClB0sF,mBAAoB+B,GACnBl3F,KAEEs3F,UAAYt3F,EAAKi3F,SACtB,EAAKM,iBAAmBL,EACxB,EAAKM,cAAgBL,EACrB,EAAKM,qBAAuBL,EAC5B,EAAKM,kBAAoBL,EAhBH,0EAwBxB,4FACQhgG,KAAKsgG,qBADb,uBAEetgG,KAAKugG,iBAFpB,kKASA,WAAU,WACRvgG,KAAKwgG,eAAetqC,OAAM,SAAA91D,GAAG,OAAI,EAAK0L,KAAK,QAAS1L,6DAGtD,sFACSJ,KAAKi+F,WADd,0CAGYj+F,KAAKsgG,qBAHjB,uBAIYl9B,EAAQpjE,KAAKkgG,kBAAmBlgG,KAAKogG,sBAJjD,uDAMY1oC,EAAS,IAAIxsD,MAAJ,+FAAkG,KAAIikD,QACrH,IACEnvD,KAAK8L,KAAK,QAAS4rD,GACnB,MAAO+oC,GACPn+D,QAAQ3iC,MAAM+3D,GAVtB,iBAYY0L,EAAQpjE,KAAKmgG,eAAgBngG,KAAKogG,sBAZ9C,iMAiBA,kGAE4BpgG,KAAK0gG,oBAFjC,OAEQnC,EAFR,OAGEv+F,KAAK2gG,oBAAoBpC,GAH3B,gKAMA,kGACQqC,EAAM,CAAEC,QAAS,MAAOngD,GAAI,EAAGuL,OAAQ,kBAAmB7vC,OAAQ,IACpEpc,KAAKqgG,oBAAmBO,EAAIE,WAAY,GAF9C,SAGoBpB,GAAK,SAAC54C,GAAD,OAAQ,EAAKm5C,UAAUc,UAAUH,EAAK95C,KAA3C44C,GAHpB,YAGQn6E,EAHR,QAIU5lB,MAJV,sBAIuB,IAAIuL,MAAJ,mEAAsEqa,EAAI5lB,QAJjG,gCAKS4lB,EAAIjiB,QALb,0GA9DIq8F,CAA4B/B,GA0ElC,SAASx6B,EAAS49B,EAAUxB,GAC1B,OAAO,IAAI3/F,SAAQ,SAAAV,GACjB,IAAM8hG,EAAYvoD,WAAWv5C,EAAS6hG,GAElCC,EAAUzB,OAASA,GACrByB,EAAUzB,WAPhBphG,EAAOC,QAAUshG,+CC7Ebr+D,EAAOj5B,EAAAA,OAAAA,WACP64F,EAAQ74F,EAAQ,OAuBpB,SAAS6d,EAAUpf,GACjB,OAAOA,EAAOo6F,EAAMC,UAAUr6F,EAAM,CAACs6F,cAAc,EAAMC,cAAc,IAAUv6F,EAGnFzI,EAAQ2R,KAzBR,SAAmBsxF,GAGjB,IADA,IAAIljF,EAAO,GACF3f,EAAI,EAAGA,EAAI,GAAIA,IACtB2f,GAAQ,KAKV,GAFAtX,KAAOof,EAAUo7E,GAEbx6F,KACF,KAAIy6F,EAASz6F,KAAK2gB,MAAM,KAExB,IAAQhpB,EAAI8iG,EAAO/iG,OAAS,EAAGC,GAAK,EAAGA,IAAK,CAC1C,IAAI+iG,EAAWlgE,EAAKigE,EAAO9iG,IAC3B2f,EAAOkjB,EAAK,IAAIvxB,EAAOqO,EAAOojF,EAAU,SAI5C,MAAO,KAAOpjF,GAQhB/f,EAAQ6nB,UAAYA,wCCpBpB,WACE,aAEA,IAAIu7E,EAAyB,kBAAXz2E,OAAsBA,OAAS,IAClCy2E,EAAKC,oBAAyC,kBAAZloD,GAAwBA,EAAQqG,UAAYrG,EAAQqG,SAASzhC,OAE5GqjF,EAAOniD,EAAAA,GAmET,IAjEA,IAAIqiD,GAAaF,EAAKG,sBAAsDxjG,EAAOC,QAC/EwjG,EAAY,mBAAmBp6E,MAAM,IAIrCq6E,EAAQ,CAAC,EAAG,EAAG,GAAI,IACnBC,EAAK,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WACrE,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAC1E,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAClE,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WACtE,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,YAC5EC,EAAO,CAAC,IAAK,IAAK,IAAK,KAEvBC,EAAe,CAAC,MAAO,SAAU,cAAe,SAEhDC,EAAqB,SAAU7sF,EAAMuY,EAASu0E,GAChD,OAAO,SAAUxqF,GACf,OAAO,IAAIyqF,EAAO/sF,EAAMuY,EAASvY,GAAMq8B,OAAO/5B,GAASwqF,OAIvDE,EAA0B,SAAUhtF,EAAMuY,EAASu0E,GACrD,OAAO,SAAUxqF,EAAS2qF,GACxB,OAAO,IAAIF,EAAO/sF,EAAMuY,EAAS00E,GAAY5wD,OAAO/5B,GAASwqF,OAI7DI,EAAe,SAAUltF,EAAMuY,GACjC,IAAIq+B,EAASi2C,EAAmB7sF,EAAMuY,EAAS,OAC/Cq+B,EAAO1nD,OAAS,WACd,OAAO,IAAI69F,EAAO/sF,EAAMuY,EAASvY,IAEnC42C,EAAOva,OAAS,SAAU/5B,GACxB,OAAOs0C,EAAO1nD,SAASmtC,OAAO/5B,IAEhC,IAAK,IAAIlZ,EAAI,EAAGA,EAAIwjG,EAAazjG,SAAUC,EAAG,CAC5C,IAAIyT,EAAO+vF,EAAaxjG,GACxBwtD,EAAO/5C,GAAQgwF,EAAmB7sF,EAAMuY,EAAS1b,GAEnD,OAAO+5C,GAkBLqpB,EAAa,CACf,CAACxuE,KAAM,SAAU8mB,QAvDE,CAAC,EAAG,IAAK,MAAO,UAuDOvY,KAAM2sF,EAAMO,aAAcA,GACpE,CAACz7F,KAAM,OAAQ8mB,QAvDH,CAAC,EAAG,KAAM,OAAQ,WAuDGvY,KAAM2sF,EAAMO,aAAcA,GAC3D,CAACz7F,KAAM,QAAS8mB,QA1DE,CAAC,GAAI,KAAM,QAAS,WA0DEvY,KAhDzB,CAAC,IAAK,KAgDqCktF,aAlBpC,SAAUltF,EAAMuY,GACtC,IAAIq+B,EAASo2C,EAAwBhtF,EAAMuY,EAAS,OACpDq+B,EAAO1nD,OAAS,SAAU+9F,GACxB,OAAO,IAAIF,EAAO/sF,EAAMuY,EAAS00E,IAEnCr2C,EAAOva,OAAS,SAAU/5B,EAAS2qF,GACjC,OAAOr2C,EAAO1nD,OAAO+9F,GAAY5wD,OAAO/5B,IAE1C,IAAK,IAAIlZ,EAAI,EAAGA,EAAIwjG,EAAazjG,SAAUC,EAAG,CAC5C,IAAIyT,EAAO+vF,EAAaxjG,GACxBwtD,EAAO/5C,GAAQmwF,EAAwBhtF,EAAMuY,EAAS1b,GAExD,OAAO+5C,KASLhB,EAAU,GAAIu3C,EAAc,GAEvB/jG,EAAI,EAAGA,EAAI62E,EAAW92E,SAAUC,EAGvC,IAFA,IAAI+2E,EAAYF,EAAW72E,GACvB4W,EAAQmgE,EAAUngE,KACbmQ,EAAI,EAAGA,EAAInQ,EAAK7W,SAAUgnB,EAAG,CACpC,IAAIi9E,EAAajtB,EAAU1uE,KAAM,IAAMuO,EAAKmQ,GAC5Cg9E,EAAYvhG,KAAKwhG,GACjBx3C,EAAQw3C,GAAcjtB,EAAU+sB,aAAaltF,EAAKmQ,GAAIgwD,EAAU5nD,SAIpE,SAASw0E,EAAO/sF,EAAMuY,EAAS00E,GAC7BtiG,KAAK0iG,OAAS,GACd1iG,KAAKuC,EAAI,GACTvC,KAAK4tB,QAAUA,EACf5tB,KAAKsiG,WAAaA,EAClBtiG,KAAK2iG,OAAQ,EACb3iG,KAAKuM,MAAQ,EACbvM,KAAKsrB,MAAQ,EACbtrB,KAAK4iG,WAAc,MAAQvtF,GAAQ,IAAO,EAC1CrV,KAAK6iG,UAAY7iG,KAAK4iG,YAAc,EACpC5iG,KAAK8iG,aAAeR,GAAc,EAClCtiG,KAAK6pE,YAA2B,GAAby4B,IAAoB,EAEvC,IAAK,IAAI7jG,EAAI,EAAGA,EAAI,KAAMA,EACxBuB,KAAKuC,EAAE9D,GAAK,EAIhB2jG,EAAOhhG,UAAUswC,OAAS,SAAU/5B,GAClC,IAAIorF,EAA+B,kBAAZprF,EACnBorF,GAAaprF,EAAQlU,cAAgB80E,cACvC5gE,EAAU,IAAIiI,WAAWjI,IAK3B,IAHA,IACuDlZ,EAAGokB,EADtDrkB,EAASmZ,EAAQnZ,OAAQkkG,EAAS1iG,KAAK0iG,OAAQG,EAAY7iG,KAAK6iG,UAClED,EAAa5iG,KAAK4iG,WAAYzzF,EAAQ,EAAG5M,EAAIvC,KAAKuC,EAE7C4M,EAAQ3Q,GAAQ,CACrB,GAAIwB,KAAK2iG,MAGP,IAFA3iG,KAAK2iG,OAAQ,EACbD,EAAO,GAAK1iG,KAAKuM,MACZ9N,EAAI,EAAGA,EAAImkG,EAAa,IAAKnkG,EAChCikG,EAAOjkG,GAAK,EAGhB,GAAIskG,EACF,IAAKtkG,EAAIuB,KAAKsrB,MAAOnc,EAAQ3Q,GAAUC,EAAIokG,IAAa1zF,EACtDuzF,EAAOjkG,GAAK,IAAMkZ,EAAQxI,IAAU2yF,EAAY,EAANrjG,UAG5C,IAAKA,EAAIuB,KAAKsrB,MAAOnc,EAAQ3Q,GAAUC,EAAIokG,IAAa1zF,GACtD0T,EAAOlL,EAAQwO,WAAWhX,IACf,IACTuzF,EAAOjkG,GAAK,IAAMokB,GAAQi/E,EAAY,EAANrjG,KACvBokB,EAAO,MAChB6/E,EAAOjkG,GAAK,KAAO,IAAQokB,GAAQ,IAAOi/E,EAAY,EAANrjG,KAChDikG,EAAOjkG,GAAK,KAAO,IAAe,GAAPokB,IAAiBi/E,EAAY,EAANrjG,MACzCokB,EAAO,OAAUA,GAAQ,OAClC6/E,EAAOjkG,GAAK,KAAO,IAAQokB,GAAQ,KAAQi/E,EAAY,EAANrjG,KACjDikG,EAAOjkG,GAAK,KAAO,IAASokB,GAAQ,EAAK,KAAUi/E,EAAY,EAANrjG,KACzDikG,EAAOjkG,GAAK,KAAO,IAAe,GAAPokB,IAAiBi/E,EAAY,EAANrjG,OAElDokB,EAAO,QAAoB,KAAPA,IAAiB,GAAqC,KAA9BlL,EAAQwO,aAAahX,IACjEuzF,EAAOjkG,GAAK,KAAO,IAAQokB,GAAQ,KAAQi/E,EAAY,EAANrjG,KACjDikG,EAAOjkG,GAAK,KAAO,IAASokB,GAAQ,GAAM,KAAUi/E,EAAY,EAANrjG,KAC1DikG,EAAOjkG,GAAK,KAAO,IAASokB,GAAQ,EAAK,KAAUi/E,EAAY,EAANrjG,KACzDikG,EAAOjkG,GAAK,KAAO,IAAe,GAAPokB,IAAiBi/E,EAAY,EAANrjG,MAKxD,GADAuB,KAAKgjG,cAAgBvkG,EACjBA,GAAKokG,EAAW,CAGlB,IAFA7iG,KAAKsrB,MAAQ7sB,EAAIokG,EACjB7iG,KAAKuM,MAAQm2F,EAAOE,GACfnkG,EAAI,EAAGA,EAAImkG,IAAcnkG,EAC5B8D,EAAE9D,IAAMikG,EAAOjkG,GAEjBkE,EAAEJ,GACFvC,KAAK2iG,OAAQ,OAEb3iG,KAAKsrB,MAAQ7sB,EAGjB,OAAOuB,MAGToiG,EAAOhhG,UAAU6hG,SAAW,WAC1B,IAAIP,EAAS1iG,KAAK0iG,OAAQjkG,EAAIuB,KAAKgjG,cAAeJ,EAAa5iG,KAAK4iG,WAAYrgG,EAAIvC,KAAKuC,EAEzF,GADAmgG,EAAOjkG,GAAK,IAAMuB,KAAK4tB,QAAY,EAAJnvB,GAC3BuB,KAAKgjG,gBAAkBhjG,KAAK6iG,UAE9B,IADAH,EAAO,GAAKA,EAAOE,GACdnkG,EAAI,EAAGA,EAAImkG,EAAa,IAAKnkG,EAChCikG,EAAOjkG,GAAK,EAIhB,IADAikG,EAAOE,EAAa,IAAM,WACrBnkG,EAAI,EAAGA,EAAImkG,IAAcnkG,EAC5B8D,EAAE9D,IAAMikG,EAAOjkG,GAEjBkE,EAAEJ,IAGJ6/F,EAAOhhG,UAAUoD,SAAW49F,EAAOhhG,UAAUsnB,IAAM,WACjD1oB,KAAKijG,WAKL,IAHA,IAEc12F,EAFVq2F,EAAa5iG,KAAK4iG,WAAYrgG,EAAIvC,KAAKuC,EAAGugG,EAAe9iG,KAAK8iG,aAC9Dj5B,EAAa7pE,KAAK6pE,WAAYprE,EAAI,EAAG+mB,EAAI,EACzCkD,EAAM,GACHlD,EAAIs9E,GAAc,CACvB,IAAKrkG,EAAI,EAAGA,EAAImkG,GAAcp9E,EAAIs9E,IAAgBrkG,IAAK+mB,EACrDjZ,EAAQhK,EAAE9D,GACViqB,GAAOm5E,EAAWt1F,GAAS,EAAK,IAAQs1F,EAAkB,GAARt1F,GAC3Cs1F,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,EAAK,IAC3Ds1F,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,GAAM,IAC5Ds1F,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,GAAM,IAEjEiZ,EAAIo9E,IAAe,IACrBjgG,EAAEJ,GACF9D,EAAI,GAeR,OAZIorE,IACFt9D,EAAQhK,EAAE9D,GACNorE,EAAa,IACfnhD,GAAOm5E,EAAWt1F,GAAS,EAAK,IAAQs1F,EAAkB,GAARt1F,IAEhDs9D,EAAa,IACfnhD,GAAOm5E,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,EAAK,KAEhEs9D,EAAa,IACfnhD,GAAOm5E,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,GAAM,MAGhEmc,GAGT05E,EAAOhhG,UAAU8hG,YAAc,WAC7BljG,KAAKijG,WAEL,IAGI9yC,EAHAyyC,EAAa5iG,KAAK4iG,WAAYrgG,EAAIvC,KAAKuC,EAAGugG,EAAe9iG,KAAK8iG,aAC9Dj5B,EAAa7pE,KAAK6pE,WAAYprE,EAAI,EAAG+mB,EAAI,EACzCxF,EAAQhgB,KAAKsiG,YAAc,EAG7BnyC,EADE0Z,EACO,IAAI0O,YAAauqB,EAAe,GAAM,GAEtC,IAAIvqB,YAAYv4D,GAG3B,IADA,IAAI8f,EAAQ,IAAIqjE,YAAYhzC,GACrB3qC,EAAIs9E,GAAc,CACvB,IAAKrkG,EAAI,EAAGA,EAAImkG,GAAcp9E,EAAIs9E,IAAgBrkG,IAAK+mB,EACrDsa,EAAMta,GAAKjjB,EAAE9D,GAEX+mB,EAAIo9E,IAAe,GACrBjgG,EAAEJ,GAON,OAJIsnE,IACF/pC,EAAMrhC,GAAK8D,EAAE9D,GACb0xD,EAASA,EAAOtpD,MAAM,EAAGmZ,IAEpBmwC,GAGTiyC,EAAOhhG,UAAU+uD,OAASiyC,EAAOhhG,UAAU8hG,YAE3Cd,EAAOhhG,UAAUuwC,OAASywD,EAAOhhG,UAAU0+B,MAAQ,WACjD9/B,KAAKijG,WAKL,IAHA,IAEgB7iF,EAAQ7T,EAFpBq2F,EAAa5iG,KAAK4iG,WAAYrgG,EAAIvC,KAAKuC,EAAGugG,EAAe9iG,KAAK8iG,aAC9Dj5B,EAAa7pE,KAAK6pE,WAAYprE,EAAI,EAAG+mB,EAAI,EACzCsa,EAAQ,GACLta,EAAIs9E,GAAc,CACvB,IAAKrkG,EAAI,EAAGA,EAAImkG,GAAcp9E,EAAIs9E,IAAgBrkG,IAAK+mB,EACrDpF,EAASoF,GAAK,EACdjZ,EAAQhK,EAAE9D,GACVqhC,EAAM1f,GAAkB,IAAR7T,EAChBuzB,EAAM1f,EAAS,GAAM7T,GAAS,EAAK,IACnCuzB,EAAM1f,EAAS,GAAM7T,GAAS,GAAM,IACpCuzB,EAAM1f,EAAS,GAAM7T,GAAS,GAAM,IAElCiZ,EAAIo9E,IAAe,GACrBjgG,EAAEJ,GAgBN,OAbIsnE,IACFzpD,EAASoF,GAAK,EACdjZ,EAAQhK,EAAE9D,GACNorE,EAAa,IACf/pC,EAAM1f,GAAkB,IAAR7T,GAEds9D,EAAa,IACf/pC,EAAM1f,EAAS,GAAM7T,GAAS,EAAK,KAEjCs9D,EAAa,IACf/pC,EAAM1f,EAAS,GAAM7T,GAAS,GAAM,MAGjCuzB,GAGT,IAAIn9B,EAAI,SAAUJ,GAChB,IAAI62B,EAAGjD,EAAG3zB,EAAG4gG,EAAI33D,EAAIrlB,EAAIi9E,EAAIC,EAAIC,EAAIC,EAAIC,EAAI50D,EAAI60D,EAC7ClxE,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIwvE,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAC3EC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAC3EC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAC/E,IAAK1jG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4gG,EAAK7gG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCkpC,EAAKlpC,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC6jB,EAAK7jB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC8gG,EAAK9gG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC+gG,EAAK/gG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCghG,EAAKhhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCihG,EAAKjhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCkhG,EAAKlhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAItC62B,GAHAyV,EAAKtsC,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG3B6jB,GAAM,EAAMi9E,IAAO,IAC9BltE,GAHAutE,EAAKnhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG3B8gG,GAAM,EAAMj9E,IAAO,IAC9B7jB,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIgqE,GAAOE,GAAM,EAAMC,IAAO,IAC9BptE,EAAIsV,GAAO83D,GAAM,EAAMD,IAAO,IAC9B/gG,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIhT,GAAOo9E,GAAM,EAAMC,IAAO,IAC9BttE,EAAIktE,GAAOI,GAAM,EAAMD,IAAO,IAC9BjhG,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIkqE,GAAOz0D,GAAM,EAAM60D,IAAO,IAC9BvtE,EAAIotE,GAAOG,GAAM,EAAM70D,IAAO,IAC9BtsC,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIoqE,GAAOJ,GAAM,EAAM33D,IAAO,IAC9BtV,EAAIstE,GAAOh4D,GAAM,EAAM23D,IAAO,IAC9B7gG,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EAET3D,EAAKjwB,EAAE,GACPowB,EAAKpwB,EAAE,GACP0iG,EAAO1iG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC2iG,EAAO3iG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCwhG,EAAOxhG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCyhG,EAAOzhG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCwjG,GAAOxjG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCyjG,GAAOzjG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCsiG,EAAOtiG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCuiG,EAAOviG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC8hG,EAAO9hG,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9B+hG,EAAO/hG,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9BuwB,EAAMvwB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC0wB,EAAM1wB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC4iG,EAAO5iG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC6iG,EAAO7iG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC0hG,EAAO1hG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC2hG,EAAO3hG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC0jG,GAAO1jG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC2jG,GAAO3jG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCkjG,GAAOljG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BmjG,GAAOnjG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BgiG,EAAOhiG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCiiG,EAAOjiG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC6wB,EAAM7wB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCgxB,EAAMhxB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC8iG,EAAO9iG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC+iG,EAAO/iG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC4hG,EAAO5hG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC6hG,EAAO7hG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCohG,EAAOphG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BqhG,EAAOrhG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BojG,GAAOpjG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCqjG,GAAOrjG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCkiG,EAAOliG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCmiG,EAAOniG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCmxB,EAAMnxB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCsxB,EAAMtxB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCgjG,EAAOhjG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCijG,GAAOjjG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCwiG,EAAOxiG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/ByiG,EAAOziG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BshG,EAAOthG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCuhG,EAAOvhG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCsjG,GAAOtjG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCujG,GAAOvjG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCoiG,EAAOpiG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCqiG,EAAOriG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCyxB,EAAMzxB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC4xB,EAAM5xB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAEhCA,EAAE,GAAKiwB,GAAOM,EAAKM,EACnB7wB,EAAE,GAAKowB,GAAOM,EAAKM,EACnBhxB,EAAE,IAAMohG,GAAQE,EAAME,EACtBxhG,EAAE,IAAMqhG,GAAQE,EAAME,EACtBzhG,EAAE,IAAM8hG,GAAQE,EAAME,EACtBliG,EAAE,IAAM+hG,GAAQE,EAAME,EACtBniG,EAAE,IAAMwiG,GAAQE,EAAME,EACtB5iG,EAAE,IAAMyiG,GAAQE,EAAME,EACtB7iG,EAAE,IAAMkjG,IAAQE,GAAME,GACtBtjG,EAAE,IAAMmjG,IAAQE,GAAME,GACtBvjG,EAAE,GAAKuwB,GAAOM,EAAKM,EACnBnxB,EAAE,GAAK0wB,GAAOM,EAAKM,EACnBtxB,EAAE,IAAMshG,GAAQE,EAAME,EACtB1hG,EAAE,IAAMuhG,GAAQE,EAAME,EACtB3hG,EAAE,IAAMgiG,GAAQE,EAAME,EACtBpiG,EAAE,IAAMiiG,GAAQE,EAAME,EACtBriG,EAAE,IAAM0iG,GAAQE,EAAME,EACtB9iG,EAAE,IAAM2iG,GAAQE,EAAME,EACtB/iG,EAAE,IAAMojG,IAAQE,GAAME,GACtBxjG,EAAE,IAAMqjG,IAAQE,GAAME,GACtBzjG,EAAE,GAAK6wB,GAAOM,EAAKM,EACnBzxB,EAAE,GAAKgxB,GAAOM,EAAKM,EACnB5xB,EAAE,IAAMwhG,GAAQE,EAAME,EACtB5hG,EAAE,IAAMyhG,GAAQE,EAAME,EACtB7hG,EAAE,IAAMkiG,GAAQE,EAAME,EACtBtiG,EAAE,IAAMmiG,GAAQE,EAAME,EACtBviG,EAAE,IAAM4iG,GAAQE,EAAME,EACtBhjG,EAAE,IAAM6iG,GAAQE,EAAME,GACtBjjG,EAAE,IAAMsjG,IAAQE,GAAME,GACtB1jG,EAAE,IAAMujG,IAAQE,GAAME,GACtB3jG,EAAE,GAAKmxB,GAAOM,EAAKxB,EACnBjwB,EAAE,GAAKsxB,GAAOM,EAAKxB,EACnBpwB,EAAE,IAAM0hG,GAAQE,EAAMR,EACtBphG,EAAE,IAAM2hG,GAAQE,EAAMR,EACtBrhG,EAAE,IAAMoiG,GAAQE,EAAMR,EACtB9hG,EAAE,IAAMqiG,GAAQE,EAAMR,EACtB/hG,EAAE,IAAM8iG,GAAQE,EAAMR,EACtBxiG,EAAE,IAAM+iG,GAAQE,GAAMR,EACtBziG,EAAE,IAAMwjG,IAAQE,GAAMR,GACtBljG,EAAE,IAAMyjG,IAAQE,GAAMR,GACtBnjG,EAAE,GAAKyxB,GAAOxB,EAAKM,EACnBvwB,EAAE,GAAK4xB,GAAOxB,EAAKM,EACnB1wB,EAAE,IAAM4hG,GAAQR,EAAME,EACtBthG,EAAE,IAAM6hG,GAAQR,EAAME,EACtBvhG,EAAE,IAAMsiG,GAAQR,EAAME,EACtBhiG,EAAE,IAAMuiG,GAAQR,EAAME,EACtBjiG,EAAE,IAAMgjG,GAAQR,EAAME,EACtB1iG,EAAE,IAAMijG,IAAQR,EAAME,EACtB3iG,EAAE,IAAM0jG,IAAQR,GAAME,GACtBpjG,EAAE,IAAM2jG,IAAQR,GAAME,GAEtBrjG,EAAE,IAAMw/F,EAAGv/F,GACXD,EAAE,IAAMw/F,EAAGv/F,EAAI,IAInB,GAAIm/F,EACFvjG,EAAOC,QAAU4sD,OAEjB,IAASxsD,EAAI,EAAGA,EAAI+jG,EAAYhkG,SAAUC,EACxCgjG,EAAKe,EAAY/jG,IAAMwsD,EAAQu3C,EAAY/jG,IA9cjD,6KCNM0nG,EAAAA,SAAAA,kCAEJ,aAAe,wBACb,gBACKC,WAAa,GAFL,6DAKf,kFACQ,IAAIl7F,MAAM,sDADlB,yHAIA,SAAYm7F,GACVrmG,KAAKomG,WAAapmG,KAAKomG,WAAW15F,OAAO25F,GACzC,8CAAiBA,oCAGnB,SAAmBA,GACjBrmG,KAAKomG,WAAapmG,KAAKomG,WAAW15F,OAAO25F,GACzC,qDAAwBA,gCAG1B,WACE,OAAOrmG,KAAKomG,iBAtBVD,CAHa99F,EAAQ,QA8B3BjK,EAAOC,QAAU8nG,sIC5BXG,EAAAA,SAAAA,kCAEJ,aAAe,wBACb,gBACKC,QAAU,GAFF,iEAKf,qNAEA,kFACQ,IAAIr7F,MAAM,2CADlB,yHAIA,SAAYm7F,GAAY,WACtBrmG,KAAKumG,QAAUvmG,KAAKumG,QAAQ75F,OAAO25F,GACnCA,EAAWvgG,SAAQ,SAAAxC,GAAM,OAAI,EAAKwI,KAAK,SAAUxI,uCAGnD,SAAmB+iG,sCAEnB,WACE,IAAME,EAAUvmG,KAAKumG,QAErB,OADAvmG,KAAKumG,QAAU,GACRA,QAvBLD,CAFmBj+F,EAAAA,OAAAA,SA8BzBjK,EAAOC,QAAUioG,sIC9BXA,EAAaj+F,EAAQ,OACrBm+F,EAAoBn+F,EAAQ,OAC1Bo+F,EAAoBp+F,EAAQ,OAA5Bo+F,gBAEFC,EAAAA,SAAAA,kCAEJ,cAAmC,MAApB9G,EAAoB,EAApBA,SAAoB,EAAVxjF,OAAU,kBACjC,gBACKlK,KAAO,QACZ,EAAK0tF,SAAWA,EAHiB,6DAMnC,oGAAgBL,EAAhB,EAAgBA,SAAUJ,EAA1B,EAA0BA,SAClBwH,EAAUxH,EACVyH,EAAYH,EAAgBlH,GAFpC,SAG4BiH,EAAkB,CAAE5G,SAAU5/F,KAAK4/F,SAAUgH,UAAAA,EAAWD,QAAAA,IAHpF,OAGQE,EAHR,OAIQC,EAAcD,EAAYr7F,KAAI,SAACe,GAAD,OAAWA,EAAMyD,QACrDhQ,KAAK+mG,WAAWD,GALlB,2GARIJ,CAAoBJ,GAkB1BloG,EAAOC,QAAUqoG,2FCpBjB,sGAAmC9G,EAAnC,EAAmCA,SAAUgH,EAA7C,EAA6CA,UAAWD,EAAxD,EAAwDA,QACjDC,IAAWA,EAAYD,GAEtBK,EAAkB3H,EAASuH,GAC3BK,EAAgB5H,EAASsH,GAGzBO,EAAsBvoG,MAFFsoG,EAAgBD,EAAkB,GAEP1hE,OACxB95B,KAAI,SAAC2sB,EAAEhpB,GAAH,OAAa63F,EAAkB73F,KACnC3D,IAAI27F,GATnC,SAU4BtnG,QAAQorF,IAChCic,EAAoB17F,KAAI,SAAA47F,GAAQ,OAAIC,EAAMzH,EAAU,uBAAwB,CAACwH,GAAU,QAX3F,cAUQP,EAVR,yBAaSA,GAbT,mEAgBA,SAASxH,EAAS7a,GAChB,YAAkBnkF,IAAdmkF,GAAyC,OAAdA,EAA2BA,EACnDl1E,OAAO4N,SAASsnE,EAAW,IASpC,SAAS2iB,EAASG,GAChB,YAAYjnG,IAARinG,GAA6B,OAARA,EAAqBA,EAEvC,KADWA,EAAI9iG,SAAS,IAIjC,SAAS6iG,EAAMzH,EAAU3zC,EAAQ7vC,GAC/B,OAAO,IAAIvc,SAAQ,SAACV,EAASC,GAC3BwgG,EAASmB,UAAU,CAAErgD,GAAI,EAAGmgD,QAAS,MAAO50C,OAAAA,EAAQ7vC,OAAAA,IAAU,SAAChc,EAAKmlB,GAClE,GAAInlB,EAAK,OAAOhB,EAAOgB,GACvBjB,EAAQomB,EAAIjiB,cAvClBlF,EAAOC,iBAE0B,sDCqBjC,SAASkpG,EAAcC,GACrB,OAAOA,EAAKnwD,MAAK,SAACowD,EAAMC,GACtB,MAAa,WAATD,GAA8B,aAATC,EAA4B,EACxC,WAATA,GAA8B,aAATD,GAA6B,EAC/CpI,EAASoI,GAAQpI,EAASqI,MAYrC,SAASrI,EAAS7a,GAChB,YAAkBnkF,IAAdmkF,GAAyC,OAAdA,EAA2BA,EACnDl1E,OAAO4N,SAASsnE,EAAW,IASpC,SAAS2iB,EAASG,GAChB,QAAYjnG,IAARinG,GAA6B,OAARA,EAAc,OAAOA,EAC9C,IAAI9iB,EAAY8iB,EAAI9iG,SAAS,IAG7B,OAFqBggF,EAAUhmF,OAAS,IACtBgmF,EAAY,IAAMA,GAC7B,KAAOA,EAYhB,SAASmjB,IACP,OAAO/zF,KAAKoU,MAAsB,GAAhBpU,KAAKg0F,UAAepjG,SAAS,IAnEjDpG,EAAOC,QAAU,CACfwpG,YAWF,WAA8B,2BAANL,EAAM,yBAANA,EAAM,gBAC5B,IAAMM,EAAaP,EAAcC,GACjC,OAAOM,EAAW,IAZlBC,YAeF,WAA8B,2BAANP,EAAM,yBAANA,EAAM,gBAC5B,IAAMM,EAAaP,EAAcC,GACjC,OAAOM,EAAWA,EAAWtpG,OAAO,IAhBpC+oG,cAAAA,EACApvF,QA0BF,SAAiBy2E,GACf,MAAO,KAAOA,EAAGpqF,SAAS,KA1B1BwjG,iBA6BF,SAA0BC,GACxB,OAAOA,IAAa,CAAC,WAAY,SAAU,WAAWx6F,SAASw6F,IA7B/D5I,SAAAA,EACAoH,gBAoCF,SAAyBjiB,GACvB,YAAkBnkF,IAAdmkF,GAAyC,OAAdA,EAA2BA,EAEnD2iB,EADO9H,EAAS7a,GACC,IAtCxB2iB,SAAAA,EACAe,kBAgDF,SAA2BrF,GAEzB,IADA,IAAIv/F,EAAS,KACJ7E,EAAI,EAAGA,EAAIokG,EAAWpkG,IAC7B6E,GAAUqkG,IACVrkG,GAAUqkG,IAEZ,OAAOrkG,6DChEHo+D,EAAQr5D,EAAAA,OAAAA,GACN8/F,EAA0B9/F,EAAQ,KAAlC8/F,sBACFC,EAA0B//F,EAAQ,OAClCggG,EAAYhgG,EAAQ,OACpBq+F,EAAcr+F,EAAQ,OACtBigG,EAAWjgG,EAAQ,OACzB,EAA+BA,EAAQ,OAA/B8+F,EAAR,EAAQA,SAAU9H,EAAlB,EAAkBA,SAsLlB,SAASkJ,EAA2BC,GAClC,OAAOC,EAAoB,UAAC,gHACLD,EAAc,WAAd,KADK,cACpB7iG,EADoB,OAEpBrC,EAAS6jG,EAASxhG,EAAO+6C,IAFL,kBAGnBp9C,GAHmB,4CAQ9B,SAASmlG,EAAqBphC,GAC5B,OAAO8gC,EAAqB,2BAAC,WAAOvH,EAAKr7E,GAAZ,qFACN8hD,EAAQlnE,MAAM,KAAMygG,EAAIxkF,QADlB,OACrB9Y,EADqB,OAE3BiiB,EAAIjiB,OAASA,EAFc,2CAAD,yDAmB9B,SAASolG,EAAUhlG,EAAK3D,GACtB,IAAMqV,EAAS,GACf,IAAK,IAAI7V,KAAOmE,EACd0R,EAAOnU,KAAKyC,EAAInE,IAElB,OAAO6V,EAtNThX,EAAOC,QAEP,YAA+D,IAA1BsqG,EAA0B,EAA1BA,aAAc/I,EAAY,EAAZA,SAG7CgJ,EAAc,EACdC,EAAU,GAERC,EAAQ,IAAIpnC,EACZqnC,EA2LR,YAA2C,IAATD,EAAS,EAATA,MAChC,OAAO,SAACE,GACN,kCAAO,WAAOpI,EAAKr7E,EAAKviB,EAAMuoB,GAAvB,+EAIqBu9E,EAAMlnC,UAJ3B,QAICqnC,EAJD,UAMLD,EAAWpI,EAAKr7E,EAAKviB,EAAMuoB,GANtB,2CAAP,6DA7LkB29E,CAAuB,CAAEJ,MAAAA,IAEvCE,EAAaZ,EAAwB,CAEzCe,cAAiCJ,EAAYR,EAA2Ba,IACxEC,mBAAiCN,EAAYR,EAA2Be,IACxEC,gCAAiCR,EAAYR,EAA2BiB,IAExEC,oBAAiCV,EAAYN,EAAqBiB,IAElEC,qBAAiCZ,EAAYN,EAAqBmB,IAClEC,kBAAiCd,EAAYN,EAAqBqB,MAI9DC,EAAa,2BAAG,0FAASxK,EAAT,EAASA,SAAUJ,EAAnB,EAAmBA,SAChB,IAAnB0J,EAAQrqG,OADQ,iEAGMsqG,EAAMlnC,UAHZ,cAGdqnC,EAHc,yBAMZppG,QAAQorF,IAAIyd,EAAUG,GAASr9F,IAAnB,2BAAuB,WAAO7F,GAAP,wFAEhCA,EAAO+rC,OAAO,CAAE6tD,SAAAA,EAAUJ,SAAAA,IAFM,sDAKrC78D,QAAQ3iC,MAAR,MALqC,wDAAvB,wDANA,yDAgBlB2iC,QAAQ3iC,MAAR,MAhBkB,QAmBpBspG,IAnBoB,0DAAH,sDAmCnB,OAZAD,EAAWI,aAAeA,EAC1BJ,EAAWM,eAAiBA,EAC5BN,EAAWQ,4BAA8BA,EACzCR,EAAWgB,gBAAkBN,EAC7BV,EAAWY,iBAAmBA,EAC9BZ,EAAWc,cAAgBA,EAG3Bd,EAAWiB,QAAU,YArDwC,mCAsD3DC,IAGKlB,EAzDsD,SA+D9CI,EA/D8C,kEA+D7D,WAA4BhtF,GAA5B,4EACQzW,EAAS,IAAI0iG,EAAU,CAAEzI,SAAAA,EAAUxjF,OAAAA,IAD3C,SAE4B+tF,EAAcxkG,GAF1C,uCAGSA,GAHT,4CA/D6D,+BAqE9C2jG,IArE8C,+DAqE7D,yFACQ3jG,EAAS,IAAI+gG,EAAY,CAAE9G,SAAAA,IADnC,SAE4BuK,EAAcxkG,GAF1C,uCAGSA,GAHT,4CArE6D,+BA2E9C6jG,IA3E8C,+DA2E7D,yFACQ7jG,EAAS,IAAI2iG,EAAS,CAAE1I,SAAAA,IADhC,SAE4BuK,EAAcxkG,GAF1C,uCAGSA,GAHT,4CA3E6D,+BAqF9CikG,EArF8C,kEAqF7D,WAAgCQ,GAAhC,4EACQxB,EAAcvJ,EAAS+K,GACvBzkG,EAASkjG,EAAQD,GAFzB,sBAIU,IAAI19F,MAAJ,+BAAkC09F,EAAlC,MAJV,cAMQ9iC,EAAUngE,EAAO0kG,qBANzB,kBAOSvkC,GAPT,2CArF6D,iCA+F9CgkC,EA/F8C,kEA+F7D,WAA6BM,GAA7B,0EACQxB,EAAcvJ,EAAS+K,GACvBzkG,EAASkjG,EAAQD,GAFzB,sBAIU,IAAI19F,MAAJ,+BAAkC09F,EAAlC,MAJV,aAOsB,QAAhBjjG,EAAOuM,KACT4zD,QAAUngE,EAAO2kG,gBAEjBxkC,QAAU,GAVd,kBAYSA,SAZT,2CA/F6D,iCAoH9C4jC,EApH8C,kEAoH7D,WAAsCU,GAAtC,4EAEQxB,EAAcvJ,EAAS+K,GACvBzkG,EAASkjG,EAAQD,KACjBtlG,EAASsB,QAAQe,IAJzB,gCAOUqkG,EAAgBpB,GAP1B,gCASStlG,GATT,2CApH6D,iCAoI9C6mG,EApI8C,kEAoI7D,WAA6BxkG,GAA7B,gFACQ4kG,EAAkB7B,EAAUG,GAASrqG,OAD7C,SAG6BmqG,EAAapI,iBAH1C,cAGQnB,EAHR,gBAIQz5F,EAAO6kG,WAAW,CAAEpL,aAAAA,IAJ5B,cAKEwJ,IACAC,EAAQD,GAAejjG,EACvBA,EAAO+6C,GAAKkoD,EACZjjG,EAAO8kG,MAAQtD,EAASyB,GAElB8B,EAAiBhC,EAAUG,GAASrqG,OAC1CmsG,EAAuB,CAAEJ,gBAAAA,EAAiBG,eAAAA,IAX5C,kBAYS9B,GAZT,6CApI6D,+BAmJ9CoB,EAnJ8C,kEAmJ7D,WAA+BpB,GAA/B,uEACQ2B,EAAkB7B,EAAUG,GAASrqG,cACpCqqG,EAAQD,GAET8B,EAAiBhC,EAAUG,GAASrqG,OAC1CmsG,EAAuB,CAAEJ,gBAAAA,EAAiBG,eAAAA,IAL5C,2CAnJ6D,wDA2J7D,kFACQH,EAAkB7B,EAAUG,GAASrqG,OAC3CqqG,EAAU,GAEV8B,EAAuB,CAAEJ,gBAAAA,EAAiBG,eAAgB,IAJ5D,4CA3J6D,sBAkK7D,SAASC,EAAT,GAAqE,IAAnCJ,EAAmC,EAAnCA,gBAAiBG,EAAkB,EAAlBA,eAEzB,IAApBH,GAAyBG,EAAiB,EAC5C/B,EAAajK,GAAG,OAAQqL,GAItBQ,EAAkB,GAAwB,IAAnBG,GACzB/B,EAAalK,eAAe,OAAQsL,yICpLpCa,EAAWviG,EAAQ,OACnBq3F,EAAOr3F,EAAQ,OACf89F,EAAwB99F,EAAQ,OACtC,EAA8EA,EAAQ,OAArEg3F,GAAjB,EAAQlnF,QAAR,EAAiBknF,UAAUoH,EAA3B,EAA2BA,gBAAiBoB,EAA5C,EAA4CA,YAAaG,EAAzD,EAAyDA,iBAEnDK,EAAAA,SAAAA,kCAEJ,cAAmC,MAApBzI,EAAoB,EAApBA,SAAUxjF,EAAU,EAAVA,OAAU,kBACjC,gBACKlK,KAAO,MACZ,EAAK24F,SAAW,IAAID,EAAShL,GAC7B,EAAKxjF,OAASxa,OAAOwP,OAAO,CAC1Bw1F,UAAW,SACXD,QAAS,SACTjsF,aAASra,EACTyqG,OAAQ,IACP1uF,GAEC,EAAKA,OAAO1B,UAET/b,MAAME,QAAQ,EAAKud,OAAO1B,WAC7B,EAAK0B,OAAO1B,QAAU,CAAC,EAAK0B,OAAO1B,UAGrC,EAAK0B,OAAO1B,QAAU,EAAK0B,OAAO1B,QAAQlP,KAAI,SAAAkP,GAAO,OAAIA,EAAQ8M,kBAjBlC,iEAqBnC,kGAAmB43E,EAAnB,EAAmBA,aAEbwH,EAAY5mG,KAAKoc,OAAOwqF,UACxB,CAAC,SAAU,WAAWn5F,SAASm5F,KAAYA,EAAYxH,GACvD,aAAewH,IAAWA,EAAY,OAC1C5mG,KAAKoc,OAAOwqF,UAAYA,EAElBD,EAAUkB,EAAY7nG,KAAKoc,OAAOuqF,QAASvH,GAC3ChjF,EAASxa,OAAOwP,OAAO,GAAIpR,KAAKoc,OAAQ,CAAEuqF,QAAAA,IARlD,SAUwB3mG,KAAK+qG,WAAW3uF,GAVxC,OAUQ4uF,EAVR,OAWEhrG,KAAKirG,kBAAkBD,GAXzB,uJAcA,6GAAgBzL,EAAhB,EAAgBA,SAAUJ,EAA1B,EAA0BA,SAElBwH,EAAUxH,EAIdyH,EADErH,EACUkH,EAAgBlH,GAEhBJ,EAGR/iF,EAASxa,OAAOwP,OAAO,GAAIpR,KAAKoc,OAAQ,CAAEwqF,UAAAA,EAAWD,QAAAA,IAX7D,SAYwB3mG,KAAK+qG,WAAW3uF,GAZxC,OAYQ4uF,EAZR,OAaQE,EAAeF,EAAQrlG,QAAO,SAAAuiB,GAAG,OAAI,EAAKijF,SAASjjF,MAGzDloB,KAAK+mG,WAAWmE,GAhBlB,0JAmBA,WAAkB9uF,GAAlB,4FACwBsjF,GAAK,SAAA54C,GAAE,OAAI,EAAK+jD,SAASO,QAAQhvF,EAAQ0qC,KAAzC44C,GADxB,cACQsL,EADR,yBAGSA,GAHT,wHAMA,SAAS9iF,GAEP,GAAIm3E,EAASr/F,KAAKoc,OAAOwqF,YAAcvH,EAASn3E,EAAInc,aAAc,OAAO,EACzE,GAAIi8F,EAAiBhoG,KAAKoc,OAAOuqF,UAAYtH,EAASr/F,KAAKoc,OAAOuqF,UAAYtH,EAASn3E,EAAInc,aAAc,OAAO,EAGhH,IAAMs/F,EAAuBnjF,EAAIxN,SAAWwN,EAAIxN,QAAQ8M,cACxD,QAAIxnB,KAAKoc,OAAO1B,SAAW2wF,IAAyBrrG,KAAKoc,OAAO1B,QAAQjN,SAAS49F,KAM7DrrG,KAAKoc,OAAO0uF,OAAOQ,OAAM,SAACC,EAAcp8F,GAE1D,IAAIq8F,EAAWtjF,EAAI4iF,OAAO37F,GAC1B,IAAKq8F,EAAU,OAAO,EACtBA,EAAWA,EAAShkF,cAEpB,IAAIikF,EAAmB9sG,MAAME,QAAQ0sG,GAAgBA,EAAe,CAACA,GAGrE,QADiCE,EAAiBh+F,SAAS,QAE3Dg+F,EAAmBA,EAAiBjgG,KAAI,SAAAqC,GAAK,OAAIA,EAAM2Z,kBAEf/Z,SAAS+9F,YAvFjDnD,CAAkBlC,GAgGxB/nG,EAAOC,QAAUgqG,6DCnGXqD,EAAY,SAAC3rG,EAAIkgC,EAAS0rE,EAAOC,GAArB,OAAmC,WAAyB,kCAAZC,EAAY,yBAAZA,EAAY,gBAC7E,IAAMC,EAAI7rE,EAAQ8rE,cAElB,OAAO,IAAID,GAAE,SAAC3sG,EAASC,GAClB6gC,EAAQ+rE,UACXH,EAAW5qG,MAAK,WAAe,2BAAXqC,EAAW,yBAAXA,EAAW,gBAC1B28B,EAAQgsE,WACP3oG,EAAO,GACVlE,EAAOkE,IAEPA,EAAOu2B,QACP16B,EAAQmE,IAGTnE,EAAQmE,MAGA28B,EAAQgsE,WAClBJ,EAAW5qG,MAAK,SAACtB,EAAO2D,GACnB3D,EACHP,EAAOO,GAEPR,EAAQmE,MAIVuoG,EAAW5qG,KAAK9B,GAGjB,IAAMJ,EAAO,IAAS4sG,EAAQC,EAAY,EAC1C9qG,QAAQX,MAAMJ,EAAIhB,EAAM8sG,QAIpBK,EAAc,IAAIC,QAExB/tG,EAAOC,QAAU,SAAC4b,EAAOgmB,GACxBA,EAAU,EAAH,CACNmsE,QAAS,CAAC,sBACVH,YAAY,EACZF,cAAelsG,SACZogC,GAGJ,IAAMosE,SAAoBpyF,EAC1B,GAAgB,OAAVA,GAAkC,WAAfoyF,GAA0C,aAAfA,EACnD,MAAM,IAAI7rG,UAAJ,gEAAwF,OAAVyZ,EAAiB,OAASoyF,EAAxG,MAGP,IAqBM76F,EAAQ,IAAI26F,QAEZR,EAAQ,IAAIhnG,MAAMsV,EAAO,CAC9B9Z,MAD8B,SACxBmB,EAAQgrG,EAASrsG,GACtB,IAAMssG,EAAS/6F,EAAM3N,IAAIvC,GAEzB,GAAIirG,EACH,OAAOzrG,QAAQX,MAAMosG,EAAQD,EAASrsG,GAGvC,IAAMusG,EAASvsE,EAAQwsE,YAAcnrG,EAASoqG,EAAUpqG,EAAQ2+B,EAAS0rE,EAAOrqG,GAEhF,OADAkQ,EAAMnK,IAAI/F,EAAQkrG,GACX1rG,QAAQX,MAAMqsG,EAAQF,EAASrsG,IAGvC4D,IAb8B,SAa1BvC,EAAQ/B,GACX,IAAMuE,EAAWxC,EAAO/B,GAGxB,IAxCa,SAAC+B,EAAQ/B,GACvB,IAAIgtG,EAASL,EAAYroG,IAAIvC,GAO7B,GALKirG,IACJA,EAAS,GACTL,EAAY7kG,IAAI/F,EAAQirG,IAGrBhtG,KAAOgtG,EACV,OAAOA,EAAOhtG,GAGf,IAAMyd,EAAQ,SAAA0vF,GAAO,MAAwB,kBAAZA,GAAuC,kBAARntG,EAAoBA,IAAQmtG,EAAUA,EAAQ3lG,KAAKxH,IAC7G0E,EAAOnD,QAAQoD,yBAAyB5C,EAAQ/B,GAChDotG,OAAsCtsG,IAAT4D,GAAsBA,EAAKtC,UAAYsC,EAAKvC,aAEzEkrG,GADW3sE,EAAQ4sE,QAAU5sE,EAAQ4sE,QAAQh/C,KAAK7wC,IAAUijB,EAAQmsE,QAAQv+C,KAAK7wC,KACtD2vF,EAEjC,OADAJ,EAAOhtG,GAAOqtG,EACPA,EAsBDjnG,CAAOrE,EAAQ/B,IAAQuE,IAAa5C,SAASE,UAAU7B,GAC3D,OAAOuE,EAGR,IAAMyoG,EAAS/6F,EAAM3N,IAAIC,GAEzB,GAAIyoG,EACH,OAAOA,EAGR,GAAwB,oBAAbzoG,EAAyB,CACnC,IAAM0oG,EAASd,EAAU5nG,EAAUm8B,EAAS0rE,EAAOrqG,GAEnD,OADAkQ,EAAMnK,IAAIvD,EAAU0oG,GACbA,EAGR,OAAO1oG,KAIT,OAAO6nG,4DC/GF/yD,EAAmBvwC,EAAAA,OAAAA,QACnBykG,EAA2BzkG,EAAQ,OACjC8/F,EAA0B9/F,EAAQ,KAAlC8/F,sBACF4E,EAAyB1kG,EAAQ,OACvC,EAA+CA,EAAQ,OAA/C6/F,EAAR,EAAQA,kBAAmBzB,EAA3B,EAA2BA,gBACrBD,EAAoBn+F,EAAQ,OA8HlC,SAAS2kG,EAAezgG,GACtB,MAAO,CACLyD,KAAMzD,EAAMyD,KACZi9F,WAAY1gG,EAAM0gG,WAClBC,WAAY3gG,EAAM2gG,WAClBC,MAAO5gG,EAAM4gG,MACbC,UAAW7gG,EAAM6gG,UACjBC,iBAAkB9gG,EAAM8gG,iBACxBC,aAAc/gG,EAAM+gG,aACpBC,UAAWhhG,EAAMghG,UACjBC,WAAYjhG,EAAMihG,WAClB9iF,OAAQne,EAAMme,OACd3Y,SAAUxF,EAAMwF,SAChB07F,QAASlhG,EAAMkhG,QACf37F,MAAOvF,EAAMuF,MACb47F,QAASnhG,EAAMmhG,QACfC,UAAWphG,EAAMohG,UACjBC,UAAWrhG,EAAMqhG,WA7IrBxvG,EAAOC,QAGP,YAAkE,IAA1BsqG,EAA0B,EAA1BA,aAAc/I,EAAY,EAAZA,SAE9CiO,EAAgB,GAChBC,EAAgBf,EAAuB,CAAEpE,aAAAA,EAAc/I,SAAAA,IAGzDmO,GAAc,EAGZj1D,EAAS,IAAIF,EACbowD,EAAa8D,EAAyB,CAC1CkB,cAAe7F,GAX+C,gDAY9D8F,gBAAiB9F,GAZ6C,kDAehE,OADAa,EAAWiB,QAiGX,WAEE,IAAK,IAAMvpD,KADX5H,EAAOznC,qBACUw8F,EACfA,EAAcntD,GAAIupD,iBACX4D,EAAcntD,GAEvBqtD,GAAc,GAtGT,CAAEj1D,OAAAA,EAAQkwD,WAAAA,GAf+C,gCAiBhE,WAAyBpI,EAAKr7E,GAA9B,cA8BW2oF,EAsBAC,EApDX,kEAoDWA,EApDX,YAoDiD,IAAhBC,EAAgB,EAAhBA,MAAOzoG,EAAS,EAATA,OACpCA,EAAO+4F,GAAG,UAAU,SAAAp7F,GAAM,OAAI+qG,EAAwBD,EAAO9qG,MAC7D,IAAM+T,EAAM,CACVnF,KAAMo8F,EACNrE,QAAS,WAAF,gBAAE,4FACM6D,EAAc9D,gBAAgBrkG,EAAO8kG,OAD3C,mFAAF,kDAAE,IAIX,OAAOpzF,GA9BA62F,EA9BX,YA8BwC,IAATE,EAAS,EAATA,MACrB/2F,EAAM,CACVnF,KAAMo8F,EACNrE,QAAS,WAAF,gBAAE,4EACPtB,EAAalK,eAAe,OAAQpnF,EAAIq6B,QADjC,2CAAF,kDAAE,GAGTA,OAAQ,WAAF,gBAAE,kGAAS6tD,EAAT,EAASA,SAAUJ,EAAnB,EAAmBA,SAEnBwH,EAAUxH,EACVyH,EAAYH,EAAgBlH,GAH5B,SAIkBiH,EAAkB,CAAE5G,SAAAA,EAAUgH,UAAAA,EAAWD,QAAAA,IAJ3D,OAIA4H,EAJA,OAKUA,EAAU/iG,IAAIwhG,GACtBlnG,SAAQ,SAACpG,GACf2uG,EAAwBD,EAAO1uG,MAP3B,2CAAF,mDAAE,IAaV,OADAipG,EAAajK,GAAG,OAAQrnF,EAAIq6B,QACrBr6B,IA/CL02F,EAFN,sBAEyB,IAAI7iG,MACzB,4DAHJ,OAMQojG,EAAmB1N,EAAIxkF,OAAO,GAE9BgyF,EAAQlG,EAAkB,IARlC,KAYUoG,EAZV,OAaS,aAbT,OAgBS,SAhBT,+BAcMj3F,EAAM62F,EAAkB,CAAEE,MAAAA,IAdhC,oCAiBYI,EAAe5N,EAAIxkF,OAAO,GAjBtC,UAkB2B0xF,EAAc1E,aAAaoF,GAlBtD,eAkBY7oG,EAlBZ,OAmBM0R,EAAM82F,EAAoB,CAAEC,MAAAA,EAAOzoG,OAAAA,IAnBzC,mCAsBY,IAAIuF,MAAJ,+DAAkEojG,EAAlE,MAtBZ,eAyBET,EAAcO,GAAS/2F,EAEvBkO,EAAIjiB,OAAS8qG,EA3Bf,+DAjBgE,wDAiFhE,WAA2BxN,EAAKr7E,GAAhC,2EAEMwoF,EAFN,sBAEyB,IAAI7iG,MACzB,4DAHJ,UAMQw1C,EAAKkgD,EAAIxkF,OAAO,GAChBqyF,EAAeZ,EAAcntD,GAPrC,uBAUIn7B,EAAIjiB,QAAS,EAVjB,wCAcSuqG,EAAcntD,GAdvB,UAeQ+tD,EAAaxE,UAfrB,QAgBE1kF,EAAIjiB,QAAS,EAhBf,6CAjFgE,sBAoGhE,SAAS+qG,EAAwBK,EAAahvG,GAC5Co5C,EAAOhtC,KAAK,eAAgB,CAC1B+0F,QAAS,MACT50C,OAAQ,mBACR7vC,OAAQ,CACNqyF,aAAcC,EACdprG,OAAQ5D,+KCpHV4mG,EAAaj+F,EAAQ,OACrBm+F,EAAoBn+F,EAAQ,OAC1Bo+F,EAAoBp+F,EAAQ,OAA5Bo+F,gBAEF6B,EAAAA,SAAAA,kCAEJ,cAA2B,MAAZ1I,EAAY,EAAZA,SAAY,kBACzB,gBACK1tF,KAAO,KACZ,EAAK0tF,SAAWA,EAHS,6DAM3B,wGAAgBL,EAAhB,EAAgBA,SACRoH,EAAUpH,EACVqH,EAAYH,EAAgBlH,GAFpC,SAGuBiH,EAAkB,CAAE5G,SAAU5/F,KAAK4/F,SAAUgH,UAAAA,EAAWD,QAAAA,IAH/E,OAGQjE,EAHR,OAIQiM,EAAgB,GAJxB,IAKsBjM,GALtB,IAKE,2BAAWn2F,EAAiB,QAC1BoiG,EAAc1tG,KAAd,MAAA0tG,EAAa,EAASpiG,EAAMqiG,eANhC,8BASE5uG,KAAK+mG,WAAW4H,GATlB,4GARIrG,CAAiBhC,GAsBvBloG,EAAOC,QAAUiqG,iGC1BXuG,EAAaxmG,EAAQ,OACrB8/F,EAAwB9/F,EAAQ,OAEhCymG,EAAc,MAACzuG,EAAW,KAAM,SAEtCjC,EAAOC,QAGP,WAA+C,IAAXsK,EAAW,uDAAJ,GAEjCggG,EAAiBhgG,EAAjBggG,aACR,IAAKA,EAAc,MAAM,IAAIz9F,MAAM,0DAGnC,IAAM6jG,EAAa,IAAIC,EACjBC,EAAa,CACjBC,MAAOH,EACPxiG,MAAOwiG,EACPI,KAAMJ,GAGR,OAAO5G,EAAqB,2BAAC,WAAOvH,EAAKr7E,EAAKviB,GAAjB,mFAEvB49F,EAAIE,UAFmB,yCAGlB99F,KAHkB,UAMrBkP,EAAO28F,EAAWO,oBAAoBxO,GACtCyO,EAAWJ,EAAW/8F,GAPD,yCAUlBlP,KAVkB,UAatBqsG,EAASC,gBAAgB1O,GAbH,yCAclB59F,KAdkB,WAkBvBusG,EAAWV,EAAWW,mBAAmB5O,MAC9B2O,EAAW,UAIT,aAAbA,EAvBuB,iBAyBzBE,EAAuB,OAzBE,2BA0BH,WAAbF,EA1BgB,kCA4BO5G,EAAapI,iBA5BpB,QA4BnBmP,EA5BmB,OA8BzBX,EAAWY,YAAYD,GACvBD,EAAuBC,EA/BE,wBAkCzBD,EAAuBF,EAlCE,yBAsCDF,EAASxrG,IAAI+8F,EAAK6O,GAtCjB,gBAuCPpvG,KADduvG,EAtCqB,0CA0CnB5sG,IA1CmB,yBA4CnBqsG,EAAShoG,IAAIu5F,EAAK6O,EAAsBlqF,EAAIjiB,QA5CzB,gCA+CzBiiB,EAAIjiB,OAASssG,EA/CY,4CAAD,gEAyDxBZ,EAAAA,wBAEJ,aAAe,UACbhvG,KAAKwR,MAAQ,oDAGf,SAAyB+yB,EAASsrE,GAChC,IAAM9jG,EAAcuD,OAAO4N,SAAS2yF,EAAgB,IAChDd,EAAa/uG,KAAKwR,MAAMzF,GAE5B,IAAKgjG,EAAY,CACf,IAAMe,EAAW,GACjB9vG,KAAKwR,MAAMzF,GAAe+jG,EAC1Bf,EAAae,EAEf,OAAOf,gDAGT,WAAWxqE,EAASkrE,GAApB,4EAEQV,EAAa/uG,KAAK+vG,wBAAwBxrE,EAASkrE,GAF3D,wDAKQO,EAAanB,EAAWoB,0BAA0B1rE,GAAS,GAC3DgoE,EAASwC,EAAWiB,GAN5B,kBAQSzD,GART,qJAWA,WAAWhoE,EAASkrE,EAAsBnsG,GAA1C,0EAEmBtD,KAAKkwG,eAAe3rE,EAASjhC,GAFhD,iDAKQyrG,EAAa/uG,KAAK+vG,wBAAwBxrE,EAASkrE,GACnDO,EAAanB,EAAWoB,0BAA0B1rE,GAAS,GACjEwqE,EAAWiB,GAAc1sG,EAP3B,wIAUA,SAAiBihC,GAEf,QAAKsqE,EAAWsB,SAAS5rE,IAKR,YADAsqE,EAAWW,mBAAmBjrE,iCAQjD,SAAgBA,EAASjhC,GAEvB,IAAIwrG,EAAYrhG,SAASnK,GAEzB,UAAI,CAAC,2BAA4B,6BAA6BmK,SAAS82B,EAAQ0nB,SACxE3oD,GAAWA,EAAO8sG,WAAkC,uEAArB9sG,EAAO8sG,sCAS/C,SAAaC,GACX,IAAMtxG,EAAOiB,KACPswG,EAAiBhhG,OAAO4N,SAASmzF,EAAa,IAEpDzuG,OAAO4D,KAAKzG,EAAKyS,OACdhG,IAAI8D,QACJ3J,QAAO,SAAA6lB,GAAG,OAAIA,EAAM8kF,KACpBxqG,SAAQ,SAAA0lB,GAAG,cAAWzsB,EAAKyS,MAAMga,YA1ElCwjF,0BC9EN,IAAMnxF,EAAYxV,EAAQ,OAoB1B,SAAS8nG,EAAU5rE,GACjB,MAAwC,UAAjC6qE,EAAoB7qE,GAc7B,SAASgsE,EAAuBhsE,GAC9B,IAAMp1B,EAAQqhG,EAAmBjsE,GAGjC,OAAIp1B,GAASo1B,EAAQnoB,OAAO5d,OACnB+lC,EAAQnoB,OAIM,yBAAnBmoB,EAAQ0nB,OACH1nB,EAAQnoB,OAAOvV,MAAM,GAGvB09B,EAAQnoB,OAAOvV,MAAM,EAAGsI,GAGjC,SAASqhG,EAAoBjsE,GAC3B,OAAQA,EAAQ0nB,QAEd,IAAK,mBACH,OAAO,EAET,IAAK,iBACL,IAAK,cACL,IAAK,0BACL,IAAK,WACH,OAAO,EAET,IAAK,uBACH,OAAO,EAET,QACE,QAIN,SAASmjD,EAAqB7qE,GAC5B,OAAQA,EAAQ0nB,QAEd,IAAK,qBACL,IAAK,YACL,IAAK,sBACL,IAAK,qCACL,IAAK,+BACL,IAAK,cACL,IAAK,qBACL,IAAK,2BACL,IAAK,wCACL,IAAK,4BACL,IAAK,kCACL,IAAK,mBACL,IAAK,iBACL,IAAK,sBACL,IAAK,qBACL,IAAK,cACL,IAAK,kBACH,MAAO,QAGT,IAAK,uBACL,IAAK,uCACL,IAAK,iCACL,IAAK,0CACL,IAAK,oCACL,IAAK,iBACH,MAAO,OAGT,IAAK,eACL,IAAK,kBACL,IAAK,iBACL,IAAK,mBACL,IAAK,0BACL,IAAK,WACL,IAAK,kBACL,IAAK,oBACL,IAAK,cACL,IAAK,kBACH,MAAO,QAGT,IAAK,cACL,IAAK,gBACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,sBACL,IAAK,yBACL,IAAK,gBACL,IAAK,qBACL,IAAK,kCACL,IAAK,sBACL,IAAK,uBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,eACL,IAAK,eACL,IAAK,YACL,IAAK,YACL,IAAK,WACL,IAAK,kBACL,IAAK,kBACL,IAAK,eACL,IAAK,iBACL,IAAK,gBACL,IAAK,sBACL,IAAK,uBACL,IAAK,kBACL,IAAK,kBACH,MAAO,SAnJb7tD,EAAOC,QAAU,CACf4xG,0BAQF,SAAoC1rE,EAASksE,GAC3C,IAAMC,EAAeD,EAAeF,EAAsBhsE,GAAWA,EAAQnoB,OAC7E,OAAI+zF,EAAS5rE,GACJA,EAAQ0nB,OAAS,IAAMpuC,EAAU6yF,GAEjC,MAZTP,SAAUA,EACVX,mBAmBF,SAA6BjrE,GAC3B,IAAIp1B,EAAQqhG,EAAmBjsE,GAG/B,GAAIp1B,GAASo1B,EAAQnoB,OAAO5d,OAC1B,OAAO,KAGT,OAAO+lC,EAAQnoB,OAAOjN,IA1BtBohG,sBAAuBA,EACvBC,mBAAoBA,EACpBpB,oBAAqBA,4DCUvBhxG,EAAOC,QAAU,SAAgCsyG,GAC/C,OAAO,SAAC/P,EAAKr7E,EAAKviB,EAAMuoB,GAKtB,IAAIqlF,EAKAC,EAAuBC,EAJrBC,EAAc,IAAIlxG,SAAQ,SAACV,GAC/ByxG,EAAqBzxG,KAKjB6xG,EAAS,2BAAG,mFAEhBF,GAAgB,EAEhB9tG,GAAK,SAACi/D,GACJ4uC,EAAwB5uC,EACxB2uC,OANc,SAQVG,EARU,2CAAH,qDAWfJ,EAAgB/P,EAAKr7E,EAAKyrF,GACvBlxG,KADH,UACQ,gFACAgxG,EADA,gCAEIC,EAFJ,OAGFF,EAAsB,MAHpB,sBAKFtlF,EAAI,MALF,4CAQL2qC,OAAM,SAACv2D,GACFkxG,EACFA,EAAsBlxG,GAEtB4rB,EAAI5rB,2BCvDdvB,EAAOC,QAAU,SAAmC4yG,GAClD,OAAO,SAACrQ,EAAKr7E,EAAKviB,EAAMuoB,GACtB,IAAMitB,EAAUy4D,EAASrQ,EAAI30C,QAE7B,YAAgB5rD,IAAZm4C,EACKx1C,IAGc,oBAAZw1C,EACFA,EAAQooD,EAAKr7E,EAAKviB,EAAMuoB,IAGjChG,EAAIjiB,OAASk1C,EACNjtB,8BCZXntB,EAAOC,QAAU,EAAjBD,0BCDA,IAAI0zC,EAAW,SAAkBtmB,EAAKzrB,GAEpC,IADA,IAAIiB,EAAI,GACCvC,EAAI,EAAGA,EAAI+sB,IAAO/sB,EACzBuC,EAAEC,KAAKlB,EAAGtB,IACX,OAAOuC,GA6BV5C,EAAOC,QAAU,CACfyzC,SAAUA,EACVo/D,UA5Bc,SAAmB1lF,EAAKpB,GACtC,OAAO0nB,EAAStmB,GAAK,WACnB,OAAOpB,MA2BT1d,OAvBW,SAAgB1L,EAAGqsB,GAC9B,OAAOrsB,EAAE0L,OAAO2gB,IAuBhB8jF,QApBY,SAAiBnwG,GAE7B,IADA,IAAIiR,EAAI,GACCuT,EAAI,EAAG4rF,EAAIpwG,EAAExC,OAAQgnB,EAAI4rF,IAAK5rF,EACrC,IAAK,IAAI/mB,EAAI,EAAGmpC,EAAI5mC,EAAEwkB,GAAGhnB,OAAQC,EAAImpC,IAAKnpC,EACxCwT,EAAEhR,KAAKD,EAAEwkB,GAAG/mB,IAEf,OAAOwT,GAeRo/F,SAZa,SAAkB7uG,EAAGxB,GAElC,IADA,IAAIqsB,EAAI,GACC5uB,EAAI,EAAG03B,EAAIn1B,EAAExC,OAAQC,EAAI03B,EAAG13B,GAAK+D,EACxC6qB,EAAEpsB,KAAKD,EAAE6F,MAAMpI,EAAGA,EAAI+D,IACvB,OAAO6qB,2BC9BFhlB,EAAQ,OAAhB,IAEIipG,EAAK,SAAYtxF,EAAO7Q,GAC1B,OAAO+N,SAAS8C,EAAMnZ,MAAc,EAARsI,EAAY,EAAW,EAARA,EAAY,GAAI,KAYzD3Q,EAAS,SAAgBwC,GAC3B,OAAQA,EAAExC,OAAS,GAAK,GA6BtBytB,EAAU,SAAiBvD,GAE7B,IADA,IAAIpqB,EAAM,GACDG,EAAI,EAAG03B,EAAIzN,EAAIlqB,OAAQC,EAAI03B,EAAG13B,GAAK,EAC1CH,EAAI2C,KAAKic,SAASwL,EAAI7hB,MAAMpI,EAAGA,EAAI,GAAI,KACxC,OAAOH,GAGNmzE,EAAY,SAAmBnzE,GAEjC,IADA,IAAIoqB,EAAM,KACDjqB,EAAI,EAAG03B,EAAI73B,EAAIE,OAAQC,EAAI03B,IAAK13B,EAAG,CAC1C,IAAI4uB,EAAI/uB,EAAIG,GACZiqB,IAAQ2E,EAAI,GAAK,IAAM,IAAMA,EAAE7oB,SAAS,IAE1C,OAAOkkB,GA4GTtqB,EAAOC,QAAU,CACfupG,OAjKW,SAAgB5nF,GAC3B,IAAIuxF,OAAM,EAC2EA,EAA/D,qBAAXvmF,QAA0BA,OAAOq0B,QAAUr0B,OAAOq0B,OAAOmrB,gBAAuBx/C,OAAOq0B,OAAOmrB,gBAAgB,IAAI5qD,WAAWI,IAAuD3X,EAAAA,OAAAA,YAAmC2X,GAElO,IADA,IAAI0I,EAAM,KACDjqB,EAAI,EAAGA,EAAIuhB,IAASvhB,EAC3BiqB,IAAQ,KAAO6oF,EAAI9yG,GAAG+F,SAAS,KAAKqC,OAAO,GAC5C,OAAO6hB,GA4JRlqB,OAAQA,EACRkO,OA3FW,SAAgB1L,EAAGqsB,GAC9B,OAAOrsB,EAAE0L,OAAO2gB,EAAExmB,MAAM,KA2FxBsqG,QAvJY,SAAiBnwG,GAC7B,MAAO,KAAOA,EAAE0O,QAAO,SAAUuC,EAAG1P,GAClC,OAAO0P,EAAI1P,EAAEsE,MAAM,KAClB,KAqJHA,MAlJU,SAAepI,EAAG+mB,EAAGgsF,GAC/B,MAAO,KAAOA,EAAG3qG,MAAU,EAAJpI,EAAQ,EAAO,EAAJ+mB,EAAQ,IAkJ1C8pC,QA/IY,SAAiB5mC,GAE7B,IADA,IAAI+oF,EAAM,KACDhzG,EAAI,EAAG03B,EAAI33B,EAAOkqB,GAAMjqB,EAAI03B,IAAK13B,EACxCgzG,GAAO/oF,EAAI7hB,MAAgB,GAATsvB,EAAI13B,GAAsB,GAAb03B,EAAI13B,EAAI,IAEzC,OAAOgzG,GA2IPz/B,IAxIQ,SAASA,EAAI77C,EAAGzN,GACxB,OAAOA,EAAIlqB,SAAe,EAAJ23B,EAAQ,EAAIzN,EAAMspD,EAAI77C,EAAG,MAAazN,EAAI7hB,MAAM,KAwItE6qG,SArIa,SAASA,EAASv7E,EAAGzN,GAClC,OAAOA,EAAIlqB,SAAe,EAAJ23B,EAAQ,EAAIzN,EAAMgpF,EAASv7E,EAAGzN,EAAM,MAqI1DipF,UArFc,SAAmBC,GAEjC,IADA,IAAIlpF,EAAM,KACDjqB,EAAI,EAAGA,EAAImzG,EAAMpzG,SAAUC,EAClCiqB,IAAQ,KAAOkpF,EAAMzrF,WAAW1nB,GAAG+F,SAAS,KAAKqC,OAAO,GACzD,OAAO6hB,GAkFRmpF,QA/EY,SAAiBnpF,GAE7B,IADA,IAAIkpF,EAAQ,GACHnzG,EAAI,EAAGA,EAAIiqB,EAAIlqB,OAAQC,GAAK,EACnCmzG,GAAS9zF,OAAO0I,aAAatJ,SAASwL,EAAI7hB,MAAMpI,EAAGA,EAAI,GAAI,KAC5D,OAAOmzG,GA4ER3zF,WAxEe,SAAoB1b,GAMnC,IALA,IAAIuvG,EAAW,SAAkBloC,GAC/B,IAAIv8C,EAAIu8C,EAAMplE,SAAS,IACvB,OAAO6oB,EAAE7uB,OAAS,EAAI,IAAM6uB,EAAIA,GAE9BrN,EAAQ,KACH+xF,EAAK,EAAGA,GAAMxvG,EAAE/D,OAAQuzG,IAAM,CACrC,IAAIpzF,EAAIpc,EAAE4jB,WAAW4rF,GACrB,GAAIpzF,EAAI,IACNqB,GAAS8xF,EAASnzF,OADpB,CAIA,GAAIA,EAAI,KACNqB,GAAS8xF,EAASnzF,GAAK,EAAI,SACtB,CACL,GAAIA,EAAI,OAAUA,EAAI,MAAQ,CAC5B,KAAMozF,GAAMxvG,EAAE/D,OAAQ,OAAO,KAC7B,IAAI4nB,EAAK7jB,EAAE4jB,WAAW4rF,GACtB,GAAI3rF,EAAK,OAAUA,EAAK,MAAQ,OAAO,KAEvCpG,GAAS8xF,GADTnzF,EAAI,QAAgB,KAAJA,IAAe,KAAY,KAALyH,KACf,GAAK,KAC5BpG,GAAS8xF,EAASnzF,GAAK,GAAK,GAAK,UAGjCqB,GAAS8xF,EAASnzF,GAAK,GAAK,KAE9BqB,GAAS8xF,EAASnzF,GAAK,EAAI,GAAK,KAElCqB,GAAS8xF,EAAa,GAAJnzF,EAAS,MAE7B,OAAOqB,GA2CPxb,SAxCa,SAAkBwb,GAI/B,IAHA,IAAIzd,EAAI,GACJ9D,EAAI,EACJ03B,EAAI33B,EAAOwhB,GACRvhB,EAAI03B,GAAG,CACZ,IAAIxX,EAAI2yF,EAAGtxF,EAAOvhB,KAClB,GAAIkgB,EAAI,IAAK,CACX,GAAIA,EAAI,KAAOA,EAAI,IAAK,CACtB,GAAIlgB,GAAK03B,EAAG,OAAO,KACnBxX,GAAS,GAAJA,IAAW,EAAmB,GAAf2yF,EAAGtxF,EAAOvhB,QACzB,GAAIkgB,EAAI,KAAOA,EAAI,IAAK,CAC7B,GAAIlgB,EAAI,GAAK03B,EAAG,OAAO,KACvBxX,GAAS,GAAJA,IAAW,IAAqB,GAAf2yF,EAAGtxF,EAAOvhB,KAAY,EAAqB,GAAjB6yG,EAAGtxF,IAASvhB,OACvD,MAAIkgB,EAAI,KAAOA,EAAI,KAGnB,OAAO,KAFZ,GAAIlgB,EAAI,GAAK03B,EAAG,OAAO,KACvBxX,GAAS,EAAJA,IAAU,IAAqB,GAAf2yF,EAAGtxF,EAAOvhB,KAAY,IAAuB,GAAjB6yG,EAAGtxF,IAASvhB,KAAY,EAAqB,GAAjB6yG,EAAGtxF,IAASvhB,KAEzFA,EAEJ,GAAIkgB,GAAK,MAAQpc,GAAKub,OAAO0I,aAAa7H,OAAQ,MAAIA,GAAK,SAIpD,OAAO,KAHZA,GAAK,MACLpc,GAAKub,OAAO0I,aAAa7H,GAAK,GAAK,OACnCpc,GAAKub,OAAO0I,aAAiB,KAAJ7H,EAAY,QAGzC,OAAOpc,GAgBPyvG,WA9Ge,SAAoBxmF,GACnC,IAAI9C,EAAM8C,EAAIhnB,SAAS,IACvB,OAAOkkB,EAAIlqB,OAAS,IAAM,EAAI,KAAOkqB,EAAM,MAAQA,GA6GnDrW,SA1Ga,SAAkBqW,GAC/B,OAAOxL,SAASwL,EAAI7hB,MAAM,GAAI,KA0G9BorG,QAnGY,SAAiBrjB,GAC7B,MAAc,QAAPA,EAAe,KAAOA,EAAGpwF,OAAS,IAAM,EAAIowF,EAAK,MAAQA,EAAG/nF,MAAM,IAmGzEqrG,MAhGU,SAAetjB,GACzB,MAAiB,MAAVA,EAAG,GAAa,KAAOA,EAAG/nF,MAAM,GAAK+nF,GAgG5Cnd,UAAWA,EACXxlD,QAASA,EACTkmF,eAxHmB,SAAwB7zG,GAC3C,OAAOmzE,EAAU,GAAG5qE,MAAM/D,KAAKxE,EAAK,KAwHpC8zG,aA7HiB,SAAsB1pF,GACvC,OAAO,IAAI9I,WAAWqM,EAAQvD,yBCtChC,IAAIm5E,EAAY,mBAAmBp6E,MAAM,IACrC4qF,EAAiB,CAAC,EAAG,IAAK,MAAO,UACjCvQ,EAAQ,CAAC,EAAG,EAAG,GAAI,IACnBC,EAAK,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WAAY,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAAG,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAAO,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WAAY,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,YA4GrYp/F,EAAI,SAAWJ,GACjB,IAAI62B,EAAGjD,EAAG3zB,EAAG4gG,EAAI33D,EAAIrlB,EAAIi9E,EAAIC,EAAIC,EAAIC,EAAIC,EAAI50D,EAAI60D,EAAIlxE,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIwvE,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAEhS,IAAK1jG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4gG,EAAK7gG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCkpC,EAAKlpC,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC6jB,EAAK7jB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC8gG,EAAK9gG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC+gG,EAAK/gG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCghG,EAAKhhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCihG,EAAKjhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCkhG,EAAKlhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAItC62B,GAHAyV,EAAKtsC,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG5B6jB,GAAM,EAAIi9E,IAAO,IAC3BltE,GAHAutE,EAAKnhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG5B8gG,GAAM,EAAIj9E,IAAO,IAC3B7jB,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIgqE,GAAME,GAAM,EAAIC,IAAO,IAC3BptE,EAAIsV,GAAM83D,GAAM,EAAID,IAAO,IAC3B/gG,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIhT,GAAMo9E,GAAM,EAAIC,IAAO,IAC3BttE,EAAIktE,GAAMI,GAAM,EAAID,IAAO,IAC3BjhG,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIkqE,GAAMz0D,GAAM,EAAI60D,IAAO,IAC3BvtE,EAAIotE,GAAMG,GAAM,EAAI70D,IAAO,IAC3BtsC,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIoqE,GAAMJ,GAAM,EAAI33D,IAAO,IAC3BtV,EAAIstE,GAAMh4D,GAAM,EAAI23D,IAAO,IAC3B7gG,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EAET3D,EAAKjwB,EAAE,GACPowB,EAAKpwB,EAAE,GACP0iG,EAAM1iG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7B2iG,EAAM3iG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7BwhG,EAAMxhG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7ByhG,EAAMzhG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7BwjG,GAAMxjG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7ByjG,GAAMzjG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7BsiG,EAAMtiG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9BuiG,EAAMviG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9B8hG,EAAM9hG,EAAE,IAAM,EAAIA,EAAE,KAAO,GAC3B+hG,EAAM/hG,EAAE,IAAM,EAAIA,EAAE,KAAO,GAC3BuwB,EAAKvwB,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC7B0wB,EAAK1wB,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC7B4iG,EAAM5iG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9B6iG,EAAM7iG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9B0hG,EAAM1hG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9B2hG,EAAM3hG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9B0jG,GAAM1jG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7B2jG,GAAM3jG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7BkjG,GAAMljG,EAAE,IAAM,GAAKA,EAAE,KAAO,EAC5BmjG,GAAMnjG,EAAE,IAAM,GAAKA,EAAE,KAAO,EAC5BgiG,EAAMhiG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7BiiG,EAAMjiG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7B6wB,EAAK7wB,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC7BgxB,EAAKhxB,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC7B8iG,EAAM9iG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9B+iG,EAAM/iG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9B4hG,EAAM5hG,EAAE,KAAO,GAAKA,EAAE,MAAQ,EAC9B6hG,EAAM7hG,EAAE,KAAO,GAAKA,EAAE,MAAQ,EAC9BohG,EAAMphG,EAAE,IAAM,GAAKA,EAAE,KAAO,EAC5BqhG,EAAMrhG,EAAE,IAAM,GAAKA,EAAE,KAAO,EAC5BojG,GAAMpjG,EAAE,KAAO,GAAKA,EAAE,MAAQ,EAC9BqjG,GAAMrjG,EAAE,KAAO,GAAKA,EAAE,MAAQ,EAC9BkiG,EAAMliG,EAAE,KAAO,GAAKA,EAAE,MAAQ,EAC9BmiG,EAAMniG,EAAE,KAAO,GAAKA,EAAE,MAAQ,EAC9BmxB,EAAKnxB,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC7BsxB,EAAKtxB,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC7BgjG,EAAMhjG,EAAE,KAAO,GAAKA,EAAE,MAAQ,EAC9BijG,GAAMjjG,EAAE,KAAO,GAAKA,EAAE,MAAQ,EAC9BwiG,EAAMxiG,EAAE,IAAM,GAAKA,EAAE,KAAO,EAC5ByiG,EAAMziG,EAAE,IAAM,GAAKA,EAAE,KAAO,EAC5BshG,EAAMthG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9BuhG,EAAMvhG,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC9BsjG,GAAMtjG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7BujG,GAAMvjG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7BoiG,EAAMpiG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7BqiG,EAAMriG,EAAE,KAAO,EAAIA,EAAE,MAAQ,GAC7ByxB,EAAKzxB,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAC7B4xB,EAAK5xB,EAAE,KAAO,GAAKA,EAAE,MAAQ,GAE7BA,EAAE,GAAKiwB,GAAMM,EAAKM,EAClB7wB,EAAE,GAAKowB,GAAMM,EAAKM,EAClBhxB,EAAE,IAAMohG,GAAOE,EAAME,EACrBxhG,EAAE,IAAMqhG,GAAOE,EAAME,EACrBzhG,EAAE,IAAM8hG,GAAOE,EAAME,EACrBliG,EAAE,IAAM+hG,GAAOE,EAAME,EACrBniG,EAAE,IAAMwiG,GAAOE,EAAME,EACrB5iG,EAAE,IAAMyiG,GAAOE,EAAME,EACrB7iG,EAAE,IAAMkjG,IAAOE,GAAME,GACrBtjG,EAAE,IAAMmjG,IAAOE,GAAME,GACrBvjG,EAAE,GAAKuwB,GAAMM,EAAKM,EAClBnxB,EAAE,GAAK0wB,GAAMM,EAAKM,EAClBtxB,EAAE,IAAMshG,GAAOE,EAAME,EACrB1hG,EAAE,IAAMuhG,GAAOE,EAAME,EACrB3hG,EAAE,IAAMgiG,GAAOE,EAAME,EACrBpiG,EAAE,IAAMiiG,GAAOE,EAAME,EACrBriG,EAAE,IAAM0iG,GAAOE,EAAME,EACrB9iG,EAAE,IAAM2iG,GAAOE,EAAME,EACrB/iG,EAAE,IAAMojG,IAAOE,GAAME,GACrBxjG,EAAE,IAAMqjG,IAAOE,GAAME,GACrBzjG,EAAE,GAAK6wB,GAAMM,EAAKM,EAClBzxB,EAAE,GAAKgxB,GAAMM,EAAKM,EAClB5xB,EAAE,IAAMwhG,GAAOE,EAAME,EACrB5hG,EAAE,IAAMyhG,GAAOE,EAAME,EACrB7hG,EAAE,IAAMkiG,GAAOE,EAAME,EACrBtiG,EAAE,IAAMmiG,GAAOE,EAAME,EACrBviG,EAAE,IAAM4iG,GAAOE,EAAME,EACrBhjG,EAAE,IAAM6iG,GAAOE,EAAME,GACrBjjG,EAAE,IAAMsjG,IAAOE,GAAME,GACrB1jG,EAAE,IAAMujG,IAAOE,GAAME,GACrB3jG,EAAE,GAAKmxB,GAAMM,EAAKxB,EAClBjwB,EAAE,GAAKsxB,GAAMM,EAAKxB,EAClBpwB,EAAE,IAAM0hG,GAAOE,EAAMR,EACrBphG,EAAE,IAAM2hG,GAAOE,EAAMR,EACrBrhG,EAAE,IAAMoiG,GAAOE,EAAMR,EACrB9hG,EAAE,IAAMqiG,GAAOE,EAAMR,EACrB/hG,EAAE,IAAM8iG,GAAOE,EAAMR,EACrBxiG,EAAE,IAAM+iG,GAAOE,GAAMR,EACrBziG,EAAE,IAAMwjG,IAAOE,GAAMR,GACrBljG,EAAE,IAAMyjG,IAAOE,GAAMR,GACrBnjG,EAAE,GAAKyxB,GAAMxB,EAAKM,EAClBvwB,EAAE,GAAK4xB,GAAMxB,EAAKM,EAClB1wB,EAAE,IAAM4hG,GAAOR,EAAME,EACrBthG,EAAE,IAAM6hG,GAAOR,EAAME,EACrBvhG,EAAE,IAAMsiG,GAAOR,EAAME,EACrBhiG,EAAE,IAAMuiG,GAAOR,EAAME,EACrBjiG,EAAE,IAAMgjG,GAAOR,EAAME,EACrB1iG,EAAE,IAAMijG,IAAOR,EAAME,EACrB3iG,EAAE,IAAM0jG,IAAOR,GAAME,GACrBpjG,EAAE,IAAM2jG,IAAOR,GAAME,GAErBrjG,EAAE,IAAMw/F,EAAGv/F,GACXD,EAAE,IAAMw/F,EAAGv/F,EAAI,IAIf8vG,EAAS,SAAgBj9F,GAC3B,OAAO,SAAUyQ,GACf,IAAIlZ,EACJ,GAAwB,OAApBkZ,EAAIjf,MAAM,EAAG,GAAa,CAC5B+F,EAAM,GACN,IAAK,IAAInO,EAAI,EAAG03B,EAAIrQ,EAAItnB,OAAQC,EAAI03B,EAAG13B,GAAK,EAC1CmO,EAAI3L,KAAKic,SAAS4I,EAAIjf,MAAMpI,EAAGA,EAAI,GAAI,UAGzCmO,EAAMkZ,EAER,OA9RS,SAAgBtH,EAAO7G,GAYlC,IAXA,IAQIkL,EARArkB,EAASmZ,EAAQnZ,OACjBkkG,EAASlkF,EAAMkkF,OACfG,EAAYrkF,EAAMokF,YAAc,EAChCA,EAAapkF,EAAMokF,WACnBE,EAAetkF,EAAMskF,aACrBvgG,EAAIic,EAAMjc,EACV4M,EAAQ,EAKLA,EAAQ3Q,GAAQ,CACrB,GAAIggB,EAAMmkF,MAGR,IAFAnkF,EAAMmkF,OAAQ,EACdD,EAAO,GAAKlkF,EAAMjS,MACb9N,EAAI,EAAGA,EAAImkG,EAAa,IAAKnkG,EAChCikG,EAAOjkG,GAAK,EAGhB,GAAuB,kBAAZkZ,EACT,IAAKlZ,EAAI+f,EAAM8M,MAAOnc,EAAQ3Q,GAAUC,EAAIokG,IAAa1zF,EACvDuzF,EAAOjkG,GAAK,IAAMkZ,EAAQxI,IAAU2yF,EAAY,EAANrjG,UAG5C,IAAKA,EAAI+f,EAAM8M,MAAOnc,EAAQ3Q,GAAUC,EAAIokG,IAAa1zF,GACvD0T,EAAOlL,EAAQwO,WAAWhX,IACf,IACTuzF,EAAOjkG,GAAK,IAAMokB,GAAQi/E,EAAY,EAANrjG,KACvBokB,EAAO,MAChB6/E,EAAOjkG,GAAK,KAAO,IAAOokB,GAAQ,IAAMi/E,EAAY,EAANrjG,KAC9CikG,EAAOjkG,GAAK,KAAO,IAAc,GAAPokB,IAAgBi/E,EAAY,EAANrjG,MACvCokB,EAAO,OAAUA,GAAQ,OAClC6/E,EAAOjkG,GAAK,KAAO,IAAOokB,GAAQ,KAAOi/E,EAAY,EAANrjG,KAC/CikG,EAAOjkG,GAAK,KAAO,IAAOokB,GAAQ,EAAI,KAASi/E,EAAY,EAANrjG,KACrDikG,EAAOjkG,GAAK,KAAO,IAAc,GAAPokB,IAAgBi/E,EAAY,EAANrjG,OAEhDokB,EAAO,QAAmB,KAAPA,IAAiB,GAAmC,KAA9BlL,EAAQwO,aAAahX,IAC9DuzF,EAAOjkG,GAAK,KAAO,IAAOokB,GAAQ,KAAOi/E,EAAY,EAANrjG,KAC/CikG,EAAOjkG,GAAK,KAAO,IAAOokB,GAAQ,GAAK,KAASi/E,EAAY,EAANrjG,KACtDikG,EAAOjkG,GAAK,KAAO,IAAOokB,GAAQ,EAAI,KAASi/E,EAAY,EAANrjG,KACrDikG,EAAOjkG,GAAK,KAAO,IAAc,GAAPokB,IAAgBi/E,EAAY,EAANrjG,MAKtD,GADA+f,EAAMwkF,cAAgBvkG,EAClBA,GAAKokG,EAAW,CAGlB,IAFArkF,EAAM8M,MAAQ7sB,EAAIokG,EAClBrkF,EAAMjS,MAAQm2F,EAAOE,GAChBnkG,EAAI,EAAGA,EAAImkG,IAAcnkG,EAC5B8D,EAAE9D,IAAMikG,EAAOjkG,GAEjBkE,EAAEJ,GACFic,EAAMmkF,OAAQ,OAEdnkF,EAAM8M,MAAQ7sB,EAOlB,GADAikG,GADAjkG,EAAI+f,EAAMwkF,gBACE,IAAMqP,EAAmB,EAAJ5zG,GAC7B+f,EAAMwkF,gBAAkBH,EAE1B,IADAH,EAAO,GAAKA,EAAOE,GACdnkG,EAAI,EAAGA,EAAImkG,EAAa,IAAKnkG,EAChCikG,EAAOjkG,GAAK,EAIhB,IADAikG,EAAOE,EAAa,IAAM,WACrBnkG,EAAI,EAAGA,EAAImkG,IAAcnkG,EAC5B8D,EAAE9D,IAAMikG,EAAOjkG,GAEjBkE,EAAEJ,GAOF,IAJA,IAGIgK,EAHAmc,EAAM,GACNjqB,EAAI,EACJ+mB,EAAI,EAEDA,EAAIs9E,GAAc,CACvB,IAAKrkG,EAAI,EAAGA,EAAImkG,GAAcp9E,EAAIs9E,IAAgBrkG,IAAK+mB,EACrDjZ,EAAQhK,EAAE9D,GACViqB,GAAOm5E,EAAUt1F,GAAS,EAAI,IAAQs1F,EAAkB,GAARt1F,GAAgBs1F,EAAUt1F,GAAS,GAAK,IAAQs1F,EAAUt1F,GAAS,EAAI,IAAQs1F,EAAUt1F,GAAS,GAAK,IAAQs1F,EAAUt1F,GAAS,GAAK,IAAQs1F,EAAUt1F,GAAS,GAAK,IAAQs1F,EAAUt1F,GAAS,GAAK,IAErPiZ,EAAIo9E,IAAe,IACrBjgG,EAAEJ,GACF9D,EAAI,GAGR,MAAO,KAAOiqB,EAqMLgpB,CA5SE,SAAgBr8B,GAC3B,MAAO,CACLqtF,OAAQ,GACRC,OAAO,EACPp2F,MAAO,EACP+e,MAAO,EACPs3E,WAAY,MAAQvtF,GAAQ,IAAM,EAClCytF,aAAcztF,GAAQ,EACtB9S,GAAaA,EAEX,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GADrB,GAAGmK,OAAOnK,EAAGA,EAAGA,EAAGA,EAAGA,KAD5B,IAAUA,EAoSC6/F,CAAO/sF,GAAazI,KAItCxO,EAAOC,QAAU,CACfuZ,UAAW06F,EAAO,KAClBC,UAAWD,EAAO,KAClBE,WAAYF,EAAO,KACnBG,WAAYH,EAAO,6BCjVrB,IAAMI,EAASrqG,EAAQ,OACjBsqG,EAAiBtqG,EAAQ,MAARA,GAKvB,SAASuiG,EAAShL,GACH5/F,KACR4yG,gBAAkBhT,EAkEzB,SAASiT,EAAcpQ,GACrB,OAAO,WACL,IAAM1jG,EAAOiB,KACTC,EAAO,GAAG4G,MAAM/D,KAAK5C,WACrB4mD,EAAK7mD,EAAK63C,MACd/4C,EAAKgiG,UAAU,CACb90C,OAAQw2C,EACRrmF,OAAQnc,GACP6mD,IAIP,SAASgsD,EAA8BC,EAAUtQ,GAC/C,OAAO,WACL,IAAM1jG,EAAOiB,KACTC,EAAO,GAAG4G,MAAM/D,KAAK5C,WACrB4mD,EAAK7mD,EAAK63C,MAEV73C,EAAKzB,OAASu0G,GAAU9yG,EAAKgB,KAAK,UACtClC,EAAKgiG,UAAU,CACb90C,OAAQw2C,EACRrmF,OAAQnc,GACP6mD,IA7FP1oD,EAAOC,QAAUusG,EAajBA,EAASxpG,UAAU4xG,WAAsCF,EAA8B,EAAG,kBAC1FlI,EAASxpG,UAAU0iF,QAAsCgvB,EAA8B,EAAG,eAC1FlI,EAASxpG,UAAU6xG,oBAAsCH,EAA8B,EAAG,2BAC1FlI,EAASxpG,UAAU8xG,aAAsCJ,EAA8B,EAAG,oBAC1FlI,EAASxpG,UAAU0B,KAAsCgwG,EAA8B,EAAG,YAE1FlI,EAASxpG,UAAU+xG,gBAAsCN,EAAc,uBACvEjI,EAASxpG,UAAUgyG,QAAsCP,EAAc,eACvEjI,EAASxpG,UAAUiyG,SAAsCR,EAAc,gBACvEjI,EAASxpG,UAAUkyG,OAAsCT,EAAc,cACvEjI,EAASxpG,UAAUmyG,SAAsCV,EAAc,gBACvEjI,EAASxpG,UAAU+V,SAAsC07F,EAAc,gBACvEjI,EAASxpG,UAAUoyG,SAAsCX,EAAc,gBACvEjI,EAASxpG,UAAU2K,YAAsC8mG,EAAc,mBACvEjI,EAASxpG,UAAUqyG,+BAAsCZ,EAAc,sCACvEjI,EAASxpG,UAAUsyG,iCAAsCb,EAAc,wCACvEjI,EAASxpG,UAAUuyG,yBAAsCd,EAAc,gCACvEjI,EAASxpG,UAAUwyG,2BAAsCf,EAAc,kCACvEjI,EAASxpG,UAAUyxC,KAAsCggE,EAAc,YACvEjI,EAASxpG,UAAUyyG,gBAAsChB,EAAc,uBACvEjI,EAASxpG,UAAU0yG,mBAAsCjB,EAAc,0BACvEjI,EAASxpG,UAAU2yG,YAAsClB,EAAc,mBACvEjI,EAASxpG,UAAU4yG,eAAsCnB,EAAc,sBACvEjI,EAASxpG,UAAU6yG,iBAAsCpB,EAAc,wBACvEjI,EAASxpG,UAAU8yG,qBAAsCrB,EAAc,4BACvEjI,EAASxpG,UAAU+yG,kCAAsCtB,EAAc,yCACvEjI,EAASxpG,UAAUgzG,oCAAsCvB,EAAc,2CACvEjI,EAASxpG,UAAUizG,sBAAsCxB,EAAc,6BACvEjI,EAASxpG,UAAUkzG,4BAAsCzB,EAAc,mCACvEjI,EAASxpG,UAAUmzG,8BAAsC1B,EAAc,qCACvEjI,EAASxpG,UAAUozG,aAAsC3B,EAAc,oBACvEjI,EAASxpG,UAAUqzG,WAAsC5B,EAAc,kBACvEjI,EAASxpG,UAAUszG,gBAAsC7B,EAAc,uBACvEjI,EAASxpG,UAAUuzG,eAAsC9B,EAAc,sBACvEjI,EAASxpG,UAAUwzG,UAAsC/B,EAAc,iBACvEjI,EAASxpG,UAAUkoG,eAAsCuJ,EAAc,sBACvEjI,EAASxpG,UAAUooG,4BAAsCqJ,EAAc,mCACvEjI,EAASxpG,UAAU4oG,gBAAsC6I,EAAc,uBACvEjI,EAASxpG,UAAUwoG,iBAAsCiJ,EAAc,wBACvEjI,EAASxpG,UAAU0oG,cAAsC+I,EAAc,qBACvEjI,EAASxpG,UAAUgqG,QAAsCyH,EAAc,eACvEjI,EAASxpG,UAAUyzG,QAAsChC,EAAc,eACvEjI,EAASxpG,UAAU0zG,WAAsCjC,EAAc,kBACvEjI,EAASxpG,UAAU2zG,eAAsClC,EAAc,sBAIvEjI,EAASxpG,UAAU2/F,UAAY,SAASp4F,EAAMm+C,GAC5C,IAoCqBp2C,EApCR1Q,KACR4yG,gBAAgB7R,WAmCArwF,EAnCwB/H,EAoCtC+pG,EAAO,CAEZhyD,GAAIiyD,IACJ9R,QAAS,MACTzkF,OAAQ,IAEP1L,KA1CiD,SAAStQ,EAAK40G,GAEhE,IADK50G,GAAO40G,EAASr1G,QAAOS,EAAM,IAAI8K,MAAM,0BAA0B8pG,EAASr1G,MAAMgY,UACjFvX,EAAK,OAAO0mD,EAAG1mD,GACnB0mD,EAAG,KAAMkuD,EAAS1xG,kCCpEtB,IAAM2xG,EAAU5sG,EAAQ,OAClB6sG,EAAS7sG,EAAQ,OA2EvB,SAAS8sG,EAAmBC,GAC1B,IAAMz1G,EAAQ,IAAIuL,MAAM,yCACxB,GAAyB,kBAAdkqG,IAA2BA,EAAU52G,OAAQ,MAAMmB,EAE9D,IAAM+Q,EAAO0kG,EAAU5pG,KAAI,SAAU/I,GACnC,MAAkB,UAAXA,EAAEyP,KAAmB+iG,EAAQ7iG,SAAS3P,EAAE/C,OAAS+C,EAAE/C,SAEtDinB,EAAQyuF,EAAU5pG,KAAI,SAAU/I,GAAK,OAAOA,EAAEyP,QAC9CmjG,EAASD,EAAU5pG,KAAI,SAAU/I,GACrC,IAAKA,EAAEqE,KAAM,MAAMnH,EACnB,OAAO8C,EAAEyP,KAAO,IAAMzP,EAAEqE,QAG1B,OAAOouG,EAAOI,aACZ,CAAC,UAAW,WACZ,CACEJ,EAAOI,aAAa,IAAI32G,MAAMy2G,EAAU52G,QAAQ8mC,KAAK,UAAW+vE,GAChEH,EAAOI,aAAa3uF,EAAOjW,KAKjC,SAASqmC,EAAiB/mC,EAAM6mC,GAC9B,IAAM/V,EAAYm0E,EAAQ7iG,SAASykC,GAC7B0+D,EAAYN,EAAQO,WAAW10E,GACrC,OAAOm0E,EAAQl9F,UAAU/H,EAAMulG,EAAUjnG,EAAGinG,EAAUtjG,EAAGsjG,EAAUhzG,GAGrE,SAASkzG,EAAiBC,GACxB,IAAM/9F,EAAUs9F,EAAQ7iG,SAASsjG,EAAUhlG,MAE3C,OAAOqmC,EADSk+D,EAAQU,oBAAoBh+F,GACX+9F,EAAU7+D,KAI7C,SAAS++D,EAAelrF,EAAQlsB,GAE9B,IADA,IAAIq3G,EAAW,GAAKnrF,EACbmrF,EAASr3G,OAASA,GACvBq3G,EAAW,IAAMA,EAEnB,OAAOA,EAjHTz3G,EAAOC,QAAU,CAEfy3G,UAAW,SAAUxnG,EAAG2D,EAAG1P,GACzB,IAAMwzG,EAAOd,EAAQe,WAAW/jG,GAC1BgkG,EAAOhB,EAAQe,WAAWzzG,GAC1B2zG,EAAOjB,EAAQkB,YAAY7nG,GAC3B8nG,EAAOR,EAAcX,EAAQoB,WAAWN,GAAMvxG,SAAS,OAAQ,IAC/D8xG,EAAOV,EAAcX,EAAQoB,WAAWJ,GAAMzxG,SAAS,OAAQ,IAC/D+xG,EAAOtB,EAAQuB,eAAevB,EAAQ9N,SAAS+O,IACrD,OAAOjB,EAAQwB,aAAaL,EAAK1pG,OAAO4pG,EAAMC,IAAO/xG,SAAS,QAGhE0hB,UAAW,SAAUjM,GACnB,GAAKA,EAAL,CAEA,GAAqB,kBAAVA,EAAoB,CAC7B,IAAMk2C,EAAS8kD,EAAQ7iG,SAAS6H,GAChCA,EAAQg7F,EAAQz/F,YAAY26C,GAG9B,GAAqB,kBAAVl2C,EAAoB,CAC7B,IAAIrN,EAAM,iEAEV,MAAM,IAAI1B,MADV0B,GAAO,oBAAuBqN,EAAS,KAAOA,GAIhD,OAAOg7F,EAAQwB,aAAax8F,EAAMuN,iBAGpCkvF,aAAc,SAAUpiG,EAAYohG,GAClC,IAAI/9F,EAAUs9F,EAAQ7iG,SAASsjG,EAAUhlG,MACrCkE,EAAUqgG,EAAQU,oBAAoBh+F,GACtCk/B,EAAMo+D,EAAQngG,OAAOF,EAASN,GAElC,OADiB2gG,EAAQz/F,YAAYxV,KAAK81G,UAAUj/D,EAAIvoC,EAAGuoC,EAAI5kC,EAAG4kC,EAAIt0C,KAIxEo0G,yBAA0B,SAAUjB,GAClC,IAAMxhG,EAAYuhG,EAAgBC,GAC5BkB,EAAS3B,EAAQ5gG,gBAAgBH,GAEvC,OADkB+gG,EAAQz/F,YAAYohG,IAIxCC,iBAAkB,SAAUnB,GAE1B,MAAO,KADWD,EAAgBC,GACVlxG,SAAS,QAGnC2wG,mBAAoB,SAAUC,GAC5B,IAAM0B,EAAa3B,EAAmBC,GACtC,OAAOH,EAAQz/F,YAAYshG,IAG7BC,cAAe,SAAUziG,EAAYohG,GACnC,IAAM9gG,EAAUugG,EAAmBO,EAAUhlG,MACvCmmC,EAAMo+D,EAAQngG,OAAOF,EAASN,GACpC,OAAO2gG,EAAQz/F,YAAYxV,KAAK81G,UAAUj/D,EAAIvoC,EAAGuoC,EAAI5kC,EAAG4kC,EAAIt0C,KAG9Dy0G,sBAAuB,SAAUtB,GAC/B,IACMxhG,EAAY6iC,EADFo+D,EAAmBO,EAAUhlG,MACDglG,EAAU7+D,KAChD+/D,EAAS3B,EAAQ5gG,gBAAgBH,GACvC,OAAO+gG,EAAQz/F,YAAYohG,yCCjE/B,IAAI3wG,EAA4B,oBAAX7D,QAAoD,kBAApBA,OAAOC,SAAwB,SAAUqB,GAAO,cAAcA,GAAS,SAAUA,GAAO,OAAOA,GAAyB,oBAAXtB,QAAyBsB,EAAID,cAAgBrB,QAAUsB,IAAQtB,OAAOhB,UAAY,gBAAkBsC,GAElQuzG,EAAW5uG,EAAQ,MACnB6uG,EAAYD,EAASC,UACrBC,EAAYF,EAASE,UACrBx5E,EAAOs5E,EAASr/F,UAChB26F,EAAY0E,EAAS1E,UAErBpkB,EAAY9lF,EAAQ,OACpB8hB,EAAS9hB,EAAQ,OACjB+uG,EAAM/uG,EAAQ,OACd6D,EAAK7D,EAAQ,OACb+sE,EAAa/sE,EAAQ,OACrB0H,EAAS1H,EAAAA,OAAAA,OACbzG,OAAOwP,OAAO/S,EAASgK,EAAQ,QAM/BhK,EAAQg5G,YAAc,IAAInrG,EAAG,mEAAoE,IAMjG7N,EAAQi5G,WAAa,IAAIprG,EAAG,oEAAqE,IAMjG7N,EAAQk5G,iBAAmB,mEAC3Bl5G,EAAQm5G,YAAcn5G,EAAQk5G,iBAM9Bl5G,EAAQo5G,eAAiB1nG,EAAOhL,KAAK1G,EAAQk5G,iBAAkB,OAC/Dl5G,EAAQq5G,UAAYr5G,EAAQo5G,eAM5Bp5G,EAAQs5G,sBAAwB,mEAChCt5G,EAAQu5G,iBAAmBv5G,EAAQs5G,sBAMnCt5G,EAAQw5G,oBAAsB9nG,EAAOhL,KAAK1G,EAAQs5G,sBAAuB,OACzEt5G,EAAQy5G,eAAiBz5G,EAAQw5G,oBAMjCx5G,EAAQ05G,gBAAkB,mEAC1B15G,EAAQ25G,WAAa35G,EAAQ05G,gBAM7B15G,EAAQ45G,cAAgBloG,EAAOhL,KAAK1G,EAAQ05G,gBAAiB,OAC7D15G,EAAQ65G,SAAW75G,EAAQ45G,cAM3B55G,EAAQ6N,GAAKA,EAMb7N,EAAQ+4G,IAAMA,EAMd/4G,EAAQ8vF,UAAYA,EAQpB9vF,EAAQ2uB,MAAQ,SAAUhN,GACxB,OAAOjQ,EAAO44D,YAAY3oD,GAAOslB,KAAK,IAQxCjnC,EAAQ85G,YAAc,WACpB,IACIA,EAAc95G,EAAQ2uB,MADN,IAEpB,OAAO3uB,EAAQmX,YAAY2iG,IAY7B95G,EAAQ8c,cAAgB9c,EAAQ+5G,UAAY,SAAUxrG,EAAKpO,EAAQmtB,GACjE,IAAI1X,EAAM5V,EAAQ2uB,MAAMxuB,GAExB,OADAoO,EAAMvO,EAAQ+T,SAASxF,GACnB+e,EACE/e,EAAIpO,OAASA,GACfoO,EAAIuE,KAAK8C,GACFA,GAEFrH,EAAI/F,MAAM,EAAGrI,GAEhBoO,EAAIpO,OAASA,GACfoO,EAAIuE,KAAK8C,EAAKzV,EAASoO,EAAIpO,QACpByV,GAEFrH,EAAI/F,OAAOrI,IAWtBH,EAAQg6G,eAAiB,SAAUzrG,EAAKpO,GACtC,OAAOH,EAAQ+5G,UAAUxrG,EAAKpO,GAAQ,IAQxCH,EAAQ4yE,MAAQ5yE,EAAQmiC,WAAa,SAAUx/B,GAG7C,IADA,IAAIgwD,GADJhwD,EAAI3C,EAAQm4G,eAAex1G,IACb,GACPA,EAAExC,OAAS,GAA0B,MAArBwyD,EAAMxsD,YAE3BwsD,GADAhwD,EAAIA,EAAE6F,MAAM,IACF,GAEZ,OAAO7F,GAMT3C,EAAQ+T,SAAW,SAAU9D,GAC3B,IAAKyB,EAAO6J,SAAStL,GACnB,GAAI3P,MAAME,QAAQyP,GAChBA,EAAIyB,EAAOhL,KAAKuJ,QACX,GAAiB,kBAANA,EAEdA,EADEjQ,EAAQipB,YAAYhZ,GAClByB,EAAOhL,KAAK1G,EAAQi6G,UAAUj6G,EAAQm4G,eAAeloG,IAAK,OAE1DyB,EAAOhL,KAAKuJ,QAEb,GAAiB,kBAANA,EAChBA,EAAIjQ,EAAQoS,YAAYnC,QACnB,GAAU,OAANA,QAAoBjO,IAANiO,EACvBA,EAAIyB,EAAO44D,YAAY,QAClB,GAAIz8D,EAAGZ,KAAKgD,GACjBA,EAAIA,EAAE6f,YAAYpe,OACb,KAAIzB,EAAE2d,QAIX,MAAM,IAAI/gB,MAAM,gBAFhBoD,EAAIyB,EAAOhL,KAAKuJ,EAAE2d,WAKtB,OAAO3d,GASTjQ,EAAQ83G,YAAc,SAAUliG,GAC9B,OAAO,IAAI/H,EAAG7N,EAAQ+T,SAAS6B,IAAM5B,YAQvChU,EAAQmX,YAAc,SAAUvB,GAE9B,MAAO,MADPA,EAAM5V,EAAQ+T,SAAS6B,IACLzP,SAAS,QAQ7BnG,EAAQ23G,WAAa,SAAUxqF,GAC7B,OAAO,IAAItf,EAAGsf,GAAKhH,SAAS,MAQ9BnmB,EAAQg4G,WAAa,SAAU7qF,GAC7B,OAAOzb,EAAOhL,KAAKymB,EAAIjH,OAAO,KAAK0H,YASrC5tB,EAAQi0G,OAAS,SAAUtxG,EAAGqU,GAI5B,OAHArU,EAAI3C,EAAQ+T,SAASpR,GAChBqU,IAAMA,EAAO,KAEVA,GACN,KAAK,IAED,OAAO6hG,EAAUl2G,GAErB,KAAK,IAED,OAAO28B,EAAK38B,GAEhB,KAAK,IAED,OAAOm2G,EAAUn2G,GAErB,KAAK,IAED,OAAOuxG,EAAUvxG,GAErB,QAEI,MAAM,IAAIkK,MAAM,2BAA6BmK,KAUrDhX,EAAQuZ,UAAY,SAAU5W,GAC5B,OAAO3C,EAAQi0G,OAAOtxG,IASxB3C,EAAQijC,KAAOjjC,EAAQi0G,OAOvBj0G,EAAQw8F,OAAS,SAAU75F,GAEzB,OADAA,EAAI3C,EAAQ+T,SAASpR,GACdo0E,EAAW,UAAU1jC,OAAO1wC,GAAG2wC,UASxCtzC,EAAQk6G,UAAY,SAAUv3G,EAAGgwE,GAC/BhwE,EAAI3C,EAAQ+T,SAASpR,GACrB,IAAIgP,EAAOolE,EAAW,UAAU1jC,OAAO1wC,GAAG2wC,SAC1C,OAAe,IAAXq/B,EACK3yE,EAAQ+5G,UAAUpoG,EAAM,IAExBA,GASX3R,EAAQ2a,QAAU,SAAUhY,GAC1B,OAAO3C,EAAQi0G,OAAO8E,EAAI3/F,OAAOzW,KAQnC3C,EAAQm6G,eAAiB,SAAUlkG,GACjC,OAAO65E,EAAUsqB,iBAAiBnkG,IAUpCjW,EAAQq6G,cAAgB,SAAUxkG,EAAWykG,GAC3C,OAAyB,KAArBzkG,EAAU1V,OAEL2vF,EAAUyqB,gBAAgB7oG,EAAOrD,OAAO,CAACqD,EAAOhL,KAAK,CAAC,IAAKmP,OAG/DykG,GAIExqB,EAAUyqB,gBAAgB1kG,IAUnC7V,EAAQw6G,aAAex6G,EAAQgW,gBAAkB,SAAUykG,EAAQH,GAOjE,OANAG,EAASz6G,EAAQ+T,SAAS0mG,GACtBH,GAA8B,KAAlBG,EAAOt6G,SACrBs6G,EAAS3qB,EAAU4qB,iBAAiBD,GAAQ,GAAOjyG,MAAM,IAE3DsjB,EAAyB,KAAlB2uF,EAAOt6G,QAEPH,EAAQi0G,OAAOwG,GAAQjyG,OAAO,KAQvC,IAAImyG,EAAkB36G,EAAQ26G,gBAAkB,SAAU1kG,GAGxD,OAFAA,EAAajW,EAAQ+T,SAASkC,GAEvB65E,EAAU8qB,gBAAgB3kG,GAAY,GAAOzN,MAAM,IAQ5DxI,EAAQ66G,aAAe,SAAUhlG,GAK/B,OAHyB,MADzBA,EAAY7V,EAAQ+T,SAAS8B,IACf1V,SACZ0V,EAAYi6E,EAAU4qB,iBAAiB7kG,GAAW,GAAOrN,MAAM,IAE1DqN,GAST7V,EAAQyW,OAAS,SAAUF,EAASN,GAClC,IAAIuiC,EAAMs3C,EAAUt7C,KAAKj+B,EAASN,GAE9B2Z,EAAM,GAIV,OAHAA,EAAIhc,EAAI4kC,EAAI/V,UAAUj6B,MAAM,EAAG,IAC/BonB,EAAI1rB,EAAIs0C,EAAI/V,UAAUj6B,MAAM,GAAI,IAChConB,EAAI3f,EAAIuoC,EAAIsiE,SAAW,GAChBlrF,GAWT5vB,EAAQs3G,oBAAsB,SAAUh+F,GACtC,IAAI0rE,EAAShlF,EAAQ+T,SAAS,iCAAmCuF,EAAQnZ,OAAOgG,YAChF,OAAOnG,EAAQi0G,OAAOviG,EAAOrD,OAAO,CAAC22E,EAAQ1rE,MAW/CtZ,EAAQ0Z,UAAY,SAAUnD,EAAStG,EAAG2D,EAAG1P,GAC3C,IAAIu+B,EAAY/wB,EAAOrD,OAAO,CAACrO,EAAQ+5G,UAAUnmG,EAAG,IAAK5T,EAAQ+5G,UAAU71G,EAAG,KAAM,IAChF42G,EAAW7qG,EAAI,GACnB,GAAiB,IAAb6qG,GAA+B,IAAbA,EACpB,MAAM,IAAIjuG,MAAM,6BAElB,IAAIkuG,EAAejrB,EAAU3oC,QAAQ5wC,EAASksB,EAAWq4E,GACzD,OAAOhrB,EAAU4qB,iBAAiBK,GAAc,GAAOvyG,MAAM,IAU/DxI,EAAQg7G,SAAW,SAAU/qG,EAAG2D,EAAG1P,GAEjC,GAAU,KAAN+L,GAAkB,KAANA,EACd,MAAM,IAAIpD,MAAM,uBAKlB,OAAO7M,EAAQmX,YAAYzF,EAAOrD,OAAO,CAACrO,EAAQ8c,cAAclJ,EAAG,IAAK5T,EAAQ8c,cAAc5Y,EAAG,IAAKlE,EAAQ+T,SAAS9D,EAAI,QAS7HjQ,EAAQm3G,WAAa,SAAU3+D,GAI7B,GAAmB,MAHnBA,EAAMx4C,EAAQ+T,SAASykC,IAGfr4C,OACN,MAAM,IAAI0M,MAAM,4BAGlB,IAAIoD,EAAIuoC,EAAI,IAMZ,OAJIvoC,EAAI,KACNA,GAAK,IAGA,CACLA,EAAGA,EACH2D,EAAG4kC,EAAIhwC,MAAM,EAAG,IAChBtE,EAAGs0C,EAAIhwC,MAAM,GAAI,MASrBxI,EAAQi7G,iBAAmB,SAAUhlG,GACnC,OAAOjW,EAAQgW,gBAAgB2kG,EAAgB1kG,KAQjDjW,EAAQk7G,eAAiB,SAAU7+F,GACjC,MAAQ,sBAAsB3T,KAAK2T,IAUrCrc,EAAQm7G,cAAgB,SAAU9+F,GAEhC,OADkBrc,EAAQ85G,gBACH95G,EAAQo4G,aAAa/7F,IAQ9Crc,EAAQo7G,kBAAoB,SAAU/+F,GACpCA,EAAUrc,EAAQm4G,eAAe97F,GAAS8M,cAI1C,IAHA,IAAIxX,EAAO3R,EAAQi0G,OAAO53F,GAASlW,SAAS,OACxCypB,EAAM,KAEDxvB,EAAI,EAAGA,EAAIic,EAAQlc,OAAQC,IAC9Bye,SAASlN,EAAKvR,GAAI,KAAO,EAC3BwvB,GAAOvT,EAAQjc,GAAGmpB,cAElBqG,GAAOvT,EAAQjc,GAInB,OAAOwvB,GAQT5vB,EAAQq7G,uBAAyB,SAAUh/F,GACzC,OAAOrc,EAAQk7G,eAAe7+F,IAAYrc,EAAQo7G,kBAAkB/+F,KAAaA,GASnFrc,EAAQs7G,gBAAkB,SAAU50G,EAAM+M,GAaxC,OAZA/M,EAAO1G,EAAQ+T,SAASrN,GAMtB+M,GALFA,EAAQ,IAAI5F,EAAG4F,IAELsR,SAGA,KAEArT,EAAOhL,KAAK+M,EAAMma,WAIrB5tB,EAAQ2a,QAAQ,CAACjU,EAAM+M,IAAQjL,OAAO,KAQ/CxI,EAAQu7G,cAAgB,SAAUl/F,GAChC,IAAI1Z,EAAI3C,EAAQ4yE,MAAMv2D,GACtB,OAAoB,IAAb1Z,EAAExC,QAAgBwC,EAAE,IAAM,GAAKA,EAAE,IAAM,GAQhD3C,EAAQo4G,aAAe,SAAU3wF,GAC/B,MAAmB,kBAARA,GAIJznB,EAAQw7G,cAAc/zF,GAHpBA,EAGiC,KAAOA,GAanDznB,EAAQy7G,iBAAmB,SAAUxrG,EAAG2D,EAAG1P,EAAGw3G,GAC5C,IAAIC,EAAoB,IAAI9tG,EAAG,mEAAoE,IAC/F+tG,EAAc,IAAI/tG,EAAG,mEAAoE,IAE7F,OAAiB,KAAb+F,EAAEzT,QAA8B,KAAb+D,EAAE/D,UAIf,KAAN8P,GAAkB,KAANA,KAIhB2D,EAAI,IAAI/F,EAAG+F,GACX1P,EAAI,IAAI2J,EAAG3J,KAEP0P,EAAEmR,UAAYnR,EAAErC,GAAGqqG,IAAgB13G,EAAE6gB,UAAY7gB,EAAEqN,GAAGqqG,OAIxC,IAAdF,GAA4D,IAArC,IAAI7tG,EAAG3J,GAAGqpB,IAAIouF,OAY3C37G,EAAQ67G,SAAW,SAAUC,GAC3B,GAAIpqG,EAAO6J,SAASugG,GAClB,MAAO,KAAOA,EAAG31G,SAAS,OACrB,GAAI21G,aAAcx7G,MAAO,CAE9B,IADA,IAAImhC,EAAQ,GACHrhC,EAAI,EAAGA,EAAI07G,EAAG37G,OAAQC,IAC7BqhC,EAAM7+B,KAAK5C,EAAQ67G,SAASC,EAAG17G,KAEjC,OAAOqhC,IAcXzhC,EAAQ2H,iBAAmB,SAAUjH,EAAM24C,EAAQhnC,GAiEjD,GAhEA3R,EAAKyY,IAAM,GACXzY,EAAKq7G,QAAU,GAGfr7G,EAAKmvB,OAAS,SAAU0jC,GACtB,GAAIA,EAAO,CACT,IAAIluD,EAAM,GAIV,OAHA3E,EAAKq7G,QAAQt0G,SAAQ,SAAUu0G,GAC7B32G,EAAI22G,GAAS,KAAOt7G,EAAKs7G,GAAO71G,SAAS,UAEpCd,EAET,OAAOrF,EAAQ67G,SAASl6G,KAAKwX,MAG/BzY,EAAK8Y,UAAY,WACf,OAAOu/F,EAAI3/F,OAAO1Y,EAAKyY,MAGzBkgC,EAAO5xC,SAAQ,SAAUu0G,EAAO57G,GAE9B,SAAS67G,IACP,OAAOv7G,EAAKyY,IAAI/Y,GAElB,SAAS87G,EAAOjsG,GAGY,QAF1BA,EAAIjQ,EAAQ+T,SAAS9D,IAEf9J,SAAS,QAAoB61G,EAAMG,YACvClsG,EAAIyB,EAAO44D,YAAY,IAGrB0xC,EAAMI,WAAaJ,EAAM77G,QAC3B8P,EAAIjQ,EAAQmiC,WAAWlyB,GACvB6b,EAAOkwF,EAAM77G,QAAU8P,EAAE9P,OAAQ,aAAe67G,EAAMvzG,KAAO,uBAAyBuzG,EAAM77G,OAAS,WAC1F67G,EAAMG,WAA0B,IAAblsG,EAAE9P,SAAiB67G,EAAM77G,QACvD2rB,EAAOkwF,EAAM77G,SAAW8P,EAAE9P,OAAQ,aAAe67G,EAAMvzG,KAAO,6BAA+BuzG,EAAM77G,QAGrGO,EAAKyY,IAAI/Y,GAAK6P,EAlBhBvP,EAAKq7G,QAAQn5G,KAAKo5G,EAAMvzG,MAqBxBlF,OAAOC,eAAe9C,EAAMs7G,EAAMvzG,KAAM,CACtCrF,YAAY,EACZC,cAAc,EACdmC,IAAKy2G,EACLjzG,IAAKkzG,IAGHF,EAAM5hG,UACR1Z,EAAKs7G,EAAMvzG,MAAQuzG,EAAM5hG,SAIvB4hG,EAAMK,OACR94G,OAAOC,eAAe9C,EAAMs7G,EAAMK,MAAO,CACvCj5G,YAAY,EACZC,cAAc,EACd2F,IAAKkzG,EACL12G,IAAKy2G,OAMP5pG,EASF,GARoB,kBAATA,IACTA,EAAOX,EAAOhL,KAAK1G,EAAQm4G,eAAe9lG,GAAO,QAG/CX,EAAO6J,SAASlJ,KAClBA,EAAO0mG,EAAIxgG,OAAOlG,IAGhB/R,MAAME,QAAQ6R,GAAO,CACvB,GAAIA,EAAKlS,OAASO,EAAKq7G,QAAQ57G,OAC7B,MAAM,IAAI0M,MAAM,kCAIlBwF,EAAK5K,SAAQ,SAAU8oC,EAAGnwC,GACxBM,EAAKA,EAAKq7G,QAAQ37G,IAAMJ,EAAQ+T,SAASw8B,UAEtC,IAAoE,YAA/C,qBAATl+B,EAAuB,YAAczK,EAAQyK,IAO9D,MAAM,IAAIxF,MAAM,gBANhB,IAAI1F,EAAO5D,OAAO4D,KAAKkL,GACvBgnC,EAAO5xC,SAAQ,SAAUu0G,IACW,IAA9B70G,EAAKf,QAAQ41G,EAAMvzG,QAAc/H,EAAKs7G,EAAMvzG,MAAQ4J,EAAK2pG,EAAMvzG,QAChC,IAA/BtB,EAAKf,QAAQ41G,EAAMK,SAAe37G,EAAKs7G,EAAMK,OAAShqG,EAAK2pG,EAAMK,uEC5tBzEvsB,EAAY9lF,EAAQ,OAEpBsyG,EAActyG,EAAQ,OACtBsnD,EAAMtnD,EAAQ,OAQdowG,EAAmB,SAA0BnkG,GAE/C,OAA0B,KAAtBA,EAAW9V,QAIR2vF,EAAUsqB,iBAAiB74F,WAAW7a,KAAKuP,KAkVpDlW,EAAOC,QAAU,CACfo6G,iBAAkBA,EAClBmC,iBA1UqB,SAA0BtmG,EAAY4hC,GAG3D,GAA0B,KAAtB5hC,EAAW9V,OACb,MAAM,IAAIw9D,WAAW,iCAGvB,IAAI9nD,EAAYymG,EAAYC,iBAAiBtmG,EAAY4hC,GAEzD,OAAOyZ,EAAIirD,iBAAiBtmG,EAAYJ,EAAWgiC,IAkUnD2kE,iBAxTqB,SAA0BvmG,GAI/C,GAAmB,QADnBA,EAAaq7C,EAAIkrD,iBAAiBvmG,KACe,KAAtBA,EAAW9V,QAAiBi6G,EAAiBnkG,GACtE,OAAOA,EAGT,MAAM,IAAIpJ,MAAM,oCAiThB4vG,iBAxSqB,SAA0BxmG,GAC/C,OAAOvE,EAAOhL,KAAKopF,EAAU2sB,iBAAiBl7F,WAAW7a,KAAKuP,MAwS9DymG,qBA/RyB,SAA8BzmG,GACvD,GAA0B,KAAtBA,EAAW9V,OACb,MAAM,IAAI0M,MAAM,iCAGlB,OAAO6E,EAAOhL,KAAK41G,EAAYI,qBAAqBn7F,WAAW7a,KAAKuP,MA2RpE0mG,mBAjRuB,SAA4B1mG,EAAY2mG,GAC/D,OAAOlrG,EAAOhL,KAAKopF,EAAU6sB,mBAAmBp7F,WAAW7a,KAAKuP,GAAa2mG,KAiR7EC,mBAvQuB,SAA4B5mG,EAAY2mG,GAC/D,OAAOlrG,EAAOhL,KAAKopF,EAAU+sB,mBAAmBt7F,WAAW7a,KAAKuP,GAAasL,WAAW7a,KAAKk2G,MAwQ7FhC,gBA9PoB,SAAyB3kG,EAAY4hC,GACzD,OAAOnmC,EAAOhL,KAAKopF,EAAU8qB,gBAAgBr5F,WAAW7a,KAAKuP,GAAa4hC,KA8P1E6iE,iBApPqB,SAA0B7kG,EAAWgiC,GAC1D,OAAOnmC,EAAOhL,KAAKopF,EAAU4qB,iBAAiBn5F,WAAW7a,KAAKmP,GAAYgiC,KAoP1E0iE,gBA3OoB,SAAyB1kG,GAE7C,OAAyB,KAArBA,EAAU1V,QAAsC,KAArB0V,EAAU1V,SAIlC2vF,EAAUyqB,gBAAgBh5F,WAAW7a,KAAKmP,KAsOjDinG,kBA3NsB,SAA2BjnG,EAAW+mG,EAAO/kE,GACnE,OAAOnmC,EAAOhL,KAAKopF,EAAUgtB,kBAAkBv7F,WAAW7a,KAAKmP,GAAY0L,WAAW7a,KAAKk2G,GAAQ/kE,KA2NnGklE,kBAhNsB,SAA2BlnG,EAAW+mG,EAAO/kE,GACnE,OAAOnmC,EAAOhL,KAAKopF,EAAUitB,kBAAkBx7F,WAAW7a,KAAKmP,GAAY0L,WAAW7a,KAAKk2G,GAAQ/kE,KAgNnGmlE,iBAtMqB,SAA0BC,EAAYplE,GAC3D,IAAI1wC,EAAO,GAKX,OAJA81G,EAAWx1G,SAAQ,SAAUoO,GAC3B1O,EAAKvE,KAAK2e,WAAW7a,KAAKmP,OAGrBnE,EAAOhL,KAAKopF,EAAUktB,iBAAiB71G,EAAM0wC,KAkMpDqlE,mBAzLuB,SAA4Bz6E,GACnD,OAAO/wB,EAAOhL,KAAKopF,EAAUotB,mBAAmB37F,WAAW7a,KAAK+7B,MAyLhE06E,gBAhLoB,SAAyB16E,GAC7C,OAAO/wB,EAAOhL,KAAKopF,EAAUqtB,gBAAgB57F,WAAW7a,KAAK+7B,MAgL7D26E,gBAvKoB,SAAyB36E,GAC7C,OAAO/wB,EAAOhL,KAAKopF,EAAUstB,gBAAgB77F,WAAW7a,KAAK+7B,MAuK7D46E,mBA9JuB,SAA4B56E,GAInD,GAAyB,IAArBA,EAAUtiC,OACZ,MAAM,IAAIw9D,WAAW,+BAGvB,IAAI2/C,EAAShsD,EAAI+rD,mBAAmB56E,GACpC,GAAe,OAAX66E,EACF,MAAM,IAAIzwG,MAAM,gCAGlB,OAAOyvG,EAAYc,gBAAgBE,IAmJnC9oE,KAxIS,SAAcl7B,EAASrD,EAAY2rB,GAC5C,GAAgB,OAAZA,EACF,MAAM,IAAIz/B,UAAU,+BAGtB,IAAIo7G,OAAc,EAElB,GAAI37E,EAAS,CAGX,GAFA27E,EAAc,GAEO,OAAjB37E,EAAQvvB,KACV,MAAM,IAAIlQ,UAAU,mCAGtB,GAAIy/B,EAAQvvB,KAAM,CAEhB,GAA4B,KAAxBuvB,EAAQvvB,KAAKlS,OACf,MAAM,IAAIw9D,WAAW,kCAGvB4/C,EAAYlrG,KAAO,IAAIkP,WAAWqgB,EAAQvvB,MAG5C,GAAwB,OAApBuvB,EAAQ47E,QACV,MAAM,IAAIr7G,UAAU,wCAGlBy/B,EAAQ47E,UAEVD,EAAYC,QAAU,SAAUlkG,EAASrD,EAAY+hE,EAAM3lE,EAAMorG,GAC/D,IAAIC,EAAqB,MAAR1lC,EAAetmE,EAAOhL,KAAKsxE,GAAQ,KAChD2lC,EAAqB,MAARtrG,EAAeX,EAAOhL,KAAK2L,GAAQ,KAEhDy/C,EAASpgD,EAAOhL,KAAK,IAMzB,OAJIk7B,EAAQ47E,UACV1rD,EAASlwB,EAAQ47E,QAAQ9rG,EAAOhL,KAAK4S,GAAU5H,EAAOhL,KAAKuP,GAAaynG,EAAYC,EAAYF,IAG3Fl8F,WAAW7a,KAAKorD,KAK7B,IAAItZ,EAAMs3C,EAAU8tB,UAAUr8F,WAAW7a,KAAK4S,GAAUiI,WAAW7a,KAAKuP,GAAasnG,GAErF,MAAO,CACL96E,UAAW/wB,EAAOhL,KAAK8xC,EAAI/V,WAC3Bq4E,SAAUtiE,EAAIqB,QAyFhBpF,OA7EW,SAAgBn7B,EAASmpB,EAAW5sB,GAE/C,OAAOi6E,EAAU+tB,YAAYt8F,WAAW7a,KAAK+7B,GAAYlhB,WAAW7a,KAAK4S,GAAUzD,IA4EnFsxC,QAhEY,SAAiB7tC,EAASmpB,EAAWoX,EAAOhC,GAExD,OAAOnmC,EAAOhL,KAAKopF,EAAUguB,aAAav8F,WAAW7a,KAAK+7B,GAAYoX,EAAOt4B,WAAW7a,KAAK4S,GAAUu+B,KAgEvGkmE,KAtDS,SAAcloG,EAAWI,GAElC,OAAOvE,EAAOhL,KAAKopF,EAAUiuB,KAAKx8F,WAAW7a,KAAKmP,GAAY0L,WAAW7a,KAAKuP,GAAa,MAqD3F+nG,WA1Ce,SAAoBnoG,EAAWI,EAAY4hC,GAI1D,GAAyB,KAArBhiC,EAAU1V,QAAsC,KAArB0V,EAAU1V,OACvC,MAAM,IAAIw9D,WAAW,gCAIvB,GAA0B,KAAtB1nD,EAAW9V,OACb,MAAM,IAAIw9D,WAAW,iCAGvB,OAAOjsD,EAAOhL,KAAK41G,EAAY0B,WAAWz8F,WAAW7a,KAAKmP,GAAY0L,WAAW7a,KAAKuP,GAAa4hC,gEC7VjGomE,EAAmCvsG,EAAOhL,KAAK,CAEnD,GAAM,IAAM,IAAM,EAAM,EAAM,EAAM,EAAM,GAE1C,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAE1L,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,EAAM,EAAM,GAAM,GAAM,EAAM,EAAM,GAAM,IAAM,GAAM,IAAM,GAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,EAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,EAAM,EAAM,EAAM,IAAM,GAAM,EAAM,GAAM,EAEx0B,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,IAE5Lw3G,EAAqCxsG,EAAOhL,KAAK,CAErD,GAAM,IAAM,EAAM,GAAM,EAAM,EAAM,EAAM,EAAM,GAEhD,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAE1L,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,EAAM,EAAM,GAAM,GAAM,EAAM,EAAM,GAAM,IAAM,GAAM,IAAM,GAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,EAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,EAAM,EAAM,EAAM,IAAM,GAAM,EAAM,GAAM,EAExgC,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,IAEhY1G,EAAQu8G,iBAAmB,SAAUtmG,EAAYJ,EAAWgiC,GAC1D,IAAI5yC,EAASyM,EAAOhL,KAAKmxC,EAAaomE,EAAmCC,GAGzE,OAFAjoG,EAAWnD,KAAK7N,EAAQ4yC,EAAa,EAAI,GACzChiC,EAAU/C,KAAK7N,EAAQ4yC,EAAa,IAAM,KACnC5yC,GAGTjF,EAAQw8G,iBAAmB,SAAUvmG,GACnC,IAAI9V,EAAS8V,EAAW9V,OAGpB2Q,EAAQ,EACZ,GAAI3Q,EAAS2Q,EAAQ,GAA2B,KAAtBmF,EAAWnF,GAAiB,OAAO,KAI7D,GAAI3Q,GAHJ2Q,GAAS,GAGY,KAA2B,IAApBmF,EAAWnF,IAAgB,OAAO,KAE9D,IAAIqtG,EAA2B,IAApBloG,EAAWnF,GAEtB,GAAIqtG,EAAO,GAAKA,EAAO,EAAG,OAAO,KACjC,GAAIh+G,GAFJ2Q,GAAS,GAEYqtG,EAAM,OAAO,KAGlC,IAAIj+G,EAAM+V,EAAWnF,EAAQqtG,EAAO,IAAMA,EAAO,EAAIloG,EAAWnF,EAAQqtG,EAAO,IAAM,EAAI,GAEzF,OAAIh+G,GADJ2Q,GAASqtG,GACYj+G,GAGjBC,EAAS2Q,EAAQ,GAA2B,IAAtBmF,EAAWnF,IAA6C,IAA1BmF,EAAWnF,EAAQ,IAAyC,IAA1BmF,EAAWnF,EAAQ,IAMzG3Q,GAHJ2Q,GAAS,GAGY,GAA2B,IAAtBmF,EAAWnF,IAAmBmF,EAAWnF,EAAQ,GAAK,IAAQ3Q,EAAS2Q,EAAQ,EAAImF,EAAWnF,EAAQ,GAT/F,KAa1BmF,EAAWzN,MAAMsI,EAAQ,EAAGA,EAAQ,EAAImF,EAAWnF,EAAQ,KAGpE9Q,EAAQq9G,mBAAqB,SAAU56E,GACrC,IAAI7uB,EAAIlC,EAAOI,MAAM,GAAI,GACrB5N,EAAIwN,EAAOI,MAAM,GAAI,GAErB3R,EAASsiC,EAAUtiC,OACnB2Q,EAAQ,EAGZ,GAA2B,KAAvB2xB,EAAU3xB,KACZ,OAAO,KAIT,IAAIstG,EAAU37E,EAAU3xB,KACxB,GAAc,IAAVstG,IACFttG,GAASstG,EAAU,KACPj+G,EACV,OAAO,KAKX,GAA2B,IAAvBsiC,EAAU3xB,KACZ,OAAO,KAIT,IAAI0vB,EAAOiC,EAAU3xB,KACrB,GAAW,IAAP0vB,EAAa,CAEf,GAAI1vB,GADJstG,EAAU59E,EAAO,KACKrgC,EACpB,OAAO,KAET,KAAOi+G,EAAU,GAA0B,IAArB37E,EAAU3xB,GAAiBA,GAAS,EAAGstG,GAAW,GACxE,IAAK59E,EAAO,EAAG49E,EAAU,EAAGttG,GAAS,EAAGstG,GAAW,EACjD59E,GAAQA,GAAQ,GAAKiC,EAAU3xB,GAGnC,GAAI0vB,EAAOrgC,EAAS2Q,EAClB,OAAO,KAET,IAAIutG,EAASvtG,EAIb,GAHAA,GAAS0vB,EAGkB,IAAvBiC,EAAU3xB,KACZ,OAAO,KAIT,IAAIukC,EAAO5S,EAAU3xB,KACrB,GAAW,IAAPukC,EAAa,CAEf,GAAIvkC,GADJstG,EAAU/oE,EAAO,KACKl1C,EACpB,OAAO,KAET,KAAOi+G,EAAU,GAA0B,IAArB37E,EAAU3xB,GAAiBA,GAAS,EAAGstG,GAAW,GACxE,IAAK/oE,EAAO,EAAG+oE,EAAU,EAAGttG,GAAS,EAAGstG,GAAW,EACjD/oE,GAAQA,GAAQ,GAAK5S,EAAU3xB,GAGnC,GAAIukC,EAAOl1C,EAAS2Q,EAClB,OAAO,KAET,IAAIwtG,EAASxtG,EAIb,IAHAA,GAASukC,EAGF7U,EAAO,GAA2B,IAAtBiC,EAAU47E,GAAkB79E,GAAQ,EAAG69E,GAAU,GAEpE,GAAI79E,EAAO,GACT,OAAO,KAET,IAAI+9E,EAAS97E,EAAUj6B,MAAM61G,EAAQA,EAAS79E,GAI9C,IAHA+9E,EAAOzrG,KAAKc,EAAG,GAAK2qG,EAAOp+G,QAGpBk1C,EAAO,GAA2B,IAAtB5S,EAAU67E,GAAkBjpE,GAAQ,EAAGipE,GAAU,GAEpE,GAAIjpE,EAAO,GACT,OAAO,KAET,IAAImpE,EAAS/7E,EAAUj6B,MAAM81G,EAAQA,EAASjpE,GAG9C,OAFAmpE,EAAO1rG,KAAK5O,EAAG,GAAKs6G,EAAOr+G,QAEpB,CAAEyT,EAAGA,EAAG1P,EAAGA,8DCnJhB2J,EAAK7D,EAAQ,OAGb4pC,EAAK,IAAI6B,EAFJzrC,EAAAA,MAAAA,IAEO,aACZy0G,EAAW7qE,EAAG5K,MAElBhpC,EAAQu8G,iBAAmB,SAAUtmG,EAAY4hC,GAC/C,IAAItH,EAAI,IAAI1iC,EAAGoI,GACf,GAAIs6B,EAAEhT,KAAKkhF,EAASt6G,IAAM,EACxB,MAAM,IAAI0I,MAAM,iCAGlB,IAAIq8B,EAAQ0K,EAAGnX,EAAE1kB,IAAIw4B,GACrB,OAAOmuE,EAAYx1E,EAAM4B,OAAQ5B,EAAM6B,OAAQ8M,IAGjD73C,EAAQ08G,qBAAuB,SAAUzmG,GACvC,IAAIs6E,EAAK,IAAI1iF,EAAGoI,GAChB,GAAIs6E,EAAGhzD,KAAKkhF,EAASt6G,IAAM,GAAKosF,EAAGxrE,SACjC,MAAM,IAAIlY,MAAM,gCAGlB,OAAO0jF,EAAGlzD,KAAKohF,EAASt6G,GAAG2rB,YAAYpe,EAAQ,KAAM,KAGvD1R,EAAQo9G,gBAAkB,SAAUE,GAClC,IAAI1pG,EAAI,IAAI/F,EAAGyvG,EAAO1pG,GAClBA,EAAE2pB,KAAKkhF,EAASt6G,IAAM,IACxByP,EAAI,IAAI/F,EAAG,IAGb,IAAI3J,EAAI,IAAI2J,EAAGyvG,EAAOp5G,GAKtB,OAJIA,EAAEq5B,KAAKkhF,EAASt6G,IAAM,IACxBD,EAAI,IAAI2J,EAAG,IAGN6D,EAAOrD,OAAO,CAACuF,EAAEkc,YAAYpe,EAAQ,KAAM,IAAKxN,EAAE4rB,YAAYpe,EAAQ,KAAM,OAGrF1R,EAAQg+G,WAAa,SAAUnoG,EAAWI,EAAY4hC,GACpD,IAAI3O,EAAQ0K,EAAGiC,cAAchgC,GAEzB8oG,EAAS,IAAI9wG,EAAGoI,GACpB,GAAI0oG,EAAOphF,KAAKkhF,EAASt6G,IAAM,GAAKw6G,EAAO55F,SACzC,MAAM,IAAIlY,MAAM,yCAGlB,IAAI+xG,EAAS11E,EAAM4K,IAAI/7B,IAAI4mG,GAC3B,OAAOD,EAAYE,EAAO9zE,OAAQ8zE,EAAO7zE,OAAQ8M,IAGnD,IAAI6mE,EAAc,SAAqBj1F,EAAG+N,EAAGqgB,GAC3C,IAAIhiC,OAAY,EAahB,OAXIgiC,IACFhiC,EAAYnE,EAAOI,MAAM,KACf,GAAK0lB,EAAEqF,QAAU,EAAO,EAClCpT,EAAEqG,YAAYpe,EAAQ,KAAM,IAAIoB,KAAK+C,EAAW,MAEhDA,EAAYnE,EAAOI,MAAM,KACf,GAAK,EACf2X,EAAEqG,YAAYpe,EAAQ,KAAM,IAAIoB,KAAK+C,EAAW,GAChD2hB,EAAE1H,YAAYpe,EAAQ,KAAM,IAAIoB,KAAK+C,EAAW,KAG3CA,uCCrETtS,OAAOC,eAAexD,EAAS,aAAc,CAAEqB,OAAO,IACtD,IAAMw9G,EAAU70G,EAAQ,OAKxB,SAAS80G,EAAQC,GACb,MAAqB,kBAAVA,MAGN,wBAAwBr2G,KAAKq2G,OAG9B,uBAAuBr2G,KAAKq2G,KAC5B,uBAAuBr2G,KAAKq2G,KAYpC,SAASC,EAAUD,EAAO19G,GACD,kBAAVA,GAAsBA,EAAM+D,cAAgBmc,aACnDlgB,EAAQw9G,EAAQI,WAAW59G,IAG/B,IADA,IAAMsQ,EAAOktG,EAAQtlG,UAAUlY,GAAOgf,QAAQ,KAAM,IAC3CjgB,EAAI,EAAGA,EAAI,GAAIA,GAAK,EAAG,CAE5B,IAAM8+G,GAAWrgG,SAASlN,EAAKC,OAAOxR,EAAG,GAAI,KAAO,GAChDye,SAASlN,EAAKC,OAAOxR,EAAI,EAAG,GAAI,IAChC,KAGE2hB,EAAS,GAAKm9F,EAAS,EAC7B,IAFaC,EAAeJ,EAAMj3F,WAAWi3F,EAAM5+G,OAAS,EAAIoV,KAAKoU,MAAMu1F,EAAS,KAExEn9F,KAAYA,EACpB,OAAO,EAGf,OAAO,EAOX,SAASo9F,EAAej3F,GACpB,GAAIA,GAAa,IAAMA,GAAa,GAEhC,OAAOA,EAAY,GAEvB,GAAIA,GAAa,IAAMA,GAAa,GAEhC,OAAOA,EAAY,GAEvB,GAAIA,GAAa,IAAMA,GAAa,IAEhC,OAAOA,EAAY,GAEvB,MAAM,IAAIrb,MAAM,iBA6DpB,SAASuyG,EAAQ5vG,GACb,MAAqB,kBAAVA,MAGN,uBAAuB9G,KAAK8G,OAGxB,sBAAsB9G,KAAK8G,KAChC,sBAAsB9G,KAAK8G,KAUnC,SAAS6vG,EAAUhjG,GACf,MAAuB,kBAAZA,MAGPA,EAAQsC,MAAM,6BAGdtC,EAAQsC,MAAM,mCAlItB3e,EAAQ8+G,QAAUA,EA0BlB9+G,EAAQg/G,UAAYA,EA0CpBh/G,EAAQs/G,6BAhBR,SAAsCP,EAAOQ,GACzC,IAAKT,EAAQC,GACT,MAAM,IAAIlyG,MAAM,uBAEpB,IAAKwyG,EAAUE,GACX,MAAM,IAAI1yG,MAAJ,2CAA8C0yG,EAA9C,MASV,OAAOP,EAAUD,EADDF,EAAQW,QAAQD,EAAiB,MAmBrDv/G,EAAQy/G,yBATR,SAAkCV,EAAOW,GACrC,IAAKZ,EAAQC,GACT,MAAM,IAAIlyG,MAAM,uBAEpB,IAAKwyG,EAAUK,GACX,MAAM,IAAI7yG,MAAJ,2CAA8C6yG,EAA9C,MAEV,OAAOV,EAAUD,EAAOW,IAkB5B1/G,EAAQ2/G,eATR,SAAwBZ,EAAOvvG,GAC3B,IAAKsvG,EAAQC,GACT,MAAM,IAAIlyG,MAAM,uBAEpB,IAAKuyG,EAAQ5vG,GACT,MAAM,IAAI3C,MAAM,iBAEpB,OAAOmyG,EAAUD,EAAOvvG,IAoB5BxP,EAAQo/G,QAAUA,EAiBlBp/G,EAAQq/G,UAAYA,sCC1JpB97G,OAAOC,eAAexD,EAAS,aAAc,CAAEqB,OAAO,IACtD,IAAM4hC,EAAOj5B,EAAQ,OAqCrB,SAASihE,EAAY5pE,GACjB,GAAa,MAATA,EACA,MAAM,IAAIwL,MAAM,sCAEpB,GAAqB,kBAAVxL,EAAoB,CAC3B,IAAMsd,EAAQtd,EAAMsd,MAAM,uBAC1B,IAAKA,EACD,MAAM,IAAI9R,MAAM,8BAEpB,GAAiB,OAAb8R,EAAM,GACN,MAAM,IAAI9R,MAAM,mCAEpBxL,EAAQA,EAAMyf,UAAU,IACd3gB,OAAS,IACfkB,EAAQ,IAAMA,GAGlB,IADA,IAAM4D,EAAS,GACN7E,EAAI,EAAGA,EAAIiB,EAAMlB,OAAQC,GAAK,EACnC6E,EAAOrC,KAAKic,SAASxd,EAAMuQ,OAAOxR,EAAG,GAAI,KAE7C,OAAOohC,EAAS,IAAIjgB,WAAWtc,IAEnC,GAUJ,SAAqB5D,GACjB,IAAKA,GAEDwd,SAASY,OAAOpe,EAAMlB,UAAYkB,EAAMlB,QACvB,kBAAVkB,EACP,OAAO,EAEX,IAAK,IAAIjB,EAAI,EAAGA,EAAIiB,EAAMlB,OAAQC,IAAK,CACnC,IAAM6P,EAAI5O,EAAMjB,GAEhB,GAAI6P,EAAI,GAAKA,GAAK,KAAO4O,SAASY,OAAOxP,KAAOA,EAC5C,OAAO,EAGf,OAAO,EAxBH2vG,CAAYv+G,GACZ,OAAOmgC,EAAS,IAAIjgB,WAAWlgB,IAEnC,MAAM,IAAIwL,MAAM,0BA2BpB,SAAS20B,EAASC,GAAO,gBACrB,YAAoBz/B,IAAhBy/B,EAAMj5B,QAGVi5B,EAAMj5B,MAAQ,WACV,IAAM5G,EAAOtB,MAAMyC,UAAUyF,MAAM/D,KAAK5C,GACxC,OAAO2/B,EAAS,IAAIjgB,WAAWjhB,MAAMyC,UAAUyF,MAAM1G,MAAM2/B,EAAO7/B,OAJ3D6/B,EAnFfzhC,EAAQuZ,UAHR,SAAmBlH,GACf,MAAO,KAAO4wB,EAAK48E,WAAW50C,EAAY54D,KAQ9CrS,EAAQw/G,QAAU,SAACn+G,EAAO6nB,GACtB,IAAM42F,EAAY,OAAOp3G,KAAKrH,IAA2B,kBAAVA,EAEzCkuB,EAAUrG,GADhB7nB,EAAQA,EAAM8E,WAAWka,QAAQ,OAAQ,KACXlgB,OAAS,GAAK,EAAI+oB,EAAQ7nB,EAAMlB,OAAS,EAAI,EAC3E,OAAQ2/G,EAAY,KAAO,IAAM,IAAIx/G,MAAMivB,GAAS7P,KAAK,KAAOre,GAcpErB,EAAQi/G,WARR,SAAoBt9F,GAEhB,IADA,IAAM0I,EAAM,GACHjqB,EAAI,EAAGA,EAAIuhB,EAAMxhB,OAAQC,IAC9BiqB,EAAIznB,MAAM+e,EAAMvhB,KAAO,GAAG+F,SAAS,KACnCkkB,EAAIznB,MAAiB,GAAX+e,EAAMvhB,IAAU+F,SAAS,KAEvC,kBAAYkkB,EAAI3K,KAAK,IAAIW,QAAQ,MAAO,MAkC5CrgB,EAAQirE,YAAcA,6GChEtBjrE,EAAAA,mBAAA,SACE+/G,GAEA,OAAO,SAAAxxG,GACL,IAAMoD,EAAOouG,IAEb,OADApuG,EAAK0hC,OAAO9kC,GACLmD,EAAOhL,KAAKiL,EAAK2hC,gGCR5B,eAEM0sE,EAAmBh2G,EAAQ,OAEpBhK,EAAAA,UAAYigH,EAAAA,oBAAmB,WAC1C,OAAAD,EAAiB,gBAGNhgH,EAAAA,UAAYigH,EAAAA,oBAAmB,WAC1C,OAAAD,EAAiB,gBAGNhgH,EAAAA,UAAYigH,EAAAA,oBAAmB,WAC1C,OAAAD,EAAiB,gBAGNhgH,EAAAA,UAAYigH,EAAAA,oBAAmB,WAC1C,OAAAD,EAAiB,oGCjBnB,IAAME,EAAcl2G,EAAQ,OAE5BhK,EAAAA,eAAA,SAA+B2hB,GAC7B,OAAO,IAAIngB,SAAQ,SAACV,EAASC,GAC3Bm/G,EAAYv+F,GAAO,SAAS5f,EAAUo+G,GAChCp+G,EACFhB,EAAOgB,GAITjB,EAAQq/G,UAKdngH,EAAAA,mBAAA,SAAmC2hB,GACjC,OAAOu+F,EAAYv+F,y9CChBrB,eACA,UAIA3hB,EAAAA,iBAAA,2GAEe,SAAMogH,EAAAA,eAJc,YAK/B,OADMC,EAAKr0G,EAAAA,OACPs0G,EAAAA,iBAAiBD,GACnB,GAAOA,kCAKbrgH,EAAAA,qBAAA,WACE,OAAa,CACX,IAAMqgH,EAAKD,EAAAA,mBAboB,IAc/B,GAAIE,EAAAA,iBAAiBD,GACnB,OAAOA,gEAKbE,CAAAA,EAAAA,+BCvBAxgH,EAAOC,QAAU,EAAjBD,oDCCM2mC,EAAQ18B,EAAQ,OAChB6D,EAAK7D,EAAQ,OAEfw2G,EAAM,aAKV,SAASC,EAAgBh4G,GACvB,OAAIA,EAAKi4G,WAAW,QACX,SAAWj4G,EAAKD,MAAM,GACX,QAATC,EACF,SACEA,EAAKi4G,WAAW,SAClB,UAAYj4G,EAAKD,MAAM,GACZ,SAATC,EACF,UACEA,EAAKi4G,WAAW,UAClB,eAAiBj4G,EAAKD,MAAM,GACjB,UAATC,EACF,eACEA,EAAKi4G,WAAW,WAClB,gBAAkBj4G,EAAKD,MAAM,GAClB,WAATC,EACF,gBAEFA,EAcT,SAASk4G,EAAY9sG,GACnB,OAAOgL,SAAS,aAAa29B,KAAK3oC,GAAM,GAAI,IAI9C,SAAS+sG,EAAc/sG,GACrB,IAAI8rB,EAAM,mBAAmB6c,KAAK3oC,GAClC,MAAO,CAAEgL,SAAS8gB,EAAI,GAAI,IAAK9gB,SAAS8gB,EAAI,GAAI,KAIlD,SAASkhF,EAAgBhtG,GACvB,IAAI8rB,EAAM9rB,EAAK8K,MAAM,kBACrB,OAAIghB,EACgB,KAAXA,EAAI,GAAY,UAAY9gB,SAAS8gB,EAAI,GAAI,IAE/C,KAGT,SAASmhF,EAAa3/G,GACpB,IAAI0S,SAAc1S,EAClB,GAAa,WAAT0S,EACF,OAAI6yB,EAAM80E,cAAcr6G,GACf,IAAI0M,EAAG64B,EAAMyxE,eAAeh3G,GAAM,IAElC,IAAI0M,EAAG1M,EAAK,IAEhB,GAAa,WAAT0S,EACT,OAAO,IAAIhG,EAAG1M,GACT,GAAIA,EAAIysB,QAEb,OAAOzsB,EAEP,MAAM,IAAI0L,MAAM,4BAMpB,SAASk0G,EAAgBvoE,GACvB,IAAI7Y,EAAM,kBAAkB6c,KAAKhE,GAEjC,GAAmB,IAAf7Y,EAAIx/B,OACN,MAAM,IAAI0M,MAAM,4BAGlB,IAAIjL,EAAO,kBAAkB46C,KAAK7c,EAAI,IAEtC,GAAa,OAAT/9B,GAAiC,IAAhBA,EAAKzB,OACxB,MAAO,CACLytD,OAAQjuB,EAAI,GACZ/9B,KAAMA,EAAK,GAAGwnB,MAAM,KACpB43F,QAASp/G,EAAK,GAAGwnB,MAAM,MAGzB,IAAIrL,EAAS4hB,EAAI,GAAGvW,MAAM,KAO1B,OANsB,IAAlBrL,EAAO5d,QAA8B,KAAd4d,EAAO,KAIhCA,EAAS,IAEJ,CACL6vC,OAAQjuB,EAAI,GACZ/9B,KAAMmc,GAOZ,SAASkjG,EAAcptG,EAAM1S,GAC3B,IAAIokB,EAAM4H,EAAKyC,EAAKxvB,EAEpB,GAAa,YAATyT,EACF,OAAOotG,EAAa,UAAWH,EAAY3/G,IACtC,GAAa,SAAT0S,EACT,OAAOotG,EAAa,QAAS9/G,EAAM,EAAI,GAClC,GAAa,WAAT0S,EACT,OAAOotG,EAAa,QAASvvG,EAAOhL,KAAKvF,EAAK,SACzC,GAAIX,EAAQqT,GAAO,CAGxB,GAA0B,qBAAf1S,EAAIhB,OACb,MAAM,IAAI0M,MAAM,iBAGlB,GAAa,aADb0Y,EAAOs7F,EAAehtG,KACa,IAAT0R,GAAcpkB,EAAIhB,OAASolB,EACnD,MAAM,IAAI1Y,MAAM,+BAAiC0Y,GAOnD,IAAKnlB,KALLwvB,EAAM,GACN/b,EAAOA,EAAKrL,MAAM,EAAGqL,EAAK+nE,YAAY,MACnB,kBAARz6E,IACTA,EAAMme,KAAKC,MAAMpe,IAETA,EACRyuB,EAAIhtB,KAAKq+G,EAAaptG,EAAM1S,EAAIf,KAElC,GAAa,YAATmlB,EAAoB,CACtB,IAAIplB,EAAS8gH,EAAa,UAAW9/G,EAAIhB,QACzCyvB,EAAIkS,QAAQ3hC,GAEd,OAAOuR,EAAOrD,OAAOuhB,GAChB,GAAa,UAAT/b,EAST,OARA1S,EAAMuQ,EAAOhL,KAAKvF,GAElByuB,EAAMle,EAAOrD,OAAO,CAAE4yG,EAAa,UAAW9/G,EAAIhB,QAASgB,IAEtDA,EAAIhB,OAAS,KAAQ,IACxByvB,EAAMle,EAAOrD,OAAO,CAAEuhB,EAAK8W,EAAM/X,MAAM,GAAMxtB,EAAIhB,OAAS,OAGrDyvB,EACF,GAAI/b,EAAK6sG,WAAW,SAAU,CAEnC,IADAn7F,EAAOo7F,EAAW9sG,IACP,GAAK0R,EAAO,GACrB,MAAM,IAAI1Y,MAAM,2BAA6B0Y,GAG/C,OAAOmhB,EAAMszE,eAAe74G,EAAK,IAC5B,GAAI0S,EAAK6sG,WAAW,QAAS,CAElC,IADAn7F,EAAOo7F,EAAW9sG,IACN,GAAO0R,EAAO,GAAOA,EAAO,IACtC,MAAM,IAAI1Y,MAAM,0BAA4B0Y,GAI9C,IADA4H,EAAM2zF,EAAY3/G,IACVuvB,YAAcnL,EACpB,MAAM,IAAI1Y,MAAM,gCAAkC0Y,EAAO,OAAS4H,EAAIuD,aAGxE,GAAIvD,EAAM,EACR,MAAM,IAAItgB,MAAM,6BAGlB,OAAOsgB,EAAI2C,YAAYpe,EAAQ,KAAM,IAChC,GAAImC,EAAK6sG,WAAW,OAAQ,CAEjC,IADAn7F,EAAOo7F,EAAW9sG,IACN,GAAO0R,EAAO,GAAOA,EAAO,IACtC,MAAM,IAAI1Y,MAAM,yBAA2B0Y,GAI7C,IADA4H,EAAM2zF,EAAY3/G,IACVuvB,YAAcnL,EACpB,MAAM,IAAI1Y,MAAM,+BAAiC0Y,EAAO,OAAS4H,EAAIuD,aAGvE,OAAOvD,EAAIjH,OAAO,KAAK4J,YAAYpe,EAAQ,KAAM,IAC5C,GAAImC,EAAK6sG,WAAW,UAAW,CAKpC,GAJAn7F,EAAOq7F,EAAa/sG,IAEpBsZ,EAAM2zF,EAAY3/G,IAER,EACR,MAAM,IAAI0L,MAAM,+BAGlB,OAAOo0G,EAAa,UAAW9zF,EAAIpV,IAAI,IAAIlK,EAAG,GAAGkd,IAAI,IAAIld,EAAG0X,EAAK,OAC5D,GAAI1R,EAAK6sG,WAAW,SAGzB,OAFAn7F,EAAOq7F,EAAa/sG,GAEbotG,EAAa,SAAUH,EAAY3/G,GAAK4W,IAAI,IAAIlK,EAAG,GAAGkd,IAAI,IAAIld,EAAG0X,EAAK,OAG/E,MAAM,IAAI1Y,MAAM,gCAAkCgH,GAMpD,SAASqtG,EAAcC,EAAY9uG,EAAM0P,GAIvC,IAAIwD,EAAM4H,EAAKyC,EAAKxvB,EAEpB,GAL0B,kBAAf+gH,IACTA,EAAaC,EAAUD,IAID,YAApBA,EAAW14G,KACb,OAAOy4G,EAAaC,EAAWE,QAAShvG,EAAM0P,GAAQ+N,YAAYpe,EAAQ,KAAM,IAAIvL,SAAS,OACxF,GAAwB,SAApBg7G,EAAW14G,KACpB,OAAOy4G,EAAaC,EAAWE,QAAShvG,EAAM0P,GAAQ5b,aAAe,IAAI0H,EAAG,GAAG1H,WAC1E,GAAwB,WAApBg7G,EAAW14G,KAAmB,CACvC,IAAIkZ,EAAQu/F,EAAaC,EAAWE,QAAShvG,EAAM0P,GACnD,OAAOrQ,EAAOhL,KAAKib,EAAO,QAAQxb,WAC7B,GAAIg7G,EAAW3gH,QAAS,CAW7B,IARAovB,EAAM,GACNrK,EAAO47F,EAAW57F,KAEM,YAApB47F,EAAW57F,OACbxD,EAASm/F,EAAa,UAAW7uG,EAAM0P,GAAQ/N,WAC/CuR,EAAO27F,EAAa,UAAW7uG,EAAM0P,GAAQ/N,WAC7C+N,GAAkB,IAEf3hB,EAAI,EAAGA,EAAImlB,EAAMnlB,IAAK,CACzB,IAAIimC,EAAU66E,EAAaC,EAAWG,SAAUjvG,EAAM0P,GACtD6N,EAAIhtB,KAAKyjC,GACTtkB,GAAUo/F,EAAWG,SAASC,YAEhC,OAAO3xF,EACF,GAAwB,UAApBuxF,EAAW14G,KAGpB,OAFAsZ,EAASm/F,EAAa,UAAW7uG,EAAM0P,GAAQ/N,WAC/CuR,EAAO27F,EAAa,UAAW7uG,EAAM0P,GAAQ/N,WACtC3B,EAAK7J,MAAMuZ,EAAS,GAAIA,EAAS,GAAKwD,GACxC,GAAI47F,EAAW14G,KAAKi4G,WAAW,SACpC,OAAOruG,EAAK7J,MAAMuZ,EAAQA,EAASo/F,EAAW57F,MACzC,GAAI47F,EAAW14G,KAAKi4G,WAAW,QAAS,CAE7C,IADAvzF,EAAM,IAAItf,EAAGwE,EAAK7J,MAAMuZ,EAAQA,EAAS,IAAK,GAAI,OAC1C2O,YAAcywF,EAAW57F,KAC/B,MAAM,IAAI1Y,MAAM,8BAAgCs0G,EAAW57F,KAAO,OAAS4H,EAAIuD,aAEjF,OAAOvD,EACF,GAAIg0F,EAAW14G,KAAKi4G,WAAW,OAAQ,CAE5C,IADAvzF,EAAM,IAAItf,EAAGwE,EAAK7J,MAAMuZ,EAAQA,EAAS,IAAK,GAAI,MAAMoE,SAAS,MACzDuK,YAAcywF,EAAW57F,KAC/B,MAAM,IAAI1Y,MAAM,+BAAiCs0G,EAAW57F,KAAO,OAAS4H,EAAIuD,aAGlF,OAAOvD,EACF,GAAIg0F,EAAW14G,KAAKi4G,WAAW,UAAW,CAG/C,GAFAn7F,EAAO,IAAI1X,EAAG,GAAGkd,IAAI,IAAIld,EAAGszG,EAAW57F,KAAK,OAC5C4H,EAAM+zF,EAAa,UAAW7uG,EAAM0P,IAC3BoM,IAAI5I,GAAMR,SACjB,MAAM,IAAIlY,MAAM,8BAElB,OAAOsgB,EAAIvC,IAAIrF,GACV,GAAI47F,EAAW14G,KAAKi4G,WAAW,SAAU,CAG9C,GAFAn7F,EAAO,IAAI1X,EAAG,GAAGkd,IAAI,IAAIld,EAAGszG,EAAW57F,KAAK,OAC5C4H,EAAM+zF,EAAa,SAAU7uG,EAAM0P,IAC1BoM,IAAI5I,GAAMR,SACjB,MAAM,IAAIlY,MAAM,8BAElB,OAAOsgB,EAAIvC,IAAIrF,GAEjB,MAAM,IAAI1Y,MAAM,gCAAkCs0G,EAAW14G,MAK/D,SAAS24G,EAAWvtG,GAClB,IAAI0R,EACAqK,EAcEyxF,EAbN,GAAI7gH,EAAQqT,GAAO,CACjB0R,EAAOs7F,EAAehtG,GACtB,IAAIytG,EAAWztG,EAAKrL,MAAM,EAAGqL,EAAK+nE,YAAY,MAS9C,OARA0lC,EAAWF,EAAUE,GACrB1xF,EAAM,CACJpvB,SAAS,EACTiI,KAAMoL,EACN0R,KAAMA,EACNg8F,YAAsB,YAATh8F,EAAqB,GAAK+7F,EAASC,YAAch8F,EAC9D+7F,SAAUA,GAKZ,OAAQztG,GACN,IAAK,UACHwtG,EAAU,UACV,MACF,IAAK,OACHA,EAAU,QACV,MACF,IAAK,SACHA,EAAU,QAed,GAZAzxF,EAAM,CACJyxF,QAASA,EACT54G,KAAMoL,EACN0tG,YAAa,IAGV1tG,EAAK6sG,WAAW,UAAqB,UAAT7sG,GAAqBA,EAAK6sG,WAAW,SAAW7sG,EAAK6sG,WAAW,OAC/F9wF,EAAIrK,KAAOo7F,EAAW9sG,IACbA,EAAK6sG,WAAW,WAAa7sG,EAAK6sG,WAAW,YACtD9wF,EAAIrK,KAAOq7F,EAAa/sG,IAGtBA,EAAK6sG,WAAW,UAAqB,UAAT7sG,IAAqB+b,EAAIrK,KAAO,GAAKqK,EAAIrK,KAAO,IAC9E,MAAM,IAAI1Y,MAAM,2BAA6B+iB,EAAIrK,MAEnD,IAAK1R,EAAK6sG,WAAW,SAAW7sG,EAAK6sG,WAAW,UAAY9wF,EAAIrK,KAAO,GAAKqK,EAAIrK,KAAO,GAAKqK,EAAIrK,KAAO,KACrG,MAAM,IAAI1Y,MAAM,8BAAgC+iB,EAAIrK,MAEtD,OAAOqK,EAKX,SAAS4xF,EAAW3tG,GAElB,MAAiB,WAATA,GAAgC,UAATA,GAA+C,YAAzBgtG,EAAehtG,GAItE,SAASrT,EAASqT,GAChB,OAAOA,EAAK+nE,YAAY,OAAS/nE,EAAK1T,OAAS,EAiFjD,SAASqf,EAAW3L,EAAMxS,GACxB,OAAIwS,EAAK6sG,WAAW,YAAc7sG,EAAK6sG,WAAW,SACzC,KAAOr/G,EAAM8E,SAAS,OAEtB9E,EAAM8E,WAzYjBq6G,EAAIiB,QAAU,SAAUh5G,EAAM6f,GAE5B,IAAIkwB,EAAM/vC,EAAO,IAAM6f,EAAMnb,IAAIszG,GAAgB/gG,KAAK,KAAO,IAC7D,OAAOgnB,EAAMntB,UAAU7H,EAAOhL,KAAK8xC,KAGrCgoE,EAAIkB,SAAW,SAAUj5G,EAAM6f,GAC7B,OAAOk4F,EAAIiB,QAAQh5G,EAAM6f,GAAO9f,MAAM,EAAG,IAmT3Cg4G,EAAImB,UAAY,SAAUr5F,EAAOvR,GAC/B,IAAIuP,EAAS,GACTjU,EAAO,GAEPuvG,EAAa,EAEjBt5F,EAAM7gB,SAAQ,SAAUoM,GACtB,GAAIrT,EAAQqT,GAAO,CACjB,IAAI0R,EAAOs7F,EAAehtG,GAGxB+tG,GADW,YAATr8F,EACY,GAAKA,EAEL,QAGhBq8F,GAAc,MAIlB,IAAK,IAAIxhH,EAAI,EAAGA,EAAIkoB,EAAMnoB,OAAQC,IAAK,CACrC,IAAIyT,EAAO4sG,EAAen4F,EAAMloB,IAE5B87D,EAAM+kD,EAAaptG,EADXkD,EAAO3W,IAIfohH,EAAU3tG,IACZyS,EAAO1jB,KAAKq+G,EAAa,UAAWW,IACpCvvG,EAAKzP,KAAKs5D,GACV0lD,GAAc1lD,EAAI/7D,QAElBmmB,EAAO1jB,KAAKs5D,GAIhB,OAAOxqD,EAAOrD,OAAOiY,EAAOjY,OAAOgE,KAGrCmuG,EAAIqB,UAAY,SAAUv5F,EAAOjW,GAC/B,IAAIud,EAAM,GACVvd,EAAOX,EAAOhL,KAAK2L,GAEnB,IADA,IAAI0P,EAAS,EACJ3hB,EAAI,EAAGA,EAAIkoB,EAAMnoB,OAAQC,IAAK,CACrC,IACIk8E,EAAS8kC,EADFX,EAAen4F,EAAMloB,KAE5BimC,EAAU66E,EAAa5kC,EAAQjqE,EAAM0P,GACzCA,GAAUu6D,EAAOilC,YACjB3xF,EAAIhtB,KAAKyjC,GAEX,OAAOzW,GAGT4wF,EAAIsB,aAAe,SAAUl0D,GAC3B,IAAIhsD,EAAOtB,MAAMyC,UAAUyF,MAAM/D,KAAK5C,WAAW2G,MAAM,GACnDgwC,EAAMuoE,EAAenzD,GAGzB,GAAIhsD,EAAKzB,SAAWq4C,EAAI52C,KAAKzB,OAC3B,MAAM,IAAI0M,MAAM,2BAGlB,OAAO6E,EAAOrD,OAAO,CAAEmyG,EAAIkB,SAASlpE,EAAIoV,OAAQpV,EAAI52C,MAAO4+G,EAAImB,UAAUnpE,EAAI52C,KAAMA,MAGrF4+G,EAAIuB,aAAe,SAAUn0D,EAAQv7C,GACnC,IAAImmC,EAAMuoE,EAAenzD,GAGzB,IAAKpV,EAAIwoE,QACP,MAAM,IAAIn0G,MAAM,8BAGlB,OAAO2zG,EAAIqB,UAAUrpE,EAAIwoE,QAAS3uG,IAWpCmuG,EAAIhhG,UAAY,SAAU8I,EAAOvR,GAC/B,IAAI6Y,EAAM,GAEV,IAAK,IAAIxvB,KAAKkoB,EAAO,CACnB,IAAIzU,EAAOyU,EAAMloB,GACbiB,EAAQ0V,EAAO3W,GAIjBiB,EADE,iBAAiBqH,KAAKmL,GAChBxS,EAAM8L,KAAI,SAAUgP,GAC1B,OAAOqD,EAAU3L,EAAMsI,MACtBuD,KAAK,MAEAF,EAAU3L,EAAMxS,GAG1BuuB,EAAIhtB,KAAKvB,GAGX,OAAOuuB,GAGT4wF,EAAIwB,iBAAmB,SAAUnuG,EAAMxS,EAAO4gH,GAE5C,IAAI18F,EAAM4H,EACV,GAAI3sB,EAAQqT,GAAO,CACjB,IAAIquG,EAAUruG,EAAKwM,QAAQ,UAAW,IACtC,IAAK7f,EAAQ0hH,GAAU,CACrB,IAAIC,EAAYtB,EAAehtG,GAC/B,GAAkB,YAAdsuG,GAAyC,IAAdA,GAAmB9gH,EAAMlB,OAASgiH,EAC/D,MAAM,IAAIt1G,MAAM,+BAAiCs1G,GAGrD,IAAI3+F,EAAcniB,EAAM8L,KAAI,SAAU8C,GACpC,OAAOuwG,EAAIwB,iBAAiBE,EAASjyG,EAAG,QAE1C,OAAOyB,EAAOrD,OAAOmV,GAChB,GAAa,UAAT3P,EACT,OAAOxS,EACF,GAAa,WAATwS,EACT,OAAOnC,EAAOhL,KAAKrF,EAAO,QACrB,GAAa,SAATwS,EAAiB,CAC1BouG,EAAUA,GAAW,EACrB,IAAI1yF,EAAUjvB,MAAO2hH,EAAW,GAAGviG,KAAK,KACxC,OAAOhO,EAAOhL,KAAKrF,EAAQkuB,EAAU,IAAMA,EAAU,IAAK,OACrD,GAAa,YAAT1b,EAAoB,CAC7B,IAAIuuG,EAAW,GAIf,OAHIH,IACFG,EAAWH,EAAU,GAEhBv7E,EAAM5pB,cAAczb,EAAO+gH,GAC7B,GAAIvuG,EAAK6sG,WAAW,SAAU,CAEnC,IADAn7F,EAAOo7F,EAAW9sG,IACP,GAAK0R,EAAO,GACrB,MAAM,IAAI1Y,MAAM,2BAA6B0Y,GAG/C,OAAOmhB,EAAMszE,eAAe34G,EAAOkkB,GAC9B,GAAI1R,EAAK6sG,WAAW,QAAS,CAElC,IADAn7F,EAAOo7F,EAAW9sG,IACN,GAAO0R,EAAO,GAAOA,EAAO,IACtC,MAAM,IAAI1Y,MAAM,0BAA4B0Y,GAI9C,IADA4H,EAAM2zF,EAAYz/G,IACVqvB,YAAcnL,EACpB,MAAM,IAAI1Y,MAAM,gCAAkC0Y,EAAO,OAAS4H,EAAIuD,aAIxE,OADAuxF,EAAUA,GAAW18F,EACd4H,EAAI2C,YAAYpe,EAAQ,KAAMuwG,EAAU,GAC1C,GAAIpuG,EAAK6sG,WAAW,OAAQ,CAEjC,IADAn7F,EAAOo7F,EAAW9sG,IACN,GAAO0R,EAAO,GAAOA,EAAO,IACtC,MAAM,IAAI1Y,MAAM,yBAA2B0Y,GAI7C,IADA4H,EAAM2zF,EAAYz/G,IACVqvB,YAAcnL,EACpB,MAAM,IAAI1Y,MAAM,+BAAiC0Y,EAAO,OAAS4H,EAAIuD,aAIvE,OADAuxF,EAAUA,GAAW18F,EACd4H,EAAIjH,OAAOX,GAAMuK,YAAYpe,EAAQ,KAAMuwG,EAAU,GAG5D,MAAM,IAAIp1G,MAAM,gCAAkCgH,IAItD2sG,EAAI6B,aAAe,SAAU/5F,EAAOvR,GAClC,GAAIuR,EAAMnoB,SAAW4W,EAAO5W,OAC1B,MAAM,IAAI0M,MAAM,+CAKlB,IAFA,IAAI+iB,EAAM,GAEDxvB,EAAI,EAAGA,EAAIkoB,EAAMnoB,OAAQC,IAAK,CACrC,IAAIyT,EAAO4sG,EAAen4F,EAAMloB,IAC5BiB,EAAQ0V,EAAO3W,GACnBwvB,EAAIhtB,KAAK49G,EAAIwB,iBAAiBnuG,EAAMxS,EAAO,OAG7C,OAAOqQ,EAAOrD,OAAOuhB,IAGvB4wF,EAAIvJ,aAAe,SAAU3uF,EAAOvR,GAClC,OAAO2vB,EAAMntB,UAAUinG,EAAI6B,aAAa/5F,EAAOvR,KAGjDypG,EAAI8B,eAAiB,SAAUh6F,EAAOvR,GACpC,OAAO2vB,EAAM81D,OAAOgkB,EAAI6B,aAAa/5F,EAAOvR,KAG9CypG,EAAI+B,kBAAoB,SAAUj6F,EAAOvR,GACvC,OAAO2vB,EAAMwzE,UAAUsG,EAAI6B,aAAa/5F,EAAOvR,IAAS,IAgB1DypG,EAAIgC,YAAc,SAAUhqE,GAE1B,IADA,IAPkBl4B,EAOdsP,EAAM,GACDxvB,EAAI,EAAGA,EAAIo4C,EAAIr4C,OAAQC,IAAK,CACnC,IAAIyT,EAAO2kC,EAAIp4C,GACf,GAAa,MAATyT,EACF+b,EAAIhtB,KAAK,cACJ,GAAa,MAATiR,EAAc,CAGvB,IAFA,IAAI8rB,EAAM,QACNxY,EAAI/mB,EAAI,EACJ+mB,EAAIqxB,EAAIr4C,UAfFmgB,EAeuBk4B,EAAIrxB,KAbhC,KAAS7G,GAAK,MAcrBqf,GAAO6Y,EAAIrxB,GAAK,IAChBA,IAEF/mB,EAAI+mB,EAAI,EACRyI,EAAIhtB,KAAK+8B,QACJ,GAAa,MAAT9rB,EACT+b,EAAIhtB,KAAK,cACJ,IAAa,MAATiR,EAGT,MAAM,IAAIhH,MAAM,gCAAkCgH,GAFlD+b,EAAIhtB,KAAK,aAKb,OAAOgtB,GAGT4wF,EAAIiC,UAAY,SAAUn6F,GAExB,IADA,IAAIsH,EAAM,GACDxvB,EAAI,EAAGA,EAAIkoB,EAAMnoB,OAAQC,IAAK,CACrC,IAAIyT,EAAOyU,EAAMloB,GACjB,GAAa,UAATyT,EACF+b,EAAIhtB,KAAK,UACJ,GAAIiR,EAAK6sG,WAAW,SACzB9wF,EAAIhtB,KAAK,IAAM+9G,EAAW9sG,SACrB,GAAa,WAATA,EACT+b,EAAIhtB,KAAK,SACJ,IAAa,aAATiR,EAGT,MAAM,IAAIhH,MAAM,gCAAkCgH,GAFlD+b,EAAIhtB,KAAK,MAKb,OAAOgtB,EAAIlQ,KAAK,KAGlB3f,EAAOC,QAAUwgH,2XC3lBjB,IAAM10F,EAAS9hB,EAAQ,OACjB04G,EAAY14G,EAAQ,OACpB8lF,EAAY9lF,EAAQ,OAC1B,WACA,WACA,UAKahK,EAAAA,YAAc,WACzB,IACM64C,EAAO8pE,EAAAA,MADS,IAEtB,OAAOA,EAAAA,YAAY9pE,IAMR74C,EAAAA,eAAiB,SAASqc,GACrC,MAAO,sBAAsB3T,KAAK2T,IAMvBrc,EAAAA,cAAgB,SAASqc,GAEpC,OADiBrc,EAAAA,gBACG2iH,EAAAA,aAAatmG,IAatBrc,EAAAA,kBAAoB,SAASqc,EAAiBumG,GACzDvmG,EAAUqmG,EAAUvK,eAAe97F,GAAS8M,cAO5C,IALA,IAAM67D,OAA4BhjF,IAAnB4gH,EAA+BA,EAAez8G,WAAa,KAAO,GAE3EwL,EAAOkxG,EAAAA,OAAO79B,EAAS3oE,GAASlW,SAAS,OAC3CypB,EAAM,KAEDxvB,EAAI,EAAGA,EAAIic,EAAQlc,OAAQC,IAC9Bye,SAASlN,EAAKvR,GAAI,KAAO,EAC3BwvB,GAAOvT,EAAQjc,GAAGmpB,cAElBqG,GAAOvT,EAAQjc,GAInB,OAAOwvB,GAQI5vB,EAAAA,uBAAyB,SAASqc,EAAiBumG,GAC9D,OAAO5iH,EAAAA,eAAeqc,IAAYrc,EAAAA,kBAAkBqc,EAASumG,KAAoBvmG,GAQtErc,EAAAA,gBAAkB,SAAS0G,EAAc+M,GACpD/M,EAAOi8G,EAAAA,SAASj8G,GAChB,IAAMo8G,EAAU,IAAIj1G,EAAG4F,GAEvB,OAAIqvG,EAAQ/9F,SAGH89F,EAAAA,QAAQ,CAACn8G,EAAM,OAAO8B,OAAO,IAI/Bq6G,EAAAA,QAAQ,CAACn8G,EAAMgL,EAAOhL,KAAKo8G,EAAQl1F,aAAaplB,OAAO,KASnDxI,EAAAA,iBAAmB,SAC9B0G,EACAq8G,EACAC,GAEA,IAAMC,EAAUN,EAAAA,SAASj8G,GACnBw8G,EAAUP,EAAAA,SAASI,GACnBI,EAAcR,EAAAA,SAASK,GAS7B,OAPAl3F,EAA0B,KAAnBm3F,EAAQ9iH,QACf2rB,EAA0B,KAAnBo3F,EAAQ/iH,QAEC0iH,EAAAA,UACdnxG,EAAOrD,OAAO,CAACqD,EAAOhL,KAAK,KAAM,OAAQu8G,EAASC,EAASL,EAAAA,UAAUM,MAGxD36G,OAAO,KAMXxI,EAAAA,cAAgB,SAASqc,GACpC,IAAM1Z,EAAIggH,EAAAA,MAAMtmG,GAChB,OAAoB,IAAb1Z,EAAExC,QAAgBwC,EAAE,IAAM,GAAKA,EAAE,IAAM,GAMnC3C,EAAAA,eAAiB,SAASiW,GACrC,OAAO65E,EAAUsqB,iBAAiBnkG,IASvBjW,EAAAA,cAAgB,SAAS6V,EAAmBykG,GACvD,YADuD,QAAAA,GAAAA,GAC9B,KAArBzkG,EAAU1V,OAEL2vF,EAAUyqB,gBAAgB7oG,EAAOrD,OAAO,CAACqD,EAAOhL,KAAK,CAAC,IAAKmP,OAG/DykG,GAIExqB,EAAUyqB,gBAAgB1kG,IAStB7V,EAAAA,aAAe,SAASy6G,EAAgBH,GAOnD,YAPmD,QAAAA,GAAAA,GACnDG,EAASkI,EAAAA,SAASlI,GACdH,GAA8B,KAAlBG,EAAOt6G,SACrBs6G,EAAS3qB,EAAU4qB,iBAAiBD,GAAQ,GAAOjyG,MAAM,IAE3DsjB,EAAyB,KAAlB2uF,EAAOt6G,QAEP0iH,EAAAA,OAAOpI,GAAQjyG,OAAO,KAElBxI,EAAAA,gBAAkBA,EAAAA,aAMlBA,EAAAA,iBAAmB,SAASiW,GACvC,OAAOjW,EAAAA,gBAAgBA,EAAAA,gBAAgBiW,KAO5BjW,EAAAA,gBAAkB,SAASiW,GAGtC,OAFAA,EAAa0sG,EAAAA,SAAS1sG,GAEf65E,EAAU8qB,gBAAgB3kG,GAAY,GAAOzN,MAAM,IAM/CxI,EAAAA,aAAe,SAAS6V,GAKnC,OAHyB,MADzBA,EAAY8sG,EAAAA,SAAS9sG,IACP1V,SACZ0V,EAAYi6E,EAAU4qB,iBAAiB7kG,GAAW,GAAOrN,MAAM,IAE1DqN,0RC9LT,IAAM6sG,EAAY14G,EAAQ,OAC1B,WAMahK,EAAAA,MAAQ,SAAS2hB,GAC5B,OAAOjQ,EAAO44D,YAAY3oD,GAAOslB,KAAK,IAW3BjnC,EAAAA,cAAgB,SAASuO,EAAUpO,EAAgBmtB,QAAA,QAAAA,GAAAA,GAC9D,IAAM1X,EAAM5V,EAAAA,MAAMG,GAElB,OADAoO,EAAMvO,EAAAA,SAASuO,GACX+e,EACE/e,EAAIpO,OAASA,GACfoO,EAAIuE,KAAK8C,GACFA,GAEFrH,EAAI/F,MAAM,EAAGrI,GAEhBoO,EAAIpO,OAASA,GACfoO,EAAIuE,KAAK8C,EAAKzV,EAASoO,EAAIpO,QACpByV,GAEFrH,EAAI/F,OAAOrI,IAGTH,EAAAA,UAAYA,EAAAA,cASZA,EAAAA,eAAiB,SAASuO,EAAUpO,GAC/C,OAAOH,EAAAA,UAAUuO,EAAKpO,GAAQ,IAQnBH,EAAAA,MAAQ,SAAS2C,GAG5B,IADA,IAAIgwD,GADJhwD,EAAI+/G,EAAUvK,eAAex1G,IACf,GACPA,EAAExC,OAAS,GAA0B,MAArBwyD,EAAMxsD,YAE3BwsD,GADAhwD,EAAIA,EAAE6F,MAAM,IACF,GAEZ,OAAO7F,GAEI3C,EAAAA,WAAaA,EAAAA,MAMbA,EAAAA,SAAW,SAASiQ,GAC/B,IAAKyB,EAAO6J,SAAStL,GACnB,GAAI3P,MAAME,QAAQyP,GAChBA,EAAIyB,EAAOhL,KAAKuJ,QACX,GAAiB,kBAANA,EAAgB,CAChC,IAAIyyG,EAAUz5F,YAAYhZ,GAGxB,MAAM,IAAIpD,MACR,8GAA8GoD,GAHhHA,EAAIyB,EAAOhL,KAAKg8G,EAAUzI,UAAUyI,EAAUvK,eAAeloG,IAAK,YAM/D,GAAiB,kBAANA,EAChBA,EAAIyyG,EAAUtwG,YAAYnC,QACrB,GAAU,OAANA,QAAoBjO,IAANiO,EACvBA,EAAIyB,EAAO44D,YAAY,QAClB,GAAIz8D,EAAGZ,KAAKgD,GACjBA,EAAIA,EAAE6f,YAAYpe,OACb,KAAIzB,EAAE2d,QAIX,MAAM,IAAI/gB,MAAM,gBAFhBoD,EAAIyB,EAAOhL,KAAKuJ,EAAE2d,WAKtB,OAAO3d,GAQIjQ,EAAAA,YAAc,SAAS4V,GAClC,OAAO,IAAI/H,EAAG7N,EAAAA,SAAS4V,IAAM5B,YAOlBhU,EAAAA,YAAc,SAAS4V,GAElC,MAAO,MADPA,EAAM5V,EAAAA,SAAS4V,IACGzP,SAAS,QAOhBnG,EAAAA,WAAa,SAASmtB,GACjC,OAAO,IAAItf,EAAGsf,GAAKhH,SAAS,MAOjBnmB,EAAAA,WAAa,SAASmtB,GACjC,OAAOzb,EAAOhL,KAAKymB,EAAIjH,OAAO,KAAK0H,YAMxB5tB,EAAAA,aAAe,SAASynB,GACnC,MAAmB,kBAARA,GAIJi7F,EAAUlH,cAAc/zF,GAHtBA,EAGmC,KAAOA,GAQxCznB,EAAAA,SAAW,SAAS87G,GAC/B,GAAIpqG,EAAO6J,SAASugG,GAClB,MAAO,KAAKA,EAAG31G,SAAS,OACnB,GAAI21G,aAAcx7G,MAAO,CAE9B,IADA,IAAMmhC,EAAQ,GACLrhC,EAAI,EAAGA,EAAI07G,EAAG37G,OAAQC,IAC7BqhC,EAAM7+B,KAAK5C,EAAAA,SAAS87G,EAAG17G,KAEzB,OAAOqhC,oQC3JX,eAKazhC,EAAAA,YAAkB,IAAI6N,EACjC,mEACA,IAMW7N,EAAAA,WAAiB,IAAI6N,EAChC,oEACA,IAMW7N,EAAAA,iBACX,mEAKWA,EAAAA,eAAyB0R,EAAOhL,KAAK1G,EAAAA,iBAAkB,OAKvDA,EAAAA,sBACX,mEAKWA,EAAAA,oBAA8B0R,EAAOhL,KAAK1G,EAAAA,sBAAuB,OAKjEA,EAAAA,gBACX,mEAKWA,EAAAA,cAAwB0R,EAAOhL,KAAK1G,EAAAA,gBAAiB,4KCjD5D,MAAuDgK,EAAQ,MAA7D6uG,EAAS,YAAEC,EAAS,YAAax5E,EAAI,YAAE40E,EAAS,YAClDn9B,EAAa/sE,EAAQ,OACrB04G,EAAY14G,EAAQ,OAC1B,WACA,WAQahK,EAAAA,OAAS,SAAS2C,EAAQqU,GASrC,YATqC,QAAAA,EAAAA,KAInCrU,EAHe,kBAANA,GAAmB+/G,EAAUz5F,YAAYtmB,GAG9CggH,EAAAA,SAAShgH,GAFT+O,EAAOhL,KAAK/D,EAAG,QAKhBqU,IAAMA,EAAO,KAEVA,GACN,KAAK,IACH,OAAO6hG,EAAUl2G,GAEnB,KAAK,IACH,OAAO28B,EAAK38B,GAEd,KAAK,IACH,OAAOm2G,EAAUn2G,GAEnB,KAAK,IACH,OAAOuxG,EAAUvxG,GAEnB,QACE,MAAM,IAAIkK,MAAM,2BAA2BmK,KASpChX,EAAAA,UAAY,SAAS2C,GAChC,OAAO3C,EAAAA,OAAO2C,IAOH3C,EAAAA,OAAS,SAAS2C,GAE7B,OADAA,EAAIggH,EAAAA,SAAShgH,GACNo0E,EAAW,UACf1jC,OAAO1wC,GACP2wC,UAQQtzC,EAAAA,UAAY,SAAS2C,EAAQgwE,GACxChwE,EAAIggH,EAAAA,SAAShgH,GACb,IAAMgP,EAAOolE,EAAW,UACrB1jC,OAAO1wC,GACP2wC,SACH,OAAe,IAAXq/B,EACKgwC,EAAAA,UAAUhxG,EAAM,IAEhBA,GAQE3R,EAAAA,QAAU,SAAS2C,GAC9B,OAAO3C,EAAAA,OAAO+4G,EAAI3/F,OAAOzW,2aCjF3B,IAAMmtF,EAAY9lF,EAAQ,OAmBjBhK,EAAAA,UAAAA,EAlBT,IAAM0iH,EAAY14G,EAAQ,OAC1B,WAOShK,EAAAA,GAAAA,EANT,eAWSA,EAAAA,IAAAA,EAVTuD,OAAOwP,OAAO/S,EAAS0iH,GAoBvBroG,EAAAA,EAAAA,MAAAA,GAKAA,EAAAA,EAAAA,OAAAA,GAKAA,EAAAA,EAAAA,MAAAA,GAKAA,EAAAA,EAAAA,OAAAA,GAKAA,EAAAA,EAAAA,OAAAA,GAKAA,EAAAA,EAAAA,OAAAA,wICjDA,IAAMyR,EAAS9hB,EAAQ,OACjB04G,EAAY14G,EAAQ,OAC1B,WACA,WAaahK,EAAAA,iBAAmB,SAASU,EAAW24C,EAAahnC,GAwE/D,GAvEA3R,EAAKyY,IAAM,GACXzY,EAAKq7G,QAAU,GAGfr7G,EAAKmvB,OAAS,SAAS0jC,GACrB,QADqB,QAAAA,GAAAA,GACjBA,EAAO,CAET,IAAM6vD,EAAY,GAIlB,OAHA1iH,EAAKq7G,QAAQt0G,SAAQ,SAACu0G,GACpBoH,EAAIpH,GAAS,KAAKt7G,EAAKs7G,GAAO71G,SAAS,UAElCi9G,EAET,OAAOT,EAAAA,SAASjiH,EAAKyY,MAGvBzY,EAAK8Y,UAAY,WACf,OAAOu/F,EAAI3/F,OAAO1Y,EAAKyY,MAGzBkgC,EAAO5xC,SAAQ,SAACu0G,EAAY57G,GAE1B,SAAS67G,IACP,OAAOv7G,EAAKyY,IAAI/Y,GAElB,SAAS87G,EAAOjsG,GAGY,QAF1BA,EAAI0yG,EAAAA,SAAS1yG,IAEP9J,SAAS,QAAoB61G,EAAMG,YACvClsG,EAAIyB,EAAO44D,YAAY,IAGrB0xC,EAAMI,WAAaJ,EAAM77G,QAC3B8P,EAAI0yG,EAAAA,WAAW1yG,GACf6b,EACEkwF,EAAM77G,QAAU8P,EAAE9P,OAClB,aAAa67G,EAAMvzG,KAAI,uBAAuBuzG,EAAM77G,OAAM,WAEjD67G,EAAMG,WAA0B,IAAblsG,EAAE9P,SAAiB67G,EAAM77G,QACvD2rB,EACEkwF,EAAM77G,SAAW8P,EAAE9P,OACnB,aAAa67G,EAAMvzG,KAAI,6BAA6BuzG,EAAM77G,QAI9DO,EAAKyY,IAAI/Y,GAAK6P,EAxBhBvP,EAAKq7G,QAAQn5G,KAAKo5G,EAAMvzG,MA2BxBlF,OAAOC,eAAe9C,EAAMs7G,EAAMvzG,KAAM,CACtCrF,YAAY,EACZC,cAAc,EACdmC,IAAKy2G,EACLjzG,IAAKkzG,IAGHF,EAAM5hG,UACR1Z,EAAKs7G,EAAMvzG,MAAQuzG,EAAM5hG,SAIvB4hG,EAAMK,OACR94G,OAAOC,eAAe9C,EAAMs7G,EAAMK,MAAO,CACvCj5G,YAAY,EACZC,cAAc,EACd2F,IAAKkzG,EACL12G,IAAKy2G,OAMP5pG,EASF,GARoB,kBAATA,IACTA,EAAOX,EAAOhL,KAAKg8G,EAAUvK,eAAe9lG,GAAO,QAGjDX,EAAO6J,SAASlJ,KAClBA,EAAO0mG,EAAIxgG,OAAOlG,IAGhB/R,MAAME,QAAQ6R,GAAO,CACvB,GAAIA,EAAKlS,OAASO,EAAKq7G,QAAQ57G,OAC7B,MAAM,IAAI0M,MAAM,kCAIlBwF,EAAK5K,SAAQ,SAAC8oC,EAAGnwC,GACfM,EAAKA,EAAKq7G,QAAQ37G,IAAMuiH,EAAAA,SAASpyE,UAE9B,IAAoB,kBAATl+B,EAOhB,MAAM,IAAIxF,MAAM,gBANhB,IAAMw2G,EAAO9/G,OAAO4D,KAAKkL,GACzBgnC,EAAO5xC,SAAQ,SAACu0G,IACoB,IAA9BqH,EAAKj9G,QAAQ41G,EAAMvzG,QAAc/H,EAAKs7G,EAAMvzG,MAAQ4J,EAAK2pG,EAAMvzG,QAChC,IAA/B46G,EAAKj9G,QAAQ41G,EAAMK,SAAe37G,EAAKs7G,EAAMK,OAAShqG,EAAK2pG,EAAMK,0fC9G7E,IAAMvsB,EAAY9lF,EAAQ,OACpBsyG,EAActyG,EAAQ,OACtBsnD,EAAMtnD,EAAQ,OA8BPhK,EAAAA,iBAAmB,SAASiW,GAEvC,OAA0B,KAAtBA,EAAW9V,QAIR2vF,EAAUsqB,iBAAiB74F,WAAW7a,KAAKuP,KAUvCjW,EAAAA,iBAAmB,SAASiW,EAAoB4hC,GAE3D,GAA0B,KAAtB5hC,EAAW9V,OACb,MAAM,IAAIw9D,WAAW,iCAGvB,IAAM9nD,EAAYymG,EAAYC,iBAAiBtmG,EAAY4hC,GAE3D,OAAOyZ,EAAIirD,iBAAiBtmG,EAAYJ,EAAWgiC,IASxC73C,EAAAA,iBAAmB,SAASiW,GAIvC,GAAmB,QADnBA,EAAaq7C,EAAIkrD,iBAAiBvmG,KACe,KAAtBA,EAAW9V,QAAiBH,EAAAA,iBAAiBiW,GACtE,OAAOA,EAGT,MAAM,IAAIpJ,MAAM,oCASL7M,EAAAA,iBAAmB,SAASiW,GACvC,OAAOvE,EAAOhL,KAAKopF,EAAU2sB,iBAAiBl7F,WAAW7a,KAAKuP,MASnDjW,EAAAA,qBAAuB,SAASiW,GAC3C,GAA0B,KAAtBA,EAAW9V,OACb,MAAM,IAAI0M,MAAM,iCAGlB,OAAO6E,EAAOhL,KAAK41G,EAAYI,qBAAqBn7F,WAAW7a,KAAKuP,MAUzDjW,EAAAA,mBAAqB,SAASiW,EAAoB2mG,GAC7D,OAAOlrG,EAAOhL,KAAKopF,EAAU6sB,mBAAmBp7F,WAAW7a,KAAKuP,GAAa2mG,KAUlE58G,EAAAA,mBAAqB,SAASiW,EAAoB2mG,GAC7D,OAAOlrG,EAAOhL,KACZopF,EAAU+sB,mBAAmBt7F,WAAW7a,KAAKuP,GAAasL,WAAW7a,KAAKk2G,MAWjE58G,EAAAA,gBAAkB,SAASiW,EAAoB4hC,GAC1D,OAAOnmC,EAAOhL,KAAKopF,EAAU8qB,gBAAgBr5F,WAAW7a,KAAKuP,GAAa4hC,KAU/D73C,EAAAA,iBAAmB,SAAS6V,EAAmBgiC,GAC1D,OAAOnmC,EAAOhL,KAAKopF,EAAU4qB,iBAAiBn5F,WAAW7a,KAAKmP,GAAYgiC,KAS/D73C,EAAAA,gBAAkB,SAAS6V,GAEtC,OAAyB,KAArBA,EAAU1V,QAAsC,KAArB0V,EAAU1V,SAIlC2vF,EAAUyqB,gBAAgBh5F,WAAW7a,KAAKmP,KAWtC7V,EAAAA,kBAAoB,SAC/B6V,EACA+mG,EACA/kE,GAEA,OAAOnmC,EAAOhL,KACZopF,EAAUgtB,kBAAkBv7F,WAAW7a,KAAKmP,GAAY0L,WAAW7a,KAAKk2G,GAAQ/kE,KAYvE73C,EAAAA,kBAAoB,SAC/B6V,EACA+mG,EACA/kE,GAEA,OAAOnmC,EAAOhL,KACZopF,EAAUitB,kBAAkBx7F,WAAW7a,KAAKmP,GAAY0L,WAAW7a,KAAKk2G,GAAQ/kE,KAWvE73C,EAAAA,iBAAmB,SAASi9G,EAAsBplE,GAC7D,IAAM1wC,EAAqB,GAK3B,OAJA81G,EAAWx1G,SAAQ,SAACoO,GAClB1O,EAAKvE,KAAK2e,WAAW7a,KAAKmP,OAGrBnE,EAAOhL,KAAKopF,EAAUktB,iBAAiB71G,EAAM0wC,KASzC73C,EAAAA,mBAAqB,SAASyiC,GACzC,OAAO/wB,EAAOhL,KAAKopF,EAAUotB,mBAAmB37F,WAAW7a,KAAK+7B,MASrDziC,EAAAA,gBAAkB,SAASyiC,GACtC,OAAO/wB,EAAOhL,KAAKopF,EAAUqtB,gBAAgB57F,WAAW7a,KAAK+7B,MASlDziC,EAAAA,gBAAkB,SAASyiC,GACtC,OAAO/wB,EAAOhL,KAAKopF,EAAUstB,gBAAgB77F,WAAW7a,KAAK+7B,MASlDziC,EAAAA,mBAAqB,SAASyiC,GAIzC,GAAyB,IAArBA,EAAUtiC,OACZ,MAAM,IAAIw9D,WAAW,+BAGvB,IAAM2/C,EAAShsD,EAAI+rD,mBAAmB56E,GACtC,GAAe,OAAX66E,EACF,MAAM,IAAIzwG,MAAM,gCAGlB,OAAOyvG,EAAYc,gBAAgBE,IAWxBt9G,EAAAA,KAAO,SAClBsZ,EACArD,EACA2rB,GAEA,GAAgB,OAAZA,EACF,MAAM,IAAIz/B,UAAU,+BAGtB,IAAIo7G,OAAyCv7G,EAE7C,GAAI4/B,EAAS,CAGX,GAFA27E,EAAc,GAEO,OAAjB37E,EAAQvvB,KAEV,MAAM,IAAIlQ,UAAU,mCAGtB,GAAIy/B,EAAQvvB,KAAM,CAChB,GAA2B,IAAvBuvB,EAAQvvB,KAAKlS,OACf,MAAM,IAAIw9D,WAAW,kCAGvB4/C,EAAYlrG,KAAO,IAAIkP,WAAWqgB,EAAQvvB,MAG5C,GAAwB,OAApBuvB,EAAQ47E,QACV,MAAM,IAAIr7G,UAAU,wCAGlBy/B,EAAQ47E,UAEVD,EAAYC,QAAU,SACpBlkG,EACArD,EACA+hE,EACA3lE,EACAorG,GAEA,IAAMC,EAAoC,MAAR1lC,EAAetmE,EAAOhL,KAAKsxE,GAAQ,KAC/D2lC,EAAoC,MAARtrG,EAAeX,EAAOhL,KAAK2L,GAAQ,KAEjEy/C,EAAiBpgD,EAAOhL,KAAK,IAYjC,OAVIk7B,EAAQ47E,UACV1rD,EAASlwB,EAAQ47E,QACf9rG,EAAOhL,KAAK4S,GACZ5H,EAAOhL,KAAKuP,GACZynG,EACAC,EACAF,IAIG,IAAIl8F,WAAWuwC,KAK5B,IAAMtZ,EAAMs3C,EAAU8tB,UACpBr8F,WAAW7a,KAAK4S,GAChBiI,WAAW7a,KAAKuP,GAChBsnG,GAGF,MAAO,CACL96E,UAAW/wB,EAAOhL,KAAK8xC,EAAI/V,WAC3Bq4E,SAAUtiE,EAAIqB,QAYL75C,EAAAA,OAAS,SAASsZ,EAAiBmpB,EAAmB5sB,GACjE,OAAOi6E,EAAU+tB,YAAYt8F,WAAW7a,KAAK+7B,GAAYlhB,WAAW7a,KAAK4S,GAAUzD,IAYxE7V,EAAAA,QAAU,SACrBsZ,EACAmpB,EACAoX,EACAhC,GAEA,OAAOnmC,EAAOhL,KACZopF,EAAUguB,aAAav8F,WAAW7a,KAAK+7B,GAAYoX,EAAOt4B,WAAW7a,KAAK4S,GAAUu+B,KAW3E73C,EAAAA,KAAO,SAAS6V,EAAmBI,GAE9C,OAAOvE,EAAOhL,KAAKopF,EAAUiuB,KAAKx8F,WAAW7a,KAAKmP,GAAY0L,WAAW7a,KAAKuP,GAAa,MAGhFjW,EAAAA,WAAa,SACxB6V,EACAI,EACA4hC,GAKA,GAAyB,KAArBhiC,EAAU1V,QAAsC,KAArB0V,EAAU1V,OACvC,MAAM,IAAIw9D,WAAW,gCAIvB,GAA0B,KAAtB1nD,EAAW9V,OACb,MAAM,IAAIw9D,WAAW,iCAGvB,OAAOjsD,EAAOhL,KACZ41G,EAAY0B,WAAWz8F,WAAW7a,KAAKmP,GAAY0L,WAAW7a,KAAKuP,GAAa4hC,gHClZpF,IAAMomE,EAAmCvsG,EAAOhL,KAAK,CAEnD,GACA,IACA,IACA,EACA,EACA,EACA,EACA,GAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,IACA,GACA,IACA,GACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,EACA,EACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,IACA,IACA,GACA,GACA,GACA,EACA,EACA,EACA,IACA,GACA,EACA,GACA,EAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,IAGIw3G,EAAqCxsG,EAAOhL,KAAK,CAErD,GACA,IACA,EACA,GACA,EACA,EACA,EACA,EACA,GAEA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EAEA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,EACA,EACA,GACA,GACA,EACA,EACA,GACA,IACA,GACA,IACA,GACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,GACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,EACA,EACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,GACA,GACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,IACA,GACA,GACA,EACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,GACA,IACA,GACA,IACA,IACA,IACA,GACA,IACA,IACA,EACA,GACA,EACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,IACA,GACA,IACA,GACA,IACA,IACA,GACA,I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,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAE1L,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,EAAM,EAAM,GAAM,GAAM,EAAM,EAAM,GAAM,IAAM,GAAM,IAAM,GAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,EAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,EAAM,EAAM,EAAM,IAAM,GAAM,EAAM,GAAM,EAExgC,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,E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AG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,EAAE,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,EAAE,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,IAAI,IAAI,GAAG,GAAG,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,GAAG,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,IAAI,MAG/6xC,SAASoJ,EAAQpwG,GACf,OAAIA,GAAa,OAEXA,GAAa,QAAWA,GAAa,OAChC,SACF,EAEFm8E,EAAOg0B,EAAWnwG,GAAa,IAAgB,GAAZA,GAG5C,MAAO,CACLqwG,OAbe,gxxBAcfD,QAASA,GA3uByBpqC,IAA1B,QAAC,OAAD,yFCJJsqC,EAAS,WAGT7yH,EAAO,GAUP8yH,EAAgB,QAChBC,EAAgB,aAChBC,EAAkB,4BAGlBlkH,EAAS,CACd,SAAY,kDACZ,YAAa,iDACb,gBAAiB,iBAKZkV,EAAQpU,KAAKoU,MACbivG,EAAqBn5G,OAAO0I,aAUlC,SAAS7mB,EAAMuS,GACd,MAAM,IAAI8pD,WAAWlpD,EAAOZ,IA8B7B,SAASglH,EAAUhsG,EAAQnrB,GAC1B,IAAM+pE,EAAQ5+C,EAAOzD,MAAM,KACvBnkB,EAAS,GACTwmE,EAAMtrE,OAAS,IAGlB8E,EAASwmE,EAAM,GAAK,IACpB5+C,EAAS4+C,EAAM,IAIhB,IACMqtD,EA/BP,SAAar3F,EAAO//B,GAGnB,IAFA,IAAMuD,EAAS,GACX9E,EAASshC,EAAMthC,OACZA,KACN8E,EAAO9E,GAAUuB,EAAG+/B,EAAMthC,IAE3B,OAAO8E,EAyBSkI,EAFhB0f,EAASA,EAAOxM,QAAQs4G,EAAiB,MACnBvvG,MAAM,KACA1nB,GAAIge,KAAK,KACrC,OAAOza,EAAS6zH,EAgBjB,SAASC,EAAWlsG,GAInB,IAHA,IAAMvG,EAAS,GACXohD,EAAU,EACRvnE,EAAS0sB,EAAO1sB,OACfunE,EAAUvnE,GAAQ,CACxB,IAAMkB,EAAQwrB,EAAO/E,WAAW4/C,KAChC,GAAIrmE,GAAS,OAAUA,GAAS,OAAUqmE,EAAUvnE,EAAQ,CAE3D,IAAM64H,EAAQnsG,EAAO/E,WAAW4/C,KACR,QAAX,MAARsxD,GACJ1yG,EAAO1jB,OAAe,KAARvB,IAAkB,KAAe,KAAR23H,GAAiB,QAIxD1yG,EAAO1jB,KAAKvB,GACZqmE,UAGDphD,EAAO1jB,KAAKvB,GAGd,OAAOilB,EAWR,IAmCM2yG,EAAe,SAASC,EAAOC,GAGpC,OAAOD,EAAQ,GAAK,IAAMA,EAAQ,MAAgB,GAARC,IAAc,IAQnDC,EAAQ,SAASj8F,EAAOk8F,EAAWC,GACxC,IAAInqG,EAAI,EAGR,IAFAgO,EAAQm8F,EAAY3vG,EAAMwT,EA1Kd,KA0K8BA,GAAS,EACnDA,GAASxT,EAAMwT,EAAQk8F,GACOl8F,EAAQo8F,IAA2BpqG,GAAKxpB,EACrEw3B,EAAQxT,EAAMwT,EA3JMx3B,IA6JrB,OAAOgkB,EAAMwF,EAAI,GAAsBgO,GAASA,EAhLpC,MA0LP5kB,EAAS,SAASqD,GAEvB,IAtD6BsM,EAsDvB5B,EAAS,GACTk1C,EAAc5/C,EAAMzb,OACtBC,EAAI,EACJ+D,EA5LY,IA6LZq1H,EA9Le,GAoMfC,EAAQ79G,EAAMggE,YAlMD,KAmMb69C,EAAQ,IACXA,EAAQ,GAGT,IAAK,IAAItyG,EAAI,EAAGA,EAAIsyG,IAAStyG,EAExBvL,EAAMkM,WAAWX,IAAM,KAC1B7lB,EAAM,aAEPglB,EAAO1jB,KAAKgZ,EAAMkM,WAAWX,IAM9B,IAAK,IAAIrW,EAAQ2oH,EAAQ,EAAIA,EAAQ,EAAI,EAAG3oH,EAAQ0qD,GAAwC,CAQ3F,IADA,IAAIk+D,EAAOt5H,EACFytB,EAAI,EAAGsB,EAAIxpB,GAA0BwpB,GAAKxpB,EAAM,CAEpDmL,GAAS0qD,GACZl6D,EAAM,iBAGP,IAAM43H,GA9FqBhxG,EA8FAtM,EAAMkM,WAAWhX,MA7F9B,GAAO,GACfoX,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEhBA,EAAY,GAAO,GACfA,EAAY,GAEbviB,GAsFDuzH,GAASvzH,GAAQuzH,EAAQvvG,GAAO6uG,EAASp4H,GAAKytB,KACjDvsB,EAAM,YAGPlB,GAAK84H,EAAQrrG,EACb,IAAM2C,EAAIrB,GAAKqqG,EA7OL,EA6OoBrqG,GAAKqqG,EA5OzB,MA4O8CrqG,EAAIqqG,EAE5D,GAAIN,EAAQ1oG,EACX,MAGD,IAAMmpG,EAAah0H,EAAO6qB,EACtB3C,EAAIlE,EAAM6uG,EAASmB,IACtBr4H,EAAM,YAGPusB,GAAK8rG,EAIN,IAAM5qG,EAAMzI,EAAOnmB,OAAS,EAC5Bq5H,EAAOJ,EAAMh5H,EAAIs5H,EAAM3qG,EAAa,GAAR2qG,GAIxB/vG,EAAMvpB,EAAI2uB,GAAOypG,EAASr0H,GAC7B7C,EAAM,YAGP6C,GAAKwlB,EAAMvpB,EAAI2uB,GACf3uB,GAAK2uB,EAGLzI,EAAO1P,OAAOxW,IAAK,EAAG+D,GAIvB,OAAOsb,OAAOm6G,cAAP,MAAAn6G,OAAwB6G,IAU1BlN,EAAS,SAASwC,GACvB,IAD8B,EACxB0K,EAAS,GAMXk1C,GAHJ5/C,EAAQm9G,EAAWn9G,IAGKzb,OAGpBgE,EA5RY,IA6RZg5B,EAAQ,EACRq8F,EA/Re,GAmRW,IAeH59G,GAfG,IAe9B,2BAAkC,KAAvByjF,EAAuB,QAC7BA,EAAe,KAClB/4E,EAAO1jB,KAAKg2H,EAAmBv5B,KAjBH,8BAqB9B,IAAIw6B,EAAcvzG,EAAOnmB,OACrB25H,EAAiBD,EAWrB,IALIA,GACHvzG,EAAO1jB,KA9SS,KAkTVk3H,EAAiBt+D,GAAa,CAIpC,IAJoC,EAIhCniC,EAAIm/F,EAJ4B,IAKT58G,GALS,IAKpC,2BAAkC,KAAvByjF,EAAuB,QAC7BA,GAAgBl7F,GAAKk7F,EAAehmE,IACvCA,EAAIgmE,IAP8B,8BAapC,IAAM06B,EAAwBD,EAAiB,EAC3CzgG,EAAIl1B,EAAIwlB,GAAO6uG,EAASr7F,GAAS48F,IACpCz4H,EAAM,YAGP67B,IAAU9D,EAAIl1B,GAAK41H,EACnB51H,EAAIk1B,EAnBgC,UAqBTzd,GArBS,IAqBpC,2BAAkC,KAAvByjF,EAAuB,QAIjC,GAHIA,EAAel7F,KAAOg5B,EAAQq7F,GACjCl3H,EAAM,YAEH+9F,GAAgBl7F,EAAG,CAGtB,IADA,IAAIgsB,EAAIgN,EACChO,EAAIxpB,GAA0BwpB,GAAKxpB,EAAM,CACjD,IAAM6qB,EAAIrB,GAAKqqG,EArVP,EAqVsBrqG,GAAKqqG,EApV3B,MAoVgDrqG,EAAIqqG,EAC5D,GAAIrpG,EAAIK,EACP,MAED,IAAMwpG,EAAU7pG,EAAIK,EACdmpG,EAAah0H,EAAO6qB,EAC1BlK,EAAO1jB,KACNg2H,EAAmBK,EAAazoG,EAAIwpG,EAAUL,EAAY,KAE3DxpG,EAAIxG,EAAMqwG,EAAUL,GAGrBrzG,EAAO1jB,KAAKg2H,EAAmBK,EAAa9oG,EAAG,KAC/CqpG,EAAOJ,EAAMj8F,EAAO48F,EAAuBD,GAAkBD,GAC7D18F,EAAQ,IACN28F,IA5CgC,gCAgDlC38F,IACAh5B,EAGH,OAAOmiB,EAAO5G,KAAK,KA4Cdu6G,EAAW,CAMhB,QAAW,QAQX,KAAQ,CACP,OAAUlB,EACV,OA3SiB,SAAAt3F,GAAK,OAAIhiB,OAAOm6G,cAAP,MAAAn6G,OAAM,EAAkBgiB,MA6SnD,OAAUlpB,EACV,OAAUa,EACV,QA/Be,SAASwC,GACxB,OAAOi9G,EAAUj9G,GAAO,SAASiR,GAChC,OAAO6rG,EAAchwH,KAAKmkB,GACvB,OAASzT,EAAOyT,GAChBA,MA4BJ,UAnDiB,SAASjR,GAC1B,OAAOi9G,EAAUj9G,GAAO,SAASiR,GAChC,OAAO4rG,EAAc/vH,KAAKmkB,GACvBtU,EAAOsU,EAAOrkB,MAAM,GAAG2gB,eACvB0D,OAkDL9sB,EAAOC,QAAUi6H,yBCvbhB,QAGGhvE,EAAO,CAAC,SAAY,eAAd,gBAAsCgvE,EAAUC,GACpD,OASE,SAASD,EAAUC,GAEzB,SAASC,EAAS5mE,EAAOwvC,EAAcC,GAGrC,IAFA,IAAIo3B,EAAS,GACTlxG,EAAQ+wG,EAASI,KAAK9hH,OAAOg7C,GACxBnzD,EAAI,EAAGA,EAAI8oB,EAAM/oB,OAAQC,IAAK,CACrC,IAAIk6H,EAAKpxG,EAAM9oB,GACXu2H,EAAKsD,EAASI,KAAKjhH,OAAO,CAAC8P,EAAM9oB,KACjCm6H,EAAYL,EAAS5B,QAAQgC,GAC7Br8D,EAASs8D,GAAa,GACtB90F,EAAQ80F,GAAa,GAAM,EAC3BzpH,EAASypH,GAAa,EAAK,MAC3Bp6H,EAAqB,GAAZo6H,EACTl5H,EAAQ64H,EAAS3B,OAAO3mH,OAAOd,EAAO3Q,GAC1C,GAAa,IAATslC,GAAes9D,GAAyB,EAAR9kC,EAClC,MAAM,IAAIpxD,MAAM,gBAAkB8pH,GAElB,IAATlxF,EACP20F,EAAOx3H,KAAKvB,GAEI,IAATokC,EACP20F,EAAOx3H,KAAKogG,EAAe3hG,EAAQs1H,GAGnB,IAATlxF,GACP20F,EAAOx3H,KAAK+zH,GAKhB,OADeyD,EAAO16G,KAAK,IAAImI,UAAU,OAI3C,SAASszB,EAAQgvC,EAAQ6Y,EAAcD,QAEhB/gG,IAAjB+gG,IACFA,GAAe,GACjB,IAGIG,EAHai3B,EAAShwC,EAAQ4Y,EAAcC,GAGxB55E,MAAM,KAc9B,OAXA85E,EAASA,EAAO/1F,KAAI,SAASomD,GAQ3B,OAPIA,EAAMmtD,WAAW,QAEnB8Z,EADAjnE,EAAQ0mE,EAAS1hH,OAAOg7C,EAAMzyC,UAAU,IACnBiiF,GAAc,GAGnCy3B,EAAcjnE,EAAOwvC,EAAcC,GAE9BzvC,MAGK7zC,KAAK,KAGrB,SAAS86G,EAAcjnE,EAAOwvC,EAAcC,GAG1C,GAAiB,MAAbzvC,EAAM,IAA2B,MAAbA,EAAM,GAC5B,MAAM,IAAI1mD,MAAM,sBAAwB0mD,GAI1C,GAAIA,EAAMmtD,WAAW,MAAQntD,EAAMhU,SAAS,KAC1C,MAAM,IAAI1yC,MAAM,sBAAwB0mD,GAK1C,GAAIA,EAAMnkD,SAAS,KACjB,MAAM,IAAIvC,MAAM,sBAAwB0mD,GAE1C,GAAI4mE,EAAS5mE,EAAOwvC,EAAcC,KAAkBzvC,EAClD,MAAM,IAAI1mD,MAAM,sBAAwB0mD,GAI1C,IAAIojE,EAAKpjE,EAAMknE,YAAY,GAC3B,GAAIP,EAAS5B,QAAQ3B,GAAO,GAAO,GACjC,MAAM,IAAI9pH,MAAM,qCAAuC8pH,GAG3D,SAASnjB,EAAQrpB,EAAQvoD,QACP5/B,IAAZ4/B,IACFA,EAAU,IACZ,IAMIxhC,EANA4iG,IAAe,iBAAkBphE,IAAUA,EAAQohE,aACnDD,EAAe,iBAAkBnhE,GAAUA,EAAQmhE,aACnD23B,EAAkB,oBAAqB94F,GAAUA,EAAQ84F,gBAEzDC,EADSx/E,EAAQgvC,EAAQ6Y,EAAcD,GAAc35E,MAAM,KACtCjc,IAAI8sH,EAASW,SAClCC,EAAcF,EAAYj7G,KAAK,KAEnC,GAAIg7G,EAAiB,CACnB,GAAIG,EAAY16H,OAAS,GAAK06H,EAAY16H,OAAS,IACjD,MAAM,IAAI0M,MAAM,8BAAgCguH,GAElD,IAAKz6H,EAAI,EAAGA,EAAIu6H,EAAYx6H,OAAQC,IAAK,CACvC,IAAImzD,EAAQonE,EAAYv6H,GACxB,GAAImzD,EAAMpzD,OAAS,GAAKozD,EAAMpzD,OAAS,GACrC,MAAM,IAAI0M,MAAM,+BAAiC0mD,IAGvD,OAAOsnE,EAGT,SAAS/3B,EAAU3Y,EAAQvoD,GAIzB,YAHgB5/B,IAAZ4/B,IACFA,EAAU,IAELuZ,EAAQgvC,GAAQ,EADJ,iBAAkBvoD,GAAUA,EAAQmhE,cAIzD,MAAO,CACLD,UAAWA,EACX0Q,QAASA,GA7HAtlB,CAAQ+rC,EAAUC,IADrB,gDCFVl6H,EAAQg8E,KAAO,SAAUlqB,EAAQ/vC,EAAQ+4G,EAAMC,EAAMC,GACnD,IAAI52H,EAAGi1B,EACH4hG,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBE,GAAS,EACTh7H,EAAI06H,EAAQE,EAAS,EAAK,EAC1BzqF,EAAIuqF,GAAQ,EAAI,EAChB52H,EAAI4tD,EAAO/vC,EAAS3hB,GAOxB,IALAA,GAAKmwC,EAELnsC,EAAIF,GAAM,IAAOk3H,GAAU,EAC3Bl3H,KAAQk3H,EACRA,GAASH,EACFG,EAAQ,EAAGh3H,EAAS,IAAJA,EAAW0tD,EAAO/vC,EAAS3hB,GAAIA,GAAKmwC,EAAG6qF,GAAS,GAKvE,IAHA/hG,EAAIj1B,GAAM,IAAOg3H,GAAU,EAC3Bh3H,KAAQg3H,EACRA,GAASL,EACFK,EAAQ,EAAG/hG,EAAS,IAAJA,EAAWy4B,EAAO/vC,EAAS3hB,GAAIA,GAAKmwC,EAAG6qF,GAAS,GAEvE,GAAU,IAANh3H,EACFA,EAAI,EAAI+2H,MACH,IAAI/2H,IAAM82H,EACf,OAAO7hG,EAAIgiG,IAAsB1gE,EAAAA,GAAdz2D,GAAK,EAAI,GAE5Bm1B,GAAQ9jB,KAAKwV,IAAI,EAAGgwG,GACpB32H,GAAQ+2H,EAEV,OAAQj3H,GAAK,EAAI,GAAKm1B,EAAI9jB,KAAKwV,IAAI,EAAG3mB,EAAI22H,IAG5C/6H,EAAQysD,MAAQ,SAAUqF,EAAQzwD,EAAO0gB,EAAQ+4G,EAAMC,EAAMC,GAC3D,IAAI52H,EAAGi1B,EAAG/Y,EACN26G,EAAiB,EAATD,EAAcD,EAAO,EAC7BG,GAAQ,GAAKD,GAAQ,EACrBE,EAAQD,GAAQ,EAChBI,EAAe,KAATP,EAAcxlH,KAAKwV,IAAI,GAAI,IAAMxV,KAAKwV,IAAI,GAAI,IAAM,EAC1D3qB,EAAI06H,EAAO,EAAKE,EAAS,EACzBzqF,EAAIuqF,EAAO,GAAK,EAChB52H,EAAI7C,EAAQ,GAAgB,IAAVA,GAAe,EAAIA,EAAQ,EAAK,EAAI,EAmC1D,IAjCAA,EAAQkU,KAAKub,IAAIzvB,GAEbi9D,MAAMj9D,IAAUA,IAAUs5D,EAAAA,GAC5BthC,EAAIilC,MAAMj9D,GAAS,EAAI,EACvB+C,EAAI82H,IAEJ92H,EAAImR,KAAKoU,MAAMpU,KAAKsU,IAAIxoB,GAASkU,KAAK6/B,KAClC/zC,GAASif,EAAI/K,KAAKwV,IAAI,GAAI3mB,IAAM,IAClCA,IACAkc,GAAK,IAGLjf,GADE+C,EAAI+2H,GAAS,EACNG,EAAKh7G,EAELg7G,EAAK/lH,KAAKwV,IAAI,EAAG,EAAIowG,IAEpB76G,GAAK,IACflc,IACAkc,GAAK,GAGHlc,EAAI+2H,GAASD,GACf7hG,EAAI,EACJj1B,EAAI82H,GACK92H,EAAI+2H,GAAS,GACtB9hG,GAAMh4B,EAAQif,EAAK,GAAK/K,KAAKwV,IAAI,EAAGgwG,GACpC32H,GAAQ+2H,IAER9hG,EAAIh4B,EAAQkU,KAAKwV,IAAI,EAAGowG,EAAQ,GAAK5lH,KAAKwV,IAAI,EAAGgwG,GACjD32H,EAAI,IAID22H,GAAQ,EAAGjpE,EAAO/vC,EAAS3hB,GAAS,IAAJi5B,EAAUj5B,GAAKmwC,EAAGlX,GAAK,IAAK0hG,GAAQ,GAI3E,IAFA32H,EAAKA,GAAK22H,EAAQ1hG,EAClB4hG,GAAQF,EACDE,EAAO,EAAGnpE,EAAO/vC,EAAS3hB,GAAS,IAAJgE,EAAUhE,GAAKmwC,EAAGnsC,GAAK,IAAK62H,GAAQ,GAE1EnpE,EAAO/vC,EAAS3hB,EAAImwC,IAAU,IAAJrsC,sBCnFC,oBAAlBX,OAAO2C,OAEhBnG,EAAOC,QAAU,SAAkBisB,EAAMC,GACnCA,IACFD,EAAKE,OAASD,EACdD,EAAKlpB,UAAYQ,OAAO2C,OAAOgmB,EAAUnpB,UAAW,CAClDqC,YAAa,CACX/D,MAAO4qB,EACP7oB,YAAY,EACZE,UAAU,EACVD,cAAc,OAOtBtD,EAAOC,QAAU,SAAkBisB,EAAMC,GACvC,GAAIA,EAAW,CACbD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAASrpB,UAAYmpB,EAAUnpB,UAC/BkpB,EAAKlpB,UAAY,IAAIqpB,EACrBH,EAAKlpB,UAAUqC,YAAc6mB,wCCrBnC,IAAIsvG,EAAiBvxH,EAAQ,KAARA,GAGjBwxH,EAFYxxH,EAAQ,MAERyxH,CAAU,6BAEtBC,EAAsB,SAAqBr6H,GAC9C,QAAIk6H,GAAkBl6H,GAA0B,kBAAVA,GAAsB0C,OAAOglE,eAAe1nE,IAGtD,uBAArBm6H,EAAUn6H,IAGds6H,EAAoB,SAAqBt6H,GAC5C,QAAIq6H,EAAoBr6H,IAGP,OAAVA,GACW,kBAAVA,GACiB,kBAAjBA,EAAMlB,QACbkB,EAAMlB,QAAU,GACK,mBAArBq7H,EAAUn6H,IACkB,sBAA5Bm6H,EAAUn6H,EAAMu6H,SAGdC,EAA6B,WAChC,OAAOH,EAAoB75H,WADK,GAIjC65H,EAAoBC,kBAAoBA,EAExC57H,EAAOC,QAAU67H,EAA4BH,EAAsBC,qBChCnE57H,EAAOC,QAIP,SAAqB0B,GACnB,IAAKA,EACH,OAAO,EAET,IAAImrB,EAAS1mB,EAAS1B,KAAK/C,GAC3B,MAAkB,sBAAXmrB,GACU,oBAAPnrB,GAAgC,oBAAXmrB,GACV,qBAAXF,SAENjrB,IAAOirB,OAAO0tB,YACd34C,IAAOirB,OAAOmvG,OACdp6H,IAAOirB,OAAOovG,SACdr6H,IAAOirB,OAAOohE,SAdpB,IAAI5nF,EAAW5C,OAAOR,UAAUoD,6CCAhC,IAcI61H,EAdA1nC,EAAQ/wF,OAAOR,UAAUoD,SACzB81H,EAAUp5H,SAASE,UAAUoD,SAC7B+1H,EAAY,sBACZX,EAAiBvxH,EAAQ,KAARA,GACjBgkH,EAAWzqH,OAAOsB,eAYtB9E,EAAOC,QAAU,SAA6B0B,GAC7C,GAAkB,oBAAPA,EACV,OAAO,EAER,GAAIw6H,EAAUxzH,KAAKuzH,EAAQx3H,KAAK/C,IAC/B,OAAO,EAER,IAAK65H,EAEJ,MAAe,+BADLjnC,EAAM7vF,KAAK/C,GAGtB,IAAKssH,EACJ,OAAO,EAER,GAAiC,qBAAtBgO,EAAmC,CAC7C,IAAIG,EA1BiB,WACtB,IAAKZ,EACJ,OAAO,EAER,IACC,OAAO14H,SAAS,wBAATA,GACN,MAAOuB,KAoBYg4H,GACpBJ,IAAoBG,GAAgBnO,EAASmO,GAE9C,OAAOnO,EAAStsH,KAAQs6H,sBC9BzBj8H,EAAOC,QAAU,SAAuBynB,GACtC,GAAmB,kBAARA,EACT,MAAM,IAAI5a,MAAM,2EAA8E4a,EAAO,mCAGvG,MAA2B,OAApBA,EAAIjf,MAAM,EAAG,mCCPtBzI,EAAOC,QAAU,SAAeqB,GAC/B,OAAOA,IAAUA,sCCHlB,IAAI0iF,EAAW/5E,EAAQ,OACnBihD,EAASjhD,EAAQ,MAEjBqjH,EAAiBrjH,EAAQ,MACzBqyH,EAAcryH,EAAQ,OACtBsyH,EAAOtyH,EAAQ,MAEfk1F,EAAWnb,EAASs4C,IAAeprH,QAIvCg6C,EAAOi0C,EAAU,CAChBm9B,YAAaA,EACbhP,eAAgBA,EAChBiP,KAAMA,IAGPv8H,EAAOC,QAAUk/F,sCCjBjB,IAAImuB,EAAiBrjH,EAAQ,MAE7BjK,EAAOC,QAAU,WAChB,OAAIiR,OAAOqtD,OAASrtD,OAAOqtD,MAAM+8D,OAASpqH,OAAOqtD,MAAM,KAC/CrtD,OAAOqtD,MAER+uD,sCCNR,IAAIpiE,EAASjhD,EAAQ,MACjBqyH,EAAcryH,EAAQ,OAI1BjK,EAAOC,QAAU,WAChB,IAAIk/F,EAAWm9B,IAMf,OALApxE,EAAOh6C,OAAQ,CAAEqtD,MAAO4gC,GAAY,CACnC5gC,MAAO,WACN,OAAOrtD,OAAOqtD,QAAU4gC,KAGnBA,uCCZR,IAAIz3F,EAAUuC,EAAQ,OAClBuyH,EAAuBvyH,EAAQ,OAC/ByxH,EAAYzxH,EAAQ,OAEpBwxH,EAAYC,EAAU,6BACtBF,EAAiBvxH,EAAQ,KAARA,GAEjByyB,EAA0B,qBAAfkiE,WAA6B19C,EAAAA,EAAS09C,WACjD69B,EAAcD,IAEdv4C,EAAWy3C,EAAU,2BAA2B,IAAS,SAAiBh6F,EAAOpgC,GACpF,IAAK,IAAIjB,EAAI,EAAGA,EAAIqhC,EAAMthC,OAAQC,GAAK,EACtC,GAAIqhC,EAAMrhC,KAAOiB,EAChB,OAAOjB,EAGT,OAAQ,GAELq8H,EAAShB,EAAU,0BACnBiB,EAAY,GACZC,EAAO3yH,EAAQ,OACfnF,EAAiBtB,OAAOsB,eACxB02H,GAAkBoB,GAAQ93H,GAC7B4C,EAAQ+0H,GAAa,SAAUI,GAC9B,IAAI38H,EAAM,IAAIw8B,EAAEmgG,GAChB,GAAI74H,OAAOglE,eAAe9oE,EAAK,CAC9B,IAAI09E,EAAQ94E,EAAe5E,GACvBkD,EAAaw5H,EAAKh/C,EAAO55E,OAAOglE,aACpC,IAAK5lE,EAAY,CAChB,IAAI+xF,EAAarwF,EAAe84E,GAChCx6E,EAAaw5H,EAAKznC,EAAYnxF,OAAOglE,aAEtC2zD,EAAUE,GAAcz5H,EAAWqC,QAiBtCzF,EAAOC,QAAU,SAAsBqB,GACtC,IAAKA,GAA0B,kBAAVA,EAAsB,OAAO,EAClD,IAAKk6H,KAAoBx3H,OAAOglE,eAAe1nE,GAAQ,CACtD,IAAIyoD,EAAM2yE,EAAOjB,EAAUn6H,GAAQ,GAAI,GACvC,OAAO2iF,EAASw4C,EAAa1yE,IAAQ,EAEtC,QAAK6yE,GAlBe,SAA2Bt7H,GAC/C,IAAIw7H,GAAU,EAQd,OAPAp1H,EAAQi1H,GAAW,SAAUzgB,EAAQ2gB,GACpC,IAAKC,EACJ,IACCA,EAAU5gB,EAAOx3G,KAAKpD,KAAWu7H,EAChC,MAAOx4H,QAGJy4H,EAUAC,CAAez7H,uBC1DvBtB,EAAOC,QAAe+8H,EACtBA,EAAa1kE,OAAS2kE,EACtBD,EAAav6G,MAASy6G,EAEtB,IAAI92H,EAAW5C,OAAOR,UAAUoD,SAC5BiD,EAAQ,CACR,sBAAsB,EACtB,uBAAuB,EACvB,uBAAuB,EACvB,uBAAuB,EACvB,8BAA8B,EAC9B,wBAAwB,EACxB,wBAAwB,EACxB,yBAAyB,EACzB,yBAAyB,GAG7B,SAAS2zH,EAAa98H,GACpB,OACK+8H,EAAmB/8H,IACnBg9H,EAAkBh9H,GAIzB,SAAS+8H,EAAmB/8H,GAC1B,OACKA,aAAe6uH,WACf7uH,aAAe8uH,YACf9uH,aAAeouF,YACfpuF,aAAeshB,YACfthB,aAAegvH,mBACfhvH,aAAeivH,aACfjvH,aAAe6kG,aACf7kG,aAAe0uH,cACf1uH,aAAe2uH,aAItB,SAASqO,EAAkBh9H,GACzB,OAAOmJ,EAAMjD,EAAS1B,KAAKxE,wBCvC7B,IAAIkG,EAAW,GAAGA,SAElBpG,EAAOC,QAAUM,MAAME,SAAW,SAAUP,GAC1C,MAA6B,kBAAtBkG,EAAS1B,KAAKxE,+BCHvB,aASA,WACE,aAEA,IAAIi9H,EAAc,wBAEdC,EAA2B,kBAAXxwG,OAChBy2E,EAAO+5B,EAASxwG,OAAS,GACzBy2E,EAAKg6B,oBACPD,GAAS,GAEX,IAAIE,GAAcF,GAA0B,kBAATz8H,MACpB0iG,EAAKC,oBAAyC,kBAAZloD,GAAwBA,EAAQqG,UAAYrG,EAAQqG,SAASzhC,KAE5GqjF,EAAOniD,EAAAA,EACEo8E,IACTj6B,EAAO1iG,MAET,IAAI4iG,GAAaF,EAAKG,sBAAsDxjG,EAAOC,QAC/Es9H,EAAsCryE,EAAAA,KACtCsyE,GAAgBn6B,EAAKo6B,yBAAkD,qBAAhBtjD,YACvDspB,EAAY,mBAAmBp6E,MAAM,IAErCq0G,EAAiB,CAAC,EAAG,KAAM,OAAQ,UAGnCh6B,EAAQ,CAAC,EAAG,EAAG,GAAI,IACnBC,EAAK,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WAC7E,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAC1E,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAClE,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WACtE,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,YACpEC,EAAO,CAAC,IAAK,IAAK,IAAK,KACvB+5B,EAAa,CAAC,IAAK,KACnB95B,EAAe,CAAC,MAAO,SAAU,cAAe,QAAS,UACzD+5B,EAAiB,CACnB,IAAO,IACP,IAAO,MAGLv6B,EAAKC,oBAAuB/iG,MAAME,UACpCF,MAAME,QAAU,SAAU6E,GACxB,MAA+C,mBAAxC9B,OAAOR,UAAUoD,SAAS1B,KAAKY,MAItCk4H,IAAiBn6B,EAAKw6B,iCAAoC1jD,YAAYC,SACxED,YAAYC,OAAS,SAAU90E,GAC7B,MAAsB,kBAARA,GAAoBA,EAAIysD,QAAUzsD,EAAIysD,OAAO1sD,cAAgB80E,cAgG/E,IA5FA,IAAI2pB,EAAqB,SAAU7sF,EAAMuY,EAASu0E,GAChD,OAAO,SAAUxqF,GACf,OAAO,IAAIyqF,EAAO/sF,EAAMuY,EAASvY,GAAMq8B,OAAO/5B,GAASwqF,OAIvDE,EAA0B,SAAUhtF,EAAMuY,EAASu0E,GACrD,OAAO,SAAUxqF,EAAS2qF,GACxB,OAAO,IAAIF,EAAO/sF,EAAMuY,EAAS00E,GAAY5wD,OAAO/5B,GAASwqF,OAI7D+5B,EAA2B,SAAU7mH,EAAMuY,EAASu0E,GACtD,OAAO,SAAUxqF,EAAS2qF,EAAY9/F,EAAGD,GACvC,OAAO0oD,EAAQ,SAAW51C,GAAMq8B,OAAO/5B,EAAS2qF,EAAY9/F,EAAGD,GAAG4/F,OAIlEg6B,EAAyB,SAAU9mH,EAAMuY,EAASu0E,GACpD,OAAO,SAAU5iG,EAAKoY,EAAS2qF,EAAY//F,GACzC,OAAO0oD,EAAQ,OAAS51C,GAAMq8B,OAAOnyC,EAAKoY,EAAS2qF,EAAY//F,GAAG4/F,OAIlEi6B,EAAsB,SAAUnwE,EAAQs2C,EAAcltF,EAAMuY,GAC9D,IAAK,IAAInvB,EAAI,EAAGA,EAAIwjG,EAAazjG,SAAUC,EAAG,CAC5C,IAAIyT,EAAO+vF,EAAaxjG,GACxBwtD,EAAO/5C,GAAQqwF,EAAaltF,EAAMuY,EAAS1b,GAE7C,OAAO+5C,GAGLs2C,EAAe,SAAUltF,EAAMuY,GACjC,IAAIq+B,EAASi2C,EAAmB7sF,EAAMuY,EAAS,OAO/C,OANAq+B,EAAO1nD,OAAS,WACd,OAAO,IAAI69F,EAAO/sF,EAAMuY,EAASvY,IAEnC42C,EAAOva,OAAS,SAAU/5B,GACxB,OAAOs0C,EAAO1nD,SAASmtC,OAAO/5B,IAEzBykH,EAAoBnwE,EAAQi2C,EAAoB7sF,EAAMuY,IA0C3D0nD,EAAa,CACf,CAAExuE,KAAM,SAAU8mB,QA/GC,CAAC,EAAG,IAAK,MAAO,UA+GQvY,KAAM2sF,EAAMO,aAAcA,GACrE,CAAEz7F,KAAM,OAAQ8mB,QA/GJ,CAAC,EAAG,KAAM,OAAQ,WA+GIvY,KAAM2sF,EAAMO,aAAcA,GAC5D,CAAEz7F,KAAM,QAAS8mB,QAnHC,CAAC,GAAI,KAAM,QAAS,WAmHGvY,KAAM0mH,EAAYx5B,aA1CrC,SAAUltF,EAAMuY,GACtC,IAAIq+B,EAASo2C,EAAwBhtF,EAAMuY,EAAS,OAOpD,OANAq+B,EAAO1nD,OAAS,SAAU+9F,GACxB,OAAO,IAAIF,EAAO/sF,EAAMuY,EAAS00E,IAEnCr2C,EAAOva,OAAS,SAAU/5B,EAAS2qF,GACjC,OAAOr2C,EAAO1nD,OAAO+9F,GAAY5wD,OAAO/5B,IAEnCykH,EAAoBnwE,EAAQo2C,EAAyBhtF,EAAMuY,KAmClE,CAAE9mB,KAAM,SAAU8mB,QAASkuG,EAAgBzmH,KAAM0mH,EAAYx5B,aAhCtC,SAAUltF,EAAMuY,GACvC,IAAI1B,EAAI8vG,EAAe3mH,GACnB42C,EAASiwE,EAAyB7mH,EAAMuY,EAAS,OAWrD,OAVAq+B,EAAO1nD,OAAS,SAAU+9F,EAAY9/F,EAAGD,GACvC,OAAKC,GAAMD,EAGF,IAAI6/F,EAAO/sF,EAAMuY,EAAS00E,GAAY+5B,QAAQ,CAAC75H,EAAGD,GAAI2pB,GAFtD++B,EAAQ,QAAU51C,GAAM9Q,OAAO+9F,IAK1Cr2C,EAAOva,OAAS,SAAU/5B,EAAS2qF,EAAY9/F,EAAGD,GAChD,OAAO0pD,EAAO1nD,OAAO+9F,EAAY9/F,EAAGD,GAAGmvC,OAAO/5B,IAEzCykH,EAAoBnwE,EAAQiwE,EAA0B7mH,EAAMuY,KAoBnE,CAAE9mB,KAAM,OAAQ8mB,QAASkuG,EAAgBzmH,KAAM0mH,EAAYx5B,aAjBtC,SAAUltF,EAAMuY,GACrC,IAAI1B,EAAI8vG,EAAe3mH,GACnB42C,EAASkwE,EAAuB9mH,EAAMuY,EAAS,OAOnD,OANAq+B,EAAO1nD,OAAS,SAAUhF,EAAK+iG,EAAY//F,GACzC,OAAO,IAAI+5H,EAAKjnH,EAAMuY,EAAS00E,GAAY+5B,QAAQ,CAAC,OAAQ95H,GAAI2pB,GAAGmwG,QAAQ,CAAC98H,GAAM2sB,IAEpF+/B,EAAOva,OAAS,SAAUnyC,EAAKoY,EAAS2qF,EAAY//F,GAClD,OAAO0pD,EAAO1nD,OAAOhF,EAAK+iG,EAAY//F,GAAGmvC,OAAO/5B,IAE3CykH,EAAoBnwE,EAAQkwE,EAAwB9mH,EAAMuY,MAW/Dq9B,EAAU,GAAIu3C,EAAc,GAEvB/jG,EAAI,EAAGA,EAAI62E,EAAW92E,SAAUC,EAGvC,IAFA,IAAI+2E,EAAYF,EAAW72E,GACvB4W,EAAOmgE,EAAUngE,KACZmQ,EAAI,EAAGA,EAAInQ,EAAK7W,SAAUgnB,EAAG,CACpC,IAAIi9E,EAAajtB,EAAU1uE,KAAO,IAAMuO,EAAKmQ,GAG7C,GAFAg9E,EAAYvhG,KAAKwhG,GACjBx3C,EAAQw3C,GAAcjtB,EAAU+sB,aAAaltF,EAAKmQ,GAAIgwD,EAAU5nD,SACzC,SAAnB4nD,EAAU1uE,KAAiB,CAC7B,IAAIy1H,EAAgB/mD,EAAU1uE,KAAOuO,EAAKmQ,GAC1Cg9E,EAAYvhG,KAAKs7H,GACjBtxE,EAAQsxE,GAAiBtxE,EAAQw3C,IAKvC,SAASL,EAAO/sF,EAAMuY,EAAS00E,GAC7BtiG,KAAK0iG,OAAS,GACd1iG,KAAKuC,EAAI,GACTvC,KAAK4tB,QAAUA,EACf5tB,KAAKsiG,WAAaA,EAClBtiG,KAAK2iG,OAAQ,EACb3iG,KAAKw8H,WAAY,EACjBx8H,KAAKuM,MAAQ,EACbvM,KAAKsrB,MAAQ,EACbtrB,KAAK4iG,WAAc,MAAQvtF,GAAQ,IAAO,EAC1CrV,KAAK6iG,UAAY7iG,KAAK4iG,YAAc,EACpC5iG,KAAK8iG,aAAeR,GAAc,EAClCtiG,KAAK6pE,YAA2B,GAAby4B,IAAoB,EAEvC,IAAK,IAAI7jG,EAAI,EAAGA,EAAI,KAAMA,EACxBuB,KAAKuC,EAAE9D,GAAK,EAyQhB,SAAS69H,EAAKjnH,EAAMuY,EAAS00E,GAC3BF,EAAOt/F,KAAK9C,KAAMqV,EAAMuY,EAAS00E,GAtQnCF,EAAOhhG,UAAUswC,OAAS,SAAU/5B,GAClC,GAAI3X,KAAKw8H,UACP,MAAM,IAAItxH,MA/KO,2BAiLnB,IAAI63F,EAAW7wF,SAAcyF,EAC7B,GAAa,WAATzF,EAAmB,CACrB,GAAa,WAATA,EAWF,MAAM,IAAIhH,MAAMqwH,GAVhB,GAAgB,OAAZ5jH,EACF,MAAM,IAAIzM,MAAMqwH,GACX,GAAIK,GAAgBjkH,EAAQlU,cAAgB80E,YACjD5gE,EAAU,IAAIiI,WAAWjI,QACpB,IAAKhZ,MAAME,QAAQ8Y,MACnBikH,IAAiBrjD,YAAYC,OAAO7gE,IACvC,MAAM,IAAIzM,MAAMqwH,GAMtBx4B,GAAY,EAKd,IAHA,IACuDtkG,EAAGokB,EADtD6/E,EAAS1iG,KAAK0iG,OAAQG,EAAY7iG,KAAK6iG,UAAWrkG,EAASmZ,EAAQnZ,OACrEokG,EAAa5iG,KAAK4iG,WAAYzzF,EAAQ,EAAG5M,EAAIvC,KAAKuC,EAE7C4M,EAAQ3Q,GAAQ,CACrB,GAAIwB,KAAK2iG,MAGP,IAFA3iG,KAAK2iG,OAAQ,EACbD,EAAO,GAAK1iG,KAAKuM,MACZ9N,EAAI,EAAGA,EAAImkG,EAAa,IAAKnkG,EAChCikG,EAAOjkG,GAAK,EAGhB,GAAIskG,EACF,IAAKtkG,EAAIuB,KAAKsrB,MAAOnc,EAAQ3Q,GAAUC,EAAIokG,IAAa1zF,EACtDuzF,EAAOjkG,GAAK,IAAMkZ,EAAQxI,IAAU2yF,EAAY,EAANrjG,UAG5C,IAAKA,EAAIuB,KAAKsrB,MAAOnc,EAAQ3Q,GAAUC,EAAIokG,IAAa1zF,GACtD0T,EAAOlL,EAAQwO,WAAWhX,IACf,IACTuzF,EAAOjkG,GAAK,IAAMokB,GAAQi/E,EAAY,EAANrjG,KACvBokB,EAAO,MAChB6/E,EAAOjkG,GAAK,KAAO,IAAQokB,GAAQ,IAAOi/E,EAAY,EAANrjG,KAChDikG,EAAOjkG,GAAK,KAAO,IAAe,GAAPokB,IAAiBi/E,EAAY,EAANrjG,MACzCokB,EAAO,OAAUA,GAAQ,OAClC6/E,EAAOjkG,GAAK,KAAO,IAAQokB,GAAQ,KAAQi/E,EAAY,EAANrjG,KACjDikG,EAAOjkG,GAAK,KAAO,IAASokB,GAAQ,EAAK,KAAUi/E,EAAY,EAANrjG,KACzDikG,EAAOjkG,GAAK,KAAO,IAAe,GAAPokB,IAAiBi/E,EAAY,EAANrjG,OAElDokB,EAAO,QAAoB,KAAPA,IAAiB,GAAqC,KAA9BlL,EAAQwO,aAAahX,IACjEuzF,EAAOjkG,GAAK,KAAO,IAAQokB,GAAQ,KAAQi/E,EAAY,EAANrjG,KACjDikG,EAAOjkG,GAAK,KAAO,IAASokB,GAAQ,GAAM,KAAUi/E,EAAY,EAANrjG,KAC1DikG,EAAOjkG,GAAK,KAAO,IAASokB,GAAQ,EAAK,KAAUi/E,EAAY,EAANrjG,KACzDikG,EAAOjkG,GAAK,KAAO,IAAe,GAAPokB,IAAiBi/E,EAAY,EAANrjG,MAKxD,GADAuB,KAAKgjG,cAAgBvkG,EACjBA,GAAKokG,EAAW,CAGlB,IAFA7iG,KAAKsrB,MAAQ7sB,EAAIokG,EACjB7iG,KAAKuM,MAAQm2F,EAAOE,GACfnkG,EAAI,EAAGA,EAAImkG,IAAcnkG,EAC5B8D,EAAE9D,IAAMikG,EAAOjkG,GAEjBkE,EAAEJ,GACFvC,KAAK2iG,OAAQ,OAEb3iG,KAAKsrB,MAAQ7sB,EAGjB,OAAOuB,MAGToiG,EAAOhhG,UAAUqW,OAAS,SAAUqQ,EAAG6D,GACrC,IAAI1pB,EAAQ,IAAJ6lB,EAAStlB,EAAI,EACjBwd,EAAQ,CAAC/d,GAGb,IADAA,EAAQ,KADR6lB,IAAS,GAEF7lB,EAAI,GACT+d,EAAMmgB,QAAQl+B,GAEdA,EAAQ,KADR6lB,IAAS,KAEPtlB,EAQJ,OANImpB,EACF3L,EAAM/e,KAAKuB,GAEXwd,EAAMmgB,QAAQ39B,GAEhBxC,KAAK0xC,OAAO1xB,GACLA,EAAMxhB,QAGf4jG,EAAOhhG,UAAUq7H,aAAe,SAAU32G,GACxC,IAAIi9E,EAAW7wF,SAAc4T,EAC7B,GAAa,WAAT5T,EAAmB,CACrB,GAAa,WAATA,EAWF,MAAM,IAAIhH,MAAMqwH,GAVhB,GAAY,OAARz1G,EACF,MAAM,IAAI5a,MAAMqwH,GACX,GAAIK,GAAgB91G,EAAIriB,cAAgB80E,YAC7CzyD,EAAM,IAAIlG,WAAWkG,QAChB,IAAKnnB,MAAME,QAAQinB,MACnB81G,IAAiBrjD,YAAYC,OAAO1yD,IACvC,MAAM,IAAI5a,MAAMqwH,GAMtBx4B,GAAY,EAEd,IAAI/iF,EAAQ,EAAGxhB,EAASsnB,EAAItnB,OAC5B,GAAIukG,EACF/iF,EAAQxhB,OAER,IAAK,IAAIC,EAAI,EAAGA,EAAIqnB,EAAItnB,SAAUC,EAAG,CACnC,IAAIokB,EAAOiD,EAAIK,WAAW1nB,GACtBokB,EAAO,IACT7C,GAAS,EACA6C,EAAO,KAChB7C,GAAS,EACA6C,EAAO,OAAUA,GAAQ,MAClC7C,GAAS,GAET6C,EAAO,QAAoB,KAAPA,IAAiB,GAA6B,KAAtBiD,EAAIK,aAAa1nB,IAC7DuhB,GAAS,GAMf,OAFAA,GAAShgB,KAAKyX,OAAe,EAARuI,GACrBhgB,KAAK0xC,OAAO5rB,GACL9F,GAGToiF,EAAOhhG,UAAUi7H,QAAU,SAAUK,EAAMxwG,GAEzC,IADA,IAAIlM,EAAQhgB,KAAKyX,OAAOyU,GACfztB,EAAI,EAAGA,EAAIi+H,EAAKl+H,SAAUC,EACjCuhB,GAAShgB,KAAKy8H,aAAaC,EAAKj+H,IAElC,IAAIk+H,EAAezwG,EAAIlM,EAAQkM,EAC3Bc,EAAQ,GAGZ,OAFAA,EAAMxuB,OAASm+H,EACf38H,KAAK0xC,OAAO1kB,GACLhtB,MAGToiG,EAAOhhG,UAAU6hG,SAAW,WAC1B,IAAIjjG,KAAKw8H,UAAT,CAGAx8H,KAAKw8H,WAAY,EACjB,IAAI95B,EAAS1iG,KAAK0iG,OAAQjkG,EAAIuB,KAAKgjG,cAAeJ,EAAa5iG,KAAK4iG,WAAYrgG,EAAIvC,KAAKuC,EAEzF,GADAmgG,EAAOjkG,GAAK,IAAMuB,KAAK4tB,QAAY,EAAJnvB,GAC3BuB,KAAKgjG,gBAAkBhjG,KAAK6iG,UAE9B,IADAH,EAAO,GAAKA,EAAOE,GACdnkG,EAAI,EAAGA,EAAImkG,EAAa,IAAKnkG,EAChCikG,EAAOjkG,GAAK,EAIhB,IADAikG,EAAOE,EAAa,IAAM,WACrBnkG,EAAI,EAAGA,EAAImkG,IAAcnkG,EAC5B8D,EAAE9D,IAAMikG,EAAOjkG,GAEjBkE,EAAEJ,KAGJ6/F,EAAOhhG,UAAUoD,SAAW49F,EAAOhhG,UAAUsnB,IAAM,WACjD1oB,KAAKijG,WAKL,IAHA,IAEc12F,EAFVq2F,EAAa5iG,KAAK4iG,WAAYrgG,EAAIvC,KAAKuC,EAAGugG,EAAe9iG,KAAK8iG,aAChEj5B,EAAa7pE,KAAK6pE,WAAYprE,EAAI,EAAG+mB,EAAI,EACvCkD,EAAM,GACHlD,EAAIs9E,GAAc,CACvB,IAAKrkG,EAAI,EAAGA,EAAImkG,GAAcp9E,EAAIs9E,IAAgBrkG,IAAK+mB,EACrDjZ,EAAQhK,EAAE9D,GACViqB,GAAOm5E,EAAWt1F,GAAS,EAAK,IAAQs1F,EAAkB,GAARt1F,GAChDs1F,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,EAAK,IAC3Ds1F,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,GAAM,IAC5Ds1F,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,GAAM,IAE5DiZ,EAAIo9E,IAAe,IACrBjgG,EAAEJ,GACF9D,EAAI,GAaR,OAVIorE,IACFt9D,EAAQhK,EAAE9D,GACViqB,GAAOm5E,EAAWt1F,GAAS,EAAK,IAAQs1F,EAAkB,GAARt1F,GAC9Cs9D,EAAa,IACfnhD,GAAOm5E,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,EAAK,KAEhEs9D,EAAa,IACfnhD,GAAOm5E,EAAWt1F,GAAS,GAAM,IAAQs1F,EAAWt1F,GAAS,GAAM,MAGhEmc,GAGT05E,EAAOhhG,UAAU8hG,YAAc,WAC7BljG,KAAKijG,WAEL,IAGI9yC,EAHAyyC,EAAa5iG,KAAK4iG,WAAYrgG,EAAIvC,KAAKuC,EAAGugG,EAAe9iG,KAAK8iG,aAChEj5B,EAAa7pE,KAAK6pE,WAAYprE,EAAI,EAAG+mB,EAAI,EACvCxF,EAAQhgB,KAAKsiG,YAAc,EAG7BnyC,EADE0Z,EACO,IAAI0O,YAAauqB,EAAe,GAAM,GAEtC,IAAIvqB,YAAYv4D,GAG3B,IADA,IAAI8f,EAAQ,IAAIqjE,YAAYhzC,GACrB3qC,EAAIs9E,GAAc,CACvB,IAAKrkG,EAAI,EAAGA,EAAImkG,GAAcp9E,EAAIs9E,IAAgBrkG,IAAK+mB,EACrDsa,EAAMta,GAAKjjB,EAAE9D,GAEX+mB,EAAIo9E,IAAe,GACrBjgG,EAAEJ,GAON,OAJIsnE,IACF/pC,EAAMrhC,GAAK8D,EAAE9D,GACb0xD,EAASA,EAAOtpD,MAAM,EAAGmZ,IAEpBmwC,GAGTiyC,EAAOhhG,UAAU+uD,OAASiyC,EAAOhhG,UAAU8hG,YAE3Cd,EAAOhhG,UAAUuwC,OAASywD,EAAOhhG,UAAU0+B,MAAQ,WACjD9/B,KAAKijG,WAKL,IAHA,IAEgB7iF,EAAQ7T,EAFpBq2F,EAAa5iG,KAAK4iG,WAAYrgG,EAAIvC,KAAKuC,EAAGugG,EAAe9iG,KAAK8iG,aAChEj5B,EAAa7pE,KAAK6pE,WAAYprE,EAAI,EAAG+mB,EAAI,EACvCsa,EAAQ,GACLta,EAAIs9E,GAAc,CACvB,IAAKrkG,EAAI,EAAGA,EAAImkG,GAAcp9E,EAAIs9E,IAAgBrkG,IAAK+mB,EACrDpF,EAASoF,GAAK,EACdjZ,EAAQhK,EAAE9D,GACVqhC,EAAM1f,GAAkB,IAAR7T,EAChBuzB,EAAM1f,EAAS,GAAM7T,GAAS,EAAK,IACnCuzB,EAAM1f,EAAS,GAAM7T,GAAS,GAAM,IACpCuzB,EAAM1f,EAAS,GAAM7T,GAAS,GAAM,IAElCiZ,EAAIo9E,IAAe,GACrBjgG,EAAEJ,GAcN,OAXIsnE,IACFzpD,EAASoF,GAAK,EACdjZ,EAAQhK,EAAE9D,GACVqhC,EAAM1f,GAAkB,IAAR7T,EACZs9D,EAAa,IACf/pC,EAAM1f,EAAS,GAAM7T,GAAS,EAAK,KAEjCs9D,EAAa,IACf/pC,EAAM1f,EAAS,GAAM7T,GAAS,GAAM,MAGjCuzB,GAOTw8F,EAAKl7H,UAAY,IAAIghG,EAErBk6B,EAAKl7H,UAAU6hG,SAAW,WAExB,OADAjjG,KAAKyX,OAAOzX,KAAKsiG,YAAY,GACtBF,EAAOhhG,UAAU6hG,SAASngG,KAAK9C,OAGxC,IAAI2C,EAAI,SAAUJ,GAChB,IAAI62B,EAAGjD,EAAG3zB,EAAG4gG,EAAI33D,EAAIrlB,EAAIi9E,EAAIC,EAAIC,EAAIC,EAAIC,EAAI50D,EAAI60D,EAC/ClxE,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIG,EAAIwvE,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAC3EC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,EAC3EC,EAAKC,EAAKC,EAAKC,EAAKC,EAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAAKC,GAC7E,IAAK1jG,EAAI,EAAGA,EAAI,GAAIA,GAAK,EACvB4gG,EAAK7gG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCkpC,EAAKlpC,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC6jB,EAAK7jB,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC8gG,EAAK9gG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtC+gG,EAAK/gG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCghG,EAAKhhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCihG,EAAKjhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACtCkhG,EAAKlhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAItC62B,GAHAyV,EAAKtsC,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG3B6jB,GAAM,EAAMi9E,IAAO,IAC9BltE,GAHAutE,EAAKnhG,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,MAG3B8gG,GAAM,EAAMj9E,IAAO,IAC9B7jB,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIgqE,GAAOE,GAAM,EAAMC,IAAO,IAC9BptE,EAAIsV,GAAO83D,GAAM,EAAMD,IAAO,IAC9B/gG,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIhT,GAAOo9E,GAAM,EAAMC,IAAO,IAC9BttE,EAAIktE,GAAOI,GAAM,EAAMD,IAAO,IAC9BjhG,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIkqE,GAAOz0D,GAAM,EAAM60D,IAAO,IAC9BvtE,EAAIotE,GAAOG,GAAM,EAAM70D,IAAO,IAC9BtsC,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACTiD,EAAIoqE,GAAOJ,GAAM,EAAM33D,IAAO,IAC9BtV,EAAIstE,GAAOh4D,GAAM,EAAM23D,IAAO,IAC9B7gG,EAAE,IAAM62B,EACR72B,EAAE,IAAM4zB,EACR5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EACT5zB,EAAE,KAAO62B,EACT72B,EAAE,KAAO4zB,EAET3D,EAAKjwB,EAAE,GACPowB,EAAKpwB,EAAE,GACP0iG,EAAO1iG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC2iG,EAAO3iG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCwhG,EAAOxhG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCyhG,EAAOzhG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCwjG,GAAOxjG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCyjG,GAAOzjG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCsiG,EAAOtiG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCuiG,EAAOviG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC8hG,EAAO9hG,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9B+hG,EAAO/hG,EAAE,IAAM,EAAMA,EAAE,KAAO,GAC9BuwB,EAAMvwB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC0wB,EAAM1wB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC4iG,EAAO5iG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC6iG,EAAO7iG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC0hG,EAAO1hG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC2hG,EAAO3hG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC0jG,GAAO1jG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC2jG,GAAO3jG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCkjG,GAAOljG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BmjG,GAAOnjG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BgiG,EAAOhiG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCiiG,EAAOjiG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChC6wB,EAAM7wB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCgxB,EAAMhxB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC8iG,EAAO9iG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC+iG,EAAO/iG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjC4hG,EAAO5hG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjC6hG,EAAO7hG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCohG,EAAOphG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BqhG,EAAOrhG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BojG,GAAOpjG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCqjG,GAAOrjG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCkiG,EAAOliG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCmiG,EAAOniG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCmxB,EAAMnxB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCsxB,EAAMtxB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChCgjG,EAAOhjG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCijG,GAAOjjG,EAAE,KAAO,GAAOA,EAAE,MAAQ,EACjCwiG,EAAOxiG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/ByiG,EAAOziG,EAAE,IAAM,GAAOA,EAAE,KAAO,EAC/BshG,EAAOthG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCuhG,EAAOvhG,EAAE,KAAO,GAAOA,EAAE,MAAQ,GACjCsjG,GAAOtjG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCujG,GAAOvjG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCoiG,EAAOpiG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCqiG,EAAOriG,EAAE,KAAO,EAAMA,EAAE,MAAQ,GAChCyxB,EAAMzxB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAChC4xB,EAAM5xB,EAAE,KAAO,GAAOA,EAAE,MAAQ,GAEhCA,EAAE,GAAKiwB,GAAOM,EAAKM,EACnB7wB,EAAE,GAAKowB,GAAOM,EAAKM,EACnBhxB,EAAE,IAAMohG,GAAQE,EAAME,EACtBxhG,EAAE,IAAMqhG,GAAQE,EAAME,EACtBzhG,EAAE,IAAM8hG,GAAQE,EAAME,EACtBliG,EAAE,IAAM+hG,GAAQE,EAAME,EACtBniG,EAAE,IAAMwiG,GAAQE,EAAME,EACtB5iG,EAAE,IAAMyiG,GAAQE,EAAME,EACtB7iG,EAAE,IAAMkjG,IAAQE,GAAME,GACtBtjG,EAAE,IAAMmjG,IAAQE,GAAME,GACtBvjG,EAAE,GAAKuwB,GAAOM,EAAKM,EACnBnxB,EAAE,GAAK0wB,GAAOM,EAAKM,EACnBtxB,EAAE,IAAMshG,GAAQE,EAAME,EACtB1hG,EAAE,IAAMuhG,GAAQE,EAAME,EACtB3hG,EAAE,IAAMgiG,GAAQE,EAAME,EACtBpiG,EAAE,IAAMiiG,GAAQE,EAAME,EACtBriG,EAAE,IAAM0iG,GAAQE,EAAME,EACtB9iG,EAAE,IAAM2iG,GAAQE,EAAME,EACtB/iG,EAAE,IAAMojG,IAAQE,GAAME,GACtBxjG,EAAE,IAAMqjG,IAAQE,GAAME,GACtBzjG,EAAE,GAAK6wB,GAAOM,EAAKM,EACnBzxB,EAAE,GAAKgxB,GAAOM,EAAKM,EACnB5xB,EAAE,IAAMwhG,GAAQE,EAAME,EACtB5hG,EAAE,IAAMyhG,GAAQE,EAAME,EACtB7hG,EAAE,IAAMkiG,GAAQE,EAAME,EACtBtiG,EAAE,IAAMmiG,GAAQE,EAAME,EACtBviG,EAAE,IAAM4iG,GAAQE,EAAME,EACtBhjG,EAAE,IAAM6iG,GAAQE,EAAME,GACtBjjG,EAAE,IAAMsjG,IAAQE,GAAME,GACtB1jG,EAAE,IAAMujG,IAAQE,GAAME,GACtB3jG,EAAE,GAAKmxB,GAAOM,EAAKxB,EACnBjwB,EAAE,GAAKsxB,GAAOM,EAAKxB,EACnBpwB,EAAE,IAAM0hG,GAAQE,EAAMR,EACtBphG,EAAE,IAAM2hG,GAAQE,EAAMR,EACtBrhG,EAAE,IAAMoiG,GAAQE,EAAMR,EACtB9hG,EAAE,IAAMqiG,GAAQE,EAAMR,EACtB/hG,EAAE,IAAM8iG,GAAQE,EAAMR,EACtBxiG,EAAE,IAAM+iG,GAAQE,GAAMR,EACtBziG,EAAE,IAAMwjG,IAAQE,GAAMR,GACtBljG,EAAE,IAAMyjG,IAAQE,GAAMR,GACtBnjG,EAAE,GAAKyxB,GAAOxB,EAAKM,EACnBvwB,EAAE,GAAK4xB,GAAOxB,EAAKM,EACnB1wB,EAAE,IAAM4hG,GAAQR,EAAME,EACtBthG,EAAE,IAAM6hG,GAAQR,EAAME,EACtBvhG,EAAE,IAAMsiG,GAAQR,EAAME,EACtBhiG,EAAE,IAAMuiG,GAAQR,EAAME,EACtBjiG,EAAE,IAAMgjG,GAAQR,EAAME,EACtB1iG,EAAE,IAAMijG,IAAQR,EAAME,EACtB3iG,EAAE,IAAM0jG,IAAQR,GAAME,GACtBpjG,EAAE,IAAM2jG,IAAQR,GAAME,GAEtBrjG,EAAE,IAAMw/F,EAAGv/F,GACXD,EAAE,IAAMw/F,EAAGv/F,EAAI,IAInB,GAAIm/F,EACFvjG,EAAOC,QAAU4sD,MACZ,CACL,IAAKxsD,EAAI,EAAGA,EAAI+jG,EAAYhkG,SAAUC,EACpCgjG,EAAKe,EAAY/jG,IAAMwsD,EAAQu3C,EAAY/jG,IAEzCk9H,SACI,KAANryE,EAAAA,WACE,OAAO2B,GADH,gCAjoBZ,kVCTA,kBACA,WA2Fa2xE,EAAAA,SAAAA,qBAGX,qCACE,gBACKC,YAAc,GAFrB,gCAUA,SAAW7zB,GACT,KAAK6zB,YAAY57H,KAAK+nG,yBA4CxB,SAAOpI,EAAc95C,GACnB,GAAIA,GAAoB,oBAAPA,EACf,MAAM,IAAI57C,MAAM,8CAGlB,OAAIvM,MAAME,QAAQ+hG,GACZ95C,EACK,KAAKg2E,aAAal8B,EAAK95C,GAEzB,KAAKg2E,aAAal8B,GAGvB95C,EACK,KAAKi2E,QAAQn8B,EAAgC95C,GAE/C,KAAKk2E,eAAep8B,+BAS7B,WAAY,WACV,kCAAO,WAAOA,EAAKr7E,EAAKviB,EAAMuoB,GAAvB,sGAMOqxG,EAAcK,kBAAkBr8B,EAAKr7E,EAAK,EAAKs3G,aANtD,4BAGDK,EAHC,KAIDC,EAJC,KAKDC,EALC,MAQCD,EARD,kCASKP,EAAcS,mBAAmBD,GATtC,iCAUM7xG,EAAI2xG,IAVV,iCAaIl6H,EAAI,2BAAC,WAAOs6H,GAAP,wFAEFV,EAAcS,mBAAmBD,GAF/B,+EAIDE,EAAe,OAJd,gCAMHA,KANG,wDAAD,wDAbR,2DAsBI/xG,EAAG,OAtBP,0DAAP,mHA0CM,WACNgyG,EACAz2E,GAFM,8FAQoBjnD,QAAQorF,IAE9BsyC,EAAK/xH,IAAI,KAAKwxH,eAAe77H,KAAK,QAVhC,UAQEq8H,EARF,QAcA12E,EAdA,yCAeKA,EAAG,KAAM02E,IAfd,gCAiBGA,GAjBH,oCAmBA12E,EAnBA,0CAoBKA,EAAE,OApBP,iKA8BA,SACN85C,GAA4B,WAE5B,OAAO,IAAI/gG,SAAQ,SAACV,GAClB,EAAK49H,QAAQn8B,GAAK,SAAC68B,EAAMl4G,GAGvBpmB,EAAQomB,2DAWN,WACNm4G,EACA52E,GAFM,gFAKH42E,IACD/+H,MAAME,QAAQ6+H,IACO,kBAAdA,EAPH,uBASE/9H,EAAQ,IAAIg+H,EAAAA,iBAChBA,EAAAA,WAAWC,IAAIC,eADH,2DAEwCH,GACpD,CAAEjH,QAASiH,IAZT,kBAcG52E,EAAGnnD,EAAO,CAAE+gD,QAAIrgD,EAAWwgG,QAAS,MAAOlhG,MAAAA,KAd9C,UAiB0B,kBAArB+9H,EAAUzxE,OAjBf,uBAkBEtsD,EAAQ,IAAIg+H,EAAAA,iBAChBA,EAAAA,WAAWC,IAAIC,eADH,yDAEsCH,EAAUzxE,QAC5D,CAAEwqE,QAASiH,IArBT,kBAuBG52E,EAAGnnD,EAAO,CAAE+gD,GAAIg9E,EAAUh9E,GAAImgD,QAAS,MAAOlhG,MAAAA,KAvBjD,cA0BAihG,EAAGh/F,OAAAA,OAAAA,GAAiC87H,GACpCn4G,EAAuC,CAC3Cm7B,GAAIkgD,EAAIlgD,GACRmgD,QAASD,EAAIC,SAEXlhG,EAAoC,KA/BlC,mBAkCE,KAAKm+H,gBAAgBl9B,EAAKr7E,GAlC5B,0DAsCJ5lB,EAAK,KAtCD,eAyCFA,WAEK4lB,EAAIjiB,OACNiiB,EAAI5lB,QACP4lB,EAAI5lB,MAAQg+H,EAAAA,eAAeh+H,KA7CzB,kBAiDCmnD,EAAGnnD,EAAO4lB,IAjDX,2KAyDA,WACNq7E,EACAr7E,GAFM,6FAQIq3G,EAAcK,kBAAkBr8B,EAAKr7E,EAAK,KAAKs3G,aARnD,gCAKJl9H,EALI,KAMJw9H,EANI,KAOJC,EAPI,KAYNR,EAAcmB,oBAAoBn9B,EAAKr7E,EAAK43G,GAZtC,UAgBAP,EAAcS,mBAAmBD,GAhBjC,YAoBFz9H,EApBE,uBAqBEA,EArBF,sKAgCA,WACNihG,EACAr7E,EACAy4G,GAHM,mFAWAZ,EAA+C,GACjDz9H,EAAQ,KACRw9H,GAAa,EAbX,IAgBmBa,GAhBnB,gEAgBKh1B,EAhBL,kBAiBwB4zB,EAAcqB,eACxCr9B,EACAr7E,EACAyjF,EACAo0B,GArBE,6BAiBHz9H,EAjBG,OAiBIw9H,EAjBJ,2NA2BC,CAACx9H,EAAOw9H,EAAYC,EAAe9tE,YA3BpC,uJAoCA,SACNsxC,EACAr7E,EACAyjF,EACAo0B,GAEA,OAAO,IAAIv9H,SAAQ,SAACV,GAClB,IAAMosB,EAAgC,SAACnrB,GACrC,IAAMT,EAAQS,GAAOmlB,EAAI5lB,MACrBA,IACF4lB,EAAI5lB,MAAQg+H,EAAAA,eAAeh+H,IAG7BR,EAAQ,CAACQ,GAAO,KA8BlB,IACEqpG,EAAWpI,EAAKr7E,GA5BsB,SACtC24G,GAEI34G,EAAI5lB,MACN4rB,EAAIhG,EAAI5lB,QAEJu+H,IAC2B,oBAAlBA,GACT3yG,EACE,IAAIoyG,EAAAA,iBACFA,EAAAA,WAAWC,IAAIO,SACf,uFACsBD,EADtB,2BACsDE,EAClDx9B,IAEJ,CAAE61B,QAAS71B,KAIjBw8B,EAAen8H,KAAKi9H,IAItB/+H,EAAQ,CAAC,MAAM,OAKUosB,GAC3B,MAAO5rB,GACP4rB,EAAI5rB,oEASF,WACNsxG,GADM,6EAGgBA,GAHhB,4GAGKz4D,EAHL,iBAIE,IAAI34C,SAAQ,SAACV,EAASC,GAC1Bo5C,GAAQ,SAACp4C,GAAD,OAAUA,EAAMhB,EAAOgB,GAAOjB,UALpC,yZAcA,SACNyhG,EACAr7E,EACA43G,GAEA,KAAM,WAAY53G,MAAU,UAAWA,GACrC,MAAM,IAAIo4G,EAAAA,iBACRA,EAAAA,WAAWC,IAAIO,SADX,uEAE4DC,EAC9Dx9B,IAEF,CAAE61B,QAAS71B,IAGf,IAAKu8B,EACH,MAAM,IAAIQ,EAAAA,iBACRA,EAAAA,WAAWC,IAAIO,SADX,iDAEsCC,EAAQx9B,IAClD,CAAE61B,QAAS71B,UAjYNg8B,CAAsByB,EAAAA,SAuYnC,SAASD,EAAQ3H,GACf,OAAO94G,KAAKE,UAAU44G,EAAS,KAAM,GAxYvCp4H,EAAAA,cAAAA,uJC3DAA,EAAAA,sBAAA,SACEsyG,GAEA,kCAAO,WAAO/P,EAAKr7E,EAAKviB,EAAMuoB,GAAvB,oFAKCwlF,EAAc,IAAIlxG,SAAQ,SAACV,GAC/ByxG,EAAqBzxG,KAGnB0xG,EAAiC,KACjCC,GAAgB,EAGdE,EAbD,2BAaa,mFAChBF,GAAgB,EAKhB9tG,GAAK,SAACs7H,GAEJztB,EAAwBytB,EACxB1tB,OATc,SAWVG,EAXU,2CAbb,uEA4BGJ,EAAgB/P,EAAKr7E,EAAKyrF,GA5B7B,WA8BCF,EA9BD,kCA+BKC,EA/BL,QAgCAF,EAAgD,MAhChD,wBAkCDtlF,EAAI,MAlCH,0DAqCCslF,EACDA,EAA+C,MAEhDtlF,EAAG,MAxCF,0DAAP,iLChCFltB,EAAAA,yBAAA,SAAyC4yG,GAGvC,OAAO,SAACrQ,EAAKr7E,EAAKviB,EAAMuoB,GACtB,IAAMitB,EAAUy4D,EAASrQ,EAAI30C,QAE7B,YAAgB5rD,IAAZm4C,EACKx1C,IAGc,oBAAZw1C,EACFA,EAAQooD,EAAKr7E,EAAKviB,EAAMuoB,IAGhChG,EAAgCjiB,OAASk1C,EACnCjtB,+GCjBX,IAAMgzG,EAAM,WACRC,EAAY5qH,KAAKoU,MAAMpU,KAAKg0F,SAAW22B,GAE3ClgI,EAAAA,YAAA,WAEE,OADAmgI,GAAaA,EAAY,GAAKD,yHCNhC,eAGAlgI,EAAAA,wBAAA,WACE,OAAO,SAACuiG,EAAKr7E,EAAKviB,EAAMi8F,GACtB,IAAMw/B,EAAa79B,EAAIlgD,GACjBg+E,EAAQC,EAAAA,cACd/9B,EAAIlgD,GAAKg+E,EACTn5G,EAAIm7B,GAAKg+E,EACT17H,GAAK,SAACpD,GACJghG,EAAIlgD,GAAK+9E,EACTl5G,EAAIm7B,GAAK+9E,EACT7+H,qa7EZN8Y,EAAAA,EAAAA,OAAAA,GACAA,EAAAA,EAAAA,MAAAA,GACAA,EAAAA,EAAAA,MAAAA,GACAA,EAAAA,EAAAA,OAAAA,GACAA,EAAAA,EAAAA,OAAAA,GACAA,EAAAA,EAAAA,OAAAA,iH8ELA,eAEAra,EAAAA,gBAAA,SAAgC2/H,GAC9B,IAAMY,EAAS,IAAIC,EAAAA,cAEnB,OADAb,EAAgBl4H,SAAQ,SAACkjG,GAAD,OAAgB41B,EAAO39H,KAAK+nG,MAC7C41B,EAAOE,yPCLhB,eAcaC,EAAAA,SAAAA,qBAMX,WAAYl8G,EAAclL,EAAiBjH,GAAQ,MAEjD,GAFiD,WAE5CpB,OAAO0wB,UAAUnd,GACpB,MAAM,IAAI3X,MACR,8BAGJ,IAAKyM,GAA8B,kBAAZA,EACrB,MAAM,IAAIzM,MACR,wCAT6C,OAajD,cAAMyM,IACDkL,KAAOA,OACCxiB,IAATqQ,IACF,EAAKA,KAAOA,GAhBmC,qCAuBnD,WACE,IAAMgG,EAAyC,CAC7CmM,KAAM,KAAKA,KACXlL,QAAS,KAAKA,SAQhB,YANkBtX,IAAd,KAAKqQ,OACPgG,EAAWhG,KAAO,KAAKA,MAErB,KAAKy+C,QACPz4C,EAAWy4C,MAAQ,KAAKA,OAEnBz4C,0BAOT,WACE,OAAOsoH,EAAAA,QACL,KAAKnnH,YACLonH,EACA,SAnDOF,GAA4B7zH,QAAzC7M,EAAAA,iBAAAA,MA4Da6gI,EAAAA,SAAAA,qBAMX,WAAYr8G,EAAclL,EAAiBjH,GAEzC,GAFiD,WAcrD,SAAgCmS,GAC9B,OAAOvT,OAAO0wB,UAAUnd,IAASA,GAAQ,KAAQA,GAAQ,KAblDs8G,CAAuBt8G,GAC1B,MAAM,IAAI3X,MACR,6DAJ6C,mBAQ3C2X,EAAMlL,EAASjH,eAdZwuH,CAAiCH,GAwB9C,SAASE,EAAkB9mG,EAAYz4B,GACrC,GAAc,eAAVA,EAGJ,OAAOA,EA5BTrB,EAAAA,sBAAAA,uHCnDaA,EAAAA,WAAyB,CACpCu/H,IAAK,CACHwB,cAAe,KACfC,kBAAmB,MACnBC,qBAAsB,MACtBC,qBAAsB,MACtBC,oBAAqB,MACrBC,eAAgB,MAChB7hH,OAAQ,MACRigH,gBAAiB,MACjB6B,gBAAiB,MACjBC,eAAgB,MAChBxB,UAAW,OAEbv+B,SAAU,CACRggC,oBAAqB,KACrBC,aAAc,KACdC,kBAAmB,KACnBC,aAAc,KACdC,kBAAmB,OAIV3hI,EAAAA,YAAc,CACzB,SAAU,CACR4hI,SAAU,eACVtoH,QAAS,yGAEX,SAAU,CACRsoH,SAAU,eACVtoH,QAAS,gDAEX,SAAU,CACRsoH,SAAU,eACVtoH,QAAS,iDAEX,SAAU,CACRsoH,SAAU,eACVtoH,QAAS,gCAEX,SAAU,CACRsoH,SAAU,eACVtoH,QAAS,4BAEX,SAAU,CACRsoH,SAAU,WACVtoH,QAAS,kBAEX,SAAU,CACRsoH,SAAU,WACVtoH,QAAS,uBAEX,SAAU,CACRsoH,SAAU,WACVtoH,QAAS,yBAEX,SAAU,CACRsoH,SAAU,WACVtoH,QAAS,yBAEX,SAAU,CACRsoH,SAAU,WACVtoH,QAAS,yBAEX,SAAU,CACRsoH,SAAU,WACVtoH,QAAS,2BAEX,KAAQ,CACNsoH,SAAU,WACVtoH,QAAS,8BAEX,KAAQ,CACNsoH,SAAU,WACVtoH,QAAS,4EAEX,KAAQ,CACNsoH,SAAU,WACVtoH,QAAS,oEAEX,KAAQ,CACNsoH,SAAU,WACVtoH,QAAS,iDAEX,KAAQ,CACNsoH,SAAU,WACVtoH,QAAS,0LC7Gb,eACA,WACA,WAuLA,SAASuoH,EAAsBr9G,EAAcrjB,GAC3C,MAAwB2gI,EAAU3gI,GAAlC,SAAOmY,EAAP,KAAgBjH,EAAhB,KACA,OAAO,IAAI0vH,EAAAA,iBACTv9G,EACAlL,GAAWulG,EAAAA,mBAAmBr6F,GAC9BnS,GAIJ,SAAS2vH,EAAuBx9G,EAAcrjB,GAC5C,MAAwB2gI,EAAU3gI,GAAlC,SAAOmY,EAAP,KAAgBjH,EAAhB,KACA,OAAO,IAAI0vH,EAAAA,sBACTv9G,EACAlL,GAAWulG,EAAAA,mBAAmBr6F,GAC9BnS,GAIJ,SAASyvH,EAAa3gI,GACpB,GAAIA,EAAK,CACP,GAAmB,kBAARA,EACT,MAAO,CAACA,GACH,GAAmB,kBAARA,IAAqBb,MAAME,QAAQW,GAAM,CACzD,IAAQmY,EAAkBnY,EAAlBmY,QAASjH,EAASlR,EAATkR,KAEjB,GAAIiH,GAA8B,kBAAZA,EACpB,MAAM,IAAIzM,MAAM,gCAElB,MAAO,CAACyM,QAAWtX,EAAWqQ,IAGlC,MAAO,GAvMIrS,EAAAA,UAAY,CACvBu/H,IAAK,CAKHhgH,MAAO,SAAIpe,GAAJ,OAA8B0gI,EACnCI,EAAAA,WAAW1C,IAAIhgH,MAAOpe,IAMxBq+H,eAAgB,SAAIr+H,GAAJ,OAA8B0gI,EAC5CI,EAAAA,WAAW1C,IAAIC,eAAgBr+H,IAMjCmgI,cAAe,SAAIngI,GAAJ,OAA8B0gI,EAC3CI,EAAAA,WAAW1C,IAAI+B,cAAengI,IAMhCkgI,eAAgB,SAAIlgI,GAAJ,OAA8B0gI,EAC5CI,EAAAA,WAAW1C,IAAI8B,eAAgBlgI,IAMjC2+H,SAAU,SAAI3+H,GAAJ,OAA8B0gI,EACtCI,EAAAA,WAAW1C,IAAIO,SAAU3+H,IAQ3B+gI,OAAQ,SAAI53H,GACV,IAAKA,GAAwB,kBAATA,GAAqBhK,MAAME,QAAQ8J,GACrD,MAAM,IAAIuC,MAAM,mEAElB,IAAQ2X,EAASla,EAATka,KACR,IAAKvT,OAAO0wB,UAAUnd,IAASA,GAAQ,OAASA,GAAQ,MACtD,MAAM,IAAI3X,MACR,iEAGJ,OAAOg1H,EAAmBr9G,EAAMla,IAMlCy2H,aAAc,SAAI5/H,GAAJ,OAA8B0gI,EAC1CI,EAAAA,WAAW1C,IAAIwB,aAAc5/H,IAM/B6/H,iBAAkB,SAAI7/H,GAAJ,OAA8B0gI,EAC9CI,EAAAA,WAAW1C,IAAIyB,iBAAkB7/H,IAMnC8/H,oBAAqB,SAAI9/H,GAAJ,OAA8B0gI,EACjDI,EAAAA,WAAW1C,IAAI0B,oBAAqB9/H,IAMtC+/H,oBAAqB,SAAI//H,GAAJ,OAA8B0gI,EACjDI,EAAAA,WAAW1C,IAAI2B,oBAAqB//H,IAMtCggI,mBAAoB,SAAIhgI,GAAJ,OAA8B0gI,EAChDI,EAAAA,WAAW1C,IAAI4B,mBAAoBhgI,IAMrCigI,cAAe,SAAIjgI,GAAJ,OAA8B0gI,EAC3CI,EAAAA,WAAW1C,IAAI6B,cAAejgI,KAIlCogG,SAAU,CAKRggC,oBAAqB,SAAIpgI,GACvB,OAAO6gI,EACLC,EAAAA,WAAW1gC,SAASggC,oBAAqBpgI,IAO7CqgI,aAAc,SAAIrgI,GAChB,OAAO6gI,EACLC,EAAAA,WAAW1gC,SAASigC,aAAcrgI,IAOtCsgI,kBAAmB,SAAItgI,GACrB,OAAO6gI,EACLC,EAAAA,WAAW1gC,SAASkgC,kBAAmBtgI,IAO3CugI,aAAc,SAAIvgI,GAChB,OAAO6gI,EACLC,EAAAA,WAAW1gC,SAASmgC,aAAcvgI,IAOtCwgI,kBAAmB,SAAIxgI,GACrB,OAAO6gI,EACLC,EAAAA,WAAW1gC,SAASogC,kBAAmBxgI,IAO3CkL,OAAQ,SAAI/B,GACV,IAAKA,GAAwB,kBAATA,GAAqBhK,MAAME,QAAQ8J,GACrD,MAAM,IAAIuC,MAAM,wEAGlB,IAAQ2X,EAAwBla,EAAxBka,KAAMlL,EAAkBhP,EAAlBgP,QAASjH,EAAS/H,EAAT+H,KAEvB,IAAKiH,GAA8B,kBAAZA,EACrB,MAAM,IAAIzM,MACR,uCAGJ,OAAO,IAAIk1H,EAAAA,sBAAsBv9G,EAAMlL,EAASjH,4MjFlLtD,eAUE9O,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAH,YAAAA,EAAAoC,IAAAA,WAAA,OAVOu8H,EAAAA,oBAWPx+H,OAAAA,eAAAA,EAAAA,wBAAAA,CAAAH,YAAAA,EAAAoC,IAAAA,WAAA,OAXyBu8H,EAAAA,yBAC3B,eAWEx+H,OAAAA,eAAAA,EAAAA,iBAAAA,CAAAH,YAAAA,EAAAoC,IAAAA,WAAA,OAVAq5G,EAAAA,kBAWAt7G,OAAAA,eAAAA,EAAAA,qBAAAA,CAAAH,YAAAA,EAAAoC,IAAAA,WAAA,OAXgBq5G,EAAAA,sBAElB,eAKEt7G,OAAAA,eAAAA,EAAAA,YAAAA,CAAAH,YAAAA,EAAAoC,IAAAA,WAAA,OALO28H,EAAAA,aACT,eAGE5+H,OAAAA,eAAAA,EAAAA,aAAAA,CAAAH,YAAAA,EAAAoC,IAAAA,WAAA,OAHOy8H,EAAAA,8LkFLT,eACA,WAEMG,EAAsBH,EAAAA,WAAW1C,IAAIO,SACrCuC,EAAmB,8DACnBC,EAA6C,CACjD99G,KAAM49G,EACN9oH,QAASipH,EAAmBH,IAW9B,SAAgBG,EACd/9G,GAC0C,IAA1Cg+G,EAA0C,uDAAhBH,EAE1B,GAAIpxH,OAAO0wB,UAAUnd,GAAO,CAC1B,IAAMi+G,EAAaj+G,EAAKre,WAExB,GAAIu8H,EAAOT,EAAAA,YAAaQ,GACtB,OAAOR,EAAAA,YAAYQ,GAA6BnpH,QAElD,GAAIqpH,EAAqBn+G,GACvB,OAAOxkB,EAAAA,8BAGX,OAAOwiI,EAOT,SAAgBI,EAAYp+G,GAC1B,IAAKvT,OAAO0wB,UAAUnd,GACpB,OAAO,EAGT,IAAMi+G,EAAaj+G,EAAKre,WACxB,QAAI87H,EAAAA,YAAYQ,MAIZE,EAAqBn+G,GAkF3B,SAASm+G,EAAqBn+G,GAC5B,OAAOA,IAAS,OAASA,IAAS,KAGpC,SAASq+G,EAAoBvhI,GAC3B,OAAIA,GAA0B,kBAAVA,IAAuBhB,MAAME,QAAQc,GAChDiC,OAAOwP,OAAO,GAAIzR,GAEpBA,EAGT,SAASohI,EAAOr9H,EAA8BnE,GAC5C,OAAOqC,OAAOR,UAAUoF,eAAe1D,KAAKY,EAAKnE,GArItClB,EAAAA,8BAAgC,4BAQ7CA,EAAAA,mBAAAA,EAqBAA,EAAAA,YAAAA,EAsBAA,EAAAA,eAAA,SACEsB,GAIM,iEAAF,GAAE,IAFJwhI,cAAAA,OAEI,MAFYR,EAEZ,MADJS,mBAAAA,OACI,SAGN,IACGD,IACA7xH,OAAO0wB,UAAUmhG,EAAct+G,OACC,kBAA1Bs+G,EAAcxpH,QAErB,MAAM,IAAIzM,MACR,4EAIJ,GAAIvL,aAAiBygI,EAAAA,iBACnB,OAAOzgI,EAAMkY,YAGf,IAAMnB,EAAkD,GAExD,GACE/W,GACiB,kBAAVA,IACNhB,MAAME,QAAQc,IACfohI,EAAOphI,EAAkC,SACzCshI,EAAathI,EAAqCkjB,MAClD,CACA,IAAMw+G,EAAS1hI,EACf+W,EAAWmM,KAAOw+G,EAAOx+G,KAErBw+G,EAAO1pH,SAAqC,kBAAnB0pH,EAAO1pH,SAClCjB,EAAWiB,QAAU0pH,EAAO1pH,QAExBopH,EAAOM,EAAQ,UACjB3qH,EAAWhG,KAAO2wH,EAAO3wH,QAG3BgG,EAAWiB,QAAUipH,EAClBlqH,EAA0CmM,MAG7CnM,EAAWhG,KAAO,CAAE4wH,cAAeJ,EAAoBvhI,SAEpD,CACL+W,EAAWmM,KAAOs+G,EAAct+G,KAEhC,IAAMlL,EAAwB,QAAjB,EAAIhY,SAAa0K,IAAAA,OAAA,EAAAA,EAAEsN,QAEhCjB,EAAWiB,QACTA,GAA8B,kBAAZA,EACdA,EACAwpH,EAAcxpH,QAEpBjB,EAAWhG,KAAO,CAAE4wH,cAAeJ,EAAoBvhI,IAGzD,IAAMwvD,EAAsB,QAAjB,EAAIxvD,SAAaoJ,IAAAA,OAAA,EAAAA,EAAEomD,MAK9B,OAHIiyE,GAAsBzhI,GAASwvD,GAA0B,kBAAVA,IACjDz4C,EAAWy4C,MAAQA,GAEdz4C,sBC9HTtY,EAAOC,QAEP,SAAoBsK,GAElB,IAAI8iB,GADJ9iB,EAAOA,GAAQ,IACA8iB,KAAOnc,OAAO81G,iBACzBoZ,EAAkC,qBAAf71H,EAAK2iB,MAAwB3iB,EAAK2iB,MAAQ1X,KAAKoU,MAAMpU,KAAKg0F,SAAWn8E,GAE5F,OAAO,WAEL,OADA+yG,GAAwB/yG,EACjB+yG,6BCTX,IAAI3jH,EAAuB,qBAAT8C,KAAuBA,KAAOtV,EAAQ,OAExDjK,EAAOC,QAAU,SAAUqF,EAAKiF,GACvBA,IAAMA,EAAO,IACE,oBAATA,IAAqBA,EAAO,CAAEijB,IAAKjjB,IAC9C,IAAI44H,EAAQ54H,EAAK44H,OAAS,GACL,kBAAVA,IAAoBA,EAAQ5iI,MAAM4iI,EAAM,GAAGxjH,KAAK,MAC3D,IAGiCpb,EAH7B6+H,EAAiC,mBAAhB74H,EAAK64H,QAAwB74H,EAAK64H,OACnDhX,EAAW7hH,EAAK6hH,UAAY,SAASjrH,EAAKG,GAAS,OAAOA,GAE1DksB,EAAMjjB,EAAKijB,MAAkBjpB,EAQ9BgG,EAAKijB,IAPG,SAAUxN,GACb,OAAO,SAAUpd,EAAGqsB,GAChB,IAAIo0G,EAAO,CAAEliI,IAAKyB,EAAGtB,MAAO0e,EAAKpd,IAC7B0gI,EAAO,CAAEniI,IAAK8tB,EAAG3tB,MAAO0e,EAAKiP,IACjC,OAAO1qB,EAAE8+H,EAAMC,MAKvBC,EAAO,GACX,OAAQ,SAAS9jH,EAAWU,EAAQhf,EAAK6e,EAAMikB,GAC3C,IAAIu/F,EAASL,EAAS,KAAO,IAAI5iI,MAAM0jC,EAAQ,GAAGtkB,KAAKwjH,GAAU,GAC7DM,EAAiBN,EAAQ,KAAO,IAQpC,GANInjH,GAAQA,EAAK8P,QAAiC,oBAAhB9P,EAAK8P,SACnC9P,EAAOA,EAAK8P,eAKH7tB,KAFb+d,EAAOosG,EAAS1nH,KAAKyb,EAAQhf,EAAK6e,IAElC,CAGA,GAAoB,kBAATA,GAA8B,OAATA,EAC5B,OAAOvD,EAAKgD,UAAUO,GAE1B,GAAIvf,EAAQuf,GAAO,CAEf,IADA,IAAIgP,EAAM,GACD3uB,EAAI,EAAGA,EAAI2f,EAAK5f,OAAQC,IAAK,CAClC,IAAI+b,EAAOqD,EAAUO,EAAM3f,EAAG2f,EAAK3f,GAAI4jC,EAAM,IAAMxnB,EAAKgD,UAAU,MAClEuP,EAAInsB,KAAK2gI,EAASL,EAAQ/mH,GAE9B,MAAO,IAAM4S,EAAIrP,KAAK,KAAO6jH,EAAS,IAGtC,IAA4B,IAAxBD,EAAKl9H,QAAQ2Z,GAAc,CAC3B,GAAIojH,EAAQ,OAAO3mH,EAAKgD,UAAU,aAClC,MAAM,IAAIrd,UAAU,yCAEnBmhI,EAAK1gI,KAAKmd,GAEf,IAAI5Y,EAAOs8H,EAAW1jH,GAAMi5B,KAAKzrB,GAAOA,EAAIxN,IAE5C,IADIgP,EAAM,GACD3uB,EAAI,EAAGA,EAAI+G,EAAKhH,OAAQC,IAAK,CAClC,IACIiB,EAAQme,EAAUO,EADlB7e,EAAMiG,EAAK/G,GACkB2f,EAAK7e,GAAM8iC,EAAM,GAElD,GAAI3iC,EAAJ,CAEA,IAAIqiI,EAAWlnH,EAAKgD,UAAUte,GACxBsiI,EACAniI,EAEN0tB,EAAInsB,KAAK2gI,EAASL,EAAQQ,IAG9B,OADAJ,EAAK1sH,OAAO0sH,EAAKl9H,QAAQ2Z,GAAO,GACzB,IAAMgP,EAAIrP,KAAK,KAAO6jH,EAAS,KA9CtC,CAgDL,CAAE,GAAIl+H,GAAO,GAAIA,EAAK,IAG7B,IAAI7E,EAAUF,MAAME,SAAW,SAAUipB,GACrC,MAA+B,mBAAxB,GAAGtjB,SAAS1B,KAAKglB,IAGxBg6G,EAAalgI,OAAO4D,MAAQ,SAAU9B,GACtC,IAAI0D,EAAMxF,OAAOR,UAAUoF,gBAAkB,WAAc,OAAO,GAC9DhB,EAAO,GACX,IAAK,IAAIjG,KAAOmE,EACR0D,EAAItE,KAAKY,EAAKnE,IAAMiG,EAAKvE,KAAK1B,GAEtC,OAAOiG,0BClFXnH,EAAQuf,MAAQ,EAAhBvf,OACAA,EAAQwf,UAAY,EAApBxf,0BCDA,IAAIizG,EACA0jB,EAWA3yE,EA4IA3iD,EAtJAsiI,EAAU,CACN,IAAM,IACN,KAAM,KACN,IAAM,IACN30G,EAAM,KACN1qB,EAAM,KACNH,EAAM,KACNyP,EAAM,KACN4c,EAAM,MAIVlvB,EAAQ,SAAU+3B,GAEd,KAAM,CACF5wB,KAAS,cACT6Q,QAAS+f,EACT45E,GAASA,EACTjvD,KAASA,IAIjBr/C,EAAO,SAAU2b,GAWb,OATIA,GAAKA,IAAMq2G,GACXr1H,EAAM,aAAegf,EAAI,iBAAmBq2G,EAAK,KAMrDA,EAAK3yE,EAAK0lB,OAAOupC,GACjBA,GAAM,EACC0jB,GAGXtqG,EAAS,WAEL,IAAIA,EACAQ,EAAS,GAMb,IAJW,MAAP8pG,IACA9pG,EAAS,IACTloB,EAAK,MAEFgyH,GAAM,KAAOA,GAAM,KACtB9pG,GAAU8pG,EACVhyH,IAEJ,GAAW,MAAPgyH,EAEA,IADA9pG,GAAU,IACHloB,KAAUgyH,GAAM,KAAOA,GAAM,KAChC9pG,GAAU8pG,EAGlB,GAAW,MAAPA,GAAqB,MAAPA,EAOd,IANA9pG,GAAU8pG,EACVhyH,IACW,MAAPgyH,GAAqB,MAAPA,IACd9pG,GAAU8pG,EACVhyH,KAEGgyH,GAAM,KAAOA,GAAM,KACtB9pG,GAAU8pG,EACVhyH,IAIR,GADA0nB,GAAUQ,EACL6xD,SAASryD,GAGV,OAAOA,EAFP/qB,EAAM,eAMdurB,EAAS,WAEL,IAAIxC,EACAjqB,EAEAwjI,EADA/2G,EAAS,GAIb,GAAW,MAAP8pG,EACA,KAAOhyH,KAAQ,CACX,GAAW,MAAPgyH,EAEA,OADAhyH,IACOkoB,EACJ,GAAW,OAAP8pG,EAEP,GADAhyH,IACW,MAAPgyH,EAAY,CAEZ,IADAiN,EAAQ,EACHxjI,EAAI,EAAGA,EAAI,IACZiqB,EAAMxL,SAASla,IAAQ,IAClB+5E,SAASr0D,IAFCjqB,GAAK,EAKpBwjI,EAAgB,GAARA,EAAav5G,EAEzBwC,GAAUpN,OAAO0I,aAAay7G,OAC3B,IAA2B,kBAAhBD,EAAQhN,GAGtB,MAFA9pG,GAAU82G,EAAQhN,QAKtB9pG,GAAU8pG,EAItBr1H,EAAM,eAGV24D,EAAQ,WAIJ,KAAO08D,GAAMA,GAAM,KACfhyH,KAkCR88B,EAAQ,WAIJ,IAAIA,EAAQ,GAEZ,GAAW,MAAPk1F,EAAY,CAGZ,GAFAhyH,EAAK,KACLs1D,IACW,MAAP08D,EAEA,OADAhyH,EAAK,KACE88B,EAEX,KAAOk1F,GAAI,CAGP,GAFAl1F,EAAM7+B,KAAKvB,KACX44D,IACW,MAAP08D,EAEA,OADAhyH,EAAK,KACE88B,EAEX98B,EAAK,KACLs1D,KAGR34D,EAAM,cAGV2F,EAAS,WAIL,IAAI/F,EACA+F,EAAS,GAEb,GAAW,MAAP0vH,EAAY,CAGZ,GAFAhyH,EAAK,KACLs1D,IACW,MAAP08D,EAEA,OADAhyH,EAAK,KACEsC,EAEX,KAAO0vH,GAAI,CASP,GARAz1H,EAAM2rB,IACNotC,IACAt1D,EAAK,KACDpB,OAAO4E,eAAe1D,KAAKwC,EAAQ/F,IACnCI,EAAM,kBAAoBJ,EAAM,KAEpC+F,EAAO/F,GAAOG,IACd44D,IACW,MAAP08D,EAEA,OADAhyH,EAAK,KACEsC,EAEXtC,EAAK,KACLs1D,KAGR34D,EAAM,eAGdD,EAAQ,WAMJ,OADA44D,IACQ08D,GACR,IAAK,IACD,OAAO1vH,IACX,IAAK,IACD,OAAOw6B,IACX,IAAK,IACD,OAAO5U,IACX,IAAK,IACD,OAAOR,IACX,QACI,OAAOsqG,GAAM,KAAOA,GAAM,IAAMtqG,IA3G7B,WAIH,OAAQsqG,GACR,IAAK,IAKD,OAJAhyH,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,MACE,EACX,IAAK,IAMD,OALAA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,MACE,EACX,IAAK,IAKD,OAJAA,EAAK,KACLA,EAAK,KACLA,EAAK,KACLA,EAAK,KACE,KAEXrD,EAAM,eAAiBq1H,EAAK,KAkFevoG,KAOnDruB,EAAOC,QAAU,SAAUwH,EAAQq8H,GAC/B,IAAI5+H,EAiBJ,OAfA++C,EAAOx8C,EACPyrG,EAAK,EACL0jB,EAAK,IACL1xH,EAAS5D,IACT44D,IACI08D,GACAr1H,EAAM,gBASgB,oBAAZuiI,EAA0B,SAASC,EAAKC,EAAQ7iI,GAC1D,IAAIiuB,EAAGlf,EAAG5O,EAAQ0iI,EAAO7iI,GACzB,GAAIG,GAA0B,kBAAVA,EAChB,IAAK8tB,KAAK9tB,EACFkC,OAAOR,UAAUoF,eAAe1D,KAAKpD,EAAO8tB,UAElCntB,KADViO,EAAI6zH,EAAKziI,EAAO8tB,IAEZ9tB,EAAM8tB,GAAKlf,SAEJ5O,EAAM8tB,IAK7B,OAAO00G,EAAQp/H,KAAKs/H,EAAQ7iI,EAAKG,GAdG,CAetC,CAAC,GAAI4D,GAAS,IAAOA,sBC/Q3B,IAEI++H,EACAT,EAUAU,EAZAC,EAAY,2HAGZC,EAAO,CACH,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,KAAM,MACN,IAAM,MACN,KAAM,QAId,SAASpU,EAAMljG,GAOX,OADAq3G,EAAUE,UAAY,EACfF,EAAUx7H,KAAKmkB,GAAU,IAAMA,EAAOxM,QAAQ6jH,GAAW,SAAUvhI,GACtE,IAAI2d,EAAI6jH,EAAKxhI,GACb,MAAoB,kBAAN2d,EAAiBA,EAC3B,OAAS,OAAS3d,EAAEmlB,WAAW,GAAG3hB,SAAS,KAAKqC,OAAO,MAC1D,IAAM,IAAMqkB,EAAS,IAG9B,SAASpF,EAAIvmB,EAAK6iI,GAEd,IAAI3jI,EACA+uB,EACAlf,EACA9P,EAEA4wD,EADAszE,EAAOL,EAEP3iI,EAAQ0iI,EAAO7iI,GAenB,OAZIG,GAA0B,kBAAVA,GACY,oBAAjBA,EAAMwuB,SACjBxuB,EAAQA,EAAMwuB,OAAO3uB,IAKN,oBAAR+iI,IACP5iI,EAAQ4iI,EAAIx/H,KAAKs/H,EAAQ7iI,EAAKG,WAInBA,GACX,IAAK,SACD,OAAO0uH,EAAM1uH,GAEjB,IAAK,SAED,OAAOq9E,SAASr9E,GAASoe,OAAOpe,GAAS,OAE7C,IAAK,UACL,IAAK,OAID,OAAOoe,OAAOpe,GAElB,IAAK,SACD,IAAKA,EAAO,MAAO,OAKnB,GAJA2iI,GAAOT,EACPxyE,EAAU,GAGqC,mBAA3CxtD,OAAOR,UAAUoD,SAASrE,MAAMT,GAA6B,CAE7D,IADAlB,EAASkB,EAAMlB,OACVC,EAAI,EAAGA,EAAID,EAAQC,GAAK,EACzB2wD,EAAQ3wD,GAAKqnB,EAAIrnB,EAAGiB,IAAU,OASlC,OAJA4O,EAAuB,IAAnB8gD,EAAQ5wD,OAAe,KAAO6jI,EAC9B,MAAQA,EAAMjzE,EAAQrxC,KAAK,MAAQskH,GAAO,KAAOK,EAAO,IACxD,IAAMtzE,EAAQrxC,KAAK,KAAO,IAC9BskH,EAAMK,EACCp0H,EAKX,GAAIg0H,GAAsB,kBAARA,EAEd,IADA9jI,EAAS8jI,EAAI9jI,OACRC,EAAI,EAAGA,EAAID,EAAQC,GAAK,EAER,kBADjB+uB,EAAI80G,EAAI7jI,MAEJ6P,EAAIwX,EAAI0H,EAAG9tB,KAEP0vD,EAAQnuD,KAAKmtH,EAAM5gG,IAAM60G,EAAM,KAAO,KAAO/zH,QAOzD,IAAKkf,KAAK9tB,EACFkC,OAAOR,UAAUoF,eAAe1D,KAAKpD,EAAO8tB,KAC5Clf,EAAIwX,EAAI0H,EAAG9tB,KAEP0vD,EAAQnuD,KAAKmtH,EAAM5gG,IAAM60G,EAAM,KAAO,KAAO/zH,GAajE,OAJAA,EAAuB,IAAnB8gD,EAAQ5wD,OAAe,KAAO6jI,EAC9B,MAAQA,EAAMjzE,EAAQrxC,KAAK,MAAQskH,GAAO,KAAOK,EAAO,IACxD,IAAMtzE,EAAQrxC,KAAK,KAAO,IAC9BskH,EAAMK,EACCp0H,GAIflQ,EAAOC,QAAU,SAAUqB,EAAO8qH,EAAU+W,GACxC,IAAI9iI,EAMJ,GALA4jI,EAAM,GACNT,EAAS,GAIY,kBAAVL,EACP,IAAK9iI,EAAI,EAAGA,EAAI8iI,EAAO9iI,GAAK,EACxBmjI,GAAU,QAIQ,kBAAVL,IACZK,EAASL,GAMb,GADAe,EAAM9X,EACFA,GAAgC,oBAAbA,IACC,kBAAbA,GAAoD,kBAApBA,EAAShsH,QAChD,MAAM,IAAI0M,MAAM,kBAKpB,OAAO4a,EAAI,GAAI,CAAC,GAAIpmB,4BCxJxBtB,EAAOC,QAAUgK,EAAQ,MAARA,CAAqBA,EAAQ,+BCA9C,IAAMs6H,EAAet6H,EAAQ,MACvBu6H,EAAcv6H,EAAQ,OAE5BjK,EAAOC,QAAU,SAAUwkI,GACzB,IAAMzgC,EAASugC,EAAaE,GACtBC,EAAQF,EAAYC,GAE1B,OAAO,SAAUrtD,EAAWv1C,GAE1B,OADkC,kBAAdu1C,EAAyBA,EAAUhuD,cAAgBguD,GAErE,IAAK,YAAa,OAAO,IAAI4sB,EAAO,KAAM,IAAK,KAAM,IAAKniE,GAC1D,IAAK,YAAa,OAAO,IAAImiE,EAAO,KAAM,IAAK,KAAM,IAAKniE,GAC1D,IAAK,YAAa,OAAO,IAAImiE,EAAO,IAAK,IAAK,KAAM,IAAKniE,GACzD,IAAK,YAAa,OAAO,IAAImiE,EAAO,IAAK,KAAM,KAAM,IAAKniE,GAE1D,IAAK,WAAY,OAAO,IAAImiE,EAAO,KAAM,IAAK,EAAM,IAAKniE,GACzD,IAAK,WAAY,OAAO,IAAImiE,EAAO,KAAM,IAAK,EAAM,IAAKniE,GACzD,IAAK,WAAY,OAAO,IAAImiE,EAAO,IAAK,IAAK,EAAM,IAAKniE,GACxD,IAAK,WAAY,OAAO,IAAImiE,EAAO,IAAK,KAAM,EAAM,IAAKniE,GAEzD,IAAK,WAAY,OAAO,IAAI6iG,EAAM,KAAM,IAAK,GAAM7iG,GACnD,IAAK,WAAY,OAAO,IAAI6iG,EAAM,KAAM,IAAK,GAAM7iG,GAEnD,QAAS,MAAM,IAAI/0B,MAAM,qBAAuBsqE,6HCvB9ChI,EAAcnlE,EAAQ,OAAtBmlE,UAERpvE,EAAOC,QAAU,SAACwkI,GAAD,kDACf,WAAaE,EAAMC,EAAUC,EAAiBC,EAAejjG,GAAS,wBACpE,cAAMA,IAEDkjG,MAAQJ,EACb,EAAKK,UAAYJ,EACjB,EAAKK,iBAAmBJ,EACxB,EAAKK,eAAiBJ,EACtB,EAAKK,SAAWtjG,EAEhB,EAAKujG,OAAS,IAAIX,EAClB,EAAKW,OAAOh5B,WAAWu4B,EAAMC,GAC7B,EAAKzT,YAAa,EAXkD,EADvD,oCAef,SAAYxgD,EAAOsJ,EAAUpW,GAC3B,IAAItiE,EAAQ,KACZ,IACEK,KAAK0xC,OAAOq9B,EAAOsJ,GACnB,MAAOj4E,GACPT,EAAQS,EAGV6hE,EAAStiE,KAvBI,oBA0Bf,SAAQsiE,GACN,IAAItiE,EAAQ,KACZ,IACEK,KAAKiB,KAAKjB,KAAK2xC,UACf,MAAOvxC,GACPT,EAAQS,EAGV6hE,EAAStiE,KAlCI,oBAqCf,SAAQ+Q,EAAM2nE,GACZ,IAAKtoE,EAAO6J,SAASlJ,IAAyB,kBAATA,EAAmB,MAAM,IAAIlQ,UAAU,qCAC5E,GAAIR,KAAKuvH,WAAY,MAAM,IAAIrkH,MAAM,yBAKrC,OAJK6E,EAAO6J,SAASlJ,KAAOA,EAAOX,EAAOhL,KAAK2L,EAAM2nE,IAErDr4E,KAAKwjI,OAAOC,OAAO/yH,GAEZ1Q,OA5CM,oBA+Cf,SAAQq4E,GACN,GAAIr4E,KAAKuvH,WAAY,MAAM,IAAIrkH,MAAM,yBACrClL,KAAKuvH,YAAa,EAEdvvH,KAAKqjI,kBAAkBrjI,KAAKwjI,OAAOE,kBAAkB1jI,KAAKqjI,kBAC9D,IAAI1xF,EAAS3xC,KAAKwjI,OAAOG,QAAQ3jI,KAAKsjI,eAAiB,GAKvD,YAJiBjjI,IAAbg4E,IAAwB1mC,EAASA,EAAOntC,SAAS6zE,IAErDr4E,KAAK4jI,cAEEjyF,IAzDM,yBA6Df,WAEE,OADA3xC,KAAKwjI,OAAOh5B,WAAWxqG,KAAKmjI,MAAOnjI,KAAKojI,WACjCpjI,OA/DM,oBAmEf,WACE,IAAM4sB,EAAQ,IAAIw1E,EAAOpiG,KAAKmjI,MAAOnjI,KAAKojI,UAAWpjI,KAAKqjI,iBAAkBrjI,KAAKsjI,eAAgBtjI,KAAKujI,UAItG,OAHAvjI,KAAKwjI,OAAOryH,KAAKyb,EAAM42G,QACvB52G,EAAM2iG,WAAavvH,KAAKuvH,WAEjB3iG,MAxEM,GAAsC4gD,4HCF/CA,EAAcnlE,EAAQ,OAAtBmlE,UAERpvE,EAAOC,QAAU,SAACwkI,GAAD,kDACf,WAAaE,EAAMC,EAAUC,EAAiBhjG,GAAS,wBACrD,cAAMA,IAEDkjG,MAAQJ,EACb,EAAKK,UAAYJ,EACjB,EAAKK,iBAAmBJ,EACxB,EAAKM,SAAWtjG,EAEhB,EAAKujG,OAAS,IAAIX,EAClB,EAAKW,OAAOh5B,WAAWu4B,EAAMC,GAC7B,EAAKzT,YAAa,EAVmC,EADxC,oCAcf,SAAYxgD,EAAOsJ,EAAUpW,GAC3B,IAAItiE,EAAQ,KACZ,IACEK,KAAK0xC,OAAOq9B,EAAOsJ,GACnB,MAAOj4E,GACPT,EAAQS,EAGV6hE,EAAStiE,KAtBI,oBAyBf,cAzBe,mBA2Bf,SAAOikB,GACL5jB,KAAKiB,KAAKjB,KAAK2jI,QAAQ//G,MA5BV,oBA+Bf,SAAQlT,EAAM2nE,GACZ,IAAKtoE,EAAO6J,SAASlJ,IAAyB,kBAATA,EAAmB,MAAM,IAAIlQ,UAAU,qCAC5E,GAAIR,KAAKuvH,WAAY,MAAM,IAAIrkH,MAAM,0BAKrC,OAJK6E,EAAO6J,SAASlJ,KAAOA,EAAOX,EAAOhL,KAAK2L,EAAM2nE,IAErDr4E,KAAKwjI,OAAOC,OAAO/yH,GAEZ1Q,OAtCM,qBAyCf,SAAS6jI,EAAgBxrD,GAClBr4E,KAAKuvH,aACRvvH,KAAKuvH,YAAa,EAClBvvH,KAAKwjI,OAAOE,kBAAkB1jI,KAAKqjI,mBAGrC,IAAI3yH,EAAO1Q,KAAKwjI,OAAOG,QAAQE,GAG/B,YAFiBxjI,IAAbg4E,IAAwB3nE,EAAOA,EAAKlM,SAAS6zE,IAE1C3nE,IAlDM,yBAqDf,WAEE,OADA1Q,KAAKwjI,OAAOh5B,WAAWxqG,KAAKmjI,MAAOnjI,KAAKojI,WACjCpjI,OAvDM,oBA0Df,WACE,IAAM4sB,EAAQ,IAAIk2G,EAAM9iI,KAAKmjI,MAAOnjI,KAAKojI,UAAWpjI,KAAKqjI,iBAAkBrjI,KAAKujI,UAIhF,OAHAvjI,KAAKwjI,OAAOryH,KAAKyb,EAAM42G,QACvB52G,EAAM2iG,WAAavvH,KAAKuvH,WAEjB3iG,MA/DM,GAAqC4gD,yBCFtD,IAAMs2D,EAAwB,CAAC,EAAG,EAAG,MAAO,EAAG,MAAO,WAAY,WAAY,WAAY,MAAO,EAAG,WAAY,EAAG,WAAY,WAAY,MAAO,WAAY,IAAK,EAAG,IAAK,EAAG,WAAY,EAAG,WAAY,EAAG,WAAY,EAAG,IAAK,WAAY,MAAO,WAAY,MAAO,WAAY,MAAO,WAAY,IAAK,WAAY,MAAO,EAAG,WAAY,WAAY,WAAY,WAAY,MAAO,WAAY,WAAY,EAAG,WAAY,YAE9ZzlI,EAAQ0lI,MAAQ,SAAUxhI,GACxB,IAAK,IAAIw1B,EAAQ,EAAGA,EAAQ,KAAMA,EAAO,CAEvC,IAAMisG,EAAMzhI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC0hI,EAAM1hI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC2hI,EAAM3hI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC4hI,EAAM5hI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC6hI,EAAM7hI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC8hI,EAAM9hI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvC+hI,EAAM/hI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvCgiI,EAAMhiI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvCiiI,EAAMjiI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IACvCkiI,EAAMliI,EAAE,GAAKA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAAMA,EAAE,IAEzC+qB,EAAKk3G,GAAON,GAAO,EAAIC,IAAQ,IAC/Bn1G,EAAKy1G,GAAON,GAAO,EAAID,IAAQ,IAC7BQ,EAASniI,EAAE,GAAK+qB,EAChBq3G,EAASpiI,EAAE,GAAKysB,EAChB41G,EAASriI,EAAE,IAAM+qB,EACjBu3G,EAAStiI,EAAE,IAAMysB,EACjB81G,EAAUviI,EAAE,IAAM+qB,EAClBy3G,EAAUxiI,EAAE,IAAMysB,EAClBg2G,EAAUziI,EAAE,IAAM+qB,EAClB23G,EAAU1iI,EAAE,IAAMysB,EAClBk2G,EAAU3iI,EAAE,IAAM+qB,EAClB63G,EAAU5iI,EAAE,IAAMysB,EACxB1B,EAAK02G,GAAOI,GAAO,EAAIC,IAAQ,IAC/Br1G,EAAKi1G,GAAOI,GAAO,EAAID,IAAQ,IAC/B,IAAMgB,EAAS7iI,EAAE,GAAK+qB,EAChB+3G,EAAS9iI,EAAE,GAAKysB,EAChBs2G,EAAS/iI,EAAE,IAAM+qB,EACjBi4G,EAAShjI,EAAE,IAAMysB,EACjBw2G,EAAUjjI,EAAE,IAAM+qB,EAClBm4G,EAAUljI,EAAE,IAAMysB,EAClB02G,EAAUnjI,EAAE,IAAM+qB,EAClBq4G,EAAUpjI,EAAE,IAAMysB,EAClB42G,EAAUrjI,EAAE,IAAM+qB,EAClBu4G,EAAUtjI,EAAE,IAAMysB,EACxB1B,EAAK42G,GAAOI,GAAO,EAAIC,IAAQ,IAC/Bv1G,EAAKm1G,GAAOI,GAAO,EAAID,IAAQ,IAC/B,IAAMwB,EAASvjI,EAAE,GAAK+qB,EAChBy4G,EAASxjI,EAAE,GAAKysB,EAChBg3G,EAASzjI,EAAE,IAAM+qB,EACjB24G,EAAS1jI,EAAE,IAAMysB,EACjBk3G,EAAU3jI,EAAE,IAAM+qB,EAClB64G,EAAU5jI,EAAE,IAAMysB,EAClBo3G,EAAU7jI,EAAE,IAAM+qB,EAClB+4G,EAAU9jI,EAAE,IAAMysB,EAClBs3G,EAAU/jI,EAAE,IAAM+qB,EAClBi5G,EAAUhkI,EAAE,IAAMysB,EACxB1B,EAAK82G,GAAOI,GAAO,EAAIC,IAAQ,IAC/Bz1G,EAAKq1G,GAAOI,GAAO,EAAID,IAAQ,IAC/B,IAAMgC,EAASjkI,EAAE,GAAK+qB,EAChBm5G,EAASlkI,EAAE,GAAKysB,EAChB03G,EAASnkI,EAAE,IAAM+qB,EACjBq5G,EAASpkI,EAAE,IAAMysB,EACjB43G,EAAUrkI,EAAE,IAAM+qB,EAClBu5G,EAAUtkI,EAAE,IAAMysB,EAClB83G,EAAUvkI,EAAE,IAAM+qB,EAClBy5G,EAAUxkI,EAAE,IAAMysB,EAClBg4G,EAAUzkI,EAAE,IAAM+qB,EAClB25G,GAAU1kI,EAAE,IAAMysB,EACxB1B,EAAKg3G,GAAON,GAAO,EAAIC,IAAQ,IAC/Bj1G,EAAKu1G,GAAON,GAAO,EAAID,IAAQ,IAC/B,IAAMkD,GAAS3kI,EAAE,GAAK+qB,EAChB65G,GAAS5kI,EAAE,GAAKysB,EAChBo4G,GAAS7kI,EAAE,IAAM+qB,EACjB+5G,GAAS9kI,EAAE,IAAMysB,EACjBs4G,GAAU/kI,EAAE,IAAM+qB,EAClBi6G,GAAUhlI,EAAE,IAAMysB,EAClBw4G,GAAUjlI,EAAE,IAAM+qB,EAClBm6G,GAAUllI,EAAE,IAAMysB,EAClB04G,GAAUnlI,EAAE,IAAM+qB,EAClBq6G,GAAUplI,EAAE,IAAMysB,EAGlB44G,GAASlD,EACTmD,GAASlD,EACTmD,GAAWjD,GAAU,EAAID,IAAW,GACpCmD,GAAWnD,GAAU,EAAIC,IAAW,GACpCmD,GAAUlD,GAAW,EAAIC,IAAY,GACrCkD,GAAUlD,GAAW,EAAID,IAAY,GACrCoD,GAAWjD,GAAW,EAAID,IAAY,GACtCmD,GAAWnD,GAAW,EAAIC,IAAY,GACtCmD,GAAWlD,GAAW,GAAKC,IAAY,GACvCkD,GAAWlD,GAAW,GAAKD,IAAY,GACvCoD,GAAWlD,GAAU,EAAIC,IAAW,GACpCkD,GAAWlD,GAAU,EAAID,IAAW,GACpCoD,GAAUjD,GAAU,GAAKD,IAAW,GACpCmD,GAAUnD,GAAU,GAAKC,IAAW,GACpCmD,GAAWlD,GAAW,GAAKC,IAAY,GACvCkD,GAAWlD,GAAW,GAAKD,IAAY,GACvCoD,GAAUjD,GAAW,GAAKD,IAAY,GACtCmD,GAAUnD,GAAW,GAAKC,IAAY,GACtCmD,GAAWlD,GAAW,EAAIC,IAAY,GACtCkD,GAAWlD,GAAW,EAAID,IAAY,GACtCoD,GAAWjD,GAAU,GAAKD,IAAW,EACrCmD,GAAWnD,GAAU,GAAKC,IAAW,EACrCmD,GAAWlD,GAAU,EAAIC,IAAW,GACpCkD,GAAWlD,GAAU,EAAID,IAAW,GACpCoD,GAAUjD,GAAW,GAAKD,IAAY,GACtCmD,GAAUnD,GAAW,GAAKC,IAAY,GACtCmD,GAAWlD,GAAW,GAAKC,IAAY,GACvCkD,GAAWlD,GAAW,GAAKD,IAAY,GACvCoD,GAAUjD,GAAW,GAAKD,IAAY,EACtCmD,GAAUnD,GAAW,GAAKC,IAAY,EACtCmD,GAAUlD,GAAU,GAAKC,IAAW,EACpCkD,GAAUlD,GAAU,GAAKD,IAAW,EACpCoD,GAAWjD,GAAU,GAAKD,IAAW,EACrCmD,GAAWnD,GAAU,GAAKC,IAAW,EACrCmD,GAAWlD,GAAW,GAAKC,IAAY,EACvCkD,GAAWlD,GAAW,GAAKD,IAAY,EACvCoD,GAAUlD,GAAW,GAAKC,IAAY,GACtCkD,GAAUlD,GAAW,GAAKD,IAAY,GACtCoD,GAAWjD,IAAW,GAAKD,IAAY,EACvCmD,GAAWnD,GAAW,GAAKC,KAAY,EACvCmD,GAAWlD,IAAU,GAAKC,KAAW,EACrCkD,GAAWlD,IAAU,GAAKD,KAAW,EACrCoD,GAAUlD,IAAU,GAAKC,KAAW,GACpCkD,GAAUlD,IAAU,GAAKD,KAAW,GACpCoD,GAAWjD,IAAW,EAAID,KAAY,GACtCmD,GAAWnD,IAAW,EAAIC,KAAY,GACtCmD,GAAWlD,IAAW,EAAIC,KAAY,GACtCkD,GAAWlD,IAAW,EAAID,KAAY,GACtCoD,GAAUlD,IAAW,GAAKC,KAAY,GACtCkD,GAAUlD,IAAW,GAAKD,KAAY,GAG5CnlI,EAAE,GAAKqlI,IAAWY,GAASY,GAC3B7mI,EAAE,GAAKslI,IAAWY,GAASY,GAC3B9mI,EAAE,IAAMmnI,IAAWY,GAAStC,GAC5BzlI,EAAE,IAAMonI,IAAWY,GAAStC,GAC5B1lI,EAAE,IAAM+lI,IAAYY,GAAUY,GAC9BvnI,EAAE,IAAMgmI,IAAYY,GAAUY,GAC9BxnI,EAAE,IAAM6nI,IAAYtC,GAAUY,GAC9BnmI,EAAE,IAAM8nI,IAAYtC,GAAUY,GAC9BpmI,EAAE,IAAMymI,IAAYY,GAAUY,GAC9BjoI,EAAE,IAAM0mI,IAAYY,GAAUY,GAC9BloI,EAAE,GAAKimI,IAAWY,GAASY,GAC3BznI,EAAE,GAAKkmI,IAAWY,GAASY,GAC3B1nI,EAAE,IAAM+nI,IAAWtC,GAASY,GAC5BrmI,EAAE,IAAMgoI,IAAWtC,GAASY,GAC5BtmI,EAAE,IAAM2mI,IAAYY,GAAUY,GAC9BnoI,EAAE,IAAM4mI,IAAYY,GAAUY,GAC9BpoI,EAAE,IAAMulI,IAAYY,GAAUY,GAC9B/mI,EAAE,IAAMwlI,IAAYY,GAAUY,GAC9BhnI,EAAE,IAAMqnI,IAAYY,GAAUtC,GAC9B3lI,EAAE,IAAMsnI,IAAYY,GAAUtC,GAC9B5lI,EAAE,GAAK6mI,IAAWY,GAASY,GAC3BroI,EAAE,GAAK8mI,IAAWY,GAASY,GAC3BtoI,EAAE,IAAMylI,IAAWY,GAASY,GAC5BjnI,EAAE,IAAM0lI,IAAWY,GAASY,GAC5BlnI,EAAE,IAAMunI,IAAYY,GAAUtC,GAC9B7lI,EAAE,IAAMwnI,IAAYY,GAAUtC,GAC9B9lI,EAAE,IAAMmmI,IAAYY,GAAUY,GAC9B3nI,EAAE,IAAMomI,IAAYY,GAAUY,GAC9B5nI,EAAE,IAAMioI,IAAYtC,GAAUY,GAC9BvmI,EAAE,IAAMkoI,IAAYtC,GAAUY,GAC9BxmI,EAAE,GAAKynI,IAAWY,GAAShD,GAC3BrlI,EAAE,GAAK0nI,IAAWY,GAAShD,GAC3BtlI,EAAE,IAAMqmI,IAAWY,GAASE,GAC5BnnI,EAAE,IAAMsmI,IAAWY,GAASE,GAC5BpnI,EAAE,IAAMmoI,IAAYtC,GAAUE,GAC9B/lI,EAAE,IAAMooI,IAAYtC,GAAUE,GAC9BhmI,EAAE,IAAM+mI,IAAYY,GAAUE,GAC9B7nI,EAAE,IAAMgnI,IAAYY,GAAUE,GAC9B9nI,EAAE,IAAM2lI,IAAYY,GAAUE,GAC9BzmI,EAAE,IAAM4lI,IAAYY,GAAUE,GAC9B1mI,EAAE,GAAKqoI,IAAWhD,GAASY,GAC3BjmI,EAAE,GAAKsoI,IAAWhD,GAASY,GAC3BlmI,EAAE,IAAMinI,IAAWE,GAASY,GAC5B/nI,EAAE,IAAMknI,IAAWE,GAASY,GAC5BhoI,EAAE,IAAM6lI,IAAYE,GAAUY,GAC9B3mI,EAAE,IAAM8lI,IAAYE,GAAUY,GAC9B5mI,EAAE,IAAM2nI,IAAYE,GAAUtC,GAC9BvlI,EAAE,IAAM4nI,IAAYE,GAAUtC,GAC9BxlI,EAAE,IAAMumI,IAAYE,GAAUY,GAC9BrnI,EAAE,IAAMwmI,IAAYE,GAAUY,GAG9BtnI,EAAE,IAAMuhI,EAA8B,EAAR/rG,GAC9Bx1B,EAAE,IAAMuhI,EAA8B,EAAR/rG,EAAY,kDCvLxC+yG,EAAcziI,EAAQ,OAE5B,SAAS+5F,IAEPpiG,KAAKwe,MAAQ,CACX,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,EACZ,EAAG,EAAG,EAAG,EAAG,GAGdxe,KAAKssE,UAAY,KACjBtsE,KAAKijB,MAAQ,EACbjjB,KAAK+qI,WAAY,EAGnB3oC,EAAOhhG,UAAUopG,WAAa,SAAUu4B,EAAMC,GAC5C,IAAK,IAAIvkI,EAAI,EAAGA,EAAI,KAAMA,EAAGuB,KAAKwe,MAAM/f,GAAK,EAC7CuB,KAAKssE,UAAYy2D,EAAO,EACxB/iI,KAAKijB,MAAQ,EACbjjB,KAAK+qI,WAAY,GAGnB3oC,EAAOhhG,UAAUqiI,OAAS,SAAU/yH,GAClC,IAAK,IAAIjS,EAAI,EAAGA,EAAIiS,EAAKlS,SAAUC,EACjCuB,KAAKwe,SAASxe,KAAKijB,MAAQ,KAAOvS,EAAKjS,IAAYuB,KAAKijB,MAAQ,EAAlB,EAC9CjjB,KAAKijB,OAAS,EACVjjB,KAAKijB,QAAUjjB,KAAKssE,YACtBw+D,EAAY/G,MAAM/jI,KAAKwe,OACvBxe,KAAKijB,MAAQ,IAKnBm/E,EAAOhhG,UAAUsiI,kBAAoB,SAAUruH,GAC7CrV,KAAKwe,SAASxe,KAAKijB,MAAQ,KAAO5N,GAAcrV,KAAKijB,MAAQ,EAAlB,EACrB,KAAV,IAAP5N,IAAsBrV,KAAKijB,QAAWjjB,KAAKssE,UAAY,GAAIw+D,EAAY/G,MAAM/jI,KAAKwe,OACvFxe,KAAKwe,UAAUxe,KAAKssE,UAAY,GAAK,KAAO,MAAetsE,KAAKssE,UAAY,GAAK,EAA5B,EACrDw+D,EAAY/G,MAAM/jI,KAAKwe,OACvBxe,KAAKijB,MAAQ,EACbjjB,KAAK+qI,WAAY,GAGnB3oC,EAAOhhG,UAAUuiI,QAAU,SAAUnlI,GAC9BwB,KAAK+qI,WAAW/qI,KAAK0jI,kBAAkB,GAG5C,IADA,IAAM/+G,EAAS5U,EAAOI,MAAM3R,GACnBC,EAAI,EAAGA,EAAID,IAAUC,EAC5BkmB,EAAOlmB,GAAMuB,KAAKwe,SAASxe,KAAKijB,MAAQ,MAAcjjB,KAAKijB,MAAQ,EAAlB,EAAyB,IAC1EjjB,KAAKijB,OAAS,EACVjjB,KAAKijB,QAAUjjB,KAAKssE,YACtBw+D,EAAY/G,MAAM/jI,KAAKwe,OACvBxe,KAAKijB,MAAQ,GAIjB,OAAO0B,GAGTy9E,EAAOhhG,UAAU+P,KAAO,SAAUwb,GAChC,IAAK,IAAIluB,EAAI,EAAGA,EAAI,KAAMA,EAAGkuB,EAAKnO,MAAM/f,GAAKuB,KAAKwe,MAAM/f,GACxDkuB,EAAK2/C,UAAYtsE,KAAKssE,UACtB3/C,EAAK1J,MAAQjjB,KAAKijB,MAClB0J,EAAKo+G,UAAY/qI,KAAK+qI,WAGxB3sI,EAAOC,QAAU+jG,yBCnEjB,IAGIhgG,EAHOiG,EAAQ,OAGDjG,OAElBhE,EAAOC,QAAU+D,yBCLjB,IAAI4oI,EAAY3iI,EAAQ,OACpB4iI,EAAc5iI,EAAQ,OACtBxJ,EAAUwJ,EAAQ,OAClBuR,EAAWvR,EAAQ,MACnB6iI,EAAU7iI,EAAQ,OAClB+yH,EAAe/yH,EAAQ,OAMvB7B,EAHc5E,OAAOR,UAGQoF,eAqCjCpI,EAAOC,QA3BP,SAAuBqB,EAAOwvD,GAC5B,IAAIi8E,EAAQtsI,EAAQa,GAChB0rI,GAASD,GAASF,EAAYvrI,GAC9B2rI,GAAUF,IAAUC,GAASxxH,EAASla,GACtC4rI,GAAUH,IAAUC,IAAUC,GAAUjQ,EAAa17H,GACrD6rI,EAAcJ,GAASC,GAASC,GAAUC,EAC1ChoI,EAASioI,EAAcP,EAAUtrI,EAAMlB,OAAQsf,QAAU,GACzDtf,EAAS8E,EAAO9E,OAEpB,IAAK,IAAIe,KAAOG,GACTwvD,IAAa1oD,EAAe1D,KAAKpD,EAAOH,IACvCgsI,IAEQ,UAAPhsI,GAEC8rI,IAAkB,UAAP9rI,GAA0B,UAAPA,IAE9B+rI,IAAkB,UAAP/rI,GAA0B,cAAPA,GAA8B,cAAPA,IAEtD2rI,EAAQ3rI,EAAKf,KAElB8E,EAAOrC,KAAK1B,GAGhB,OAAO+D,0BC7CT,IAAIlB,EAASiG,EAAQ,OACjBmjI,EAAYnjI,EAAQ,OACpBy0D,EAAiBz0D,EAAQ,OAOzBojI,EAAiBrpI,EAASA,EAAOglE,iBAAc/mE,EAkBnDjC,EAAOC,QATP,SAAoBqB,GAClB,OAAa,MAATA,OACeW,IAAVX,EAdQ,qBADL,gBAiBJ+rI,GAAkBA,KAAkB7pI,OAAOlC,GAC/C8rI,EAAU9rI,GACVo9D,EAAep9D,0BCxBrB,IAAIgsI,EAAarjI,EAAQ,OACrBsjI,EAAetjI,EAAQ,OAgB3BjK,EAAOC,QAJP,SAAyBqB,GACvB,OAAOisI,EAAajsI,IAVR,sBAUkBgsI,EAAWhsI,2BCd3C,IAAIgsI,EAAarjI,EAAQ,OACrBujI,EAAWvjI,EAAQ,OACnBsjI,EAAetjI,EAAQ,OA8BvBwjI,EAAiB,GACrBA,EAZiB,yBAYYA,EAXZ,yBAYjBA,EAXc,sBAWYA,EAVX,uBAWfA,EAVe,uBAUYA,EATZ,uBAUfA,EATsB,8BASYA,EARlB,wBAShBA,EARgB,yBAQY,EAC5BA,EAjCc,sBAiCYA,EAhCX,kBAiCfA,EApBqB,wBAoBYA,EAhCnB,oBAiCdA,EApBkB,qBAoBYA,EAhChB,iBAiCdA,EAhCe,kBAgCYA,EA/Bb,qBAgCdA,EA/Ba,gBA+BYA,EA9BT,mBA+BhBA,EA9BgB,mBA8BYA,EA7BZ,mBA8BhBA,EA7Ba,gBA6BYA,EA5BT,mBA6BhBA,EA5BiB,qBA4BY,EAc7BztI,EAAOC,QALP,SAA0BqB,GACxB,OAAOisI,EAAajsI,IAClBksI,EAASlsI,EAAMlB,WAAaqtI,EAAeH,EAAWhsI,4BCxD1D,IAAIosI,EAAczjI,EAAQ,OACtB0jI,EAAa1jI,EAAQ,OAMrB7B,EAHc5E,OAAOR,UAGQoF,eAsBjCpI,EAAOC,QAbP,SAAkBiH,GAChB,IAAKwmI,EAAYxmI,GACf,OAAOymI,EAAWzmI,GAEpB,IAAIhC,EAAS,GACb,IAAK,IAAI/D,KAAOqC,OAAO0D,GACjBkB,EAAe1D,KAAKwC,EAAQ/F,IAAe,eAAPA,GACtC+D,EAAOrC,KAAK1B,GAGhB,OAAO+D,sBCPTlF,EAAOC,QAVP,SAAmBmE,EAAGqhE,GAIpB,IAHA,IAAI10D,GAAS,EACT7L,EAAS3E,MAAM6D,KAEV2M,EAAQ3M,GACfc,EAAO6L,GAAS00D,EAAS10D,GAE3B,OAAO7L,sBCHTlF,EAAOC,QANP,SAAmBkkB,GACjB,OAAO,SAAS7iB,GACd,OAAO6iB,EAAK7iB,4BCRhB,IAAIssI,EAA8B,iBAAV1sF,EAAAA,GAAsBA,EAAAA,GAAUA,EAAAA,EAAO19C,SAAWA,QAAU09C,EAAAA,EAEpFlhD,EAAOC,QAAU2tI,yBCHjB,IAAI5pI,EAASiG,EAAQ,OAGjB4jI,EAAcrqI,OAAOR,UAGrBoF,EAAiBylI,EAAYzlI,eAO7B0lI,EAAuBD,EAAYznI,SAGnCinI,EAAiBrpI,EAASA,EAAOglE,iBAAc/mE,EA6BnDjC,EAAOC,QApBP,SAAmBqB,GACjB,IAAIivH,EAAQnoH,EAAe1D,KAAKpD,EAAO+rI,GACnCtjF,EAAMzoD,EAAM+rI,GAEhB,IACE/rI,EAAM+rI,QAAkBprI,EACxB,IAAI8rI,GAAW,EACf,MAAO1pI,IAET,IAAIa,EAAS4oI,EAAqBppI,KAAKpD,GAQvC,OAPIysI,IACExd,EACFjvH,EAAM+rI,GAAkBtjF,SAEjBzoD,EAAM+rI,IAGVnoI,sBCzCT,IAGI8oI,EAAW,mBAoBfhuI,EAAOC,QAVP,SAAiBqB,EAAOlB,GACtB,IAAI0T,SAAcxS,EAGlB,SAFAlB,EAAmB,MAAVA,EAfY,iBAewBA,KAGlC,UAAR0T,GACU,UAARA,GAAoBk6H,EAASrlI,KAAKrH,KAChCA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,EAAQlB,sBCpBjD,IAAIytI,EAAcrqI,OAAOR,UAgBzBhD,EAAOC,QAPP,SAAqBqB,GACnB,IAAI2sI,EAAO3sI,GAASA,EAAM+D,YAG1B,OAAO/D,KAFqB,mBAAR2sI,GAAsBA,EAAKjrI,WAAc6qI,2BCZ/D,IAGIF,EAHU1jI,EAAQ,MAGLikI,CAAQ1qI,OAAO4D,KAAM5D,QAEtCxD,EAAOC,QAAU0tI,oCCLjB,IAAIC,EAAa3jI,EAAQ,OAGrBkkI,EAA4CluI,IAAYA,EAAQmuI,UAAYnuI,EAG5EouI,EAAaF,GAA4CnuI,IAAWA,EAAOouI,UAAYpuI,EAMvFsuI,EAHgBD,GAAcA,EAAWpuI,UAAYkuI,GAGtBP,EAAWxyF,QAG1CmzF,EAAY,WACd,IAEE,IAAIhmH,EAAQ8lH,GAAcA,EAAWpkI,SAAWokI,EAAWpkI,QAAQ,QAAQse,MAE3E,OAAIA,GAKG+lH,GAAeA,EAAYE,SAAWF,EAAYE,QAAQ,QACjE,MAAOnqI,KAXK,GAchBrE,EAAOC,QAAUsuI,qBC5BjB,IAOIT,EAPctqI,OAAOR,UAOcoD,SAavCpG,EAAOC,QAJP,SAAwBqB,GACtB,OAAOwsI,EAAqBppI,KAAKpD,uBCJnCtB,EAAOC,QANP,SAAiBkkB,EAAMqU,GACrB,OAAO,SAASp3B,GACd,OAAO+iB,EAAKqU,EAAUp3B,6BCV1B,IAAIwsI,EAAa3jI,EAAQ,OAGrBwkI,EAA0B,iBAAR9tI,MAAoBA,MAAQA,KAAK6C,SAAWA,QAAU7C,KAGxE0iG,EAAOuqC,GAAca,GAAY3rI,SAAS,cAATA,GAErC9C,EAAOC,QAAUojG,yBCRjB,IAAIqrC,EAAkBzkI,EAAQ,MAC1BsjI,EAAetjI,EAAQ,OAGvB4jI,EAAcrqI,OAAOR,UAGrBoF,EAAiBylI,EAAYzlI,eAG7Bq2D,EAAuBovE,EAAYpvE,qBAoBnCouE,EAAc6B,EAAgB,WAAa,OAAO5sI,UAApB,IAAsC4sI,EAAkB,SAASptI,GACjG,OAAOisI,EAAajsI,IAAU8G,EAAe1D,KAAKpD,EAAO,YACtDm9D,EAAqB/5D,KAAKpD,EAAO,WAGtCtB,EAAOC,QAAU4sI,qBCZjB,IAAIpsI,EAAUF,MAAME,QAEpBT,EAAOC,QAAUQ,yBCzBjB,IAAIkuI,EAAa1kI,EAAQ,OACrBujI,EAAWvjI,EAAQ,OA+BvBjK,EAAOC,QAJP,SAAqBqB,GACnB,OAAgB,MAATA,GAAiBksI,EAASlsI,EAAMlB,UAAYuuI,EAAWrtI,qCC7BhE,IAAI+hG,EAAOp5F,EAAQ,OACf2kI,EAAY3kI,EAAQ,OAGpBkkI,EAA4CluI,IAAYA,EAAQmuI,UAAYnuI,EAG5EouI,EAAaF,GAA4CnuI,IAAWA,EAAOouI,UAAYpuI,EAMvF2R,EAHgB08H,GAAcA,EAAWpuI,UAAYkuI,EAG5B9qC,EAAK1xF,YAAS1P,EAsBvCuZ,GAnBiB7J,EAASA,EAAO6J,cAAWvZ,IAmBf2sI,EAEjC5uI,EAAOC,QAAUub,yBCrCjB,IAAI8xH,EAAarjI,EAAQ,OACrB4kI,EAAW5kI,EAAQ,MAmCvBjK,EAAOC,QAVP,SAAoBqB,GAClB,IAAKutI,EAASvtI,GACZ,OAAO,EAIT,IAAIyoD,EAAMujF,EAAWhsI,GACrB,MA5BY,qBA4BLyoD,GA3BI,8BA2BcA,GA7BZ,0BA6B6BA,GA1B7B,kBA0BgDA,sBCC/D/pD,EAAOC,QALP,SAAkBqB,GAChB,MAAuB,iBAATA,GACZA,GAAS,GAAKA,EAAQ,GAAK,GAAKA,GA9Bb,oCC6BvBtB,EAAOC,QALP,SAAkBqB,GAChB,IAAIwS,SAAcxS,EAClB,OAAgB,MAATA,IAA0B,UAARwS,GAA4B,YAARA,uBCC/C9T,EAAOC,QAJP,SAAsBqB,GACpB,OAAgB,MAATA,GAAiC,iBAATA,0BCzBjC,IAAIwtI,EAAmB7kI,EAAQ,OAC3B8kI,EAAY9kI,EAAQ,OACpBskI,EAAWtkI,EAAQ,OAGnB+kI,EAAmBT,GAAYA,EAASvR,aAmBxCA,EAAegS,EAAmBD,EAAUC,GAAoBF,EAEpE9uI,EAAOC,QAAU+8H,yBC1BjB,IAAIiS,EAAgBhlI,EAAQ,OACxBilI,EAAWjlI,EAAQ,OACnBklI,EAAcllI,EAAQ,OAkC1BjK,EAAOC,QAJP,SAAciH,GACZ,OAAOioI,EAAYjoI,GAAU+nI,EAAc/nI,GAAUgoI,EAAShoI,uBCjBhElH,EAAOC,QAJP,gCCKAD,EAAOC,QAJP,WACE,OAAO,uCCbT,IAAIgsB,EAAWhiB,EAAQ,OACnB6mH,EAAW7mH,EAAQ,OACnB0H,EAAS1H,EAAAA,OAAAA,OAETmlI,EAAU,IAAI7uI,MAAM,IAExB,SAAS+wF,IACPw/B,EAASpsH,KAAK9C,KAAM,IAGpBA,KAAKqK,GAAK,WACVrK,KAAK+I,GAAK,WACV/I,KAAKoJ,GAAK,WACVpJ,KAAKoF,GAAK,UA+GZ,SAASqoI,EAAM3lH,EAAGtlB,GAChB,OAAQslB,GAAKtlB,EAAMslB,IAAO,GAAKtlB,EAGjC,SAASkrI,EAAK1sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGlX,EAAGlK,EAAGjrB,GAC9B,OAAQkrI,EAAMzsI,GAAMqsB,EAAI1O,GAAQ0O,EAAKuhB,GAAMlX,EAAIlK,EAAK,EAAGjrB,GAAK8qB,EAAK,EAGnE,SAASsgH,EAAK3sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGlX,EAAGlK,EAAGjrB,GAC9B,OAAQkrI,EAAMzsI,GAAMqsB,EAAIuhB,EAAMjwB,GAAMiwB,GAAOlX,EAAIlK,EAAK,EAAGjrB,GAAK8qB,EAAK,EAGnE,SAASugH,EAAK5sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGlX,EAAGlK,EAAGjrB,GAC9B,OAAQkrI,EAAMzsI,GAAKqsB,EAAI1O,EAAIiwB,GAAKlX,EAAIlK,EAAK,EAAGjrB,GAAK8qB,EAAK,EAGxD,SAASwgH,EAAK7sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGlX,EAAGlK,EAAGjrB,GAC9B,OAAQkrI,EAAMzsI,GAAM2d,GAAK0O,GAAMuhB,IAAQlX,EAAIlK,EAAK,EAAGjrB,GAAK8qB,EAAK,EA7H/DhD,EAASqlE,EAAKw/B,GAEdx/B,EAAItuF,UAAUmwC,QAAU,WAEtB,IADA,IAAIu5B,EAAI0iE,EACC/uI,EAAI,EAAGA,EAAI,KAAMA,EAAGqsE,EAAErsE,GAAKuB,KAAKmvH,OAAOjwC,YAAgB,EAAJzgF,GAE5D,IAAIuC,EAAIhB,KAAKqK,GACTgjB,EAAIrtB,KAAK+I,GACT4V,EAAI3e,KAAKoJ,GACTwlC,EAAI5uC,KAAKoF,GAEbpE,EAAI0sI,EAAI1sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAI8+F,EAAI9+F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,IACtCnsD,EAAI+uH,EAAI/uH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,GAAI,UAAY,IACtCz9C,EAAIqgH,EAAIrgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,WAAY,IACtC9pE,EAAI0sI,EAAI1sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAI8+F,EAAI9+F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,IACtCnsD,EAAI+uH,EAAI/uH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,GAAI,WAAY,IACtCz9C,EAAIqgH,EAAIrgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,WAAY,IACtC9pE,EAAI0sI,EAAI1sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAI8+F,EAAI9+F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,IACtCnsD,EAAI+uH,EAAI/uH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,IAAK,WAAY,IACvCz9C,EAAIqgH,EAAIrgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,IAAK,WAAY,IACvC9pE,EAAI0sI,EAAI1sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,IAAK,WAAY,GACvCl8B,EAAI8+F,EAAI9+F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,IAAK,WAAY,IACvCnsD,EAAI+uH,EAAI/uH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,IAAK,WAAY,IAGvC9pE,EAAI2sI,EAAI3sI,EAFRqsB,EAAIqgH,EAAIrgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,IAAK,WAAY,IAEzBnsD,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAI++F,EAAI/+F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,GACtCnsD,EAAIgvH,EAAIhvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,IAAK,UAAY,IACvCz9C,EAAIsgH,EAAItgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,WAAY,IACtC9pE,EAAI2sI,EAAI3sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAI++F,EAAI/+F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,IAAK,SAAY,GACvCnsD,EAAIgvH,EAAIhvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,IAAK,WAAY,IACvCz9C,EAAIsgH,EAAItgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,WAAY,IACtC9pE,EAAI2sI,EAAI3sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,GAAI,UAAY,GACtCl8B,EAAI++F,EAAI/+F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,IAAK,WAAY,GACvCnsD,EAAIgvH,EAAIhvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,GAAI,WAAY,IACtCz9C,EAAIsgH,EAAItgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,WAAY,IACtC9pE,EAAI2sI,EAAI3sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,IAAK,WAAY,GACvCl8B,EAAI++F,EAAI/+F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,GACtCnsD,EAAIgvH,EAAIhvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,GAAI,WAAY,IAGtC9pE,EAAI4sI,EAAI5sI,EAFRqsB,EAAIsgH,EAAItgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,IAAK,WAAY,IAEzBnsD,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAIg/F,EAAIh/F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,IACtCnsD,EAAIivH,EAAIjvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,IAAK,WAAY,IACvCz9C,EAAIugH,EAAIvgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,IAAK,WAAY,IACvC9pE,EAAI4sI,EAAI5sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAIg/F,EAAIh/F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,IACtCnsD,EAAIivH,EAAIjvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,GAAI,WAAY,IACtCz9C,EAAIugH,EAAIvgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,IAAK,WAAY,IACvC9pE,EAAI4sI,EAAI5sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,IAAK,UAAY,GACvCl8B,EAAIg/F,EAAIh/F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,IACtCnsD,EAAIivH,EAAIjvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,GAAI,WAAY,IACtCz9C,EAAIugH,EAAIvgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,SAAY,IACtC9pE,EAAI4sI,EAAI5sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAIg/F,EAAIh/F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,IAAK,WAAY,IACvCnsD,EAAIivH,EAAIjvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,IAAK,UAAY,IAGvC9pE,EAAI6sI,EAAI7sI,EAFRqsB,EAAIugH,EAAIvgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,WAAY,IAExBnsD,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAIi/F,EAAIj/F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,IACtCnsD,EAAIkvH,EAAIlvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,IAAK,WAAY,IACvCz9C,EAAIwgH,EAAIxgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,WAAY,IACtC9pE,EAAI6sI,EAAI7sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,IAAK,WAAY,GACvCl8B,EAAIi/F,EAAIj/F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,GAAI,WAAY,IACtCnsD,EAAIkvH,EAAIlvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,IAAK,WAAY,IACvCz9C,EAAIwgH,EAAIxgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,WAAY,IACtC9pE,EAAI6sI,EAAI7sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAIi/F,EAAIj/F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,IAAK,WAAY,IACvCnsD,EAAIkvH,EAAIlvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,GAAI,WAAY,IACtCz9C,EAAIwgH,EAAIxgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,IAAK,WAAY,IACvC9pE,EAAI6sI,EAAI7sI,EAAGqsB,EAAG1O,EAAGiwB,EAAGk8B,EAAE,GAAI,WAAY,GACtCl8B,EAAIi/F,EAAIj/F,EAAG5tC,EAAGqsB,EAAG1O,EAAGmsD,EAAE,IAAK,WAAY,IACvCnsD,EAAIkvH,EAAIlvH,EAAGiwB,EAAG5tC,EAAGqsB,EAAGy9C,EAAE,GAAI,UAAY,IACtCz9C,EAAIwgH,EAAIxgH,EAAG1O,EAAGiwB,EAAG5tC,EAAG8pE,EAAE,GAAI,WAAY,IAEtC9qE,KAAKqK,GAAMrK,KAAKqK,GAAKrJ,EAAK,EAC1BhB,KAAK+I,GAAM/I,KAAK+I,GAAKskB,EAAK,EAC1BrtB,KAAKoJ,GAAMpJ,KAAKoJ,GAAKuV,EAAK,EAC1B3e,KAAKoF,GAAMpF,KAAKoF,GAAKwpC,EAAK,GAG5B8gD,EAAItuF,UAAUquH,QAAU,WAEtBzvH,KAAKmvH,OAAOnvH,KAAKqvH,gBAAkB,IAC/BrvH,KAAKqvH,aAAe,KACtBrvH,KAAKmvH,OAAO7pF,KAAK,EAAGtlC,KAAKqvH,aAAc,IACvCrvH,KAAKuxC,UACLvxC,KAAKqvH,aAAe,GAGtBrvH,KAAKmvH,OAAO7pF,KAAK,EAAGtlC,KAAKqvH,aAAc,IACvCrvH,KAAKmvH,OAAOjvC,cAAclgF,KAAKsvH,QAAQ,GAAI,IAC3CtvH,KAAKmvH,OAAOjvC,cAAclgF,KAAKsvH,QAAQ,GAAI,IAC3CtvH,KAAKuxC,UAGL,IAAI4e,EAASpgD,EAAO44D,YAAY,IAKhC,OAJAxY,EAAOwwB,aAAa3gF,KAAKqK,GAAI,GAC7B8lD,EAAOwwB,aAAa3gF,KAAK+I,GAAI,GAC7BonD,EAAOwwB,aAAa3gF,KAAKoJ,GAAI,GAC7B+mD,EAAOwwB,aAAa3gF,KAAKoF,GAAI,IACtB+qD,GAuBT/xD,EAAOC,QAAUqxF,yBCjJjB,IAAId,EAAKvmF,EAAQ,OACbylI,EAAUzlI,EAAQ,OAEtB,SAAS0lI,EAAYl6F,GACnB7zC,KAAK6zC,KAAOA,GAAQ,IAAIi6F,EAAQ1jE,KAElChsE,EAAOC,QAAU0vI,EAEjBA,EAAYxpI,OAAS,SAAgBsvC,GACnC,OAAO,IAAIk6F,EAAYl6F,IAGzBk6F,EAAY3sI,UAAU4sI,WAAa,SAAoBxrI,GACrD,IAAIjE,EAAMiE,EAAEusB,YACRk/G,EAAYr6H,KAAKC,KAAKtV,EAAM,GAIhC,GACE,IAAIyC,EAAI,IAAI4tF,EAAG5uF,KAAK6zC,KAAK/B,SAASm8F,UAC7BjtI,EAAE4qB,IAAIppB,IAAM,GAEnB,OAAOxB,GAGT+sI,EAAY3sI,UAAU8sI,WAAa,SAAoB5iH,EAAO6iH,GAE5D,IAAIvqH,EAAOuqH,EAAK92H,IAAIiU,GACpB,OAAOA,EAAMhU,IAAItX,KAAKguI,WAAWpqH,KAGnCmqH,EAAY3sI,UAAU2F,KAAO,SAAcvE,EAAGgrB,EAAGs5B,GAC/C,IAAIvoD,EAAMiE,EAAEusB,YACRjE,EAAM8jE,EAAGlvD,KAAKl9B,GACd4rI,EAAO,IAAIx/C,EAAG,GAAG1yD,MAAMpR,GAEtB0C,IACHA,EAAI5Z,KAAK6X,IAAI,EAAIltB,EAAM,GAAM,IAI/B,IADA,IAAI8vI,EAAK7rI,EAAE2W,KAAK,GACP5W,EAAI,GAAI8rI,EAAGh/G,MAAM9sB,GAAIA,KAM9B,IALA,IAAIqsC,EAAIpsC,EAAEmnB,KAAKpnB,GAEX+rI,EAAMD,EAAGnyG,MAAMpR,GAGZ0C,EAAI,EAAGA,IAAK,CACjB,IAAIxsB,EAAIhB,KAAKkuI,WAAW,IAAIt/C,EAAG,GAAIy/C,GAC/BvnF,GACFA,EAAG9lD,GAEL,IAAI8mB,EAAI9mB,EAAEk7B,MAAMpR,GAAK2S,OAAOmR,GAC5B,GAAoB,IAAhB9mB,EAAE8D,IAAIwiH,IAA8B,IAAftmH,EAAE8D,IAAI0iH,GAA/B,CAGA,IAAK,IAAI7vI,EAAI,EAAGA,EAAI8D,EAAG9D,IAAK,CAG1B,GAAoB,KAFpBqpB,EAAIA,EAAEoV,UAEAtR,IAAIwiH,GACR,OAAO,EACT,GAAmB,IAAftmH,EAAE8D,IAAI0iH,GACR,MAGJ,GAAI7vI,IAAM8D,EACR,OAAO,GAGX,OAvBY,GA0BdwrI,EAAY3sI,UAAUmtI,WAAa,SAAoB/rI,EAAGgrB,GACxD,IAAIjvB,EAAMiE,EAAEusB,YACRjE,EAAM8jE,EAAGlvD,KAAKl9B,GACd4rI,EAAO,IAAIx/C,EAAG,GAAG1yD,MAAMpR,GAEtB0C,IACHA,EAAI5Z,KAAK6X,IAAI,EAAIltB,EAAM,GAAM,IAI/B,IADA,IAAI8vI,EAAK7rI,EAAE2W,KAAK,GACP5W,EAAI,GAAI8rI,EAAGh/G,MAAM9sB,GAAIA,KAK9B,IAJA,IAAIqsC,EAAIpsC,EAAEmnB,KAAKpnB,GAEX+rI,EAAMD,EAAGnyG,MAAMpR,GAEZ0C,EAAI,EAAGA,IAAK,CACjB,IAAIxsB,EAAIhB,KAAKkuI,WAAW,IAAIt/C,EAAG,GAAIy/C,GAE/BvzG,EAAIt4B,EAAE44B,IAAIp6B,GACd,GAAkB,IAAd85B,EAAEW,KAAK,GACT,OAAOX,EAET,IAAIhT,EAAI9mB,EAAEk7B,MAAMpR,GAAK2S,OAAOmR,GAC5B,GAAoB,IAAhB9mB,EAAE8D,IAAIwiH,IAA8B,IAAftmH,EAAE8D,IAAI0iH,GAA/B,CAGA,IAAK,IAAI7vI,EAAI,EAAGA,EAAI8D,EAAG9D,IAAK,CAG1B,GAAoB,KAFpBqpB,EAAIA,EAAEoV,UAEAtR,IAAIwiH,GACR,OAAOtmH,EAAEwU,UAAUnjB,KAAK,GAAGiiB,IAAI54B,GACjC,GAAmB,IAAfslB,EAAE8D,IAAI0iH,GACR,MAGJ,GAAI7vI,IAAM8D,EAER,OADAulB,EAAIA,EAAEoV,UACGZ,UAAUnjB,KAAK,GAAGiiB,IAAI54B,IAInC,OAAO,sBC/GT,SAAS2nB,EAAOC,EAAKxd,GACnB,IAAKwd,EACH,MAAM,IAAIlf,MAAM0B,GAAO,oBAJ3BxO,EAAOC,QAAU8rB,EAOjBA,EAAO2a,MAAQ,SAAqB3O,EAAGlkB,EAAGrF,GACxC,GAAIupB,GAAKlkB,EACP,MAAM,IAAI/G,MAAM0B,GAAQ,qBAAuBupB,EAAI,OAASlkB,sCCPhE,IAAI8yB,EAAQ1mC,EAkCZ,SAAS2mC,EAAMvY,GACb,OAAoB,IAAhBA,EAAKjuB,OACA,IAAMiuB,EAENA,EAIX,SAAS1C,EAAMnd,GAEb,IADA,IAAI2Y,EAAM,GACD9mB,EAAI,EAAGA,EAAImO,EAAIpO,OAAQC,IAC9B8mB,GAAOyf,EAAMp4B,EAAInO,GAAG+F,SAAS,KAC/B,OAAO+gB,EAdTwf,EAAM9Y,QA9BN,SAAiBrf,EAAKq4B,GACpB,GAAItmC,MAAME,QAAQ+N,GAChB,OAAOA,EAAI/F,QACb,IAAK+F,EACH,MAAO,GACT,IAAI2Y,EAAM,GACV,GAAmB,kBAAR3Y,EAAkB,CAC3B,IAAK,IAAInO,EAAI,EAAGA,EAAImO,EAAIpO,OAAQC,IAC9B8mB,EAAI9mB,GAAc,EAATmO,EAAInO,GACf,OAAO8mB,EAET,GAAY,QAAR0f,EAAe,EACjBr4B,EAAMA,EAAI8R,QAAQ,eAAgB,KAC1BlgB,OAAS,IAAM,IACrBoO,EAAM,IAAMA,GACd,IAASnO,EAAI,EAAGA,EAAImO,EAAIpO,OAAQC,GAAK,EACnC8mB,EAAItkB,KAAKic,SAAStQ,EAAInO,GAAKmO,EAAInO,EAAI,GAAI,UAEzC,IAASA,EAAI,EAAGA,EAAImO,EAAIpO,OAAQC,IAAK,CACnC,IAAIkgB,EAAI/R,EAAIuZ,WAAW1nB,GACnBuwB,EAAKrQ,GAAK,EACV2O,EAAS,IAAJ3O,EACLqQ,EACFzJ,EAAItkB,KAAK+tB,EAAI1B,GAEb/H,EAAItkB,KAAKqsB,GAGf,OAAO/H,GAUTwf,EAAMC,MAAQA,EAQdD,EAAMhb,MAAQA,EAEdgb,EAAMttB,OAAS,SAAgBnZ,EAAK2mC,GAClC,MAAY,QAARA,EACKlb,EAAMzrB,GAENA,uCC9CX,IAAIuzD,EAASxpD,EAAQ,MACjByvE,EAAUzvE,EAAQ,OAClB0vE,EACiB,oBAAX31E,QAAkD,oBAAlBA,OAAM,IAC1CA,OAAM,IAAQ,8BACd,KAEN/D,EAAQ0R,OAASA,EACjB1R,EAAQ25E,WA2TR,SAAqBx5E,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAOuR,EAAOI,OAAO3R,IA9TvBH,EAAQ45E,kBAAoB,GAE5B,IAAIC,EAAe,WAwDnB,SAASC,EAAc35E,GACrB,GAAIA,EAAS05E,EACX,MAAM,IAAIlc,WAAW,cAAgBx9D,EAAS,kCAGhD,IAAIyV,EAAM,IAAI2L,WAAWphB,GAEzB,OADAoD,OAAOnB,eAAewT,EAAKlE,EAAO3O,WAC3B6S,EAaT,SAASlE,EAAQvQ,EAAK44E,EAAkB55E,GAEtC,GAAmB,kBAARgB,EAAkB,CAC3B,GAAgC,kBAArB44E,EACT,MAAM,IAAI53E,UACR,sEAGJ,OAAOmoE,EAAYnpE,GAErB,OAAOuF,EAAKvF,EAAK44E,EAAkB55E,GAKrC,SAASuG,EAAMrF,EAAO04E,EAAkB55E,GACtC,GAAqB,kBAAVkB,EACT,OAuHJ,SAAqBwrB,EAAQmtD,GACH,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAKtoE,EAAOuoE,WAAWD,GACrB,MAAM,IAAI73E,UAAU,qBAAuB63E,GAG7C,IAAI75E,EAAwC,EAA/B6vB,EAAWnD,EAAQmtD,GAC5BpkE,EAAMkkE,EAAa35E,GAEnBk2D,EAASzgD,EAAI62C,MAAM5/B,EAAQmtD,GAE3B3jB,IAAWl2D,IAIbyV,EAAMA,EAAIpN,MAAM,EAAG6tD,IAGrB,OAAOzgD,EA5IEgK,CAAWve,EAAO04E,GAG3B,GAAIG,YAAYC,OAAO94E,GACrB,OAoJJ,SAAwB+4E,GACtB,GAAIC,EAAWD,EAAW74D,YAAa,CACrC,IAAIzO,EAAO,IAAIyO,WAAW64D,GAC1B,OAAOE,EAAgBxnE,EAAKg/C,OAAQh/C,EAAKwtD,WAAYxtD,EAAKkd,YAE5D,OAAOuqD,EAAcH,GAzJZI,CAAcn5E,GAGvB,GAAa,MAATA,EACF,MAAM,IAAIc,UACR,yHACiDd,GAIrD,GAAIg5E,EAAWh5E,EAAO64E,cACjB74E,GAASg5E,EAAWh5E,EAAMywD,OAAQooB,aACrC,OAAOI,EAAgBj5E,EAAO04E,EAAkB55E,GAGlD,GAAiC,qBAAtBs6E,oBACNJ,EAAWh5E,EAAOo5E,oBAClBp5E,GAASg5E,EAAWh5E,EAAMywD,OAAQ2oB,oBACrC,OAAOH,EAAgBj5E,EAAO04E,EAAkB55E,GAGlD,GAAqB,kBAAVkB,EACT,MAAM,IAAIc,UACR,yEAIJ,IAAIqE,EAAUnF,EAAMmF,SAAWnF,EAAMmF,UACrC,GAAe,MAAXA,GAAmBA,IAAYnF,EACjC,OAAOqQ,EAAOhL,KAAKF,EAASuzE,EAAkB55E,GAGhD,IAAI6uB,EAoJN,SAAqB3pB,GACnB,GAAIqM,EAAO6J,SAASlW,GAAM,CACxB,IAAInF,EAA4B,EAAtBw6E,EAAQr1E,EAAIlF,QAClByV,EAAMkkE,EAAa55E,GAEvB,OAAmB,IAAf0V,EAAIzV,QAIRkF,EAAIyN,KAAK8C,EAAK,EAAG,EAAG1V,GAHX0V,EAOX,QAAmB5T,IAAfqD,EAAIlF,OACN,MAA0B,kBAAfkF,EAAIlF,QAAuBk+D,EAAYh5D,EAAIlF,QAC7C25E,EAAa,GAEfS,EAAcl1E,GAGvB,GAAiB,WAAbA,EAAIwO,MAAqBvT,MAAME,QAAQ6E,EAAIgN,MAC7C,OAAOkoE,EAAcl1E,EAAIgN,MAzKnB0M,CAAW1d,GACnB,GAAI2tB,EAAG,OAAOA,EAEd,GAAsB,qBAAXjrB,QAAgD,MAAtBA,OAAO42E,aACH,oBAA9Bt5E,EAAM0C,OAAO42E,aACtB,OAAOjpE,EAAOhL,KACZrF,EAAM0C,OAAO42E,aAAa,UAAWZ,EAAkB55E,GAI3D,MAAM,IAAIgC,UACR,yHACiDd,GAqBrD,SAASu5E,EAAYr1D,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAIpjB,UAAU,0CACf,GAAIojB,EAAO,EAChB,MAAM,IAAIo4C,WAAW,cAAgBp4C,EAAO,kCA4BhD,SAAS+kD,EAAa/kD,GAEpB,OADAq1D,EAAWr1D,GACJu0D,EAAav0D,EAAO,EAAI,EAAoB,EAAhBm1D,EAAQn1D,IAwC7C,SAASg1D,EAAe94C,GAGtB,IAFA,IAAIthC,EAASshC,EAAMthC,OAAS,EAAI,EAA4B,EAAxBu6E,EAAQj5C,EAAMthC,QAC9CyV,EAAMkkE,EAAa35E,GACdC,EAAI,EAAGA,EAAID,EAAQC,GAAK,EAC/BwV,EAAIxV,GAAgB,IAAXqhC,EAAMrhC,GAEjB,OAAOwV,EAWT,SAAS0kE,EAAiB74C,EAAO6+B,EAAYngE,GAC3C,GAAImgE,EAAa,GAAK7+B,EAAMzR,WAAaswC,EACvC,MAAM,IAAI3C,WAAW,wCAGvB,GAAIl8B,EAAMzR,WAAaswC,GAAcngE,GAAU,GAC7C,MAAM,IAAIw9D,WAAW,wCAGvB,IAAI/nD,EAYJ,OAVEA,OADiB5T,IAAfs+D,QAAuCt+D,IAAX7B,EACxB,IAAIohB,WAAWkgB,QACDz/B,IAAX7B,EACH,IAAIohB,WAAWkgB,EAAO6+B,GAEtB,IAAI/+C,WAAWkgB,EAAO6+B,EAAYngE,GAI1CoD,OAAOnB,eAAewT,EAAKlE,EAAO3O,WAE3B6S,EA4BT,SAAS8kE,EAASv6E,GAGhB,GAAIA,GAAU05E,EACZ,MAAM,IAAIlc,WAAW,0DACakc,EAAa1zE,SAAS,IAAM,UAEhE,OAAgB,EAAThG,EAsGT,SAAS6vB,EAAYnD,EAAQmtD,GAC3B,GAAItoE,EAAO6J,SAASsR,GAClB,OAAOA,EAAO1sB,OAEhB,GAAI+5E,YAAYC,OAAOttD,IAAWwtD,EAAWxtD,EAAQqtD,aACnD,OAAOrtD,EAAOmD,WAEhB,GAAsB,kBAAXnD,EACT,MAAM,IAAI1qB,UACR,kGAC0B0qB,GAI9B,IAAI3sB,EAAM2sB,EAAO1sB,OACb06E,EAAah5E,UAAU1B,OAAS,IAAsB,IAAjB0B,UAAU,GACnD,IAAKg5E,GAAqB,IAAR36E,EAAW,OAAO,EAIpC,IADA,IAAI46E,GAAc,IAEhB,OAAQd,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO95E,EACT,IAAK,OACL,IAAK,QACH,OAAO66E,EAAYluD,GAAQ1sB,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAND,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAO86E,EAAcnuD,GAAQ1sB,OAC/B,QACE,GAAI26E,EACF,OAAOD,GAAa,EAAIE,EAAYluD,GAAQ1sB,OAE9C65E,GAAY,GAAKA,GAAU7wD,cAC3B2xD,GAAc,GAMtB,SAASG,EAAcjB,EAAU/sD,EAAOC,GACtC,IAAI4tD,GAAc,EAclB,SALc94E,IAAVirB,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQtrB,KAAKxB,OACf,MAAO,GAOT,SAJY6B,IAARkrB,GAAqBA,EAAMvrB,KAAKxB,UAClC+sB,EAAMvrB,KAAKxB,QAGT+sB,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFK+sD,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOkB,EAASv5E,KAAMsrB,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOiuD,EAAUx5E,KAAMsrB,EAAOC,GAEhC,IAAK,QACH,OAAOkuD,EAAWz5E,KAAMsrB,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOmuD,EAAY15E,KAAMsrB,EAAOC,GAElC,IAAK,SACH,OAAOouD,EAAY35E,KAAMsrB,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOquD,EAAa55E,KAAMsrB,EAAOC,GAEnC,QACE,GAAI4tD,EAAa,MAAM,IAAI34E,UAAU,qBAAuB63E,GAC5DA,GAAYA,EAAW,IAAI7wD,cAC3B2xD,GAAc,GAatB,SAASU,EAAMxsD,EAAG7qB,EAAGk1B,GACnB,IAAIj5B,EAAI4uB,EAAE7qB,GACV6qB,EAAE7qB,GAAK6qB,EAAEqK,GACTrK,EAAEqK,GAAKj5B,EA4IT,SAASq7E,EAAsB3pB,EAAQ/lC,EAAKu0C,EAAY0Z,EAAU0B,GAEhE,GAAsB,IAAlB5pB,EAAO3xD,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAfmgE,GACT0Z,EAAW1Z,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGZjC,EADJiC,GAAcA,KAGZA,EAAaob,EAAM,EAAK5pB,EAAO3xD,OAAS,GAItCmgE,EAAa,IAAGA,EAAaxO,EAAO3xD,OAASmgE,GAC7CA,GAAcxO,EAAO3xD,OAAQ,CAC/B,GAAIu7E,EAAK,OAAQ,EACZpb,EAAaxO,EAAO3xD,OAAS,OAC7B,GAAImgE,EAAa,EAAG,CACzB,IAAIob,EACC,OAAQ,EADJpb,EAAa,EAUxB,GALmB,kBAARv0C,IACTA,EAAMra,EAAOhL,KAAKqlB,EAAKiuD,IAIrBtoE,EAAO6J,SAASwQ,GAElB,OAAmB,IAAfA,EAAI5rB,QACE,EAEHw7E,EAAa7pB,EAAQ/lC,EAAKu0C,EAAY0Z,EAAU0B,GAClD,GAAmB,kBAAR3vD,EAEhB,OADAA,GAAY,IACgC,oBAAjCxK,WAAWxe,UAAUqD,QAC1Bs1E,EACKn6D,WAAWxe,UAAUqD,QAAQ3B,KAAKqtD,EAAQ/lC,EAAKu0C,GAE/C/+C,WAAWxe,UAAU64E,YAAYn3E,KAAKqtD,EAAQ/lC,EAAKu0C,GAGvDqb,EAAa7pB,EAAQ,CAAC/lC,GAAMu0C,EAAY0Z,EAAU0B,GAG3D,MAAM,IAAIv5E,UAAU,wCAGtB,SAASw5E,EAAc17E,EAAK8rB,EAAKu0C,EAAY0Z,EAAU0B,GACrD,IA0BIt7E,EA1BAy7E,EAAY,EACZC,EAAY77E,EAAIE,OAChB47E,EAAYhwD,EAAI5rB,OAEpB,QAAiB6B,IAAbg4E,IAEe,UADjBA,EAAWv6D,OAAOu6D,GAAU7wD,gBACY,UAAb6wD,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAI/5E,EAAIE,OAAS,GAAK4rB,EAAI5rB,OAAS,EACjC,OAAQ,EAEV07E,EAAY,EACZC,GAAa,EACbC,GAAa,EACbzb,GAAc,EAIlB,SAAS0b,EAAMpmE,EAAKxV,GAClB,OAAkB,IAAdy7E,EACKjmE,EAAIxV,GAEJwV,EAAIw8C,aAAahyD,EAAIy7E,GAKhC,GAAIH,EAAK,CACP,IAAIO,GAAc,EAClB,IAAK77E,EAAIkgE,EAAYlgE,EAAI07E,EAAW17E,IAClC,GAAI47E,EAAK/7E,EAAKG,KAAO47E,EAAKjwD,GAAqB,IAAhBkwD,EAAoB,EAAI77E,EAAI67E,IAEzD,IADoB,IAAhBA,IAAmBA,EAAa77E,GAChCA,EAAI67E,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,OAEtC,IAAhBI,IAAmB77E,GAAKA,EAAI67E,GAChCA,GAAc,OAKlB,IADI3b,EAAayb,EAAYD,IAAWxb,EAAawb,EAAYC,GAC5D37E,EAAIkgE,EAAYlgE,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAI87E,GAAQ,EACH/0D,EAAI,EAAGA,EAAI40D,EAAW50D,IAC7B,GAAI60D,EAAK/7E,EAAKG,EAAI+mB,KAAO60D,EAAKjwD,EAAK5E,GAAI,CACrC+0D,GAAQ,EACR,MAGJ,GAAIA,EAAO,OAAO97E,EAItB,OAAQ,EAeV,SAAS+7E,EAAUvmE,EAAKiX,EAAQ9K,EAAQ5hB,GACtC4hB,EAAS9Q,OAAO8Q,IAAW,EAC3B,IAAIq6D,EAAYxmE,EAAIzV,OAAS4hB,EACxB5hB,GAGHA,EAAS8Q,OAAO9Q,IACHi8E,IACXj8E,EAASi8E,GAJXj8E,EAASi8E,EAQX,IAAIC,EAASxvD,EAAO1sB,OAEhBA,EAASk8E,EAAS,IACpBl8E,EAASk8E,EAAS,GAEpB,IAAK,IAAIj8E,EAAI,EAAGA,EAAID,IAAUC,EAAG,CAC/B,IAAIk8E,EAASz9D,SAASgO,EAAOjb,OAAW,EAAJxR,EAAO,GAAI,IAC/C,GAAIi+D,EAAYie,GAAS,OAAOl8E,EAChCwV,EAAImM,EAAS3hB,GAAKk8E,EAEpB,OAAOl8E,EAGT,SAASm8E,EAAW3mE,EAAKiX,EAAQ9K,EAAQ5hB,GACvC,OAAOq8E,EAAWzB,EAAYluD,EAAQjX,EAAIzV,OAAS4hB,GAASnM,EAAKmM,EAAQ5hB,GAG3E,SAASs8E,EAAY7mE,EAAKiX,EAAQ9K,EAAQ5hB,GACxC,OAAOq8E,EAk4BT,SAAuB/0D,GAErB,IADA,IAAIi1D,EAAY,GACPt8E,EAAI,EAAGA,EAAIqnB,EAAItnB,SAAUC,EAEhCs8E,EAAU95E,KAAyB,IAApB6kB,EAAIK,WAAW1nB,IAEhC,OAAOs8E,EAx4BWC,CAAa9vD,GAASjX,EAAKmM,EAAQ5hB,GAGvD,SAASy8E,EAAahnE,EAAKiX,EAAQ9K,EAAQ5hB,GACzC,OAAOq8E,EAAWxB,EAAcnuD,GAASjX,EAAKmM,EAAQ5hB,GAGxD,SAAS08E,EAAWjnE,EAAKiX,EAAQ9K,EAAQ5hB,GACvC,OAAOq8E,EAm4BT,SAAyB/0D,EAAKq1D,GAG5B,IAFA,IAAIx8D,EAAGqQ,EAAI1B,EACPytD,EAAY,GACPt8E,EAAI,EAAGA,EAAIqnB,EAAItnB,WACjB28E,GAAS,GAAK,KADa18E,EAIhCuwB,GADArQ,EAAImH,EAAIK,WAAW1nB,KACT,EACV6uB,EAAK3O,EAAI,IACTo8D,EAAU95E,KAAKqsB,GACfytD,EAAU95E,KAAK+tB,GAGjB,OAAO+rD,EAh5BWK,CAAelwD,EAAQjX,EAAIzV,OAAS4hB,GAASnM,EAAKmM,EAAQ5hB,GA+E9E,SAASm7E,EAAa1lE,EAAKqX,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQtX,EAAIzV,OACtBqzD,EAAO8X,cAAc11D,GAErB49C,EAAO8X,cAAc11D,EAAIpN,MAAMykB,EAAOC,IAIjD,SAASiuD,EAAWvlE,EAAKqX,EAAOC,GAC9BA,EAAM3X,KAAKwD,IAAInD,EAAIzV,OAAQ+sB,GAI3B,IAHA,IAAIhG,EAAM,GAEN9mB,EAAI6sB,EACD7sB,EAAI8sB,GAAK,CACd,IAWMgwD,EAAYC,EAAWC,EAAYC,EAXrCL,EAAYpnE,EAAIxV,GAChB8nB,EAAY,KACZ+0D,EAAoBD,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAI58E,EAAI68E,GAAoB/vD,EAG1B,OAAQ+vD,GACN,KAAK,EACCD,EAAY,MACd90D,EAAY80D,GAEd,MACF,KAAK,EAEyB,OAAV,KADlBE,EAAatnE,EAAIxV,EAAI,OAEnBi9E,GAA6B,GAAZL,IAAqB,EAAoB,GAAbE,GACzB,MAClBh1D,EAAYm1D,GAGhB,MACF,KAAK,EACHH,EAAatnE,EAAIxV,EAAI,GACrB+8E,EAAYvnE,EAAIxV,EAAI,GACQ,OAAV,IAAb88E,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZL,IAAoB,IAAoB,GAAbE,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEn1D,EAAYm1D,GAGhB,MACF,KAAK,EACHH,EAAatnE,EAAIxV,EAAI,GACrB+8E,EAAYvnE,EAAIxV,EAAI,GACpBg9E,EAAaxnE,EAAIxV,EAAI,GACO,OAAV,IAAb88E,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZL,IAAoB,IAAqB,GAAbE,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5Cn1D,EAAYm1D,GAMJ,OAAdn1D,GAGFA,EAAY,MACZ+0D,EAAmB,GACV/0D,EAAY,QAErBA,GAAa,MACbhB,EAAItkB,KAAKslB,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBhB,EAAItkB,KAAKslB,GACT9nB,GAAK68E,EAGP,OAQF,SAAgCK,GAC9B,IAAIp9E,EAAMo9E,EAAWn9E,OACrB,GAAID,GAAOq9E,EACT,OAAO99D,OAAO0I,aAAarmB,MAAM2d,OAAQ69D,GAI3C,IAAIp2D,EAAM,GACN9mB,EAAI,EACR,KAAOA,EAAIF,GACTgnB,GAAOzH,OAAO0I,aAAarmB,MACzB2d,OACA69D,EAAW90E,MAAMpI,EAAGA,GAAKm9E,IAG7B,OAAOr2D,EAvBAs2D,CAAsBt2D,GA1+B/BlnB,EAAQy9E,WAAa5D,EAgBrBnoE,EAAOgsE,oBAUP,WAEE,IACE,IAAIz9E,EAAM,IAAIshB,WAAW,GACrBo8D,EAAQ,CAAEC,IAAK,WAAc,OAAO,KAGxC,OAFAr6E,OAAOnB,eAAeu7E,EAAOp8D,WAAWxe,WACxCQ,OAAOnB,eAAenC,EAAK09E,GACN,KAAd19E,EAAI29E,MACX,MAAOx5E,GACP,OAAO,GAnBkBy5E,GAExBnsE,EAAOgsE,qBAA0C,qBAAZz5C,SACb,oBAAlBA,QAAQ3iC,OACjB2iC,QAAQ3iC,MACN,iJAkBJiC,OAAOC,eAAekO,EAAO3O,UAAW,SAAU,CAChDK,YAAY,EACZoC,IAAK,WACH,GAAKkM,EAAO6J,SAAS5Z,MACrB,OAAOA,KAAKmwD,UAIhBvuD,OAAOC,eAAekO,EAAO3O,UAAW,SAAU,CAChDK,YAAY,EACZoC,IAAK,WACH,GAAKkM,EAAO6J,SAAS5Z,MACrB,OAAOA,KAAK2+D,cAqChB5uD,EAAOosE,SAAW,KAgElBpsE,EAAOhL,KAAO,SAAUrF,EAAO04E,EAAkB55E,GAC/C,OAAOuG,EAAKrF,EAAO04E,EAAkB55E,IAKvCoD,OAAOnB,eAAesP,EAAO3O,UAAWwe,WAAWxe,WACnDQ,OAAOnB,eAAesP,EAAQ6P,YA8B9B7P,EAAOI,MAAQ,SAAUyT,EAAM0hB,EAAM+yC,GACnC,OArBF,SAAgBz0D,EAAM0hB,EAAM+yC,GAE1B,OADAY,EAAWr1D,GACPA,GAAQ,EACHu0D,EAAav0D,QAETvjB,IAATilC,EAIyB,kBAAb+yC,EACVF,EAAav0D,GAAM0hB,KAAKA,EAAM+yC,GAC9BF,EAAav0D,GAAM0hB,KAAKA,GAEvB6yC,EAAav0D,GAQbzT,CAAMyT,EAAM0hB,EAAM+yC,IAW3BtoE,EAAO44D,YAAc,SAAU/kD,GAC7B,OAAO+kD,EAAY/kD,IAKrB7T,EAAOqsE,gBAAkB,SAAUx4D,GACjC,OAAO+kD,EAAY/kD,IA8GrB7T,EAAO6J,SAAW,SAAmByT,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAEgvD,WACpBhvD,IAAMtd,EAAO3O,WAGjB2O,EAAOguD,QAAU,SAAkB/8D,EAAGqsB,GAGpC,GAFIqrD,EAAW13E,EAAG4e,cAAa5e,EAAI+O,EAAOhL,KAAK/D,EAAGA,EAAEof,OAAQpf,EAAEqtB,aAC1DqqD,EAAWrrD,EAAGzN,cAAayN,EAAItd,EAAOhL,KAAKsoB,EAAGA,EAAEjN,OAAQiN,EAAEgB,cACzDte,EAAO6J,SAAS5Y,KAAO+O,EAAO6J,SAASyT,GAC1C,MAAM,IAAI7sB,UACR,yEAIJ,GAAIQ,IAAMqsB,EAAG,OAAO,EAKpB,IAHA,IAAIvF,EAAI9mB,EAAExC,OACNq3B,EAAIxI,EAAE7uB,OAEDC,EAAI,EAAGF,EAAMqV,KAAKwD,IAAI0Q,EAAG+N,GAAIp3B,EAAIF,IAAOE,EAC/C,GAAIuC,EAAEvC,KAAO4uB,EAAE5uB,GAAI,CACjBqpB,EAAI9mB,EAAEvC,GACNo3B,EAAIxI,EAAE5uB,GACN,MAIJ,OAAIqpB,EAAI+N,GAAW,EACfA,EAAI/N,EAAU,EACX,GAGT/X,EAAOuoE,WAAa,SAAqBD,GACvC,OAAQv6D,OAAOu6D,GAAU7wD,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIbzX,EAAOrD,OAAS,SAAiB4vE,EAAM99E,GACrC,IAAKG,MAAME,QAAQy9E,GACjB,MAAM,IAAI97E,UAAU,+CAGtB,GAAoB,IAAhB87E,EAAK99E,OACP,OAAOuR,EAAOI,MAAM,GAGtB,IAAI1R,EACJ,QAAe4B,IAAX7B,EAEF,IADAA,EAAS,EACJC,EAAI,EAAGA,EAAI69E,EAAK99E,SAAUC,EAC7BD,GAAU89E,EAAK79E,GAAGD,OAItB,IAAI2xD,EAASpgD,EAAO44D,YAAYnqE,GAC5Bs5D,EAAM,EACV,IAAKr5D,EAAI,EAAGA,EAAI69E,EAAK99E,SAAUC,EAAG,CAChC,IAAIwV,EAAMqoE,EAAK79E,GACf,GAAIi6E,EAAWzkE,EAAK2L,YACdk4C,EAAM7jD,EAAIzV,OAAS2xD,EAAO3xD,OAC5BuR,EAAOhL,KAAKkP,GAAK9C,KAAKg/C,EAAQ2H,GAE9Bl4C,WAAWxe,UAAUiG,IAAIvE,KACvBqtD,EACAl8C,EACA6jD,OAGC,KAAK/nD,EAAO6J,SAAS3F,GAC1B,MAAM,IAAIzT,UAAU,+CAEpByT,EAAI9C,KAAKg/C,EAAQ2H,GAEnBA,GAAO7jD,EAAIzV,OAEb,OAAO2xD,GAkDTpgD,EAAOse,WAAaA,EA8EpBte,EAAO3O,UAAUi7E,WAAY,EAQ7BtsE,EAAO3O,UAAUm7E,OAAS,WACxB,IAAIh+E,EAAMyB,KAAKxB,OACf,GAAID,EAAM,IAAM,EACd,MAAM,IAAIy9D,WAAW,6CAEvB,IAAK,IAAIv9D,EAAI,EAAGA,EAAIF,EAAKE,GAAK,EAC5Bo7E,EAAK75E,KAAMvB,EAAGA,EAAI,GAEpB,OAAOuB,MAGT+P,EAAO3O,UAAUo7E,OAAS,WACxB,IAAIj+E,EAAMyB,KAAKxB,OACf,GAAID,EAAM,IAAM,EACd,MAAM,IAAIy9D,WAAW,6CAEvB,IAAK,IAAIv9D,EAAI,EAAGA,EAAIF,EAAKE,GAAK,EAC5Bo7E,EAAK75E,KAAMvB,EAAGA,EAAI,GAClBo7E,EAAK75E,KAAMvB,EAAI,EAAGA,EAAI,GAExB,OAAOuB,MAGT+P,EAAO3O,UAAUq7E,OAAS,WACxB,IAAIl+E,EAAMyB,KAAKxB,OACf,GAAID,EAAM,IAAM,EACd,MAAM,IAAIy9D,WAAW,6CAEvB,IAAK,IAAIv9D,EAAI,EAAGA,EAAIF,EAAKE,GAAK,EAC5Bo7E,EAAK75E,KAAMvB,EAAGA,EAAI,GAClBo7E,EAAK75E,KAAMvB,EAAI,EAAGA,EAAI,GACtBo7E,EAAK75E,KAAMvB,EAAI,EAAGA,EAAI,GACtBo7E,EAAK75E,KAAMvB,EAAI,EAAGA,EAAI,GAExB,OAAOuB,MAGT+P,EAAO3O,UAAUoD,SAAW,WAC1B,IAAIhG,EAASwB,KAAKxB,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArB0B,UAAU1B,OAAqBg7E,EAAUx5E,KAAM,EAAGxB,GAC/C86E,EAAan5E,MAAMH,KAAME,YAGlC6P,EAAO3O,UAAUs7E,eAAiB3sE,EAAO3O,UAAUoD,SAEnDuL,EAAO3O,UAAUuV,OAAS,SAAiB0W,GACzC,IAAKtd,EAAO6J,SAASyT,GAAI,MAAM,IAAI7sB,UAAU,6BAC7C,OAAIR,OAASqtB,GACsB,IAA5Btd,EAAOguD,QAAQ/9D,KAAMqtB,IAG9Btd,EAAO3O,UAAU2rB,QAAU,WACzB,IAAIjH,EAAM,GACN2F,EAAMptB,EAAQ45E,kBAGlB,OAFAnyD,EAAM9lB,KAAKwE,SAAS,MAAO,EAAGinB,GAAK/M,QAAQ,UAAW,OAAO4kC,OACzDtjD,KAAKxB,OAASitB,IAAK3F,GAAO,SACvB,WAAaA,EAAM,KAExBiyD,IACFhoE,EAAO3O,UAAU22E,GAAuBhoE,EAAO3O,UAAU2rB,SAG3Dhd,EAAO3O,UAAU28D,QAAU,SAAkBz8D,EAAQgqB,EAAOC,EAAKoxD,EAAWC,GAI1E,GAHIlE,EAAWp3E,EAAQse,cACrBte,EAASyO,EAAOhL,KAAKzD,EAAQA,EAAO8e,OAAQ9e,EAAO+sB,cAEhDte,EAAO6J,SAAStY,GACnB,MAAM,IAAId,UACR,wFAC2Bc,GAiB/B,QAbcjB,IAAVirB,IACFA,EAAQ,QAEEjrB,IAARkrB,IACFA,EAAMjqB,EAASA,EAAO9C,OAAS,QAEf6B,IAAds8E,IACFA,EAAY,QAEEt8E,IAAZu8E,IACFA,EAAU58E,KAAKxB,QAGb8sB,EAAQ,GAAKC,EAAMjqB,EAAO9C,QAAUm+E,EAAY,GAAKC,EAAU58E,KAAKxB,OACtE,MAAM,IAAIw9D,WAAW,sBAGvB,GAAI2gB,GAAaC,GAAWtxD,GAASC,EACnC,OAAO,EAET,GAAIoxD,GAAaC,EACf,OAAQ,EAEV,GAAItxD,GAASC,EACX,OAAO,EAQT,GAAIvrB,OAASsB,EAAQ,OAAO,EAS5B,IAPA,IAAIwmB,GAJJ80D,KAAa,IADbD,KAAe,GAMX9mD,GAPJtK,KAAS,IADTD,KAAW,GASP/sB,EAAMqV,KAAKwD,IAAI0Q,EAAG+N,GAElBgnD,EAAW78E,KAAK6G,MAAM81E,EAAWC,GACjCE,EAAax7E,EAAOuF,MAAMykB,EAAOC,GAE5B9sB,EAAI,EAAGA,EAAIF,IAAOE,EACzB,GAAIo+E,EAASp+E,KAAOq+E,EAAWr+E,GAAI,CACjCqpB,EAAI+0D,EAASp+E,GACbo3B,EAAIinD,EAAWr+E,GACf,MAIJ,OAAIqpB,EAAI+N,GAAW,EACfA,EAAI/N,EAAU,EACX,GA4HT/X,EAAO3O,UAAUqM,SAAW,SAAmB2c,EAAKu0C,EAAY0Z,GAC9D,OAAoD,IAA7Cr4E,KAAKyE,QAAQ2lB,EAAKu0C,EAAY0Z,IAGvCtoE,EAAO3O,UAAUqD,QAAU,SAAkB2lB,EAAKu0C,EAAY0Z,GAC5D,OAAOyB,EAAqB95E,KAAMoqB,EAAKu0C,EAAY0Z,GAAU,IAG/DtoE,EAAO3O,UAAU64E,YAAc,SAAsB7vD,EAAKu0C,EAAY0Z,GACpE,OAAOyB,EAAqB95E,KAAMoqB,EAAKu0C,EAAY0Z,GAAU,IA4C/DtoE,EAAO3O,UAAU0pD,MAAQ,SAAgB5/B,EAAQ9K,EAAQ5hB,EAAQ65E,GAE/D,QAAeh4E,IAAX+f,EACFi4D,EAAW,OACX75E,EAASwB,KAAKxB,OACd4hB,EAAS,OAEJ,QAAe/f,IAAX7B,GAA0C,kBAAX4hB,EACxCi4D,EAAWj4D,EACX5hB,EAASwB,KAAKxB,OACd4hB,EAAS,MAEJ,KAAI28D,SAAS38D,GAUlB,MAAM,IAAIlV,MACR,2EAVFkV,KAAoB,EAChB28D,SAASv+E,IACXA,KAAoB,OACH6B,IAAbg4E,IAAwBA,EAAW,UAEvCA,EAAW75E,EACXA,OAAS6B,GAQb,IAAIo6E,EAAYz6E,KAAKxB,OAAS4hB,EAG9B,SAFe/f,IAAX7B,GAAwBA,EAASi8E,KAAWj8E,EAASi8E,GAEpDvvD,EAAO1sB,OAAS,IAAMA,EAAS,GAAK4hB,EAAS,IAAOA,EAASpgB,KAAKxB,OACrE,MAAM,IAAIw9D,WAAW,0CAGlBqc,IAAUA,EAAW,QAG1B,IADA,IAAIc,GAAc,IAEhB,OAAQd,GACN,IAAK,MACH,OAAOmC,EAASx6E,KAAMkrB,EAAQ9K,EAAQ5hB,GAExC,IAAK,OACL,IAAK,QACH,OAAOo8E,EAAU56E,KAAMkrB,EAAQ9K,EAAQ5hB,GAEzC,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOs8E,EAAW96E,KAAMkrB,EAAQ9K,EAAQ5hB,GAE1C,IAAK,SAEH,OAAOy8E,EAAYj7E,KAAMkrB,EAAQ9K,EAAQ5hB,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO08E,EAAUl7E,KAAMkrB,EAAQ9K,EAAQ5hB,GAEzC,QACE,GAAI26E,EAAa,MAAM,IAAI34E,UAAU,qBAAuB63E,GAC5DA,GAAY,GAAKA,GAAU7wD,cAC3B2xD,GAAc,IAKtBppE,EAAO3O,UAAU8sB,OAAS,WACxB,MAAO,CACLhc,KAAM,SACNxB,KAAM/R,MAAMyC,UAAUyF,MAAM/D,KAAK9C,KAAKkF,MAAQlF,KAAM,KA2FxD,IAAI47E,EAAuB,KAoB3B,SAASnC,EAAYxlE,EAAKqX,EAAOC,GAC/B,IAAI0C,EAAM,GACV1C,EAAM3X,KAAKwD,IAAInD,EAAIzV,OAAQ+sB,GAE3B,IAAK,IAAI9sB,EAAI6sB,EAAO7sB,EAAI8sB,IAAO9sB,EAC7BwvB,GAAOnQ,OAAO0I,aAAsB,IAATvS,EAAIxV,IAEjC,OAAOwvB,EAGT,SAASyrD,EAAazlE,EAAKqX,EAAOC,GAChC,IAAI0C,EAAM,GACV1C,EAAM3X,KAAKwD,IAAInD,EAAIzV,OAAQ+sB,GAE3B,IAAK,IAAI9sB,EAAI6sB,EAAO7sB,EAAI8sB,IAAO9sB,EAC7BwvB,GAAOnQ,OAAO0I,aAAavS,EAAIxV,IAEjC,OAAOwvB,EAGT,SAASsrD,EAAUtlE,EAAKqX,EAAOC,GAC7B,IAAIhtB,EAAM0V,EAAIzV,SAET8sB,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMhtB,KAAKgtB,EAAMhtB,GAGxC,IADA,IAAI6uB,EAAM,GACD3uB,EAAI6sB,EAAO7sB,EAAI8sB,IAAO9sB,EAC7B2uB,GAAO4vD,EAAoB/oE,EAAIxV,IAEjC,OAAO2uB,EAGT,SAASwsD,EAAc3lE,EAAKqX,EAAOC,GAIjC,IAHA,IAAIvL,EAAQ/L,EAAIpN,MAAMykB,EAAOC,GACzBhG,EAAM,GAED9mB,EAAI,EAAGA,EAAIuhB,EAAMxhB,OAAS,EAAGC,GAAK,EACzC8mB,GAAOzH,OAAO0I,aAAaxG,EAAMvhB,GAAqB,IAAfuhB,EAAMvhB,EAAI,IAEnD,OAAO8mB,EAkCT,SAAS03D,EAAa78D,EAAQ88D,EAAK1+E,GACjC,GAAK4hB,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI47C,WAAW,sBAC3D,GAAI57C,EAAS88D,EAAM1+E,EAAQ,MAAM,IAAIw9D,WAAW,yCAoLlD,SAASmhB,EAAUlpE,EAAKvU,EAAO0gB,EAAQ88D,EAAKzxD,EAAKrU,GAC/C,IAAKrH,EAAO6J,SAAS3F,GAAM,MAAM,IAAIzT,UAAU,+CAC/C,GAAId,EAAQ+rB,GAAO/rB,EAAQ0X,EAAK,MAAM,IAAI4kD,WAAW,qCACrD,GAAI57C,EAAS88D,EAAMjpE,EAAIzV,OAAQ,MAAM,IAAIw9D,WAAW,sBAgMtD,SAASuhB,EAActpE,EAAKvU,EAAO0gB,EAAQ88D,EAAKzxD,EAAKrU,GACnD,GAAIgJ,EAAS88D,EAAMjpE,EAAIzV,OAAQ,MAAM,IAAIw9D,WAAW,sBACpD,GAAI57C,EAAS,EAAG,MAAM,IAAI47C,WAAW,sBAGvC,SAASwhB,EAAYvpE,EAAKvU,EAAO0gB,EAAQmO,EAAckvD,GAOrD,OANA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GACHF,EAAatpE,EAAKvU,EAAO0gB,EAAQ,GAEnC03D,EAAQhtB,MAAM72C,EAAKvU,EAAO0gB,EAAQmO,EAAc,GAAI,GAC7CnO,EAAS,EAWlB,SAASs9D,EAAazpE,EAAKvU,EAAO0gB,EAAQmO,EAAckvD,GAOtD,OANA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GACHF,EAAatpE,EAAKvU,EAAO0gB,EAAQ,GAEnC03D,EAAQhtB,MAAM72C,EAAKvU,EAAO0gB,EAAQmO,EAAc,GAAI,GAC7CnO,EAAS,EAtblBrQ,EAAO3O,UAAUyF,MAAQ,SAAgBykB,EAAOC,GAC9C,IAAIhtB,EAAMyB,KAAKxB,QACf8sB,IAAUA,GAGE,GACVA,GAAS/sB,GACG,IAAG+sB,EAAQ,GACdA,EAAQ/sB,IACjB+sB,EAAQ/sB,IANVgtB,OAAclrB,IAARkrB,EAAoBhtB,IAAQgtB,GASxB,GACRA,GAAOhtB,GACG,IAAGgtB,EAAM,GACVA,EAAMhtB,IACfgtB,EAAMhtB,GAGJgtB,EAAMD,IAAOC,EAAMD,GAEvB,IAAIqyD,EAAS39E,KAAK49E,SAAStyD,EAAOC,GAIlC,OAFA3pB,OAAOnB,eAAek9E,EAAQ5tE,EAAO3O,WAE9Bu8E,GAWT5tE,EAAO3O,UAAUy8E,WACjB9tE,EAAO3O,UAAU08E,WAAa,SAAqB19D,EAAQiO,EAAYovD,GACrEr9D,KAAoB,EACpBiO,KAA4B,EACvBovD,GAAUR,EAAY78D,EAAQiO,EAAYruB,KAAKxB,QAKpD,IAHA,IAAI4rB,EAAMpqB,KAAKogB,GACXhK,EAAM,EACN3X,EAAI,IACCA,EAAI4vB,IAAejY,GAAO,MACjCgU,GAAOpqB,KAAKogB,EAAS3hB,GAAK2X,EAG5B,OAAOgU,GAGTra,EAAO3O,UAAU28E,WACjBhuE,EAAO3O,UAAU48E,WAAa,SAAqB59D,EAAQiO,EAAYovD,GACrEr9D,KAAoB,EACpBiO,KAA4B,EACvBovD,GACHR,EAAY78D,EAAQiO,EAAYruB,KAAKxB,QAKvC,IAFA,IAAI4rB,EAAMpqB,KAAKogB,IAAWiO,GACtBjY,EAAM,EACHiY,EAAa,IAAMjY,GAAO,MAC/BgU,GAAOpqB,KAAKogB,IAAWiO,GAAcjY,EAGvC,OAAOgU,GAGTra,EAAO3O,UAAU68E,UACjBluE,EAAO3O,UAAUspD,UAAY,SAAoBtqC,EAAQq9D,GAGvD,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCwB,KAAKogB,IAGdrQ,EAAO3O,UAAU88E,aACjBnuE,EAAO3O,UAAU+8E,aAAe,SAAuB/9D,EAAQq9D,GAG7D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCwB,KAAKogB,GAAWpgB,KAAKogB,EAAS,IAAM,GAG7CrQ,EAAO3O,UAAUg9E,aACjBruE,EAAO3O,UAAUqvD,aAAe,SAAuBrwC,EAAQq9D,GAG7D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACnCwB,KAAKogB,IAAW,EAAKpgB,KAAKogB,EAAS,IAG7CrQ,EAAO3O,UAAUi9E,aACjBtuE,EAAO3O,UAAUk9E,aAAe,SAAuBl+D,EAAQq9D,GAI7D,OAHAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,SAElCwB,KAAKogB,GACTpgB,KAAKogB,EAAS,IAAM,EACpBpgB,KAAKogB,EAAS,IAAM,IACD,SAAnBpgB,KAAKogB,EAAS,IAGrBrQ,EAAO3O,UAAUm9E,aACjBxuE,EAAO3O,UAAUupE,aAAe,SAAuBvqD,EAAQq9D,GAI7D,OAHAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAEpB,SAAfwB,KAAKogB,IACTpgB,KAAKogB,EAAS,IAAM,GACrBpgB,KAAKogB,EAAS,IAAM,EACrBpgB,KAAKogB,EAAS,KAGlBrQ,EAAO3O,UAAUy9E,UAAY,SAAoBz+D,EAAQiO,EAAYovD,GACnEr9D,KAAoB,EACpBiO,KAA4B,EACvBovD,GAAUR,EAAY78D,EAAQiO,EAAYruB,KAAKxB,QAKpD,IAHA,IAAI4rB,EAAMpqB,KAAKogB,GACXhK,EAAM,EACN3X,EAAI,IACCA,EAAI4vB,IAAejY,GAAO,MACjCgU,GAAOpqB,KAAKogB,EAAS3hB,GAAK2X,EAM5B,OAFIgU,IAFJhU,GAAO,OAESgU,GAAOxW,KAAKwV,IAAI,EAAG,EAAIiF,IAEhCjE,GAGTra,EAAO3O,UAAU09E,UAAY,SAAoB1+D,EAAQiO,EAAYovD,GACnEr9D,KAAoB,EACpBiO,KAA4B,EACvBovD,GAAUR,EAAY78D,EAAQiO,EAAYruB,KAAKxB,QAKpD,IAHA,IAAIC,EAAI4vB,EACJjY,EAAM,EACNgU,EAAMpqB,KAAKogB,IAAW3hB,GACnBA,EAAI,IAAM2X,GAAO,MACtBgU,GAAOpqB,KAAKogB,IAAW3hB,GAAK2X,EAM9B,OAFIgU,IAFJhU,GAAO,OAESgU,GAAOxW,KAAKwV,IAAI,EAAG,EAAIiF,IAEhCjE,GAGTra,EAAO3O,UAAU29E,SAAW,SAAmB3+D,EAAQq9D,GAGrD,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACtB,IAAfwB,KAAKogB,IAC0B,GAA5B,IAAOpgB,KAAKogB,GAAU,GADKpgB,KAAKogB,IAI3CrQ,EAAO3O,UAAU49E,YAAc,SAAsB5+D,EAAQq9D,GAC3Dr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAC3C,IAAI4rB,EAAMpqB,KAAKogB,GAAWpgB,KAAKogB,EAAS,IAAM,EAC9C,OAAc,MAANgK,EAAsB,WAANA,EAAmBA,GAG7Cra,EAAO3O,UAAU69E,YAAc,SAAsB7+D,EAAQq9D,GAC3Dr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAC3C,IAAI4rB,EAAMpqB,KAAKogB,EAAS,GAAMpgB,KAAKogB,IAAW,EAC9C,OAAc,MAANgK,EAAsB,WAANA,EAAmBA,GAG7Cra,EAAO3O,UAAU89E,YAAc,SAAsB9+D,EAAQq9D,GAI3D,OAHAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAEnCwB,KAAKogB,GACVpgB,KAAKogB,EAAS,IAAM,EACpBpgB,KAAKogB,EAAS,IAAM,GACpBpgB,KAAKogB,EAAS,IAAM,IAGzBrQ,EAAO3O,UAAU+9E,YAAc,SAAsB/+D,EAAQq9D,GAI3D,OAHAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAEnCwB,KAAKogB,IAAW,GACrBpgB,KAAKogB,EAAS,IAAM,GACpBpgB,KAAKogB,EAAS,IAAM,EACpBpgB,KAAKogB,EAAS,IAGnBrQ,EAAO3O,UAAUk+E,YAAc,SAAsBl/D,EAAQq9D,GAG3D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCs5E,EAAQuC,KAAKr6E,KAAMogB,GAAQ,EAAM,GAAI,IAG9CrQ,EAAO3O,UAAUm+E,YAAc,SAAsBn/D,EAAQq9D,GAG3D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCs5E,EAAQuC,KAAKr6E,KAAMogB,GAAQ,EAAO,GAAI,IAG/CrQ,EAAO3O,UAAUo+E,aAAe,SAAuBp/D,EAAQq9D,GAG7D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCs5E,EAAQuC,KAAKr6E,KAAMogB,GAAQ,EAAM,GAAI,IAG9CrQ,EAAO3O,UAAUq+E,aAAe,SAAuBr/D,EAAQq9D,GAG7D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCs5E,EAAQuC,KAAKr6E,KAAMogB,GAAQ,EAAO,GAAI,IAS/CrQ,EAAO3O,UAAUs+E,YACjB3vE,EAAO3O,UAAUu+E,YAAc,SAAsBjgF,EAAO0gB,EAAQiO,EAAYovD,IAC9E/9E,GAASA,EACT0gB,KAAoB,EACpBiO,KAA4B,EACvBovD,IAEHN,EAASn9E,KAAMN,EAAO0gB,EAAQiO,EADfza,KAAKwV,IAAI,EAAG,EAAIiF,GAAc,EACO,GAGtD,IAAIjY,EAAM,EACN3X,EAAI,EAER,IADAuB,KAAKogB,GAAkB,IAAR1gB,IACNjB,EAAI4vB,IAAejY,GAAO,MACjCpW,KAAKogB,EAAS3hB,GAAMiB,EAAQ0W,EAAO,IAGrC,OAAOgK,EAASiO,GAGlBte,EAAO3O,UAAUw+E,YACjB7vE,EAAO3O,UAAUktE,YAAc,SAAsB5uE,EAAO0gB,EAAQiO,EAAYovD,IAC9E/9E,GAASA,EACT0gB,KAAoB,EACpBiO,KAA4B,EACvBovD,IAEHN,EAASn9E,KAAMN,EAAO0gB,EAAQiO,EADfza,KAAKwV,IAAI,EAAG,EAAIiF,GAAc,EACO,GAGtD,IAAI5vB,EAAI4vB,EAAa,EACjBjY,EAAM,EAEV,IADApW,KAAKogB,EAAS3hB,GAAa,IAARiB,IACVjB,GAAK,IAAM2X,GAAO,MACzBpW,KAAKogB,EAAS3hB,GAAMiB,EAAQ0W,EAAO,IAGrC,OAAOgK,EAASiO,GAGlBte,EAAO3O,UAAUy+E,WACjB9vE,EAAO3O,UAAUmwE,WAAa,SAAqB7xE,EAAO0gB,EAAQq9D,GAKhE,OAJA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,IAAM,GACtDpgB,KAAKogB,GAAmB,IAAR1gB,EACT0gB,EAAS,GAGlBrQ,EAAO3O,UAAU0+E,cACjB/vE,EAAO3O,UAAU2+E,cAAgB,SAAwBrgF,EAAO0gB,EAAQq9D,GAMtE,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,MAAQ,GACxDpgB,KAAKogB,GAAmB,IAAR1gB,EAChBM,KAAKogB,EAAS,GAAM1gB,IAAU,EACvB0gB,EAAS,GAGlBrQ,EAAO3O,UAAU4+E,cACjBjwE,EAAO3O,UAAU+wD,cAAgB,SAAwBzyD,EAAO0gB,EAAQq9D,GAMtE,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,MAAQ,GACxDpgB,KAAKogB,GAAW1gB,IAAU,EAC1BM,KAAKogB,EAAS,GAAc,IAAR1gB,EACb0gB,EAAS,GAGlBrQ,EAAO3O,UAAU6+E,cACjBlwE,EAAO3O,UAAU8+E,cAAgB,SAAwBxgF,EAAO0gB,EAAQq9D,GAQtE,OAPA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,WAAY,GAC5DpgB,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,EAC9BM,KAAKogB,GAAmB,IAAR1gB,EACT0gB,EAAS,GAGlBrQ,EAAO3O,UAAU++E,cACjBpwE,EAAO3O,UAAU+rE,cAAgB,SAAwBztE,EAAO0gB,EAAQq9D,GAQtE,OAPA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,WAAY,GAC5DpgB,KAAKogB,GAAW1gB,IAAU,GAC1BM,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,EAC9BM,KAAKogB,EAAS,GAAc,IAAR1gB,EACb0gB,EAAS,GAGlBrQ,EAAO3O,UAAUk/E,WAAa,SAAqB5gF,EAAO0gB,EAAQiO,EAAYovD,GAG5E,GAFA/9E,GAASA,EACT0gB,KAAoB,GACfq9D,EAAU,CACb,IAAI7iB,EAAQhnD,KAAKwV,IAAI,EAAI,EAAIiF,EAAc,GAE3C8uD,EAASn9E,KAAMN,EAAO0gB,EAAQiO,EAAYusC,EAAQ,GAAIA,GAGxD,IAAIn8D,EAAI,EACJ2X,EAAM,EACNiB,EAAM,EAEV,IADArX,KAAKogB,GAAkB,IAAR1gB,IACNjB,EAAI4vB,IAAejY,GAAO,MAC7B1W,EAAQ,GAAa,IAAR2X,GAAsC,IAAzBrX,KAAKogB,EAAS3hB,EAAI,KAC9C4Y,EAAM,GAERrX,KAAKogB,EAAS3hB,IAAOiB,EAAQ0W,GAAQ,GAAKiB,EAAM,IAGlD,OAAO+I,EAASiO,GAGlBte,EAAO3O,UAAUm/E,WAAa,SAAqB7gF,EAAO0gB,EAAQiO,EAAYovD,GAG5E,GAFA/9E,GAASA,EACT0gB,KAAoB,GACfq9D,EAAU,CACb,IAAI7iB,EAAQhnD,KAAKwV,IAAI,EAAI,EAAIiF,EAAc,GAE3C8uD,EAASn9E,KAAMN,EAAO0gB,EAAQiO,EAAYusC,EAAQ,GAAIA,GAGxD,IAAIn8D,EAAI4vB,EAAa,EACjBjY,EAAM,EACNiB,EAAM,EAEV,IADArX,KAAKogB,EAAS3hB,GAAa,IAARiB,IACVjB,GAAK,IAAM2X,GAAO,MACrB1W,EAAQ,GAAa,IAAR2X,GAAsC,IAAzBrX,KAAKogB,EAAS3hB,EAAI,KAC9C4Y,EAAM,GAERrX,KAAKogB,EAAS3hB,IAAOiB,EAAQ0W,GAAQ,GAAKiB,EAAM,IAGlD,OAAO+I,EAASiO,GAGlBte,EAAO3O,UAAUo/E,UAAY,SAAoB9gF,EAAO0gB,EAAQq9D,GAM9D,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,KAAO,KACnD1gB,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCM,KAAKogB,GAAmB,IAAR1gB,EACT0gB,EAAS,GAGlBrQ,EAAO3O,UAAUq/E,aAAe,SAAuB/gF,EAAO0gB,EAAQq9D,GAMpE,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,OAAS,OACzDpgB,KAAKogB,GAAmB,IAAR1gB,EAChBM,KAAKogB,EAAS,GAAM1gB,IAAU,EACvB0gB,EAAS,GAGlBrQ,EAAO3O,UAAUs/E,aAAe,SAAuBhhF,EAAO0gB,EAAQq9D,GAMpE,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,OAAS,OACzDpgB,KAAKogB,GAAW1gB,IAAU,EAC1BM,KAAKogB,EAAS,GAAc,IAAR1gB,EACb0gB,EAAS,GAGlBrQ,EAAO3O,UAAUu/E,aAAe,SAAuBjhF,EAAO0gB,EAAQq9D,GAQpE,OAPA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,YAAa,YAC7DpgB,KAAKogB,GAAmB,IAAR1gB,EAChBM,KAAKogB,EAAS,GAAM1gB,IAAU,EAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,GACvB0gB,EAAS,GAGlBrQ,EAAO3O,UAAUw/E,aAAe,SAAuBlhF,EAAO0gB,EAAQq9D,GASpE,OARA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,YAAa,YACzD1gB,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5CM,KAAKogB,GAAW1gB,IAAU,GAC1BM,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,EAC9BM,KAAKogB,EAAS,GAAc,IAAR1gB,EACb0gB,EAAS,GAkBlBrQ,EAAO3O,UAAU2/E,aAAe,SAAuBrhF,EAAO0gB,EAAQq9D,GACpE,OAAOD,EAAWx9E,KAAMN,EAAO0gB,GAAQ,EAAMq9D,IAG/C1tE,EAAO3O,UAAU4/E,aAAe,SAAuBthF,EAAO0gB,EAAQq9D,GACpE,OAAOD,EAAWx9E,KAAMN,EAAO0gB,GAAQ,EAAOq9D,IAahD1tE,EAAO3O,UAAU6/E,cAAgB,SAAwBvhF,EAAO0gB,EAAQq9D,GACtE,OAAOC,EAAY19E,KAAMN,EAAO0gB,GAAQ,EAAMq9D,IAGhD1tE,EAAO3O,UAAU8/E,cAAgB,SAAwBxhF,EAAO0gB,EAAQq9D,GACtE,OAAOC,EAAY19E,KAAMN,EAAO0gB,GAAQ,EAAOq9D,IAIjD1tE,EAAO3O,UAAU+P,KAAO,SAAe7P,EAAQ6/E,EAAa71D,EAAOC,GACjE,IAAKxb,EAAO6J,SAAStY,GAAS,MAAM,IAAId,UAAU,+BAQlD,GAPK8qB,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMvrB,KAAKxB,QAC9B2iF,GAAe7/E,EAAO9C,SAAQ2iF,EAAc7/E,EAAO9C,QAClD2iF,IAAaA,EAAc,GAC5B51D,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlBhqB,EAAO9C,QAAgC,IAAhBwB,KAAKxB,OAAc,OAAO,EAGrD,GAAI2iF,EAAc,EAChB,MAAM,IAAInlB,WAAW,6BAEvB,GAAI1wC,EAAQ,GAAKA,GAAStrB,KAAKxB,OAAQ,MAAM,IAAIw9D,WAAW,sBAC5D,GAAIzwC,EAAM,EAAG,MAAM,IAAIywC,WAAW,2BAG9BzwC,EAAMvrB,KAAKxB,SAAQ+sB,EAAMvrB,KAAKxB,QAC9B8C,EAAO9C,OAAS2iF,EAAc51D,EAAMD,IACtCC,EAAMjqB,EAAO9C,OAAS2iF,EAAc71D,GAGtC,IAAI/sB,EAAMgtB,EAAMD,EAahB,OAXItrB,OAASsB,GAAqD,oBAApCse,WAAWxe,UAAUggF,WAEjDphF,KAAKohF,WAAWD,EAAa71D,EAAOC,GAEpC3L,WAAWxe,UAAUiG,IAAIvE,KACvBxB,EACAtB,KAAK49E,SAAStyD,EAAOC,GACrB41D,GAIG5iF,GAOTwR,EAAO3O,UAAUkkC,KAAO,SAAelb,EAAKkB,EAAOC,EAAK8sD,GAEtD,GAAmB,kBAARjuD,EAAkB,CAS3B,GARqB,kBAAVkB,GACT+sD,EAAW/sD,EACXA,EAAQ,EACRC,EAAMvrB,KAAKxB,QACa,kBAAR+sB,IAChB8sD,EAAW9sD,EACXA,EAAMvrB,KAAKxB,aAEI6B,IAAbg4E,GAA8C,kBAAbA,EACnC,MAAM,IAAI73E,UAAU,6BAEtB,GAAwB,kBAAb63E,IAA0BtoE,EAAOuoE,WAAWD,GACrD,MAAM,IAAI73E,UAAU,qBAAuB63E,GAE7C,GAAmB,IAAfjuD,EAAI5rB,OAAc,CACpB,IAAIqkB,EAAOuH,EAAIjE,WAAW,IACR,SAAbkyD,GAAuBx1D,EAAO,KAClB,WAAbw1D,KAEFjuD,EAAMvH,QAGc,kBAARuH,EAChBA,GAAY,IACY,mBAARA,IAChBA,EAAM9a,OAAO8a,IAIf,GAAIkB,EAAQ,GAAKtrB,KAAKxB,OAAS8sB,GAAStrB,KAAKxB,OAAS+sB,EACpD,MAAM,IAAIywC,WAAW,sBAGvB,GAAIzwC,GAAOD,EACT,OAAOtrB,KAQT,IAAIvB,EACJ,GANA6sB,KAAkB,EAClBC,OAAclrB,IAARkrB,EAAoBvrB,KAAKxB,OAAS+sB,IAAQ,EAE3CnB,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAK3rB,EAAI6sB,EAAO7sB,EAAI8sB,IAAO9sB,EACzBuB,KAAKvB,GAAK2rB,MAEP,CACL,IAAIpK,EAAQjQ,EAAO6J,SAASwQ,GACxBA,EACAra,EAAOhL,KAAKqlB,EAAKiuD,GACjB95E,EAAMyhB,EAAMxhB,OAChB,GAAY,IAARD,EACF,MAAM,IAAIiC,UAAU,cAAgB4pB,EAClC,qCAEJ,IAAK3rB,EAAI,EAAGA,EAAI8sB,EAAMD,IAAS7sB,EAC7BuB,KAAKvB,EAAI6sB,GAAStL,EAAMvhB,EAAIF,GAIhC,OAAOyB,MAMT,IAAI2hF,EAAoB,oBAgBxB,SAASvI,EAAaluD,EAAQiwD,GAE5B,IAAI50D,EADJ40D,EAAQA,GAASniB,EAAAA,EAMjB,IAJA,IAAIx6D,EAAS0sB,EAAO1sB,OAChBojF,EAAgB,KAChB5hE,EAAQ,GAEHvhB,EAAI,EAAGA,EAAID,IAAUC,EAAG,CAI/B,IAHA8nB,EAAY2E,EAAO/E,WAAW1nB,IAGd,OAAU8nB,EAAY,MAAQ,CAE5C,IAAKq7D,EAAe,CAElB,GAAIr7D,EAAY,MAAQ,EAEjB40D,GAAS,IAAM,GAAGn7D,EAAM/e,KAAK,IAAM,IAAM,KAC9C,SACK,GAAIxC,EAAI,IAAMD,EAAQ,EAEtB28E,GAAS,IAAM,GAAGn7D,EAAM/e,KAAK,IAAM,IAAM,KAC9C,SAIF2gF,EAAgBr7D,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjB40D,GAAS,IAAM,GAAGn7D,EAAM/e,KAAK,IAAM,IAAM,KAC9C2gF,EAAgBr7D,EAChB,SAIFA,EAAkE,OAArDq7D,EAAgB,OAAU,GAAKr7D,EAAY,YAC/Cq7D,IAEJzG,GAAS,IAAM,GAAGn7D,EAAM/e,KAAK,IAAM,IAAM,KAMhD,GAHA2gF,EAAgB,KAGZr7D,EAAY,IAAM,CACpB,IAAK40D,GAAS,GAAK,EAAG,MACtBn7D,EAAM/e,KAAKslB,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAK40D,GAAS,GAAK,EAAG,MACtBn7D,EAAM/e,KACJslB,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAK40D,GAAS,GAAK,EAAG,MACtBn7D,EAAM/e,KACJslB,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAIrb,MAAM,sBARhB,IAAKiwE,GAAS,GAAK,EAAG,MACtBn7D,EAAM/e,KACJslB,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAOvG,EA4BT,SAASq5D,EAAevzD,GACtB,OAAO+rC,EAAOyX,YAxHhB,SAAsBxjD,GAMpB,IAFAA,GAFAA,EAAMA,EAAI2B,MAAM,KAAK,IAEX67B,OAAO5kC,QAAQijE,EAAmB,KAEpCnjF,OAAS,EAAG,MAAO,GAE3B,KAAOsnB,EAAItnB,OAAS,IAAM,GACxBsnB,GAAY,IAEd,OAAOA,EA6GmB+7D,CAAY/7D,IAGxC,SAAS+0D,EAAYt6B,EAAKuhC,EAAK1hE,EAAQ5hB,GACrC,IAAK,IAAIC,EAAI,EAAGA,EAAID,KACbC,EAAI2hB,GAAU0hE,EAAItjF,QAAYC,GAAK8hD,EAAI/hD,UADhBC,EAE5BqjF,EAAIrjF,EAAI2hB,GAAUmgC,EAAI9hD,GAExB,OAAOA,EAMT,SAASi6E,EAAYh1E,EAAKwO,GACxB,OAAOxO,aAAewO,GACZ,MAAPxO,GAAkC,MAAnBA,EAAID,aAA+C,MAAxBC,EAAID,YAAYqD,MACzDpD,EAAID,YAAYqD,OAASoL,EAAKpL,KAEpC,SAAS41D,EAAah5D,GAEpB,OAAOA,IAAQA,EAKjB,IAAIs5E,EAAuB,WAGzB,IAFA,IAAI+E,EAAW,mBACXC,EAAQ,IAAIrjF,MAAM,KACbF,EAAI,EAAGA,EAAI,KAAMA,EAExB,IADA,IAAIwjF,EAAU,GAAJxjF,EACD+mB,EAAI,EAAGA,EAAI,KAAMA,EACxBw8D,EAAMC,EAAMz8D,GAAKu8D,EAAStjF,GAAKsjF,EAASv8D,GAG5C,OAAOw8D,EATkB,iFC5wDrBp4C,EAAAA,WACJ,WAAa9iC,EAAM+b,EAAM6oG,EAAgB3pC,GAAU,UACjD/hF,KAAK8G,KAAOA,EACZ9G,KAAK6iB,KAAOA,EACZ7iB,KAAK+hF,SAAWA,EACZ2pC,GAAkB3pC,IACpB/hF,KAAK4+H,OAASlT,EAAe3pC,oCAIjC,SAAQysD,GACN,OAAOxuI,KAAK4+H,OAAOnnH,OAAO+2H,yBAG5B,SAAQA,GACN,OAAOxuI,KAAK4+H,OAAOhoH,OAAO43H,gCAG5B,WACE,OAAOxuI,KAAK4+H,aAnBVh1F,GAuBNxrC,EAAOC,QAAUurC,4DCxBT75B,EAAW1H,EAAQ,OAAnB0H,OAER3R,EAAOC,QAAU,SAAiB0jF,GAChC,MAAO,CACLtqE,OADK,SACGwC,GACN,MAAqB,kBAAVA,EACFlK,EAAOhL,KAAKkV,GAAOzV,SAAS,OAE9ByV,EAAMzV,SAAS,QAExBoS,OAPK,SAOGqD,GAAO,UACMA,GADN,IACb,2BAA0B,KAAfw0H,EAAe,QACxB,GAAI1sD,EAASt9E,QAAQgqI,GAAQ,EAC3B,MAAM,IAAIvjI,MAAM,6BAHP,8BAMb,OAAO6E,EAAOhL,KAAKkV,EAAO,qECQhC,SAASxC,EAAQ04C,EAAQ4xB,GACvB,IAAMvjF,EAAS2xD,EAAO9hC,WAChBqgH,EAAO,IAAI9uH,WAAWuwC,GACtBviC,EAAUm0D,EAASt9E,QAAQ,OAASs9E,EAASvjF,OAAS,EAExDovB,IACFm0D,EAAWA,EAAS5iE,UAAU,EAAG4iE,EAASvjF,OAAS,IAOrD,IAJA,IAAI6W,EAAO,EACP3V,EAAQ,EACRilB,EAAS,GAEJlmB,EAAI,EAAGA,EAAID,EAAQC,IAI1B,IAHAiB,EAASA,GAAS,EAAKgvI,EAAKjwI,GAC5B4W,GAAQ,EAEDA,GAAQ,GACbsP,GAAUo9D,EAAUriF,IAAW2V,EAAO,EAAM,IAC5CA,GAAQ,EAQZ,GAJIA,EAAO,IACTsP,GAAUo9D,EAAUriF,GAAU,EAAI2V,EAAS,KAGzCuY,EACF,KAAQjJ,EAAOnmB,OAAS,IAAO,GAC7BmmB,GAAU,IAId,OAAOA,EAGTvmB,EAAOC,QAAU,SAAiB0jF,GAChC,MAAO,CACLtqE,OADK,SACGwC,GACN,OACSxC,EADY,kBAAVwC,EACK2F,WAAW7a,KAAKkV,GAGlBA,EAH0B8nE,IAK1CnrE,OARK,SAQGqD,GAAO,UACMA,GADN,IACb,2BAA0B,KAAfw0H,EAAe,QACxB,GAAI1sD,EAASt9E,QAAQgqI,GAAQ,EAC3B,MAAM,IAAIvjI,MAAM,6BAHP,8BAOb,OA3EN,SAAiB+O,EAAO8nE,GAUtB,IARA,IAAMvjF,GADNyb,EAAQA,EAAMyE,QAAQ,IAAI/B,OAAO,IAAK,KAAM,KACvBne,OAEjB6W,EAAO,EACP3V,EAAQ,EAERyP,EAAQ,EACNwV,EAAS,IAAI/E,WAAqB,EAATphB,EAAa,EAAK,GAExCC,EAAI,EAAGA,EAAID,EAAQC,IAC1BiB,EAASA,GAAS,EAAKqiF,EAASt9E,QAAQwV,EAAMxb,KAC9C4W,GAAQ,IAEI,IACVsP,EAAOxV,KAAYzP,IAAW2V,EAAO,EAAM,IAC3CA,GAAQ,GAIZ,OAAOsP,EAAOwrC,OAuDHv5C,CAAOqD,EAAO8nE,iEC5EnBhyE,EAAW1H,EAAQ,OAAnB0H,OAER3R,EAAOC,QAAU,SAAiB0jF,GAMhC,IAAMn0D,EAAUm0D,EAASt9E,QAAQ,MAAQ,EACnCs+B,EAAMg/C,EAASt9E,QAAQ,MAAQ,GAAKs9E,EAASt9E,QAAQ,MAAQ,EAEnE,MAAO,CACLgT,OADK,SACGwC,GACN,IAAI0K,EAAS,GAGXA,EADmB,kBAAV1K,EACAlK,EAAOhL,KAAKkV,GAAOzV,SAAS,UAE5ByV,EAAMzV,SAAS,UAGtBu+B,IACFpe,EAASA,EAAOjG,QAAQ,MAAO,KAAKA,QAAQ,MAAO,MAGrD,IAAMszD,EAAMrtD,EAAOlgB,QAAQ,KAK3B,OAJIutE,EAAM,IAAMpkD,IACdjJ,EAASA,EAAOxF,UAAU,EAAG6yD,IAGxBrtD,GAET/N,OArBK,SAqBGqD,GAAO,UACMA,GADN,IACb,2BAA0B,KAAfw0H,EAAe,QACxB,GAAI1sD,EAASt9E,QAAQgqI,GAAQ,EAC3B,MAAM,IAAIvjI,MAAM,6BAHP,8BAOb,OAAO6E,EAAOhL,KAAKkV,EAAO,iDCtChC,IAAM2vB,EAAOvhC,EAAQ,OACfsmI,EAAQtmI,EAAQ,OAChBumI,EAASvmI,EAAQ,MACjBwmI,EAASxmI,EAAQ,OACjBwpD,EAASxpD,EAAQ,OAGjBkhD,EAAY,CAChB,CAAC,QAAS,IAAK,GAAI,KACnB,CAAC,QAAS,IAAKolF,EAAO,MACtB,CAAC,QAAS,IAAKA,EAAO,YACtB,CAAC,SAAU,IAAKA,EAAO,cACvB,CAAC,SAAU,IAAKC,EAAQ,oBACxB,CAAC,SAAU,IAAKC,EAAQ,oCACxB,CAAC,YAAa,IAAKA,EAAQ,qCAC3B,CAAC,YAAa,IAAKA,EAAQ,oCAC3B,CAAC,eAAgB,IAAKA,EAAQ,qCAC9B,CAAC,UAAW,IAAKA,EAAQ,oCACzB,CAAC,eAAgB,IAAKF,EAAO,8DAC7B,CAAC,YAAa,IAAKA,EAAO,8DAC1B,CAAC,SAAU,IAAK98E,EAAQ,oEACxB,CAAC,YAAa,IAAKA,EAAQ,qEAC3B,CAAC,YAAa,IAAKA,EAAQ,oEAC3B,CAAC,eAAgB,IAAKA,EAAQ,sEAG1BpqD,EAAQ8hD,EAAU75C,QAAO,SAACuvB,EAAM6vG,GAEpC,OADA7vG,EAAK6vG,EAAO,IAAM,IAAIllG,EAAKklG,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAC5D7vG,IACN,IAEGm0B,EAAQ7J,EAAU75C,QAAO,SAACuvB,EAAM6vG,GAEpC,OADA7vG,EAAK6vG,EAAO,IAAMrnI,EAAMqnI,EAAO,IACxB7vG,IACN,IAEH7gC,EAAOC,QAAU,CACfoJ,MAAOA,EACP2rD,MAAOA,uCClCT,IAAQrjD,EAAW1H,EAAQ,OAAnB0H,OACFw5C,EAAYlhD,EAAQ,QAE1BhK,EAAUD,EAAOC,QAAU4mF,GACnBxtE,OAoCR,SAAiBs3H,EAAY96H,GAC3B,IAAMjQ,EAAOgrI,EAAQD,GAGrB,OAAO9pD,EAFMjhF,EAAK8C,KAEKiJ,EAAOhL,KAAKf,EAAKyT,OAAOxD,MAvCjD5V,EAAQuY,OAmDR,SAAiBq4H,GACXl/H,EAAO6J,SAASq1H,KAClBA,EAAcA,EAAYzqI,YAG5B,IAAMqe,EAAOosH,EAAY9vH,UAAU,EAAG,GAGX,kBAF3B8vH,EAAcA,EAAY9vH,UAAU,EAAG8vH,EAAYzwI,WAGjDywI,EAAcl/H,EAAOhL,KAAKkqI,IAG5B,IAAMjrI,EAAOgrI,EAAQnsH,GACrB,OAAO9S,EAAOhL,KAAKf,EAAK4S,OAAOq4H,EAAYzqI,cA/D7CnG,EAAQqnF,UAyER,SAAoBupD,GACdl/H,EAAO6J,SAASq1H,KAClBA,EAAcA,EAAYzqI,YAI5B,GAAoD,oBAAhD5C,OAAOR,UAAUoD,SAAS1B,KAAKmsI,GACjC,OAAO,EAGT,IAAMpsH,EAAOosH,EAAY9vH,UAAU,EAAG,GACtC,IAEE,OADa6vH,EAAQnsH,GACT/b,KACZ,MAAO1G,GACP,OAAO,IAvFX/B,EAAQoJ,MAAQ7F,OAAO4U,OAAO5U,OAAO4D,KAAK+jD,EAAU9hD,QACpDpJ,EAAQ+0D,MAAQxxD,OAAO4U,OAAO5U,OAAO4D,KAAK+jD,EAAU6J,QAEpD,IAAM87E,EAAkB,IAAIhkI,MAAM,wBAUlC,SAAS+5E,EAAW8pD,EAAY96H,GAC9B,IAAKA,EACH,MAAM,IAAI/I,MAAM,8BAElB,IAAMlH,EAAOgrI,EAAQD,GACfI,EAAUp/H,EAAOhL,KAAKf,EAAK6e,MAIjC,OA2EF,SAAsB/b,EAAMmN,GACb+6H,EAAQloI,GAChB8P,OAAO3C,EAAIzP,YA9EhB4qI,CADaprI,EAAK8C,KACAmN,GACXlE,EAAOrD,OAAO,CAACyiI,EAASl7H,IAgFjC,SAAS+6H,EAASD,GAChB,IAAI/qI,EAEJ,GAAIulD,EAAU9hD,MAAMsnI,GAClB/qI,EAAOulD,EAAU9hD,MAAMsnI,OAClB,KAAIxlF,EAAU6J,MAAM27E,GAGzB,MAAMG,EAFNlrI,EAAOulD,EAAU6J,MAAM27E,GAKzB,IAAK/qI,EAAKqrI,gBACR,MAAM,IAAInkI,MAAM,QAAU6jI,EAAa,2BAGzC,OAAO/qI,uCC3HT,2BALMg+E,EAAQ35E,EAAQ,OAGhBkhD,EAAY,GAElB,MAA2B3nD,OAAO2T,QAAQysE,GAA1C,eAAkD,CAA7C,gBAAOl7E,EAAP,KAAa+b,EAAb,KACH0mC,EAAUziD,EAAK8gB,cAAclJ,QAAQ,KAAM,MAAQmE,EAGrDzkB,EAAOC,QAAUuD,OAAO4U,OAAO+yC,6DCEzBy5B,EAAS36E,EAAQ,OACjB46E,EAAW56E,EAAQ,OACnB66E,EAAwB76E,EAAQ,OAChC+yD,EAAO/yD,EAAQ,QAErBhK,EAAUD,EAAOC,SAST8kF,UAAY,SAACC,EAAqB1yE,GACxC,IAAI2yE,EAEJ,GAAItzE,EAAO6J,SAASwpE,GAClBC,EAASjoB,EAAKkoB,mBAAmBF,OAC5B,CACL,IAAIF,EAAsBE,GAGxB,MAAM,IAAIl4E,MAAM,6BAFhBm4E,EAASH,EAAsBE,GAKnC,OAAOrzE,EAAOrD,OAAO,CAAC22E,EAAQ3yE,KAShCrS,EAAQklF,SAAW,SAAC7yE,GAElB,OADAsyE,EAAOpsE,OAAOlG,GACPA,EAAK7J,MAAMm8E,EAAOpsE,OAAOoJ,QAQlC3hB,EAAQmlF,SAAW,SAACC,GAClB,IAAM5gE,EAAOmgE,EAAOpsE,OAAO6sE,GACrBC,EAAYT,EAASp/E,IAAIgf,GAC/B,QAAkBxiB,IAAdqjF,EACF,MAAM,IAAIx4E,MAAJ,eAAkB2X,EAAlB,eAER,OAAO6gE,GAQTrlF,EAAQoqD,QAAU,SAACk7B,GACjB,OAAOV,EAASp/E,IAAI8/E,IAQtBtlF,EAAQulF,UAAY,SAAC98E,GACnB,IAAM+b,EAAOqgE,EAAsBp8E,GACnC,QAAazG,IAATwiB,EACF,MAAM,IAAI3X,MAAM,UAAYpE,EAAO,eAErC,OAAOs0D,EAAKyoB,mBAAmBhhE,GAAM,IAQvCxkB,EAAQylF,QAAU,SAACL,GACjB,OAAOT,EAAOpsE,OAAO6sE,IAQvBplF,EAAQ0lF,cAAgB,SAACL,GACvB,IAAM7gE,EAAOqgE,EAAsBQ,GACnC,QAAarjF,IAATwiB,EACF,MAAM,IAAI3X,MAAM,UAAYw4E,EAAY,eAE1C,OAAO7gE,GAQTxkB,EAAQ2lF,UAAY,SAACnhE,GACnB,OAAOmgE,EAAOvrE,OAAOoL,IAIvB,IAAM0mC,EAAYlhD,EAAQ,OAC1BzG,OAAOwP,OAAO/S,EAASkrD,GAGvBlrD,EAAQ4lF,MAAQ,EAAhB5lF,2CC5HA,IAAM6lF,EAAY77E,EAAQ,OAGpB87E,EAAY,IAAIh9E,IAEtB,IAAK,IAAMi9E,KAAgBF,EAAW,CACpC,IAAMrhE,EAAOqhE,EAAUE,GACvBD,EAAU98E,IAAIwb,EAAMuhE,GAGtBhmF,EAAOC,QAAUuD,OAAO4U,OAAO2tE,uCCJ/B,2BALMnC,EAAQ35E,EAAQ,OAGhBg8E,EAAc,GAEpB,MAA2BziF,OAAO2T,QAAQysE,GAA1C,eAAkD,CAA7C,gBAAOl7E,EAAP,KAAa+b,EAAb,UACuBxiB,IAAtBgkF,EAAYxhE,KAAqBwhE,EAAYxhE,GAAQ/b,GAG3D1I,EAAOC,QAAUuD,OAAO4U,OAAO6tE,6DCVzBrB,EAAS36E,EAAQ,OAUvB,SAASi8E,EAAgBrwE,GACvB,OAAOiJ,SAASjJ,EAAIzP,SAAS,OAAQ,IAGvC,SAAS+/E,EAAgB/4D,GACvB,IAAIg5D,EAAYh5D,EAAIhnB,SAAS,IAI7B,OAHIggF,EAAUhmF,OAAS,IAAM,IAC3BgmF,EAAY,IAAMA,GAEbz0E,EAAOhL,KAAKy/E,EAAW,OAjBhCpmF,EAAOC,QAAU,CACfkmF,eAAAA,EACAD,eAAAA,EACAhB,mBAiBF,SAA6BrpE,GAC3B,OAAOlK,EAAOhL,KAAKi+E,EAAOvrE,OAAO6sE,EAAerqE,MAjBhD4pE,mBAoBF,SAA6B5pE,GAC3B,OAAOsqE,EAAevB,EAAOpsE,OAAOqD,KApBpCwqE,aAuBF,SAAuBj5D,GACrB,OAAOzb,EAAOhL,KAAKi+E,EAAOvrE,OAAO+T,0CC9BnC,IAAM04D,EAAY77E,EAAQ,OACpBo8E,EAAep8E,EAAAA,OAAAA,aAGfq8E,EAAc,GAEpB,IAAK,IAAMN,KAAgBF,EAAW,CACpC,IAAMrhE,EAAOqhE,EAAUE,GACvBM,EAAYN,GAAgBK,EAAa5hE,GAG3CzkB,EAAOC,QAAUuD,OAAO4U,OAAOkuE,uCCH/B,IAAI7yB,EAASxpD,EAAQ,MACjByvE,EAAUzvE,EAAQ,OAClB0vE,EACiB,oBAAX31E,QAAkD,oBAAlBA,OAAM,IAC1CA,OAAM,IAAQ,8BACd,KAEN/D,EAAQ0R,OAASA,EACjB1R,EAAQ25E,WA2TR,SAAqBx5E,IACdA,GAAUA,IACbA,EAAS,GAEX,OAAOuR,EAAOI,OAAO3R,IA9TvBH,EAAQ45E,kBAAoB,GAE5B,IAAIC,EAAe,WAwDnB,SAASC,EAAc35E,GACrB,GAAIA,EAAS05E,EACX,MAAM,IAAIlc,WAAW,cAAgBx9D,EAAS,kCAGhD,IAAIyV,EAAM,IAAI2L,WAAWphB,GAEzB,OADAoD,OAAOnB,eAAewT,EAAKlE,EAAO3O,WAC3B6S,EAaT,SAASlE,EAAQvQ,EAAK44E,EAAkB55E,GAEtC,GAAmB,kBAARgB,EAAkB,CAC3B,GAAgC,kBAArB44E,EACT,MAAM,IAAI53E,UACR,sEAGJ,OAAOmoE,EAAYnpE,GAErB,OAAOuF,EAAKvF,EAAK44E,EAAkB55E,GAKrC,SAASuG,EAAMrF,EAAO04E,EAAkB55E,GACtC,GAAqB,kBAAVkB,EACT,OAuHJ,SAAqBwrB,EAAQmtD,GACH,kBAAbA,GAAsC,KAAbA,IAClCA,EAAW,QAGb,IAAKtoE,EAAOuoE,WAAWD,GACrB,MAAM,IAAI73E,UAAU,qBAAuB63E,GAG7C,IAAI75E,EAAwC,EAA/B6vB,EAAWnD,EAAQmtD,GAC5BpkE,EAAMkkE,EAAa35E,GAEnBk2D,EAASzgD,EAAI62C,MAAM5/B,EAAQmtD,GAE3B3jB,IAAWl2D,IAIbyV,EAAMA,EAAIpN,MAAM,EAAG6tD,IAGrB,OAAOzgD,EA5IEgK,CAAWve,EAAO04E,GAG3B,GAAIG,YAAYC,OAAO94E,GACrB,OAoJJ,SAAwB+4E,GACtB,GAAIC,EAAWD,EAAW74D,YAAa,CACrC,IAAIzO,EAAO,IAAIyO,WAAW64D,GAC1B,OAAOE,EAAgBxnE,EAAKg/C,OAAQh/C,EAAKwtD,WAAYxtD,EAAKkd,YAE5D,OAAOuqD,EAAcH,GAzJZI,CAAcn5E,GAGvB,GAAa,MAATA,EACF,MAAM,IAAIc,UACR,yHACiDd,GAIrD,GAAIg5E,EAAWh5E,EAAO64E,cACjB74E,GAASg5E,EAAWh5E,EAAMywD,OAAQooB,aACrC,OAAOI,EAAgBj5E,EAAO04E,EAAkB55E,GAGlD,GAAiC,qBAAtBs6E,oBACNJ,EAAWh5E,EAAOo5E,oBAClBp5E,GAASg5E,EAAWh5E,EAAMywD,OAAQ2oB,oBACrC,OAAOH,EAAgBj5E,EAAO04E,EAAkB55E,GAGlD,GAAqB,kBAAVkB,EACT,MAAM,IAAIc,UACR,yEAIJ,IAAIqE,EAAUnF,EAAMmF,SAAWnF,EAAMmF,UACrC,GAAe,MAAXA,GAAmBA,IAAYnF,EACjC,OAAOqQ,EAAOhL,KAAKF,EAASuzE,EAAkB55E,GAGhD,IAAI6uB,EAoJN,SAAqB3pB,GACnB,GAAIqM,EAAO6J,SAASlW,GAAM,CACxB,IAAInF,EAA4B,EAAtBw6E,EAAQr1E,EAAIlF,QAClByV,EAAMkkE,EAAa55E,GAEvB,OAAmB,IAAf0V,EAAIzV,QAIRkF,EAAIyN,KAAK8C,EAAK,EAAG,EAAG1V,GAHX0V,EAOX,QAAmB5T,IAAfqD,EAAIlF,OACN,MAA0B,kBAAfkF,EAAIlF,QAAuBk+D,EAAYh5D,EAAIlF,QAC7C25E,EAAa,GAEfS,EAAcl1E,GAGvB,GAAiB,WAAbA,EAAIwO,MAAqBvT,MAAME,QAAQ6E,EAAIgN,MAC7C,OAAOkoE,EAAcl1E,EAAIgN,MAzKnB0M,CAAW1d,GACnB,GAAI2tB,EAAG,OAAOA,EAEd,GAAsB,qBAAXjrB,QAAgD,MAAtBA,OAAO42E,aACH,oBAA9Bt5E,EAAM0C,OAAO42E,aACtB,OAAOjpE,EAAOhL,KACZrF,EAAM0C,OAAO42E,aAAa,UAAWZ,EAAkB55E,GAI3D,MAAM,IAAIgC,UACR,yHACiDd,GAqBrD,SAASu5E,EAAYr1D,GACnB,GAAoB,kBAATA,EACT,MAAM,IAAIpjB,UAAU,0CACf,GAAIojB,EAAO,EAChB,MAAM,IAAIo4C,WAAW,cAAgBp4C,EAAO,kCA4BhD,SAAS+kD,EAAa/kD,GAEpB,OADAq1D,EAAWr1D,GACJu0D,EAAav0D,EAAO,EAAI,EAAoB,EAAhBm1D,EAAQn1D,IAwC7C,SAASg1D,EAAe94C,GAGtB,IAFA,IAAIthC,EAASshC,EAAMthC,OAAS,EAAI,EAA4B,EAAxBu6E,EAAQj5C,EAAMthC,QAC9CyV,EAAMkkE,EAAa35E,GACdC,EAAI,EAAGA,EAAID,EAAQC,GAAK,EAC/BwV,EAAIxV,GAAgB,IAAXqhC,EAAMrhC,GAEjB,OAAOwV,EAWT,SAAS0kE,EAAiB74C,EAAO6+B,EAAYngE,GAC3C,GAAImgE,EAAa,GAAK7+B,EAAMzR,WAAaswC,EACvC,MAAM,IAAI3C,WAAW,wCAGvB,GAAIl8B,EAAMzR,WAAaswC,GAAcngE,GAAU,GAC7C,MAAM,IAAIw9D,WAAW,wCAGvB,IAAI/nD,EAYJ,OAVEA,OADiB5T,IAAfs+D,QAAuCt+D,IAAX7B,EACxB,IAAIohB,WAAWkgB,QACDz/B,IAAX7B,EACH,IAAIohB,WAAWkgB,EAAO6+B,GAEtB,IAAI/+C,WAAWkgB,EAAO6+B,EAAYngE,GAI1CoD,OAAOnB,eAAewT,EAAKlE,EAAO3O,WAE3B6S,EA4BT,SAAS8kE,EAASv6E,GAGhB,GAAIA,GAAU05E,EACZ,MAAM,IAAIlc,WAAW,0DACakc,EAAa1zE,SAAS,IAAM,UAEhE,OAAgB,EAAThG,EAsGT,SAAS6vB,EAAYnD,EAAQmtD,GAC3B,GAAItoE,EAAO6J,SAASsR,GAClB,OAAOA,EAAO1sB,OAEhB,GAAI+5E,YAAYC,OAAOttD,IAAWwtD,EAAWxtD,EAAQqtD,aACnD,OAAOrtD,EAAOmD,WAEhB,GAAsB,kBAAXnD,EACT,MAAM,IAAI1qB,UACR,kGAC0B0qB,GAI9B,IAAI3sB,EAAM2sB,EAAO1sB,OACb06E,EAAah5E,UAAU1B,OAAS,IAAsB,IAAjB0B,UAAU,GACnD,IAAKg5E,GAAqB,IAAR36E,EAAW,OAAO,EAIpC,IADA,IAAI46E,GAAc,IAEhB,OAAQd,GACN,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAO95E,EACT,IAAK,OACL,IAAK,QACH,OAAO66E,EAAYluD,GAAQ1sB,OAC7B,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAa,EAAND,EACT,IAAK,MACH,OAAOA,IAAQ,EACjB,IAAK,SACH,OAAO86E,EAAcnuD,GAAQ1sB,OAC/B,QACE,GAAI26E,EACF,OAAOD,GAAa,EAAIE,EAAYluD,GAAQ1sB,OAE9C65E,GAAY,GAAKA,GAAU7wD,cAC3B2xD,GAAc,GAMtB,SAASG,EAAcjB,EAAU/sD,EAAOC,GACtC,IAAI4tD,GAAc,EAclB,SALc94E,IAAVirB,GAAuBA,EAAQ,KACjCA,EAAQ,GAINA,EAAQtrB,KAAKxB,OACf,MAAO,GAOT,SAJY6B,IAARkrB,GAAqBA,EAAMvrB,KAAKxB,UAClC+sB,EAAMvrB,KAAKxB,QAGT+sB,GAAO,EACT,MAAO,GAOT,IAHAA,KAAS,KACTD,KAAW,GAGT,MAAO,GAKT,IAFK+sD,IAAUA,EAAW,UAGxB,OAAQA,GACN,IAAK,MACH,OAAOkB,EAASv5E,KAAMsrB,EAAOC,GAE/B,IAAK,OACL,IAAK,QACH,OAAOiuD,EAAUx5E,KAAMsrB,EAAOC,GAEhC,IAAK,QACH,OAAOkuD,EAAWz5E,KAAMsrB,EAAOC,GAEjC,IAAK,SACL,IAAK,SACH,OAAOmuD,EAAY15E,KAAMsrB,EAAOC,GAElC,IAAK,SACH,OAAOouD,EAAY35E,KAAMsrB,EAAOC,GAElC,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAOquD,EAAa55E,KAAMsrB,EAAOC,GAEnC,QACE,GAAI4tD,EAAa,MAAM,IAAI34E,UAAU,qBAAuB63E,GAC5DA,GAAYA,EAAW,IAAI7wD,cAC3B2xD,GAAc,GAatB,SAASU,EAAMxsD,EAAG7qB,EAAGk1B,GACnB,IAAIj5B,EAAI4uB,EAAE7qB,GACV6qB,EAAE7qB,GAAK6qB,EAAEqK,GACTrK,EAAEqK,GAAKj5B,EA4IT,SAASq7E,EAAsB3pB,EAAQ/lC,EAAKu0C,EAAY0Z,EAAU0B,GAEhE,GAAsB,IAAlB5pB,EAAO3xD,OAAc,OAAQ,EAmBjC,GAhB0B,kBAAfmgE,GACT0Z,EAAW1Z,EACXA,EAAa,GACJA,EAAa,WACtBA,EAAa,WACJA,GAAc,aACvBA,GAAc,YAGZjC,EADJiC,GAAcA,KAGZA,EAAaob,EAAM,EAAK5pB,EAAO3xD,OAAS,GAItCmgE,EAAa,IAAGA,EAAaxO,EAAO3xD,OAASmgE,GAC7CA,GAAcxO,EAAO3xD,OAAQ,CAC/B,GAAIu7E,EAAK,OAAQ,EACZpb,EAAaxO,EAAO3xD,OAAS,OAC7B,GAAImgE,EAAa,EAAG,CACzB,IAAIob,EACC,OAAQ,EADJpb,EAAa,EAUxB,GALmB,kBAARv0C,IACTA,EAAMra,EAAOhL,KAAKqlB,EAAKiuD,IAIrBtoE,EAAO6J,SAASwQ,GAElB,OAAmB,IAAfA,EAAI5rB,QACE,EAEHw7E,EAAa7pB,EAAQ/lC,EAAKu0C,EAAY0Z,EAAU0B,GAClD,GAAmB,kBAAR3vD,EAEhB,OADAA,GAAY,IACgC,oBAAjCxK,WAAWxe,UAAUqD,QAC1Bs1E,EACKn6D,WAAWxe,UAAUqD,QAAQ3B,KAAKqtD,EAAQ/lC,EAAKu0C,GAE/C/+C,WAAWxe,UAAU64E,YAAYn3E,KAAKqtD,EAAQ/lC,EAAKu0C,GAGvDqb,EAAa7pB,EAAQ,CAAC/lC,GAAMu0C,EAAY0Z,EAAU0B,GAG3D,MAAM,IAAIv5E,UAAU,wCAGtB,SAASw5E,EAAc17E,EAAK8rB,EAAKu0C,EAAY0Z,EAAU0B,GACrD,IA0BIt7E,EA1BAy7E,EAAY,EACZC,EAAY77E,EAAIE,OAChB47E,EAAYhwD,EAAI5rB,OAEpB,QAAiB6B,IAAbg4E,IAEe,UADjBA,EAAWv6D,OAAOu6D,GAAU7wD,gBACY,UAAb6wD,GACV,YAAbA,GAAuC,aAAbA,GAAyB,CACrD,GAAI/5E,EAAIE,OAAS,GAAK4rB,EAAI5rB,OAAS,EACjC,OAAQ,EAEV07E,EAAY,EACZC,GAAa,EACbC,GAAa,EACbzb,GAAc,EAIlB,SAAS0b,EAAMpmE,EAAKxV,GAClB,OAAkB,IAAdy7E,EACKjmE,EAAIxV,GAEJwV,EAAIw8C,aAAahyD,EAAIy7E,GAKhC,GAAIH,EAAK,CACP,IAAIO,GAAc,EAClB,IAAK77E,EAAIkgE,EAAYlgE,EAAI07E,EAAW17E,IAClC,GAAI47E,EAAK/7E,EAAKG,KAAO47E,EAAKjwD,GAAqB,IAAhBkwD,EAAoB,EAAI77E,EAAI67E,IAEzD,IADoB,IAAhBA,IAAmBA,EAAa77E,GAChCA,EAAI67E,EAAa,IAAMF,EAAW,OAAOE,EAAaJ,OAEtC,IAAhBI,IAAmB77E,GAAKA,EAAI67E,GAChCA,GAAc,OAKlB,IADI3b,EAAayb,EAAYD,IAAWxb,EAAawb,EAAYC,GAC5D37E,EAAIkgE,EAAYlgE,GAAK,EAAGA,IAAK,CAEhC,IADA,IAAI87E,GAAQ,EACH/0D,EAAI,EAAGA,EAAI40D,EAAW50D,IAC7B,GAAI60D,EAAK/7E,EAAKG,EAAI+mB,KAAO60D,EAAKjwD,EAAK5E,GAAI,CACrC+0D,GAAQ,EACR,MAGJ,GAAIA,EAAO,OAAO97E,EAItB,OAAQ,EAeV,SAAS+7E,EAAUvmE,EAAKiX,EAAQ9K,EAAQ5hB,GACtC4hB,EAAS9Q,OAAO8Q,IAAW,EAC3B,IAAIq6D,EAAYxmE,EAAIzV,OAAS4hB,EACxB5hB,GAGHA,EAAS8Q,OAAO9Q,IACHi8E,IACXj8E,EAASi8E,GAJXj8E,EAASi8E,EAQX,IAAIC,EAASxvD,EAAO1sB,OAEhBA,EAASk8E,EAAS,IACpBl8E,EAASk8E,EAAS,GAEpB,IAAK,IAAIj8E,EAAI,EAAGA,EAAID,IAAUC,EAAG,CAC/B,IAAIk8E,EAASz9D,SAASgO,EAAOjb,OAAW,EAAJxR,EAAO,GAAI,IAC/C,GAAIi+D,EAAYie,GAAS,OAAOl8E,EAChCwV,EAAImM,EAAS3hB,GAAKk8E,EAEpB,OAAOl8E,EAGT,SAASm8E,EAAW3mE,EAAKiX,EAAQ9K,EAAQ5hB,GACvC,OAAOq8E,EAAWzB,EAAYluD,EAAQjX,EAAIzV,OAAS4hB,GAASnM,EAAKmM,EAAQ5hB,GAG3E,SAASs8E,EAAY7mE,EAAKiX,EAAQ9K,EAAQ5hB,GACxC,OAAOq8E,EAk4BT,SAAuB/0D,GAErB,IADA,IAAIi1D,EAAY,GACPt8E,EAAI,EAAGA,EAAIqnB,EAAItnB,SAAUC,EAEhCs8E,EAAU95E,KAAyB,IAApB6kB,EAAIK,WAAW1nB,IAEhC,OAAOs8E,EAx4BWC,CAAa9vD,GAASjX,EAAKmM,EAAQ5hB,GAGvD,SAASy8E,EAAahnE,EAAKiX,EAAQ9K,EAAQ5hB,GACzC,OAAOq8E,EAAWxB,EAAcnuD,GAASjX,EAAKmM,EAAQ5hB,GAGxD,SAAS08E,EAAWjnE,EAAKiX,EAAQ9K,EAAQ5hB,GACvC,OAAOq8E,EAm4BT,SAAyB/0D,EAAKq1D,GAG5B,IAFA,IAAIx8D,EAAGqQ,EAAI1B,EACPytD,EAAY,GACPt8E,EAAI,EAAGA,EAAIqnB,EAAItnB,WACjB28E,GAAS,GAAK,KADa18E,EAIhCuwB,GADArQ,EAAImH,EAAIK,WAAW1nB,KACT,EACV6uB,EAAK3O,EAAI,IACTo8D,EAAU95E,KAAKqsB,GACfytD,EAAU95E,KAAK+tB,GAGjB,OAAO+rD,EAh5BWK,CAAelwD,EAAQjX,EAAIzV,OAAS4hB,GAASnM,EAAKmM,EAAQ5hB,GA+E9E,SAASm7E,EAAa1lE,EAAKqX,EAAOC,GAChC,OAAc,IAAVD,GAAeC,IAAQtX,EAAIzV,OACtBqzD,EAAO8X,cAAc11D,GAErB49C,EAAO8X,cAAc11D,EAAIpN,MAAMykB,EAAOC,IAIjD,SAASiuD,EAAWvlE,EAAKqX,EAAOC,GAC9BA,EAAM3X,KAAKwD,IAAInD,EAAIzV,OAAQ+sB,GAI3B,IAHA,IAAIhG,EAAM,GAEN9mB,EAAI6sB,EACD7sB,EAAI8sB,GAAK,CACd,IAWMgwD,EAAYC,EAAWC,EAAYC,EAXrCL,EAAYpnE,EAAIxV,GAChB8nB,EAAY,KACZ+0D,EAAoBD,EAAY,IAChC,EACCA,EAAY,IACT,EACCA,EAAY,IACT,EACA,EAEZ,GAAI58E,EAAI68E,GAAoB/vD,EAG1B,OAAQ+vD,GACN,KAAK,EACCD,EAAY,MACd90D,EAAY80D,GAEd,MACF,KAAK,EAEyB,OAAV,KADlBE,EAAatnE,EAAIxV,EAAI,OAEnBi9E,GAA6B,GAAZL,IAAqB,EAAoB,GAAbE,GACzB,MAClBh1D,EAAYm1D,GAGhB,MACF,KAAK,EACHH,EAAatnE,EAAIxV,EAAI,GACrB+8E,EAAYvnE,EAAIxV,EAAI,GACQ,OAAV,IAAb88E,IAAsD,OAAV,IAAZC,KACnCE,GAA6B,GAAZL,IAAoB,IAAoB,GAAbE,IAAsB,EAAmB,GAAZC,GACrD,OAAUE,EAAgB,OAAUA,EAAgB,SACtEn1D,EAAYm1D,GAGhB,MACF,KAAK,EACHH,EAAatnE,EAAIxV,EAAI,GACrB+8E,EAAYvnE,EAAIxV,EAAI,GACpBg9E,EAAaxnE,EAAIxV,EAAI,GACO,OAAV,IAAb88E,IAAsD,OAAV,IAAZC,IAAsD,OAAV,IAAbC,KAClEC,GAA6B,GAAZL,IAAoB,IAAqB,GAAbE,IAAsB,IAAmB,GAAZC,IAAqB,EAAoB,GAAbC,GAClF,OAAUC,EAAgB,UAC5Cn1D,EAAYm1D,GAMJ,OAAdn1D,GAGFA,EAAY,MACZ+0D,EAAmB,GACV/0D,EAAY,QAErBA,GAAa,MACbhB,EAAItkB,KAAKslB,IAAc,GAAK,KAAQ,OACpCA,EAAY,MAAqB,KAAZA,GAGvBhB,EAAItkB,KAAKslB,GACT9nB,GAAK68E,EAGP,OAQF,SAAgCK,GAC9B,IAAIp9E,EAAMo9E,EAAWn9E,OACrB,GAAID,GAAOq9E,EACT,OAAO99D,OAAO0I,aAAarmB,MAAM2d,OAAQ69D,GAI3C,IAAIp2D,EAAM,GACN9mB,EAAI,EACR,KAAOA,EAAIF,GACTgnB,GAAOzH,OAAO0I,aAAarmB,MACzB2d,OACA69D,EAAW90E,MAAMpI,EAAGA,GAAKm9E,IAG7B,OAAOr2D,EAvBAs2D,CAAsBt2D,GA1+B/BlnB,EAAQy9E,WAAa5D,EAgBrBnoE,EAAOgsE,oBAUP,WAEE,IACE,IAAIz9E,EAAM,IAAIshB,WAAW,GACrBo8D,EAAQ,CAAEC,IAAK,WAAc,OAAO,KAGxC,OAFAr6E,OAAOnB,eAAeu7E,EAAOp8D,WAAWxe,WACxCQ,OAAOnB,eAAenC,EAAK09E,GACN,KAAd19E,EAAI29E,MACX,MAAOx5E,GACP,OAAO,GAnBkBy5E,GAExBnsE,EAAOgsE,qBAA0C,qBAAZz5C,SACb,oBAAlBA,QAAQ3iC,OACjB2iC,QAAQ3iC,MACN,iJAkBJiC,OAAOC,eAAekO,EAAO3O,UAAW,SAAU,CAChDK,YAAY,EACZoC,IAAK,WACH,GAAKkM,EAAO6J,SAAS5Z,MACrB,OAAOA,KAAKmwD,UAIhBvuD,OAAOC,eAAekO,EAAO3O,UAAW,SAAU,CAChDK,YAAY,EACZoC,IAAK,WACH,GAAKkM,EAAO6J,SAAS5Z,MACrB,OAAOA,KAAK2+D,cAqChB5uD,EAAOosE,SAAW,KAgElBpsE,EAAOhL,KAAO,SAAUrF,EAAO04E,EAAkB55E,GAC/C,OAAOuG,EAAKrF,EAAO04E,EAAkB55E,IAKvCoD,OAAOnB,eAAesP,EAAO3O,UAAWwe,WAAWxe,WACnDQ,OAAOnB,eAAesP,EAAQ6P,YA8B9B7P,EAAOI,MAAQ,SAAUyT,EAAM0hB,EAAM+yC,GACnC,OArBF,SAAgBz0D,EAAM0hB,EAAM+yC,GAE1B,OADAY,EAAWr1D,GACPA,GAAQ,EACHu0D,EAAav0D,QAETvjB,IAATilC,EAIyB,kBAAb+yC,EACVF,EAAav0D,GAAM0hB,KAAKA,EAAM+yC,GAC9BF,EAAav0D,GAAM0hB,KAAKA,GAEvB6yC,EAAav0D,GAQbzT,CAAMyT,EAAM0hB,EAAM+yC,IAW3BtoE,EAAO44D,YAAc,SAAU/kD,GAC7B,OAAO+kD,EAAY/kD,IAKrB7T,EAAOqsE,gBAAkB,SAAUx4D,GACjC,OAAO+kD,EAAY/kD,IA8GrB7T,EAAO6J,SAAW,SAAmByT,GACnC,OAAY,MAALA,IAA6B,IAAhBA,EAAEgvD,WACpBhvD,IAAMtd,EAAO3O,WAGjB2O,EAAOguD,QAAU,SAAkB/8D,EAAGqsB,GAGpC,GAFIqrD,EAAW13E,EAAG4e,cAAa5e,EAAI+O,EAAOhL,KAAK/D,EAAGA,EAAEof,OAAQpf,EAAEqtB,aAC1DqqD,EAAWrrD,EAAGzN,cAAayN,EAAItd,EAAOhL,KAAKsoB,EAAGA,EAAEjN,OAAQiN,EAAEgB,cACzDte,EAAO6J,SAAS5Y,KAAO+O,EAAO6J,SAASyT,GAC1C,MAAM,IAAI7sB,UACR,yEAIJ,GAAIQ,IAAMqsB,EAAG,OAAO,EAKpB,IAHA,IAAIvF,EAAI9mB,EAAExC,OACNq3B,EAAIxI,EAAE7uB,OAEDC,EAAI,EAAGF,EAAMqV,KAAKwD,IAAI0Q,EAAG+N,GAAIp3B,EAAIF,IAAOE,EAC/C,GAAIuC,EAAEvC,KAAO4uB,EAAE5uB,GAAI,CACjBqpB,EAAI9mB,EAAEvC,GACNo3B,EAAIxI,EAAE5uB,GACN,MAIJ,OAAIqpB,EAAI+N,GAAW,EACfA,EAAI/N,EAAU,EACX,GAGT/X,EAAOuoE,WAAa,SAAqBD,GACvC,OAAQv6D,OAAOu6D,GAAU7wD,eACvB,IAAK,MACL,IAAK,OACL,IAAK,QACL,IAAK,QACL,IAAK,SACL,IAAK,SACL,IAAK,SACL,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO,EACT,QACE,OAAO,IAIbzX,EAAOrD,OAAS,SAAiB4vE,EAAM99E,GACrC,IAAKG,MAAME,QAAQy9E,GACjB,MAAM,IAAI97E,UAAU,+CAGtB,GAAoB,IAAhB87E,EAAK99E,OACP,OAAOuR,EAAOI,MAAM,GAGtB,IAAI1R,EACJ,QAAe4B,IAAX7B,EAEF,IADAA,EAAS,EACJC,EAAI,EAAGA,EAAI69E,EAAK99E,SAAUC,EAC7BD,GAAU89E,EAAK79E,GAAGD,OAItB,IAAI2xD,EAASpgD,EAAO44D,YAAYnqE,GAC5Bs5D,EAAM,EACV,IAAKr5D,EAAI,EAAGA,EAAI69E,EAAK99E,SAAUC,EAAG,CAChC,IAAIwV,EAAMqoE,EAAK79E,GACf,GAAIi6E,EAAWzkE,EAAK2L,YACdk4C,EAAM7jD,EAAIzV,OAAS2xD,EAAO3xD,OAC5BuR,EAAOhL,KAAKkP,GAAK9C,KAAKg/C,EAAQ2H,GAE9Bl4C,WAAWxe,UAAUiG,IAAIvE,KACvBqtD,EACAl8C,EACA6jD,OAGC,KAAK/nD,EAAO6J,SAAS3F,GAC1B,MAAM,IAAIzT,UAAU,+CAEpByT,EAAI9C,KAAKg/C,EAAQ2H,GAEnBA,GAAO7jD,EAAIzV,OAEb,OAAO2xD,GAkDTpgD,EAAOse,WAAaA,EA8EpBte,EAAO3O,UAAUi7E,WAAY,EAQ7BtsE,EAAO3O,UAAUm7E,OAAS,WACxB,IAAIh+E,EAAMyB,KAAKxB,OACf,GAAID,EAAM,IAAM,EACd,MAAM,IAAIy9D,WAAW,6CAEvB,IAAK,IAAIv9D,EAAI,EAAGA,EAAIF,EAAKE,GAAK,EAC5Bo7E,EAAK75E,KAAMvB,EAAGA,EAAI,GAEpB,OAAOuB,MAGT+P,EAAO3O,UAAUo7E,OAAS,WACxB,IAAIj+E,EAAMyB,KAAKxB,OACf,GAAID,EAAM,IAAM,EACd,MAAM,IAAIy9D,WAAW,6CAEvB,IAAK,IAAIv9D,EAAI,EAAGA,EAAIF,EAAKE,GAAK,EAC5Bo7E,EAAK75E,KAAMvB,EAAGA,EAAI,GAClBo7E,EAAK75E,KAAMvB,EAAI,EAAGA,EAAI,GAExB,OAAOuB,MAGT+P,EAAO3O,UAAUq7E,OAAS,WACxB,IAAIl+E,EAAMyB,KAAKxB,OACf,GAAID,EAAM,IAAM,EACd,MAAM,IAAIy9D,WAAW,6CAEvB,IAAK,IAAIv9D,EAAI,EAAGA,EAAIF,EAAKE,GAAK,EAC5Bo7E,EAAK75E,KAAMvB,EAAGA,EAAI,GAClBo7E,EAAK75E,KAAMvB,EAAI,EAAGA,EAAI,GACtBo7E,EAAK75E,KAAMvB,EAAI,EAAGA,EAAI,GACtBo7E,EAAK75E,KAAMvB,EAAI,EAAGA,EAAI,GAExB,OAAOuB,MAGT+P,EAAO3O,UAAUoD,SAAW,WAC1B,IAAIhG,EAASwB,KAAKxB,OAClB,OAAe,IAAXA,EAAqB,GACA,IAArB0B,UAAU1B,OAAqBg7E,EAAUx5E,KAAM,EAAGxB,GAC/C86E,EAAan5E,MAAMH,KAAME,YAGlC6P,EAAO3O,UAAUs7E,eAAiB3sE,EAAO3O,UAAUoD,SAEnDuL,EAAO3O,UAAUuV,OAAS,SAAiB0W,GACzC,IAAKtd,EAAO6J,SAASyT,GAAI,MAAM,IAAI7sB,UAAU,6BAC7C,OAAIR,OAASqtB,GACsB,IAA5Btd,EAAOguD,QAAQ/9D,KAAMqtB,IAG9Btd,EAAO3O,UAAU2rB,QAAU,WACzB,IAAIjH,EAAM,GACN2F,EAAMptB,EAAQ45E,kBAGlB,OAFAnyD,EAAM9lB,KAAKwE,SAAS,MAAO,EAAGinB,GAAK/M,QAAQ,UAAW,OAAO4kC,OACzDtjD,KAAKxB,OAASitB,IAAK3F,GAAO,SACvB,WAAaA,EAAM,KAExBiyD,IACFhoE,EAAO3O,UAAU22E,GAAuBhoE,EAAO3O,UAAU2rB,SAG3Dhd,EAAO3O,UAAU28D,QAAU,SAAkBz8D,EAAQgqB,EAAOC,EAAKoxD,EAAWC,GAI1E,GAHIlE,EAAWp3E,EAAQse,cACrBte,EAASyO,EAAOhL,KAAKzD,EAAQA,EAAO8e,OAAQ9e,EAAO+sB,cAEhDte,EAAO6J,SAAStY,GACnB,MAAM,IAAId,UACR,wFAC2Bc,GAiB/B,QAbcjB,IAAVirB,IACFA,EAAQ,QAEEjrB,IAARkrB,IACFA,EAAMjqB,EAASA,EAAO9C,OAAS,QAEf6B,IAAds8E,IACFA,EAAY,QAEEt8E,IAAZu8E,IACFA,EAAU58E,KAAKxB,QAGb8sB,EAAQ,GAAKC,EAAMjqB,EAAO9C,QAAUm+E,EAAY,GAAKC,EAAU58E,KAAKxB,OACtE,MAAM,IAAIw9D,WAAW,sBAGvB,GAAI2gB,GAAaC,GAAWtxD,GAASC,EACnC,OAAO,EAET,GAAIoxD,GAAaC,EACf,OAAQ,EAEV,GAAItxD,GAASC,EACX,OAAO,EAQT,GAAIvrB,OAASsB,EAAQ,OAAO,EAS5B,IAPA,IAAIwmB,GAJJ80D,KAAa,IADbD,KAAe,GAMX9mD,GAPJtK,KAAS,IADTD,KAAW,GASP/sB,EAAMqV,KAAKwD,IAAI0Q,EAAG+N,GAElBgnD,EAAW78E,KAAK6G,MAAM81E,EAAWC,GACjCE,EAAax7E,EAAOuF,MAAMykB,EAAOC,GAE5B9sB,EAAI,EAAGA,EAAIF,IAAOE,EACzB,GAAIo+E,EAASp+E,KAAOq+E,EAAWr+E,GAAI,CACjCqpB,EAAI+0D,EAASp+E,GACbo3B,EAAIinD,EAAWr+E,GACf,MAIJ,OAAIqpB,EAAI+N,GAAW,EACfA,EAAI/N,EAAU,EACX,GA4HT/X,EAAO3O,UAAUqM,SAAW,SAAmB2c,EAAKu0C,EAAY0Z,GAC9D,OAAoD,IAA7Cr4E,KAAKyE,QAAQ2lB,EAAKu0C,EAAY0Z,IAGvCtoE,EAAO3O,UAAUqD,QAAU,SAAkB2lB,EAAKu0C,EAAY0Z,GAC5D,OAAOyB,EAAqB95E,KAAMoqB,EAAKu0C,EAAY0Z,GAAU,IAG/DtoE,EAAO3O,UAAU64E,YAAc,SAAsB7vD,EAAKu0C,EAAY0Z,GACpE,OAAOyB,EAAqB95E,KAAMoqB,EAAKu0C,EAAY0Z,GAAU,IA4C/DtoE,EAAO3O,UAAU0pD,MAAQ,SAAgB5/B,EAAQ9K,EAAQ5hB,EAAQ65E,GAE/D,QAAeh4E,IAAX+f,EACFi4D,EAAW,OACX75E,EAASwB,KAAKxB,OACd4hB,EAAS,OAEJ,QAAe/f,IAAX7B,GAA0C,kBAAX4hB,EACxCi4D,EAAWj4D,EACX5hB,EAASwB,KAAKxB,OACd4hB,EAAS,MAEJ,KAAI28D,SAAS38D,GAUlB,MAAM,IAAIlV,MACR,2EAVFkV,KAAoB,EAChB28D,SAASv+E,IACXA,KAAoB,OACH6B,IAAbg4E,IAAwBA,EAAW,UAEvCA,EAAW75E,EACXA,OAAS6B,GAQb,IAAIo6E,EAAYz6E,KAAKxB,OAAS4hB,EAG9B,SAFe/f,IAAX7B,GAAwBA,EAASi8E,KAAWj8E,EAASi8E,GAEpDvvD,EAAO1sB,OAAS,IAAMA,EAAS,GAAK4hB,EAAS,IAAOA,EAASpgB,KAAKxB,OACrE,MAAM,IAAIw9D,WAAW,0CAGlBqc,IAAUA,EAAW,QAG1B,IADA,IAAIc,GAAc,IAEhB,OAAQd,GACN,IAAK,MACH,OAAOmC,EAASx6E,KAAMkrB,EAAQ9K,EAAQ5hB,GAExC,IAAK,OACL,IAAK,QACH,OAAOo8E,EAAU56E,KAAMkrB,EAAQ9K,EAAQ5hB,GAEzC,IAAK,QACL,IAAK,SACL,IAAK,SACH,OAAOs8E,EAAW96E,KAAMkrB,EAAQ9K,EAAQ5hB,GAE1C,IAAK,SAEH,OAAOy8E,EAAYj7E,KAAMkrB,EAAQ9K,EAAQ5hB,GAE3C,IAAK,OACL,IAAK,QACL,IAAK,UACL,IAAK,WACH,OAAO08E,EAAUl7E,KAAMkrB,EAAQ9K,EAAQ5hB,GAEzC,QACE,GAAI26E,EAAa,MAAM,IAAI34E,UAAU,qBAAuB63E,GAC5DA,GAAY,GAAKA,GAAU7wD,cAC3B2xD,GAAc,IAKtBppE,EAAO3O,UAAU8sB,OAAS,WACxB,MAAO,CACLhc,KAAM,SACNxB,KAAM/R,MAAMyC,UAAUyF,MAAM/D,KAAK9C,KAAKkF,MAAQlF,KAAM,KA2FxD,IAAI47E,EAAuB,KAoB3B,SAASnC,EAAYxlE,EAAKqX,EAAOC,GAC/B,IAAI0C,EAAM,GACV1C,EAAM3X,KAAKwD,IAAInD,EAAIzV,OAAQ+sB,GAE3B,IAAK,IAAI9sB,EAAI6sB,EAAO7sB,EAAI8sB,IAAO9sB,EAC7BwvB,GAAOnQ,OAAO0I,aAAsB,IAATvS,EAAIxV,IAEjC,OAAOwvB,EAGT,SAASyrD,EAAazlE,EAAKqX,EAAOC,GAChC,IAAI0C,EAAM,GACV1C,EAAM3X,KAAKwD,IAAInD,EAAIzV,OAAQ+sB,GAE3B,IAAK,IAAI9sB,EAAI6sB,EAAO7sB,EAAI8sB,IAAO9sB,EAC7BwvB,GAAOnQ,OAAO0I,aAAavS,EAAIxV,IAEjC,OAAOwvB,EAGT,SAASsrD,EAAUtlE,EAAKqX,EAAOC,GAC7B,IAAIhtB,EAAM0V,EAAIzV,SAET8sB,GAASA,EAAQ,KAAGA,EAAQ,KAC5BC,GAAOA,EAAM,GAAKA,EAAMhtB,KAAKgtB,EAAMhtB,GAGxC,IADA,IAAI6uB,EAAM,GACD3uB,EAAI6sB,EAAO7sB,EAAI8sB,IAAO9sB,EAC7B2uB,GAAO4vD,EAAoB/oE,EAAIxV,IAEjC,OAAO2uB,EAGT,SAASwsD,EAAc3lE,EAAKqX,EAAOC,GAIjC,IAHA,IAAIvL,EAAQ/L,EAAIpN,MAAMykB,EAAOC,GACzBhG,EAAM,GAED9mB,EAAI,EAAGA,EAAIuhB,EAAMxhB,OAAS,EAAGC,GAAK,EACzC8mB,GAAOzH,OAAO0I,aAAaxG,EAAMvhB,GAAqB,IAAfuhB,EAAMvhB,EAAI,IAEnD,OAAO8mB,EAkCT,SAAS03D,EAAa78D,EAAQ88D,EAAK1+E,GACjC,GAAK4hB,EAAS,IAAO,GAAKA,EAAS,EAAG,MAAM,IAAI47C,WAAW,sBAC3D,GAAI57C,EAAS88D,EAAM1+E,EAAQ,MAAM,IAAIw9D,WAAW,yCAoLlD,SAASmhB,EAAUlpE,EAAKvU,EAAO0gB,EAAQ88D,EAAKzxD,EAAKrU,GAC/C,IAAKrH,EAAO6J,SAAS3F,GAAM,MAAM,IAAIzT,UAAU,+CAC/C,GAAId,EAAQ+rB,GAAO/rB,EAAQ0X,EAAK,MAAM,IAAI4kD,WAAW,qCACrD,GAAI57C,EAAS88D,EAAMjpE,EAAIzV,OAAQ,MAAM,IAAIw9D,WAAW,sBAgMtD,SAASuhB,EAActpE,EAAKvU,EAAO0gB,EAAQ88D,EAAKzxD,EAAKrU,GACnD,GAAIgJ,EAAS88D,EAAMjpE,EAAIzV,OAAQ,MAAM,IAAIw9D,WAAW,sBACpD,GAAI57C,EAAS,EAAG,MAAM,IAAI47C,WAAW,sBAGvC,SAASwhB,EAAYvpE,EAAKvU,EAAO0gB,EAAQmO,EAAckvD,GAOrD,OANA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GACHF,EAAatpE,EAAKvU,EAAO0gB,EAAQ,GAEnC03D,EAAQhtB,MAAM72C,EAAKvU,EAAO0gB,EAAQmO,EAAc,GAAI,GAC7CnO,EAAS,EAWlB,SAASs9D,EAAazpE,EAAKvU,EAAO0gB,EAAQmO,EAAckvD,GAOtD,OANA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GACHF,EAAatpE,EAAKvU,EAAO0gB,EAAQ,GAEnC03D,EAAQhtB,MAAM72C,EAAKvU,EAAO0gB,EAAQmO,EAAc,GAAI,GAC7CnO,EAAS,EAtblBrQ,EAAO3O,UAAUyF,MAAQ,SAAgBykB,EAAOC,GAC9C,IAAIhtB,EAAMyB,KAAKxB,QACf8sB,IAAUA,GAGE,GACVA,GAAS/sB,GACG,IAAG+sB,EAAQ,GACdA,EAAQ/sB,IACjB+sB,EAAQ/sB,IANVgtB,OAAclrB,IAARkrB,EAAoBhtB,IAAQgtB,GASxB,GACRA,GAAOhtB,GACG,IAAGgtB,EAAM,GACVA,EAAMhtB,IACfgtB,EAAMhtB,GAGJgtB,EAAMD,IAAOC,EAAMD,GAEvB,IAAIqyD,EAAS39E,KAAK49E,SAAStyD,EAAOC,GAIlC,OAFA3pB,OAAOnB,eAAek9E,EAAQ5tE,EAAO3O,WAE9Bu8E,GAWT5tE,EAAO3O,UAAUy8E,WACjB9tE,EAAO3O,UAAU08E,WAAa,SAAqB19D,EAAQiO,EAAYovD,GACrEr9D,KAAoB,EACpBiO,KAA4B,EACvBovD,GAAUR,EAAY78D,EAAQiO,EAAYruB,KAAKxB,QAKpD,IAHA,IAAI4rB,EAAMpqB,KAAKogB,GACXhK,EAAM,EACN3X,EAAI,IACCA,EAAI4vB,IAAejY,GAAO,MACjCgU,GAAOpqB,KAAKogB,EAAS3hB,GAAK2X,EAG5B,OAAOgU,GAGTra,EAAO3O,UAAU28E,WACjBhuE,EAAO3O,UAAU48E,WAAa,SAAqB59D,EAAQiO,EAAYovD,GACrEr9D,KAAoB,EACpBiO,KAA4B,EACvBovD,GACHR,EAAY78D,EAAQiO,EAAYruB,KAAKxB,QAKvC,IAFA,IAAI4rB,EAAMpqB,KAAKogB,IAAWiO,GACtBjY,EAAM,EACHiY,EAAa,IAAMjY,GAAO,MAC/BgU,GAAOpqB,KAAKogB,IAAWiO,GAAcjY,EAGvC,OAAOgU,GAGTra,EAAO3O,UAAU68E,UACjBluE,EAAO3O,UAAUspD,UAAY,SAAoBtqC,EAAQq9D,GAGvD,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCwB,KAAKogB,IAGdrQ,EAAO3O,UAAU88E,aACjBnuE,EAAO3O,UAAU+8E,aAAe,SAAuB/9D,EAAQq9D,GAG7D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCwB,KAAKogB,GAAWpgB,KAAKogB,EAAS,IAAM,GAG7CrQ,EAAO3O,UAAUg9E,aACjBruE,EAAO3O,UAAUqvD,aAAe,SAAuBrwC,EAAQq9D,GAG7D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACnCwB,KAAKogB,IAAW,EAAKpgB,KAAKogB,EAAS,IAG7CrQ,EAAO3O,UAAUi9E,aACjBtuE,EAAO3O,UAAUk9E,aAAe,SAAuBl+D,EAAQq9D,GAI7D,OAHAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,SAElCwB,KAAKogB,GACTpgB,KAAKogB,EAAS,IAAM,EACpBpgB,KAAKogB,EAAS,IAAM,IACD,SAAnBpgB,KAAKogB,EAAS,IAGrBrQ,EAAO3O,UAAUm9E,aACjBxuE,EAAO3O,UAAUupE,aAAe,SAAuBvqD,EAAQq9D,GAI7D,OAHAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAEpB,SAAfwB,KAAKogB,IACTpgB,KAAKogB,EAAS,IAAM,GACrBpgB,KAAKogB,EAAS,IAAM,EACrBpgB,KAAKogB,EAAS,KAGlBrQ,EAAO3O,UAAUy9E,UAAY,SAAoBz+D,EAAQiO,EAAYovD,GACnEr9D,KAAoB,EACpBiO,KAA4B,EACvBovD,GAAUR,EAAY78D,EAAQiO,EAAYruB,KAAKxB,QAKpD,IAHA,IAAI4rB,EAAMpqB,KAAKogB,GACXhK,EAAM,EACN3X,EAAI,IACCA,EAAI4vB,IAAejY,GAAO,MACjCgU,GAAOpqB,KAAKogB,EAAS3hB,GAAK2X,EAM5B,OAFIgU,IAFJhU,GAAO,OAESgU,GAAOxW,KAAKwV,IAAI,EAAG,EAAIiF,IAEhCjE,GAGTra,EAAO3O,UAAU09E,UAAY,SAAoB1+D,EAAQiO,EAAYovD,GACnEr9D,KAAoB,EACpBiO,KAA4B,EACvBovD,GAAUR,EAAY78D,EAAQiO,EAAYruB,KAAKxB,QAKpD,IAHA,IAAIC,EAAI4vB,EACJjY,EAAM,EACNgU,EAAMpqB,KAAKogB,IAAW3hB,GACnBA,EAAI,IAAM2X,GAAO,MACtBgU,GAAOpqB,KAAKogB,IAAW3hB,GAAK2X,EAM9B,OAFIgU,IAFJhU,GAAO,OAESgU,GAAOxW,KAAKwV,IAAI,EAAG,EAAIiF,IAEhCjE,GAGTra,EAAO3O,UAAU29E,SAAW,SAAmB3+D,EAAQq9D,GAGrD,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACtB,IAAfwB,KAAKogB,IAC0B,GAA5B,IAAOpgB,KAAKogB,GAAU,GADKpgB,KAAKogB,IAI3CrQ,EAAO3O,UAAU49E,YAAc,SAAsB5+D,EAAQq9D,GAC3Dr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAC3C,IAAI4rB,EAAMpqB,KAAKogB,GAAWpgB,KAAKogB,EAAS,IAAM,EAC9C,OAAc,MAANgK,EAAsB,WAANA,EAAmBA,GAG7Cra,EAAO3O,UAAU69E,YAAc,SAAsB7+D,EAAQq9D,GAC3Dr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAC3C,IAAI4rB,EAAMpqB,KAAKogB,EAAS,GAAMpgB,KAAKogB,IAAW,EAC9C,OAAc,MAANgK,EAAsB,WAANA,EAAmBA,GAG7Cra,EAAO3O,UAAU89E,YAAc,SAAsB9+D,EAAQq9D,GAI3D,OAHAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAEnCwB,KAAKogB,GACVpgB,KAAKogB,EAAS,IAAM,EACpBpgB,KAAKogB,EAAS,IAAM,GACpBpgB,KAAKogB,EAAS,IAAM,IAGzBrQ,EAAO3O,UAAU+9E,YAAc,SAAsB/+D,EAAQq9D,GAI3D,OAHAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QAEnCwB,KAAKogB,IAAW,GACrBpgB,KAAKogB,EAAS,IAAM,GACpBpgB,KAAKogB,EAAS,IAAM,EACpBpgB,KAAKogB,EAAS,IAGnBrQ,EAAO3O,UAAUk+E,YAAc,SAAsBl/D,EAAQq9D,GAG3D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCs5E,EAAQuC,KAAKr6E,KAAMogB,GAAQ,EAAM,GAAI,IAG9CrQ,EAAO3O,UAAUm+E,YAAc,SAAsBn/D,EAAQq9D,GAG3D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCs5E,EAAQuC,KAAKr6E,KAAMogB,GAAQ,EAAO,GAAI,IAG/CrQ,EAAO3O,UAAUo+E,aAAe,SAAuBp/D,EAAQq9D,GAG7D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCs5E,EAAQuC,KAAKr6E,KAAMogB,GAAQ,EAAM,GAAI,IAG9CrQ,EAAO3O,UAAUq+E,aAAe,SAAuBr/D,EAAQq9D,GAG7D,OAFAr9D,KAAoB,EACfq9D,GAAUR,EAAY78D,EAAQ,EAAGpgB,KAAKxB,QACpCs5E,EAAQuC,KAAKr6E,KAAMogB,GAAQ,EAAO,GAAI,IAS/CrQ,EAAO3O,UAAUs+E,YACjB3vE,EAAO3O,UAAUu+E,YAAc,SAAsBjgF,EAAO0gB,EAAQiO,EAAYovD,IAC9E/9E,GAASA,EACT0gB,KAAoB,EACpBiO,KAA4B,EACvBovD,IAEHN,EAASn9E,KAAMN,EAAO0gB,EAAQiO,EADfza,KAAKwV,IAAI,EAAG,EAAIiF,GAAc,EACO,GAGtD,IAAIjY,EAAM,EACN3X,EAAI,EAER,IADAuB,KAAKogB,GAAkB,IAAR1gB,IACNjB,EAAI4vB,IAAejY,GAAO,MACjCpW,KAAKogB,EAAS3hB,GAAMiB,EAAQ0W,EAAO,IAGrC,OAAOgK,EAASiO,GAGlBte,EAAO3O,UAAUw+E,YACjB7vE,EAAO3O,UAAUktE,YAAc,SAAsB5uE,EAAO0gB,EAAQiO,EAAYovD,IAC9E/9E,GAASA,EACT0gB,KAAoB,EACpBiO,KAA4B,EACvBovD,IAEHN,EAASn9E,KAAMN,EAAO0gB,EAAQiO,EADfza,KAAKwV,IAAI,EAAG,EAAIiF,GAAc,EACO,GAGtD,IAAI5vB,EAAI4vB,EAAa,EACjBjY,EAAM,EAEV,IADApW,KAAKogB,EAAS3hB,GAAa,IAARiB,IACVjB,GAAK,IAAM2X,GAAO,MACzBpW,KAAKogB,EAAS3hB,GAAMiB,EAAQ0W,EAAO,IAGrC,OAAOgK,EAASiO,GAGlBte,EAAO3O,UAAUy+E,WACjB9vE,EAAO3O,UAAUmwE,WAAa,SAAqB7xE,EAAO0gB,EAAQq9D,GAKhE,OAJA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,IAAM,GACtDpgB,KAAKogB,GAAmB,IAAR1gB,EACT0gB,EAAS,GAGlBrQ,EAAO3O,UAAU0+E,cACjB/vE,EAAO3O,UAAU2+E,cAAgB,SAAwBrgF,EAAO0gB,EAAQq9D,GAMtE,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,MAAQ,GACxDpgB,KAAKogB,GAAmB,IAAR1gB,EAChBM,KAAKogB,EAAS,GAAM1gB,IAAU,EACvB0gB,EAAS,GAGlBrQ,EAAO3O,UAAU4+E,cACjBjwE,EAAO3O,UAAU+wD,cAAgB,SAAwBzyD,EAAO0gB,EAAQq9D,GAMtE,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,MAAQ,GACxDpgB,KAAKogB,GAAW1gB,IAAU,EAC1BM,KAAKogB,EAAS,GAAc,IAAR1gB,EACb0gB,EAAS,GAGlBrQ,EAAO3O,UAAU6+E,cACjBlwE,EAAO3O,UAAU8+E,cAAgB,SAAwBxgF,EAAO0gB,EAAQq9D,GAQtE,OAPA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,WAAY,GAC5DpgB,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,EAC9BM,KAAKogB,GAAmB,IAAR1gB,EACT0gB,EAAS,GAGlBrQ,EAAO3O,UAAU++E,cACjBpwE,EAAO3O,UAAU+rE,cAAgB,SAAwBztE,EAAO0gB,EAAQq9D,GAQtE,OAPA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,WAAY,GAC5DpgB,KAAKogB,GAAW1gB,IAAU,GAC1BM,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,EAC9BM,KAAKogB,EAAS,GAAc,IAAR1gB,EACb0gB,EAAS,GAGlBrQ,EAAO3O,UAAUk/E,WAAa,SAAqB5gF,EAAO0gB,EAAQiO,EAAYovD,GAG5E,GAFA/9E,GAASA,EACT0gB,KAAoB,GACfq9D,EAAU,CACb,IAAI7iB,EAAQhnD,KAAKwV,IAAI,EAAI,EAAIiF,EAAc,GAE3C8uD,EAASn9E,KAAMN,EAAO0gB,EAAQiO,EAAYusC,EAAQ,GAAIA,GAGxD,IAAIn8D,EAAI,EACJ2X,EAAM,EACNiB,EAAM,EAEV,IADArX,KAAKogB,GAAkB,IAAR1gB,IACNjB,EAAI4vB,IAAejY,GAAO,MAC7B1W,EAAQ,GAAa,IAAR2X,GAAsC,IAAzBrX,KAAKogB,EAAS3hB,EAAI,KAC9C4Y,EAAM,GAERrX,KAAKogB,EAAS3hB,IAAOiB,EAAQ0W,GAAQ,GAAKiB,EAAM,IAGlD,OAAO+I,EAASiO,GAGlBte,EAAO3O,UAAUm/E,WAAa,SAAqB7gF,EAAO0gB,EAAQiO,EAAYovD,GAG5E,GAFA/9E,GAASA,EACT0gB,KAAoB,GACfq9D,EAAU,CACb,IAAI7iB,EAAQhnD,KAAKwV,IAAI,EAAI,EAAIiF,EAAc,GAE3C8uD,EAASn9E,KAAMN,EAAO0gB,EAAQiO,EAAYusC,EAAQ,GAAIA,GAGxD,IAAIn8D,EAAI4vB,EAAa,EACjBjY,EAAM,EACNiB,EAAM,EAEV,IADArX,KAAKogB,EAAS3hB,GAAa,IAARiB,IACVjB,GAAK,IAAM2X,GAAO,MACrB1W,EAAQ,GAAa,IAAR2X,GAAsC,IAAzBrX,KAAKogB,EAAS3hB,EAAI,KAC9C4Y,EAAM,GAERrX,KAAKogB,EAAS3hB,IAAOiB,EAAQ0W,GAAQ,GAAKiB,EAAM,IAGlD,OAAO+I,EAASiO,GAGlBte,EAAO3O,UAAUo/E,UAAY,SAAoB9gF,EAAO0gB,EAAQq9D,GAM9D,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,KAAO,KACnD1gB,EAAQ,IAAGA,EAAQ,IAAOA,EAAQ,GACtCM,KAAKogB,GAAmB,IAAR1gB,EACT0gB,EAAS,GAGlBrQ,EAAO3O,UAAUq/E,aAAe,SAAuB/gF,EAAO0gB,EAAQq9D,GAMpE,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,OAAS,OACzDpgB,KAAKogB,GAAmB,IAAR1gB,EAChBM,KAAKogB,EAAS,GAAM1gB,IAAU,EACvB0gB,EAAS,GAGlBrQ,EAAO3O,UAAUs/E,aAAe,SAAuBhhF,EAAO0gB,EAAQq9D,GAMpE,OALA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,OAAS,OACzDpgB,KAAKogB,GAAW1gB,IAAU,EAC1BM,KAAKogB,EAAS,GAAc,IAAR1gB,EACb0gB,EAAS,GAGlBrQ,EAAO3O,UAAUu/E,aAAe,SAAuBjhF,EAAO0gB,EAAQq9D,GAQpE,OAPA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,YAAa,YAC7DpgB,KAAKogB,GAAmB,IAAR1gB,EAChBM,KAAKogB,EAAS,GAAM1gB,IAAU,EAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,GACvB0gB,EAAS,GAGlBrQ,EAAO3O,UAAUw/E,aAAe,SAAuBlhF,EAAO0gB,EAAQq9D,GASpE,OARA/9E,GAASA,EACT0gB,KAAoB,EACfq9D,GAAUN,EAASn9E,KAAMN,EAAO0gB,EAAQ,EAAG,YAAa,YACzD1gB,EAAQ,IAAGA,EAAQ,WAAaA,EAAQ,GAC5CM,KAAKogB,GAAW1gB,IAAU,GAC1BM,KAAKogB,EAAS,GAAM1gB,IAAU,GAC9BM,KAAKogB,EAAS,GAAM1gB,IAAU,EAC9BM,KAAKogB,EAAS,GAAc,IAAR1gB,EACb0gB,EAAS,GAkBlBrQ,EAAO3O,UAAU2/E,aAAe,SAAuBrhF,EAAO0gB,EAAQq9D,GACpE,OAAOD,EAAWx9E,KAAMN,EAAO0gB,GAAQ,EAAMq9D,IAG/C1tE,EAAO3O,UAAU4/E,aAAe,SAAuBthF,EAAO0gB,EAAQq9D,GACpE,OAAOD,EAAWx9E,KAAMN,EAAO0gB,GAAQ,EAAOq9D,IAahD1tE,EAAO3O,UAAU6/E,cAAgB,SAAwBvhF,EAAO0gB,EAAQq9D,GACtE,OAAOC,EAAY19E,KAAMN,EAAO0gB,GAAQ,EAAMq9D,IAGhD1tE,EAAO3O,UAAU8/E,cAAgB,SAAwBxhF,EAAO0gB,EAAQq9D,GACtE,OAAOC,EAAY19E,KAAMN,EAAO0gB,GAAQ,EAAOq9D,IAIjD1tE,EAAO3O,UAAU+P,KAAO,SAAe7P,EAAQ6/E,EAAa71D,EAAOC,GACjE,IAAKxb,EAAO6J,SAAStY,GAAS,MAAM,IAAId,UAAU,+BAQlD,GAPK8qB,IAAOA,EAAQ,GACfC,GAAe,IAARA,IAAWA,EAAMvrB,KAAKxB,QAC9B2iF,GAAe7/E,EAAO9C,SAAQ2iF,EAAc7/E,EAAO9C,QAClD2iF,IAAaA,EAAc,GAC5B51D,EAAM,GAAKA,EAAMD,IAAOC,EAAMD,GAG9BC,IAAQD,EAAO,OAAO,EAC1B,GAAsB,IAAlBhqB,EAAO9C,QAAgC,IAAhBwB,KAAKxB,OAAc,OAAO,EAGrD,GAAI2iF,EAAc,EAChB,MAAM,IAAInlB,WAAW,6BAEvB,GAAI1wC,EAAQ,GAAKA,GAAStrB,KAAKxB,OAAQ,MAAM,IAAIw9D,WAAW,sBAC5D,GAAIzwC,EAAM,EAAG,MAAM,IAAIywC,WAAW,2BAG9BzwC,EAAMvrB,KAAKxB,SAAQ+sB,EAAMvrB,KAAKxB,QAC9B8C,EAAO9C,OAAS2iF,EAAc51D,EAAMD,IACtCC,EAAMjqB,EAAO9C,OAAS2iF,EAAc71D,GAGtC,IAAI/sB,EAAMgtB,EAAMD,EAahB,OAXItrB,OAASsB,GAAqD,oBAApCse,WAAWxe,UAAUggF,WAEjDphF,KAAKohF,WAAWD,EAAa71D,EAAOC,GAEpC3L,WAAWxe,UAAUiG,IAAIvE,KACvBxB,EACAtB,KAAK49E,SAAStyD,EAAOC,GACrB41D,GAIG5iF,GAOTwR,EAAO3O,UAAUkkC,KAAO,SAAelb,EAAKkB,EAAOC,EAAK8sD,GAEtD,GAAmB,kBAARjuD,EAAkB,CAS3B,GARqB,kBAAVkB,GACT+sD,EAAW/sD,EACXA,EAAQ,EACRC,EAAMvrB,KAAKxB,QACa,kBAAR+sB,IAChB8sD,EAAW9sD,EACXA,EAAMvrB,KAAKxB,aAEI6B,IAAbg4E,GAA8C,kBAAbA,EACnC,MAAM,IAAI73E,UAAU,6BAEtB,GAAwB,kBAAb63E,IAA0BtoE,EAAOuoE,WAAWD,GACrD,MAAM,IAAI73E,UAAU,qBAAuB63E,GAE7C,GAAmB,IAAfjuD,EAAI5rB,OAAc,CACpB,IAAIqkB,EAAOuH,EAAIjE,WAAW,IACR,SAAbkyD,GAAuBx1D,EAAO,KAClB,WAAbw1D,KAEFjuD,EAAMvH,QAGc,kBAARuH,EAChBA,GAAY,IACY,mBAARA,IAChBA,EAAM9a,OAAO8a,IAIf,GAAIkB,EAAQ,GAAKtrB,KAAKxB,OAAS8sB,GAAStrB,KAAKxB,OAAS+sB,EACpD,MAAM,IAAIywC,WAAW,sBAGvB,GAAIzwC,GAAOD,EACT,OAAOtrB,KAQT,IAAIvB,EACJ,GANA6sB,KAAkB,EAClBC,OAAclrB,IAARkrB,EAAoBvrB,KAAKxB,OAAS+sB,IAAQ,EAE3CnB,IAAKA,EAAM,GAGG,kBAARA,EACT,IAAK3rB,EAAI6sB,EAAO7sB,EAAI8sB,IAAO9sB,EACzBuB,KAAKvB,GAAK2rB,MAEP,CACL,IAAIpK,EAAQjQ,EAAO6J,SAASwQ,GACxBA,EACAra,EAAOhL,KAAKqlB,EAAKiuD,GACjB95E,EAAMyhB,EAAMxhB,OAChB,GAAY,IAARD,EACF,MAAM,IAAIiC,UAAU,cAAgB4pB,EAClC,qCAEJ,IAAK3rB,EAAI,EAAGA,EAAI8sB,EAAMD,IAAS7sB,EAC7BuB,KAAKvB,EAAI6sB,GAAStL,EAAMvhB,EAAIF,GAIhC,OAAOyB,MAMT,IAAI2hF,EAAoB,oBAgBxB,SAASvI,EAAaluD,EAAQiwD,GAE5B,IAAI50D,EADJ40D,EAAQA,GAASniB,EAAAA,EAMjB,IAJA,IAAIx6D,EAAS0sB,EAAO1sB,OAChBojF,EAAgB,KAChB5hE,EAAQ,GAEHvhB,EAAI,EAAGA,EAAID,IAAUC,EAAG,CAI/B,IAHA8nB,EAAY2E,EAAO/E,WAAW1nB,IAGd,OAAU8nB,EAAY,MAAQ,CAE5C,IAAKq7D,EAAe,CAElB,GAAIr7D,EAAY,MAAQ,EAEjB40D,GAAS,IAAM,GAAGn7D,EAAM/e,KAAK,IAAM,IAAM,KAC9C,SACK,GAAIxC,EAAI,IAAMD,EAAQ,EAEtB28E,GAAS,IAAM,GAAGn7D,EAAM/e,KAAK,IAAM,IAAM,KAC9C,SAIF2gF,EAAgBr7D,EAEhB,SAIF,GAAIA,EAAY,MAAQ,EACjB40D,GAAS,IAAM,GAAGn7D,EAAM/e,KAAK,IAAM,IAAM,KAC9C2gF,EAAgBr7D,EAChB,SAIFA,EAAkE,OAArDq7D,EAAgB,OAAU,GAAKr7D,EAAY,YAC/Cq7D,IAEJzG,GAAS,IAAM,GAAGn7D,EAAM/e,KAAK,IAAM,IAAM,KAMhD,GAHA2gF,EAAgB,KAGZr7D,EAAY,IAAM,CACpB,IAAK40D,GAAS,GAAK,EAAG,MACtBn7D,EAAM/e,KAAKslB,QACN,GAAIA,EAAY,KAAO,CAC5B,IAAK40D,GAAS,GAAK,EAAG,MACtBn7D,EAAM/e,KACJslB,GAAa,EAAM,IACP,GAAZA,EAAmB,UAEhB,GAAIA,EAAY,MAAS,CAC9B,IAAK40D,GAAS,GAAK,EAAG,MACtBn7D,EAAM/e,KACJslB,GAAa,GAAM,IACnBA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,SAEhB,MAAIA,EAAY,SASrB,MAAM,IAAIrb,MAAM,sBARhB,IAAKiwE,GAAS,GAAK,EAAG,MACtBn7D,EAAM/e,KACJslB,GAAa,GAAO,IACpBA,GAAa,GAAM,GAAO,IAC1BA,GAAa,EAAM,GAAO,IACd,GAAZA,EAAmB,MAOzB,OAAOvG,EA4BT,SAASq5D,EAAevzD,GACtB,OAAO+rC,EAAOyX,YAxHhB,SAAsBxjD,GAMpB,IAFAA,GAFAA,EAAMA,EAAI2B,MAAM,KAAK,IAEX67B,OAAO5kC,QAAQijE,EAAmB,KAEpCnjF,OAAS,EAAG,MAAO,GAE3B,KAAOsnB,EAAItnB,OAAS,IAAM,GACxBsnB,GAAY,IAEd,OAAOA,EA6GmB+7D,CAAY/7D,IAGxC,SAAS+0D,EAAYt6B,EAAKuhC,EAAK1hE,EAAQ5hB,GACrC,IAAK,IAAIC,EAAI,EAAGA,EAAID,KACbC,EAAI2hB,GAAU0hE,EAAItjF,QAAYC,GAAK8hD,EAAI/hD,UADhBC,EAE5BqjF,EAAIrjF,EAAI2hB,GAAUmgC,EAAI9hD,GAExB,OAAOA,EAMT,SAASi6E,EAAYh1E,EAAKwO,GACxB,OAAOxO,aAAewO,GACZ,MAAPxO,GAAkC,MAAnBA,EAAID,aAA+C,MAAxBC,EAAID,YAAYqD,MACzDpD,EAAID,YAAYqD,OAASoL,EAAKpL,KAEpC,SAAS41D,EAAah5D,GAEpB,OAAOA,IAAQA,EAKjB,IAAIs5E,EAAuB,WAGzB,IAFA,IAAI+E,EAAW,mBACXC,EAAQ,IAAIrjF,MAAM,KACbF,EAAI,EAAGA,EAAI,KAAMA,EAExB,IADA,IAAIwjF,EAAU,GAAJxjF,EACD+mB,EAAI,EAAGA,EAAI,KAAMA,EACxBw8D,EAAMC,EAAMz8D,GAAKu8D,EAAStjF,GAAKsjF,EAASv8D,GAG5C,OAAOw8D,EATkB,iFC5wDrBp4C,EAAAA,WACJ,WAAa9iC,EAAM+b,EAAM6oG,EAAgB3pC,GAAU,UACjD/hF,KAAK8G,KAAOA,EACZ9G,KAAK6iB,KAAOA,EACZ7iB,KAAK+hF,SAAWA,EACZ2pC,GAAkB3pC,IACpB/hF,KAAK4+H,OAASlT,EAAe3pC,oCAIjC,SAAQysD,GACN,OAAOxuI,KAAK4+H,OAAOnnH,OAAO+2H,yBAG5B,SAAQA,GACN,OAAOxuI,KAAK4+H,OAAOhoH,OAAO43H,gCAG5B,WACE,OAAOxuI,KAAK4+H,aAnBVh1F,GAuBNxrC,EAAOC,QAAUurC,6DCxBT75B,EAAW1H,EAAQ,OAAnB0H,OAER3R,EAAOC,QAAU,SAAiB0jF,GAChC,MAAO,CACLtqE,OADK,SACGwC,GACN,MAAqB,kBAAVA,EACFlK,EAAOhL,KAAKkV,GAAOzV,SAAS,OAE9ByV,EAAMzV,SAAS,QAExBoS,OAPK,SAOGqD,GAAO,UACMA,GADN,IACb,2BAA0B,KAAfw0H,EAAe,QACxB,GAAI1sD,EAASt9E,QAAQgqI,GAAQ,EAC3B,MAAM,IAAIvjI,MAAM,6BAHP,8BAMb,OAAO6E,EAAOhL,KAAKkV,EAAO,qECQhC,SAASxC,EAAQ04C,EAAQ4xB,GACvB,IAAMvjF,EAAS2xD,EAAO9hC,WAChBqgH,EAAO,IAAI9uH,WAAWuwC,GACtBviC,EAAUm0D,EAASt9E,QAAQ,OAASs9E,EAASvjF,OAAS,EAExDovB,IACFm0D,EAAWA,EAAS5iE,UAAU,EAAG4iE,EAASvjF,OAAS,IAOrD,IAJA,IAAI6W,EAAO,EACP3V,EAAQ,EACRilB,EAAS,GAEJlmB,EAAI,EAAGA,EAAID,EAAQC,IAI1B,IAHAiB,EAASA,GAAS,EAAKgvI,EAAKjwI,GAC5B4W,GAAQ,EAEDA,GAAQ,GACbsP,GAAUo9D,EAAUriF,IAAW2V,EAAO,EAAM,IAC5CA,GAAQ,EAQZ,GAJIA,EAAO,IACTsP,GAAUo9D,EAAUriF,GAAU,EAAI2V,EAAS,KAGzCuY,EACF,KAAQjJ,EAAOnmB,OAAS,IAAO,GAC7BmmB,GAAU,IAId,OAAOA,EAGTvmB,EAAOC,QAAU,SAAiB0jF,GAChC,MAAO,CACLtqE,OADK,SACGwC,GACN,OACSxC,EADY,kBAAVwC,EACK2F,WAAW7a,KAAKkV,GAGlBA,EAH0B8nE,IAK1CnrE,OARK,SAQGqD,GAAO,UACMA,GADN,IACb,2BAA0B,KAAfw0H,EAAe,QACxB,GAAI1sD,EAASt9E,QAAQgqI,GAAQ,EAC3B,MAAM,IAAIvjI,MAAM,6BAHP,8BAOb,OA3EN,SAAiB+O,EAAO8nE,GAUtB,IARA,IAAMvjF,GADNyb,EAAQA,EAAMyE,QAAQ,IAAI/B,OAAO,IAAK,KAAM,KACvBne,OAEjB6W,EAAO,EACP3V,EAAQ,EAERyP,EAAQ,EACNwV,EAAS,IAAI/E,WAAqB,EAATphB,EAAa,EAAK,GAExCC,EAAI,EAAGA,EAAID,EAAQC,IAC1BiB,EAASA,GAAS,EAAKqiF,EAASt9E,QAAQwV,EAAMxb,KAC9C4W,GAAQ,IAEI,IACVsP,EAAOxV,KAAYzP,IAAW2V,EAAO,EAAM,IAC3CA,GAAQ,GAIZ,OAAOsP,EAAOwrC,OAuDHv5C,CAAOqD,EAAO8nE,iEC5EnBhyE,EAAW1H,EAAQ,OAAnB0H,OAER3R,EAAOC,QAAU,SAAiB0jF,GAMhC,IAAMn0D,EAAUm0D,EAASt9E,QAAQ,MAAQ,EACnCs+B,EAAMg/C,EAASt9E,QAAQ,MAAQ,GAAKs9E,EAASt9E,QAAQ,MAAQ,EAEnE,MAAO,CACLgT,OADK,SACGwC,GACN,IAAI0K,EAAS,GAGXA,EADmB,kBAAV1K,EACAlK,EAAOhL,KAAKkV,GAAOzV,SAAS,UAE5ByV,EAAMzV,SAAS,UAGtBu+B,IACFpe,EAASA,EAAOjG,QAAQ,MAAO,KAAKA,QAAQ,MAAO,MAGrD,IAAMszD,EAAMrtD,EAAOlgB,QAAQ,KAK3B,OAJIutE,EAAM,IAAMpkD,IACdjJ,EAASA,EAAOxF,UAAU,EAAG6yD,IAGxBrtD,GAET/N,OArBK,SAqBGqD,GAAO,UACMA,GADN,IACb,2BAA0B,KAAfw0H,EAAe,QACxB,GAAI1sD,EAASt9E,QAAQgqI,GAAQ,EAC3B,MAAM,IAAIvjI,MAAM,6BAHP,8BAOb,OAAO6E,EAAOhL,KAAKkV,EAAO,iDCtChC,IAAM2vB,EAAOvhC,EAAQ,OACfsmI,EAAQtmI,EAAQ,OAChBumI,EAASvmI,EAAQ,OACjBwmI,EAASxmI,EAAQ,OACjBwpD,EAASxpD,EAAQ,OAGjBkhD,EAAY,CAChB,CAAC,QAAS,IAAK,GAAI,KACnB,CAAC,QAAS,IAAKolF,EAAO,MACtB,CAAC,QAAS,IAAKA,EAAO,YACtB,CAAC,SAAU,IAAKA,EAAO,cACvB,CAAC,SAAU,IAAKC,EAAQ,oBACxB,CAAC,SAAU,IAAKC,EAAQ,oCACxB,CAAC,YAAa,IAAKA,EAAQ,qCAC3B,CAAC,YAAa,IAAKA,EAAQ,oCAC3B,CAAC,eAAgB,IAAKA,EAAQ,qCAC9B,CAAC,UAAW,IAAKA,EAAQ,oCACzB,CAAC,eAAgB,IAAKF,EAAO,8DAC7B,CAAC,YAAa,IAAKA,EAAO,8DAC1B,CAAC,SAAU,IAAK98E,EAAQ,oEACxB,CAAC,YAAa,IAAKA,EAAQ,qEAC3B,CAAC,YAAa,IAAKA,EAAQ,oEAC3B,CAAC,eAAgB,IAAKA,EAAQ,sEAG1BpqD,EAAQ8hD,EAAU75C,QAAO,SAACuvB,EAAM6vG,GAEpC,OADA7vG,EAAK6vG,EAAO,IAAM,IAAIllG,EAAKklG,EAAO,GAAIA,EAAO,GAAIA,EAAO,GAAIA,EAAO,IAC5D7vG,IACN,IAEGm0B,EAAQ7J,EAAU75C,QAAO,SAACuvB,EAAM6vG,GAEpC,OADA7vG,EAAK6vG,EAAO,IAAMrnI,EAAMqnI,EAAO,IACxB7vG,IACN,IAEH7gC,EAAOC,QAAU,CACfoJ,MAAOA,EACP2rD,MAAOA,uCClCT,IAAQrjD,EAAW1H,EAAQ,OAAnB0H,OACFw5C,EAAYlhD,EAAQ,OAiB1B,SAAS48E,EAAW8pD,EAAY96H,GAC9B,IAAKA,EACH,MAAM,IAAI/I,MAAM,8BAElB,IAAMlH,EAAOgrI,EAAQD,GACfI,EAAUp/H,EAAOhL,KAAKf,EAAK6e,MAIjC,OA2EF,SAAsB/b,EAAMmN,GACb+6H,EAAQloI,GAChB8P,OAAO3C,EAAIzP,YA9EhB4qI,CADaprI,EAAK8C,KACAmN,GACXlE,EAAOrD,OAAO,CAACyiI,EAASl7H,IAgFjC,SAAS+6H,EAASD,GAChB,IAAI/qI,EAEJ,GAAIulD,EAAU9hD,MAAMsnI,GAClB/qI,EAAOulD,EAAU9hD,MAAMsnI,OAClB,KAAIxlF,EAAU6J,MAAM27E,GAGzB,MAAM,IAAI7jI,MAAM,wBAFhBlH,EAAOulD,EAAU6J,MAAM27E,GAKzB,IAAK/qI,EAAKqrI,gBACR,MAAM,IAAInkI,MAAM,QAAU6jI,EAAa,2BAGzC,OAAO/qI,GAvHT3F,EAAUD,EAAOC,QAAU4mF,GACnBxtE,OAkCR,SAAiBs3H,EAAY96H,GAC3B,IAAMjQ,EAAOgrI,EAAQD,GAGrB,OAAO9pD,EAFMjhF,EAAK8C,KAEKiJ,EAAOhL,KAAKf,EAAKyT,OAAOxD,MArCjD5V,EAAQuY,OAiDR,SAAiBq4H,GACXl/H,EAAO6J,SAASq1H,KAClBA,EAAcA,EAAYzqI,YAG5B,IAAMqe,EAAOosH,EAAY9vH,UAAU,EAAG,GAGX,kBAF3B8vH,EAAcA,EAAY9vH,UAAU,EAAG8vH,EAAYzwI,WAGjDywI,EAAcl/H,EAAOhL,KAAKkqI,IAG5B,IAAMjrI,EAAOgrI,EAAQnsH,GACrB,OAAO9S,EAAOhL,KAAKf,EAAK4S,OAAOq4H,EAAYzqI,cA7D7CnG,EAAQqnF,UAuER,SAAoBupD,GACdl/H,EAAO6J,SAASq1H,KAClBA,EAAcA,EAAYzqI,YAI5B,GAAoD,oBAAhD5C,OAAOR,UAAUoD,SAAS1B,KAAKmsI,GACjC,OAAO,EAGT,IAAMpsH,EAAOosH,EAAY9vH,UAAU,EAAG,GACtC,IAEE,OADa6vH,EAAQnsH,GACT/b,KACZ,MAAO1G,GACP,OAAO,IArFX/B,EAAQoJ,MAAQ7F,OAAO4U,OAAO5U,OAAO4D,KAAK+jD,EAAU9hD,QACpDpJ,EAAQ+0D,MAAQxxD,OAAO4U,OAAO5U,OAAO4D,KAAK+jD,EAAU6J,0CCVpD/0D,EAAQoJ,MAAQ7F,OAAO4U,OAAO,CAC5B,SAAc,EACd,KAAc,GACd,WAAc,GACd,WAAc,GACd,eAAgB,GAChB,WAAc,GACd,WAAc,GACd,WAAc,GACd,WAAc,GACd,YAAc,GACd,YAAc,GACd,aAAc,GACd,aAAc,GACd,aAAc,GACd,aAAc,GACd,cAAe,GACf,aAAe,GACf,IAAe,IACf,IAAe,IACf,YAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,YAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,aAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,aAAc,MACd,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,cAAe,MACf,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,eAAgB,MAChB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,KACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,gBAAiB,MACjB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,MAClB,iBAAkB,QAGpBnY,EAAQ+0D,MAAQxxD,OAAO4U,OAAO,CAC5B,EAAK,WAGL,GAAM,OACN,GAAM,WACN,GAAM,WACN,GAAM,eACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,WACN,GAAM,YACN,GAAM,YACN,GAAM,aACN,GAAM,aACN,GAAM,aACN,GAAM,aAEN,GAAM,cACN,GAAM,aAEN,IAAM,MACN,IAAM,MAGN,MAAQ,YACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,YACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cAGR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,aACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,cACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,eACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,KAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,gBACR,MAAQ,iBACR,MAAQ,iBACR,MAAQ,iBACR,MAAQ,mBAGVnY,EAAQixI,eAAiB1tI,OAAO4U,OAAO,CACrC,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GACN,GAAM,GAEN,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,EACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR,MAAQ,GACR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AAM,GAAM,IAAM,IAAM,EAAM,EAAM,EAAM,GAAM,GAAM,EAAM,EAAM,GAAM,IAAM,GAAM,IAAM,GAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,EAAM,EAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,GAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,GAAM,EAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,IAAM,GAAM,IAAM,IAAM,IAAM,GAAM,IAAM,IAAM,EAAM,GAAM,EAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,IAAM,GAAM,IAAM,GAAM,IAAM,IAAM,GAAM,IAAM,IAAM,GAAM,GAAM,GAAM,EAAM,EAAM,EAAM,IAAM,GAAM,EAAM,GAAM,EAExgC,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,EAAM,IAEhY1G,EAAQu8G,iBAAmB,SAAUtmG,EAAYJ,EAAWgiC,GAC1D,IAAI5yC,EAASyM,EAAOhL,KAAKmxC,EAAaomE,EAAmCC,GAGzE,OAFAjoG,EAAWnD,KAAK7N,EAAQ4yC,EAAa,EAAI,GACzChiC,EAAU/C,KAAK7N,EAAQ4yC,EAAa,IAAM,KACnC5yC,GAGTjF,EAAQw8G,iBAAmB,SAAUvmG,GACnC,IAAI9V,EAAS8V,EAAW9V,OAGpB2Q,EAAQ,EACZ,GAAI3Q,EAAS2Q,EAAQ,GAA2B,KAAtBmF,EAAWnF,GAAiB,OAAO,KAI7D,GAAI3Q,GAHJ2Q,GAAS,GAGY,KAA2B,IAApBmF,EAAWnF,IAAgB,OAAO,KAE9D,IAAIqtG,EAA2B,IAApBloG,EAAWnF,GAEtB,GAAIqtG,EAAO,GAAKA,EAAO,EAAG,OAAO,KACjC,GAAIh+G,GAFJ2Q,GAAS,GAEYqtG,EAAM,OAAO,KAGlC,IAAIj+G,EAAM+V,EAAWnF,EAAQqtG,EAAO,IAAMA,EAAO,EAAIloG,EAAWnF,EAAQqtG,EAAO,IAAM,EAAI,GAEzF,OAAIh+G,GADJ2Q,GAASqtG,GACYj+G,GAGjBC,EAAS2Q,EAAQ,GAA2B,IAAtBmF,EAAWnF,IAA6C,IAA1BmF,EAAWnF,EAAQ,IAAyC,IAA1BmF,EAAWnF,EAAQ,IAMzG3Q,GAHJ2Q,GAAS,GAGY,GAA2B,IAAtBmF,EAAWnF,IAAmBmF,EAAWnF,EAAQ,GAAK,IAAQ3Q,EAAS2Q,EAAQ,EAAImF,EAAWnF,EAAQ,GAT/F,KAa1BmF,EAAWzN,MAAMsI,EAAQ,EAAGA,EAAQ,EAAImF,EAAWnF,EAAQ,KAGpE9Q,EAAQq9G,mBAAqB,SAAU56E,GACrC,IAAI7uB,EAAIlC,EAAOI,MAAM,GAAI,GACrB5N,EAAIwN,EAAOI,MAAM,GAAI,GAErB3R,EAASsiC,EAAUtiC,OACnB2Q,EAAQ,EAGZ,GAA2B,KAAvB2xB,EAAU3xB,KACZ,OAAO,KAIT,IAAIstG,EAAU37E,EAAU3xB,KACxB,GAAc,IAAVstG,IACFttG,GAASstG,EAAU,KACPj+G,EACV,OAAO,KAKX,GAA2B,IAAvBsiC,EAAU3xB,KACZ,OAAO,KAIT,IAAI0vB,EAAOiC,EAAU3xB,KACrB,GAAW,IAAP0vB,EAAa,CAEf,GAAI1vB,GADJstG,EAAU59E,EAAO,KACKrgC,EACpB,OAAO,KAET,KAAOi+G,EAAU,GAA0B,IAArB37E,EAAU3xB,GAAiBA,GAAS,EAAGstG,GAAW,GACxE,IAAK59E,EAAO,EAAG49E,EAAU,EAAGttG,GAAS,EAAGstG,GAAW,EACjD59E,GAAQA,GAAQ,GAAKiC,EAAU3xB,GAGnC,GAAI0vB,EAAOrgC,EAAS2Q,EAClB,OAAO,KAET,IAAIutG,EAASvtG,EAIb,GAHAA,GAAS0vB,EAGkB,IAAvBiC,EAAU3xB,KACZ,OAAO,KAIT,IAAIukC,EAAO5S,EAAU3xB,KACrB,GAAW,IAAPukC,EAAa,CAEf,GAAIvkC,GADJstG,EAAU/oE,EAAO,KACKl1C,EACpB,OAAO,KAET,KAAOi+G,EAAU,GAA0B,IAArB37E,EAAU3xB,GAAiBA,GAAS,EAAGstG,GAAW,GACxE,IAAK/oE,EAAO,EAAG+oE,EAAU,EAAGttG,GAAS,EAAGstG,GAAW,EACjD/oE,GAAQA,GAAQ,GAAK5S,EAAU3xB,GAGnC,GAAIukC,EAAOl1C,EAAS2Q,EAClB,OAAO,KAET,IAAIwtG,EAASxtG,EAIb,IAHAA,GAASukC,EAGF7U,EAAO,GAA2B,IAAtBiC,EAAU47E,GAAkB79E,GAAQ,EAAG69E,GAAU,GAEpE,GAAI79E,EAAO,GACT,OAAO,KAET,IAAI+9E,EAAS97E,EAAUj6B,MAAM61G,EAAQA,EAAS79E,GAI9C,IAHA+9E,EAAOzrG,KAAKc,EAAG,GAAK2qG,EAAOp+G,QAGpBk1C,EAAO,GAA2B,IAAtB5S,EAAU67E,GAAkBjpE,GAAQ,EAAGipE,GAAU,GAEpE,GAAIjpE,EAAO,GACT,OAAO,KAET,IAAImpE,EAAS/7E,EAAUj6B,MAAM81G,EAAQA,EAASjpE,GAG9C,OAFAmpE,EAAO1rG,KAAK5O,EAAG,GAAKs6G,EAAOr+G,QAEpB,CAAEyT,EAAGA,EAAG1P,EAAGA,8DCnJhB2J,EAAK7D,EAAQ,OAGb4pC,EAAK,IAAI6B,EAFJzrC,EAAAA,MAAAA,IAEO,aACZy0G,EAAW7qE,EAAG5K,MAElBhpC,EAAQu8G,iBAAmB,SAAUtmG,EAAY4hC,GAC/C,IAAItH,EAAI,IAAI1iC,EAAGoI,GACf,GAAIs6B,EAAEhT,KAAKkhF,EAASt6G,IAAM,EACxB,MAAM,IAAI0I,MAAM,iCAGlB,IAAIq8B,EAAQ0K,EAAGnX,EAAE1kB,IAAIw4B,GACrB,OAAOmuE,EAAYx1E,EAAM4B,OAAQ5B,EAAM6B,OAAQ8M,IAGjD73C,EAAQ08G,qBAAuB,SAAUzmG,GACvC,IAAIs6E,EAAK,IAAI1iF,EAAGoI,GAChB,GAAIs6E,EAAGhzD,KAAKkhF,EAASt6G,IAAM,GAAKosF,EAAGxrE,SACjC,MAAM,IAAIlY,MAAM,gCAGlB,OAAO0jF,EAAGlzD,KAAKohF,EAASt6G,GAAG2rB,YAAYpe,EAAQ,KAAM,KAGvD1R,EAAQo9G,gBAAkB,SAAUE,GAClC,IAAI1pG,EAAI,IAAI/F,EAAGyvG,EAAO1pG,GAClBA,EAAE2pB,KAAKkhF,EAASt6G,IAAM,IACxByP,EAAI,IAAI/F,EAAG,IAGb,IAAI3J,EAAI,IAAI2J,EAAGyvG,EAAOp5G,GAKtB,OAJIA,EAAEq5B,KAAKkhF,EAASt6G,IAAM,IACxBD,EAAI,IAAI2J,EAAG,IAGN6D,EAAOrD,OAAO,CAACuF,EAAEkc,YAAYpe,EAAQ,KAAM,IAAKxN,EAAE4rB,YAAYpe,EAAQ,KAAM,OAGrF1R,EAAQg+G,WAAa,SAAUnoG,EAAWI,EAAY4hC,GACpD,IAAI3O,EAAQ0K,EAAGiC,cAAchgC,GAEzB8oG,EAAS,IAAI9wG,EAAGoI,GACpB,GAAI0oG,EAAOphF,KAAKkhF,EAASt6G,IAAM,GAAKw6G,EAAO55F,SACzC,MAAM,IAAIlY,MAAM,yCAGlB,IAAI+xG,EAAS11E,EAAM4K,IAAI/7B,IAAI4mG,GAC3B,OAAOD,EAAYE,EAAO9zE,OAAQ8zE,EAAO7zE,OAAQ8M,IAGnD,IAAI6mE,EAAc,SAAqBj1F,EAAG+N,EAAGqgB,GAC3C,IAAIhiC,OAAY,EAahB,OAXIgiC,IACFhiC,EAAYnE,EAAOI,MAAM,KACf,GAAK0lB,EAAEqF,QAAU,EAAO,EAClCpT,EAAEqG,YAAYpe,EAAQ,KAAM,IAAIoB,KAAK+C,EAAW,MAEhDA,EAAYnE,EAAOI,MAAM,KACf,GAAK,EACf2X,EAAEqG,YAAYpe,EAAQ,KAAM,IAAIoB,KAAK+C,EAAW,GAChD2hB,EAAE1H,YAAYpe,EAAQ,KAAM,IAAIoB,KAAK+C,EAAW,KAG3CA,0BCrET,IAAIi8C,EAAS9nD,EAAQ,OACjB0H,EAASogD,EAAOpgD,OAGpB,SAASgrM,EAAWx6J,EAAKuhC,GACvB,IAAK,IAAIviF,KAAOghD,EACduhC,EAAIviF,GAAOghD,EAAIhhD,GAWnB,SAASy7M,EAAYx7M,EAAK44E,EAAkB55E,GAC1C,OAAOuR,EAAOvQ,EAAK44E,EAAkB55E,GATnCuR,EAAOhL,MAAQgL,EAAOI,OAASJ,EAAO44D,aAAe54D,EAAOqsE,gBAC9Dh+E,EAAOC,QAAU8xD,GAGjB4qJ,EAAU5qJ,EAAQ9xD,GAClBA,EAAQ0R,OAASirM,GAQnBD,EAAUhrM,EAAQirM,GAElBA,EAAWj2M,KAAO,SAAUvF,EAAK44E,EAAkB55E,GACjD,GAAmB,kBAARgB,EACT,MAAM,IAAIgB,UAAU,iCAEtB,OAAOuP,EAAOvQ,EAAK44E,EAAkB55E,IAGvCw8M,EAAW7qM,MAAQ,SAAUyT,EAAM0hB,EAAM+yC,GACvC,GAAoB,kBAATz0D,EACT,MAAM,IAAIpjB,UAAU,6BAEtB,IAAIyT,EAAMlE,EAAO6T,GAUjB,YATavjB,IAATilC,EACsB,kBAAb+yC,EACTpkE,EAAIqxB,KAAKA,EAAM+yC,GAEfpkE,EAAIqxB,KAAKA,GAGXrxB,EAAIqxB,KAAK,GAEJrxB,GAGT+mM,EAAWryI,YAAc,SAAU/kD,GACjC,GAAoB,kBAATA,EACT,MAAM,IAAIpjB,UAAU,6BAEtB,OAAOuP,EAAO6T,IAGhBo3L,EAAW5+H,gBAAkB,SAAUx4D,GACrC,GAAoB,kBAATA,EACT,MAAM,IAAIpjB,UAAU,6BAEtB,OAAO2vD,EAAO6nB,WAAWp0D,0GC5DrBy8N,EAAsBh4O,EAAQ,OAC9Bi4O,EAA6Bj4O,EAAQ,OAErCk4O,EAAAA,SAAAA,kCACJ,WAAY53O,GAAM,8BACV,gBAAGggG,EAAH,EAAGA,aAAH,OAAsB23I,EAA2B1+O,OAAOwP,OAAO,CAAEu3F,aAAAA,GAAgBhgG,mBAFrF43O,CAA8BF,GAMpCjiP,EAAOC,QAAUkiP,wGCTXF,EAAsBh4O,EAAQ,OAC9B0kG,EAAyB1kG,EAAQ,OAEjCm4O,EAAAA,SAAAA,kCACJ,aAAc,8BACN,YAAwC,IAArC73I,EAAqC,EAArCA,aAAc/I,EAAuB,EAAvBA,SAAuB,EAAbg/B,OAC/B,OAAO7xB,EAAuB,CAAEpE,aAAAA,EAAc/I,SAAAA,mBAH9C4gJ,CAAiCH,GAQvCjiP,EAAOC,QAAUmiP,yBCXjB,IAAMn2N,EAAWhiB,EAAAA,OAAAA,SACXo4O,EAAcp4O,EAAQ,OAM5B,SAASq4O,EAAgBC,GAEvBA,EAAkBA,GAAmB,GADxB3gP,KAER2gP,gBAAkBA,EAPzBviP,EAAOC,QAAUqiP,EAEjBr2N,EAASq2N,EAAiBD,GAQ1BC,EAAgBt/O,UAAUg/O,cAAgB,SAAS77M,EAASvhC,EAAMuoB,GAChE,IACIq1N,EADS5gP,KACa2gP,gBAAgBp8M,EAAQ0nB,QAE9C,oBAAsB20L,EACxBA,EAAer8M,EAASvhC,EAAMuoB,QAEFlrB,IAAnBugP,EAETloM,YAAW,kBAAMntB,EAAI,KAAMq1N,MAG3B59O,4BCjBJ,IAAM69O,EAAYx4O,EAAQ,OACpBy4O,EAAWz4O,EAAQ,OACnBgiB,EAAWhiB,EAAAA,OAAAA,SACX4sG,EAAU5sG,EAAQ,MAClB04O,EAAU14O,EAAQ,MAClBqqG,EAASrqG,EAAQ,OACjB+5D,EAAY/5D,EAAQ,OACpBo4O,EAAcp4O,EAAQ,OACtB0rG,EAAc1rG,EAAQ,OACtB24O,EAAW,kBAuCjB,SAASC,EAAwBt4O,GAC/B,IAAM5J,EAAOiB,KAEbjB,EAAKmiP,UAAY9+K,EAAU,GAGvBz5D,EAAKw4O,cAAapiP,EAAKoiP,YAAcx4O,EAAKw4O,aAE1Cx4O,EAAKy4O,qBAAoBriP,EAAKqiP,mBAAqBz4O,EAAKy4O,oBACxDz4O,EAAK04O,iBAAgBtiP,EAAKsiP,eAAiB14O,EAAK04O,gBAChD14O,EAAK24O,yBAAwBviP,EAAKuiP,uBAAyB34O,EAAK24O,wBAChE34O,EAAK44O,sBAAqBxiP,EAAKwiP,oBAAsB54O,EAAK44O,qBAE9DxiP,EAAKyiP,mBAAqB74O,EAAK64O,oBAAsBziP,EAAK0iP,YAC1D1iP,EAAK2iP,eAAiB/4O,EAAK+4O,gBAAkB3iP,EAAK0iP,YAClD1iP,EAAK4iP,uBAAyBh5O,EAAKg5O,wBAA0B5iP,EAAK0iP,YAClE1iP,EAAK6iP,sBAAwBj5O,EAAKi5O,uBAAyB7iP,EAAK0iP,YAChE1iP,EAAK8iP,2BAA6Bl5O,EAAKk5O,4BAA8B9iP,EAAK0iP,YAC1E1iP,EAAK+iP,oBAAsBn5O,EAAKm5O,qBAAuB/iP,EAAK0iP,YAExD94O,EAAK+gO,kBAAiB3qO,EAAK2qO,gBAAkB/gO,EAAK+gO,iBAAoBqY,EAAyB,oBAC/Fp5O,EAAKq5O,cAAajjP,EAAKijP,YAAcr5O,EAAKq5O,aAAgBD,EAAyB,gBACnFp5O,EAAKs5O,sBAAqBljP,EAAKkjP,oBAAsBt5O,EAAKs5O,qBAAwBF,EAAyB,wBAC3Gp5O,EAAKu5O,iBAAgBnjP,EAAKmjP,eAAiBv5O,EAAKu5O,gBAAmBH,EAAyB,mBAC5Fp5O,EAAKw5O,sBAAqBpjP,EAAKojP,oBAAsBx5O,EAAKw5O,qBAAwBJ,EAAyB,wBAC3Gp5O,EAAKy5O,mBAAkBrjP,EAAKqjP,iBAAmBz5O,EAAKy5O,kBAAqBL,EAAyB,qBAClGp5O,EAAKguG,2BAA0B53G,EAAK43G,yBAA2BhuG,EAAKguG,0BAEpEhuG,EAAK05O,qBAAoBtjP,EAAKsjP,mBAAqB15O,EAAK05O,oBAE5DtjP,EAAKg1G,YAAcprG,EAAKorG,aAAeh1G,EAAKg1G,YAC5Ch1G,EAAKiqO,YAAcrgO,EAAKqgO,aAAejqO,EAAKiqO,YAwkB9C,SAASxhN,EAAY0D,GACnB,OAAOA,EAAO1D,cAGhB,SAAS86N,EAAkBp3N,GACzB,IAAMq3N,EAAQttI,EAAQwB,aAAavrF,GAEnC,OADgB+pF,EAAQsE,eAAegpI,GAMzC,SAASC,EAAet3N,GACtB,IAAMq3N,EAAQttI,EAAQwB,aAAavrF,GAEnC,OADuB+pF,EAAQsE,eAAegpI,IACpBE,EAAWv3N,GAGvC,SAASu3N,EAAW/xO,GAElB,MADiC,kBAATA,IAEkB,OAApBA,EAAK7J,MAAM,EAAE,IAEf6J,EAAK7J,MAAM,GACHmW,MAAMgkO,IAIpC,SAASe,EAAyBt/I,GAChC,OAAO,SAASrmF,EAAQ0qC,GACtBA,EAAG,IAAI57C,MAAM,4DAA8Du3F,EAAa,iCA1qB5FrkG,EAAOC,QAAU4iP,EAmCjB52N,EAAS42N,EAAyBR,GAoClCQ,EAAwB7/O,UAAUg/O,cAAgB,SAAS77M,EAASvhC,EAAMuoB,GACxE,IAMIm3N,EAAUhtI,EAAWitI,EACrBhrO,EAAS+C,EAPP3b,EAAOiB,KASb,OARAjB,EAAK6jP,gBAAkB,GACvB7jP,EAAK8jP,oBAAsB,EAOpBt+M,EAAQ0nB,QAEb,IAAK,eAOH,YALAltD,EAAKoiP,aAAY,SAAS/gP,EAAKozG,GAC7B,GAAIpzG,EAAK,OAAOmrB,EAAInrB,GACpB,IAAIkD,EAASkwG,EAAS,IAAM,KAC5BjoF,EAAI,KAAMjoB,MAId,IAAK,eAMH,YAJAvE,EAAKoiP,aAAY,SAAS/gP,EAAKozG,GAC7B,GAAIpzG,EAAK,OAAOmrB,EAAInrB,GACpBmrB,EAAI,KAAMioF,MAId,IAAK,sBAMH,OALAkvI,EAAWn+M,EAAQnoB,OAAO,QAC1BykO,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAK+jP,oBAAoBJ,EAAU57L,IAC3C,SAACA,GAAD,OAAQ/nD,EAAKqiP,mBAAmBsB,EAAU57L,KACzCv7B,GAGL,IAAK,sBAMH,OALAm3N,EAAWn+M,EAAQnoB,OAAO,QAC1BykO,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAK+jP,oBAAoBJ,EAAU57L,IAC3C,SAACA,GAAD,OAAQ/nD,EAAKgkP,uBAAuBL,EAAU57L,KAC7Cv7B,GAGL,IAAK,WAeH,OAbA7Q,EAAU6pB,EAAQnoB,OAAO,GACzBzE,EAAU4sB,EAAQnoB,OAAO,GAGzBumO,EAAcp+M,EAAQnoB,OAAO,IAAM,GACnCs5F,EAAYhD,EAAOiwI,EAAa,CAC9B59O,KAAM2V,EACNhK,KAAMiH,SAERkpO,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAKikP,gBAAgBttI,EAAW5uD,IACxC,SAACA,GAAD,OAAQ/nD,EAAKsiP,eAAe3rI,EAAW5uD,KACtCv7B,GAGL,IAAK,gBACH,OAAQ,WAEN,IAAMylC,EAAQzsB,EAAQnoB,OAAO,GAU7B,GAAIomO,EATWj+M,EAAQnoB,OAAO,KASDkmO,EAAiBtxL,GAAQ,CAEzC,gEACA,yCACA,oEACX1uB,QAAQxY,KADR6X,4NAGAjnB,EAAU6pB,EAAQnoB,OAAO,GACzBzE,EAAU4sB,EAAQnoB,OAAO,QAEzBzE,EAAU4sB,EAAQnoB,OAAO,GACzB1B,EAAU6pB,EAAQnoB,OAAO,GAK3BumO,EAAcp+M,EAAQnoB,OAAO,IAAM,GACnCs5F,EAAYhD,EAAOiwI,EAAa,CAC9B59O,KAAM2V,EACNhK,KAAMiH,IAERkpO,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAKkkP,wBAAwBvtI,EAAW5uD,IAChD,SAACA,GAAD,OAAQ/nD,EAAKuiP,uBAAuB5rI,EAAW5uD,KAC9Cv7B,GApCG,GAuCV,IAAK,qBACH,OAAQ,WAEN,IAAMylC,EAAQzsB,EAAQnoB,OAAO,GAU7B,GAAIomO,EATWj+M,EAAQnoB,OAAO,KASDkmO,EAAiBtxL,GAAQ,CAEzC,gEACA,yCACA,oEACX1uB,QAAQxY,KADR6X,8NAGAjnB,EAAU6pB,EAAQnoB,OAAO,GACzBzE,EAAU4sB,EAAQnoB,OAAO,QAEzBzE,EAAU4sB,EAAQnoB,OAAO,GACzB1B,EAAU6pB,EAAQnoB,OAAO,GAK3BumO,EAAcp+M,EAAQnoB,OAAO,IAAM,GACnCs5F,EAAYhD,EAAOiwI,EAAa,CAC9B59O,KAAM2V,EACNhK,KAAMiH,IAERkpO,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAKmkP,uBAAuBxtI,EAAW5uD,IAC/C,SAACA,GAAD,OAAQ/nD,EAAKokP,sBAAsBztI,EAAW5uD,KAC7Cv7B,GApCG,GAuCV,IAAK,wBACH,OAAQ,WACN,IAAM7Q,EAAU6pB,EAAQnoB,OAAO,GAE/BykO,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAKqkP,4BAA4B1oO,EAASosC,IAClD,SAACA,GAAD,OAAQ/nD,EAAKskP,2BAA2B3oO,EAASosC,KAChDv7B,GANG,GASV,IAAK,qBACH,OAAQ,WACN5T,EAAU4sB,EAAQnoB,OAAO,GACzB,IAAI0kB,EAAYyD,EAAQnoB,OAAO,GAG/BumO,EAAcp+M,EAAQnoB,OAAO,IAAM,GACnCs5F,EAAYhD,EAAOiwI,EAAa,CAC9B9rM,IAAK/V,EACLpwB,KAAMiH,IAER5Y,EAAK43G,yBAAyBjB,EAAWnqF,GAVnC,GAaV,IAAK,oBACL,IAAK,uBACL,IAAK,uBACH,OAAQ,WAGN,IAAMylC,EAAQzsB,EAAQnoB,OAAO,GACvB60C,EAAS1sB,EAAQnoB,OAAO,GAE1BkmO,EAAiBtxL,IACnBt2C,EAAUs2C,EACVr5C,EAAUs5C,IAEVt5C,EAAUq5C,EACVt2C,EAAUu2C,GAGZ0xL,EAAcp+M,EAAQnoB,OAAO,IAAM,GACnCs5F,EAAYhD,EAAOiwI,EAAa,CAC9B59O,KAAM2V,EACNhK,KAAMiH,IAERkpO,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAKukP,qBAAqB5tI,EAAW5uD,IAC7C,SAACA,GAAD,OAAQ/nD,EAAKwiP,oBAAoB7rI,EAAW5uD,KAC3Cv7B,GAtBG,GAyBV,IAAK,yBAGH,OAFAm3N,EAAWn+M,EAAQnoB,OAAO,QAC1Brd,EAAKwkP,sBAAsBb,EAAUn3N,GAGvC,IAAK,kBAIH,OAHA7Q,EAAU6pB,EAAQnoB,OAAO,GACzBzE,EAAU4sB,EAAQnoB,OAAO,QACzBrd,EAAKykP,eAAe9oO,EAAS/C,EAAS4T,GAGxC,IAAK,sBACH,OAAQ,WACN,IAAMk4N,EAAYl/M,EAAQnoB,OAAO,GACjCrd,EAAK2kP,mBAAmBD,EAAWl4N,GAF7B,GAKV,IAAK,wBAMH,YALAxsB,EAAKoiP,aAAY,SAAS/gP,EAAKozG,GAC7B,GAAIpzG,EAAK,OAAOmrB,EAAInrB,GACpB,IAAMsxN,EAAUl+G,EAAS,IAAM,KAC/BjoF,EAAI,KAAMmmM,MAId,QAEE,YADA1uN,MAUNi+O,EAAwB7/O,UAAU+/O,YAAc,SAASr6L,GACvDA,EAAG,KAAM,KAQXm6L,EAAwB7/O,UAAUggP,mBAAqB,SAASsB,EAAU57L,GACxE,IAAM/nD,EAAOiB,KACb6gP,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAKyiP,mBAAmBkB,EAAU57L,IAC1C,SAAC68L,EAAY78L,GAAb,OAAoB/nD,EAAK6kP,cAAc,cAAeD,EAAY78L,IAClE,SAACA,GAAD,OAAQ/nD,EAAK8kP,oBAAoBnB,EAAU57L,KAC1CA,IAILm6L,EAAwB7/O,UAAU2hP,uBAAyB,SAASL,EAAU57L,GAC5E,IAAM/nD,EAAOiB,KACb6gP,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAKyiP,mBAAmBkB,EAAU57L,IAC1C,SAAC68L,EAAY78L,GAAb,OAAoB/nD,EAAK6kP,cAAc,cAAeD,EAAY78L,IAClE,SAACA,GAAD,OAAQ/nD,EAAK+kP,WAAWpB,EAAU57L,KACjCA,IAGLm6L,EAAwB7/O,UAAUigP,eAAiB,SAAS3rI,EAAW5uD,GACrE,IAAM/nD,EAAOiB,KACb6gP,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAK2iP,eAAehsI,EAAW5uD,IACvC,SAAC68L,EAAY78L,GAAb,OAAoB/nD,EAAK6kP,cAAc,UAAWD,EAAY78L,IAC9D,SAACA,GAAD,OAAQ/nD,EAAKijP,YAAYtsI,EAAW5uD,KACnCA,IAGLm6L,EAAwB7/O,UAAUkgP,uBAAyB,SAAS5rI,EAAW5uD,GAC7E,IAAM/nD,EAAOiB,KACb6gP,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAK4iP,uBAAuBjsI,EAAW5uD,IAC/C,SAAC68L,EAAY78L,GAAb,OAAoB/nD,EAAK6kP,cAAc,UAAWD,EAAY78L,IAC9D,SAACA,GAAD,OAAQ/nD,EAAKkjP,oBAAoBvsI,EAAW5uD,KAC3CA,IAGLm6L,EAAwB7/O,UAAU+hP,sBAAwB,SAASztI,EAAW5uD,GAC5E,IAAM/nD,EAAOiB,KACb6gP,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAK6iP,sBAAsBlsI,EAAW5uD,IAC9C,SAAC68L,EAAY78L,GAAb,OAAoB/nD,EAAK6kP,cAAc,iBAAkBD,EAAY78L,IACrE,SAACA,GAAD,OAAQ/nD,EAAKmjP,eAAexsI,EAAW5uD,KACtCA,IAGLm6L,EAAwB7/O,UAAUiiP,2BAA6B,SAAS3tI,EAAW5uD,GACjF,IAAM/nD,EAAOiB,KACb6gP,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAK8iP,2BAA2BnsI,EAAW5uD,IACnD,SAAC68L,EAAY78L,GAAb,OAAoB/nD,EAAK6kP,cAAc,sBAAuBD,EAAY78L,IAC1E,SAACA,GAAD,OAAQ/nD,EAAKojP,oBAAoBzsI,EAAW5uD,KAC3CA,IAGLm6L,EAAwB7/O,UAAUmgP,oBAAsB,SAAS7rI,EAAW5uD,GAC1E,IAAM/nD,EAAOiB,KACb6gP,EAAU,CACR,SAAC/5L,GAAD,OAAQ/nD,EAAK+iP,oBAAoBpsI,EAAW5uD,IAC5C,SAAC68L,EAAY78L,GAAb,OAAoB/nD,EAAK6kP,cAAc,UAAWD,EAAY78L,IAC9D,SAACA,GAAD,OAAQ/nD,EAAKqjP,iBAAiB1sI,EAAW5uD,KACxCA,IAOLm6L,EAAwB7/O,UAAUqgP,YAAc,SAASiB,EAAU57L,GACjEA,EAAG,MAAM,IAGXm6L,EAAwB7/O,UAAUwiP,cAAgB,SAAS1xO,EAAMyxO,EAAY78L,GAC3EA,EAAI68L,EAAa,KAAO,IAAIz4O,MAAM,eAAegH,EAAK,iBAOxD+uO,EAAwB7/O,UAAUmiP,sBAAwB,SAASb,EAAU57L,GAC3E,IAAM/nD,EAAOiB,KAGPijB,EAAQlkB,EAAK8jP,oBACbkB,EAAQ,KAAH,OAAQ9gO,EAAMze,SAAS,KAClCzF,EAAK8jP,sBAEL9jP,EAAKilP,YAAY,CACf/3L,OAAQ,sBACR7vC,OAAQ,CAACsmO,KACR,SAAS/iP,EAAO4lB,GACjB,GAAI5lB,EACFZ,EAAK6jP,gBAAgBmB,GAAS,CAAEpkP,MAAAA,OADlC,CAIA,IAAMskP,EAAS1+N,EAAIjiB,OACnBvE,EAAK6jP,gBAAgBmB,GAASE,MAGhCn9L,EAAG,KAAMi9L,IAIX9C,EAAwB7/O,UAAUoiP,eAAiB,SAAS9oO,EAAS/C,EAASmvC,GAC5E,IAAM/nD,EAAOiB,KAGPijB,EAAQlkB,EAAK8jP,oBACbkB,EAAQ,KAAH,OAAQ9gO,EAAMze,SAAS,KAClCzF,EAAK8jP,sBAEL9jP,EAAKilP,YAAY,CACf/3L,OAAQ,WACR7vC,OAAQ,CAAC1B,EAAS/C,KACjB,SAAShY,EAAO4lB,GACjB,GAAI5lB,EACFZ,EAAK6jP,gBAAgBmB,GAAS,CAAEpkP,MAAAA,OADlC,CAIA,IAAM2D,EAASiiB,EAAIjiB,OACnBvE,EAAK6jP,gBAAgBmB,GAASzgP,MAGhCwjD,EAAG,KAAMi9L,IAGX9C,EAAwB7/O,UAAUsiP,mBAAqB,SAASK,EAAOj9L,GACrE,IACMxjD,EADOtD,KACO4iP,gBAAgBmB,IAAU,KAE9C,OAAKzgP,EAEDA,EAAO3D,MAAcmnD,EAAGxjD,EAAO3D,YAEnCmnD,EAAG,KAAMxjD,GAJWwjD,EAAG,KAAM,OAW/Bm6L,EAAwB7/O,UAAUu1G,yBAA2B,SAASjB,EAAW5uD,GAC/E,IAAIo9L,EACJ,IACEA,EAAYnD,EAAQpqI,yBAAyBjB,GAC7C,MAAOt1G,GACP,OAAO0mD,EAAG1mD,GAEZ0mD,EAAG,KAAMo9L,IAOXjD,EAAwB7/O,UAAU0hP,oBAAsB,SAASJ,EAAU57L,GAGzE,QAAsBzmD,IAAlBqiP,EAAS39O,KAAoB,OAAO+hD,EAAG,IAAI57C,MAAJ,mEAF9BlL,KAGRmkP,eAAezB,EAAS39O,MAAM,SAAS3E,EAAKgkP,GAC/C,OAAIhkP,EAAY0mD,EAAG1mD,GACdgkP,OACLt9L,IAD2BA,EAAG,IAAI57C,MAAJ,0EAA6Ew3O,EAAS39O,KAAtF,WAKlCk8O,EAAwB7/O,UAAU4hP,gBAAkB,SAASttI,EAAW5uD,GAEtE,QAAuBzmD,IAAnBq1G,EAAU3wG,KAAoB,OAAO+hD,EAAG,IAAI57C,MAAJ,+DAD/BlL,KAERmkP,eAAezuI,EAAU3wG,MAAM,SAAS3E,EAAKgkP,GAChD,OAAIhkP,EAAY0mD,EAAG1mD,GACdgkP,OACLt9L,IAD2BA,EAAG,IAAI57C,MAAJ,sEAAyEwqG,EAAU3wG,KAAnF,WAKlCk8O,EAAwB7/O,UAAU6hP,wBAA0B,SAASvtI,EAAW5uD,GAE9E,YAAuBzmD,IAAnBq1G,EAAU3wG,KAA2B+hD,EAAG,IAAI57C,MAAJ,6EACrB7K,IAAnBq1G,EAAUhlG,KAA2Bo2C,EAAG,IAAI57C,MAAJ,mEACvCu3O,EAAW/sI,EAAUhlG,WAHb1Q,KAIRmkP,eAAezuI,EAAU3wG,MAAM,SAAS3E,EAAKgkP,GAChD,OAAIhkP,EAAY0mD,EAAG1mD,GACdgkP,OACLt9L,IAD2BA,EAAG,IAAI57C,MAAJ,sEAAyEwqG,EAAU3wG,KAAnF,UAHQ+hD,EAAG,IAAI57C,MAAJ,iFAQ7C+1O,EAAwB7/O,UAAU8hP,uBAAyB,SAASxtI,EAAW5uD,GAE7E,YAAuBzmD,IAAnBq1G,EAAU3wG,KAA2B+hD,EAAG,IAAI57C,MAAJ,uEACrB7K,IAAnBq1G,EAAUhlG,KAA2Bo2C,EAAG,IAAI57C,MAAJ,6DACvCu3O,EAAW/sI,EAAUhlG,WAHb1Q,KAIRmkP,eAAezuI,EAAU3wG,MAAM,SAAS3E,EAAKgkP,GAChD,OAAIhkP,EAAY0mD,EAAG1mD,GACdgkP,OACLt9L,IAD2BA,EAAG,IAAI57C,MAAJ,yEAA4EwqG,EAAU3wG,KAAtF,UAHQ+hD,EAAG,IAAI57C,MAAJ,wFAQ7C+1O,EAAwB7/O,UAAUgiP,4BAA8B,SAAS1oO,EAASosC,GACnE9mD,KAERmkP,eAAezpO,GAAS,SAASta,EAAKgkP,GACzC,OAAIhkP,EAAY0mD,EAAG1mD,GACdgkP,OACLt9L,IAD2BA,EAAG,IAAI57C,MAAJ,sFAAyFwP,EAAzF,WAKlCumO,EAAwB7/O,UAAUkiP,qBAAuB,SAAS5tI,EAAW5uD,GAC3E,YAAuBzmD,IAAnBq1G,EAAU3wG,KAA2B+hD,EAAG,IAAI57C,MAAJ,uEACrB7K,IAAnBq1G,EAAUhlG,KAA2Bo2C,EAAG,IAAI57C,MAAJ,+DAC5ClL,KAAKmkP,eAAezuI,EAAU3wG,MAAM,SAAS3E,EAAKgkP,GAChD,OAAIhkP,EAAY0mD,EAAG1mD,GACdgkP,OACLt9L,IAD2BA,EAAG,IAAI57C,MAAJ,sEAAyEwqG,EAAU3wG,KAAnF,WAKlCk8O,EAAwB7/O,UAAU+iP,eAAiB,SAASE,EAAev9L,GAGzE,IAAKu9L,EAAe,OAAOv9L,EAAG,MAAM,GAFvB9mD,KAGRmhP,aAAY,SAAS/gP,EAAKozG,GAC7B,GAAIpzG,EAAK,OAAO0mD,EAAG1mD,GACnB,IAAMgkP,GAAqF,IAApE5wI,EAAShoG,IAAIgc,GAAa/iB,QAAQ4/O,EAAc78N,eACvEs/B,EAAG,KAAMs9L,OAQbnD,EAAwB7/O,UAAUyiP,oBAAsB,SAASnB,EAAU57L,GACzE,IAAM/nD,EAAOiB,KAGbjB,EAAKmiP,UAAUjgC,MAAK,WAClB4/B,EAAU,CACR9hP,EAAKulP,eAAenjP,KAAKpC,EAAM2jP,GAC/B3jP,EAAK2qO,gBAAgBvoO,KAAKpC,GAC1BA,EAAKsjP,mBAAmBlhP,KAAKpC,KAC5B,SAASqB,EAAK6jP,GAEf,GADAllP,EAAKmiP,UAAU//B,QACX/gN,EAAK,OAAO0mD,EAAG1mD,GACnB0mD,EAAG,KAAMm9L,UAKfhD,EAAwB7/O,UAAU0iP,WAAa,SAASpB,EAAU57L,GAChE,IAAM/nD,EAAOiB,KAGbjB,EAAKmiP,UAAUjgC,MAAK,WAClB4/B,EAAU,CACR9hP,EAAKulP,eAAenjP,KAAKpC,EAAM2jP,GAC/B3jP,EAAK2qO,gBAAgBvoO,KAAKpC,KACzB,SAASqB,EAAKgxO,GAEf,GADAryO,EAAKmiP,UAAU//B,QACX/gN,EAAK,OAAO0mD,EAAG1mD,GACnB0mD,EAAG,KAAM,CAACtvC,IAAK45N,EAAUr8N,GAAI2tO,WAKnCzB,EAAwB7/O,UAAUihP,mBAAqB,SAASrQ,EAAOlrL,GACxD9mD,KACRgkP,YAAY,CACf/3L,OAAQ,yBACR7vC,OAAQ,CAAC41N,KACR,SAAS5xO,EAAKmlB,GACf,GAAInlB,EAAK,OAAO0mD,EAAG1mD,GACnB0mD,EAAG,KAAMvhC,EAAIjiB,YAIjB29O,EAAwB7/O,UAAU2yG,YAAc,SAAS2uI,EAAU57L,GAEjEitD,EADa/zG,KACI4+H,OAAQ8jH,EAAU57L,IAGrCm6L,EAAwB7/O,UAAU4nO,YAAc,SAASliL,GAC1C9mD,KACRgkP,YAAY,CAAE/3L,OAAQ,eAAgB7vC,OAAQ,KAAM,SAAUhc,EAAKmlB,GACtE,GAAInlB,EAAK,OAAO0mD,EAAG1mD,GACnB0mD,EAAG,KAAMvhC,EAAIjiB,YAIjB29O,EAAwB7/O,UAAUkjP,eAAiB,SAAS5B,EAAU57L,GACpE,IAAM/nD,EAAOiB,KACP0a,EAAUgoO,EAAS39O,KAGnBmhE,EAAQ,QAEY7lE,IAAtBqiP,EAASvrO,WAEX+uD,EAAM/uD,SAAWpY,EAAKiqO,YAAY7nO,KAAKpC,SAGlBsB,IAAnBqiP,EAAS5wO,QAEXo0D,EAAMp0D,MAAQ/S,EAAKilP,YAAY7iP,KAAKpC,EAAM,CAAEktD,OAAQ,0BAA2B7vC,OAAQ,CAAC1B,EAAS,mBAG9Era,IAAjBqiP,EAASxgB,MAEXh8J,EAAMg8J,IAAMnjO,EAAKg1G,YAAY5yG,KAAKpC,EAkBtC,SAAuB2jP,GACrB,MAAO,CACL39O,KAAM29O,EAAS39O,KACfiN,GAAI0wO,EAAS1wO,GACbtS,MAAOgjP,EAAShjP,MAChBgR,KAAMgyO,EAAShyO,KACfwxN,IAAKwgB,EAASxgB,IACd/qN,SAAUurO,EAASvrO,SACnBrF,MAAO4wO,EAAS5wO,OA1BwByyO,CAAc7B,KAGxD5B,EAAS56K,GAAO,SAAS9lE,EAAKokP,GAC5B,GAAIpkP,EAAK,OAAO0mD,EAAG1mD,GAEnB,IAAMkD,EAAS,GACXkhP,EAAYrtO,WAAU7T,EAAO6T,SAAWqtO,EAAYrtO,UACpDqtO,EAAY1yO,QAAOxO,EAAOwO,MAAQ0yO,EAAY1yO,MAAMxO,QACpDkhP,EAAYtiB,MAAK5+N,EAAO4+N,IAAMsiB,EAAYtiB,KAE9Cp7K,EAAG,KAAM4rD,EAAOgwI,EAAUp/O,8GCxoBxBmhP,EAAAA,SAAAA,kCAGJ,WAAaC,GAAe,MAE1B,GAF0B,UAC1B,gBACKA,EAAe,MAAM,IAAIx5O,MAAM,mEAFV,OAG1B,EAAKy5O,eAAiBD,EAHI,qCAO5B,SAAW9lH,GACT,GAAI5+H,KAAKgpG,WAAY,MAAM,IAAI99F,MAAM,0EACrC,IAAMy9F,EAAei2B,EAAOmgH,cACtB/1I,EAAahpG,KAAK2kP,eAAe,CAAE/lH,OAAAA,EAAQh/B,SAAUg/B,EAAQj2B,aAAAA,IACnE,IAAKK,EAAY,MAAM,IAAI99F,MAAM,iFACjC,GAA0B,oBAAf89F,EAA2B,MAAM,IAAI99F,MAAM,+EACtDlL,KAAKgpG,WAAaA,+BAGpB,SAAepI,EAAKgkJ,EAAaC,GAC/B,IAAMt/N,EAAM,CAAEm7B,GAAIkgD,EAAIlgD,IACtB1gD,KAAKgpG,WAAWpI,EAAKr7E,GAErB,SAAyBizB,GACvBosM,GAAY,SAACxkP,EAAKkD,EAAQwjD,GAEpB1mD,UACKmlB,EAAIjiB,OACXiiB,EAAI5lB,MAAQ,CAAEgY,QAASvX,EAAIuX,SAAWvX,IAEtCmlB,EAAIjiB,OAASA,EAGXk1C,EACFA,EAAQsO,GAERA,UAKN,SAAwB1mD,GACtB,GAAIA,EAAK,OAAOykP,EAAWzkP,GAC3BykP,EAAW,KAAMt/N,EAAIjiB,iBA3CrBmhP,CAJcp8O,EAAQ,QAqD5BjK,EAAOC,QAAUomP,+CCrDXp6N,EAAWhiB,EAAAA,OAAAA,SACXyQ,EAAczQ,EAAQ,OACtB4sG,EAAU5sG,EAAQ,MAClBo4O,EAAcp4O,EAAQ,OACtBmnG,EAAqBnnG,EAAAA,OAAAA,mBAa3B,SAASy8O,EAAwBn8O,GAClB3I,KAER+kP,WAAa,GAdpB3mP,EAAOC,QAAUymP,EASjBz6N,EAASy6N,EAAyBrE,GAQlCqE,EAAwB1jP,UAAUg/O,cAAgB,SAAS77M,EAASvhC,EAAMuoB,GACxE,IAAMxsB,EAAOiB,KAEb,OAAOukC,EAAQ0nB,QAEb,IAAK,0BACH,IAAIsjD,EAAWC,EAAmBjrE,GAC9B7pB,EAAU6pB,EAAQnoB,OAAO,GAAGoL,cAC5Bw9N,EAAejmP,EAAKgmP,WAAWrqO,GAmBnC,YAjBiB,YAAb60F,EAEEy1I,EACFz5N,EAAI,KAAMy5N,GAGVhiP,GAAK,SAAS5C,EAAKkD,EAAQwjD,GACzB,GAAI1mD,EAAK,OAAO0mD,SACiBzmD,IAA7BtB,EAAKgmP,WAAWrqO,KAClB3b,EAAKgmP,WAAWrqO,GAAWpX,GAE7BwjD,OAIJ9jD,KAIJ,IAAK,yBAwBH,YAtBAA,GAAK,SAAS5C,EAAKkD,EAAQwjD,GAEzB,GAAI1mD,EAAK,OAAO0mD,IAEhB,IAAIkrL,EAAQztM,EAAQnoB,OAAO,GAGvBrH,GAFWkgG,EAAQuB,eAAew7H,GACxBjiO,EAAOhL,KAAKkwG,EAAQuB,eAAew7H,GAAQ,OAChD,IAAIl5N,EAAY/I,EAAOhL,KAAKkwG,EAAQuB,eAAew7H,GAAQ,SAEhEt3N,EAAU,KAAK3F,EAAGmtG,mBAAmB19G,SAAS,OAAOgjB,cAErD1V,EAAQmjG,EAAQkB,YAAYphG,EAAGjD,OAG/BmzO,KAFJnzO,GAEqBtN,SAAS,IAC1BygP,EAASzmP,OAAO,IAAGymP,EAAW,IAAIA,GACtCA,EAAW,KAAKA,EAGhBlmP,EAAKgmP,WAAWrqO,GAAWuqO,EAC3Bn+L,OAKL,IAAK,aAGF,OAFA/nD,EAAKgmP,WAAa,QAClB/hP,IAGF,QAEE,YADAA,6BCrFN,IAAM07O,EAAgBr2O,EAAQ,OAO9B,SAAS68O,KALT9mP,EAAOC,QAAU6mP,EASjBA,EAAY9jP,UAAUu+O,UAAY,SAAS/gH,GACzC,IAAM7/H,EAAOiB,KACTjB,EAAK6/H,SACT7/H,EAAK6/H,OAASA,EACdA,EAAOlgC,GAAG,SAAS,SAASnyF,GAC1BxN,EAAKqgG,aAAe7yF,KAGtBqyH,EAAOlgC,GAAG,SAAS,WACjB3/F,EAAKusB,WAGPszG,EAAOlgC,GAAG,QAAQ,WAChB3/F,EAAKovI,YAIT+2G,EAAY9jP,UAAUg/O,cAAgB,SAAS77M,EAASvhC,EAAMuoB,GAC5D,MAAM,IAAIrgB,MAAM,kDAGlBg6O,EAAY9jP,UAAU4iP,YAAc,SAASz/M,EAASuiB,GACvC9mD,KACR4+H,OAAO79B,UAAU29I,EAAcn6M,GAAUuiB,IAKhDo+L,EAAY9jP,UAAU+sI,KAAO,aAE7B+2G,EAAY9jP,UAAUkqB,MAAQ,mHCzCxB+0N,EAAsBh4O,EAAQ,OAC9B88O,EAA4B98O,EAAQ,OAEpCm4O,EAAAA,SAAAA,kCACJ,aAAc,8BACN,YAAwC,IAArC73I,EAAqC,EAArCA,aAAc/I,EAAuB,EAAvBA,SAAUg/B,EAAa,EAAbA,OAC/B,EAA+BumH,EAA0B,CAAEx8I,aAAAA,EAAc/I,SAAAA,IAAjE9mD,EAAR,EAAQA,OAAQkwD,EAAhB,EAAgBA,WAIhB,OAFAlwD,EAAO4lD,GAAG,gBAAgB,SAAChuF,GAAD,OAAUkuH,EAAO9yH,KAAK,OAAQ,KAAM4E,MAEvDs4F,iBAPPw3I,CAAiCH,GAYvCjiP,EAAOC,QAAUmiP,yBCfjB,IAAM4E,EAAc/8O,EAAQ,OACtBqqG,EAASrqG,EAAQ,OAEvBjK,EAAOC,QAGP,SAAuBqS,GACrB,OAAOgiG,EAAO,CAEZhyD,GAAI0kM,IACJvkJ,QAAS,MACTzkF,OAAQ,IAEP1L,2BCbL,IAAMguO,EAAgBr2O,EAAQ,OAE9BjK,EAAOC,QASP,SAAqBuhG,EAAU8iJ,EAAU57L,GACvC84C,EAASmB,UAAU29I,EAAc,CAC/BzyL,OAAQ,kBACR7vC,OAAQ,CAACsmO,MACP,SAAStiP,EAAKmlB,GAChB,GAAInlB,EAEF,MAAoB,sCAAhBA,EAAIuX,QACCmvC,EAAG,KAAM,UAETA,EAAG1mD,GAGd0mD,EAAG,KAAMvhC,EAAIjiB,+BCxBjBlF,EAAOC,QAGP,WAEE,OAAOuV,KAAKoU,MAAM1Y,OAAO81G,iBAAmBxxG,KAAKg0F,kCCLnD,IAAM/pF,EAAYxV,EAAQ,OAkB1B,SAAS8nG,EAAS5rE,GAChB,MAAwC,UAAjC6qE,EAAoB7qE,GAc7B,SAASgsE,EAAsBhsE,GAC7B,IAAIp1B,EAAQqhG,EAAmBjsE,GAG/B,OAAIp1B,GAASo1B,EAAQnoB,OAAO5d,OACnB+lC,EAAQnoB,OAIM,yBAAnBmoB,EAAQ0nB,OACH1nB,EAAQnoB,OAAOvV,MAAM,GAGvB09B,EAAQnoB,OAAOvV,MAAM,EAAEsI,GAGhC,SAASqhG,EAAmBjsE,GAC1B,OAAOA,EAAQ0nB,QAEb,IAAK,mBACH,OAAO,EAET,IAAK,iBACL,IAAK,cACL,IAAK,0BACL,IAAK,WACL,IAAK,kBACH,OAAO,EAET,IAAK,uBACH,OAAO,EAET,QACE,QAIN,SAASmjD,EAAoB7qE,GAC3B,OAAQA,EAAQ0nB,QAEd,IAAK,qBACL,IAAK,YACL,IAAK,sBACL,IAAK,qCACL,IAAK,+BACL,IAAK,cACL,IAAK,qBACL,IAAK,2BACL,IAAK,wCACL,IAAK,4BACL,IAAK,kCACL,IAAK,mBACL,IAAK,iBACL,IAAK,sBACL,IAAK,qBACL,IAAK,cACH,MAAO,QAGT,IAAK,uBACL,IAAK,uCACL,IAAK,iCACL,IAAK,0CACL,IAAK,oCACH,MAAO,OAGT,IAAK,eACL,IAAK,iBACL,IAAK,mBACL,IAAK,0BACL,IAAK,WACL,IAAK,kBACL,IAAK,oBACL,IAAK,cACL,IAAK,kBACH,MAAO,QAGT,IAAK,cACL,IAAK,gBACL,IAAK,gBACL,IAAK,cACL,IAAK,WACL,IAAK,eACL,IAAK,aACL,IAAK,eACL,IAAK,eACL,IAAK,sBACL,IAAK,yBACL,IAAK,gBACL,IAAK,qBACL,IAAK,kCACL,IAAK,sBACL,IAAK,uBACL,IAAK,cACL,IAAK,iBACL,IAAK,qBACL,IAAK,eACL,IAAK,eACL,IAAK,YACL,IAAK,YACL,IAAK,WACL,IAAK,kBACL,IAAK,kBACL,IAAK,eACL,IAAK,iBACL,IAAK,gBACL,IAAK,sBACL,IAAK,uBACL,IAAK,kBACH,MAAO,SA9Ib7tD,EAAOC,QAAU,CACf4xG,0BAQF,SAAmC1rE,GAAmB,IAAV57B,EAAU,uDAAH,GACjD,IAAKwnG,EAAS5rE,GAAU,OAAO,KAC/B,IAAQ8gN,EAAoB18O,EAApB08O,gBACFjpO,EAASipO,EAAkB9gN,EAAQnoB,OAASm0F,EAAsBhsE,GACxE,OAAOA,EAAQ0nB,OAAS,IAAMpuC,EAAUzB,IAXxC+zF,SAAUA,EACVX,mBAiBF,SAA4BjrE,GAC1B,IAAIp1B,EAAQqhG,EAAmBjsE,GAG/B,GAAIp1B,GAASo1B,EAAQnoB,OAAO5d,OAC1B,OAAO,KAGT,OAAO+lC,EAAQnoB,OAAOjN,IAxBtBohG,sBAAuBA,EACvBC,mBAAoBA,EACpBpB,oBAAqBA,0BCRvB,IAAMiY,EAAeh/G,EAAAA,OAAAA,aACfgiB,EAAWhiB,EAAAA,OAAAA,SAOjB,SAASo2O,IAEPp3H,EAAavkH,KADA9C,MAAAA,KAERkiE,UAAW,EARlB9jE,EAAOC,QAAUogP,EAGjBp0N,EAASo0N,EAAWp3H,GAQpBo3H,EAAUr9O,UAAUi+O,GAAK,WACVr/O,KACRkiE,UAAW,EADHliE,KAER8L,KAAK,WAGZ2yO,EAAUr9O,UAAU+sI,KAAO,WACZnuI,KACRkiE,UAAW,EADHliE,KAER8L,KAAK,SAGZ2yO,EAAUr9O,UAAUy+O,MAAQ,SAAS9/O,GACtBC,KACJkiE,SADIliE,KAENs+F,KAAK,SAAUv+F,GAEpB24C,WAAW34C,2BCRf,IAAI+S,EAASzK,EAAAA,OAAAA,OACTi9O,EAAOj9O,EAAAA,OAAAA,eACPiuH,EAAOjuH,EAAQ,OACfkuH,EAAQluH,EAAQ,OAIhBwiO,EAAe,SAAsB9hL,EAAM9oB,GAC3CA,EAAUA,GAAW,GACrBjgC,KAAK+3I,gBAAkB93G,EAAQ83G,kBAAmB,EAClD/3I,KAAKojE,QAAUnjC,EAAQmjC,SAAW,EAClCpjE,KAAK83I,QAAU73G,EAAQ63G,QACvB93I,KAAKulP,MAAQtlN,EAAQslN,MACrBvlP,KAAK+qO,WAAY,EAEjB,IAAMya,GAAkC,IAAtBvlN,EAAQulN,UAC1BxlP,KAAK+oD,KAAOA,GAAQ,wBACf/oD,KAAKulP,QAC4B,UAA9BvlP,KAAK+oD,KAAK5pC,UAAU,EAAG,GACvBnf,KAAKylP,WAAa,IAAIlvH,EAAMwvF,MAAM,CAAEy/B,UAAAA,IAGpCxlP,KAAK0lP,UAAY,IAAIpvH,EAAKyvF,MAAM,CAAEy/B,UAAAA,MAI9C3a,EAAazpO,UAAUukP,gBAAkB,WACrC,IAAIlvH,EAEJ,GAA8B,qBAAnB4uB,eACP5uB,EAAU,IAAI4uB,mBAEb,CACD5uB,EAAU,IAAI6uH,EACd,IAAIM,EAAS,CAAEH,WAAYzlP,KAAKylP,WAAYC,UAAW1lP,KAAK0lP,UAAW5rG,QAAS95I,KAAK85I,SACjF95I,KAAKulP,QACLK,EAAOH,WAAazlP,KAAKulP,MAAMhvH,MAC/BqvH,EAAOF,UAAY1lP,KAAKulP,MAAMjvH,KAC9BsvH,EAAO9rG,QAAU95I,KAAKulP,MAAMzrG,SAEhCrjB,EAAQovH,UAAUD,GAWtB,OATAnvH,EAAQtvE,KAAK,OAAQnnD,KAAK+oD,MAAM,GAChC0tE,EAAQ4vB,iBAAiB,eAAgB,oBACzC5vB,EAAQrzD,QAAUpjE,KAAKojE,QACvBqzD,EAAQshB,gBAAkB/3I,KAAK+3I,gBAC3B/3I,KAAK83I,SACL93I,KAAK83I,QAAQhyI,SAAQ,SAAUmsD,GAC3BwkE,EAAQ4vB,iBAAiBp0F,EAAOnrD,KAAMmrD,EAAOvyD,UAG9C+2H,GASXo0G,EAAazpO,UAAUmlJ,KAAO,SAAUhiH,EAAS09B,GAC7C,IAAIp5D,EAAQ7I,KACRy2H,EAAUz2H,KAAK2lP,kBACnBlvH,EAAQwvB,mBAAqB,WACzB,GAA2B,IAAvBxvB,EAAQ0vB,YAAwC,IAApB1vB,EAAQrzD,QAAe,CACnD,IAAI9/D,EAASmzH,EAAQovB,aACjBlmJ,EAAQ,KACZ,IACI2D,EAASqa,KAAKC,MAAMta,GAExB,MAAOb,GACH9C,EAAQmT,EAAOotN,gBAAgBzpG,EAAQovB,cAE3Ch9I,EAAMkiO,WAAY,EAClB9oK,EAAStiE,EAAO2D,KAGxBmzH,EAAQuyF,UAAY,WAChBngN,EAAMkiO,WAAY,EAClB9oK,EAASnvD,EAAOqtN,kBAAkBngO,KAAKojE,WAE3C,IACIqzD,EAAQ8vB,KAAK5oI,KAAKE,UAAU0mB,IAEhC,MAAO5kC,GACHK,KAAK+qO,WAAY,EACjB9oK,EAASnvD,EAAOitN,kBAAkB//N,KAAK+oD,SAG/C8hL,EAAazpO,UAAU0kP,WAAa,aASpCjb,EAAazpO,UAAU2kP,sBAAwB,WAC3C,OAAO,GAEX3nP,EAAOC,QAAUwsO,sCCtGjB,IAAI/3N,EAASzK,EAAAA,OAAAA,OACTmvI,EAAOnvI,EAAQ,OACfyiO,EAAc,SAAqB9hL,EAAM0hL,GACzC,IAAI7hO,EAAQ7I,KACZA,KAAKgmP,kBAAoB,GACzBhmP,KAAKimP,sBAAwB,GAC7BjmP,KAAKgpD,KAAOA,EACZhpD,KAAK+qO,WAAY,EACjB/qO,KAAKuqO,WAAaG,EAAI/nL,QAAQ,CAAEqG,KAAMhpD,KAAKgpD,OAC3ChpD,KAAKkmP,mBAEL,IAAIjkL,EAAW,SAAU3+D,GAErB,IAAIo9C,EAAK,KAEL/hD,MAAME,QAAQyE,GACdA,EAAOwC,SAAQ,SAAUguO,GACjBjrO,EAAMm9O,kBAAkBlS,EAAKpzL,MAC7BA,EAAKozL,EAAKpzL,OAIlBA,EAAKp9C,EAAOo9C,GAGXA,IAAkD,IAA5Cp9C,EAAO2oD,OAAOxnD,QAAQ,iBAOxBoE,EAAMm9O,kBAAkBtlM,KAC7B73C,EAAMm9O,kBAAkBtlM,GAAI,KAAMp9C,UAC3BuF,EAAMm9O,kBAAkBtlM,IAR/B73C,EAAMo9O,sBAAsBngP,SAAQ,SAAUm8D,GAClB,oBAAbA,GACPA,EAAS3+D,OAUI,WAAzBonO,EAAIjnO,YAAYqD,KAChB0wI,EAAKx3I,KAAKuqO,YACL3qO,KAAKqiE,GAGVjiE,KAAKuqO,WAAW7rI,GAAG,QAAQ,SAAUhuF,GACjC7H,EAAMs9O,eAAez1O,EAAKlM,YAAYsB,QAAQm8D,OAS1D6oK,EAAY1pO,UAAU8kP,iBAAmB,WACrC,IAAIr9O,EAAQ7I,KACZA,KAAKuqO,WAAW7rI,GAAG,WAAW,WAC1B71F,EAAMkiO,WAAY,KAEtB/qO,KAAKuqO,WAAW7rI,GAAG,SAAS,WACxB71F,EAAMkiO,WAAY,KAEtB/qO,KAAKuqO,WAAW7rI,GAAG,SAAS,WACxB71F,EAAMu9O,cAEVpmP,KAAKuqO,WAAW7rI,GAAG,OAAO,WACtB71F,EAAMu9O,cAEVpmP,KAAKuqO,WAAW7rI,GAAG,WAAW,WAC1B71F,EAAMu9O,eAWdtb,EAAY1pO,UAAU+kP,eAAiB,SAAUz1O,GAC7C,IAAI7H,EAAQ7I,KAAM43O,EAAe,GAgCjC,OA9BoBlnO,EACfgO,QAAQ,eAAgB,UACxBA,QAAQ,mBAAoB,YAC5BA,QAAQ,iBAAkB,WAC1BA,QAAQ,iBAAkB,WAC1B+I,MAAM,QACG3hB,SAAQ,SAAU4K,GAExB7H,EAAMw9O,YACN31O,EAAO7H,EAAMw9O,UAAY31O,GAC7B,IAAIpN,EAAS,KACb,IACIA,EAASqa,KAAKC,MAAMlN,GAExB,MAAOjO,GAQH,OAPAoG,EAAMw9O,UAAY31O,EAElBgyC,aAAa75C,EAAMy9O,uBACnBz9O,EAAMy9O,iBAAmB5tM,YAAW,WAEhC,MADA7vC,EAAMu9O,WACAtzO,EAAOotN,gBAAgBxvN,KAC9B,OAIPgyC,aAAa75C,EAAMy9O,kBACnBz9O,EAAMw9O,UAAY,KACd/iP,GACAs0O,EAAa32O,KAAKqC,MAEnBs0O,GAQX9M,EAAY1pO,UAAUmlP,qBAAuB,SAAUhiN,EAAS09B,GAC5D,IAAIvhB,EAAKnc,EAAQmc,IAAMnc,EAAQ,GAAGmc,GAC9BuL,EAAS1nB,EAAQ0nB,QAAU1nB,EAAQ,GAAG0nB,OAC1CjsD,KAAKgmP,kBAAkBtlM,GAAMuhB,EAC7BjiE,KAAKgmP,kBAAkBtlM,GAAIuL,OAASA,GAOxC6+K,EAAY1pO,UAAUglP,SAAW,WAC7B,IAAK,IAAI7mP,KAAOS,KAAKgmP,kBACbhmP,KAAKgmP,kBAAkBx/O,eAAejH,KACtCS,KAAKgmP,kBAAkBzmP,GAAKuT,EAAOitN,kBAAkB,kBAC9C//N,KAAKgmP,kBAAkBzmP,KAS1CurO,EAAY1pO,UAAUolP,UAAY,WAC9BxmP,KAAKuqO,WAAW5nL,QAAQ,CAAEqG,KAAMhpD,KAAKgpD,QAEzC8hL,EAAY1pO,UAAUmlJ,KAAO,SAAUhiH,EAAS09B,GAEvCjiE,KAAKuqO,WAAW5oO,UACjB3B,KAAKuqO,WAAW5nL,QAAQ,CAAEqG,KAAMhpD,KAAKgpD,OACzChpD,KAAKuqO,WAAWz/K,MAAMntC,KAAKE,UAAU0mB,IACrCvkC,KAAKumP,qBAAqBhiN,EAAS09B,IASvC6oK,EAAY1pO,UAAUs9F,GAAK,SAAUxsF,EAAM+vD,GACvC,GAAwB,oBAAbA,EACP,MAAM,IAAI/2D,MAAM,qDACpB,GACS,SADDgH,EAEAlS,KAAKimP,sBAAsBhlP,KAAKghE,QAIhCjiE,KAAKuqO,WAAW7rI,GAAGxsF,EAAM+vD,IAWrC6oK,EAAY1pO,UAAUk9F,KAAO,SAAUpsF,EAAM+vD,GACzC,GAAwB,oBAAbA,EACP,MAAM,IAAI/2D,MAAM,qDACpBlL,KAAKuqO,WAAWjsI,KAAKpsF,EAAM+vD,IAS/B6oK,EAAY1pO,UAAUq9F,eAAiB,SAAUvsF,EAAM+vD,GACnD,IAAIp5D,EAAQ7I,KACZ,GACS,SADDkS,EAEAlS,KAAKimP,sBAAsBngP,SAAQ,SAAUghD,EAAI33C,GACzC23C,IAAOmb,GACPp5D,EAAMo9O,sBAAsBhxO,OAAO9F,EAAO,WAIlDnP,KAAKuqO,WAAW9rI,eAAevsF,EAAM+vD,IAUjD6oK,EAAY1pO,UAAUiQ,mBAAqB,SAAUa,GACjD,GACS,SADDA,EAEAlS,KAAKimP,sBAAwB,QAG7BjmP,KAAKuqO,WAAWl5N,mBAAmBa,IAS/C44N,EAAY1pO,UAAUuhG,MAAQ,WAC1B3iG,KAAKomP,WACLpmP,KAAKimP,sBAAwB,GAC7BjmP,KAAKuqO,WAAWl5N,mBAAmB,SACnCrR,KAAKuqO,WAAWl5N,mBAAmB,OACnCrR,KAAKuqO,WAAWl5N,mBAAmB,WACnCrR,KAAKkmP,oBAQTpb,EAAY1pO,UAAU2kP,sBAAwB,WAC1C,OAAO,GAEX3nP,EAAOC,QAAUysO,yDC3QbpvL,EAA0F,qBAAjF95C,OAAOR,UAAUoD,SAAS1B,KAAwB,qBAAZ02C,EAA0BA,EAAU,GACnFitM,EAA4B,qBAAdpsM,WAAmD,gBAAtBA,UAAUC,QACrDosM,EAAQ,KACRn/J,EAAU,KACd,GAAI7rC,GAAU+qM,EAAM,CAChBC,EAAQ,SAAU5gO,GACd,OAAO/V,EAAOhL,KAAK+gB,GAAKthB,SAAS,WAErC,IAAIu+B,EAAM16B,EAAQ,OAClB,GAAI06B,EAAI4jN,IAAK,CAET,IAAIC,EAAS7jN,EAAI4jN,IACjBp/J,EAAU,SAAUxkD,GAChB,OAAO,IAAI6jN,EAAO7jN,SAKtBwkD,EAAUl/E,EAAAA,OAAAA,WAIdq+O,EAAQG,KAAK1lP,KAA2B,kBAAf67F,WAA0BA,WAAaj+F,MAChEwoF,EAAU,SAAUxkD,GAChB,OAAO,IAAI4jN,IAAI5jN,IAGvB3kC,EAAOC,QAAU,CACbyoP,SAAUv/J,EACVs/J,KAAMH,uCCPV,IAAIr/H,EAAeh/G,EAAQ,OACvBk/E,EAAUl/E,EAAQ,OAClByK,EAASzK,EAAAA,OAAAA,OACT0+O,EAAK1+O,EAAAA,OAAAA,aAOLuiO,EAAoB,SAA2B7nM,EAAK9C,GACpDonF,EAAavkH,KAAK9C,MAClBigC,EAAUA,GAAW,GACrBjgC,KAAK+iC,IAAMA,EACX/iC,KAAKgnP,eAAiB/mN,EAAQmjC,SAAW,KACzCpjE,KAAK83I,QAAU73G,EAAQ63G,SAAW,GAClC93I,KAAK8oD,SAAW7oB,EAAQ6oB,eAAYzoD,EACpCL,KAAKinP,iBAAmBrlP,OAAOwP,OAAO,CAClC81O,MAAM,EACN5qC,MAAO,IACP6qC,aAAa,EACbC,WAAW,GACZnnN,EAAQumN,WACXxmP,KAAKqnP,aAAepnN,EAAQonN,mBAAgBhnP,EAC5CL,KAAKsnP,eAAiBrnN,EAAQqnN,qBAAkBjnP,EAChDL,KAAKunP,KAAO,OACZvnP,KAAKwnP,MAAQ,QACbxnP,KAAKynP,MAAQ,QACbznP,KAAK0nP,QAAU,UACf1nP,KAAK2nP,UAAY,YACjB3nP,KAAKuqO,WAAa,KAClBvqO,KAAK4nP,aAAe,IAAIzgP,IACxBnH,KAAK6nP,cAAgB,IAAI1gP,IACzBnH,KAAK8nP,kBAAoB,EACzB9nP,KAAK+nP,cAAe,EAIpB,IAAIC,EAAYzgK,EAAQu/J,SAAS/jN,GAC7BilN,EAAUC,UAAYD,EAAUp3K,WAChC5wE,KAAK83I,QAAQowG,cAAgB,SAAW3gK,EAAQs/J,KAAKmB,EAAUC,SAAW,IAAMD,EAAUp3K,WAI1Fo3K,EAAUzgC,OACVvnN,KAAK83I,QAAQowG,cAAgB,SAAW3gK,EAAQs/J,KAAKmB,EAAUzgC,OAGnE3lN,OAAOC,eAAe7B,KAAM,YAAa,CACrC6D,IAAK,WACD,OAAO7D,KAAKuqO,YAAcvqO,KAAKuqO,WAAWpkF,aAAenmJ,KAAKuqO,WAAW4d,MAE7E1mP,YAAY,IAEhBzB,KAAK2iD,YAGTioL,EAAkBxpO,UAAYQ,OAAO2C,OAAO8iH,EAAajmH,YAC7BqC,YAAcmnO,EAQ1CA,EAAkBxpO,UAAUuhD,QAAU,WAClC3iD,KAAKuqO,WAAa,IAAIwc,EAAG/mP,KAAK+iC,IAAK/iC,KAAK8oD,cAAUzoD,EAAWL,KAAK83I,QAAS93I,KAAKsnP,eAAgBtnP,KAAKqnP,cACrGrnP,KAAKooP,uBASTxd,EAAkBxpO,UAAUinP,WAAa,SAAU5lP,GAC/C,IAAIoG,EAAQ7I,KACZA,KAAKmmP,eAAkC,kBAAX1jP,EAAEiO,KAAqBjO,EAAEiO,KAAO,IAAI5K,SAAQ,SAAUxC,GAC9E,GAAIA,EAAO2oD,SAAsD,IAA5C3oD,EAAO2oD,OAAOxnD,QAAQ,iBACvCoE,EAAMiD,KAAKjD,EAAM0+O,KAAMjkP,OAD3B,CAIA,IAAIo9C,EAAKp9C,EAAOo9C,GAEZ/hD,MAAME,QAAQyE,KACdo9C,EAAKp9C,EAAO,GAAGo9C,IAEf73C,EAAMg/O,cAAczgP,IAAIs5C,UACqBrgD,IAAzCwI,EAAMg/O,cAAchkP,IAAI68C,GAAIuhB,UAC5Bp5D,EAAMg/O,cAAchkP,IAAI68C,GAAIuhB,UAAS,EAAO3+D,GAEhDuF,EAAMg/O,cAAchoL,OAAOnf,SAWvCkqL,EAAkBxpO,UAAUknP,WAAa,WAIrC,GAHAtoP,KAAK8L,KAAK9L,KAAK0nP,SACf1nP,KAAK8nP,kBAAoB,EACzB9nP,KAAK+nP,cAAe,EAChB/nP,KAAK4nP,aAAahkO,KAAO,EAAG,CAC5B,IAAI/a,EAAQ7I,KACZA,KAAK4nP,aAAa9hP,SAAQ,SAAU2wH,EAASl3H,GACzCsJ,EAAM09I,KAAK9vB,EAAQlyF,QAASkyF,EAAQx0D,UACpCp5D,EAAM++O,aAAa/nL,OAAOtgE,QAWtCqrO,EAAkBxpO,UAAUmnP,SAAW,SAAUvhI,GAC7C,IAAIn+G,EAAQ7I,MACRA,KAAKinP,iBAAiBC,MAAU,CAAC,IAAM,MAAMz5O,SAASu5G,EAAMnkG,QAA4B,IAAnBmkG,EAAM6kH,UAI/E7rO,KAAK8L,KAAK9L,KAAKwnP,MAAOxgI,GAClBhnH,KAAK4nP,aAAahkO,KAAO,GACzB5jB,KAAK4nP,aAAa9hP,SAAQ,SAAU2wH,EAASl3H,GACzCk3H,EAAQx0D,SAASnvD,EAAOutN,uBAAuBr5G,IAC/Cn+G,EAAM++O,aAAa/nL,OAAOtgE,MAG9BS,KAAK6nP,cAAcjkO,KAAO,GAC1B5jB,KAAK6nP,cAAc/hP,SAAQ,SAAU2wH,EAASl3H,GAC1Ck3H,EAAQx0D,SAASnvD,EAAOitN,kBAAkB,QAAS/4G,IACnDn+G,EAAMg/O,cAAchoL,OAAOtgE,MAGnCS,KAAKwoP,yBACLxoP,KAAKqR,sBAjBDrR,KAAKwmP,aA0Bb5b,EAAkBxpO,UAAUgnP,oBAAsB,WAC9CpoP,KAAKuqO,WAAW9+I,iBAAiB,UAAWzrF,KAAKqoP,WAAWlnP,KAAKnB,OACjEA,KAAKuqO,WAAW9+I,iBAAiB,OAAQzrF,KAAKsoP,WAAWnnP,KAAKnB,OAC9DA,KAAKuqO,WAAW9+I,iBAAiB,QAASzrF,KAAKuoP,SAASpnP,KAAKnB,QASjE4qO,EAAkBxpO,UAAUonP,uBAAyB,WACjDxoP,KAAKuqO,WAAWphH,oBAAoB,UAAWnpH,KAAKqoP,YACpDroP,KAAKuqO,WAAWphH,oBAAoB,OAAQnpH,KAAKsoP,YACjDtoP,KAAKuqO,WAAWphH,oBAAoB,QAASnpH,KAAKuoP,WAWtD3d,EAAkBxpO,UAAU+kP,eAAiB,SAAUz1O,GACnD,IAAI7H,EAAQ7I,KAAM43O,EAAe,GAyCjC,OAvCoBlnO,EACfgO,QAAQ,eAAgB,UACxBA,QAAQ,mBAAoB,YAC5BA,QAAQ,iBAAkB,WAC1BA,QAAQ,iBAAkB,WAC1B+I,MAAM,QACG3hB,SAAQ,SAAU4K,GAExB7H,EAAMw9O,YACN31O,EAAO7H,EAAMw9O,UAAY31O,GAC7B,IAAIpN,EAAS,KACb,IACIA,EAASqa,KAAKC,MAAMlN,GAExB,MAAOjO,GAiBH,OAhBAoG,EAAMw9O,UAAY31O,EAElBgyC,aAAa75C,EAAMy9O,uBACnBz9O,EAAMy9O,iBAAmB5tM,YAAW,WAC5B7vC,EAAMo+O,iBAAiBC,MAAQr+O,EAAMo+O,iBAAiBG,UACtDv+O,EAAM29O,aAGV39O,EAAMiD,KAAKjD,EAAM4+O,MAAO30O,EAAOqtN,kBAAkBt3N,EAAMm+O,iBACnDn+O,EAAM++O,aAAahkO,KAAO,GAC1B/a,EAAM++O,aAAa9hP,SAAQ,SAAU2wH,EAASl3H,GAC1Ck3H,EAAQx0D,SAASnvD,EAAOqtN,kBAAkBt3N,EAAMm+O,iBAChDn+O,EAAM++O,aAAa/nL,OAAOtgE,SAGnCsJ,EAAMm+O,iBAIbtkM,aAAa75C,EAAMy9O,kBACnBz9O,EAAMw9O,UAAY,KACd/iP,GACAs0O,EAAa32O,KAAKqC,MAEnBs0O,GAYXhN,EAAkBxpO,UAAUmlJ,KAAO,SAAUhiH,EAAS09B,GAClD,IACIvhB,EAAKnc,EAAQmc,GACb+1E,EAAU,CAAElyF,QAASA,EAAS09B,SAAUA,GAI5C,GAHItjE,MAAME,QAAQ0lC,KACdmc,EAAKnc,EAAQ,GAAGmc,IAEhB1gD,KAAKuqO,WAAWpkF,aAAenmJ,KAAKuqO,WAAWke,YAAczoP,KAAK+nP,aAClE/nP,KAAK4nP,aAAavgP,IAAIq5C,EAAI+1E,OAD9B,CAIA,GAAIz2H,KAAKuqO,WAAWpkF,aAAenmJ,KAAKuqO,WAAW4d,KAI/C,OAHAnoP,KAAK4nP,aAAa/nL,OAAOnf,GACzB1gD,KAAK8L,KAAK9L,KAAKynP,MAAO30O,EAAOutN,+BAC7B5pG,EAAQx0D,SAASnvD,EAAOutN,0BAG5BrgO,KAAK6nP,cAAcxgP,IAAIq5C,EAAI+1E,GAC3Bz2H,KAAK4nP,aAAa/nL,OAAOnf,GACzB,IACI1gD,KAAKuqO,WAAWhkF,KAAK5oI,KAAKE,UAAU44G,EAAQlyF,UAEhD,MAAO5kC,GACH82H,EAAQx0D,SAAStiE,GAtBTK,KAuBF6nP,cAAchoL,OAAOnf,MAUnCkqL,EAAkBxpO,UAAUuhG,MAAQ,WAChC3iG,KAAK6nP,cAAc17C,QACnBnsM,KAAK4nP,aAAaz7C,QAClBnsM,KAAKqR,qBACLrR,KAAKwoP,yBACLxoP,KAAKooP,uBAYTxd,EAAkBxpO,UAAU0kP,WAAa,SAAUjjO,EAAM6B,GACrD1kB,KAAKwoP,yBACLxoP,KAAKuqO,WAAWpgB,MAAMtnM,GAAQ,IAAM6B,IASxCkmN,EAAkBxpO,UAAU2kP,sBAAwB,WAChD,OAAO,GASXnb,EAAkBxpO,UAAUolP,UAAY,WACpC,IAAI39O,EAAQ7I,KACZA,KAAK+nP,cAAe,EAChB/nP,KAAK6nP,cAAcjkO,KAAO,GAC1B5jB,KAAK6nP,cAAc/hP,SAAQ,SAAU2wH,EAASl3H,GAC1Ck3H,EAAQx0D,SAASnvD,EAAO0tN,sCACxB33N,EAAMg/O,cAAchoL,OAAOtgE,OAG9BS,KAAKinP,iBAAiBE,aACvBnnP,KAAK8nP,kBAAoB9nP,KAAKinP,iBAAiBE,YAC/CzuM,YAAW,WACP7vC,EAAMi/O,oBACNj/O,EAAM2/O,yBACN3/O,EAAMiD,KAAKjD,EAAM8+O,UAAW9+O,EAAMi/O,mBAClCj/O,EAAM85C,YACP3iD,KAAKinP,iBAAiB3qC,QAG7Bt8M,KAAK8L,KAAK9L,KAAKynP,MAAO30O,EAAOytN,yCAC7BvgO,KAAK+nP,cAAe,EAChB/nP,KAAK4nP,aAAahkO,KAAO,GACzB5jB,KAAK4nP,aAAa9hP,SAAQ,SAAU2wH,EAASl3H,GACzCk3H,EAAQx0D,SAASnvD,EAAOytN,yCACxB13N,EAAM++O,aAAa/nL,OAAOtgE,QAItCnB,EAAOC,QAAUusO,kCChWjB,IAAIxjO,EAAMxF,OAAOR,UAAUoF,eACvB68E,EAAS,IASb,SAASujC,KA4BT,SAASC,EAAG9mH,EAAI04C,EAAS6lD,GACvBt+F,KAAKD,GAAKA,EACVC,KAAKy4C,QAAUA,EACfz4C,KAAKs+F,KAAOA,IAAQ,EActB,SAASwoB,EAAYC,EAASC,EAAOjnH,EAAI04C,EAAS6lD,GAChD,GAAkB,oBAAPv+F,EACT,MAAM,IAAIS,UAAU,mCAGtB,IAAIymH,EAAW,IAAIJ,EAAG9mH,EAAI04C,GAAWsuE,EAASzoB,GAC1C4oB,EAAM7jC,EAASA,EAAS2jC,EAAQA,EAMpC,OAJKD,EAAQhuE,QAAQmuE,GACXH,EAAQhuE,QAAQmuE,GAAKnnH,GAC1BgnH,EAAQhuE,QAAQmuE,GAAO,CAACH,EAAQhuE,QAAQmuE,GAAMD,GADhBF,EAAQhuE,QAAQmuE,GAAKjmH,KAAKgmH,IADlCF,EAAQhuE,QAAQmuE,GAAOD,EAAUF,EAAQI,gBAI7DJ,EAUT,SAASK,EAAWL,EAASG,GACI,MAAzBH,EAAQI,aAAoBJ,EAAQhuE,QAAU,IAAI6tE,SAC5CG,EAAQhuE,QAAQmuE,GAU9B,SAASG,IACPrnH,KAAK+4C,QAAU,IAAI6tE,EACnB5mH,KAAKmnH,aAAe,EAxElBvlH,OAAO2C,SACTqiH,EAAOxlH,UAAYQ,OAAO2C,OAAO,OAM5B,IAAIqiH,GAASxiH,YAAWi/E,GAAS,IA2ExCgkC,EAAajmH,UAAUkmH,WAAa,WAClC,IACIxuE,EACAhyC,EAFAW,EAAQ,GAIZ,GAA0B,IAAtBzH,KAAKmnH,aAAoB,OAAO1/G,EAEpC,IAAKX,KAASgyC,EAAS94C,KAAK+4C,QACtB3xC,EAAItE,KAAKg2C,EAAQhyC,IAAOW,EAAMxG,KAAKoiF,EAASv8E,EAAKD,MAAM,GAAKC,GAGlE,OAAIlF,OAAO6D,sBACFgC,EAAMiF,OAAO9K,OAAO6D,sBAAsBqzC,IAG5CrxC,GAUT4/G,EAAajmH,UAAU63C,UAAY,SAAmB+tE,GACpD,IAAIE,EAAM7jC,EAASA,EAAS2jC,EAAQA,EAChC/V,EAAWjxG,KAAK+4C,QAAQmuE,GAE5B,IAAKjW,EAAU,MAAO,GACtB,GAAIA,EAASlxG,GAAI,MAAO,CAACkxG,EAASlxG,IAElC,IAAK,IAAItB,EAAI,EAAG03B,EAAI86E,EAASzyG,OAAQixC,EAAK,IAAI9wC,MAAMw3B,GAAI13B,EAAI03B,EAAG13B,IAC7DgxC,EAAGhxC,GAAKwyG,EAASxyG,GAAGsB,GAGtB,OAAO0vC,GAUT43E,EAAajmH,UAAU89F,cAAgB,SAAuB8nB,GAC5D,IAAIE,EAAM7jC,EAASA,EAAS2jC,EAAQA,EAChC/tE,EAAYj5C,KAAK+4C,QAAQmuE,GAE7B,OAAKjuE,EACDA,EAAUl5C,GAAW,EAClBk5C,EAAUz6C,OAFM,GAYzB6oH,EAAajmH,UAAU0K,KAAO,SAAck7G,EAAOn2F,EAAIG,EAAIG,EAAIG,EAAIG,GACjE,IAAIy1F,EAAM7jC,EAASA,EAAS2jC,EAAQA,EAEpC,IAAKhnH,KAAK+4C,QAAQmuE,GAAM,OAAO,EAE/B,IAEIjnH,EACAxB,EAHAw6C,EAAYj5C,KAAK+4C,QAAQmuE,GACzB3oH,EAAM2B,UAAU1B,OAIpB,GAAIy6C,EAAUl5C,GAAI,CAGhB,OAFIk5C,EAAUqlD,MAAMt+F,KAAKy+F,eAAeuoB,EAAO/tE,EAAUl5C,QAAIM,GAAW,GAEhE9B,GACN,KAAK,EAAG,OAAO06C,EAAUl5C,GAAG+C,KAAKm2C,EAAUR,UAAU,EACrD,KAAK,EAAG,OAAOQ,EAAUl5C,GAAG+C,KAAKm2C,EAAUR,QAAS5nB,IAAK,EACzD,KAAK,EAAG,OAAOooB,EAAUl5C,GAAG+C,KAAKm2C,EAAUR,QAAS5nB,EAAIG,IAAK,EAC7D,KAAK,EAAG,OAAOioB,EAAUl5C,GAAG+C,KAAKm2C,EAAUR,QAAS5nB,EAAIG,EAAIG,IAAK,EACjE,KAAK,EAAG,OAAO8nB,EAAUl5C,GAAG+C,KAAKm2C,EAAUR,QAAS5nB,EAAIG,EAAIG,EAAIG,IAAK,EACrE,KAAK,EAAG,OAAO2nB,EAAUl5C,GAAG+C,KAAKm2C,EAAUR,QAAS5nB,EAAIG,EAAIG,EAAIG,EAAIG,IAAK,EAG3E,IAAKhzB,EAAI,EAAGwB,EAAO,IAAItB,MAAMJ,EAAK,GAAIE,EAAIF,EAAKE,IAC7CwB,EAAKxB,EAAI,GAAKyB,UAAUzB,GAG1Bw6C,EAAUl5C,GAAGI,MAAM84C,EAAUR,QAASx4C,OACjC,CACL,IACIulB,EADAhnB,EAASy6C,EAAUz6C,OAGvB,IAAKC,EAAI,EAAGA,EAAID,EAAQC,IAGtB,OAFIw6C,EAAUx6C,GAAG6/F,MAAMt+F,KAAKy+F,eAAeuoB,EAAO/tE,EAAUx6C,GAAGsB,QAAIM,GAAW,GAEtE9B,GACN,KAAK,EAAG06C,EAAUx6C,GAAGsB,GAAG+C,KAAKm2C,EAAUx6C,GAAGg6C,SAAU,MACpD,KAAK,EAAGQ,EAAUx6C,GAAGsB,GAAG+C,KAAKm2C,EAAUx6C,GAAGg6C,QAAS5nB,GAAK,MACxD,KAAK,EAAGooB,EAAUx6C,GAAGsB,GAAG+C,KAAKm2C,EAAUx6C,GAAGg6C,QAAS5nB,EAAIG,GAAK,MAC5D,KAAK,EAAGioB,EAAUx6C,GAAGsB,GAAG+C,KAAKm2C,EAAUx6C,GAAGg6C,QAAS5nB,EAAIG,EAAIG,GAAK,MAChE,QACE,IAAKlxB,EAAM,IAAKulB,EAAI,EAAGvlB,EAAO,IAAItB,MAAMJ,EAAK,GAAIinB,EAAIjnB,EAAKinB,IACxDvlB,EAAKulB,EAAI,GAAKtlB,UAAUslB,GAG1ByzB,EAAUx6C,GAAGsB,GAAGI,MAAM84C,EAAUx6C,GAAGg6C,QAASx4C,IAKpD,OAAO,GAYTonH,EAAajmH,UAAUs9F,GAAK,SAAYsoB,EAAOjnH,EAAI04C,GACjD,OAAOquE,EAAY9mH,KAAMgnH,EAAOjnH,EAAI04C,GAAS,IAY/C4uE,EAAajmH,UAAUk9F,KAAO,SAAc0oB,EAAOjnH,EAAI04C,GACrD,OAAOquE,EAAY9mH,KAAMgnH,EAAOjnH,EAAI04C,GAAS,IAa/C4uE,EAAajmH,UAAUq9F,eAAiB,SAAwBuoB,EAAOjnH,EAAI04C,EAAS6lD,GAClF,IAAI4oB,EAAM7jC,EAASA,EAAS2jC,EAAQA,EAEpC,IAAKhnH,KAAK+4C,QAAQmuE,GAAM,OAAOlnH,KAC/B,IAAKD,EAEH,OADAqnH,EAAWpnH,KAAMknH,GACVlnH,KAGT,IAAIi5C,EAAYj5C,KAAK+4C,QAAQmuE,GAE7B,GAAIjuE,EAAUl5C,GAEVk5C,EAAUl5C,KAAOA,GACfu+F,IAAQrlD,EAAUqlD,MAClB7lD,GAAWQ,EAAUR,UAAYA,GAEnC2uE,EAAWpnH,KAAMknH,OAEd,CACL,IAAK,IAAIzoH,EAAI,EAAGq6C,EAAS,GAAIt6C,EAASy6C,EAAUz6C,OAAQC,EAAID,EAAQC,KAEhEw6C,EAAUx6C,GAAGsB,KAAOA,GACnBu+F,IAASrlD,EAAUx6C,GAAG6/F,MACtB7lD,GAAWQ,EAAUx6C,GAAGg6C,UAAYA,IAErCK,EAAO73C,KAAKg4C,EAAUx6C,IAOtBq6C,EAAOt6C,OAAQwB,KAAK+4C,QAAQmuE,GAAyB,IAAlBpuE,EAAOt6C,OAAes6C,EAAO,GAAKA,EACpEsuE,EAAWpnH,KAAMknH,GAGxB,OAAOlnH,MAUTqnH,EAAajmH,UAAUiQ,mBAAqB,SAA4B21G,GACtE,IAAIE,EAUJ,OARIF,GACFE,EAAM7jC,EAASA,EAAS2jC,EAAQA,EAC5BhnH,KAAK+4C,QAAQmuE,IAAME,EAAWpnH,KAAMknH,KAExClnH,KAAK+4C,QAAU,IAAI6tE,EACnB5mH,KAAKmnH,aAAe,GAGfnnH,MAMTqnH,EAAajmH,UAAU+qB,IAAMk7F,EAAajmH,UAAUq9F,eACpD4oB,EAAajmH,UAAU0lH,YAAcO,EAAajmH,UAAUs9F,GAK5D2oB,EAAaE,SAAWlkC,EAKxBgkC,EAAaA,aAAeA,EAM1BjpH,EAAOC,QAAUgpH,sCCxTnB,IAAI2oH,EAAO3nO,EAAQ,OACf08N,EAAgB18N,EAAAA,OAAAA,cAChB48N,EAAS58N,EAAQ,MAEjBk1O,EAAMl1O,EAAQ,OACdqgP,EAAM,WACN,IAAI7/O,EAAQ7I,KAEZgwO,EAAK7C,YAAYntO,KAAME,WAEvB,IAAI8lO,EAAoBhmO,KAAKgmO,kBAC7BhmO,KAAKgmO,kBAAoB,SAAUqH,GAG/B,OAFArH,EAAkBqH,GAClBxkO,EAAM6hO,IAAI1E,kBAAkBqH,IACrB,GAGX,IAAI7N,EAAcx/N,KAAKw/N,YACvBx/N,KAAKw/N,YAAc,WACfA,EAAYr/N,MAAM0I,EAAO3I,WACzB2I,EAAMm9N,kBAAkBn9N,EAAM02N,kBAElCv/N,KAAK0qO,IAAM,IAAI6S,EAAIv9O,MACnB,CACI,IAAI+kO,EAAc,CACdj+N,KAAM,YACNoL,KAAM,MACN27F,cAAe,CACX,SAAY,CACRzxF,OAAQ,MAMpB,IAAI6oN,EAAO,CACPn+N,KAAM,aACNhE,KAAM,cACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,UACNhE,KAAM,WACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,oBACNhE,KAAM,wBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,YACNhE,KAAM,gBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,kBACNhE,KAAM,sBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,aACNhE,KAAM,iBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,gBACNhE,KAAM,oBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,gBACNhE,KAAM,oBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,aACNhE,KAAM,iBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,eACNhE,KAAM,mBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,gBACNhE,KAAM,oBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,YACNhE,KAAM,gBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,YACNhE,KAAM,gBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,6BACNhE,KAAM,iCACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,YACNhE,KAAM,gBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,YACNhE,KAAM,gBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,eACNhE,KAAM,mBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,mBACNhE,KAAM,uBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,oBACNhE,KAAM,wBACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,sBACNhE,KAAM,0BACNsZ,OAAQ,IAEZ,IAAI6oN,EAAO,CACPn+N,KAAM,OACNhE,KAAM,WACNsZ,OAAQ,EACR8oN,eAAgB,CAAC,QAErB,IAAID,EAAO,CACPn+N,KAAM,cACNhE,KAAM,kBACNsZ,OAAQ,KAEdtW,SAAQ,SAAUmmD,GAChBA,EAAOk6K,eAAet9N,GACtBojD,EAAO+5K,kBAAkBn9N,EAAM02N,qBAGvCmpB,EAAItnP,UAAU4pO,mBAAqB,WAC/BhrO,KAAKu/N,gBAAgByL,sBAEzBgF,EAAKzC,aAAamb,GAClBtqP,EAAOC,QAAUqqP,yBC3JjB,IAAIC,EAAYtgP,EAAQ,OACpB08B,EAAQ18B,EAAQ,OAChBugP,EAAevgP,EAAQ,OACvBk2G,EAAcl2G,EAAQ,OACtB6D,EAAK7D,EAAQ,OAsEbwgP,EAAgB,SAAhBA,EAA0BC,EAAcC,GAExC,IAAIpiO,EAAQ,GA+BZ,OA9BAoiO,EAAKjjP,SAAQ,SAAU4F,GACnB,GAAgC,kBAArBA,EAAM2R,WAAyB,CACtC,GAAmC,UAA/B3R,EAAMwG,KAAKiN,UAAU,EAAG,GACxB,MAAM,IAAIjU,MAAM,4DAEpB,IAAI89O,EAAS,GACTC,EAAev9O,EAAMwG,KAAKzN,QAAQ,KAClCwkP,GAAgB,IAChBD,EAASt9O,EAAMwG,KAAKiN,UAAU8pO,IAElC,IAAI3lP,EAASulP,EAAcC,EAAcp9O,EAAM2R,YAE3C1e,MAAME,QAAQyE,IAAWwlP,EAEzBniO,EAAM1lB,KAAK,SAAWqC,EAAOya,KAAK,KAAO,IAAMirO,GAEzCF,EAMNniO,EAAM1lB,KAAK,IAAMqC,EAAS,KAJ1BqjB,EAAM1lB,KAAK,IAAMqC,EAAOya,KAAK,KAAO,IAAMirO,QAS9CriO,EAAM1lB,KAAKyK,EAAMwG,SAGlByU,GAkBPuiO,EAAa,SAAUxgO,GACvB,IAAKqc,EAAM88L,YAAYn5M,GACnB,MAAM,IAAIxd,MAAM,6CACpB,IAAI4a,EAAM,GACNrnB,EAAI,EAAG03B,EAAIzN,EAAIlqB,OAInB,IAH4B,OAAxBkqB,EAAIvJ,UAAU,EAAG,KACjB1gB,EAAI,GAEDA,EAAI03B,EAAG13B,GAAK,EAAG,CAClB,IAAIokB,EAAO3F,SAASwL,EAAIzY,OAAOxR,EAAG,GAAI,IACtCqnB,GAAOhI,OAAO0I,aAAa3D,GAE/B,OAAOiD,GASPqjO,EAAa,SAAUrjO,GACvB,IAAKA,EACD,MAAO,OAEX,IADA,IAAI4C,EAAM,GACDjqB,EAAI,EAAGA,EAAIqnB,EAAItnB,OAAQC,IAAK,CACjC,IACI+D,EADOsjB,EAAIK,WAAW1nB,GACb+F,SAAS,IACtBkkB,GAAOlmB,EAAEhE,OAAS,EAAI,IAAMgE,EAAIA,EAEpC,MAAO,KAAOkmB,GAUd0gO,EAAe,SAAU1jI,GAEzB,GADAA,EAAOA,EAAOA,EAAKl+F,cAAgB,SAC9BmhO,EAAUpjI,QAAQG,GACnB,MAAM,IAAIx6G,MAAM,cAAgBw6G,EAAO,8DAAgE/nG,KAAKE,UAAU8qO,EAAUpjI,QAAS,KAAM,IAEnJ,OAAOG,GAwJXtnH,EAAOC,QAAU,CACb0pO,WAnTa,SAAUpoO,EAAOonH,EAAS3nH,EAAQ6iE,EAAUonL,GAmCzD,OAhCM1pP,GAA0B,kBAAVA,GAAwBA,aAAiBuL,QAAUvL,EAAM+Q,QACrE/Q,EAAM+Q,MAA8B,kBAAf/Q,EAAM+Q,MAAqB/R,MAAME,QAAQc,EAAM+Q,SACtE/Q,EAAM+Q,KAAOiN,KAAKE,UAAUle,EAAM+Q,KAAM,KAAM,IAElD/Q,EAAQA,EAAMgY,QAAU,KAAOhY,EAAM+Q,MAEpB,kBAAV/Q,IACPA,EAAQ,IAAIuL,MAAMvL,IAEE,oBAAbsiE,GACPA,EAAStiE,EAAO0pP,GAEE,oBAAXjqP,KAGH2nH,GAC8B,oBAAtBA,EAAQ9tE,WACZ8tE,EAAQ9tE,UAAU,SAASz6C,QAA+B,oBAAbyjE,IACjD8kD,EAAQ7wD,OAAM,eAGlBxd,YAAW,WACPt5C,EAAOO,KACR,IAEHonH,GAAmC,oBAAjBA,EAAQj7G,MAE1B4sC,YAAW,WACPquE,EAAQj7G,KAAK,QAASnM,EAAO0pP,GAC7BtiI,EAAQ11G,uBACT,GAEA01G,GAiRP+mH,6BAxQ+B,SAAUjzN,GACzC,OAAMA,GAAwB,kBAATA,GAAqBA,EAAK/T,OAAoC,IAA5B+T,EAAK/T,KAAKrC,QAAQ,KAC9DoW,EAAK/T,KAET+T,EAAK/T,KAAO,IAAM+hP,GAAc,EAAOhuO,EAAKq0N,QAAQnxN,KAAK,KAAO,KAqQvE8qO,cAAeA,EAGfjY,UArNY,SAAUhtN,GACtB,MAAO,KAAO26F,EAAY36F,GAAMpf,SAAS,QAqNzC0H,GAAI64B,EAAM74B,GACVZ,KAAMy5B,EAAMz5B,KACZujO,YAAa9pM,EAAM8pM,YACnB5M,MAAOl9L,EAAMk9L,MACbJ,YAAa98L,EAAM88L,YACnBvgM,KAAMyD,EAAMzD,KACZgoN,QAASvkN,EAAMukN,QACf1xO,UAAWmtB,EAAMzD,KACjBsnN,aAAcA,EAAaA,aAC3BW,gBAAiBX,EAAaW,gBAC9BC,aAAcZ,EAAaY,aAC3B9rI,UAAW34E,EAAM24E,UACjB+rI,qBAAsB1kN,EAAM0kN,qBAC5BhwI,kBA1GoB,SAAU/+F,GAC9B,GAAuB,qBAAZA,EACP,MAAO,GACX,IAAK,uBAAuB3T,KAAK2T,GAC7B,MAAM,IAAIxP,MAAM,kBAAoBwP,EAAU,sCAClDA,EAAUA,EAAQ8M,cAAc9I,QAAQ,OAAQ,IAGhD,IAFA,IAAIw1N,EAAcnvM,EAAMzD,KAAK5mB,GAASgE,QAAQ,OAAQ,IAClDy1N,EAAkB,KACb11O,EAAI,EAAGA,EAAIic,EAAQlc,OAAQC,IAE5Bye,SAASg3N,EAAYz1O,GAAI,IAAM,EAC/B01O,GAAmBz5N,EAAQjc,GAAGmpB,cAG9BusN,GAAmBz5N,EAAQjc,GAGnC,OAAO01O,GA0FPpqN,MAAOgb,EAAMhb,MACbjB,KAAMic,EAAMjc,KACZw0F,WAAYv4E,EAAMu4E,WAClB60H,WAAYptM,EAAMotM,WAClBtO,kBAAmB9+L,EAAM8+L,kBACzBzB,YAAar9L,EAAMq9L,YACnBsnB,UAAW3kN,EAAMq9L,YACjBN,YAAa/8L,EAAM+8L,YACnB6nB,YAAa5kN,EAAM+8L,YACnB8nB,UAAW7kN,EAAM6kN,UACjBC,YAAa9kN,EAAM6kN,UACnBjjI,OAAQ5hF,EAAM6kN,UACdpzI,eAAgBzxE,EAAMyxE,eACtBitH,UAAW1+L,EAAM0+L,UACjBqmB,YAAa/kN,EAAM0+L,UACnB/+G,SAAU3/E,EAAM0+L,UAChBylB,WAAYA,EACZr3I,QAASq3I,EACTC,WAAYA,EACZx3I,UAAWw3I,EACX5jI,QAASojI,EAAUpjI,QACnBgB,MA9IQ,SAAU77F,EAAQg7F,GAE1B,GADAA,EAAO0jI,EAAa1jI,IACf3gF,EAAMz5B,KAAKof,IAA+B,kBAAXA,EAChC,MAAM,IAAIxf,MAAM,2EAEpB,OAAO65B,EAAMz5B,KAAKof,GAAUi+N,EAAUpiI,MAAM77F,EAAQg7F,GAAQijI,EAAUpiI,MAAM77F,EAAQg7F,GAAMlhH,SAAS,KA0InGuhH,QA5KU,SAAUr7F,EAAQg7F,GAE5B,GADAA,EAAO0jI,EAAa1jI,IACf3gF,EAAMz5B,KAAKof,IAA+B,kBAAXA,EAChC,MAAM,IAAIxf,MAAM,2EAEpB,OAAO65B,EAAMz5B,KAAKof,GAAUi+N,EAAU5iI,QAAQr7F,EAAQg7F,GAAQijI,EAAU5iI,QAAQr7F,EAAQg7F,GAAMlhH,SAAS,KAwKvGq5G,QAAS94E,EAAM+pM,QACfA,QAAS/pM,EAAM+pM,QACfp9H,SAAU3sE,EAAMgqM,SAChBA,SAAUhqM,EAAMgqM,SAChBgb,iBAAkBhlN,EAAMglN,iBACxB5sI,QAASp4E,EAAMo4E,QACfQ,6BAA8B54E,EAAM44E,6BACpCG,yBAA0B/4E,EAAM+4E,yBAChCL,QAAS14E,EAAM04E,QACfO,eAAgBj5E,EAAMi5E,eACtBX,UAAWt4E,EAAMs4E,UACjB2sI,oBA7GsB,SAAUhpP,EAAGqsB,GACnC,GAAIrsB,GAAKqsB,EACL,OAAO,EAEN,GAAK,WAAarsB,GAAK,YAAcA,GAAK,GAAKA,GAAO,WAAaqsB,GAAK,YAAcA,GAAK,GAAKA,EAGhG,IAAI,WAAarsB,GAAK,YAAcA,EAErC,OAAQ,EAEP,GAAI,WAAaqsB,GAAK,YAAcA,EAErC,OAAO,EAEN,GAAS,UAALrsB,EACL,MAAS,WAALqsB,GACQ,EAID,EAGV,GAAU,WAANA,EACL,MAAS,WAALrsB,EACO,GAIC,EAGX,GAAS,WAALA,EAEL,OAAO,EAEN,GAAS,WAALqsB,EACL,OAAQ,EAGR,IAAI48N,EAAM,IAAI/9O,EAAGlL,GACbkpP,EAAM,IAAIh+O,EAAGmhB,GACjB,OAAI48N,EAAI5zO,GAAG6zO,IACC,EAEHD,EAAIz6O,GAAG06O,GACL,EAGA,EA7CX,OAAO,GAyGX73O,SAAU0yB,EAAM1yB,iCC3XpB,IAAInG,EAAK7D,EAAQ,OACb08B,EAAQ18B,EAAQ,OAuChB8hP,EAAe,SAAU3qP,GACzB,IAAI0S,SAAc1S,EAClB,GAAa,WAAT0S,EACA,OAAI6yB,EAAM88L,YAAYriO,GACX,IAAI0M,EAAG1M,EAAIkf,QAAQ,MAAO,IAAK,IAG/B,IAAIxS,EAAG1M,EAAK,IAGtB,GAAa,WAAT0S,EACL,OAAO,IAAIhG,EAAG1M,GAEb,GAAIulC,EAAM8pM,YAAYrvO,GACvB,OAAO,IAAI0M,EAAG1M,EAAIgF,SAAS,KAE1B,GAAIugC,EAAMz5B,KAAK9L,GAChB,OAAOA,EAGP,MAAM,IAAI0L,MAAM1L,EAAM,qBAG1B4qP,EAAgB,SAAUl4O,EAAMxS,EAAO8gH,GAEvC,IAAI58F,EAAM4H,EAEV,GAAa,WADbtZ,EAhEkB,SAAUpL,GAE5B,OAAIA,EAAKi4G,WAAW,QACT,SAAWj4G,EAAKD,MAAM,GAEf,QAATC,EACE,SAEFA,EAAKi4G,WAAW,SACd,UAAYj4G,EAAKD,MAAM,GAEhB,SAATC,EACE,UAEFA,EAAKi4G,WAAW,UACd,eAAiBj4G,EAAKD,MAAM,GAErB,UAATC,EACE,eAEFA,EAAKi4G,WAAW,WACd,gBAAkBj4G,EAAKD,MAAM,GAEtB,WAATC,EACE,gBAEJA,EAsCAujP,CAAgBn4O,IACD,CAClB,GAAIxS,EAAMgf,QAAQ,OAAQ,IAAIlgB,OAAS,IAAM,EACzC,MAAM,IAAI0M,MAAM,4BAA8BxL,EAAMlB,QAExD,OAAOkB,EAEN,GAAa,WAATwS,EACL,OAAO6yB,EAAM0+L,UAAU/jO,GAEtB,GAAa,SAATwS,EACL,OAAOxS,EAAQ,KAAO,KAErB,GAAIwS,EAAK6sG,WAAW,WAAY,CAOjC,GALIn7F,EADA48F,EACO,GAGA,IAENz7E,EAAM24E,UAAUh+G,GACjB,MAAM,IAAIwL,MAAMxL,EAAQ,wDAE5B,OAAOqlC,EAAM+pM,QAAQpvO,EAAM8nB,cAAe5D,GAG9C,GADAA,EA5Dc,SAAU1R,GACxB,IAAIo4O,EAAW,eAAezvM,KAAK3oC,GACnC,OAAOo4O,EAAWptO,SAASotO,EAAS,GAAI,IAAM,KA0DvCC,CAAYr4O,GACfA,EAAK6sG,WAAW,SAAU,CAC1B,IAAKn7F,EACD,MAAM,IAAI1Y,MAAM,yCAMpB,GAHIs1G,IACA58F,EAAO,IAEPA,EAAO,GAAKA,EAAO,IAAMA,EAAOlkB,EAAMgf,QAAQ,OAAQ,IAAIlgB,OAAS,EACnE,MAAM,IAAI0M,MAAM,gBAAkB0Y,EAAO,QAAUlkB,GAEvD,OAAOqlC,EAAMgqM,SAASrvO,EAAc,EAAPkkB,GAE5B,GAAI1R,EAAK6sG,WAAW,QAAS,CAC9B,GAAKn7F,EAAO,GAAOA,EAAO,GAAOA,EAAO,IACpC,MAAM,IAAI1Y,MAAM,eAAiB0Y,EAAO,SAG5C,IADA4H,EAAM2+N,EAAazqP,IACXqvB,YAAcnL,EAClB,MAAM,IAAI1Y,MAAM,gCAAkC0Y,EAAO,OAAS4H,EAAIuD,aAE1E,GAAIvD,EAAInV,GAAG,IAAInK,EAAG,IACd,MAAM,IAAIhB,MAAM,iBAAmBsgB,EAAIhnB,WAAa,gBAExD,OAAOof,EAAOmhB,EAAM+pM,QAAQtjN,EAAIhnB,SAAS,OAAQof,EAAO,EAAI,GAAK4H,EAEhE,GAAItZ,EAAK6sG,WAAW,OAAQ,CAC7B,GAAKn7F,EAAO,GAAOA,EAAO,GAAOA,EAAO,IACpC,MAAM,IAAI1Y,MAAM,cAAgB0Y,EAAO,SAG3C,IADA4H,EAAM2+N,EAAazqP,IACXqvB,YAAcnL,EAClB,MAAM,IAAI1Y,MAAM,+BAAiC0Y,EAAO,OAAS4H,EAAIuD,aAEzE,OAAIvD,EAAInV,GAAG,IAAInK,EAAG,IACPsf,EAAIjH,OAAOX,GAAMpf,SAAS,OAG1Bof,EAAOmhB,EAAM+pM,QAAQtjN,EAAIhnB,SAAS,OAAQof,EAAO,EAAI,GAAK4H,EAKrE,MAAM,IAAItgB,MAAM,gCAAkCgH,IAGtDs4O,EAAmC,SAAUhrP,GAE7C,GAAIb,MAAME,QAAQW,GACd,MAAM,IAAI0L,MAAM,kDAEpB,IAAIgH,EACQsuG,EADF9gH,EAAQ,GAmBlB,GAhBMF,GAAsB,kBAARA,IAAqBA,EAAIgH,eAAe,MAAQhH,EAAIgH,eAAe,MAAQhH,EAAIgH,eAAe,UAAYhH,EAAIgH,eAAe,UAC7I0L,EAAO1S,EAAIgH,eAAe,KAAOhH,EAAIqvB,EAAIrvB,EAAI0S,KAC7CxS,EAAQF,EAAIgH,eAAe,KAAOhH,EAAI8O,EAAI9O,EAAIE,QAI9CwS,EAAO6yB,EAAMhb,MAAMvqB,GAAK,GACxBE,EAAQqlC,EAAMhb,MAAMvqB,GACf0S,EAAK6sG,WAAW,QAAW7sG,EAAK6sG,WAAW,UAC5C7sG,EAAO,WAGVA,EAAK6sG,WAAW,SAAU7sG,EAAK6sG,WAAW,SAA6B,kBAAVr/G,GAAuB,WAAWqH,KAAKrH,KACrGA,EAAQ,IAAIwM,EAAGxM,IAGff,MAAME,QAAQa,GAAQ,CAEtB,GADA8gH,EA/He,SAAUtuG,GAC7B,IAAIsuG,EAAY,oBAAoB3lE,KAAK3oC,GACzC,OAAOsuG,EAAYtjG,SAASsjG,EAAU,GAAI,IAAM,KA6HhCiqI,CAAiBv4O,GACzBsuG,GAAa9gH,EAAMlB,SAAWgiH,EAC9B,MAAM,IAAIt1G,MAAMgH,EAAO,oCAAsCyL,KAAKE,UAAUne,IAG5E8gH,EAAY9gH,EAAMlB,OAG1B,OAAIG,MAAME,QAAQa,GACLA,EAAM8L,KAAI,SAAU4e,GACzB,OAAOggO,EAAcl4O,EAAMkY,EAAKo2F,GAAWh8G,SAAS,OAAOka,QAAQ,KAAM,OAE/DX,KAAK,IAGVqsO,EAAcl4O,EAAMxS,EAAO8gH,GACtBh8G,SAAS,OAAOka,QAAQ,KAAM,KAsCpDtgB,EAAOC,QAAU,CACbuqP,aA9Be,WAEf,IAAI3oP,EAAOtB,MAAMyC,UAAUyF,MAAM/D,KAAK5C,WAClCwqP,EAAUzqP,EAAKuL,IAAIg/O,GAGvB,OAAOzlN,EAAMzD,KAAK,KAAOopN,EAAQ3sO,KAAK,MAyBtCwrO,gBAjBkB,WAClB,OAAOxkN,EAAMukN,QAAQ,KAAO3qP,MAAMyC,UAAUyF,MAAM/D,KAAK5C,WAAWsL,IAAIg/O,GAAkCzsO,KAAK,MAiB7GyrO,aATe,WAEf,IAAIvpP,EAAOtB,MAAMyC,UAAUyF,MAAM/D,KAAK5C,WAClCwqP,EAAUzqP,EAAKuL,IAAIg/O,GACvB,MAAO,KAAOE,EAAQ3sO,KAAK,IAAIyJ,6DCvN/Btb,EAAK7D,EAAQ,OACbg9G,EAAah9G,EAAQ,OACrB8/E,EAAO9/E,EAAQ,MACf+nO,EAAiB/nO,EAAQ,OACzBsiP,EAAuBtiP,EAAQ,OAQ/BiD,EAAO,SAAUhG,GACjB,OAAO4G,EAAGZ,KAAKhG,IASfupO,EAAc,SAAUvpO,GACxB,OAAOA,GAAUA,EAAO7B,aAA2C,cAA5B6B,EAAO7B,YAAYqD,MAS1DgiB,EAAO,SAAU4B,GACjB,IACI,OAAO26F,EAAWllH,MAAM,KAAMD,WAElC,MAAOuC,GACH,MAAM,IAAIyI,MAAMzI,EAAI,kBAAoBioB,EAAS,OAoBrDgzF,EAAY,SAAUhjG,GAEtB,QAAK,uBAAuB3T,KAAK2T,QAIxB,yBAAyB3T,KAAK2T,KAAY,yBAAyB3T,KAAK2T,KAKtE+uO,EAAqB/uO,KAUhC+uO,EAAuB,SAAU/uO,GAEjCA,EAAUA,EAAQgE,QAAQ,OAAQ,IAElC,IADA,IAAIw1N,EAAc5yM,EAAK5mB,EAAQ8M,eAAe9I,QAAQ,OAAQ,IACrDjgB,EAAI,EAAGA,EAAI,GAAIA,IAEpB,GAAKye,SAASg3N,EAAYz1O,GAAI,IAAM,GAAKic,EAAQjc,GAAGmpB,gBAAkBlN,EAAQjc,IAAQye,SAASg3N,EAAYz1O,GAAI,KAAO,GAAKic,EAAQjc,GAAG+oB,gBAAkB9M,EAAQjc,GAC5J,OAAO,EAGf,OAAO,GAuCPglO,EAAY,SAAU39M,GAEtB,IAAI4C,EAAM,GAKV5C,GADAA,GADAA,GADAA,GAHAA,EAAMqiE,EAAK1wE,OAAOqO,IAGRpH,QAAQ,eAAgB,KACxB+I,MAAM,IAAI6nC,UAAUvxC,KAAK,KACzBW,QAAQ,eAAgB,KACxB+I,MAAM,IAAI6nC,UAAUvxC,KAAK,IACnC,IAAK,IAAItf,EAAI,EAAGA,EAAIqnB,EAAItnB,OAAQC,IAAK,CACjC,IAEI+D,EAFOsjB,EAAIK,WAAW1nB,GAEb+F,SAAS,IACtBkkB,GAAOlmB,EAAEhE,OAAS,EAAI,IAAMgE,EAAIA,EAGpC,MAAO,KAAOkmB,GAoCd05M,EAAc,SAAU1iO,GACxB,IAAKA,EACD,OAAOA,EAEX,GAAqB,kBAAVA,IAAuBmiO,EAAYniO,GAC1C,MAAM,IAAIwL,MAAM,gBAAkBxL,EAAQ,gCAE9C,OAAOopB,EAAKppB,GAAO2S,YAwBnByvN,EAAc,SAAUpiO,GACxB,GAAe,OAAVA,QAA4BW,IAAVX,EACnB,OAAOA,EAEX,IAAKq9E,SAASr9E,KAAWmiO,EAAYniO,GACjC,MAAM,IAAIwL,MAAM,gBAAkBxL,EAAQ,sBAE9C,IAAIgrB,EAAS5B,EAAKppB,GACd4D,EAASonB,EAAOlmB,SAAS,IAC7B,OAAOkmB,EAAOrU,GAAG,IAAInK,EAAG,IAAM,MAAQ5I,EAAO2M,OAAO,GAAK,KAAO3M,GAiDhEymB,EAAQ,SAAUrqB,EAAOkrP,GAEzB,GAAIltI,EAAUh+G,GACV,OAAOkrP,EAAa,UAAY,KAAOlrP,EAAM8nB,cAAc9I,QAAQ,OAAQ,IAE/E,GAAqB,mBAAVhf,EACP,OAAOkrP,EAAa,OAASlrP,EAAQ,OAAS,OAElD,GAAIqQ,EAAO6J,SAASla,GAChB,MAAO,KAAOA,EAAM8E,SAAS,OAEjC,GAAqB,kBAAV9E,GAAwBA,IAAUmvO,EAAYnvO,KAAW4L,EAAK5L,GACrE,OAAOkrP,EAAa,SAAWnnB,EAAU9lN,KAAKE,UAAUne,IAG5D,GAAqB,kBAAVA,EAAoB,CAC3B,GAA6B,IAAzBA,EAAM+E,QAAQ,QAAyC,IAAzB/E,EAAM+E,QAAQ,OAC5C,OAAOmmP,EAAa,SAAW9oB,EAAYpiO,GAE1C,GAA4B,IAAxBA,EAAM+E,QAAQ,OAAuC,IAAxB/E,EAAM+E,QAAQ,MAChD,OAAOmmP,EAAa,QAAUlrP,EAE7B,IAAKq9E,SAASr9E,GACf,OAAOkrP,EAAa,SAAWnnB,EAAU/jO,GAGjD,OAAOkrP,EAAclrP,EAAQ,EAAI,SAAW,UAAaoiO,EAAYpiO,IASrEmiO,EAAc,SAAUn5M,GACxB,OAAwB,kBAARA,GAAmC,kBAARA,IAAqB,qBAAqB3hB,KAAK2hB,IAS1Fu5M,EAAQ,SAAUv5M,GAClB,OAAwB,kBAARA,GAAmC,kBAARA,IAAqB,wBAAwB3hB,KAAK2hB,IA0F7F8uF,EAAc,qEACdl2E,EAAO,SAAU5hC,GACb4L,EAAK5L,KACLA,EAAQA,EAAM8E,YAEdq9N,EAAYniO,IAAU,OAAOqH,KAAMrH,EAAO8E,YAC1C9E,EAAQ0wO,EAAeh+N,SAAS1S,GAEV,kBAAVA,IAEZA,EAAQqQ,EAAOhL,KAAKrF,EAAO,UAE/B,IAAIqlL,EAAcqrD,EAAe56N,YAAY46N,EAAex4N,UAAUlY,IACtE,OAAIqlL,IAAgBvtE,EACT,KAGAutE,GAIfzjJ,EAAKupN,MAAQza,EAAex4N,UA0B5BxZ,EAAOC,QAAU,CACb6N,GAAIA,EACJZ,KAAMA,EACNujO,YAAaA,EACb/lN,KAAMA,EACN40F,UAAWA,EACXP,QA1HU,SAAUC,GACpB,OAAOutI,EAAqBxtI,QAAQC,IA0HpCO,6BA/G+B,SAAUP,EAAOQ,GAChD,OAAO+sI,EAAqBhtI,6BAA6BP,EAAOQ,IA+GhEE,yBApG2B,SAAUV,EAAOW,GAC5C,OAAO4sI,EAAqB7sI,yBAAyBV,EAAOW,IAoG5DN,QA3FU,SAAU5vG,GACpB,OAAO88O,EAAqBltI,QAAQ5vG,IA2FpCmwG,eAhFiB,SAAUZ,EAAOvvG,GAClC,OAAO88O,EAAqB3sI,eAAeZ,EAAOvvG,IAgFlDwvG,UArEY,SAAUD,EAAOvvG,GAC7B,OAAO88O,EAAqBttI,UAAUD,EAAOvvG,IAqE7C47O,qBAAsBA,EACtBhmB,UAAWA,EACXmmB,UAzTY,SAAUlhO,GACtB,IAAKm5M,EAAYn5M,GACb,MAAM,IAAIxd,MAAM,kBAAoBwd,EAAM,iCAU9C,IATA,IAAI5C,EAAM,GACNjD,EAAO,EAOPsT,GADJzN,GADAA,GADAA,GADAA,GAFAA,EAAMA,EAAIhK,QAAQ,OAAQ,KAEhBA,QAAQ,WAAY,KACpB+I,MAAM,IAAI6nC,UAAUvxC,KAAK,KACzBW,QAAQ,WAAY,KACpB+I,MAAM,IAAI6nC,UAAUvxC,KAAK,KACvBvf,OACHC,EAAI,EAAGA,EAAI03B,EAAG13B,GAAK,EACxBokB,EAAO3F,SAASwL,EAAIzY,OAAOxR,EAAG,GAAI,IAElCqnB,GAAOhI,OAAO0I,aAAa3D,GAG/B,OAAOslE,EAAKvxE,OAAOkP,IAwSnBs8M,YAAaA,EACbyB,kBAhRoB,SAAUnkO,GAC9B,IAAKA,EACD,OAAOA,EACX,GAAqB,kBAAVA,IAAuBmiO,EAAYniO,GAC1C,MAAM,IAAIwL,MAAM,gBAAkBxL,EAAQ,gCAE9C,OAAOopB,EAAKppB,GAAO8E,SAAS,KA2Q5Bs9N,YAAaA,EACb/3M,MAAOA,EACPooN,WA9Na,SAAUzpN,GAEvB,GADAA,EAAMA,EAAIlkB,SAAS,KACdq9N,EAAYn5M,GACb,MAAM,IAAIxd,MAAM,gBAAkBwd,EAAM,gCAE5CA,EAAMA,EAAIhK,QAAQ,OAAQ,IAC1B,IAAK,IAAIsB,EAAQ,GAAIrB,EAAI,EAAGA,EAAI+J,EAAIlqB,OAAQmgB,GAAK,EAC7CqB,EAAM/e,KAAKic,SAASwL,EAAIzY,OAAO0O,EAAG,GAAI,KAC1C,OAAOqB,GAuNPs9F,WAjPa,SAAUt9F,GACvB,IAAK,IAAI0I,EAAM,GAAIjqB,EAAI,EAAGA,EAAIuhB,EAAMxhB,OAAQC,IAExCiqB,EAAIznB,MAAM+e,EAAMvhB,KAAO,GAAG+F,SAAS,KACnCkkB,EAAIznB,MAAiB,GAAX+e,EAAMvhB,IAAU+F,SAAS,KAGvC,MAAO,KAAOkkB,EAAI3K,KAAK,KA2OvBkkN,MAAOA,EACPJ,YAAaA,EACbrrH,eAvJiB,SAAU1wF,GAC3B,OAAY,IAARA,GAAam8M,EAAMn8M,GACZA,EAAIpH,QAAQ,WAAY,MAC5BoH,GAqJPgpN,QAvXU,SAAU5jN,EAAQ3D,EAAOsrB,GACnC,IAAIsrE,EAAY,OAAOp3G,KAAKmkB,IAA6B,kBAAXA,EAE1C0C,EAAWrG,GADf2D,EAASA,EAAO1mB,SAAS,IAAIka,QAAQ,OAAQ,KACflgB,OAAS,GAAK,EAAK+oB,EAAQ2D,EAAO1sB,OAAS,EAAI,EAC7E,OAAQ2/G,EAAY,KAAO,IAAM,IAAIx/G,MAAMivB,GAAS7P,KAAK80B,GAAc,KAAO3nB,GAoX9E6jN,SAzWW,SAAU7jN,EAAQ3D,EAAOsrB,GACpC,IAAIsrE,EAAY,OAAOp3G,KAAKmkB,IAA6B,kBAAXA,EAE1C0C,EAAWrG,GADf2D,EAASA,EAAO1mB,SAAS,IAAIka,QAAQ,OAAQ,KACflgB,OAAS,GAAK,EAAK+oB,EAAQ2D,EAAO1sB,OAAS,EAAI,EAC7E,OAAQ2/G,EAAY,KAAO,IAAMjzF,EAAU,IAAIvsB,MAAMivB,GAAS7P,KAAK80B,GAAc,MAsWjFk3M,iBA7amB,SAAUr/N,GAC7B,MAAO,KAAO5B,EAAK4B,GAAQnG,OAAO,KAAK/f,SAAS,GAAI,KA6apD88B,KAAMA,EACNgoN,QA9CU,SAAU5pP,GAEpB,OAAc,QADdA,EAAQ4hC,EAAK5hC,IAEF83G,EAEJ93G,GA0CP2S,SAhCW,SAAU3S,GACrB,MAAwB,kBAAVA,EAAqBA,EAAQ0iO,EAAYr4M,EAAMrqB,8BCrdjE,SAAWtB,EAAQC,GACjB,aAGA,SAAS8rB,EAAQC,EAAKxd,GACpB,IAAKwd,EAAK,MAAM,IAAIlf,MAAM0B,GAAO,oBAKnC,SAASyd,EAAUC,EAAMC,GACvBD,EAAKE,OAASD,EACd,IAAIE,EAAW,aACfA,EAASrpB,UAAYmpB,EAAUnpB,UAC/BkpB,EAAKlpB,UAAY,IAAIqpB,EACrBH,EAAKlpB,UAAUqC,YAAc6mB,EAK/B,SAASpe,EAAIwe,EAAQ1mB,EAAM2mB,GACzB,GAAIze,EAAGZ,KAAKof,GACV,OAAOA,EAGT1qB,KAAK4qB,SAAW,EAChB5qB,KAAK6qB,MAAQ,KACb7qB,KAAKxB,OAAS,EAGdwB,KAAK8qB,IAAM,KAEI,OAAXJ,IACW,OAAT1mB,GAA0B,OAATA,IACnB2mB,EAAS3mB,EACTA,EAAO,IAGThE,KAAK+qB,MAAML,GAAU,EAAG1mB,GAAQ,GAAI2mB,GAAU,OAYlD,IAAI5a,EATkB,kBAAX3R,EACTA,EAAOC,QAAU6N,EAEjB7N,EAAQ6N,GAAKA,EAGfA,EAAGA,GAAKA,EACRA,EAAGsT,SAAW,GAGd,IAEIzP,EADoB,qBAAXib,QAAmD,qBAAlBA,OAAOjb,OACxCib,OAAOjb,OAEP1H,EAAAA,OAAAA,OAEX,MAAO5F,IAgIT,SAASwoB,EAAeC,EAAQ/b,GAC9B,IAAIwP,EAAIuM,EAAO/E,WAAWhX,GAE1B,OAAIwP,GAAK,IAAMA,GAAK,GACXA,EAAI,GAEFA,GAAK,IAAMA,GAAK,IAClBA,EAAI,GAGHA,EAAI,GAAM,GAItB,SAASwM,EAAcD,EAAQE,EAAYjc,GACzC,IAAI8C,EAAIgZ,EAAcC,EAAQ/b,GAI9B,OAHIA,EAAQ,GAAKic,IACfnZ,GAAKgZ,EAAcC,EAAQ/b,EAAQ,IAAM,GAEpC8C,EA8CT,SAASoZ,EAAWvF,EAAKwF,EAAOC,EAAKnV,GAGnC,IAFA,IAAInE,EAAI,EACJ1T,EAAMqV,KAAKwD,IAAI0O,EAAItnB,OAAQ+sB,GACtB9sB,EAAI6sB,EAAO7sB,EAAIF,EAAKE,IAAK,CAChC,IAAIkgB,EAAImH,EAAIK,WAAW1nB,GAAK,GAE5BwT,GAAKmE,EAIHnE,GADE0M,GAAK,GACFA,EAAI,GAAK,GAGLA,GAAK,GACTA,EAAI,GAAK,GAITA,EAGT,OAAO1M,EAnNT/F,EAAGZ,KAAO,SAAekgB,GACvB,OAAIA,aAAetf,GAIJ,OAARsf,GAA+B,kBAARA,GAC5BA,EAAI/nB,YAAY+b,WAAatT,EAAGsT,UAAY7gB,MAAME,QAAQ2sB,EAAIX,QAGlE3e,EAAGuf,IAAM,SAAcC,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTzf,EAAGkL,IAAM,SAAcsU,EAAMC,GAC3B,OAAID,EAAKE,IAAID,GAAS,EAAUD,EACzBC,GAGTzf,EAAG9K,UAAU2pB,MAAQ,SAAeL,EAAQ1mB,EAAM2mB,GAChD,GAAsB,kBAAXD,EACT,OAAO1qB,KAAK6rB,YAAYnB,EAAQ1mB,EAAM2mB,GAGxC,GAAsB,kBAAXD,EACT,OAAO1qB,KAAK8rB,WAAWpB,EAAQ1mB,EAAM2mB,GAG1B,QAAT3mB,IACFA,EAAO,IAETmmB,EAAOnmB,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,IAGnD,IAAIsnB,EAAQ,EACM,OAFlBZ,EAASA,EAAOlmB,WAAWka,QAAQ,OAAQ,KAEhC,KACT4M,IACAtrB,KAAK4qB,SAAW,GAGdU,EAAQZ,EAAOlsB,SACJ,KAATwF,EACFhE,KAAK+rB,UAAUrB,EAAQY,EAAOX,IAE9B3qB,KAAKgsB,WAAWtB,EAAQ1mB,EAAMsnB,GACf,OAAXX,GACF3qB,KAAK8rB,WAAW9rB,KAAKisB,UAAWjoB,EAAM2mB,MAM9Cze,EAAG9K,UAAUyqB,YAAc,SAAsBnB,EAAQ1mB,EAAM2mB,GACzDD,EAAS,IACX1qB,KAAK4qB,SAAW,EAChBF,GAAUA,GAERA,EAAS,UACX1qB,KAAK6qB,MAAQ,CAAW,SAATH,GACf1qB,KAAKxB,OAAS,GACLksB,EAAS,kBAClB1qB,KAAK6qB,MAAQ,CACF,SAATH,EACCA,EAAS,SAAa,UAEzB1qB,KAAKxB,OAAS,IAEd2rB,EAAOO,EAAS,kBAChB1qB,KAAK6qB,MAAQ,CACF,SAATH,EACCA,EAAS,SAAa,SACvB,GAEF1qB,KAAKxB,OAAS,GAGD,OAAXmsB,GAGJ3qB,KAAK8rB,WAAW9rB,KAAKisB,UAAWjoB,EAAM2mB,IAGxCze,EAAG9K,UAAU0qB,WAAa,SAAqBpB,EAAQ1mB,EAAM2mB,GAG3D,GADAR,EAAgC,kBAAlBO,EAAOlsB,QACjBksB,EAAOlsB,QAAU,EAGnB,OAFAwB,KAAK6qB,MAAQ,CAAE,GACf7qB,KAAKxB,OAAS,EACPwB,KAGTA,KAAKxB,OAASoV,KAAKC,KAAK6W,EAAOlsB,OAAS,GACxCwB,KAAK6qB,MAAQ,IAAIlsB,MAAMqB,KAAKxB,QAC5B,IAAK,IAAIC,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAC/BuB,KAAK6qB,MAAMpsB,GAAK,EAGlB,IAAI+mB,EAAG0G,EACHC,EAAM,EACV,GAAe,OAAXxB,EACF,IAAKlsB,EAAIisB,EAAOlsB,OAAS,EAAGgnB,EAAI,EAAG/mB,GAAK,EAAGA,GAAK,EAC9CytB,EAAIxB,EAAOjsB,GAAMisB,EAAOjsB,EAAI,IAAM,EAAMisB,EAAOjsB,EAAI,IAAM,GACzDuB,KAAK6qB,MAAMrF,IAAO0G,GAAKC,EAAO,SAC9BnsB,KAAK6qB,MAAMrF,EAAI,GAAM0G,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP3G,UAGC,GAAe,OAAXmF,EACT,IAAKlsB,EAAI,EAAG+mB,EAAI,EAAG/mB,EAAIisB,EAAOlsB,OAAQC,GAAK,EACzCytB,EAAIxB,EAAOjsB,GAAMisB,EAAOjsB,EAAI,IAAM,EAAMisB,EAAOjsB,EAAI,IAAM,GACzDuB,KAAK6qB,MAAMrF,IAAO0G,GAAKC,EAAO,SAC9BnsB,KAAK6qB,MAAMrF,EAAI,GAAM0G,IAAO,GAAKC,EAAQ,UACzCA,GAAO,KACI,KACTA,GAAO,GACP3G,KAIN,OAAOxlB,KAAKosB,SAyBdlgB,EAAG9K,UAAU2qB,UAAY,SAAoBrB,EAAQY,EAAOX,GAE1D3qB,KAAKxB,OAASoV,KAAKC,MAAM6W,EAAOlsB,OAAS8sB,GAAS,GAClDtrB,KAAK6qB,MAAQ,IAAIlsB,MAAMqB,KAAKxB,QAC5B,IAAK,IAAIC,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAC/BuB,KAAK6qB,MAAMpsB,GAAK,EAIlB,IAGIytB,EAHAC,EAAM,EACN3G,EAAI,EAGR,GAAe,OAAXmF,EACF,IAAKlsB,EAAIisB,EAAOlsB,OAAS,EAAGC,GAAK6sB,EAAO7sB,GAAK,EAC3CytB,EAAIf,EAAaT,EAAQY,EAAO7sB,IAAM0tB,EACtCnsB,KAAK6qB,MAAMrF,IAAU,SAAJ0G,EACbC,GAAO,IACTA,GAAO,GACP3G,GAAK,EACLxlB,KAAK6qB,MAAMrF,IAAM0G,IAAM,IAEvBC,GAAO,OAKX,IAAK1tB,GADaisB,EAAOlsB,OAAS8sB,GACX,IAAM,EAAIA,EAAQ,EAAIA,EAAO7sB,EAAIisB,EAAOlsB,OAAQC,GAAK,EAC1EytB,EAAIf,EAAaT,EAAQY,EAAO7sB,IAAM0tB,EACtCnsB,KAAK6qB,MAAMrF,IAAU,SAAJ0G,EACbC,GAAO,IACTA,GAAO,GACP3G,GAAK,EACLxlB,KAAK6qB,MAAMrF,IAAM0G,IAAM,IAEvBC,GAAO,EAKbnsB,KAAKosB,SA2BPlgB,EAAG9K,UAAU4qB,WAAa,SAAqBtB,EAAQ1mB,EAAMsnB,GAE3DtrB,KAAK6qB,MAAQ,CAAE,GACf7qB,KAAKxB,OAAS,EAGd,IAAK,IAAI6tB,EAAU,EAAGC,EAAU,EAAGA,GAAW,SAAWA,GAAWtoB,EAClEqoB,IAEFA,IACAC,EAAWA,EAAUtoB,EAAQ,EAO7B,IALA,IAAIuoB,EAAQ7B,EAAOlsB,OAAS8sB,EACxBkB,EAAMD,EAAQF,EACdd,EAAM3X,KAAKwD,IAAImV,EAAOA,EAAQC,GAAOlB,EAErCmB,EAAO,EACFhuB,EAAI6sB,EAAO7sB,EAAI8sB,EAAK9sB,GAAK4tB,EAChCI,EAAOpB,EAAUX,EAAQjsB,EAAGA,EAAI4tB,EAASroB,GAEzChE,KAAK+T,MAAMuY,GACPtsB,KAAK6qB,MAAM,GAAK4B,EAAO,SACzBzsB,KAAK6qB,MAAM,IAAM4B,EAEjBzsB,KAAK0sB,OAAOD,GAIhB,GAAY,IAARD,EAAW,CACb,IAAIpD,EAAM,EAGV,IAFAqD,EAAOpB,EAAUX,EAAQjsB,EAAGisB,EAAOlsB,OAAQwF,GAEtCvF,EAAI,EAAGA,EAAI+tB,EAAK/tB,IACnB2qB,GAAOplB,EAGThE,KAAK+T,MAAMqV,GACPppB,KAAK6qB,MAAM,GAAK4B,EAAO,SACzBzsB,KAAK6qB,MAAM,IAAM4B,EAEjBzsB,KAAK0sB,OAAOD,GAIhBzsB,KAAKosB,SAGPlgB,EAAG9K,UAAU+P,KAAO,SAAewb,GACjCA,EAAK9B,MAAQ,IAAIlsB,MAAMqB,KAAKxB,QAC5B,IAAK,IAAIC,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAC/BkuB,EAAK9B,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,GAE7BkuB,EAAKnuB,OAASwB,KAAKxB,OACnBmuB,EAAK/B,SAAW5qB,KAAK4qB,SACrB+B,EAAK7B,IAAM9qB,KAAK8qB,KAGlB5e,EAAG9K,UAAUwrB,MAAQ,WACnB,IAAI3a,EAAI,IAAI/F,EAAG,MAEf,OADAlM,KAAKmR,KAAKc,GACHA,GAGT/F,EAAG9K,UAAUyrB,QAAU,SAAkBjJ,GACvC,KAAO5jB,KAAKxB,OAASolB,GACnB5jB,KAAK6qB,MAAM7qB,KAAKxB,UAAY,EAE9B,OAAOwB,MAITkM,EAAG9K,UAAUgrB,MAAQ,WACnB,KAAOpsB,KAAKxB,OAAS,GAAqC,IAAhCwB,KAAK6qB,MAAM7qB,KAAKxB,OAAS,IACjDwB,KAAKxB,SAEP,OAAOwB,KAAK8sB,aAGd5gB,EAAG9K,UAAU0rB,UAAY,WAKvB,OAHoB,IAAhB9sB,KAAKxB,QAAkC,IAAlBwB,KAAK6qB,MAAM,KAClC7qB,KAAK4qB,SAAW,GAEX5qB,MAGTkM,EAAG9K,UAAU2rB,QAAU,WACrB,OAAQ/sB,KAAK8qB,IAAM,UAAY,SAAW9qB,KAAKwE,SAAS,IAAM,KAiChE,IAAIwoB,EAAQ,CACV,GACA,IACA,KACA,MACA,OACA,QACA,SACA,UACA,WACA,YACA,aACA,cACA,eACA,gBACA,iBACA,kBACA,mBACA,oBACA,qBACA,sBACA,uBACA,wBACA,yBACA,0BACA,2BACA,6BAGEC,EAAa,CACf,EAAG,EACH,GAAI,GAAI,GAAI,GAAI,GAAI,EAAG,EACvB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAClB,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAGhBC,EAAa,CACf,EAAG,EACH,SAAU,SAAU,SAAU,SAAU,SAAU,SAAU,SAC5D,SAAU,IAAU,SAAU,SAAU,SAAU,QAAS,SAC3D,SAAU,SAAU,SAAU,SAAU,KAAU,QAAS,QAC3D,QAAS,QAAS,QAAS,SAAU,SAAU,SAAU,SACzD,MAAU,SAAU,SAAU,SAAU,SAAU,SAAU,UAsjB9D,SAASC,EAAYpuB,EAAMysB,EAAK4B,GAC9BA,EAAIxC,SAAWY,EAAIZ,SAAW7rB,EAAK6rB,SACnC,IAAIrsB,EAAOQ,EAAKP,OAASgtB,EAAIhtB,OAAU,EACvC4uB,EAAI5uB,OAASD,EACbA,EAAOA,EAAM,EAAK,EAGlB,IAAIyC,EAAoB,EAAhBjC,EAAK8rB,MAAM,GACfwC,EAAmB,EAAf7B,EAAIX,MAAM,GACd5Y,EAAIjR,EAAIqsB,EAERC,EAAS,SAAJrb,EACLsb,EAAStb,EAAI,SAAa,EAC9Bmb,EAAIvC,MAAM,GAAKyC,EAEf,IAAK,IAAIE,EAAI,EAAGA,EAAIjvB,EAAKivB,IAAK,CAM5B,IAHA,IAAIC,EAASF,IAAU,GACnBG,EAAgB,SAARH,EACRI,EAAO/Z,KAAKwD,IAAIoW,EAAGhC,EAAIhtB,OAAS,GAC3BgnB,EAAI5R,KAAK6X,IAAI,EAAG+B,EAAIzuB,EAAKP,OAAS,GAAIgnB,GAAKmI,EAAMnI,IAAK,CAC7D,IAAI/mB,EAAK+uB,EAAIhI,EAAK,EAIlBiI,IADAxb,GAFAjR,EAAoB,EAAhBjC,EAAK8rB,MAAMpsB,KACf4uB,EAAmB,EAAf7B,EAAIX,MAAMrF,IACFkI,GACG,SAAa,EAC5BA,EAAY,SAAJzb,EAEVmb,EAAIvC,MAAM2C,GAAa,EAARE,EACfH,EAAiB,EAATE,EAQV,OANc,IAAVF,EACFH,EAAIvC,MAAM2C,GAAa,EAARD,EAEfH,EAAI5uB,SAGC4uB,EAAIhB,QAzlBblgB,EAAG9K,UAAUoD,SAAW,SAAmBR,EAAM4pB,GAI/C,IAAIR,EACJ,GAHAQ,EAAoB,EAAVA,GAAe,EAGZ,MAJb5pB,EAAOA,GAAQ,KAIa,QAATA,EAAgB,CACjCopB,EAAM,GAGN,IAFA,IAAIjB,EAAM,EACNoB,EAAQ,EACH9uB,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAAK,CACpC,IAAIytB,EAAIlsB,KAAK6qB,MAAMpsB,GACfguB,GAA+B,UAArBP,GAAKC,EAAOoB,IAAmB/oB,SAAS,IAGpD4oB,EADY,KADdG,EAASrB,IAAO,GAAKC,EAAQ,WACV1tB,IAAMuB,KAAKxB,OAAS,EAC/BwuB,EAAM,EAAIP,EAAKjuB,QAAUiuB,EAAOW,EAEhCX,EAAOW,GAEfjB,GAAO,IACI,KACTA,GAAO,GACP1tB,KAMJ,IAHc,IAAV8uB,IACFH,EAAMG,EAAM/oB,SAAS,IAAM4oB,GAEtBA,EAAI5uB,OAASovB,IAAY,GAC9BR,EAAM,IAAMA,EAKd,OAHsB,IAAlBptB,KAAK4qB,WACPwC,EAAM,IAAMA,GAEPA,EAGT,GAAIppB,KAAiB,EAAPA,IAAaA,GAAQ,GAAKA,GAAQ,GAAI,CAElD,IAAI6pB,EAAYZ,EAAWjpB,GAEvB8pB,EAAYZ,EAAWlpB,GAC3BopB,EAAM,GACN,IAAIzO,EAAI3e,KAAK4sB,QAEb,IADAjO,EAAEiM,SAAW,GACLjM,EAAEyE,UAAU,CAClB,IAAInR,EAAI0M,EAAEoP,KAAKD,GAAWtpB,SAASR,GAMjCopB,GALFzO,EAAIA,EAAEqP,MAAMF,IAEL1K,SAGCnR,EAAImb,EAFJJ,EAAMa,EAAY5b,EAAEzT,QAAUyT,EAAImb,EAQ5C,IAHIptB,KAAKojB,WACPgK,EAAM,IAAMA,GAEPA,EAAI5uB,OAASovB,IAAY,GAC9BR,EAAM,IAAMA,EAKd,OAHsB,IAAlBptB,KAAK4qB,WACPwC,EAAM,IAAMA,GAEPA,EAGTjD,GAAO,EAAO,oCAGhBje,EAAG9K,UAAUiR,SAAW,WACtB,IAAI4b,EAAMjuB,KAAK6qB,MAAM,GASrB,OARoB,IAAhB7qB,KAAKxB,OACPyvB,GAAuB,SAAhBjuB,KAAK6qB,MAAM,GACO,IAAhB7qB,KAAKxB,QAAkC,IAAlBwB,KAAK6qB,MAAM,GAEzCoD,GAAO,iBAAoC,SAAhBjuB,KAAK6qB,MAAM,GAC7B7qB,KAAKxB,OAAS,GACvB2rB,GAAO,EAAO,8CAEU,IAAlBnqB,KAAK4qB,UAAmBqD,EAAMA,GAGxC/hB,EAAG9K,UAAU8sB,OAAS,WACpB,OAAOluB,KAAKwE,SAAS,KAGvB0H,EAAG9K,UAAUgR,SAAW,SAAmBuY,EAAQnsB,GAEjD,OADA2rB,EAAyB,qBAAXpa,GACP/P,KAAKmuB,YAAYpe,EAAQ4a,EAAQnsB,IAG1C0N,EAAG9K,UAAU6qB,QAAU,SAAkBtB,EAAQnsB,GAC/C,OAAOwB,KAAKmuB,YAAYxvB,MAAOgsB,EAAQnsB,IAGzC0N,EAAG9K,UAAU+sB,YAAc,SAAsBC,EAAWzD,EAAQnsB,GAClE,IAAI6vB,EAAaruB,KAAKquB,aAClBC,EAAY9vB,GAAUoV,KAAK6X,IAAI,EAAG4C,GACtClE,EAAOkE,GAAcC,EAAW,yCAChCnE,EAAOmE,EAAY,EAAG,+BAEtBtuB,KAAKosB,QACL,IAGIiB,EAAG5uB,EAHH8vB,EAA0B,OAAX5D,EACfpF,EAAM,IAAI6I,EAAUE,GAGpBE,EAAIxuB,KAAK4sB,QACb,GAAK2B,EAYE,CACL,IAAK9vB,EAAI,GAAI+vB,EAAEpL,SAAU3kB,IACvB4uB,EAAImB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETnJ,EAAI9mB,GAAK4uB,EAGX,KAAO5uB,EAAI6vB,EAAW7vB,IACpB8mB,EAAI9mB,GAAK,MArBM,CAEjB,IAAKA,EAAI,EAAGA,EAAI6vB,EAAYD,EAAY5vB,IACtC8mB,EAAI9mB,GAAK,EAGX,IAAKA,EAAI,GAAI+vB,EAAEpL,SAAU3kB,IACvB4uB,EAAImB,EAAEC,MAAM,KACZD,EAAEE,OAAO,GAETnJ,EAAI+I,EAAY7vB,EAAI,GAAK4uB,EAe7B,OAAO9H,GAGL3R,KAAK+a,MACPziB,EAAG9K,UAAUwtB,WAAa,SAAqB1C,GAC7C,OAAO,GAAKtY,KAAK+a,MAAMzC,IAGzBhgB,EAAG9K,UAAUwtB,WAAa,SAAqB1C,GAC7C,IAAI2C,EAAI3C,EACJja,EAAI,EAiBR,OAhBI4c,GAAK,OACP5c,GAAK,GACL4c,KAAO,IAELA,GAAK,KACP5c,GAAK,EACL4c,KAAO,GAELA,GAAK,IACP5c,GAAK,EACL4c,KAAO,GAELA,GAAK,IACP5c,GAAK,EACL4c,KAAO,GAEF5c,EAAI4c,GAIf3iB,EAAG9K,UAAU0tB,UAAY,SAAoB5C,GAE3C,GAAU,IAANA,EAAS,OAAO,GAEpB,IAAI2C,EAAI3C,EACJja,EAAI,EAoBR,OAnBqB,KAAZ,KAAJ4c,KACH5c,GAAK,GACL4c,KAAO,IAEU,KAAV,IAAJA,KACH5c,GAAK,EACL4c,KAAO,GAES,KAAT,GAAJA,KACH5c,GAAK,EACL4c,KAAO,GAES,KAAT,EAAJA,KACH5c,GAAK,EACL4c,KAAO,GAES,KAAT,EAAJA,IACH5c,IAEKA,GAIT/F,EAAG9K,UAAU2tB,UAAY,WACvB,IAAI7C,EAAIlsB,KAAK6qB,MAAM7qB,KAAKxB,OAAS,GAC7BwwB,EAAKhvB,KAAK4uB,WAAW1C,GACzB,OAA2B,IAAnBlsB,KAAKxB,OAAS,GAAUwwB,GAiBlC9iB,EAAG9K,UAAU6tB,SAAW,WACtB,GAAIjvB,KAAKojB,SAAU,OAAO,EAG1B,IADA,IAAInR,EAAI,EACCxT,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAAK,CACpC,IAAI4uB,EAAIrtB,KAAK8uB,UAAU9uB,KAAK6qB,MAAMpsB,IAElC,GADAwT,GAAKob,EACK,KAANA,EAAU,MAEhB,OAAOpb,GAGT/F,EAAG9K,UAAUitB,WAAa,WACxB,OAAOza,KAAKC,KAAK7T,KAAK+uB,YAAc,IAGtC7iB,EAAG9K,UAAUmjB,OAAS,SAAiB2K,GACrC,OAAsB,IAAlBlvB,KAAK4qB,SACA5qB,KAAKmvB,MAAMC,MAAMF,GAAO3b,MAAM,GAEhCvT,KAAK4sB,SAGd1gB,EAAG9K,UAAUojB,SAAW,SAAmB0K,GACzC,OAAIlvB,KAAKqvB,MAAMH,EAAQ,GACdlvB,KAAKsvB,KAAKJ,GAAO3b,MAAM,GAAGgc,OAE5BvvB,KAAK4sB,SAGd1gB,EAAG9K,UAAU8nB,MAAQ,WACnB,OAAyB,IAAlBlpB,KAAK4qB,UAId1e,EAAG9K,UAAUouB,IAAM,WACjB,OAAOxvB,KAAK4sB,QAAQ2C,QAGtBrjB,EAAG9K,UAAUmuB,KAAO,WAKlB,OAJKvvB,KAAKojB,WACRpjB,KAAK4qB,UAAY,GAGZ5qB,MAITkM,EAAG9K,UAAUquB,KAAO,SAAejE,GACjC,KAAOxrB,KAAKxB,OAASgtB,EAAIhtB,QACvBwB,KAAK6qB,MAAM7qB,KAAKxB,UAAY,EAG9B,IAAK,IAAIC,EAAI,EAAGA,EAAI+sB,EAAIhtB,OAAQC,IAC9BuB,KAAK6qB,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,GAAK+sB,EAAIX,MAAMpsB,GAG5C,OAAOuB,KAAKosB,SAGdlgB,EAAG9K,UAAUsuB,IAAM,SAAclE,GAE/B,OADArB,EAA0C,KAAlCnqB,KAAK4qB,SAAWY,EAAIZ,WACrB5qB,KAAKyvB,KAAKjE,IAInBtf,EAAG9K,UAAUmoB,GAAK,SAAaiC,GAC7B,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQ8C,IAAIlE,GAC/CA,EAAIoB,QAAQ8C,IAAI1vB,OAGzBkM,EAAG9K,UAAUuuB,IAAM,SAAcnE,GAC/B,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQ6C,KAAKjE,GAChDA,EAAIoB,QAAQ6C,KAAKzvB,OAI1BkM,EAAG9K,UAAUwuB,MAAQ,SAAgBpE,GAEnC,IAAI6B,EAEFA,EADErtB,KAAKxB,OAASgtB,EAAIhtB,OAChBgtB,EAEAxrB,KAGN,IAAK,IAAIvB,EAAI,EAAGA,EAAI4uB,EAAE7uB,OAAQC,IAC5BuB,KAAK6qB,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,GAAK+sB,EAAIX,MAAMpsB,GAK5C,OAFAuB,KAAKxB,OAAS6uB,EAAE7uB,OAETwB,KAAKosB,SAGdlgB,EAAG9K,UAAUyuB,KAAO,SAAerE,GAEjC,OADArB,EAA0C,KAAlCnqB,KAAK4qB,SAAWY,EAAIZ,WACrB5qB,KAAK4vB,MAAMpE,IAIpBtf,EAAG9K,UAAUkoB,IAAM,SAAckC,GAC/B,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQiD,KAAKrE,GAChDA,EAAIoB,QAAQiD,KAAK7vB,OAG1BkM,EAAG9K,UAAU0uB,KAAO,SAAetE,GACjC,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQgD,MAAMpE,GACjDA,EAAIoB,QAAQgD,MAAM5vB,OAI3BkM,EAAG9K,UAAU2uB,MAAQ,SAAgBvE,GAEnC,IAAIxqB,EACAqsB,EACArtB,KAAKxB,OAASgtB,EAAIhtB,QACpBwC,EAAIhB,KACJqtB,EAAI7B,IAEJxqB,EAAIwqB,EACJ6B,EAAIrtB,MAGN,IAAK,IAAIvB,EAAI,EAAGA,EAAI4uB,EAAE7uB,OAAQC,IAC5BuB,KAAK6qB,MAAMpsB,GAAKuC,EAAE6pB,MAAMpsB,GAAK4uB,EAAExC,MAAMpsB,GAGvC,GAAIuB,OAASgB,EACX,KAAOvC,EAAIuC,EAAExC,OAAQC,IACnBuB,KAAK6qB,MAAMpsB,GAAKuC,EAAE6pB,MAAMpsB,GAM5B,OAFAuB,KAAKxB,OAASwC,EAAExC,OAETwB,KAAKosB,SAGdlgB,EAAG9K,UAAU4uB,KAAO,SAAexE,GAEjC,OADArB,EAA0C,KAAlCnqB,KAAK4qB,SAAWY,EAAIZ,WACrB5qB,KAAK+vB,MAAMvE,IAIpBtf,EAAG9K,UAAUooB,IAAM,SAAcgC,GAC/B,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQoD,KAAKxE,GAChDA,EAAIoB,QAAQoD,KAAKhwB,OAG1BkM,EAAG9K,UAAU6uB,KAAO,SAAezE,GACjC,OAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQmD,MAAMvE,GACjDA,EAAIoB,QAAQmD,MAAM/vB,OAI3BkM,EAAG9K,UAAUguB,MAAQ,SAAgBF,GACnC/E,EAAwB,kBAAV+E,GAAsBA,GAAS,GAE7C,IAAIgB,EAAsC,EAAxBtc,KAAKC,KAAKqb,EAAQ,IAChCiB,EAAWjB,EAAQ,GAGvBlvB,KAAK6sB,QAAQqD,GAETC,EAAW,GACbD,IAIF,IAAK,IAAIzxB,EAAI,EAAGA,EAAIyxB,EAAazxB,IAC/BuB,KAAK6qB,MAAMpsB,GAAsB,UAAhBuB,KAAK6qB,MAAMpsB,GAS9B,OALI0xB,EAAW,IACbnwB,KAAK6qB,MAAMpsB,IAAMuB,KAAK6qB,MAAMpsB,GAAM,UAAc,GAAK0xB,GAIhDnwB,KAAKosB,SAGdlgB,EAAG9K,UAAUkuB,KAAO,SAAeJ,GACjC,OAAOlvB,KAAK4sB,QAAQwC,MAAMF,IAI5BhjB,EAAG9K,UAAUgvB,KAAO,SAAeC,EAAKjG,GACtCD,EAAsB,kBAARkG,GAAoBA,GAAO,GAEzC,IAAIlE,EAAOkE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAUjB,OARArwB,KAAK6sB,QAAQV,EAAM,GAGjBnsB,KAAK6qB,MAAMsB,GADT/B,EACgBpqB,KAAK6qB,MAAMsB,GAAQ,GAAKmE,EAExBtwB,KAAK6qB,MAAMsB,KAAS,GAAKmE,GAGtCtwB,KAAKosB,SAIdlgB,EAAG9K,UAAU4S,KAAO,SAAewX,GACjC,IAAIvZ,EAkBAjR,EAAGqsB,EAfP,GAAsB,IAAlBrtB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,SAI7B,OAHA5qB,KAAK4qB,SAAW,EAChB3Y,EAAIjS,KAAKuwB,KAAK/E,GACdxrB,KAAK4qB,UAAY,EACV5qB,KAAK8sB,YAGP,GAAsB,IAAlB9sB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,SAIpC,OAHAY,EAAIZ,SAAW,EACf3Y,EAAIjS,KAAKuwB,KAAK/E,GACdA,EAAIZ,SAAW,EACR3Y,EAAE6a,YAKP9sB,KAAKxB,OAASgtB,EAAIhtB,QACpBwC,EAAIhB,KACJqtB,EAAI7B,IAEJxqB,EAAIwqB,EACJ6B,EAAIrtB,MAIN,IADA,IAAIutB,EAAQ,EACH9uB,EAAI,EAAGA,EAAI4uB,EAAE7uB,OAAQC,IAC5BwT,GAAkB,EAAbjR,EAAE6pB,MAAMpsB,KAAwB,EAAb4uB,EAAExC,MAAMpsB,IAAU8uB,EAC1CvtB,KAAK6qB,MAAMpsB,GAAS,SAAJwT,EAChBsb,EAAQtb,IAAM,GAEhB,KAAiB,IAAVsb,GAAe9uB,EAAIuC,EAAExC,OAAQC,IAClCwT,GAAkB,EAAbjR,EAAE6pB,MAAMpsB,IAAU8uB,EACvBvtB,KAAK6qB,MAAMpsB,GAAS,SAAJwT,EAChBsb,EAAQtb,IAAM,GAIhB,GADAjS,KAAKxB,OAASwC,EAAExC,OACF,IAAV+uB,EACFvtB,KAAK6qB,MAAM7qB,KAAKxB,QAAU+uB,EAC1BvtB,KAAKxB,cAEA,GAAIwC,IAAMhB,KACf,KAAOvB,EAAIuC,EAAExC,OAAQC,IACnBuB,KAAK6qB,MAAMpsB,GAAKuC,EAAE6pB,MAAMpsB,GAI5B,OAAOuB,MAITkM,EAAG9K,UAAUkW,IAAM,SAAckU,GAC/B,IAAIjG,EACJ,OAAqB,IAAjBiG,EAAIZ,UAAoC,IAAlB5qB,KAAK4qB,UAC7BY,EAAIZ,SAAW,EACfrF,EAAMvlB,KAAKqX,IAAImU,GACfA,EAAIZ,UAAY,EACTrF,GACmB,IAAjBiG,EAAIZ,UAAoC,IAAlB5qB,KAAK4qB,UACpC5qB,KAAK4qB,SAAW,EAChBrF,EAAMiG,EAAInU,IAAIrX,MACdA,KAAK4qB,SAAW,EACTrF,GAGLvlB,KAAKxB,OAASgtB,EAAIhtB,OAAewB,KAAK4sB,QAAQ5Y,KAAKwX,GAEhDA,EAAIoB,QAAQ5Y,KAAKhU,OAI1BkM,EAAG9K,UAAUmvB,KAAO,SAAe/E,GAEjC,GAAqB,IAAjBA,EAAIZ,SAAgB,CACtBY,EAAIZ,SAAW,EACf,IAAI3Y,EAAIjS,KAAKgU,KAAKwX,GAElB,OADAA,EAAIZ,SAAW,EACR3Y,EAAE6a,YAGJ,GAAsB,IAAlB9sB,KAAK4qB,SAId,OAHA5qB,KAAK4qB,SAAW,EAChB5qB,KAAKgU,KAAKwX,GACVxrB,KAAK4qB,SAAW,EACT5qB,KAAK8sB,YAId,IAWI9rB,EAAGqsB,EAXHzB,EAAM5rB,KAAK4rB,IAAIJ,GAGnB,GAAY,IAARI,EAIF,OAHA5rB,KAAK4qB,SAAW,EAChB5qB,KAAKxB,OAAS,EACdwB,KAAK6qB,MAAM,GAAK,EACT7qB,KAKL4rB,EAAM,GACR5qB,EAAIhB,KACJqtB,EAAI7B,IAEJxqB,EAAIwqB,EACJ6B,EAAIrtB,MAIN,IADA,IAAIutB,EAAQ,EACH9uB,EAAI,EAAGA,EAAI4uB,EAAE7uB,OAAQC,IAE5B8uB,GADAtb,GAAkB,EAAbjR,EAAE6pB,MAAMpsB,KAAwB,EAAb4uB,EAAExC,MAAMpsB,IAAU8uB,IAC7B,GACbvtB,KAAK6qB,MAAMpsB,GAAS,SAAJwT,EAElB,KAAiB,IAAVsb,GAAe9uB,EAAIuC,EAAExC,OAAQC,IAElC8uB,GADAtb,GAAkB,EAAbjR,EAAE6pB,MAAMpsB,IAAU8uB,IACV,GACbvtB,KAAK6qB,MAAMpsB,GAAS,SAAJwT,EAIlB,GAAc,IAAVsb,GAAe9uB,EAAIuC,EAAExC,QAAUwC,IAAMhB,KACvC,KAAOvB,EAAIuC,EAAExC,OAAQC,IACnBuB,KAAK6qB,MAAMpsB,GAAKuC,EAAE6pB,MAAMpsB,GAU5B,OANAuB,KAAKxB,OAASoV,KAAK6X,IAAIzrB,KAAKxB,OAAQC,GAEhCuC,IAAMhB,OACRA,KAAK4qB,SAAW,GAGX5qB,KAAKosB,SAIdlgB,EAAG9K,UAAUiW,IAAM,SAAcmU,GAC/B,OAAOxrB,KAAK4sB,QAAQ2D,KAAK/E,IA+C3B,IAAIgF,EAAc,SAAsBzxB,EAAMysB,EAAK4B,GACjD,IAIIE,EACAmD,EACAzB,EANAhuB,EAAIjC,EAAK8rB,MACTwC,EAAI7B,EAAIX,MACR5oB,EAAImrB,EAAIvC,MACRlM,EAAI,EAIJ+R,EAAY,EAAP1vB,EAAE,GACP2vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP7vB,EAAE,GACP8vB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPhwB,EAAE,GACPiwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnwB,EAAE,GACPowB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtwB,EAAE,GACPuwB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzwB,EAAE,GACP0wB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5wB,EAAE,GACP6wB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/wB,EAAE,GACPgxB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPlxB,EAAE,GACPmxB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPrxB,EAAE,GACPsxB,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPnF,EAAE,GACPoF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPtF,EAAE,GACPuF,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAPzF,EAAE,GACP0F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP5F,EAAE,GACP6F,EAAW,KAALD,EACNE,EAAMF,IAAO,GACbG,EAAY,EAAP/F,EAAE,GACPgG,EAAW,KAALD,EACNE,GAAMF,IAAO,GACbG,GAAY,EAAPlG,EAAE,GACPmG,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPrG,EAAE,GACPsG,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAPxG,EAAE,GACPyG,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP3G,EAAE,GACP4G,GAAW,KAALD,GACNE,GAAMF,KAAO,GACbG,GAAY,EAAP9G,EAAE,GACP+G,GAAW,KAALD,GACNE,GAAMF,KAAO,GAEjB/G,EAAIxC,SAAW7rB,EAAK6rB,SAAWY,EAAIZ,SACnCwC,EAAI5uB,OAAS,GAMb,IAAI81B,IAAQ3V,GAJZ2O,EAAK1Z,KAAK2gB,KAAK5D,EAAK8B,IAIE,KAAa,MAFnChC,GADAA,EAAM7c,KAAK2gB,KAAK5D,EAAK+B,IACR9e,KAAK2gB,KAAK3D,EAAK6B,GAAQ,KAEU,IAAO,EACrD9T,IAFAqQ,EAAKpb,KAAK2gB,KAAK3D,EAAK8B,KAEPjC,IAAQ,IAAO,IAAM6D,KAAO,IAAO,EAChDA,IAAM,SAENhH,EAAK1Z,KAAK2gB,KAAKzD,EAAK2B,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKzD,EAAK4B,IACR9e,KAAK2gB,KAAKxD,EAAK0B,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKxD,EAAK2B,GAKpB,IAAI8B,IAAQ7V,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKiC,GAAQ,GAIZ,KAAa,MAFnCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKkC,GAAQ,GACvBjf,KAAK2gB,KAAK3D,EAAKgC,GAAQ,KAEU,IAAO,EACrDjU,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKiC,GAAQ,IAErBpC,IAAQ,IAAO,IAAM+D,KAAO,IAAO,EAChDA,IAAM,SAENlH,EAAK1Z,KAAK2gB,KAAKtD,EAAKwB,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKtD,EAAKyB,IACR9e,KAAK2gB,KAAKrD,EAAKuB,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKrD,EAAKwB,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAK8B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAK+B,GAAQ,GACvBjf,KAAK2gB,KAAKxD,EAAK6B,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAK8B,GAAQ,EAKlC,IAAI4B,IAAQ9V,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKoC,GAAQ,GAIZ,KAAa,MAFnCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKqC,GAAQ,GACvBpf,KAAK2gB,KAAK3D,EAAKmC,GAAQ,KAEU,IAAO,EACrDpU,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKoC,GAAQ,IAErBvC,IAAQ,IAAO,IAAMgE,KAAO,IAAO,EAChDA,IAAM,SAENnH,EAAK1Z,KAAK2gB,KAAKnD,EAAKqB,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKnD,EAAKsB,IACR9e,KAAK2gB,KAAKlD,EAAKoB,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKlD,EAAKqB,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAK2B,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAK4B,GAAQ,GACvBjf,KAAK2gB,KAAKrD,EAAK0B,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAK2B,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKiC,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKkC,GAAQ,GACvBpf,KAAK2gB,KAAKxD,EAAKgC,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKiC,GAAQ,EAKlC,IAAI0B,IAAQ/V,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKuC,GAAQ,GAIZ,KAAa,MAFnCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKwC,GAAQ,GACvBvf,KAAK2gB,KAAK3D,EAAKsC,GAAQ,KAEU,IAAO,EACrDvU,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKuC,GAAQ,IAErB1C,IAAQ,IAAO,IAAMiE,KAAO,IAAO,EAChDA,IAAM,SAENpH,EAAK1Z,KAAK2gB,KAAKhD,EAAKkB,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKhD,EAAKmB,IACR9e,KAAK2gB,KAAK/C,EAAKiB,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAK/C,EAAKkB,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKwB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKyB,GAAQ,GACvBjf,KAAK2gB,KAAKlD,EAAKuB,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKwB,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAK8B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAK+B,GAAQ,GACvBpf,KAAK2gB,KAAKrD,EAAK6B,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAK8B,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKoC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKqC,GAAQ,GACvBvf,KAAK2gB,KAAKxD,EAAKmC,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKoC,GAAQ,EAKlC,IAAIwB,IAAQhW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAK0C,GAAQ,GAIZ,KAAa,MAFnC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAK2C,IAAQ,GACvB1f,KAAK2gB,KAAK3D,EAAKyC,GAAQ,KAEU,IAAO,EACrD1U,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAK0C,IAAQ,IAErB7C,IAAQ,IAAO,IAAMkE,KAAO,IAAO,EAChDA,IAAM,SAENrH,EAAK1Z,KAAK2gB,KAAK7C,EAAKe,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAK7C,EAAKgB,IACR9e,KAAK2gB,KAAK5C,EAAKc,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAK5C,EAAKe,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKqB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKsB,GAAQ,GACvBjf,KAAK2gB,KAAK/C,EAAKoB,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKqB,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAK2B,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAK4B,GAAQ,GACvBpf,KAAK2gB,KAAKlD,EAAK0B,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAK2B,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKiC,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKkC,GAAQ,GACvBvf,KAAK2gB,KAAKrD,EAAKgC,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKiC,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKuC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKwC,IAAQ,GACvB1f,KAAK2gB,KAAKxD,EAAKsC,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKuC,IAAQ,EAKlC,IAAIsB,IAAQjW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAK6C,IAAQ,GAIZ,KAAa,MAFnC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAK8C,IAAQ,GACvB7f,KAAK2gB,KAAK3D,EAAK4C,IAAQ,KAEU,IAAO,EACrD7U,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAK6C,IAAQ,IAErBhD,IAAQ,IAAO,IAAMmE,KAAO,IAAO,EAChDA,IAAM,SAENtH,EAAK1Z,KAAK2gB,KAAK1C,EAAKY,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAK1C,EAAKa,IACR9e,KAAK2gB,KAAKzC,EAAKW,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKzC,EAAKY,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKkB,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKmB,GAAQ,GACvBjf,KAAK2gB,KAAK5C,EAAKiB,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKkB,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKwB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKyB,GAAQ,GACvBpf,KAAK2gB,KAAK/C,EAAKuB,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKwB,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAK8B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAK+B,GAAQ,GACvBvf,KAAK2gB,KAAKlD,EAAK6B,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAK8B,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKoC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKqC,IAAQ,GACvB1f,KAAK2gB,KAAKrD,EAAKmC,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKoC,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAK0C,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAK2C,IAAQ,GACvB7f,KAAK2gB,KAAKxD,EAAKyC,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAK0C,IAAQ,EAKlC,IAAIoB,IAAQlW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKgD,IAAQ,GAIZ,KAAa,MAFnClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKiD,IAAQ,GACvBhgB,KAAK2gB,KAAK3D,EAAK+C,IAAQ,KAEU,IAAO,EACrDhV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKgD,IAAQ,IAErBnD,IAAQ,IAAO,IAAMoE,KAAO,IAAO,EAChDA,IAAM,SAENvH,EAAK1Z,KAAK2gB,KAAKvC,EAAKS,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKvC,EAAKU,IACR9e,KAAK2gB,KAAKtC,EAAKQ,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKtC,EAAKS,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKe,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKgB,GAAQ,GACvBjf,KAAK2gB,KAAKzC,EAAKc,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKe,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKqB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKsB,GAAQ,GACvBpf,KAAK2gB,KAAK5C,EAAKoB,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKqB,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAK2B,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAK4B,GAAQ,GACvBvf,KAAK2gB,KAAK/C,EAAK0B,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAK2B,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKiC,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKkC,IAAQ,GACvB1f,KAAK2gB,KAAKlD,EAAKgC,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKiC,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKuC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKwC,IAAQ,GACvB7f,KAAK2gB,KAAKrD,EAAKsC,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKuC,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAK6C,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAK8C,IAAQ,GACvBhgB,KAAK2gB,KAAKxD,EAAK4C,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAK6C,IAAQ,EAKlC,IAAIkB,IAAQnW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKmD,IAAQ,GAIZ,KAAa,MAFnCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKoD,IAAQ,GACvBngB,KAAK2gB,KAAK3D,EAAKkD,IAAQ,KAEU,IAAO,EACrDnV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKmD,IAAQ,IAErBtD,IAAQ,IAAO,IAAMqE,KAAO,IAAO,EAChDA,IAAM,SAENxH,EAAK1Z,KAAK2gB,KAAKpC,EAAKM,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKpC,EAAKO,IACR9e,KAAK2gB,KAAKnC,EAAKK,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKnC,EAAKM,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKY,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKa,GAAQ,GACvBjf,KAAK2gB,KAAKtC,EAAKW,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKY,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKkB,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKmB,GAAQ,GACvBpf,KAAK2gB,KAAKzC,EAAKiB,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKkB,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKwB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKyB,GAAQ,GACvBvf,KAAK2gB,KAAK5C,EAAKuB,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKwB,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAK8B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAK+B,IAAQ,GACvB1f,KAAK2gB,KAAK/C,EAAK6B,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAK8B,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKoC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKqC,IAAQ,GACvB7f,KAAK2gB,KAAKlD,EAAKmC,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKoC,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAK0C,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAK2C,IAAQ,GACvBhgB,KAAK2gB,KAAKrD,EAAKyC,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAK0C,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKgD,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKiD,IAAQ,GACvBngB,KAAK2gB,KAAKxD,EAAK+C,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKgD,IAAQ,EAKlC,IAAIgB,IAAQpW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKsD,IAAQ,GAIZ,KAAa,MAFnCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAKuD,IAAQ,GACvBtgB,KAAK2gB,KAAK3D,EAAKqD,IAAQ,KAEU,IAAO,EACrDtV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKsD,IAAQ,IAErBzD,IAAQ,IAAO,IAAMsE,KAAO,IAAO,EAChDA,IAAM,SAENzH,EAAK1Z,KAAK2gB,KAAKjC,EAAKG,GAEpBhC,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKI,IACR9e,KAAK2gB,KAAKhC,EAAKE,GAAQ,EACpCzD,EAAKpb,KAAK2gB,KAAKhC,EAAKG,GACpBpF,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKS,GAAQ,EAElCnC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKU,GAAQ,GACvBjf,KAAK2gB,KAAKnC,EAAKQ,GAAQ,EACpC5D,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKS,GAAQ,EAClCvF,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKe,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKgB,GAAQ,GACvBpf,KAAK2gB,KAAKtC,EAAKc,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKe,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKqB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKsB,GAAQ,GACvBvf,KAAK2gB,KAAKzC,EAAKoB,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKqB,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAK2B,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAK4B,IAAQ,GACvB1f,KAAK2gB,KAAK5C,EAAK0B,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAK2B,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKiC,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKkC,IAAQ,GACvB7f,KAAK2gB,KAAK/C,EAAKgC,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKiC,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKuC,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKwC,IAAQ,GACvBhgB,KAAK2gB,KAAKlD,EAAKsC,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKuC,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAK6C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAK8C,IAAQ,GACvBngB,KAAK2gB,KAAKrD,EAAK4C,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAK6C,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKmD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKoD,IAAQ,GACvBtgB,KAAK2gB,KAAKxD,EAAKkD,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKmD,IAAQ,EAKlC,IAAIc,IAAQrW,GAJZ2O,EAAMA,EAAK1Z,KAAK2gB,KAAK5D,EAAKyD,IAAQ,GAIZ,KAAa,MAFnC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK5D,EAAK0D,IAAQ,GACvBzgB,KAAK2gB,KAAK3D,EAAKwD,IAAQ,KAEU,IAAO,EACrDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK3D,EAAKyD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMuE,KAAO,IAAO,EAChDA,IAAM,SAEN1H,EAAK1Z,KAAK2gB,KAAKjC,EAAKM,GAEpBnC,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKO,IACRjf,KAAK2gB,KAAKhC,EAAKK,GAAQ,EACpC5D,EAAKpb,KAAK2gB,KAAKhC,EAAKM,GACpBvF,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKY,GAAQ,EAElCtC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKa,GAAQ,GACvBpf,KAAK2gB,KAAKnC,EAAKW,GAAQ,EACpC/D,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKY,GAAQ,EAClC1F,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKkB,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKmB,GAAQ,GACvBvf,KAAK2gB,KAAKtC,EAAKiB,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKkB,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKwB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKyB,IAAQ,GACvB1f,KAAK2gB,KAAKzC,EAAKuB,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKwB,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAK8B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAK+B,IAAQ,GACvB7f,KAAK2gB,KAAK5C,EAAK6B,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAK8B,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKoC,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKqC,IAAQ,GACvBhgB,KAAK2gB,KAAK/C,EAAKmC,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKoC,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAK0C,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAK2C,IAAQ,GACvBngB,KAAK2gB,KAAKlD,EAAKyC,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAK0C,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKgD,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKiD,IAAQ,GACvBtgB,KAAK2gB,KAAKrD,EAAK+C,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKgD,IAAQ,EAKlC,IAAIe,IAAStW,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKzD,EAAKsD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKzD,EAAKuD,IAAQ,GACvBzgB,KAAK2gB,KAAKxD,EAAKqD,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKxD,EAAKsD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMwE,KAAQ,IAAO,EACjDA,IAAO,SAEP3H,EAAK1Z,KAAK2gB,KAAKjC,EAAKS,GAEpBtC,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKU,IACRpf,KAAK2gB,KAAKhC,EAAKQ,GAAQ,EACpC/D,EAAKpb,KAAK2gB,KAAKhC,EAAKS,GACpB1F,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKe,GAAQ,EAElCzC,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKgB,GAAQ,GACvBvf,KAAK2gB,KAAKnC,EAAKc,GAAQ,EACpClE,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKe,GAAQ,EAClC7F,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKqB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKsB,IAAQ,GACvB1f,KAAK2gB,KAAKtC,EAAKoB,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKqB,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAK2B,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAK4B,IAAQ,GACvB7f,KAAK2gB,KAAKzC,EAAK0B,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAK2B,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKiC,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKkC,IAAQ,GACvBhgB,KAAK2gB,KAAK5C,EAAKgC,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKiC,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAKuC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAKwC,IAAQ,GACvBngB,KAAK2gB,KAAK/C,EAAKsC,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAKuC,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAK6C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAK8C,IAAQ,GACvBtgB,KAAK2gB,KAAKlD,EAAK4C,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAK6C,IAAQ,EAKlC,IAAIgB,IAASvW,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKtD,EAAKmD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKtD,EAAKoD,IAAQ,GACvBzgB,KAAK2gB,KAAKrD,EAAKkD,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKrD,EAAKmD,IAAQ,IAErB5D,IAAQ,IAAO,IAAMyE,KAAQ,IAAO,EACjDA,IAAO,SAEP5H,EAAK1Z,KAAK2gB,KAAKjC,EAAKY,GAEpBzC,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKa,IACRvf,KAAK2gB,KAAKhC,EAAKW,GAAQ,EACpClE,EAAKpb,KAAK2gB,KAAKhC,EAAKY,GACpB7F,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKkB,GAAQ,EAElC5C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKmB,IAAQ,GACvB1f,KAAK2gB,KAAKnC,EAAKiB,GAAQ,EACpCrE,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKkB,IAAQ,EAClChG,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKwB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKyB,IAAQ,GACvB7f,KAAK2gB,KAAKtC,EAAKuB,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKwB,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAK8B,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAK+B,IAAQ,GACvBhgB,KAAK2gB,KAAKzC,EAAK6B,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAK8B,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKoC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKqC,IAAQ,GACvBngB,KAAK2gB,KAAK5C,EAAKmC,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKoC,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAK0C,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAK2C,IAAQ,GACvBtgB,KAAK2gB,KAAK/C,EAAKyC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAK0C,IAAQ,EAKlC,IAAIiB,IAASxW,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKnD,EAAKgD,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKnD,EAAKiD,IAAQ,GACvBzgB,KAAK2gB,KAAKlD,EAAK+C,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKlD,EAAKgD,IAAQ,IAErB5D,IAAQ,IAAO,IAAM0E,KAAQ,IAAO,EACjDA,IAAO,SAEP7H,EAAK1Z,KAAK2gB,KAAKjC,EAAKe,GAEpB5C,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKgB,KACR1f,KAAK2gB,KAAKhC,EAAKc,GAAQ,EACpCrE,EAAKpb,KAAK2gB,KAAKhC,EAAKe,IACpBhG,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKqB,IAAQ,EAElC/C,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKsB,IAAQ,GACvB7f,KAAK2gB,KAAKnC,EAAKoB,IAAQ,EACpCxE,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKqB,IAAQ,EAClCnG,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAK2B,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAK4B,IAAQ,GACvBhgB,KAAK2gB,KAAKtC,EAAK0B,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAK2B,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKiC,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKkC,IAAQ,GACvBngB,KAAK2gB,KAAKzC,EAAKgC,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKiC,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAKuC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAKwC,IAAQ,GACvBtgB,KAAK2gB,KAAK5C,EAAKsC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAKuC,IAAQ,EAKlC,IAAIkB,IAASzW,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKhD,EAAK6C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKhD,EAAK8C,IAAQ,GACvBzgB,KAAK2gB,KAAK/C,EAAK4C,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK/C,EAAK6C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM2E,KAAQ,IAAO,EACjDA,IAAO,SAEP9H,EAAK1Z,KAAK2gB,KAAKjC,EAAKkB,IAEpB/C,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKmB,KACR7f,KAAK2gB,KAAKhC,EAAKiB,IAAQ,EACpCxE,EAAKpb,KAAK2gB,KAAKhC,EAAKkB,IACpBnG,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKwB,IAAQ,EAElClD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKyB,IAAQ,GACvBhgB,KAAK2gB,KAAKnC,EAAKuB,IAAQ,EACpC3E,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKwB,IAAQ,EAClCtG,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAK8B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAK+B,IAAQ,GACvBngB,KAAK2gB,KAAKtC,EAAK6B,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAK8B,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKoC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKqC,IAAQ,GACvBtgB,KAAK2gB,KAAKzC,EAAKmC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKoC,IAAQ,EAKlC,IAAImB,IAAS1W,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAK7C,EAAK0C,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK7C,EAAK2C,IAAQ,GACvBzgB,KAAK2gB,KAAK5C,EAAKyC,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAK5C,EAAK0C,IAAQ,IAErB5D,IAAQ,IAAO,IAAM4E,KAAQ,IAAO,EACjDA,IAAO,SAEP/H,EAAK1Z,KAAK2gB,KAAKjC,EAAKqB,IAEpBlD,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKsB,KACRhgB,KAAK2gB,KAAKhC,EAAKoB,IAAQ,EACpC3E,EAAKpb,KAAK2gB,KAAKhC,EAAKqB,IACpBtG,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAK2B,IAAQ,EAElCrD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAK4B,IAAQ,GACvBngB,KAAK2gB,KAAKnC,EAAK0B,IAAQ,EACpC9E,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAK2B,IAAQ,EAClCzG,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKiC,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKkC,IAAQ,GACvBtgB,KAAK2gB,KAAKtC,EAAKgC,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKiC,IAAQ,EAKlC,IAAIoB,IAAS3W,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAK1C,EAAKuC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAK1C,EAAKwC,IAAQ,GACvBzgB,KAAK2gB,KAAKzC,EAAKsC,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKzC,EAAKuC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM6E,KAAQ,IAAO,EACjDA,IAAO,SAEPhI,EAAK1Z,KAAK2gB,KAAKjC,EAAKwB,IAEpBrD,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAKyB,KACRngB,KAAK2gB,KAAKhC,EAAKuB,IAAQ,EACpC9E,EAAKpb,KAAK2gB,KAAKhC,EAAKwB,IACpBzG,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAK8B,IAAQ,EAElCxD,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAK+B,IAAQ,GACvBtgB,KAAK2gB,KAAKnC,EAAK6B,IAAQ,EACpCjF,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAK8B,IAAQ,EAKlC,IAAIqB,IAAS5W,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKvC,EAAKoC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKvC,EAAKqC,IAAQ,GACvBzgB,KAAK2gB,KAAKtC,EAAKmC,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKtC,EAAKoC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM8E,KAAQ,IAAO,EACjDA,IAAO,SAEPjI,EAAK1Z,KAAK2gB,KAAKjC,EAAK2B,IAEpBxD,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAK4B,KACRtgB,KAAK2gB,KAAKhC,EAAK0B,IAAQ,EACpCjF,EAAKpb,KAAK2gB,KAAKhC,EAAK2B,IAKpB,IAAIsB,IAAS7W,GAJb2O,EAAMA,EAAK1Z,KAAK2gB,KAAKpC,EAAKiC,IAAQ,GAIX,KAAa,MAFpC3D,GADAA,EAAOA,EAAM7c,KAAK2gB,KAAKpC,EAAKkC,IAAQ,GACvBzgB,KAAK2gB,KAAKnC,EAAKgC,IAAQ,KAEW,IAAO,EACtDzV,IAFAqQ,EAAMA,EAAKpb,KAAK2gB,KAAKnC,EAAKiC,IAAQ,IAErB5D,IAAQ,IAAO,IAAM+E,KAAQ,IAAO,EACjDA,IAAO,SAMP,IAAIC,IAAS9W,GAJb2O,EAAK1Z,KAAK2gB,KAAKjC,EAAK8B,KAIG,KAAa,MAFpC3D,GADAA,EAAM7c,KAAK2gB,KAAKjC,EAAK+B,KACRzgB,KAAK2gB,KAAKhC,EAAK6B,IAAQ,KAEW,IAAO,EA0BtD,OAzBAzV,IAFAqQ,EAAKpb,KAAK2gB,KAAKhC,EAAK8B,MAEP5D,IAAQ,IAAO,IAAMgF,KAAQ,IAAO,EACjDA,IAAO,SACPxzB,EAAE,GAAKqyB,GACPryB,EAAE,GAAKuyB,GACPvyB,EAAE,GAAKwyB,GACPxyB,EAAE,GAAKyyB,GACPzyB,EAAE,GAAK0yB,GACP1yB,EAAE,GAAK2yB,GACP3yB,EAAE,GAAK4yB,GACP5yB,EAAE,GAAK6yB,GACP7yB,EAAE,GAAK8yB,GACP9yB,EAAE,GAAK+yB,GACP/yB,EAAE,IAAMgzB,GACRhzB,EAAE,IAAMizB,GACRjzB,EAAE,IAAMkzB,GACRlzB,EAAE,IAAMmzB,GACRnzB,EAAE,IAAMozB,GACRpzB,EAAE,IAAMqzB,GACRrzB,EAAE,IAAMszB,GACRtzB,EAAE,IAAMuzB,GACRvzB,EAAE,IAAMwzB,GACE,IAAN9W,IACF1c,EAAE,IAAM0c,EACRyO,EAAI5uB,UAEC4uB,GAiDT,SAASsI,EAAY32B,EAAMysB,EAAK4B,GAE9B,OADW,IAAIuI,GACHC,KAAK72B,EAAMysB,EAAK4B,GAsB9B,SAASuI,EAAM7N,EAAG+N,GAChB71B,KAAK8nB,EAAIA,EACT9nB,KAAK61B,EAAIA,EAvENjiB,KAAK2gB,OACR/D,EAAcrD,GAiDhBjhB,EAAG9K,UAAU00B,MAAQ,SAAgBtK,EAAK4B,GACxC,IAAI7H,EACAhnB,EAAMyB,KAAKxB,OAASgtB,EAAIhtB,OAW5B,OATE+mB,EADkB,KAAhBvlB,KAAKxB,QAAgC,KAAfgtB,EAAIhtB,OACtBgyB,EAAYxwB,KAAMwrB,EAAK4B,GACpB7uB,EAAM,GACT4uB,EAAWntB,KAAMwrB,EAAK4B,GACnB7uB,EAAM,KArDnB,SAAmBQ,EAAMysB,EAAK4B,GAC5BA,EAAIxC,SAAWY,EAAIZ,SAAW7rB,EAAK6rB,SACnCwC,EAAI5uB,OAASO,EAAKP,OAASgtB,EAAIhtB,OAI/B,IAFA,IAAI+uB,EAAQ,EACRwI,EAAU,EACLvI,EAAI,EAAGA,EAAIJ,EAAI5uB,OAAS,EAAGgvB,IAAK,CAGvC,IAAIC,EAASsI,EACbA,EAAU,EAGV,IAFA,IAAIrI,EAAgB,SAARH,EACRI,EAAO/Z,KAAKwD,IAAIoW,EAAGhC,EAAIhtB,OAAS,GAC3BgnB,EAAI5R,KAAK6X,IAAI,EAAG+B,EAAIzuB,EAAKP,OAAS,GAAIgnB,GAAKmI,EAAMnI,IAAK,CAC7D,IAAI/mB,EAAI+uB,EAAIhI,EAGRvT,GAFoB,EAAhBlT,EAAK8rB,MAAMpsB,KACI,EAAf+sB,EAAIX,MAAMrF,IAGd8H,EAAS,SAAJrb,EAGTyb,EAAa,UADbJ,EAAMA,EAAKI,EAAS,GAIpBqI,IAFAtI,GAHAA,EAAUA,GAAWxb,EAAI,SAAa,GAAM,IAGxBqb,IAAO,IAAO,KAEZ,GACtBG,GAAU,SAEZL,EAAIvC,MAAM2C,GAAKE,EACfH,EAAQE,EACRA,EAASsI,EAQX,OANc,IAAVxI,EACFH,EAAIvC,MAAM2C,GAAKD,EAEfH,EAAI5uB,SAGC4uB,EAAIhB,QAgBH4J,CAASh2B,KAAMwrB,EAAK4B,GAEpBsI,EAAW11B,KAAMwrB,EAAK4B,GAGvB7H,GAWToQ,EAAKv0B,UAAU60B,QAAU,SAAkBC,GAGzC,IAFA,IAAIrH,EAAI,IAAIlwB,MAAMu3B,GACdC,EAAIjqB,EAAG9K,UAAUwtB,WAAWsH,GAAK,EAC5Bz3B,EAAI,EAAGA,EAAIy3B,EAAGz3B,IACrBowB,EAAEpwB,GAAKuB,KAAKo2B,OAAO33B,EAAG03B,EAAGD,GAG3B,OAAOrH,GAIT8G,EAAKv0B,UAAUg1B,OAAS,SAAiBtO,EAAGqO,EAAGD,GAC7C,GAAU,IAANpO,GAAWA,IAAMoO,EAAI,EAAG,OAAOpO,EAGnC,IADA,IAAIuO,EAAK,EACA53B,EAAI,EAAGA,EAAI03B,EAAG13B,IACrB43B,IAAW,EAAJvO,IAAWqO,EAAI13B,EAAI,EAC1BqpB,IAAM,EAGR,OAAOuO,GAKTV,EAAKv0B,UAAUk1B,QAAU,SAAkBC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GACpE,IAAK,IAAIz3B,EAAI,EAAGA,EAAIy3B,EAAGz3B,IACrBi4B,EAAKj4B,GAAK+3B,EAAID,EAAI93B,IAClBk4B,EAAKl4B,GAAKg4B,EAAIF,EAAI93B,KAItBk3B,EAAKv0B,UAAUw1B,UAAY,SAAoBJ,EAAKC,EAAKC,EAAMC,EAAMT,EAAGK,GACtEv2B,KAAKs2B,QAAQC,EAAKC,EAAKC,EAAKC,EAAMC,EAAMT,GAExC,IAAK,IAAI3zB,EAAI,EAAGA,EAAI2zB,EAAG3zB,IAAM,EAM3B,IALA,IAAI4zB,EAAI5zB,GAAK,EAETs0B,EAAQjjB,KAAKkjB,IAAI,EAAIljB,KAAKmjB,GAAKZ,GAC/Ba,EAAQpjB,KAAKqjB,IAAI,EAAIrjB,KAAKmjB,GAAKZ,GAE1B/vB,EAAI,EAAGA,EAAI8vB,EAAG9vB,GAAK+vB,EAI1B,IAHA,IAAIe,EAASL,EACTM,EAASH,EAEJxR,EAAI,EAAGA,EAAIjjB,EAAGijB,IAAK,CAC1B,IAAI4R,EAAKV,EAAKtwB,EAAIof,GACd6R,EAAKV,EAAKvwB,EAAIof,GAEd8R,EAAKZ,EAAKtwB,EAAIof,EAAIjjB,GAClBg1B,EAAKZ,EAAKvwB,EAAIof,EAAIjjB,GAElBi1B,EAAKN,EAASI,EAAKH,EAASI,EAEhCA,EAAKL,EAASK,EAAKJ,EAASG,EAC5BA,EAAKE,EAELd,EAAKtwB,EAAIof,GAAK4R,EAAKE,EACnBX,EAAKvwB,EAAIof,GAAK6R,EAAKE,EAEnBb,EAAKtwB,EAAIof,EAAIjjB,GAAK60B,EAAKE,EACvBX,EAAKvwB,EAAIof,EAAIjjB,GAAK80B,EAAKE,EAGnB/R,IAAM2Q,IACRqB,EAAKX,EAAQK,EAASF,EAAQG,EAE9BA,EAASN,EAAQM,EAASH,EAAQE,EAClCA,EAASM,KAOnB7B,EAAKv0B,UAAUq2B,YAAc,SAAsBj1B,EAAGk1B,GACpD,IAAIxB,EAAqB,EAAjBtiB,KAAK6X,IAAIiM,EAAGl1B,GAChBm1B,EAAU,EAAJzB,EACNz3B,EAAI,EACR,IAAKy3B,EAAIA,EAAI,EAAI,EAAGA,EAAGA,KAAU,EAC/Bz3B,IAGF,OAAO,GAAKA,EAAI,EAAIk5B,GAGtBhC,EAAKv0B,UAAUw2B,UAAY,SAAoBpB,EAAKC,EAAKP,GACvD,KAAIA,GAAK,GAET,IAAK,IAAIz3B,EAAI,EAAGA,EAAIy3B,EAAI,EAAGz3B,IAAK,CAC9B,IAAIowB,EAAI2H,EAAI/3B,GAEZ+3B,EAAI/3B,GAAK+3B,EAAIN,EAAIz3B,EAAI,GACrB+3B,EAAIN,EAAIz3B,EAAI,GAAKowB,EAEjBA,EAAI4H,EAAIh4B,GAERg4B,EAAIh4B,IAAMg4B,EAAIP,EAAIz3B,EAAI,GACtBg4B,EAAIP,EAAIz3B,EAAI,IAAMowB,IAItB8G,EAAKv0B,UAAUy2B,aAAe,SAAuBC,EAAI5B,GAEvD,IADA,IAAI3I,EAAQ,EACH9uB,EAAI,EAAGA,EAAIy3B,EAAI,EAAGz3B,IAAK,CAC9B,IAAIytB,EAAoC,KAAhCtY,KAAKmkB,MAAMD,EAAG,EAAIr5B,EAAI,GAAKy3B,GACjCtiB,KAAKmkB,MAAMD,EAAG,EAAIr5B,GAAKy3B,GACvB3I,EAEFuK,EAAGr5B,GAAS,SAAJytB,EAGNqB,EADErB,EAAI,SACE,EAEAA,EAAI,SAAY,EAI5B,OAAO4L,GAGTnC,EAAKv0B,UAAU42B,WAAa,SAAqBF,EAAIv5B,EAAKi4B,EAAKN,GAE7D,IADA,IAAI3I,EAAQ,EACH9uB,EAAI,EAAGA,EAAIF,EAAKE,IACvB8uB,GAAyB,EAARuK,EAAGr5B,GAEpB+3B,EAAI,EAAI/3B,GAAa,KAAR8uB,EAAgBA,KAAkB,GAC/CiJ,EAAI,EAAI/3B,EAAI,GAAa,KAAR8uB,EAAgBA,KAAkB,GAIrD,IAAK9uB,EAAI,EAAIF,EAAKE,EAAIy3B,IAAKz3B,EACzB+3B,EAAI/3B,GAAK,EAGX0rB,EAAiB,IAAVoD,GACPpD,EAA6B,MAAb,KAARoD,KAGVoI,EAAKv0B,UAAU62B,KAAO,SAAe/B,GAEnC,IADA,IAAIgC,EAAK,IAAIv5B,MAAMu3B,GACVz3B,EAAI,EAAGA,EAAIy3B,EAAGz3B,IACrBy5B,EAAGz5B,GAAK,EAGV,OAAOy5B,GAGTvC,EAAKv0B,UAAUw0B,KAAO,SAAe9N,EAAG+N,EAAGzI,GACzC,IAAI8I,EAAI,EAAIl2B,KAAKy3B,YAAY3P,EAAEtpB,OAAQq3B,EAAEr3B,QAErC+3B,EAAMv2B,KAAKi2B,QAAQC,GAEnBiC,EAAIn4B,KAAKi4B,KAAK/B,GAEdM,EAAM,IAAI73B,MAAMu3B,GAChBkC,EAAO,IAAIz5B,MAAMu3B,GACjBmC,EAAO,IAAI15B,MAAMu3B,GAEjBoC,EAAO,IAAI35B,MAAMu3B,GACjBqC,EAAQ,IAAI55B,MAAMu3B,GAClBsC,EAAQ,IAAI75B,MAAMu3B,GAElBuC,EAAOrL,EAAIvC,MACf4N,EAAKj6B,OAAS03B,EAEdl2B,KAAKg4B,WAAWlQ,EAAE+C,MAAO/C,EAAEtpB,OAAQg4B,EAAKN,GACxCl2B,KAAKg4B,WAAWnC,EAAEhL,MAAOgL,EAAEr3B,OAAQ85B,EAAMpC,GAEzCl2B,KAAK42B,UAAUJ,EAAK2B,EAAGC,EAAMC,EAAMnC,EAAGK,GACtCv2B,KAAK42B,UAAU0B,EAAMH,EAAGI,EAAOC,EAAOtC,EAAGK,GAEzC,IAAK,IAAI93B,EAAI,EAAGA,EAAIy3B,EAAGz3B,IAAK,CAC1B,IAAI+4B,EAAKY,EAAK35B,GAAK85B,EAAM95B,GAAK45B,EAAK55B,GAAK+5B,EAAM/5B,GAC9C45B,EAAK55B,GAAK25B,EAAK35B,GAAK+5B,EAAM/5B,GAAK45B,EAAK55B,GAAK85B,EAAM95B,GAC/C25B,EAAK35B,GAAK+4B,EAUZ,OAPAx3B,KAAK43B,UAAUQ,EAAMC,EAAMnC,GAC3Bl2B,KAAK42B,UAAUwB,EAAMC,EAAMI,EAAMN,EAAGjC,EAAGK,GACvCv2B,KAAK43B,UAAUa,EAAMN,EAAGjC,GACxBl2B,KAAK63B,aAAaY,EAAMvC,GAExB9I,EAAIxC,SAAW9C,EAAE8C,SAAWiL,EAAEjL,SAC9BwC,EAAI5uB,OAASspB,EAAEtpB,OAASq3B,EAAEr3B,OACnB4uB,EAAIhB,SAIblgB,EAAG9K,UAAUgV,IAAM,SAAcoV,GAC/B,IAAI4B,EAAM,IAAIlhB,EAAG,MAEjB,OADAkhB,EAAIvC,MAAQ,IAAIlsB,MAAMqB,KAAKxB,OAASgtB,EAAIhtB,QACjCwB,KAAK81B,MAAMtK,EAAK4B,IAIzBlhB,EAAG9K,UAAUs3B,KAAO,SAAelN,GACjC,IAAI4B,EAAM,IAAIlhB,EAAG,MAEjB,OADAkhB,EAAIvC,MAAQ,IAAIlsB,MAAMqB,KAAKxB,OAASgtB,EAAIhtB,QACjCk3B,EAAW11B,KAAMwrB,EAAK4B,IAI/BlhB,EAAG9K,UAAUmzB,KAAO,SAAe/I,GACjC,OAAOxrB,KAAK4sB,QAAQkJ,MAAMtK,EAAKxrB,OAGjCkM,EAAG9K,UAAU2S,MAAQ,SAAgByX,GACnCrB,EAAsB,kBAARqB,GACdrB,EAAOqB,EAAM,UAIb,IADA,IAAI+B,EAAQ,EACH9uB,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAAK,CACpC,IAAIytB,GAAqB,EAAhBlsB,KAAK6qB,MAAMpsB,IAAU+sB,EAC1B8B,GAAU,SAAJpB,IAA0B,SAARqB,GAC5BA,IAAU,GACVA,GAAUrB,EAAI,SAAa,EAE3BqB,GAASD,IAAO,GAChBttB,KAAK6qB,MAAMpsB,GAAU,SAAL6uB,EAQlB,OALc,IAAVC,IACFvtB,KAAK6qB,MAAMpsB,GAAK8uB,EAChBvtB,KAAKxB,UAGAwB,MAGTkM,EAAG9K,UAAUyX,KAAO,SAAe2S,GACjC,OAAOxrB,KAAK4sB,QAAQ7Y,MAAMyX,IAI5Btf,EAAG9K,UAAUu3B,IAAM,WACjB,OAAO34B,KAAKoW,IAAIpW,OAIlBkM,EAAG9K,UAAUw3B,KAAO,WAClB,OAAO54B,KAAKu0B,KAAKv0B,KAAK4sB,UAIxB1gB,EAAG9K,UAAUgoB,IAAM,SAAcoC,GAC/B,IAAIU,EAxxCN,SAAqBV,GAGnB,IAFA,IAAIU,EAAI,IAAIvtB,MAAM6sB,EAAIuD,aAEbsB,EAAM,EAAGA,EAAMnE,EAAE1tB,OAAQ6xB,IAAO,CACvC,IAAIlE,EAAOkE,EAAM,GAAM,EACnBC,EAAOD,EAAM,GAEjBnE,EAAEmE,IAAQ7E,EAAIX,MAAMsB,GAAQ,GAAKmE,KAAWA,EAG9C,OAAOpE,EA8wCC2M,CAAWrN,GACnB,GAAiB,IAAbU,EAAE1tB,OAAc,OAAO,IAAI0N,EAAG,GAIlC,IADA,IAAIqZ,EAAMvlB,KACDvB,EAAI,EAAGA,EAAIytB,EAAE1tB,QACP,IAAT0tB,EAAEztB,GADsBA,IAAK8mB,EAAMA,EAAIoT,OAI7C,KAAMl6B,EAAIytB,EAAE1tB,OACV,IAAK,IAAIgwB,EAAIjJ,EAAIoT,MAAOl6B,EAAIytB,EAAE1tB,OAAQC,IAAK+vB,EAAIA,EAAEmK,MAClC,IAATzM,EAAEztB,KAEN8mB,EAAMA,EAAInP,IAAIoY,IAIlB,OAAOjJ,GAITrZ,EAAG9K,UAAU03B,OAAS,SAAiBzjB,GACrC8U,EAAuB,kBAAT9U,GAAqBA,GAAQ,GAC3C,IAGI5W,EAHAwT,EAAIoD,EAAO,GACX9S,GAAK8S,EAAOpD,GAAK,GACjB8mB,EAAa,WAAe,GAAK9mB,GAAQ,GAAKA,EAGlD,GAAU,IAANA,EAAS,CACX,IAAIsb,EAAQ,EAEZ,IAAK9uB,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAAK,CAChC,IAAIu6B,EAAWh5B,KAAK6qB,MAAMpsB,GAAKs6B,EAC3Bpa,GAAsB,EAAhB3e,KAAK6qB,MAAMpsB,IAAUu6B,GAAa/mB,EAC5CjS,KAAK6qB,MAAMpsB,GAAKkgB,EAAI4O,EACpBA,EAAQyL,IAAc,GAAK/mB,EAGzBsb,IACFvtB,KAAK6qB,MAAMpsB,GAAK8uB,EAChBvtB,KAAKxB,UAIT,GAAU,IAAN+D,EAAS,CACX,IAAK9D,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,EAAGA,IAChCuB,KAAK6qB,MAAMpsB,EAAI8D,GAAKvC,KAAK6qB,MAAMpsB,GAGjC,IAAKA,EAAI,EAAGA,EAAI8D,EAAG9D,IACjBuB,KAAK6qB,MAAMpsB,GAAK,EAGlBuB,KAAKxB,QAAU+D,EAGjB,OAAOvC,KAAKosB,SAGdlgB,EAAG9K,UAAU63B,MAAQ,SAAgB5jB,GAGnC,OADA8U,EAAyB,IAAlBnqB,KAAK4qB,UACL5qB,KAAK84B,OAAOzjB,IAMrBnJ,EAAG9K,UAAUstB,OAAS,SAAiBrZ,EAAM6jB,EAAMC,GAEjD,IAAIC,EADJjP,EAAuB,kBAAT9U,GAAqBA,GAAQ,GAGzC+jB,EADEF,GACGA,EAAQA,EAAO,IAAO,GAEvB,EAGN,IAAIjnB,EAAIoD,EAAO,GACX9S,EAAIqR,KAAKwD,KAAK/B,EAAOpD,GAAK,GAAIjS,KAAKxB,QACnC2lB,EAAO,SAAc,WAAclS,GAAMA,EACzConB,EAAcF,EAMlB,GAJAC,GAAK72B,EACL62B,EAAIxlB,KAAK6X,IAAI,EAAG2N,GAGZC,EAAa,CACf,IAAK,IAAI56B,EAAI,EAAGA,EAAI8D,EAAG9D,IACrB46B,EAAYxO,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,GAEpC46B,EAAY76B,OAAS+D,EAGvB,GAAU,IAANA,QAEG,GAAIvC,KAAKxB,OAAS+D,EAEvB,IADAvC,KAAKxB,QAAU+D,EACV9D,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAC3BuB,KAAK6qB,MAAMpsB,GAAKuB,KAAK6qB,MAAMpsB,EAAI8D,QAGjCvC,KAAK6qB,MAAM,GAAK,EAChB7qB,KAAKxB,OAAS,EAGhB,IAAI+uB,EAAQ,EACZ,IAAK9uB,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,IAAgB,IAAV8uB,GAAe9uB,GAAK26B,GAAI36B,IAAK,CAChE,IAAIguB,EAAuB,EAAhBzsB,KAAK6qB,MAAMpsB,GACtBuB,KAAK6qB,MAAMpsB,GAAM8uB,GAAU,GAAKtb,EAAOwa,IAASxa,EAChDsb,EAAQd,EAAOtI,EAajB,OATIkV,GAAyB,IAAV9L,IACjB8L,EAAYxO,MAAMwO,EAAY76B,UAAY+uB,GAGxB,IAAhBvtB,KAAKxB,SACPwB,KAAK6qB,MAAM,GAAK,EAChB7qB,KAAKxB,OAAS,GAGTwB,KAAKosB,SAGdlgB,EAAG9K,UAAUk4B,MAAQ,SAAgBjkB,EAAM6jB,EAAMC,GAG/C,OADAhP,EAAyB,IAAlBnqB,KAAK4qB,UACL5qB,KAAK0uB,OAAOrZ,EAAM6jB,EAAMC,IAIjCjtB,EAAG9K,UAAUsoB,KAAO,SAAerU,GACjC,OAAOrV,KAAK4sB,QAAQqM,MAAM5jB,IAG5BnJ,EAAG9K,UAAUm4B,MAAQ,SAAgBlkB,GACnC,OAAOrV,KAAK4sB,QAAQkM,OAAOzjB,IAI7BnJ,EAAG9K,UAAUuoB,KAAO,SAAetU,GACjC,OAAOrV,KAAK4sB,QAAQ0M,MAAMjkB,IAG5BnJ,EAAG9K,UAAUo4B,MAAQ,SAAgBnkB,GACnC,OAAOrV,KAAK4sB,QAAQ8B,OAAOrZ,IAI7BnJ,EAAG9K,UAAUiuB,MAAQ,SAAgBgB,GACnClG,EAAsB,kBAARkG,GAAoBA,GAAO,GACzC,IAAIpe,EAAIoe,EAAM,GACV9tB,GAAK8tB,EAAMpe,GAAK,GAChBuc,EAAI,GAAKvc,EAGb,QAAIjS,KAAKxB,QAAU+D,OAGXvC,KAAK6qB,MAAMtoB,GAELisB,IAIhBtiB,EAAG9K,UAAUq4B,OAAS,SAAiBpkB,GACrC8U,EAAuB,kBAAT9U,GAAqBA,GAAQ,GAC3C,IAAIpD,EAAIoD,EAAO,GACX9S,GAAK8S,EAAOpD,GAAK,GAIrB,GAFAkY,EAAyB,IAAlBnqB,KAAK4qB,SAAgB,2CAExB5qB,KAAKxB,QAAU+D,EACjB,OAAOvC,KAQT,GALU,IAANiS,GACF1P,IAEFvC,KAAKxB,OAASoV,KAAKwD,IAAI7U,EAAGvC,KAAKxB,QAErB,IAANyT,EAAS,CACX,IAAIkS,EAAO,SAAc,WAAclS,GAAMA,EAC7CjS,KAAK6qB,MAAM7qB,KAAKxB,OAAS,IAAM2lB,EAGjC,OAAOnkB,KAAKosB,SAIdlgB,EAAG9K,UAAUqoB,MAAQ,SAAgBpU,GACnC,OAAOrV,KAAK4sB,QAAQ6M,OAAOpkB,IAI7BnJ,EAAG9K,UAAUmS,MAAQ,SAAgBiY,GAGnC,OAFArB,EAAsB,kBAARqB,GACdrB,EAAOqB,EAAM,UACTA,EAAM,EAAUxrB,KAAK05B,OAAOlO,GAGV,IAAlBxrB,KAAK4qB,SACa,IAAhB5qB,KAAKxB,SAAiC,EAAhBwB,KAAK6qB,MAAM,IAAUW,GAC7CxrB,KAAK6qB,MAAM,GAAKW,GAAuB,EAAhBxrB,KAAK6qB,MAAM,IAClC7qB,KAAK4qB,SAAW,EACT5qB,OAGTA,KAAK4qB,SAAW,EAChB5qB,KAAK05B,MAAMlO,GACXxrB,KAAK4qB,SAAW,EACT5qB,MAIFA,KAAK0sB,OAAOlB,IAGrBtf,EAAG9K,UAAUsrB,OAAS,SAAiBlB,GACrCxrB,KAAK6qB,MAAM,IAAMW,EAGjB,IAAK,IAAI/sB,EAAI,EAAGA,EAAIuB,KAAKxB,QAAUwB,KAAK6qB,MAAMpsB,IAAM,SAAWA,IAC7DuB,KAAK6qB,MAAMpsB,IAAM,SACbA,IAAMuB,KAAKxB,OAAS,EACtBwB,KAAK6qB,MAAMpsB,EAAI,GAAK,EAEpBuB,KAAK6qB,MAAMpsB,EAAI,KAKnB,OAFAuB,KAAKxB,OAASoV,KAAK6X,IAAIzrB,KAAKxB,OAAQC,EAAI,GAEjCuB,MAITkM,EAAG9K,UAAUs4B,MAAQ,SAAgBlO,GAGnC,GAFArB,EAAsB,kBAARqB,GACdrB,EAAOqB,EAAM,UACTA,EAAM,EAAG,OAAOxrB,KAAKuT,OAAOiY,GAEhC,GAAsB,IAAlBxrB,KAAK4qB,SAIP,OAHA5qB,KAAK4qB,SAAW,EAChB5qB,KAAKuT,MAAMiY,GACXxrB,KAAK4qB,SAAW,EACT5qB,KAKT,GAFAA,KAAK6qB,MAAM,IAAMW,EAEG,IAAhBxrB,KAAKxB,QAAgBwB,KAAK6qB,MAAM,GAAK,EACvC7qB,KAAK6qB,MAAM,IAAM7qB,KAAK6qB,MAAM,GAC5B7qB,KAAK4qB,SAAW,OAGhB,IAAK,IAAInsB,EAAI,EAAGA,EAAIuB,KAAKxB,QAAUwB,KAAK6qB,MAAMpsB,GAAK,EAAGA,IACpDuB,KAAK6qB,MAAMpsB,IAAM,SACjBuB,KAAK6qB,MAAMpsB,EAAI,IAAM,EAIzB,OAAOuB,KAAKosB,SAGdlgB,EAAG9K,UAAUgS,KAAO,SAAeoY,GACjC,OAAOxrB,KAAK4sB,QAAQrZ,MAAMiY,IAG5Btf,EAAG9K,UAAU+X,KAAO,SAAeqS,GACjC,OAAOxrB,KAAK4sB,QAAQ8M,MAAMlO,IAG5Btf,EAAG9K,UAAUu4B,KAAO,WAGlB,OAFA35B,KAAK4qB,SAAW,EAET5qB,MAGTkM,EAAG9K,UAAU+tB,IAAM,WACjB,OAAOnvB,KAAK4sB,QAAQ+M,QAGtBztB,EAAG9K,UAAUw4B,aAAe,SAAuBpO,EAAKpV,EAAKyjB,GAC3D,IACIp7B,EAIAytB,EALA3tB,EAAMitB,EAAIhtB,OAASq7B,EAGvB75B,KAAK6sB,QAAQtuB,GAGb,IAAIgvB,EAAQ,EACZ,IAAK9uB,EAAI,EAAGA,EAAI+sB,EAAIhtB,OAAQC,IAAK,CAC/BytB,GAA6B,EAAxBlsB,KAAK6qB,MAAMpsB,EAAIo7B,IAActM,EAClC,IAAI5B,GAAwB,EAAfH,EAAIX,MAAMpsB,IAAU2X,EAEjCmX,IADArB,GAAa,SAARP,IACS,KAAQA,EAAQ,SAAa,GAC3C3rB,KAAK6qB,MAAMpsB,EAAIo7B,GAAa,SAAJ3N,EAE1B,KAAOztB,EAAIuB,KAAKxB,OAASq7B,EAAOp7B,IAE9B8uB,GADArB,GAA6B,EAAxBlsB,KAAK6qB,MAAMpsB,EAAIo7B,IAActM,IACrB,GACbvtB,KAAK6qB,MAAMpsB,EAAIo7B,GAAa,SAAJ3N,EAG1B,GAAc,IAAVqB,EAAa,OAAOvtB,KAAKosB,QAK7B,IAFAjC,GAAkB,IAAXoD,GACPA,EAAQ,EACH9uB,EAAI,EAAGA,EAAIuB,KAAKxB,OAAQC,IAE3B8uB,GADArB,IAAsB,EAAhBlsB,KAAK6qB,MAAMpsB,IAAU8uB,IACd,GACbvtB,KAAK6qB,MAAMpsB,GAAS,SAAJytB,EAIlB,OAFAlsB,KAAK4qB,SAAW,EAET5qB,KAAKosB,SAGdlgB,EAAG9K,UAAU04B,SAAW,SAAmBtO,EAAKuO,GAC9C,IAAIF,GAAQ75B,KAAKxB,OAASgtB,EAAIhtB,QAE1BwC,EAAIhB,KAAK4sB,QACTS,EAAI7B,EAGJwO,EAA8B,EAAxB3M,EAAExC,MAAMwC,EAAE7uB,OAAS,GAGf,KADdq7B,EAAQ,GADM75B,KAAK4uB,WAAWoL,MAG5B3M,EAAIA,EAAEkM,MAAMM,GACZ74B,EAAE83B,OAAOe,GACTG,EAA8B,EAAxB3M,EAAExC,MAAMwC,EAAE7uB,OAAS,IAI3B,IACIgwB,EADAkJ,EAAI12B,EAAExC,OAAS6uB,EAAE7uB,OAGrB,GAAa,QAATu7B,EAAgB,EAClBvL,EAAI,IAAItiB,EAAG,OACT1N,OAASk5B,EAAI,EACflJ,EAAE3D,MAAQ,IAAIlsB,MAAM6vB,EAAEhwB,QACtB,IAAK,IAAIC,EAAI,EAAGA,EAAI+vB,EAAEhwB,OAAQC,IAC5B+vB,EAAE3D,MAAMpsB,GAAK,EAIjB,IAAIw7B,EAAOj5B,EAAE4rB,QAAQgN,aAAavM,EAAG,EAAGqK,GAClB,IAAlBuC,EAAKrP,WACP5pB,EAAIi5B,EACAzL,IACFA,EAAE3D,MAAM6M,GAAK,IAIjB,IAAK,IAAIlS,EAAIkS,EAAI,EAAGlS,GAAK,EAAGA,IAAK,CAC/B,IAAI0U,EAAmC,UAAL,EAAxBl5B,EAAE6pB,MAAMwC,EAAE7uB,OAASgnB,KACE,EAA5BxkB,EAAE6pB,MAAMwC,EAAE7uB,OAASgnB,EAAI,IAO1B,IAHA0U,EAAKtmB,KAAKwD,IAAK8iB,EAAKF,EAAO,EAAG,UAE9Bh5B,EAAE44B,aAAavM,EAAG6M,EAAI1U,GACA,IAAfxkB,EAAE4pB,UACPsP,IACAl5B,EAAE4pB,SAAW,EACb5pB,EAAE44B,aAAavM,EAAG,EAAG7H,GAChBxkB,EAAEoiB,WACLpiB,EAAE4pB,UAAY,GAGd4D,IACFA,EAAE3D,MAAMrF,GAAK0U,GAajB,OAVI1L,GACFA,EAAEpC,QAEJprB,EAAEorB,QAGW,QAAT2N,GAA4B,IAAVF,GACpB74B,EAAE0tB,OAAOmL,GAGJ,CACL5Q,IAAKuF,GAAK,KACVhC,IAAKxrB,IAQTkL,EAAG9K,UAAU+4B,OAAS,SAAiB3O,EAAKuO,EAAMK,GAGhD,OAFAjQ,GAAQqB,EAAIpI,UAERpjB,KAAKojB,SACA,CACL6F,IAAK,IAAI/c,EAAG,GACZsgB,IAAK,IAAItgB,EAAG,IAKM,IAAlBlM,KAAK4qB,UAAmC,IAAjBY,EAAIZ,UAC7BrF,EAAMvlB,KAAKwvB,MAAM2K,OAAO3O,EAAKuO,GAEhB,QAATA,IACF9Q,EAAM1D,EAAI0D,IAAIuG,OAGH,QAATuK,IACFvN,EAAMjH,EAAIiH,IAAIgD,MACV4K,GAA6B,IAAjB5N,EAAI5B,UAClB4B,EAAIxY,KAAKwX,IAIN,CACLvC,IAAKA,EACLuD,IAAKA,IAIa,IAAlBxsB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,UAC7BrF,EAAMvlB,KAAKm6B,OAAO3O,EAAIgE,MAAOuK,GAEhB,QAATA,IACF9Q,EAAM1D,EAAI0D,IAAIuG,OAGT,CACLvG,IAAKA,EACLuD,IAAKjH,EAAIiH,MAI0B,KAAlCxsB,KAAK4qB,SAAWY,EAAIZ,WACvBrF,EAAMvlB,KAAKwvB,MAAM2K,OAAO3O,EAAIgE,MAAOuK,GAEtB,QAATA,IACFvN,EAAMjH,EAAIiH,IAAIgD,MACV4K,GAA6B,IAAjB5N,EAAI5B,UAClB4B,EAAI+D,KAAK/E,IAIN,CACLvC,IAAK1D,EAAI0D,IACTuD,IAAKA,IAOLhB,EAAIhtB,OAASwB,KAAKxB,QAAUwB,KAAK4rB,IAAIJ,GAAO,EACvC,CACLvC,IAAK,IAAI/c,EAAG,GACZsgB,IAAKxsB,MAKU,IAAfwrB,EAAIhtB,OACO,QAATu7B,EACK,CACL9Q,IAAKjpB,KAAKqZ,KAAKmS,EAAIX,MAAM,IACzB2B,IAAK,MAII,QAATuN,EACK,CACL9Q,IAAK,KACLuD,IAAK,IAAItgB,EAAGlM,KAAK+tB,KAAKvC,EAAIX,MAAM,MAI7B,CACL5B,IAAKjpB,KAAKqZ,KAAKmS,EAAIX,MAAM,IACzB2B,IAAK,IAAItgB,EAAGlM,KAAK+tB,KAAKvC,EAAIX,MAAM,MAI7B7qB,KAAK85B,SAAStO,EAAKuO,GAlF1B,IAAI9Q,EAAKuD,EAAKjH,GAsFhBrZ,EAAG9K,UAAU6nB,IAAM,SAAcuC,GAC/B,OAAOxrB,KAAKm6B,OAAO3O,EAAK,OAAO,GAAOvC,KAIxC/c,EAAG9K,UAAUorB,IAAM,SAAchB,GAC/B,OAAOxrB,KAAKm6B,OAAO3O,EAAK,OAAO,GAAOgB,KAGxCtgB,EAAG9K,UAAU+nB,KAAO,SAAeqC,GACjC,OAAOxrB,KAAKm6B,OAAO3O,EAAK,OAAO,GAAMgB,KAIvCtgB,EAAG9K,UAAUi5B,SAAW,SAAmB7O,GACzC,IAAI8O,EAAKt6B,KAAKm6B,OAAO3O,GAGrB,GAAI8O,EAAG9N,IAAIpJ,SAAU,OAAOkX,EAAGrR,IAE/B,IAAIuD,EAA0B,IAApB8N,EAAGrR,IAAI2B,SAAiB0P,EAAG9N,IAAI+D,KAAK/E,GAAO8O,EAAG9N,IAEpD+N,EAAO/O,EAAIgO,MAAM,GACjBgB,EAAKhP,EAAIiD,MAAM,GACf7C,EAAMY,EAAIZ,IAAI2O,GAGlB,OAAI3O,EAAM,GAAY,IAAP4O,GAAoB,IAAR5O,EAAkB0O,EAAGrR,IAGrB,IAApBqR,EAAGrR,IAAI2B,SAAiB0P,EAAGrR,IAAIyQ,MAAM,GAAKY,EAAGrR,IAAI1V,MAAM,IAGhErH,EAAG9K,UAAU2sB,KAAO,SAAevC,GACjCrB,EAAOqB,GAAO,UAId,IAHA,IAAIplB,GAAK,GAAK,IAAMolB,EAEhB7b,EAAM,EACDlR,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,EAAGA,IACpCkR,GAAOvJ,EAAIuJ,GAAuB,EAAhB3P,KAAK6qB,MAAMpsB,KAAW+sB,EAG1C,OAAO7b,GAITzD,EAAG9K,UAAU4sB,MAAQ,SAAgBxC,GACnCrB,EAAOqB,GAAO,UAGd,IADA,IAAI+B,EAAQ,EACH9uB,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,EAAGA,IAAK,CACzC,IAAIytB,GAAqB,EAAhBlsB,KAAK6qB,MAAMpsB,IAAkB,SAAR8uB,EAC9BvtB,KAAK6qB,MAAMpsB,GAAMytB,EAAIV,EAAO,EAC5B+B,EAAQrB,EAAIV,EAGd,OAAOxrB,KAAKosB,SAGdlgB,EAAG9K,UAAUiY,KAAO,SAAemS,GACjC,OAAOxrB,KAAK4sB,QAAQoB,MAAMxC,IAG5Btf,EAAG9K,UAAUq5B,KAAO,SAAer0B,GACjC+jB,EAAsB,IAAf/jB,EAAEwkB,UACTT,GAAQ/jB,EAAEgd,UAEV,IAAI0E,EAAI9nB,KACJ61B,EAAIzvB,EAAEwmB,QAGR9E,EADiB,IAAfA,EAAE8C,SACA9C,EAAEqB,KAAK/iB,GAEP0hB,EAAE8E,QAaR,IATA,IAAI8N,EAAI,IAAIxuB,EAAG,GACXyuB,EAAI,IAAIzuB,EAAG,GAGX0uB,EAAI,IAAI1uB,EAAG,GACX2uB,EAAI,IAAI3uB,EAAG,GAEX4uB,EAAI,EAEDhT,EAAE1O,UAAYyc,EAAEzc,UACrB0O,EAAE4G,OAAO,GACTmH,EAAEnH,OAAO,KACPoM,EAMJ,IAHA,IAAIC,EAAKlF,EAAEjJ,QACPoO,EAAKlT,EAAE8E,SAEH9E,EAAE1E,UAAU,CAClB,IAAK,IAAI3kB,EAAI,EAAGw8B,EAAK,EAAyB,KAArBnT,EAAE+C,MAAM,GAAKoQ,IAAax8B,EAAI,KAAMA,EAAGw8B,IAAO,GACvE,GAAIx8B,EAAI,EAEN,IADAqpB,EAAE4G,OAAOjwB,GACFA,KAAM,IACPi8B,EAAEQ,SAAWP,EAAEO,WACjBR,EAAE1mB,KAAK+mB,GACPJ,EAAEpK,KAAKyK,IAGTN,EAAEhM,OAAO,GACTiM,EAAEjM,OAAO,GAIb,IAAK,IAAIlJ,EAAI,EAAG2V,EAAK,EAAyB,KAArBtF,EAAEhL,MAAM,GAAKsQ,IAAa3V,EAAI,KAAMA,EAAG2V,IAAO,GACvE,GAAI3V,EAAI,EAEN,IADAqQ,EAAEnH,OAAOlJ,GACFA,KAAM,IACPoV,EAAEM,SAAWL,EAAEK,WACjBN,EAAE5mB,KAAK+mB,GACPF,EAAEtK,KAAKyK,IAGTJ,EAAElM,OAAO,GACTmM,EAAEnM,OAAO,GAIT5G,EAAE8D,IAAIiK,IAAM,GACd/N,EAAEyI,KAAKsF,GACP6E,EAAEnK,KAAKqK,GACPD,EAAEpK,KAAKsK,KAEPhF,EAAEtF,KAAKzI,GACP8S,EAAErK,KAAKmK,GACPG,EAAEtK,KAAKoK,IAIX,MAAO,CACL35B,EAAG45B,EACHvN,EAAGwN,EACHO,IAAKvF,EAAEiD,OAAOgC,KAOlB5uB,EAAG9K,UAAUi6B,OAAS,SAAiBj1B,GACrC+jB,EAAsB,IAAf/jB,EAAEwkB,UACTT,GAAQ/jB,EAAEgd,UAEV,IAAIpiB,EAAIhB,KACJqtB,EAAIjnB,EAAEwmB,QAGR5rB,EADiB,IAAfA,EAAE4pB,SACA5pB,EAAEmoB,KAAK/iB,GAEPpF,EAAE4rB,QAQR,IALA,IAuCIrH,EAvCA+V,EAAK,IAAIpvB,EAAG,GACZqvB,EAAK,IAAIrvB,EAAG,GAEZsvB,EAAQnO,EAAET,QAEP5rB,EAAEy6B,KAAK,GAAK,GAAKpO,EAAEoO,KAAK,GAAK,GAAG,CACrC,IAAK,IAAIh9B,EAAI,EAAGw8B,EAAK,EAAyB,KAArBj6B,EAAE6pB,MAAM,GAAKoQ,IAAax8B,EAAI,KAAMA,EAAGw8B,IAAO,GACvE,GAAIx8B,EAAI,EAEN,IADAuC,EAAE0tB,OAAOjwB,GACFA,KAAM,GACP68B,EAAGJ,SACLI,EAAGtnB,KAAKwnB,GAGVF,EAAG5M,OAAO,GAId,IAAK,IAAIlJ,EAAI,EAAG2V,EAAK,EAAyB,KAArB9N,EAAExC,MAAM,GAAKsQ,IAAa3V,EAAI,KAAMA,EAAG2V,IAAO,GACvE,GAAI3V,EAAI,EAEN,IADA6H,EAAEqB,OAAOlJ,GACFA,KAAM,GACP+V,EAAGL,SACLK,EAAGvnB,KAAKwnB,GAGVD,EAAG7M,OAAO,GAIV1tB,EAAE4qB,IAAIyB,IAAM,GACdrsB,EAAEuvB,KAAKlD,GACPiO,EAAG/K,KAAKgL,KAERlO,EAAEkD,KAAKvvB,GACPu6B,EAAGhL,KAAK+K,IAeZ,OATE/V,EADgB,IAAdvkB,EAAEy6B,KAAK,GACHH,EAEAC,GAGAE,KAAK,GAAK,GAChBlW,EAAIvR,KAAK5N,GAGJmf,GAGTrZ,EAAG9K,UAAUg6B,IAAM,SAAc5P,GAC/B,GAAIxrB,KAAKojB,SAAU,OAAOoI,EAAI2D,MAC9B,GAAI3D,EAAIpI,SAAU,OAAOpjB,KAAKmvB,MAE9B,IAAInuB,EAAIhB,KAAK4sB,QACTS,EAAI7B,EAAIoB,QACZ5rB,EAAE4pB,SAAW,EACbyC,EAAEzC,SAAW,EAGb,IAAK,IAAIiP,EAAQ,EAAG74B,EAAEoY,UAAYiU,EAAEjU,SAAUygB,IAC5C74B,EAAE0tB,OAAO,GACTrB,EAAEqB,OAAO,GAGX,OAAG,CACD,KAAO1tB,EAAEoY,UACPpY,EAAE0tB,OAAO,GAEX,KAAOrB,EAAEjU,UACPiU,EAAEqB,OAAO,GAGX,IAAIzc,EAAIjR,EAAE4qB,IAAIyB,GACd,GAAIpb,EAAI,EAAG,CAET,IAAI4c,EAAI7tB,EACRA,EAAIqsB,EACJA,EAAIwB,OACC,GAAU,IAAN5c,GAAyB,IAAdob,EAAEoO,KAAK,GAC3B,MAGFz6B,EAAEuvB,KAAKlD,GAGT,OAAOA,EAAEyL,OAAOe,IAIlB3tB,EAAG9K,UAAUs6B,KAAO,SAAelQ,GACjC,OAAOxrB,KAAKy6B,KAAKjP,GAAKxqB,EAAEmoB,KAAKqC,IAG/Btf,EAAG9K,UAAUgY,OAAS,WACpB,OAA+B,KAAP,EAAhBpZ,KAAK6qB,MAAM,KAGrB3e,EAAG9K,UAAU85B,MAAQ,WACnB,OAA+B,KAAP,EAAhBl7B,KAAK6qB,MAAM,KAIrB3e,EAAG9K,UAAUqtB,MAAQ,SAAgBjD,GACnC,OAAOxrB,KAAK6qB,MAAM,GAAKW,GAIzBtf,EAAG9K,UAAUu6B,MAAQ,SAAgBtL,GACnClG,EAAsB,kBAARkG,GACd,IAAIpe,EAAIoe,EAAM,GACV9tB,GAAK8tB,EAAMpe,GAAK,GAChBuc,EAAI,GAAKvc,EAGb,GAAIjS,KAAKxB,QAAU+D,EAGjB,OAFAvC,KAAK6sB,QAAQtqB,EAAI,GACjBvC,KAAK6qB,MAAMtoB,IAAMisB,EACVxuB,KAKT,IADA,IAAIutB,EAAQiB,EACH/vB,EAAI8D,EAAa,IAAVgrB,GAAe9uB,EAAIuB,KAAKxB,OAAQC,IAAK,CACnD,IAAIytB,EAAoB,EAAhBlsB,KAAK6qB,MAAMpsB,GAEnB8uB,GADArB,GAAKqB,KACS,GACdrB,GAAK,SACLlsB,KAAK6qB,MAAMpsB,GAAKytB,EAMlB,OAJc,IAAVqB,IACFvtB,KAAK6qB,MAAMpsB,GAAK8uB,EAChBvtB,KAAKxB,UAEAwB,MAGTkM,EAAG9K,UAAUgiB,OAAS,WACpB,OAAuB,IAAhBpjB,KAAKxB,QAAkC,IAAlBwB,KAAK6qB,MAAM,IAGzC3e,EAAG9K,UAAUq6B,KAAO,SAAejQ,GACjC,IAOIjG,EAPAqF,EAAWY,EAAM,EAErB,GAAsB,IAAlBxrB,KAAK4qB,WAAmBA,EAAU,OAAQ,EAC9C,GAAsB,IAAlB5qB,KAAK4qB,UAAkBA,EAAU,OAAO,EAK5C,GAHA5qB,KAAKosB,QAGDpsB,KAAKxB,OAAS,EAChB+mB,EAAM,MACD,CACDqF,IACFY,GAAOA,GAGTrB,EAAOqB,GAAO,SAAW,qBAEzB,IAAIU,EAAoB,EAAhBlsB,KAAK6qB,MAAM,GACnBtF,EAAM2G,IAAMV,EAAM,EAAIU,EAAIV,GAAO,EAAI,EAEvC,OAAsB,IAAlBxrB,KAAK4qB,SAA8B,GAANrF,EAC1BA,GAOTrZ,EAAG9K,UAAUwqB,IAAM,SAAcJ,GAC/B,GAAsB,IAAlBxrB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,SAAgB,OAAQ,EACvD,GAAsB,IAAlB5qB,KAAK4qB,UAAmC,IAAjBY,EAAIZ,SAAgB,OAAO,EAEtD,IAAIrF,EAAMvlB,KAAK47B,KAAKpQ,GACpB,OAAsB,IAAlBxrB,KAAK4qB,SAA8B,GAANrF,EAC1BA,GAITrZ,EAAG9K,UAAUw6B,KAAO,SAAepQ,GAEjC,GAAIxrB,KAAKxB,OAASgtB,EAAIhtB,OAAQ,OAAO,EACrC,GAAIwB,KAAKxB,OAASgtB,EAAIhtB,OAAQ,OAAQ,EAGtC,IADA,IAAI+mB,EAAM,EACD9mB,EAAIuB,KAAKxB,OAAS,EAAGC,GAAK,EAAGA,IAAK,CACzC,IAAIuC,EAAoB,EAAhBhB,KAAK6qB,MAAMpsB,GACf4uB,EAAmB,EAAf7B,EAAIX,MAAMpsB,GAElB,GAAIuC,IAAMqsB,EAAV,CACIrsB,EAAIqsB,EACN9H,GAAO,EACEvkB,EAAIqsB,IACb9H,EAAM,GAER,OAEF,OAAOA,GAGTrZ,EAAG9K,UAAUy6B,IAAM,SAAcrQ,GAC/B,OAA0B,IAAnBxrB,KAAKy7B,KAAKjQ,IAGnBtf,EAAG9K,UAAUwO,GAAK,SAAa4b,GAC7B,OAAyB,IAAlBxrB,KAAK4rB,IAAIJ,IAGlBtf,EAAG9K,UAAU06B,KAAO,SAAetQ,GACjC,OAAOxrB,KAAKy7B,KAAKjQ,IAAQ,GAG3Btf,EAAG9K,UAAUoL,IAAM,SAAcgf,GAC/B,OAAOxrB,KAAK4rB,IAAIJ,IAAQ,GAG1Btf,EAAG9K,UAAU26B,IAAM,SAAcvQ,GAC/B,OAA2B,IAApBxrB,KAAKy7B,KAAKjQ,IAGnBtf,EAAG9K,UAAUiV,GAAK,SAAamV,GAC7B,OAA0B,IAAnBxrB,KAAK4rB,IAAIJ,IAGlBtf,EAAG9K,UAAU46B,KAAO,SAAexQ,GACjC,OAAOxrB,KAAKy7B,KAAKjQ,IAAQ,GAG3Btf,EAAG9K,UAAUwoB,IAAM,SAAc4B,GAC/B,OAAOxrB,KAAK4rB,IAAIJ,IAAQ,GAG1Btf,EAAG9K,UAAUkV,IAAM,SAAckV,GAC/B,OAA0B,IAAnBxrB,KAAKy7B,KAAKjQ,IAGnBtf,EAAG9K,UAAUoO,GAAK,SAAagc,GAC7B,OAAyB,IAAlBxrB,KAAK4rB,IAAIJ,IAOlBtf,EAAG4e,IAAM,SAAcU,GACrB,OAAO,IAAIyQ,EAAIzQ,IAGjBtf,EAAG9K,UAAU86B,MAAQ,SAAgBC,GAGnC,OAFAhS,GAAQnqB,KAAK8qB,IAAK,yCAClBX,EAAyB,IAAlBnqB,KAAK4qB,SAAgB,iCACrBuR,EAAIC,UAAUp8B,MAAMq8B,UAAUF,IAGvCjwB,EAAG9K,UAAUk7B,QAAU,WAErB,OADAnS,EAAOnqB,KAAK8qB,IAAK,wDACV9qB,KAAK8qB,IAAIyR,YAAYv8B,OAG9BkM,EAAG9K,UAAUi7B,UAAY,SAAoBF,GAE3C,OADAn8B,KAAK8qB,IAAMqR,EACJn8B,MAGTkM,EAAG9K,UAAUo7B,SAAW,SAAmBL,GAEzC,OADAhS,GAAQnqB,KAAK8qB,IAAK,yCACX9qB,KAAKq8B,UAAUF,IAGxBjwB,EAAG9K,UAAUq7B,OAAS,SAAiBjR,GAErC,OADArB,EAAOnqB,KAAK8qB,IAAK,sCACV9qB,KAAK8qB,IAAIxT,IAAItX,KAAMwrB,IAG5Btf,EAAG9K,UAAUs7B,QAAU,SAAkBlR,GAEvC,OADArB,EAAOnqB,KAAK8qB,IAAK,uCACV9qB,KAAK8qB,IAAI9W,KAAKhU,KAAMwrB,IAG7Btf,EAAG9K,UAAUu7B,OAAS,SAAiBnR,GAErC,OADArB,EAAOnqB,KAAK8qB,IAAK,sCACV9qB,KAAK8qB,IAAIzT,IAAIrX,KAAMwrB,IAG5Btf,EAAG9K,UAAUw7B,QAAU,SAAkBpR,GAEvC,OADArB,EAAOnqB,KAAK8qB,IAAK,uCACV9qB,KAAK8qB,IAAIyF,KAAKvwB,KAAMwrB,IAG7Btf,EAAG9K,UAAUy7B,OAAS,SAAiBrR,GAErC,OADArB,EAAOnqB,KAAK8qB,IAAK,sCACV9qB,KAAK8qB,IAAIgS,IAAI98B,KAAMwrB,IAG5Btf,EAAG9K,UAAU27B,OAAS,SAAiBvR,GAGrC,OAFArB,EAAOnqB,KAAK8qB,IAAK,sCACjB9qB,KAAK8qB,IAAIkS,SAASh9B,KAAMwrB,GACjBxrB,KAAK8qB,IAAI1U,IAAIpW,KAAMwrB,IAG5Btf,EAAG9K,UAAU67B,QAAU,SAAkBzR,GAGvC,OAFArB,EAAOnqB,KAAK8qB,IAAK,sCACjB9qB,KAAK8qB,IAAIkS,SAASh9B,KAAMwrB,GACjBxrB,KAAK8qB,IAAIyJ,KAAKv0B,KAAMwrB,IAG7Btf,EAAG9K,UAAU87B,OAAS,WAGpB,OAFA/S,EAAOnqB,KAAK8qB,IAAK,sCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI6N,IAAI34B,OAGtBkM,EAAG9K,UAAUg8B,QAAU,WAGrB,OAFAjT,EAAOnqB,KAAK8qB,IAAK,uCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI8N,KAAK54B,OAIvBkM,EAAG9K,UAAUi8B,QAAU,WAGrB,OAFAlT,EAAOnqB,KAAK8qB,IAAK,uCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAIwS,KAAKt9B,OAGvBkM,EAAG9K,UAAUm8B,QAAU,WAGrB,OAFApT,EAAOnqB,KAAK8qB,IAAK,uCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI4Q,KAAK17B,OAIvBkM,EAAG9K,UAAUo8B,OAAS,WAGpB,OAFArT,EAAOnqB,KAAK8qB,IAAK,sCACjB9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI0E,IAAIxvB,OAGtBkM,EAAG9K,UAAUq8B,OAAS,SAAiBjS,GAGrC,OAFArB,EAAOnqB,KAAK8qB,MAAQU,EAAIV,IAAK,qBAC7B9qB,KAAK8qB,IAAIqS,SAASn9B,MACXA,KAAK8qB,IAAI1B,IAAIppB,KAAMwrB,IAI5B,IAAIkS,EAAS,CACXC,KAAM,KACNC,KAAM,KACNC,KAAM,KACNC,OAAQ,MAIV,SAASC,EAAQj3B,EAAMV,GAErBpG,KAAK8G,KAAOA,EACZ9G,KAAKoG,EAAI,IAAI8F,EAAG9F,EAAG,IACnBpG,KAAKwC,EAAIxC,KAAKoG,EAAE2oB,YAChB/uB,KAAKwtB,EAAI,IAAIthB,EAAG,GAAG4sB,OAAO94B,KAAKwC,GAAG+tB,KAAKvwB,KAAKoG,GAE5CpG,KAAKg+B,IAAMh+B,KAAKi+B,OAiDlB,SAASC,IACPH,EAAOj7B,KACL9C,KACA,OACA,2EA+DJ,SAASm+B,IACPJ,EAAOj7B,KACL9C,KACA,OACA,kEAIJ,SAASo+B,IACPL,EAAOj7B,KACL9C,KACA,OACA,yDAIJ,SAASq+B,IAEPN,EAAOj7B,KACL9C,KACA,QACA,uEA8CJ,SAASi8B,EAAKvE,GACZ,GAAiB,kBAANA,EAAgB,CACzB,IAAI4G,EAAQpyB,EAAGqyB,OAAO7G,GACtB13B,KAAK03B,EAAI4G,EAAMl4B,EACfpG,KAAKs+B,MAAQA,OAEbnU,EAAOuN,EAAEmE,IAAI,GAAI,kCACjB77B,KAAK03B,EAAIA,EACT13B,KAAKs+B,MAAQ,KAkOjB,SAASE,EAAM9G,GACbuE,EAAIn5B,KAAK9C,KAAM03B,GAEf13B,KAAK65B,MAAQ75B,KAAK03B,EAAE3I,YAChB/uB,KAAK65B,MAAQ,KAAO,IACtB75B,KAAK65B,OAAS,GAAM75B,KAAK65B,MAAQ,IAGnC75B,KAAKiS,EAAI,IAAI/F,EAAG,GAAG4sB,OAAO94B,KAAK65B,OAC/B75B,KAAKw6B,GAAKx6B,KAAKy+B,KAAKz+B,KAAKiS,EAAE0mB,OAC3B34B,KAAK0+B,KAAO1+B,KAAKiS,EAAEopB,OAAOr7B,KAAK03B,GAE/B13B,KAAK2+B,KAAO3+B,KAAK0+B,KAAKtoB,IAAIpW,KAAKiS,GAAGynB,MAAM,GAAGzQ,IAAIjpB,KAAK03B,GACpD13B,KAAK2+B,KAAO3+B,KAAK2+B,KAAKxV,KAAKnpB,KAAKiS,GAChCjS,KAAK2+B,KAAO3+B,KAAKiS,EAAEoF,IAAIrX,KAAK2+B,MA5a9BZ,EAAO38B,UAAU68B,KAAO,WACtB,IAAID,EAAM,IAAI9xB,EAAG,MAEjB,OADA8xB,EAAInT,MAAQ,IAAIlsB,MAAMiV,KAAKC,KAAK7T,KAAKwC,EAAI,KAClCw7B,GAGTD,EAAO38B,UAAUw9B,QAAU,SAAkBpT,GAG3C,IACIqT,EADA5sB,EAAIuZ,EAGR,GACExrB,KAAKynB,MAAMxV,EAAGjS,KAAKg+B,KAGnBa,GADA5sB,GADAA,EAAIjS,KAAK8+B,MAAM7sB,IACT+B,KAAKhU,KAAKg+B,MACPjP,kBACF8P,EAAO7+B,KAAKwC,GAErB,IAAIopB,EAAMiT,EAAO7+B,KAAKwC,GAAK,EAAIyP,EAAE2pB,KAAK57B,KAAKoG,GAgB3C,OAfY,IAARwlB,GACF3Z,EAAE4Y,MAAM,GAAK,EACb5Y,EAAEzT,OAAS,GACFotB,EAAM,EACf3Z,EAAEse,KAAKvwB,KAAKoG,QAEI/F,IAAZ4R,EAAEma,MAEJna,EAAEma,QAGFna,EAAE8sB,SAIC9sB,GAGT8rB,EAAO38B,UAAUqmB,MAAQ,SAAgBxN,EAAOmT,GAC9CnT,EAAMyU,OAAO1uB,KAAKwC,EAAG,EAAG4qB,IAG1B2Q,EAAO38B,UAAU09B,MAAQ,SAAgBtT,GACvC,OAAOA,EAAI+I,KAAKv0B,KAAKwtB,IASvBnD,EAAS6T,EAAMH,GAEfG,EAAK98B,UAAUqmB,MAAQ,SAAgBxN,EAAO0K,GAK5C,IAHA,IAAIR,EAAO,QAEP6a,EAASprB,KAAKwD,IAAI6C,EAAMzb,OAAQ,GAC3BC,EAAI,EAAGA,EAAIugC,EAAQvgC,IAC1BkmB,EAAOkG,MAAMpsB,GAAKwb,EAAM4Q,MAAMpsB,GAIhC,GAFAkmB,EAAOnmB,OAASwgC,EAEZ/kB,EAAMzb,QAAU,EAGlB,OAFAyb,EAAM4Q,MAAM,GAAK,OACjB5Q,EAAMzb,OAAS,GAKjB,IAAIygC,EAAOhlB,EAAM4Q,MAAM,GAGvB,IAFAlG,EAAOkG,MAAMlG,EAAOnmB,UAAYygC,EAAO9a,EAElC1lB,EAAI,GAAIA,EAAIwb,EAAMzb,OAAQC,IAAK,CAClC,IAAIuE,EAAwB,EAAjBiX,EAAM4Q,MAAMpsB,GACvBwb,EAAM4Q,MAAMpsB,EAAI,KAAQuE,EAAOmhB,IAAS,EAAM8a,IAAS,GACvDA,EAAOj8B,EAETi8B,KAAU,GACVhlB,EAAM4Q,MAAMpsB,EAAI,IAAMwgC,EACT,IAATA,GAAchlB,EAAMzb,OAAS,GAC/Byb,EAAMzb,QAAU,GAEhByb,EAAMzb,QAAU,GAIpB0/B,EAAK98B,UAAU09B,MAAQ,SAAgBtT,GAErCA,EAAIX,MAAMW,EAAIhtB,QAAU,EACxBgtB,EAAIX,MAAMW,EAAIhtB,OAAS,GAAK,EAC5BgtB,EAAIhtB,QAAU,EAId,IADA,IAAI8uB,EAAK,EACA7uB,EAAI,EAAGA,EAAI+sB,EAAIhtB,OAAQC,IAAK,CACnC,IAAIytB,EAAmB,EAAfV,EAAIX,MAAMpsB,GAClB6uB,GAAU,IAAJpB,EACNV,EAAIX,MAAMpsB,GAAU,SAAL6uB,EACfA,EAAS,GAAJpB,GAAaoB,EAAK,SAAa,GAUtC,OANkC,IAA9B9B,EAAIX,MAAMW,EAAIhtB,OAAS,KACzBgtB,EAAIhtB,SAC8B,IAA9BgtB,EAAIX,MAAMW,EAAIhtB,OAAS,IACzBgtB,EAAIhtB,UAGDgtB,GASTnB,EAAS8T,EAAMJ,GAQf1T,EAAS+T,EAAML,GASf1T,EAASgU,EAAQN,GAEjBM,EAAOj9B,UAAU09B,MAAQ,SAAgBtT,GAGvC,IADA,IAAI+B,EAAQ,EACH9uB,EAAI,EAAGA,EAAI+sB,EAAIhtB,OAAQC,IAAK,CACnC,IAAIuwB,EAA0B,IAAL,EAAfxD,EAAIX,MAAMpsB,IAAiB8uB,EACjCD,EAAU,SAAL0B,EACTA,KAAQ,GAERxD,EAAIX,MAAMpsB,GAAK6uB,EACfC,EAAQyB,EAKV,OAHc,IAAVzB,IACF/B,EAAIX,MAAMW,EAAIhtB,UAAY+uB,GAErB/B,GAITtf,EAAGqyB,OAAS,SAAgBz3B,GAE1B,GAAI42B,EAAO52B,GAAO,OAAO42B,EAAO52B,GAEhC,IAAIw3B,EACJ,GAAa,SAATx3B,EACFw3B,EAAQ,IAAIJ,OACP,GAAa,SAATp3B,EACTw3B,EAAQ,IAAIH,OACP,GAAa,SAATr3B,EACTw3B,EAAQ,IAAIF,MACP,IAAa,WAATt3B,EAGT,MAAM,IAAIoE,MAAM,iBAAmBpE,GAFnCw3B,EAAQ,IAAID,EAMd,OAFAX,EAAO52B,GAAQw3B,EAERA,GAkBTrC,EAAI76B,UAAU+7B,SAAW,SAAmBn8B,GAC1CmpB,EAAsB,IAAfnpB,EAAE4pB,SAAgB,iCACzBT,EAAOnpB,EAAE8pB,IAAK,oCAGhBmR,EAAI76B,UAAU47B,SAAW,SAAmBh8B,EAAGqsB,GAC7ClD,EAAqC,KAA7BnpB,EAAE4pB,SAAWyC,EAAEzC,UAAiB,iCACxCT,EAAOnpB,EAAE8pB,KAAO9pB,EAAE8pB,MAAQuC,EAAEvC,IAC1B,oCAGJmR,EAAI76B,UAAUq9B,KAAO,SAAez9B,GAClC,OAAIhB,KAAKs+B,MAAct+B,KAAKs+B,MAAMM,QAAQ59B,GAAGq7B,UAAUr8B,MAChDgB,EAAEmoB,KAAKnpB,KAAK03B,GAAG2E,UAAUr8B,OAGlCi8B,EAAI76B,UAAUouB,IAAM,SAAcxuB,GAChC,OAAIA,EAAEoiB,SACGpiB,EAAE4rB,QAGJ5sB,KAAK03B,EAAErgB,IAAIrW,GAAGq7B,UAAUr8B,OAGjCi8B,EAAI76B,UAAUkW,IAAM,SAActW,EAAGqsB,GACnCrtB,KAAKg9B,SAASh8B,EAAGqsB,GAEjB,IAAI9H,EAAMvkB,EAAEsW,IAAI+V,GAIhB,OAHI9H,EAAIqG,IAAI5rB,KAAK03B,IAAM,GACrBnS,EAAIgL,KAAKvwB,KAAK03B,GAETnS,EAAI8W,UAAUr8B,OAGvBi8B,EAAI76B,UAAU4S,KAAO,SAAehT,EAAGqsB,GACrCrtB,KAAKg9B,SAASh8B,EAAGqsB,GAEjB,IAAI9H,EAAMvkB,EAAEgT,KAAKqZ,GAIjB,OAHI9H,EAAIqG,IAAI5rB,KAAK03B,IAAM,GACrBnS,EAAIgL,KAAKvwB,KAAK03B,GAETnS,GAGT0W,EAAI76B,UAAUiW,IAAM,SAAcrW,EAAGqsB,GACnCrtB,KAAKg9B,SAASh8B,EAAGqsB,GAEjB,IAAI9H,EAAMvkB,EAAEqW,IAAIgW,GAIhB,OAHI9H,EAAIkW,KAAK,GAAK,GAChBlW,EAAIvR,KAAKhU,KAAK03B,GAETnS,EAAI8W,UAAUr8B,OAGvBi8B,EAAI76B,UAAUmvB,KAAO,SAAevvB,EAAGqsB,GACrCrtB,KAAKg9B,SAASh8B,EAAGqsB,GAEjB,IAAI9H,EAAMvkB,EAAEuvB,KAAKlD,GAIjB,OAHI9H,EAAIkW,KAAK,GAAK,GAChBlW,EAAIvR,KAAKhU,KAAK03B,GAETnS,GAGT0W,EAAI76B,UAAU07B,IAAM,SAAc97B,EAAGwqB,GAEnC,OADAxrB,KAAKm9B,SAASn8B,GACPhB,KAAKy+B,KAAKz9B,EAAEu4B,MAAM/N,KAG3ByQ,EAAI76B,UAAUmzB,KAAO,SAAevzB,EAAGqsB,GAErC,OADArtB,KAAKg9B,SAASh8B,EAAGqsB,GACVrtB,KAAKy+B,KAAKz9B,EAAEuzB,KAAKlH,KAG1B4O,EAAI76B,UAAUgV,IAAM,SAAcpV,EAAGqsB,GAEnC,OADArtB,KAAKg9B,SAASh8B,EAAGqsB,GACVrtB,KAAKy+B,KAAKz9B,EAAEoV,IAAIiX,KAGzB4O,EAAI76B,UAAUw3B,KAAO,SAAe53B,GAClC,OAAOhB,KAAKu0B,KAAKvzB,EAAGA,EAAE4rB,UAGxBqP,EAAI76B,UAAUu3B,IAAM,SAAc33B,GAChC,OAAOhB,KAAKoW,IAAIpV,EAAGA,IAGrBi7B,EAAI76B,UAAUk8B,KAAO,SAAet8B,GAClC,GAAIA,EAAEoiB,SAAU,OAAOpiB,EAAE4rB,QAEzB,IAAIsS,EAAOl/B,KAAK03B,EAAEjJ,MAAM,GAIxB,GAHAtE,EAAO+U,EAAO,IAAM,GAGP,IAATA,EAAY,CACd,IAAI9V,EAAMppB,KAAK03B,EAAEpgB,IAAI,IAAIpL,EAAG,IAAIwiB,OAAO,GACvC,OAAO1uB,KAAKopB,IAAIpoB,EAAGooB,GAQrB,IAFA,IAAIoF,EAAIxuB,KAAK03B,EAAEve,KAAK,GAChB5W,EAAI,GACAisB,EAAEpL,UAA2B,IAAfoL,EAAEC,MAAM,IAC5BlsB,IACAisB,EAAEE,OAAO,GAEXvE,GAAQqE,EAAEpL,UAEV,IAAI+b,EAAM,IAAIjzB,EAAG,GAAGgwB,MAAMl8B,MACtBo/B,EAAOD,EAAI3B,SAIX6B,EAAOr/B,KAAK03B,EAAEve,KAAK,GAAGuV,OAAO,GAC7B4Q,EAAIt/B,KAAK03B,EAAE3I,YAGf,IAFAuQ,EAAI,IAAIpzB,EAAG,EAAIozB,EAAIA,GAAGpD,MAAMl8B,MAEW,IAAhCA,KAAKopB,IAAIkW,EAAGD,GAAMzT,IAAIwT,IAC3BE,EAAE5C,QAAQ0C,GAOZ,IAJA,IAAIzgB,EAAI3e,KAAKopB,IAAIkW,EAAG9Q,GAChBvc,EAAIjS,KAAKopB,IAAIpoB,EAAGwtB,EAAEpb,KAAK,GAAGsb,OAAO,IACjCG,EAAI7uB,KAAKopB,IAAIpoB,EAAGwtB,GAChBkJ,EAAIn1B,EACc,IAAfssB,EAAEjD,IAAIuT,IAAY,CAEvB,IADA,IAAInB,EAAMnP,EACDpwB,EAAI,EAAoB,IAAjBu/B,EAAIpS,IAAIuT,GAAY1gC,IAClCu/B,EAAMA,EAAId,SAEZ/S,EAAO1rB,EAAIi5B,GACX,IAAIrK,EAAIrtB,KAAKopB,IAAIzK,EAAG,IAAIzS,EAAG,GAAG4sB,OAAOpB,EAAIj5B,EAAI,IAE7CwT,EAAIA,EAAE8qB,OAAO1P,GACb1O,EAAI0O,EAAE6P,SACNrO,EAAIA,EAAEkO,OAAOpe,GACb+Y,EAAIj5B,EAGN,OAAOwT,GAGTgqB,EAAI76B,UAAUs6B,KAAO,SAAe16B,GAClC,IAAIu+B,EAAMv+B,EAAEq6B,OAAOr7B,KAAK03B,GACxB,OAAqB,IAAjB6H,EAAI3U,UACN2U,EAAI3U,SAAW,EACR5qB,KAAKy+B,KAAKc,GAAK/B,UAEfx9B,KAAKy+B,KAAKc,IAIrBtD,EAAI76B,UAAUgoB,IAAM,SAAcpoB,EAAGwqB,GACnC,GAAIA,EAAIpI,SAAU,OAAO,IAAIlX,EAAG,GAAGgwB,MAAMl8B,MACzC,GAAoB,IAAhBwrB,EAAIiQ,KAAK,GAAU,OAAOz6B,EAAE4rB,QAEhC,IACI4S,EAAM,IAAI7gC,MAAM,IACpB6gC,EAAI,GAAK,IAAItzB,EAAG,GAAGgwB,MAAMl8B,MACzBw/B,EAAI,GAAKx+B,EACT,IAAK,IAAIvC,EAAI,EAAGA,EAAI+gC,EAAIhhC,OAAQC,IAC9B+gC,EAAI/gC,GAAKuB,KAAKoW,IAAIopB,EAAI/gC,EAAI,GAAIuC,GAGhC,IAAIukB,EAAMia,EAAI,GACVxZ,EAAU,EACVyZ,EAAa,EACbnU,EAAQE,EAAIuD,YAAc,GAK9B,IAJc,IAAVzD,IACFA,EAAQ,IAGL7sB,EAAI+sB,EAAIhtB,OAAS,EAAGC,GAAK,EAAGA,IAAK,CAEpC,IADA,IAAIguB,EAAOjB,EAAIX,MAAMpsB,GACZ+mB,EAAI8F,EAAQ,EAAG9F,GAAK,EAAGA,IAAK,CACnC,IAAI6K,EAAO5D,GAAQjH,EAAK,EACpBD,IAAQia,EAAI,KACdja,EAAMvlB,KAAK24B,IAAIpT,IAGL,IAAR8K,GAAyB,IAAZrK,GAKjBA,IAAY,EACZA,GAAWqK,GA9BE,MA+BboP,GACwC,IAANhhC,GAAiB,IAAN+mB,KAE7CD,EAAMvlB,KAAKoW,IAAImP,EAAKia,EAAIxZ,IACxByZ,EAAa,EACbzZ,EAAU,IAXRyZ,EAAa,EAajBnU,EAAQ,GAGV,OAAO/F,GAGT0W,EAAI76B,UAAUg7B,UAAY,SAAoB5Q,GAC5C,IAAIvZ,EAAIuZ,EAAIrC,KAAKnpB,KAAK03B,GAEtB,OAAOzlB,IAAMuZ,EAAMvZ,EAAE2a,QAAU3a,GAGjCgqB,EAAI76B,UAAUm7B,YAAc,SAAsB/Q,GAChD,IAAIjG,EAAMiG,EAAIoB,QAEd,OADArH,EAAIuF,IAAM,KACHvF,GAOTrZ,EAAGwzB,KAAO,SAAelU,GACvB,OAAO,IAAIgT,EAAKhT,IAmBlBnB,EAASmU,EAAMvC,GAEfuC,EAAKp9B,UAAUg7B,UAAY,SAAoB5Q,GAC7C,OAAOxrB,KAAKy+B,KAAKjT,EAAI+N,MAAMv5B,KAAK65B,SAGlC2E,EAAKp9B,UAAUm7B,YAAc,SAAsB/Q,GACjD,IAAIvZ,EAAIjS,KAAKy+B,KAAKjT,EAAIpV,IAAIpW,KAAK0+B,OAE/B,OADAzsB,EAAE6Y,IAAM,KACD7Y,GAGTusB,EAAKp9B,UAAUmzB,KAAO,SAAevzB,EAAGqsB,GACtC,GAAIrsB,EAAEoiB,UAAYiK,EAAEjK,SAGlB,OAFApiB,EAAE6pB,MAAM,GAAK,EACb7pB,EAAExC,OAAS,EACJwC,EAGT,IAAI6tB,EAAI7tB,EAAEuzB,KAAKlH,GACX1O,EAAIkQ,EAAEpF,MAAMzpB,KAAK65B,OAAOzjB,IAAIpW,KAAK2+B,MAAMlF,OAAOz5B,KAAK65B,OAAOzjB,IAAIpW,KAAK03B,GACnEiI,EAAI9Q,EAAE0B,KAAK5R,GAAG+P,OAAO1uB,KAAK65B,OAC1BtU,EAAMoa,EAQV,OANIA,EAAE/T,IAAI5rB,KAAK03B,IAAM,EACnBnS,EAAMoa,EAAEpP,KAAKvwB,KAAK03B,GACTiI,EAAElE,KAAK,GAAK,IACrBlW,EAAMoa,EAAE3rB,KAAKhU,KAAK03B,IAGbnS,EAAI8W,UAAUr8B,OAGvBw+B,EAAKp9B,UAAUgV,IAAM,SAAcpV,EAAGqsB,GACpC,GAAIrsB,EAAEoiB,UAAYiK,EAAEjK,SAAU,OAAO,IAAIlX,EAAG,GAAGmwB,UAAUr8B,MAEzD,IAAI6uB,EAAI7tB,EAAEoV,IAAIiX,GACV1O,EAAIkQ,EAAEpF,MAAMzpB,KAAK65B,OAAOzjB,IAAIpW,KAAK2+B,MAAMlF,OAAOz5B,KAAK65B,OAAOzjB,IAAIpW,KAAK03B,GACnEiI,EAAI9Q,EAAE0B,KAAK5R,GAAG+P,OAAO1uB,KAAK65B,OAC1BtU,EAAMoa,EAOV,OANIA,EAAE/T,IAAI5rB,KAAK03B,IAAM,EACnBnS,EAAMoa,EAAEpP,KAAKvwB,KAAK03B,GACTiI,EAAElE,KAAK,GAAK,IACrBlW,EAAMoa,EAAE3rB,KAAKhU,KAAK03B,IAGbnS,EAAI8W,UAAUr8B,OAGvBw+B,EAAKp9B,UAAUs6B,KAAO,SAAe16B,GAGnC,OADUhB,KAAKy+B,KAAKz9B,EAAEq6B,OAAOr7B,KAAK03B,GAAGthB,IAAIpW,KAAKw6B,KACnC6B,UAAUr8B,OAn3GzB,YAq3G4CA,0CC11G5C,IAAIwb,EAAUnT,EAAAA,OAAAA,GACV2nO,EAAO3nO,EAAQ,OACf41O,EAAM51O,EAAQ,OACdk1O,EAAMl1O,EAAQ,OACdm1O,EAAWn1O,EAAQ,OACnBqgP,EAAMrgP,EAAQ,OACdg3N,EAAMh3N,EAAQ,OACd08B,EAAQ18B,EAAQ,OAChByiP,EAAO,WACP,IAAIjiP,EAAQ7I,KAEZgwO,EAAK7C,YAAYntO,KAAME,WACvBF,KAAKwb,QAAUA,EACfxb,KAAK+kC,MAAQA,EACb/kC,KAAK60O,IAAM,IAAIoJ,EAAIj+O,MACnBA,KAAK+qP,IAAM,IAAIrC,EAAI1oP,MACnBA,KAAK0/N,IAAM,IAAIL,EAAIr/N,MAEnB,IAAIw/N,EAAcx/N,KAAKw/N,YACvBx/N,KAAKw/N,YAAc,SAAU5/H,EAAU8qI,GAMnC,OAJAlL,EAAYr/N,MAAM0I,EAAO3I,WACzB2I,EAAMgsO,IAAI7O,kBAAkBn9N,EAAM02N,iBAClC12N,EAAMkiP,IAAI/kB,kBAAkBn9N,EAAM02N,iBAClC12N,EAAM62N,IAAIF,YAAY5/H,IACf,IAGfkrJ,EAAKtvO,QAAUA,EACfsvO,EAAK/lN,MAAQA,EACb+lN,EAAKj4G,QAAU,CACXorG,IAAKA,EACLV,IAAKA,EACLC,SAAUA,EACVkL,IAAKA,EACLrpB,IAAKA,GAET2Q,EAAKzC,aAAaud,GAClB1sP,EAAOC,QAAUysP,yBCjEjB,IAAIE,EACJ,GAA0B,kBAAfhuJ,WACVguJ,EAAchuJ,gBAEd,IACCguJ,EAAc3iP,EAAQ,OACrB,MAAO1I,IAFT,QAKC,GADKqrP,GAAiC,qBAAXhgO,SAA0BggO,EAAchgO,SAC9DggO,EAAe,MAAM,IAAI9/O,MAAM,mCAItC,IAAI+/O,EAAkBD,EAAYE,WAAaF,EAAYG,aACvDC,EAAoB/iP,EAAQ,OAMhC,SAASgjP,EAAa/tM,EAAKguM,GAiB1B,OAdIA,EACe,IAAIL,EAAgB3tM,EAAKguM,GAGzB,IAAIL,EAAgB3tM,GAYpC2tM,GACH,CAAC,aAAc,OAAQ,UAAW,UAAUnlP,SAAQ,SAASkmD,GAC5DpqD,OAAOC,eAAewpP,EAAcr/L,EAAM,CACzCnoD,IAAK,WAAa,OAAOonP,EAAgBj/L,SAQ5C5tD,EAAOC,QAAU,CACb,aAAiB4sP,EAAkBI,EAAe,KAClD,QAAiBD,0BCpDrBhtP,EAAOC,QAAU,EAAjBD,OAAAA,4CCEA,IAAI0H,EAAUuC,EAAQ,OAClBuyH,EAAuBvyH,EAAQ,OAC/ByxH,EAAYzxH,EAAQ,OAEpBwxH,EAAYC,EAAU,6BACtBF,EAAiBvxH,EAAQ,KAARA,GAEjByyB,EAA0B,qBAAfkiE,WAA6B19C,EAAAA,EAAS09C,WACjD69B,EAAcD,IAEdE,EAAShB,EAAU,0BACnBiB,EAAY,GACZC,EAAO3yH,EAAQ,OACfnF,EAAiBtB,OAAOsB,eACxB02H,GAAkBoB,GAAQ93H,GAC7B4C,EAAQ+0H,GAAa,SAAUI,GAC9B,GAA6B,oBAAlBngG,EAAEmgG,GAA4B,CACxC,IAAI38H,EAAM,IAAIw8B,EAAEmgG,GAChB,GAAI74H,OAAOglE,eAAe9oE,EAAK,CAC9B,IAAI09E,EAAQ94E,EAAe5E,GACvBkD,EAAaw5H,EAAKh/C,EAAO55E,OAAOglE,aACpC,IAAK5lE,EAAY,CAChB,IAAI+xF,EAAarwF,EAAe84E,GAChCx6E,EAAaw5H,EAAKznC,EAAYnxF,OAAOglE,aAEtC2zD,EAAUE,GAAcz5H,EAAWqC,SAMvC,IAeIu3H,EAAe/yH,EAAQ,OAE3BjK,EAAOC,QAAU,SAAyBqB,GACzC,QAAK07H,EAAa17H,KACbk6H,GAAoBx3H,OAAOglE,eAAe1nE,EAnB3B,SAA2BA,GAC/C,IAAI6rP,GAAY,EAWhB,OAVAzlP,EAAQi1H,GAAW,SAAUzgB,EAAQ2gB,GACpC,IAAKswH,EACJ,IACC,IAAIzkP,EAAOwzG,EAAOx3G,KAAKpD,GACnBoH,IAASm0H,IACZswH,EAAYzkP,GAEZ,MAAOrE,QAGJ8oP,EAQApwH,CAAez7H,GAD0Co7H,EAAOjB,EAAUn6H,GAAQ,GAAI,qCClD9FtB,EAAOC,QAAU,WACf,MAAM,IAAI6M,MACR,iHCJJ,IAAI2nK,EAAcxqK,EAAQ,OACtBmjP,EAAWnjP,EAAQ,OACnB+I,EAAS/I,EAAQ,OACjBojP,EAAepjP,EAAQ,MAGvBouH,EAAUpuH,EAAQ,OAElBqjP,EAAe,mBACfl4G,EAAO,aAEXp1I,EAAOC,QACP,SAAqB0kC,EAAKmtL,EAAKppK,GAC7B,IAAK/jB,GAAsB,kBAARA,EACjB,MAAM,IAAIviC,UAAU,sBAEH,oBAAR0vN,IACTppK,EAAKopK,EACLA,EAAM,IAER,GAAIppK,GAAoB,oBAAPA,EACf,MAAM,IAAItmD,UAAU,6CAGtBsmD,EAAKA,GAAM0sF,EAGX,IAAIm4G,GAFJz7B,EAAMA,GAAO,IAEar1M,KAAO,OAAS,OAGtCi9H,GAFJo4E,EAAM9+M,EAAO,CAAEm1M,aAAcolC,GAAmBz7B,IAE9Bp4E,SAAW,GACzB7rF,GAAUikK,EAAIjkK,QAAU,OAAOrkC,cAC/By/E,EAAQ6oH,EAAI7oH,MACZA,IACmB,kBAAVA,IACTA,EAAQwrE,EAAYh1J,UAAUwpF,IAEhCtkE,EAAMyoN,EAASzoN,EAAKskE,IAIG,SAArB6oH,EAAI3J,cACNklC,EAAa3zG,EAAS,SAAU4zG,GAI9Bx7B,EAAIr1M,MAAmB,QAAXoxC,GAA+B,SAAXA,IAClCw/L,EAAa3zG,EAAS,eAAgB4zG,GACtCx7B,EAAI3qK,KAAO5nC,KAAKE,UAAUqyM,EAAI3qK,OAShC,OANA2qK,EAAIjkK,OAASA,EACbikK,EAAIntL,IAAMA,EACVmtL,EAAIp4E,QAAUA,SACPo4E,EAAI7oH,aACJ6oH,EAAIr1M,KAEJ47G,EAAQy5F,EAAKppK,sBCzDtB1oD,EAAOC,QACP,SAAuBy5I,EAASv4I,EAAKG,GACnC,IAAIksP,EAAQrsP,EAAIioB,cACXswH,EAAQv4I,IAASu4I,EAAQ8zG,KAC5B9zG,EAAQv4I,GAAOG,uBCJnBtB,EAAOC,QACP,SAAsB6xN,EAAK1xG,GACzB,OAAKA,EACE,CACL04B,WAAY14B,EAAK04B,WACjBY,QAASt5B,EAAKs5B,QACd7rF,OAAQikK,EAAIjkK,OACZlpB,IAAKmtL,EAAIntL,IAET8oN,WAAYrtI,EAAKqtI,WAAartI,EAAKqtI,WAAartI,GAPhC,6BCFpB,IAAI8mC,EAAMj9I,EAAQ,OACd6d,EAAY7d,EAAQ,OACpBmrI,EAAO,aAEXp1I,EAAOC,QACP,SAAqB6xN,EAAKppK,UACjBopK,EAAI5yK,IAGX,IAAIwuM,GAAU,EACW,SAArB57B,EAAI3J,eACN2J,EAAI3J,aAAe,OACnBulC,GAAU,GAGZ,IAAIlrJ,EAAM0kD,EAAI4qE,GAAK,SAA2B9vN,EAAKo+G,EAAMj5D,GACvD,GAAIumM,IAAY1rP,EACd,IACE,IAAIiiD,EAAOm8D,EAAKqtI,WAAWhmG,aAC3BtgG,EAAO5nC,KAAKC,MAAMykC,GAClB,MAAO5/C,GACPrC,EAAMqC,EAIV+7G,EAAOt4F,EAAUgqM,EAAK1xG,GACb13D,EAAG1mD,EAARA,EAAa,KACJmlD,EADUi5D,GAEvB13D,EAAK0sF,KAIHu4G,EAAUnrJ,EAAImrJ,QAQlB,OAPAnrJ,EAAImrJ,QAAU,WACZ,IAAI99N,EAAM89N,EAAQ5rP,MAAMygG,EAAKjiG,MAAMyC,UAAUyF,MAAM/D,KAAK5C,YAGxD,OAFA4mD,EAAG,IAAI57C,MAAM,gBACb47C,EAAK0sF,EACEvlH,GAGF2yE,uCCvCT,IAAIuwE,EAAkB9oK,EAAQ,OAC1ByrD,EAAezrD,EAAQ,OACvB+oK,EAAkB/oK,EAAQ,OA0F9B,SAASoP,EAAO/X,EAAOiJ,GACtB,OAAIA,EAAK8O,OACD9O,EAAK+tD,OAASy6G,EAAgBzxK,GAAS+9C,mBAAmB/9C,GAG3DA,EAGR,SAAS6xK,EAAWt3J,GACnB,OAAItb,MAAME,QAAQob,GACVA,EAAMo9B,OACc,kBAAVp9B,EACVs3J,EAAW3vK,OAAO4D,KAAKyU,IAAQo9B,MAAK,SAAUr2C,EAAGqsB,GACvD,OAAO/d,OAAOtO,GAAKsO,OAAO+d,MACxB7hB,KAAI,SAAUjM,GAChB,OAAO0a,EAAM1a,MAIR0a,EAGR,SAASy3J,EAAQ5rJ,GAChB,IAAI6rJ,EAAa7rJ,EAAIrhB,QAAQ,KAC7B,OAAoB,IAAhBktK,EACI,GAED7rJ,EAAIjf,MAAM8qK,EAAa,GAG/B,SAAS/zJ,EAAMkI,EAAKnd,GAGnB,IAAIyvJ,EAnFL,SAA8BzvJ,GAC7B,IAAIrF,EAEJ,OAAQqF,EAAKopK,aACZ,IAAK,QACJ,OAAO,SAAUxyK,EAAKG,EAAO+9F,GAC5Bn6F,EAAS,aAAau3C,KAAKt7C,GAE3BA,EAAMA,EAAImf,QAAQ,WAAY,IAEzBpb,QAKoBjD,IAArBo9F,EAAYl+F,KACfk+F,EAAYl+F,GAAO,IAGpBk+F,EAAYl+F,GAAK+D,EAAO,IAAM5D,GAR7B+9F,EAAYl+F,GAAOG,GAWtB,IAAK,UACJ,OAAO,SAAUH,EAAKG,EAAO+9F,GAC5Bn6F,EAAS,UAAUu3C,KAAKt7C,GACxBA,EAAMA,EAAImf,QAAQ,QAAS,IAEtBpb,OAG2BjD,IAArBo9F,EAAYl+F,GAKvBk+F,EAAYl+F,GAAO,GAAGmN,OAAO+wF,EAAYl+F,GAAMG,GAJ9C+9F,EAAYl+F,GAAO,CAACG,GAHpB+9F,EAAYl+F,GAAOG,GAUtB,QACC,OAAO,SAAUH,EAAKG,EAAO+9F,QACHp9F,IAArBo9F,EAAYl+F,GAKhBk+F,EAAYl+F,GAAO,GAAGmN,OAAO+wF,EAAYl+F,GAAMG,GAJ9C+9F,EAAYl+F,GAAOG,IA0CPwyK,CAFhBvpK,EAAOmrD,EAAa,CAACi+G,YAAa,QAASppK,IAMvCslB,EAAMrsB,OAAO2C,OAAO,MAExB,MAAmB,kBAARuhB,EACHmI,GAGRnI,EAAMA,EAAIw9B,OAAO5kC,QAAQ,SAAU,MAMnCoH,EAAI2B,MAAM,KAAK3hB,SAAQ,SAAU4F,GAChC,IAAIo+D,EAAQp+D,EAAMgT,QAAQ,MAAO,KAAK+I,MAAM,KAGxCloB,EAAMuqE,EAAMjwC,QACZzP,EAAM0/C,EAAMtrE,OAAS,EAAIsrE,EAAM/rD,KAAK,UAAO1d,EAI/C+pB,OAAc/pB,IAAR+pB,EAAoB,KAAOgnJ,EAAgBhnJ,GAEjDguI,EAAUgZ,EAAgB7xK,GAAM6qB,EAAK6D,MAG/BrsB,OAAO4D,KAAKyoB,GAAKopB,OAAO3nC,QAAO,SAAUpM,EAAQ/D,GACvD,IAAI6qB,EAAM6D,EAAI1uB,GAQd,OAPIqF,QAAQwlB,IAAuB,kBAARA,IAAqBzrB,MAAME,QAAQurB,GAE7D9mB,EAAO/D,GAAOgyK,EAAWnnJ,GAEzB9mB,EAAO/D,GAAO6qB,EAGR9mB,IACL1B,OAAO2C,OAAO,QA3BT0pB,EA8BT5vB,EAAQqzK,QAAUA,EAClBrzK,EAAQuf,MAAQA,EAEhBvf,EAAQwf,UAAY,SAAUna,EAAKiF,IAShB,KAFlBA,EAAOmrD,EANQ,CACdr8C,QAAQ,EACRi/C,QAAQ,EACRq7G,YAAa,QAGgBppK,IAErB0uC,OACR1uC,EAAK0uC,KAAO,cAGb,IAAI+gH,EApLL,SAA+BzvJ,GAC9B,OAAQA,EAAKopK,aACZ,IAAK,QACJ,OAAO,SAAUxyK,EAAKG,EAAOyP,GAC5B,OAAiB,OAAVzP,EAAiB,CACvB+X,EAAOlY,EAAKoJ,GACZ,IACAwG,EACA,KACC4O,KAAK,IAAM,CACZtG,EAAOlY,EAAKoJ,GACZ,IACA8O,EAAOtI,EAAOxG,GACd,KACA8O,EAAO/X,EAAOiJ,IACboV,KAAK,KAGT,IAAK,UACJ,OAAO,SAAUxe,EAAKG,GACrB,OAAiB,OAAVA,EAAiB+X,EAAOlY,EAAKoJ,GAAQ,CAC3C8O,EAAOlY,EAAKoJ,GACZ,MACA8O,EAAO/X,EAAOiJ,IACboV,KAAK,KAGT,QACC,OAAO,SAAUxe,EAAKG,GACrB,OAAiB,OAAVA,EAAiB+X,EAAOlY,EAAKoJ,GAAQ,CAC3C8O,EAAOlY,EAAKoJ,GACZ,IACA8O,EAAO/X,EAAOiJ,IACboV,KAAK,MAmJMs0J,CAAsB1pK,GAEtC,OAAOjF,EAAM9B,OAAO4D,KAAK9B,GAAK2zC,KAAK1uC,EAAK0uC,MAAM7rC,KAAI,SAAUjM,GAC3D,IAAI6qB,EAAM1mB,EAAInE,GAEd,QAAYc,IAAR+pB,EACH,MAAO,GAGR,GAAY,OAARA,EACH,OAAO3S,EAAOlY,EAAKoJ,GAGpB,GAAIhK,MAAME,QAAQurB,GAAM,CACvB,IAAI9mB,EAAS,GAUb,OARA8mB,EAAIvjB,QAAQf,SAAQ,SAAUo4D,QAChB79D,IAAT69D,GAIJ56D,EAAOrC,KAAKm3J,EAAU74J,EAAK2+D,EAAM56D,EAAO9E,YAGlC8E,EAAOya,KAAK,KAGpB,OAAOtG,EAAOlY,EAAKoJ,GAAQ,IAAM8O,EAAO2S,EAAKzhB,MAC3ChD,QAAO,SAAUmiB,GACnB,OAAOA,EAAEtpB,OAAS,KAChBuf,KAAK,KAAO,IAGhB1f,EAAQk0K,SAAW,SAAUzsJ,EAAKnd,GACjC,MAAO,CACNo6B,IAAKjd,EAAI2B,MAAM,KAAK,IAAM,GAC1B4/E,MAAOzpF,EAAM8zJ,EAAQ5rJ,GAAMnd,qCC5N7BvK,EAAOC,QAAU,SAAUynB,GAC1B,OAAO23B,mBAAmB33B,GAAKpH,QAAQ,YAAY,SAAUC,GAC5D,MAAO,IAAMA,EAAEwH,WAAW,GAAG3hB,SAAS,IAAIojB,sDCF5C,IAAIoD,EAAS3iB,EAAQ,OACjB0kI,EAAa1kI,EAAQ,OACrB2jP,EAAe3jP,EAAQ,OACvB4jP,EAAQ5jP,EAAQ,OA6BpB,SAAS6jP,EAAW5uM,EAAKrd,EAASgiC,GAC9B,IAAI7lD,EAASkhC,EAYb,OAVIyvF,EAAW9sG,IACXgiC,EAAWhiC,EACQ,kBAARqd,IACPlhC,EAAS,CAACkhC,IAAIA,KAGlBlhC,EAAS6vO,EAAMhsN,EAAS,CAACqd,IAAKA,IAGlClhC,EAAO6lD,SAAWA,EACX7lD,EAGX,SAAS+vO,EAAU7uM,EAAKrd,EAASgiC,GAE7B,OAAOmqL,EADPnsN,EAAUisN,EAAW5uM,EAAKrd,EAASgiC,IAIvC,SAASmqL,EAAWnsN,GAChB,GAA+B,qBAArBA,EAAQgiC,SACd,MAAM,IAAI/2D,MAAM,6BAGpB,IAAIupM,GAAS,EACTxyI,EAAW,SAAgB7hE,EAAK40G,EAAUzvD,GACtCkvJ,IACAA,GAAS,EACTx0K,EAAQgiC,SAAS7hE,EAAK40G,EAAUzvD,KAUxC,SAAS8mM,IAEL,IAAI9mM,OAAOllD,EAQX,GALIklD,EADA+/F,EAAItwC,SACGswC,EAAItwC,SAEJswC,EAAIO,cAsJvB,SAAgBP,GAGZ,IACI,GAAyB,aAArBA,EAAIihE,aACJ,OAAOjhE,EAAIgnG,YAEf,IAAIC,EAAwBjnG,EAAIgnG,aAA4D,gBAA7ChnG,EAAIgnG,YAAYr0D,gBAAgB9gB,SAC/E,GAAyB,KAArB7xB,EAAIihE,eAAwBgmC,EAC5B,OAAOjnG,EAAIgnG,YAEjB,MAAO7pP,IAET,OAAO,KAnK4B+pP,CAAOlnG,GAGlCmnG,EACA,IACIlnM,EAAO5nC,KAAKC,MAAM2nC,GACpB,MAAO9iD,IAGb,OAAO8iD,EAGX,SAASmnM,EAAUxlI,GAMf,OALAxkE,aAAaiqM,GACRzlI,aAAeh8G,QAChBg8G,EAAM,IAAIh8G,MAAM,IAAMg8G,GAAO,kCAEjCA,EAAIgwB,WAAa,EACVj1E,EAASilD,EAAK0lI,GAIzB,SAASC,IACL,IAAIC,EAAJ,CACA,IAAInnG,EACJjjG,aAAaiqM,GAGThnG,EAFD1lH,EAAQ8sN,aAAuB1sP,IAAbilJ,EAAIK,OAEZ,IAEgB,OAAfL,EAAIK,OAAkB,IAAML,EAAIK,OAE9C,IAAI3wC,EAAW43I,EACXxsP,EAAM,KAiBV,OAfe,IAAXulJ,GACA3wC,EAAW,CACPzvD,KAAM8mM,IACNn1G,WAAYyO,EACZ15F,OAAQA,EACR6rF,QAAS,GACT/0G,IAAKua,EACLuuM,WAAYvmG,GAEbA,EAAIU,wBACHhxC,EAAS8iC,QAAUk0G,EAAa1mG,EAAIU,2BAGxC5lJ,EAAM,IAAI8K,MAAM,iCAEb+2D,EAAS7hE,EAAK40G,EAAUA,EAASzvD,OAG5C,IAUIhmD,EACAutP,EAXAxnG,EAAMrlH,EAAQqlH,KAAO,KAEpBA,IAEGA,EADArlH,EAAQ+sN,MAAQ/sN,EAAQ8sN,OAClB,IAAIZ,EAAU9lC,eAEd,IAAI8lC,EAAU9mG,gBAM5B,IAMIsnG,EANArvM,EAAMgoG,EAAIviH,IAAM9C,EAAQqd,KAAOrd,EAAQ8C,IACvCkpB,EAASq5F,EAAIr5F,OAAShsB,EAAQgsB,QAAU,MACxC1G,EAAOtlB,EAAQslB,MAAQtlB,EAAQvvB,KAC/BonI,EAAUwN,EAAIxN,QAAU73G,EAAQ63G,SAAW,GAC3C30E,IAASljC,EAAQkjC,KACjBspL,GAAS,EAETG,EAAkB,CAClBrnM,UAAMllD,EACNy3I,QAAS,GACTZ,WAAY,EACZjrF,OAAQA,EACRlpB,IAAKua,EACLuuM,WAAYvmG,GA0ChB,GAvCI,SAAUrlH,IAA4B,IAAjBA,EAAQplB,OAC7B4xO,GAAS,EACT30G,EAAO,QAAcA,EAAO,SAAeA,EAAO,OAAa,oBAChD,QAAX7rF,GAA+B,SAAXA,IACpB6rF,EAAQ,iBAAmBA,EAAQ,kBAAoBA,EAAQ,gBAAkB,oBACjFvyF,EAAO5nC,KAAKE,WAA2B,IAAjBoiB,EAAQplB,KAAgB0qC,EAAOtlB,EAAQplB,QAIrEyqI,EAAIW,mBAvGJ,WAC2B,IAAnBX,EAAIa,YACJztG,WAAWm0M,EAAU,IAsG7BvnG,EAAIulE,OAASgiC,EACbvnG,EAAI0oD,QAAU0+C,EAEdpnG,EAAIY,WAAa,aAGjBZ,EAAIymG,QAAU,WACVe,GAAU,GAEdxnG,EAAI0jE,UAAY0jC,EAChBpnG,EAAIn+F,KAAK8E,EAAQ3O,GAAM6lB,EAAMljC,EAAQgoN,SAAUhoN,EAAQ2wC,UAEnDzN,IACAmiF,EAAIvN,kBAAoB93G,EAAQ83G,kBAK/B50E,GAAQljC,EAAQmjC,QAAU,IAC3BupL,EAAej0M,YAAW,WACtB,IAAIo0M,EAAJ,CACAA,GAAU,EACVxnG,EAAIrD,MAAM,WACV,IAAIx/I,EAAI,IAAIyI,MAAM,0BAClBzI,EAAEogB,KAAO,YACT6pO,EAAUjqP,MACXw9B,EAAQmjC,UAGXkiF,EAAIe,iBACJ,IAAI9mJ,KAAOu4I,EACJA,EAAQtxI,eAAejH,IACtB+lJ,EAAIe,iBAAiB9mJ,EAAKu4I,EAAQv4I,SAGvC,GAAI0gC,EAAQ63G,UApLvB,SAAiBp0I,GACb,IAAI,IAAIjF,KAAKiF,EACT,GAAGA,EAAI8C,eAAe/H,GAAI,OAAO,EAErC,OAAO,EAgLwBgsD,CAAQxqB,EAAQ63G,SAC3C,MAAM,IAAI5sI,MAAM,qDAkBpB,MAfI,iBAAkB+0B,IAClBqlH,EAAIihE,aAAetmL,EAAQsmL,cAG3B,eAAgBtmL,GACc,oBAAvBA,EAAQgtN,YAEfhtN,EAAQgtN,WAAW3nG,GAMvBA,EAAIiB,KAAKhhG,GAAQ,MAEV+/F,EA3NXlnJ,EAAOC,QAAU8tP,EAEjB/tP,EAAOC,QAAPD,QAAyB+tP,EACzBA,EAAU9mG,eAAiBr6H,EAAOq6H,gBA6OlC,aA5OA8mG,EAAU9lC,eAAiB,oBAAsB,IAAI8lC,EAAU9mG,eAAoB8mG,EAAU9mG,eAAiBr6H,EAAOq7L,eAUrH,SAAsBvmL,EAAOz9B,GACzB,IAAK,IAAI5D,EAAI,EAAGA,EAAIqhC,EAAMthC,OAAQC,IAC9B4D,EAASy9B,EAAMrhC,IAVvByuP,CAAa,CAAC,MAAO,MAAO,OAAQ,QAAS,OAAQ,WAAW,SAASjhM,GACrEkgM,EAAqB,WAAXlgM,EAAsB,MAAQA,GAAU,SAAS3O,EAAKrd,EAASgiC,GAGrE,OAFAhiC,EAAUisN,EAAW5uM,EAAKrd,EAASgiC,IAC3BhW,OAASA,EAAOrkC,cACjBwkO,EAAWnsN,iaChB1B,8EAA0C,OAAPh2B,EAAAA,EAAAA,GAAO,EAA1C,CAAmCiB,OAAtB7M,EAAAA,cAAAA,EACb,8EAA8C,OAAP4L,EAAAA,EAAAA,GAAO,EAA9C,CAAuCiB,OAA1B7M,EAAAA,kBAAAA,EACb,8EAAyC,OAAP4L,EAAAA,EAAAA,GAAO,EAAzC,CAAkCiB,OAArB7M,EAAAA,aAAAA,EACb,8EAAwC,OAAP4L,EAAAA,EAAAA,GAAO,EAAxC,CAAiCiB,OAApB7M,EAAAA,YAAAA,mJCHbugH,CAAAA,EAAAA,QACA,eAASvgH,EAAAA,0BAAAA,EAAAA,6GCCT,MAQC,SAAoB6T,GAAA,YAPpB,cAAU,EACV,iBAAa,EAEb,YAAS,EACT,uBAAmB,EACnB,WAAQ,GANI7T,EAAAA,cAAAA,qFCIb,8BASS,eAA4D,GAiCrE,OA/BC8uP,EAAAA,UAAAA,iBAAAA,SAAiBhyG,EAAmBl0B,GACnCk0B,EAAYA,EAAU3zH,cACtB,KAAKyxB,UAAUkiG,GAAa,KAAKliG,UAAUkiG,IAAc,GACzD,KAAKliG,UAAUkiG,GAAWl6I,KAAMgmH,EAAyCmmI,aAAgBnmI,IAE1FkmI,EAAAA,UAAAA,oBAAAA,SAAoBhyG,EAAmBl0B,GAEtC,GADAk0B,EAAYA,EAAU3zH,cACjB,KAAKyxB,UAAUkiG,GAApB,CAEA,IAAMhsI,EAAQ,KAAK8pC,UAAUkiG,GAAW12I,QAASwiH,EAAyCmmI,aAAgBnmI,GACtG93G,EAAQ,GAEZ,KAAK8pC,UAAUkiG,GAAWlmI,OAAO9F,EAAO,KAEzCg+O,EAAAA,UAAAA,cAAAA,SAAcnmI,GACb,IAAMm0B,EAAYn0B,EAAM90G,KAAKsV,cAG7B,GAFAw/F,EAAM1lH,OAAS,KAEX,KAAK23C,UAAUkiG,GAClB,IAAqB,eAAKliG,UAAUkiG,GAAfn2I,EAAAA,EAAAA,OAAAA,IAAyB,CAA7B,KACPlC,KAAK,KAAMkkH,GAItB,IAAMC,EAAW,KAAK,KAAKk0B,GAK3B,OAJIl0B,GACHA,EAASnkH,KAAK,KAAMkkH,IAGd,GAET,EA1CA,GAAa3oH,EAAAA,0BAAAA,gbCNb,IAGA,cAIC,mBACCuK,EAAAA,KAAAA,OAAO,YAJAC,EAAAA,aAA8B,KAC9BA,EAAAA,MAAQ,KAIfA,EAAKwjE,WA+CP,OArD0CpiE,EAAAA,EAAAA,GASzCojP,EAAAA,UAAAA,OAAAA,WACC,KAAKC,aAAe,KACpB,KAAKjmC,MAAQ,MAGdgmC,EAAAA,UAAAA,SAAAA,SAAS38O,GACR,GAAY,MAARA,EAEJ,GAAoB,kBAATA,EACU,IAAhBA,EAAKlS,SACR,KAAK8uP,aAAe,4BAErB,KAAKjmC,MAAQ,IAAIt3M,EAAOW,EAAM,cACxB,GAAIX,EAAO6J,SAASlJ,GAC1B,KAAK22M,MAAQ32M,OACP,GAAIA,aAAgB6nE,YAAa,CAGvC,IAFA,IAAMhzB,EAAO,IAAIx1C,EAAOW,EAAK2d,YACvBqgH,EAAO,IAAI9uH,WAAWlP,GACnBjS,EAAI,EAAGA,EAAIiS,EAAK2d,WAAY5vB,IAAO8mD,EAAK9mD,GAAKiwI,EAAKjwI,GAC3D,KAAK4oN,MAAQ9hK,MACP,MAAI70C,EAAKy/C,QAAUz/C,EAAKy/C,kBAAkBooB,aAOhD,MAAM,IAAIrtE,MAAM,2BAA2BwF,GANrC60C,EAAO,IAAIx1C,EAAOW,EAAK2d,YAA7B,IACMjO,EAAS1P,EAAKiuD,WAEpB,IADM+vE,EAAO,IAAI9uH,WAAWlP,EAAKy/C,QACxB1xD,EAAI,EAAGA,EAAIiS,EAAK2d,WAAY5vB,IAAO8mD,EAAK9mD,GAAKiwI,EAAKjwI,EAAI2hB,GAC/D,KAAKinM,MAAQ9hK,IAMf8nM,EAAAA,UAAAA,iBAAAA,SAAiBv1G,EAAiBy1G,GAC7B,KAAKD,eAAiBC,EAAe,kBACxCz1G,EAAQ,gBAAkB,KAAKw1G,cAE5B,KAAKjmC,QACRvvE,EAAQ,kBAAoB,KAAKuvE,MAAM7oN,OAAOgG,aAIhD6oP,EAAAA,UAAAA,aAAAA,SAAa52H,GACR,KAAK4wF,OAAS5wF,EAAQ3rE,MAAM,KAAKu8J,OACrC5wF,EAAQlrG,OAEV,EArDA,CAHA,SAG0CiiO,2BAA7BnvP,EAAAA,qBAAAA,knBCHb,eACA,WACA,WACA,WACA,WACA,WACA,WACA,WAIA,WASA,cAmFC,WAAY4hC,QAAA,QAAAA,EAAAA,IAAZ,MACCr3B,EAAAA,KAAAA,OAAO,YApERC,EAAAA,OAASw8I,EAAeokE,OACxB5gN,EAAAA,OAASw8I,EAAeqkE,OACxB7gN,EAAAA,iBAAmBw8I,EAAeskE,iBAClC9gN,EAAAA,QAAUw8I,EAAe6jE,QACzBrgN,EAAAA,KAAOw8I,EAAe8jE,KAEtBtgN,EAAAA,mBAAmD,KACnDA,EAAAA,WAAqBw8I,EAAeokE,OAEpC5gN,EAAAA,SAA0D,KAC1DA,EAAAA,aAAe,GACfA,EAAAA,aAAe,GACfA,EAAAA,OAAS,EACTA,EAAAA,WAAa,GACbA,EAAAA,QAAU,EACVA,EAAAA,OAAS,IAAI4kP,EAAAA,qBACb5kP,EAAAA,YAAc,GACdA,EAAAA,iBAAkB,EAOVA,EAAAA,QAAyB,KACzBA,EAAAA,KAAsB,KACtBA,EAAAA,OAAQ,EACRA,EAAAA,SAAuC,GACvCA,EAAAA,gBAAuD,GACvDA,EAAAA,cAA+B,KAC/BA,EAAAA,SAAiC,KACjCA,EAAAA,UAAoC,KACpCA,EAAAA,eAAkC,KAClCA,EAAAA,iBAA+D,KAC/DA,EAAAA,UAAY,KACZA,EAAAA,OAAS,KACTA,EAAAA,aAAe,EACfA,EAAAA,YAAc,EACdA,EAAAA,mBAAoB,EAEpBA,EAAAA,mBAAqB,CAAC6+O,SAAS,EAAMgG,OAAO,EAAMC,OAAO,GACzD9kP,EAAAA,mBAAqB,CAC5B,kBAAkB,EAClB,mBAAmB,EACnB,kCAAkC,EAClC,iCAAiC,EACjC0hO,YAAY,EACZ,kBAAkB,EAClB5gJ,QAAQ,EACRikK,SAAS,EACTt7L,MAAM,EACNu7L,KAAK,EACLC,QAAQ,EACR/kM,MAAM,EACN,cAAc,EACdJ,QAAQ,EACRolM,SAAS,EACThiE,IAAI,EACJiiE,SAAS,EACT,qBAAqB,EACrBC,SAAS,EACT,cAAc,EACdC,KAAK,GAEErlP,EAAAA,gBAAkB,CAAC,cAAc,EAAM,eAAe,GACtDA,EAAAA,WAAa,gBAAgBywC,EAAGpnC,OAAM,IAAIonC,EAAGuuG,OAAM,aAAaruG,EAAQqG,SAASzhC,KAAI,OAAOo7B,EAAQqG,SAASsuM,GAIpHtlP,EAAKulP,WAAanuN,EAAQouN,OAAQ,IAsWpC,OA3boCpkP,EAAAA,EAAAA,GAwFnCo7I,EAAAA,UAAAA,KAAAA,SAAKp5F,EAAgBlpB,EAAa+1K,EAAcw1C,EAAe19K,GAE9D,QAFiC,QAAAkoI,GAAAA,GACjC7sJ,EAASA,EAAOrkC,cACZ,KAAK2mO,mBAAmBtiM,GAAW,MAAM,IAAIo5F,EAAempG,cAAc,eAAeviM,EAAM,0BAEnG,IAAMwiM,EAAS,KAAKC,UAAU3rN,EAAKurN,EAAM19K,GAErC,KAAKu1E,aAAed,EAAeskE,mBAAoB,KAAKxjE,WAAed,EAAe6jE,SAI9F,KAAK6uB,QAAU9rL,EACf,KAAK0iM,KAAOF,EACZ,KAAKG,OAAS91C,EACd,KAAKwO,SAAW,GAChB,KAAKunC,gBAAkB,GACvB,KAAKC,cAAgB,KACrB,KAAKC,eAAe1pG,EAAeqkE,QACnC,KAAKslC,SAAW,KAChB,KAAK/lC,UAAY,KACjB,KAAKtjE,OAAS,EACd,KAAKskE,WAAa,GAClB,KAAKglC,eAAiB,GACtB,KAAKC,iBAAmB,KACxB,KAAKC,aAAe,EACpB,KAAKC,YAAc,EACnB,KAAKC,mBAAoB,GAG1BhqG,EAAAA,UAAAA,iBAAAA,SAAiBv+I,EAAcpH,GAC9B,GAAI,KAAKymJ,aAAed,EAAeqkE,OAAU,MAAM,IAAIrkE,EAAeiqG,kBAAkB,iCAE5F,IAAMC,EAAczoP,EAAK0gB,cACrB,KAAKgoO,mBAAmBD,IAAgB,QAAQxoP,KAAKwoP,IAAgB,UAAUxoP,KAAKwoP,GACvFjtN,QAAQxY,KAAK,iCAAiChjB,EAAI,MAInDpH,EAAQA,EAAM8E,WAC2B,MAArC,KAAKqqP,gBAAgBU,IACxBzoP,EAAO,KAAK+nP,gBAAgBU,GAC5B,KAAKjoC,SAASxgN,GAAW,KAAKwgN,SAASxgN,GAAK,KAAKpH,IAEjD,KAAKmvP,gBAAgBU,GAAezoP,EACpC,KAAKwgN,SAASxgN,GAAQpH,KAIxB2lJ,EAAAA,UAAAA,KAAAA,SAAK30I,GACJ,GAAI,KAAKy1I,aAAed,EAAeqkE,OAAU,MAAM,IAAIrkE,EAAeiqG,kBAAkB,iCAC5F,GAAI,KAAKN,SAAY,MAAM,IAAI3pG,EAAeiqG,kBAAkB,yBAEhE,OAAQ,KAAKX,KAAK7lM,UAClB,IAAK,QACJ,OAAO,KAAK2mM,UAAU/+O,GACvB,IAAK,QACL,IAAK,SACJ,OAAO,KAAKg/O,UAAUh/O,GACvB,QACC,MAAM,IAAI20I,EAAesqG,aAAa,wBAAwB,KAAKhB,KAAK7lM,YAI1Eu8F,EAAAA,UAAAA,MAAAA,WACsB,MAAjB,KAAK2pG,WAET,KAAKA,SAAS/sG,QACd,KAAK2tG,YAEL,KAAKC,kBAAkB,SACvB,KAAKA,kBAAkB,aAGxBxqG,EAAAA,UAAAA,kBAAAA,SAAkBv+I,GACjB,GAA6B,MAAzB,KAAKooP,kBAAoC,MAARpoP,EAAgB,OAAO,KAC5D,IAAMyoP,EAAczoP,EAAK0gB,cACzB,OAAO,KAAK0nO,iBAAiB1oP,eAAe+oP,GACzC,KAAKL,iBAAiBpoP,EAAK0gB,eAC3B,MAGJ69H,EAAAA,UAAAA,sBAAAA,WAAA,WACC,OAA6B,MAAzB,KAAK6pG,iBAAmC,GACrCttP,OAAO4D,KAAK,KAAK0pP,kBAAkB1jP,KAAI,YAAO,OAAGjM,EAAG,KAAKsJ,EAAKqmP,iBAAiB3vP,MAAQwe,KAAK,SAGpGsnI,EAAAA,UAAAA,iBAAAA,SAAiBolE,GAChB,GAAI,KAAKtkE,aAAed,EAAe6jE,SAAW,KAAK/iE,aAAed,EAAe8jE,KAAQ,MAAM,IAAI9jE,EAAeiqG,kBAAkB,qDACxI,KAAKR,cAAgBrkC,EAASjjM,eAG/B69H,EAAAA,UAAAA,UAAAA,SAAUplH,GAGT,GAFA,KAAK6vN,gBAAkB7vN,EAAQylN,WAAa,KAAKoK,gBACjD,KAAKC,iBAAmB9vN,EAAQwlN,YAAc,KAAKsK,iBAC/C9vN,EAAQz5B,eAAe,WAAY,CACtC,GAAuB,MAAnBy5B,EAAQ65G,QAEX,IADkB/2G,EAAInlB,MAAMqiB,EAAQ65G,SAAS,GAAO,GACrChxF,SACd,MAAM,IAAIu8F,EAAez5B,YAAY,mCAGvC,KAAKokI,cAAgB/vN,EAAQ65G,UAIxBuL,EAAAA,UAAP,SAAiBplH,GAChBolH,EAAejkJ,UAAUykP,UAAU5lN,IAG5BolH,EAAAA,UAAAA,eAAR,SAAuBc,GACtB,KAAKA,WAAaA,EAClB,KAAK+nE,cAAc,IAAI+hC,EAAAA,cAAc,sBAG9B5qG,EAAAA,UAAAA,UAAR,SAAkB30I,GAEjB,MAAM,IAAIxF,MAAM,mCAGTm6I,EAAAA,UAAAA,UAAR,SAAkB30I,GACjB,GAAI,KAAKk+O,MAAS,MAAM,IAAI1jP,MAAM,+CAC9BwF,GAA0B,QAAjB,KAAKqnO,SAAsC,SAAjB,KAAKA,QAI3CrnO,EAAOA,GAAQ,IAHf4xB,QAAQxY,KAAK,8BAA8B,KAAKiuN,QAAO,aACvDrnO,EAAO,MAKR,KAAK8hN,OAAO09B,SAASx/O,GACrB,KAAKy/O,mBACL,KAAKC,oBAGE/qG,EAAAA,UAAAA,iBAAR,sBACC,GAAI,KAAKtN,gBAAiB,CACzB,IAAMpuD,EAAS07D,EAAegrG,UAC5BnmK,WACAvB,EAAOJ,iBAAiB,KAAKomK,KAAKxnG,SAAU,KAAKwnG,KAAK1lM,SAAiC,WAAvB,KAAK0lM,KAAK7lM,WACzEugC,gBAEH,KAAKi+H,SAAS39H,OAAS,KAAK29H,SAASsmC,QAAUjkK,EAG1C,sFAAC2mK,EAAAA,EAAAA,GAAM/K,EAAAA,EAAAA,GAEP9uH,EADgE65H,EAAK75H,QAAQt1H,KAAKmvP,EACxEC,CAAc,CAC7BppG,SAAU,KAAKwnG,KAAKxnG,SACpBP,MAAO,KAAK+nG,KAAK/nG,KACjB59F,KAAM,KAAK2lM,KAAK3lM,KAChBu+J,KAAM,KAAKonC,KAAKpnC,KAChBt7J,OAAQ,KAAK8rL,QACbjgG,QAAS,KAAKwvE,SACdi+B,MAAK,IAEN,KAAKyJ,SAAWv4H,EAEZ,KAAKrzD,SAAWqzD,EAAQ/9E,WAAW,KAAK0qB,SAAS,WAAM,SAAKotL,eAAe/5H,MAC/EA,EAAQ/3B,GAAG,YAAY,YAAY,SAAK+xJ,gBAAgBh6H,EAASzhB,MACjEyhB,EAAQ/3B,GAAG,SAAS,YAAS,SAAKgyJ,oBAAoBj6H,EAAS92H,MAC/D,KAAK6yN,OAAOm+B,aAAal6H,GAErB,KAAKu4H,WAAav4H,GAAW,KAAKo5H,kBAAkB,cAGjDxqG,EAAAA,UAAAA,iBAAR,WACC,KAAKiiE,SAAQ98M,EAAAA,GACT,KAAK88M,SAAQ,CAChBspC,WAAY,aACZC,KAAM,KAAKlC,KAAK5lM,KAChB,aAAc,KAAK+nM,YAChB,KAAK1C,WAAa,CAAC2C,QAAS,eAAiB,IAEjD,KAAKv+B,OAAO29B,iBAAiB,KAAK7oC,SAAU,KAAKunC,kBAG1CxpG,EAAAA,UAAAA,gBAAR,SAAwB5uB,EAAwBzhB,GAAhD,WACC,GAAI,KAAKg6I,WAAav4H,EAAtB,CAOA,GALI,KAAKshB,kBAAoB/iC,EAAS8iC,QAAQ,eAAiB9iC,EAAS8iC,QAAQ,iBAC/EuN,EAAegrG,UACb/lK,WAAW0qB,EAAS8iC,QAAQ,eAAiB9iC,EAAS8iC,QAAQ,gBAG7D,CAAC,IAAK,IAAK,IAAK,IAAK,KAAKrzI,QAAQuwG,EAASkiC,aAAe,EAe7D,OAdA,KAAKy3G,KAAO,KAAKD,UAAU15I,EAAS8iC,QAAQwO,UAC5C,KAAKyxF,QAAU,MACX,KAAK8W,gBAAgB,yBACjB,KAAKvnC,SAAS,KAAKunC,gBAAgB,wBACnC,KAAKA,gBAAgB,iBAEQ,MAAjC,KAAKvnC,SAAS,wBACV,KAAKA,SAAS,uBAEf,KAAKA,SAAS,kBAErB,KAAKkL,OAAOnmJ,SACZ,KAAK8jL,wBACL,KAAKC,mBAIN,KAAKnnC,UAAYj0G,EACjB,KAAKi0G,UAAUvqH,GAAG,QAAQ,YAAQ,SAAKsyJ,oBAAoBh8I,EAAUtkG,MACrE,KAAKu4M,UAAUvqH,GAAG,OAAO,WAAM,SAAKuyJ,mBAAmBj8I,MACvD,KAAKi0G,UAAUvqH,GAAG,SAAS,WAAM,SAAKwyJ,qBAAqBl8I,MAE3D,KAAKm8I,YAAc,KAAKxC,KAAK5wM,KAAKt2B,MAAM,KAAK,GAC7C,KAAKk+H,OAAS3wC,EAASkiC,WACvB,KAAK+yE,WAAa3zF,EAAK4vF,aAAa,KAAKvgE,QACzC,KAAKyrG,sBAAsBp8I,GAE3B,IAAMq8I,EAAe,KAAKnC,iBAAiB,mBAAqB,GAChE,KAAKE,aAAeiC,EACpB,KAAKhC,oBAAsBgC,EAE3B,KAAKtC,eAAe1pG,EAAeskE,oBAG5BtkE,EAAAA,UAAAA,oBAAR,SAA4BrwC,EAA2BtkG,GAClD,KAAKu4M,YAAcj0G,IAEvB,KAAKi6I,eAAehuP,KAAK,IAAI8O,EAAOW,IACpC,KAAKy+O,cAAgBz+O,EAAKlS,OAEtB,KAAK2nJ,aAAed,EAAe6jE,SACtC,KAAK6lC,eAAe1pG,EAAe6jE,SAGpC,KAAK2mC,kBAAkB,cAGhBxqG,EAAAA,UAAAA,mBAAR,SAA2BrwC,GACtB,KAAKi0G,YAAcj0G,IAEvB,KAAKmxI,iBACL,KAAK6I,SAAW,KAChB,KAAK/lC,UAAY,KACjB,KAAK8lC,eAAe1pG,EAAe8jE,MAEnC,KAAK0mC,kBAAkB,QACvB,KAAKA,kBAAkB,aAGhBxqG,EAAAA,UAAAA,qBAAR,SAA6BrwC,GAC5B,GAAI,KAAKi0G,YAAcj0G,EAAvB,CAEA,IAAMyhB,EAAU,KAAKu4H,SACrB,KAAKY,YACLn5H,EAAQwrB,QACR,KAAK8sG,eAAe1pG,EAAe8jE,MAEnC,KAAK0mC,kBAAkB,SACvB,KAAKA,kBAAkB,aAGhBxqG,EAAAA,UAAAA,eAAR,SAAuB5uB,GAClB,KAAKu4H,WAAav4H,IAEtB,KAAKm5H,YACLn5H,EAAQwrB,QACR,KAAK8sG,eAAe1pG,EAAe8jE,MAEnC,KAAK0mC,kBAAkB,WACvB,KAAKA,kBAAkB,aAGhBxqG,EAAAA,UAAAA,oBAAR,SAA4B5uB,EAAwB92H,GAC/C,KAAKqvP,WAAav4H,IAEtB,KAAKm5H,YACLn5H,EAAQwrB,QACR,KAAK8sG,eAAe1pG,EAAe8jE,MAEnC,KAAK0mC,kBAAkB,SACvB,KAAKA,kBAAkB,aAGhBxqG,EAAAA,UAAAA,kBAAR,SAA0BlK,GACzB,IAAMn0B,EAAQ,IAAIq+B,EAAeisG,cAAcn2G,GAC/Cn0B,EAAMuqI,iBAAmB,KAAKlC,kBAC9BroI,EAAMwqI,OAAS,KAAKrC,aACpBnoI,EAAMz6F,MAAQ,KAAK6iO,YACnB,KAAKlhC,cAAclnG,IAGZq+B,EAAAA,UAAAA,UAAR,WACC,KAAK2pG,SAAW,KAChB,KAAK/lC,UAAY,KACjB,KAAKimC,iBAAmB,KACxB,KAAKD,eAAiB,MAGf5pG,EAAAA,UAAAA,UAAR,SAAkBosG,EAAmBnD,EAAe19K,GACnD,IAAM1nB,EAAoC,MAAtB,KAAK8mM,cAAwByB,EAAY1uN,EAAI5jC,QAAQ,KAAK6wP,cAAeyB,GACvFhD,EAAiB1rN,EAAInlB,MAAMsrC,GAAa,GAAO,GAErDulM,EAAOz+O,KAAO,KAER,8BAAC0hP,EAAAA,EAAAA,GAASC,EAAAA,EAAAA,GAKhB,OAJID,GAAWC,GAAerD,GAAQ19K,KACrC69K,EAAOlnC,MAAU+mC,GAAQoD,GAAW,IAAE,KAAI9gL,GAAY+gL,GAAe,KAG/DlD,GAGAppG,EAAAA,UAAAA,sBAAR,SAA8BrwC,GAE7B,IAAK,IAAI7sG,KADT,KAAK+mP,iBAAmB,GACPl6I,EAAS8iC,QAAS,CAClC,IAAMy3G,EAAcpnP,EAAKqf,cACrB,KAAKoqO,gBAAgBrC,KACzB,KAAKL,iBAAiBK,GAAev6I,EAAS8iC,QAAQ3vI,IAE7B,MAAtB,KAAK2mP,gBACR,KAAKI,iBAAiB,gBAAkB,KAAKJ,gBAIvCzpG,EAAAA,UAAAA,eAAR,WACC,IAAMl1F,EAASpgD,EAAOrD,OAAO,KAAKuiP,gBAGlC,OAFA,KAAKA,eAAiB,KAEd,KAAK1oC,cACb,IAAK,OACJ,KAAK1gE,aAAe,KACpB,IACC,KAAK7wC,SAAWr3F,KAAKC,MAAMuyC,EAAO3rD,SAAS,UAC1C,MAAO6F,GACR,KAAK2qG,SAAW,KAEjB,OACD,IAAK,SAGJ,OAFA,KAAK6wC,aAAe,UACpB,KAAK7wC,SAAW7kD,GAEjB,IAAK,cACJ,KAAK01F,aAAe,KAGpB,IAFA,IAAM3iD,EAAc,IAAI3qB,YAAYpoB,EAAO3xD,QACrCkwI,EAAO,IAAI9uH,WAAWsjF,GACnBzkG,EAAI,EAAGA,EAAI0xD,EAAO3xD,OAAQC,IAAOiwI,EAAKjwI,GAAK0xD,EAAO1xD,GAE3D,YADA,KAAKu2G,SAAW9R,GAGjB,QACC,IACC,KAAK2iD,aAAe11F,EAAO3rD,SAAS,KAAKqtP,0BACxC,MAAO9oP,GACR,KAAK88I,aAAe11F,EAAO3rD,SAAS,UAErC,KAAKwwG,SAAW,KAAK6wC,eAIfR,EAAAA,UAAAA,uBAAR,WACC,MAAO,oBAAoBxqG,KAAK,KAAKq0M,iBAAiB,iBAAmB,IAAI,IAAM,SAxb7E7pG,EAAAA,cAAgB4qG,EAAAA,cAChB5qG,EAAAA,kBAAoB7kB,EAAAA,kBACpB6kB,EAAAA,aAAe7kB,EAAAA,aACf6kB,EAAAA,cAAgB7kB,EAAAA,cAChB6kB,EAAAA,YAAc7kB,EAAAA,YACd6kB,EAAAA,qBAAuBooG,EAAAA,qBAEvBpoG,EAAAA,OAAS,EACTA,EAAAA,OAAS,EACTA,EAAAA,iBAAmB,EACnBA,EAAAA,QAAU,EACVA,EAAAA,KAAO,EAEPA,EAAAA,UAAY18D,EAAOY,YA6a3B,EA3bA,CAAoCikK,EAAAA,2BAAvBnvP,EAAAA,eAAAA,EA6bbgnJ,EAAejkJ,UAAU0uP,gBAAkBx5H,EAAK2vF,YAChD5gE,EAAejkJ,UAAU2uP,iBAAmBx5H,EAAM0vF,YAClD5gE,EAAejkJ,UAAU4uP,cAAgB,wBCndzC5xP,EAAOC,QAIP,WAGI,IAFA,IAAIiD,EAAS,GAEJ7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CACvC,IAAIoH,EAAS3F,UAAUzB,GAEvB,IAAK,IAAIc,KAAOsG,EACRW,EAAe1D,KAAK+C,EAAQtG,KAC5B+B,EAAO/B,GAAOsG,EAAOtG,IAKjC,OAAO+B,GAfX,IAAIkF,EAAiB5E,OAAOR,UAAUoF,wSCAtC,IAAIsrP,EAAgB,CACnB,gBACA,iBACA,eACA,eACA,aACA,aACA,YACA,cACA,cACA,aACA,qBAGGh3N,EAA0B,qBAAfkiE,WAA6B19C,EAAAA,EAAS09C,WAErD5+F,EAAOC,QAAU,WAEhB,IADA,IAAI+uB,EAAM,GACD3uB,EAAI,EAAGA,EAAIqzP,EAActzP,OAAQC,IACN,oBAAxBq8B,EAAEg3N,EAAcrzP,MAC1B2uB,EAAIA,EAAI5uB,QAAUszP,EAAcrzP,IAGlC,OAAO2uB,uCCvBR,IAEIu1D,EAFet6E,EAAQ,MAEf85E,CAAa,qCAAqC,GAC9D,GAAIQ,EACH,IACCA,EAAM,GAAI,UACT,MAAOlgF,GAERkgF,EAAQ,KAIVvkF,EAAOC,QAAUskF,sCCdF,SAAS/sB,EAAgBt1D,EAAUC,GAChD,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,yGCFxB,SAASa,EAAkBC,EAAQC,GACjC,IAAK,IAAI9C,EAAI,EAAGA,EAAI8C,EAAM/C,OAAQC,IAAK,CACrC,IAAI+C,EAAaD,EAAM9C,GACvB+C,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeP,EAAQE,EAAWjC,IAAKiC,IAInC,SAASuwP,EAAaxxP,EAAauB,EAAYC,GAM5D,OALID,GAAYT,EAAkBd,EAAYa,UAAWU,GACrDC,GAAaV,EAAkBd,EAAawB,GAChDH,OAAOC,eAAetB,EAAa,YAAa,CAC9CoB,UAAU,IAELpB,qHChBM,SAAS0F,EAAQvC,GAG9B,OAAOuC,EAAU,mBAAqB7D,QAAU,iBAAmBA,OAAOC,SAAW,SAAUqB,GAC7F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAO,mBAAqBtB,QAAUsB,EAAID,cAAgBrB,QAAUsB,IAAQtB,OAAOhB,UAAY,gBAAkBsC,GACvHuC,EAAQvC,GCLE,SAASs0D,EAA2Bj5D,EAAM+D,GACvD,GAAIA,IAA2B,WAAlBmD,EAAQnD,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAItC,UAAU,4DAGtB,OCTa,SAAgCzB,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIC,eAAe,6DAG3B,OAAOD,EDIA,CAAsBA,GENhB,SAASizP,EAAa5uP,GACnC,IAAIC,ECJS,WACb,GAAuB,qBAAZvC,UAA4BA,QAAQC,UAAW,OAAO,EACjE,GAAID,QAAQC,UAAU2D,KAAM,OAAO,EACnC,GAAqB,oBAAVC,MAAsB,OAAO,EAExC,IAEE,OADAC,QAAQxD,UAAUyD,QAAQ/B,KAAKhC,QAAQC,UAAU6D,QAAS,IAAI,iBACvD,EACP,MAAOnC,GACP,OAAO,GDLuB,GAChC,OAAO,WACL,IACIa,EADAC,GAAQ,EAAAL,EAAA,GAAeE,GAG3B,GAAIC,EAA2B,CAC7B,IAAIG,GAAY,EAAAN,EAAA,GAAelD,MAAMyD,YACrCH,EAASxC,QAAQC,UAAUwC,EAAOrD,UAAWsD,QAE7CF,EAASC,EAAMpD,MAAMH,KAAME,WAG7B,OAAO,EAA0BF,KAAMsD,yCEhB5B,SAASa,EAAgBlC,GAItC,OAHAkC,EAAkBvC,OAAOnB,eAAiBmB,OAAOsB,eAAiB,SAAyBjB,GACzF,OAAOA,EAAEmC,WAAaxC,OAAOsB,eAAejB,IAEvCkC,EAAgBlC,uECJV,SAASkE,EAAgBlE,EAAGmE,GAMzC,OALAD,EAAkBvE,OAAOnB,gBAAkB,SAAyBwB,EAAGmE,GAErE,OADAnE,EAAEmC,UAAYgC,EACPnE,GAGFkE,EAAgBlE,EAAGmE,GCLb,SAAS60D,EAAU52D,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAI9D,UAAU,sDAGtB6D,EAASjD,UAAYQ,OAAO2C,OAAOD,GAAcA,EAAWlD,UAAW,CACrEqC,YAAa,CACX/D,MAAO2E,EACP1C,UAAU,EACVD,cAAc,KAGlBE,OAAOC,eAAewC,EAAU,YAAa,CAC3C1C,UAAU,IAER2C,GAAY,EAAeD,EAAUC,yqzsBCfvC2tP,EAA2B,GAG/B,SAASl/G,EAAoBC,GAE5B,IAAIk/G,EAAeD,EAAyBj/G,GAC5C,QAAqB3yI,IAAjB6xP,EACH,OAAOA,EAAa7zP,QAGrB,IAAID,EAAS6zP,EAAyBj/G,GAAY,CACjDtyF,GAAIsyF,EACJw+G,QAAQ,EACRnzP,QAAS,IAUV,OANA8zP,EAAoBn/G,GAAUlwI,KAAK1E,EAAOC,QAASD,EAAQA,EAAOC,QAAS00I,GAG3E30I,EAAOozP,QAAS,EAGTpzP,EAAOC,QAIf00I,EAAoBr7G,EAAIy6N,EC5BxBp/G,EAAoBq/G,KAAO,GCC3Br/G,EAAoBvwI,EAAI,SAASpE,GAChC,IAAIk8G,EAASl8G,GAAUA,EAAOQ,WAC7B,WAAa,OAAOR,EAAgB,SACpC,WAAa,OAAOA,GAErB,OADA20I,EAAoBnkG,EAAE0rE,EAAQ,CAAEt5G,EAAGs5G,IAC5BA,GCLRy4B,EAAoBnkG,EAAI,SAASvwC,EAASg0P,GACzC,IAAI,IAAI9yP,KAAO8yP,EACXt/G,EAAoB9wI,EAAEowP,EAAY9yP,KAASwzI,EAAoB9wI,EAAE5D,EAASkB,IAC5EqC,OAAOC,eAAexD,EAASkB,EAAK,CAAEkC,YAAY,EAAMoC,IAAKwuP,EAAW9yP,MCJ3EwzI,EAAoBpwI,EAAI,GAGxBowI,EAAoBtwI,EAAI,SAAS6vP,GAChC,OAAOzyP,QAAQorF,IAAIrpF,OAAO4D,KAAKutI,EAAoBpwI,GAAG+M,QAAO,SAAS6iP,EAAUhzP,GAE/E,OADAwzI,EAAoBpwI,EAAEpD,GAAK+yP,EAASC,GAC7BA,IACL,MCNJx/G,EAAoBpzG,EAAI,SAAS2yN,GAEhC,MAAO,aAAeA,EAAf,sBCFRv/G,EAAoBy/G,SAAW,SAASF,KCDxCv/G,EAAoBj4G,EAAI,WACvB,GAA0B,kBAAfkiE,WAAyB,OAAOA,WAC3C,IACC,OAAOh9F,MAAQ,IAAIkB,SAAS,cAAb,GACd,MAAOuB,GACR,GAAsB,kBAAXuoB,OAAqB,OAAOA,QALjB,GCAxB+nH,EAAoB9wI,EAAI,SAASyB,EAAKsoD,GAAQ,OAAOpqD,OAAOR,UAAUoF,eAAe1D,KAAKY,EAAKsoD,eCA/F,IAAIymM,EAAa,GACbC,EAAoB,cAExB3/G,EAAoB58G,EAAI,SAAS4M,EAAKnjC,EAAML,EAAK+yP,GAChD,GAAGG,EAAW1vN,GAAQ0vN,EAAW1vN,GAAK9hC,KAAKrB,OAA3C,CACA,IAAI8oF,EAAQiqK,EACZ,QAAWtyP,IAARd,EAEF,IADA,IAAIqzP,EAAUx4M,SAAS8N,qBAAqB,UACpCzpD,EAAI,EAAGA,EAAIm0P,EAAQp0P,OAAQC,IAAK,CACvC,IAAI8D,EAAIqwP,EAAQn0P,GAChB,GAAG8D,EAAE8lD,aAAa,QAAUtlB,GAAOxgC,EAAE8lD,aAAa,iBAAmBqqM,EAAoBnzP,EAAK,CAAEmpF,EAASnmF,EAAG,OAG1GmmF,IACHiqK,GAAa,GACbjqK,EAAStuC,SAASiN,cAAc,WAEzBwrM,QAAU,QACjBnqK,EAAOtlB,QAAU,IACb2vE,EAAoB6sC,IACvBl3F,EAAOphC,aAAa,QAASyrF,EAAoB6sC,IAElDl3F,EAAOphC,aAAa,eAAgBorM,EAAoBnzP,GACxDmpF,EAAOnoC,IAAMxd,GAEd0vN,EAAW1vN,GAAO,CAACnjC,GACnB,IAAIkzP,EAAmB,SAAS7zN,EAAM+nF,GAErCt+B,EAAOslH,QAAUtlH,EAAOmiI,OAAS,KACjCnoK,aAAa0gB,GACb,IAAI2vL,EAAUN,EAAW1vN,GAIzB,UAHO0vN,EAAW1vN,GAClB2lD,EAAO4wD,YAAc5wD,EAAO4wD,WAAW1yF,YAAY8hC,GACnDqqK,GAAWA,EAAQjtP,SAAQ,SAAS/F,GAAM,OAAOA,EAAGinH,MACjD/nF,EAAM,OAAOA,EAAK+nF,IAGlB5jD,EAAU1qB,WAAWo6M,EAAiB3xP,KAAK,UAAMd,EAAW,CAAE6R,KAAM,UAAW5Q,OAAQonF,IAAW,MACtGA,EAAOslH,QAAU8kD,EAAiB3xP,KAAK,KAAMunF,EAAOslH,SACpDtlH,EAAOmiI,OAASioC,EAAiB3xP,KAAK,KAAMunF,EAAOmiI,QACnD8nC,GAAcv4M,SAASgN,KAAKI,YAAYkhC,QCvCzCqqD,EAAoB9gI,EAAI,SAAS5T,GACX,qBAAX+D,QAA0BA,OAAOglE,aAC1CxlE,OAAOC,eAAexD,EAAS+D,OAAOglE,YAAa,CAAE1nE,MAAO,WAE7DkC,OAAOC,eAAexD,EAAS,aAAc,CAAEqB,OAAO,KCLvDqzI,EAAoBigH,IAAM,SAAS50P,GAGlC,OAFAA,EAAOkxN,MAAQ,GACVlxN,EAAO+sD,WAAU/sD,EAAO+sD,SAAW,IACjC/sD,GCHR20I,EAAoB3sI,EAAI,eCKxB,IAAI6sP,EAAkB,CACrB,IAAK,GAGNlgH,EAAoBpwI,EAAE6iB,EAAI,SAAS8sO,EAASC,GAE1C,IAAIW,EAAqBngH,EAAoB9wI,EAAEgxP,EAAiBX,GAAWW,EAAgBX,QAAWjyP,EACtG,GAA0B,IAAvB6yP,EAGF,GAAGA,EACFX,EAAStxP,KAAKiyP,EAAmB,QAC3B,CAGL,IAAItmG,EAAU,IAAI/sJ,SAAQ,SAASV,EAASC,GAAU8zP,EAAqBD,EAAgBX,GAAW,CAACnzP,EAASC,MAChHmzP,EAAStxP,KAAKiyP,EAAmB,GAAKtmG,GAGtC,IAAI7pH,EAAMgwG,EAAoB3sI,EAAI2sI,EAAoBpzG,EAAE2yN,GAEpD3yP,EAAQ,IAAIuL,MAgBhB6nI,EAAoB58G,EAAE4M,GAfH,SAASikF,GAC3B,GAAG+rB,EAAoB9wI,EAAEgxP,EAAiBX,KAEf,KAD1BY,EAAqBD,EAAgBX,MACRW,EAAgBX,QAAWjyP,GACrD6yP,GAAoB,CACtB,IAAIC,EAAYnsI,IAAyB,SAAfA,EAAM90G,KAAkB,UAAY80G,EAAM90G,MAChEkhP,EAAUpsI,GAASA,EAAM1lH,QAAU0lH,EAAM1lH,OAAOi/C,IACpD5gD,EAAMgY,QAAU,iBAAmB26O,EAAU,cAAgBa,EAAY,KAAOC,EAAU,IAC1FzzP,EAAMmH,KAAO,iBACbnH,EAAMuS,KAAOihP,EACbxzP,EAAM82H,QAAU28H,EAChBF,EAAmB,GAAGvzP,MAIgB,SAAW2yP,EAASA,KAiBlE,IAAIe,EAAuB,SAASC,EAA4B5iP,GAC/D,IAKIsiI,EAAUs/G,EALViB,EAAW7iP,EAAK,GAChB8iP,EAAc9iP,EAAK,GACnB+kM,EAAU/kM,EAAK,GAGIjS,EAAI,EAC3B,GAAG80P,EAAS1lM,MAAK,SAASnN,GAAM,OAA+B,IAAxBuyM,EAAgBvyM,MAAe,CACrE,IAAIsyF,KAAYwgH,EACZzgH,EAAoB9wI,EAAEuxP,EAAaxgH,KACrCD,EAAoBr7G,EAAEs7G,GAAYwgH,EAAYxgH,IAGhD,GAAGyiE,EAAsBA,EAAQ1iE,GAGlC,IADGugH,GAA4BA,EAA2B5iP,GACrDjS,EAAI80P,EAAS/0P,OAAQC,IACzB6zP,EAAUiB,EAAS90P,GAChBs0I,EAAoB9wI,EAAEgxP,EAAiBX,IAAYW,EAAgBX,IACrEW,EAAgBX,GAAS,KAE1BW,EAAgBX,GAAW,GAKzBmB,EAAqB10P,KAA6B,uBAAIA,KAA6B,wBAAK,GAC5F00P,EAAmB3tP,QAAQutP,EAAqBlyP,KAAK,KAAM,IAC3DsyP,EAAmBxyP,KAAOoyP,EAAqBlyP,KAAK,KAAMsyP,EAAmBxyP,KAAKE,KAAKsyP,iNCvFxE,SAASC,EAAkBp1P,EAAKC,IAClC,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAC9CC,EAAKD,GAAKH,EAAIG,GAGhB,OAAOC,ECNM,SAASi1P,EAA4B1xP,EAAG2E,GACrD,GAAK3E,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,EAAiBA,EAAG2E,GACtD,IAAIpE,EAAIZ,OAAOR,UAAUoD,SAAS1B,KAAKb,GAAG4E,MAAM,GAAI,GAEpD,MADU,WAANrE,GAAkBP,EAAEwB,cAAajB,EAAIP,EAAEwB,YAAYqD,MAC7C,QAANtE,GAAqB,QAANA,EAAoB7D,MAAMoG,KAAK9C,GACxC,cAANO,GAAqB,2CAA2CuE,KAAKvE,GAAW,EAAiBP,EAAG2E,QAAxG,GCHa,SAAS,EAAetI,EAAKG,GAC1C,OCLa,SAAyBH,GACtC,GAAIK,MAAME,QAAQP,GAAM,OAAOA,EDIxB,CAAeA,IELT,SAA+BA,EAAKG,GACjD,IAAIuG,EAAY,MAAP1G,EAAc,KAAyB,qBAAX8D,QAA0B9D,EAAI8D,OAAOC,WAAa/D,EAAI,cAE3F,GAAU,MAAN0G,EAAJ,CACA,IAIIC,EAAIvC,EAJJwC,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKJ,EAAKA,EAAGlC,KAAKxE,KAAQ6G,GAAMF,EAAKD,EAAGhC,QAAQpD,QAC9CsF,EAAKjE,KAAKgE,EAAGvF,QAETjB,GAAKyG,EAAK1G,SAAWC,GAH4B0G,GAAK,IAK5D,MAAO/E,GACPgF,GAAK,EACL1C,EAAKtC,EACL,QACA,IACO+E,GAAsB,MAAhBH,EAAW,QAAWA,EAAW,SAC5C,QACA,GAAII,EAAI,MAAM1C,GAIlB,OAAOwC,GFtBuB,CAAqB5G,EAAKG,IAAM,EAA2BH,EAAKG,IGLjF,WACb,MAAM,IAAI+B,UAAU,6IHIgF,GILtG,SAASvB,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQC,EAAKC,GACpE,IACE,IAAIC,EAAOP,EAAIK,GAAKC,GAChBE,EAAQD,EAAKC,MACjB,MAAOC,GAEP,YADAP,EAAOO,GAILF,EAAKG,KACPT,EAAQO,GAERG,QAAQV,QAAQO,GAAOI,KAAKT,EAAOC,GAIxB,SAAS,EAAkBS,GACxC,OAAO,WACL,IAAIhB,EAAOiB,KACPC,EAAOC,UACX,OAAO,IAAIL,SAAQ,SAAUV,EAASC,GACpC,IAAIF,EAAMa,EAAGI,MAAMpB,EAAMkB,GAEzB,SAASZ,EAAMK,GACbT,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,OAAQI,GAGlE,SAASJ,EAAOc,GACdnB,EAAmBC,EAAKC,EAASC,EAAQC,EAAOC,EAAQ,QAASc,GAGnEf,OAAMgB,mDC7BL,SAAS6nB,EAAIriB,EAAgB0iD,GAGN,iBAAXA,GAA0C,iBAAXA,EACtCjmB,QAAQpa,IAAI,IAAMriB,EAAS,MAAQ0iD,GAGnCjmB,QAAQpa,IAAI,IAAMriB,EAAS,MAAQ8X,KAAKE,UAAU0qC,IAKvD,SAASxwB,EAAMr4B,EAAek0P,GACjC,IAAIjkH,EAAa/7H,KAAKwV,IAAI,GAAIwqO,GAAa,GAC3C,OAAOhgP,KAAKmkB,MAAMr4B,EAAQiwI,GAAcA,EAGrC,SAAS34F,EAAa68M,GACzB,IAAI5lO,EAAM4lO,EAAYrvP,WAClBi6I,EAAO,wBACX,IAAyB,GAArBxwH,EAAIxpB,QAAQ,KAAcwpB,EAAMA,EAAIvP,QAAQ+/H,EAAM,SACjD,CACD,IAAIh3H,EAAQwG,EAAIxG,MAAM,KAClBiE,EAAOjE,EAAM,GAAG/I,QAAQ+/H,EAAM,KAC9B9yH,EAAQlE,EAAM,GACE,GAAhBkE,EAAMntB,QAAwB,KAATmtB,IAAgBA,GAAS,KAElDsC,EAAG,UAAMvC,EAAN,YAAcC,GAGrB,OAAOsC,EAGJ,SAAS6lO,EAAqBp0P,GAA+C,IAAhCk0P,EAA+B,uDAAX,EAGhEG,EAAUh8N,EAAMr4B,EAAOk0P,GACvBI,EAAYh9M,EAAa+8M,GAG7B,OAFMC,EASH,SAASC,EAAsB3hM,GAClC,IAAIr4C,EAAQ,IAAIs3C,KAAKe,GAGrB,OADUr4C,EAAMi6O,cAAgB,KAAOj6O,EAAM8jN,WAAa,GAAGv5N,WAAW8L,SAAS,EAAG,KAAO,IAAM2J,EAAM6jN,UAAUt5N,WAAW8L,SAAS,EAAG,KAqCrI,SAAS6jP,EAAiBC,GAC7B,IAAInmO,EAAM,IAAIsjC,KAAK,GAEnB,OADAtjC,EAAIomO,cAAcD,GACXnmO,EA2BJ,SAASqmO,EAAkBC,GAAmF,IAA5DC,EAA2D,uDAApC,EAAGC,EAAiC,uDAAX,EACrG,OAAOF,EAAcp1O,UAAU,EAAGq1O,GAAgB,MAAQD,EAAcp1O,UAAUo1O,EAAc/1P,OAASi2P,EAAaF,EAAc/1P,wDCpHzH,SAASk2P,EAAmBp2P,GACzC,OCJa,SAA4BA,GACzC,GAAIK,MAAME,QAAQP,GAAM,OAAO,EAAiBA,GDGzC,CAAkBA,IELZ,SAA0BwG,GACvC,GAAsB,qBAAX1C,QAAmD,MAAzB0C,EAAK1C,OAAOC,WAA2C,MAAtByC,EAAK,cAAuB,OAAOnG,MAAMoG,KAAKD,GFInF,CAAgBxG,IAAQ,EAA2BA,IGLvE,WACb,MAAM,IAAIkC,UAAU,wIHIwE,kBILjFm0P,EAAiB,CAC5B,kBACA,iBACA,eACA,UACA,aACA,cACA,eACA,iBACA,kBACA,mBAGWC,EAAiB,CAC5B,sBACA,sBACA,WACA,oBACA,uBACA,uBACA,uBACA,uBACA,gBACA,0BACA,6BACA,wBACA,4BACA,4BACA,oBACA,qBAKWC,EAAiB,CAC5B,EAAG,UACH,EAAG,UACH,EAAG,UACH,EAAG,SACH,GAAI,8EzoBlCAC,EAAU,MACVC,EAAW,OAQXC,EAAc,IAId,SAAUC,EAAchhP,GAC5B,OAAO,IAAI2L,WAAW3L,GAGlB,SAAUuB,EAAYvB,GAA6B,IAAhBszG,EAAgB,wDACjD7+F,EAAMzU,EAAIzP,SAASswP,GACzB,OAAOvtI,EAAW9Q,EAAa/tF,GAAOA,EAGlC,SAAUwsO,EAAajhP,GAC3B,OAAOA,EAAIzP,SAASuwP,GAahB,SAAUI,EAAc72P,GAC5B,OAAO82P,GAAAA,CAAmB92P,GAGtB,SAAU+2P,EAAW/2P,GAAiC,IAAhBipH,EAAgB,wDAC1D,OAAO/xG,EAAY2/O,EAAc72P,GAAMipH,GAGnC,SAAU+tI,EAAYh3P,GAC1B,OAAO42P,EAAaC,EAAc72P,IAe9B,SAAUi3P,EAAY7sO,GAC1B,OAAO3Y,EAAOhL,KAAKywP,EAAgB9sO,GAAMosO,GAGrC,SAAUW,EAAW/sO,GACzB,OAAOusO,EAAcM,EAAY7sO,IAiB7B,SAAUgtO,EAAavtK,GAC3B,OAAOp4E,EAAOhL,KAAKojF,EAAM4sK,GAGrB,SAAUY,EAAYxtK,GAC1B,OAAO8sK,EAAcS,EAAavtK,IA0E9B,SAAU7gE,EAAYxB,EAAUtnB,GACpC,QAAmB,kBAARsnB,IAAqBA,EAAI9I,MAAM,wBAGtCxe,GAAUsnB,EAAItnB,SAAW,EAAI,EAAIA,GAqDjC,SAAUo3P,IAAkC,IAChD,IAAItyP,EAAmB,GADyB,mBAAlBrD,EAAkB,yBAAlBA,EAAkB,gBAGhD,OADAA,EAAK6F,SAAQ,YAAG,OAAKxC,EAASA,EAAOoJ,OAAO/N,MAAMoG,KAAKvF,OAChD,IAAIogB,WAAJ,EAAmBtc,IAetB,SAAUuyP,EAAer3P,GAA4B,IAAZs3P,EAAY,uDAAD,EAClDrqF,EAAYjtK,EAASs3P,EAC3B,OAAOrqF,GACDjtK,EAASitK,GAAaqqF,EAAYA,EAAWA,EAC/Ct3P,EAkBA,SAAUu3P,EACdjwO,GAEqB,IADrBgwO,EACqB,uDADV,EACXloO,EAAqB,uDAAXonO,EAEV,OAAOn3I,EAAQ/3F,EAAK+vO,EAAe/vO,EAAItnB,OAAQs3P,GAAWloO,GAGtD,SAAUiwF,EACd/3F,EACAtnB,GACqB,IAArBovB,EAAqB,uDAAXonO,EAEV,OAAOgB,GAAUlwO,EAAKtnB,GAAQ,EAAMovB,GAWhC,SAAU4nO,EAAgB9sO,GAC9B,OAAOA,EAAIhK,QAAQ,MAAO,IAGtB,SAAU+3F,EAAa/tF,GAC3B,OAAOA,EAAIq2F,WAAW,MAAQr2F,EAAvB,YAAkCA,GAGrC,SAAUutO,GAAYvtO,GAM1B,OAJAA,EAAMqtO,EADNrtO,EAAM8sO,EAAgB9sO,GACG,MAEvBA,EAAM+tF,EAAa/tF,IAEdA,EAiCT,SAASstO,GACPlwO,EACAtnB,EACAktB,GACqB,IAArBkC,EAAqB,uDAAXonO,EAEJ/6N,EAAOz7B,EAASsnB,EAAItnB,OACtB8E,EAASwiB,EACb,GAAImU,EAAO,EAAG,CACZ,IAAM+3C,EAAMpkD,EAAQssC,OAAOjgC,GAC3B32B,EAASooB,EAAOsmD,EAAMlsD,EAAMA,EAAMksD,EAEpC,OAAO1uE,E0oBrVH,SAAU4yP,GAA2BC,GACzC,OAAO99K,EAAuB,IAAIz4D,WAAWu2O,IAqBzC,SAAUC,GAA2BniP,GACzC,OAAOokE,EAAuBpkE,GAAKk8C,OA6B/B,SAAUkmM,GAAiBluK,EAAcmuK,GAC7C,O1oBqCI,SAAoBnuK,GAA8B,IAAhBo/B,EAAgB,wDACtD,OAAO/xG,EAAYkgP,EAAavtK,GAAOo/B,G0oBtChClvC,CAAmB8P,GAAOmuK,GAuC7B,SAAUC,GAAmB/qO,EAAsB8qO,GACvD,IAAM5tO,EAAM2vD,EAAyBA,GAAqB,IAAInsE,IAAJ,CAAOsf,GAAKhnB,SAAS,MAC/E,OAAO8xP,EAAW5tO,EAAM2vD,EAAsB3vD,sBCnGjC,SAASqvC,GAAgBr0D,EAAKnE,EAAKG,GAYhD,OAXIH,KAAOmE,EACT9B,OAAOC,eAAe6B,EAAKnE,EAAK,CAC9BG,MAAOA,EACP+B,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ+B,EAAInE,GAAOG,EAGNgE,EFFsB,SAVJ,cAWV,CAAEmf,MAAO,MAAOlL,QAAS,gBADX,MATA,kBAWV,CAAEkL,MAAO,MAAOlL,QAAS,oBAFf,MARC,mBAWV,CAAEkL,MAAO,MAAOlL,QAAS,qBAHhB,MAPD,iBAWV,CAAEkL,MAAO,MAAOlL,QAAS,mBAJd,MAND,iBAWV,CAAEkL,MAAO,MAAOlL,QAAS,mBALd,MALH,eAWV,CAAEkL,MAAO,KAAOlL,QAAS,iCGZrC,SAAU6+O,KAGd,OAFajlM,KAAKtC,MAAQr7C,KAAKwV,IAAI,GAAI,GACzBxV,KAAKoU,MAAMpU,KAAKg0F,SAAWh0F,KAAKwV,IAAI,GAAI,ICClD,SAAU6sO,GAAYvtO,GAC1B,OAAO2vD,GAAqB3vD,GAWxB,SAAU+tO,GAAsB/tO,GACpC,O7oB4RI,SAAgCA,GACpC,IAAM6+F,EAAW7+F,EAAIq2F,WAAW,MAGhC,OADAr2F,GADAA,EAAM8sO,EAAgB9sO,IACZq2F,WAAWi2I,GAAetsO,EAAIvJ,UAAU,GAAKuJ,EAChD6+F,EAAW9Q,EAAa/tF,GAAOA,E6oBhS/B2vD,CAA+BA,EAAsB3vD,IAKvD,IAAM8tO,GAAYE,GAEnB,SAAUxmB,KAWd,OAVwB,SAAClvO,EAASqsB,GAChC,IACEA,EAAIrsB,EAAI,GACRA,IAAM,GACNqsB,GAAU,GAAJrsB,EAAU,IAAU,GAAJA,EAAS,EAAK4S,KAAKg0F,UAAgB,GAAJ5mG,EAAS,GAAK,GAAM,GAAGwD,SAAS,IAAM,KAI7F,OAAO6oB,EARe,GAiCpB,SAAUspO,GAAUvuP,EAAiBw1H,GACzC,IAAIg5H,EACEC,EAXF,SAA0BzuP,EAAiB0uP,GAC/C,IAAIF,EACEG,EAAUlC,EAAezsP,GAI/B,OAHI2uP,IACFH,EAAM,kBAAcG,EAAd,yBAAsCD,IAEvCF,EAKWI,CAAgB5uP,EAASw1H,EAAIk5H,UAM/C,OALIl5H,EAAIlzH,QAAUkzH,EAAIlzH,OAAOtC,GAC3BwuP,EAASh5H,EAAIlzH,OAAOtC,GACXyuP,IACTD,EAASC,GAEJD,EC9BH,SAAUtvO,GAAY5nB,EAAYlB,GACtC,OAAO65E,EAAqB34E,EAAOlB,GAW/B,SAAUy4P,GAAyB3xP,GACvC,MAAgC,qBAAlBA,EAAOhC,OAGjB,SAAU4zP,GAAuB5xP,GACrC,MAA+B,qBAAjBA,EAAO3F,MAGjB,SAAUw3P,GAAgB7xP,GAC9B,MAA+B,qBAAjBA,EAAO0hH,MAOjB,SAAUowI,GAAgB3gI,GAC9B,QAAIA,EAAQxqE,OAAO8yD,WAAW,SAG1B61I,EAAAA,SAAwBn+H,EAAQxqE,QC/DhC,SAAUwtD,GAAkB/+F,GAChCA,EAAU86O,EAAgB96O,EAAQ8M,eAGlC,IAFA,IAAMxX,EAAOwlP,GAAgBt3I,EAAAA,GAAAA,YL4CtB7lC,EK5CqD39D,KACxD2N,EAAW,GACN5pB,EAAI,EAAGA,EAAIic,EAAQlc,OAAQC,IAC9Bye,SAASlN,EAAKvR,GAAI,IAAM,EAC1B4pB,GAAY3N,EAAQjc,GAAGmpB,cAEvBS,GAAY3N,EAAQjc,GAGxB,OAAOg4G,EAAapuF,GAiBhB,SAAUgvO,GAAkBj7O,GDrB5B,IAAuB0jB,ECyB3B,ODzB2BA,ECsBT1jB,IDrBA0jB,EAAMthC,SCqBM8oB,GAAYlL,EAAO,MAC/CA,EAAO,GAAKi6O,GAAiBj6O,EAAO,KAE/BA,EAGH,SAAUk7O,GAAqB/lP,GACnC,GAA2B,qBAAhBA,EAAOW,MAAwC,MAAhBX,EAAOW,KAAc,OAAOX,EAEtE,GAA2B,qBAAhBA,EAAOxM,SAxBW2V,EAwB6BnJ,EAAOxM,OArBZ,OAA1C2V,EAAQ8M,cAAcrI,UAAU,EAAG,KAElC,uBAAuBpY,KAAK2T,KAE7B,sBAAsB3T,KAAK2T,KAAY,sBAAsB3T,KAAK2T,IAGpEA,IAAY++F,GAAkB/+F,IAerC,MAAM,IAAIxP,MAAJ,yDAzBoB,IAACwP,EA4B7B,SAAS68O,EAAe73P,GACtB,IAAI4D,EAAS5D,EAWb,OAVqB,kBAAVA,GAAwC,kBAAVA,IDzCvC,SAAwBA,GAC5B,MAAiB,KAAVA,GAAkC,kBAAVA,GAAuC,KAAjBA,EAAM4jD,OCwCOk0M,CAAc93P,MACvE4nB,GAAY5nB,GAEW,kBAAVA,IAChB4D,EAAS2yP,GAAYv2P,IAFrB4D,EAASizP,GAAmB72P,IAKV,kBAAX4D,IACTA,EAASmzP,GAAsBnzP,IAE1BA,EAGT,IAAMm0P,EAAY,CAChB1yP,KAAMkxP,GAAY1kP,EAAOxM,MACzBiN,GAAyB,qBAAdT,EAAOS,GAAqB,GAAKikP,GAAY1kP,EAAOS,IAC/DmF,SAAqC,qBAApB5F,EAAO4F,SAA2B,GAAKogP,EAAehmP,EAAO4F,UAC9E+qN,IACwB,qBAAf3wN,EAAO2wN,IACiB,qBAApB3wN,EAAOQ,SACZ,GACAwlP,EAAehmP,EAAOQ,UACxBwlP,EAAehmP,EAAO2wN,KAC5BxiO,MAA+B,qBAAjB6R,EAAO7R,MAAwB,GAAK63P,EAAehmP,EAAO7R,OACxEoS,MAA+B,qBAAjBP,EAAOO,MAAwB,GAAKylP,EAAehmP,EAAOO,OACxEpB,KAA6B,qBAAhBa,EAAOb,KAAuB,GAAKulP,GAAY1kP,EAAOb,OAAS,MAGxEgnP,EAAW,CAAC,WAAY,MAAO,QAAS,SAO9C,OANA91P,OAAO4D,KAAKiyP,GAAW3xP,SAAQ,SAACvG,IACzBk4P,EAAUl4P,GAAK+jD,OAAO9kD,QAAUk5P,EAASjqP,SAASlO,WAC9Ck4P,EAAUl4P,MAIdk4P,iBC7EH,SAAUE,GAAoB9kF,EAAqB+kF,GACvD,IAAIC,EAAcxhC,GAAiBxjD,GAMnC,OAFAA,EASI,SAA4BglF,GAChC,OAAOC,GAAAA,UAA2BD,GAVpBE,CAFdF,EAAW,+BAAQA,GAAgBD,IAO/B,SAAUvhC,GAAiBxjD,GAC/B,OAAOilF,GAAAA,MAAuBjlF,OCiBhC,GAlCMmlF,WAGJ,wCACE,KAAKC,eAAiB,GAEA,qBAAXjtO,QAAsE,qBAApCA,OAAeygE,mBAC1DzgE,OAAOygE,iBAAiB,UAAU,kBAAM,EAAKysK,QAAQ,aACrDltO,OAAOygE,iBAAiB,WAAW,kBAAM,EAAKysK,QAAQ,gDAInD,SAAGlxI,EAAqB/kD,GAC7B,KAAKg2L,eAAeh3P,KAAK,CACvB+lH,MAAAA,EACA/kD,SAAAA,2BAIG,SAAQ+kD,GACb,IAAImxI,EAAwC,GAExCnxI,IACFmxI,EAAgB,KAAKF,eAAetyP,QAClC,SAACqiO,GAAD,OAAwCA,EAAahhH,QAAUA,MAInEmxI,EAAcryP,SAAQ,SAACkiO,GACrBA,EAAa/lK,oBA7Bb+1L,GjpBcAI,GAAiC,qBAArB94M,EAAAA,EAAO4rM,UAA4B5rM,EAAAA,EAAO4rM,UAAY7iP,EAAQ,OAI1EgwP,GAAAA,WAaJ,WAAoB1vP,GAA6B,WAU/C,IAV+C,eAA7B,YANZ,YAA2B,GAC3B,aAA6B,GAC7B,oBAA2B,GAKjC,KAAK2vP,UAAY3vP,EAAKmgD,SACtB,KAAKyvM,SAAW5vP,EAAK6S,QACrB,KAAKmzO,KAAO,GACZ,KAAK6J,YAAc,KACnB,KAAKC,QAAU,KACf,KAAKC,YAAc,KACnB,KAAKC,eAAiBhwP,EAAKklG,eAAiB,GAC5C,KAAK2qJ,YAAc7vP,EAAKiwP,YAAc,IAAIZ,IAErCrvP,EAAKo6B,KAA2B,kBAAbp6B,EAAKo6B,IAC3B,MAAM,IAAI73B,MAAM,oCAGlB,KAAKyjP,KAAOhmP,EAAKo6B,IAEjB,KAAKy1N,YAAY95J,GAAG,UAAU,kBAAM,EAAKm6J,0DAO3C,WACE,OAAO,KAAKJ,QAAU,KAAKA,QAAQtyG,YAAc,OALnD,SAAezmJ,4BAYf,WACE,OAA2B,IAApB,KAAKymJ,gBALd,SAAezmJ,2BAYf,WACE,OAA2B,IAApB,KAAKymJ,gBALd,SAAczmJ,yBAYd,WACE,OAA2B,IAApB,KAAKymJ,gBALd,SAAYzmJ,wBAYZ,WACE,OAA2B,IAApB,KAAKymJ,gBALd,SAAWzmJ,wBAUJ,WACL,KAAKm5P,qCAGA,WACL,KAAKC,mCAGA,SAAKnhP,EAAiB9J,EAAgBkrP,GAC3C,IAAKlrP,GAA0B,kBAAVA,EACnB,MAAM,IAAI3C,MAAM,kCAGlB,KAAK8tP,YAAY,CACfnrP,MAAOA,EACPqE,KAAM,MACNqyB,QAAS5sB,EACTohP,SAAUA,6BAIP,SAAUlrP,GACf,KAAKmrP,YAAY,CACfnrP,MAAOA,EACPqE,KAAM,MACNqyB,QAAS,GACTw0N,QAAQ,sBAIL,SAAG/xI,EAAe/kD,GACvB,KAAKlpB,QAAQ93C,KAAK,CAAE+lH,MAAAA,EAAO/kD,SAAAA,iCAKrB,WAAa,WACnB,IAAI,KAAKy2L,YAAT,CAIA,IAAM31N,EA6GV,SAAyB4rN,EAAc7lM,EAAkBttC,WAMjDy9O,GALMtK,EAAK5vI,WAAW,SACxB4vI,EAAKjwO,QAAQ,QAAS,OACtBiwO,EAAK5vI,WAAW,QAChB4vI,EAAKjwO,QAAQ,OAAQ,MACrBiwO,GACiBlnO,MAAM,KACrBrL,GAASu/B,EAAAA,EAAAA,aACX,CACEmN,SAAAA,EACAttC,QAAAA,EACA6/B,IAAK,UACL0N,MAAmB,QAAb,6BAAa1+C,IAAAA,OAAA,EAAAA,EAAE0+C,OAAQ,IAE/B,CACED,SAAAA,EACAttC,QAAAA,EACA6/B,KAAgB,QAAX,2BAAWtyC,IAAAA,OAAA,EAAAA,EAAEjC,OAAQ,IAE1B+rK,EAAc8kF,GgpBvQhB,SAAyB50N,GAC7B,IAAMm2N,GAAoD,IAAtBn2N,EAAIt+B,QAAQ,KAAcs+B,EAAIt+B,QAAQ,UAAOpE,EAIjF,MAF+C,qBAAZ64P,EAA0Bn2N,EAAI9yB,OAAOipP,GAAW,GhpBoQ3CC,CAAeF,EAAS,IAAM,IAAK78O,GAC3E,OAAO68O,EAAS,GAAK,IAAMpmF,EAjIbumF,CAAgB,KAAKzK,KAAM,KAAK2J,UAAW,KAAKC,UAI5D,GAFA,KAAKG,YAAc,IAAIN,GAAGr1N,IAErB,KAAK21N,YACR,MAAM,IAAIxtP,MAAM,2BAGlB,KAAKwtP,YAAY/8C,UAAY,SAAC30F,GAAD,OAAyB,EAAKqyI,eAAeryI,IAE1E,KAAK0xI,YAAYY,OAAS,kBAAM,EAAKC,eAErC,KAAKb,YAAY1qD,QAAU,SAAChnF,GAAD,OAAkB,EAAKwyI,aAAaxyI,IAE/D,KAAK0xI,YAAY7qD,QAAU,WACzBn1J,YAAW,WACT,EAAKggN,YAAc,KACnB,EAAKG,kBACJ,kCAIC,WACN,KAAKC,eACL,KAAKL,QAAU,KAAKC,YACpB,KAAKA,YAAc,KACnB,KAAKe,sBACL,KAAKC,yCAGC,WACF,KAAKjB,UACP,KAAKA,QAAQ5qD,QAAU,aAGvB,KAAK4qD,QAAQtuC,oCAIT,SAAYwvC,GAClB,IAAMhiP,EAAkBgG,KAAKE,UAAU87O,GAEnC,KAAKlB,SAAuC,IAA5B,KAAKA,QAAQtyG,WAC/B,KAAKsyG,QAAQlyG,KAAK5uI,IAElB,KAAKiiP,YAAYD,GACjB,KAAKd,4EAID,WAAqB7xI,GAArB,kFAIJ2yI,EAAgBh8O,KAAKC,MAAMopG,EAAMt2G,MAJ7B,gFASN,KAAKsoP,YAAY,CACfnrP,MAAO8rP,EAAc9rP,MACrBqE,KAAM,MACNqyB,QAAS,GACTw0N,QAAQ,IAGN,KAAKN,SAAuC,IAA5B,KAAKA,QAAQtyG,aACzBrtG,EAAS,KAAKC,QAAQpzC,QAAO,YAAK,MAAoB,YAAhBqhH,EAAMA,SAC9CluE,GAAUA,EAAOt6C,QACnBs6C,EAAOhzC,SAAQ,YAAK,OAAIkhH,EAAM/kD,SAAS03L,OAnBrC,yIAwBA,SAAal3P,GACnB,IAAMq2C,EAAS,KAAKC,QAAQpzC,QAAO,YAAK,MAAoB,UAAhBqhH,EAAMA,SAC9CluE,GAAUA,EAAOt6C,QACnBs6C,EAAOhzC,SAAQ,YAAK,OAAIkhH,EAAM/kD,SAASx/D,yCAInC,WAAmB,WACH,KAAKk2P,eAEb7yP,SAAQ,SAAC+H,GAAD,OACpB,EAAKy0D,OAAOrhE,KAAK,CACf4M,MAAOA,EACPqE,KAAM,MACNqyB,QAAS,GACTw0N,QAAQ,OAIZ,KAAKJ,eAAiB,KAAKhwP,KAAKklG,eAAiB,8BAG3C,SAAY8rJ,GAClB,KAAKr3L,OAAOrhE,KAAK04P,6BAGX,WAAU,WACF,KAAKr3L,OAEbx8D,SAAQ,SAAC6zP,GAAD,OAAmC,EAAKX,YAAYW,MAElE,KAAKr3L,OAAS,SA5NZ+1L,GAuPN,UkpB7QawB,GAA0B,8BAC1BC,GAA6B,iCAW7BC,GAAyB,sCAIzBC,GAAiC,0BCCxCC,GAAAA,WAGJ,6BACE,KAAKhC,eAAiB,2CAGjB,SAAUjwB,GACf,KAAKiwB,eAAeh3P,KAAK+mO,8BAGpB,SAAYhhH,GACjB,KAAKixI,eAAiB,KAAKA,eAAetyP,QAAO,YAAC,OAAImiB,EAAEk/F,QAAUA,4BAG7D,SACLziF,GAEA,IACIyiF,EADAmxI,EAAiC,IAInCnxI,ELS4B,qBKVTziF,ELUF0nB,OKTT1nB,EAAQ0nB,OACPgrM,GAAyB1yN,IAAY2yN,GAAuB3yN,GAChE,mBAAeA,EAAQmc,IACnBy2M,GAAgB5yN,GACjBA,EAAQyiF,MAER,MAIRmxI,EAAgB,KAAKF,eAAetyP,QAClC,SAACqiO,GAAD,OAAiCA,EAAahhH,QAAUA,MAKxDmxI,GAAkBA,EAAc35P,QLQlC,SAA0BwoH,GAC9B,OAAO2tI,EAAAA,SAAwB3tI,IAAUA,EAAMjI,WAAW,OKRrDm7I,CAAgBlzI,IAChBmwI,GAAgBnwI,KAEjBmxI,EAAgB,KAAKF,eAAetyP,QAClC,SAACqiO,GAAD,MAAwD,iBAAvBA,EAAahhH,UAIlDmxI,EAAcryP,SAAQ,SAACkiO,GACrB,GAAIkvB,GAAuB3yN,GAAU,CACnC,IAAM5kC,EAAQ,IAAIuL,MAAMq5B,EAAQ5kC,MAAMgY,SACtCqwN,EAAa/lK,SAAStiE,EAAO,WAE7BqoO,EAAa/lK,SAAS,KAAM19B,YApD9B01N,GA0DN,MCxEME,GAAAA,WACJ,aAAsD,IAAnCC,EAAmC,uDAAf,iBAAe,eAAnC,0DAEZ,WACL,IAAIC,EAAwC,KACtCx/O,GAAOmiC,EAAAA,EAAAA,UAAS,KAAKo9M,WAI3B,OAHIv/O,GCA0B,qBDAKA,ECAhBy/O,SDCjBD,EAAUx/O,GAELw/O,4BAGF,SAAWA,GAEhB,OADAx9M,EAAAA,EAAAA,UAAS,KAAKu9M,UAAWC,GAClBA,+BAGF,YACLn9M,EAAAA,EAAAA,aAAY,KAAKk9M,iBAlBfD,GAsBN,MJrBMI,GAFiB,uCAEQ9yO,MAAM,IAAIjc,KAAI,YAAI,wBAAeijI,EAAf,gCAuB3C,SAAU+rH,KACd,OAAOD,GAJA3mP,KAAKoU,MAAMpU,KAAKg0F,SAAW2yJ,GAAQ/7P,ahpB6CtCi8P,GAAAA,WAkDJ,WAAY9xP,GAQV,IAR8B,eAjDhB,cAAW,KACX,aAAU,EAIlB,aAAU,GACV,UAA2B,KAI3B,eAAY,GACZ,iBAAkC,KAIlC,aAAU,GACV,eAAgC,KAIhC,kBAAe,EACf,qBAAkB,GAIlB,iBAAa,EACb,eAAsB,GACtB,cAAW,EACX,gBAAa,EACb,aAAU,GAMV,mBAA8B,IAAIsxP,GAexC,KAAKS,aAAcj+M,EAAAA,EAAAA,kBAAmB9zC,EAAKgyP,cAAcC,YAAc,KACvE,KAAKC,WAAalyP,EAAKmyP,UACvB,KAAKC,gBAAkBpyP,EAAKqyP,gBAAkB,IAAIb,GAAexxP,EAAKgyP,cAAcP,WACpF,KAAKa,aAAetyP,EAAKgyP,cAAcO,YACvC,KAAKC,oBAAsBxyP,EAAKgyP,cAAcp2M,mBAC9C,KAAK62M,gBAAL,YAA2BxG,GAA3B,EAA+CjsP,EAAKgyP,cAAc/F,gBAAkB,MAE/EjsP,EAAKgyP,cAAcL,SAAW3xP,EAAKgyP,cAAcr9M,MAAQ30C,EAAKgyP,cAAcN,QAC/E,MAAM,IAAInvP,MkpBtHd,kEFyBI,IAAuB63B,EhpBgGrBp6B,EAAKgyP,cAAcL,SACrB,KAAKA,OgpBrGL,SAA+Bv3N,GACnC,MAhCa,sBAgBT,SAA4BA,GAChC,OAXI,SAA0BA,GAE9B,IAAIokH,EAAWpkH,EAAIt+B,QAAQ,OAAS,EAAIs+B,EAAItb,MAAM,KAAK,GAAKsb,EAAItb,MAAM,KAAK,GAK3E,OAHA0/H,EAAWA,EAAS1/H,MAAM,KAAK,IAEXA,MAAM,KAAK,GAKxB4zO,CAAgBt4N,GACpBtb,MAAM,KACN5gB,OAAO,GACPkX,KAAK,KAYDu9O,CAAkBv4N,GAIrBw4N,CADuBx4N,EhpBiGIp6B,EAAKgyP,cAAcL,QgpB/FzCE,KAEFz3N,GhpBgGDp6B,EAAKgyP,cAAcr9M,MACrB,KAAKA,IAAM30C,EAAKgyP,cAAcr9M,KAGhC,IAAM+8M,EAAU1xP,EAAKgyP,cAAcN,SAAW,KAAKmB,qBAE/CnB,IACF,KAAKA,QAAUA,GAGb,KAAKoB,aACP,KAAKC,4BAA4B,KAAKD,YAAa,4BAGrD,KAAKE,WACHhzP,EAAKizP,WACL,IAAIvD,GAAgB,CAClBvvM,SAAU,KAAKA,SACfttC,QAAS,KAAKA,QACdunB,IAAK,KAAKu3N,OACVzsJ,cAAe,CAAC,KAAKguJ,YAGzB,KAAKC,6BACL,KAAKC,iBAEDpzP,EAAKgyP,cAAcr9M,KACrB,KAAK0+M,6BAGHrzP,EAAKszP,gBACP,KAAKC,oBAAoBvzP,EAAKszP,mDAalC,WACE,OAAO,KAAKE,aARd,SAAWz8P,GACJA,IAGL,KAAKy8P,QAAUz8P,oBAejB,WAEI,I0oBpLkCy2P,EAAqBG,E1oBmLzD,OAAI,KAAKvhM,M0oBnL2BohM,E1oBoLU,KAAKphM,K0oBpLMuhM,G1oBoLA,E0oBnLpDj+K,EAAoB,IAAIz4D,WAAWu2O,IAAUG,I1oBsL3C,QAbT,SAAQ52P,GACN,GAAKA,EAAL,CAGA,IAAMH,E0oBnHD84E,E1oBmH4C34E,G0oBnHnBywD,O1oBoH9B,KAAK4E,KAAOx1D,yBAkBd,WACE,IAAIs8P,EAA0B,KAAKO,UAKnC,OAJKP,IACHA,EAAW,KAAKO,UAAYlsB,MAGvB,KAAKksB,eAbd,SAAa18P,GACNA,IAGL,KAAK08P,UAAY18P,uBAmBnB,WACE,OAAO,KAAK28P,aARd,SAAW38P,GACJA,IAGL,KAAK28P,QAAU38P,2BAWjB,WACE,IAAIk7P,EAAiC,KAAKF,YAI1C,OAHKE,IACHA,EAAa,KAAKF,aAAcj+M,EAAAA,EAAAA,kBAE3Bm+M,OATT,SAAel7P,0BAgBf,WAEE,OADqC,KAAK48P,eAL5C,SAAa58P,GACX,KAAK48P,UAAY58P,8BAenB,WACE,OAAO,KAAK68P,qBARd,SAAmB78P,GACZA,IAGL,KAAK68P,gBAAkB78P,4BAczB,WACE,OAAO,KAAK88P,kBARd,SAAgB98P,GACTA,IAGL,KAAK88P,aAAe98P,oBAOtB,WAEE,OADa,KAAK+8P,kBAIpB,SAAQ/8P,GACN,GAAKA,EAAL,CAGA,MAAwC,KAAKg9P,UAAUh9P,GAA/Ci9P,EAAR,EAAQA,eAAgBrC,EAAxB,EAAwBA,OAAQ/6P,EAAhC,EAAgCA,IAChC,KAAKo9P,eAAiBA,EACtB,KAAKrC,OAASA,EACd,KAAK/6P,IAAMA,wBAOb,WAEE,OAD+B,KAAK6iH,cALtC,SAAY1iH,GACV,KAAK0iH,SAAW1iH,yBAYlB,WAEE,OADiC,KAAKk9P,gBALxC,SAAcl9P,GACZ,KAAKk9P,WAAal9P,wBAYpB,WAEE,OADkC,KAAK+wO,eALzC,SAAa/wO,GACX,KAAK+wO,UAAY/wO,sBAYnB,WAEE,OAD8B,KAAKm9P,aALrC,SAAWn9P,GACT,KAAKm9P,QAAUn9P,yBAYjB,WACE,OAAO,KAAKo9P,gBALd,SAAcp9P,yBAYd,WACE,QAAS,KAAK68P,qBALhB,SAAY78P,yBAQZ,WACE,MAAO,CACLqrO,UAAW,KAAKA,UAChBv3H,SAAU,KAAKA,SACfprG,QAAS,KAAKA,QACdkyP,OAAQ,KAAKA,OACb/6P,IAAK,KAAKA,IACVs8P,SAAU,KAAKA,SACfjB,WAAY,KAAKA,WACjBmC,OAAQ,KAAKA,OACbC,SAAU,KAAKA,SACfvB,YAAa,KAAKA,YAClBkB,eAAgB,KAAKA,qBAIzB,SAAYj9P,GACLA,IAGL,KAAKo9P,WAAap9P,EAAMqrO,UACxB,KAAKv3H,SAAW9zG,EAAM8zG,SACtB,KAAKprG,QAAU1I,EAAM0I,QACrB,KAAKkyP,OAAS56P,EAAM46P,OACpB,KAAK/6P,IAAMG,EAAMH,IACjB,KAAKs8P,SAAWn8P,EAAMm8P,SACtB,KAAKjB,WAAal7P,EAAMk7P,WACxB,KAAKmC,OAASr9P,EAAMq9P,OACpB,KAAKC,SAAWt9P,EAAMs9P,SACtB,KAAKvB,YAAc/7P,EAAM+7P,YACzB,KAAKkB,eAAiBj9P,EAAMi9P,kCAKvB,SAAG31I,EAAe/kD,GACvB,IAAM+lK,EAAe,CACnBhhH,MAAAA,EACA/kD,SAAAA,GAEF,KAAKg7L,cAAc9iE,UAAU6tC,sBAGxB,SAAIhhH,GACT,KAAKi2I,cAAcp1B,YAAY7gH,oEAG1B,WAA2Bk2I,GAA3B,kGACa,KAAKC,eADlB,cACL,KAAKpoM,KADA,OAGC0hE,EAA2B,KAAK2mI,eAAe,CACnDnxM,OAAQ,oBACR7vC,OAAQ,CACN,CACE2gP,OAAQ,KAAKlB,SACbmB,SAAU,KAAKpC,WACfnkI,QAAS,KAAK2mI,eAAeF,OAKnC,KAAKzB,YAAchlI,EAAQ/1E,GAC3B,KAAKi8M,eAAiBzsB,KAEtB,KAAK+sB,cAAc/E,QAAQ,CACzBlxI,MAAO,cACP5qG,OAAQ,CAAC,KAAKkhC,OAGhB,KAAKohD,GAAG,gBAAgB,WACtB,MAAM,IAAIxzF,MAAM8uP,OAGZqD,EAAoB,WACxB,EAAKC,eA3BF,mBA+BkB,KAAKC,iBAAiB9mI,GA/BxC,eA+BGnzH,EA/BH,SAkCD+5P,IAlCC,kBAqCI/5P,GArCJ,wCAuCH+5P,IAvCG,wKA4CA,WAAc10P,GAAd,+EACA,KAAKsyP,aADL,sBAEG,IAAI/vP,MkpB9Z+B,6BlpB4ZtC,WAKD,KAAK6/N,UALJ,yCAMI,CACL3iO,QAAS,KAAKA,QACdorG,SAAU,KAAKA,WARd,uBAYC,KAAKgqJ,cAAc70P,GAZpB,gCAcE,IAAI9I,QAAJ,6BAA4B,WAAOV,EAASC,GAAhB,iEACjC,EAAKs/F,GAAG,gBAAgB,kBAAMt/F,EAAO,IAAI8L,MAAM8uP,QAE/C,EAAKt7J,GAAG,WAAW,SAAC/+F,EAAO4kC,GACzB,GAAI5kC,EACF,OAAOP,EAAOO,GAGhBR,EAAQolC,EAAQnoB,OAAO,OARQ,2CAA5B,0DAdF,+JA2BA,WAAoBzT,GAApB,2EACD,KAAKm0P,WADJ,sBAEG,IAAI5xP,MAAM2uP,IAFb,WAKD,KAAK9pI,QALJ,iEASa,KAAKotI,eATlB,OASL,KAAKpoM,KATA,OAWC0hE,EAA2B,KAAK2mI,eAAe,CACnDnxM,OAAQ,oBACR7vC,OAAQ,CACN,CACE2gP,OAAQ,KAAKlB,SACbmB,SAAU,KAAKpC,WACfxyP,QAASO,GAAQA,EAAKP,QAAUO,EAAKP,QAAU,SAKrD,KAAKqzP,YAAchlI,EAAQ/1E,GAC3B,KAAKi8M,eAAiBzsB,KAEtB,KAAKutB,oBAAoBhnI,EAAS,0BAA2B,CAC3D5oH,MAAO,KAAK8uP,iBAGd,KAAKM,cAAc/E,QAAQ,CACzBlxI,MAAO,cACP5qG,OAAQ,CAAC,KAAKkhC,OA/BX,oIAmCA,SAAeogN,GACpB,GAAI,KAAKZ,WACP,MAAM,IAAI5xP,MAAM2uP,IAGlB,KAAKzxP,QAAUs1P,EAAct1P,QAC7B,KAAKorG,SAAWkqJ,EAAclqJ,SAC9B,KAAK7oG,UAAY+yP,EAAc/yP,WAAa,EAC5C,KAAKisP,OAAS8G,EAAc9G,QAAU,GAEtC,IAAM+G,EAAgC,CACpCzjB,UAAU,EACV9xO,QAAS,KAAKA,QACduC,UAAW,KAAKA,UAChB6oG,SAAU,KAAKA,SACfojJ,OAAQ,KAAKA,OACbmG,OAAQ,KAAKlB,SACbmB,SAAU,KAAKpC,YAGX5lJ,EAAW,CACft0D,GAAI,KAAK+6M,YACT56J,QAAS,MACTv9F,OAAQq6P,GAGV,KAAKC,cAAc5oJ,GAEnB,KAAK8nJ,YAAa,EAClB,KAAKe,qBACL,KAAKZ,cAAc/E,QAAQ,CACzBlxI,MAAO,UACP5qG,OAAQ,CACN,CACE2gP,OAAQ,KAAKA,OACbC,SAAU,KAAKA,SACf50P,QAAS,KAAKA,QACdorG,SAAU,KAAKA,0CAMhB,SAAcsqJ,GACnB,GAAI,KAAKhB,WACP,MAAM,IAAI5xP,MAAM2uP,IAGlB,IAAMliP,EACJmmP,GAAgBA,EAAanmP,QAAUmmP,EAAanmP,QkpBxhBpB,mBlpB0hB5Bq9F,EAAW,KAAK+oJ,gBAAgB,CACpCr9M,GAAI,KAAK+6M,YACT97P,MAAO,CAAEgY,QAAAA,KAGX,KAAKimP,cAAc5oJ,GAEnB,KAAK8nJ,YAAa,EAClB,KAAKG,cAAc/E,QAAQ,CACzBlxI,MAAO,aACP5qG,OAAQ,CAAC,CAAEzE,QAAAA,MAEb,KAAKqmP,qDAGA,SAAcN,GACnB,IAAK,KAAKZ,WACR,MAAM,IAAI5xP,MAAM4uP,IAGlB,KAAK1xP,QAAUs1P,EAAct1P,QAC7B,KAAKorG,SAAWkqJ,EAAclqJ,SAC9B,KAAK7oG,UAAY+yP,EAAc/yP,WAAa,EAC5C,KAAKisP,OAAS8G,EAAc9G,QAAU,GAEtC,IAAM+G,EAAgC,CACpCzjB,UAAU,EACV9xO,QAAS,KAAKA,QACduC,UAAW,KAAKA,UAChB6oG,SAAU,KAAKA,SACfojJ,OAAQ,KAAKA,QAGTngI,EAAU,KAAK2mI,eAAe,CAClCnxM,OAAQ,mBACR7vC,OAAQ,CAACuhP,KAGX,KAAKF,oBAAoBhnI,EAAS,2BAElC,KAAKwmI,cAAc/E,QAAQ,CACzBlxI,MAAO,iBACP5qG,OAAQ,CACN,CACEhU,QAAS,KAAKA,QACdorG,SAAU,KAAKA,aAKrB,KAAKyqJ,gFAGA,WAAkBH,GAAlB,kFACCnmP,EAAUmmP,EAAeA,EAAanmP,QAAU,uBAEhDgmP,EAAgC,CACpCzjB,UAAU,EACV9xO,QAAS,KACTuC,UAAW,KACX6oG,SAAU,MAGNijB,EAAU,KAAK2mI,eAAe,CAClCnxM,OAAQ,mBACR7vC,OAAQ,CAACuhP,KAZN,SAeC,KAAKO,aAAaznI,GAfnB,OAiBL,KAAK0nI,yBAAyBxmP,GAjBzB,iKAoBA,WAAsB5C,GAAtB,8EACA,KAAK+nP,WADL,sBAEG,IAAI5xP,MAAM4uP,IAFb,cAKCtxB,EAAW8uB,GAAqBviP,GAEhC0hH,EAAU,KAAK2mI,eAAe,CAClCnxM,OAAQ,sBACR7vC,OAAQ,CAACosN,KATN,SAYgB,KAAK+0B,iBAAiB9mI,GAZtC,cAYCnzH,EAZD,yBAaEA,GAbF,iKAgBA,WAAsByR,GAAtB,8EACA,KAAK+nP,WADL,sBAEG,IAAI5xP,MAAM4uP,IAFb,cAKCtxB,EAAW8uB,GAAqBviP,GAEhC0hH,EAAU,KAAK2mI,eAAe,CAClCnxM,OAAQ,sBACR7vC,OAAQ,CAACosN,KATN,SAYgB,KAAK+0B,iBAAiB9mI,GAZtC,cAYCnzH,EAZD,yBAaEA,GAbF,6JAgBA,WAAkB8Y,GAAlB,4EACA,KAAK0gP,WADL,sBAEG,IAAI5xP,MAAM4uP,IAFb,cAKCrjI,EAAU,KAAK2mI,eAAe,CAClCnxM,OAAQ,WACR7vC,OAAAA,IAPG,SAUgB,KAAKmhP,iBAAiB9mI,GAVtC,cAUCnzH,EAVD,yBAWEA,GAXF,qKAcA,WAA0B8Y,GAA1B,4EACA,KAAK0gP,WADL,sBAEG,IAAI5xP,MAAM4uP,IAFb,cAKL19O,EAASi7O,GAAkBj7O,GAErBq6G,EAAU,KAAK2mI,eAAe,CAClCnxM,OAAQ,gBACR7vC,OAAAA,IATG,SAYgB,KAAKmhP,iBAAiB9mI,GAZtC,cAYCnzH,EAZD,yBAaEA,GAbF,+JAgBA,WAAoB8Y,GAApB,4EACA,KAAK0gP,WADL,sBAEG,IAAI5xP,MAAM4uP,IAFb,cAKCrjI,EAAU,KAAK2mI,eAAe,CAClCnxM,OAAQ,oBACR7vC,OAAAA,IAPG,SAUgB,KAAKmhP,iBAAiB9mI,GAVtC,cAUCnzH,EAVD,yBAWEA,GAXF,6JAcA,WAAkB86P,GAAlB,4EACA,KAAKtB,WADL,sBAEG,IAAI5xP,MAAM,kCAFb,cAKCurH,EAAU,KAAK2mI,eAAe,CAClCnxM,OAAQ,qBACR7vC,OAAQ,CAACgiP,KAPN,SAUgB,KAAKb,iBAAiB9mI,GAVtC,cAUCnzH,EAVD,yBAWEA,GAXF,+HAcA,SACLmzH,EACAx2F,GAAyB,WASzB,OAPA,KAAKi+N,aAAaznI,EAASx2F,GAE3B,KAAKg9N,cAAc/E,QAAQ,CACzBlxI,MAAO,oBACP5qG,OAAQ,CAAC,CAAEq6G,QAAAA,EAASx2F,QAAAA,MAGf,IAAIpgC,SAAQ,SAACV,EAASC,GAC3B,EAAKi/P,qBAAqB5nI,EAAQ/1E,IAAI,SAAC/gD,EAAqB4kC,GAC1D,GAAI5kC,EACFP,EAAOO,OADT,CAIA,IAAK4kC,EACH,MAAM,IAAIr5B,MkpB7sBkB,6BlpB+sB9B/L,EAAQolC,wEAKP,WAAwBkyF,EAAmCx2F,GAA3D,4EACA,KAAK68N,WADL,sBAEG,IAAI5xP,MAAM4uP,IAFb,YAKGrjI,EAAQxqE,OALX,OAME,iBANF,OAQE,gBARF,OAUE,wBAVF,MAWE,wBAXF,OAgBE,kBAhBF,gDAOM,KAAKunD,UAPX,gCASM+iJ,GAAmB,KAAKnuP,UAT9B,cAYGquH,EAAQr6G,SACVq6G,EAAQr6G,OAAO,GAAKk7O,GAAqB7gI,EAAQr6G,OAAO,KAbzD,mCAiBGq6G,EAAQr6G,SACVq6G,EAAQr6G,OAASi7O,GAAkB5gI,EAAQr6G,SAlB5C,wEAyBCkiP,EAAmB,KAAKlB,eAAe3mI,GAzBxC,UA2BgB,KAAK8mI,iBAAiBe,EAAkBr+N,GA3BxD,eA2BC38B,EA3BD,yBA4BEA,GA5BF,sIA+BA,SAAe0xG,GACpB,IAAIiiJ,GAAyBjiJ,GAI3B,MAAM,IAAI9pG,MkpBvvBiB,yDlpBovB3B,IAAMqzP,EAAoB,KAAKR,gBAAgB/oJ,GAC/C,KAAK4oJ,cAAcW,gCAMhB,SAAcvpJ,GACnB,IAAIkiJ,GAAuBliJ,GAIzB,MAAM,IAAI9pG,MkpB/vBgB,sDlpB4vB1B,IAAMqzP,EAAoB,KAAKR,gBAAgB/oJ,GAC/C,KAAK4oJ,cAAcW,iCAMhB,WACL,KAAK5C,WAAWxxC,iEAKR,WACR1zF,EACAx2F,GAFQ,sFAIFu+N,EAA+B,KAAKpB,eAAe3mI,GAJjD,SAMmD,KAAK7hC,SAAS4pK,GANjE,OAMFC,EANE,OAQF5wP,EAA0C,qBAAZ,OAAPoyB,QAAO,IAAP,OAAO,EAAP,EAASpyB,OAAwBoyB,EAAQpyB,MAAQ,KAAKkvP,OAC7Ex4N,EAAkB5mB,KAAKE,UAAU4gP,GACjC1F,EACsC,qBAA5B,OAAP94N,QAAO,IAAP,OAAO,EAAP,EAASy+N,wBACXz+N,EAAQy+N,sBACTtH,GAAgBoH,GAEtB,KAAK7C,WAAWp1G,KAAKhiH,EAAS12B,EAAOkrP,GAf7B,iKAkBA,WAAoB/jJ,GAApB,2FACmD,KAAKpgB,SAASogB,GADjE,OACFypJ,EADE,OAGF5wP,EAAgB,KAAKkvP,OACrBx4N,EAAkB5mB,KAAKE,UAAU4gP,IACxB,EAEf,KAAK9C,WAAWp1G,KAAKhiH,EAAS12B,EAFf,MALP,qKAUA,WACR4oH,EACAzxC,EACA/kD,GAHQ,iEAKR,KAAKi+N,aAAaznI,EAASx2F,GAC3B,KAAKy7N,4BAA4BjlI,EAAQ/1E,GAAIskC,GANrC,yIASA,SAAiByxC,EAA0Bx2F,GAQnD,OAPA,KAAKi+N,aAAaznI,EAASx2F,GAE3B,KAAKg9N,cAAc/E,QAAQ,CACzBlxI,MAAO,oBACP5qG,OAAQ,CAAC,CAAEq6G,QAAAA,EAASx2F,QAAAA,MAGf,KAAK0+N,yBAAyBloI,EAAQ/1E,kCAGrC,SAAe+1E,GACvB,GAA8B,qBAAnBA,EAAQxqE,OACjB,MAAM,IAAI/gD,MkpB1zBiB,mDlpBk0B7B,MAN0C,CACxCw1C,GAA0B,qBAAf+1E,EAAQ/1E,GAAqB81M,KAAc//H,EAAQ/1E,GAC9DmgD,QAAS,MACT50C,OAAQwqE,EAAQxqE,OAChB7vC,OAAkC,qBAAnBq6G,EAAQr6G,OAAyB,GAAKq6G,EAAQr6G,uCAKvD,SACR44F,GAEA,GAA2B,qBAAhBA,EAASt0D,GAClB,MAAM,IAAIx1C,MkpBx0Ba,+ClpB20BzB,IAAM0zP,EAAe,CAAEl+M,GAAIs0D,EAASt0D,GAAImgD,QAAS,OAEjD,GAAIq2J,GAAuBliJ,GAAW,CACpC,IAAMr1G,EspBzzBN,SACJA,GAEA,IAAMgY,EAAUhY,EAAMgY,SAAW,6BAC7BkL,GAAQ,KACZ,GAAIljB,IAAUA,EAAMkjB,KAClB,OAAQlL,GACN,IAAK,cACHkL,GAAQ,MACR,MACF,IAAK,kBACHA,GAAQ,MACR,MACF,IAAK,mBACHA,GAAQ,MACR,MACF,IAAK,iBACHA,GAAQ,MACR,MACF,IAAK,iBACHA,GAAQ,MACR,MACF,QACEA,GAAQ,KAQd,MAJe,CACbA,KAAAA,EACAlL,QAAAA,GtpB4xBgBknP,CAAe7pJ,EAASr1G,OAOtC,OALmB,6CACdi/P,GACA5pJ,GAAQ,CACXr1G,MAAAA,IAGG,GAAIs3P,GAAyBjiJ,GAMlC,OALqB,+BAChB4pJ,GACA5pJ,GAMP,MAAM,IAAI9pG,MAAM6uP,4CAGV,SAAyB/0K,GAC/B,IAAMrtE,EAAUqtE,GAAY,uBACvB,KAAK83K,aACJ,KAAK7B,cACP,KAAKA,aAAa9wC,SAEpBjtK,EAAAA,EAAAA,aAAYE,EAAAA,sBAEV,KAAK0/M,aACP,KAAKA,YAAa,GAEhB,KAAKN,eACP,KAAKA,aAAe,GAElB,KAAKD,kBACP,KAAKA,gBAAkB,IAErB,KAAKF,UACP,KAAKA,QAAU,IAEjB,KAAKY,cAAc/E,QAAQ,CACzBlxI,MAAO,aACP5qG,OAAQ,CAAC,CAAEzE,QAAAA,MAEb,KAAKqmP,wBACL,KAAKc,uDAGC,SAAuB95K,EAAkB24K,GAC3CA,GACEA,EAAczjB,UACX,KAAK4iB,YA+BJa,EAAcv1P,UAChB,KAAKA,QAAUu1P,EAAcv1P,SAE3Bu1P,EAAcnqJ,WAChB,KAAKA,SAAWmqJ,EAAcnqJ,UAGhC,KAAKypJ,cAAc/E,QAAQ,CACzBlxI,MAAO,iBACP5qG,OAAQ,CACN,CACEhU,QAAS,KAAKA,QACdorG,SAAU,KAAKA,eA1CrB,KAAKspJ,YAAa,EAEda,EAAcv1P,UAChB,KAAKA,QAAUu1P,EAAcv1P,SAG3Bu1P,EAAcnqJ,WAChB,KAAKA,SAAWmqJ,EAAcnqJ,UAG5BmqJ,EAAcZ,SAAW,KAAKA,SAChC,KAAKA,OAASY,EAAcZ,QAG1BY,EAAcX,WAAa,KAAKA,WAClC,KAAKA,SAAWW,EAAcX,UAGhC,KAAKC,cAAc/E,QAAQ,CACzBlxI,MAAO,UACP5qG,OAAQ,CACN,CACE2gP,OAAQ,KAAKA,OACbC,SAAU,KAAKA,SACf50P,QAAS,KAAKA,QACdorG,SAAU,KAAKA,cAuBvB,KAAKyqJ,yBAKP,KAAKE,yBAAyBn5K,uEAI1B,WAA8B20K,GAA9B,4EACe,CAAC,KAAKkC,SAAU,KAAKc,gBAExBlvP,SAASksP,EAAc9rP,OAHnC,0DASJ4wP,EAAoB9gP,KAAKC,MAAM+7O,EAAcp1N,SATzC,mGAkBW,KAAKmqC,SAAS+vL,GAlBzB,SAcAl6N,EAdA,SAqBJ,KAAK04N,cAAc/E,QAAQ3zN,GArBvB,wJAyBA,WACN,KAAKo3N,WAAWxhE,UAAU,KAAKwiE,oDAGzB,SACNj8M,EACAuhB,GAEA,KAAKy8B,GAAL,mBAAoBh+C,GAAMuhB,8CAGpB,SAA4BvhB,EAAYskC,GAAgB,WAC9D,KAAKq5K,qBAAqB39M,GAAI,SAAC/gD,EAAO4kC,GAChC5kC,EACF,EAAKo/P,uBAAuBp/P,EAAMgY,SAGhC4sB,EAAQjhC,OACV,EAAKy7P,uBAAuB/5K,EAAUzgD,EAAQjhC,QACrCihC,EAAQ5kC,OAAS4kC,EAAQ5kC,MAAMgY,QACxC,EAAKonP,uBAAuBx6N,EAAQ5kC,MAAMgY,SAE1C,EAAKonP,uBAAuB/5K,8CAK1B,SAAyBtkC,GAAU,WACzC,OAAO,IAAI7gD,SAAQ,SAACV,EAASC,GAC3B,EAAKi/P,qBAAqB39M,GAAI,SAAC/gD,EAAO4kC,GAChC5kC,EACFP,EAAOO,GAGL4kC,EAAQjhC,OACVnE,EAAQolC,EAAQjhC,QACPihC,EAAQ5kC,OAAS4kC,EAAQ5kC,MAAMgY,QACxCvY,EAAO,IAAI8L,MAAMq5B,EAAQ5kC,MAAMgY,UAE/BvY,EAAO,IAAI8L,MAAM6uP,qDAMjB,WAA0B,WAChC,KAAKr7J,GAAG,eAAe,WACjB,EAAKu8J,cACP,EAAKA,aAAa9zM,KAChB,EAAK7J,KACL,WACE,EAAK2/M,cAAc/E,QAAQ,CACzBlxI,MAAO,eACP5qG,OAAQ,OAGZ,EAAK++O,wBAKX,KAAKz8J,GAAG,WAAW,WACb,EAAKu8J,cACP,EAAKA,aAAa9wC,WAItB,KAAKzrH,GAAG,qBAAqB,SAAC/+F,EAAO4kC,GACnC,IAAQkyF,EAAYlyF,EAAQnoB,OAAO,GAA3Bq6G,QACR,IAAIh7E,EAAAA,EAAAA,aAAc,EAAK2/M,gBAAgB3tP,SAASgpH,EAAQxqE,QAAS,CAC/D,IAAM+yM,GAAgBhiN,EAAAA,EAAAA,UAASI,EAAAA,qBAC3B4hN,IACFh0O,OAAOs7H,SAASvoG,KAAOihN,EAAcjhN,UAK3C,KAAK2gD,GAAG,qBAAqB,SAAC/+F,EAAO4kC,GAC/B5kC,GACF,EAAKs9P,cAAc/E,QAAQ,CACzBlxI,MAAO,QACP5qG,OAAQ,CACN,CACEyG,KAAM,wBACNlL,QAAShY,EAAM6E,eAKvB,EAAKi3P,YAAcl3N,EAAQmc,GAC3B,EAAKq8M,OAASx4N,EAAQnoB,OAAO,GAAG2gP,OAChC,EAAKC,SAAWz4N,EAAQnoB,OAAO,GAAG4gP,SAElC,IAAMiC,EAAe,+BAChB16N,GAAO,CACV0nB,OAAQ,oBAEV,EAAKgxM,cAAc/E,QAAQ+G,MAG7B,KAAKvgK,GAAG,oBAAoB,SAAC/+F,EAAO4kC,GAC9B5kC,GACF,EAAKo/P,uBAAuBp/P,EAAMgY,SAEpC,EAAKonP,uBAAuB,uBAAwBx6N,EAAQnoB,OAAO,qCAI/D,WAAc,WACpB,KAAKu/O,WAAWj9J,GAAG,WAAW,SAACi7J,GAAD,OAC5B,EAAKuF,wBAAwBvF,MAG/B,KAAKgC,WAAWj9J,GAAG,QAAQ,kBACzB,EAAKu+J,cAAc/E,QAAQ,CAAElxI,MAAO,iBAAkB5qG,OAAQ,QAGhE,KAAKu/O,WAAWj9J,GAAG,SAAS,kBAC1B,EAAKu+J,cAAc/E,QAAQ,CAAElxI,MAAO,kBAAmB5qG,OAAQ,QAGjE,KAAKu/O,WAAWj9J,GAAG,SAAS,kBAC1B,EAAKu+J,cAAc/E,QAAQ,CACzBlxI,MAAO,kBACP5qG,OAAQ,CAAC,oCAIb,KAAKu/O,WAAWx0M,iCAKV,WACN,IAAM2B,EAAW,KAAKA,SAChB6zM,EAAiB,KAAKA,eACtBnhP,EAAU,KAAKA,QACf8+O,EAAS78M,mBAAmB,KAAK68M,QACjC/6P,EAAM,KAAKA,IAEjB,MADS,UAAMupD,EAAN,YAAkB6zM,EAAlB,YAAoCnhP,EAApC,mBAAsD8+O,EAAtD,gBAAoE/6P,4BAIvE,SAAU+9C,GAChB,IAAMh6C,EqpBhmCJ,SAAgCwiB,GACpC,IAAMq5O,EAAoBr5O,EAAIrhB,QAAQ,KAEhCy0P,GAAoD,IAAtBpzO,EAAIrhB,QAAQ,KAAcqhB,EAAIrhB,QAAQ,UAAOpE,EAE3EyoD,EAAmBhjC,EAAI3G,UAAU,EAAGggP,GAiBpCC,EAbN,SAA6Bp2M,GAC3B,IAEM5zC,EAAS4zC,EAAKvhC,MAFF,KASlB,MALuB,CACrBk1O,eAAgBvnP,EAAO,GACvBoG,QAAS0B,SAAS9H,EAAO,GAAI,KAMaiqP,CAfzBv5O,EAAI3G,UAAUggP,EAAY,EAAGjG,IA8B5CrB,EAXN,SAA0BhlF,GACxB,IAAMvvK,EAAS+yN,GAAiBxjD,GAOhC,MALuC,CACrCtzK,IAAK+D,EAAO/D,KAAO,GACnB+6P,OAAQh3P,EAAOg3P,QAAU,IAMWgF,CAbO,qBAAZpG,EAA0BpzO,EAAI7V,OAAOipP,GAAW,IAqBnF,OANY,6BACVpwM,SAAAA,GACGs2M,GACAvH,GrpBsjC6B0H,CAAsBjiN,GAEtD,GAAIh6C,EAAOwlD,WAAa,KAAKA,SAAU,CACrC,IAAKxlD,EAAOq5P,eACV,MAAMzxP,MAAM,qDAEd,IAAMyxP,EAAiBr5P,EAAOq5P,eAE9B,IAAKr5P,EAAOg3P,OACV,MAAMpvP,MAAM,iDAEd,IAAMovP,EAASjoK,mBAAmB/uF,EAAOg3P,QAEzC,IAAKh3P,EAAO/D,IACV,MAAM2L,MAAM,0CAId,MAAO,CAAEyxP,eAAAA,EAAgBrC,OAAAA,EAAQ/6P,IAFrB+D,EAAO/D,KAInB,MAAM,IAAI2L,MkpBnnCiB,kFlpBynCvB,wFACF,KAAK2vP,WADH,gCAEiB,KAAKA,WAAW2E,cAFjC,cAEEl8P,EAFF,yBAGGA,GAHH,gCAKC,MALD,yJAQA,WACNoN,GADM,4EAGAnR,EAA0B,KAAKw1D,MACjC,KAAK8lM,aAAct7P,EAJjB,gCAKqC,KAAKs7P,WAAW5rL,QAAQv+D,EAAMnR,GALnE,cAKE+D,EALF,yBAMGA,GANH,gCAQC,MARD,0JAWA,WACNihC,GADM,4EAGAhlC,EAA0B,KAAKw1D,MACjC,KAAK8lM,aAAct7P,EAJjB,gCASa,KAAKs7P,WAAWhtL,QAAQtpC,EAAShlC,GAT9C,cAKE+D,EALF,yBAUGA,GAVH,gCAYC,MAZD,uIAiBA,WACN,IAAIA,EAAuC,KAI3C,OAHI,KAAKy3P,kBACPz3P,EAAS,KAAKy3P,gBAAgB0E,cAEzBn8P,oCAGD,WACF,KAAKy3P,iBACP,KAAKA,gBAAgB2E,WAAW,KAAKrF,8CAIjC,WACF,KAAKU,iBACP,KAAKA,gBAAgB4E,qDAIjB,WACF,KAAK7C,WACP,KAAKe,qBAEL,KAAKG,2DAMD,SAAoB/B,GAC1B,IAAKA,EAAel5N,KAAqC,kBAAvBk5N,EAAel5N,IAC/C,MAAM73B,MAAM,yDAGd,IAAK+wP,EAAe/pP,MAAuC,kBAAxB+pP,EAAe/pP,KAChD,MAAMhH,MAAM,0DAGd,IAAK+wP,EAAehqK,OAAyC,kBAAzBgqK,EAAehqK,MACjD,MAAM/mF,MAAM,2DAGd,IAAM00P,EAAsC,CAC1CtF,OAAQ,KAAKA,OACbzsP,MAAO,KAAKguP,SACZ3pP,KAAM+pP,EAAe/pP,KACrB+/E,MAAOgqK,EAAehqK,MACtB4tK,SAAU,GACV54M,SAAUg1M,EAAeh1M,UAAY,IAGvC,KAAKy3C,GAAG,UAAR,6BAAmB,WAAO/+F,EAAqB4kC,GAA5B,6EACb5kC,EADa,sBAETA,EAFS,cAKbs8P,EAAee,WACX6C,EAAWt7N,EAAQnoB,OAAO,GAAG4gP,SAASl2P,KAC5C84P,EAAiBC,SAAWA,GAPb,kBAWQn6M,MAAK,UAAIu2M,EAAel5N,IAAnB,QAA8B,CACxDkpB,OAAQ,OACR6rF,QAAS,CACPgoH,OAAQ,mBACR,eAAgB,oBAElBv6M,KAAM5nC,KAAKE,UAAU+hP,KAjBR,cAWT5qJ,EAXS,gBAoBIA,EAASn6F,OApBb,iBAqBLgwE,QArBK,uBAsBP3/E,MAAM,qCAtBC,gEAyBTA,MAAM,qCAzBG,0DAAnB,+DAzpCEuvP,GAurCN,MupB1vCM,SAAUhwL,GAAYjsE,GAE1B,OADsB68C,GAAAA,kBACDmvB,gBAAgB,IAAI5qD,WAAWphB,ICJ/C,ICKMuhQ,GAAmB,UACnBC,GAAiB,cDAJ,KCCbC,GAAe,OAKF,cDNA,ICMA,QACC,aDPD,KEUpB,SAAUC,GAAQhuP,GACtB,OAAOA,IAAS6tP,GACZ,CAAEvhQ,OFZkB,IEYEsI,KAAMi5P,IAC5B,CACE/vP,KAAM,CAAElJ,KAAMk5P,IACdl5P,KAAMm5P,IAIR,SAAUE,GAAOjuP,GACrB,OAAOA,IAAS6tP,GACZ,CC3BoB,UACA,WD2BpB,CCzBiB,OACE,UDmCzB,SAAsBK,GAAtB,uEAAO,WACLjwM,GADK,0FAELj+C,EAFK,+BAEU6tP,GAFV,kBAIG1kN,GAAAA,kBAA8BqxG,UACpC,MACAv8F,EACA+vM,GAAQhuP,IACR,EACAiuP,GAAOjuP,KATJ,wGAaA,WACL07D,EACAruE,EACAmR,GAHK,kFAKCgvC,EAASrE,GAAAA,kBALV,SAMmB+kN,GAAiB7gQ,EAAKwgQ,IANzC,cAMCM,EAND,gBAOgB3gN,EAAOuvB,QAC1B,CACErB,GAAAA,EACA9mE,KAAMi5P,IAERM,EACA3vP,GAbG,cAOCpN,EAPD,yBAeE,IAAIsc,WAAWtc,IAfjB,sGAkBA,WACLsqE,EACAruE,EACAmR,GAHK,kFAKCgvC,EAASrE,GAAAA,kBALV,SAMmB+kN,GAAiB7gQ,EAAKwgQ,IANzC,cAMCM,EAND,gBAOgB3gN,EAAOmuB,QAC1B,CACED,GAAAA,EACA9mE,KAAMi5P,IAERM,EACA3vP,GAbG,cAOCpN,EAPD,yBAeE,IAAIsc,WAAWtc,IAfjB,kEAkBP,SAAsBg9P,GAAtB,yEAAO,WACL/gQ,EACAmR,GAFK,kFAICgvC,EAASrE,GAAAA,kBAJV,SAKmB+kN,GAAiB7gQ,EAAK0gQ,IALzC,cAKCI,EALD,gBAMmB3gN,EAAO7M,KAC7B,CACEr0C,OF1FoB,IE2FpBsI,KAAMm5P,IAERI,EACA3vP,GAZG,cAMCowB,EAND,yBAcE,IAAIlhB,WAAWkhB,IAdjB,kEEtFD,SAAUy/N,GACd3yL,EACAruE,EACAmR,GAEA,OF6CF,gDE7CS8vP,CAAkB5yL,EAAIruE,EAAKmR,GAG9B,SAAU+vP,GACd7yL,EACAruE,EACAmR,GAEA,OFuDF,gDEvDSgwP,CAAkB9yL,EAAIruE,EAAKmR,GCXpC,SAAsBiwP,GAAtB,yEAAO,WACLphQ,EACAqN,GAFK,uFAIgB0zP,GAAsB/gQ,EAAKqN,GAJ3C,cAICtJ,EAJD,yBAKEA,GALF,kE7pBMP,SAAsBk8P,GAAtB,uEAAO,WAA2BhhQ,GAA3B,gFAECwhB,EAAQq/B,IADG7gD,GAAU,KAAO,GAE5B8E,EAAS8yP,GAA2B/9K,EAAuBr4D,IAH5D,kBAKE1c,GALF,kEAQP,SAAsBs9P,GAAtB,yEAAO,WAA0Br8N,EAA6BhlC,GAAvD,0FACCsrJ,EAAaxyE,EAAoB9zC,EAAQ7zB,MACzCk9D,EAAKyK,EAAoB9zC,EAAQqpC,IACjC+hD,EAAOt3C,EAAoB9zC,EAAQorF,MACnCkxI,EAAkBxoL,EAAoBs3C,GAAM,GAC5CmxI,EAAWzoL,EAAsBwyE,EAAYj9E,GAL9C,SAMevuB,GAAsB9/C,EAAKuhQ,GAN1C,UAMCC,EAND,OAOCC,EAAmB3oL,EAAoB0oL,GAAO,GAEhD1oL,EAAyBwoL,KAAaxoL,EAAyB2oL,GAT9D,2CAUI,GAVJ,kCAaE,GAbF,mEAgBP,SAAsB/xL,GAAtB,2EAAO,WACLv+D,EACAnR,EACA0hQ,GAHK,8FAKClsM,EAAOsjB,EAAuB69K,GAA2B32P,IAL1D,KAO8B0hQ,EAP9B,qCAOmDzB,GAAY,KAP/D,iCAOC0B,EAPD,KAQCtzL,EAAKyK,EAAuB69K,GAA2BgL,IACvDC,EAAgB9oL,EAAoBzK,GAAI,GAExCwzL,EAAwBzjP,KAAKE,UAAUnN,GACvC63C,EAAU8vB,EAAqB+oL,GAZhC,UAcoB/hN,GAAqBuuB,EAAI7Y,EAAMxM,GAdnD,eAcCsiG,EAdD,OAeCw2G,EAAwBhpL,EAAoBwyE,GAAY,GAExDi2G,EAAWzoL,EAAsBwyE,EAAYj9E,GAjB9C,UAkBcvuB,GAAsB0V,EAAM+rM,GAlB1C,eAkBCnxI,EAlBD,OAmBCkxI,EAAkBxoL,EAAoBs3C,GAAM,GAnB7C,kBAqBE,CACLj/G,KAAM2wP,EACN1xI,KAAMkxI,EACNjzL,GAAIuzL,IAxBD,mEA4BP,SAAsBtzL,GAAtB,yEAAO,WACLtpC,EACAhlC,GAFK,oFAICw1D,EAAOsjB,EAAuB69K,GAA2B32P,IAJ1D,sBAOG,IAAI2L,MAAM,wCAPb,uBAU2B01P,GAAWr8N,EAASwwB,GAV/C,0DAYI,MAZJ,cAeC81F,EAAaxyE,EAAoB9zC,EAAQ7zB,MACzCk9D,EAAKyK,EAAoB9zC,EAAQqpC,IAhBlC,UAiBgBvuB,GAAqBuuB,EAAI7Y,EAAM81F,GAjB/C,QAiBC16F,EAjBD,OAkBCg4B,EAAe9P,EAAqBloB,GAlBrC,UAqBHz/C,EAAOiN,KAAKC,MAAMuqE,GArBf,4EAuBI,MAvBJ,iCA0BEz3E,GA1BF,sFAhDP,GAVM4wP,SAAAA,iCACJ,WAAY3G,EAAsCsB,GAAmC,kCAC7E,CACJnB,UAAAA,EACAH,cAAAA,EACAsB,eAAAA,qBALAqF,CAAsB7G,8DAGtB8G,IAAM1lN,EAAAA,EAAAA,eAAqC,mBAAqBwpG,GAAAA,eAIhEm8G,GAAAA,SAAAA,iCAGJ,WAAYz+N,GAAW,6BACrB,gBACKA,IAAMA,EAFU,4CAKvB,SAAYwB,EAAc5sB,GAA0B,IAATkL,EAAS,wDAAD,EACjD,MAAO,CACLljB,MAAO,CAAEgY,QAAAA,EAASkL,KAAAA,GAClB69B,GAAInc,EAAQmc,GACZmgD,QAASt8D,EAAQs8D,6BAId,SAAKt8D,EAAc45F,GAAc,WACtC,OAAO,IAAIt+H,SAAQ,YACjB,GAAuB,kBAAnB0kC,EAAQ0nB,OAA4B,CACtC,IAAMtsD,EAAQ,EAAKq9N,YACjBz4L,EACA,yDAGF,OADA,EAAKz4B,KAAK,QAASnM,GACZR,EAAQQ,GAEjB,IAAM2lJ,EAAM,IAAIi8G,GAEZE,GAAY,EAEVl8O,EAAM,SAACnlB,EAAakD,GACxB,IAAKm+P,EAGH,GAFAn8G,EAAIrD,QACJw/G,GAAY,EACRtjI,EACFA,EAAS/9H,EAAKkD,OACT,CACL,IAAQo9C,EAAgBnc,EAAhBmc,GAAImgD,EAAYt8D,EAAZs8D,QACNmU,EAAW50G,EACb,CAAEsgD,GAAAA,EAAImgD,QAAAA,EAASlhG,MAAO,CAAEgY,QAASvX,EAAIuX,QAASkL,KAAMziB,EAAIyiB,OACxD,CAAE69B,GAAAA,EAAImgD,QAAAA,EAASv9F,OAAAA,GACnB,EAAKwI,KAAK,UAAWkpG,GACrB71G,EAAQ61G,KAKdswC,EAAIn+F,KAAK,OAAQ,EAAKpkB,KAAK,GAC3BuiH,EAAIe,iBAAiB,eAAgB,oBACrCf,EAAIliF,QAAU,IACdkiF,EAAI0oD,QAAUzoL,EACd+/H,EAAI0jE,UAAYzjM,EAChB+/H,EAAIW,mBAAqB,WACvB,GAAuB,IAAnBX,EAAIa,WACN,IACE,IAAMnxC,EAAWr3F,KAAKC,MAAM0nI,EAAIO,cAChCtgI,EAAIyvF,EAASr1G,MAAOq1G,EAAS1xG,QAC7B,MAAOb,GACP8iB,EAAI9iB,KAIV6iJ,EAAIiB,KAAK5oI,KAAKE,UAAU0mB,aA9DxBi9N,CAAuBn6I,MAmE7B,MAjEMq6I,GAAiBr5P,EAAQ,OACzBs5P,GAAmBt5P,EAAQ,OAC3Bu5P,GAAqBv5P,EAAQ,OAC7Bw5P,GAAoBx5P,EAAQ,OAC5B44O,GAA0B54O,EAAQ,OAClCy5P,GAAmBz5P,EAAQ,OAC3Bm4O,GAA2Bn4O,EAAQ,OAEnC05P,GAAAA,SAAAA,iCAgBJ,WAAYp5P,GAAmC,MAmB7C,IAnB6C,gBAC7C,cAAM,CAAEk3F,gBAAiBl3F,EAAKk3F,iBAAmB,OAhB5C,OAAS,mCACT,UAAS,EACT,cAAcmiK,KACd,0BAAsD3hQ,EACtD,MAAsB,KACtB,WAAW,GACX,OAA8B,KAE9B,gBAAe,EACf,aAAY,EACZ,mBAA0B,GAC1B,WAAqB,GACrB,UAAU,EACV,SAAS,GA8ChB,qBAAS,oGACU,EAAK4hQ,qBADf,YACDxhF,EADC,+BAGL,EAAKn1J,QACL,EAAK42O,2BAJA,kBAKEzhF,EAAGjtE,UALL,aAOC,IAAItoG,MAAM,qCAPX,4CAWT,uCAAU,WAAOq5B,GAAP,0FACD,EAAKgiH,KAAKhiH,IADT,2CAAV,sDAIA,oCAAO,WAAOA,EAAc09B,GAArB,4EAEkB,kBAAZ19B,EAFN,uBAICnoB,EAAS6lD,EAEE,mBAHThW,EAAS1nB,KAIbnoB,EAASi7O,GAAkBj7O,IAP1B,kBAUI,EAAK+lP,iBAAiBl2M,EAAQ7vC,IAVlC,UAiBkB,mBAHvBmoB,EAAO,eAAKmc,GAAI81M,KAAa31J,QAAS,OAAUt8D,IAGpC0nB,SACV1nB,EAAQnoB,OAASi7O,GAAkB9yN,EAAQnoB,UAIzC6lD,EAtBC,wBAuBH,EAAK8+B,UAAUx8D,EAAS09B,GAvBrB,oDA2BE,EAAKkgM,iBAAiB59N,EAAQ0nB,OAAQ1nB,EAAQnoB,SA3BhD,4CAAP,wDA8BA,YAAY,SAAC6lD,GACX,EAAKmgM,iBAAiBnhQ,KAAKghE,IAG7B,iBAAiB,SAAC3+D,GACZ,EAAK8+P,kBAAoB,EAAKA,iBAAiB5jQ,QACjD,EAAK4jQ,iBAAiBt8P,SAAQ,YAAQ,OAAIm8D,EAAS3+D,OA7FrD,EAAKg3P,OAAS3xP,EAAK05P,UACf15P,EAAK05P,UAAU/H,OACf3xP,EAAK2xP,QAAU,mCACnB,EAAKl0M,OAAgC,qBAAhBz9C,EAAKy9C,SAA0C,IAAhBz9C,EAAKy9C,OACzD,EAAK80M,YAAcvyP,EAAKuyP,aAAe,EAAKA,YAC5C,EAAK32M,mBAAqB57C,EAAK47C,mBAC/B,EAAKk8H,GACH93K,EAAK05P,WACL,IAAIf,GAAc,CAChBhH,OAAQ,EAAKA,OACbY,YAAa,EAAK90M,OAAS,EAAK80M,iBAAc76P,EAC9CkkD,mBAAoB,EAAKA,mBACzB61M,UAAe,OAAJzxP,QAAI,IAAJ,OAAI,EAAJ,EAAMyxP,UACjBxF,eAAoB,OAAJjsP,QAAI,IAAJ,OAAI,EAAJ,EAAMisP,eACtBgG,WAAgB,OAAJjyP,QAAI,IAAJ,OAAI,EAAJ,EAAMiyP,aAEtB,EAAKh9H,IAAMj1H,EAAKi1H,KAAO,MAEpB,EAAKA,OACJj1H,EAAKmuP,UAAqC,kBAAlBnuP,EAAKmuP,WAA0BnuP,EAAKmuP,SAASxzM,QAEvE,MAAM,IAAIp4C,MAAM,2DAvB2B,OAyB7C,EAAK4rP,SAAWnuP,EAAKmuP,UAAY,GACjC,EAAK1uP,SAAc,OAAJ,QAAI,IAAJ,OAAI,EAAJ,EAAMA,UAAW,EAAKA,QACrC,EAAKoiG,aA3BwC,8CA8B/C,WACE,OAAO,yBAGT,WACE,OAAO,KAAKi2E,2BAGd,WACE,OAAO,KAAKA,GAAGu8E,gEA4DjB,8EACE,KAAK7yC,QADP,sJAIA,oGACmB,KAAK83C,mBAAmB,CAAEK,wBAAwB,IADrE,cACQ7hF,EADR,gBAEQA,EAAG68E,cAFX,uBAGQ,KAAKiF,eAHb,8JAMA,WAAoBh+N,GAApB,2FAGQjhC,EAAc,KAHtB,SAIqB,KAAK2+P,qBAJ1B,OAIUxhF,EAJV,YAKYl8I,EAAQ0nB,OALpB,OAMW,mBANX,OAUW,iBAVX,QAaW,iBAbX,QAgBW,gBAhBX,QAmBW,gBAnBX,QAsBW,wBAtBX,yCAOc,KAAKk+J,QAPnB,eAQQ7mN,EAAS,KARjB,oCAWQA,EAASm9K,EAAGjtE,SAXpB,oCAcQlwG,EAASm9K,EAAGjtE,SAAS,GAd7B,4CAoBQlwG,EAASm9K,EAAGr4K,QApBpB,oCAuBQ,KAAK24F,UAAUx8D,GAAS,SAACpM,GAAD,OAAYA,KACpC70B,GAAS,EAxBjB,8CA2ByB,KAAKk/P,oBAAoBj+N,GA3BlD,QA2BQywE,EA3BR,mBA6BQA,EA7BR,0CA8BaA,GA9Bb,iCAgCW,KAAKytJ,eAAel+N,EAASjhC,IAhCxC,wCAkCI,KAAKwI,KAAK,QAAV,MAlCJ,oLAuCA,WAA0By4B,GAA1B,4EACOqwN,EAAAA,SAAwBrwN,EAAQ0nB,UAAW1nB,EAAQ0nB,OAAO8yD,WAAW,QAD5E,yCAEW,KAAK2jJ,mBAAmBn+N,IAFnC,uBAImB,KAAK09N,qBAJxB,cAIQxhF,EAJR,gBAKuBA,EAAGkiF,kBAAkBp+N,GAL5C,cAKQjhC,EALR,yBAMS,KAAKm/P,eAAel+N,EAASjhC,IANtC,oKASA,WAAyBihC,GAAzB,0EACO,KAAK+xF,KADZ,sBAEU32H,EAAQ,IAAIuL,MAAM,iCACxB,KAAKY,KAAK,QAASnM,GACbA,EAJV,gCAMS,KAAK22H,KAAKiwB,KAAKhiH,IANxB,mIASA,SAAeA,EAAcjhC,GAC3B,MAAO,CACLo9C,GAAInc,EAAQmc,GACZmgD,QAASt8D,EAAQs8D,QACjBv9F,OAAQA,qCAMZ,WAAkE,WAA/CqF,EAA+C,uDAAF,GAC9D,EAA2CA,EAAnC25P,uBAAAA,OAAR,SACA,OAAO,IAAIziQ,SAAQ,SAACV,EAASC,GAC3B,IAAMqhL,EAAK,EAAKA,GACZ,EAAKmiF,aACP,EAAKC,WAAU,SAAC/6O,GAAD,OAAY3oB,EAAQ2oB,MACzB24J,EAAGsqD,WAAcu3B,GA6BtB,EAAKv3B,YACR,EAAKA,WAAY,EACjB,EAAK+3B,YAAYriF,EAAG45E,UAEtBl7P,EAAQshL,KAhCR,EAAKmiF,cAAe,EACpBniF,EAAG/hF,GAAG,gBAAgB,WACpBt/F,EAAO,IAAI8L,MAAM,yBAEnBu1K,EAAG+8E,cAAc,CAAEp1P,QAAS,EAAKA,UAC9BtI,MAAK,WACJ2gL,EAAG/hF,GAAG,WAAW,SAAC/+F,EAAO4kC,GACvB,GAAI5kC,EAEF,OADA,EAAKijQ,cAAe,EACbxjQ,EAAOO,GAEhB,EAAKijQ,cAAe,EACpB,EAAK73B,WAAY,EACbxmM,GAEF,EAAKu+N,YAAYv+N,EAAQnoB,OAAO,IAGlC,EAAKtQ,KAAK,WACV,EAAKi3P,eAAetiF,GACpBthL,EAAQshL,SAGXvqH,OAAM,YACL,EAAK0sM,cAAe,EACpBxjQ,EAAOO,+EAYjB,2GACmB,KAAKsiQ,qBADxB,QACQxhF,EADR,QAEK/hF,GAAG,cAAc,YACd/+F,EACF,EAAKmM,KAAK,QAASnM,GAGrB,EAAK4iQ,kBAEP9hF,EAAG/hF,GAAG,kBAAkB,SAAC/+F,EAAO4kC,GAC1B5kC,EACF,EAAKmM,KAAK,QAASnM,GAIrB,EAAKmjQ,YAAYv+N,EAAQnoB,OAAO,OAfpC,6JAmBA,8FAEQ,KAAK+xH,OAFb,OAGE,KAAKriI,KAAK,QAAS,IAAM,qBACzB,KAAKA,KAAK,aAAc,IAAM,2BAC9B,KAAKi/N,WAAY,EALnB,4JAQA,WAAkB4yB,GAAlB,6EACUnqJ,EAAyCmqJ,EAAzCnqJ,SAAUprG,EAA+Bu1P,EAA/Bv1P,QAASuC,EAAsBgzP,EAAtBhzP,UAAWisP,EAAW+G,EAAX/G,SAEjC,KAAKpjJ,UAAaA,GAAY,KAAKA,WAAaA,KACnD,KAAKA,SAAWA,EAChB,KAAK1nG,KAAK,kBAAmB0nG,MAG1B,KAAKprG,SAAYA,GAAW,KAAKA,UAAYA,KAChD,KAAKA,QAAUA,EACf,KAAK0D,KAAK,eAAgB1D,MAGvB,KAAKuC,WAAcA,GAAa,KAAKA,YAAcA,KACtD,KAAKA,UAAYA,EACjB,KAAKmB,KAAK,iBAAkBnB,IAG9B,KAAKq4P,aAAa,KAAK56P,QAASwuP,GAAU,IAlB5C,iIAqBA,SAAaxuP,GAAgD,IAA/BwuP,EAA+B,uDAAF,GACnDh5H,EAAM,CAAEk5H,SAAU,KAAKA,SAAUpsP,OAAQ,KAAKkzH,UAAOv9H,IAC3Du2P,EAASA,GAAUD,GAAUvuP,EAASw1H,KAEpC,KAAKg5H,OAASA,EACd,KAAKqM,wBAEL,KAAKn3P,KAAK,QAAS,IAAIZ,MAAJ,4CAA+C9C,yCAItE,WAAoB,WACd,KAAKwuP,SACP,KAAKtgI,KAAO,IAAI4sI,GAAe,KAAKtM,QACpC,KAAKtgI,KAAK53B,GAAG,WAAW,YAAO,OAAI,EAAK5yF,KAAK,UAAWy4B,MACxD,KAAK+xF,KAAK53B,GAAG,SAAS,YAAK,OAAI,EAAK5yF,KAAK,QAASnM,uCAItD,SAAiBssD,EAAgB7vC,GAAW,WAC1C,OAAO,IAAIvc,SAAQ,SAACV,EAASC,GAC3B,EAAK2hG,UACH,CACErgD,GAAI81M,KACJ31J,QAAS,MACT50C,OAAAA,EACA7vC,OAAQA,GAAU,KAEpB,SAACzc,EAAYq1G,GACPr1G,EACFP,EAAOO,GAGTR,EAAQ61G,EAAS1xG,wCAMjB,WAAU,WAChB,KAAK0/P,aAAa,KAAK56P,SACvB,KAAKs3O,YACH,IAAIkiB,GAAmB,CACrBuB,aAAc,OACdC,YAAY,EACZC,aAAa,EACbC,eAAe,EACfC,mBAAkB,qCAGtB,KAAK7jB,YAAY,IAAIiiB,IACrB,KAAKjiB,YAAY,IAAIc,IACrB,KAAKd,YAAY,IAAImiB,IACrB,KAAKniB,YAAY,IAAIoiB,IACrB,KAAKpiB,YAAY,IAAIuB,GAAwB,KAAKuiB,iBAClD,KAAK9jB,YAAY,CACfU,cAAa,6BAAE,WAAO77M,EAA0BvhC,EAAWuoB,GAA5C,oGAEqB,EAAK60N,cAAc77M,GAFxC,gBAEH5kC,EAFG,EAEHA,MAAO2D,EAFJ,EAEIA,OACfioB,EAAI5rB,EAAO2D,GAHA,gDAKXioB,EAAG,MALQ,yDAAF,0DAQbo0N,UAAW,SAACxnN,GAAD,OAAYA,iCAInB,WAAY,WAClB,MAAO,CACLgpN,YAAW,6BAAE,WAAOr6L,GAAP,kGAEQ,EAAKm7M,qBAFb,OAEHxhF,EAFG,QAGHjtE,EAAWitE,EAAGjtE,WACJA,EAASh1G,OACvBsoD,EAAG,KAAM0sD,GAET1sD,EAAG,IAAI57C,MAAM,2BAPN,gDAUT47C,EAAE,MAVO,yDAAF,sDAaXu6L,eAAc,6BAAE,WAAO3rI,EAA2C5uD,GAAlD,kGAEK,EAAKm7M,qBAFV,cAENxhF,EAFM,gBAGSA,EAAGuhE,YAAY,CAACtsI,EAAU3wG,KAAM2wG,EAAUhlG,OAHnD,OAGNpN,EAHM,OAIZwjD,EAAG,KAAMxjD,GAJG,kDAMZwjD,EAAE,MANU,0DAAF,wDASdw6L,uBAAsB,6BAAE,WAAO5rI,EAA2C5uD,GAAlD,kGAEH,EAAKm7M,qBAFF,cAEdxhF,EAFc,gBAGCA,EAAGwhE,oBAAoB,CAACvsI,EAAUhlG,KAAMglG,EAAU3wG,OAHnD,OAGdzB,EAHc,OAIpBwjD,EAAG,KAAMxjD,GAJW,kDAMpBwjD,EAAE,MANkB,0DAAF,wDAStBi8L,uBAAsB,6BAAE,WAAOL,EAAe57L,GAAtB,kGAEH,EAAKm7M,qBAFF,cAEdxhF,EAFc,gBAGCA,EAAGipD,gBAAgBgZ,GAHpB,OAGdp/O,EAHc,OAIpBwjD,EAAG,KAAMxjD,GAJW,kDAMpBwjD,EAAE,MANkB,0DAAF,wDAStBs6L,mBAAkB,6BAAE,WAAOsB,EAAe57L,GAAtB,kGAEC,EAAKm7M,qBAFN,cAEVxhF,EAFU,gBAGKA,EAAG5sE,gBAAgB6uI,GAHxB,OAGVp/O,EAHU,OAIhBwjD,EAAG,KAAMxjD,GAJO,kDAMhBwjD,EAAE,MANc,0DAAF,wDASlBy6L,oBAAmB,6BAAE,WAAO7rI,EAA2C5uD,GAAlD,kGAEA,EAAKm7M,qBAFL,cAEXxhF,EAFW,gBAGIA,EAAG1pE,cAAc,CAACrB,EAAU3wG,KAAM2wG,EAAUhlG,OAHhD,OAGXpN,EAHW,OAIjBwjD,EAAG,KAAMxjD,GAJQ,kDAMjBwjD,EAAE,MANe,0DAAF,+DAnZnBi7M,CAA8BL,IAgapC,kB8pBlZa+B,GAAcpjN,EAAAA,cAA6C,CACpEqjN,eAAgB,KAChBC,eAAgB,EAChBC,YAAa,kBAAMthO,QAAQxY,KAAK,yBAChC+5O,eAAgB,kBAAMvhO,QAAQxY,KAAK,yBACnCg6O,eAAe,EACfvP,cAAe,GACfwP,aAAc,GAEdC,SAAS,EAETC,YAAa,EACbC,WAAY,EACZC,aAAc,EACdC,mBAAoB,EACpBC,YAAY,WAAD,kBAAE,uGAAY/hO,QAAQxY,KAAK,yBAAzB,2CAAF,kDAAC,GAEZw6O,oBAAqB,GACrBC,cAAe,GACfC,kBAAkB,WAAD,kBAAE,WAAOC,GAAP,0FAA4BniO,QAAQxY,KAAK,yBAAzC,2CAAF,mDAAC,GAClB46O,WAAW,WAAD,kBAAE,WAAO3sO,EAAO4sO,EAAQC,GAAtB,0FAAoCtiO,QAAQxY,KAAK,yBAAjD,2CAAF,uDAAC,KAGT+6O,GAAqD,CACvD,CACIz8P,QAAS,GACT6E,UAAW,UACX63P,OAAQ,MACRC,sBAAuB18P,EAAQ,OAC/B28P,0BAA2B,6CAC3BC,iBAAkB,6CAClBC,aAAc78P,EAAQ,QAG1B,CACID,QAAS,GACT6E,UAAW,UACX63P,OAAQ,EACRE,0BAA2B,6CAC3BD,sBAAuB18P,EAAQ,OAC/B48P,iBAAkB,GAClBC,aAAc78P,EAAQ,SAK9B,SAAS88P,GAAkB/8P,GACvB,IAAIF,EAAQ28P,GAAwBl/P,QAAO,SAACmiB,GAAD,OAAOA,EAAE1f,SAAWA,KAAS,GACxE,OAAOF,EAGX,OAuZA,GAvZkD,SAAC3G,GAC/C,IAAI6jQ,EAAkB,GAEtB,KAA4C5jN,EAAAA,EAAAA,UAAS,IAArD,GAAOmiN,EAAP,KAAuB0B,EAAvB,KACA,KAA4C7jN,EAAAA,EAAAA,YAA5C,GAAO8jN,EAAP,KAAuBC,EAAvB,KACA,KAA0C/jN,EAAAA,EAAAA,WAAS,GAAnD,GAAOsiN,EAAP,KAAsB0B,EAAtB,KACA,KAA0ChkN,EAAAA,EAAAA,UAAS,IAAnD,GAAO+yM,EAAP,KAAsBkR,EAAtB,KACA,KAAwCjkN,EAAAA,EAAAA,UAAS,IAAjD,GAAOuiN,EAAP,KAAqB2B,EAArB,KAGA,KAAoClkN,EAAAA,EAAAA,UAAS,GAA7C,GAAO0iN,EAAP,KACA,GADA,KACA,GAAwC1iN,EAAAA,EAAAA,UAAS,GAAjD,IAAO2iN,EAAP,KACA,GADA,KACA,GAA0C3iN,EAAAA,EAAAA,UAAS,GAAnD,IAAOmkN,EAAP,KAAsBC,EAAtB,KACA,KAAsCpkN,EAAAA,EAAAA,UAAS,GAA/C,GAAOyiN,EAAP,KAAoB4B,EAApB,KAGA,KAA8BrkN,EAAAA,EAAAA,WAAkB,GAAhD,GAAOwiN,EAAP,KAAgB8B,EAAhB,KAGA,KAAsDtkN,EAAAA,EAAAA,UAAkC,IAAxF,GAAO8iN,EAAP,KAA4ByB,EAA5B,KACA,KAA0CvkN,EAAAA,EAAAA,UAA4B,IAAtE,GAAO+iN,EAAP,KAAsByB,EAAtB,KACA,KAAgCxkN,EAAAA,EAAAA,YAAhC,GAAOijN,EAAP,KAAiBwB,EAAjB,KAwCA,SAASC,EAAYxrP,EAAiBy7N,GAClC,GAAqB,GAAjB2tB,GAA2C,MAAlBwB,GAAqC,IAAX5qP,EAAe,CAClE,GAA2B,MAAvB0qP,EAAW1qP,GAAkB,CAE7B,IAAMshO,EAAW,IAAIspB,EAAezwB,IAAIuB,SAASD,EAAKz7N,GACtD0qP,EAAW1qP,GAAWshO,EAG1B,OAAOopB,EAAW1qP,GAEtB,OAAO,KAvE8C,SA0E1CkpP,IA1E0C,iEA0EzD,iHAA2B7pO,EAA3B,+BAA0C,gBAGtC2rO,EAAgB3rO,GAEJ,iBAARA,GACA7R,EAAI,cAAe,4CACnB03E,EAAW,IAAImiK,GAAsB,CACjCnkI,IAAK,CACD,GAAI,qCAERx1H,QAAS,GACTwyP,WAAY,CACR9zP,KAAM,WACN4hD,YAAa,0EACb3lB,IAAK,yBACL6lB,MAAO,CACH,+EAKC,YAAR7uB,IACL7R,EAAI,cAAe,uCACnB03E,EAAY50E,OAAey0M,UAxBnC,SA4BuB7/H,EAASumK,SA5BhC,UA6BIj+O,EAAI,cA7BR,QAgCgB,OAFZoiN,EAAO,IAAIwgB,IAAJ,CAASlrJ,IA9BpB,iCAkCY13E,EAAI,cAAe,wBACnBs9O,GAAiB,GACjBD,EAAkBj7B,GAElBpiN,EAAI,cAAe,4BAtC/B,UAuCgCoiN,EAAKuK,IAAItyH,aAvCzC,WAuCgBn6G,EAvChB,OAwCYi9P,EAAkBj9P,GAGF,KAAZA,EA3ChB,4CA6C0Bw3F,EAAS62B,QAAQ,CACnBxqE,OAAQ,6BACR7vC,OAAQ,CAAC,CAAEhU,QAASkiO,EAAKvlM,MAAMhb,MAAM,QA/C7D,8DAmDqC,OAAb,KAAIlH,MAAmD,QAAlC,2CAAKnS,YAAL,mBAAW01P,oBAAX,eAAyBvjP,MAnDtE,kCAoD8B+8E,EAAS62B,QAAQ,CACnBxqE,OAAQ,0BACR7vC,OAAQ,CACJ,CACInP,UAAW,8BACX7E,QAASkiO,EAAKvlM,MAAMhb,MAAM,IAC1Bs8O,eAAgB,CAAEv/P,KAAM,eAAgBw/P,SAAU,GAAIx/K,OAAQ,OAC9Dy/K,QAAS,CAAC,qCACVC,kBAAmB,CACf,2BA7DxC,QAmEwBx7O,OAAOs7H,SAASmgH,SAnExC,WAyE+BtB,GAAkB/8P,GAzEjD,wBA2EgB8f,EAAI,cAAe,6BA3EnC,2BAgFY03E,EAASlB,GAAG,mBAAmB,SAAU8U,GACrC82H,EAAO,KACP1qI,EAAW,KAEXgkK,EAAY7pO,MAEhB6lE,EAASlB,GAAG,cAAc,SAAC77E,EAAc6B,GACrC4d,QAAQpa,IAAIrF,EAAM6B,GAClBm/O,OAxFhB,kDA4FY37O,EAAI,cAAe,yBA5F/B,kEA1EyD,iCA2K1C27O,IA3K0C,iEA2KzD,8EACI37O,EAAI,iBAAD,oBACHs9O,GAAiB,GACjBC,EAAiB,IACjBxsC,aAAal8K,QAAQ,oBAAqB,IAC1Ck8K,aAAal8K,QAAQ,qBAAsB,IAC3Ck8K,aAAal8K,QAAQ,gBAAiB,IACtCk8K,aAAal8K,QAAQ,WAAY,IACjC/xB,OAAOs7H,SAASmgH,SARpB,4CA3KyD,+BAyL1CC,EAzL0C,oEAyLzD,WAA4BhsP,GAA5B,oEAEQA,EAAQ8M,eAAiB+sO,EAAc/sO,cAF/C,oDAG0B,MAAlB89O,EAHR,gCAI8BA,EAAezwB,IAAIsM,cAJjD,iBAKsB,GAAG35N,eAAiB9M,EAAQ8M,cALlD,iDASIm/O,IAGAC,KACAC,KACAC,KACAC,KAGAruN,YAAW,kBAAMguN,EAAahsP,KAAU,KAlB5C,6CAzLyD,+BA6N1CisP,IA7N0C,oEA6NzD,oFAMQ3pP,EAJmB,CACnB,8CAGerX,QAAO,SAACmiB,GAAD,OAAOA,EAAEN,eAAiB+sO,EAAc/sO,iBAC9DxK,EAAMxe,OAAS,GACfsnQ,GAAW,GARnB,2CA7NyD,kCA+O1Cc,KA/O0C,oEA+OzD,6FACU7jO,EADV,kEAC2EwxN,EAD3E,0BAEsD7uM,MAAM3iB,GAF5D,8BAEkEloB,OAFlE,OAEU0K,EAFV,OAGIwgP,EAAuBxgP,GAH3B,4CA/OyD,+BAqP1CuhP,KArP0C,oEAqPzD,+FACUruN,EAAU0sN,GAAkBxB,GACZ,MAAlB2B,EAFR,wBAGctpB,EAAWkqB,EAAYztN,EAAQwsN,iBAAkBxsN,EAAQysN,cAHvE,SAKsClpB,EAAS/wL,QAAQ+7M,UAAUzS,EAAe97M,EAAQusN,2BAA2BliQ,KAAK,CAAEiC,KAAMwvP,IALhI,cAKY0S,EALZ,gBAMqCjrB,EAAS/wL,QAAQq7M,WAAWxjQ,KAAK,CAAEiC,KAAMwvP,IAN9E,OAMY+R,EANZ,OAOYY,EAAiBD,EAAS,SAAI,GAAMX,GACxCp+O,EAAI,0BAAD,sBAA2C++O,EAA3C,uBAAmEX,EAAnE,6BAAgGY,IACnGtB,EAAiBsB,GATzB,6CArPyD,+BAkQ1CH,KAlQ0C,oEAkQzD,+FACUtuN,EAAU0sN,GAAkBxB,GACZ,MAAlB2B,EAFR,wBAGctpB,EAAWkqB,EAAYztN,EAAQwsN,iBAAkBxsN,EAAQysN,cAHvE,SAKsClpB,EAAS/wL,QAAQk8M,UAAU5S,GAAezxP,KAAK,CAAEiC,KAAMwvP,IAL7F,cAKY0S,EALZ,gBAMqCjrB,EAAS/wL,QAAQq7M,WAAWxjQ,KAAK,CAAEiC,KAAMwvP,IAN9E,OAMY+R,EANZ,OAOYY,EAAiBD,EAAS,SAAI,GAAMX,GACxCp+O,EAAI,mBAAD,sBAAoC++O,EAApC,uBAA4DX,EAA5D,6BAAyFY,IAC5FrB,EAAeqB,GATvB,6CAlQyD,0DA+QzD,yFACUzuN,EAAU0sN,GAAkBxB,GACZ,MAAlB2B,EAFR,uBAGctpB,EAAWkqB,EAAYztN,EAAQwsN,iBAAkBxsN,EAAQysN,cAClD,qEAJrB,SAMclpB,EAAS/wL,QAAQm8M,QAAQ3uN,EAAQusN,0BAF1B,sEAE6Dz+G,KAAK,CAAExhJ,KAAMwvP,IAN/F,uBAOcuS,KAPd,4CA/QyD,+BA0R1CD,KA1R0C,oEA0RzD,mHACUpuN,EAAU0sN,GAAkBxB,GACZ,MAAlB2B,EAFR,iBAGc+B,EAAY,IACZrrB,EAAWkqB,EAAYztN,EAAQusN,0BAA2BvsN,EAAQssN,uBAClEuC,EAAuB,CAAC,OAAQ,YAAa,cAAe,WAAY,UACxEC,EAAwB,CAACF,KAA8B,GAAZA,EAA6B,GAAZA,EAAiBA,KAAiBA,GAC9FG,EAAyB,CAAC,WAAY,WAAY,WAAY,gCAC9DC,EAA0B,EAAC,GAAO,GAAO,GAAM,GAAM,IACrDC,EAA4B,IAG3BzmQ,KAAK,CACRypB,OAAQ,EACR5jB,KAAM,OACNi8G,QAAS,UACT4kJ,QAAS,UACTC,QAAS,EACTC,WAAY,IAAIt2M,KAAK,cACrB4yF,QAAQ,EACR2jH,MAAOT,KACPU,SAAS,EACTC,QAAS,WACTC,aAAa,IAGRxpQ,EAAI,EA1BrB,aA0BwBA,EAAI,GA1B5B,4CA4B4Cu9O,EAAS/wL,QAAQi9M,2BAA2BzpQ,GAAGqE,KAAK,CAAEiC,KAAMwvP,IA5BxG,eA4BoBoT,EA5BpB,iBA6B4C3rB,EAAS/wL,QAAQk9M,2BAA2B1pQ,GAAGqE,KAAK,CAAEiC,KAAMwvP,IA7BxG,eA6BoBqT,EA7BpB,iBA8B2C5rB,EAAS/wL,QAAQm9M,uBAAuB3pQ,GAAGqE,KAAK,CAAEiC,KAAMwvP,IA9BnG,eA8BoB3hC,EA9BpB,iBA+B4CopB,EAAS/wL,QAAQo9M,2BAA2B5pQ,GAAGqE,KAAK,CAAEiC,KAAMwvP,IA/BxG,eA+BoBxxI,EA/BpB,iBAgCiDi5H,EAAS/wL,QAAQq9M,yBAAyB7pQ,EAAG81P,GAAezxP,KAAK,CAAEiC,KAAMwvP,IAhC1H,QAgCoB0T,EAhCpB,OAiCoBnD,EAASrsN,EAAQqsN,OAErB4C,EAAOzmQ,KAAK,CACRypB,OAAQjsB,EACRqI,KAAMwgQ,EAAW7oQ,GACjBskH,QAASA,EAAU+hJ,EACnB6C,QAASA,EAAU7C,EACnB+C,WAAY1T,EAAiBvhC,GAC7Bg1C,QAASA,EAAU9C,EACnB3gH,OAAQ,IAAI5yF,KAAS,IAAIA,KAAKqhK,IAAW7vG,EAAU+hJ,GAAU6C,EAAU7C,EACvEgD,MAAOP,EAAY9oQ,GACnBupQ,QAASR,EAAa/oQ,GACtBspQ,QAASN,EAAahpQ,GACtBwpQ,YAAaA,IA9CjC,mDAkDyB3lO,QAAQ3iC,MAAR,MAlDzB,QA0B+BlB,IA1B/B,wBAqDQunQ,EAAiB0B,GArDzB,4DA1RyD,0DAmVzD,WAA0B3vO,EAAe4sO,GAAzC,8EACUlsN,EAAU0sN,GAAkBxB,GACZ,MAAlB2B,EAFR,uBAGctpB,EAAW,IAAIspB,EAAezwB,IAAIuB,SAAS39L,EAAQssN,sBAAuBtsN,EAAQusN,2BAEpFtlQ,EAAQorP,IAAAA,MAAAA,KAAgB6Z,GAAQvuP,IAAI00O,IAAAA,MAAAA,KAAgB,OACxD5iO,EAAI,aAAD,4BAAoCxoB,IACvCwoB,EAAI,aAAD,6CAAqDu8O,IAPhE,SAQczoB,EAAS/wL,QAAQy5M,WAAW3sO,EAAOw8N,EAAe70P,EAAO+kQ,GAAUl+G,KAAK,CAAExhJ,KAAMwvP,IAR9F,OAUQ77M,WAAU,YAAC,8FACDmuN,KADC,OAEPD,KAFO,2CAGR,MAbX,2CAnVyD,6DA6WzD,WAAiCl4G,GAAjC,iEACQA,IAAQ+1G,GAAYX,GACpB57O,EAAI,oBAAD,+BAA8CwmI,IACjDuqE,aAAal8K,QAAQ,WAAY2xG,GACjCu3G,EAAYv3G,IAEPA,GAAO+1G,GAEZv8O,EAAI,oBAAD,oBAAmCu8O,EAAnC,qDAAwF/1G,EAAxF,MARX,4CA7WyD,sBAyXzD,OAjWA6I,EAAAA,EAAAA,YAAU,WACgB,MAAlB+tG,IACAp9O,EAAI,4BAA6B,qBAGjCo9O,EAAezwB,IAAIsM,cAAcrhP,MAAK,SAAU0zG,GAC5C,IAAIk+G,EAAUl+G,EAAS,GACvBtrF,EAAI,4BAAD,4BAAmDwpM,IAElDA,EAAQlqM,eAAiB+sO,EAAc/sO,gBACvCi+O,EAAiB/zC,GACG,iBAAhBqyC,IACA9qC,aAAal8K,QAAQ,oBAAqB20K,GAC1CuH,aAAal8K,QAAQ,qBAAsBgnN,WAK5D,CAACuB,KAIJ/tG,EAAAA,EAAAA,YAAU,WACe,GAAjBusG,GAA2C,MAAlBwB,GACzBoB,EAAanS,KAElB,CAACA,KAGJh9F,EAAAA,EAAAA,YAAU,WACN,IAAI78I,EAAUu+M,aAAah8K,QAAQ,sBAAwB,GACvDsrN,EAAiBtvC,aAAah8K,QAAQ,uBAAyB,GACnEgpN,EAAYhtC,aAAah8K,QAAQ,aAAe,IAEjC,IAAXviC,GAAiBkpP,EAAY2E,KAClC,KA+TC,UAAC9E,GAAYjuG,SAAb,CACI91J,MAAO,CACHgkQ,eAAgB4B,EAChB3B,eAAgBA,EAChBC,YAAaA,EACbC,eAAgBA,EAChBC,cAAeA,EACfvP,cAAeA,EACfwP,aAAcA,EAEdC,QAASA,EAETC,YAAaA,EACbC,WAAYA,EACZC,aAAcA,EACdC,mBAAoBuB,EACpBtB,YA1Y6C,4CA4Y7CC,oBAAqBA,EACrBC,cAAeA,EACfG,WA9Y6C,+CA+Y7CF,kBA/Y6C,8CA0XrD,SAwBKjjQ,EAAM4pD,YCxeJ,SAAS,KAetB,OAdA,GAAWvpD,OAAOwP,QAAU,SAAU9P,GACpC,IAAK,IAAI7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CACzC,IAAIoH,EAAS3F,UAAUzB,GAEvB,IAAK,IAAIc,KAAOsG,EACVjE,OAAOR,UAAUoF,eAAe1D,KAAK+C,EAAQtG,KAC/C+B,EAAO/B,GAAOsG,EAAOtG,IAK3B,OAAO+B,GAGF,GAASnB,MAAMH,KAAME,41BCQjBsoQ,IAAoBnoN,EAAAA,EAAAA,eAC/B,UAYWooN,IAAkBpoN,EAAAA,EAAAA,eAC7B,UAYWqoN,IAAeroN,EAAAA,EAAAA,eAAwC,CAClEsoN,OAAQ,KACR1+K,QAAS,KChDJ,SAAS2+K,GAAUnoD,EAAW9oM,GACnC,IAAK8oM,EAAM,MAAM,IAAIv1M,MAAMyM,GAwI7B,SAAgBkxP,GACd95C,EACA+5C,EACAC,QACqB,IADrBA,IAAAA,EAAW,KAEX,IAGI9/M,EAAW+/M,IAFU,kBAAhBF,EAA2BG,GAAUH,GAAeA,GAEvB7/M,UAAY,IAAK8/M,GAEvD,GAAgB,MAAZ9/M,EACF,OAAO,KAGT,IAAIigN,EAAWC,GAAcp6C,IA6E/B,SAA2Bm6C,GACzBA,EAAS7xN,MAAK,SAACr2C,EAAGqsB,GAAJ,OACZrsB,EAAEooQ,QAAU/7O,EAAE+7O,MACV/7O,EAAE+7O,MAAQpoQ,EAAEooQ,MAyCpB,SAAwBpoQ,EAAaqsB,GACnC,IAAIg8O,EACFroQ,EAAExC,SAAW6uB,EAAE7uB,QAAUwC,EAAE6F,MAAM,GAAI,GAAGykG,OAAM,SAAC9oG,EAAG/D,GAAJ,OAAU+D,IAAM6qB,EAAE5uB,MAElE,OAAO4qQ,EAKHroQ,EAAEA,EAAExC,OAAS,GAAK6uB,EAAEA,EAAE7uB,OAAS,GAG/B,EApDE8qQ,CACEtoQ,EAAEuoQ,WAAW/9P,KAAKg3H,SAAAA,GAAD,OAAUA,EAAKgnI,iBAChCn8O,EAAEk8O,WAAW/9P,KAAKg3H,SAAAA,GAAD,OAAUA,EAAKgnI,qBAlFxCC,CAAkBP,GAGlB,IADA,IAAIj/K,EAAU,KACLxrF,EAAI,EAAc,MAAXwrF,GAAmBxrF,EAAIyqQ,EAAS1qQ,SAAUC,EACxDwrF,EAAUy/K,GAAiBR,EAASzqQ,GAAIwqD,GAG1C,OAAOghC,EAgBT,SAASk/K,GACPp6C,EACAm6C,EACAS,EACAC,GA8CA,YA7Ce,IAHfV,IAAAA,EAA0B,SAGX,IAFfS,IAAAA,EAA2B,SAEZ,IADfC,IAAAA,EAAa,IAEb76C,EAAOjpN,SAAQ,SAACspN,EAAOjgN,GACrB,IAAIqzH,EAAkB,CACpBqnI,aAAcz6C,EAAMpmK,MAAQ,GAC5B8gN,eAAuC,IAAxB16C,EAAM06C,cACrBN,cAAer6P,EACfigN,MAAAA,GAGE5sF,EAAKqnI,aAAa9qJ,WAAW,OAE7ByjB,EAAKqnI,aAAa9qJ,WAAW6qJ,IAD/BhB,IAAU,GAOVpmI,EAAKqnI,aAAernI,EAAKqnI,aAAahjQ,MAAM+iQ,EAAWprQ,SAGzD,IAAIwqD,EAAO+gN,GAAU,CAACH,EAAYpnI,EAAKqnI,eACnCN,EAAaI,EAAYj9P,OAAO81H,GAKhC4sF,EAAMjkK,UAAYikK,EAAMjkK,SAAS3sD,OAAS,KAE1B,IAAhB4wN,EAAMjgN,OADRy5P,IAAU,GAMVO,GAAc/5C,EAAMjkK,SAAU+9M,EAAUK,EAAYvgN,KAKpC,MAAdomK,EAAMpmK,MAAiBomK,EAAMjgN,QAIjC+5P,EAASjoQ,KAAK,CAAE+nD,KAAAA,EAAMogN,MAAOY,GAAahhN,EAAMomK,EAAMjgN,OAAQo6P,WAAAA,OAGzDL,EAcT,IAAMe,GAAU,SAMVC,GAAW3nQ,SAAAA,GAAD,MAAqB,MAANA,GAE/B,SAASynQ,GAAahhN,EAAc75C,GAClC,IAAI85J,EAAWjgH,EAAKvhC,MAAM,KACtB0iP,EAAelhG,EAASzqK,OAS5B,OARIyqK,EAASp7G,KAAKq8M,MAChBC,IAPiB,GAUfh7P,IACFg7P,GAdoB,GAiBflhG,EACJtjK,QAAQpD,SAAAA,GAAD,OAAQ2nQ,GAAQ3nQ,MACvBmN,QACC,SAAC05P,EAAOgB,GAAR,OACEhB,GACCa,GAAQljQ,KAAKqjQ,GAvBM,EAyBJ,KAAZA,EAvBc,EACC,MAyBrBD,GAmBN,SAAST,GACPW,EACAphN,GAOA,IALA,IAAMsgN,EAAec,EAAfd,WAEFe,EAAgB,GAChBC,EAAkB,IAClBtgL,EAAwB,GACnBxrF,EAAI,EAAGA,EAAI8qQ,EAAW/qQ,SAAUC,EAAG,CAC1C,IAAI+jI,EAAO+mI,EAAW9qQ,GAClB8sB,EAAM9sB,IAAM8qQ,EAAW/qQ,OAAS,EAChCgsQ,EACkB,MAApBD,EACIthN,EACAA,EAASpiD,MAAM0jQ,EAAgB/rQ,SAAW,IAC5Cwe,EAAQytP,GACV,CAAEzhN,KAAMw5E,EAAKqnI,aAAcC,cAAetnI,EAAKsnI,cAAev+O,IAAAA,GAC9Di/O,GAGF,IAAKxtP,EAAO,OAAO,KAEnBpb,OAAOwP,OAAOk5P,EAAettP,EAAMZ,QAEnC,IAAIgzM,EAAQ5sF,EAAK4sF,MAEjBnlI,EAAQhpF,KAAK,CACXmb,OAAQkuP,EACRrhN,SAAU8gN,GAAU,CAACQ,EAAiBvtP,EAAMisC,WAC5CyhN,aAAcC,GACZZ,GAAU,CAACQ,EAAiBvtP,EAAM0tP,gBAEpCt7C,MAAAA,IAGyB,MAAvBpyM,EAAM0tP,eACRH,EAAkBR,GAAU,CAACQ,EAAiBvtP,EAAM0tP,gBAIxD,OAAOzgL,EAwDF,SAASwgL,GAId/9J,EACAzjD,GAEuB,kBAAZyjD,IACTA,EAAU,CAAE1jD,KAAM0jD,EAASo9J,eAAe,EAAOv+O,KAAK,IAGxD,MAwCF,SACEy9B,EACA8gN,EACAv+O,QACoB,IAFpBu+O,IAAAA,GAAgB,QAEI,IADpBv+O,IAAAA,GAAM,GAUN,IAAIq/O,EAAuB,GACvBC,EACF,IACA7hN,EACGtqC,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,sBAAuB,QAC/BA,QAAQ,WAAW,SAACyZ,EAAW2yO,GAE9B,OADAF,EAAW3pQ,KAAK6pQ,GACT,eAGT9hN,EAAKpL,SAAS,MAChBgtN,EAAW3pQ,KAAK,KAChB4pQ,GACW,MAAT7hN,GAAyB,OAATA,EACZ,QACA,qBAEN6hN,GAAgBt/O,EACZ,QAOA,uCAKN,MAAO,CAFO,IAAI5O,OAAOkuP,EAAcf,OAAgBzpQ,EAAY,KAElDuqQ,GArFWG,CAC1Br+J,EAAQ1jD,KACR0jD,EAAQo9J,cACRp9J,EAAQnhF,KAHV,SAAKy/O,EAAL,KAAcJ,EAAd,KAMI5tP,EAAQisC,EAASjsC,MAAMguP,GAC3B,IAAKhuP,EAAO,OAAO,KAEnB,IAAIutP,EAAkBvtP,EAAM,GACxB0tP,EAAeH,EAAgB7rP,QAAQ,UAAW,MAClDusP,EAAgBjuP,EAAMnW,MAAM,GAqBhC,MAAO,CACLuV,OArBmBwuP,EAAWl7P,QAC9B,SAACqwD,EAAM+qM,EAAW37P,GAGhB,GAAkB,MAAd27P,EAAmB,CACrB,IAAII,EAAaD,EAAc97P,IAAU,GACzCu7P,EAAeH,EACZ1jQ,MAAM,EAAG0jQ,EAAgB/rQ,OAAS0sQ,EAAW1sQ,QAC7CkgB,QAAQ,UAAW,MAOxB,OAJAqhD,EAAK+qM,GAiEX,SAAkCprQ,EAAeorQ,GAC/C,IACE,OAAOz4K,mBAAmB3yF,GAC1B,MAAOC,GAQP,OAAOD,GA5EayrQ,CAChBF,EAAc97P,IAAU,IAGnB4wD,IAET,IAKA9W,SAAUshN,EACVG,aAAAA,EACAh+J,QAAAA,GA4GJ,SAAgB0+J,GACdC,EACAC,EACAC,GAEA,IAUIxmQ,EAVAiN,EAAsB,kBAAVq5P,EAAqBpC,GAAUoC,GAASA,EACpDG,EAAuB,KAAVH,GAAgC,KAAhBr5P,EAAGi3C,SAAkB,IAAMj3C,EAAGi3C,SAU/D,GAAkB,MAAduiN,EACFzmQ,EAAOwmQ,MACF,CACL,IAAIE,EAAqBH,EAAe9sQ,OAAS,EAEjD,GAAIgtQ,EAAWzsJ,WAAW,MAAO,CAM/B,IALA,IAAI2sJ,EAAaF,EAAW/jP,MAAM,KAKT,OAAlBikP,EAAW,IAChBA,EAAW7xO,QACX4xO,GAAsB,EAGxBz5P,EAAGi3C,SAAWyiN,EAAW3tP,KAAK,KAKhChZ,EAAO0mQ,GAAsB,EAAIH,EAAeG,GAAsB,IAGxE,IAAIziN,EA5EC,SAAqBh3C,EAAQ25P,QAA0B,IAA1BA,IAAAA,EAAe,KACjD,MAIkB,kBAAP35P,EAAkBi3P,GAAUj3P,GAAMA,EAHjCw5P,EADZ,EACEviN,SADF,IAEEiP,OAAAA,OAFF,MAEW,GAFX,MAGEloD,KAAAA,OAHF,MAGS,GAHT,EAMIi5C,EAAWuiN,EACXA,EAAWzsJ,WAAW,KACpBysJ,EAWR,SAAyB3B,EAAsB8B,GAC7C,IAAI1iG,EAAW0iG,EAAajtP,QAAQ,OAAQ,IAAI+I,MAAM,KAYtD,OAXuBoiP,EAAapiP,MAAM,KAEzB3hB,SAASskQ,SAAAA,GACR,OAAZA,EAEEnhG,EAASzqK,OAAS,GAAGyqK,EAASnxH,MACb,MAAZsyN,GACTnhG,EAAShoK,KAAKmpQ,MAIXnhG,EAASzqK,OAAS,EAAIyqK,EAASlrJ,KAAK,KAAO,IAvB5C6tP,CAAgBJ,EAAYG,GAC9BA,EAEJ,MAAO,CACL1iN,SAAAA,EACAiP,OAAQ2zM,GAAgB3zM,GACxBloD,KAAM87P,GAAc97P,IA4DX+7P,CAAY/5P,EAAIjN,GAY3B,OAREymQ,GACe,MAAfA,GACAA,EAAW5tN,SAAS,OACnBoL,EAAKC,SAASrL,SAAS,OAExBoL,EAAKC,UAAY,KAGZD,EAYF,SAASggN,GACd//M,EACA8/M,GAEA,GAAiB,MAAbA,EAAkB,OAAO9/M,EAE7B,IAAKA,EAASzhC,cAAcu3F,WAAWgqJ,EAASvhP,eAC9C,OAAO,KAGT,IAAI/B,EAAWwjC,EAAS8e,OAAOghM,EAASvqQ,QACxC,OAAIinB,GAAyB,MAAbA,EAEP,KAGFwjC,EAASpiD,MAAMkiQ,EAASvqQ,SAAW,IAGrC,IAAMurQ,GAAaz6C,SAAAA,GAAD,OACvBA,EAAMvxM,KAAK,KAAKW,QAAQ,SAAU,MAEvBisP,GAAqB1hN,SAAAA,GAAD,OAC/BA,EAASvqC,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,MAEzCmtP,GAAmB3zM,SAAAA,GAAD,OACrBA,GAAqB,MAAXA,EAEPA,EAAO6mD,WAAW,KAClB7mD,EACA,IAAMA,EAHN,IAKA4zM,GAAiB97P,SAAAA,GAAD,OACnBA,GAAiB,MAATA,EAAoBA,EAAK+uG,WAAW,KAAO/uG,EAAO,IAAMA,EAAzC,ICpkB1B,SAAgBg8P,KACd,OAA4C,OAArC3rN,EAAAA,EAAAA,YAAiBooN,IAa1B,SAAgBwD,KAQd,OANED,MADFpD,IAAU,IAOHvoN,EAAAA,EAAAA,YAAiBooN,IAAiBniH,SAyD3C,SAAgB4lH,KAEZF,MADFpD,IAAU,GAOV,OAA8BvoN,EAAAA,EAAAA,YAAiBmoN,IAAzCO,EAAN,EAAMA,SAAU1uN,EAAhB,EAAgBA,UACV4vC,GAAY5pC,EAAAA,EAAAA,YAAiBqoN,IAA7Bz+K,QACUshL,EAAqBU,KAA/BhjN,SAEFkjN,EAAqBxuP,KAAKE,UAC5BosE,EAAQz+E,KAAKwR,SAAAA,GAAD,OAAWA,EAAM0tP,iBAG3B0B,GAAY/rN,EAAAA,EAAAA,SAAa,IAC7BA,EAAAA,EAAAA,YAAgB,WACd+rN,EAAUpmP,SAAU,KAGtB,IAAIqmP,GAA6BhsN,EAAAA,EAAAA,cAC/B,SAACruC,EAAiBiuB,GAOhB,QAPkD,IAAlCA,IAAAA,EAA2B,IAOtCmsO,EAAUpmP,QAEf,GAAkB,kBAAPhU,EAAX,CAKA,IAAIg3C,EAAOoiN,GACTp5P,EACA2L,KAAKC,MAAMuuP,GACXZ,GAGe,MAAbxC,IACF//M,EAAKC,SAAW8gN,GAAU,CAAChB,EAAU//M,EAAKC,aAGzChpB,EAAQvhB,QAAU27B,EAAU37B,QAAU27B,EAAUp5C,MACjD+nD,EACA/oB,EAAQzhB,YAhBR67B,EAAUglM,GAAGrtO,KAmBjB,CAAC+2P,EAAU1uN,EAAW8xN,EAAoBZ,IAG5C,OAAOc,EAwLF,SAASC,GACdriL,EACAsiL,GAEA,YAD2B,IAD3BA,IAAAA,EAA8B,IAEf,MAAXtiL,EAAwB,KAErBA,EAAQuiL,aAAY,SAAC7D,EAAQ3rP,EAAO7N,GACzC,OACEs9P,EAAAA,EAAAA,eAAC/D,GAAalzG,SAAdi3G,CACEthN,cAC0B9qD,IAAxB2c,EAAMoyM,MAAMpxD,QAAwBhhJ,EAAMoyM,MAAMpxD,QAAU2qG,EAE5DjpQ,MAAO,CACLipQ,OAAAA,EACA1+K,QAASsiL,EAAc7/P,OAAOu9E,EAAQpjF,MAAM,EAAGsI,EAAQ,SAI5D,MC9TL,SAAgBu9P,GAAT,GAA+D,IAA3C16P,EAA2C,EAA3CA,GAAI0M,EAAuC,EAAvCA,QAASF,EAA8B,EAA9BA,MAEpCwtP,MADFpD,IAAU,GAcV,IAAIyD,EAAWH,KAKf,OAJA7rN,EAAAA,EAAAA,YAAgB,WACdgsN,EAASr6P,EAAI,CAAE0M,QAAAA,EAASF,MAAAA,OAGnB,KA+CF,SAASmuP,GACdj3G,GAEAkzG,IAAU,GAyBZ,SAAgBgE,GAAT,GAOoC,QANzC7D,SAAU8D,OAM+B,MANhB,IAMgB,MALzC1hN,SAAAA,OAKyC,MAL9B,KAK8B,EAJ/B2hN,EAI+B,EAJzCxmH,SAIyC,IAHzCymH,eAAAA,OAGyC,MAHxBC,GAAAA,IAGwB,EAFzC3yN,EAEyC,EAFzCA,UAEyC,IADzC4yN,OAAQC,OACiC,SAEtClB,MADHpD,IAAU,GAMV,IAAIG,EAAW4B,GAAkBkC,GAC7BM,GAAoB9sN,EAAAA,EAAAA,UACtB,iBAAO,CAAE0oN,SAAAA,EAAU1uN,UAAAA,EAAW4yN,OAAQC,KACtC,CAACnE,EAAU1uN,EAAW6yN,IAGI,kBAAjBJ,IACTA,EAAe7D,GAAU6D,IAG3B,MAMIA,EANJ,IACE7jN,SAAAA,OADF,MACa,IADb,MAEEiP,OAAAA,OAFF,MAEW,GAFX,MAGEloD,KAAAA,OAHF,MAGS,GAHT,MAIEwO,MAAAA,OAJF,MAIU,KAJV,MAKEjf,IAAAA,OALF,MAKQ,UALR,EAQI+mJ,GAAWjmG,EAAAA,EAAAA,UAAc,WAC3B,IAAI+sN,EAAmBpE,GAAc//M,EAAU8/M,GAE/C,OAAwB,MAApBqE,EACK,KAGF,CACLnkN,SAAUmkN,EACVl1M,OAAAA,EACAloD,KAAAA,EACAwO,MAAAA,EACAjf,IAAAA,KAED,CAACwpQ,EAAU9/M,EAAUiP,EAAQloD,EAAMwO,EAAOjf,IAS7C,OAAgB,MAAZ+mJ,EACK,MAIPmmH,EAAAA,EAAAA,eAACjE,GAAkBhzG,SAAnBi3G,CAA4B/sQ,MAAOytQ,IACjCV,EAAAA,EAAAA,eAAChE,GAAgBjzG,SAAjBi3G,CACEthN,SAAUA,EACVzrD,MAAO,CAAE4mJ,SAAAA,EAAUymH,eAAAA,MAiB3B,SAAgBM,GAAT,GAGoC,IAFzCliN,EAEyC,EAFzCA,SACAm7F,EACyC,EADzCA,SAEA,ODUK,SACLyoE,EACA+5C,GAGEkD,MADFpD,IAAU,GAOV,IA4CItiH,EA5CWimH,GAAkBlsN,EAAAA,EAAAA,YAAiBqoN,IAA5Cz+K,QACFqjL,EAAaf,EAAcA,EAAc/tQ,OAAS,GAClD+uQ,EAAeD,EAAaA,EAAWlxP,OAAS,GAEhDoxP,GADiBF,GAAaA,EAAWrkN,SACpBqkN,EAAaA,EAAW5C,aAAe,KAsC5D+C,GArCcH,GAAcA,EAAWl+C,MAqCjB68C,MAG1B,GAAInD,EAAa,OACX4E,EACqB,kBAAhB5E,EAA2BG,GAAUH,GAAeA,EAGpC,MAAvB0E,IAAA,OAAAA,EACEE,EAAkBzkN,eADpB,EACE0kN,EAA4B5uJ,WAAWyuJ,KAF3C5E,IAAU,GASVtiH,EAAWonH,OAEXpnH,EAAWmnH,EAGb,IAAIxkN,EAAWq9F,EAASr9F,UAAY,IAKhCghC,EAAU4+K,GAAY95C,EAAQ,CAAE9lK,SAHX,MAAvBukN,EACIvkN,EACAA,EAASpiD,MAAM2mQ,EAAmBhvQ,SAAW,MAiBnD,OAAO8tQ,GACLriL,GACEA,EAAQz+E,KAAKwR,SAAAA,GAAD,OACVpb,OAAOwP,OAAO,GAAI4L,EAAO,CACvBZ,OAAQxa,OAAOwP,OAAO,GAAIm8P,EAAcvwP,EAAMZ,QAC9C6sC,SAAU8gN,GAAU,CAACyD,EAAoBxwP,EAAMisC,WAC/CyhN,aACyB,MAAvB1tP,EAAM0tP,aACF8C,EACAzD,GAAU,CAACyD,EAAoBxwP,EAAM0tP,oBAGjD6B,GCrHKqB,CAAUC,GAAyB1iN,GAAWm7F,GAchD,SAASunH,GACd1iN,GAEA,IAAI4jK,EAAwB,GAuC5B,OArCA1uK,EAAAA,SAAAA,QAAuB8K,GAAW6yG,SAAAA,GAChC,IAAK39G,EAAAA,EAAAA,gBAAqB29G,GAM1B,GAAIA,EAAQ9rJ,OAASmuC,EAAAA,SAArB,CAUE29G,EAAQ9rJ,OAASy6P,IADnB/D,IAAU,GAOV,IAAIx5C,EAAqB,CACvB06C,cAAe9rG,EAAQz8J,MAAMuoQ,cAC7B9rG,QAASA,EAAQz8J,MAAMy8J,QACvB7uJ,MAAO6uJ,EAAQz8J,MAAM4N,MACrB65C,KAAMg1G,EAAQz8J,MAAMynD,MAGlBg1G,EAAQz8J,MAAM4pD,WAChBikK,EAAMjkK,SAAW0iN,GAAyB7vG,EAAQz8J,MAAM4pD,WAG1D4jK,EAAO9tN,KAAKmuN,QAzBVL,EAAO9tN,KAAKd,MACV4uN,EACA8+C,GAAyB7vG,EAAQz8J,MAAM4pD,cA0BtC4jK,EClTT,IAkHI++C,GAAc,CAChBzqL,OAAQ,MACR0qL,SAAU,aACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,OAAQ,sNAY/BC,GAAY,CACd5qL,OAAQ,MACR0qL,SAAU,WACVC,KAAM,CAAC,IAAK,IAAK,CAAC,MAAO,OAAQ,gOAsqN/BE,GAAsB,CACxB7qL,OAAQ,MACR0qL,SAAU,uBACVC,KAAM,CAAC,IAAK,IAAK,CAAC,qBAAsB,OAAQ,2fC7yNlD,SAAS3oQ,GAAQC,EAAQC,GACvB,IAAIC,EAAO5D,OAAO4D,KAAKF,GAEvB,GAAI1D,OAAO6D,sBAAuB,CAChC,IAAIC,EAAU9D,OAAO6D,sBAAsBH,GAC3CC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GACpD,OAAOhE,OAAOsC,yBAAyBoB,EAAQM,GAAKnE,eACjD+D,EAAKvE,KAAKd,MAAMqF,EAAME,GAG7B,OAAOF,EAGT,SAAS2oQ,GAAe7sQ,GACtB,IAAK,IAAI7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CACzC,IAAIoH,EAAS,MAAQ3F,UAAUzB,GAAKyB,UAAUzB,GAAK,GACnDA,EAAI,EAAI4G,GAAQzD,OAAOiE,IAAS,GAAIC,SAAQ,SAAUvG,GACpDw4D,GAAgBz2D,EAAQ/B,EAAKsG,EAAOtG,OACjCqC,OAAOmE,0BAA4BnE,OAAOoE,iBAAiB1E,EAAQM,OAAOmE,0BAA0BF,IAAWR,GAAQzD,OAAOiE,IAASC,SAAQ,SAAUvG,GAC5JqC,OAAOC,eAAeP,EAAQ/B,EAAKqC,OAAOsC,yBAAyB2B,EAAQtG,OAI/E,OAAO+B,EAGT,SAAS2E,GAAQvC,GAGf,OAAOuC,GAAU,mBAAqB7D,QAAU,iBAAmBA,OAAOC,SAAW,SAAUqB,GAC7F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAO,mBAAqBtB,QAAUsB,EAAID,cAAgBrB,QAAUsB,IAAQtB,OAAOhB,UAAY,gBAAkBsC,GACvHuC,GAAQvC,GAyDb,SAASrC,GAAkBC,EAAQC,GACjC,IAAK,IAAI9C,EAAI,EAAGA,EAAI8C,EAAM/C,OAAQC,IAAK,CACrC,IAAI+C,EAAaD,EAAM9C,GACvB+C,EAAWC,WAAaD,EAAWC,aAAc,EACjDD,EAAWE,cAAe,EACtB,UAAWF,IAAYA,EAAWG,UAAW,GACjDC,OAAOC,eAAeP,EAAQE,EAAWjC,IAAKiC,IAalD,SAASu2D,GAAgBr0D,EAAKnE,EAAKG,GAYjC,OAXIH,KAAOmE,EACT9B,OAAOC,eAAe6B,EAAKnE,EAAK,CAC9BG,MAAOA,EACP+B,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ+B,EAAInE,GAAOG,EAGNgE,EA8BT,SAASu4D,GAAe39D,EAAKG,GAC3B,OAWF,SAAyBH,GACvB,GAAIK,MAAME,QAAQP,GAAM,OAAOA,EAZxB49D,CAAgB59D,IAmBzB,SAA+BA,EAAKG,GAClC,IAAIuG,EAAY,MAAP1G,EAAc,KAAyB,qBAAX8D,QAA0B9D,EAAI8D,OAAOC,WAAa/D,EAAI,cAE3F,GAAU,MAAN0G,EAAY,OAChB,IAIIC,EAAIvC,EAJJwC,EAAO,GACPC,GAAK,EACLC,GAAK,EAIT,IACE,IAAKJ,EAAKA,EAAGlC,KAAKxE,KAAQ6G,GAAMF,EAAKD,EAAGhC,QAAQpD,QAC9CsF,EAAKjE,KAAKgE,EAAGvF,QAETjB,GAAKyG,EAAK1G,SAAWC,GAH4B0G,GAAK,IAK5D,MAAO/E,GACPgF,GAAK,EACL1C,EAAKtC,EARP,QAUE,IACO+E,GAAsB,MAAhBH,EAAE,QAAoBA,EAAE,SADrC,QAGE,GAAII,EAAI,MAAM1C,GAIlB,OAAOwC,EA9CwBi3D,CAAsB79D,EAAKG,IAAMk1P,GAA4Br1P,EAAKG,IAsEnG,WACE,MAAM,IAAI+B,UAAU,6IAvEmF47D,GAGzG,SAASs4L,GAAmBp2P,GAC1B,OAGF,SAA4BA,GAC1B,GAAIK,MAAME,QAAQP,GAAM,OAAOo1P,GAAkBp1P,GAJ1C8vQ,CAAmB9vQ,IAW5B,SAA0BwG,GACxB,GAAsB,qBAAX1C,QAAmD,MAAzB0C,EAAK1C,OAAOC,WAA2C,MAAtByC,EAAK,cAAuB,OAAOnG,MAAMoG,KAAKD,GAZlFupQ,CAAiB/vQ,IAAQq1P,GAA4Br1P,IA8DzF,WACE,MAAM,IAAIkC,UAAU,wIA/D2E8tQ,GA6CjG,SAAS3a,GAA4B1xP,EAAG2E,GACtC,GAAK3E,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAOyxP,GAAkBzxP,EAAG2E,GACvD,IAAIpE,EAAIZ,OAAOR,UAAUoD,SAAS1B,KAAKb,GAAG4E,MAAM,GAAI,GAEpD,MADU,WAANrE,GAAkBP,EAAEwB,cAAajB,EAAIP,EAAEwB,YAAYqD,MAC7C,QAANtE,GAAqB,QAANA,EAAoB7D,MAAMoG,KAAK9C,GACxC,cAANO,GAAqB,2CAA2CuE,KAAKvE,GAAWkxP,GAAkBzxP,EAAG2E,QAAzG,GAGF,SAAS8sP,GAAkBp1P,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAAKC,EAAKD,GAAKH,EAAIG,GAEnE,OAAOC,EAWT,IAAI80I,GAAO,aAEP+6H,GAAU,GACVC,GAAY,GACZC,GAAqB,KACrBC,GAAe,CACjB9jL,KAAM4oD,GACNm7H,QAASn7H,IAGX,IACwB,qBAAXxoH,SAAwBujP,GAAUvjP,QACrB,qBAAbovB,WAA0Bo0N,GAAYp0N,UACjB,qBAArBw0N,mBAAkCH,GAAqBG,kBACvC,qBAAhBtzD,cAA6BozD,GAAepzD,aACvD,MAAO74M,KAET,IACIosQ,IADON,GAAQl0N,WAAa,IACNH,UACtBA,QAA+B,IAAnB20N,GAA4B,GAAKA,GAC7CrzI,GAAS+yI,GACTO,GAAWN,GACXO,GAAoBN,GACpBO,GAAcN,GAEdO,IADezzI,GAAOphF,WACX00N,GAAS72E,mBAAqB62E,GAAS1nN,MAA6C,oBAA9B0nN,GAASrjL,kBAAqE,oBAA3BqjL,GAASznN,eAC7H6nN,IAASh1N,GAAUz1C,QAAQ,UAAYy1C,GAAUz1C,QAAQ,YAKzD0qQ,GAA4B,iBAC5BC,GAAgB,gBAChBC,GAAyB,yBAEzBC,GAAc,cACdC,GAAY,YACZC,GAA8B,oBAE9BC,GAAsC,CAAC,OAAQ,OAAQ,QAAS,UAChEC,GAAa,WACf,IACE,OAAOl2N,EACP,MAAO/2C,IACP,OAAO,GAJM,GAObktQ,GAAkB,CACpB,IAAO,QACP,WAAY,QACZ,IAAO,UACP,aAAc,UACd,IAAO,QACP,WAAY,QACZ,IAAO,OACP,UAAW,OACX,IAAO,UACP,aAAc,UACd,IAAO,SACP,YAAa,SACb,IAAO,MACP,SAAU,MACV,GAAM,SAEJC,GAAkB,CACpB,MAAS,MACT,QAAW,MACX,MAAS,MACT,KAAQ,MACR,QAAW,MACX,OAAU,MACV,IAAO,OAELC,GAAuB,CACzB,IAAO,YACP,IAAO,aACP,IAAO,SACP,IAAO,WACP,IAAO,aACP,IAAO,WACP,IAAO,WAELC,GAAuB,CACzB,YAAa,MACb,aAAc,MACd,SAAU,MACV,WAAY,MACZ,aAAc,MACd,WAAY,MACZ,UAAW,OAETC,GAAgC,kBAEhCC,GAAwB,iBACxBC,GAAsB,oFAEtBC,GAAwB,CAC1B,IAAO,MACP,IAAO,MACP,OAAU,MACV,IAAO,MACP,IAAO,OAELC,GAAW,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,IACvCC,GAAcD,GAASzjQ,OAAO,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,GAAI,KACnE2jQ,GAAkC,CAAC,QAAS,cAAe,YAAa,oBAAqB,gBAC7FC,GACK,gBADLA,GAEY,eAFZA,GAGO,UAHPA,GAIS,YAETC,GAAmB,GAAG7jQ,OAAOgoP,GAAmB9yP,OAAO4D,KAAKoqQ,KAAmB,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,OAAQ,SAAU,OAAQ,YAAa,SAAU,YAAa,kBAAmB,gBAAiB,OAAQ,KAAM,UAAW,iBAAkB,cAAe,SAAU,KAAM,YAAa,aAAc,QAAS,aAAc,aAAc,YAAa,YAAa,QAAS,aAAc,eAAgB,OAAQ,WAAY,WAAY,QAAS,KAAMU,GAAuBA,GAA8BA,GAAyBA,KAA4B5jQ,OAAOyjQ,GAAS3kQ,KAAI,SAAUhJ,GAC5lB,MAAO,GAAGkK,OAAOlK,EAAG,SAClBkK,OAAO0jQ,GAAY5kQ,KAAI,SAAUhJ,GACnC,MAAO,KAAKkK,OAAOlK,OAGjB4wC,GAAUooF,GAAOg1I,mBAAqB,GAmB1C,GAAI1B,IAA8C,oBAA3BA,GAAS2B,cAA8B,CAChD,CAAC,CAAC,qBAAsB,gBAAiB,CAAC,qBAAsB,gBAAiB,CAAC,yBAA0B,oBAAqB,CAAC,wBAAyB,kBAAmB,CAAC,oBAAqB,cAAe,CAAC,iBAAkB,YAAa,CAAC,8BAA+B,wBAAyB,CAAC,yBAA0B,oBAAqB,CAAC,uBAAwB,kBAAmB,CAAC,4BAA6B,sBAAuB,CAAC,2BAA4B,sBAAuB,CAAC,0BAA2B,qBACnhB3qQ,SAAQ,SAAU0oN,GACtB,IAAIkiD,EAAQz0M,GAAeuyJ,EAAM,GAC7BlmK,EAAOooN,EAAM,GACbnxQ,EAAMmxQ,EAAM,GAEZtmP,EAhBR,SAAgBA,GAGd,MAAY,KAARA,GACQ,UAARA,IACQ,SAARA,GACGA,GAUKxJ,CAxBd,SAAuB0nC,GACrB,IAAI01G,EAAU8wG,GAAS2B,cAAc,UAAYnoN,EAAO,KAExD,GAAI01G,EACF,OAAOA,EAAQ31G,aAAaC,GAoBXqoN,CAAcroN,SAEnBjoD,IAAR+pB,GAA6B,OAARA,IACvBgpB,GAAQ7zC,GAAO6qB,MAKrB,IAeIwmP,GAAUzC,GAAeA,GAAe,GAf7B,CACb0C,aA3H0B,KA4H1BC,aAAc,QACdC,iBAAkB5B,GAClB6B,gBAAgB,EAChBC,YAAY,EACZC,UAAU,EACVC,sBAAsB,EACtBC,kBAAkB,EAClBC,eAAgB,QAChBC,oBAAoB,EACpBC,oBAAoB,EACpBC,kBAAkB,IAGuCp+N,IAEtDw9N,GAAQI,iBAAgBJ,GAAQQ,kBAAmB,GACxD,IAAIvgM,GAAS,GACbjvE,OAAO4D,KAAKorQ,IAAS9qQ,SAAQ,SAAUvG,GACrCqC,OAAOC,eAAegvE,GAAQtxE,EAAK,CACjCkC,YAAY,EACZ4F,IAAK,SAAa+iB,GAChBwmP,GAAQrxQ,GAAO6qB,EAEfqnP,GAAY3rQ,SAAQ,SAAUghD,GAC5B,OAAOA,EAAG+pB,QAGdhtE,IAAK,WACH,OAAO+sQ,GAAQrxQ,SAIrBi8H,GAAOg1I,kBAAoB3/L,GAC3B,IAAI4gM,GAAc,GASlB,IAAI7iO,GAvKgB,GAwKhB8iO,GAAuB,CACzB9tP,KAAM,GACNkE,EAAG,EACH+N,EAAG,EACH87O,OAAQ,EACRC,OAAO,EACPC,OAAO,GA0BT,SAASC,KAIP,IAHA,IAAIluP,EAAO,GACP88B,EAAK,GAEF98B,KAAS,GACd88B,GANS,iEAMoB,GAAhB9sC,KAAKg0F,SAAgB,GAGpC,OAAOlnD,EAET,SAASz0B,GAAQvoB,GAGf,IAFA,IAAIo8B,EAAQ,GAEHrhC,GAAKiF,GAAO,IAAIlF,SAAW,EAAGC,KACrCqhC,EAAMrhC,GAAKiF,EAAIjF,GAGjB,OAAOqhC,EAET,SAASiyO,GAAW3zP,GAClB,OAAIA,EAAK4zP,UACA/lP,GAAQ7N,EAAK4zP,YAEZ5zP,EAAKiqC,aAAa,UAAY,IAAI5gC,MAAM,KAAK9hB,QAAO,SAAUlH,GACpE,OAAOA,KAIb,SAASwzQ,GAAWnsP,GAClB,MAAO,GAAGpZ,OAAOoZ,GAAKpH,QAAQ,KAAM,SAASA,QAAQ,KAAM,UAAUA,QAAQ,KAAM,SAASA,QAAQ,KAAM,QAAQA,QAAQ,KAAM,QAOlI,SAASwzP,GAAWx1C,GAClB,OAAO96N,OAAO4D,KAAKk3N,GAAU,IAAIhtN,QAAO,SAAUC,EAAKwiQ,GACrD,OAAOxiQ,EAAM,GAAGjD,OAAOylQ,EAAW,MAAMzlQ,OAAOgwN,EAAOy1C,GAAW7uN,OAAQ,OACxE,IAEL,SAAS8uN,GAAsBx7O,GAC7B,OAAOA,EAAUhT,OAAS8tP,GAAqB9tP,MAAQgT,EAAU9O,IAAM4pP,GAAqB5pP,GAAK8O,EAAUf,IAAM67O,GAAqB77O,GAAKe,EAAU+6O,SAAWD,GAAqBC,QAAU/6O,EAAUg7O,OAASh7O,EAAUi7O,MAiD9N,SAASQ,KACP,IAAIC,EAnSsB,KAoStBC,EAAMpD,GACNqD,EAAK3hM,GAAOggM,aACZ7wF,EAAKnvG,GAAOkgM,iBACZxuQ,EAPW,m5qBASf,GAAIiwQ,IAAOF,GAAOtyF,IAAOuyF,EAAK,CAC5B,IAAIE,EAAQ,IAAI91P,OAAO,MAAMjQ,OAAO4lQ,EAAK,OAAQ,KAC7CI,EAAiB,IAAI/1P,OAAO,OAAOjQ,OAAO4lQ,EAAK,OAAQ,KACvDK,EAAQ,IAAIh2P,OAAO,MAAMjQ,OAAO6lQ,GAAM,KAC1ChwQ,EAAIA,EAAEmc,QAAQ+zP,EAAO,IAAI/lQ,OAAO8lQ,EAAI,MAAM9zP,QAAQg0P,EAAgB,KAAKhmQ,OAAO8lQ,EAAI,MAAM9zP,QAAQi0P,EAAO,IAAIjmQ,OAAOszK,IAGpH,OAAOz9K,EAGT,IAAIqwQ,IAAe,EAEnB,SAASC,KACHhiM,GAAOogM,aAAe2B,MAvI5B,SAAmBP,GACjB,GAAKA,GAAQpD,GAAb,CAIA,IAAInuN,EAAQguN,GAASznN,cAAc,SACnCvG,EAAMwG,aAAa,OAAQ,YAC3BxG,EAAM8zG,UAAYy9G,EAIlB,IAHA,IAAIS,EAAehE,GAAS1nN,KAAKutG,WAC7Bo+G,EAAc,KAETt0Q,EAAIq0Q,EAAat0Q,OAAS,EAAGC,GAAK,EAAGA,IAAK,CACjD,IAAIogB,EAAQi0P,EAAar0Q,GACrBy5L,GAAWr5K,EAAMq5K,SAAW,IAAItwK,cAEhC,CAAC,QAAS,QAAQnjB,QAAQyzL,IAAY,IACxC66E,EAAcl0P,GAIlBiwP,GAAS1nN,KAAKkqG,aAAaxwG,EAAOiyN,IAoHhCC,CAAUX,MACVO,IAAe,GAInB,IAAIK,GAAY,CACdC,OAAQ,WACN,MAAO,CACLthH,IAAK,CACHygH,IAAKA,GACLW,UAAWH,MAIjBj8G,MAAO,WACL,MAAO,CACLu8G,yBAA0B,WACxBN,MAEFO,YAAa,WACXP,SAMJ3mP,GAAIsvG,IAAU,GACbtvG,GAAC,qBAAwBA,GAAC,mBAAyB,IACnDA,GAAC,mBAAuBwwM,SAAQxwM,GAAC,mBAAuBwwM,OAAS,IACjExwM,GAAC,mBAAuB0qI,QAAO1qI,GAAC,mBAAuB0qI,MAAQ,IAC/D1qI,GAAC,mBAAuBmnP,QAAOnnP,GAAC,mBAAuBmnP,MAAQ,IACpE,IAAIC,GAAYpnP,GAAC,mBAEbqnP,GAAY,GAUZ/hB,IAAS,EAOb,SAASgiB,GAAUzzQ,GACZkvQ,KACLzd,GAAS94M,WAAW34C,EAAI,GAAKwzQ,GAAUtyQ,KAAKlB,IAG9C,SAAS0zQ,GAAOC,GACd,IAAIvrN,EAAMurN,EAAcvrN,IACpBwrN,EAAwBD,EAActrN,WACtCA,OAAuC,IAA1BurN,EAAmC,GAAKA,EACrDC,EAAwBF,EAAcvoN,SACtCA,OAAqC,IAA1ByoN,EAAmC,GAAKA,EAEvD,MAA6B,kBAAlBF,EACFzB,GAAWyB,GAEX,IAAIhnQ,OAAOy7C,EAAK,KAAKz7C,OAlJhC,SAAwB07C,GACtB,OAAOxmD,OAAO4D,KAAK4iD,GAAc,IAAI14C,QAAO,SAAUC,EAAK8kK,GACzD,OAAO9kK,EAAM,GAAGjD,OAAO+nK,EAAe,MAAO/nK,OAAOulQ,GAAW7pN,EAAWqsH,IAAiB,QAC1F,IAAInxH,OA+I8BuwN,CAAezrN,GAAa,KAAK17C,OAAOy+C,EAAS3/C,IAAIioQ,IAAQ11P,KAAK,IAAK,MAAMrR,OAAOy7C,EAAK,KAIhI,SAAS2rN,GAAgBC,EAAS1wL,EAAQ0qL,GACxC,GAAIgG,GAAWA,EAAQ1wL,IAAW0wL,EAAQ1wL,GAAQ0qL,GAChD,MAAO,CACL1qL,OAAQA,EACR0qL,SAAUA,EACVC,KAAM+F,EAAQ1wL,GAAQ0qL,IA7BxBkB,MACFzd,IAAUsd,GAAS72E,gBAAgB+7E,SAAW,aAAe,iBAAiBjtQ,KAAK+nQ,GAAS3oH,cAC/E2oH,GAASrjL,iBAAiB,oBAZ1B,SAASw7B,IACtB6nJ,GAAS3lJ,oBAAoB,mBAAoBlC,GACjDuqI,GAAS,EACT+hB,GAAU/nQ,KAAI,SAAUzL,GACtB,OAAOA,WA6CX,IAmBI2P,GAAS,SAA0BukQ,EAASl0Q,EAAI63J,EAAcs8G,GAChE,IAGIz1Q,EACAc,EACA+D,EALAkC,EAAO5D,OAAO4D,KAAKyuQ,GACnBz1Q,EAASgH,EAAKhH,OACd6D,OAA2BhC,IAAhB6zQ,EAtBG,SAAuB3xP,EAAM2xP,GAC/C,OAAO,SAAUlzQ,EAAGqsB,EAAG1O,EAAGiwB,GACxB,OAAOrsB,EAAKzf,KAAKoxQ,EAAalzQ,EAAGqsB,EAAG1O,EAAGiwB,IAoBEulO,CAAcp0Q,EAAIm0Q,GAAen0Q,EAa5E,SARqBM,IAAjBu3J,GACFn5J,EAAI,EACJ6E,EAAS2wQ,EAAQzuQ,EAAK,MAEtB/G,EAAI,EACJ6E,EAASs0J,GAGJn5J,EAAID,EAAQC,IAEjB6E,EAASjB,EAASiB,EAAQ2wQ,EAD1B10Q,EAAMiG,EAAK/G,IAC6Bc,EAAK00Q,GAG/C,OAAO3wQ,GAqDT,SAASymB,GAAMqqP,GACb,IAAI1vO,EA3BN,SAAoBxZ,GAKlB,IAJA,IAAIvG,EAAS,GACTohD,EAAU,EACVvnE,EAAS0sB,EAAO1sB,OAEbunE,EAAUvnE,GAAQ,CACvB,IAAIkB,EAAQwrB,EAAO/E,WAAW4/C,KAE9B,GAAIrmE,GAAS,OAAUA,GAAS,OAAUqmE,EAAUvnE,EAAQ,CAC1D,IAAI64H,EAAQnsG,EAAO/E,WAAW4/C,KAEN,QAAX,MAARsxD,GAEH1yG,EAAO1jB,OAAe,KAARvB,IAAkB,KAAe,KAAR23H,GAAiB,QAExD1yG,EAAO1jB,KAAKvB,GACZqmE,UAGFphD,EAAO1jB,KAAKvB,GAIhB,OAAOilB,EAIOyyG,CAAWg9I,GACzB,OAA0B,IAAnB1vO,EAAQlmC,OAAekmC,EAAQ,GAAGlgC,SAAS,IAAM,KAkB1D,SAAS6vQ,GAAezrN,GACtB,OAAOhnD,OAAO4D,KAAKojD,GAAOl5C,QAAO,SAAUC,EAAKo+P,GAC9C,IAAIC,EAAOplN,EAAMmlN,GASjB,QARiBC,EAAKA,KAGpBr+P,EAAIq+P,EAAKD,UAAYC,EAAKA,KAE1Br+P,EAAIo+P,GAAYC,EAGXr+P,IACN,IAGL,SAAS2kQ,GAAYjxL,EAAQz6B,GAC3B,IAAIxsC,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7Eq0Q,EAAoBn4P,EAAOo4P,UAC3BA,OAAkC,IAAtBD,GAAuCA,EACnD52G,EAAa02G,GAAezrN,GAEO,oBAA5B0qN,GAAU18G,MAAM69G,SAA2BD,EAGpDlB,GAAU52C,OAAOr5I,GAAU8qL,GAAeA,GAAe,GAAImF,GAAU52C,OAAOr5I,IAAW,IAAKs6E,GAF9F21G,GAAU18G,MAAM69G,QAAQpxL,EAAQgxL,GAAezrN,IAYlC,QAAXy6B,GACFixL,GAAY,KAAM1rN,GAItB,IAaI8zK,GAAS42C,GAAU52C,OACnB22C,GAAQC,GAAUD,MAClBqB,GAAa9yQ,OAAOwT,OAAOy6P,IAC3B8E,GAAuB,KACvBC,GAAa,GACbC,GAAc,GACdC,GAAa,GACbC,GAAgB,GAChBC,GAAW,GACXC,GAAWrzQ,OAAO4D,KAAKmqQ,IAM3B,SAASuF,GAAYrE,EAAcziN,GACjC,IAAI0b,EAAQ1b,EAAI3mC,MAAM,KAClB47D,EAASvZ,EAAM,GACfikM,EAAWjkM,EAAMjjE,MAAM,GAAGkX,KAAK,KAEnC,OAAIslE,IAAWwtL,GAA6B,KAAb9C,GATjC,SAAoBjnQ,GAClB,OAAQypQ,GAAiB9rQ,QAAQqC,GAQkBi9J,CAAWgqG,GAGrD,KAFAA,EAKX,IA5akBjnN,GA4adquN,GAAQ,WACV,IAAIjrM,EAAS,SAAgBitF,GAC3B,OAAOznJ,GAAOgtN,IAAQ,SAAUz6N,EAAG6+C,EAAOuiC,GAExC,OADAphF,EAAEohF,GAAU3zE,GAAOoxC,EAAOq2G,EAAS,IAC5Bl1J,IACN,KAGL2yQ,GAAa1qM,GAAO,SAAUv6D,EAAKq+P,EAAMD,IACnCC,EAAK,KACPr+P,EAAIq+P,EAAK,IAAMD,GAGbC,EAAK,KACOA,EAAK,GAAGroQ,QAAO,SAAU3E,GACrC,MAAoB,kBAANA,KAER8E,SAAQ,SAAU40G,GACxB/qG,EAAI+qG,EAAMl2G,SAAS,KAAOupQ,KAI9B,OAAOp+P,KAETklQ,GAAc3qM,GAAO,SAAUv6D,EAAKq+P,EAAMD,IACxCp+P,EAAIo+P,GAAYA,EAEZC,EAAK,KACOA,EAAK,GAAGroQ,QAAO,SAAU3E,GACrC,MAAoB,kBAANA,KAER8E,SAAQ,SAAU40G,GACxB/qG,EAAI+qG,GAASqzJ,KAIjB,OAAOp+P,KAETqlQ,GAAW9qM,GAAO,SAAUv6D,EAAKq+P,EAAMD,GACrC,IAAI7/K,EAAU8/K,EAAK,GAKnB,OAJAr+P,EAAIo+P,GAAYA,EAChB7/K,EAAQpoF,SAAQ,SAAU40G,GACxB/qG,EAAI+qG,GAASqzJ,KAERp+P,KAIT,IAAIylQ,EAAa,QAAS14C,IAAU7rJ,GAAOwkM,aACvCC,EAAc5lQ,GAAO2jQ,IAAO,SAAU1jQ,EAAKgrH,GAC7C,IAAI46I,EAAwB56I,EAAK,GAC7Bt3C,EAASs3C,EAAK,GACdozI,EAAWpzI,EAAK,GAoBpB,MAlBe,QAAXt3C,GAAqB+xL,IACvB/xL,EAAS,OAG0B,kBAA1BkyL,IACT5lQ,EAAIlI,MAAM8tQ,GAAyB,CACjClyL,OAAQA,EACR0qL,SAAUA,IAIuB,kBAA1BwH,IACT5lQ,EAAI6lQ,SAASD,EAAsB/wQ,SAAS,KAAO,CACjD6+E,OAAQA,EACR0qL,SAAUA,IAIPp+P,IACN,CACDlI,MAAO,GACP+tQ,SAAU,KAEZV,GAAaQ,EAAY7tQ,MACzBstQ,GAAgBO,EAAYE,SAC5Bb,GAAuBc,GAAmB5kM,GAAOigM,eAMnD,SAAS4E,GAAUryL,EAAQ+wL,GACzB,OAAQQ,GAAWvxL,IAAW,IAAI+wL,GAKpC,SAASuB,GAAQtyL,EAAQq3B,GACvB,OAAQs6J,GAAS3xL,IAAW,IAAIq3B,GAElC,SAASk7J,GAAU9uQ,GACjB,OAAOguQ,GAAWhuQ,IAAS,CACzBu8E,OAAQ,KACR0qL,SAAU,MAcd,SAAS8H,KACP,OAAOlB,GA5hBS7tN,GA6fT,SAAUnoC,GACjBg2P,GAAuBc,GAAmB92P,EAAEmyP,eA7f5CW,GAAYxwQ,KAAK6lD,IA+fnBquN,KAqCA,SAASM,GAAmBK,GAC1B,IACIzyL,EAASusL,GAAgBkG,IAAkBlG,GADnCD,GAAgBmG,IAExBhgI,EAAUggI,KAAiBxC,GAAU52C,OAASo5C,EAAgB,KAClE,OAAOzyL,GAAUyyD,GAAW,KAE9B,SAASigI,GAAiB3gQ,GACxB,IAAIgH,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7E81Q,EAAsB55P,EAAO65P,YAC7BA,OAAsC,IAAxBD,GAAyCA,EACvDE,EAAc,KACdthO,EAAYx/B,EAAO1F,QAAO,SAAUC,EAAKy+C,GAC3C,IAAI2/M,EAAWmH,GAAYrkM,GAAOggM,aAAcziN,GAehD,GAbIsuK,GAAOtuK,IACTA,EAAMsmN,GAAWjnQ,SAAS2gD,GAAO0hN,GAAqB1hN,GAAOA,EAC7D8nN,EAAc9nN,EACdz+C,EAAI0zE,OAASj1B,GACJ6mN,GAASxwQ,QAAQ2pD,IAAQ,GAClC8nN,EAAc9nN,EACdz+C,EAAI0zE,OAASoyL,GAAmBrnN,IACvB2/M,EACTp+P,EAAIo+P,SAAWA,EACN3/M,IAAQyiB,GAAOkgM,kBACxBphQ,EAAI+mN,KAAKz1N,KAAKmtD,IAGX6nN,GAAetmQ,EAAI0zE,QAAU1zE,EAAIo+P,SAAU,CAC9C,IAAIpzI,EAAuB,OAAhBu7I,EAAuBN,GAAUjmQ,EAAIo+P,UAAY,GACxDoI,EAAgBR,GAAQhmQ,EAAI0zE,OAAQ1zE,EAAIo+P,UAExCpzI,EAAKt3C,SACP6yL,EAAc,MAGhBvmQ,EAAIo+P,SAAWpzI,EAAKozI,UAAYoI,GAAiBxmQ,EAAIo+P,SACrDp+P,EAAI0zE,OAASs3C,EAAKt3C,QAAU1zE,EAAI0zE,OAEb,QAAf1zE,EAAI0zE,QAAqBq5I,GAAM,MAAWA,GAAM,KAAY7rJ,GAAOwkM,eAGrE1lQ,EAAI0zE,OAAS,OAIjB,OAAO1zE,IAnDF,CACL0zE,OAAQ,KACR0qL,SAAU,KACVr3C,KAAM,KAyDR,MANyB,OAArB9hL,EAAUyuC,QAAmC,OAAhB6yL,IAG/BthO,EAAUyuC,OAASwyL,MAA4B,OAG1CjhO,EAGT,IAAIwhO,GAAuB,WACzB,SAASA,KAz6BX,SAAyB91Q,EAAUC,GACjC,KAAMD,aAAoBC,GACxB,MAAM,IAAIC,UAAU,qCAw6BpBo1D,CAAgB51D,KAAMo2Q,GAEtBp2Q,KAAKq2Q,YAAc,GA55BvB,IAAsB91Q,EAAauB,EAAYC,EAk9B7C,OAl9BoBxB,EA+5BP61Q,EA/5BoBt0Q,EA+5BX,CAAC,CACrBvC,IAAK,MACLG,MAAO,WAGL,IAFA,IAAImJ,EAAQ7I,KAEH80D,EAAO50D,UAAU1B,OAAQ63Q,EAAc,IAAI13Q,MAAMm2D,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IACtFshN,EAAYthN,GAAQ70D,UAAU60D,GAGhC,IAAIuhN,EAAYD,EAAY3mQ,OAAO1P,KAAKu2Q,iBAAkB,IAC1D30Q,OAAO4D,KAAK8wQ,GAAWxwQ,SAAQ,SAAUvG,GACvCsJ,EAAMwtQ,YAAY92Q,GAAO4uQ,GAAeA,GAAe,GAAItlQ,EAAMwtQ,YAAY92Q,IAAQ,IAAK+2Q,EAAU/2Q,IACpG+0Q,GAAY/0Q,EAAK+2Q,EAAU/2Q,IAC3B,IAAIi3Q,EAAa3G,GAAqBtwQ,GAClCi3Q,GAAYlC,GAAYkC,EAAYF,EAAU/2Q,IAClD41Q,UAGH,CACD51Q,IAAK,QACLG,MAAO,WACLM,KAAKq2Q,YAAc,KAEpB,CACD92Q,IAAK,mBACLG,MAAO,SAA0B42Q,EAAWjkB,GAC1C,IAAI10F,EAAa00F,EAAWhvK,QAAUgvK,EAAW0b,UAAY1b,EAAW2b,KAAO,CAC7E,EAAG3b,GACDA,EAmBJ,OAlBAzwP,OAAO4D,KAAKm4J,GAAYnyJ,KAAI,SAAUjM,GACpC,IAAIk3Q,EAAkB94G,EAAWp+J,GAC7B8jF,EAASozL,EAAgBpzL,OACzB0qL,EAAW0I,EAAgB1I,SAC3BC,EAAOyI,EAAgBzI,KACvB9/K,EAAU8/K,EAAK,GACdsI,EAAUjzL,KAASizL,EAAUjzL,GAAU,IAExC6K,EAAQ1vF,OAAS,GACnB0vF,EAAQpoF,SAAQ,SAAU40G,GACH,kBAAVA,IACT47J,EAAUjzL,GAAQq3B,GAASszJ,MAKjCsI,EAAUjzL,GAAQ0qL,GAAYC,KAEzBsI,KA78BPx0Q,GAAYT,GAAkBd,EAAYa,UAAWU,GACrDC,GAAaV,GAAkBd,EAAawB,GAChDH,OAAOC,eAAetB,EAAa,YAAa,CAC9CoB,UAAU,IA88BLy0Q,EA1DkB,GA6DvBM,GAAW,GACXC,GAAS,GACThsC,GAAY,GACZisC,GAAsBh1Q,OAAO4D,KAAKmlO,IA+CtC,SAASksC,GAAWn+G,EAAMj7D,GACxB,IAAK,IAAI3oC,EAAO50D,UAAU1B,OAAQyB,EAAO,IAAItB,MAAMm2D,EAAO,EAAIA,EAAO,EAAI,GAAIC,EAAO,EAAGA,EAAOD,EAAMC,IAClG90D,EAAK80D,EAAO,GAAK70D,UAAU60D,GAG7B,IAAI+hN,EAAUH,GAAOj+G,IAAS,GAI9B,OAHAo+G,EAAQhxQ,SAAQ,SAAUixQ,GACxBt5K,EAAcs5K,EAAO52Q,MAAM,KAAM,CAACs9F,GAAa/wF,OAAOzM,OAEjDw9F,EAET,SAASu5K,GAAUt+G,GACjB,IAAK,IAAI5hG,EAAQ52D,UAAU1B,OAAQyB,EAAO,IAAItB,MAAMm4D,EAAQ,EAAIA,EAAQ,EAAI,GAAIC,EAAQ,EAAGA,EAAQD,EAAOC,IACxG92D,EAAK82D,EAAQ,GAAK72D,UAAU62D,GAG9B,IAAI+/M,EAAUH,GAAOj+G,IAAS,GAC9Bo+G,EAAQhxQ,SAAQ,SAAUixQ,GACxBA,EAAO52Q,MAAM,KAAMF,MAIvB,SAASg3Q,KACP,IAAIv+G,EAAOx4J,UAAU,GACjBD,EAAOtB,MAAMyC,UAAUyF,MAAM/D,KAAK5C,UAAW,GACjD,OAAOyqO,GAAUjyE,GAAQiyE,GAAUjyE,GAAMv4J,MAAM,KAAMF,QAAQI,EAG/D,SAAS62Q,GAAmBC,GACA,OAAtBA,EAAW9zL,SACb8zL,EAAW9zL,OAAS,OAGtB,IAAI0qL,EAAWoJ,EAAWpJ,SACtB1qL,EAAS8zL,EAAW9zL,QAAUwyL,KAClC,GAAK9H,EAEL,OADAA,EAAW4H,GAAQtyL,EAAQ0qL,IAAaA,EACjC+F,GAAgBsD,GAAQf,YAAahzL,EAAQ0qL,IAAa+F,GAAgBR,GAAU52C,OAAQr5I,EAAQ0qL,GAE7G,IAAIqJ,GAAU,IAAIhB,GAMdxkH,GAAM,CACRylH,MAAO,WACL,IAAIj7P,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAEjF,OAAI+uQ,IACF+H,GAAU,cAAe56P,GACzB66P,GAAa,qBAAsB76P,GAC5B66P,GAAa,QAAS76P,IAEtBvc,QAAQT,OAAO,2CAG1Bk4Q,MAAO,WACL,IAAIl7P,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7Eq3Q,EAAqBn7P,EAAOm7P,oBAEF,IAA1B1mM,GAAOmgM,iBACTngM,GAAOmgM,gBAAiB,GAG1BngM,GAAOugM,kBAAmB,EAC1BoC,IAAS,WACPgE,GAAY,CACVD,mBAAoBA,IAEtBP,GAAU,QAAS56P,QAIrBwB,GAAQ,CACVowP,KAAM,SAAcyJ,GAClB,GAAc,OAAVA,EACF,OAAO,KAGT,GAAuB,WAAnBxxQ,GAAQwxQ,IAAuBA,EAAMp0L,QAAUo0L,EAAM1J,SACvD,MAAO,CACL1qL,OAAQo0L,EAAMp0L,OACd0qL,SAAU4H,GAAQ8B,EAAMp0L,OAAQo0L,EAAM1J,WAAa0J,EAAM1J,UAI7D,GAAIpvQ,MAAME,QAAQ44Q,IAA2B,IAAjBA,EAAMj5Q,OAAc,CAC9C,IAAIuvQ,EAAuC,IAA5B0J,EAAM,GAAGhzQ,QAAQ,OAAegzQ,EAAM,GAAG5wQ,MAAM,GAAK4wQ,EAAM,GACrEp0L,EAASoyL,GAAmBgC,EAAM,IACtC,MAAO,CACLp0L,OAAQA,EACR0qL,SAAU4H,GAAQtyL,EAAQ0qL,IAAaA,GAI3C,GAAqB,kBAAV0J,IAAuBA,EAAMhzQ,QAAQ,GAAGiI,OAAOmkE,GAAOggM,aAAc,OAAS,GAAK4G,EAAMz6P,MAAM+yP,KAAiC,CACxI,IAAI2H,EAAgB3B,GAAiB0B,EAAMhwP,MAAM,KAAM,CACrDwuP,aAAa,IAEf,MAAO,CACL5yL,OAAQq0L,EAAcr0L,QAAUwyL,KAChC9H,SAAU4H,GAAQ+B,EAAcr0L,OAAQq0L,EAAc3J,WAAa2J,EAAc3J,UAIrF,GAAqB,kBAAV0J,EAAoB,CAC7B,IAAIE,EAAU9B,KAEd,MAAO,CACLxyL,OAAQs0L,EACR5J,SAAU4H,GAAQgC,EAASF,IAAUA,MAKzCG,GAAM,CACRC,OA7EW,WACXhnM,GAAOmgM,gBAAiB,EACxBngM,GAAOugM,kBAAmB,EAC1B4F,GAAU,WA2EVnmM,OAAQA,GACR+gF,IAAKA,GACLh0I,MAAOA,GACPw5P,QAASA,GACTF,mBAAoBA,GACpBzD,OAAQA,IAGN+D,GAAc,WAChB,IAAIp7P,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7E43Q,EAAwB17P,EAAOm7P,mBAC/BA,OAA+C,IAA1BO,EAAmChJ,GAAWgJ,GAClEl2Q,OAAO4D,KAAK8tQ,GAAU52C,QAAQl+N,OAAS,GAAKqyE,GAAOwkM,eAAiBpG,IAAUp+L,GAAOmgM,gBAAgB4G,GAAIhmH,IAAIylH,MAAM,CACtHj5P,KAAMm5P,KAIV,SAASQ,GAAY3tP,EAAK4tP,GAmBxB,OAlBAp2Q,OAAOC,eAAeuoB,EAAK,WAAY,CACrCvmB,IAAKm0Q,IAEPp2Q,OAAOC,eAAeuoB,EAAK,OAAQ,CACjCvmB,IAAK,WACH,OAAOumB,EAAI6tP,SAASzsQ,KAAI,SAAUxK,GAChC,OAAOyyQ,GAAOzyQ,SAIpBY,OAAOC,eAAeuoB,EAAK,OAAQ,CACjCvmB,IAAK,WACH,GAAKorQ,GAAL,CACA,IAAItzG,EAAYmzG,GAASznN,cAAc,OAEvC,OADAs0G,EAAU/G,UAAYxqI,EAAI8tP,KACnBv8G,EAAUxwG,aAGd/gC,EAoDT,SAAS+tP,GAAsB/7P,GAC7B,IAAIg8P,EAAgBh8P,EAAOwsC,MACvB6yL,EAAO28B,EAAc38B,KACrBt3N,EAAOi0P,EAAcj0P,KACrBk/D,EAASjnE,EAAOinE,OAChB0qL,EAAW3xP,EAAO2xP,SAClBn3O,EAAYxa,EAAOwa,UACnBkwD,EAAS1qE,EAAO0qE,OAChBt+B,EAAQpsC,EAAOosC,MACf6vN,EAASj8P,EAAOi8P,OAChBC,EAAUl8P,EAAOk8P,QACjBjhJ,EAAQj7G,EAAOi7G,MACfkhJ,EAAoBn8P,EAAOo8P,UAC3BA,OAAkC,IAAtBD,GAAuCA,EAEnD/pD,EAAOrqM,EAAKo2D,MAAQp2D,EAAOs3N,EAC3BvsN,EAAQs/L,EAAKt/L,MACb+/I,EAASu/C,EAAKv/C,OAEdwpG,EAA4B,QAAXp1L,EACjBq1L,EAAY,CAAC7nM,GAAOkgM,iBAAkBhD,EAAW,GAAGrhQ,OAAOmkE,GAAOggM,aAAc,KAAKnkQ,OAAOqhQ,GAAY,IAAIpoQ,QAAO,SAAUgZ,GAC/H,OAAqC,IAA9B04G,EAAMshJ,QAAQl0Q,QAAQka,MAC5BhZ,QAAO,SAAUgZ,GAClB,MAAa,KAANA,KAAcA,KACpBjS,OAAO2qH,EAAMshJ,SAAS56P,KAAK,KAC1BwqC,EAAU,CACZ4C,SAAU,GACV/C,WAAY+lN,GAAeA,GAAe,GAAI92I,EAAMjvE,YAAa,GAAI,CACnE,cAAei7B,EACf,YAAa0qL,EACb,MAAS2K,EACT,KAAQrhJ,EAAMjvE,WAAWwwN,MAAQ,MACjC,MAAS,6BACT,QAAW,OAAOlsQ,OAAOwiB,EAAO,KAAKxiB,OAAOuiK,MAG5C4pG,EAAyBJ,KAAoBphJ,EAAMshJ,QAAQl0Q,QAAQ,SAAW,CAChFyqB,MAAO,GAAGxiB,OAAOwiB,EAAQ+/I,EAAS,GAAK,MAAQ,OAC7C,GAEAupG,IACFjwN,EAAQH,WAAWgnN,IAAiB,IAGlC5mN,IACFD,EAAQ4C,SAASlqD,KAAK,CACpBknD,IAAK,QACLC,WAAY,CACV1H,GAAI6H,EAAQH,WAAW,oBAAsB,SAAS17C,OAAO4rQ,GAAWxG,OAE1E3mN,SAAU,CAAC3C,YAEND,EAAQH,WAAWI,OAG5B,IAAIvoD,EAAOkuQ,GAAeA,GAAe,GAAI5lN,GAAU,GAAI,CACzD86B,OAAQA,EACR0qL,SAAUA,EACVtyB,KAAMA,EACNt3N,KAAMA,EACNk0P,OAAQA,EACRzhP,UAAWA,EACXkwD,OAAQA,EACR41I,OAAQyxC,GAAeA,GAAe,GAAI0K,GAAyBxhJ,EAAMqlG,UAGvEg0C,EAAQvsP,EAAKo2D,OAASkhK,EAAKlhK,MAAQ08L,GAAa,uBAAwBh3Q,IAAS,CACnFkrD,SAAU,GACV/C,WAAY,IACV6uN,GAAa,uBAAwBh3Q,IAAS,CAChDkrD,SAAU,GACV/C,WAAY,IAEV+C,EAAWulN,EAAMvlN,SACjB/C,EAAasoN,EAAMtoN,WAKvB,OAHAnoD,EAAKkrD,SAAWA,EAChBlrD,EAAKmoD,WAAaA,EAEd0+B,EArGN,SAAmB0nI,GACjB,IAAInrI,EAASmrI,EAAKnrI,OACd0qL,EAAWv/C,EAAKu/C,SAChB5iN,EAAWqjK,EAAKrjK,SAChB/C,EAAaomK,EAAKpmK,WAClB0+B,EAAS0nI,EAAK1nI,OACdpmC,GAAgB,IAAXomC,EAAkB,GAAGp6E,OAAO22E,EAAQ,KAAK32E,OAAOmkE,GAAOggM,aAAc,KAAKnkQ,OAAOqhQ,GAAYjnL,EACtG,MAAO,CAAC,CACN3+B,IAAK,MACLC,WAAY,CACVtH,MAAO,kBAETqK,SAAU,CAAC,CACThD,IAAK,SACLC,WAAY+lN,GAAeA,GAAe,GAAI/lN,GAAa,GAAI,CAC7D1H,GAAIA,IAENyK,SAAUA,MAqFL2tN,CAAS74Q,GAjIpB,SAAiBuuN,GACf,IAAIrjK,EAAWqjK,EAAKrjK,SAChBswL,EAAOjtB,EAAKitB,KACZt3N,EAAOqqM,EAAKrqM,KACZikC,EAAaomK,EAAKpmK,WAClBs0K,EAASlO,EAAKkO,OACd9lM,EAAY43L,EAAK53L,UAErB,GAAIw7O,GAAsBx7O,IAAc6kN,EAAKlhK,QAAUp2D,EAAKo2D,MAAO,CACjE,IAEIn6D,EAAS,CACX0H,EAHU2zN,EAAKvsN,MACJusN,EAAKxsE,OAEI,EACpBp5I,EAAG,IAELuyB,EAAU,MAAY8pN,GAAW/D,GAAeA,GAAe,GAAIzxC,GAAS,GAAI,CAC9E,mBAAoB,GAAGhwN,OAAO0T,EAAO0H,EAAI8O,EAAU9O,EAAI,GAAI,OAAOpb,OAAO0T,EAAOyV,EAAIe,EAAUf,EAAI,GAAI,SAI1G,MAAO,CAAC,CACNsyB,IAAK,MACLC,WAAYA,EACZ+C,SAAUA,IA4GH4tN,CAAO94Q,GAGlB,SAAS+4Q,GAAuB58P,GAC9B,IAAImsC,EAAUnsC,EAAOmsC,QACjBr5B,EAAQ9S,EAAO8S,MACf+/I,EAAS7yJ,EAAO6yJ,OAChBr4I,EAAYxa,EAAOwa,UACnB4xB,EAAQpsC,EAAOosC,MACf6uE,EAAQj7G,EAAOi7G,MACf4hJ,EAAqB78P,EAAOo8P,UAC5BA,OAAmC,IAAvBS,GAAwCA,EAEpD7wN,EAAa+lN,GAAeA,GAAeA,GAAe,GAAI92I,EAAMjvE,YAAaI,EAAQ,CAC3F,MAASA,GACP,IAAK,GAAI,CACX,MAAS6uE,EAAMshJ,QAAQ56P,KAAK,OAG1By6P,IACFpwN,EAAWgnN,IAAiB,IAG9B,IAAI1yC,EAASyxC,GAAe,GAAI92I,EAAMqlG,QAElC01C,GAAsBx7O,KACxB8lM,EAAM,UA55BV,SAAyBg0C,GACvB,IAAI95O,EAAY85O,EAAM95O,UAClBsiP,EAAcxI,EAAMxhP,MACpBA,OAAwB,IAAhBgqP,EA7QM,GA6QmCA,EACjDC,EAAezI,EAAMzhG,OACrBA,OAA0B,IAAjBkqG,EA/QK,GA+QqCA,EACnDC,EAAsB1I,EAAM2I,cAC5BA,OAAwC,IAAxBD,GAAyCA,EACzDhvP,EAAM,GAYV,OATEA,GADEivP,GAAiBnK,GACZ,aAAaxiQ,OAAOkqB,EAAU9O,EAAI8mB,GAAI1f,EAAQ,EAAG,QAAQxiB,OAAOkqB,EAAUf,EAAI+Y,GAAIqgI,EAAS,EAAG,QAC5FoqG,EACF,yBAAyB3sQ,OAAOkqB,EAAU9O,EAAI8mB,GAAG,qBAAqBliC,OAAOkqB,EAAUf,EAAI+Y,GAAG,SAE9F,aAAaliC,OAAOkqB,EAAU9O,EAAI8mB,GAAG,QAAQliC,OAAOkqB,EAAUf,EAAI+Y,GAAG,QAG9ExkB,GAAO,SAAS1d,OAAOkqB,EAAUhT,KAAOgrB,IAAKhY,EAAUg7O,OAAS,EAAI,GAAI,MAAMllQ,OAAOkqB,EAAUhT,KAAOgrB,IAAKhY,EAAUi7O,OAAS,EAAI,GAAI,MACtIznP,EAAO,UAAU1d,OAAOkqB,EAAU+6O,OAAQ,SAy4BlB2H,CAAgB,CACpC1iP,UAAWA,EACXyiP,eAAe,EACfnqP,MAAOA,EACP+/I,OAAQA,IAEVytD,EAAO,qBAAuBA,EAAM,WAGtC,IAAI68C,EAAcrH,GAAWx1C,GAEzB68C,EAAY/6Q,OAAS,IACvB4pD,EAAU,MAAYmxN,GAGxB,IAAInvP,EAAM,GAiBV,OAhBAA,EAAInpB,KAAK,CACPknD,IAAK,OACLC,WAAYA,EACZ+C,SAAU,CAAC5C,KAGTC,GACFp+B,EAAInpB,KAAK,CACPknD,IAAK,OACLC,WAAY,CACV60G,MAAO,WAET9xG,SAAU,CAAC3C,KAIRp+B,EAET,SAASovP,GAA0Bp9P,GACjC,IAAImsC,EAAUnsC,EAAOmsC,QACjBC,EAAQpsC,EAAOosC,MACf6uE,EAAQj7G,EAAOi7G,MAEfjvE,EAAa+lN,GAAeA,GAAeA,GAAe,GAAI92I,EAAMjvE,YAAaI,EAAQ,CAC3F,MAASA,GACP,IAAK,GAAI,CACX,MAAS6uE,EAAMshJ,QAAQ56P,KAAK,OAG1Bw7P,EAAcrH,GAAW76I,EAAMqlG,QAE/B68C,EAAY/6Q,OAAS,IACvB4pD,EAAU,MAAYmxN,GAGxB,IAAInvP,EAAM,GAiBV,OAhBAA,EAAInpB,KAAK,CACPknD,IAAK,OACLC,WAAYA,EACZ+C,SAAU,CAAC5C,KAGTC,GACFp+B,EAAInpB,KAAK,CACPknD,IAAK,OACLC,WAAY,CACV60G,MAAO,WAET9xG,SAAU,CAAC3C,KAIRp+B,EAGT,IAAIqvP,GAAWnG,GAAU52C,OACzB,SAASg9C,GAAY1L,GACnB,IAAI9+O,EAAQ8+O,EAAK,GACb/+F,EAAS++F,EAAK,GAId2L,EADe19M,GADD+xM,EAAKnnQ,MAAM,GACkB,GACjB,GAoC9B,MAAO,CACL0zE,OAAO,EACPrrD,MAAOA,EACP+/I,OAAQA,EACR++F,KApCErvQ,MAAME,QAAQ86Q,GACN,CACRxxN,IAAK,IACLC,WAAY,CACV60G,MAAO,GAAGvwJ,OAAOmkE,GAAOggM,aAAc,KAAKnkQ,OAAO4jQ,KAEpDnlN,SAAU,CAAC,CACThD,IAAK,OACLC,WAAY,CACV60G,MAAO,GAAGvwJ,OAAOmkE,GAAOggM,aAAc,KAAKnkQ,OAAO4jQ,IAClDhrO,KAAM,eACNsJ,EAAG+qO,EAAW,KAEf,CACDxxN,IAAK,OACLC,WAAY,CACV60G,MAAO,GAAGvwJ,OAAOmkE,GAAOggM,aAAc,KAAKnkQ,OAAO4jQ,IAClDhrO,KAAM,eACNsJ,EAAG+qO,EAAW,OAKV,CACRxxN,IAAK,OACLC,WAAY,CACV9iB,KAAM,eACNsJ,EAAG+qO,KAYX,IAAIC,GAA6B,CAC/Br/L,OAAO,EACPrrD,MAAO,IACP+/I,OAAQ,KASV,SAAS4qG,GAAS9L,EAAU1qL,GAC1B,IAAI6yL,EAAc7yL,EAMlB,MAJe,OAAXA,GAA2C,OAAxBxS,GAAOigM,eAC5BztL,EAASwyL,MAGJ,IAAIh2Q,SAAQ,SAAUV,EAASC,GAK5B63Q,GAAa,uBAGrB,GAAoB,OAAhBf,EAAsB,CACxB,IAAIv7I,EAAOi7I,GAAU7H,IAAa,GAClCA,EAAWpzI,EAAKozI,UAAYA,EAC5B1qL,EAASs3C,EAAKt3C,QAAUA,EAG1B,GAAI0qL,GAAY1qL,GAAUo2L,GAASp2L,IAAWo2L,GAASp2L,GAAQ0qL,GAE7D,OAAO5uQ,EAAQu6Q,GADJD,GAASp2L,GAAQ0qL,MA5BlC,SAA4BA,EAAU1qL,GAC/BqsL,IAAe7+L,GAAO2gM,mBAAoBzD,GAC7CzrO,QAAQ3iC,MAAM,mBAAoB+M,OAAOqhQ,EAAU,kBAAoBrhQ,OAAO22E,EAAQ,kBA8BtFy2L,CAAmB/L,EAAU1qL,GAC7BlkF,EAAQgvQ,GAAeA,GAAe,GAAIyL,IAA6B,GAAI,CACzE5L,KAAMn9L,GAAO2gM,kBAAoBzD,GAAWkJ,GAAa,wBAA+B,SAK9F,IAAI8C,GAAS,aAET3zQ,GAAIyqE,GAAO0gM,oBAAsBvC,IAAeA,GAAYpkL,MAAQokL,GAAYL,QAAUK,GAAc,CAC1GpkL,KAAMmvL,GACNpL,QAASoL,IAEP1nC,GAAW,aASX9mN,GAAM,SAAazkB,GACrBV,GAAEwkF,KAAK,GAAGl+E,OAAO2lO,GAAU,KAAK3lO,OAAO5F,EAAM,UAC7CV,GAAEuoQ,QAAQ,GAAGjiQ,OAAO2lO,GAAU,KAAK3lO,OAAO5F,GAAO,GAAG4F,OAAO2lO,GAAU,KAAK3lO,OAAO5F,EAAM,WAAY,GAAG4F,OAAO2lO,GAAU,KAAK3lO,OAAO5F,EAAM,WAGvIkzQ,GAZQ,SAAelzQ,GAEzB,OADAV,GAAEwkF,KAAK,GAAGl+E,OAAO2lO,GAAU,KAAK3lO,OAAO5F,EAAM,YACtC,WACL,OAAOykB,GAAIzkB,KAcXmzQ,GAAS,aAEb,SAASC,GAAU97P,GAEjB,MAAwB,kBADZA,EAAKiqC,aAAejqC,EAAKiqC,aAAa+mN,IAAiB,MAuBrE,SAAS16G,GAAgBvsG,GACvB,OAAO2mN,GAASp6G,gBAAgB,6BAA8BvsG,GAGhE,SAASd,GAAcc,GACrB,OAAO2mN,GAASznN,cAAcc,GAGhC,SAASgyN,GAAWC,GAClB,IAAIh+P,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7Em6Q,EAAej+P,EAAOk+P,KACtBA,OAAwB,IAAjBD,EAA8C,QAApBD,EAAYjyN,IAAgBusG,GAAkBrtG,GAAgBgzN,EAEnG,GAA2B,kBAAhBD,EACT,OAAOtL,GAASr6G,eAAe2lH,GAGjC,IAAIjyN,EAAMmyN,EAAKF,EAAYjyN,KAC3BvmD,OAAO4D,KAAK40Q,EAAYhyN,YAAc,IAAItiD,SAAQ,SAAUvG,GAC1D4oD,EAAIb,aAAa/nD,EAAK66Q,EAAYhyN,WAAW7oD,OAE/C,IAAI4rD,EAAWivN,EAAYjvN,UAAY,GAMvC,OALAA,EAASrlD,SAAQ,SAAU+Y,GACzBspC,EAAIX,YAAY2yN,GAAWt7P,EAAO,CAChCy7P,KAAMA,QAGHnyN,EAaT,IAAIoyN,GAAW,CACb77P,QAAS,SAAiB87P,GACxB,IAAIp8P,EAAOo8P,EAAS,GAEpB,GAAIp8P,EAAKk7H,WAKP,GAJAkhI,EAAS,GAAG10Q,SAAQ,SAAUmyQ,GAC5B75P,EAAKk7H,WAAWgY,aAAa6oH,GAAWlC,GAAW75P,MAGZ,OAArCA,EAAKiqC,aAAa+mN,KAA2Bv+L,GAAOygM,mBAAoB,CAC1E,IAAImJ,EAAU3L,GAAS4L,cApB/B,SAAuBt8P,GACrB,IAAIq8P,EAAU,IAAI/tQ,OAAO0R,EAAKu8P,UAAW,KAMzC,MAHU,GAAGjuQ,OAAO+tQ,EAAS,iCAgBcG,CAAcx8P,IACnDA,EAAKk7H,WAAWuhI,aAAaJ,EAASr8P,QAEtCA,EAAKwrE,UAIXkxL,KAAM,SAAcN,GAClB,IAAIp8P,EAAOo8P,EAAS,GAChBvC,EAAWuC,EAAS,GAGxB,IAAKzI,GAAW3zP,GAAM3Z,QAAQosE,GAAOkgM,kBACnC,OAAOwJ,GAAS77P,QAAQ87P,GAG1B,IAAIO,EAAS,IAAIp+P,OAAO,GAAGjQ,OAAOmkE,GAAOggM,aAAc,QAGvD,UAFOoH,EAAS,GAAG7vN,WAAW1H,GAE1Bu3N,EAAS,GAAG7vN,WAAW60G,MAAO,CAChC,IAAI+9G,EAAe/C,EAAS,GAAG7vN,WAAW60G,MAAMx1I,MAAM,KAAK/X,QAAO,SAAUC,EAAKy+C,GAO/E,OANIA,IAAQyiB,GAAOkgM,kBAAoB3iN,EAAIpxC,MAAM+9P,GAC/CprQ,EAAIsrQ,MAAMh6Q,KAAKmtD,GAEfz+C,EAAIurQ,OAAOj6Q,KAAKmtD,GAGXz+C,IACN,CACDurQ,OAAQ,GACRD,MAAO,KAEThD,EAAS,GAAG7vN,WAAW60G,MAAQ+9G,EAAaC,MAAMl9P,KAAK,KAEpB,IAA/Bi9P,EAAaE,OAAO18Q,OACtB4f,EAAKg0I,gBAAgB,SAErBh0I,EAAKkpC,aAAa,QAAS0zN,EAAaE,OAAOn9P,KAAK,MAIxD,IAAIo9P,EAAelD,EAASzsQ,KAAI,SAAUxK,GACxC,OAAOyyQ,GAAOzyQ,MACb+c,KAAK,MACRK,EAAKkpC,aAAa8nN,GAAe,IACjChxP,EAAKw2I,UAAYumH,IAIrB,SAASC,GAAqBnnD,GAC5BA,IAGF,SAASonD,GAAQC,EAAWr5M,GAC1B,IAAIs5M,EAAuC,oBAAbt5M,EAA0BA,EAAWg4M,GAEnE,GAAyB,IAArBqB,EAAU98Q,OACZ+8Q,QACK,CACL,IAAIC,EAAQJ,GAn+Cc,UAq+CtBvqM,GAAOwgM,iBACTmK,EAAQhgJ,GAAOy9B,uBAAyBmiH,IAG1CI,GAAM,WACJ,IAAIC,GA5HsB,IAA1B5qM,GAAOmgM,eACFuJ,GAAS77P,QAGJ67P,GAAS1pM,GAAOmgM,iBACZuJ,GAAS77P,QAwHnBksE,EAAOovL,GAAW,UACtBsB,EAAU9vQ,IAAIiwQ,GACd7wL,IACA2wL,QAIN,IAAI9iG,IAAW,EACf,SAASijG,KACPjjG,IAAW,EAEb,SAASkjG,KACPljG,IAAW,EAEb,IAAImjG,GAAK,KACT,SAASC,GAAQ57O,GACf,GAAK8uO,IAIAl+L,GAAOugM,iBAAZ,CAIA,IAAI0K,EAAwB77O,EAAQ87O,aAChCA,OAAyC,IAA1BD,EAAmC7B,GAAS6B,EAC3DE,EAAwB/7O,EAAQg8O,aAChCA,OAAyC,IAA1BD,EAAmC/B,GAAS+B,EAC3DE,EAAwBj8O,EAAQk8O,uBAChCA,OAAmD,IAA1BD,EAAmCjC,GAASiC,EACrEE,EAAwBn8O,EAAQo8O,qBAChCA,OAAiD,IAA1BD,EAAmCtN,GAAWsN,EACzER,GAAK,IAAI7M,IAAkB,SAAUxuO,GACnC,IAAIk4I,GAAJ,CACA,IAAI6jG,EAAgBzG,KACpB5pP,GAAQsU,GAASz6B,SAAQ,SAAUy2Q,GAajC,GAZ4B,cAAxBA,EAAerqQ,MAAwBqqQ,EAAeC,WAAWh+Q,OAAS,IAAM07Q,GAAUqC,EAAeC,WAAW,MAClH3rM,GAAOsgM,sBACTgL,EAAuBI,EAAej7Q,QAGxCy6Q,EAAaQ,EAAej7Q,SAGF,eAAxBi7Q,EAAerqQ,MAAyBqqQ,EAAej7Q,OAAOg4I,YAAczoE,GAAOsgM,sBACrFgL,EAAuBI,EAAej7Q,OAAOg4I,YAGnB,eAAxBijI,EAAerqQ,MAAyBgoQ,GAAUqC,EAAej7Q,UAAY+uQ,GAAgC5rQ,QAAQ83Q,EAAe9nG,eACtI,GAAqC,UAAjC8nG,EAAe9nG,eAzL3B,SAA0Br2J,GACxB,IAAIilE,EAASjlE,EAAKiqC,aAAejqC,EAAKiqC,aAAainN,IAAe,KAC9DtB,EAAO5vP,EAAKiqC,aAAejqC,EAAKiqC,aAAaknN,IAAa,KAC9D,OAAOlsL,GAAU2qL,EAsLqCyO,CAAiBF,EAAej7Q,QAAS,CACvF,IAAIo7Q,EAAoB3G,GAAiBhE,GAAWwK,EAAej7Q,SAC/D+hF,EAASq5L,EAAkBr5L,OAC3B0qL,EAAW2O,EAAkB3O,SAEjCwO,EAAej7Q,OAAOgmD,aAAagoN,GAAajsL,GAAUi5L,GACtDvO,GAAUwO,EAAej7Q,OAAOgmD,aAAaioN,GAAWxB,QAzL7C3vP,EA0LUm+P,EAAej7Q,SAzLjC8c,EAAK4zP,WAAa5zP,EAAK4zP,UAAUpmN,UAAYxtC,EAAK4zP,UAAUpmN,SAASilB,GAAOkgM,mBA0LnFkL,EAAaM,EAAej7Q,QA3LtC,IAAyB8c,SAgMlB6wP,IACL2M,GAAGC,QAAQQ,EAAsB,CAC/BM,WAAW,EACXv0N,YAAY,EACZw0N,eAAe,EACfC,SAAS,KAQb,SAASC,GAAa1+P,GACpB,IAAI0iC,EAAQ1iC,EAAKiqC,aAAa,SAC1Bj+B,EAAM,GAgBV,OAdI02B,IACF12B,EAAM02B,EAAMr5B,MAAM,KAAK/X,QAAO,SAAUC,EAAKmxC,GAC3C,IAAI47K,EAAS57K,EAAMr5B,MAAM,KACrBukC,EAAO0wK,EAAO,GACdh9N,EAAQg9N,EAAO71N,MAAM,GAMzB,OAJImlD,GAAQtsD,EAAMlB,OAAS,IACzBmR,EAAIq8C,GAAQtsD,EAAMqe,KAAK,KAAKulC,QAGvB3zC,IACN,KAGEya,EAGT,SAAS2yP,GAAa3+P,GACpB,IAAI4+P,EAAiB5+P,EAAKiqC,aAAa,eACnC40N,EAAmB7+P,EAAKiqC,aAAa,aACrCd,OAA+BlnD,IAAnB+d,EAAKmpC,UAA0BnpC,EAAKmpC,UAAUjE,OAAS,GACnEl5B,EAAM2rP,GAAiBhE,GAAW3zP,IAWtC,OATKgM,EAAIi5D,SACPj5D,EAAIi5D,OAASwyL,MAGXmH,GAAkBC,IACpB7yP,EAAIi5D,OAAS25L,EACb5yP,EAAI2jP,SAAWkP,GAGb7yP,EAAI2jP,UAAY3jP,EAAIi5D,QAIpBj5D,EAAIi5D,QAAU97B,EAAU/oD,OAAS,IACnC4rB,EAAI2jP,SAr8BR,SAAoB1qL,EAAQ65L,GAC1B,OAAQrI,GAAYxxL,IAAW,IAAI65L,GAo8BlBC,CAAW/yP,EAAIi5D,OAAQjlE,EAAKmpC,YAAcmuN,GAAUtrP,EAAIi5D,OAAQt5D,GAAM3L,EAAKmpC,aAJnFn9B,EAUX,SAASgzP,GAAkBh/P,GACzB,IAAIi/P,EAAkBpxP,GAAQ7N,EAAKgqC,YAAY14C,QAAO,SAAUC,EAAK24C,GAKnE,MAJiB,UAAb34C,EAAI7I,MAAiC,UAAb6I,EAAI7I,OAC9B6I,EAAI24C,EAAKxhD,MAAQwhD,EAAK5oD,OAGjBiQ,IACN,IACC64C,EAAQpqC,EAAKiqC,aAAa,SAC1BiwN,EAAUl6P,EAAKiqC,aAAa,oBAWhC,OATIwoB,GAAOqgM,WACL1oN,EACF60N,EAAgB,mBAAqB,GAAG3wQ,OAAOmkE,GAAOkgM,iBAAkB,WAAWrkQ,OAAO4rQ,GAAWxG,OAErGuL,EAAgB,eAAiB,OACjCA,EAAe,UAAgB,UAI5BA,EAwBT,SAASC,GAAUl/P,GACjB,IAAIm/P,EAASr9Q,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,CAC/E48Q,aAAa,GAGXU,EAAeT,GAAY3+P,GAC3B2vP,EAAWyP,EAAazP,SACxB1qL,EAASm6L,EAAan6L,OACtBo6L,EAAeD,EAAa9mD,KAE5B2mD,EAAkBD,GAAiBh/P,GACnCs/P,EAAa7G,GAAW,sBAAuB,GAAIz4P,GACnDu/P,EAAcJ,EAAOT,YAAcA,GAAY1+P,GAAQ,GAC3D,OAAO+vP,GAAe,CACpBJ,SAAUA,EACVvlN,MAAOpqC,EAAKiqC,aAAa,SACzBiwN,QAASl6P,EAAKiqC,aAAa,oBAC3Bg7B,OAAQA,EACRzsD,UAAW86O,GACXvtP,KAAM,CACJ4pP,SAAU,KACV1qL,OAAQ,KACRqzI,KAAM,IAER2hD,OAAQ,KACRvxL,QAAQ,EACRuwC,MAAO,CACLshJ,QAAS8E,EACT/gD,OAAQihD,EACRv1N,WAAYi1N,IAEbK,GAGL,IAAIE,GAAWtK,GAAU52C,OAEzB,SAASmhD,GAAiBz/P,GACxB,IAAI0/P,EAAqC,SAA1BjtM,GAAOmgM,eAA4BsM,GAAUl/P,EAAM,CAChE0+P,aAAa,IACVQ,GAAUl/P,GAEf,OAAK0/P,EAASzmJ,MAAMshJ,QAAQl0Q,QAAQurQ,IAC3BiH,GAAa,qBAAsB74P,EAAM0/P,GAEzC7G,GAAa,iCAAkC74P,EAAM0/P,GAIhE,SAASC,GAAOt8K,GACd,IAAIx/B,EAAW/hE,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,KACnF,IAAK+uQ,GAAQ,OAAOpvQ,QAAQV,UAC5B,IAAI6+Q,EAAgBlP,GAAS72E,gBAAgB+5E,UAEzCiM,EAAS,SAAgBj1B,GAC3B,OAAOg1B,EAAc1mQ,IAAI,GAAG5K,OAAO8iQ,GAA6B,KAAK9iQ,OAAOs8O,KAG1Ek1B,EAAY,SAAmBl1B,GACjC,OAAOg1B,EAAcp0L,OAAO,GAAGl9E,OAAO8iQ,GAA6B,KAAK9iQ,OAAOs8O,KAG7Em1B,EAAWttM,GAAOwkM,aAAezzQ,OAAO4D,KAAKmqQ,IAAmB/tQ,OAAO4D,KAAKo4Q,IAC5EQ,EAAmB,CAAC,IAAI1xQ,OAAOsjQ,GAAuB,UAAUtjQ,OAAO0iQ,GAAe,OAAO1iQ,OAAOyxQ,EAAS3yQ,KAAI,SAAUpF,GAC7H,MAAO,IAAIsG,OAAOtG,EAAG,UAAUsG,OAAO0iQ,GAAe,UACnDrxP,KAAK,MAET,GAAgC,IAA5BqgQ,EAAiB5/Q,OACnB,OAAOqB,QAAQV,UAGjB,IAAIk/Q,EAAa,GAEjB,IACEA,EAAapyP,GAAQw1E,EAAKgkG,iBAAiB24E,IAC3C,MAAO37Q,KAGT,KAAI47Q,EAAW7/Q,OAAS,GAItB,OAAOqB,QAAQV,UAHf8+Q,EAAO,WACPC,EAAU,YAKZ,IAAItzL,EAAOovL,GAAW,UAClBsB,EAAY+C,EAAW3uQ,QAAO,SAAUC,EAAKyO,GAC/C,IACE,IAAIo8P,EAAWqD,GAAiBz/P,GAE5Bo8P,GACF7qQ,EAAI1O,KAAKu5Q,GAEX,MAAO/3Q,IACFitQ,IACY,gBAAXjtQ,GAAEqE,MACJw7B,QAAQ3iC,MAAM8C,IAKpB,OAAOkN,IACN,IACH,OAAO,IAAI9P,SAAQ,SAAUV,EAASC,GACpCS,QAAQorF,IAAIqwL,GAAWx7Q,MAAK,SAAUw+Q,GACpCjD,GAAQiD,GAAmB,WACzBL,EAAO,UACPA,EAAO,YACPC,EAAU,WACc,oBAAbj8M,GAAyBA,IACpC2oB,IACAzrF,UAED+2D,OAAM,SAAUzzD,GACjBmoF,IACAxrF,EAAOqD,SAKb,SAAS87Q,GAAOngQ,GACd,IAAI6jD,EAAW/hE,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,KACnF29Q,GAAiBz/P,GAAMte,MAAK,SAAU06Q,GAChCA,GACFa,GAAQ,CAACb,GAAWv4M,MAqB1B,IAAImxF,GAAS,SAAgBorH,GAC3B,IAAIpiQ,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7Eu+Q,EAAoBriQ,EAAOwa,UAC3BA,OAAkC,IAAtB6nP,EAA+B/M,GAAuB+M,EAClEC,EAAiBtiQ,EAAO0qE,OACxBA,OAA4B,IAAnB43L,GAAoCA,EAC7CC,EAAeviQ,EAAO+H,KACtBA,OAAwB,IAAjBw6P,EAA0B,KAAOA,EACxCC,EAAiBxiQ,EAAOi8P,OACxBA,OAA4B,IAAnBuG,EAA4B,KAAOA,EAC5CC,EAAgBziQ,EAAOosC,MACvBA,OAA0B,IAAlBq2N,EAA2B,KAAOA,EAC1CC,EAAkB1iQ,EAAOk8P,QACzBA,OAA8B,IAApBwG,EAA6B,KAAOA,EAC9CC,EAAkB3iQ,EAAOu8P,QACzBA,OAA8B,IAApBoG,EAA6B,GAAKA,EAC5CC,EAAqB5iQ,EAAOgsC,WAC5BA,OAAoC,IAAvB42N,EAAgC,GAAKA,EAClDC,EAAiB7iQ,EAAOsgN,OACxBA,OAA4B,IAAnBuiD,EAA4B,GAAKA,EAC9C,GAAKT,EAAL,CACA,IAAIn7L,EAASm7L,EAAen7L,OACxB0qL,EAAWyQ,EAAezQ,SAC1BC,EAAOwQ,EAAexQ,KAC1B,OAAO+J,GAAY5J,GAAe,CAChCj8P,KAAM,QACLssQ,IAAiB,WAelB,OAdAxH,GAAU,2BAA4B,CACpCwH,eAAgBA,EAChBpiQ,OAAQA,IAGNy0D,GAAOqgM,WACL1oN,EACFJ,EAAW,mBAAqB,GAAG17C,OAAOmkE,GAAOkgM,iBAAkB,WAAWrkQ,OAAO4rQ,GAAWxG,OAEhG1pN,EAAW,eAAiB,OAC5BA,EAAU,UAAgB,UAIvB+vN,GAAsB,CAC3BvvN,MAAO,CACL6yL,KAAMi+B,GAAY1L,GAClB7pP,KAAMA,EAAOu1P,GAAYv1P,EAAK6pP,MAAQ,CACpCzzL,OAAO,EACPrrD,MAAO,KACP+/I,OAAQ,KACR++F,KAAM,KAGV3qL,OAAQA,EACR0qL,SAAUA,EACVn3O,UAAWu3O,GAAeA,GAAe,GAAIuD,IAAuB96O,GACpEkwD,OAAQA,EACRt+B,MAAOA,EACP6vN,OAAQA,EACRC,QAASA,EACTjhJ,MAAO,CACLjvE,WAAYA,EACZs0K,OAAQA,EACRi8C,QAASA,UAKbuG,GAAkB,CACpBhM,OAAQ,WACN,MAAO,CACLlF,MArFgBhrQ,EAqFGowJ,GApFhB,SAAU+rH,GACf,IAAI/iQ,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7Es+Q,GAAkBW,GAAuB,IAAInR,KAAOmR,EAAsBjI,GAAmBiI,GAAuB,IACpHh7P,EAAO/H,EAAO+H,KAMlB,OAJIA,IACFA,GAAQA,GAAQ,IAAI6pP,KAAO7pP,EAAO+yP,GAAmB/yP,GAAQ,KAGxDnhB,EAAKw7Q,EAAgBrQ,GAAeA,GAAe,GAAI/xP,GAAS,GAAI,CACzE+H,KAAMA,QAXZ,IAAsBnhB,GAwFpB4zJ,MAAO,WACL,MAAO,CACLwoH,0BAA2B,SAAmC3hL,GAG5D,OAFAA,EAAYs+K,aAAegC,GAC3BtgL,EAAYw+K,aAAesC,GACpB9gL,KAIb4hL,SAAU,SAAkBC,GAC1BA,EAAajI,MAAQ,SAAUj7P,GAC7B,IAAImjQ,EAAenjQ,EAAOgC,KACtBA,OAAwB,IAAjBmhQ,EAA0BzQ,GAAWyQ,EAC5CC,EAAmBpjQ,EAAO6lD,SAE9B,OAAO87M,GAAO3/P,OADsB,IAArBohQ,EAA8B,aAAiBA,IAIhEF,EAAaG,+BAAiC,SAAUrhQ,EAAM0/P,GAC5D,IAAI/P,EAAW+P,EAAS/P,SACpBvlN,EAAQs1N,EAASt1N,MACjB8vN,EAAUwF,EAASxF,QACnBj1L,EAASy6L,EAASz6L,OAClBzsD,EAAYknP,EAASlnP,UACrBkwD,EAASg3L,EAASh3L,OAClB3iE,EAAO25P,EAAS35P,KAChBk0P,EAASyF,EAASzF,OAClBhhJ,EAAQymJ,EAASzmJ,MACrB,OAAO,IAAIx3H,SAAQ,SAAUV,EAASC,GACpCS,QAAQorF,IAAI,CAAC4uL,GAAS9L,EAAU1qL,GAASl/D,EAAK4pP,SAAW8L,GAAS11P,EAAK4pP,SAAU5pP,EAAKk/D,QAAUxjF,QAAQV,QAAQ,CAC9Go7E,OAAO,EACPrrD,MAAO,IACP+/I,OAAQ,IACR++F,KAAM,OACHluQ,MAAK,SAAU0uN,GAClB,IAAIkiD,EAAQz0M,GAAeuyJ,EAAM,GAC7BitB,EAAOi1B,EAAM,GACbvsP,EAAOusP,EAAM,GAEjBvxQ,EAAQ,CAACif,EAAM+5P,GAAsB,CACnCvvN,MAAO,CACL6yL,KAAMA,EACNt3N,KAAMA,GAERk/D,OAAQA,EACR0qL,SAAUA,EACVn3O,UAAWA,EACXkwD,OAAQA,EACRuxL,OAAQA,EACR7vN,MAAOA,EACP8vN,QAASA,EACTjhJ,MAAOA,EACPmhJ,WAAW,SAEZtiN,MAAM92D,OAIbkgR,EAAaI,qBAAuB,SAAUC,GAC5C,IAWIC,EAXAz0N,EAAWw0N,EAAMx0N,SACjB/C,EAAau3N,EAAMv3N,WACnBqzL,EAAOkkC,EAAMlkC,KACb7kN,EAAY+oP,EAAM/oP,UAElB2iP,EAAcrH,GADLyN,EAAMjjD,QAmBnB,OAhBI68C,EAAY/6Q,OAAS,IACvB4pD,EAAU,MAAYmxN,GAKpBnH,GAAsBx7O,KACxBgpP,EAAY3I,GAAa,oCAAqC,CAC5Dx7B,KAAMA,EACN7kN,UAAWA,EACXipP,eAAgBpkC,EAAKvsN,MACrB4wP,UAAWrkC,EAAKvsN,SAIpBi8B,EAASlqD,KAAK2+Q,GAAankC,EAAKuyB,MACzB,CACL7iN,SAAUA,EACV/C,WAAYA,MAMhB23N,GAAS,CACX7M,OAAQ,WACN,MAAO,CACL8M,MAAO,SAAeC,GACpB,IAAI7jQ,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7E6+Q,EAAkB3iQ,EAAOu8P,QACzBA,OAA8B,IAApBoG,EAA6B,GAAKA,EAChD,OAAOhH,GAAY,CACjB7lQ,KAAM,UACL,WACD8kQ,GAAU,2BAA4B,CACpCiJ,UAAWA,EACX7jQ,OAAQA,IAEV,IAAI+uC,EAAW,GAMf,OALA80N,GAAU,SAAUhgR,GAClBtB,MAAME,QAAQoB,GAAQA,EAAKuL,KAAI,SAAUxK,GACvCmqD,EAAWA,EAASz+C,OAAO1L,EAAEi3Q,aAC1B9sN,EAAWA,EAASz+C,OAAOzM,EAAKg4Q,aAEhC,CAAC,CACN9vN,IAAK,OACLC,WAAY,CACV60G,MAAO,CAAC,GAAGvwJ,OAAOmkE,GAAOggM,aAAc,YAAYnkQ,OAAOgoP,GAAmBikB,IAAU56P,KAAK,MAE9FotC,SAAUA,WAQlB+0N,GAAgB,CAClBhN,OAAQ,WACN,MAAO,CACLntM,QAAS,SAAiBxd,GACxB,IAAInsC,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7E2+Q,EAAgBziQ,EAAOosC,MACvBA,OAA0B,IAAlBq2N,EAA2B,KAAOA,EAC1CE,EAAkB3iQ,EAAOu8P,QACzBA,OAA8B,IAApBoG,EAA6B,GAAKA,EAC5CC,EAAqB5iQ,EAAOgsC,WAC5BA,OAAoC,IAAvB42N,EAAgC,GAAKA,EAClDC,EAAiB7iQ,EAAOsgN,OACxBA,OAA4B,IAAnBuiD,EAA4B,GAAKA,EAC9C,OAAOlH,GAAY,CACjB7lQ,KAAM,UACNq2C,QAASA,IACR,WAKD,OAJAyuN,GAAU,2BAA4B,CACpCzuN,QAASA,EACTnsC,OAAQA,IAEHo9P,GAA0B,CAC/BjxN,QAASA,EAAQ/jD,WACjBgkD,MAAOA,EACP6uE,MAAO,CACLjvE,WAAYA,EACZs0K,OAAQA,EACRi8C,QAAS,CAAC,GAAGjsQ,OAAOmkE,GAAOggM,aAAc,oBAAoBnkQ,OAAOgoP,GAAmBikB,cASjGwH,GAAa,CACfjN,OAAQ,WACN,MAAO,CACL7wN,KAAM,SAAckG,GAClB,IAAInsC,EAASlc,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAC7Eu+Q,EAAoBriQ,EAAOwa,UAC3BA,OAAkC,IAAtB6nP,EAA+B/M,GAAuB+M,EAClEI,EAAgBziQ,EAAOosC,MACvBA,OAA0B,IAAlBq2N,EAA2B,KAAOA,EAC1CE,EAAkB3iQ,EAAOu8P,QACzBA,OAA8B,IAApBoG,EAA6B,GAAKA,EAC5CC,EAAqB5iQ,EAAOgsC,WAC5BA,OAAoC,IAAvB42N,EAAgC,GAAKA,EAClDC,EAAiB7iQ,EAAOsgN,OACxBA,OAA4B,IAAnBuiD,EAA4B,GAAKA,EAC9C,OAAOlH,GAAY,CACjB7lQ,KAAM,OACNq2C,QAASA,IACR,WAKD,OAJAyuN,GAAU,2BAA4B,CACpCzuN,QAASA,EACTnsC,OAAQA,IAEH48P,GAAuB,CAC5BzwN,QAASA,EACT3xB,UAAWu3O,GAAeA,GAAe,GAAIuD,IAAuB96O,GACpE4xB,MAAOA,EACP6uE,MAAO,CACLjvE,WAAYA,EACZs0K,OAAQA,EACRi8C,QAAS,CAAC,GAAGjsQ,OAAOmkE,GAAOggM,aAAc,iBAAiBnkQ,OAAOgoP,GAAmBikB,aAOhG0G,SAAU,SAAkBC,GAC1BA,EAAac,mBAAqB,SAAUhiQ,EAAM0/P,GAChD,IAAIt1N,EAAQs1N,EAASt1N,MACjB5xB,EAAYknP,EAASlnP,UACrBygG,EAAQymJ,EAASzmJ,MACjBnoG,EAAQ,KACR+/I,EAAS,KAEb,GAAIigG,GAAO,CACT,IAAImR,EAAmBnjQ,SAASojQ,iBAAiBliQ,GAAMgjC,SAAU,IAC7Dm/N,EAAqBniQ,EAAKoiQ,wBAC9BtxP,EAAQqxP,EAAmBrxP,MAAQmxP,EACnCpxG,EAASsxG,EAAmBtxG,OAASoxG,EAOvC,OAJIxvM,GAAOqgM,WAAa1oN,IACtB6uE,EAAMjvE,WAAW,eAAiB,QAG7BvoD,QAAQV,QAAQ,CAACif,EAAM46P,GAAuB,CACnDzwN,QAASnqC,EAAKw2I,UACd1lI,MAAOA,EACP+/I,OAAQA,EACRr4I,UAAWA,EACX4xB,MAAOA,EACP6uE,MAAOA,EACPmhJ,WAAW,SAMfiI,GAAwB,IAAI9jQ,OAAO,IAAM,MACzC+jQ,GAA0B,CAAC,QAAS,SAYxC,SAASC,GAAmBviQ,EAAMohD,GAChC,IAAIohN,EAAmB,GAAGl0Q,OA/lES,kCA+lE8BA,OAAO8yD,EAAS9gD,QAAQ,IAAK,MAC9F,OAAO,IAAI7e,SAAQ,SAAUV,EAASC,GACpC,GAA4C,OAAxCgf,EAAKiqC,aAAau4N,GAEpB,OAAOzhR,IAGT,IACI0hR,EADW50P,GAAQ7N,EAAK+sC,UACiBxlD,QAAO,SAAUgZ,GAC5D,OAAOA,EAAE0pC,aAAagnN,MAA4B7vM,KACjD,GACCk9J,EAASlhG,GAAO8kJ,iBAAiBliQ,EAAMohD,GACvCshN,EAAapkD,EAAOqkD,iBAAiB,eAAe/jQ,MAAMizP,IAC1D9sN,EAAau5K,EAAOqkD,iBAAiB,eACrCx4N,EAAUm0K,EAAOqkD,iBAAiB,WAEtC,GAAIF,IAAkCC,EAKpC,OADA1iQ,EAAKwoC,YAAYi6N,GACV1hR,IACF,GAAI2hR,GAA0B,SAAZv4N,GAAkC,KAAZA,EAAgB,CAC7D,IAAIy4N,EAAWtkD,EAAOqkD,iBAAiB,WAEnC19L,GAAU,CAAC,QAAS,UAAW,QAAS,OAAQ,UAAW,SAAU,OAAO5+E,QAAQq8Q,EAAW,IAAMlR,GAAgBkR,EAAW,GAAGt5P,eAAiB0oP,GAAsB/sN,GAE1K89N,EAvCV,SAA6B14N,GAC3B,IAAI24N,EAAU34N,EAAQ7pC,QAAQ+hQ,GAAuB,IACjDl6P,EA7mDN,SAAqB2E,EAAQ/b,GAC3B,IAEI8hD,EAFArtC,EAAOsH,EAAO1sB,OACdwyD,EAAQ9lC,EAAO/E,WAAWhX,GAG9B,OAAI6hD,GAAS,OAAUA,GAAS,OAAUptC,EAAOzU,EAAQ,IACvD8hD,EAAS/lC,EAAO/E,WAAWhX,EAAQ,KAErB,OAAU8hD,GAAU,MACN,MAAlBD,EAAQ,OAAkBC,EAAS,MAAS,MAIjDD,EAgmDS8nE,CAAYooJ,EAAS,GACjCC,EAAe56P,GAAam6P,GAAwB,IAAMn6P,GAAam6P,GAAwB,GAC/FU,EAA+B,IAAnBF,EAAQ1iR,QAAe0iR,EAAQ,KAAOA,EAAQ,GAC9D,MAAO,CACLxhR,MAAmBqqB,GAAZq3P,EAAkBF,EAAQ,GAAYA,GAC7CG,YAAaF,GAAgBC,GAgCAE,CAAoBN,GAC3C1wG,EAAW2wG,EAAqBvhR,MAChC2hR,EAAcJ,EAAqBI,YAEnCE,EAAOT,EAAW,GAAG/hK,WAAW,eAChCgvJ,EAAW2H,GAAUryL,EAAQitF,GAC7BkxG,EAAiBzT,EAErB,GAAIwT,EAAM,CACR,IAAIE,EAz9CZ,SAAsBrN,GACpB,IAAIsN,EAAa3M,GAAcX,GAC3BuN,EAAajM,GAAU,MAAOtB,GAClC,OAAOsN,IAAeC,EAAa,CACjCt+L,OAAQ,MACR0qL,SAAU4T,GACR,OAAS,CACXt+L,OAAQ,KACR0qL,SAAU,MAi9CU6T,CAAatxG,GAEzBmxG,EAAU1T,UAAY0T,EAAUp+L,SAClC0qL,EAAW0T,EAAU1T,SACrB1qL,EAASo+L,EAAUp+L,QAMvB,IAAI0qL,GAAasT,GAAiBR,GAAiCA,EAA8Bx4N,aAAainN,MAAiBjsL,GAAUw9L,EAA8Bx4N,aAAaknN,MAAeiS,EAqCjMriR,QArCkN,CAClNif,EAAKkpC,aAAas5N,EAAkBY,GAEhCX,GAEFziQ,EAAKwoC,YAAYi6N,GAGnB,IAAIr+I,EAphBH,CACLurI,SAAU,KACVvlN,MAAO,KACP8vN,QAAS,KACTj1L,OAAQ,KACRzsD,UAAW86O,GACX5qL,QAAQ,EACR3iE,KAAM,CACJ4pP,SAAU,KACV1qL,OAAQ,KACRqzI,KAAM,IAER2hD,OAAQ,KACRhhJ,MAAO,CACLshJ,QAAS,GACTj8C,OAAQ,GACRt0K,WAAY,KAqgBNivE,EAAQmL,EAAKnL,MACjBA,EAAMjvE,WAAWinN,IAA0B7vM,EAC3Cq6M,GAAS9L,EAAU1qL,GAAQvjF,MAAK,SAAU27O,GACxC,IAAIw8B,EAAWE,GAAsBhK,GAAeA,GAAe,GAAI3rI,GAAO,GAAI,CAChF55E,MAAO,CACL6yL,KAAMA,EACNt3N,KAn+CL,CACLk/D,OAAQ,KACR0qL,SAAU,KACVr3C,KAAM,KAk+CErzI,OAAQA,EACR0qL,SAAUyT,EACVnqJ,MAAOA,EACPmhJ,WAAW,KAETx6G,EAAU8wG,GAASznN,cAAc,OAEpB,aAAbmY,EACFphD,EAAKkzI,aAAa0M,EAAS5/I,EAAK+9I,YAEhC/9I,EAAKopC,YAAYw2G,GAGnBA,EAAQ28G,UAAY1C,EAASzsQ,KAAI,SAAUxK,GACzC,OAAOyyQ,GAAOzyQ,MACb+c,KAAK,MACRK,EAAKg0I,gBAAgBwuH,GACrBzhR,OACC+2D,MAAM92D,SAKXD,OAKN,SAASuf,GAAQN,GACf,OAAOve,QAAQorF,IAAI,CAAC01L,GAAmBviQ,EAAM,YAAauiQ,GAAmBviQ,EAAM,aAGrF,SAASyjQ,GAAYzjQ,GACnB,OAAOA,EAAKk7H,aAAel/F,SAASgN,QAAUqoN,GAAoChrQ,QAAQ2Z,EAAK85K,QAAQtwK,iBAAmBxJ,EAAKiqC,aAAagnN,OAA6BjxP,EAAKk7H,YAA0C,QAA5Bl7H,EAAKk7H,WAAW4+C,SAG9M,SAASi5E,GAAqB1vK,GAC5B,GAAKwtK,GACL,OAAO,IAAIpvQ,SAAQ,SAAUV,EAASC,GACpC,IAAI0iR,EAAa71P,GAAQw1E,EAAKgkG,iBAAiB,MAAM9/L,OAAOk8Q,IAAar2Q,IAAIkT,IACzE6M,EAAMyuP,GAAW,wBACrB0B,KACA77Q,QAAQorF,IAAI62L,GAAYhiR,MAAK,WAC3ByrB,IACAowP,KACAx8Q,OACC+2D,OAAM,WACP3qC,IACAowP,KACAv8Q,UAKN,IAqBI2iR,IAAa,EAmCbC,GAAuB,SAA8BC,GASvD,OAAOA,EAAgBz6P,cAAcC,MAAM,KAAK/X,QAAO,SAAUC,EAAKnN,GACpE,IAAIsnE,EAAQtnE,EAAEglB,cAAcC,MAAM,KAC9BupC,EAAQ8Y,EAAM,GACd4sJ,EAAO5sJ,EAAMjjE,MAAM,GAAGkX,KAAK,KAE/B,GAAIizC,GAAkB,MAAT0lK,EAEX,OADA/mN,EAAIiiQ,OAAQ,EACLjiQ,EAGT,GAAIqhD,GAAkB,MAAT0lK,EAEX,OADA/mN,EAAIkiQ,OAAQ,EACLliQ,EAKT,GAFA+mN,EAAOrpG,WAAWqpG,GAEd/5J,MAAM+5J,GACR,OAAO/mN,EAGT,OAAQqhD,GACN,IAAK,OACHrhD,EAAIiU,KAAOjU,EAAIiU,KAAO8yM,EACtB,MAEF,IAAK,SACH/mN,EAAIiU,KAAOjU,EAAIiU,KAAO8yM,EACtB,MAEF,IAAK,OACH/mN,EAAImY,EAAInY,EAAImY,EAAI4uM,EAChB,MAEF,IAAK,QACH/mN,EAAImY,EAAInY,EAAImY,EAAI4uM,EAChB,MAEF,IAAK,KACH/mN,EAAIkmB,EAAIlmB,EAAIkmB,EAAI6gM,EAChB,MAEF,IAAK,OACH/mN,EAAIkmB,EAAIlmB,EAAIkmB,EAAI6gM,EAChB,MAEF,IAAK,SACH/mN,EAAIgiQ,OAAShiQ,EAAIgiQ,OAASj7C,EAI9B,OAAO/mN,IA3DO,CACdiU,KAAM,GACNkE,EAAG,EACH+N,EAAG,EACH+7O,OAAO,EACPC,OAAO,EACPF,OAAQ,KAwDRuQ,GAAkB,CACpBhP,OAAQ,WACN,MAAO,CACLt1P,MAAO,CACLgZ,UAAW,SAAmBqrP,GAC5B,OAAOD,GAAqBC,OAKpCrrH,MAAO,WACL,MAAO,CACLurH,oBAAqB,SAA6B1kL,EAAar/E,GAC7D,IAAI6jQ,EAAkB7jQ,EAAKiqC,aAAa,qBAMxC,OAJI45N,IACFxkL,EAAY7mE,UAAYorP,GAAqBC,IAGxCxkL,KAIb4hL,SAAU,SAAkB10C,GAC1BA,EAAUy3C,kCAAoC,SAAU5zD,GACtD,IAAIitB,EAAOjtB,EAAKitB,KACZ7kN,EAAY43L,EAAK53L,UACjBipP,EAAiBrxD,EAAKqxD,eACtBC,EAAYtxD,EAAKsxD,UACjBxvJ,EAAQ,CACV15F,UAAW,aAAalqB,OAAOmzQ,EAAiB,EAAG,UAEjDwC,EAAiB,aAAa31Q,OAAqB,GAAdkqB,EAAU9O,EAAQ,MAAMpb,OAAqB,GAAdkqB,EAAUf,EAAQ,MACtFysP,EAAa,SAAS51Q,OAAOkqB,EAAUhT,KAAO,IAAMgT,EAAUg7O,OAAS,EAAI,GAAI,MAAMllQ,OAAOkqB,EAAUhT,KAAO,IAAMgT,EAAUi7O,OAAS,EAAI,GAAI,MAC9I0Q,EAAc,UAAU71Q,OAAOkqB,EAAU+6O,OAAQ,SAOjDmQ,EAAa,CACfxxJ,MAAOA,EACPD,MARU,CACVz5F,UAAW,GAAGlqB,OAAO21Q,EAAgB,KAAK31Q,OAAO41Q,EAAY,KAAK51Q,OAAO61Q,IAQzEv5N,KANS,CACTpyB,UAAW,aAAalqB,OAAOozQ,EAAY,GAAK,EAAG,YAOrD,MAAO,CACL33N,IAAK,IACLC,WAAY+lN,GAAe,GAAI2T,EAAWxxJ,OAC1CnlE,SAAU,CAAC,CACThD,IAAK,IACLC,WAAY+lN,GAAe,GAAI2T,EAAWzxJ,OAC1CllE,SAAU,CAAC,CACThD,IAAKszL,EAAKuyB,KAAK7lN,IACfgD,SAAUswL,EAAKuyB,KAAK7iN,SACpB/C,WAAY+lN,GAAeA,GAAe,GAAI1yB,EAAKuyB,KAAK5lN,YAAa05N,EAAW94N,cAQxFw5N,GAAY,CACd16P,EAAG,EACH+N,EAAG,EACH3G,MAAO,OACP+/I,OAAQ,QAGV,SAASwzG,GAAUxK,GACjB,IAAIyK,IAAQxiR,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,KAAmBA,UAAU,GAM3E,OAJI+3Q,EAAS7vN,aAAe6vN,EAAS7vN,WAAW9iB,MAAQo9O,KACtDzK,EAAS7vN,WAAW9iB,KAAO,SAGtB2yO,EAWT,IAAI0K,GAAQ,CACV/rH,MAAO,WACL,MAAO,CACLurH,oBAAqB,SAA6B1kL,EAAar/E,GAC7D,IAAIwkQ,EAAWxkQ,EAAKiqC,aAAa,gBAC7BlkC,EAAQy+P,EAAkC7M,GAAiB6M,EAASn7P,MAAM,KAAKjc,KAAI,SAAU/M,GAC/F,OAAOA,EAAE6kD,WAhvDV,CACL+/B,OAAQ,KACR0qL,SAAU,KACVr3C,KAAM,IAsvDF,OANKvyM,EAAKk/D,SACRl/D,EAAKk/D,OAASwyL,MAGhBp4K,EAAYt5E,KAAOA,EACnBs5E,EAAY46K,OAASj6P,EAAKiqC,aAAa,mBAChCo1C,KAIb4hL,SAAU,SAAkB10C,GAC1BA,EAAUk4C,qBAAuB,SAAUr0D,GACzC,IA7BWypD,EA6BP9sN,EAAWqjK,EAAKrjK,SAChB/C,EAAaomK,EAAKpmK,WAClBqzL,EAAOjtB,EAAKitB,KACZt3N,EAAOqqM,EAAKrqM,KACZ2+P,EAAiBt0D,EAAK6pD,OACtBzhP,EAAY43L,EAAK53L,UACjBmsP,EAAYtnC,EAAKvsN,MACjB8zP,EAAWvnC,EAAKuyB,KAChBiV,EAAY9+P,EAAK+K,MACjBg0P,EAAW/+P,EAAK6pP,KAChBmV,EAntEV,SAAyB30D,GACvB,IAAI53L,EAAY43L,EAAK53L,UACjBipP,EAAiBrxD,EAAKqxD,eACtBC,EAAYtxD,EAAKsxD,UACjBxvJ,EAAQ,CACV15F,UAAW,aAAalqB,OAAOmzQ,EAAiB,EAAG,UAEjDwC,EAAiB,aAAa31Q,OAAqB,GAAdkqB,EAAU9O,EAAQ,MAAMpb,OAAqB,GAAdkqB,EAAUf,EAAQ,MACtFysP,EAAa,SAAS51Q,OAAOkqB,EAAUhT,KAAO,IAAMgT,EAAUg7O,OAAS,EAAI,GAAI,MAAMllQ,OAAOkqB,EAAUhT,KAAO,IAAMgT,EAAUi7O,OAAS,EAAI,GAAI,MAC9I0Q,EAAc,UAAU71Q,OAAOkqB,EAAU+6O,OAAQ,SAOrD,MAAO,CACLrhJ,MAAOA,EACPD,MARU,CACVz5F,UAAW,GAAGlqB,OAAO21Q,EAAgB,KAAK31Q,OAAO41Q,EAAY,KAAK51Q,OAAO61Q,IAQzEv5N,KANS,CACTpyB,UAAW,aAAalqB,OAAOozQ,EAAY,GAAK,EAAG,YAqsErCsD,CAAgB,CAC1BxsP,UAAWA,EACXipP,eAAgBoD,EAChBnD,UAAWiD,IAETM,EAAW,CACbl7N,IAAK,OACLC,WAAY+lN,GAAeA,GAAe,GAAIqU,IAAY,GAAI,CAC5Dl9O,KAAM,WAGNg+O,EAA8BN,EAAS73N,SAAW,CACpDA,SAAU63N,EAAS73N,SAAS3/C,IAAIi3Q,KAC9B,GACAc,EAAiB,CACnBp7N,IAAK,IACLC,WAAY+lN,GAAe,GAAIgV,EAAM9yJ,OACrCllE,SAAU,CAACs3N,GAAUtU,GAAe,CAClChmN,IAAK66N,EAAS76N,IACdC,WAAY+lN,GAAeA,GAAe,GAAI6U,EAAS56N,YAAa+6N,EAAMn6N,OACzEs6N,MAEDE,EAAiB,CACnBr7N,IAAK,IACLC,WAAY+lN,GAAe,GAAIgV,EAAM7yJ,OACrCnlE,SAAU,CAACo4N,IAETlL,EAAS,QAAQ3rQ,OAAOo2Q,GAAkBhR,MAC1C2R,EAAS,QAAQ/2Q,OAAOo2Q,GAAkBhR,MAC1C4R,EAAU,CACZv7N,IAAK,OACLC,WAAY+lN,GAAeA,GAAe,GAAIqU,IAAY,GAAI,CAC5D9hO,GAAI23N,EACJsL,UAAW,iBACXC,iBAAkB,mBAEpBz4N,SAAU,CAACk4N,EAAUG,IAEnBK,EAAO,CACT17N,IAAK,OACLgD,SAAU,CAAC,CACThD,IAAK,WACLC,WAAY,CACV1H,GAAI+iO,GAENt4N,UApFO8sN,EAoFWiL,EAnFL,MAAjBjL,EAAS9vN,IACJ8vN,EAAS9sN,SAET,CAAC8sN,KAiFDyL,IAUL,OARAv4N,EAASlqD,KAAK4iR,EAAM,CAClB17N,IAAK,OACLC,WAAY+lN,GAAe,CACzB7oO,KAAM,eACN,YAAa,QAAQ54B,OAAO+2Q,EAAQ,KACpCt/P,KAAM,QAAQzX,OAAO2rQ,EAAQ,MAC5BmK,MAEE,CACLr3N,SAAUA,EACV/C,WAAYA,MAMhB07N,GAAuB,CACzBzE,SAAU,SAAkB10C,GAC1B,IAAIo5C,GAAe,EAEfvoJ,GAAOwoJ,aACTD,EAAevoJ,GAAOwoJ,WAAW,oCAAoC/5L,SAGvE0gJ,EAAUs5C,oBAAsB,WAC9B,IAAIC,EAAY,GACZC,EAAO,CACT7+O,KAAM,gBAEJ8+O,EAAiB,CACnBC,cAAe,MACfC,YAAa,aACbC,IAAK,MAGPL,EAAUjjR,KAAK,CACbknD,IAAK,OACLC,WAAY+lN,GAAeA,GAAe,GAAIgW,GAAO,GAAI,CACvDv1O,EAAG,u4CAIP,IAAI41O,EAAkBrW,GAAeA,GAAe,GAAIiW,GAAiB,GAAI,CAC3E3vG,cAAe,YAGbgwG,EAAM,CACRt8N,IAAK,SACLC,WAAY+lN,GAAeA,GAAe,GAAIgW,GAAO,GAAI,CACvDO,GAAI,MACJC,GAAI,MACJ1yQ,EAAG,OAELk5C,SAAU,IAkDZ,OA/CK44N,GACHU,EAAIt5N,SAASlqD,KAAK,CAChBknD,IAAK,UACLC,WAAY+lN,GAAeA,GAAe,GAAIiW,GAAiB,GAAI,CACjE3vG,cAAe,IACfr/J,OAAQ,wBAET,CACD+yC,IAAK,UACLC,WAAY+lN,GAAeA,GAAe,GAAIqW,GAAkB,GAAI,CAClEpvQ,OAAQ,mBAKd8uQ,EAAUjjR,KAAKwjR,GACfP,EAAUjjR,KAAK,CACbknD,IAAK,OACLC,WAAY+lN,GAAeA,GAAe,GAAIgW,GAAO,GAAI,CACvDjpG,QAAS,IACTtsI,EAAG,ySAELuc,SAAU44N,EAAe,GAAK,CAAC,CAC7B57N,IAAK,UACLC,WAAY+lN,GAAeA,GAAe,GAAIqW,GAAkB,GAAI,CAClEpvQ,OAAQ,qBAKT2uQ,GAEHG,EAAUjjR,KAAK,CACbknD,IAAK,OACLC,WAAY+lN,GAAeA,GAAe,GAAIgW,GAAO,GAAI,CACvDjpG,QAAS,IACTtsI,EAAG,gJAELuc,SAAU,CAAC,CACThD,IAAK,UACLC,WAAY+lN,GAAeA,GAAe,GAAIqW,GAAkB,GAAI,CAClEpvQ,OAAQ,qBAMT,CACL+yC,IAAK,IACLC,WAAY,CACV,MAAS,WAEX+C,SAAU+4N,OAryDlB,SAAyBU,EAAap2D,GACpC,IAAI9qN,EAAM8qN,EAAKq2D,UACfnO,GAAWkO,EACXjO,GAAS,GACT/0Q,OAAO4D,KAAKmlO,IAAW7kO,SAAQ,SAAU0nB,IACC,IAApCopP,GAAoBnyQ,QAAQ+oB,WACvBm9M,GAAUn9M,MAIrBkpP,GAAS5wQ,SAAQ,SAAUg/Q,GACzB,IAAI5R,EAAS4R,EAAO5R,OAAS4R,EAAO5R,SAAW,GAiB/C,GAhBAtxQ,OAAO4D,KAAK0tQ,GAAQptQ,SAAQ,SAAUo/L,GACV,oBAAfguE,EAAOhuE,KAChBxhM,EAAIwhM,GAAMguE,EAAOhuE,IAGS,WAAxBj/L,GAAQitQ,EAAOhuE,KACjBtjM,OAAO4D,KAAK0tQ,EAAOhuE,IAAKp/L,SAAQ,SAAUs/L,GACnC1hM,EAAIwhM,KACPxhM,EAAIwhM,GAAM,IAGZxhM,EAAIwhM,GAAIE,GAAM8tE,EAAOhuE,GAAIE,SAK3B0/E,EAAOluH,MAAO,CAChB,IAAIA,EAAQkuH,EAAOluH,QACnBh1J,OAAO4D,KAAKoxJ,GAAO9wJ,SAAQ,SAAU4yJ,GAC9Bi+G,GAAOj+G,KACVi+G,GAAOj+G,GAAQ,IAGjBi+G,GAAOj+G,GAAMz3J,KAAK21J,EAAM8B,OAIxBosH,EAAOzF,UACTyF,EAAOzF,SAAS10C,OAkxDtBo6C,CAFc,CAAC9R,GAAWiM,GAAiBa,GAAQG,GAAeC,GA7Z7C,CACnBvpH,MAAO,WACL,MAAO,CACLwoH,0BAA2B,SAAmC3hL,GAE5D,OADAA,EAAY0+K,uBAAyBhL,GAC9B1zK,KAIb4hL,SAAU,SAAkBC,GAC1BA,EAAa0F,mBAAqB,SAAU5oQ,GAC1C,IAAImjQ,EAAenjQ,EAAOgC,KACtBA,OAAwB,IAAjBmhQ,EAA0BzQ,GAAWyQ,EAE5C1uM,GAAOsgM,sBACTA,GAAqB/yP,MAOJ,CACvB80P,OAAQ,WACN,MAAO,CACLthH,IAAK,CACHqzH,QAAS,WACPvJ,KACAqG,IAAa,MAKrBnrH,MAAO,WACL,MAAO,CACLsuH,UAAW,WACTrJ,GAAQhF,GAAW,4BAA6B,MAElDgB,OAAQ,WApsBP+D,IACLA,GAAG91B,cAssBCwxB,MAAO,SAAel7P,GACpB,IAAIigQ,EAAuBjgQ,EAAOigQ,qBAE9B0F,GACFpG,KAEAE,GAAQhF,GAAW,4BAA6B,CAC9CwF,qBAAsBA,SA6WgF6F,GAAiBS,GAAOmB,GAbzH,CACfltH,MAAO,WACL,MAAO,CACLurH,oBAAqB,SAA6B1kL,EAAar/E,GAC7D,IAAI+mQ,EAAa/mQ,EAAKiqC,aAAa,kBAC/By+B,EAAwB,OAAfq+L,IAA6C,KAAfA,GAA2BA,GAEtE,OADA1nL,EAAW,OAAa3W,EACjB2W,OAQU,CACvBonL,UAAWjN,KAEb,IAIIwN,GAAUxN,GAAIh6P,MAGdowP,GAAO4J,GAAI5J,4BCl4Ff,SAAS3oQ,GAAQC,EAAQC,GACvB,IAAIC,EAAO5D,OAAO4D,KAAKF,GAEvB,GAAI1D,OAAO6D,sBAAuB,CAChC,IAAIC,EAAU9D,OAAO6D,sBAAsBH,GAC3CC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GACpD,OAAOhE,OAAOsC,yBAAyBoB,EAAQM,GAAKnE,eACjD+D,EAAKvE,KAAKd,MAAMqF,EAAME,GAG7B,OAAOF,EAGT,SAAS2oQ,GAAe7sQ,GACtB,IAAK,IAAI7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CACzC,IAAIoH,EAAS,MAAQ3F,UAAUzB,GAAKyB,UAAUzB,GAAK,GACnDA,EAAI,EAAI4G,GAAQzD,OAAOiE,IAAS,GAAIC,SAAQ,SAAUvG,GACpDw4D,GAAgBz2D,EAAQ/B,EAAKsG,EAAOtG,OACjCqC,OAAOmE,0BAA4BnE,OAAOoE,iBAAiB1E,EAAQM,OAAOmE,0BAA0BF,IAAWR,GAAQzD,OAAOiE,IAASC,SAAQ,SAAUvG,GAC5JqC,OAAOC,eAAeP,EAAQ/B,EAAKqC,OAAOsC,yBAAyB2B,EAAQtG,OAI/E,OAAO+B,EAGT,SAAS2E,GAAQvC,GAGf,OAAOuC,GAAU,mBAAqB7D,QAAU,iBAAmBA,OAAOC,SAAW,SAAUqB,GAC7F,cAAcA,GACZ,SAAUA,GACZ,OAAOA,GAAO,mBAAqBtB,QAAUsB,EAAID,cAAgBrB,QAAUsB,IAAQtB,OAAOhB,UAAY,gBAAkBsC,GACvHuC,GAAQvC,GAGb,SAASq0D,GAAgBr0D,EAAKnE,EAAKG,GAYjC,OAXIH,KAAOmE,EACT9B,OAAOC,eAAe6B,EAAKnE,EAAK,CAC9BG,MAAOA,EACP+B,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ+B,EAAInE,GAAOG,EAGNgE,EAkBT,SAAS2hR,GAAyBx/Q,EAAQy/Q,GACxC,GAAc,MAAVz/Q,EAAgB,MAAO,GAE3B,IAEItG,EAAKd,EAFL6C,EAlBN,SAAuCuE,EAAQy/Q,GAC7C,GAAc,MAAVz/Q,EAAgB,MAAO,GAC3B,IAEItG,EAAKd,EAFL6C,EAAS,GACTikR,EAAa3jR,OAAO4D,KAAKK,GAG7B,IAAKpH,EAAI,EAAGA,EAAI8mR,EAAW/mR,OAAQC,IACjCc,EAAMgmR,EAAW9mR,GACb6mR,EAAS7gR,QAAQlF,IAAQ,IAC7B+B,EAAO/B,GAAOsG,EAAOtG,IAGvB,OAAO+B,EAMMkkR,CAA8B3/Q,EAAQy/Q,GAInD,GAAI1jR,OAAO6D,sBAAuB,CAChC,IAAIggR,EAAmB7jR,OAAO6D,sBAAsBI,GAEpD,IAAKpH,EAAI,EAAGA,EAAIgnR,EAAiBjnR,OAAQC,IACvCc,EAAMkmR,EAAiBhnR,GACnB6mR,EAAS7gR,QAAQlF,IAAQ,GACxBqC,OAAOR,UAAUy7D,qBAAqB/5D,KAAK+C,EAAQtG,KACxD+B,EAAO/B,GAAOsG,EAAOtG,IAIzB,OAAO+B,EAGT,SAASozP,GAAmBp2P,GAC1B,OAGF,SAA4BA,GAC1B,GAAIK,MAAME,QAAQP,GAAM,OAAOo1P,GAAkBp1P,GAJ1C8vQ,CAAmB9vQ,IAO5B,SAA0BwG,GACxB,GAAsB,qBAAX1C,QAAmD,MAAzB0C,EAAK1C,OAAOC,WAA2C,MAAtByC,EAAK,cAAuB,OAAOnG,MAAMoG,KAAKD,GARlFupQ,CAAiB/vQ,IAWrD,SAAqC2D,EAAG2E,GACtC,IAAK3E,EAAG,OACR,GAAiB,kBAANA,EAAgB,OAAOyxP,GAAkBzxP,EAAG2E,GACvD,IAAIpE,EAAIZ,OAAOR,UAAUoD,SAAS1B,KAAKb,GAAG4E,MAAM,GAAI,GAC1C,WAANrE,GAAkBP,EAAEwB,cAAajB,EAAIP,EAAEwB,YAAYqD,MACvD,GAAU,QAANtE,GAAqB,QAANA,EAAa,OAAO7D,MAAMoG,KAAK9C,GAClD,GAAU,cAANO,GAAqB,2CAA2CuE,KAAKvE,GAAI,OAAOkxP,GAAkBzxP,EAAG2E,GAjB9C+sP,CAA4Br1P,IA4BzF,WACE,MAAM,IAAIkC,UAAU,wIA7B2E8tQ,GAoBjG,SAAS5a,GAAkBp1P,EAAKC,IACnB,MAAPA,GAAeA,EAAMD,EAAIE,UAAQD,EAAMD,EAAIE,QAE/C,IAAK,IAAIC,EAAI,EAAGC,EAAO,IAAIC,MAAMJ,GAAME,EAAIF,EAAKE,IAAKC,EAAKD,GAAKH,EAAIG,GAEnE,OAAOC,EAmET,SAASgnR,GAASx6P,GAChB,OAPoBxnB,EAOHwnB,GANjBxnB,GAAY,KAEGA,EAKNwnB,GAITA,EAASA,EAAOxM,QAAQ,iBAAiB,SAAU1B,EAAO2oQ,GACxD,OAAOA,EAAMA,EAAI/9P,cAAgB,OAGrB3X,OAAO,EAAG,GAAGuX,cAAgB0D,EAAOjb,OAAO,GAhB3D,IAAsBvM,EAmBtB,IAAIkiR,GAAc,CAAC,SAMnB,SAASC,GAAc/kO,GACrB,OAAOA,EAAMr5B,MAAM,KAAKjc,KAAI,SAAUjJ,GACpC,OAAOA,EAAE+gD,UACR39C,QAAO,SAAUpD,GAClB,OAAOA,KACNmN,QAAO,SAAUC,EAAK0W,GACvB,IAVgB+D,EAUZ3rB,EAAI4nB,EAAK5hB,QAAQ,KACjBunD,EAAO05N,GAASr/P,EAAKxf,MAAM,EAAGpI,IAC9BiB,EAAQ2mB,EAAKxf,MAAMpI,EAAI,GAAG6kD,OAE9B,OADA0I,EAAK+yD,WAAW,UAAYpvG,GAbZya,EAa2B4hC,EAZtC5hC,EAAI29C,OAAO,GAAGngD,cAAgBwC,EAAIvjB,MAAM,KAYOnH,EAAQiQ,EAAIq8C,GAAQtsD,EACjEiQ,IACN,IAoDL,IAAI+/P,IAAa,EAEjB,IACEA,IAAal2N,EACb,MAAO/2C,KAUT,SAASqjR,GAAkB9X,GAGzB,OAAIA,GAA0B,WAAlB/nQ,GAAQ+nQ,IAAsBA,EAAK3qL,QAAU2qL,EAAKD,UAAYC,EAAKA,KACtEA,EAGLpwP,GAAAA,KACKA,GAAAA,KAAWowP,GAIP,OAATA,EACK,KAILA,GAA0B,WAAlB/nQ,GAAQ+nQ,IAAsBA,EAAK3qL,QAAU2qL,EAAKD,SACrDC,EAILrvQ,MAAME,QAAQmvQ,IAAyB,IAAhBA,EAAKxvQ,OAEvB,CACL6kF,OAAQ2qL,EAAK,GACbD,SAAUC,EAAK,IAKC,kBAATA,EACF,CACL3qL,OAAQ,MACR0qL,SAAUC,QAHd,EAWF,SAAS+X,GAAcxmR,EAAKG,GAK1B,OAAOf,MAAME,QAAQa,IAAUA,EAAMlB,OAAS,IAAMG,MAAME,QAAQa,IAAUA,EAAQq4D,GAAgB,GAAIx4D,EAAKG,GAAS,GAGxH,IAAIsmR,GAAY,CAAC,gBACjB,SAASC,GAAgBz3D,GACvB,IAAI03D,EAAe13D,EAAK03D,aACpB3kR,EAAQ8jR,GAAyB72D,EAAMw3D,IAEvCG,EAAW5kR,EAAMysQ,KACjBoY,EAAW7kR,EAAM4iB,KACjB2iE,EAASvlF,EAAMulF,OACfxmC,EAAY/+C,EAAM++C,UAClBkI,EAAQjnD,EAAMinD,MACd8vN,EAAU/2Q,EAAM+2Q,QAChBD,EAAS92Q,EAAM82Q,OACflB,EAAa2O,GAAkBK,GAC/BxN,EAAUoN,GAAc,UAAW,GAAGr5Q,OAAOgoP,GA1NnD,SAAmBnzP,GACjB,IAAI8kR,EAEAC,EAAO/kR,EAAM+kR,KACbC,EAAOhlR,EAAMglR,KACbC,EAAWjlR,EAAMilR,SACjBC,EAASllR,EAAMklR,OACfC,EAAQnlR,EAAMmlR,MACdC,EAAQplR,EAAMolR,MACdC,EAAOrlR,EAAMqlR,KACbC,EAAYtlR,EAAMslR,UAClBC,EAAcvlR,EAAMulR,YACpBC,EAAQxlR,EAAMwlR,MACdC,EAAazlR,EAAMylR,WACnBC,EAAU1lR,EAAM0lR,QAChBC,EAAS3lR,EAAM2lR,OACf7xI,EAAW9zI,EAAM8zI,SACjB/B,EAAO/xI,EAAM+xI,KACb1vH,EAAOriB,EAAMqiB,KACbujQ,EAAW5lR,EAAM4lR,SACjBC,EAAO7lR,EAAM6lR,KAEbzO,GAiBD5gN,GAjBYsuN,EAAW,CACxB,UAAWC,EACX,UAAWC,EACX,eAAgBC,EAChB,YAAaC,EACb,WAAYC,EACZ,WAAYC,EACZ,UAAWC,EACX,kBAAmBE,EACnB,gBAAiBD,EACjB,WAAYE,EACZ,QAASC,EACT,aAAcC,EACd,YAAaC,EACb,QAAS7xI,EACT,qBAA+B,eAAT/B,GAAkC,SAATA,EAC/C,mBAA6B,aAATA,GAAgC,SAATA,GAChB,MAAM5mI,OAAOkX,GAAuB,qBAATA,GAAiC,OAATA,GAAgBm0C,GAAgBsuN,EAAU,aAAa35Q,OAAOy6Q,GAA+B,qBAAbA,GAAyC,OAAbA,GAAkC,IAAbA,GAAiBpvN,GAAgBsuN,EAAU,WAAW35Q,OAAO06Q,GAAuB,qBAATA,GAAiC,OAATA,GAAgBrvN,GAAgBsuN,EAAU,kBAAmB9kR,EAAM8lR,aAAchB,GAGrY,OAAOzkR,OAAO4D,KAAKmzQ,GAASntQ,KAAI,SAAUjM,GACxC,OAAOo5Q,EAAQp5Q,GAAOA,EAAM,QAC3BoG,QAAO,SAAUpG,GAClB,OAAOA,KA6K2DyyQ,CAAUzwQ,IAASmzP,GAAmBp0M,EAAU74B,MAAM,QACtHmP,EAAYmvP,GAAc,YAAwC,kBAApBxkR,EAAMq1B,UAAyBhZ,GAAAA,UAAgBrc,EAAMq1B,WAAar1B,EAAMq1B,WACtHzS,EAAO4hQ,GAAc,OAAQD,GAAkBM,IAC/CkB,EAAetZ,GAAKmJ,EAAYhJ,GAAeA,GAAeA,GAAeA,GAAe,GAAIwK,GAAU/hP,GAAYzS,GAAO,GAAI,CACnI2iE,OAAQA,EACRt+B,MAAOA,EACP8vN,QAASA,EACTD,OAAQA,KAGV,IAAKiP,EAEH,OAnFJ,WAEI,IAAIC,GADD7X,IAAcptO,SAAoC,oBAAlBA,QAAQ3iC,QAG1C4nR,EAAWjlP,SAAS3iC,MAAMQ,MAAMonR,EAAUrnR,WA8E3CgoB,CAAI,sBAAuBivP,GACpB,KAGT,IAAIc,EAAWqP,EAAarP,SACxBuP,EAAa,CACf94H,IAAKw3H,GAQP,OANAtkR,OAAO4D,KAAKjE,GAAOuE,SAAQ,SAAUvG,GAE9B0mR,GAAgBz3H,aAAahoJ,eAAejH,KAC/CioR,EAAWjoR,GAAOgC,EAAMhC,OAGrBkoR,GAAaxP,EAAS,GAAIuP,GAEnCvB,GAAgBvsH,YAAc,kBAC9BusH,GAAgByB,UAAY,CAC1BpB,KAAM5lH,KAAAA,KACNwmH,OAAQxmH,KAAAA,KACR+lH,OAAQ/lH,KAAAA,KACRpgH,UAAWogH,KAAAA,OACX6lH,KAAM7lH,KAAAA,KACNimH,MAAOjmH,KAAAA,KACPv8I,KAAMu8I,KAAAA,UAAoB,CAACA,KAAAA,OAAkBA,KAAAA,MAAiBA,KAAAA,SAC9D23G,OAAQ33G,KAAAA,OACRsmH,WAAYtmH,KAAAA,KACZumH,QAASvmH,KAAAA,KACTptB,KAAMotB,KAAAA,MAAgB,CAAC,aAAc,WAAY,SACjDstG,KAAMttG,KAAAA,UAAoB,CAACA,KAAAA,OAAkBA,KAAAA,MAAiBA,KAAAA,SAC9DrrB,SAAUqrB,KAAAA,KACV0mH,KAAM1mH,KAAAA,MAAgB,CAAC,QAAS,SAChCqmH,MAAOrmH,KAAAA,KACPymH,SAAUzmH,KAAAA,MAAgB,CAAC,EAAG,GAAI,IAAK,MACvCgmH,MAAOhmH,KAAAA,KACP98I,KAAM88I,KAAAA,MAAgB,CAAC,MAAO,KAAM,KAAM,KAAM,KAAM,MAAO,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,KAAM,QACnHkmH,KAAMlmH,KAAAA,KACNmmH,UAAWnmH,KAAAA,KACXomH,YAAapmH,KAAAA,KACb55E,OAAQ45E,KAAAA,UAAoB,CAACA,KAAAA,KAAgBA,KAAAA,SAC7Cl4G,MAAOk4G,KAAAA,OACP43G,QAAS53G,KAAAA,OACT9pI,UAAW8pI,KAAAA,UAAoB,CAACA,KAAAA,OAAkBA,KAAAA,SAClD2mH,YAAa3mH,KAAAA,MAEfulH,GAAgBz3H,aAAe,CAC7B04H,QAAQ,EACR5mO,UAAW,GACXn8B,KAAM,KACNk0P,OAAQ,KACR2O,YAAY,EACZC,SAAS,EACT3zI,KAAM,KACN06H,KAAM,KACN34H,UAAU,EACV+xI,KAAM,KACNL,OAAO,EACPI,SAAU,KACVvjQ,KAAM,KACNgjQ,MAAM,EACNN,MAAM,EACNC,MAAM,EACNC,UAAU,EACVC,QAAQ,EACRC,OAAO,EACP5/L,QAAQ,EACRt+B,MAAO,GACP8vN,QAAS,KACT1hP,UAAW,KACXywP,aAAa,GAEf,yBAAII,GAhNJ,SAASE,EAAQtgO,EAAe22G,GAC9B,IAAIwpH,EAAatnR,UAAU1B,OAAS,QAAsB6B,IAAjBH,UAAU,GAAmBA,UAAU,GAAK,GAErF,GAAuB,kBAAZ89J,EACT,OAAOA,EAGT,IAAI7yG,GAAY6yG,EAAQ7yG,UAAY,IAAI3/C,KAAI,SAAUqT,GACpD,OAAO8oQ,EAAQtgO,EAAexoC,MAI5B+oQ,EAAShmR,OAAO4D,KAAKw4J,EAAQ51G,YAAc,IAAI14C,QAAO,SAAUC,EAAKpQ,GACvE,IAAI6qB,EAAM4zI,EAAQ51G,WAAW7oD,GAE7B,OAAQA,GACN,IAAK,QACHoQ,EAAI0tJ,MAAJ,UAAyBjzI,SAClB4zI,EAAQ51G,WAAR,MACP,MAEF,IAAK,QACHz4C,EAAI0tJ,MAAJ,MAAqBwoH,GAAcz7P,GACnC,MAEF,QAC+B,IAAzB7qB,EAAIkF,QAAQ,UAA2C,IAAzBlF,EAAIkF,QAAQ,SAC5CkL,EAAI0tJ,MAAM99J,EAAIioB,eAAiB4C,EAE/Bza,EAAI0tJ,MAAMqoH,GAASnmR,IAAQ6qB,EAKjC,OAAOza,IACN,CACD0tJ,MAAO,KAGLwqH,EAAoBL,EAAW1mO,MAC/BgnO,OAAsC,IAAtBD,EAA+B,GAAKA,EACpDptM,EAAY4qM,GAAyBmC,EAAY5B,IAKrD,OAHAgC,EAAOvqH,MAAP,MAAwB8wG,GAAeA,GAAe,GAAIyZ,EAAOvqH,MAAP,OAAwByqH,GAG3EzgO,EAAclnD,WAAM,EAAQ,CAAC69J,EAAQ71G,IAAKgmN,GAAeA,GAAe,GAAIyZ,EAAOvqH,OAAQ5iF,IAAY/tE,OAAOgoP,GAAmBvpM,MAkK/GhqD,KAAK,KAAMk/C,EAAAA,eCvatC,SAAS,GAAQ/6C,EAAQC,GACvB,IAAIC,EAAO5D,OAAO4D,KAAKF,GAEvB,GAAI1D,OAAO6D,sBAAuB,CAChC,IAAIC,EAAU9D,OAAO6D,sBAAsBH,GAC3CC,IAAmBG,EAAUA,EAAQC,QAAO,SAAUC,GACpD,OAAOhE,OAAOsC,yBAAyBoB,EAAQM,GAAKnE,eACjD+D,EAAKvE,KAAKd,MAAMqF,EAAME,GAG7B,OAAOF,EAGM,SAAS,GAAelE,GACrC,IAAK,IAAI7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CACzC,IAAIoH,EAAS,MAAQ3F,UAAUzB,GAAKyB,UAAUzB,GAAK,GACnDA,EAAI,EAAI,GAAQmD,OAAOiE,IAAS,GAAIC,SAAQ,SAAUvG,GACpD,GAAe+B,EAAQ/B,EAAKsG,EAAOtG,OAChCqC,OAAOmE,0BAA4BnE,OAAOoE,iBAAiB1E,EAAQM,OAAOmE,0BAA0BF,IAAW,GAAQjE,OAAOiE,IAASC,SAAQ,SAAUvG,GAC5JqC,OAAOC,eAAeP,EAAQ/B,EAAKqC,OAAOsC,yBAAyB2B,EAAQtG,OAI/E,OAAO+B,ECxBM,SAAS,GAAyBuE,EAAQy/Q,GACvD,GAAc,MAAVz/Q,EAAgB,MAAO,GAC3B,IACItG,EAAKd,EADL6C,ECHS,SAAuCuE,EAAQy/Q,GAC5D,GAAc,MAAVz/Q,EAAgB,MAAO,GAC3B,IAEItG,EAAKd,EAFL6C,EAAS,GACTikR,EAAa3jR,OAAO4D,KAAKK,GAG7B,IAAKpH,EAAI,EAAGA,EAAI8mR,EAAW/mR,OAAQC,IACjCc,EAAMgmR,EAAW9mR,GACb6mR,EAAS7gR,QAAQlF,IAAQ,IAC7B+B,EAAO/B,GAAOsG,EAAOtG,IAGvB,OAAO+B,EDTM,CAA6BuE,EAAQy/Q,GAGlD,GAAI1jR,OAAO6D,sBAAuB,CAChC,IAAIggR,EAAmB7jR,OAAO6D,sBAAsBI,GAEpD,IAAKpH,EAAI,EAAGA,EAAIgnR,EAAiBjnR,OAAQC,IACvCc,EAAMkmR,EAAiBhnR,GACnB6mR,EAAS7gR,QAAQlF,IAAQ,GACxBqC,OAAOR,UAAUy7D,qBAAqB/5D,KAAK+C,EAAQtG,KACxD+B,EAAO/B,GAAOsG,EAAOtG,IAIzB,OAAO+B,EEhBM,SAASymR,GAA2B9lR,EAAGC,GACpD,IAAIC,EAAuB,qBAAXC,QAA0BH,EAAEG,OAAOC,WAAaJ,EAAE,cAElE,IAAKE,EAAI,CACP,GAAIxD,MAAME,QAAQoD,KAAOE,EAAK,EAA2BF,KAAOC,GAAkBD,GAAyB,kBAAbA,EAAEzD,OAAqB,CAC/G2D,IAAIF,EAAIE,GACZ,IAAI1D,EAAI,EAEJ6D,EAAI,aAER,MAAO,CACLC,EAAGD,EACHE,EAAG,WACD,OAAI/D,GAAKwD,EAAEzD,OAAe,CACxBoB,MAAM,GAED,CACLA,MAAM,EACNF,MAAOuC,EAAExD,OAGbgE,EAAG,SAAWC,GACZ,MAAMA,GAERC,EAAGL,GAIP,MAAM,IAAI9B,UAAU,yIAGtB,IAEIJ,EAFAwC,GAAmB,EACnBC,GAAS,EAEb,MAAO,CACLN,EAAG,WACDJ,EAAKA,EAAGW,KAAKb,IAEfO,EAAG,WACD,IAAIO,EAAOZ,EAAGa,OAEd,OADAJ,EAAmBG,EAAKnD,KACjBmD,GAETN,EAAG,SAAWQ,GACZJ,GAAS,EACTzC,EAAM6C,GAERN,EAAG,WACD,IACOC,GAAoC,MAAhBT,EAAW,QAAWA,EAAW,SAC1D,QACA,GAAIU,EAAQ,MAAMzC,+qBCpDgL,SAASotB,KAAI,IAAI/qB,EAAE,GAAGosB,EAAE,GAAG5c,EAAE,CAAC+1Q,QAAD,SAAS/lR,GAAG4sB,EAAE5tB,KAAKgB,IAAIg3J,sBAAvB,yHAAmD,IAAIz2J,EAAEy2J,sBAAqB,WAArB,aAA4BhnJ,EAAEqF,KAAI,kBAAI0hJ,qBAAqBx2J,SAAKylR,UAAzH,WAAwI,2BAAFhmR,EAAE,yBAAFA,EAAE,gBAACgQ,EAAEgnJ,uBAAsB,WAAKhnJ,EAAEgnJ,sBAAF,MAAAhnJ,EAA2BhQ,OAAMy2C,WAAvM,yHAAwN,IAAIl2C,EAAEk2C,WAAU,WAAV,aAAiBzmC,EAAEqF,KAAI,kBAAIorC,aAAalgD,SAAK8U,IAA3Q,SAA+QrV,GAAGQ,EAAExB,KAAKgB,IAAIimR,QAA7R,WAAsS,WAAczlR,EAAEwS,OAAO,IAAvB,IAAC,6BAAyBhT,EAAzB,YAAD,gCAAqCkmR,UAA3U,WAAsV,4GAAct5P,EAAE5Z,OAAO,IAAvB,+DAAShT,EAAT,iBAAgCA,IAAhC,yMAAsC,OAAOgQ,EAAE,SAASkjC,KAAI,IAAI1yC,EAAJ,GAAO2lR,EAAAA,EAAAA,UAAG56P,IAAV,MAAa,OAAO66P,EAAAA,EAAAA,YAAG,kBAAI,kBAAI5lR,EAAEylR,aAAU,CAACzlR,IAAIA,EAA6F,IAAIqlB,GAAiB,oBAARkD,OAAoBs9P,EAAAA,gBAAGC,EAAAA,UAAyDC,GAAG,CAACC,uBAAsB,GAAI,SAASj6P,KAAI,SAASwqB,EAAAA,EAAAA,UAAGwvO,GAAGC,uBAAf,GAAIhmR,EAAJ,KAAMosB,EAAN,KAAsC,OAAO65P,EAAAA,EAAAA,YAAG,YAAS,IAAJjmR,GAAQosB,GAAE,KAAK,CAACpsB,KAAIimR,EAAAA,EAAAA,YAAG,YAAgC,IAA3BF,GAAGC,wBAA6BD,GAAGC,uBAAsB,KAAK,IAAIhmR,EAAE,IAAI8mB,GAAG,EAAE,SAASvX,KAAK,QAAQuX,GAAG,SAASmR,KAAQ,IAAAj4B,EAAE+rB,KAAF,KAAY8rL,EAAAA,EAAAA,UAAG73M,EAAEuP,GAAG,MAApB,GAAO6c,EAAP,KAAS5c,EAAT,KAA0B,OAAO6V,IAAE,WAAS,OAAJ+G,GAAU5c,EAAED,QAAO,CAAC6c,IAAO,MAAHA,EAAQ,GAAGA,OAAE,EAAyF,SAAS2gK,GAAG/sL,GAAG,IAAIosB,GAAE85P,EAAAA,EAAAA,QAAGlmR,GAAG,OAAOmmR,EAAAA,EAAAA,YAAG,WAAK/5P,EAAE7I,QAAQvjB,IAAG,CAACA,IAAIosB,EAAE,SAAS4gB,GAAGhtC,EAAEosB,GAAG,SAASg6P,EAAAA,EAAAA,UAAGpmR,GAAZ,GAAIwP,EAAJ,KAAMhQ,EAAN,KAAeO,EAAEgtL,GAAG/sL,GAAG,OAAOqlB,IAAE,kBAAI7lB,EAAEO,EAAEwjB,WAAT,CAAmBxjB,EAAEP,GAArB,SAA0B4sB,KAAI5c,EAAoE,SAAS21B,KAAO,2BAAFnlC,EAAE,yBAAFA,EAAE,gBAAC,IAAIosB,GAAEi6P,EAAAA,EAAAA,QAAGrmR,GAAG,OAAOy3M,EAAAA,EAAAA,YAAG,WAAKrrL,EAAE7I,QAAQvjB,IAAG,CAACA,KAAIq3M,EAAAA,EAAAA,cAAG,SAAA7nM,GAAG,WAAc4c,EAAE7I,SAAhB,IAAC,gCAAQ/jB,EAAR,QAA0B,MAAHA,IAAoB,mBAAHA,EAAcA,EAAEgQ,GAAGhQ,EAAE+jB,QAAQ/T,IAAtE,iCAA0E,CAAC4c,IAAmH,SAAS8sE,GAAEl5F,EAAEosB,GAAQ,GAAGpsB,KAAKosB,EAAE,KAAC,IAAIrsB,EAAEqsB,EAAEpsB,GAAT,mBAAbwP,EAAa,iCAAbA,EAAa,kBAAY,MAAiB,mBAAHzP,EAAcA,EAAC,WAAD,EAAKyP,GAAGzP,EAAE,IAAIP,EAAE,IAAIiJ,MAAJ,2BAA8BzI,EAA9B,yEAAgGb,OAAO4D,KAAKqpB,GAAGrjB,KAAI,SAAAhJ,GAAC,iBAAMA,EAAN,QAAYub,KAAK,MAArI,MAA+I,MAAM7S,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBptD,EAAE05F,IAAG15F,EAAE,SAASo/E,GAAT,GAAwE,IAAtD5+E,EAAsD,EAA5DlB,MAAastB,EAA+C,EAApDzT,KAAkBnJ,EAAkC,EAA7C82Q,WAAsB9mR,EAAuB,EAAhC+mR,SAAgC,IAArBC,QAAQzmR,OAAa,SAAH/D,EAAG,EAARqI,KAAS,GAAGtE,EAAE,OAAOE,GAAGD,EAAEosB,EAAE5c,EAAExT,GAAG,IAAIuC,EAAK,MAAHiB,EAAQA,EAAE,EAAE,GAAK,EAAFjB,EAAI,CAAC,MAAsByB,EAAlBwqQ,OAAO92O,OAAX,SAAmB5zB,EAAnB,GAAsBE,EAAtB,IAAwB,GAAG0zB,EAAE,OAAOzzB,GAAGH,EAAEssB,EAAE5c,EAAExT,GAAG,GAAK,EAAFuC,EAAI,OAAC,EAAuByB,EAAnB8uJ,QAAQp7H,OAAZ,SAAoB5zB,EAApB,GAAuBE,EAAvB,IAAyB,OAAOk5F,GAAExlE,EAAE,EAAE,GAAL,QAAS,GAAT,WAAc,OAAO,QAArB,KAA4B,GAA5B,WAAiC,OAAOzzB,GAAG,SAAIH,GAAL,IAAO2mR,QAAO,EAAGpoO,MAAM,CAAC0+I,QAAQ,UAAS3wK,EAAE5c,EAAExT,MAAvF,IAA6F,OAAOiE,GAAGD,EAAEosB,EAAE5c,EAAExT,GAAG,SAASiE,GAAGD,GAAW,IAATosB,EAAS,uDAAP,GAAG5c,EAAI,uCAAFhQ,EAAE,uCAAC,EAA4C2N,GAAGnN,EAAE,CAAC,UAAU,WAA5D,IAAI0mR,GAAG3mR,OAAP,MAASyP,EAAT,EAAoBxT,EAApB,EAAW0sD,SAAX,IAAsBi+N,QAAQpoR,OAA9B,MAAgC,MAAhC,EAAyCm1B,EAAzC,SAAuE5zB,OAAU,IAARE,EAAEisJ,IAAF,MAAiB1tJ,EAAGyB,EAAEisJ,KAAK,GAAG/uH,EAAY,mBAAHlhC,EAAcA,EAAEowB,GAAGpwB,EAAE,GAAG03B,EAAEmqB,WAA+B,mBAAbnqB,EAAEmqB,YAAwBnqB,EAAEmqB,UAAUnqB,EAAEmqB,UAAUzxB,IAAIrsB,IAAI6mR,EAAAA,UAAIznR,OAAO4D,KAAK2wB,GAAG33B,OAAO,EAAE,CAAC,KAAI27M,EAAAA,EAAAA,gBAAGx6K,IAAIhhC,MAAME,QAAQ8gC,IAAIA,EAAEnhC,OAAO,EAAE,MAAM,IAAI0M,MAAM,CAAC,+BAA+B,GAAhC,iCAA6DjJ,EAA7D,kCAA+F,sDAAsDL,OAAO4D,KAAK2wB,GAAG3qB,KAAI,SAAAmT,GAAC,oBAASA,MAAKZ,KAAlC,MAC3wF,GAAG,iCAAiC,CAAC,8FAA8F,4FAA4FvS,KAAI,SAAAmT,GAAC,oBAASA,MAAKZ,KAA9M,OACnCA,KAFqnF,OAGrnF,OAAOurQ,EAAAA,EAAAA,cAAG3pP,EAAE/9B,OAAOwP,OAAO,GAAGm4Q,GAAGC,GAAG55Q,GAAGumB,EAAE,CAAC,SAASwJ,EAAEp+B,MAAM,CAAC,YAAYgB,IAAI,OAAOknR,EAAAA,EAAAA,eAAGjnR,EAAEZ,OAAOwP,OAAO,GAAGxB,GAAGumB,EAAE,CAAC,QAAQ3zB,IAAI6mR,EAAAA,UAAI9mR,GAAGo9B,GAAG,SAAS4pP,GAAG9mR,EAAEosB,EAAE5c,GAAG,IAAD,EAAKhQ,EAAEL,OAAOwP,OAAO,GAAG3O,GAAxB,KAAwCwP,GAAxC,yBAAmCzP,EAAnC,aAAiD,IAAPC,EAAED,SAAoB,IAAPqsB,EAAErsB,IAAaZ,OAAOwP,OAAOnP,EAAd,MAAkBO,GAAlB,SAAqB/D,GAAGA,EAAEi+J,kBAAkBj6J,EAAED,GAAG/D,GAAGA,EAAEi+J,kBAAkB7tI,EAAErsB,GAAG/D,QAA1H,+BAA3B,8BAA2J,OAAOwD,EAAE,SAAS44B,GAAEp4B,GAAG,IAAIosB,EAAE,OAAOjtB,OAAOwP,QAAOgpM,EAAAA,EAAAA,YAAG33M,GAAG,CAACi3J,YAA+B,OAAlB7qI,EAAEpsB,EAAEi3J,aAAmB7qI,EAAEpsB,EAAEqE,OAAO,SAAS0iR,GAAG/mR,GAAG,IAAIosB,EAAEjtB,OAAOwP,OAAO,GAAG3O,GAAG,IAAI,IAAIwP,KAAK4c,OAAS,IAAPA,EAAE5c,WAAoB4c,EAAE5c,GAAG,OAAO4c,EAAE,SAASjf,GAAGnN,GAAO,MAALosB,EAAK,uDAAH,GAAQ5c,EAAErQ,OAAOwP,OAAO,GAAG3O,GAAxB,KAAwCosB,GAAxC,IAA2B,gCAAQ5sB,EAAR,QAAeA,KAAKgQ,UAAUA,EAAEhQ,IAA3D,8BAA8D,OAAOgQ,EAA0D,SAAS04K,GAAGloL,EAAEosB,GAAG,IAAI5c,EAAE4c,EAAE66P,eAAe,GAAGz3Q,EAAEzT,QAAQ,EAAE,OAAO,KAAK,IAAIyD,EAAE4sB,EAAE86P,qBAAqBnnR,EAAK,MAAHP,EAAQA,GAAG,EAAExD,EAAG,WAAK,OAAOgE,EAAE68L,OAAO,KAAK,EAAE,OAAOrtL,EAAE23Q,WAAU,SAAA5oR,GAAC,OAAG6tB,EAAEg7P,gBAAgB7oR,MAAI,KAAK,EAAG,IAAIA,EAAEiR,EAAEpL,QAAQyoD,UAAUs6N,WAAU,SAACzzP,EAAE5zB,EAAEo9B,GAAL,SAAc,IAALn9B,GAAQm9B,EAAEnhC,OAAO+D,EAAE,GAAGC,KAAMqsB,EAAEg7P,gBAAgB1zP,MAAI,OAAY,IAALn1B,EAAOA,EAAEiR,EAAEzT,OAAO,EAAEwC,EAAE,KAAK,EAAE,OAAOiR,EAAE23Q,WAAU,SAAC5oR,EAAEm1B,GAAH,QAAOA,GAAG3zB,KAAMqsB,EAAEg7P,gBAAgB7oR,MAAI,KAAK,EAAG,IAAIA,EAAEiR,EAAEpL,QAAQyoD,UAAUs6N,WAAU,SAAAzzP,GAAC,OAAGtH,EAAEg7P,gBAAgB1zP,MAAI,OAAY,IAALn1B,EAAOA,EAAEiR,EAAEzT,OAAO,EAAEwC,EAAE,KAAK,EAAE,OAAOiR,EAAE23Q,WAAU,SAAA5oR,GAAC,OAAE6tB,EAAEi7P,UAAU9oR,KAAKyB,EAAEi+C,MAAI,KAAK,EAAE,OAAO,KAAK,SAAjmB,SAAYj+C,GAAG,MAAM,IAAIyI,MAAM,sBAAsBzI,GAAojB65K,CAAG75K,IAAlc,GAA0c,OAAY,IAALhE,EAAOwD,EAAExD,EAAE,SAASotE,GAAEppE,GAAgC,IAA7B,IAAIosB,EAAEpsB,EAAEsnR,cAAc93Q,EAAE,KAAU4c,KAAKA,aAAam7P,sBAAsBn7P,aAAao7P,oBAAoBh4Q,EAAE4c,GAAGA,EAAEA,EAAEk7P,cAAc,IAAI9nR,EAAgD,MAA1C,MAAH4sB,OAAQ,EAAOA,EAAEw5B,aAAa,aAAkB,QAAOpmD,IAAc,SAAYQ,GAAG,IAAIA,EAAE,OAAM,EAAkC,IAA/B,IAAIosB,EAAEpsB,EAAEynR,uBAAgC,OAAJr7P,GAAU,CAAC,GAAGA,aAAao7P,kBAAkB,OAAM,EAAGp7P,EAAEA,EAAEq7P,uBAAuB,OAAM,EAApKC,CAAGl4Q,KAAMhQ,EAA8M,SAASiqB,GAAEzpB,EAAEosB,EAAE5c,GAAG,IAAIhQ,GAAEmoR,EAAAA,EAAAA,QAAGv7P,GAAG5sB,EAAE+jB,QAAQ6I,GAAEw7P,EAAAA,EAAAA,YAAG,WAAK,SAAS7nR,EAAE/D,GAAGwD,EAAE+jB,QAAQljB,KAAKkoB,OAAOvsB,GAAG,OAAOusB,OAAOygE,iBAAiBhpF,EAAED,EAAEyP,GAAG,kBAAI+Y,OAAOm+F,oBAAoB1mH,EAAED,EAAEyP,MAAI,CAACxP,EAAEwP,IAAgE,IAAIq4Q,IAAGC,EAAAA,EAAAA,eAAG,MAAyC,SAASpyP,KAAI,OAAOqyP,EAAAA,EAAAA,YAAGF,IAAI,SAAS54J,GAAT,GAAgC,IAAdjvH,EAAc,EAApB/C,MAAiBmvB,EAAG,EAAZs8B,SAAa,OAAOs/N,EAAAA,cAAiBH,GAAG90H,SAAS,CAAC91J,MAAM+C,GAAGosB,GAAqC,SAASyI,GAAG70B,GAAG,IAAIwP,EAAE,GAAGxP,EAAEyP,KAAK,OAAOzP,EAAEyP,KAAK,IAAI2c,EAAY,OAAT5c,EAAExP,EAAE0mR,IAAUl3Q,EAAE,SAAS,MAAa,iBAAH4c,GAA+B,WAAlBA,EAAErH,cAA+B,cAAxD,EAAiE,SAASsmI,GAAErrJ,EAAEosB,GAAG,SAAS67P,EAAAA,EAAAA,WAAG,kBAAIpzP,GAAG70B,MAAnB,GAAIwP,EAAJ,KAAMhQ,EAAN,KAAuB,OAAO6lB,IAAE,WAAK7lB,EAAEq1B,GAAG70B,MAAK,CAACA,EAAEyP,KAAKzP,EAAE0mR,KAAKrhQ,IAAE,WAAK7V,IAAI4c,EAAE7I,SAAS6I,EAAE7I,mBAAmB2kQ,oBAAoB97P,EAAE7I,QAAQm/K,aAAa,SAASljM,EAAE,YAAW,CAACgQ,EAAE4c,IAAI5c,EAAkD,SAAS65K,GAAT,GAAuD,IAAhCrpL,EAAgC,EAA1Ck5J,UAAmB9sI,EAAuB,EAA9B+7P,OAAc34Q,EAAgB,EAArBkwH,KAAqB,IAAd0oJ,QAAQ5oR,OAAM,SAAKO,GAAEsoR,EAAAA,EAAAA,QAAGj8P,GAAGpwB,GAAEqsR,EAAAA,EAAAA,QAAG74Q,IAAG84Q,EAAAA,EAAAA,YAAG,WAAKvoR,EAAEwjB,QAAQ6I,EAAEpwB,EAAEunB,QAAQ/T,IAAG,CAAC4c,EAAE5c,IAAI6V,IAAE,WAAK,GAAIrlB,GAAIR,EAAyI,IAAhI,IAAIjB,EAAEwB,EAAEwjB,QAAQmQ,EAAE13B,EAAEunB,QAAQzjB,EAAEX,OAAOwP,QAAO,SAAAuN,GAAC,OAAE3d,EAAE2d,KAAG,CAACqsQ,WAAWhqR,IAAI2+B,EAAEya,SAAS6wO,iBAAiBxoR,EAAEyoR,WAAWC,aAAa5oR,GAAE,GAASo9B,EAAEyrP,YAAYj1P,EAAEwJ,EAAE0rP,eAAc,CAAC5oR,EAAER,EAAEO,EAAE/D,IAA32B6rR,GAAG5wH,YAAY,oBAAg2B,IAAI4xH,IAAE,SAAG,GAAH,SAAM7oR,GAAG,OAAOA,EAAEg2K,UAA4B,IAAlBh2K,EAAE8oR,cAAkB9oR,EAAhC,SAAsCA,GAAtC,IAAwC+oR,kBAAkB,KAAKD,cAAc,OAA7F,MAAkG,GAAlG,SAAqG9oR,GAAG,OAAOA,EAAEg2K,UAA4B,IAAlBh2K,EAAE8oR,cAAkB9oR,EAAhC,SAAsCA,GAAtC,IAAwC8oR,cAAc,OAArK,MAA0K,GAA1K,SAA6K9oR,EAAEosB,GAAG,OAAOpsB,EAAEg2K,WAAW5pJ,EAAE4pJ,SAASh2K,EAAxB,SAA8BA,GAA9B,IAAgCg2K,SAAS5pJ,EAAE4pJ,cAApO,MAAgP,GAAhP,SAAmPh2K,EAAEosB,GAAG,GAAGpsB,EAAEg2K,UAAUh2K,EAAEgpR,WAAWzlQ,UAAUvjB,EAAEipR,gBAAgB1lQ,QAAQinP,QAA0B,IAAlBxqQ,EAAE8oR,cAAkB,OAAO9oR,EAAE,IAAIwP,EAAE04K,GAAG97J,EAAE,CAAC66P,aAAa,kBAAIjnR,EAAEw9B,SAAQ0pP,mBAAmB,kBAAIlnR,EAAE+oR,mBAAkB1B,UAAU,SAAA7nR,GAAC,OAAEA,EAAEy+C,IAAGmpO,gBAAgB,SAAA5nR,GAAC,OAAEA,EAAE0pR,QAAQ3lQ,QAAQyyJ,YAAW,OAAOh2K,EAAE+oR,oBAAoBv5Q,EAAExP,EAAxB,SAA8BA,GAA9B,IAAgC+oR,kBAAkBv5Q,OAA1iB,MAA+iB,GAAG,SAACxP,EAAEosB,GAAK,IAAIpwB,EAAMwT,EAAwB,OAAtBxP,EAAE+oR,kBAAyB/oR,EAAEw9B,QAAQx9B,EAAE+oR,mBAAmB,KAAKvpR,EAAEtD,MAAMoG,KAA+B,OAAzBtG,EAAEgE,EAAEgpR,WAAWzlQ,cAAe,EAAOvnB,EAAEgnM,iBAAiB,wCAAwC/1L,QAAO,SAAC1O,EAAEm1B,EAAE5zB,GAAL,OAASX,OAAOwP,OAAOpQ,EAAd,MAAkBm1B,EAAEuqB,GAAIn+C,MAAI,IAAIC,EAAE,YAAIC,EAAEw9B,SAAN,CAAc,CAACygB,GAAG7xB,EAAE6xB,GAAGirO,QAAQ98P,EAAE88P,WAAUt0O,MAAK,SAACr2C,EAAEm1B,GAAH,OAAOl0B,EAAEjB,EAAE0/C,IAAIz+C,EAAEk0B,EAAEuqB,OAAK,gBAAUj+C,GAAV,IAAYw9B,QAAQz9B,EAAEgpR,kBAA2B,OAAJv5Q,EAAS,KAAKzP,EAAEiC,QAAQwN,QAAl7B,MAA27B,GAAG,SAACxP,EAAEosB,GAAK,IAAI5c,EAAExP,EAAEw9B,QAAQp5B,QAAQ5E,EAAwB,OAAtBQ,EAAE+oR,kBAAyBv5Q,EAAExP,EAAE+oR,mBAAmB,KAAKhpR,EAAEyP,EAAE23Q,WAAU,SAAAnrR,GAAC,OAAEA,EAAEiiD,KAAK7xB,EAAE6xB,MAAI,OAAY,IAALl+C,GAAQyP,EAAEgD,OAAOzS,EAAE,GAAnB,SAA0BC,GAA1B,IAA4Bw9B,QAAQhuB,EAAEu5Q,kBAAuBhpR,IAAIC,EAAE+oR,mBAAuB,OAAJvpR,EAAS,KAAKgQ,EAAExN,QAAQxC,QAA1qC,IAAmrC2pR,IAAGt+P,EAAAA,EAAAA,eAAG,MAAuC,SAASs+J,GAAGnpL,GAAG,IAAIosB,GAAEg9P,EAAAA,EAAAA,YAAGD,IAAI,GAAO,OAAJ/8P,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,oDAAkE,MAAMyI,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAE25K,IAAI35K,EAAE,OAAO4c,EAAxN+8P,GAAGlyH,YAAY,kBAA2M,IAAIoyH,IAAGx+P,EAAAA,EAAAA,eAAG,MAAuC,SAASwgK,KAAK,IAAIrrL,GAAEopR,EAAAA,EAAAA,YAAGC,IAAI,GAAO,OAAJrpR,EAAS,CAAC,IAAIosB,EAAE,IAAI3jB,MAAM,+DAA+D,MAAMA,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBxgC,EAAEi/J,IAAIj/J,EAAE,OAAOpsB,EAAE,SAAS+5K,GAAG/5K,EAAEosB,GAAG,OAAO8sE,GAAE9sE,EAAE3c,KAAKo5Q,GAAG7oR,EAAEosB,GAAtQi9P,GAAGpyH,YAAY,kBAA0P,IAAIqyH,GAAGC,EAAAA,SAAGC,GAAGpxP,IAAE,SAAShM,EAAE5c,GAAE,MAAWhQ,EAAiC4sB,EAAvCnvB,MAAiB8C,EAAsBqsB,EAA/B4zB,SAAZ,EAA2C5zB,EAApB4pJ,SAASh6K,OAAhC,SAAwCuC,EAAxC,GAA2C6tB,EAA3C,IAA6CsH,GAAE22J,EAAAA,EAAAA,QAAG,CAACptL,MAAMuC,EAAEwgD,SAASjgD,IAAID,GAAEuqL,EAAAA,EAAAA,QAAG,CAACmgF,QAAO,EAAGif,MAAK,IAAKvsP,GAAEmtJ,EAAAA,EAAAA,QAAG,CAACq/F,kBAAa,IAASxtQ,GAAEytQ,EAAAA,EAAAA,YAAG5vG,GAAG,CAAC+uG,cAAc,EAAEc,iBAAiBl2P,EAAEu1P,gBAAgBnpR,EAAE+pR,cAAc3sP,EAAE4sP,UAASC,EAAAA,EAAAA,aAAKC,UAASD,EAAAA,EAAAA,aAAKE,WAAUF,EAAAA,EAAAA,aAAKf,YAAWe,EAAAA,EAAAA,aAAK/zG,SAASh6K,EAAEwhC,QAAQ,GAAGurP,kBAAkB,OAA/S,IAA8Y7sQ,EAA9Y,UAAsU+Y,EAAtU,EAAwT6zP,cAAwBl+P,EAAhV,EAAwU4S,QAA4B4sD,EAApW,EAAkV2+L,kBAA+B31P,EAAjX,EAAsW41P,WAAsBrlR,EAA5X,EAAmXqmR,SAAqB9pR,EAAxY,EAA8X+pR,UAAa99O,EAA3Y,KAAgZ9mB,IAAE,WAAKqO,EAAEnQ,QAAQtmB,MAAMuC,IAAG,CAACA,EAAEk0B,IAAIrO,IAAE,WAAKqO,EAAEnQ,QAAQy8B,SAASjgD,IAAG,CAACA,EAAE2zB,IAAIrO,IAAE,kBAAI8mB,EAAE,CAAC18B,KAAK,EAAEumK,SAASh6K,MAAI,CAACA,IAAIytB,GAAE,aAAY,SAAAinK,GAAI,IAAIj9J,EAAE6a,EAAEC,EAAM+8C,EAAEolG,EAAE7xL,OAAW,IAAJo2B,KAAwB,OAAdxB,EAAEvzB,EAAEqjB,cAAe,EAAOkQ,EAAE01B,SAASmiC,MAAqB,OAAdh9C,EAAE3qC,EAAE4f,cAAe,EAAO+qB,EAAE6a,SAASmiC,MAAqB,OAAd/8C,EAAEnb,EAAE7P,cAAe,EAAOgrB,EAAE4a,SAASmiC,KAAKn/C,EAAE,CAAC18B,KAAK,QAAO,IAAI45F,EAAM,OAAJjf,EAAS,KAAKx/D,EAAEw/D,GAAG8+L,QAAQ3lQ,QAAQtmB,MAAMk7B,GAAE+wJ,EAAAA,EAAAA,UAAG,iBAAK,CAACxkI,KAAS,IAAJzvB,EAAM+gJ,SAASh6K,EAAEkuR,YAAY9/L,EAAE+/L,aAAa9gL,KAAI,CAACp0E,EAAEj5B,EAAE4uB,EAAEw/D,IAAIyO,GAAE3gE,EAAAA,EAAAA,cAAE,WAAK,GAAIv0B,EAAE4f,cAAa,IAAJ/jB,EAAf,CAAiC,IAAIkxL,EAAExzJ,EAAE3Z,QAAQmmQ,aAAuB,mBAAHh5F,EAAc/sL,EAAE4f,QAAQtmB,MAAMyzL,EAAElxL,GAAa,iBAAHA,IAAcmE,EAAE4f,QAAQtmB,MAAMuC,MAAI,CAACA,EAAEmE,EAAEu5B,IAAI7E,GAAEH,EAAAA,EAAAA,cAAE,SAAAw4J,GAAI,IAAIplG,EAAE1gE,EAAEuiN,MAAK,SAAA7+L,GAAC,OAAEA,EAAE2P,KAAKyyI,KAAG,GAAIplG,EAAJ,CAAa,IAAY73D,EAAG63D,EAAX49L,QAAax1P,EAAEnQ,QAAQy8B,SAASvsB,EAAElQ,QAAQtmB,OAAO47F,OAAK,CAACjuE,EAAE8I,EAAE/vB,IAAIkI,GAAEqsB,EAAAA,EAAAA,cAAE,WAAK,GAAO,OAAJkyD,EAAS,CAAC,IAAYsmG,EAAG9lK,EAAEw/D,GAAb8+L,QAAgBx1P,EAAEnQ,QAAQy8B,SAAS0wI,EAAEntK,QAAQtmB,OAAO47F,OAAM,CAACzO,EAAEx/D,EAAE8I,EAAE/vB,IAAIgzB,GAAEuyJ,EAAAA,EAAAA,UAAG,iBAAK,CAACkhG,aAAa/xP,EAAEgyP,mBAAmBx+Q,KAAI,CAACwsB,EAAExsB,IAAI,OAAOwZ,IAAE,WAAS,IAAJ4P,GAAO4jE,MAAK,CAACA,EAAE5jE,IAAI5P,GAAEwzE,EAAE,CAACA,IAAIyxL,EAAAA,cAAiBjB,GAAGt2H,SAAS,CAAC91J,MAAM05B,GAAG2zP,EAAAA,cAAiBnB,GAAGp2H,SAAS,CAAC91J,MAAMif,GAAGouQ,EAAAA,cAAiBr7J,GAAE,CAAChyH,MAAMi8F,GAAEjkE,GAAD,UAAK,EAAG,GAAR,KAAW,EAAG,GAAd,KAAmB2pD,GAAE,CAAC9/E,MAAU,OAAJ0Q,EAASjR,EAAT,SAAeA,GAAf,IAAiB0tJ,IAAIz8I,IAAGmJ,KAAKwf,EAAEmuP,WAAWgD,GAAGjlR,KAAK,mBAA6BkmR,GAAGnyP,IAAE,SAAShM,EAAE5c,GAAuD4c,EAAxCnvB,MAAZ,IAAI47F,EAAExgE,EAAuBt4B,EAAuBqsB,EAAhC4zB,SAAwBhkD,EAAQowB,EAArBs9P,aAAkBnrR,EAAzC,GAA4C6tB,EAA5C,QAAoD+8J,GAAG,kBAAvD,GAA+Cz1J,EAA/C,KAAiD5zB,EAAjD,KAAyEo9B,EAAEmuJ,KAAKnvK,EAAEipB,GAAEzR,EAAEs2P,SAASx6Q,GAAGylB,EAAEvB,EAAEm2P,cAAcj/P,EAApH,oCAAmJqN,MAAMmyD,EAAE13C,KAAItf,EAAE25J,GAAGhtL,GAAGslB,IAAE,WAAK4P,EAAE1R,QAAQmmQ,aAAa1tR,IAAG,CAACA,EAAEi5B,IAAI,IAAItxB,GAAEu0B,EAAAA,EAAAA,cAAE,SAAArsB,GAAG,QAAC,OAAOA,EAAE/O,KAAK,IAAI,QAAQ+O,EAAEq9E,iBAAiBr9E,EAAEo9E,kBAAkB/rD,EAAEmtP,qBAAqBvqR,EAAE,CAAC2P,KAAK,IAAI,MAAM,IAAI,YAAY,OAAO5D,EAAEq9E,iBAAiBr9E,EAAEo9E,kBAAkBiQ,GAAExlE,EAAEo1P,eAAH,QAAmB,GAAG,kBAAIhpR,EAAE,CAAC2P,KAAK,EAAEotL,MAAM,OAA1C,KAA+C,GAAG,WAAK/8L,EAAE,CAAC2P,KAAK,IAAI26E,EAAEo7L,WAAU,WAAK9xP,EAAEk2P,iBAAiBrmQ,QAAQtmB,OAAO6C,EAAE,CAAC2P,KAAK,EAAEotL,MAAM,UAAtI,IAA+I,IAAI,UAAU,OAAOhxL,EAAEq9E,iBAAiBr9E,EAAEo9E,kBAAkBiQ,GAAExlE,EAAEo1P,eAAH,QAAmB,GAAG,kBAAIhpR,EAAE,CAAC2P,KAAK,EAAEotL,MAAM,OAA1C,KAA+C,GAAG,WAAK/8L,EAAE,CAAC2P,KAAK,IAAI26E,EAAEo7L,WAAU,WAAK9xP,EAAEk2P,iBAAiBrmQ,QAAQtmB,OAAO6C,EAAE,CAAC2P,KAAK,EAAEotL,MAAM,UAAtI,IAA+I,IAAI,OAAO,IAAI,SAAS,OAAOhxL,EAAEq9E,iBAAiBr9E,EAAEo9E,kBAAkBnpF,EAAE,CAAC2P,KAAK,EAAEotL,MAAM,IAAI,IAAI,MAAM,IAAI,WAAW,OAAOhxL,EAAEq9E,iBAAiBr9E,EAAEo9E,kBAAkBnpF,EAAE,CAAC2P,KAAK,EAAEotL,MAAM,IAAI,IAAI,SAAS,OAAOhxL,EAAEq9E,iBAAiBx1D,EAAEs1P,WAAWzlQ,UAAUmQ,EAAEu1P,gBAAgB1lQ,QAAQinP,QAAQ3+P,EAAEo9E,kBAAkBnpF,EAAE,CAAC2P,KAAK,IAAI,IAAI,MAAMytB,EAAEmtP,qBAAqBvqR,EAAE,CAAC2P,KAAK,OAAY,CAAC26E,EAAEtqF,EAAE4zB,EAAEwJ,IAAIh9B,GAAEg4B,EAAAA,EAAAA,cAAE,SAAArsB,GAAI,IAAI8qB,EAAE72B,EAAE,CAAC2P,KAAK,IAAmB,OAAdknB,EAAEvD,EAAE7P,UAAgBoT,EAAEt2B,KAAK+yB,EAAEvnB,KAAI,CAAC/L,EAAEszB,IAAI+Y,EAAEa,IAAG,WAAK,GAAKtZ,EAAEo2P,SAASvmQ,QAAQ,MAAM,CAACmQ,EAAEo2P,SAASvmQ,QAAQ06B,IAAI3iC,KAAK,OAAM,CAACoY,EAAEo2P,SAASvmQ,UAAU8lF,GAAE6/E,EAAAA,EAAAA,UAAG,iBAAK,CAACxkI,KAAuB,IAAlBhxB,EAAEo1P,cAAkB9yG,SAAStiJ,EAAEsiJ,YAAW,CAACtiJ,IAAIyE,EAAE,CAAC8zH,IAAI/vI,EAAE+hC,GAAGrzB,EAAEurP,KAAK,WAAW1mQ,KAAK,OAAO,gBAA0C,OAAzBopF,EAAEnlE,EAAEs1P,WAAWzlQ,cAAe,EAAOs1E,EAAE56C,GAAG,gBAAgBvqB,EAAEsiJ,cAAS,EAAyB,IAAlBtiJ,EAAEo1P,cAAkB,wBAA8C,OAAtBp1P,EAAEq1P,mBAA8D,OAAnC1wP,EAAE3E,EAAE8J,QAAQ9J,EAAEq1P,yBAA0B,EAAO1wP,EAAE4lB,GAAG,kBAAkB9R,EAAE6pI,SAAStiJ,EAAEsiJ,SAASw0G,UAAU7mR,EAAEq8C,SAAS9/C,GAAG,OAAO0+E,GAAE,CAAC9/E,MAAK,SAAKP,GAAK45B,GAAGxf,KAAK0wF,EAAEi9K,WAAjsD,QAA+sDjiR,KAAK,sBAAiComR,GAAGryP,IAAE,SAAShM,EAAE5c,GAAG,IAAI7L,EAAE,IAASwlL,GAAG,mBAAZ,GAAI3pL,EAAJ,KAAMO,EAAN,KAA+B/D,EAAEqvL,KAAK9sL,EAAE4mC,GAAE3lC,EAAEyqR,UAAUz6Q,GAAGkkB,EAAzD,qCAAyFuE,MAAMn4B,EAAE4yC,KAAIxV,GAAEhF,EAAAA,EAAAA,cAAE,SAAAh4B,GAAI,OAAOA,EAAEpD,KAAK,IAAI,YAAY,OAAOoD,EAAEgpF,iBAAiBhpF,EAAE+oF,kBAAoC,IAAlBzpF,EAAEspR,gBAAoB/oR,EAAE,CAAC0P,KAAK,IAAI3P,EAAE0lR,WAAU,WAAKhmR,EAAEoqR,iBAAiBrmQ,QAAQtmB,OAAO8C,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,QAAO/8L,EAAE0lR,WAAU,WAAK,IAAIr5O,EAAE,OAA8B,OAAvBA,EAAE3sC,EAAEwqR,SAASzmQ,cAAe,EAAO4oB,EAAE0wJ,MAAM,CAAC6tF,eAAc,OAAO,IAAI,UAAU,OAAOxqR,EAAEgpF,iBAAiBhpF,EAAE+oF,kBAAoC,IAAlBzpF,EAAEspR,gBAAoB/oR,EAAE,CAAC0P,KAAK,IAAI3P,EAAE0lR,WAAU,WAAKhmR,EAAEoqR,iBAAiBrmQ,QAAQtmB,OAAO8C,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,QAAO/8L,EAAE0lR,WAAU,WAAK,IAAIr5O,EAAE,OAA8B,OAAvBA,EAAE3sC,EAAEwqR,SAASzmQ,cAAe,EAAO4oB,EAAE0wJ,MAAM,CAAC6tF,eAAc,OAAO,IAAI,SAAS,OAAOxqR,EAAEgpF,iBAAiB1pF,EAAEwpR,WAAWzlQ,UAAU/jB,EAAEypR,gBAAgB1lQ,QAAQinP,QAAQtqQ,EAAE+oF,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAAI3P,EAAE0lR,WAAU,WAAK,IAAIr5O,EAAE,OAA8B,OAAvBA,EAAE3sC,EAAEwqR,SAASzmQ,cAAe,EAAO4oB,EAAE0wJ,MAAM,CAAC6tF,eAAc,UAAS,CAAC5qR,EAAEC,EAAEP,EAAExD,IAAIkgB,GAAEgc,EAAAA,EAAAA,cAAE,SAAAh4B,GAAI,GAAGkpE,GAAElpE,EAAEmiL,eAAe,OAAOniL,EAAEgpF,iBAAmC,IAAlB1pF,EAAEspR,cAAkB/oR,EAAE,CAAC0P,KAAK,KAAKvP,EAAEgpF,iBAAiBnpF,EAAE,CAAC0P,KAAK,KAAK3P,EAAE0lR,WAAU,WAAK,IAAIr5O,EAAE,OAA8B,OAAvBA,EAAE3sC,EAAEwqR,SAASzmQ,cAAe,EAAO4oB,EAAE0wJ,MAAM,CAAC6tF,eAAc,SAAQ,CAAC3qR,EAAED,EAAEN,IAAIy1B,EAAE+X,IAAG,WAAK,GAAKxtC,EAAEsqR,SAASvmQ,QAAQ,MAAM,CAAC/jB,EAAEsqR,SAASvmQ,QAAQ06B,GAAGvqB,GAAGpY,KAAK,OAAM,CAAC9b,EAAEsqR,SAASvmQ,QAAQmQ,IAAI9I,GAAEs+J,EAAAA,EAAAA,UAAG,iBAAK,CAACxkI,KAAuB,IAAlBllD,EAAEspR,cAAkB9yG,SAASx2K,EAAEw2K,YAAW,CAACx2K,IAAI4qF,EAAEh+D,EAAEgH,EAAE,CAAC64H,IAAI1tJ,EAAE0/C,GAAGvqB,EAAEjkB,KAAK47I,GAAEj/H,EAAE5sB,EAAEyqR,WAAWU,UAAU,EAAE,iBAAgB,EAAG,gBAA0C,OAAzBhnR,EAAEnE,EAAEwpR,WAAWzlQ,cAAe,EAAO5f,EAAEs6C,GAAG,gBAAgBz+C,EAAEw2K,cAAS,EAAyB,IAAlBx2K,EAAEspR,cAAkB,kBAAkB7zP,EAAE+gJ,SAASx2K,EAAEw2K,SAASj4H,QAAQ7hC,EAAEsuQ,UAAUttP,GAAG,OAAO0hD,GAAE,CAAC9/E,MAAK,SAAKsrF,GAAKh3D,GAAGza,KAAKiS,EAAE07P,WAAzjD,SAAukDjiR,KAAK,uBAA+X,IAAmBumR,GAAGxyP,IAAE,SAAShM,EAAE5c,GAAG,IAAI4jB,EAAE,EAAoBhH,EAAhBq9P,KAAKjqR,OAAT,SAAiBO,EAAjB,GAAoBqsB,EAApB,IAAuBpwB,EAAvB,EAA0BmtL,GAAG,oBAA7B,MAAkE5qL,EAAGvC,EAAnBitR,gBAAqBv1P,EAAEyR,GAAEnpC,EAAEgtR,WAAWx5Q,GAAG1P,EAA3F,sCAA4Hm4B,MAAMiF,EAAExH,KAAIxZ,EAAW,OAAJghB,EAAa,IAAJA,EAAwB,IAAlBlhC,EAAE8sR,cAAqBzjQ,IAAE,WAAK,IAAI1hB,EAAEpF,EAAEglB,QAAQinP,OAAqB,OAAb7mQ,EAAEyoB,EAAEo+O,SAAc7mQ,IAAM,CAACpF,EAAE6tB,EAAEo+O,SAASnlP,IAAE,WAAK9mB,EAAEglB,QAAQkmQ,KAAKjqR,IAAG,CAACA,EAAEjB,IAAI8qL,GAAG,CAACnwB,UAAUl9J,EAAEgtR,WAAWzlQ,QAAQ6kQ,QAA0B,IAAlBpsR,EAAE8sR,cAAkBX,OAA5D,SAAmExkR,GAAG,MAAgC,WAAzBA,EAAEiiD,aAAa,QAAmB6iO,WAAWoC,cAAclnR,EAAE++L,aAAa,QAAQ+lF,WAAWqC,YAAYrC,WAAWsC,eAAerrJ,KAAhN,SAAqN/7H,GAAGA,EAAEkhD,aAAa,OAAO,WAAW,IAAI5vB,EAAE+X,IAAG,WAAK,IAAIrpC,EAAEzD,EAAEisC,EAAE,OAAoD,OAA7CA,EAA0B,OAAvBxoC,EAAE3H,EAAE8tR,SAASvmQ,cAAe,EAAO5f,EAAEs6C,IAAU9R,EAA2B,OAAxBjsC,EAAElE,EAAEiuR,UAAU1mQ,cAAe,EAAOrjB,EAAE+9C,KAAI,CAACjiD,EAAE8tR,SAASvmQ,QAAQvnB,EAAEiuR,UAAU1mQ,UAAUqH,GAAEs+J,EAAAA,EAAAA,UAAG,iBAAK,CAACxkI,KAAuB,IAAlB1oD,EAAE8sR,iBAAoB,CAAC9sR,IAAIouF,EAAE,CAAC,wBAA8C,OAAtBpuF,EAAE+sR,mBAA8D,OAAnC31P,EAAEp3B,EAAEwhC,QAAQxhC,EAAE+sR,yBAA0B,EAAO31P,EAAE6qB,GAAG,kBAAkBhpB,EAAEkhP,KAAK,UAAUl4N,GAAGn+C,EAAEmsJ,IAAIv4H,GAAG,OAAOkrD,GAAE,CAAC9/E,MAAK,SAAKiB,GAAKqqF,GAAGzxE,KAAKiS,EAAE07P,WAA58B,KAA09BC,SAAl9B,EAA89BC,QAAQtqQ,EAAE7X,KAAK,wBAAupDlF,OAAOwP,OAAO66Q,GAAG,CAACwB,MAAMT,GAAGU,OAAOR,GAAGS,MAAthG,SAAYlrR,GAAG,IAAIosB,EAAJ,EAAO+8J,GAAG,kBAAV,MAA4B35K,EAA5B,oCAA2DyoB,MAAMz4B,GAAE04B,EAAAA,EAAAA,cAAE,WAAK,IAAI35B,EAAE,OAA8B,OAAvBA,EAAE6tB,EAAE49P,SAASzmQ,cAAe,EAAOhlB,EAAEs+L,MAAM,CAAC6tF,eAAc,MAAM,CAACt+P,EAAE49P,WAAWjqR,GAAEmpL,EAAAA,EAAAA,UAAG,iBAAK,CAACxkI,KAAuB,IAAlBt4B,EAAE08P,cAAkB9yG,SAAS5pJ,EAAE4pJ,YAAW,CAAC5pJ,IAAIpwB,EAAE,CAACiwJ,IAAI7/H,EAAE09P,SAAS7rO,GAAGzuC,EAAEuuC,QAAQv+C,GAAG,OAAOo/E,GAAE,CAAC9/E,MAAK,SAAKkB,GAAKhE,GAAG2c,KAAK5Y,EAAEumR,WAAhU,QAA8UjiR,KAAK,oBAAotF8mR,QAAQP,GAAGQ,OAAjrD,SAAYprR,GAAG,MAAgCA,EAA5Bg2K,SAAS5pJ,OAAb,SAAwB5c,EAAQxP,EAAd/C,MAAWuC,EAA7B,GAAgCQ,EAAhC,QAAwCmpL,GAAG,mBAA3C,GAAmCppL,EAAnC,KAAqC/D,EAArC,KAA8DuC,EAAE8sL,KAAK33J,EAArE,qCAAqGuE,MAAMn4B,EAAwB,OAAtBC,EAAEgpR,mBAAyBhpR,EAAEy9B,QAAQz9B,EAAEgpR,mBAAmB9qO,KAAKvqB,EAAKwJ,EAAEn9B,EAAE6pR,iBAAiBrmQ,QAAQtmB,QAAQuS,EAAE0M,GAAEmuK,EAAAA,EAAAA,QAAG,CAACrU,SAAS5pJ,EAAEnvB,MAAMuS,IAAI6V,IAAE,WAAKnJ,EAAEqH,QAAQyyJ,SAAS5pJ,IAAG,CAAClQ,EAAEkQ,IAAI/G,IAAE,WAAKnJ,EAAEqH,QAAQtmB,MAAMuS,IAAG,CAAC0M,EAAE1M,IAAI6V,IAAE,WAAK,IAAIgkF,EAAElxE,EAAEjc,EAAEqH,QAAQ8nQ,UAAyE,OAA9DlzP,EAAkC,OAA/BkxE,EAAE1xD,SAASsM,eAAevwB,SAAU,EAAO21E,EAAE9gB,kBAAmB,EAAOpwD,EAAEpT,gBAAe,CAAC7I,EAAEwX,IAAI,IAAIuB,GAAEiD,EAAAA,EAAAA,cAAE,kBAAI35B,EAAE6rR,aAAa12P,KAAG,CAACn1B,EAAEm1B,IAAIrO,IAAE,kBAAKrpB,EAAE,CAACyT,KAAK,EAAEwuC,GAAGvqB,EAAEw1P,QAAQhtQ,IAAI,kBAAIlgB,EAAE,CAACyT,KAAK,EAAEwuC,GAAGvqB,OAAK,CAACxX,EAAEwX,IAAIrO,IAAE,WAAuB,IAAlBtlB,EAAE+oR,iBAAqB5rP,GAAGlhC,EAAE,CAACyT,KAAK,EAAEotL,MAAM,EAAE5+I,GAAGvqB,OAAM,CAAC3zB,EAAE+oR,cAAc5rP,EAAExJ,IAAIrO,IAAE,WAAK,GAAqB,IAAlBtlB,EAAE+oR,eAAoBhpR,EAAzB,CAAkC,IAAIupG,EAAEt+E,KAAI,OAAOs+E,EAAEmtD,uBAAsB,WAAK,IAAIr+H,EAAE0gE,EAAoE,OAAjEA,EAAkC,OAA/B1gE,EAAEwf,SAASsM,eAAevwB,SAAU,EAAOyE,EAAEmzP,iBAAuBzyL,EAAEx4F,KAAK83B,EAAE,CAACruB,MAAM,eAAcu/F,EAAEo8K,WAAS,CAAC/xP,EAAE5zB,EAAEC,EAAE+oR,cAAc/oR,EAAEgpR,oBAAoB,IAAIn+P,GAAEsN,EAAAA,EAAAA,cAAE,SAAAmxE,GAAI,GAAGj9E,EAAE,OAAOi9E,EAAEngB,iBAAiBj0D,IAAIj5B,EAAE,CAACyT,KAAK,IAAIsb,KAAIy6P,WAAU,WAAK,IAAIrtP,EAAE,OAA8B,OAAvBA,EAAEp4B,EAAEiqR,SAASzmQ,cAAe,EAAO4U,EAAE0kK,MAAM,CAAC6tF,eAAc,SAAQ,CAAC1uR,EAAE+D,EAAEiqR,SAAS59P,EAAE6I,IAAIm1D,GAAElyD,EAAAA,EAAAA,cAAE,WAAK,GAAG9L,EAAE,OAAOpwB,EAAE,CAACyT,KAAK,EAAEotL,MAAM,IAAI7gM,EAAE,CAACyT,KAAK,EAAEotL,MAAM,EAAE5+I,GAAGvqB,MAAK,CAACtH,EAAEsH,EAAE13B,IAAIo3B,GAAE8E,EAAAA,EAAAA,cAAE,WAAK9L,GAAGtsB,GAAG9D,EAAE,CAACyT,KAAK,EAAEotL,MAAM,EAAE5+I,GAAGvqB,MAAK,CAACtH,EAAEtsB,EAAE4zB,EAAE13B,IAAI2H,GAAEu0B,EAAAA,EAAAA,cAAE,WAAK9L,IAAItsB,GAAGC,EAAEkpR,gBAAgB1lQ,QAAQkmQ,MAAMztR,EAAE,CAACyT,KAAK,EAAEotL,MAAM,MAAK,CAACzwK,EAAEtsB,EAAE9D,EAAE+D,EAAE+oR,cAAc/oR,EAAE6pR,mBAAmB1pR,GAAEgpL,EAAAA,EAAAA,UAAG,iBAAK,CAACinC,OAAOrwN,EAAE0gD,SAAStjB,EAAE84I,SAAS5pJ,KAAI,CAACtsB,EAAEo9B,EAAE9Q,IAAI,OAAOwyD,GAAE,CAAC9/E,MAAK,SAAKU,GAAK,CAACy+C,GAAGvqB,EAAEyiP,KAAK,SAASwU,UAAa,IAAJv+P,OAAO,GAAQ,EAAE,iBAAoB,IAAJA,QAAU,EAAO,iBAAoB,IAAJ8Q,QAAU,EAAO84I,cAAS,EAAOj4H,QAAQnzB,EAAE2gQ,QAAQnhM,EAAEohM,cAAcp4P,EAAEq4P,YAAYr4P,EAAEs4P,eAAe/nR,EAAEgoR,aAAahoR,IAAIgV,KAAKzY,EAAEomR,WAA/kD,KAA6lDjiR,KAAK,uBAAoB,IAAyRunR,GAAG,CAAC,yBAAyB,aAAa,UAAU,aAAa,yBAAyB,SAAS,wBAAwB,yBAAyB,4BAA4B7iR,KAAI,SAAA/I,GAAC,gBAAKA,EAAL,4BAA+Bsb,KAAK,KAAK,SAASouK,KAAmB,IAAhB1pL,EAAgB,uDAAd23C,SAASmL,KAAM,OAAU,MAAH9iD,EAAQ,GAAG9D,MAAMoG,KAAKtC,EAAEgjM,iBAAiB4oF,KAAK,SAAStjG,GAAGtoL,GAAM,MAAJosB,EAAI,uDAAF,EAAG,OAAOpsB,IAAI23C,SAASmL,MAAQo2C,GAAE9sE,GAAD,QAAK,GAAL,WAAU,OAAOpsB,EAAEwnF,QAAQokM,OAA3B,KAAiC,GAAjC,WAA8C,IAAR,IAAIp8Q,EAAExP,EAAW,OAAJwP,GAAU,CAAC,GAAGA,EAAEg4E,QAAQokM,IAAI,OAAM,EAAGp8Q,EAAEA,EAAE83Q,cAAc,OAAM,KAAhH,IAAsH,SAASj/F,GAAGroL,GAAM,MAAHA,GAASA,EAAE68L,MAAM,CAAC6tF,eAAc,IAAK,SAASriN,GAAEroE,EAAEosB,GAAG,IAA+kB8Q,EAA3kB1tB,EAAEtT,MAAME,QAAQ4D,GAAGA,EAAEoE,QAAQwwC,MAAK,SAAC14B,EAAE+Y,GAAK,IAAIrK,EAAE1O,EAAEyuK,wBAAwB11J,GAAG,OAAOrK,EAAE09B,KAAKujO,6BAA6B,EAAEjhQ,EAAE09B,KAAKwjO,4BAA4B,EAAE,KAAIpiG,GAAG1pL,GAAGR,EAAEm4C,SAASw9H,cAAcp1K,EAAG,WAAK,GAAI,EAADqsB,EAAQ,OAAO,EAAE,GAAI,GAADA,EAAQ,OAAO,EAAE,MAAM,IAAI3jB,MAAM,iEAA7D,GAAkIzM,EAAG,WAAK,GAAK,EAAFowB,EAAI,OAAO,EAAE,GAAK,EAAFA,EAAI,OAAOjb,KAAK6X,IAAI,EAAExZ,EAAExN,QAAQxC,IAAI,EAAE,GAAK,EAAF4sB,EAAI,OAAOjb,KAAK6X,IAAI,EAAExZ,EAAExN,QAAQxC,IAAI,EAAE,GAAK,EAAF4sB,EAAI,OAAO5c,EAAEzT,OAAO,EAAE,MAAM,IAAI0M,MAAM,iEAAhJ,GAAqNlK,EAAI,GAAF6tB,EAAK,CAACs+P,eAAc,GAAI,GAAGh3P,EAAE,EAAE5zB,EAAE0P,EAAEzT,OAAS,EAAE,CAAC,GAAG23B,GAAG5zB,GAAG4zB,EAAE5zB,GAAG,EAAE,OAAO,EAAE,IAAIoc,EAAElgB,EAAE03B,EAAE,GAAK,GAAFtH,EAAKlQ,GAAGA,EAAEpc,GAAGA,MAAM,CAAC,GAAGoc,EAAE,EAAE,OAAO,EAAE,GAAGA,GAAGpc,EAAE,OAAO,EAAY,OAAVo9B,EAAE1tB,EAAE0M,KAAYghB,EAAE2/J,MAAMt+L,GAAGm1B,GAAG3zB,QAAQm9B,IAAIya,SAASw9H,eAAe,OAAOj4I,EAAEwlK,aAAa,aAAaxlK,EAAE2nB,aAAa,WAAW,KAAK,EAAkD,SAASklI,KAAK,IAAI/pL,GAAE+rR,EAAAA,EAAAA,SAAG,GAAI,OAAOC,EAAAA,EAAAA,YAAG,kBAAKhsR,EAAEujB,SAAQ,EAAG,WAAKvjB,EAAEujB,SAAQ,KAAK,IAAIvjB,EAAE,SAAS4qL,GAAG5qL,GAAwC,IAAtCosB,EAAsC,uDAApC,GAAoC,yDAAH,GAAhB5c,EAAmB,EAAhCy8Q,aAA0BzsR,EAAM,EAAjB0sR,WAAsBnsR,GAAEosR,EAAAA,EAAAA,QAAkB,oBAAR5jQ,OAAoBovB,SAASw9H,cAAc,MAAMn5K,GAAEmwR,EAAAA,EAAAA,QAAG,MAAM5tR,EAAEwrL,KAAKr2J,EAAEvxB,QAAU,GAAFiqB,GAAMtsB,EAAEqC,QAAU,EAAFiqB,IAAKggQ,EAAAA,EAAAA,YAAG,YAAM14P,IAAI3zB,EAAEwjB,QAAQo0B,SAASw9H,iBAAgB,CAACzhJ,KAAI04P,EAAAA,EAAAA,YAAG,WAAK,GAAK14P,EAAE,OAAM,WAAK20J,GAAGtoL,EAAEwjB,SAASxjB,EAAEwjB,QAAQ,QAAO,CAACmQ,KAAI04P,EAAAA,EAAAA,YAAG,WAAK,GAAItsR,GAAIE,EAAEujB,QAAV,CAAyB,IAAI2Z,EAAEya,SAASw9H,cAAc,GAAM,MAAH3lK,OAAQ,EAAOA,EAAE+T,SAAS,IAAO,MAAH/T,OAAQ,EAAOA,EAAE+T,WAAW2Z,EAAe,YAAZlhC,EAAEunB,QAAQ2Z,QAAe,GAAGl9B,EAAEujB,QAAQ4lC,SAASjsB,GAAgB,YAAZlhC,EAAEunB,QAAQ2Z,IAAa,MAAH1tB,OAAQ,EAAOA,EAAE+T,SAAS8kK,GAAG74K,EAAE+T,SAA0B,IAAjB8kD,GAAEroE,EAAEujB,QAAQ,IAAQsc,QAAQxY,KAAK,4DAA4DrrB,EAAEunB,QAAQo0B,SAASw9H,iBAAe,CAACn1K,EAAEwP,EAAE1P,IAAI2pB,GAAE,WAAU,SAAAyT,KAAQ,EAAF9Q,KAAOpsB,EAAEujB,SAAiB,QAAR2Z,EAAEpgC,MAAcogC,EAAEgsD,iBAAoD,IAAnC7gB,GAAEroE,EAAEujB,QAAyB,IAAhB2Z,EAAE2mJ,SAAS,EAAE,MAAa7nL,EAAEunB,QAAQo0B,SAASw9H,mBAAkB1rJ,GAAE,SAAQ,SAAAyT,GAAI,GAAO,EAAF9Q,EAAL,CAAiB,IAAIlQ,EAAE,IAAIiiD,IAAO,MAAH3+D,OAAQ,EAAOA,EAAE+jB,SAAS,GAAGrH,EAAErH,IAAI7U,GAAIkc,EAAEiF,KAAf,CAA2B,IAAI8T,EAAEj5B,EAAEunB,QAAQ,GAAI0R,GAAI12B,EAAEglB,QAAV,CAAyB,IAAIqH,EAAEsS,EAAEr+B,OAAO+rB,GAAGA,aAAayhQ,YAAYC,GAAGpwQ,EAAE0O,IAAI5uB,EAAEunB,QAAQqH,EAAEy9J,GAAGz9J,KAAKsS,EAAEgsD,iBAAiBhsD,EAAE+rD,kBAAkBo/F,GAAGpzJ,IAAIozJ,GAAGrsL,EAAEunB,eAAU,GAAI,SAAS+oQ,GAAGtsR,EAAEosB,GAAG,IAAI5c,EAAL,OAAoBxP,GAApB,IAAO,4BAAe,GAAkB,OAAdwP,EAAnB,QAAuB+T,cAAe,EAAO/T,EAAE25C,SAAS/8B,GAAG,OAAM,GAAxE,8BAA2E,OAAM,EAAG,IAAIm8J,GAAG,IAAIpqH,IAAIwwC,GAAE,IAAIjqG,IAAI,SAAS6nR,GAAGvsR,GAAGA,EAAE6kD,aAAa,cAAc,QAAQ7kD,EAAEwsR,OAAM,EAAG,SAASC,GAAGzsR,GAAG,IAAIosB,EAAEuiF,GAAEvtG,IAAIpB,IAAIosB,IAAuB,OAAnBA,EAAE,eAAsBpsB,EAAE2vJ,gBAAgB,eAAe3vJ,EAAE6kD,aAAa,cAAcz4B,EAAE,gBAAgBpsB,EAAEwsR,MAAMpgQ,EAAEogQ,OAA41B,IAAIrT,IAAGuT,EAAAA,EAAAA,gBAAG,GAAgC,SAASC,GAAG3sR,GAAG,OAAO4sR,EAAAA,cAAiBzT,GAAGpmH,SAAS,CAAC91J,MAAM+C,EAAEigR,OAAOjgR,EAAE0oD,UAAU,SAASmkO,KAAS,IAAA7sR,GAAxG8sR,EAAAA,EAAAA,YAAG3T,IAA4G/sP,GAAE+qL,EAAAA,EAAAA,YAAG41E,IAAZ,KAAsBnwC,EAAAA,EAAAA,WAAG,WAAK,IAAI58O,GAAO,OAAJosB,GAAyB,oBAAR7D,OAAoB,OAAO,KAAK,IAAIxoB,EAAE43C,SAASsM,eAAe,0BAA0B,GAAGlkD,EAAE,OAAOA,EAAE,IAAI/D,EAAE27C,SAASiN,cAAc,OAAO,OAAO5oD,EAAE6oD,aAAa,KAAK,0BAA0BlN,SAASmL,KAAKiC,YAAY/oD,MAA/Q,GAAiBwT,EAAjB,KAAmBhQ,EAAnB,KAAoR,OAAOwtR,EAAAA,EAAAA,YAAG,WAAS,OAAJx9Q,IAAWmoC,SAASmL,KAAKqG,SAAS35C,IAAImoC,SAASmL,KAAKiC,YAAYv1C,MAAK,CAACA,KAAIw9Q,EAAAA,EAAAA,YAAG,WAAKhtR,GAAO,OAAJosB,GAAU5sB,EAAE4sB,EAAE7I,WAAU,CAAC6I,EAAE5sB,EAAEQ,IAAIwP,EAAE,IAAIy9Q,GAAGC,EAAAA,SAAG,SAASphG,GAAG9rL,GAAO,IAAAosB,EAAEpsB,EAAEwP,EAAEq9Q,KAAMrtR,EAAZ,GAAeo9O,EAAAA,EAAAA,WAAG,iBAAmB,oBAARr0N,OAAoB,KAAKovB,SAASiN,cAAc,UAA7E,MAAqF7kD,EAAEgsB,KAAI,OAAO1G,IAAE,WAAK,GAAK7V,GAAKhQ,EAAE,OAAOgQ,EAAEu1C,YAAYvlD,GAAG,WAAK,IAAIxD,GAAGwT,IAAIhQ,IAAIgQ,EAAE20C,YAAY3kD,GAAGgQ,EAAE0iJ,WAAWn2J,QAAQ,IAAyB,OAApBC,EAAEwT,EAAE83Q,gBAAsBtrR,EAAEmoD,YAAY30C,QAAO,CAACA,EAAEhQ,IAAIO,GAAGyP,GAAIhQ,GAAO2tR,EAAAA,EAAAA,cAAGvuM,GAAE,CAAC9/E,MAAMstB,EAAEk6P,WAAW2G,GAAG5oR,KAAK,WAAW7E,GAAG,KAAK,IAAI4tR,GAAGF,EAAAA,SAAGH,IAAG7+G,EAAAA,EAAAA,eAAG,MAAyI4d,GAAGuhG,MAAtI,SAAYrtR,GAAG,IAAWosB,EAAQpsB,EAAfnB,OAAY2Q,EAAhB,GAAmBxP,EAAnB,IAAqB,OAAOstR,EAAAA,cAAiBP,GAAGh6H,SAAS,CAAC91J,MAAMmvB,GAAGwyD,GAAE,CAAC9/E,MAAM0Q,EAAE82Q,WAAW8G,GAAG/oR,KAAK,oBAA0I,IAAIkpR,IAAGtxL,EAAAA,EAAAA,eAAG,MAAM,SAASuxL,KAAK,IAAIxtR,GAAEytR,EAAAA,EAAAA,YAAGF,IAAI,GAAO,OAAJvtR,EAAS,CAAC,IAAIosB,EAAE,IAAI3jB,MAAM,iFAAiF,MAAMA,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBxgC,EAAEohQ,IAAIphQ,EAAE,OAAOpsB,EAAE,SAAS20B,KAAK,SAAS+4P,EAAAA,EAAAA,UAAG,IAAZ,GAAI1tR,EAAJ,KAAMosB,EAAN,KAAgB,MAAM,CAACpsB,EAAEjE,OAAO,EAAEiE,EAAEsb,KAAK,UAAK,GAAOqyQ,EAAAA,EAAAA,UAAG,kBAAI,SAASnuR,GAAG,IAAIO,GAAE6tR,EAAAA,EAAAA,cAAG,SAAArvR,GAAC,OAAG6tB,GAAE,SAAAsH,GAAC,kBAAMA,GAAN,CAAQn1B,OAAI,kBAAI6tB,GAAE,SAAAsH,GAAI,IAAI5zB,EAAE4zB,EAAEtvB,QAAQ84B,EAAEp9B,EAAEkC,QAAQzD,GAAG,OAAY,IAAL2+B,GAAQp9B,EAAE0S,OAAO0qB,EAAE,GAAGp9B,QAAK,IAAI9D,GAAE2xR,EAAAA,EAAAA,UAAG,iBAAK,CAACE,SAAS9tR,EAAE4Y,KAAKnZ,EAAEmZ,KAAKtU,KAAK7E,EAAE6E,KAAKvF,MAAMU,EAAEV,SAAQ,CAACiB,EAAEP,EAAEmZ,KAAKnZ,EAAE6E,KAAK7E,EAAEV,QAAQ,OAAOgvR,EAAAA,cAAiBP,GAAGx6H,SAAS,CAAC91J,MAAMjB,GAAGwD,EAAEkpD,aAAW,CAACt8B,KAAgB,SAAS48J,GAAGhpL,GAAG,IAAIosB,EAAEohQ,KAAKh+Q,EAAC,iCAA2ByoB,MAAM5S,IAAE,kBAAI+G,EAAEyhQ,SAASr+Q,KAAG,CAACA,EAAE4c,EAAEyhQ,WAAW,IAAIruR,EAAEQ,EAAED,EAAC,SAAKqsB,EAAEttB,OAAP,IAAam/C,GAAGzuC,IAAG,OAAOovE,GAAE,CAAC9/E,MAAK,SAAKU,GAAKO,GAAG4Y,KAAKyT,EAAEzT,MAAM,GAAG2tQ,WAA5K,IAA0LjiR,KAAK+nB,EAAE/nB,MAAM,gBAA8F,IAAI0pR,IAAG/0I,EAAAA,EAAAA,gBAAG,eAAkE,SAASg1I,GAAT,GAAqD,IAA/BhuR,EAA+B,EAAxC0oD,SAAoBt8B,EAAoB,EAA7B6hQ,SAAgBz+Q,EAAa,EAAlBC,KAAejQ,EAAG,EAAX+7J,QAAgBx7J,GAAjEmuR,EAAAA,EAAAA,YAAGH,IAAqE/xR,GAAEmyR,EAAAA,EAAAA,cAAG,WAAY,MAAH/hQ,GAASA,EAAC,WAAD,aAAQrsB,EAAC,WAAD,eAAS,CAACA,EAAEqsB,IAAI,OAAO/G,IAAE,kBAAKrpB,EAAE,EAAEwT,EAAEhQ,GAAG,kBAAIxD,EAAE,EAAEwT,EAAEhQ,MAAI,CAACxD,EAAEwT,EAAEhQ,IAAI4uR,EAAAA,cAAiBL,GAAGh7H,SAAS,CAAC91J,MAAMjB,GAAGgE,GAA/P+tR,GAAG92H,YAAY,eAAmP,IAAIo3H,GAAE,MAAG,GAAH,SAAMruR,EAAEosB,GAAG,OAAOpsB,EAAE61Q,UAAUzpP,EAAE6xB,GAAGj+C,EAAjB,SAAuBA,GAAvB,IAAyB61Q,QAAQzpP,EAAE6xB,QAAM4tI,IAAGyiG,EAAAA,EAAAA,eAAG,MAAqC,SAASC,GAAGvuR,GAAG,IAAIosB,GAAEoiQ,EAAAA,EAAAA,YAAG3iG,IAAI,GAAO,OAAJz/J,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,oCAA2CyuR,GAAGx3H,YAA9C,mBAA2E,MAAMxuJ,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAE++Q,IAAI/+Q,EAAE,OAAO4c,EAAE,SAASsiQ,GAAG1uR,EAAEosB,GAAG,OAAO8sE,GAAE9sE,EAAE3c,KAAK4+Q,GAAGruR,EAAEosB,GAAvQy/J,GAAG50B,YAAY,gBAA2P,IAAoBz0C,GAAGpqF,IAAE,SAAShM,EAAE5c,GAAE,MAAUhQ,EAAiC4sB,EAAtCs4B,KAAe3kD,EAAuBqsB,EAA/B4xB,QAAuBhiD,EAAQowB,EAArB6/P,aAAkB1tR,EAAvC,GAA0C6tB,EAA1C,SAAkDuiQ,EAAAA,EAAAA,UAAG,GAArD,GAA6Cj7P,EAA7C,KAA+C5zB,EAA/C,KAAwDo9B,EAAExH,UAAQ,IAAJl2B,GAAgB,OAAJ09B,IAAW19B,EAAE05F,GAAEh8D,GAAD,QAAK,GAAG,GAAR,KAAY,GAAG,GAAf,KAAqB,IAAIhhB,GAAE0yQ,EAAAA,EAAAA,QAAG,IAAIzwN,KAAKlpC,GAAE25P,EAAAA,EAAAA,QAAG,MAAMhkQ,EAAEua,GAAElQ,EAAEzlB,GAAG46E,EAAEh+D,EAAEroB,eAAe,SAAa,OAAJm5B,EAAS9J,EAAEhH,EAAEroB,eAAe,WAAW,IAAIqmF,IAAIh3D,EAAE,MAAM,IAAI3qB,MAAM,kFAAkF,IAAI2hF,EAAE,MAAM,IAAI3hF,MAAM,8EAA8E,IAAI2qB,EAAE,MAAM,IAAI3qB,MAAM,8EAA8E,GAAa,kBAAHjJ,EAAa,MAAM,IAAIiJ,MAAJ,iGAAwGjJ,IAAK,GAAa,mBAAHO,EAAc,MAAM,IAAI0I,MAAJ,qGAA4G1I,IAAS,IAAA4D,EAAEnE,EAAE,EAAE,EAAEU,EAAW,OAAJg9B,EAAa,IAAJA,EAAU,IAAJv5B,EAA9B,KAA6CwoF,EAAAA,EAAAA,YAAGuiM,GAAG,CAAC7Y,QAAQ,KAAKgZ,cAAc,OAA/E,GAAwC1iP,EAAxC,KAA0Ck9D,EAA1C,KAAsFlxE,GAAEqyJ,EAAAA,EAAAA,cAAG,kBAAIzqL,GAAE,KAAI,CAACA,IAAI84F,GAAE2xF,EAAAA,EAAAA,cAAG,SAAA3qL,GAAC,OAAEwpG,EAAE,CAAC55F,KAAK,EAAEwuC,GAAGp+C,MAAI,CAACwpG,IAAIx9F,EAAEkgB,MAAS,IAAJpoB,EAAMgzB,EAAEjD,EAAE,EAAEg9J,EAAW,QAAT89F,EAAAA,EAAAA,YAAG3iG,IAAWjB,GAAG31J,EAAEppB,EAAEqtF,GAAEviE,EAAE,SAAS,OAAO,CAAC7a,OAAO,GAAGgzQ,KAAK,KAAK,EAAE,CAAC7C,aAAajwR,EAAEkwR,WAAWhwQ,IAArgJ,SAAYlc,GAAO,IAALosB,IAAK,yDAAC/G,IAAE,WAAK,GAAI+G,GAAIpsB,EAAEujB,QAAV,CAAyB,IAAI/T,EAAExP,EAAEujB,QAAQglK,GAAG1zK,IAAIrF,GAAjD,WAAiEm/F,GAAE5rG,QAAnE,IAAoD,gCAAQvD,EAAR,QAAsBA,EAAE2pD,SAAS35C,KAAKi9Q,GAAGjtR,GAAGmvG,GAAEvxC,OAAO59D,KAAzG,8BAA6G,OAAOm4C,SAASqrJ,iBAAiB,YAAY3/L,SAAQ,SAAA7D,GAAI,GAAGA,aAAa6sR,YAAY,YAAc9jG,IAAd,IAAC,gCAAQxoL,EAAR,QAAgB,GAAGP,EAAE2pD,SAASppD,GAAG,QAAlC,8BAAmD,IAAVwoL,GAAGpnK,OAAWwtF,GAAE/pG,IAAIpF,EAAE,CAAC,cAAcA,EAAEomD,aAAa,eAAe4mO,MAAMhtR,EAAEgtR,QAAQD,GAAG/sR,QAAO,WAAK,GAAG+oL,GAAGnrH,OAAO5tD,GAAG+4K,GAAGpnK,KAAK,EAAEw2B,SAASqrJ,iBAAiB,YAAY3/L,SAAQ,SAAA7D,GAAI,GAAGA,aAAa6sR,cAAc19K,GAAEhqG,IAAInF,GAAG,YAAc+oL,IAAd,IAAC,gCAAQxoL,EAAR,QAAgB,GAAGP,EAAE2pD,SAASppD,GAAG,QAAlC,8BAAyC4uG,GAAE/pG,IAAIpF,EAAE,CAAC,cAAcA,EAAEomD,aAAa,eAAe4mO,MAAMhtR,EAAEgtR,QAAQD,GAAG/sR,WAApO,YAA4PmvG,GAAE5rG,QAA9P,IAA+O,gCAAQvD,EAAR,QAAsBitR,GAAGjtR,GAAGmvG,GAAEvxC,OAAO59D,IAApR,oCAAyR,CAAC4sB,IAAw4H2iQ,CAAG95P,IAAE0B,GAAE9qB,GAAM4d,GAAE,aAAY,SAAA5pB,GAAI,IAAI60E,EAAMs6M,EAAEnvR,EAAEhB,OAAW,IAAJ8E,IAAQgzB,IAAmB,OAAd+9C,EAAEz/C,EAAE1R,cAAe,EAAOmxD,EAAEvrB,SAAS6lO,KAAK72P,QAAO1O,GAAE,WAAU,SAAA5pB,GAAY,WAARA,EAAE/C,KAAoB,IAAJ6G,IAAQgzB,IAAI92B,EAAEqpF,iBAAiBrpF,EAAEopF,kBAAkB9wD,UAAQ82P,EAAAA,EAAAA,YAAG,WAAK,GAAO,IAAJtrR,IAAO+sL,EAAV,CAAmB,IAAI7wL,EAAE83C,SAAS69I,gBAAgBn3I,MAAM6wO,SAASF,EAAEr3O,SAAS69I,gBAAgBn3I,MAAM8wO,aAAaz6M,EAAEnsD,OAAOq2B,WAAWjH,SAAS69I,gBAAgB45F,YAAY,OAAOz3O,SAAS69I,gBAAgBn3I,MAAM6wO,SAAS,SAASv3O,SAAS69I,gBAAgBn3I,MAAM8wO,aAA/B,UAA+Cz6M,EAA/C,MAAqD,WAAK/8B,SAAS69I,gBAAgBn3I,MAAM6wO,SAASrvR,EAAE83C,SAAS69I,gBAAgBn3I,MAAM8wO,aAAaH,MAAI,CAACrrR,EAAE+sL,KAAIu+F,EAAAA,EAAAA,YAAG,WAAK,GAAO,IAAJtrR,GAAQsxB,EAAE1R,QAAb,CAA4B,IAAI1jB,EAAE,IAAIwvR,sBAAqB,SAAAL,GAAG,WAAcA,GAAd,IAAC,gCAAQt6M,EAAR,QAAwC,IAAzBA,EAAEopM,mBAAmBz4P,GAAgC,IAAzBqvD,EAAEopM,mBAAmB1qP,GAAoC,IAA7BshD,EAAEopM,mBAAmBrxP,OAAyC,IAA9BioD,EAAEopM,mBAAmBtxG,QAAYr0I,KAAzI,kCAA+I,OAAOt4B,EAAEu5Q,QAAQnkP,EAAE1R,SAAS,kBAAI1jB,EAAEwjP,iBAAc,CAAC1/O,EAAEsxB,EAAEkD,IAAI,QAASxD,KAAT,GAAIlB,EAAJ,KAAM6a,EAAN,KAAcC,EAAd,4BAAqCtW,MAAMmyJ,GAAG0C,EAAAA,EAAAA,UAAG,iBAAI,CAAC,CAACwiG,YAAY3rR,EAAE+jN,MAAMvvL,EAAEo3P,WAAW12L,GAAG1sD,KAAG,CAACxoC,EAAEwoC,EAAEhU,EAAE0gE,IAAI2vF,GAAGsE,EAAAA,EAAAA,UAAG,iBAAK,CAACpoI,KAAS,IAAJ/gD,KAAQ,CAACA,IAAI8lL,EAAG,CAACx9B,IAAIrhI,EAAEqzB,GAAG1P,EAAE4nO,KAAK,SAAS,aAAiB,IAAJxyQ,QAAS,EAAO,kBAAkBwoC,EAAE0pO,QAAQ,mBAAmBpiP,EAAEsqB,QAAxG,SAAgHl+C,GAAGA,EAAEopF,oBAAoBg1G,EAAE1/L,EAAE,OAAO0qL,EAAAA,cAAiB+kG,GAAG,CAACv+Q,KAAK,SAAS8rJ,QAAQtmI,EAAEg5P,UAASzjG,EAAAA,EAAAA,cAAG,SAAC3qL,EAAEmvR,EAAEt6M,GAAI,MAAK,WAAJs6M,GAAc91L,GAAEr5F,GAAD,QAAK,GAAL,WAAUqc,EAAEqH,QAAQ1O,IAAI6/D,GAAG50E,GAAE,SAAAmrL,GAAE,OAAEA,EAAG,QAApC,KAAyC,GAAzC,WAA8C/uK,EAAEqH,QAAQ1O,IAAI6/D,GAAG50E,GAAE,SAAAmrL,GAAE,OAAEA,EAAG,QAAxE,MAA+E,KAAKhC,EAAAA,cAAiB0jG,GAAG,CAAC1M,OAAM,GAAIh3F,EAAAA,cAAiB6C,GAAG,KAAK7C,EAAAA,cAAiB4C,GAAG94B,SAAS,CAAC91J,MAAMmtL,GAAInB,EAAAA,cAAiB6C,GAAGuhG,MAAM,CAACxuR,OAAOo2B,GAAGg0J,EAAAA,cAAiB0jG,GAAG,CAAC1M,OAAM,GAAIh3F,EAAAA,cAAiB36I,EAAE,CAAC31B,KAAK6vK,EAAGnkL,KAAK,sBAAsBu6E,GAAE,CAAC9/E,MAAK,SAAKm/L,GAAKxU,GAAI9wK,KAAK6vK,EAAG89F,WAAhmF,MAA8mFC,SAArmF,EAAinFC,QAAQtmR,EAAEmE,KAAK,qBAA6BmrR,GAAGp3P,IAAE,SAAShM,EAAE5c,GAAG,QAA6B++Q,GAAG,kBAAhC,MAAiB/uR,EAAjB,EAAK8vR,YAAoBvvR,EAAzB,EAAmB2nN,MAA+B1rN,EAAEmpC,GAAE31B,GAAGjR,EAAzD,oCAAwF05B,MAAMvE,GAAE82J,EAAAA,EAAAA,cAAG,SAAAv1J,GAAI,GAAGA,EAAEp2B,SAASo2B,EAAEotJ,cAAc,CAAC,GAAGj5G,GAAEn0C,EAAEotJ,eAAe,OAAOptJ,EAAEi0D,iBAAiBj0D,EAAEi0D,iBAAiBj0D,EAAEg0D,kBAAkBlpF,OAAM,CAACA,IAAID,GAAEgtL,EAAAA,EAAAA,UAAG,iBAAK,CAACpoI,KAAS,IAAJllD,KAAQ,CAACA,IAAI,OAAOo/E,GAAE,CAAC9/E,MAAK,SAAKstB,GAAK,CAAC6/H,IAAIjwJ,EAAEiiD,GAAG1/C,EAAE,eAAc,EAAGw/C,QAAQrqB,IAAI/a,KAAK7Y,EAAEwmR,WAAvW,MAAqXjiR,KAAK,sBAAkR,IAAIoqR,GAAGtvR,OAAOwP,OAAO6zG,GAAG,CAACitK,QAAQD,GAAGE,MAAzR,SAAY1vR,GAAG,QAAkCuuR,GAAG,gBAArC,MAAiBniQ,EAAjB,EAAKkjQ,YAAyB9/Q,EAA9B,EAAmB+/Q,WAAkC/vR,EAArD,kCAAkFy4B,OAAMg3P,EAAAA,EAAAA,YAAG,kBAAKz/Q,EAAEhQ,GAAG,kBAAIgQ,EAAE,SAAO,CAAChQ,EAAEgQ,IAAI,IAAIzP,GAAE+sL,EAAAA,EAAAA,UAAG,iBAAK,CAACpoI,KAAS,IAAJt4B,KAAQ,CAACA,IAAI,OAAOwyD,GAAE,CAAC9/E,MAAK,SAAKkB,GAAK,CAACi+C,GAAGz+C,IAAImZ,KAAK5Y,EAAEumR,WAAtN,KAAoOjiR,KAAK,kBAA8DsrR,YAAY3mG,KAAkK4mG,IAAE,SAAG,GAAG,SAAA5vR,GAAC,sBAAOA,GAAP,IAAS6vR,gBAAgB32L,GAAEl5F,EAAE6vR,iBAAH,UAAqB,EAAG,GAAxB,KAA2B,EAAG,GAA9B,SAAjC,MAAsE,GAAG,SAAA7vR,GAAC,OAAsB,IAApBA,EAAE6vR,gBAAoB7vR,EAAtB,SAA4BA,GAA5B,IAA8B6vR,gBAAgB,OAA1H,MAA8H,GAA9H,SAAiI7vR,GAAG,OAAuB,IAAhBA,EAAE8vR,YAAiB9vR,EAAnB,SAAyBA,GAAzB,IAA2B8vR,aAAY,OAAlL,MAAwL,GAAxL,SAA2L9vR,GAAG,OAAuB,IAAhBA,EAAE8vR,YAAiB9vR,EAAnB,SAAyBA,GAAzB,IAA2B8vR,aAAY,OAA5O,MAAkP,GAAlP,SAAqP9vR,EAAEosB,GAAG,OAAOpsB,EAAE+vR,WAAW3jQ,EAAE2jQ,SAAS/vR,EAAxB,SAA8BA,GAA9B,IAAgC+vR,SAAS3jQ,EAAE2jQ,cAA5S,MAAwT,GAAxT,SAA2T/vR,EAAEosB,GAAG,OAAOpsB,EAAEgwR,UAAU5jQ,EAAE4jQ,QAAQhwR,EAAtB,SAA4BA,GAA5B,IAA8BgwR,QAAQ5jQ,EAAE4jQ,aAA/W,IAA0XC,IAAGC,EAAAA,EAAAA,eAAG,MAAyC,SAASC,GAAGnwR,GAAG,IAAIosB,GAAEgkQ,EAAAA,EAAAA,YAAGH,IAAI,GAAO,OAAJ7jQ,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,oCAA2CgsL,GAAG3nL,KAA9C,mBAAoE,MAAMoE,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAE2gR,IAAI3gR,EAAE,OAAO4c,EAA5N6jQ,GAAGh5H,YAAY,oBAA+M,IAAIo5H,IAAGH,EAAAA,EAAAA,eAAG,MAA4C,SAASI,GAAGtwR,GAAG,IAAIosB,GAAEgkQ,EAAAA,EAAAA,YAAGC,IAAI,GAAO,OAAJjkQ,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,oCAA2CgsL,GAAG3nL,KAA9C,mBAAoE,MAAMoE,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAE8gR,IAAI9gR,EAAE,OAAO4c,EAA/NikQ,GAAGp5H,YAAY,uBAAkN,IAAIs5H,IAAGL,EAAAA,EAAAA,eAAG,MAA0E,SAASM,GAAGxwR,EAAEosB,GAAG,OAAO8sE,GAAE9sE,EAAE3c,KAAKmgR,GAAG5vR,EAAEosB,GAA1GmkQ,GAAGt5H,YAAY,yBAA8F,IAAIw5H,GAAGC,EAAAA,SAAG,SAAS1kG,GAAGhsL,GAAE,MAAC,EAA2BA,EAAvB2wR,YAAYvkQ,OAAhB,SAAwB5c,EAAxB,GAA2BxP,EAA3B,IAA6BR,EAA7B,uCAA+Dy4B,MAAMl4B,EAArE,sCAAsGk4B,MAAMj8B,GAAE40R,EAAAA,EAAAA,YAAGJ,GAAG,CAACX,gBAAgBzjQ,EAAE,EAAE,EAAE0jQ,aAAY,EAAGC,SAASvwR,EAAEwwR,QAAQjwR,IAA7K,IAAyM/D,EAAzM,GAAmMuC,EAAnM,KAAmLsxR,gBAAmBn8P,EAAtM,MAA2M01J,EAAAA,EAAAA,YAAG,kBAAI11J,EAAE,CAACjkB,KAAK,EAAEsgR,SAASvwR,MAAI,CAACA,EAAEk0B,KAAI01J,EAAAA,EAAAA,YAAG,kBAAI11J,EAAE,CAACjkB,KAAK,EAAEugR,QAAQjwR,MAAI,CAACA,EAAE2zB,IAAI,IAAI5zB,GAAEorL,EAAAA,EAAAA,cAAG,SAAAj2J,GAAIvB,EAAE,CAACjkB,KAAK,IAAI,IAAImb,EAAOqK,EAAEA,aAAao3P,YAAYp3P,EAAEA,EAAE1R,mBAAmB8oQ,YAAYp3P,EAAE1R,QAAQo0B,SAASsM,eAAezkD,GAAGm4C,SAASsM,eAAezkD,GAAS,MAAHorB,GAASA,EAAEiyK,UAAS,CAACnpK,EAAEl0B,IAAI09B,GAAE0sJ,EAAAA,EAAAA,UAAG,iBAAK,CAAC89B,MAAM5nN,KAAI,CAACA,IAAIoc,GAAE0tK,EAAAA,EAAAA,UAAG,iBAAK,CAACllI,KAAS,IAAJnmD,EAAMmpN,MAAM5nN,KAAI,CAACvB,EAAEuB,IAAI,OAAOqsL,EAAAA,cAAiB8jG,GAAGl9H,SAAS,CAAC91J,MAAMjB,GAAGmwL,EAAAA,cAAiBkkG,GAAGt9H,SAAS,CAAC91J,MAAMigC,GAAGivJ,EAAAA,cAAiBl9D,GAAE,CAAChyH,MAAMi8F,GAAE36F,GAAD,UAAK,EAAG,GAAR,KAAW,EAAG,GAAd,KAAmBqgF,GAAE,CAAC9/E,MAAM0Q,EAAEmJ,KAAKuD,EAAEoqQ,WAAWmK,GAAGpsR,KAAK,kBAAkB,IAAgBwsR,GAAGz4P,IAAE,SAAShM,EAAE5c,GAAG,QAAS2gR,GAAG,qBAAZ,GAAI3wR,EAAJ,KAAMO,EAAN,KAAiC/D,GAAE80R,EAAAA,EAAAA,QAAG,MAAMvyR,EAAE4mC,GAAEnpC,EAAEwT,GAAGkkB,GAAh3B08P,EAAAA,EAAAA,YAAGG,IAAo3BzwR,EAAM,OAAJ4zB,GAAYA,IAAIl0B,EAAEwwR,QAAQ9yP,GAAEguJ,EAAAA,EAAAA,cAAG,SAAAhrL,GAAI,IAAIisC,EAAE,GAAGrsC,EAAE,CAAC,GAAuB,IAApBN,EAAEqwR,gBAAoB,OAAO,OAAO3vR,EAAEpD,KAAK,IAAI,IAAI,IAAI,QAAQoD,EAAEgpF,iBAAiBhpF,EAAE+oF,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAA6C,OAAxC08B,EAAEwL,SAASsM,eAAezkD,EAAEuwR,YAAkB5jP,EAAE0wJ,cAAoB,OAAO38L,EAAEpD,KAAK,IAAI,IAAI,IAAI,QAAQoD,EAAEgpF,iBAAiBhpF,EAAE+oF,kBAAkBlpF,EAAE,CAAC0P,KAAK,OAAY,CAAC1P,EAAED,EAAEN,EAAEqwR,gBAAgBrwR,EAAEuwR,WAAW7zQ,GAAEgvK,EAAAA,EAAAA,cAAG,SAAAhrL,GAAI,GAAkB,MAAXA,EAAEpD,IAAaoD,EAAEgpF,mBAAyB,IAAIj0D,GAAEi2J,EAAAA,EAAAA,cAAG,SAAAhrL,GAAI,IAAIisC,EAAEi9B,GAAElpE,EAAEmiL,gBAAgBj2J,EAAE4pJ,WAAWl2K,GAAGC,EAAE,CAAC0P,KAAK,IAA6C,OAAxC08B,EAAEwL,SAASsM,eAAezkD,EAAEuwR,YAAkB5jP,EAAE0wJ,SAAS98L,EAAE,CAAC0P,KAAK,OAAM,CAAC1P,EAAEqsB,EAAE4pJ,SAASx2K,EAAEuwR,SAASjwR,IAAI8qB,GAAEg/J,EAAAA,EAAAA,UAAG,iBAAK,CAACllI,KAAyB,IAApBllD,EAAEqwR,mBAAsB,CAACrwR,IAAI4qF,EAAEihE,GAAEj/H,EAAEpwB,GAAGo3B,EAAEhH,EAAEzoB,EAAE7D,EAAE,CAACmsJ,IAAI1tJ,EAAEkR,KAAK26E,EAAEogM,UAAUttP,EAAE6gB,QAAQ9oB,GAAG,CAACg3H,IAAI1tJ,EAAE0/C,GAAGz+C,EAAEuwR,SAAStgR,KAAK26E,EAAE,gBAAgBh+D,EAAE4pJ,cAAS,EAA2B,IAApBx2K,EAAEqwR,gBAAoB,gBAAgBrwR,EAAEswR,YAAYtwR,EAAEwwR,aAAQ,EAAOxF,UAAUttP,EAAE6zP,QAAQ70Q,EAAE6hC,QAAQ9oB,GAAG,OAAO2pD,GAAE,CAAC9/E,MAAK,SAAKs0B,GAAKzvB,GAAGgV,KAAKiS,EAAE07P,WAAh9B,SAA89BjiR,KAAK,yBAAwC2sR,GAAG54P,IAAE,SAAShM,EAAE5c,GAAG,QAAS2gR,GAAG,oBAAZ,GAAI3wR,EAAJ,KAAMO,EAAN,KAAuC/D,EAAGs0R,GAAG,oBAAZ5oE,MAAgCnpN,EAAE4mC,GAAE31B,GAAE,WAAKhQ,EAAEswR,aAAa/vR,EAAE,CAAC0P,KAAK,OAAMikB,EAAEgC,KAAI51B,EAAW,OAAJ4zB,EAAa,IAAJA,EAA0B,IAApBl0B,EAAEqwR,iBAAuBzmG,EAAAA,EAAAA,YAAG,kBAAI,kBAAIrpL,EAAE,CAAC0P,KAAK,OAAI,CAAC1P,KAAIqpL,EAAAA,EAAAA,YAAG,WAAK,IAAIx+J,EAAsB,IAApBprB,EAAEqwR,kBAAqC,OAAdjlQ,EAAEwB,EAAE0iI,UAAelkI,IAAO7qB,EAAE,CAAC0P,KAAK,MAAK,CAACjQ,EAAEqwR,gBAAgBzjQ,EAAE0iI,QAAQ/uJ,IAAI,IAAIm9B,GAAE0sJ,EAAAA,EAAAA,UAAG,iBAAK,CAACllI,KAAyB,IAApBllD,EAAEqwR,gBAAoBnoE,MAAM1rN,KAAI,CAACwD,EAAExD,IAAIkgB,EAAE,CAAC+vI,IAAI1tJ,EAAE0/C,GAAGz+C,EAAEwwR,SAAS/6P,EAAE7I,EAAE,OAAO+/J,EAAAA,cAAiBokG,GAAGx9H,SAAS,CAAC91J,MAAMuC,EAAEwwR,SAASpxM,GAAE,CAAC9/E,MAAK,SAAKm2B,GAAK/Y,GAAGvD,KAAKukB,EAAEopP,WAAjf,MAA+fC,SAAtf,EAAkgBC,QAAQ1mR,EAAEuE,KAAK,yBAAwB2nL,GAAGi/F,OAAO4F,GAAG7kG,GAAGilG,MAAMD,GAAqW,IAAIE,IAAE,SAAG,GAAH,SAAMlxR,GAAG,OAAOA,EAAEg2K,UAA2B,IAAjBh2K,EAAEmxR,aAAiBnxR,EAA/B,SAAqCA,GAArC,IAAuC+oR,kBAAkB,KAAKoI,aAAa,OAA3F,MAAgG,GAAhG,SAAmGnxR,GAAG,OAAOA,EAAEg2K,UAA2B,IAAjBh2K,EAAEmxR,aAAiBnxR,EAA/B,SAAqCA,GAArC,IAAuCmxR,aAAa,OAAjK,MAAsK,GAAtK,SAAyKnxR,EAAEosB,GAAG,OAAOpsB,EAAEg2K,WAAW5pJ,EAAE4pJ,SAASh2K,EAAxB,SAA8BA,GAA9B,IAAgCg2K,SAAS5pJ,EAAE4pJ,cAAhO,MAA4O,GAA5O,SAA+Oh2K,EAAEosB,GAAG,OAAOpsB,EAAEoxR,cAAchlQ,EAAEglQ,YAAYpxR,EAA9B,SAAoCA,GAApC,IAAsCoxR,YAAYhlQ,EAAEglQ,iBAA/S,MAA8T,GAA9T,SAAiUpxR,EAAEosB,GAAG,GAAGpsB,EAAEg2K,UAA2B,IAAjBh2K,EAAEmxR,aAAiB,OAAOnxR,EAAE,IAAIwP,EAAE04K,GAAG97J,EAAE,CAAC66P,aAAa,kBAAIjnR,EAAEw9B,SAAQ0pP,mBAAmB,kBAAIlnR,EAAE+oR,mBAAkB1B,UAAU,SAAA7nR,GAAC,OAAEA,EAAEy+C,IAAGmpO,gBAAgB,SAAA5nR,GAAC,OAAEA,EAAE0pR,QAAQ3lQ,QAAQyyJ,YAAW,MAAuB,KAAhBh2K,EAAEqxR,aAAkBrxR,EAAE+oR,oBAAoBv5Q,EAAExP,EAA5C,SAAkDA,GAAlD,IAAoDqxR,YAAY,GAAGtI,kBAAkBv5Q,OAAjmB,MAAsmB,GAAG,SAACxP,EAAEosB,GAAK,GAAGpsB,EAAEg2K,UAA2B,IAAjBh2K,EAAEmxR,aAAiB,OAAOnxR,EAAE,IAAIR,EAAkB,KAAhBQ,EAAEqxR,YAAiB,EAAE,EAAEtxR,EAAEC,EAAEqxR,YAAYjlQ,EAAEnvB,MAAM8nB,cAAcxmB,GAAyB,OAAtByB,EAAE+oR,kBAAyB/oR,EAAEw9B,QAAQp5B,MAAMpE,EAAE+oR,kBAAkBvpR,GAAGyK,OAAOjK,EAAEw9B,QAAQp5B,MAAM,EAAEpE,EAAE+oR,kBAAkBvpR,IAAIQ,EAAEw9B,SAAS2vM,MAAK,SAAArtO,GAAI,IAAIo9B,EAAE,OAAOp9B,EAAEopR,QAAQ3lQ,QAAQyyJ,WAA4C,OAAhC94I,EAAEp9B,EAAEopR,QAAQ3lQ,QAAQ8nQ,gBAAiB,EAAOnuP,EAAEo/E,WAAWv8G,OAAM2zB,EAAEn1B,EAAEyB,EAAEw9B,QAAQx7B,QAAQzD,IAAI,EAAE,OAAY,IAALm1B,GAAQA,IAAI1zB,EAAE+oR,kBAAd,SAAoC/oR,GAApC,IAAsCqxR,YAAYtxR,IAAlD,SAAyDC,GAAzD,IAA2DqxR,YAAYtxR,EAAEgpR,kBAAkBr1P,OAAjlC,MAAslC,GAAtlC,SAAylC1zB,GAAG,OAAOA,EAAEg2K,UAA2B,IAAjBh2K,EAAEmxR,cAAkC,KAAhBnxR,EAAEqxR,YAAiBrxR,EAAnD,SAAyDA,GAAzD,IAA2DqxR,YAAY,QAA1qC,MAAgrC,GAAG,SAACrxR,EAAEosB,GAAK,IAAIrsB,EAAMyP,EAAEtT,MAAMoG,KAA+B,OAAzBvC,EAAEC,EAAEgpR,WAAWzlQ,cAAe,EAAOxjB,EAAEijM,iBAAiB,uCAAuC/1L,QAAO,SAACjR,EAAEuC,EAAEm1B,GAAL,OAASv0B,OAAOwP,OAAO3S,EAAd,MAAkBuC,EAAE0/C,GAAIvqB,MAAI,IAAIl0B,EAAE,YAAIQ,EAAEw9B,SAAN,CAAc,CAACygB,GAAG7xB,EAAE6xB,GAAGirO,QAAQ98P,EAAE88P,WAAUt0O,MAAK,SAAC54C,EAAEuC,GAAH,OAAOiR,EAAExT,EAAEiiD,IAAIzuC,EAAEjR,EAAE0/C,OAAK,gBAAUj+C,GAAV,IAAYw9B,QAAQh+B,OAAh8C,MAAq8C,GAAG,SAACQ,EAAEosB,GAAK,IAAI5c,EAAExP,EAAEw9B,QAAQp5B,QAAQ5E,EAAwB,OAAtBQ,EAAE+oR,kBAAyBv5Q,EAAExP,EAAE+oR,mBAAmB,KAAKhpR,EAAEyP,EAAE23Q,WAAU,SAAAnrR,GAAC,OAAEA,EAAEiiD,KAAK7xB,EAAE6xB,MAAI,OAAY,IAALl+C,GAAQyP,EAAEgD,OAAOzS,EAAE,GAAnB,SAA0BC,GAA1B,IAA4Bw9B,QAAQhuB,EAAEu5Q,kBAAuBhpR,IAAIC,EAAE+oR,mBAAuB,OAAJvpR,EAAS,KAAKgQ,EAAExN,QAAQxC,QAAprD,IAA6rD8xR,IAAGC,EAAAA,EAAAA,eAAG,MAAsC,SAASpmG,GAAGnrL,GAAG,IAAIosB,GAAEolQ,EAAAA,EAAAA,YAAGF,IAAI,GAAO,OAAJllQ,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,oCAA2CmqL,GAAG9lL,KAA9C,mBAAoE,MAAMoE,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAE27K,IAAI37K,EAAE,OAAO4c,EAAE,SAASqlQ,GAAGzxR,EAAEosB,GAAG,OAAO8sE,GAAE9sE,EAAE3c,KAAKyhR,GAAGlxR,EAAEosB,GAAjQklQ,GAAGr6H,YAAY,iBAAqP,IAAIy6H,GAAGC,EAAAA,SAAG,SAASxnG,GAAGnqL,GAAE,MAAWosB,EAAiDpsB,EAAvD/C,MAAiBuS,EAAsCxP,EAA/CggD,SAAZ,EAA2DhgD,EAApCg2K,SAASx2K,OAAhC,WAA2DQ,EAAtB4xR,WAAW7xR,OAAhD,SAAwD/D,EAAxD,GAA2DgE,EAA3D,IAA6DzB,EAAEwB,EAAE,aAAa,WAAW2zB,GAAEm+P,EAAAA,EAAAA,YAAGJ,GAAG,CAACN,aAAa,EAAEW,SAAS,CAACvuQ,QAAQ,CAACtmB,MAAMmvB,EAAE4zB,SAASxwC,IAAIs6Q,UAASiI,EAAAA,EAAAA,aAAK9H,WAAU8H,EAAAA,EAAAA,aAAK/I,YAAW+I,EAAAA,EAAAA,aAAK/7G,SAASx2K,EAAE4xR,YAAY7yR,EAAEi/B,QAAQ,GAAG6zP,YAAY,GAAGtI,kBAAkB,OAA3Q,IAA2Ur1P,EAA3U,UAAiS5zB,EAAjS,EAAoRqxR,aAAwBj0P,EAA5S,EAAmS40P,SAAsB51Q,EAAzT,EAA8S8sQ,WAAuB/zP,EAArU,EAA2Tg1P,UAAar/P,EAAxU,KAA6UvF,IAAE,WAAK6X,EAAE3Z,QAAQtmB,MAAMmvB,IAAG,CAACA,EAAE8Q,IAAI7X,IAAE,WAAK6X,EAAE3Z,QAAQy8B,SAASxwC,IAAG,CAACA,EAAE0tB,IAAI7X,IAAE,kBAAIuF,EAAE,CAACnb,KAAK,EAAEumK,SAASx2K,MAAI,CAACA,IAAI6lB,IAAE,kBAAIuF,EAAE,CAACnb,KAAK,EAAE2hR,YAAY7yR,MAAI,CAACA,IAAIkrB,GAAE,aAAY,SAAA2J,GAAI,IAAIlzB,EAAEisC,EAAEk9D,EAAM1lG,EAAEyvB,EAAEv0B,OAAW,IAAJiB,KAAwB,OAAdI,EAAE+0B,EAAE1R,cAAe,EAAOrjB,EAAEipD,SAASxlD,MAAqB,OAAdwoC,EAAEjwB,EAAEqH,cAAe,EAAO4oB,EAAEgd,SAASxlD,MAAMinB,EAAE,CAACnb,KAAK,IAAI64K,GAAG3kL,EAAE,KAAKyvB,EAAE81D,iBAAgC,OAAdmgB,EAAEp0E,EAAE1R,UAAgB8lF,EAAEwzF,cAAa,IAAIzyG,GAAEo/F,EAAAA,EAAAA,UAAG,iBAAK,CAAC9kI,KAAS,IAAJ5kD,EAAMk2K,SAASx2K,KAAI,CAACM,EAAEN,IAAI,OAAOwyR,EAAAA,cAAiBV,GAAGv+H,SAAS,CAAC91J,MAAMy2B,GAAGs+P,EAAAA,cAAiB/iK,GAAE,CAAChyH,MAAMi8F,GAAEp5F,GAAD,UAAK,EAAG,GAAR,KAAW,EAAG,GAAd,KAAmB8+E,GAAE,CAAC9/E,MAAM9C,EAAE2c,KAAKyxE,EAAEk8L,WAAWoL,GAAGrtR,KAAK,cAAc,IAAgB4tR,GAAG75P,IAAE,SAAShM,EAAE5c,GAAG,IAAI7L,EAAE,IAASwnL,GAAG,kBAAZ,GAAI3rL,EAAJ,KAAMO,EAAN,KAA8B/D,EAAEmpC,GAAE3lC,EAAEyqR,UAAUz6Q,GAAGjR,EAAjD,oCAAgF05B,MAAMvE,EAAEgf,KAAI5yC,GAAE+8B,EAAAA,EAAAA,cAAE,SAAA38B,GAAI,OAAOA,EAAEpD,KAAK,IAAI,IAAI,IAAI,QAAQ,IAAI,YAAYoD,EAAEgpF,iBAAiBnpF,EAAE,CAAC0P,KAAK,IAAIikB,EAAE8xP,WAAU,WAAKhmR,EAAEsyR,SAASvuQ,QAAQtmB,OAAO8C,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,OAAM,MAAM,IAAI,UAAU38L,EAAEgpF,iBAAiBnpF,EAAE,CAAC0P,KAAK,IAAIikB,EAAE8xP,WAAU,WAAKhmR,EAAEsyR,SAASvuQ,QAAQtmB,OAAO8C,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,UAAc,CAAC98L,EAAEP,EAAEk0B,IAAIwJ,GAAEL,EAAAA,EAAAA,cAAE,SAAA38B,GAAI,GAAkB,MAAXA,EAAEpD,IAAaoD,EAAEgpF,mBAAyB,IAAIhtE,GAAE2gB,EAAAA,EAAAA,cAAE,SAAA38B,GAAI,GAAGkpE,GAAElpE,EAAEmiL,eAAe,OAAOniL,EAAEgpF,iBAAkC,IAAjB1pF,EAAE2xR,cAAkBpxR,EAAE,CAAC0P,KAAK,IAAIikB,EAAE8xP,WAAU,WAAK,IAAIr5O,EAAE,OAA+B,OAAxBA,EAAE3sC,EAAEyqR,UAAU1mQ,cAAe,EAAO4oB,EAAE0wJ,MAAM,CAAC6tF,eAAc,SAASxqR,EAAEgpF,iBAAiBnpF,EAAE,CAAC0P,KAAK,OAAM,CAAC1P,EAAE2zB,EAAEl0B,IAAIy1B,EAAE+X,IAAG,WAAK,GAAKxtC,EAAEsqR,SAASvmQ,QAAQ,MAAM,CAAC/jB,EAAEsqR,SAASvmQ,QAAQ06B,GAAG1/C,GAAG+c,KAAK,OAAM,CAAC9b,EAAEsqR,SAASvmQ,QAAQhlB,IAAIqsB,GAAE4+J,EAAAA,EAAAA,UAAG,iBAAK,CAAC9kI,KAAsB,IAAjBllD,EAAE2xR,aAAiBn7G,SAASx2K,EAAEw2K,YAAW,CAACx2K,IAAI4qF,EAAEh+D,EAAEgH,EAAE,CAAC64H,IAAIjwJ,EAAEiiD,GAAG1/C,EAAEkR,KAAK47I,GAAEj/H,EAAE5sB,EAAEyqR,WAAW,iBAAgB,EAAG,gBAA0C,OAAzBtmR,EAAEnE,EAAEwpR,WAAWzlQ,cAAe,EAAO5f,EAAEs6C,GAAG,gBAAgBz+C,EAAEw2K,cAAS,EAAwB,IAAjBx2K,EAAE2xR,aAAiB,kBAAkBl8P,EAAE+gJ,SAASx2K,EAAEw2K,SAASw0G,UAAU1qR,EAAEixR,QAAQ7zP,EAAE6gB,QAAQ7hC,GAAG,OAAO0iE,GAAE,CAAC9/E,MAAK,SAAKsrF,GAAKh3D,GAAGza,KAAKiS,EAAE07P,WAAxnC,SAAsoCjiR,KAAK,sBAA4X,IAAmBo2L,GAAGriK,IAAE,SAAShM,EAAE5c,GAAG,IAAItP,EAAE,IAASirL,GAAG,mBAAZ,GAAI3rL,EAAJ,KAAMO,EAAN,KAA+B/D,EAAEmpC,GAAE3lC,EAAEwpR,WAAWx5Q,GAAGjR,EAAnD,qCAAmF05B,MAAMvE,EAAEgf,KAAI5yC,EAAE4yC,KAAIxV,EAAExH,KAAIxZ,EAAW,OAAJghB,EAAa,IAAJA,EAAuB,IAAjB19B,EAAE2xR,aAAoB9rQ,IAAE,WAAK,IAAI8mB,EAAE3sC,EAAEwpR,WAAWzlQ,SAAS4oB,GAAoB,IAAjB3sC,EAAE2xR,cAAkBhlP,IAAIwL,SAASw9H,eAAehpI,EAAE0wJ,MAAM,CAAC6tF,eAAc,MAAM,CAAClrR,EAAE2xR,aAAa3xR,EAAEwpR,aAAa,IAAI/zP,GAAE4H,EAAAA,EAAAA,cAAE,SAAAsP,GAAI,OAAOrsC,EAAE2lR,UAAUt5O,EAAErvC,KAAK,IAAI,IAAI,GAAmB,KAAhB0C,EAAE6xR,YAAiB,OAAOllP,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAExS,MAAMkvC,EAAErvC,MAAM,IAAI,QAAQ,GAAGqvC,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAA0B,OAAtBjQ,EAAEupR,kBAAyB,CAAC,IAAY1/K,EAAG7pG,EAAEg+B,QAAQh+B,EAAEupR,mBAAvBG,QAA0C1pR,EAAEsyR,SAASvuQ,QAAQy8B,SAASqpD,EAAE9lF,QAAQtmB,OAAO8tB,KAAIy6P,WAAU,WAAK,IAAIn8K,EAAE,OAA+B,OAAxBA,EAAE7pG,EAAEyqR,UAAU1mQ,cAAe,EAAO8lF,EAAEwzF,MAAM,CAAC6tF,eAAc,OAAO,MAAM,KAAKxxL,GAAE15F,EAAE4xR,YAAY,CAACc,SAAS,YAAYN,WAAW,eAAe,OAAOzlP,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,IAAI,KAAK3jG,GAAE15F,EAAE4xR,YAAY,CAACc,SAAS,UAAUN,WAAW,cAAc,OAAOzlP,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,IAAI,IAAI,OAAO,IAAI,SAAS,OAAO1wJ,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,IAAI,IAAI,MAAM,IAAI,WAAW,OAAO1wJ,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,IAAI,IAAI,SAAS,OAAO1wJ,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAAIikB,EAAE8xP,WAAU,WAAK,IAAIn8K,EAAE,OAA+B,OAAxBA,EAAE7pG,EAAEyqR,UAAU1mQ,cAAe,EAAO8lF,EAAEwzF,MAAM,CAAC6tF,eAAc,OAAO,IAAI,MAAMv+O,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkB,MAAM,QAAuB,IAAf98C,EAAErvC,IAAIf,SAAagE,EAAE,CAAC0P,KAAK,EAAExS,MAAMkvC,EAAErvC,MAAMgD,EAAEm2C,YAAW,kBAAIl2C,EAAE,CAAC0P,KAAK,MAAI,SAAc,CAACikB,EAAE3zB,EAAED,EAAEN,IAAIorB,EAAEoiB,IAAG,WAAK,IAAIb,EAAEk9D,EAAElxE,EAAE,OAAoD,OAA7CA,EAA0B,OAAvBgU,EAAE3sC,EAAEsqR,SAASvmQ,cAAe,EAAO4oB,EAAE8R,IAAU9lB,EAA2B,OAAxBkxE,EAAE7pG,EAAEyqR,UAAU1mQ,cAAe,EAAO8lF,EAAEprD,KAAI,CAACz+C,EAAEsqR,SAASvmQ,QAAQ/jB,EAAEyqR,UAAU1mQ,UAAU6mE,GAAEo/F,EAAAA,EAAAA,UAAG,iBAAK,CAAC9kI,KAAsB,IAAjBllD,EAAE2xR,gBAAmB,CAAC3xR,IAAI4zB,EAAE,CAAC,wBAA8C,OAAtB5zB,EAAEupR,mBAA8D,OAAnC7oR,EAAEV,EAAEg+B,QAAQh+B,EAAEupR,yBAA0B,EAAO7oR,EAAE+9C,GAAG,kBAAkBrzB,EAAE,mBAAmBprB,EAAE4xR,YAAYnzO,GAAG1/C,EAAEisR,UAAUv1P,EAAEkhP,KAAK,UAAUwU,SAAS,EAAE1+H,IAAIjwJ,GAAG,OAAO4iF,GAAE,CAAC9/E,MAAK,SAAKstB,GAAKgH,GAAGza,KAAKyxE,EAAEk8L,WAAp8D,KAAk9DC,SAA18D,EAAs9DC,QAAQtqQ,EAAE7X,KAAK,uBAA6pD8lL,GAAG8gG,OAAOgH,GAAG9nG,GAAG+gG,MAA7/H,SAAYlrR,GAAG,IAAIosB,EAAJ,EAAO++J,GAAG,iBAAV,MAA2B37K,EAA3B,mCAAyDyoB,MAAMz4B,GAAEq9B,EAAAA,EAAAA,cAAE,WAAK,IAAIt+B,EAAE,OAA+B,OAAxBA,EAAE6tB,EAAE69P,UAAU1mQ,cAAe,EAAOhlB,EAAEs+L,MAAM,CAAC6tF,eAAc,MAAM,CAACt+P,EAAE69P,YAAYlqR,GAAEypL,EAAAA,EAAAA,UAAG,iBAAK,CAAC9kI,KAAsB,IAAjBt4B,EAAE+kQ,aAAiBn7G,SAAS5pJ,EAAE4pJ,YAAW,CAAC5pJ,IAAIpwB,EAAE,CAACiwJ,IAAI7/H,EAAE09P,SAAS7rO,GAAGzuC,EAAEuuC,QAAQv+C,GAAG,OAAOo/E,GAAE,CAAC9/E,MAAK,SAAKkB,GAAKhE,GAAG2c,KAAK5Y,EAAEumR,WAA/T,QAA6UjiR,KAAK,mBAA4rH8lL,GAAGghG,QAAQ1wF,GAAGtQ,GAAGihG,OAAzqD,SAAYprR,GAAG,MAAgCA,EAA5Bg2K,SAAS5pJ,OAAb,SAAwB5c,EAAQxP,EAAd/C,MAAWuC,EAA7B,GAAgCQ,EAAhC,QAAwCmrL,GAAG,kBAA3C,GAAmCprL,EAAnC,KAAqC/D,EAArC,KAA6DuC,EAA7D,oCAA4F05B,MAAMvE,EAAwB,OAAtB3zB,EAAEgpR,mBAAyBhpR,EAAEy9B,QAAQz9B,EAAEgpR,mBAAmB9qO,KAAK1/C,EAAKuB,EAAEC,EAAE+xR,SAASvuQ,QAAQtmB,QAAQuS,EAAE0tB,GAAEi1P,EAAAA,EAAAA,QAAG,CAACn8G,SAAS5pJ,EAAEnvB,MAAMuS,IAAI6V,IAAE,WAAK6X,EAAE3Z,QAAQyyJ,SAAS5pJ,IAAG,CAAC8Q,EAAE9Q,IAAI/G,IAAE,WAAK6X,EAAE3Z,QAAQtmB,MAAMuS,IAAG,CAAC0tB,EAAE1tB,IAAI6V,IAAE,WAAK,IAAI8mB,EAAEk9D,EAAEnsE,EAAE3Z,QAAQ8nQ,UAAyE,OAA9DhiL,EAAkC,OAA/Bl9D,EAAEwL,SAASsM,eAAe1lD,SAAU,EAAO4tC,EAAEo8C,kBAAmB,EAAO8gB,EAAEtkF,gBAAe,CAACmY,EAAE3+B,IAAI,IAAI2d,GAAE2gB,EAAAA,EAAAA,cAAE,kBAAI98B,EAAE+xR,SAASvuQ,QAAQy8B,SAASxwC,KAAG,CAACzP,EAAE+xR,SAAStiR,IAAI6V,IAAE,kBAAKrpB,EAAE,CAACyT,KAAK,EAAEwuC,GAAG1/C,EAAE2qR,QAAQhsP,IAAI,kBAAIlhC,EAAE,CAACyT,KAAK,EAAEwuC,GAAG1/C,OAAK,CAAC2+B,EAAE3+B,IAAI8mB,IAAE,WAAK,IAAI8mB,EAAEk9D,EAAmB,IAAjBtpG,EAAEoxR,gBAAoBrxR,IAAI9D,EAAE,CAACyT,KAAK,EAAEotL,MAAM,EAAE5+I,GAAG1/C,IAA6D,OAAxD8qG,EAAkC,OAA/Bl9D,EAAEwL,SAASsM,eAAe1lD,SAAU,EAAO4tC,EAAE0wJ,QAAcxzF,EAAEhpG,KAAK8rC,OAAM,CAACpsC,EAAEoxR,eAAe9rQ,IAAE,WAAK,GAAoB,IAAjBtlB,EAAEoxR,cAAmBz9P,EAAxB,CAAiC,IAAIyY,EAAEphB,KAAI,OAAOohB,EAAEqqH,uBAAsB,WAAK,IAAIntD,EAAElxE,EAAoE,OAAjEA,EAAkC,OAA/BkxE,EAAE1xD,SAASsM,eAAe1lD,SAAU,EAAO8qG,EAAEiiL,iBAAuBnzP,EAAE93B,KAAKgpG,EAAE,CAACv/F,MAAM,eAAcqiC,EAAEs5O,WAAS,CAAClnR,EAAEm1B,EAAE3zB,EAAEoxR,aAAapxR,EAAEgpR,oBAAoB,IAAI9zP,GAAE4H,EAAAA,EAAAA,cAAE,SAAAsP,GAAI,GAAG/f,EAAE,OAAO+f,EAAE+8C,iBAAiBhtE,IAAIlgB,EAAE,CAACyT,KAAK,IAAIsb,KAAIy6P,WAAU,WAAK,IAAIn8K,EAAE,OAA+B,OAAxBA,EAAEtpG,EAAEkqR,UAAU1mQ,cAAe,EAAO8lF,EAAEwzF,MAAM,CAAC6tF,eAAc,SAAQ,CAAC1uR,EAAE+D,EAAEkqR,UAAU79P,EAAElQ,IAAI0O,GAAEiS,EAAAA,EAAAA,cAAE,WAAK,GAAGzQ,EAAE,OAAOpwB,EAAE,CAACyT,KAAK,EAAEotL,MAAM,IAAI7gM,EAAE,CAACyT,KAAK,EAAEotL,MAAM,EAAE5+I,GAAG1/C,MAAK,CAAC6tB,EAAE7tB,EAAEvC,IAAIouF,GAAEvtD,EAAAA,EAAAA,cAAE,WAAKzQ,GAAGsH,GAAG13B,EAAE,CAACyT,KAAK,EAAEotL,MAAM,EAAE5+I,GAAG1/C,MAAK,CAAC6tB,EAAEsH,EAAEn1B,EAAEvC,IAAIo3B,GAAEyJ,EAAAA,EAAAA,cAAE,WAAKzQ,IAAIsH,GAAG13B,EAAE,CAACyT,KAAK,EAAEotL,MAAM,MAAK,CAACzwK,EAAEsH,EAAE13B,IAAI2H,GAAE6lL,EAAAA,EAAAA,UAAG,iBAAK,CAAC2mC,OAAOz8L,EAAE8sB,SAAS1gD,EAAEk2K,SAAS5pJ,KAAI,CAACsH,EAAE5zB,EAAEssB,IAAI,OAAOwyD,GAAE,CAAC9/E,MAAK,SAAKU,GAAK,CAACy+C,GAAG1/C,EAAE43Q,KAAK,SAASwU,UAAa,IAAJv+P,OAAO,GAAQ,EAAE,iBAAoB,IAAJA,QAAU,EAAO,iBAAoB,IAAJtsB,QAAU,EAAOk2K,cAAS,EAAOj4H,QAAQ9oB,EAAEs2P,QAAQ3gQ,EAAE4gQ,cAAcphM,EAAEqhM,YAAYrhM,EAAEshM,eAAet4P,EAAEu4P,aAAav4P,IAAIza,KAAKhV,EAAE2iR,WAA9lD,KAA4mDjiR,KAAK,oBAA+O,IAAIs2L,IAAE,SAAG,GAAH,SAAM36L,GAAG,OAAqB,IAAdA,EAAEoyR,UAAcpyR,EAAhB,SAAsBA,GAAtB,IAAwBqyR,gBAAgB,KAAKD,UAAU,OAAvE,MAA4E,GAA5E,SAA+EpyR,GAAG,OAAqB,IAAdA,EAAEoyR,UAAcpyR,EAAhB,SAAsBA,GAAtB,IAAwBoyR,UAAU,OAA3H,MAAgI,GAAG,SAACpyR,EAAEosB,GAAK,IAAI5c,EAAE04K,GAAG97J,EAAE,CAAC66P,aAAa,kBAAIjnR,EAAE69B,OAAMqpP,mBAAmB,kBAAIlnR,EAAEqyR,iBAAgBhL,UAAU,SAAA7nR,GAAC,OAAEA,EAAEy+C,IAAGmpO,gBAAgB,SAAA5nR,GAAC,OAAEA,EAAE0pR,QAAQ3lQ,QAAQyyJ,YAAW,MAAuB,KAAhBh2K,EAAEqxR,aAAkBrxR,EAAEqyR,kBAAkB7iR,EAAExP,EAA1C,SAAgDA,GAAhD,IAAkDqxR,YAAY,GAAGgB,gBAAgB7iR,OAAnX,MAAwX,GAAG,SAACxP,EAAEosB,GAAK,IAAI5sB,EAAkB,KAAhBQ,EAAEqxR,YAAiB,EAAE,EAAEtxR,EAAEC,EAAEqxR,YAAYjlQ,EAAEnvB,MAAM8nB,cAAcxmB,GAAuB,OAApByB,EAAEqyR,gBAAuBryR,EAAE69B,MAAMz5B,MAAMpE,EAAEqyR,gBAAgB7yR,GAAGyK,OAAOjK,EAAE69B,MAAMz5B,MAAM,EAAEpE,EAAEqyR,gBAAgB7yR,IAAIQ,EAAE69B,OAAOsvM,MAAK,SAAArtO,GAAI,IAAIo9B,EAAE,OAAwC,OAAhCA,EAAEp9B,EAAEopR,QAAQ3lQ,QAAQ8nQ,gBAAiB,EAAOnuP,EAAEo/E,WAAWv8G,MAAMD,EAAEopR,QAAQ3lQ,QAAQyyJ,YAAWtiJ,EAAEn1B,EAAEyB,EAAE69B,MAAM77B,QAAQzD,IAAI,EAAE,OAAY,IAALm1B,GAAQA,IAAI1zB,EAAEqyR,gBAAd,SAAkCryR,GAAlC,IAAoCqxR,YAAYtxR,IAAhD,SAAuDC,GAAvD,IAAyDqxR,YAAYtxR,EAAEsyR,gBAAgB3+P,OAAtyB,MAA2yB,GAA3yB,SAA8yB1zB,GAAG,MAAuB,KAAhBA,EAAEqxR,YAAiBrxR,EAAnB,SAAyBA,GAAzB,IAA2BqxR,YAAY,GAAGiB,sBAAsB,UAAx3B,MAAg4B,GAAG,SAACtyR,EAAEosB,GAAK,IAAIrsB,EAAMyP,EAAEtT,MAAMoG,KAA6B,OAAvBvC,EAAEC,EAAEuyR,SAAShvQ,cAAe,EAAOxjB,EAAEijM,iBAAiB,kCAAkC/1L,QAAO,SAACjR,EAAEuC,EAAEm1B,GAAL,OAASv0B,OAAOwP,OAAO3S,EAAd,MAAkBuC,EAAE0/C,GAAIvqB,MAAI,IAAIl0B,EAAE,YAAIQ,EAAE69B,OAAN,CAAY,CAACogB,GAAG7xB,EAAE6xB,GAAGirO,QAAQ98P,EAAE88P,WAAUt0O,MAAK,SAAC54C,EAAEuC,GAAH,OAAOiR,EAAExT,EAAEiiD,IAAIzuC,EAAEjR,EAAE0/C,OAAK,gBAAUj+C,GAAV,IAAY69B,MAAMr+B,OAAroC,MAA0oC,GAAG,SAACQ,EAAEosB,GAAK,IAAI5c,EAAExP,EAAE69B,MAAMz5B,QAAQ5E,EAAsB,OAApBQ,EAAEqyR,gBAAuB7iR,EAAExP,EAAEqyR,iBAAiB,KAAKtyR,EAAEyP,EAAE23Q,WAAU,SAAAnrR,GAAC,OAAEA,EAAEiiD,KAAK7xB,EAAE6xB,MAAI,OAAY,IAALl+C,GAAQyP,EAAEgD,OAAOzS,EAAE,GAAnB,SAA0BC,GAA1B,IAA4B69B,MAAMruB,EAAE6iR,gBAAqBtyR,IAAIC,EAAEqyR,iBAAqB,OAAJ7yR,EAAS,KAAKgQ,EAAExN,QAAQxC,QAA72C,IAAs3CgzR,IAAG34F,EAAAA,EAAAA,eAAG,MAAmC,SAAStP,GAAGvqL,GAAG,IAAIosB,GAAEmsB,EAAAA,EAAAA,YAAGi6O,IAAI,GAAO,OAAJpmQ,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,oCAA2CisL,GAAG5nL,KAA9C,mBAAoE,MAAMoE,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAE+6K,IAAI/6K,EAAE,OAAO4c,EAAE,SAAS2tK,GAAG/5L,EAAEosB,GAAG,OAAO8sE,GAAE9sE,EAAE3c,KAAKkrL,GAAG36L,EAAEosB,GAA9PomQ,GAAGv7H,YAAY,cAAkP,IAAI2hC,GAAG65F,EAAAA,SAAG,SAASxmG,GAAGjsL,GAAE,MAAKosB,GAAEssK,EAAAA,EAAAA,YAAGqB,GAAG,CAACq4F,UAAU,EAAEnI,WAAUyI,EAAAA,EAAAA,aAAKH,UAASG,EAAAA,EAAAA,aAAK70P,MAAM,GAAGwzP,YAAY,GAAGgB,gBAAgB,OAA1F,IAA0IjmQ,EAA1I,UAA6G5c,EAA7G,EAAmG4iR,UAAqB5yR,EAAxH,EAA+G+yR,SAAqBxyR,EAApI,EAA0HkqR,UAAajuR,EAAvI,KAA4IytB,GAAE,aAAY,SAAAiK,GAAI,IAAIwJ,EAAEhhB,EAAE+Y,EAAMn1B,EAAE4zB,EAAE70B,OAAW,IAAJ2Q,KAAwB,OAAd0tB,EAAEn9B,EAAEwjB,cAAe,EAAO2Z,EAAEisB,SAASrpD,MAAqB,OAAdoc,EAAE1c,EAAE+jB,cAAe,EAAOrH,EAAEitC,SAASrpD,MAAM9D,EAAE,CAACyT,KAAK,IAAI64K,GAAGxoL,EAAE,KAAK4zB,EAAEw1D,iBAAgC,OAAdj0D,EAAEl1B,EAAEwjB,UAAgB0R,EAAE4nK,cAAa,IAAIt+L,GAAEwtL,EAAAA,EAAAA,UAAG,iBAAK,CAACrnI,KAAS,IAAJl1C,KAAQ,CAACA,IAAI,OAAOmjR,EAAAA,cAAiBH,GAAGz/H,SAAS,CAAC91J,MAAMmvB,GAAGumQ,EAAAA,cAAiB1jK,GAAE,CAAChyH,MAAMi8F,GAAE1pF,GAAD,UAAK,EAAG,GAAR,KAAW,EAAG,GAAd,KAAmBovE,GAAE,CAAC9/E,MAAMkB,EAAE2Y,KAAKpa,EAAE+nR,WAAW1tF,GAAGv0L,KAAK,WAAW,IAAgBi1L,GAAGlhK,IAAE,SAAShM,EAAE5c,GAAG,IAAI4jB,EAAE,IAASm3J,GAAG,eAAZ,GAAI/qL,EAAJ,KAAMO,EAAN,KAA2B/D,EAAEmpC,GAAE3lC,EAAEyqR,UAAUz6Q,GAAGjR,EAA9C,iCAA0E05B,MAAMvE,EAAEgf,KAAI5yC,GAAEo+L,EAAAA,EAAAA,cAAE,SAAAv6L,GAAI,OAAOA,EAAE7G,KAAK,IAAI,IAAI,IAAI,QAAQ,IAAI,YAAY6G,EAAEulF,iBAAiBvlF,EAAEslF,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAAIikB,EAAE8xP,WAAU,kBAAIzlR,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,OAAK,MAAM,IAAI,UAAUl5L,EAAEulF,iBAAiBvlF,EAAEslF,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAAIikB,EAAE8xP,WAAU,kBAAIzlR,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,UAAa,CAAC98L,EAAE2zB,IAAIwJ,GAAEghK,EAAAA,EAAAA,cAAE,SAAAv6L,GAAI,GAAkB,MAAXA,EAAE7G,IAAa6G,EAAEulF,mBAAyB,IAAIhtE,GAAEgiL,EAAAA,EAAAA,cAAE,SAAAv6L,GAAI,GAAGylE,GAAEzlE,EAAE0+K,eAAe,OAAO1+K,EAAEulF,iBAAiB98D,EAAE4pJ,WAAyB,IAAdx2K,EAAE4yR,WAAeryR,EAAE,CAAC0P,KAAK,IAAIikB,EAAE8xP,WAAU,WAAK,IAAItlR,EAAE,OAA+B,OAAxBA,EAAEV,EAAEyqR,UAAU1mQ,cAAe,EAAOrjB,EAAE28L,MAAM,CAAC6tF,eAAc,SAAS/mR,EAAEulF,iBAAiBvlF,EAAEslF,kBAAkBlpF,EAAE,CAAC0P,KAAK,QAAO,CAAC1P,EAAE2zB,EAAEl0B,EAAE4sB,EAAE4pJ,WAAW/gJ,GAAE82J,EAAAA,EAAAA,UAAG,iBAAK,CAACrnI,KAAmB,IAAdllD,EAAE4yR,aAAgB,CAAC5yR,IAAIorB,EAAEwB,EAAEg+D,EAAE,CAAC6hE,IAAIjwJ,EAAEiiD,GAAG1/C,EAAEkR,KAAK47I,GAAEj/H,EAAE5sB,EAAEyqR,WAAW,iBAAgB,EAAG,gBAAwC,OAAvB72P,EAAE5zB,EAAE+yR,SAAShvQ,cAAe,EAAO6P,EAAE6qB,GAAG,gBAAgB7xB,EAAE4pJ,cAAS,EAAqB,IAAdx2K,EAAE4yR,UAAc5H,UAAU1qR,EAAEixR,QAAQ7zP,EAAE6gB,QAAQ7hC,GAAG,OAAO0iE,GAAE,CAAC9/E,MAAK,SAAK8rB,GAAKw/D,GAAGzxE,KAAKsc,EAAEqxP,WAAj+B,SAA++BjiR,KAAK,mBAAkCg4L,GAAGjkK,IAAE,SAAShM,EAAE5c,GAAG,IAAI7L,EAAEzD,EAAE,IAASqqL,GAAG,cAAZ,GAAI/qL,EAAJ,KAAMO,EAAN,KAA0B/D,EAAEmpC,GAAE3lC,EAAE+yR,SAAS/iR,GAAGjR,EAA5C,gCAAuE05B,MAAMvE,EAAEgf,KAAI5yC,EAAE41B,KAAIwH,EAAW,OAAJp9B,EAAa,IAAJA,EAAoB,IAAdN,EAAE4yR,WAAiB14F,EAAAA,EAAAA,YAAG,WAAK,IAAIvtJ,EAAE3sC,EAAE+yR,SAAShvQ,SAAS4oB,GAAiB,IAAd3sC,EAAE4yR,WAAejmP,IAAIwL,SAASw9H,eAAehpI,EAAE0wJ,MAAM,CAAC6tF,eAAc,MAAM,CAAClrR,EAAE4yR,UAAU5yR,EAAE+yR,WAAWlpG,GAAG,CAACnwB,UAAU15J,EAAE+yR,SAAShvQ,QAAQ6kQ,QAAsB,IAAd5oR,EAAE4yR,UAAcjK,OAAtD,SAA6Dh8O,GAAG,MAAgC,aAAzBA,EAAEyZ,aAAa,QAAqB6iO,WAAWoC,cAAc1+O,EAAEu2J,aAAa,QAAQ+lF,WAAWqC,YAAYrC,WAAWsC,eAAerrJ,KAA5M,SAAiNvzF,GAAGA,EAAE0Y,aAAa,OAAO,WAAW,IAAI3oC,GAAEgiL,EAAAA,EAAAA,cAAE,SAAA/xJ,GAAI,IAAIk9D,EAAE,OAAO31E,EAAE+xP,UAAUt5O,EAAErvC,KAAK,IAAI,IAAI,GAAmB,KAAhB0C,EAAE6xR,YAAiB,OAAOllP,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAExS,MAAMkvC,EAAErvC,MAAM,IAAI,QAAQ,GAAGqvC,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAAwB,OAApBjQ,EAAE6yR,gBAAuB,CAAC,IAAOl6P,EAAG34B,EAAEq+B,MAAMr+B,EAAE6yR,iBAAhBp0O,GAAiE,OAA/BorD,EAAE1xD,SAASsM,eAAe9rB,KAAWkxE,EAAEupL,QAAQ7nQ,KAAIy6P,WAAU,WAAK,IAAIrtP,EAAE,OAA+B,OAAxBA,EAAE34B,EAAEyqR,UAAU1mQ,cAAe,EAAO4U,EAAE0kK,MAAM,CAAC6tF,eAAc,OAAO,MAAM,IAAI,YAAY,OAAOv+O,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,IAAI,IAAI,UAAU,OAAO1wJ,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,IAAI,IAAI,OAAO,IAAI,SAAS,OAAO1wJ,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,IAAI,IAAI,MAAM,IAAI,WAAW,OAAO1wJ,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,EAAEotL,MAAM,IAAI,IAAI,SAAS1wJ,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAAIsb,KAAIy6P,WAAU,WAAK,IAAIrtP,EAAE,OAA+B,OAAxBA,EAAE34B,EAAEyqR,UAAU1mQ,cAAe,EAAO4U,EAAE0kK,MAAM,CAAC6tF,eAAc,OAAO,MAAM,IAAI,MAAMv+O,EAAE+8C,iBAAiB/8C,EAAE88C,kBAAkB,MAAM,QAAuB,IAAf98C,EAAErvC,IAAIf,SAAagE,EAAE,CAAC0P,KAAK,EAAExS,MAAMkvC,EAAErvC,MAAM42B,EAAEuiB,YAAW,kBAAIl2C,EAAE,CAAC0P,KAAK,MAAI,SAAc,CAAC1P,EAAE2zB,EAAEl0B,IAAIy1B,GAAEipK,EAAAA,EAAAA,cAAE,SAAA/xJ,GAAI,GAAkB,MAAXA,EAAErvC,IAAaqvC,EAAE+8C,mBAAyB,IAAIt+D,GAAEmhK,EAAAA,EAAAA,UAAG,iBAAK,CAACrnI,KAAmB,IAAdllD,EAAE4yR,aAAgB,CAAC5yR,IAAI4qF,EAAE,CAAC,wBAA4C,OAApB5qF,EAAE6yR,iBAAwD,OAA/B1uR,EAAEnE,EAAEq+B,MAAMr+B,EAAE6yR,uBAAwB,EAAO1uR,EAAEs6C,GAAG,kBAA2C,OAAxB/9C,EAAEV,EAAEyqR,UAAU1mQ,cAAe,EAAOrjB,EAAE+9C,GAAGA,GAAG1/C,EAAEisR,UAAUtuQ,EAAE60Q,QAAQ97P,EAAEkhP,KAAK,OAAOwU,SAAS,EAAE1+H,IAAIjwJ,GAAG,OAAO4iF,GAAE,CAAC9/E,MAAK,SAAKstB,GAAKg+D,GAAGzxE,KAAKiS,EAAE07P,WAAn9D,MAAi+DC,SAAx9D,EAAo+DC,QAAQtpP,EAAE74B,KAAK,kBAAiB02L,GAAG03F,EAAAA,SAAyyCxmG,GAAGg/F,OAAO3xF,GAAGrN,GAAG4mG,MAAMx2F,GAAGpQ,GAAGxvB,KAAl0C,SAAYz8J,GAAG,MAAkCA,EAA9Bg2K,SAAS5pJ,OAAb,SAA0B5c,EAAQxP,EAAhB+9C,QAAav+C,EAA/B,GAAkCQ,EAAlC,QAA0CuqL,GAAG,aAA7C,GAAqCxqL,EAArC,KAAuC/D,EAAvC,KAA0DuC,EAA1D,+BAAoF05B,MAAMvE,EAAsB,OAApB3zB,EAAEsyR,iBAAuBtyR,EAAE89B,MAAM99B,EAAEsyR,iBAAiBp0O,KAAK1/C,EAAK8mB,IAAE,WAAK,GAAiB,IAAdtlB,EAAEqyR,WAAgB1+P,EAArB,CAA8B,IAAI/vB,EAAEonB,KAAI,OAAOpnB,EAAE6yJ,uBAAsB,WAAK,IAAIt2J,EAAEisC,EAAoE,OAAjEA,EAAkC,OAA/BjsC,EAAEy3C,SAASsM,eAAe1lD,SAAU,EAAO2B,EAAEorR,iBAAuBn/O,EAAE9rC,KAAKH,EAAE,CAAC4J,MAAM,eAAcnG,EAAE8hR,WAAS,CAAClnR,EAAEm1B,EAAE3zB,EAAEqyR,UAAUryR,EAAEsyR,kBAAkB,IAAIvyR,GAAEy6L,EAAAA,EAAAA,QAAG,CAACvkB,SAAS5pJ,IAAI/G,IAAE,WAAKvlB,EAAEyjB,QAAQyyJ,SAAS5pJ,IAAG,CAACtsB,EAAEssB,IAAI/G,IAAE,WAAK,IAAI1hB,EAAEzD,EAAEJ,EAAEyjB,QAAQ8nQ,UAAyE,OAA9DnrR,EAAkC,OAA/ByD,EAAEg0C,SAASsM,eAAe1lD,SAAU,EAAOoF,EAAE4kF,kBAAmB,EAAOroF,EAAE6kB,gBAAe,CAACjlB,EAAEvB,IAAI8mB,IAAE,kBAAKrpB,EAAE,CAACyT,KAAK,EAAEwuC,GAAG1/C,EAAE2qR,QAAQppR,IAAI,kBAAI9D,EAAE,CAACyT,KAAK,EAAEwuC,GAAG1/C,OAAK,CAACuB,EAAEvB,IAAI,IAAI2+B,GAAEghK,EAAAA,EAAAA,cAAE,SAAAv6L,GAAI,OAAGyoB,EAASzoB,EAAEulF,kBAAoBltF,EAAE,CAACyT,KAAK,IAAIsb,KAAIy6P,WAAU,WAAK,IAAItlR,EAAE,OAA+B,OAAxBA,EAAEH,EAAEkqR,UAAU1mQ,cAAe,EAAOrjB,EAAE28L,MAAM,CAAC6tF,eAAc,OAAOl7Q,EAASA,EAAE7L,QAA5H,KAAgI,CAAC3H,EAAE+D,EAAEkqR,UAAU79P,EAAE5c,IAAI0M,GAAEgiL,EAAAA,EAAAA,cAAE,WAAK,GAAG9xK,EAAE,OAAOpwB,EAAE,CAACyT,KAAK,EAAEotL,MAAM,IAAI7gM,EAAE,CAACyT,KAAK,EAAEotL,MAAM,EAAE5+I,GAAG1/C,MAAK,CAAC6tB,EAAE7tB,EAAEvC,IAAIi5B,GAAEipK,EAAAA,EAAAA,cAAE,WAAK9xK,GAAGsH,GAAG13B,EAAE,CAACyT,KAAK,EAAEotL,MAAM,EAAE5+I,GAAG1/C,MAAK,CAAC6tB,EAAEsH,EAAEn1B,EAAEvC,IAAI4uB,GAAEszK,EAAAA,EAAAA,cAAE,WAAK9xK,IAAIsH,GAAG13B,EAAE,CAACyT,KAAK,EAAEotL,MAAM,MAAK,CAACzwK,EAAEsH,EAAE13B,IAAIouF,GAAE2hG,EAAAA,EAAAA,UAAG,iBAAK,CAACokC,OAAOz8L,EAAEsiJ,SAAS5pJ,KAAI,CAACsH,EAAEtH,IAAI,OAAOwyD,GAAE,CAAC9/E,MAAK,SAAKU,GAAK,CAACy+C,GAAG1/C,EAAE43Q,KAAK,WAAWwU,UAAa,IAAJv+P,OAAO,GAAQ,EAAE,iBAAoB,IAAJA,QAAU,EAAO4pJ,cAAS,EAAOj4H,QAAQ7gB,EAAEquP,QAAQrvQ,EAAEsvQ,cAAcv2P,EAAEw2P,YAAYx2P,EAAEy2P,eAAe9gQ,EAAE+gQ,aAAa/gQ,IAAIjS,KAAKyxE,EAAEk8L,WAAWvrF,GAAG12L,KAAK,eAAyM,IAAIw2L,IAAE,SAAG,GAAG,SAAA76L,GAAC,sBAAOA,GAAP,IAAS8yR,aAAa55L,GAAEl5F,EAAE8yR,cAAH,UAAkB,EAAG,GAArB,KAAwB,EAAG,GAA3B,SAA9B,MAAgE,GAAhE,SAAmE9yR,GAAG,OAAwB,IAAjBA,EAAE8yR,aAAiB9yR,EAAnB,SAAyBA,GAAzB,IAA2B8yR,aAAa,OAArH,MAA0H,GAA1H,SAA6H9yR,EAAEosB,GAAG,OAAOpsB,EAAEkkL,SAAS93J,EAAE83J,OAAOlkL,EAApB,SAA0BA,GAA1B,IAA4BkkL,OAAO93J,EAAE83J,YAA9K,MAAwL,GAAxL,SAA2LlkL,EAAEosB,GAAG,OAAOpsB,EAAE+vR,WAAW3jQ,EAAE2jQ,SAAS/vR,EAAxB,SAA8BA,GAA9B,IAAgC+vR,SAAS3jQ,EAAE2jQ,cAAlP,MAA8P,GAA9P,SAAiQ/vR,EAAEosB,GAAG,OAAOpsB,EAAE+yR,QAAQ3mQ,EAAE2mQ,MAAM/yR,EAAlB,SAAwBA,GAAxB,IAA0B+yR,MAAM3mQ,EAAE2mQ,WAA/S,MAAwT,GAAxT,SAA2T/yR,EAAEosB,GAAG,OAAOpsB,EAAEgwR,UAAU5jQ,EAAE4jQ,QAAQhwR,EAAtB,SAA4BA,GAA5B,IAA8BgwR,QAAQ5jQ,EAAE4jQ,aAA/W,IAA0XgD,IAAGC,EAAAA,EAAAA,eAAG,MAAsC,SAASC,GAAGlzR,GAAG,IAAIosB,GAAEg+C,EAAAA,EAAAA,YAAG4oN,IAAI,GAAO,OAAJ5mQ,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,oCAA2CmrF,GAAG9mF,KAA9C,mBAAoE,MAAMoE,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAE0jR,IAAI1jR,EAAE,OAAO4c,EAAzN4mQ,GAAG/7H,YAAY,iBAA4M,IAAIk8H,IAAGF,EAAAA,EAAAA,eAAG,MAAyC,SAASG,GAAGpzR,GAAG,IAAIosB,GAAEg+C,EAAAA,EAAAA,YAAG+oN,IAAI,GAAO,OAAJ/mQ,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,oCAA2CmrF,GAAG9mF,KAA9C,mBAAoE,MAAMoE,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAE4jR,IAAI5jR,EAAE,OAAO4c,EAA5N+mQ,GAAGl8H,YAAY,oBAA+M,IAAIo8H,IAAGJ,EAAAA,EAAAA,eAAG,MAA2C,SAASK,KAAK,OAAOlpN,EAAAA,EAAAA,YAAGipN,IAA7DA,GAAGp8H,YAAY,sBAAkD,IAAIs8H,IAAGN,EAAAA,EAAAA,eAAG,MAAuE,SAAS34F,GAAGt6L,EAAEosB,GAAG,OAAO8sE,GAAE9sE,EAAE3c,KAAKorL,GAAG76L,EAAEosB,GAAvGmnQ,GAAGt8H,YAAY,sBAAwG,SAAS9rE,GAAGnrF,GAAE,MAAKosB,EAAC,oCAA8B6L,MAAMzoB,EAArC,mCAAmEyoB,MAAMz4B,GAAEy8L,EAAAA,EAAAA,YAAG3B,GAAG,CAACw4F,aAAa,EAAE5uG,OAAO,KAAK6rG,SAAS3jQ,EAAE2mQ,MAAM,KAAK/C,QAAQxgR,IAA3I,IAAqLhQ,EAArL,UAA8JO,EAA9J,EAAiJ+yR,aAAsB92R,EAAvK,EAAgKkoL,OAAe3lL,EAA/K,EAAyKw0R,MAASr/P,EAAlL,MAAuLy0J,EAAAA,EAAAA,YAAG,kBAAIz0J,EAAE,CAACjkB,KAAK,EAAEsgR,SAAS3jQ,MAAI,CAACA,EAAEsH,KAAIy0J,EAAAA,EAAAA,YAAG,kBAAIz0J,EAAE,CAACjkB,KAAK,EAAEugR,QAAQxgR,MAAI,CAACA,EAAEkkB,IAAI,IAAI5zB,GAAE2+L,EAAAA,EAAAA,UAAE,iBAAK,CAACsxF,SAAS3jQ,EAAE4jQ,QAAQxgR,EAAEk4M,MAAM,kBAAIh0L,EAAE,CAACjkB,KAAK,QAAM,CAAC2c,EAAE5c,EAAEkkB,IAAIwJ,EAAEo2P,KAAKp3Q,EAAK,MAAHghB,OAAQ,EAAOA,EAAEs2P,gBAAgBv+P,GAAElS,EAAAA,EAAAA,cAAE,WAAK,IAAIpf,EAAE,OAAwD,OAAjDA,EAAK,MAAHu5B,OAAQ,EAAOA,EAAEu2P,6BAAmC9vR,GAAM,MAAH3H,OAAQ,EAAOA,EAAEmtD,SAASxR,SAASw9H,kBAAqB,MAAH52K,OAAQ,EAAOA,EAAE4qD,SAASxR,SAASw9H,kBAAiB,CAACj4I,EAAElhC,EAAEuC,KAAI4pL,EAAAA,EAAAA,YAAG,kBAAO,MAAHjsK,OAAQ,EAAOA,EAAEpc,KAAG,CAACoc,EAAEpc,IAAI2pB,GAAE,SAAQ,WAAS,IAAJ1pB,IAAQk1B,MAAMj5B,IAAIuC,GAAGm1B,EAAE,CAACjkB,KAAK,QAAM,GAAIga,GAAE,aAAY,SAAA9lB,GAAI,IAAIzD,EAAEyD,EAAE9E,OAAW,IAAJkB,KAAY,MAAH/D,OAAQ,EAAOA,EAAEmtD,SAASjpD,MAAS,MAAH3B,OAAQ,EAAOA,EAAE4qD,SAASjpD,MAAMwzB,EAAE,CAACjkB,KAAK,IAAI64K,GAAGpoL,EAAE,KAAKyD,EAAEulF,iBAAoB,MAAHltF,GAASA,EAAE6gM,cAAa,IAAIjyK,GAAE7H,EAAAA,EAAAA,cAAE,SAAApf,GAAI+vB,EAAE,CAACjkB,KAAK,IAAI,IAAIvP,EAAOyD,EAAEA,aAAa0oR,YAAY1oR,EAAEA,EAAE4f,mBAAmB8oQ,YAAY1oR,EAAE4f,QAAQvnB,EAAEA,EAAQ,MAAHkE,GAASA,EAAE28L,UAAS,CAACnpK,EAAE13B,IAAIouF,GAAEq0G,EAAAA,EAAAA,UAAE,iBAAK,CAACipB,MAAM98L,KAAI,CAACA,IAAIwI,GAAEqrK,EAAAA,EAAAA,UAAE,iBAAK,CAAC/5I,KAAS,IAAJ3kD,EAAM2nN,MAAM98L,KAAI,CAAC7qB,EAAE6qB,IAAI,OAAOo/J,EAAAA,cAAiBgpG,GAAGjgI,SAAS,CAAC91J,MAAMuC,GAAGwqL,EAAAA,cAAiBmpG,GAAGpgI,SAAS,CAAC91J,MAAMmtF,GAAG4/F,EAAAA,cAAiB/6D,GAAE,CAAChyH,MAAMi8F,GAAEn5F,GAAD,UAAK,EAAG,GAAR,KAAW,EAAG,GAAd,KAAmB6+E,GAAE,CAAC9/E,MAAMkB,EAAE2Y,KAAKya,EAAEkzP,WAA5qC,MAA0rCjiR,KAAK,eAAe,IAAgB+2L,GAAGhjK,IAAE,SAAShM,EAAE5c,GAAG,QAAS0jR,GAAG,kBAAZ,GAAI1zR,EAAJ,KAAMO,EAAN,KAA8B/D,GAAEovL,EAAAA,EAAAA,QAAG,MAAM7sL,EAAE+0R,KAAK5/P,EAAK,MAAHn1B,OAAQ,EAAOA,EAAEm1R,YAAY5zR,GAAv3CsqE,EAAAA,EAAAA,YAAGmpN,IAA23Cr2P,EAAM,OAAJp9B,GAAYA,IAAIN,EAAEwwR,QAAQ9zQ,EAAEipB,GAAEnpC,EAAEwT,EAAE0tB,EAAE,KAAK,SAAA7E,GAAC,OAAEt4B,EAAE,CAAC0P,KAAK,EAAEy0K,OAAO7rJ,MAAKpD,EAAEkQ,GAAEnpC,EAAEwT,GAAGob,GAAEwgK,EAAAA,EAAAA,QAAG,MAAMhhG,GAAEghG,EAAAA,EAAAA,QAAkB,oBAAR7iK,OAAoB,KAAKovB,SAASw9H,eAAe1rJ,GAAE,SAAQ,WAAK2gE,EAAE7mE,QAAQqH,EAAErH,QAAQqH,EAAErH,QAAQo0B,SAASw9H,iBAAe,GAAI,IAAI/hJ,GAAErQ,EAAAA,EAAAA,cAAE,SAAAsV,GAAI,IAAIxsB,EAAE8qB,EAAE,GAAGuG,EAAE,CAAC,GAAoB,IAAjB19B,EAAEszR,aAAiB,OAAO,OAAOz6P,EAAEv7B,KAAK,IAAI,IAAI,IAAI,QAAQu7B,EAAE6wD,iBAAiB7wD,EAAE4wD,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAAkB,OAAb5D,EAAErM,EAAE0kL,SAAer4K,EAAEgxL,cAAoB,OAAOxkK,EAAEv7B,KAAK,IAAI,IAAI,IAAI,QAAQu7B,EAAE6wD,iBAAiB7wD,EAAE4wD,kBAAmC,IAAjBzpF,EAAEszR,eAAsB,MAAHp/P,GAASA,EAAEl0B,EAAEuwR,WAAWhwR,EAAE,CAAC0P,KAAK,IAAI,MAAM,IAAI,SAAS,GAAoB,IAAjBjQ,EAAEszR,aAAiB,OAAU,MAAHp/P,OAAQ,EAAOA,EAAEl0B,EAAEuwR,UAAU,IAAI/zR,EAAEunB,UAAUvnB,EAAEunB,QAAQ4lC,SAASxR,SAASw9H,eAAe,OAAO98I,EAAE6wD,iBAAiB7wD,EAAE4wD,kBAAkBlpF,EAAE,CAAC0P,KAAK,IAAI,MAAM,IAAI,MAAM,GAAoB,IAAjBjQ,EAAEszR,eAAmBtzR,EAAEuzR,QAAQvzR,EAAE0kL,OAAO,OAAO,GAAG7rJ,EAAEwrJ,SAAS,CAAC,IAAIz5F,EAAE7mE,UAAwB,OAAboT,EAAEn3B,EAAE0kL,aAAc,EAAOvtJ,EAAEwyB,SAASihC,EAAE7mE,WAAW/jB,EAAEuzR,MAAM5pO,SAASihC,EAAE7mE,SAAS,OAAO,IAAImtK,EAAEhH,KAAKp+F,EAAEolG,EAAE1uL,QAAQooF,EAAE7mE,SAAS,GAAGmtK,EAAE1uL,QAAQxC,EAAE0kL,QAAQ54F,EAAE,OAAOjzD,EAAE6wD,iBAAiB7wD,EAAE4wD,kBAAkB5gB,GAAE7oE,EAAEuzR,MAAM,QAAQ16P,EAAE6wD,iBAAiB7wD,EAAE4wD,kBAAkB5gB,GAAE7oE,EAAEuzR,MAAM,MAAW,CAAChzR,EAAEP,EAAEszR,aAAatzR,EAAEuwR,SAASvwR,EAAE0kL,OAAO1kL,EAAEuzR,MAAM/2R,EAAE03B,EAAEwJ,IAAIv5B,GAAEof,EAAAA,EAAAA,cAAE,SAAAsV,GAAI,IAAIxsB,EAAE,IAAIqxB,IAAY,MAAR7E,EAAEv7B,KAAWu7B,EAAE6wD,iBAAkC,IAAjB1pF,EAAEszR,cAAoBtzR,EAAEuzR,OAASvzR,EAAE0kL,SAA0B,QAAX7rJ,EAAEv7B,IAAK,CAAU,IAAIstF,EAAE7mE,UAAwB,OAAb1X,EAAErM,EAAE0kL,aAAc,EAAOr4K,EAAEs9C,SAASihC,EAAE7mE,WAAW/jB,EAAEuzR,MAAM5pO,SAASihC,EAAE7mE,SAAS,OAAO,IAAIoT,EAAE+yJ,KAAKgH,EAAE/5J,EAAE30B,QAAQooF,EAAE7mE,SAAS,GAAGoT,EAAE30B,QAAQxC,EAAE0kL,QAAQwM,EAAE,OAAOr4J,EAAE6wD,iBAAiB7wD,EAAE4wD,kBAAkB5gB,GAAE7oE,EAAEuzR,MAAM,MAAW,CAACvzR,EAAEszR,aAAatzR,EAAEuzR,MAAMvzR,EAAE0kL,OAAOhnJ,IAAIh9B,GAAE6iB,EAAAA,EAAAA,cAAE,SAAAsV,GAAI,IAAIxsB,EAAE8qB,EAAEyyC,GAAE/wC,EAAEgqJ,gBAAgBj2J,EAAE4pJ,WAAW94I,GAAGn9B,EAAE,CAAC0P,KAAK,IAAkB,OAAb5D,EAAErM,EAAE0kL,SAAer4K,EAAEgxL,UAA2B,IAAjBr9L,EAAEszR,eAAsB,MAAHp/P,GAASA,EAAEl0B,EAAEuwR,WAAyB,OAAbp5P,EAAEn3B,EAAE0kL,SAAevtJ,EAAEkmK,QAAQ98L,EAAE,CAAC0P,KAAK,QAAO,CAAC1P,EAAEP,EAAE0kL,OAAO1kL,EAAEszR,aAAatzR,EAAEuwR,SAAS3jQ,EAAE4pJ,SAAStiJ,EAAEwJ,IAAIiP,GAAEsyJ,EAAAA,EAAAA,UAAE,iBAAK,CAAC/5I,KAAsB,IAAjBllD,EAAEszR,gBAAmB,CAACtzR,IAAI6pG,EAAEgiD,GAAEj/H,EAAEpwB,GAAGm8B,EAAE/L,EAAEysE,EAAE37D,EAAE,CAAC+uH,IAAIh3H,EAAExlB,KAAK45F,EAAEmhL,UAAUp3P,EAAE2qB,QAAQ79C,GAAG,CAAC+rJ,IAAI/vI,EAAE+hC,GAAGz+C,EAAEuwR,SAAStgR,KAAK45F,EAAE,gBAAgBj9E,EAAE4pJ,cAAS,EAAwB,IAAjBx2K,EAAEszR,aAAiB,gBAAgBtzR,EAAEuzR,MAAMvzR,EAAEwwR,aAAQ,EAAOxF,UAAUp3P,EAAE29P,QAAQptR,EAAEo6C,QAAQ79C,GAAG,OAAO0+E,GAAE,CAAC9/E,MAAK,SAAKq5B,GAAK0gE,GAAGlgF,KAAKwzB,EAAEm6O,WAA5nE,SAA0oEjiR,KAAK,sBAAqCq3L,GAAGtjK,IAAE,SAAShM,EAAE5c,GAAG,QAAwB0jR,GAAG,mBAA3B,GAAkB1zR,EAAlB,KAAKszR,aAAgB/yR,EAArB,KAA8C/D,EAAEmpC,GAAE31B,GAAGjR,EAArD,qCAAqF05B,MAAMvE,EAAEgC,KAAI51B,EAAW,OAAJ4zB,EAAa,IAAJA,EAAU,IAAJl0B,EAAS09B,GAAEna,EAAAA,EAAAA,cAAE,SAAAqnE,GAAI,GAAGhhB,GAAEghB,EAAEi4F,eAAe,OAAOj4F,EAAElB,iBAAiBnpF,EAAE,CAAC0P,KAAK,MAAK,CAAC1P,IAAImc,GAAEuiL,EAAAA,EAAAA,UAAE,iBAAK,CAAC/5I,KAAS,IAAJllD,KAAQ,CAACA,IAAI,OAAOo/E,GAAE,CAAC9/E,MAAK,SAAKstB,GAAK,CAAC6/H,IAAIjwJ,EAAEiiD,GAAG1/C,EAAE,eAAc,EAAGw/C,QAAQ7gB,IAAIvkB,KAAKuD,EAAEoqQ,WAA/U,MAA6VC,SAApV,EAAgWC,QAAQ1mR,EAAEuE,KAAK,uBAAsCy3L,GAAG1jK,IAAE,SAAShM,EAAE5c,GAAG,MAAqB4c,EAAjBywK,MAAMr9L,OAAV,SAAkBO,EAAlB,GAAqBqsB,EAArB,QAA6B8mQ,GAAG,iBAAhC,GAAwBl3R,EAAxB,KAA0BuC,EAA1B,KAAwDm1B,EAAG0/P,GAAG,iBAAZ1rE,MAA6B5nN,GAAEsrL,EAAAA,EAAAA,QAAG,MAAMluJ,EAAEiI,GAAErlC,EAAE0P,GAAE,SAAA7L,GAAIpF,EAAE,CAACkR,KAAK,EAAEsjR,MAAMpvR,OAAMuY,EAAEwZ,KAAIT,EAAW,OAAJ/Y,EAAa,IAAJA,EAAuB,IAAjBlgB,EAAE82R,aAAoBloQ,GAAE7H,EAAAA,EAAAA,cAAE,SAAApf,GAAI,IAAIzD,EAAE,GAAkB,WAAXyD,EAAE7G,IAAK,CAAa,GAAoB,IAAjBd,EAAE82R,eAAmBhzR,EAAEyjB,UAAUzjB,EAAEyjB,QAAQ4lC,SAASxR,SAASw9H,eAAe,OAAOxxK,EAAEulF,iBAAiBvlF,EAAEslF,kBAAkB1qF,EAAE,CAACkR,KAAK,IAAkB,OAAbvP,EAAElE,EAAEkoL,SAAehkL,EAAE28L,WAAgB,CAAC7gM,EAAE8D,EAAEvB,KAAI4pL,EAAAA,EAAAA,YAAG,kBAAI,kBAAI5pL,EAAE,CAACkR,KAAK,EAAEsjR,MAAM,UAAO,CAACx0R,KAAI4pL,EAAAA,EAAAA,YAAG,WAAK,IAAIxkL,EAAEyoB,EAAEo+O,QAAyB,IAAjBxuQ,EAAE82R,eAAkC,OAAdnvR,EAAEyoB,EAAE0iI,UAAenrJ,IAAOpF,EAAE,CAACkR,KAAK,EAAEsjR,MAAM,SAAQ,CAAC/2R,EAAE82R,aAAa1mQ,EAAE0iI,QAAQ1iI,EAAEo+O,OAAOjsQ,KAAI4pL,EAAAA,EAAAA,YAAG,WAAK,GAAI3oL,GAAoB,IAAjBxD,EAAE82R,cAAmBhzR,EAAEyjB,QAA9B,CAA6C,IAAI5f,EAAEg0C,SAASw9H,cAAcr1K,EAAEyjB,QAAQ4lC,SAASxlD,IAAI0kE,GAAEvoE,EAAEyjB,QAAQ,MAAI,CAAC/jB,EAAEM,EAAE9D,EAAE82R,eAAerpQ,GAAE,WAAU,SAAA9lB,GAAI,IAAIwoC,EAAE,GAAoB,IAAjBnwC,EAAE82R,cAAmBhzR,EAAEyjB,SAAiB,QAAR5f,EAAE7G,KAAc66C,SAASw9H,eAAgBr1K,EAAEyjB,SAAUzjB,EAAEyjB,QAAQ4lC,SAASxR,SAASw9H,eAApH,CAA0IxxK,EAAEulF,iBAAiB,IAAIhpF,EAAEmoE,GAAEvoE,EAAEyjB,QAAQ5f,EAAEkgL,SAAS,EAAE,GAAG,GAAO,IAAJ3jL,EAAM,OAAoB,OAAbisC,EAAEnwC,EAAEkoL,aAAc,EAAO/3I,EAAE0wJ,QAAQ,GAAO,IAAJ38L,EAAM,CAAC,IAAIlE,EAAEkoL,OAAO,OAAO,IAAI76E,EAAEqgF,KAAKvxJ,EAAEkxE,EAAErnG,QAAQhG,EAAEkoL,QAAsG,IAAT77G,GAAnFghC,EAAE72F,OAAO2lB,EAAE,GAAGj1B,QAAO,SAAAm1B,GAAI,IAAIxsB,EAAE,QAAuB,OAAdA,EAAE/L,EAAEyjB,cAAe,EAAO1X,EAAEs9C,SAAS9wB,OAAU,IAAQgwC,GAAE1wB,SAASmL,KAAK,QAAMr5B,GAAE,SAAQ,WAAK,IAAI9lB,GAAGnE,GAAoB,IAAjBxD,EAAE82R,gBAAoBhzR,EAAEyjB,UAAyB,OAAd5f,EAAE7D,EAAEyjB,cAAe,EAAO5f,EAAEwlD,SAASxR,SAASw9H,iBAAiB52K,EAAE,CAACkR,KAAK,QAAM,GAAI,IAAI26E,GAAEq0G,EAAAA,EAAAA,UAAE,iBAAK,CAAC/5I,KAAsB,IAAjB1oD,EAAE82R,aAAiBprE,MAAMh0L,KAAI,CAAC13B,EAAE03B,IAAIN,EAAE,CAAC64H,IAAI/uH,EAAE+gB,GAAGjiD,EAAEg0R,QAAQxF,UAAU5/P,GAAG,OAAOo/J,EAAAA,cAAiBupG,GAAGxgI,SAAS,CAAC91J,MAAMjB,EAAEg0R,SAASpxM,GAAE,CAAC9/E,MAAK,SAAKiB,GAAKqzB,GAAGza,KAAKyxE,EAAEk8L,WAAn+C,MAAi/CC,SAAx+C,EAAo/CC,QAAQvxP,EAAE5wB,KAAK,sBAA+wB8mF,GAAG8/L,OAAO7vF,GAAGjwG,GAAGskM,QAAQ/zF,GAAGvwG,GAAG8lM,MAAMn1F,GAAG3wG,GAAGkiM,MAA3xB,SAAYrtR,GAAO,IAAAosB,GAAEg/J,EAAAA,EAAAA,QAAG,MAAL,KAAiB7hH,EAAAA,EAAAA,UAAG,IAApB,GAAY/5D,EAAZ,KAAchQ,EAAd,KAAwBO,GAAEgjB,EAAAA,EAAAA,cAAE,SAAA6H,GAAIprB,GAAE,SAAA4qF,GAAI,IAAIh3D,EAAEg3D,EAAEpoF,QAAQ4oB,GAAG,IAAQ,IAALwI,EAAO,CAAC,IAAIzvB,EAAEymF,EAAEhmF,QAAQ,OAAOT,EAAE6O,OAAO4gB,EAAE,GAAGzvB,EAAE,OAAOymF,OAAK,CAAC5qF,IAAIxD,GAAE+mB,EAAAA,EAAAA,cAAE,SAAA6H,GAAC,OAAGprB,GAAE,SAAA4qF,GAAC,kBAAMA,GAAN,CAAQx/D,OAAI,kBAAI7qB,EAAE6qB,MAAI,CAACprB,EAAEO,IAAIxB,GAAEwkB,EAAAA,EAAAA,cAAE,WAAK,IAAIqnE,EAAMx/D,EAAE+sB,SAASw9H,cAAc,SAAsB,OAAd/qF,EAAEh+D,EAAE7I,cAAe,EAAO6mE,EAAEjhC,SAASv+B,KAAOpb,EAAE47C,MAAK,SAAAh4B,GAAI,IAAIzvB,EAAEzD,EAAE,OAAgD,OAAxCyD,EAAEg0C,SAASsM,eAAe7wB,EAAE28P,gBAAiB,EAAOpsR,EAAEwlD,SAASv+B,MAA8C,OAAvC1qB,EAAEy3C,SAASsM,eAAe7wB,EAAE48P,eAAgB,EAAO9vR,EAAEipD,SAASv+B,SAAO,CAACwB,EAAE5c,IAAIkkB,GAAE3Q,EAAAA,EAAAA,cAAE,SAAA6H,GAAG,WAAcpb,GAAd,IAAC,gCAAQ46E,EAAR,QAAeA,EAAE2lM,WAAWnlQ,GAAGw/D,EAAEs9H,SAAlC,iCAA2C,CAACl4M,IAAI1P,GAAE2+L,EAAAA,EAAAA,UAAE,iBAAK,CAAC+0F,gBAAgBx3R,EAAE23R,kBAAkB5zR,EAAE0zR,0BAA0Bl1R,EAAEm1R,YAAYhgQ,KAAI,CAAC13B,EAAE+D,EAAExB,EAAEm1B,IAAIwJ,GAAEuhK,EAAAA,EAAAA,UAAE,iBAAK,KAAI,IAAIviL,EAAE,CAAC+vI,IAAI7/H,GAAG6I,EAAEj1B,EAAE,OAAOgqL,EAAAA,cAAiBqpG,GAAGtgI,SAAS,CAAC91J,MAAM6C,GAAG8+E,GAAE,CAAC9/E,MAAK,SAAKm2B,GAAK/Y,GAAGvD,KAAKukB,EAAEopP,WAAjtB,MAA+tBjiR,KAAK,oBAAqhB,IAAIuvR,IAAGt4F,EAAAA,EAAAA,eAAG,MAAM,SAASu4F,KAAK,IAAI7zR,GAAEu8L,EAAAA,EAAAA,YAAGq3F,IAAI,GAAO,OAAJ5zR,EAAS,CAAC,IAAIosB,EAAE,IAAI3jB,MAAM,2EAA2E,MAAMA,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBxgC,EAAEynQ,IAAIznQ,EAAE,OAAOpsB,EAAE,SAAS6pL,KAAK,SAASuQ,EAAAA,EAAAA,UAAG,IAAZ,GAAIp6L,EAAJ,KAAMosB,EAAN,KAAgB,MAAM,CAACpsB,EAAEjE,OAAO,EAAEiE,EAAEsb,KAAK,UAAK,GAAOw4Q,EAAAA,EAAAA,UAAG,kBAAI,SAASt0R,GAAG,IAAIO,GAAE07L,EAAAA,EAAAA,cAAG,SAAAl9L,GAAC,OAAG6tB,GAAE,SAAAsH,GAAC,kBAAMA,GAAN,CAAQn1B,OAAI,kBAAI6tB,GAAE,SAAAsH,GAAI,IAAI5zB,EAAE4zB,EAAEtvB,QAAQ84B,EAAEp9B,EAAEkC,QAAQzD,GAAG,OAAY,IAAL2+B,GAAQp9B,EAAE0S,OAAO0qB,EAAE,GAAGp9B,QAAK,IAAI9D,GAAE83R,EAAAA,EAAAA,UAAG,iBAAK,CAACjG,SAAS9tR,EAAE4Y,KAAKnZ,EAAEmZ,KAAKtU,KAAK7E,EAAE6E,KAAKvF,MAAMU,EAAEV,SAAQ,CAACiB,EAAEP,EAAEmZ,KAAKnZ,EAAE6E,KAAK7E,EAAEV,QAAQ,OAAOyD,EAAAA,cAAiBqxR,GAAG7gI,SAAS,CAAC91J,MAAMjB,GAAGwD,EAAEkpD,aAAW,CAACt8B,KAAoB,SAASmrE,GAAGv3F,GAAG,MAAuBA,EAAnBwsL,QAAQpgK,OAAZ,SAAoB5c,EAApB,GAAuBxP,EAAvB,IAAyBR,EAAEq0R,KAAK9zR,EAAhC,2BAAsDk4B,MAAM5S,IAAE,kBAAI7lB,EAAEquR,SAAS9tR,KAAG,CAACA,EAAEP,EAAEquR,WAAW,IAAI7xR,EAAC,SAAKwD,EAAEV,OAAP,IAAam/C,GAAGl+C,IAAGxB,EAAC,SAAKiR,GAAKxT,GAAG,OAAOowB,UAAU7tB,EAAEw/C,QAAQ6gC,GAAE,CAAC9/E,MAAMP,EAAEoa,KAAKnZ,EAAEmZ,MAAM,GAAG2tQ,WAAnN,QAAiOjiR,KAAK7E,EAAE6E,MAAM,UAAU,IAAI8qE,IAAE,SAAG,GAAH,SAAMnvE,EAAEosB,GAAG,gBAAUpsB,GAAV,IAAYw9B,QAAO,YAAKx9B,EAAEw9B,SAAP,CAAe,CAACygB,GAAG7xB,EAAE6xB,GAAGs9G,QAAQnvI,EAAEmvI,QAAQu2H,SAAS1lQ,EAAE0lQ,iBAAnF,MAAiG,GAAjG,SAAoG9xR,EAAEosB,GAAG,IAAI5c,EAAExP,EAAEw9B,QAAQp5B,QAAQ5E,EAAEQ,EAAEw9B,QAAQ2pP,WAAU,SAAApnR,GAAC,OAAEA,EAAEk+C,KAAK7xB,EAAE6xB,MAAI,OAAY,IAALz+C,EAAOQ,GAAGwP,EAAEgD,OAAOhT,EAAE,GAAX,SAAkBQ,GAAlB,IAAoBw9B,QAAQhuB,QAApN,IAA0NukR,IAAGv3F,EAAAA,EAAAA,eAAG,MAAyC,SAASw3F,GAAGh0R,GAAG,IAAIosB,GAAEwvK,EAAAA,EAAAA,YAAGm4F,IAAI,GAAO,OAAJ3nQ,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,oCAA2C4T,GAAGvP,KAA9C,mBAAoE,MAAMoE,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAEwkR,IAAIxkR,EAAE,OAAO4c,EAAE,SAASwwK,GAAG58L,EAAEosB,GAAG,OAAO8sE,GAAE9sE,EAAE3c,KAAK0/D,GAAGnvE,EAAEosB,GAApQ2nQ,GAAG98H,YAAY,oBAAqQ,SAASrjJ,GAAG5T,GAAG,IAAUosB,EAAiCpsB,EAAvC/C,MAAiBuS,EAAsBxP,EAA/BggD,SAAZ,EAA2ChgD,EAApBg2K,SAASx2K,OAAhC,SAAwCO,EAAxC,GAA2CC,EAA3C,SAA6Dw5L,EAAAA,EAAAA,YAAGoD,GAAG,CAACp/J,QAAQ,KAA5E,GAAuDxhC,EAAvD,KAA+CwhC,QAAWj/B,EAA1D,SAAuFsrL,KAAvF,GAAkFn2J,EAAlF,KAAoF5zB,EAApF,SAAkG60B,KAAlG,GAA6FuI,EAA7F,KAA+FhhB,EAA/F,KAAuG+Y,EAAvG,gCAAkIgD,MAAMrN,GAAEqpQ,EAAAA,EAAAA,QAAG,MAAM7pM,GAAE1qF,EAAAA,EAAAA,UAAG,kBAAI1D,EAAEmxO,MAAK,SAAAt0I,GAAC,OAAGA,EAAEi5L,SAASvuQ,QAAQyyJ,cAAU,CAACh6K,IAAIo3B,GAAE1zB,EAAAA,EAAAA,UAAG,kBAAI1D,EAAEovD,MAAK,SAAAytC,GAAC,OAAEA,EAAEi5L,SAASvuQ,QAAQtmB,QAAQmvB,OAAG,CAACpwB,EAAEowB,IAAIzoB,GAAEgmL,EAAAA,EAAAA,cAAG,SAAA9wF,GAAI,IAAIhtF,EAAE,GAAGrM,GAAGq5F,IAAIzsE,EAAE,OAAM,EAAG,IAAIiM,EAA+C,OAA5CxsB,EAAE7P,EAAEmxO,MAAK,SAAAx2M,GAAC,OAAEA,EAAEm7P,SAASvuQ,QAAQtmB,QAAQ47F,WAAU,EAAOhtF,EAAEimR,SAASvuQ,QAAQ,QAAU,MAAH8U,OAAQ,EAAOA,EAAE29I,YAAcxmK,EAAEqpF,IAAG,KAAK,CAACrpF,EAAE4c,EAAE5sB,EAAExD,IAAIqtL,GAAG,CAACnwB,UAAUtuI,EAAErH,QAAQ4kQ,OAArB,SAA4BtvL,GAAG,MAAgC,UAAzBA,EAAEjzC,aAAa,QAAkB6iO,WAAWoC,cAAchyL,EAAE6pG,aAAa,QAAQ+lF,WAAWqC,YAAYrC,WAAWsC,eAAerrJ,KAAxK,SAA6K7mC,GAAGA,EAAEh0C,aAAa,OAAO,WAAW,IAAI3kD,GAAEypL,EAAAA,EAAAA,cAAG,SAAA9wF,GAAI,GAAIjuE,EAAErH,QAAN,CAAqB,IAAI1X,EAAE7P,EAAEkH,QAAO,SAAAyzB,GAAC,OAAgC,IAA9BA,EAAEm7P,SAASvuQ,QAAQyyJ,YAAejtK,KAAI,SAAA4tB,GAAC,OAAEA,EAAE4kI,QAAQh4I,WAAS,OAAOs1E,EAAE/7F,KAAK,IAAI,YAAY,IAAI,UAAU,GAAG+7F,EAAE3P,iBAAiB2P,EAAE5P,kBAA8B,IAAZ5gB,GAAEx8D,EAAE,IAAU,CAAC,IAAI6kL,EAAE10L,EAAEmxO,MAAK,SAAA7hJ,GAAC,OAAEA,EAAEiwE,QAAQh4I,UAAUo0B,SAASw9H,iBAAeub,GAAG/sL,EAAE+sL,EAAEohG,SAASvuQ,QAAQtmB,OAAO,MAAM,IAAI,aAAa,IAAI,YAAY,GAAG47F,EAAE3P,iBAAiB2P,EAAE5P,kBAA8B,IAAZ5gB,GAAEx8D,EAAE,IAAU,CAAC,IAAI6kL,EAAE10L,EAAEmxO,MAAK,SAAA7hJ,GAAC,OAAEA,EAAEiwE,QAAQh4I,UAAUo0B,SAASw9H,iBAAeub,GAAG/sL,EAAE+sL,EAAEohG,SAASvuQ,QAAQtmB,OAAO,MAAM,IAAI,IAAK47F,EAAE3P,iBAAiB2P,EAAE5P,kBAAkB,IAAItyD,EAAE36B,EAAEmxO,MAAK,SAAAz8C,GAAC,OAAEA,EAAEn1B,QAAQh4I,UAAUo0B,SAASw9H,iBAAex+I,GAAGhzB,EAAEgzB,EAAEm7P,SAASvuQ,QAAQtmB,WAAe,CAAC2tB,EAAE5uB,EAAE2H,IAAIwoC,GAAEw9I,EAAAA,EAAAA,cAAG,SAAA9wF,GAAC,OAAGt6F,EAAE,IAACkR,KAAK,GAAKopF,IAAI,kBAAIt6F,EAAE,CAACkR,KAAK,EAAEwuC,GAAG46C,EAAE56C,QAAM,CAAC1/C,IAAI8qG,GAAE3pG,EAAAA,EAAAA,UAAG,iBAAK,CAACw0R,eAAe/nP,EAAEgoP,YAAY/pM,EAAEgqM,sBAAsBhhQ,EAAEihQ,OAAO1wR,EAAEqyK,SAASx2K,EAAEvC,MAAMmvB,KAAI,CAAC+f,EAAEi+C,EAAEh3D,EAAEzvB,EAAEnE,EAAE4sB,IAAI+L,EAAE,CAAC8zH,IAAIrhI,EAAEqzB,GAAGhpB,EAAEkhP,KAAK,aAAa,kBAAkBziP,EAAE,mBAAmBwJ,EAAEstP,UAAUtqR,GAAG,OAAOuoL,EAAAA,cAAiBvsK,EAAE,CAAC7X,KAAK,0BAA0BokL,EAAAA,cAAiB3oL,EAAE,CAACuE,KAAK,oBAAoBokL,EAAAA,cAAiBsrG,GAAGhhI,SAAS,CAAC91J,MAAMosG,GAAGzqB,GAAE,CAAC9/E,MAAK,SAAKiB,GAAKo4B,GAAGmuP,WAAxsD,MAAstDjiR,KAAK,kBAAiiCuP,GAAGw3Q,OAArgC,SAAYprR,GAAO,IAAAosB,GAAE6nQ,EAAAA,EAAAA,QAAG,MAAMzkR,EAAX,uCAA6CyoB,MAA7C,IAAyD4xJ,KAAzD,GAAoDrqL,EAApD,KAAsDO,EAAtD,SAAoE40B,KAApE,GAA+D34B,EAA/D,KAAiEuC,EAAjE,OAA71G,WAAgB,IAAJyB,EAAI,uDAAF,EAAG,KAASy5L,EAAAA,EAAAA,UAAGz5L,GAAZ,GAAIosB,EAAJ,KAAM5c,EAAN,KAAehQ,GAAE03H,EAAAA,EAAAA,cAAG,SAAAxjG,GAAC,OAAElkB,GAAE,SAAA1P,GAAC,OAAEA,EAAE4zB,OAAG,CAAClkB,IAAIzP,GAAEm3H,EAAAA,EAAAA,cAAG,SAAAxjG,GAAC,OAAEvxB,QAAQiqB,EAAEsH,KAAG,CAACtH,IAAIpwB,GAAEk7H,EAAAA,EAAAA,cAAG,SAAAxjG,GAAC,OAAElkB,GAAE,SAAA1P,GAAC,OAAEA,GAAG4zB,OAAG,CAAClkB,IAAIjR,GAAE24H,EAAAA,EAAAA,cAAG,SAAAxjG,GAAC,OAAElkB,GAAE,SAAA1P,GAAC,OAAEA,EAAE4zB,OAAG,CAAClkB,IAAI,MAAM,CAAC8kR,QAAQ90R,EAAE+0R,QAAQx0R,EAAEy0R,WAAWx4R,EAAEy4R,WAAWl2R,GAAsxGm2R,CAAG,GAA7BhhQ,EAAlF,EAA0E4gQ,QAAqBx0R,EAA/F,EAAoF00R,WAAqBt3P,EAAzG,EAAiGq3P,QAAwBr4Q,EAAsBlc,EAA5B/C,MAAnH,EAA+I+C,EAApBg2K,SAAS/gJ,OAApI,SAA4IrK,EAA5I,GAA+I5qB,EAA/I,IAAiJoqF,GAAE6pM,EAAAA,EAAAA,QAAG,CAACh3R,MAAMif,EAAE85J,SAAS/gJ,IAAI5P,IAAE,WAAK+kE,EAAE7mE,QAAQtmB,MAAMif,IAAG,CAACA,EAAEkuE,IAAI/kE,IAAE,WAAK+kE,EAAE7mE,QAAQyyJ,SAAS/gJ,IAAG,CAACA,EAAEm1D,IAAI,MAAwF4pM,GAAG,qBAAxE5gQ,EAAnB,EAAI8gQ,eAA0BvwR,EAA9B,EAAqBqyK,SAAkB91K,EAAvC,EAAgCm0R,OAAqBloP,EAArD,EAAyCgoP,YAAoC9qL,EAA7E,EAAuD+qL,sBAA8Bj8P,EAArF,EAA+El7B,MAAiCooB,IAAE,kBAAI+N,EAAE,CAAC6qB,GAAGzuC,EAAE+rJ,QAAQnvI,EAAE0lQ,SAAS1nM,MAAI,CAAC56E,EAAE4jB,EAAEhH,EAAEpsB,IAAI,IAAI64F,GAAE8wF,EAAAA,EAAAA,cAAG,WAAK,IAAIp7I,GAAGruC,EAAEgc,KAAKwX,EAAE,GAAkB,OAAd6a,EAAEniB,EAAE7I,UAAgBgrB,EAAEsuJ,WAAU,CAACnpK,EAAExzB,EAAEgc,IAAImc,GAAEsxJ,EAAAA,EAAAA,cAAG,kBAAIj2J,EAAE,KAAG,CAACA,IAAI7nB,GAAE89K,EAAAA,EAAAA,cAAG,kBAAI7pL,EAAE,KAAG,CAACA,IAAI62B,GAAM,MAAHwV,OAAQ,EAAOA,EAAE8R,MAAMzuC,EAAEkhL,EAAE/sL,GAAGsxB,EAAEq2D,EAAEnzD,IAAIjc,EAAEuX,EAAE,CAACw4H,IAAI7/H,EAAE6xB,GAAGzuC,EAAE2mQ,KAAK,QAAQ,eAAe7qL,EAAE,OAAO,QAAQ,kBAAkB9rF,EAAE,mBAAmBxD,EAAE,kBAAgB00L,QAAK,EAAOi6F,SAAcj6F,GAAG,EAAEplG,IAAI+d,GAAG1yE,EAAE,GAAG,EAAKonB,QAAQ2yI,OAAE,EAAO73F,EAAE0yL,QAAQ76F,OAAE,EAAOr4J,EAAEs8P,OAAOjkG,OAAE,EAAO7kL,GAAGyiC,GAAE5uC,EAAAA,EAAAA,UAAG,iBAAK,CAAC42E,QAAQgV,EAAE0qF,SAAS0a,EAAEy/B,OAAOjzL,EAAE,MAAK,CAACouD,EAAEolG,EAAExzJ,IAAI,OAAOurJ,EAAAA,cAAiBlqL,EAAE,CAAC8F,KAAK,0BAA0BokL,EAAAA,cAAiB1oL,EAAE,CAACsE,KAAK,oBAAoBu6E,GAAE,CAAC9/E,MAAK,SAAK8rB,GAAK6I,GAAG9a,KAAK21B,EAAEg4O,WAA79B,MAA2+BjiR,KAAK,yBAAqCuP,GAAGs3Q,MAAM3zL,GAAG3jF,GAAG+7Q,YAAY3mG,GAA0I,IAAI4rG,IAAGn4F,EAAAA,EAAAA,eAAG,MAAMm4F,GAAG39H,YAAY,eAAe,IAAI2gD,GAAGjb,EAAAA,SAAyY,SAASk4F,GAAG70R,GAAG,IAAYosB,EAAmBpsB,EAA3Bs2E,QAAmB9mE,EAAQxP,EAAjBggD,SAAcxgD,EAA5B,GAA+BQ,EAA/B,IAAiCD,EAAjC,4BAAwDk4B,MAAMj8B,GAAE2/L,EAAAA,EAAAA,YAAGi5F,IAAIr2R,GAAEo0H,EAAAA,EAAAA,QAAG,MAAMj/F,EAAEyR,GAAE5mC,EAAM,OAAJvC,EAAS,KAAKA,EAAE84R,WAAWh1R,GAAE+uG,EAAAA,EAAAA,cAAG,kBAAIr/F,GAAG4c,KAAG,CAAC5c,EAAE4c,IAAI8Q,GAAE2xE,EAAAA,EAAAA,cAAG,SAAAz7E,GAAI,GAAGg2C,GAAEh2C,EAAEivJ,eAAe,OAAOjvJ,EAAE81D,iBAAiB91D,EAAE81D,iBAAiBppF,MAAK,CAACA,IAAIoc,GAAE2yF,EAAAA,EAAAA,cAAG,SAAAz7E,GAAY,QAARA,EAAEt2B,KAAas2B,EAAE81D,iBAAyB,MAAR91D,EAAEt2B,KAAWgD,MAAK,CAACA,IAAIm1B,GAAE45E,EAAAA,EAAAA,cAAG,SAAAz7E,GAAC,OAAEA,EAAE81D,mBAAiB,IAAIt+D,GAAEmqQ,EAAAA,EAAAA,UAAG,iBAAK,CAACz+M,QAAQlqD,KAAI,CAACA,IAAIg+D,EAAE,CAACnsC,GAAGl+C,EAAEksJ,IAAIv4H,EAAEyiP,KAAK,SAAS1mQ,KAAK47I,GAAErrJ,EAAEzB,GAAGosR,SAAS,EAAE,eAAev+P,EAAE,kBAAqB,MAAHpwB,OAAQ,EAAOA,EAAEg5R,WAAW,mBAAsB,MAAHh5R,OAAQ,EAAOA,EAAEi5R,YAAYl3O,QAAQ7gB,EAAE6zP,QAAQ70Q,EAAEg5Q,WAAWjgQ,GAAG,OAAO2pD,GAAE,CAAC9/E,MAAK,SAAKU,GAAK4qF,GAAGzxE,KAAKiS,EAAE07P,WAA3lB,SAAymBjiR,KAAK,WAAWwwR,GAAGxH,MAAz/B,SAAYrtR,GAAG,SAASovE,EAAAA,EAAAA,UAAG,MAAZ,GAAIhjD,EAAJ,KAAM5c,EAAN,SAAwBq6K,KAAxB,GAAmBrqL,EAAnB,KAAqBO,EAArB,SAAmC40B,KAAnC,GAA8B34B,EAA9B,KAAgCuC,EAAhC,KAAwCm1B,GAAEqhQ,EAAAA,EAAAA,UAAG,iBAAK,CAACI,OAAO/oQ,EAAE0oQ,UAAUtlR,EAAEwlR,WAAWx1R,EAAEy1R,YAAYj5R,KAAI,CAACowB,EAAE5c,EAAEhQ,EAAExD,IAAI,OAAOo5R,EAAAA,cAAiB72R,EAAE,CAAC8F,KAAK,sBAAsB+wR,EAAAA,cAAiBr1R,EAAE,CAACsE,KAAK,eAAevF,MAAM,CAACi/C,QAAD,YAAY3xB,IAAIA,EAAEwmQ,QAAQxmQ,EAAEywK,MAAM,CAAC6tF,eAAc,QAAS0K,EAAAA,cAAiBR,GAAG7hI,SAAS,CAAC91J,MAAMy2B,GAAGkrD,GAAE,CAAC9/E,MAAMkB,EAAEsmR,WAAW1uE,GAAGvzM,KAAK,qBAAgqBwwR,GAAG3J,MAAM3zL,GAAGs9L,GAAGlF,YAAY3mG,GAA4J,IAAIqsG,IAAE,SAAG,GAAH,SAAMr1R,EAAEosB,GAAG,OAAOpsB,EAAEs1R,gBAAgBlpQ,EAAE1f,MAAM1M,EAA1B,SAAgCA,GAAhC,IAAkCs1R,cAAclpQ,EAAE1f,WAApE,MAA6E,GAA7E,SAAgF1M,EAAEosB,GAAG,OAAOpsB,EAAEoxR,cAAchlQ,EAAEglQ,YAAYpxR,EAA9B,SAAoCA,GAApC,IAAsCoxR,YAAYhlQ,EAAEglQ,iBAAhJ,MAA+J,GAA/J,SAAkKpxR,EAAEosB,GAAG,OAAOpsB,EAAEu1R,aAAanpQ,EAAEmpQ,WAAWv1R,EAA5B,SAAkCA,GAAlC,IAAoCu1R,WAAWnpQ,EAAEmpQ,gBAA/N,MAA6O,GAA7O,SAAgPv1R,EAAEosB,GAAG,OAAOpsB,EAAEw1R,KAAKxqR,SAASohB,EAAEqpQ,KAAKz1R,EAAvB,SAA6BA,GAA7B,IAA+Bw1R,KAAI,YAAKx1R,EAAEw1R,MAAP,CAAYppQ,EAAEqpQ,WAA7S,MAAqT,GAArT,SAAwTz1R,EAAEosB,GAAG,gBAAUpsB,GAAV,IAAYw1R,KAAKx1R,EAAEw1R,KAAKtyR,QAAO,SAAAsM,GAAC,OAAEA,IAAI4c,EAAEqpQ,YAArW,MAA6W,GAA7W,SAAgXz1R,EAAEosB,GAAG,OAAOpsB,EAAE01R,OAAO1qR,SAASohB,EAAE2mQ,OAAO/yR,EAA3B,SAAiCA,GAAjC,IAAmC01R,OAAM,YAAK11R,EAAE01R,QAAP,CAActpQ,EAAE2mQ,aAArb,MAA+b,GAA/b,SAAkc/yR,EAAEosB,GAAG,gBAAUpsB,GAAV,IAAY01R,OAAO11R,EAAE01R,OAAOxyR,QAAO,SAAAsM,GAAC,OAAEA,IAAI4c,EAAE2mQ,cAAnf,MAA6f,GAA7f,SAAggB/yR,GAAG,aAAUA,MAA7gB,IAAkhB21R,IAAGC,EAAAA,EAAAA,eAAG,MAAmC,SAASnrG,GAAGzqL,GAAG,IAAIosB,GAAEimG,EAAAA,EAAAA,YAAGsjK,IAAI,GAAO,OAAJvpQ,EAAS,CAAC,IAAI5c,EAAE,IAAI/G,MAAJ,WAAczI,EAAd,qDAAmE,MAAMyI,MAAMmkD,mBAAmBnkD,MAAMmkD,kBAAkBp9C,EAAEi7K,IAAIj7K,EAAE,OAAO4c,EAAE,SAASypQ,GAAG71R,EAAEosB,GAAG,OAAO8sE,GAAE9sE,EAAE3c,KAAK4lR,GAAGr1R,EAAEosB,GAA7PupQ,GAAG1+H,YAAY,cAAiP,IAAIxkC,GAAG/7E,EAAAA,SAAy1C,SAASwzI,GAAGlqL,GAAG,IAAIm4B,EAAE0gE,EAAMzsE,EAAC,8BAAwB6L,MAAzB,IAAoHwyJ,GAAGP,GAAG7lL,MAA1H,UAA+CmL,EAA/C,EAAiC8lR,cAAqB91R,EAAtD,EAAiDg2R,KAAcz1R,EAA/D,EAAwD21R,OAAqB15R,EAA7E,EAAiEo1R,YAAyB7yR,EAA1F,EAA+Eg3R,WAA/E,OAAuG7hQ,EAAvG,EAA8FwjK,SAAkBp3L,EAAhH,EAAyGu0R,OAAuBn3P,GAAE44P,EAAAA,EAAAA,QAAG,MAAM55Q,EAAEipB,GAAEjI,GAAE,SAAA7E,IAAKA,GAAG3E,EAAE,CAACjkB,KAAK,OAAM4V,IAAE,kBAAKqO,EAAE,CAACjkB,KAAK,EAAEgmR,IAAIv4P,IAAI,kBAAIxJ,EAAE,CAACjkB,KAAK,EAAEgmR,IAAIv4P,OAAK,CAACxJ,EAAEwJ,IAAI,IAAIjI,EAAEz1B,EAAEwC,QAAQk7B,GAAGtS,EAAEqK,IAAIzlB,EAAE46E,GAAE2rM,EAAAA,EAAAA,cAAG,SAAA19P,GAAI,IAAIxsB,EAAErM,EAAEuJ,KAAI,SAAA4tB,GAAC,OAAEA,EAAEpT,WAASrgB,OAAOf,SAAS,GAAW,MAARk2B,EAAEv7B,KAAmB,UAARu7B,EAAEv7B,IAA2D,OAA5Cu7B,EAAE6wD,iBAAiB7wD,EAAE4wD,uBAAkBnpF,EAAEm1B,GAAU,OAAOoD,EAAEv7B,KAAK,IAAI,OAAO,IAAI,SAAS,OAAOu7B,EAAE6wD,iBAAiB7wD,EAAE4wD,kBAAkB5gB,GAAEx8D,EAAE,GAAG,IAAI,MAAM,IAAI,WAAW,OAAOwsB,EAAE6wD,iBAAiB7wD,EAAE4wD,kBAAkB5gB,GAAEx8D,EAAE,GAAG,OAAOqtF,GAAEl9F,EAAE,CAACk2R,SAAD,WAAY,MAAW,YAAR75P,EAAEv7B,IAAuBurE,GAAEx8D,EAAE,IAAiB,cAARwsB,EAAEv7B,IAAyBurE,GAAEx8D,EAAE,SAAlC,GAAyC+lR,WAA3F,WAAwG,MAAW,cAARv5P,EAAEv7B,IAAyBurE,GAAEx8D,EAAE,IAAiB,eAARwsB,EAAEv7B,IAA0BurE,GAAEx8D,EAAE,SAAnC,OAA6C,CAACrM,EAAExD,EAAEi5B,EAAEn1B,IAAIszB,GAAE2iQ,EAAAA,EAAAA,cAAG,WAAK,IAAI19P,EAAiB,OAAdA,EAAE6E,EAAE3Z,UAAgB8U,EAAEwkK,UAAS,CAAC3/J,IAAIv5B,GAAEoyR,EAAAA,EAAAA,cAAG,WAAK,IAAI19P,EAAiB,OAAdA,EAAE6E,EAAE3Z,UAAgB8U,EAAEwkK,QAAQ/8L,EAAEm1B,KAAI,CAACn1B,EAAEm1B,EAAEiI,IAAIh9B,GAAE6qL,EAAAA,EAAAA,UAAG,iBAAK,CAACvqI,SAAS51B,KAAI,CAACA,IAAIuhB,EAAE,CAAC8/G,IAAI/vI,EAAEsuQ,UAAUpgM,EAAEmhM,QAAY,WAAJhtR,EAAa60B,EAAEzvB,EAAEo6C,QAAQp6C,EAAEs6C,GAAG7xB,EAAE+pP,KAAK,MAAM1mQ,KAAK47I,GAAErrJ,EAAEk9B,GAAG,gBAAqD,OAApC27D,EAAY,OAAT1gE,EAAEp4B,EAAEk1B,SAAU,EAAOkD,EAAE5U,cAAe,EAAOs1E,EAAE56C,GAAG,gBAAgBrzB,EAAE+/P,SAAS//P,EAAE,GAAG,GAAG,OAAOg0D,GAAE,CAAC9/E,MAAK,SAAKkB,GAAKmsC,GAAGxzB,KAAKzY,EAAEomR,WAAhpC,SAA8pCjiR,KAAK,aAAikC,SAAS2xR,GAAGh2R,GAAO,6BAAFosB,EAAE,iCAAFA,EAAE,kBAACpsB,GAAGosB,EAAErwB,OAAO,IAAG,EAAAiE,EAAEuvQ,WAAU16P,IAAZ,QAAmBuX,GAAG,SAAS6pQ,GAAGj2R,GAAO,6BAAFosB,EAAE,iCAAFA,EAAE,kBAACpsB,GAAGosB,EAAErwB,OAAO,IAAG,EAAAiE,EAAEuvQ,WAAUpoL,OAAZ,QAAsB/6D,GAAyW,SAAS8pQ,GAAGl2R,EAAEosB,EAAE5c,EAAEhQ,EAAEO,EAAE/D,GAAG,IAAIuC,EAAEwsB,KAAI2I,OAAM,IAAJ13B,EAAzlB,SAAYgE,GAAG,IAAIosB,EAAE,CAAC4lL,QAAO,GAAI,OAAM,WAAS,IAAI5lL,EAAE4lL,OAAO,OAAO5lL,EAAE4lL,QAAO,EAAGhyM,EAAC,WAAD,cAAohBm2R,CAAGn6R,GAAG,aAAO,OAAOi6R,GAAE,WAAF,GAAGj2R,GAAH,SAAQD,KAAGi2R,GAAE,WAAF,GAAGh2R,GAAH,SAAQosB,GAAR,EAAa5c,KAAGjR,EAAEinR,WAAU,WAAKyQ,GAAE,WAAF,GAAGj2R,GAAH,SAAQwP,KAAGwmR,GAAE,WAAF,GAAGh2R,GAAH,SAAQR,KAAGjB,EAAEsW,IAA9e,SAAY7U,EAAEosB,GAAG,IAAI5c,EAAEub,KAAI,IAAI/qB,EAAE,OAAOwP,EAAEi2Q,QAAQ,MAA4C5H,iBAAiB79Q,GAA7D,EAAsE,CAAtE,EAAIo2R,mBAAJ,EAAyBC,iBAAmDttR,KAAI,SAAA2qB,GAAI,QAASA,EAAE1O,MAAM,KAAK9hB,OAAOf,SAAS4G,KAAI,SAAAm0B,GAAC,OAAEA,EAAElyB,SAAS,MAAM4/G,WAAW1tF,GAAiB,IAAd0tF,WAAW1tF,MAAQ0X,MAAK,SAAC1X,EAAEhhB,GAAH,OAAOA,EAAEghB,KAA7G,MAAgH,YAAhH,MAAM,EAAN,KAApF,SAAiElhC,EAAjE,KAAmEuC,EAAnE,KAA+M,OAAW,IAAJvC,EAAMwT,EAAEymC,YAAW,WAAK7pB,EAAE,cAAapwB,EAAEuC,GAAG6tB,EAAE,YAAY5c,EAAEqF,KAAI,kBAAIuX,EAAE,gBAAc5c,EAAEi2Q,QAAoJ6Q,CAAGt2R,GAAE,SAAAF,GAAC,OAAGm2R,GAAE,WAAF,GAAGj2R,GAAH,SAAQR,GAAR,EAAa4sB,KAAG4pQ,GAAE,WAAF,GAAGh2R,GAAH,SAAQD,KAAG2zB,EAAE5zB,UAAQvB,EAAEsW,KAAI,kBAAIohR,GAAE,WAAF,GAAGj2R,GAAH,SAAQosB,GAAR,EAAa5c,GAAb,EAAkBhQ,GAAlB,EAAuBO,QAAIxB,EAAEsW,KAAI,kBAAI6e,EAAE,gBAAcn1B,EAAEknR,QAAQ,SAAS/8F,KAAQ,IAAL1oL,EAAK,uDAAH,GAAI,OAAOu2R,EAAAA,EAAAA,UAAG,kBAAIv2R,EAAEglB,MAAM,KAAK9hB,QAAO,SAAAkpB,GAAC,OAAEA,EAAEy0B,OAAO9kD,OAAO,OAAG,CAACiE,IAA/rCkqL,GAAGmjG,MAA9pG,SAAYrtR,GAAG,MAAqFA,EAAjFw2R,aAAapqQ,OAAjB,MAAmB,EAAnB,IAAqFpsB,EAAhEkyR,SAAS1iR,OAA9B,WAAqFxP,EAAlDy2R,OAAOj3R,OAA1C,SAAwDO,EAA6BC,EAAtCggD,SAA/C,EAAqFhgD,EAA3Bs1R,cAAct5R,OAAxE,MAA0E,KAA1E,EAAkFuC,EAAlF,GAAqFyB,EAArF,IAAuF0zB,EAAElkB,EAAE,WAAW,aAAa1P,EAAEN,EAAE,SAAS,OAAhI,KAA6I43M,EAAAA,EAAAA,YAAGy+E,GAAG,CAACP,cAAc,KAAKE,KAAK,GAAGE,OAAO,GAAGtE,YAAY19P,EAAE6hQ,WAAWz1R,IAAlN,GAAwIo9B,EAAxI,KAA0IhhB,EAA1I,KAAsN+Y,GAAE81J,EAAAA,EAAAA,UAAG,iBAAK,CAACuqG,cAAcp4P,EAAEo4P,iBAAgB,CAACp4P,EAAEo4P,gBAAgB1qQ,GAAEkrQ,EAAAA,EAAAA,SAAG,gBAAQxrG,EAAAA,EAAAA,YAAG,WAAKpuK,EAAE,CAACzM,KAAK,EAAE2hR,YAAY19P,MAAK,CAACA,KAAI42J,EAAAA,EAAAA,YAAG,WAAKpuK,EAAE,CAACzM,KAAK,EAAE8lR,WAAWz1R,MAAK,CAACA,KAAIwqL,EAAAA,EAAAA,YAAG,WAAe,mBAAHvqL,IAAgB6qB,EAAErH,QAAQxjB,KAAI,CAACA,KAAIuqL,EAAAA,EAAAA,YAAG,WAAK,KAAGptJ,EAAEs4P,KAAKz5R,QAAQ,GAAO,OAAJC,GAA4B,OAAlBkhC,EAAEo4P,eAAjC,CAA6D,IAAI3xR,EAAEu5B,EAAEs4P,KAAKzsR,KAAI,SAAAsgG,GAAC,OAAEA,EAAE9lF,WAASrgB,OAAOf,SAASjC,EAAEyD,EAAET,QAAO,SAAAmmG,GAAC,OAAGA,EAAEq5F,aAAa,eAAav2J,EAAK,MAAHnwC,EAAQA,EAAEowB,EAAE,GAAG+f,EAAE,EAAEjwB,EAAE,CAACzM,KAAK,EAAE/C,MAAM/I,EAAE3B,QAAQ9B,EAAE,WAAW,GAAGisC,EAAEjP,EAAEs4P,KAAKz5R,OAAOmgB,EAAE,CAACzM,KAAK,EAAE/C,MAAM/I,EAAE3B,QAAQ9B,EAAEA,EAAEnE,OAAO,UAAU,CAAC,IAAIstG,EAAE1lG,EAAES,MAAM,EAAE+nC,GAAG0sD,EAAE,YAAIl1F,EAAES,MAAM+nC,IAAZ,EAAkBk9D,IAAG8jI,MAAK,SAAA90M,GAAC,OAAEn4B,EAAE8K,SAASqtB,MAAI,IAAIwgE,EAAE,OAAO38E,EAAE,CAACzM,KAAK,EAAE/C,MAAM/I,EAAE3B,QAAQ62F,SAAO,CAACzsE,EAAEpwB,EAAEkhC,EAAEs4P,KAAKt4P,EAAEo4P,gBAAgB,IAAIlrM,GAAE0rM,EAAAA,EAAAA,QAAG54P,EAAEo4P,gBAAehrG,EAAAA,EAAAA,YAAG,WAAKlgG,EAAE7mE,QAAQ2Z,EAAEo4P,gBAAe,CAACp4P,EAAEo4P,gBAAgB,IAAIliQ,GAAE23J,EAAAA,EAAAA,UAAG,iBAAI,CAAC7tJ,EAAE,CAACg6J,SAASh7K,EAAEm4Q,OAAZ,SAAmB1wR,GAAGymF,EAAE7mE,UAAU5f,GAAGinB,EAAErH,QAAQ5f,GAAGymF,EAAE7mE,QAAQ5f,EAAEuY,EAAE,CAACzM,KAAK,EAAE/C,MAAM/I,SAAO,CAACu5B,EAAEhhB,IAAI,OAAOw6Q,EAAAA,cAAiBf,GAAG5iI,SAAS,CAAC91J,MAAMm2B,GAAGwrD,GAAE,CAAC9/E,MAAK,MAAKP,GAAGoa,KAAKsc,EAAEqxP,WAAW7zJ,GAAGpuH,KAAK,WAAujE6lL,GAAGysG,KAAniE,SAAY32R,GAAG,QAAqCyqL,GAAG,YAAxC,MAAmBr+J,EAAnB,EAAKkpQ,cAA4B9lR,EAAjC,EAAqB4hR,YAA+B5xR,EAAE,CAAC81R,cAAclpQ,GAAG,OAAOwyD,GAAE,CAAC9/E,MAAK,SAAKkB,GAAK,CAACm2Q,KAAK,UAAU,mBAAmB3mQ,IAAImJ,KAAKnZ,EAAE8mR,WAApK,MAAkLjiR,KAAK,eAA03D6lL,GAAG0sG,OAA3qB,SAAY52R,GAAG,IAAmBosB,EAAnB,EAAuBq+J,GAAG,cAA1B,MAAK6qG,cAAqE,OAAO12M,GAAE,CAAC9/E,MAAMkB,EAAE2Y,MAAlDoyK,EAAAA,EAAAA,UAAG,iBAAK,CAACuqG,cAAclpQ,KAAI,CAACA,IAA6Bk6P,WAAxH,MAAsIjiR,KAAK,iBAAgjB6lL,GAAG+mG,MAA/gB,SAAYjxR,GAAG,IAAIoqF,EAAEh3D,EAAE,IAAoDq3J,GAAG,aAAvD,UAAmBr+J,EAAnB,EAAKkpQ,cAAqB9lR,EAA1B,EAAqBgmR,KAAch2R,EAAnC,EAA4Bk2R,OAAoB31R,EAAhD,KAAuCm3L,SAA6Bl7L,EAApE,gCAA+Fi8B,MAAM15B,GAAEu3R,EAAAA,EAAAA,QAAG,MAAMpiQ,EAAEyR,GAAE5mC,GAAE,SAAAoF,IAAKA,GAAG5D,EAAE,CAAC0P,KAAK,OAAM4V,IAAE,kBAAKtlB,EAAE,CAAC0P,KAAK,EAAEsjR,MAAMx0R,IAAI,kBAAIwB,EAAE,CAAC0P,KAAK,EAAEsjR,MAAMx0R,OAAK,CAACwB,EAAExB,IAAI,IAAIuB,EAAEN,EAAEwC,QAAQzD,GAAG2+B,EAAEp9B,IAAIssB,EAAElQ,GAAE6uK,EAAAA,EAAAA,UAAG,iBAAK,CAACvqI,SAAStjB,KAAI,CAACA,IAAIjI,EAAE,CAACg3H,IAAIv4H,EAAEuqB,GAAGjiD,EAAEm6Q,KAAK,WAAW,kBAAuD,OAApC/iP,EAAY,OAATg3D,EAAE56E,EAAE1P,SAAU,EAAOsqF,EAAE7mE,cAAe,EAAO6P,EAAE6qB,GAAG0sO,SAASztP,EAAE,GAAG,GAAG,OAAO0hD,GAAE,CAAC9/E,MAAK,SAAKkB,GAAKi1B,GAAGtc,KAAKuD,EAAEoqQ,WAA7b,MAA2cC,SAAlc,EAA8cC,QAAQtpP,EAAE74B,KAAK,gBAAktC,IAAImvO,IAAGqjD,EAAAA,EAAAA,eAAG,MAAMrjD,GAAGv8E,YAAY,oBAA4V,IAAI6/H,IAAGD,EAAAA,EAAAA,eAAG,MAAsC,SAASx3E,GAAGr/M,GAAG,MAAM,aAAaA,EAAEq/M,GAAGr/M,EAAE0oD,UAAU1oD,EAAEujB,QAAQrgB,QAAO,kBAAiB,YAAjB,EAAE6Y,SAA0BhgB,OAAO,EAAE,SAASg7R,GAAG/2R,GAAG,IAAIosB,GAAEs+J,EAAAA,EAAAA,QAAG1qL,GAAGwP,GAAEk7K,EAAAA,EAAAA,QAAG,IAAIlrL,EAAEuqL,MAAKitG,EAAAA,EAAAA,YAAG,WAAK5qQ,EAAE7I,QAAQvjB,IAAG,CAACA,IAAI,IAAID,GAAEk3R,EAAAA,EAAAA,cAAG,SAAC14R,GAAQ,MAAK2+B,EAAXxJ,EAAM,uDAAJ,EAAe5zB,EAAE0P,EAAE+T,QAAQ4jQ,WAAU,qBAAElpO,KAAY1/C,MAAQ,IAALuB,IAASo5F,GAAExlE,GAAD,QAAK,GAAL,WAAUlkB,EAAE+T,QAAQ/Q,OAAO1S,EAAE,MAA7B,KAAkC,GAAlC,WAAuC0P,EAAE+T,QAAQzjB,GAAGic,MAAM,YAA1D,KAAuEsjM,GAAG7vM,IAAIhQ,EAAE+jB,UAAyB,OAAd2Z,EAAE9Q,EAAE7I,UAAgB2Z,EAAE78B,KAAK+rB,OAAM,CAACA,EAAE5sB,EAAEgQ,IAAIxT,GAAEi7R,EAAAA,EAAAA,cAAG,SAAA14R,GAAI,IAAIm1B,EAAElkB,EAAE+T,QAAQ4pN,MAAK,qBAAElvL,KAAY1/C,KAAG,OAAOm1B,EAAY,YAAVA,EAAE3X,QAAoB2X,EAAE3X,MAAM,WAAWvM,EAAE+T,QAAQ/kB,KAAK,CAACy/C,GAAG1/C,EAAEwd,MAAM,YAAY,kBAAIhc,EAAExB,EAAE,MAAI,CAACiR,EAAEzP,IAAI,OAAOw2R,EAAAA,EAAAA,UAAG,iBAAK,CAAC7tO,SAASl5C,EAAEq+Q,SAAS7xR,EAAEk7R,WAAWn3R,KAAI,CAAC/D,EAAE+D,EAAEyP,IAAI,SAAS2nR,MAAnoBL,GAAG7/H,YAAY,iBAA0nB,IAAIhkC,GAAG,CAAC,cAAc,aAAa,cAAc,cAAc,SAASmkK,GAAGp3R,GAAG,IAAIwP,EAAL,EAAW4c,EAAE,GAAb,KAA6B6mG,IAA7B,IAAgB,gCAAQzzH,EAAR,QAAgB4sB,EAAE5sB,GAAa,OAATgQ,EAAExP,EAAER,IAAUgQ,EAAE2nR,IAAtD,8BAAyD,OAAO/qQ,EAAwE,ICH9q4DuzL,GDGgs4D,SAAS03E,GAAGr3R,GAAG,IAAgBosB,EAAsHpsB,EAAlIs3R,YAAyB9nR,EAAyGxP,EAApHu3R,WAAyB/3R,EAA2FQ,EAAvGw3R,YAAyBz3R,EAA8EC,EAAzFy3R,WAAmBz7R,EAAsEgE,EAA5E03R,MAAkBn5R,EAA0DyB,EAApE23R,UAAoBjkQ,EAAgD1zB,EAAxD43R,QAAkB93R,EAAsCE,EAA9C63R,QAAgB36P,EAA8Bl9B,EAApC0+M,MAAkBxiM,EAAkBlc,EAA5B83R,UAAoB7iQ,EAAQj1B,EAAhB+3R,QAAantQ,EAAnI,GAAsI5qB,EAAtI,IAAwIoqF,GAAEsgG,EAAAA,EAAAA,QAAG,MAA7I,KAAyJstG,EAAAA,EAAAA,UAAG,WAA5J,GAAoJ5kQ,EAApJ,KAAsJzvB,EAAtJ,KAAuKzD,EAAE0qB,EAAEkkI,QAAQ,EAAE,EAArL,EAAvtC,WAAc,IAAI9uJ,GAAEi4R,EAAAA,EAAAA,YAAGzkD,IAAI,GAAO,OAAJxzO,EAAS,MAAM,IAAIyI,MAAM,oGAAoG,OAAOzI,EAAwwCk4R,GAAtB/rP,EAA7L,EAAwLyU,KAAcyoD,EAAtM,EAA+L8uL,OAAiBhgQ,EAAhN,EAAwMwY,QAAxM,EAAnjC,WAAc,IAAI3wC,GAAEi4R,EAAAA,EAAAA,YAAGnB,IAAI,GAAO,OAAJ92R,EAAS,MAAM,IAAIyI,MAAM,oGAAoG,OAAOzI,EAAmoCo4R,GAAhBv/L,EAAlO,EAAyNg1L,SAAsBx1P,EAA/O,EAAoO6+P,WAAmBrrR,EAAEosB,KAAItB,GAAE+zJ,EAAAA,EAAAA,SAAG,GAAIgG,EAAEqmG,IAAG,WAAKpgQ,EAAEpT,UAAU5f,EAAE,UAAU00B,EAAExsB,GAAGoyL,EAAE16K,QAAQk0Q,iBAAgBpyQ,IAAE,WAAK,GAAKxZ,EAAE,OAAOgtF,EAAEhtF,KAAI,CAACgtF,EAAEhtF,IAAIwZ,IAAE,WAAK,GAAO,IAAJnlB,GAAS2L,EAAE,CAAC,GAAGsgC,GAAO,YAAJ/Y,EAA4B,YAAbzvB,EAAE,WAAkBu1F,GAAE9lE,EAAE,CAACqzP,OAAO,kBAAIpuP,EAAExsB,IAAG26Q,QAAQ,kBAAI3tL,EAAEhtF,SAAO,CAACunB,EAAEvnB,EAAEgtF,EAAExgE,EAAE8T,EAAEjsC,IAAI,IAAIorF,EAAEo9F,GAAG1sL,GAAGy3B,EAAEi1J,GAAGnqL,GAAG+vC,EAAEo6I,GAAGh1J,GAAG6a,EAAEm6I,GAAG5oL,GAAGsqL,EAAG1B,GAAGxrJ,GAAGsrJ,EAAGE,GAAGxsK,GAAGutK,EAAGf,GAAGzzJ,GAAGgpK,EAAvoB,SAAYj+L,GAAG,IAAIosB,GAAEs+J,EAAAA,EAAAA,QAAG0sG,GAAGp3R,IAAI,OAAOg3R,EAAAA,EAAAA,YAAG,WAAK5qQ,EAAE7I,QAAQ6zQ,GAAGp3R,KAAI,CAACA,IAAIosB,EAAqkBisQ,CAAG,CAACf,YAAYlrQ,EAAEmrQ,WAAW/nR,EAAEgoR,YAAYh4R,EAAEi4R,WAAW13R,IAAIF,EAAEksB,MAAIirQ,EAAAA,EAAAA,YAAG,WAAK,GAAGn3R,GAAO,YAAJuzB,GAA2B,OAAZg3D,EAAE7mE,QAAe,MAAM,IAAI9a,MAAM,qEAAoE,CAAC2hF,EAAEh3D,EAAEvzB,IAAI,IAAImvR,EAAE72P,IAAIkxE,EAAEhkF,IAAE,WAAK,IAAIizQ,EAAGluM,EAAE7mE,QAAQ,GAAK+0Q,IAAKtJ,EAAE,OAAOr4P,EAAEpT,SAAQ,EAAG4oB,GAAG8xJ,EAAE16K,QAAQ+zQ,cAAcnrP,GAAG8xJ,EAAE16K,QAAQi0Q,cAAcrrP,EAAE+pP,GAAGoC,EAAGhtM,EAAE73D,EAAE6a,EAAEC,GAAE,SAAAgqP,GAAK5hQ,EAAEpT,SAAQ,EAAQ,aAALg1Q,GAAiBt6F,EAAE16K,QAAQg0Q,gBAAerB,GAAGoC,EAAGluG,EAAG5B,EAAGiB,EAAGl7I,GAAE,SAAAgqP,GAAK5hQ,EAAEpT,SAAQ,EAAQ,aAALg1Q,IAAkBl5E,GAAG3uB,KAAK/sL,EAAE,UAAU00B,EAAExsB,GAAGoyL,EAAE16K,QAAQk0Q,oBAAkB,CAACx5F,EAAEpyL,EAAE8qB,EAAE0B,EAAEq4J,EAAEtmG,EAAE4kM,EAAE7iP,EAAEm/C,EAAE73D,EAAE6a,EAAE87I,EAAG5B,EAAGiB,IAAK,IAAI/0G,EAAE,CAACu3E,IAAI7hE,GAAG6gG,EAAGrgK,EAAE,OAAOgK,EAAAA,cAAiBkiQ,GAAG/jI,SAAS,CAAC91J,MAAMyzL,GAAG97J,EAAAA,cAAiBq6F,GAAE,CAAChyH,MAAMi8F,GAAE9lE,EAAE,CAACozP,QAAQ,EAAEC,OAAO,KAAK7nM,GAAE,CAAC9/E,MAAK,SAAKmsL,GAAMv2G,GAAG4xM,WAAvuC,MAAqvCC,SAA5uC,EAAwvCC,QAAY,YAAJpzP,EAAc/uB,KAAK,uBAAuB,SAASm0R,GAAGx4R,GAAE,MAAUosB,EAA8BpsB,EAAnC4gD,KAAJ,EAAuC5gD,EAA5Bm4R,OAAO3oR,OAAlB,SAA+BhQ,EAAQQ,EAAhB8uJ,QAAa/uJ,EAApC,GAAuCC,EAAvC,IAAyChE,EAAE05B,KAAI,QAAO,IAAJtJ,GAAgB,OAAJpwB,IAAWowB,EAAE8sE,GAAEl9F,GAAD,QAAK,GAAG,GAAR,KAAY,GAAG,GAAf,MAAsB,EAAC,GAAG,GAAIgP,SAASohB,GAAG,MAAM,IAAI3jB,MAAM,4EAA4E,SAASuvR,EAAAA,EAAAA,UAAG5rQ,EAAE,UAAU,UAAxB,GAAI7tB,EAAJ,KAAMm1B,EAAN,KAAkC5zB,EAAEi3R,IAAG,WAAKrjQ,EAAE,aAAYwJ,EAA1wH,WAAc,IAAIl9B,GAAEy4R,EAAAA,EAAAA,SAAG,GAAI,OAAOC,EAAAA,EAAAA,YAAG,WAAK14R,EAAEujB,SAAQ,IAAI,IAAIvjB,EAAEujB,QAA8sHo1Q,GAAKz8Q,GAAEq6Q,EAAAA,EAAAA,UAAG,iBAAK,CAAC31O,KAAKx0B,EAAE+rQ,OAAO3oR,IAAI0tB,EAAEyT,QAAQzT,KAAI,CAAC9Q,EAAE5c,EAAE0tB,KAAI85P,EAAAA,EAAAA,YAAG,WAAK5qQ,EAAEsH,EAAE,WAAW2rL,GAAGv/M,IAAI4zB,EAAE,YAAW,CAACtH,EAAEtsB,IAAI,IAAIm1B,EAAE,CAAC65H,QAAQtvJ,GAAG,OAAOo1B,EAAAA,cAAiBkiQ,GAAG/jI,SAAS,CAAC91J,MAAM6C,GAAG80B,EAAAA,cAAiB4+M,GAAGzgF,SAAS,CAAC91J,MAAMif,GAAG0iE,GAAE,CAAC9/E,MAAK,SAAKm2B,GAAL,IAAOyxP,GAAGkS,EAAAA,SAAGlwO,SAAS9zB,EAAAA,cAAiByiQ,GAAjB,SAAwBpiQ,GAAKl1B,MAAKumR,WAAWsS,EAAAA,SAAGrS,SAAv2D,EAAm3DC,QAAY,YAAJjoR,EAAc8F,KAAK,iBAAiBm0R,GAAGK,MAAM,SAASzsQ,GAAG,IAAI5c,EAAW,QAATyoR,EAAAA,EAAAA,YAAGzkD,IAAWh0O,EAAQ,OAANk2B,KAAW,OAAOlmB,GAAGhQ,EAAEo1B,EAAAA,cAAiB4jQ,GAAjB,MAAwBpsQ,IAAIwI,EAAAA,cAAiByiQ,GAAjB,MAAwBjrQ,KAAKosQ,GAAGM,KAAKN,GCDpu8D,IAAI,GAAY,CAAC,QAAS,WAE1B,SAAS,KAA2Q,OAA9P,GAAWr5R,OAAOwP,QAAU,SAAU9P,GAAU,IAAK,IAAI7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CAAE,IAAIoH,EAAS3F,UAAUzB,GAAI,IAAK,IAAIc,KAAOsG,EAAcjE,OAAOR,UAAUoF,eAAe1D,KAAK+C,EAAQtG,KAAQ+B,EAAO/B,GAAOsG,EAAOtG,IAAY,OAAO+B,GAAkB,GAASnB,MAAMH,KAAME,WAEhT,SAAS,GAAyB2F,EAAQy/Q,GAAY,GAAc,MAAVz/Q,EAAgB,MAAO,GAAI,IAAkEtG,EAAKd,EAAnE6C,EAEzF,SAAuCuE,EAAQy/Q,GAAY,GAAc,MAAVz/Q,EAAgB,MAAO,GAAI,IAA2DtG,EAAKd,EAA5D6C,EAAS,GAAQikR,EAAa3jR,OAAO4D,KAAKK,GAAqB,IAAKpH,EAAI,EAAGA,EAAI8mR,EAAW/mR,OAAQC,IAAOc,EAAMgmR,EAAW9mR,GAAQ6mR,EAAS7gR,QAAQlF,IAAQ,IAAa+B,EAAO/B,GAAOsG,EAAOtG,IAAQ,OAAO+B,EAFxM,CAA8BuE,EAAQy/Q,GAAuB,GAAI1jR,OAAO6D,sBAAuB,CAAE,IAAIggR,EAAmB7jR,OAAO6D,sBAAsBI,GAAS,IAAKpH,EAAI,EAAGA,EAAIgnR,EAAiBjnR,OAAQC,IAAOc,EAAMkmR,EAAiBhnR,GAAQ6mR,EAAS7gR,QAAQlF,IAAQ,GAAkBqC,OAAOR,UAAUy7D,qBAAqB/5D,KAAK+C,EAAQtG,KAAgB+B,EAAO/B,GAAOsG,EAAOtG,IAAU,OAAO+B,EAMne,SAASk6R,GAAiBhtE,EAAMitE,GAC9B,IAAIjzO,EAAQgmK,EAAKhmK,MACb8vN,EAAU9pD,EAAK8pD,QACf/2Q,EAAQ,GAAyBitN,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtDt+C,QAAS,cACTxhB,IAAK+sI,EACL,kBAAmBnjB,GAClB/2Q,GAAQinD,EAAqB,gBAAoB,QAAS,CAC3D9H,GAAI43N,GACH9vN,GAAS,KAAM45J,KAAOA,GAAkB,gBAAoB,IAAK,CAClEs5E,OAAQ,OACR1/G,YAAa,EACb12I,KAAM,OACNq2P,SAAU,WACI,gBAAoB,IAAK,KAAmB,gBAAoB,OAAQ,CACtF7zQ,EAAG,EACH+N,EAAG,EACH3G,MAAO,IACP+/I,OAAQ,MACO,gBAAoB,OAAQ,CAC3CrgI,EAAG,mxDACHtJ,KAAM,UACNq2P,SAAU,gBAId,ICxCIC,GAAQluE,GAAOmuE,GAAQC,GAAQC,GAAQC,GAAQC,GAAQ,GAAIC,GAAQC,GAAQC,GAAQC,GAAKC,GDwCxFC,GAA0B,aAAiBf,ICtC3C,IDuCW,ICvCC,CAAC,QAAS,YAE1B,SAAS,KAA2Q,OAA9P,GAAW55R,OAAOwP,QAAU,SAAU9P,GAAU,IAAK,IAAI7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CAAE,IAAIoH,EAAS3F,UAAUzB,GAAI,IAAK,IAAIc,KAAOsG,EAAcjE,OAAOR,UAAUoF,eAAe1D,KAAK+C,EAAQtG,KAAQ+B,EAAO/B,GAAOsG,EAAOtG,IAAY,OAAO+B,GAAkB,GAASnB,MAAMH,KAAME,WAEhT,SAAS,GAAyB2F,EAAQy/Q,GAAY,GAAc,MAAVz/Q,EAAgB,MAAO,GAAI,IAAkEtG,EAAKd,EAAnE6C,EAEzF,SAAuCuE,EAAQy/Q,GAAY,GAAc,MAAVz/Q,EAAgB,MAAO,GAAI,IAA2DtG,EAAKd,EAA5D6C,EAAS,GAAQikR,EAAa3jR,OAAO4D,KAAKK,GAAqB,IAAKpH,EAAI,EAAGA,EAAI8mR,EAAW/mR,OAAQC,IAAOc,EAAMgmR,EAAW9mR,GAAQ6mR,EAAS7gR,QAAQlF,IAAQ,IAAa+B,EAAO/B,GAAOsG,EAAOtG,IAAQ,OAAO+B,EAFxM,CAA8BuE,EAAQy/Q,GAAuB,GAAI1jR,OAAO6D,sBAAuB,CAAE,IAAIggR,EAAmB7jR,OAAO6D,sBAAsBI,GAAS,IAAKpH,EAAI,EAAGA,EAAIgnR,EAAiBjnR,OAAQC,IAAOc,EAAMkmR,EAAiBhnR,GAAQ6mR,EAAS7gR,QAAQlF,IAAQ,GAAkBqC,OAAOR,UAAUy7D,qBAAqB/5D,KAAK+C,EAAQtG,KAAgB+B,EAAO/B,GAAOsG,EAAOtG,IAAU,OAAO+B,EAMne,SAASk7R,GAAYhuE,EAAMitE,GACzB,IAAIjzO,EAAQgmK,EAAKhmK,MACb8vN,EAAU9pD,EAAK8pD,QACf/2Q,EAAQ,GAAyBitN,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtD9tK,GAAI,UACJ+7O,MAAO,6BACP30Q,EAAG,EACH+N,EAAG,EACHq6I,QAAS,kBACTwsH,SAAU,WACVhuI,IAAK+sI,EACL,kBAAmBnjB,GAClB/2Q,GAAQinD,EAAqB,gBAAoB,QAAS,CAC3D9H,GAAI43N,GACH9vN,GAAS,KAAMozO,KAAWA,GAAsB,gBAAoB,QAAS,KAAM,gYAAiYluE,KAAUA,GAAqB,gBAAoB,OAAQ,CAChhBpoL,KAAM,UACNo2P,OAAQ,UACRiB,cAAe,QACfC,eAAgB,QAChBhuP,EAAG,qCACAitP,KAAWA,GAAsB,gBAAoB,OAAQ,CAChEv7O,UAAW,MACX1R,EAAG,0HACAktP,KAAWA,GAAsB,gBAAoB,OAAQ,CAChEx7O,UAAW,MACX1R,EAAG,sJACAmtP,KAAWA,GAAsB,gBAAoB,OAAQ,CAChEz7O,UAAW,MACX1R,EAAG,oFACAotP,KAAWA,GAAsB,gBAAoB,OAAQ,CAChE17O,UAAW,MACX1R,EAAG,kEACAqtP,KAAWA,GAAsB,gBAAoB,OAAQ,CAChE37O,UAAW,MACX1R,EAAG,gKACA,KAAO,GAAkB,gBAAoB,IAAK,KAAmB,gBAAoB,OAAQ,CACpG0R,UAAW,MACX1R,EAAG,8IACCstP,KAAWA,GAAsB,gBAAoB,OAAQ,CACjE57O,UAAW,MACX1R,EAAG,qGACAutP,KAAWA,GAAsB,gBAAoB,OAAQ,CAChE72P,KAAM,UACNo2P,OAAQ,UACRiB,cAAe,QACfC,eAAgB,QAChBhuP,EAAG,mGACAwtP,KAAWA,GAAsB,gBAAoB,OAAQ,CAChE92P,KAAM,UACNo2P,OAAQ,UACRiB,cAAe,QACfC,eAAgB,QAChBhuP,EAAG,wEACAytP,KAAQA,GAAmB,gBAAoB,IAAK,KAAmB,gBAAoB,OAAQ,CACtG/7O,UAAW,MACX1R,EAAG,iMACC0tP,KAAYA,GAAuB,gBAAoB,OAAQ,CACnEh8O,UAAW,MACX1R,EAAG,uMAIP,IC5EI,GAAIiuP,GD4EJ,GAA0B,aAAiBL,IC1E3C,ID2EW,IC3EC,CAAC,QAAS,YAE1B,SAAS,KAA2Q,OAA9P,GAAW56R,OAAOwP,QAAU,SAAU9P,GAAU,IAAK,IAAI7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CAAE,IAAIoH,EAAS3F,UAAUzB,GAAI,IAAK,IAAIc,KAAOsG,EAAcjE,OAAOR,UAAUoF,eAAe1D,KAAK+C,EAAQtG,KAAQ+B,EAAO/B,GAAOsG,EAAOtG,IAAY,OAAO+B,GAAkB,GAASnB,MAAMH,KAAME,WAEhT,SAAS,GAAyB2F,EAAQy/Q,GAAY,GAAc,MAAVz/Q,EAAgB,MAAO,GAAI,IAAkEtG,EAAKd,EAAnE6C,EAEzF,SAAuCuE,EAAQy/Q,GAAY,GAAc,MAAVz/Q,EAAgB,MAAO,GAAI,IAA2DtG,EAAKd,EAA5D6C,EAAS,GAAQikR,EAAa3jR,OAAO4D,KAAKK,GAAqB,IAAKpH,EAAI,EAAGA,EAAI8mR,EAAW/mR,OAAQC,IAAOc,EAAMgmR,EAAW9mR,GAAQ6mR,EAAS7gR,QAAQlF,IAAQ,IAAa+B,EAAO/B,GAAOsG,EAAOtG,IAAQ,OAAO+B,EAFxM,CAA8BuE,EAAQy/Q,GAAuB,GAAI1jR,OAAO6D,sBAAuB,CAAE,IAAIggR,EAAmB7jR,OAAO6D,sBAAsBI,GAAS,IAAKpH,EAAI,EAAGA,EAAIgnR,EAAiBjnR,OAAQC,IAAOc,EAAMkmR,EAAiBhnR,GAAQ6mR,EAAS7gR,QAAQlF,IAAQ,GAAkBqC,OAAOR,UAAUy7D,qBAAqB/5D,KAAK+C,EAAQtG,KAAgB+B,EAAO/B,GAAOsG,EAAOtG,IAAU,OAAO+B,EAMne,SAASw7R,GAAetuE,EAAMitE,GAC5B,IAAIjzO,EAAQgmK,EAAKhmK,MACb8vN,EAAU9pD,EAAK8pD,QACf/2Q,EAAQ,GAAyBitN,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtDt/L,MAAO,GACP+/I,OAAQ,GACRiB,QAAS,YACT5qI,KAAM,OACNm3P,MAAO,6BACP/tI,IAAK+sI,EACL,kBAAmBnjB,GAClB/2Q,GAAQinD,EAAqB,gBAAoB,QAAS,CAC3D9H,GAAI43N,GACH9vN,GAAS,KAAM,KAAO,GAAkB,gBAAoB,IAAK,CAClEu0O,SAAU,eACI,gBAAoB,OAAQ,CAC1CnuP,EAAG,qKACHtJ,KAAM,YACS,gBAAoB,OAAQ,CAC3CsJ,EAAG,kMACH8sP,OAAQ,QACR1/G,YAAa,EACbF,iBAAkB,GAClB6gH,cAAe,QACfC,eAAgB,YACZC,KAAUA,GAAqB,gBAAoB,OAAQ,KAAmB,gBAAoB,WAAY,CAClHn8O,GAAI,SACU,gBAAoB,OAAQ,CAC1CxxB,MAAO,GACP+/I,OAAQ,GACR3pI,KAAM,QACN1O,UAAW,4BAIf,ICjDIomQ,GAAS,GDiDT,GAA0B,aAAiBF,IEoD/C,IFnDe,IEjC+B,SAACv7R,GAE3C,SAAwBigD,EAAAA,EAAAA,WAAS,GAAjC,GAAO2F,EAAP,KAAa81O,EAAb,KACMC,GAAkBvlI,EAAAA,EAAAA,QAAO,MAHsB,kCAMrD,8EAC+B,GAAvBp2J,EAAMuiQ,cAA0Bm5B,GAAQ,GACrC17R,EAAMsiQ,iBAFjB,4CANqD,+BAWtCs5B,IAXsC,iEAWrD,8EACI57R,EAAMqiQ,YAAY,YAClBq5B,GAAQ,GAFZ,4CAXqD,wDAgBrD,8EACI17R,EAAMqiQ,YAAY,iBAClBq5B,GAAQ,GAFZ,4CAhBqD,sBAiCrD,OACI,mCACI,oBAAQ38O,UAAW,4BAA8B/+C,EAAM++C,UAAWE,QAnCrB,2CAmC7C,UACI,2BAA+B,GAAvBj/C,EAAMuiQ,cAAyB,iBAfnD,WACI,IAAIs5B,EAAS,EACTj9C,EAAQ,EAOZ,OALIn1N,OAAOq2B,WAAa,MACpB+7O,EAAS,EACTj9C,EAAQ,GAGLmU,EAAkB/yP,EAAMgzP,cAAe6oC,EAAQj9C,GAMYk9C,QAI9D,UAAC,QAAD,CAAiBh6O,KAAM8D,EAAMgiO,GAAI95H,EAAAA,SAAjC,UACI,UAAC,GAAD,CAAQ85H,GAAG,MAAM7oO,UAAU,qCAAqCouO,aAAcwO,EAAiBz8O,QAASw8O,EAAxG,UACI,kBAAK38O,UAAU,yFAAf,WACI,UAAC,SAAD,CAAkB6oO,GAAI95H,EAAAA,SAAU8qI,MAAM,wBAAwBC,UAAU,YAAYC,QAAQ,cAAcl5E,MAAM,uBAAuBo5E,UAAU,cAAcC,QAAQ,YAAvK,UACI,UAAC,WAAD,CAAgBl6O,UAAU,kEAI9B,kBAAMA,UAAU,qDAAqD,cAAY,OAAjF,qBAGA,UAAC,SAAD,CAAkB6oO,GAAI95H,EAAAA,SAAU8qI,MAAM,wBAAwBC,UAAU,uDAAuDC,QAAQ,yCAAyCl5E,MAAM,uBAAuBo5E,UAAU,yCAAyCC,QAAQ,uDAAxQ,UAEI,iBAAKl6O,UAAU,iLAAf,UACI,2BACI,kBAAKA,UAAU,2BAAf,WACI,UAAC,SAAD,CAAc6oO,GAAG,KAAK7oO,UAAU,8CAAhC,uCAGA,kBAAKA,UAAU,YAAf,WACI,kBAAKE,QAAS28O,EAAiB78O,UAAU,2DAAzC,WACI,UAAC,GAAD,CAAcA,UAAU,qBAD5B,eAIA,kBAAKE,QAAS28O,EAAiB78O,UAAU,2DAAzC,WACI,UAAC,GAAD,CAAiBA,UAAU,qBAD/B,mBAIA,kBAAKE,QApEQ,2CAoEuBF,UAAU,2DAA9C,WACI,UAAC,GAAD,CAAmBA,UAAU,qBADjC,wGCtB5C,GA/CgC,SAAC/+C,GAC7B,OAA6F02J,EAAAA,EAAAA,YAAWwrG,IAAhGG,EAAR,EAAQA,YAAaC,EAArB,EAAqBA,eAAgBC,EAArC,EAAqCA,cAAevP,EAApD,EAAoDA,cAApD,EAAmE4P,aAAnE,EAAiFH,QASjF,SAASs5B,EAASz7O,GACd,IAAI+pM,EAAQ/pM,EAAKr6B,cACjB,OAAIokO,EAAM7sI,WAAW,WACkB,KAA9B3kE,SAASksG,SAASr9F,WAAmB7O,SAASksG,SAASr9F,SAASzhC,cAAcu3F,WAAW6sI,IAItG,OACI,oBAAQtrM,UAAU,gEAAlB,UACI,kBAAKA,UAAU,WAAf,WACI,kBAAKA,UAAU,qCAAf,WAEI,iBAAKA,UAAU,mCAAf,UACI,iBAAKC,IAAKg9O,GAAcj9O,UAAU,2DAKtC,iBAAKA,UAAU,+BAAf,UACI,iBAAKA,UAAU,cAAf,SA1BH,CACb,CAAEx5C,KAAM,YAAa+6C,KAAM,SAC3B,CAAE/6C,KAAM,aAAc+6C,KAAM,6BAC5B,CAAE/6C,KAAM,SAAU+6C,KAAM,mBAwBMr2C,KAAI,SAACsc,GAAD,OAAO,eAAgBi2B,KAAMj2B,EAAE+5B,KAAMvgD,OAAQwmB,EAAE+5B,KAAKk9D,WAAW,QAAU,SAAW,GAA7E,UAAiF,kBAAKz+D,UAAW,wCAA0Cg9O,EAASx1Q,EAAE+5B,MAAQ,uBAAyB,IAAtG,UAA4G/5B,EAAEhhB,KAA9G,WAAgIghB,EAAE+5B,KAAKk9D,WAAW,SAAS,UAACknK,GAAD,CAAiBjY,KAAME,KAA0B,SAArRpmP,EAAE+5B,cAMvC,UAAC,GAAD,CAAevB,UAAU,uEAAuEsjN,YAAaA,EAAaC,eAAgBA,EAAgBC,cAAeA,EAAevP,cAAeA,QAI3M,iBAAKj0M,UAAU,kEC/B/B,GArBmB,SAAC/+C,GAGhB,OACI,iBAAK++C,UAAU,wBAAf,UAOI,kBAAKA,UAAW,gCAAhB,WACI,UAAC,GAAD,KACA,iBAAKA,UAAW,iGAAhB,SACK/+C,EAAM4pD,iBHhBvB,GAAY,CAAC,QAAS,WAE1B,SAAS,KAA2Q,OAA9P,GAAWvpD,OAAOwP,QAAU,SAAU9P,GAAU,IAAK,IAAI7C,EAAI,EAAGA,EAAIyB,UAAU1B,OAAQC,IAAK,CAAE,IAAIoH,EAAS3F,UAAUzB,GAAI,IAAK,IAAIc,KAAOsG,EAAcjE,OAAOR,UAAUoF,eAAe1D,KAAK+C,EAAQtG,KAAQ+B,EAAO/B,GAAOsG,EAAOtG,IAAY,OAAO+B,GAAkB,GAASnB,MAAMH,KAAME,WAEhT,SAAS,GAAyB2F,EAAQy/Q,GAAY,GAAc,MAAVz/Q,EAAgB,MAAO,GAAI,IAAkEtG,EAAKd,EAAnE6C,EAEzF,SAAuCuE,EAAQy/Q,GAAY,GAAc,MAAVz/Q,EAAgB,MAAO,GAAI,IAA2DtG,EAAKd,EAA5D6C,EAAS,GAAQikR,EAAa3jR,OAAO4D,KAAKK,GAAqB,IAAKpH,EAAI,EAAGA,EAAI8mR,EAAW/mR,OAAQC,IAAOc,EAAMgmR,EAAW9mR,GAAQ6mR,EAAS7gR,QAAQlF,IAAQ,IAAa+B,EAAO/B,GAAOsG,EAAOtG,IAAQ,OAAO+B,EAFxM,CAA8BuE,EAAQy/Q,GAAuB,GAAI1jR,OAAO6D,sBAAuB,CAAE,IAAIggR,EAAmB7jR,OAAO6D,sBAAsBI,GAAS,IAAKpH,EAAI,EAAGA,EAAIgnR,EAAiBjnR,OAAQC,IAAOc,EAAMkmR,EAAiBhnR,GAAQ6mR,EAAS7gR,QAAQlF,IAAQ,GAAkBqC,OAAOR,UAAUy7D,qBAAqB/5D,KAAK+C,EAAQtG,KAAgB+B,EAAO/B,GAAOsG,EAAOtG,IAAU,OAAO+B,EAMne,SAASk8R,GAAoBhvE,EAAMitE,GACjC,IAAIjzO,EAAQgmK,EAAKhmK,MACb8vN,EAAU9pD,EAAK8pD,QACf/2Q,EAAQ,GAAyBitN,EAAM,IAE3C,OAAoB,gBAAoB,MAAO,GAAS,CACtDiuE,MAAO,6BACPn3P,KAAM,OACN4qI,QAAS,YACTxhB,IAAK+sI,EACL,kBAAmBnjB,GAClB/2Q,GAAQinD,EAAqB,gBAAoB,QAAS,CAC3D9H,GAAI43N,GACH9vN,GAAS,KAAMw0O,KAAYA,GAAuB,gBAAoB,SAAU,CACjF18O,UAAW,aACXokO,GAAI,GACJC,GAAI,GACJ1yQ,EAAG,GACHypR,OAAQ,eACR1/G,YAAa,KACV,KAAU,GAAqB,gBAAoB,OAAQ,CAC9D17H,UAAW,aACXhb,KAAM,eACNsJ,EAAG,sHAIP,IAAI,GAA0B,aAAiB4uP,II2H/C,IJ1He,IInBe,SAACj8R,GAE3B,IAAM+/F,EAAY,kBAAoB//F,EAAMw2B,MAAMrN,OAElD,KAAgD82B,EAAAA,EAAAA,WAAkB,GAAlE,GAAOi8O,EAAP,KAAyBC,EAAzB,KACA,KAA0Cl8O,EAAAA,EAAAA,WAAkB,GAA5D,GAAOm8O,EAAP,KAAsBC,EAAtB,KACA,KAAoCp8O,EAAAA,EAAAA,UAAiB,IAArD,GAAOq8O,EAAP,KAAmBC,EAAnB,KACA,KAAwCt8O,EAAAA,EAAAA,WAAkB,GAA1D,GAAOu8O,EAAP,KAAqBC,EAArB,KAPqC,kCAmCrC,iFACyB,GAAjBL,EADR,wDAGIC,GAAiB,GACjBt7P,QAAQpa,IAAI,qBAJhB,kBAKgB3mB,EAAM08R,sBALtB,uDAK4D37P,QAAQ3iC,MAAR,MAL5D,QAOIi+R,GAAiB,GAPrB,0DAnCqC,sBA6CrC,SAASM,EAAiBnmQ,GACtB,IAAI9J,EAAM,UAQV,OAPoB,GAAhB8J,EAAMrN,OAAauD,EAAM,UACJ,GAAhB8J,EAAMrN,OAAauD,EAAM,UACT,GAAhB8J,EAAMrN,OAAauD,EAAM,UACT,GAAhB8J,EAAMrN,SAAauD,EAAM,WAEb,GAAjB8J,EAAMgwO,UAAiB95O,EAAM,WAE1BA,GA7CXspI,EAAAA,EAAAA,YAAU,WACO,MAATx/H,GAAiC,GAAhBgmQ,IACjB55O,aAAY,WAAQ25O,EA8C5B,SAAuB/lQ,GAEP,IAAIw5B,KACN,IAAIA,KAAKx5B,EAAM8vO,YAFzB,IAIIh5O,E/CaL,SAAsBvD,EAAaC,GACtC,IAAI4yQ,GAAiB5yQ,EAAI1mB,UAAYymB,EAAMzmB,WAAa,IAEpDopB,EAAM,CAAEmwQ,KAAM,EAAGC,MAAO,EAAGC,QAAS,EAAGlqC,QAAS,EAAGmqC,UAAU,GACjE,GAAIJ,EAAgB,EAAG,CAEnB,IAAMC,EAAOxqR,KAAKoU,MAAMm2Q,EAAgB,OACxCA,GAAwB,MAAPC,EAGjB,IAAMC,EAAQzqR,KAAKoU,MAAMm2Q,EAAgB,MAAQ,GACjDA,GAAyB,KAARE,EAGjB,IAAMC,EAAU1qR,KAAKoU,MAAMm2Q,EAAgB,IAAM,GAGjDlwQ,EAAM,CAAEmwQ,KAAMA,EAAMC,MAAOA,EAAOC,QAASA,EAASlqC,QAFpD+pC,GAA2B,GAAVG,EAE2DC,UAAU,GAG1F,OAAOtwQ,E+CjCKuwQ,CAAa,IAAIjtO,KAAQx5B,EAAM8vO,YAEvC,MADG,UAAMh5O,EAAEuvQ,KAAO,GAAK,IAAMvvQ,EAAEuvQ,KAAOvvQ,EAAEuvQ,KAArC,YAA6CvvQ,EAAEwvQ,MAAQ,GAAK,IAAMxvQ,EAAEwvQ,MAAQxvQ,EAAEwvQ,MAA9E,YAAuFxvQ,EAAEyvQ,QAAU,GAAK,IAAMzvQ,EAAEyvQ,QAAUzvQ,EAAEyvQ,QAA5H,YAAuIzvQ,EAAEulO,QAAU,GAAK,IAAMN,EAAqBjlO,EAAEulO,QAAS,GAAKN,EAAqBjlO,EAAEulO,QAAS,IApDhMqqC,CAAcl9R,EAAMw2B,UAAW,MACjEimQ,GAAgB,MAErB,CAACz8R,EAAMw2B,QAqDV,IAAM2mQ,EAAoBn9R,EAAMqtG,aAAal/F,QAAe,SAACtJ,EAAGuY,GAAJ,OAAUvY,EAAIuY,EAAEggR,iBAAgB,GAE5F,OACI,kBAA0Dr+O,UAAW,6EAAqF/+C,EAAMw2B,MAAMosH,OAAjG,gBAAgJ5iJ,EAAMw2B,MAAMgwO,QAAU,2BAA6B,IAAxQ,WACI,kBAAKznN,UAAU,sDAAf,WACI,kBAAKA,UAAU,oBAAf,WACI,iBAAKA,UAAU,uBAAf,SAAuC/+C,EAAMw2B,MAAMjxB,QACnD,kBAAKw5C,UAAU,wBAAf,WAAuC,yCAAvC,KAA6DwzM,EAAqBvyP,EAAMw2B,MAAM+vO,MAAO,UAGzG,6BACI,sCAAahU,EAAqBvyP,EAAMw2B,MAAMgrF,aAC9C,iBAAKziE,UAAU,sDAAf,UACI,iBAAKA,UAAS,sBAAyBQ,MAAO,CAAE,MAAQ,GAAR,OAAav/C,EAAMw2B,MAAMgrF,QAAUxhH,EAAMw2B,MAAM4vO,QAAU,IAAzD,KAAkE5mN,gBAAiBm9O,EAAiB38R,EAAMw2B,aAE9J,kBAAKuoB,UAAU,YAAYQ,MAAO,CAAEnC,MAAOu/O,EAAiB38R,EAAMw2B,QAAlE,yBAAyF+7N,EAAqBvyP,EAAMw2B,MAAM4vO,QAAUpmQ,EAAMw2B,MAAMgrF,gBAEpJ,kBAAKziE,UAAU,8BAA8BE,QAAS,kBAAMk9O,GAAqBD,IAAjF,WACI,kBAAKn9O,UAAU,2DAAf,WACI,iBAAKA,UAAU,GAAf,iCACA,gCAAOwzM,EAAqB4qC,GAA5B,cAEiB,GAApBjB,GAA4B,iBAAKn9O,UAAU,yBAAf,UACzB,UAAC2lO,GAAD,CAAiBjY,KAAMF,GAAaxtN,UAAU,kBACzC,SAEb,iBAAKA,UAAU,GAAf,SACK/+C,EAAMw2B,MAAM8vO,WAAa,IAAIt2M,KACJ,GAAtBhwD,EAAMw2B,MAAMosH,OACR5iJ,EAAMokQ,cAAgB,KAAM,mCACxB,mBAAOzzP,KAAK,OAAOwuC,GAAI4gD,EAAWhhD,UAAU,sGAAsGkC,YAAY,sBAC9J,oBAAQlC,UAAW,2BAA4BE,QAlF3E,WACI,GAAqB,GAAjBm9O,EAAJ,CAEAr7P,QAAQpa,IAAIy1Q,GACZ,IACIj+R,EADY06C,SAASsM,eAAe46C,GAClB5hG,MAClBgrB,EAASpb,OAAO5P,GAEhBgrB,EAAS,IACT4X,QAAQpa,IAAR,uBAA4BwC,EAA5B,aAEAkzQ,GAAiB,GACjBr8R,EAAMq9R,mBAAmBr9R,EAAMw2B,MAAMrN,OAAQA,EAAQ,IAChD5qB,MAAK,SAACgoB,GAAQwa,QAAQpa,IAAI,WAC1BguC,OAAM,SAAA91D,GAASkiC,QAAQpa,IAAI,SAAUoa,QAAQ3iC,MAAMS,MACnDy+R,SAAQ,WAAQv8P,QAAQpa,IAAI,WAAY01Q,GAAiB,SAmE1C,SAAqED,GAAgB,UAAC,GAAD,CAAcr9O,UAAU,oCAAuC,qBAClJ,iCACE,oBAAQA,UAAW,2BAA4BE,QApG1C,2CAoGL,SAAsEm9O,GAAgB,UAAC,GAAD,CAAcr9O,UAAU,oCAAuC,oBAE3J,iCACE,oBAAQA,UAAW,2DAA4DE,QAAS,aAAWi4H,UAAU,EAA7G,6BACE,iCACN,qBAAQn4H,UAAW,2DAA4DE,QAAS,aAAWi4H,UAAU,EAA7G,sBAA6HolH,YAKxH,GAApBJ,GAA2B,kBAAKn9O,UAAU,oDAAf,WACxB,oBAAOA,UAAU,6DAAjB,WACI,6BACI,4BACI,gBAAIw+O,MAAM,MAAMx+O,UAAU,8DAA1B,mBACA,gBAAIw+O,MAAM,MAAMx+O,UAAU,8DAA1B,mCACA,gBAAIw+O,MAAM,MAAMx+O,UAAU,8DAA1B,kCACA,gBAAIw+O,MAAM,MAAMx+O,UAAU,8DAA1B,+BAGR,mBAAOA,UAAU,2BAAjB,SACK/+C,EAAMqtG,aAAav3D,MAAK,SAACr2C,EAAGqsB,GAAJ,OAAUrsB,EAAE2sG,UAAYtgF,EAAEsgF,WAAa,EAAI,KAAGniG,KAAI,SAAAsc,GAAC,OACxE,4BACI,gBAAIw4B,UAAU,kEAAd,SAAiF2zM,EAAsBnsO,EAAE6lF,cACzG,iBAAIrtD,UAAU,kEAAd,cAAkFwzM,EAAqBhsO,EAAE62Q,oBACzG,iBAAIr+O,UAAU,kEAAd,UAAiFwzM,EAAqBhsO,EAAE62Q,eAAiBp9R,EAAMw2B,MAAM+vO,OAArI,WACA,gBAAIxnN,UAAU,kEAAd,UAAgF,gBAAGvC,KAAI,iCAA4Bj2B,EAAEy6M,iBAAmBjhO,OAAO,SAA/D,UAAyEgzP,EAAkBxsO,EAAEy6M,gBAAiB,EAAG,GAAjH,YAAgI,UAAC0jD,GAAD,CAAiBjY,KAAME,YAJlO,SAAWpmP,EAAEy6M,gBAAkBz6M,EAAEu6M,iBAAmBv6M,EAAEi3Q,8BAU3E,iBAAKz+O,UAAU,qEAAqEE,QAAS,kBAAMk9O,GAAoB,IAAvH,UACI,UAACzX,GAAD,CAAiBjY,KAAMC,GAAW3tN,UAAU,qBAG9C,OAlEV,uBAA0B/+C,EAAMw2B,MAAMrN,OAAtC,iFCsDD,SAASs0Q,GAAT,GAIgB,IAHrBj2B,EAGqB,EAHrBA,SACA59M,EAEqB,EAFrBA,SACAngC,EACqB,EADrBA,OAEIi0Q,GAAa5+O,EAAAA,EAAAA,UACS,MAAtB4+O,EAAWj5Q,UACbi5Q,EAAWj5Q,4kDAAUk5Q,CAAqB,CAAEl0Q,OAAAA,KAG9C,IAAIm0Q,EAAUF,EAAWj5Q,QACzB,KAAwBq6B,EAAAA,EAAAA,UAAe,CACrCg3G,OAAQ8nI,EAAQ9nI,OAChB/Q,SAAU64I,EAAQ74I,WAFpB,GAAK9nI,EAAL,KAAYu3I,EAAZ,KAOA,OAFA11G,EAAAA,EAAAA,kBAAsB,kBAAM8+O,EAAQC,OAAOrpI,KAAW,CAACopI,KAGrD1yB,EAAAA,EAAAA,eAACG,GAADH,CACE1D,SAAUA,EACV59M,SAAUA,EACVm7F,SAAU9nI,EAAM8nI,SAChBymH,eAAgBvuP,EAAM64I,OACtBh9G,UAAW8kP,IA4UV,SAASE,GACdz3K,GAEA,YADiB,IADjBA,IAAAA,EAA4B,IAErB,IAAI03K,gBACO,kBAAT13K,GACPjpH,MAAME,QAAQ+oH,IACdA,aAAgB03K,gBACZ13K,EACAhmH,OAAO4D,KAAKoiH,GAAMl4G,QAAO,SAACqwD,EAAMxgE,GAC9B,IAAIG,EAAQkoH,EAAKroH,GACjB,OAAOwgE,EAAKrzD,OACV/N,MAAME,QAAQa,GAASA,EAAM8L,KAAK8C,SAAAA,GAAD,MAAO,CAAC/O,EAAK+O,MAAM,CAAC,CAAC/O,EAAKG,OAE5D,KC7aX,OA5EA,WACI,OAAuLu4J,EAAAA,EAAAA,YAAWwrG,IAA1La,EAAR,EAAQA,oBAAqBC,EAA7B,EAA6BA,cAAeG,EAA5C,EAA4CA,WAAyCZ,GAArF,EAAwDF,YAAxD,EAAqEC,eAArE,EAAqFC,eAA8BU,GAAnH,EAAoGjQ,cAApG,EAAmHiQ,mBAAmBJ,EAAtI,EAAsIA,mBAAoBC,EAA1J,EAA0JA,YAAaJ,EAAvK,EAAuKA,YACvK,EDiaG,SAAyBs7B,GAa9B,IAAIC,GAAyBn/O,EAAAA,EAAAA,QAAag/O,GAAmBE,IAEzDj5I,EAAW2lH,KACXwzB,GAAep/O,EAAAA,EAAAA,UAAc,WAC/B,IADqC,EACjCo/O,EAAeJ,GAAmB/4I,EAASpuF,QADV,KAGrBsnO,EAAuBx5Q,QAAQxgB,QAHV,yBAG5BjG,EAH4B,QAI9BkgS,EAAar4R,IAAI7H,IACpBigS,EAAuBx5Q,QAAQ05Q,OAAOngS,GAAKuG,SAASpG,SAAAA,GAClD+/R,EAAaE,OAAOpgS,EAAKG,OAH/B,2BAAuD,IAHlB,8BAWrC,OAAO+/R,IACN,CAACn5I,EAASpuF,SAETm0M,EAAWH,KAWf,MAAO,CAACuzB,GAVcp/O,EAAAA,EAAAA,cACpB,SACEu/O,EACAC,GAEAxzB,EAAS,IAAMgzB,GAAmBO,GAAWC,KAE/C,CAACxzB,KCvcuCyzB,GAAxC,SAAOL,EAAP,KAEA,SAASM,EAAuBhoQ,GAC5B,IAAI9J,EAEJ,OADAA,EAAMq2O,EAAoB3+P,QAAO,SAAAmiB,GAAC,OAAIA,EAAEiQ,MAAMvzB,YAAcuzB,EAAMvzB,cAC3DypB,EALX,MAQAspI,EAAAA,EAAAA,YAAU,WACN,IAAIktG,EAAWg7B,EAAa57R,IAAI,OAGhB,MAAZ4gQ,GACAD,EAAkBC,EAASj9O,iBAEhC,CAAC+8O,IAEJ,IAAMy7B,EAAoBz7B,EAAc5+P,QAAO,SAAAmiB,GAAC,OAAIA,EAAEmgP,aAA2B,GAAZngP,EAAEq8H,UAAiB9sG,MAAK,SAACr2C,EAAGqsB,GAAJ,OAAU/d,OAAO+d,EAAE06O,SAAWz4P,OAAOtO,EAAE+mQ,YAC9Hk4B,EAAe17B,EAAc5+P,QAAO,SAAAmiB,GAAC,OAAMA,EAAEigP,SAAWjgP,EAAEmgP,aAA8B,GAAbngP,EAAEigP,UAAkC,GAAZjgP,EAAEq8H,UAE3G,OACI,iCACI,mBAAM7jG,UAAU,yDAAhB,WAGI,kBAAKA,UAAU,6CAAf,WACI,iBAAKC,IAAKg9O,GAAcj9O,UAAU,yBAClC,iBAAKA,UAAU,uDACf,iBAAKA,UAAU,2CAAf,gCAEJ,iBAAKA,UAAU,+CAAf,mGAEC2jN,EAAc,GAAI,kBAAK3jN,UAAU,+CAAf,WAA8D,+CAA9D,KAA0FwzM,EAAqBmQ,EAAa,GAA5H,YAA8I,MAEjK,kBAAK3jN,UAAU,cAAf,UAEQ0/O,EAAkBr6R,QAAO,SAAAmiB,GAAC,MAAc,eAAVA,EAAEhhB,QAAuBtI,OAAS,GAAI,kBAAK8hD,UAAU,gFAAf,WAChE,iBAAKC,IAAK2/O,GAAsB5/O,UAAU,gDAC1C,kBAAKA,UAAU,oCAAf,WACI,iBAAKA,UAAU,uBAAf,uDACA,iBAAKA,UAAU,qBAAf,oMAGC,KAIT0/O,EAAkBxhS,OAAS,EAAIwhS,EAAkBx0R,KAAI,SAAAyG,GAAC,OAClD,2BAAsC,UAAC,GAAD,CAAO8lB,MAAO9lB,EAAG2sR,mBAAoBl6B,EAAY91J,aAAcmxL,EAAuB9tR,EAAEyY,QAASi7O,cAAevB,EAAoB65B,oBAAqB55B,KAArL,gBAAkBpyP,EAAEyY,WACnB,KAIfu1Q,EAAazhS,OAAS,EAAIyhS,EAAaz0R,KAAI,SAAAyG,GAAC,OACxC,2BAAsC,UAAC,GAAD,CAAO8lB,MAAO9lB,EAAG2sR,mBAAoBl6B,EAAY91J,aAAcmxL,EAAuB9tR,EAAEyY,QAASi7O,cAAevB,EAAoB65B,oBAAqB55B,KAArL,gBAAkBpyP,EAAEyY,WACnB,KAIE,GAAjBo5O,GAAyB,iBAAKxjN,UAAU,wGAAf,iDAEhB,KAIQ,GAAjBwjN,GAAqD,GAA5Bk8B,EAAkBxhS,QAAc,kBAAK8hD,UAAU,wGAAf,+FAC4B,eAAGvC,KAAK,2BAA2Bz8C,OAAO,SAASg/C,UAAU,YAA7D,wBAD5B,8CAEhD,cCzBjC,OAhDA,WACI,OAAuD23G,EAAAA,EAAAA,YAAWwrG,IAA1DK,EAAR,EAAQA,cAAeC,EAAvB,EAAuBA,aAAcxP,EAArC,EAAqCA,cAErC,OACI,iCACI,mBAAMj0M,UAAU,mEAAhB,WACI,gBAAIA,UAAU,uCAAd,oBACA,kBAAKA,UAAU,0BAAf,WACI,gBAAIA,UAAU,sCAAd,sBACA,oBAAOA,UAAU,qBAAjB,WACI,6BACI,iBAAIA,UAAU,WAAd,WACI,kCACA,yCAGR,+BACI,4BAAI,yCAAmB,yBAAKjG,UAAUH,gBACtC,4BAAI,uCAAiB,yBAAKG,UAAU4M,eACpC,4BAAI,qCAAe,yBAAK5M,UAAU8lP,aAClC,4BAAI,uCAAiB,yBAAKC,KAAKC,iBAAiBC,kBAAkBC,qBAI1E,gBAAIjgP,UAAU,2CAAd,kBACA,oBAAOA,UAAU,qBAAjB,WACI,6BACI,iBAAIA,UAAU,WAAd,WACI,kCACA,yCAGR,+BACI,4BAAI,8CAAwB,0BAAkC,MAA3Bt1B,OAAey0M,UAAkBj7N,iBACpE,4BAAI,gDAA0B,yBAAKu/P,QACnC,4BAAI,iDAA2B,yBAAKD,EAAct/P,iBAClD,4BAAI,6CAAuB,0BAAI,eAAGu5C,KAAI,0CAAqCw2M,GAAiBjzP,OAAO,SAApE,SAA8EizP,wBCIzI,OAnCA,WAEI,OACI,2BACI,UAAC,GAAD,WACI,UAAC,GAAD,WACI,WAAC8Y,GAAD,YACI,UAACV,GAAD,CAAO3jN,KAAK,IAAIg1G,SAAS,UAAC,GAAD,OACzB,UAAC2uG,GAAD,CAAO3jN,KAAK,SAASg1G,SAAS,UAAC,GAAD,OAM9B,UAAC2uG,GAAD,CAAO3jN,KAAK,IAAIg1G,SAAS,UAAC0uG,GAAD,CAAU16P,GAAG,kBCV9D,GAZwB,SAACwuR,GACjBA,GAAeA,aAAuBt/R,UACtC,6BAAqBpB,MAAK,YAAkD,IAA/C2gS,EAA8C,EAA9CA,OAAQC,EAAsC,EAAtCA,OAAQC,EAA8B,EAA9BA,OAAQC,EAAsB,EAAtBA,OAAQC,EAAc,EAAdA,QACzDJ,EAAOD,GACPE,EAAOF,GACPG,EAAOH,GACPI,EAAOJ,GACPK,EAAQL,OCFpB74O,EAAAA,QACI,UAACq3O,GAAD,WACI,UAAC,aAAD,WACI,UAAC,GAAD,QAIR5kP,SAASsM,eAAe,SAM5Bo6O","sources":["../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/isNativeFunction.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../node_modules/@babel/runtime/regenerator/index.js","../node_modules/@ethereumjs/common/src/chains/index.ts","../node_modules/@ethereumjs/common/src/eips/index.ts","../node_modules/@ethereumjs/common/src/hardforks/index.ts","../node_modules/@ethereumjs/common/src/index.ts","../node_modules/@ethereumjs/tx/src/baseTransaction.ts","../node_modules/@ethereumjs/tx/src/eip1559Transaction.ts","../node_modules/@ethereumjs/tx/src/eip2930Transaction.ts","../node_modules/@ethereumjs/tx/src/index.ts","../node_modules/@ethereumjs/tx/src/legacyTransaction.ts","../node_modules/@ethereumjs/tx/src/transactionFactory.ts","../node_modules/@ethereumjs/tx/src/types.ts","../node_modules/@ethereumjs/tx/src/util.ts","../../src.ts/_version.ts","../../src.ts/fragments.ts","../../../src.ts/coders/abstract-coder.ts","../../../src.ts/coders/address.ts","../../../src.ts/coders/anonymous.ts","../../../src.ts/coders/array.ts","../../../src.ts/coders/boolean.ts","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@babel/runtime/helpers/esm/get.js","../../../src.ts/coders/bytes.ts","../node_modules/@ethersproject/strings/src.ts/utf8.ts","../../../src.ts/coders/fixed-bytes.ts","../../../src.ts/coders/null.ts","../../../src.ts/coders/number.ts","../node_modules/@ethersproject/strings/src.ts/_version.ts","../../../src.ts/coders/string.ts","../../../src.ts/coders/tuple.ts","../../src.ts/abi-coder.ts","../../src.ts/interface.ts","../node_modules/@ethersproject/address/src.ts/index.ts","../node_modules/@ethersproject/address/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/src.ts/bignumber.ts","../node_modules/@ethersproject/bignumber/src.ts/_version.ts","../node_modules/@ethersproject/bignumber/node_modules/bn.js/lib/bn.js","../node_modules/@ethersproject/bytes/src.ts/index.ts","../node_modules/@ethersproject/bytes/src.ts/_version.ts","../node_modules/@ethersproject/constants/src.ts/bignumbers.ts","../node_modules/@ethersproject/keccak256/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/index.ts","../node_modules/@ethersproject/logger/src.ts/_version.ts","../node_modules/@ethersproject/properties/src.ts/index.ts","../node_modules/@ethersproject/properties/src.ts/_version.ts","../node_modules/@ethersproject/signing-key/node_modules/bn.js/lib/bn.js","../node_modules/@ethersproject/rlp/src.ts/index.ts","../node_modules/@ethersproject/rlp/src.ts/_version.ts","../node_modules/node_modules/minimalistic-assert/index.js","../node_modules/node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/utils.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/node_modules/inherits/inherits_browser.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/node_modules/elliptic/lib/elliptic/curves.js","../node_modules/node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/@ethersproject/signing-key/lib.esm/elliptic.js","../node_modules/node_modules/elliptic/lib/elliptic.js","../node_modules/@ethersproject/signing-key/src.ts/index.ts","../node_modules/@ethersproject/signing-key/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/_version.ts","../node_modules/@ethersproject/transactions/src.ts/index.ts","../index.ts","../node_modules/detect-browser/es/index.js","../../../src/browser.ts","../../../src/json.ts","../../../src/index.ts","../../../src/local.ts","../../../src/mobile.ts","../../../src/registry.ts","../../../src/crypto.ts","../../../src/env.ts","../node_modules/babel-plugin-transform-async-to-promises/helpers.mjs","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/logo.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/constants/index.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Header.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/ConnectButton.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/WalletButton.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/caret.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/components/WalletIcon.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/LinkDisplay.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Notification.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/QRCodeDisplay.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/components/Modal.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/de.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/index.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/en.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/es.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/fr.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/ko.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/pt.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/zh.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/languages/fa.ts","../node_modules/@walletconnect/qrcode-modal/src/browser/index.tsx","../node_modules/@walletconnect/qrcode-modal/src/browser/assets/style.ts","../node_modules/@walletconnect/qrcode-modal/src/index.ts","../node_modules/@walletconnect/qrcode-modal/src/node.ts","../node_modules/asn1.js/lib/asn1.js","../node_modules/asn1.js/lib/asn1/api.js","../node_modules/asn1.js/lib/asn1/base/buffer.js","../node_modules/asn1.js/lib/asn1/base/index.js","../node_modules/asn1.js/lib/asn1/base/node.js","../node_modules/asn1.js/lib/asn1/base/reporter.js","../node_modules/asn1.js/lib/asn1/constants/der.js","../node_modules/asn1.js/lib/asn1/constants/index.js","../node_modules/asn1.js/lib/asn1/decoders/der.js","../node_modules/asn1.js/lib/asn1/decoders/index.js","../node_modules/asn1.js/lib/asn1/decoders/pem.js","../node_modules/asn1.js/lib/asn1/encoders/der.js","../node_modules/asn1.js/lib/asn1/encoders/index.js","../node_modules/asn1.js/lib/asn1/encoders/pem.js","../node_modules/assert/build/assert.js","../node_modules/assert/build/internal/assert/assertion_error.js","../node_modules/assert/build/internal/errors.js","../node_modules/assert/build/internal/util/comparisons.js","../node_modules/async-mutex/lib/Mutex.js","../node_modules/async-mutex/lib/Semaphore.js","../node_modules/async-mutex/lib/index.js","../node_modules/async-mutex/lib/withTimeout.js","../node_modules/async/asyncify.js","../node_modules/async/eachLimit.js","../node_modules/async/eachOf.js","../node_modules/async/eachOfLimit.js","../node_modules/async/eachSeries.js","../node_modules/async/internal/breakLoop.js","../node_modules/async/internal/doLimit.js","../node_modules/async/internal/doParallel.js","../node_modules/async/internal/eachOfLimit.js","../node_modules/async/internal/getIterator.js","../node_modules/async/internal/initialParams.js","../node_modules/async/internal/iterator.js","../node_modules/async/internal/map.js","../node_modules/async/internal/once.js","../node_modules/async/internal/onlyOnce.js","../node_modules/async/internal/parallel.js","../node_modules/async/internal/setImmediate.js","../node_modules/async/internal/slice.js","../node_modules/async/internal/withoutIndex.js","../node_modules/async/internal/wrapAsync.js","../node_modules/async/map.js","../node_modules/async/parallel.js","../node_modules/async/waterfall.js","../node_modules/base-x/src/index.js","../node_modules/base64-js/index.js","../node_modules/bn.js/lib/bn.js","../node_modules/brorand/index.js","../node_modules/browserify-aes/aes.js","../node_modules/browserify-aes/authCipher.js","../node_modules/browserify-aes/browser.js","../node_modules/browserify-aes/decrypter.js","../node_modules/browserify-aes/encrypter.js","../node_modules/browserify-aes/ghash.js","../node_modules/browserify-aes/incr32.js","../node_modules/browserify-aes/modes/cbc.js","../node_modules/browserify-aes/modes/cfb.js","../node_modules/browserify-aes/modes/cfb1.js","../node_modules/browserify-aes/modes/cfb8.js","../node_modules/browserify-aes/modes/ctr.js","../node_modules/browserify-aes/modes/ecb.js","../node_modules/browserify-aes/modes/index.js","../node_modules/browserify-aes/modes/ofb.js","../node_modules/browserify-aes/streamCipher.js","../node_modules/browserify-cipher/browser.js","../node_modules/browserify-des/index.js","../node_modules/browserify-des/modes.js","../node_modules/browserify-rsa/index.js","../node_modules/browserify-rsa/node_modules/bn.js/lib/bn.js","../node_modules/browserify-sign/algos.js","../node_modules/browserify-sign/browser/index.js","../node_modules/browserify-sign/browser/sign.js","../node_modules/browserify-sign/browser/verify.js","../node_modules/browserify-sign/node_modules/bn.js/lib/bn.js","../node_modules/buffer-xor/index.js","../node_modules/buffer/index.js","../node_modules/builtin-status-codes/browser.js","../node_modules/call-bind/callBound.js","../node_modules/call-bind/index.js","../node_modules/cids/node_modules/buffer/index.js","../node_modules/cids/node_modules/multicodec/src/constants.js","../node_modules/cids/node_modules/multicodec/src/index.js","../node_modules/cids/node_modules/multicodec/src/int-table.js","../node_modules/cids/node_modules/multicodec/src/print.js","../node_modules/cids/node_modules/multicodec/src/util.js","../node_modules/cids/node_modules/multicodec/src/varint-table.js","../node_modules/cids/src/cid-util.js","../node_modules/cids/src/index.js","../node_modules/cipher-base/index.js","../node_modules/class-is/index.js","../node_modules/content-hash/src/helpers.js","../node_modules/content-hash/src/index.js","../node_modules/content-hash/src/profiles.js","../node_modules/cookiejar/cookiejar.js","../node_modules/copy-to-clipboard/index.js","../node_modules/crc-32/crc32.js","../node_modules/create-ecdh/browser.js","../node_modules/create-hash/browser.js","../node_modules/create-hash/md5.js","../node_modules/create-hmac/browser.js","../node_modules/create-hmac/legacy.js","../node_modules/crypto-browserify/index.js","../node_modules/crypto/index.js","../node_modules/decode-uri-component/index.js","../node_modules/define-properties/index.js","../node_modules/des.js/lib/des.js","../node_modules/des.js/lib/des/cbc.js","../node_modules/des.js/lib/des/cipher.js","../node_modules/des.js/lib/des/des.js","../node_modules/des.js/lib/des/ede.js","../node_modules/des.js/lib/des/utils.js","../node_modules/diffie-hellman/browser.js","../node_modules/diffie-hellman/lib/dh.js","../node_modules/diffie-hellman/lib/generatePrime.js","../node_modules/dijkstrajs/dijkstra.js","../node_modules/elliptic/lib/elliptic.js","../node_modules/elliptic/lib/elliptic/curve/base.js","../node_modules/elliptic/lib/elliptic/curve/edwards.js","../node_modules/elliptic/lib/elliptic/curve/index.js","../node_modules/elliptic/lib/elliptic/curve/mont.js","../node_modules/elliptic/lib/elliptic/curve/short.js","../node_modules/elliptic/lib/elliptic/curves.js","../node_modules/elliptic/lib/elliptic/ec/index.js","../node_modules/elliptic/lib/elliptic/ec/key.js","../node_modules/elliptic/lib/elliptic/ec/signature.js","../node_modules/elliptic/lib/elliptic/eddsa/index.js","../node_modules/elliptic/lib/elliptic/eddsa/key.js","../node_modules/elliptic/lib/elliptic/eddsa/signature.js","../node_modules/elliptic/lib/elliptic/precomputed/secp256k1.js","../node_modules/elliptic/lib/elliptic/utils.js","../node_modules/elliptic/node_modules/bn.js/lib/bn.js","../node_modules/es5-ext/global.js","../node_modules/es6-object-assign/index.js","../node_modules/eth-block-tracker/src/base.js","../node_modules/eth-block-tracker/src/polling.js","../node_modules/eth-ens-namehash/index.js","../node_modules/eth-ens-namehash/node_modules/js-sha3/src/sha3.js","../node_modules/eth-json-rpc-filters/base-filter-history.js","../node_modules/eth-json-rpc-filters/base-filter.js","../node_modules/eth-json-rpc-filters/block-filter.js","../node_modules/eth-json-rpc-filters/getBlocksForRange.js","../node_modules/eth-json-rpc-filters/hexUtils.js","../node_modules/eth-json-rpc-filters/index.js","../node_modules/eth-json-rpc-filters/log-filter.js","../node_modules/eth-json-rpc-filters/node_modules/pify/index.js","../node_modules/eth-json-rpc-filters/subscriptionManager.js","../node_modules/eth-json-rpc-filters/tx-filter.js","../node_modules/eth-json-rpc-middleware/block-cache.js","../node_modules/eth-json-rpc-middleware/cache-utils.js","../node_modules/eth-json-rpc-middleware/node_modules/json-rpc-engine/src/createAsyncMiddleware.js","../node_modules/eth-json-rpc-middleware/node_modules/json-rpc-engine/src/createScaffoldMiddleware.js","../node_modules/eth-json-rpc-middleware/scaffold.js","../node_modules/eth-lib/lib/array.js","../node_modules/eth-lib/lib/bytes.js","../node_modules/eth-lib/lib/hash.js","../node_modules/eth-query/index.js","../node_modules/eth-sig-util/index.js","../node_modules/eth-sig-util/node_modules/ethereumjs-util/dist/index.js","../node_modules/eth-sig-util/node_modules/ethereumjs-util/dist/secp256k1-adapter.js","../node_modules/eth-sig-util/node_modules/ethereumjs-util/dist/secp256k1-lib/der.js","../node_modules/eth-sig-util/node_modules/ethereumjs-util/dist/secp256k1-lib/index.js","../node_modules/ethereum-bloom-filters/dist/index.js","../node_modules/ethereum-bloom-filters/dist/utils.js","../node_modules/ethereum-cryptography/src/hash-utils.ts","../node_modules/ethereum-cryptography/src/keccak.ts","../node_modules/ethereum-cryptography/src/random.ts","../node_modules/ethereum-cryptography/src/secp256k1.ts","../node_modules/ethereumjs-abi/index.js","../node_modules/ethereumjs-abi/lib/index.js","../../src/account.ts","../../src/bytes.ts","../../src/constants.ts","../../src/hash.ts","../../src/index.ts","../../src/object.ts","../../src/secp256k1v3-adapter.ts","../../../src/secp256k1v3-lib/der.ts","../../../src/secp256k1v3-lib/index.ts","../../src/signature.ts","../node_modules/ethereumjs-tx/es5/index.js","../node_modules/ethereumjs-tx/node_modules/ethereumjs-util/dist/index.js","../node_modules/ethereumjs-tx/node_modules/ethereumjs-util/dist/secp256k1-adapter.js","../node_modules/ethereumjs-tx/node_modules/ethereumjs-util/dist/secp256k1-lib/der.js","../node_modules/ethereumjs-tx/node_modules/ethereumjs-util/dist/secp256k1-lib/index.js","../node_modules/ethereumjs-util/src/account.ts","../node_modules/ethereumjs-util/src/address.ts","../node_modules/ethereumjs-util/src/bytes.ts","../node_modules/ethereumjs-util/src/constants.ts","../node_modules/ethereumjs-util/src/externals.ts","../node_modules/ethereumjs-util/src/hash.ts","../node_modules/ethereumjs-util/src/helpers.ts","../node_modules/ethereumjs-util/src/index.ts","../node_modules/ethereumjs-util/src/internal.ts","../node_modules/ethereumjs-util/src/object.ts","../node_modules/ethereumjs-util/src/signature.ts","../node_modules/ethereumjs-util/src/types.ts","../node_modules/ethereumjs-util/node_modules/bn.js/lib/bn.js","../node_modules/ethjs-unit/lib/index.js","../node_modules/ethjs-unit/node_modules/bn.js/lib/bn.js","../node_modules/ethjs-util/lib/index.js","../node_modules/eventemitter3/index.js","../node_modules/events/events.js","../node_modules/evp_bytestokey/index.js","../node_modules/fast-safe-stringify/index.js","../node_modules/foreach/index.js","../node_modules/function-bind/implementation.js","../node_modules/function-bind/index.js","../node_modules/get-intrinsic/index.js","../node_modules/global/window.js","../node_modules/has-property-descriptors/index.js","../node_modules/has-symbols/index.js","../node_modules/has-symbols/shams.js","../node_modules/has-tostringtag/shams.js","../node_modules/has/src/index.js","../node_modules/hash-base/index.js","../node_modules/hash.js/lib/hash.js","../node_modules/hash.js/lib/hash/common.js","../node_modules/hash.js/lib/hash/hmac.js","../node_modules/hash.js/lib/hash/ripemd.js","../node_modules/hash.js/lib/hash/sha.js","../node_modules/hash.js/lib/hash/sha/1.js","../node_modules/hash.js/lib/hash/sha/224.js","../node_modules/hash.js/lib/hash/sha/256.js","../node_modules/hash.js/lib/hash/sha/384.js","../node_modules/hash.js/lib/hash/sha/512.js","../node_modules/hash.js/lib/hash/sha/common.js","../node_modules/hash.js/lib/hash/utils.js","../node_modules/hmac-drbg/lib/hmac-drbg.js","../node_modules/https-browserify/index.js","../node_modules/idna-uts46-hx/idna-map.js","../node_modules/idna-uts46-hx/node_modules/punycode/punycode.js","../node_modules/idna-uts46-hx/uts46.js","../node_modules/ieee754/index.js","../node_modules/inherits/inherits_browser.js","../node_modules/is-arguments/index.js","../node_modules/is-function/index.js","../node_modules/is-generator-function/index.js","../node_modules/is-hex-prefixed/src/index.js","../node_modules/is-nan/implementation.js","../node_modules/is-nan/index.js","../node_modules/is-nan/polyfill.js","../node_modules/is-nan/shim.js","../node_modules/is-typed-array/index.js","../node_modules/is-typedarray/index.js","../node_modules/isarray/index.js","../node_modules/js-sha3/src/sha3.js","../../src/JsonRpcEngine.ts","../../src/createAsyncMiddleware.ts","../../src/createScaffoldMiddleware.ts","../../src/getUniqueId.ts","../../src/idRemapMiddleware.ts","../../src/mergeMiddleware.ts","../../src/classes.ts","../../src/error-constants.ts","../../src/errors.ts","../../src/utils.ts","../node_modules/json-rpc-random-id/index.js","../node_modules/json-stable-stringify/index.js","../node_modules/jsonify/index.js","../node_modules/jsonify/lib/parse.js","../node_modules/jsonify/lib/stringify.js","../node_modules/keccak/js.js","../node_modules/keccak/lib/api/index.js","../node_modules/keccak/lib/api/keccak.js","../node_modules/keccak/lib/api/shake.js","../node_modules/keccak/lib/keccak-state-unroll.js","../node_modules/keccak/lib/keccak.js","../node_modules/lodash/_Symbol.js","../node_modules/lodash/_arrayLikeKeys.js","../node_modules/lodash/_baseGetTag.js","../node_modules/lodash/_baseIsArguments.js","../node_modules/lodash/_baseIsTypedArray.js","../node_modules/lodash/_baseKeys.js","../node_modules/lodash/_baseTimes.js","../node_modules/lodash/_baseUnary.js","../node_modules/lodash/_freeGlobal.js","../node_modules/lodash/_getRawTag.js","../node_modules/lodash/_isIndex.js","../node_modules/lodash/_isPrototype.js","../node_modules/lodash/_nativeKeys.js","../node_modules/lodash/_nodeUtil.js","../node_modules/lodash/_objectToString.js","../node_modules/lodash/_overArg.js","../node_modules/lodash/_root.js","../node_modules/lodash/isArguments.js","../node_modules/lodash/isArray.js","../node_modules/lodash/isArrayLike.js","../node_modules/lodash/isBuffer.js","../node_modules/lodash/isFunction.js","../node_modules/lodash/isLength.js","../node_modules/lodash/isObject.js","../node_modules/lodash/isObjectLike.js","../node_modules/lodash/isTypedArray.js","../node_modules/lodash/keys.js","../node_modules/lodash/noop.js","../node_modules/lodash/stubFalse.js","../node_modules/md5.js/index.js","../node_modules/miller-rabin/lib/mr.js","../node_modules/minimalistic-assert/index.js","../node_modules/minimalistic-crypto-utils/lib/utils.js","../node_modules/multibase/node_modules/buffer/index.js","../node_modules/multibase/src/base.js","../node_modules/multibase/src/base16.js","../node_modules/multibase/src/base32.js","../node_modules/multibase/src/base64.js","../node_modules/multibase/src/constants.js","../node_modules/multibase/src/index.js","../node_modules/multicodec/src/constants.js","../node_modules/multicodec/src/index.js","../node_modules/multicodec/src/int-table.js","../node_modules/multicodec/src/print.js","../node_modules/multicodec/src/util.js","../node_modules/multicodec/src/varint-table.js","../node_modules/multihashes/node_modules/buffer/index.js","../node_modules/multihashes/node_modules/multibase/src/base.js","../node_modules/multihashes/node_modules/multibase/src/base16.js","../node_modules/multihashes/node_modules/multibase/src/base32.js","../node_modules/multihashes/node_modules/multibase/src/base64.js","../node_modules/multihashes/node_modules/multibase/src/constants.js","../node_modules/multihashes/node_modules/multibase/src/index.js","../node_modules/multihashes/src/constants.js","../node_modules/multihashes/src/index.js","../node_modules/number-to-bn/node_modules/bn.js/lib/bn.js","../node_modules/number-to-bn/src/index.js","../node_modules/object-assign/index.js","../node_modules/object-is/implementation.js","../node_modules/object-is/index.js","../node_modules/object-is/polyfill.js","../node_modules/object-is/shim.js","../node_modules/object-keys/implementation.js","../node_modules/object-keys/index.js","../node_modules/object-keys/isArguments.js","../node_modules/oboe/dist/oboe-browser.js","../node_modules/os-browserify/browser.js","../node_modules/parse-asn1/asn1.js","../node_modules/parse-asn1/certificate.js","../node_modules/parse-asn1/fixProc.js","../node_modules/parse-asn1/index.js","../node_modules/parse-headers/parse-headers.js","../node_modules/pbkdf2/browser.js","../node_modules/pbkdf2/lib/async.js","../node_modules/pbkdf2/lib/default-encoding.js","../node_modules/pbkdf2/lib/precondition.js","../node_modules/pbkdf2/lib/sync-browser.js","../node_modules/pbkdf2/lib/to-buffer.js","../node_modules/pify/index.js","../node_modules/preact/src/constants.js","../node_modules/preact/src/options.js","../node_modules/preact/src/component.js","../node_modules/preact/src/render.js","../node_modules/preact/src/create-context.js","../node_modules/preact/src/util.js","../node_modules/preact/src/create-element.js","../node_modules/preact/src/diff/children.js","../node_modules/preact/src/diff/props.js","../node_modules/preact/src/diff/index.js","../node_modules/preact/src/clone-element.js","../node_modules/preact/src/diff/catch-error.js","../node_modules/preact/hooks/src/index.js","../node_modules/preact/compat/src/util.js","../node_modules/preact/compat/src/PureComponent.js","../node_modules/preact/compat/src/memo.js","../node_modules/preact/compat/src/forwardRef.js","../node_modules/preact/compat/src/Children.js","../node_modules/preact/compat/src/suspense.js","../node_modules/preact/compat/src/suspense-list.js","../node_modules/preact/compat/src/portals.js","../node_modules/preact/compat/src/render.js","../node_modules/preact/compat/src/events.js","../node_modules/preact/compat/src/index.js","../node_modules/process/browser.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/public-encrypt/browser.js","../node_modules/public-encrypt/mgf.js","../node_modules/public-encrypt/privateDecrypt.js","../node_modules/public-encrypt/publicEncrypt.js","../node_modules/public-encrypt/withPublic.js","../node_modules/public-encrypt/xor.js","../node_modules/qrcode/lib/browser.js","../node_modules/qrcode/lib/can-promise.js","../node_modules/qrcode/lib/core/alignment-pattern.js","../node_modules/qrcode/lib/core/alphanumeric-data.js","../node_modules/qrcode/lib/core/bit-buffer.js","../node_modules/qrcode/lib/core/bit-matrix.js","../node_modules/qrcode/lib/core/byte-data.js","../node_modules/qrcode/lib/core/error-correction-code.js","../node_modules/qrcode/lib/core/error-correction-level.js","../node_modules/qrcode/lib/core/finder-pattern.js","../node_modules/qrcode/lib/core/format-info.js","../node_modules/qrcode/lib/core/galois-field.js","../node_modules/qrcode/lib/core/kanji-data.js","../node_modules/qrcode/lib/core/mask-pattern.js","../node_modules/qrcode/lib/core/mode.js","../node_modules/qrcode/lib/core/numeric-data.js","../node_modules/qrcode/lib/core/polynomial.js","../node_modules/qrcode/lib/core/qrcode.js","../node_modules/qrcode/lib/core/reed-solomon-encoder.js","../node_modules/qrcode/lib/core/regex.js","../node_modules/qrcode/lib/core/segments.js","../node_modules/qrcode/lib/core/utils.js","../node_modules/qrcode/lib/core/version-check.js","../node_modules/qrcode/lib/core/version.js","../node_modules/qrcode/lib/renderer/canvas.js","../node_modules/qrcode/lib/renderer/svg-tag.js","../node_modules/qrcode/lib/renderer/utils.js","../node_modules/qrcode/lib/utils/typedarray-buffer.js","../node_modules/qrcode/node_modules/buffer/index.js","../node_modules/query-string/index.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../node_modules/randombytes/browser.js","../node_modules/randomfill/browser.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/index.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/readable-stream/errors-browser.js","../node_modules/readable-stream/lib/_stream_duplex.js","../node_modules/readable-stream/lib/_stream_passthrough.js","../node_modules/readable-stream/lib/_stream_readable.js","../node_modules/readable-stream/lib/_stream_transform.js","../node_modules/readable-stream/lib/_stream_writable.js","../node_modules/readable-stream/lib/internal/streams/async_iterator.js","../node_modules/readable-stream/lib/internal/streams/buffer_list.js","../node_modules/readable-stream/lib/internal/streams/destroy.js","../node_modules/readable-stream/lib/internal/streams/end-of-stream.js","../node_modules/readable-stream/lib/internal/streams/from-browser.js","../node_modules/readable-stream/lib/internal/streams/pipeline.js","../node_modules/readable-stream/lib/internal/streams/state.js","../node_modules/readable-stream/lib/internal/streams/stream-browser.js","../node_modules/readable-stream/readable-browser.js","../node_modules/regenerator-runtime/runtime.js","../node_modules/ripemd160/index.js","../node_modules/rlp/src/index.ts","../node_modules/rlp/node_modules/bn.js/lib/bn.js","../node_modules/safe-buffer/index.js","../node_modules/safe-event-emitter/index.js","../node_modules/safer-buffer/safer.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/scrypt-js/scrypt.js","../node_modules/secp256k1/elliptic.js","../node_modules/secp256k1/lib/elliptic.js","../node_modules/secp256k1/lib/index.js","../node_modules/semaphore/lib/semaphore.js","../node_modules/sha.js/hash.js","../node_modules/sha.js/index.js","../node_modules/sha.js/sha.js","../node_modules/sha.js/sha1.js","../node_modules/sha.js/sha224.js","../node_modules/sha.js/sha256.js","../node_modules/sha.js/sha384.js","../node_modules/sha.js/sha512.js","../node_modules/split-on-first/index.js","../node_modules/stream-http/index.js","../node_modules/stream-http/lib/capability.js","../node_modules/stream-http/lib/request.js","../node_modules/stream-http/lib/response.js","../node_modules/stream/index.js","../node_modules/strict-uri-encode/index.js","../node_modules/string_decoder/lib/string_decoder.js","../node_modules/strip-hex-prefix/src/index.js","../node_modules/swarm-js/lib/api-browser.js","../node_modules/swarm-js/lib/pick.js","../node_modules/swarm-js/lib/swarm-hash.js","../node_modules/swarm-js/lib/swarm.js","../node_modules/toggle-selection/index.js","../node_modules/tslib/tslib.es6.js","../node_modules/typedarray-to-buffer/index.js","../node_modules/url-set-query/index.js","../node_modules/url/node_modules/punycode/punycode.js","../node_modules/url/url.js","../node_modules/url/util.js","../node_modules/utf8/utf8.js","../node_modules/util-deprecate/browser.js","../node_modules/util/support/isBufferBrowser.js","../node_modules/util/support/types.js","../node_modules/util/util.js","../node_modules/varint/decode.js","../node_modules/varint/encode.js","../node_modules/varint/index.js","../node_modules/varint/length.js","../node_modules/web3-bzz/lib/index.js","../node_modules/web3-core-helpers/lib/errors.js","../node_modules/web3-core-helpers/lib/formatters.js","../node_modules/web3-core-helpers/lib/index.js","../node_modules/web3-core-method/lib/index.js","../node_modules/web3-core-promievent/lib/index.js","../node_modules/web3-core-promievent/node_modules/eventemitter3/index.js","../node_modules/web3-core-requestmanager/lib/batch.js","../node_modules/web3-core-requestmanager/lib/givenProvider.js","../node_modules/web3-core-requestmanager/lib/index.js","../node_modules/web3-core-requestmanager/lib/jsonrpc.js","../node_modules/web3-core-subscriptions/lib/index.js","../node_modules/web3-core-subscriptions/lib/subscription.js","../node_modules/web3-core-subscriptions/node_modules/eventemitter3/index.js","../node_modules/web3-core/lib/extend.js","../node_modules/web3-core/lib/index.js","../node_modules/web3-eth-abi/lib/index.js","../node_modules/web3-eth-accounts/lib/index.js","../node_modules/web3-eth-accounts/node_modules/eth-lib/lib/account.js","../node_modules/web3-eth-accounts/node_modules/eth-lib/lib/array.js","../node_modules/web3-eth-accounts/node_modules/eth-lib/lib/bytes.js","../node_modules/web3-eth-accounts/node_modules/eth-lib/lib/hash.js","../node_modules/web3-eth-accounts/node_modules/eth-lib/lib/nat.js","../node_modules/web3-eth-accounts/node_modules/eth-lib/lib/rlp.js","../node_modules/web3-eth-accounts/node_modules/uuid/index.js","../node_modules/web3-eth-accounts/node_modules/uuid/lib/bytesToUuid.js","../node_modules/web3-eth-accounts/node_modules/uuid/lib/rng-browser.js","../node_modules/web3-eth-accounts/node_modules/uuid/v1.js","../node_modules/web3-eth-accounts/node_modules/uuid/v4.js","../node_modules/web3-eth-contract/lib/index.js","../node_modules/web3-eth-ens/lib/ENS.js","../node_modules/web3-eth-ens/lib/config.js","../node_modules/web3-eth-ens/lib/contracts/Registry.js","../node_modules/web3-eth-ens/lib/index.js","../node_modules/web3-eth-ens/lib/lib/ResolverMethodHandler.js","../node_modules/web3-eth-ens/lib/lib/contentHash.js","../node_modules/web3-eth-ens/lib/resources/ABI/Registry.js","../node_modules/web3-eth-ens/lib/resources/ABI/Resolver.js","../node_modules/web3-eth-iban/lib/index.js","../node_modules/web3-eth-iban/node_modules/bn.js/lib/bn.js","../node_modules/web3-eth-personal/lib/index.js","../node_modules/web3-eth/lib/getNetworkType.js","../node_modules/web3-eth/lib/index.js","../node_modules/web3-net/lib/index.js","../node_modules/web3-provider-engine/index.js","../node_modules/web3-provider-engine/node_modules/ethereumjs-util/dist/index.js","../node_modules/web3-provider-engine/node_modules/ethereumjs-util/dist/secp256k1-adapter.js","../node_modules/web3-provider-engine/node_modules/ethereumjs-util/dist/secp256k1-lib/der.js","../node_modules/web3-provider-engine/node_modules/ethereumjs-util/dist/secp256k1-lib/index.js","../node_modules/web3-provider-engine/node_modules/safe-buffer/index.js","../node_modules/web3-provider-engine/subproviders/cache.js","../node_modules/web3-provider-engine/subproviders/filters.js","../node_modules/web3-provider-engine/subproviders/fixture.js","../node_modules/web3-provider-engine/subproviders/hooked-wallet.js","../node_modules/web3-provider-engine/subproviders/json-rpc-engine-middleware.js","../node_modules/web3-provider-engine/subproviders/nonce-tracker.js","../node_modules/web3-provider-engine/subproviders/subprovider.js","../node_modules/web3-provider-engine/subproviders/subscriptions.js","../node_modules/web3-provider-engine/util/create-payload.js","../node_modules/web3-provider-engine/util/estimate-gas.js","../node_modules/web3-provider-engine/util/random-id.js","../node_modules/web3-provider-engine/util/rpc-cache-utils.js","../node_modules/web3-provider-engine/util/stoplight.js","../node_modules/web3-providers-http/lib/index.js","../node_modules/web3-providers-ipc/lib/index.js","../node_modules/web3-providers-ws/lib/helpers.js","../node_modules/web3-providers-ws/lib/index.js","../node_modules/web3-providers-ws/node_modules/eventemitter3/index.js","../node_modules/web3-shh/lib/index.js","../node_modules/web3-utils/lib/index.js","../node_modules/web3-utils/lib/soliditySha3.js","../node_modules/web3-utils/lib/utils.js","../node_modules/web3-utils/node_modules/bn.js/lib/bn.js","../node_modules/web3/lib/index.js","../node_modules/websocket/lib/browser.js","../node_modules/websocket/lib/version.js","../node_modules/which-typed-array/index.js","../node_modules/ws/browser.js","../node_modules/xhr-request/index.js","../node_modules/xhr-request/lib/ensure-header.js","../node_modules/xhr-request/lib/normalize-response.js","../node_modules/xhr-request/lib/request-browser.js","../node_modules/xhr-request/node_modules/query-string/index.js","../node_modules/xhr-request/node_modules/strict-uri-encode/index.js","../node_modules/xhr/index.js","../../errors.ts","../../index.ts","../../progress-event.ts","../../xml-http-request-event-target.ts","../../xml-http-request-upload.ts","../../xml-http-request.ts","../node_modules/xtend/immutable.js","../node_modules/available-typed-arrays/index.js","../node_modules/es-abstract/helpers/getOwnPropertyDescriptor.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../webpack/bootstrap","../webpack/runtime/amd options","../webpack/runtime/compat get default export","../webpack/runtime/define property getters","../webpack/runtime/ensure chunk","../webpack/runtime/get javascript chunk filename","../webpack/runtime/get mini-css chunk filename","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/load script","../webpack/runtime/make namespace object","../webpack/runtime/node module decorator","../webpack/runtime/publicPath","../webpack/runtime/jsonp chunk loading","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","Common/HelperFunctions.ts","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../../../src/constants.ts","../../../src/encoding.ts","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../../../src/format.ts","../../../src/misc.ts","../../../src/validators.ts","../../../src/ethereum.ts","../../../src/url.ts","../../../src/network.ts","../../../src/errors.ts","../../../src/events.ts","../../../src/storage.ts","../../../src/session.ts","../../../src/payload.ts","../../../../src/browser/index.ts","../../../../src/constants/length.ts","../../../../src/constants/default.ts","../../../../src/lib/browser.ts","../../../../src/constants/operations.ts","../../../../src/browser/aes.ts","../../../../src/browser/hmac.ts","Components/Web3Context/Web3Context.tsx","../node_modules/@babel/runtime/helpers/esm/extends.js","../../packages/react-router/lib/context.ts","../../packages/react-router/lib/router.ts","../../packages/react-router/lib/hooks.tsx","../../packages/react-router/lib/components.tsx","../node_modules/@fortawesome/free-solid-svg-icons/index.es.js","../node_modules/@fortawesome/fontawesome-svg-core/index.es.js","../node_modules/@fortawesome/react-fontawesome/index.es.js","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@headlessui/react/dist/headlessui.esm.js","Images/walletconnect.svg","Images/metamask.svg","Images/trustwallet.svg","Images/loading-animation.svg","Components/ConnectButton/ConnectButton.tsx","Layout/TopNav.tsx","Layout/Layout.tsx","Components/Round/Round.tsx","../../packages/react-router-dom/index.tsx","Pages/HomePage.tsx","Pages/DebugPage.tsx","App.tsx","reportWebVitals.ts","index.tsx"],"sourcesContent":["function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n\n for (var i = 0, arr2 = new Array(len); i < len; i++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\n\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _construct.apply(null, arguments);\n}\n\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\nfunction _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}\n\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\n\n if (!it) {\n if (Array.isArray(o) || (it = unsupportedIterableToArray(o)) || allowArrayLike && o && typeof o.length === \"number\") {\n if (it) o = it;\n var i = 0;\n\n var F = function F() {};\n\n return {\n s: F,\n n: function n() {\n if (i >= o.length) return {\n done: true\n };\n return {\n done: false,\n value: o[i++]\n };\n },\n e: function e(_e) {\n throw _e;\n },\n f: F\n };\n }\n\n throw new TypeError(\"Invalid attempt to iterate non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n }\n\n var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\n\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\n\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\n\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n\n return possibleConstructorReturn(this, result);\n };\n}\n\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperty(obj, key, value) {\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n\n return obj;\n}\n\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\n\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n\n return _get.apply(this, arguments);\n}\n\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nfunction _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n subClass.prototype = Object.create(superClass && superClass.prototype, {\n constructor: {\n value: subClass,\n writable: true,\n configurable: true\n }\n });\n Object.defineProperty(subClass, \"prototype\", {\n writable: false\n });\n if (superClass) setPrototypeOf(subClass, superClass);\n}\n\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\n\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeReflectConstruct() {\n if (typeof Reflect === \"undefined\" || !Reflect.construct) return false;\n if (Reflect.construct.sham) return false;\n if (typeof Proxy === \"function\") return true;\n\n try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\n\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = arr == null ? null : typeof Symbol !== \"undefined\" && arr[Symbol.iterator] || arr[\"@@iterator\"];\n\n if (_i == null) return;\n var _arr = [];\n var _n = true;\n var _d = false;\n\n var _s, _e;\n\n try {\n for (_i = _i.call(arr); !(_n = (_s = _i.next()).done); _n = true) {\n _arr.push(_s.value);\n\n if (i && _arr.length === i) break;\n }\n } catch (err) {\n _d = true;\n _e = err;\n } finally {\n try {\n if (!_n && _i[\"return\"] != null) _i[\"return\"]();\n } finally {\n if (_d) throw _e;\n }\n }\n\n return _arr;\n}\n\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableRest() {\n throw new TypeError(\"Invalid attempt to destructure non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _nonIterableSpread() {\n throw new TypeError(\"Invalid attempt to spread non-iterable instance.\\nIn order to be iterable, non-array objects must have a [Symbol.iterator]() method.\");\n}\n\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\n\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\n\n if (Object.getOwnPropertySymbols) {\n var symbols = Object.getOwnPropertySymbols(object);\n enumerableOnly && (symbols = symbols.filter(function (sym) {\n return Object.getOwnPropertyDescriptor(object, sym).enumerable;\n })), keys.push.apply(keys, symbols);\n }\n\n return keys;\n}\n\nfunction _objectSpread2(target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = null != arguments[i] ? arguments[i] : {};\n i % 2 ? ownKeys(Object(source), !0).forEach(function (key) {\n defineProperty(target, key, source[key]);\n }) : Object.getOwnPropertyDescriptors ? Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)) : ownKeys(Object(source)).forEach(function (key) {\n Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key));\n });\n }\n\n return target;\n}\n\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\n\nfunction _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n\n return assertThisInitialized(self);\n}\n\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\n\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableRest = require(\"./nonIterableRest.js\");\n\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\n\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}\n\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}\n\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\n\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\n\nvar isNativeFunction = require(\"./isNativeFunction.js\");\n\nvar construct = require(\"./construct.js\");\n\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n\n _cache.set(Class, Wrapper);\n }\n\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\n\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","module.exports = require(\"regenerator-runtime\");\n","import { Chain, chainsType } from './../types'\nimport mainnet from './mainnet.json'\nimport ropsten from './ropsten.json'\nimport rinkeby from './rinkeby.json'\nimport kovan from './kovan.json'\nimport goerli from './goerli.json'\nimport sepolia from './sepolia.json'\n\n/**\n * @hidden\n */\nexport function _getInitializedChains(customChains?: Chain[]) {\n const names: any = {\n '1': 'mainnet',\n '3': 'ropsten',\n '4': 'rinkeby',\n '42': 'kovan',\n '5': 'goerli',\n '11155111': 'sepolia',\n }\n const chains: any = {\n mainnet,\n ropsten,\n rinkeby,\n kovan,\n goerli,\n sepolia,\n }\n if (customChains) {\n for (const chain of customChains) {\n const name = chain.name\n names[chain.chainId.toString()] = name\n chains[name] = chain\n }\n }\n\n chains['names'] = names\n return chains\n}\n\n/**\n * @deprecated this constant will be internalized (removed)\n * on next major version update\n */\nexport const chains: chainsType = _getInitializedChains()\n","import { eipsType } from './../types'\n\nexport const EIPs: eipsType = {\n 1153: require('./1153.json'),\n 1559: require('./1559.json'),\n 2315: require('./2315.json'),\n 2537: require('./2537.json'),\n 2565: require('./2565.json'),\n 2718: require('./2718.json'),\n 2929: require('./2929.json'),\n 2930: require('./2930.json'),\n 3198: require('./3198.json'),\n 3529: require('./3529.json'),\n 3540: require('./3540.json'),\n 3541: require('./3541.json'),\n 3554: require('./3554.json'),\n 3607: require('./3607.json'),\n 3651: require('./3651.json'),\n 3670: require('./3670.json'),\n 3675: require('./3675.json'),\n 3855: require('./3855.json'),\n 3860: require('./3860.json'),\n 4345: require('./4345.json'),\n 4399: require('./4399.json'),\n}\n","export const hardforks = [\n ['chainstart', require('./chainstart.json')],\n ['homestead', require('./homestead.json')],\n ['dao', require('./dao.json')],\n ['tangerineWhistle', require('./tangerineWhistle.json')],\n ['spuriousDragon', require('./spuriousDragon.json')],\n ['byzantium', require('./byzantium.json')],\n ['constantinople', require('./constantinople.json')],\n ['petersburg', require('./petersburg.json')],\n ['istanbul', require('./istanbul.json')],\n ['muirGlacier', require('./muirGlacier.json')],\n ['berlin', require('./berlin.json')],\n ['london', require('./london.json')],\n ['shanghai', require('./shanghai.json')],\n ['arrowGlacier', require('./arrowGlacier.json')],\n ['mergeForkIdTransition', require('./mergeForkIdTransition.json')],\n ['merge', require('./merge.json')],\n]\n","import { EventEmitter } from 'events'\nimport { buf as crc32Buffer } from 'crc-32'\nimport { BN, BNLike, toType, TypeOutput, intToBuffer } from 'ethereumjs-util'\nimport { _getInitializedChains } from './chains'\nimport { hardforks as HARDFORK_CHANGES } from './hardforks'\nimport { EIPs } from './eips'\nimport {\n BootstrapNode,\n Chain as IChain,\n GenesisBlock,\n GenesisState,\n Hardfork as HardforkParams,\n} from './types'\n\nexport enum CustomChain {\n /**\n * Polygon (Matic) Mainnet\n *\n * - [Documentation](https://docs.matic.network/docs/develop/network-details/network)\n */\n PolygonMainnet = 'polygon-mainnet',\n\n /**\n * Polygon (Matic) Mumbai Testnet\n *\n * - [Documentation](https://docs.matic.network/docs/develop/network-details/network)\n */\n PolygonMumbai = 'polygon-mumbai',\n\n /**\n * Arbitrum Rinkeby Testnet\n *\n * - [Documentation](https://developer.offchainlabs.com/docs/public_testnet)\n */\n ArbitrumRinkebyTestnet = 'arbitrum-rinkeby-testnet',\n\n /**\n * xDai EVM sidechain with a native stable token\n *\n * - [Documentation](https://www.xdaichain.com/)\n */\n xDaiChain = 'x-dai-chain',\n\n /**\n * Optimistic Kovan - testnet for Optimism roll-up\n *\n * - [Documentation](https://community.optimism.io/docs/developers/tutorials.html)\n */\n OptimisticKovan = 'optimistic-kovan',\n\n /**\n * Optimistic Ethereum - mainnet for Optimism roll-up\n *\n * - [Documentation](https://community.optimism.io/docs/developers/tutorials.html)\n */\n OptimisticEthereum = 'optimistic-ethereum',\n}\n\nexport enum Chain {\n Mainnet = 1,\n Ropsten = 3,\n Rinkeby = 4,\n Kovan = 42,\n Goerli = 5,\n Sepolia = 11155111,\n}\n\nexport enum Hardfork {\n Chainstart = 'chainstart',\n Homestead = 'homestead',\n Dao = 'dao',\n TangerineWhistle = 'tangerineWhistle',\n SpuriousDragon = 'spuriousDragon',\n Byzantium = 'byzantium',\n Constantinople = 'constantinople',\n Petersburg = 'petersburg',\n Istanbul = 'istanbul',\n MuirGlacier = 'muirGlacier',\n Berlin = 'berlin',\n London = 'london',\n ArrowGlacier = 'arrowGlacier',\n Shanghai = 'shanghai',\n MergeForkIdTransition = 'mergeForkIdTransition',\n Merge = 'merge',\n}\n\nexport enum ConsensusType {\n ProofOfStake = 'pos',\n ProofOfWork = 'pow',\n ProofOfAuthority = 'poa',\n}\n\nexport enum ConsensusAlgorithm {\n Ethash = 'ethash',\n Clique = 'clique',\n Casper = 'casper',\n}\n\ninterface BaseOpts {\n /**\n * String identifier ('byzantium') for hardfork or {@link Hardfork} enum.\n *\n * Default: Hardfork.Istanbul\n */\n hardfork?: string | Hardfork\n /**\n * Limit parameter returns to the given hardforks\n */\n supportedHardforks?: Array\n /**\n * Selected EIPs which can be activated, please use an array for instantiation\n * (e.g. `eips: [ 2537, ]`)\n *\n * Currently supported:\n *\n * - [EIP-2537](https://eips.ethereum.org/EIPS/eip-2537) - BLS12-381 precompiles\n */\n eips?: number[]\n}\n\n/**\n * Options for instantiating a {@link Common} instance.\n */\nexport interface CommonOpts extends BaseOpts {\n /**\n * Chain name ('mainnet'), id (1), or {@link Chain} enum,\n * either from a chain directly supported or a custom chain\n * passed in via {@link CommonOpts.customChains}.\n */\n chain: string | number | Chain | BN | object\n /**\n * Initialize (in addition to the supported chains) with the selected\n * custom chains\n *\n * Usage (directly with the respective chain intialization via the {@link CommonOpts.chain} option):\n *\n * Pattern 1 (without genesis state):\n *\n * ```javascript\n * import myCustomChain1 from '[PATH_TO_MY_CHAINS]/myCustomChain1.json'\n * const common = new Common({ chain: 'myCustomChain1', customChains: [ myCustomChain1 ]})\n * ```\n *\n * Pattern 2 (with genesis state see {@link GenesisState} for format):\n *\n * ```javascript\n * const simpleState = {\n * '0x0...01': '0x100', // For EoA\n * }\n * import myCustomChain1 from '[PATH_TO_MY_CHAINS]/myCustomChain1.json'\n * import chain1GenesisState from '[PATH_TO_GENESIS_STATES]/chain1GenesisState.json'\n * const common = new Common({ chain: 'myCustomChain1', customChains: [ [ myCustomChain1, simpleState ] ]})\n * ```\n *\n * Pattern 3 (with complex genesis state, containing contract accounts and storage).\n * Note that in {@link AccountState} there are two\n * accepted types. This allows to easily insert accounts in the genesis state:\n *\n * A complex genesis state with Contract and EoA states would have the following format:\n *\n * ```javascript\n * const complexState = {\n * '0x0...01': '0x100', // For EoA\n * '0x0...02': ['0x1', '0xRUNTIME_BYTECODE', [[ keyOne, valueOne ], [ keyTwo, valueTwo ]]] // For contracts\n * }\n * import myCustomChain1 from '[PATH_TO_MY_CHAINS]/myCustomChain1.json'\n * const common = new Common({ chain: 'myCustomChain1', customChains: [ [ myCustomChain1, complexState ] ]})\n * ```\n */\n customChains?: IChain[] | [IChain, GenesisState][]\n}\n\n/**\n * Options to be used with the {@link Common.custom} static constructor.\n */\nexport interface CustomCommonOpts extends BaseOpts {\n /**\n * The name (`mainnet`), id (`1`), or {@link Chain} enum of\n * a standard chain used to base the custom chain params on.\n */\n baseChain?: string | number | Chain | BN\n}\n\ninterface hardforkOptions {\n /** optional, only allow supported HFs (default: false) */\n onlySupported?: boolean\n /** optional, only active HFs (default: false) */\n onlyActive?: boolean\n}\n\n/**\n * Common class to access chain and hardfork parameters and to provide\n * a unified and shared view on the network and hardfork state.\n *\n * Use the {@link Common.custom} static constructor for creating simple\n * custom chain {@link Common} objects (more complete custom chain setups\n * can be created via the main constructor and the {@link CommonOpts.customChains} parameter).\n */\nexport default class Common extends EventEmitter {\n readonly DEFAULT_HARDFORK: string | Hardfork\n\n private _chainParams: IChain\n private _hardfork: string | Hardfork\n private _supportedHardforks: Array = []\n private _eips: number[] = []\n private _customChains: IChain[] | [IChain, GenesisState][]\n\n /**\n * Creates a {@link Common} object for a custom chain, based on a standard one.\n *\n * It uses all the {@link Chain} parameters from the {@link baseChain} option except the ones overridden\n * in a provided {@link chainParamsOrName} dictionary. Some usage example:\n *\n * ```javascript\n * Common.custom({chainId: 123})\n * ```\n *\n * There are also selected supported custom chains which can be initialized by using one of the\n * {@link CustomChains} for {@link chainParamsOrName}, e.g.:\n *\n * ```javascript\n * Common.custom(CustomChains.MaticMumbai)\n * ```\n *\n * Note that these supported custom chains only provide some base parameters (usually the chain and\n * network ID and a name) and can only be used for selected use cases (e.g. sending a tx with\n * the `@ethereumjs/tx` library to a Layer-2 chain).\n *\n * @param chainParamsOrName Custom parameter dict (`name` will default to `custom-chain`) or string with name of a supported custom chain\n * @param opts Custom chain options to set the {@link CustomCommonOpts.baseChain}, selected {@link CustomCommonOpts.hardfork} and others\n */\n static custom(\n chainParamsOrName: Partial | CustomChain,\n opts: CustomCommonOpts = {}\n ): Common {\n const baseChain = opts.baseChain ?? 'mainnet'\n const standardChainParams = { ...Common._getChainParams(baseChain) }\n standardChainParams['name'] = 'custom-chain'\n\n if (typeof chainParamsOrName !== 'string') {\n return new Common({\n chain: {\n ...standardChainParams,\n ...chainParamsOrName,\n },\n ...opts,\n })\n } else {\n if (chainParamsOrName === CustomChain.PolygonMainnet) {\n return Common.custom(\n {\n name: CustomChain.PolygonMainnet,\n chainId: 137,\n networkId: 137,\n },\n opts\n )\n }\n if (chainParamsOrName === CustomChain.PolygonMumbai) {\n return Common.custom(\n {\n name: CustomChain.PolygonMumbai,\n chainId: 80001,\n networkId: 80001,\n },\n opts\n )\n }\n if (chainParamsOrName === CustomChain.ArbitrumRinkebyTestnet) {\n return Common.custom(\n {\n name: CustomChain.ArbitrumRinkebyTestnet,\n chainId: 421611,\n networkId: 421611,\n },\n opts\n )\n }\n if (chainParamsOrName === CustomChain.xDaiChain) {\n return Common.custom(\n {\n name: CustomChain.xDaiChain,\n chainId: 100,\n networkId: 100,\n },\n opts\n )\n }\n\n if (chainParamsOrName === CustomChain.OptimisticKovan) {\n return Common.custom(\n {\n name: CustomChain.OptimisticKovan,\n chainId: 69,\n networkId: 69,\n },\n // Optimism has not implemented the London hardfork yet (targeting Q1.22)\n { hardfork: Hardfork.Berlin, ...opts }\n )\n }\n\n if (chainParamsOrName === CustomChain.OptimisticEthereum) {\n return Common.custom(\n {\n name: CustomChain.OptimisticEthereum,\n chainId: 10,\n networkId: 10,\n },\n // Optimism has not implemented the London hardfork yet (targeting Q1.22)\n { hardfork: Hardfork.Berlin, ...opts }\n )\n }\n throw new Error(`Custom chain ${chainParamsOrName} not supported`)\n }\n }\n\n /**\n * Creates a {@link Common} object for a custom chain, based on a standard one. It uses all the `Chain`\n * params from {@link baseChain} except the ones overridden in {@link customChainParams}.\n *\n * @deprecated Use {@link Common.custom} instead\n *\n * @param baseChain The name (`mainnet`) or id (`1`) of a standard chain used to base the custom\n * chain params on.\n * @param customChainParams The custom parameters of the chain.\n * @param hardfork String identifier ('byzantium') for hardfork (optional)\n * @param supportedHardforks Limit parameter returns to the given hardforks (optional)\n */\n static forCustomChain(\n baseChain: string | number | Chain,\n customChainParams: Partial,\n hardfork?: string | Hardfork,\n supportedHardforks?: Array\n ): Common {\n const standardChainParams = Common._getChainParams(baseChain)\n\n return new Common({\n chain: {\n ...standardChainParams,\n ...customChainParams,\n },\n hardfork: hardfork,\n supportedHardforks: supportedHardforks,\n })\n }\n\n /**\n * Static method to determine if a {@link chainId} is supported as a standard chain\n * @param chainId BN id (`1`) of a standard chain\n * @returns boolean\n */\n static isSupportedChainId(chainId: BN): boolean {\n const initializedChains: any = _getInitializedChains()\n return Boolean(initializedChains['names'][chainId.toString()])\n }\n\n private static _getChainParams(\n chain: string | number | Chain | BN,\n customChains?: IChain[]\n ): IChain {\n const initializedChains: any = _getInitializedChains(customChains)\n if (typeof chain === 'number' || BN.isBN(chain)) {\n chain = chain.toString()\n\n if (initializedChains['names'][chain]) {\n const name: string = initializedChains['names'][chain]\n return initializedChains[name]\n }\n\n throw new Error(`Chain with ID ${chain} not supported`)\n }\n\n if (initializedChains[chain]) {\n return initializedChains[chain]\n }\n\n throw new Error(`Chain with name ${chain} not supported`)\n }\n\n /**\n *\n * @constructor\n */\n constructor(opts: CommonOpts) {\n super()\n this._customChains = opts.customChains ?? []\n this._chainParams = this.setChain(opts.chain)\n this.DEFAULT_HARDFORK = this._chainParams.defaultHardfork ?? Hardfork.Istanbul\n for (const hf of this._chainParams.hardforks) {\n if (!hf.forkHash) {\n hf.forkHash = this._calcForkHash(hf.name)\n }\n }\n this._hardfork = this.DEFAULT_HARDFORK\n if (opts.supportedHardforks) {\n this._supportedHardforks = opts.supportedHardforks\n }\n if (opts.hardfork) {\n this.setHardfork(opts.hardfork)\n }\n if (opts.eips) {\n this.setEIPs(opts.eips)\n }\n }\n\n /**\n * Sets the chain\n * @param chain String ('mainnet') or Number (1) chain\n * representation. Or, a Dictionary of chain parameters for a private network.\n * @returns The dictionary with parameters set as chain\n */\n setChain(chain: string | number | Chain | BN | object): any {\n if (typeof chain === 'number' || typeof chain === 'string' || BN.isBN(chain)) {\n // Filter out genesis states if passed in to customChains\n let plainCustomChains: IChain[]\n if (\n this._customChains &&\n this._customChains.length > 0 &&\n Array.isArray(this._customChains[0])\n ) {\n plainCustomChains = (this._customChains as [IChain, GenesisState][]).map((e) => e[0])\n } else {\n plainCustomChains = this._customChains as IChain[]\n }\n this._chainParams = Common._getChainParams(chain, plainCustomChains)\n } else if (typeof chain === 'object') {\n if (this._customChains.length > 0) {\n throw new Error(\n 'Chain must be a string, number, or BN when initialized with customChains passed in'\n )\n }\n const required = ['networkId', 'genesis', 'hardforks', 'bootstrapNodes']\n for (const param of required) {\n if ((chain)[param] === undefined) {\n throw new Error(`Missing required chain parameter: ${param}`)\n }\n }\n this._chainParams = chain as IChain\n } else {\n throw new Error('Wrong input format')\n }\n return this._chainParams\n }\n\n /**\n * Sets the hardfork to get params for\n * @param hardfork String identifier (e.g. 'byzantium') or {@link Hardfork} enum\n */\n setHardfork(hardfork: string | Hardfork): void {\n if (!this._isSupportedHardfork(hardfork)) {\n throw new Error(`Hardfork ${hardfork} not set as supported in supportedHardforks`)\n }\n let existing = false\n for (const hfChanges of HARDFORK_CHANGES) {\n if (hfChanges[0] === hardfork) {\n if (this._hardfork !== hardfork) {\n this._hardfork = hardfork\n this.emit('hardforkChanged', hardfork)\n }\n existing = true\n }\n }\n if (!existing) {\n throw new Error(`Hardfork with name ${hardfork} not supported`)\n }\n }\n\n /**\n * Returns the hardfork based on the block number or an optional\n * total difficulty (Merge HF) provided.\n *\n * An optional TD takes precedence in case the corresponding HF block\n * is set to `null` or otherwise needs to match (if not an error\n * will be thrown).\n *\n * @param blockNumber\n * @param td\n * @returns The name of the HF\n */\n getHardforkByBlockNumber(blockNumber: BNLike, td?: BNLike): string {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n td = toType(td, TypeOutput.BN)\n\n let hardfork = Hardfork.Chainstart\n let minTdHF\n let maxTdHF\n let previousHF\n for (const hf of this.hardforks()) {\n // Skip comparison for not applied HFs\n if (hf.block === null) {\n if (td !== undefined && td !== null && hf.td !== undefined && hf.td !== null) {\n if (td.gte(new BN(hf.td))) {\n return hf.name\n }\n }\n continue\n }\n if (blockNumber.gte(new BN(hf.block))) {\n hardfork = hf.name as Hardfork\n }\n if (td && hf.td) {\n if (td.gte(new BN(hf.td))) {\n minTdHF = hf.name\n } else {\n maxTdHF = previousHF\n }\n }\n previousHF = hf.name\n }\n if (td) {\n let msgAdd = `block number: ${blockNumber} (-> ${hardfork}), `\n if (minTdHF) {\n if (!this.hardforkGteHardfork(hardfork, minTdHF)) {\n const msg = 'HF determined by block number is lower than the minimum total difficulty HF'\n msgAdd += `total difficulty: ${td} (-> ${minTdHF})`\n throw new Error(`${msg}: ${msgAdd}`)\n }\n }\n if (maxTdHF) {\n if (!this.hardforkGteHardfork(maxTdHF, hardfork)) {\n const msg = 'Maximum HF determined by total difficulty is lower than the block number HF'\n msgAdd += `total difficulty: ${td} (-> ${maxTdHF})`\n throw new Error(`${msg}: ${msgAdd}`)\n }\n }\n }\n return hardfork\n }\n\n /**\n * Sets a new hardfork based on the block number or an optional\n * total difficulty (Merge HF) provided.\n *\n * An optional TD takes precedence in case the corresponding HF block\n * is set to `null` or otherwise needs to match (if not an error\n * will be thrown).\n *\n * @param blockNumber\n * @param td\n * @returns The name of the HF set\n */\n setHardforkByBlockNumber(blockNumber: BNLike, td?: BNLike): string {\n const hardfork = this.getHardforkByBlockNumber(blockNumber, td)\n this.setHardfork(hardfork)\n return hardfork\n }\n\n /**\n * Internal helper function to choose between hardfork set and hardfork provided as param\n * @param hardfork Hardfork given to function as a parameter\n * @returns Hardfork chosen to be used\n */\n _chooseHardfork(hardfork?: string | Hardfork | null, onlySupported: boolean = true): string {\n if (!hardfork) {\n hardfork = this._hardfork\n } else if (onlySupported && !this._isSupportedHardfork(hardfork)) {\n throw new Error(`Hardfork ${hardfork} not set as supported in supportedHardforks`)\n }\n return hardfork\n }\n\n /**\n * Internal helper function, returns the params for the given hardfork for the chain set\n * @param hardfork Hardfork name\n * @returns Dictionary with hardfork params\n */\n _getHardfork(hardfork: string | Hardfork): any {\n const hfs = this.hardforks()\n for (const hf of hfs) {\n if (hf['name'] === hardfork) return hf\n }\n throw new Error(`Hardfork ${hardfork} not defined for chain ${this.chainName()}`)\n }\n\n /**\n * Internal helper function to check if a hardfork is set to be supported by the library\n * @param hardfork Hardfork name\n * @returns True if hardfork is supported\n */\n _isSupportedHardfork(hardfork: string | Hardfork | null): boolean {\n if (this._supportedHardforks.length > 0) {\n for (const supportedHf of this._supportedHardforks) {\n if (hardfork === supportedHf) return true\n }\n } else {\n return true\n }\n return false\n }\n\n /**\n * Sets the active EIPs\n * @param eips\n */\n setEIPs(eips: number[] = []) {\n for (const eip of eips) {\n if (!(eip in EIPs)) {\n throw new Error(`${eip} not supported`)\n }\n const minHF = this.gteHardfork(EIPs[eip]['minimumHardfork'])\n if (!minHF) {\n throw new Error(\n `${eip} cannot be activated on hardfork ${this.hardfork()}, minimumHardfork: ${minHF}`\n )\n }\n if (EIPs[eip].requiredEIPs) {\n ;(EIPs[eip].requiredEIPs as number[]).forEach((elem) => {\n if (!(eips.includes(elem) || this.isActivatedEIP(elem))) {\n throw new Error(`${eip} requires EIP ${elem}, but is not included in the EIP list`)\n }\n })\n }\n }\n this._eips = eips\n }\n\n /**\n * Returns a parameter for the current chain setup\n *\n * If the parameter is present in an EIP, the EIP always takes precendence.\n * Otherwise the parameter if taken from the latest applied HF with\n * a change on the respective parameter.\n *\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @returns The value requested or `null` if not found\n */\n param(topic: string, name: string): any {\n // TODO: consider the case that different active EIPs\n // can change the same parameter\n let value = null\n for (const eip of this._eips) {\n value = this.paramByEIP(topic, name, eip)\n if (value !== null) {\n return value\n }\n }\n return this.paramByHardfork(topic, name, this._hardfork)\n }\n\n /**\n * Returns the parameter corresponding to a hardfork\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param hardfork Hardfork name\n * @returns The value requested or `null` if not found\n */\n paramByHardfork(topic: string, name: string, hardfork: string | Hardfork): any {\n hardfork = this._chooseHardfork(hardfork)\n\n let value = null\n for (const hfChanges of HARDFORK_CHANGES) {\n // EIP-referencing HF file (e.g. berlin.json)\n if ('eips' in hfChanges[1]) {\n const hfEIPs = hfChanges[1]['eips']\n for (const eip of hfEIPs) {\n const valueEIP = this.paramByEIP(topic, name, eip)\n value = valueEIP !== null ? valueEIP : value\n }\n // Paramater-inlining HF file (e.g. istanbul.json)\n } else {\n if (!hfChanges[1][topic]) {\n throw new Error(`Topic ${topic} not defined`)\n }\n if (hfChanges[1][topic][name] !== undefined) {\n value = hfChanges[1][topic][name].v\n }\n }\n if (hfChanges[0] === hardfork) break\n }\n return value\n }\n\n /**\n * Returns a parameter corresponding to an EIP\n * @param topic Parameter topic ('gasConfig', 'gasPrices', 'vm', 'pow')\n * @param name Parameter name (e.g. 'minGasLimit' for 'gasConfig' topic)\n * @param eip Number of the EIP\n * @returns The value requested or `null` if not found\n */\n paramByEIP(topic: string, name: string, eip: number): any {\n if (!(eip in EIPs)) {\n throw new Error(`${eip} not supported`)\n }\n\n const eipParams = EIPs[eip]\n if (!(topic in eipParams)) {\n throw new Error(`Topic ${topic} not defined`)\n }\n if (eipParams[topic][name] === undefined) {\n return null\n }\n const value = eipParams[topic][name].v\n return value\n }\n\n /**\n * Returns a parameter for the hardfork active on block number\n * @param topic Parameter topic\n * @param name Parameter name\n * @param blockNumber Block number\n */\n paramByBlock(topic: string, name: string, blockNumber: BNLike): any {\n const activeHfs = this.activeHardforks(blockNumber)\n const hardfork = activeHfs[activeHfs.length - 1]['name']\n return this.paramByHardfork(topic, name, hardfork)\n }\n\n /**\n * Checks if an EIP is activated by either being included in the EIPs\n * manually passed in with the {@link CommonOpts.eips} or in a\n * hardfork currently being active\n *\n * Note: this method only works for EIPs being supported\n * by the {@link CommonOpts.eips} constructor option\n * @param eip\n */\n isActivatedEIP(eip: number): boolean {\n if (this.eips().includes(eip)) {\n return true\n }\n for (const hfChanges of HARDFORK_CHANGES) {\n const hf = hfChanges[1]\n if (this.gteHardfork(hf['name']) && 'eips' in hf) {\n if (hf['eips'].includes(eip)) {\n return true\n }\n }\n }\n return false\n }\n\n /**\n * Checks if set or provided hardfork is active on block number\n * @param hardfork Hardfork name or null (for HF set)\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n hardforkIsActiveOnBlock(\n hardfork: string | Hardfork | null,\n blockNumber: BNLike,\n opts: hardforkOptions = {}\n ): boolean {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n const onlySupported = opts.onlySupported ?? false\n hardfork = this._chooseHardfork(hardfork, onlySupported)\n const hfBlock = this.hardforkBlockBN(hardfork)\n if (hfBlock && blockNumber.gte(hfBlock)) {\n return true\n }\n return false\n }\n\n /**\n * Alias to hardforkIsActiveOnBlock when hardfork is set\n * @param blockNumber\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if HF is active on block number\n */\n activeOnBlock(blockNumber: BNLike, opts?: hardforkOptions): boolean {\n return this.hardforkIsActiveOnBlock(null, blockNumber, opts)\n }\n\n /**\n * Sequence based check if given or set HF1 is greater than or equal HF2\n * @param hardfork1 Hardfork name or null (if set)\n * @param hardfork2 Hardfork name\n * @param opts Hardfork options\n * @returns True if HF1 gte HF2\n */\n hardforkGteHardfork(\n hardfork1: string | Hardfork | null,\n hardfork2: string | Hardfork,\n opts: hardforkOptions = {}\n ): boolean {\n const onlyActive = opts.onlyActive === undefined ? false : opts.onlyActive\n hardfork1 = this._chooseHardfork(hardfork1, opts.onlySupported)\n\n let hardforks\n if (onlyActive) {\n hardforks = this.activeHardforks(null, opts)\n } else {\n hardforks = this.hardforks()\n }\n\n let posHf1 = -1,\n posHf2 = -1\n let index = 0\n for (const hf of hardforks) {\n if (hf['name'] === hardfork1) posHf1 = index\n if (hf['name'] === hardfork2) posHf2 = index\n index += 1\n }\n return posHf1 >= posHf2 && posHf2 !== -1\n }\n\n /**\n * Alias to hardforkGteHardfork when hardfork is set\n * @param hardfork Hardfork name\n * @param opts Hardfork options\n * @returns True if hardfork set is greater than hardfork provided\n */\n gteHardfork(hardfork: string | Hardfork, opts?: hardforkOptions): boolean {\n return this.hardforkGteHardfork(null, hardfork, opts)\n }\n\n /**\n * Checks if given or set hardfork is active on the chain\n * @param hardfork Hardfork name, optional if HF set\n * @param opts Hardfork options (onlyActive unused)\n * @returns True if hardfork is active on the chain\n */\n hardforkIsActiveOnChain(\n hardfork?: string | Hardfork | null,\n opts: hardforkOptions = {}\n ): boolean {\n const onlySupported = opts.onlySupported ?? false\n hardfork = this._chooseHardfork(hardfork, onlySupported)\n for (const hf of this.hardforks()) {\n if (hf['name'] === hardfork && hf['block'] !== null) return true\n }\n return false\n }\n\n /**\n * Returns the active hardfork switches for the current chain\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Array with hardfork arrays\n */\n activeHardforks(blockNumber?: BNLike | null, opts: hardforkOptions = {}): HardforkParams[] {\n const activeHardforks: HardforkParams[] = []\n const hfs = this.hardforks()\n for (const hf of hfs) {\n if (hf['block'] === null) continue\n if (blockNumber !== undefined && blockNumber !== null && blockNumber < hf['block']) break\n if (opts.onlySupported && !this._isSupportedHardfork(hf['name'])) continue\n\n activeHardforks.push(hf)\n }\n return activeHardforks\n }\n\n /**\n * Returns the latest active hardfork name for chain or block or throws if unavailable\n * @param blockNumber up to block if provided, otherwise for the whole chain\n * @param opts Hardfork options (onlyActive unused)\n * @return Hardfork name\n */\n activeHardfork(blockNumber?: BNLike | null, opts: hardforkOptions = {}): string {\n const activeHardforks = this.activeHardforks(blockNumber, opts)\n if (activeHardforks.length > 0) {\n return activeHardforks[activeHardforks.length - 1]['name']\n } else {\n throw new Error(`No (supported) active hardfork found`)\n }\n }\n\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if unscheduled\n * @deprecated Please use {@link Common.hardforkBlockBN} for large number support\n */\n hardforkBlock(hardfork?: string | Hardfork): number | null {\n const block = this.hardforkBlockBN(hardfork)\n return toType(block, TypeOutput.Number)\n }\n\n /**\n * Returns the hardfork change block for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if unscheduled\n */\n hardforkBlockBN(hardfork?: string | Hardfork): BN | null {\n hardfork = this._chooseHardfork(hardfork, false)\n const block = this._getHardfork(hardfork)['block']\n if (block === undefined || block === null) {\n return null\n }\n return new BN(block)\n }\n\n /**\n * Returns the hardfork change total difficulty (Merge HF) for hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Total difficulty or null if no set\n */\n hardforkTD(hardfork?: string | Hardfork): BN | null {\n hardfork = this._chooseHardfork(hardfork, false)\n const td = this._getHardfork(hardfork)['td']\n if (td === undefined || td === null) {\n return null\n }\n return new BN(td)\n }\n\n /**\n * True if block number provided is the hardfork (given or set) change block\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n isHardforkBlock(blockNumber: BNLike, hardfork?: string | Hardfork): boolean {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n hardfork = this._chooseHardfork(hardfork, false)\n const block = this.hardforkBlockBN(hardfork)\n return block ? block.eq(blockNumber) : false\n }\n\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n * @deprecated Please use {@link Common.nextHardforkBlockBN} for large number support\n */\n nextHardforkBlock(hardfork?: string | Hardfork): number | null {\n const block = this.nextHardforkBlockBN(hardfork)\n return toType(block, TypeOutput.Number)\n }\n\n /**\n * Returns the change block for the next hardfork after the hardfork provided or set\n * @param hardfork Hardfork name, optional if HF set\n * @returns Block number or null if not available\n */\n nextHardforkBlockBN(hardfork?: string | Hardfork): BN | null {\n hardfork = this._chooseHardfork(hardfork, false)\n const hfBlock = this.hardforkBlockBN(hardfork)\n if (hfBlock === null) {\n return null\n }\n // Next fork block number or null if none available\n // Logic: if accumulator is still null and on the first occurrence of\n // a block greater than the current hfBlock set the accumulator,\n // pass on the accumulator as the final result from this time on\n const nextHfBlock = this.hardforks().reduce((acc: BN | null, hf: HardforkParams) => {\n const block = new BN(hf.block!)\n return block.gt(hfBlock) && acc === null ? block : acc\n }, null)\n return nextHfBlock\n }\n\n /**\n * True if block number provided is the hardfork change block following the hardfork given or set\n * @param blockNumber Number of the block to check\n * @param hardfork Hardfork name, optional if HF set\n * @returns True if blockNumber is HF block\n */\n isNextHardforkBlock(blockNumber: BNLike, hardfork?: string | Hardfork): boolean {\n blockNumber = toType(blockNumber, TypeOutput.BN)\n hardfork = this._chooseHardfork(hardfork, false)\n const nextHardforkBlock = this.nextHardforkBlockBN(hardfork)\n\n return nextHardforkBlock === null ? false : nextHardforkBlock.eq(blockNumber)\n }\n\n /**\n * Internal helper function to calculate a fork hash\n * @param hardfork Hardfork name\n * @returns Fork hash as hex string\n */\n _calcForkHash(hardfork: string | Hardfork) {\n const genesis = Buffer.from(this.genesis().hash.substr(2), 'hex')\n\n let hfBuffer = Buffer.alloc(0)\n let prevBlock = 0\n for (const hf of this.hardforks()) {\n const block = hf.block\n\n // Skip for chainstart (0), not applied HFs (null) and\n // when already applied on same block number HFs\n if (block !== 0 && block !== null && block !== prevBlock) {\n const hfBlockBuffer = Buffer.from(block.toString(16).padStart(16, '0'), 'hex')\n hfBuffer = Buffer.concat([hfBuffer, hfBlockBuffer])\n }\n\n if (hf.name === hardfork) break\n if (block !== null) {\n prevBlock = block\n }\n }\n const inputBuffer = Buffer.concat([genesis, hfBuffer])\n\n // CRC32 delivers result as signed (negative) 32-bit integer,\n // convert to hex string\n const forkhash = intToBuffer(crc32Buffer(inputBuffer) >>> 0).toString('hex')\n return `0x${forkhash}`\n }\n\n /**\n * Returns an eth/64 compliant fork hash (EIP-2124)\n * @param hardfork Hardfork name, optional if HF set\n */\n forkHash(hardfork?: string | Hardfork) {\n hardfork = this._chooseHardfork(hardfork, false)\n const data = this._getHardfork(hardfork)\n if (data['block'] === null && data['td'] === undefined) {\n const msg = 'No fork hash calculation possible for future hardfork'\n throw new Error(msg)\n }\n if (data['forkHash'] !== undefined) {\n return data['forkHash']\n }\n return this._calcForkHash(hardfork)\n }\n\n /**\n *\n * @param forkHash Fork hash as a hex string\n * @returns Array with hardfork data (name, block, forkHash)\n */\n hardforkForForkHash(forkHash: string): any | null {\n const resArray = this.hardforks().filter((hf: any) => {\n return hf.forkHash === forkHash\n })\n return resArray.length >= 1 ? resArray[resArray.length - 1] : null\n }\n\n /**\n * Returns the Genesis parameters of the current chain\n * @returns Genesis dictionary\n */\n genesis(): GenesisBlock {\n return this._chainParams['genesis']\n }\n\n /**\n * Returns the Genesis state of the current chain,\n * all values are provided as hex-prefixed strings.\n */\n genesisState(): GenesisState {\n // Use require statements here in favor of import statements\n // to load json files on demand\n // (high memory usage by large mainnet.json genesis state file)\n switch (this.chainName()) {\n case 'mainnet':\n return require('./genesisStates/mainnet.json')\n case 'ropsten':\n return require('./genesisStates/ropsten.json')\n case 'rinkeby':\n return require('./genesisStates/rinkeby.json')\n case 'kovan':\n return require('./genesisStates/kovan.json')\n case 'goerli':\n return require('./genesisStates/goerli.json')\n case 'sepolia':\n return require('./genesisStates/sepolia.json')\n }\n\n // Custom chains with genesis state provided\n if (\n this._customChains &&\n this._customChains.length > 0 &&\n Array.isArray(this._customChains[0])\n ) {\n for (const chainArrayWithGenesis of this._customChains as [IChain, GenesisState][]) {\n if (chainArrayWithGenesis[0].name === this.chainName()) {\n return chainArrayWithGenesis[1]\n }\n }\n }\n\n return {}\n }\n\n /**\n * Returns the hardforks for current chain\n * @returns {Array} Array with arrays of hardforks\n */\n hardforks(): HardforkParams[] {\n return this._chainParams['hardforks']\n }\n\n /**\n * Returns bootstrap nodes for the current chain\n * @returns {Dictionary} Dict with bootstrap nodes\n */\n bootstrapNodes(): BootstrapNode[] {\n return this._chainParams['bootstrapNodes']\n }\n\n /**\n * Returns DNS networks for the current chain\n * @returns {String[]} Array of DNS ENR urls\n */\n dnsNetworks(): string[] {\n return this._chainParams['dnsNetworks']!\n }\n\n /**\n * Returns the hardfork set\n * @returns Hardfork name\n */\n hardfork(): string | Hardfork {\n return this._hardfork\n }\n\n /**\n * Returns the Id of current chain\n * @returns chain Id\n * @deprecated Please use {@link Common.chainIdBN} for large number support\n */\n chainId(): number {\n return toType(this.chainIdBN(), TypeOutput.Number)\n }\n\n /**\n * Returns the Id of current chain\n * @returns chain Id\n */\n chainIdBN(): BN {\n return new BN(this._chainParams['chainId'])\n }\n\n /**\n * Returns the name of current chain\n * @returns chain name (lower case)\n */\n chainName(): string {\n return this._chainParams['name']\n }\n\n /**\n * Returns the Id of current network\n * @returns network Id\n * @deprecated Please use {@link Common.networkIdBN} for large number support\n */\n networkId(): number {\n return toType(this.networkIdBN(), TypeOutput.Number)\n }\n\n /**\n * Returns the Id of current network\n * @returns network Id\n */\n networkIdBN(): BN {\n return new BN(this._chainParams['networkId'])\n }\n\n /**\n * Returns the active EIPs\n * @returns List of EIPs\n */\n eips(): number[] {\n return this._eips\n }\n\n /**\n * Returns the consensus type of the network\n * Possible values: \"pow\"|\"poa\"|\"pos\"\n *\n * Note: This value can update along a hardfork.\n */\n consensusType(): string | ConsensusType {\n const hardfork = this.hardfork()\n\n let value\n for (const hfChanges of HARDFORK_CHANGES) {\n if ('consensus' in hfChanges[1]) {\n value = hfChanges[1]['consensus']['type']\n }\n if (hfChanges[0] === hardfork) break\n }\n if (value) {\n return value\n }\n return this._chainParams['consensus']!['type']\n }\n\n /**\n * Returns the concrete consensus implementation\n * algorithm or protocol for the network\n * e.g. \"ethash\" for \"pow\" consensus type,\n * \"clique\" for \"poa\" consensus type or\n * \"casper\" for \"pos\" consensus type.\n *\n * Note: This value can update along a hardfork.\n */\n consensusAlgorithm(): string | ConsensusAlgorithm {\n const hardfork = this.hardfork()\n\n let value\n for (const hfChanges of HARDFORK_CHANGES) {\n if ('consensus' in hfChanges[1]) {\n value = hfChanges[1]['consensus']['algorithm']\n }\n if (hfChanges[0] === hardfork) break\n }\n if (value) {\n return value\n }\n return this._chainParams['consensus']!['algorithm'] as ConsensusAlgorithm\n }\n\n /**\n * Returns a dictionary with consensus configuration\n * parameters based on the consensus algorithm\n *\n * Expected returns (parameters must be present in\n * the respective chain json files):\n *\n * ethash: -\n * clique: period, epoch\n * aura: -\n * casper: -\n *\n * Note: This value can update along a hardfork.\n */\n consensusConfig(): { [key: string]: any } {\n const hardfork = this.hardfork()\n\n let value\n for (const hfChanges of HARDFORK_CHANGES) {\n if ('consensus' in hfChanges[1]) {\n // The config parameter is named after the respective consensus algorithm\n value = hfChanges[1]['consensus'][hfChanges[1]['consensus']['algorithm']]\n }\n if (hfChanges[0] === hardfork) break\n }\n if (value) {\n return value\n }\n const consensusAlgorithm = this.consensusAlgorithm()\n return this._chainParams['consensus']![consensusAlgorithm as ConsensusAlgorithm]\n }\n\n /**\n * Returns a deep copy of this {@link Common} instance.\n */\n copy(): Common {\n const copy = Object.assign(Object.create(Object.getPrototypeOf(this)), this)\n copy.removeAllListeners()\n return copy\n }\n}\n","import Common, { Chain, Hardfork } from '@ethereumjs/common'\nimport {\n Address,\n BN,\n toBuffer,\n MAX_INTEGER,\n MAX_UINT64,\n unpadBuffer,\n ecsign,\n publicToAddress,\n BNLike,\n bufferToHex,\n} from 'ethereumjs-util'\nimport {\n TxData,\n JsonTx,\n AccessListEIP2930ValuesArray,\n AccessListEIP2930TxData,\n FeeMarketEIP1559ValuesArray,\n FeeMarketEIP1559TxData,\n TxValuesArray,\n Capability,\n} from './types'\n\ninterface TransactionCache {\n hash: Buffer | undefined\n dataFee?: {\n value: BN\n hardfork: string | Hardfork\n }\n}\n\n/**\n * This base class will likely be subject to further\n * refactoring along the introduction of additional tx types\n * on the Ethereum network.\n *\n * It is therefore not recommended to use directly.\n */\nexport abstract class BaseTransaction {\n private readonly _type: number\n\n public readonly nonce: BN\n public readonly gasLimit: BN\n public readonly to?: Address\n public readonly value: BN\n public readonly data: Buffer\n\n public readonly v?: BN\n public readonly r?: BN\n public readonly s?: BN\n\n public readonly common!: Common\n\n protected cache: TransactionCache = {\n hash: undefined,\n dataFee: undefined,\n }\n\n /**\n * List of tx type defining EIPs,\n * e.g. 1559 (fee market) and 2930 (access lists)\n * for FeeMarketEIP1559Transaction objects\n */\n protected activeCapabilities: number[] = []\n\n /**\n * The default chain the tx falls back to if no Common\n * is provided and if the chain can't be derived from\n * a passed in chainId (only EIP-2718 typed txs) or\n * EIP-155 signature (legacy txs).\n *\n * @hidden\n */\n protected DEFAULT_CHAIN = Chain.Mainnet\n\n /**\n * The default HF if the tx type is active on that HF\n * or the first greater HF where the tx is active.\n *\n * @hidden\n */\n protected DEFAULT_HARDFORK: string | Hardfork = Hardfork.Istanbul\n\n constructor(txData: TxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData) {\n const { nonce, gasLimit, to, value, data, v, r, s, type } = txData\n this._type = new BN(toBuffer(type)).toNumber()\n\n const toB = toBuffer(to === '' ? '0x' : to)\n const vB = toBuffer(v === '' ? '0x' : v)\n const rB = toBuffer(r === '' ? '0x' : r)\n const sB = toBuffer(s === '' ? '0x' : s)\n\n this.nonce = new BN(toBuffer(nonce === '' ? '0x' : nonce))\n this.gasLimit = new BN(toBuffer(gasLimit === '' ? '0x' : gasLimit))\n this.to = toB.length > 0 ? new Address(toB) : undefined\n this.value = new BN(toBuffer(value === '' ? '0x' : value))\n this.data = toBuffer(data === '' ? '0x' : data)\n\n this.v = vB.length > 0 ? new BN(vB) : undefined\n this.r = rB.length > 0 ? new BN(rB) : undefined\n this.s = sB.length > 0 ? new BN(sB) : undefined\n\n this._validateCannotExceedMaxInteger({ value: this.value, r: this.r, s: this.s })\n\n // geth limits gasLimit to 2^64-1\n this._validateCannotExceedMaxInteger({ gasLimit: this.gasLimit }, 64)\n\n // EIP-2681 limits nonce to 2^64-1 (cannot equal 2^64-1)\n this._validateCannotExceedMaxInteger({ nonce: this.nonce }, 64, true)\n }\n\n /**\n * Alias for {@link BaseTransaction.type}\n *\n * @deprecated Use `type` instead\n */\n get transactionType(): number {\n return this.type\n }\n\n /**\n * Returns the transaction type.\n *\n * Note: legacy txs will return tx type `0`.\n */\n get type() {\n return this._type\n }\n\n /**\n * Checks if a tx type defining capability is active\n * on a tx, for example the EIP-1559 fee market mechanism\n * or the EIP-2930 access list feature.\n *\n * Note that this is different from the tx type itself,\n * so EIP-2930 access lists can very well be active\n * on an EIP-1559 tx for example.\n *\n * This method can be useful for feature checks if the\n * tx type is unknown (e.g. when instantiated with\n * the tx factory).\n *\n * See `Capabilites` in the `types` module for a reference\n * on all supported capabilities.\n */\n supports(capability: Capability) {\n return this.activeCapabilities.includes(capability)\n }\n\n /**\n * Checks if the transaction has the minimum amount of gas required\n * (DataFee + TxFee + Creation Fee).\n */\n validate(): boolean\n validate(stringError: false): boolean\n validate(stringError: true): string[]\n validate(stringError: boolean = false): boolean | string[] {\n const errors = []\n\n if (this.getBaseFee().gt(this.gasLimit)) {\n errors.push(`gasLimit is too low. given ${this.gasLimit}, need at least ${this.getBaseFee()}`)\n }\n\n if (this.isSigned() && !this.verifySignature()) {\n errors.push('Invalid Signature')\n }\n\n return stringError ? errors : errors.length === 0\n }\n\n /**\n * The minimum amount of gas the tx must have (DataFee + TxFee + Creation Fee)\n */\n getBaseFee(): BN {\n const fee = this.getDataFee().addn(this.common.param('gasPrices', 'tx'))\n if (this.common.gteHardfork('homestead') && this.toCreationAddress()) {\n fee.iaddn(this.common.param('gasPrices', 'txCreation'))\n }\n return fee\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n const txDataZero = this.common.param('gasPrices', 'txDataZero')\n const txDataNonZero = this.common.param('gasPrices', 'txDataNonZero')\n\n let cost: number | BN = 0\n for (let i = 0; i < this.data.length; i++) {\n this.data[i] === 0 ? (cost += txDataZero) : (cost += txDataNonZero)\n }\n\n cost = new BN(cost)\n if ((this.to === undefined || this.to === null) && this.common.isActivatedEIP(3860)) {\n const dataLength = Math.ceil(this.data.length / 32)\n const initCodeCost = new BN(this.common.param('gasPrices', 'initCodeWordCost')).imuln(\n dataLength\n )\n cost.iadd(initCodeCost)\n }\n\n return cost\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n abstract getUpfrontCost(): BN\n\n /**\n * If the tx's `to` is to the creation address\n */\n toCreationAddress(): boolean {\n return this.to === undefined || this.to.buf.length === 0\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of this transaction, in order.\n *\n * Use {@link BaseTransaction.serialize} to add a transaction to a block\n * with {@link Block.fromValuesArray}.\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link BaseTransaction.getMessageToSign}.\n */\n abstract raw(): TxValuesArray | AccessListEIP2930ValuesArray | FeeMarketEIP1559ValuesArray\n\n /**\n * Returns the encoding of the transaction.\n */\n abstract serialize(): Buffer\n\n // Returns the unsigned tx (hashed or raw), which is used to sign the transaction.\n //\n // Note: do not use code docs here since VS Studio is then not able to detect the\n // comments from the inherited methods\n abstract getMessageToSign(hashMessage: false): Buffer | Buffer[]\n abstract getMessageToSign(hashMessage?: true): Buffer\n\n abstract hash(): Buffer\n\n abstract getMessageToVerifySignature(): Buffer\n\n public isSigned(): boolean {\n const { v, r, s } = this\n if (this.type === 0) {\n if (!v || !r || !s) {\n return false\n } else {\n return true\n }\n } else {\n if (v === undefined || !r || !s) {\n return false\n } else {\n return true\n }\n }\n }\n\n /**\n * Determines if the signature is valid\n */\n verifySignature(): boolean {\n try {\n // Main signature verification is done in `getSenderPublicKey()`\n const publicKey = this.getSenderPublicKey()\n return unpadBuffer(publicKey).length !== 0\n } catch (e: any) {\n return false\n }\n }\n\n /**\n * Returns the sender's address\n */\n getSenderAddress(): Address {\n return new Address(publicToAddress(this.getSenderPublicKey()))\n }\n\n /**\n * Returns the public key of the sender\n */\n abstract getSenderPublicKey(): Buffer\n\n /**\n * Signs a transaction.\n *\n * Note that the signed tx is returned as a new object,\n * use as follows:\n * ```javascript\n * const signedTx = tx.sign(privateKey)\n * ```\n */\n sign(privateKey: Buffer): TransactionObject {\n if (privateKey.length !== 32) {\n const msg = this._errorMsg('Private key must be 32 bytes in length.')\n throw new Error(msg)\n }\n\n // Hack for the constellation that we have got a legacy tx after spuriousDragon with a non-EIP155 conforming signature\n // and want to recreate a signature (where EIP155 should be applied)\n // Leaving this hack lets the legacy.spec.ts -> sign(), verifySignature() test fail\n // 2021-06-23\n let hackApplied = false\n if (\n this.type === 0 &&\n this.common.gteHardfork('spuriousDragon') &&\n !this.supports(Capability.EIP155ReplayProtection)\n ) {\n this.activeCapabilities.push(Capability.EIP155ReplayProtection)\n hackApplied = true\n }\n\n const msgHash = this.getMessageToSign(true)\n const { v, r, s } = ecsign(msgHash, privateKey)\n const tx = this._processSignature(v, r, s)\n\n // Hack part 2\n if (hackApplied) {\n const index = this.activeCapabilities.indexOf(Capability.EIP155ReplayProtection)\n if (index > -1) {\n this.activeCapabilities.splice(index, 1)\n }\n }\n\n return tx\n }\n\n /**\n * Returns an object with the JSON representation of the transaction\n */\n abstract toJSON(): JsonTx\n\n // Accept the v,r,s values from the `sign` method, and convert this into a TransactionObject\n protected abstract _processSignature(v: number, r: Buffer, s: Buffer): TransactionObject\n\n /**\n * Does chain ID checks on common and returns a common\n * to be used on instantiation\n * @hidden\n *\n * @param common - {@link Common} instance from tx options\n * @param chainId - Chain ID from tx options (typed txs) or signature (legacy tx)\n */\n protected _getCommon(common?: Common, chainId?: BNLike) {\n // Chain ID provided\n if (chainId) {\n const chainIdBN = new BN(toBuffer(chainId))\n if (common) {\n if (!common.chainIdBN().eq(chainIdBN)) {\n const msg = this._errorMsg('The chain ID does not match the chain ID of Common')\n throw new Error(msg)\n }\n // Common provided, chain ID does match\n // -> Return provided Common\n return common.copy()\n } else {\n if (Common.isSupportedChainId(chainIdBN)) {\n // No Common, chain ID supported by Common\n // -> Instantiate Common with chain ID\n return new Common({ chain: chainIdBN, hardfork: this.DEFAULT_HARDFORK })\n } else {\n // No Common, chain ID not supported by Common\n // -> Instantiate custom Common derived from DEFAULT_CHAIN\n return Common.forCustomChain(\n this.DEFAULT_CHAIN,\n {\n name: 'custom-chain',\n networkId: chainIdBN,\n chainId: chainIdBN,\n },\n this.DEFAULT_HARDFORK\n )\n }\n }\n } else {\n // No chain ID provided\n // -> return Common provided or create new default Common\n return (\n common?.copy() ?? new Common({ chain: this.DEFAULT_CHAIN, hardfork: this.DEFAULT_HARDFORK })\n )\n }\n }\n\n /**\n * Validates that an object with BN values cannot exceed the specified bit limit.\n * @param values Object containing string keys and BN values\n * @param bits Number of bits to check (64 or 256)\n * @param cannotEqual Pass true if the number also cannot equal one less the maximum value\n */\n protected _validateCannotExceedMaxInteger(\n values: { [key: string]: BN | undefined },\n bits = 256,\n cannotEqual = false\n ) {\n for (const [key, value] of Object.entries(values)) {\n switch (bits) {\n case 64:\n if (cannotEqual) {\n if (value?.gte(MAX_UINT64)) {\n const msg = this._errorMsg(\n `${key} cannot equal or exceed MAX_UINT64 (2^64-1), given ${value}`\n )\n throw new Error(msg)\n }\n } else {\n if (value?.gt(MAX_UINT64)) {\n const msg = this._errorMsg(`${key} cannot exceed MAX_UINT64 (2^64-1), given ${value}`)\n throw new Error(msg)\n }\n }\n break\n case 256:\n if (cannotEqual) {\n if (value?.gte(MAX_INTEGER)) {\n const msg = this._errorMsg(\n `${key} cannot equal or exceed MAX_INTEGER (2^256-1), given ${value}`\n )\n throw new Error(msg)\n }\n } else {\n if (value?.gt(MAX_INTEGER)) {\n const msg = this._errorMsg(\n `${key} cannot exceed MAX_INTEGER (2^256-1), given ${value}`\n )\n throw new Error(msg)\n }\n }\n break\n default: {\n const msg = this._errorMsg('unimplemented bits value')\n throw new Error(msg)\n }\n }\n }\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public abstract errorStr(): string\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected abstract _errorMsg(msg: string): string\n\n /**\n * Returns the shared error postfix part for _error() method\n * tx type implementations.\n */\n protected _getSharedErrorPostfix() {\n let hash = ''\n try {\n hash = this.isSigned() ? bufferToHex(this.hash()) : 'not available (unsigned)'\n } catch (e: any) {\n hash = 'error'\n }\n let isSigned = ''\n try {\n isSigned = this.isSigned().toString()\n } catch (e: any) {\n hash = 'error'\n }\n let hf = ''\n try {\n hf = this.common.hardfork()\n } catch (e: any) {\n hf = 'error'\n }\n\n let postfix = `tx type=${this.type} hash=${hash} nonce=${this.nonce} value=${this.value} `\n postfix += `signed=${isSigned} hf=${hf}`\n\n return postfix\n }\n}\n","import {\n BN,\n bnToHex,\n bnToUnpaddedBuffer,\n ecrecover,\n keccak256,\n MAX_INTEGER,\n rlp,\n toBuffer,\n validateNoLeadingZeroes,\n} from 'ethereumjs-util'\nimport Common from '@ethereumjs/common'\nimport { BaseTransaction } from './baseTransaction'\nimport {\n AccessList,\n AccessListBuffer,\n FeeMarketEIP1559TxData,\n FeeMarketEIP1559ValuesArray,\n JsonTx,\n N_DIV_2,\n TxOptions,\n} from './types'\nimport { AccessLists, checkMaxInitCodeSize } from './util'\n\nconst TRANSACTION_TYPE = 2\nconst TRANSACTION_TYPE_BUFFER = Buffer.from(TRANSACTION_TYPE.toString(16).padStart(2, '0'), 'hex')\n\n/**\n * Typed transaction with a new gas fee market mechanism\n *\n * - TransactionType: 2\n * - EIP: [EIP-1559](https://eips.ethereum.org/EIPS/eip-1559)\n */\nexport default class FeeMarketEIP1559Transaction extends BaseTransaction {\n public readonly chainId: BN\n public readonly accessList: AccessListBuffer\n public readonly AccessListJSON: AccessList\n public readonly maxPriorityFeePerGas: BN\n public readonly maxFeePerGas: BN\n\n public readonly common: Common\n\n /**\n * The default HF if the tx type is active on that HF\n * or the first greater HF where the tx is active.\n *\n * @hidden\n */\n protected DEFAULT_HARDFORK = 'london'\n\n /**\n * EIP-2930 alias for `r`\n *\n * @deprecated use `r` instead\n */\n get senderR() {\n return this.r\n }\n\n /**\n * EIP-2930 alias for `s`\n *\n * @deprecated use `s` instead\n */\n get senderS() {\n return this.s\n }\n\n /**\n * EIP-2930 alias for `v`\n *\n * @deprecated use `v` instead\n */\n get yParity() {\n return this.v\n }\n\n /**\n * Instantiate a transaction from a data dictionary.\n *\n * Format: { chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, v, r, s }\n *\n * Notes:\n * - `chainId` will be set automatically if not provided\n * - All parameters are optional and have some basic default values\n */\n public static fromTxData(txData: FeeMarketEIP1559TxData, opts: TxOptions = {}) {\n return new FeeMarketEIP1559Transaction(txData, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Format: `0x02 || rlp([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS])`\n */\n public static fromSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n if (!serialized.slice(0, 1).equals(TRANSACTION_TYPE_BUFFER)) {\n throw new Error(\n `Invalid serialized tx input: not an EIP-1559 transaction (wrong tx type, expected: ${TRANSACTION_TYPE}, received: ${serialized\n .slice(0, 1)\n .toString('hex')}`\n )\n }\n\n const values = rlp.decode(serialized.slice(1))\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input: must be array')\n }\n\n return FeeMarketEIP1559Transaction.fromValuesArray(values as any, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of {@link FeeMarketEIP1559Transaction.fromSerializedTx})\n *\n * Note: This means that the Buffer should start with 0x01.\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the {@link FeeMarketEIP1559Transaction.fromSerializedTx} constructor\n */\n public static fromRlpSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n return FeeMarketEIP1559Transaction.fromSerializedTx(serialized, opts)\n }\n\n /**\n * Create a transaction from a values array.\n *\n * Format: `[chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS]`\n */\n public static fromValuesArray(values: FeeMarketEIP1559ValuesArray, opts: TxOptions = {}) {\n if (values.length !== 9 && values.length !== 12) {\n throw new Error(\n 'Invalid EIP-1559 transaction. Only expecting 9 values (for unsigned tx) or 12 values (for signed tx).'\n )\n }\n\n const [\n chainId,\n nonce,\n maxPriorityFeePerGas,\n maxFeePerGas,\n gasLimit,\n to,\n value,\n data,\n accessList,\n v,\n r,\n s,\n ] = values\n\n validateNoLeadingZeroes({ nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, value, v, r, s })\n\n return new FeeMarketEIP1559Transaction(\n {\n chainId: new BN(chainId),\n nonce,\n maxPriorityFeePerGas,\n maxFeePerGas,\n gasLimit,\n to,\n value,\n data,\n accessList: accessList ?? [],\n v: v !== undefined ? new BN(v) : undefined, // EIP2930 supports v's with value 0 (empty Buffer)\n r,\n s,\n },\n opts\n )\n }\n\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n public constructor(txData: FeeMarketEIP1559TxData, opts: TxOptions = {}) {\n super({ ...txData, type: TRANSACTION_TYPE })\n const { chainId, accessList, maxFeePerGas, maxPriorityFeePerGas } = txData\n\n this.common = this._getCommon(opts.common, chainId)\n this.chainId = this.common.chainIdBN()\n\n if (!this.common.isActivatedEIP(1559)) {\n throw new Error('EIP-1559 not enabled on Common')\n }\n this.activeCapabilities = this.activeCapabilities.concat([1559, 2718, 2930])\n\n // Populate the access list fields\n const accessListData = AccessLists.getAccessListData(accessList ?? [])\n this.accessList = accessListData.accessList\n this.AccessListJSON = accessListData.AccessListJSON\n // Verify the access list format.\n AccessLists.verifyAccessList(this.accessList)\n\n this.maxFeePerGas = new BN(toBuffer(maxFeePerGas === '' ? '0x' : maxFeePerGas))\n this.maxPriorityFeePerGas = new BN(\n toBuffer(maxPriorityFeePerGas === '' ? '0x' : maxPriorityFeePerGas)\n )\n\n this._validateCannotExceedMaxInteger({\n maxFeePerGas: this.maxFeePerGas,\n maxPriorityFeePerGas: this.maxPriorityFeePerGas,\n })\n\n if (this.gasLimit.mul(this.maxFeePerGas).gt(MAX_INTEGER)) {\n const msg = this._errorMsg('gasLimit * maxFeePerGas cannot exceed MAX_INTEGER (2^256-1)')\n throw new Error(msg)\n }\n\n if (this.maxFeePerGas.lt(this.maxPriorityFeePerGas)) {\n const msg = this._errorMsg(\n 'maxFeePerGas cannot be less than maxPriorityFeePerGas (The total must be the larger of the two)'\n )\n throw new Error(msg)\n }\n\n if (this.v && !this.v.eqn(0) && !this.v.eqn(1)) {\n const msg = this._errorMsg('The y-parity of the transaction should either be 0 or 1')\n throw new Error(msg)\n }\n\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n if (this.common.isActivatedEIP(3860)) {\n checkMaxInitCodeSize(this.common, this.data.length)\n }\n\n const freeze = opts?.freeze ?? true\n if (freeze) {\n Object.freeze(this)\n }\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {\n return this.cache.dataFee.value\n }\n\n const cost = super.getDataFee()\n cost.iaddn(AccessLists.getDataFeeEIP2930(this.accessList, this.common))\n\n if (Object.isFrozen(this)) {\n this.cache.dataFee = {\n value: cost,\n hardfork: this.common.hardfork(),\n }\n }\n\n return cost\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n * @param baseFee The base fee of the block (will be set to 0 if not provided)\n */\n getUpfrontCost(baseFee: BN = new BN(0)): BN {\n const inclusionFeePerGas = BN.min(this.maxPriorityFeePerGas, this.maxFeePerGas.sub(baseFee))\n const gasPrice = inclusionFeePerGas.add(baseFee)\n return this.gasLimit.mul(gasPrice).add(this.value)\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of the EIP-1559 transaction, in order.\n *\n * Format: `[chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS]`\n *\n * Use {@link FeeMarketEIP1559Transaction.serialize} to add a transaction to a block\n * with {@link Block.fromValuesArray}.\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link FeeMarketEIP1559Transaction.getMessageToSign}.\n */\n raw(): FeeMarketEIP1559ValuesArray {\n return [\n bnToUnpaddedBuffer(this.chainId),\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.maxPriorityFeePerGas),\n bnToUnpaddedBuffer(this.maxFeePerGas),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n this.accessList,\n this.v !== undefined ? bnToUnpaddedBuffer(this.v) : Buffer.from([]),\n this.r !== undefined ? bnToUnpaddedBuffer(this.r) : Buffer.from([]),\n this.s !== undefined ? bnToUnpaddedBuffer(this.s) : Buffer.from([]),\n ]\n }\n\n /**\n * Returns the serialized encoding of the EIP-1559 transaction.\n *\n * Format: `0x02 || rlp([chainId, nonce, maxPriorityFeePerGas, maxFeePerGas, gasLimit, to, value, data,\n * accessList, signatureYParity, signatureR, signatureS])`\n *\n * Note that in contrast to the legacy tx serialization format this is not\n * valid RLP any more due to the raw tx type preceding and concatenated to\n * the RLP encoding of the values.\n */\n serialize(): Buffer {\n const base = this.raw()\n return Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n }\n\n /**\n * Returns the serialized unsigned tx (hashed or raw), which can be used\n * to sign the transaction (e.g. for sending to a hardware wallet).\n *\n * Note: in contrast to the legacy tx the raw message format is already\n * serialized and doesn't need to be RLP encoded any more.\n *\n * ```javascript\n * const serializedMessage = tx.getMessageToSign(false) // use this for the HW wallet input\n * ```\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n getMessageToSign(hashMessage = true): Buffer {\n const base = this.raw().slice(0, 9)\n const message = Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n if (hashMessage) {\n return keccak256(message)\n } else {\n return message\n }\n }\n\n /**\n * Computes a sha3-256 hash of the serialized tx.\n *\n * This method can only be used for signed txs (it throws otherwise).\n * Use {@link FeeMarketEIP1559Transaction.getMessageToSign} to get a tx hash for the purpose of signing.\n */\n public hash(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call hash method if transaction is not signed')\n throw new Error(msg)\n }\n\n if (Object.isFrozen(this)) {\n if (!this.cache.hash) {\n this.cache.hash = keccak256(this.serialize())\n }\n return this.cache.hash\n }\n\n return keccak256(this.serialize())\n }\n\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n public getMessageToVerifySignature(): Buffer {\n return this.getMessageToSign()\n }\n\n /**\n * Returns the public key of the sender\n */\n public getSenderPublicKey(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call this method if transaction is not signed')\n throw new Error(msg)\n }\n\n const msgHash = this.getMessageToVerifySignature()\n\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n const { v, r, s } = this\n try {\n return ecrecover(\n msgHash,\n v!.addn(27), // Recover the 27 which was stripped from ecsign\n bnToUnpaddedBuffer(r!),\n bnToUnpaddedBuffer(s!)\n )\n } catch (e: any) {\n const msg = this._errorMsg('Invalid Signature')\n throw new Error(msg)\n }\n }\n\n _processSignature(v: number, r: Buffer, s: Buffer) {\n const opts = {\n common: this.common,\n }\n\n return FeeMarketEIP1559Transaction.fromTxData(\n {\n chainId: this.chainId,\n nonce: this.nonce,\n maxPriorityFeePerGas: this.maxPriorityFeePerGas,\n maxFeePerGas: this.maxFeePerGas,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n accessList: this.accessList,\n v: new BN(v - 27), // This looks extremely hacky: ethereumjs-util actually adds 27 to the value, the recovery bit is either 0 or 1.\n r: new BN(r),\n s: new BN(s),\n },\n opts\n )\n }\n\n /**\n * Returns an object with the JSON representation of the transaction\n */\n toJSON(): JsonTx {\n const accessListJSON = AccessLists.getAccessListJSON(this.accessList)\n\n return {\n chainId: bnToHex(this.chainId),\n nonce: bnToHex(this.nonce),\n maxPriorityFeePerGas: bnToHex(this.maxPriorityFeePerGas),\n maxFeePerGas: bnToHex(this.maxFeePerGas),\n gasLimit: bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n accessList: accessListJSON,\n v: this.v !== undefined ? bnToHex(this.v) : undefined,\n r: this.r !== undefined ? bnToHex(this.r) : undefined,\n s: this.s !== undefined ? bnToHex(this.s) : undefined,\n }\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public errorStr() {\n let errorStr = this._getSharedErrorPostfix()\n errorStr += ` maxFeePerGas=${this.maxFeePerGas} maxPriorityFeePerGas=${this.maxPriorityFeePerGas}`\n return errorStr\n }\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected _errorMsg(msg: string) {\n return `${msg} (${this.errorStr()})`\n }\n}\n","import {\n BN,\n bnToHex,\n bnToUnpaddedBuffer,\n ecrecover,\n keccak256,\n MAX_INTEGER,\n rlp,\n toBuffer,\n validateNoLeadingZeroes,\n} from 'ethereumjs-util'\nimport Common from '@ethereumjs/common'\nimport { BaseTransaction } from './baseTransaction'\nimport {\n AccessList,\n AccessListBuffer,\n AccessListEIP2930TxData,\n AccessListEIP2930ValuesArray,\n JsonTx,\n TxOptions,\n N_DIV_2,\n} from './types'\n\nimport { AccessLists, checkMaxInitCodeSize } from './util'\n\nconst TRANSACTION_TYPE = 1\nconst TRANSACTION_TYPE_BUFFER = Buffer.from(TRANSACTION_TYPE.toString(16).padStart(2, '0'), 'hex')\n\n/**\n * Typed transaction with optional access lists\n *\n * - TransactionType: 1\n * - EIP: [EIP-2930](https://eips.ethereum.org/EIPS/eip-2930)\n */\nexport default class AccessListEIP2930Transaction extends BaseTransaction {\n public readonly chainId: BN\n public readonly accessList: AccessListBuffer\n public readonly AccessListJSON: AccessList\n public readonly gasPrice: BN\n\n public readonly common: Common\n\n /**\n * The default HF if the tx type is active on that HF\n * or the first greater HF where the tx is active.\n *\n * @hidden\n */\n protected DEFAULT_HARDFORK = 'berlin'\n\n /**\n * EIP-2930 alias for `r`\n *\n * @deprecated use `r` instead\n */\n get senderR() {\n return this.r\n }\n\n /**\n * EIP-2930 alias for `s`\n *\n * @deprecated use `s` instead\n */\n get senderS() {\n return this.s\n }\n\n /**\n * EIP-2930 alias for `v`\n *\n * @deprecated use `v` instead\n */\n get yParity() {\n return this.v\n }\n\n /**\n * Instantiate a transaction from a data dictionary.\n *\n * Format: { chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * v, r, s }\n *\n * Notes:\n * - `chainId` will be set automatically if not provided\n * - All parameters are optional and have some basic default values\n */\n public static fromTxData(txData: AccessListEIP2930TxData, opts: TxOptions = {}) {\n return new AccessListEIP2930Transaction(txData, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Format: `0x01 || rlp([chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)])`\n */\n public static fromSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n if (!serialized.slice(0, 1).equals(TRANSACTION_TYPE_BUFFER)) {\n throw new Error(\n `Invalid serialized tx input: not an EIP-2930 transaction (wrong tx type, expected: ${TRANSACTION_TYPE}, received: ${serialized\n .slice(0, 1)\n .toString('hex')}`\n )\n }\n\n const values = rlp.decode(serialized.slice(1))\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input: must be array')\n }\n\n return AccessListEIP2930Transaction.fromValuesArray(values as any, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of {@link AccessListEIP2930Transaction.fromSerializedTx})\n *\n * Note: This means that the Buffer should start with 0x01.\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the {@link AccessListEIP2930Transaction.fromSerializedTx} constructor\n */\n public static fromRlpSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n return AccessListEIP2930Transaction.fromSerializedTx(serialized, opts)\n }\n\n /**\n * Create a transaction from a values array.\n *\n * Format: `[chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)]`\n */\n public static fromValuesArray(values: AccessListEIP2930ValuesArray, opts: TxOptions = {}) {\n if (values.length !== 8 && values.length !== 11) {\n throw new Error(\n 'Invalid EIP-2930 transaction. Only expecting 8 values (for unsigned tx) or 11 values (for signed tx).'\n )\n }\n\n const [chainId, nonce, gasPrice, gasLimit, to, value, data, accessList, v, r, s] = values\n\n validateNoLeadingZeroes({ nonce, gasPrice, gasLimit, value, v, r, s })\n\n const emptyAccessList: AccessList = []\n\n return new AccessListEIP2930Transaction(\n {\n chainId: new BN(chainId),\n nonce,\n gasPrice,\n gasLimit,\n to,\n value,\n data,\n accessList: accessList ?? emptyAccessList,\n v: v !== undefined ? new BN(v) : undefined, // EIP2930 supports v's with value 0 (empty Buffer)\n r,\n s,\n },\n opts\n )\n }\n\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n public constructor(txData: AccessListEIP2930TxData, opts: TxOptions = {}) {\n super({ ...txData, type: TRANSACTION_TYPE })\n const { chainId, accessList, gasPrice } = txData\n\n this.common = this._getCommon(opts.common, chainId)\n this.chainId = this.common.chainIdBN()\n\n // EIP-2718 check is done in Common\n if (!this.common.isActivatedEIP(2930)) {\n throw new Error('EIP-2930 not enabled on Common')\n }\n this.activeCapabilities = this.activeCapabilities.concat([2718, 2930])\n\n // Populate the access list fields\n const accessListData = AccessLists.getAccessListData(accessList ?? [])\n this.accessList = accessListData.accessList\n this.AccessListJSON = accessListData.AccessListJSON\n // Verify the access list format.\n AccessLists.verifyAccessList(this.accessList)\n\n this.gasPrice = new BN(toBuffer(gasPrice === '' ? '0x' : gasPrice))\n\n this._validateCannotExceedMaxInteger({\n gasPrice: this.gasPrice,\n })\n\n if (this.gasPrice.mul(this.gasLimit).gt(MAX_INTEGER)) {\n const msg = this._errorMsg('gasLimit * gasPrice cannot exceed MAX_INTEGER')\n throw new Error(msg)\n }\n if (this.v && !this.v.eqn(0) && !this.v.eqn(1)) {\n const msg = this._errorMsg('The y-parity of the transaction should either be 0 or 1')\n throw new Error(msg)\n }\n\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n if (this.common.isActivatedEIP(3860)) {\n checkMaxInitCodeSize(this.common, this.data.length)\n }\n const freeze = opts?.freeze ?? true\n if (freeze) {\n Object.freeze(this)\n }\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {\n return this.cache.dataFee.value\n }\n\n const cost = super.getDataFee()\n cost.iaddn(AccessLists.getDataFeeEIP2930(this.accessList, this.common))\n\n if (Object.isFrozen(this)) {\n this.cache.dataFee = {\n value: cost,\n hardfork: this.common.hardfork(),\n }\n }\n\n return cost\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n getUpfrontCost(): BN {\n return this.gasLimit.mul(this.gasPrice).add(this.value)\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of the EIP-2930 transaction, in order.\n *\n * Format: `[chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)]`\n *\n * Use {@link AccessListEIP2930Transaction.serialize} to add a transaction to a block\n * with {@link Block.fromValuesArray}.\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link AccessListEIP2930Transaction.getMessageToSign}.\n */\n raw(): AccessListEIP2930ValuesArray {\n return [\n bnToUnpaddedBuffer(this.chainId),\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.gasPrice),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n this.accessList,\n this.v !== undefined ? bnToUnpaddedBuffer(this.v) : Buffer.from([]),\n this.r !== undefined ? bnToUnpaddedBuffer(this.r) : Buffer.from([]),\n this.s !== undefined ? bnToUnpaddedBuffer(this.s) : Buffer.from([]),\n ]\n }\n\n /**\n * Returns the serialized encoding of the EIP-2930 transaction.\n *\n * Format: `0x01 || rlp([chainId, nonce, gasPrice, gasLimit, to, value, data, accessList,\n * signatureYParity (v), signatureR (r), signatureS (s)])`\n *\n * Note that in contrast to the legacy tx serialization format this is not\n * valid RLP any more due to the raw tx type preceding and concatenated to\n * the RLP encoding of the values.\n */\n serialize(): Buffer {\n const base = this.raw()\n return Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n }\n\n /**\n * Returns the serialized unsigned tx (hashed or raw), which can be used\n * to sign the transaction (e.g. for sending to a hardware wallet).\n *\n * Note: in contrast to the legacy tx the raw message format is already\n * serialized and doesn't need to be RLP encoded any more.\n *\n * ```javascript\n * const serializedMessage = tx.getMessageToSign(false) // use this for the HW wallet input\n * ```\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n getMessageToSign(hashMessage = true): Buffer {\n const base = this.raw().slice(0, 8)\n const message = Buffer.concat([TRANSACTION_TYPE_BUFFER, rlp.encode(base as any)])\n if (hashMessage) {\n return keccak256(message)\n } else {\n return message\n }\n }\n\n /**\n * Computes a sha3-256 hash of the serialized tx.\n *\n * This method can only be used for signed txs (it throws otherwise).\n * Use {@link AccessListEIP2930Transaction.getMessageToSign} to get a tx hash for the purpose of signing.\n */\n public hash(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call hash method if transaction is not signed')\n throw new Error(msg)\n }\n\n if (Object.isFrozen(this)) {\n if (!this.cache.hash) {\n this.cache.hash = keccak256(this.serialize())\n }\n return this.cache.hash\n }\n\n return keccak256(this.serialize())\n }\n\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n public getMessageToVerifySignature(): Buffer {\n return this.getMessageToSign()\n }\n\n /**\n * Returns the public key of the sender\n */\n public getSenderPublicKey(): Buffer {\n if (!this.isSigned()) {\n const msg = this._errorMsg('Cannot call this method if transaction is not signed')\n throw new Error(msg)\n }\n\n const msgHash = this.getMessageToVerifySignature()\n\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n const { yParity, r, s } = this\n try {\n return ecrecover(\n msgHash,\n yParity!.addn(27), // Recover the 27 which was stripped from ecsign\n bnToUnpaddedBuffer(r!),\n bnToUnpaddedBuffer(s!)\n )\n } catch (e: any) {\n const msg = this._errorMsg('Invalid Signature')\n throw new Error(msg)\n }\n }\n\n _processSignature(v: number, r: Buffer, s: Buffer) {\n const opts = {\n common: this.common,\n }\n\n return AccessListEIP2930Transaction.fromTxData(\n {\n chainId: this.chainId,\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n accessList: this.accessList,\n v: new BN(v - 27), // This looks extremely hacky: ethereumjs-util actually adds 27 to the value, the recovery bit is either 0 or 1.\n r: new BN(r),\n s: new BN(s),\n },\n opts\n )\n }\n\n /**\n * Returns an object with the JSON representation of the transaction\n */\n toJSON(): JsonTx {\n const accessListJSON = AccessLists.getAccessListJSON(this.accessList)\n\n return {\n chainId: bnToHex(this.chainId),\n nonce: bnToHex(this.nonce),\n gasPrice: bnToHex(this.gasPrice),\n gasLimit: bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n accessList: accessListJSON,\n v: this.v !== undefined ? bnToHex(this.v) : undefined,\n r: this.r !== undefined ? bnToHex(this.r) : undefined,\n s: this.s !== undefined ? bnToHex(this.s) : undefined,\n }\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public errorStr() {\n let errorStr = this._getSharedErrorPostfix()\n // Keep ? for this.accessList since this otherwise causes Hardhat E2E tests to fail\n errorStr += ` gasPrice=${this.gasPrice} accessListCount=${this.accessList?.length ?? 0}`\n return errorStr\n }\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected _errorMsg(msg: string) {\n return `${msg} (${this.errorStr()})`\n }\n}\n","export { default as Transaction } from './legacyTransaction'\nexport { default as AccessListEIP2930Transaction } from './eip2930Transaction'\nexport { default as TransactionFactory } from './transactionFactory'\nexport { default as FeeMarketEIP1559Transaction } from './eip1559Transaction'\nexport * from './types'\n","import {\n BN,\n bnToHex,\n bnToUnpaddedBuffer,\n ecrecover,\n MAX_INTEGER,\n rlp,\n rlphash,\n toBuffer,\n unpadBuffer,\n validateNoLeadingZeroes,\n} from 'ethereumjs-util'\nimport { TxOptions, TxData, JsonTx, N_DIV_2, TxValuesArray, Capability } from './types'\nimport { BaseTransaction } from './baseTransaction'\nimport Common from '@ethereumjs/common'\nimport { checkMaxInitCodeSize } from './util'\n\nconst TRANSACTION_TYPE = 0\n\n/**\n * An Ethereum non-typed (legacy) transaction\n */\nexport default class Transaction extends BaseTransaction {\n public readonly gasPrice: BN\n\n public readonly common: Common\n\n /**\n * Instantiate a transaction from a data dictionary.\n *\n * Format: { nonce, gasPrice, gasLimit, to, value, data, v, r, s }\n *\n * Notes:\n * - All parameters are optional and have some basic default values\n */\n public static fromTxData(txData: TxData, opts: TxOptions = {}) {\n return new Transaction(txData, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n *\n * Format: `rlp([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`\n */\n public static fromSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized tx input. Must be array')\n }\n\n return this.fromValuesArray(values, opts)\n }\n\n /**\n * Instantiate a transaction from the serialized tx.\n * (alias of {@link Transaction.fromSerializedTx})\n *\n * @deprecated this constructor alias is deprecated and will be removed\n * in favor of the {@link Transaction.fromSerializedTx} constructor\n */\n public static fromRlpSerializedTx(serialized: Buffer, opts: TxOptions = {}) {\n return Transaction.fromSerializedTx(serialized, opts)\n }\n\n /**\n * Create a transaction from a values array.\n *\n * Format: `[nonce, gasPrice, gasLimit, to, value, data, v, r, s]`\n */\n public static fromValuesArray(values: TxValuesArray, opts: TxOptions = {}) {\n // If length is not 6, it has length 9. If v/r/s are empty Buffers, it is still an unsigned transaction\n // This happens if you get the RLP data from `raw()`\n if (values.length !== 6 && values.length !== 9) {\n throw new Error(\n 'Invalid transaction. Only expecting 6 values (for unsigned tx) or 9 values (for signed tx).'\n )\n }\n\n const [nonce, gasPrice, gasLimit, to, value, data, v, r, s] = values\n\n validateNoLeadingZeroes({ nonce, gasPrice, gasLimit, value, v, r, s })\n\n return new Transaction(\n {\n nonce,\n gasPrice,\n gasLimit,\n to,\n value,\n data,\n v,\n r,\n s,\n },\n opts\n )\n }\n\n /**\n * This constructor takes the values, validates them, assigns them and freezes the object.\n *\n * It is not recommended to use this constructor directly. Instead use\n * the static factory methods to assist in creating a Transaction object from\n * varying data types.\n */\n public constructor(txData: TxData, opts: TxOptions = {}) {\n super({ ...txData, type: TRANSACTION_TYPE })\n\n this.common = this._validateTxV(this.v, opts.common)\n\n this.gasPrice = new BN(toBuffer(txData.gasPrice === '' ? '0x' : txData.gasPrice))\n\n if (this.gasPrice.mul(this.gasLimit).gt(MAX_INTEGER)) {\n const msg = this._errorMsg('gas limit * gasPrice cannot exceed MAX_INTEGER (2^256-1)')\n throw new Error(msg)\n }\n this._validateCannotExceedMaxInteger({ gasPrice: this.gasPrice })\n\n if (this.common.gteHardfork('spuriousDragon')) {\n if (!this.isSigned()) {\n this.activeCapabilities.push(Capability.EIP155ReplayProtection)\n } else {\n // EIP155 spec:\n // If block.number >= 2,675,000 and v = CHAIN_ID * 2 + 35 or v = CHAIN_ID * 2 + 36\n // then when computing the hash of a transaction for purposes of signing or recovering\n // instead of hashing only the first six elements (i.e. nonce, gasprice, startgas, to, value, data)\n // hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0.\n const v = this.v!\n const chainIdDoubled = this.common.chainIdBN().muln(2)\n\n // v and chain ID meet EIP-155 conditions\n if (v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36))) {\n this.activeCapabilities.push(Capability.EIP155ReplayProtection)\n }\n }\n }\n\n if (this.common.isActivatedEIP(3860)) {\n checkMaxInitCodeSize(this.common, this.data.length)\n }\n\n const freeze = opts?.freeze ?? true\n if (freeze) {\n Object.freeze(this)\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers of the legacy transaction, in order.\n *\n * Format: `[nonce, gasPrice, gasLimit, to, value, data, v, r, s]`\n *\n * For legacy txs this is also the correct format to add transactions\n * to a block with {@link Block.fromValuesArray} (use the `serialize()` method\n * for typed txs).\n *\n * For an unsigned tx this method returns the empty Buffer values\n * for the signature parameters `v`, `r` and `s`. For an EIP-155 compliant\n * representation have a look at {@link Transaction.getMessageToSign}.\n */\n raw(): TxValuesArray {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.gasPrice),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n this.v !== undefined ? bnToUnpaddedBuffer(this.v) : Buffer.from([]),\n this.r !== undefined ? bnToUnpaddedBuffer(this.r) : Buffer.from([]),\n this.s !== undefined ? bnToUnpaddedBuffer(this.s) : Buffer.from([]),\n ]\n }\n\n /**\n * Returns the serialized encoding of the legacy transaction.\n *\n * Format: `rlp([nonce, gasPrice, gasLimit, to, value, data, v, r, s])`\n *\n * For an unsigned tx this method uses the empty Buffer values for the\n * signature parameters `v`, `r` and `s` for encoding. For an EIP-155 compliant\n * representation for external signing use {@link Transaction.getMessageToSign}.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n private _getMessageToSign() {\n const values = [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.gasPrice),\n bnToUnpaddedBuffer(this.gasLimit),\n this.to !== undefined ? this.to.buf : Buffer.from([]),\n bnToUnpaddedBuffer(this.value),\n this.data,\n ]\n\n if (this.supports(Capability.EIP155ReplayProtection)) {\n values.push(toBuffer(this.common.chainIdBN()))\n values.push(unpadBuffer(toBuffer(0)))\n values.push(unpadBuffer(toBuffer(0)))\n }\n\n return values\n }\n\n /**\n * Returns the unsigned tx (hashed or raw), which can be used\n * to sign the transaction (e.g. for sending to a hardware wallet).\n *\n * Note: the raw message message format for the legacy tx is not RLP encoded\n * and you might need to do yourself with:\n *\n * ```javascript\n * import { rlp } from 'ethereumjs-util'\n * const message = tx.getMessageToSign(false)\n * const serializedMessage = rlp.encode(message) // use this for the HW wallet input\n * ```\n *\n * @param hashMessage - Return hashed message if set to true (default: true)\n */\n getMessageToSign(hashMessage: false): Buffer[]\n getMessageToSign(hashMessage?: true): Buffer\n getMessageToSign(hashMessage = true) {\n const message = this._getMessageToSign()\n if (hashMessage) {\n return rlphash(message)\n } else {\n return message\n }\n }\n\n /**\n * The amount of gas paid for the data in this tx\n */\n getDataFee(): BN {\n if (this.cache.dataFee && this.cache.dataFee.hardfork === this.common.hardfork()) {\n return this.cache.dataFee.value\n }\n\n if (Object.isFrozen(this)) {\n this.cache.dataFee = {\n value: super.getDataFee(),\n hardfork: this.common.hardfork(),\n }\n }\n\n return super.getDataFee()\n }\n\n /**\n * The up front amount that an account must have for this transaction to be valid\n */\n getUpfrontCost(): BN {\n return this.gasLimit.mul(this.gasPrice).add(this.value)\n }\n\n /**\n * Computes a sha3-256 hash of the serialized tx.\n *\n * This method can only be used for signed txs (it throws otherwise).\n * Use {@link Transaction.getMessageToSign} to get a tx hash for the purpose of signing.\n */\n hash(): Buffer {\n // In contrast to the tx type transaction implementations the `hash()` function\n // for the legacy tx does not throw if the tx is not signed.\n // This has been considered for inclusion but lead to unexpected backwards\n // compatibility problems (no concrete reference found, needs validation).\n //\n // For context see also https://github.com/ethereumjs/ethereumjs-monorepo/pull/1445,\n // September, 2021 as well as work done before.\n //\n // This should be updated along the next major version release by adding:\n //\n //if (!this.isSigned()) {\n // const msg = this._errorMsg('Cannot call hash method if transaction is not signed')\n // throw new Error(msg)\n //}\n\n if (Object.isFrozen(this)) {\n if (!this.cache.hash) {\n this.cache.hash = rlphash(this.raw())\n }\n return this.cache.hash\n }\n\n return rlphash(this.raw())\n }\n\n /**\n * Computes a sha3-256 hash which can be used to verify the signature\n */\n getMessageToVerifySignature() {\n if (!this.isSigned()) {\n const msg = this._errorMsg('This transaction is not signed')\n throw new Error(msg)\n }\n const message = this._getMessageToSign()\n return rlphash(message)\n }\n\n /**\n * Returns the public key of the sender\n */\n getSenderPublicKey(): Buffer {\n const msgHash = this.getMessageToVerifySignature()\n\n // EIP-2: All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n // Reasoning: https://ethereum.stackexchange.com/a/55728\n if (this.common.gteHardfork('homestead') && this.s?.gt(N_DIV_2)) {\n const msg = this._errorMsg(\n 'Invalid Signature: s-values greater than secp256k1n/2 are considered invalid'\n )\n throw new Error(msg)\n }\n\n const { v, r, s } = this\n try {\n return ecrecover(\n msgHash,\n v!,\n bnToUnpaddedBuffer(r!),\n bnToUnpaddedBuffer(s!),\n this.supports(Capability.EIP155ReplayProtection) ? this.common.chainIdBN() : undefined\n )\n } catch (e: any) {\n const msg = this._errorMsg('Invalid Signature')\n throw new Error(msg)\n }\n }\n\n /**\n * Process the v, r, s values from the `sign` method of the base transaction.\n */\n protected _processSignature(v: number, r: Buffer, s: Buffer) {\n const vBN = new BN(v)\n if (this.supports(Capability.EIP155ReplayProtection)) {\n vBN.iadd(this.common.chainIdBN().muln(2).addn(8))\n }\n\n const opts = {\n common: this.common,\n }\n\n return Transaction.fromTxData(\n {\n nonce: this.nonce,\n gasPrice: this.gasPrice,\n gasLimit: this.gasLimit,\n to: this.to,\n value: this.value,\n data: this.data,\n v: vBN,\n r: new BN(r),\n s: new BN(s),\n },\n opts\n )\n }\n\n /**\n * Returns an object with the JSON representation of the transaction.\n */\n toJSON(): JsonTx {\n return {\n nonce: bnToHex(this.nonce),\n gasPrice: bnToHex(this.gasPrice),\n gasLimit: bnToHex(this.gasLimit),\n to: this.to !== undefined ? this.to.toString() : undefined,\n value: bnToHex(this.value),\n data: '0x' + this.data.toString('hex'),\n v: this.v !== undefined ? bnToHex(this.v) : undefined,\n r: this.r !== undefined ? bnToHex(this.r) : undefined,\n s: this.s !== undefined ? bnToHex(this.s) : undefined,\n }\n }\n\n /**\n * Validates tx's `v` value\n */\n private _validateTxV(v?: BN, common?: Common): Common {\n let chainIdBN\n // No unsigned tx and EIP-155 activated and chain ID included\n if (\n v !== undefined &&\n !v.eqn(0) &&\n (!common || common.gteHardfork('spuriousDragon')) &&\n !v.eqn(27) &&\n !v.eqn(28)\n ) {\n if (common) {\n const chainIdDoubled = common.chainIdBN().muln(2)\n const isValidEIP155V = v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36))\n\n if (!isValidEIP155V) {\n throw new Error(\n `Incompatible EIP155-based V ${v} and chain id ${common.chainIdBN()}. See the Common parameter of the Transaction constructor to set the chain id.`\n )\n }\n } else {\n // Derive the original chain ID\n let numSub\n if (v.subn(35).isEven()) {\n numSub = 35\n } else {\n numSub = 36\n }\n // Use derived chain ID to create a proper Common\n chainIdBN = v.subn(numSub).divn(2)\n }\n }\n return this._getCommon(common, chainIdBN)\n }\n\n /**\n * @deprecated if you have called this internal method please use `tx.supports(Capabilities.EIP155ReplayProtection)` instead\n */\n private _unsignedTxImplementsEIP155() {\n return this.common.gteHardfork('spuriousDragon')\n }\n\n /**\n * @deprecated if you have called this internal method please use `tx.supports(Capabilities.EIP155ReplayProtection)` instead\n */\n private _signedTxImplementsEIP155() {\n if (!this.isSigned()) {\n const msg = this._errorMsg('This transaction is not signed')\n throw new Error(msg)\n }\n const onEIP155BlockOrLater = this.common.gteHardfork('spuriousDragon')\n\n // EIP155 spec:\n // If block.number >= 2,675,000 and v = CHAIN_ID * 2 + 35 or v = CHAIN_ID * 2 + 36, then when computing the hash of a transaction for purposes of signing or recovering, instead of hashing only the first six elements (i.e. nonce, gasprice, startgas, to, value, data), hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0.\n const v = this.v!\n\n const chainIdDoubled = this.common.chainIdBN().muln(2)\n\n const vAndChainIdMeetEIP155Conditions =\n v.eq(chainIdDoubled.addn(35)) || v.eq(chainIdDoubled.addn(36))\n\n return vAndChainIdMeetEIP155Conditions && onEIP155BlockOrLater\n }\n\n /**\n * Return a compact error string representation of the object\n */\n public errorStr() {\n let errorStr = this._getSharedErrorPostfix()\n errorStr += ` gasPrice=${this.gasPrice}`\n return errorStr\n }\n\n /**\n * Internal helper function to create an annotated error message\n *\n * @param msg Base error message\n * @hidden\n */\n protected _errorMsg(msg: string) {\n return `${msg} (${this.errorStr()})`\n }\n}\n","import { BN, toBuffer } from 'ethereumjs-util'\nimport {\n TxOptions,\n TypedTransaction,\n TxData,\n AccessListEIP2930TxData,\n FeeMarketEIP1559TxData,\n} from './types'\nimport { Transaction, AccessListEIP2930Transaction, FeeMarketEIP1559Transaction } from '.'\nimport Common from '@ethereumjs/common'\n\nexport default class TransactionFactory {\n // It is not possible to instantiate a TransactionFactory object.\n private constructor() {}\n\n /**\n * Create a transaction from a `txData` object\n *\n * @param txData - The transaction data. The `type` field will determine which transaction type is returned (if undefined, creates a legacy transaction)\n * @param txOptions - Options to pass on to the constructor of the transaction\n */\n public static fromTxData(\n txData: TxData | AccessListEIP2930TxData | FeeMarketEIP1559TxData,\n txOptions: TxOptions = {}\n ): TypedTransaction {\n if (!('type' in txData) || txData.type === undefined) {\n // Assume legacy transaction\n return Transaction.fromTxData(txData, txOptions)\n } else {\n const txType = new BN(toBuffer(txData.type)).toNumber()\n if (txType === 0) {\n return Transaction.fromTxData(txData, txOptions)\n } else if (txType === 1) {\n return AccessListEIP2930Transaction.fromTxData(txData, txOptions)\n } else if (txType === 2) {\n return FeeMarketEIP1559Transaction.fromTxData(txData, txOptions)\n } else {\n throw new Error(`Tx instantiation with type ${txType} not supported`)\n }\n }\n }\n\n /**\n * This method tries to decode serialized data.\n *\n * @param data - The data Buffer\n * @param txOptions - The transaction options\n */\n public static fromSerializedData(data: Buffer, txOptions: TxOptions = {}): TypedTransaction {\n if (data[0] <= 0x7f) {\n // Determine the type.\n let EIP: number\n switch (data[0]) {\n case 1:\n EIP = 2930\n break\n case 2:\n EIP = 1559\n break\n default:\n throw new Error(`TypedTransaction with ID ${data[0]} unknown`)\n }\n if (EIP === 1559) {\n return FeeMarketEIP1559Transaction.fromSerializedTx(data, txOptions)\n } else {\n // EIP === 2930\n return AccessListEIP2930Transaction.fromSerializedTx(data, txOptions)\n }\n } else {\n return Transaction.fromSerializedTx(data, txOptions)\n }\n }\n\n /**\n * When decoding a BlockBody, in the transactions field, a field is either:\n * A Buffer (a TypedTransaction - encoded as TransactionType || rlp(TransactionPayload))\n * A Buffer[] (Legacy Transaction)\n * This method returns the right transaction.\n *\n * @param data - A Buffer or Buffer[]\n * @param txOptions - The transaction options\n */\n public static fromBlockBodyData(data: Buffer | Buffer[], txOptions: TxOptions = {}) {\n if (Buffer.isBuffer(data)) {\n return this.fromSerializedData(data, txOptions)\n } else if (Array.isArray(data)) {\n // It is a legacy transaction\n return Transaction.fromValuesArray(data, txOptions)\n } else {\n throw new Error('Cannot decode transaction: unknown type input')\n }\n }\n\n /**\n * This helper method allows one to retrieve the class which matches the transactionID\n * If transactionID is undefined, returns the legacy transaction class.\n * @deprecated - This method is deprecated and will be removed on the next major release\n * @param transactionID\n * @param _common - This option is not used\n */\n public static getTransactionClass(transactionID: number = 0, _common?: Common) {\n const legacyTxn = transactionID == 0 || (transactionID >= 0x80 && transactionID <= 0xff)\n\n if (legacyTxn) {\n return Transaction\n }\n\n switch (transactionID) {\n case 1:\n return AccessListEIP2930Transaction\n case 2:\n return FeeMarketEIP1559Transaction\n default:\n throw new Error(`TypedTransaction with ID ${transactionID} unknown`)\n }\n }\n}\n","import { BN, AddressLike, BNLike, BufferLike, PrefixedHexString } from 'ethereumjs-util'\nimport Common from '@ethereumjs/common'\nimport { default as Transaction } from './legacyTransaction'\nimport { default as AccessListEIP2930Transaction } from './eip2930Transaction'\nimport { default as FeeMarketEIP1559Transaction } from './eip1559Transaction'\n\n/**\n * Can be used in conjunction with {@link Transaction.supports}\n * to query on tx capabilities\n */\nexport enum Capability {\n /**\n * Tx supports EIP-155 replay protection\n * See: [155](https://eips.ethereum.org/EIPS/eip-155) Replay Attack Protection EIP\n */\n EIP155ReplayProtection = 155,\n\n /**\n * Tx supports EIP-1559 gas fee market mechansim\n * See: [1559](https://eips.ethereum.org/EIPS/eip-1559) Fee Market EIP\n */\n EIP1559FeeMarket = 1559,\n\n /**\n * Tx is a typed transaction as defined in EIP-2718\n * See: [2718](https://eips.ethereum.org/EIPS/eip-2718) Transaction Type EIP\n */\n EIP2718TypedTransaction = 2718,\n\n /**\n * Tx supports access list generation as defined in EIP-2930\n * See: [2930](https://eips.ethereum.org/EIPS/eip-2930) Access Lists EIP\n */\n EIP2930AccessLists = 2930,\n}\n\n/**\n * The options for initializing a {@link Transaction}.\n */\nexport interface TxOptions {\n /**\n * A {@link Common} object defining the chain and hardfork for the transaction.\n *\n * Object will be internally copied so that tx behavior don't incidentally\n * change on future HF changes.\n *\n * Default: {@link Common} object set to `mainnet` and the default hardfork as defined in the {@link Common} class.\n *\n * Current default hardfork: `istanbul`\n */\n common?: Common\n /**\n * A transaction object by default gets frozen along initialization. This gives you\n * strong additional security guarantees on the consistency of the tx parameters.\n * It also enables tx hash caching when the `hash()` method is called multiple times.\n *\n * If you need to deactivate the tx freeze - e.g. because you want to subclass tx and\n * add aditional properties - it is strongly encouraged that you do the freeze yourself\n * within your code instead.\n *\n * Default: true\n */\n freeze?: boolean\n}\n\n/*\n * Access List types\n */\n\nexport type AccessListItem = {\n address: PrefixedHexString\n storageKeys: PrefixedHexString[]\n}\n\n/*\n * An Access List as a tuple of [address: Buffer, storageKeys: Buffer[]]\n */\nexport type AccessListBufferItem = [Buffer, Buffer[]]\nexport type AccessListBuffer = AccessListBufferItem[]\nexport type AccessList = AccessListItem[]\n\nexport function isAccessListBuffer(\n input: AccessListBuffer | AccessList\n): input is AccessListBuffer {\n if (input.length === 0) {\n return true\n }\n const firstItem = input[0]\n if (Array.isArray(firstItem)) {\n return true\n }\n return false\n}\n\nexport function isAccessList(input: AccessListBuffer | AccessList): input is AccessList {\n return !isAccessListBuffer(input) // This is exactly the same method, except the output is negated.\n}\n\n/**\n * Encompassing type for all transaction types.\n *\n * Note that this also includes legacy txs which are\n * referenced as {@link Transaction} for compatibility reasons.\n */\nexport type TypedTransaction =\n | Transaction\n | AccessListEIP2930Transaction\n | FeeMarketEIP1559Transaction\n\n/**\n * Legacy {@link Transaction} Data\n */\nexport type TxData = {\n /**\n * The transaction's nonce.\n */\n nonce?: BNLike\n\n /**\n * The transaction's gas price.\n */\n gasPrice?: BNLike\n\n /**\n * The transaction's gas limit.\n */\n gasLimit?: BNLike\n\n /**\n * The transaction's the address is sent to.\n */\n to?: AddressLike\n\n /**\n * The amount of Ether sent.\n */\n value?: BNLike\n\n /**\n * This will contain the data of the message or the init of a contract.\n */\n data?: BufferLike\n\n /**\n * EC recovery ID.\n */\n v?: BNLike\n\n /**\n * EC signature parameter.\n */\n r?: BNLike\n\n /**\n * EC signature parameter.\n */\n s?: BNLike\n\n /**\n * The transaction type\n */\n\n type?: BNLike\n}\n\n/**\n * {@link AccessListEIP2930Transaction} data.\n */\nexport interface AccessListEIP2930TxData extends TxData {\n /**\n * The transaction's chain ID\n */\n chainId?: BNLike\n\n /**\n * The access list which contains the addresses/storage slots which the transaction wishes to access\n */\n accessList?: AccessListBuffer | AccessList\n}\n\n/**\n * {@link FeeMarketEIP1559Transaction} data.\n */\nexport interface FeeMarketEIP1559TxData extends AccessListEIP2930TxData {\n /**\n * The transaction's gas price, inherited from {@link Transaction}. This property is not used for EIP1559\n * transactions and should always be undefined for this specific transaction type.\n */\n gasPrice?: never\n /**\n * The maximum inclusion fee per gas (this fee is given to the miner)\n */\n maxPriorityFeePerGas?: BNLike\n /**\n * The maximum total fee\n */\n maxFeePerGas?: BNLike\n}\n\n/**\n * Buffer values array for a legacy {@link Transaction}\n */\nexport type TxValuesArray = Buffer[]\n\n/**\n * Buffer values array for an {@link AccessListEIP2930Transaction}\n */\nexport type AccessListEIP2930ValuesArray = [\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n AccessListBuffer,\n Buffer?,\n Buffer?,\n Buffer?\n]\n\n/**\n * Buffer values array for a {@link FeeMarketEIP1559Transaction}\n */\nexport type FeeMarketEIP1559ValuesArray = [\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n Buffer,\n AccessListBuffer,\n Buffer?,\n Buffer?,\n Buffer?\n]\n\ntype JsonAccessListItem = { address: string; storageKeys: string[] }\n\n/**\n * Generic interface for all tx types with a\n * JSON representation of a transaction.\n *\n * Note that all values are marked as optional\n * and not all the values are present on all tx types\n * (an EIP1559 tx e.g. lacks a `gasPrice`).\n */\nexport interface JsonTx {\n nonce?: string\n gasPrice?: string\n gasLimit?: string\n to?: string\n data?: string\n v?: string\n r?: string\n s?: string\n value?: string\n chainId?: string\n accessList?: JsonAccessListItem[]\n type?: string\n maxPriorityFeePerGas?: string\n maxFeePerGas?: string\n}\n\n/**\n * A const defining secp256k1n/2\n */\nexport const N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n)\n","import Common from '@ethereumjs/common'\nimport { bufferToHex, setLengthLeft, toBuffer } from 'ethereumjs-util'\nimport { AccessList, AccessListBuffer, AccessListItem, isAccessList } from './types'\n\nexport function checkMaxInitCodeSize(common: Common, length: number) {\n if (length > common.param('vm', 'maxInitCodeSize')) {\n throw new Error(\n `the initcode size of this transaction is too large: it is ${length} while the max is ${common.param(\n 'vm',\n 'maxInitCodeSize'\n )}`\n )\n }\n}\n\nexport class AccessLists {\n public static getAccessListData(accessList: AccessListBuffer | AccessList) {\n let AccessListJSON\n let bufferAccessList\n if (accessList && isAccessList(accessList)) {\n AccessListJSON = accessList\n const newAccessList: AccessListBuffer = []\n\n for (let i = 0; i < accessList.length; i++) {\n const item: AccessListItem = accessList[i]\n const addressBuffer = toBuffer(item.address)\n const storageItems: Buffer[] = []\n for (let index = 0; index < item.storageKeys.length; index++) {\n storageItems.push(toBuffer(item.storageKeys[index]))\n }\n newAccessList.push([addressBuffer, storageItems])\n }\n bufferAccessList = newAccessList\n } else {\n bufferAccessList = accessList ?? []\n // build the JSON\n const json: AccessList = []\n for (let i = 0; i < bufferAccessList.length; i++) {\n const data = bufferAccessList[i]\n const address = bufferToHex(data[0])\n const storageKeys: string[] = []\n for (let item = 0; item < data[1].length; item++) {\n storageKeys.push(bufferToHex(data[1][item]))\n }\n const jsonItem: AccessListItem = {\n address,\n storageKeys,\n }\n json.push(jsonItem)\n }\n AccessListJSON = json\n }\n\n return {\n AccessListJSON,\n accessList: bufferAccessList,\n }\n }\n\n public static verifyAccessList(accessList: AccessListBuffer) {\n for (let key = 0; key < accessList.length; key++) {\n const accessListItem = accessList[key]\n const address = accessListItem[0]\n const storageSlots = accessListItem[1]\n if ((accessListItem)[2] !== undefined) {\n throw new Error(\n 'Access list item cannot have 3 elements. It can only have an address, and an array of storage slots.'\n )\n }\n if (address.length != 20) {\n throw new Error('Invalid EIP-2930 transaction: address length should be 20 bytes')\n }\n for (let storageSlot = 0; storageSlot < storageSlots.length; storageSlot++) {\n if (storageSlots[storageSlot].length != 32) {\n throw new Error('Invalid EIP-2930 transaction: storage slot length should be 32 bytes')\n }\n }\n }\n }\n\n public static getAccessListJSON(accessList: AccessListBuffer) {\n const accessListJSON = []\n for (let index = 0; index < accessList.length; index++) {\n const item: any = accessList[index]\n const JSONItem: any = {\n address: '0x' + setLengthLeft(item[0], 20).toString('hex'),\n storageKeys: [],\n }\n const storageSlots: Buffer[] = item[1]\n for (let slot = 0; slot < storageSlots.length; slot++) {\n const storageSlot = storageSlots[slot]\n JSONItem.storageKeys.push('0x' + setLengthLeft(storageSlot, 32).toString('hex'))\n }\n accessListJSON.push(JSONItem)\n }\n return accessListJSON\n }\n\n public static getDataFeeEIP2930(accessList: AccessListBuffer, common: Common): number {\n const accessListStorageKeyCost = common.param('gasPrices', 'accessListStorageKeyCost')\n const accessListAddressCost = common.param('gasPrices', 'accessListAddressCost')\n\n let slots = 0\n for (let index = 0; index < accessList.length; index++) {\n const item = accessList[index]\n const storageSlots = item[1]\n slots += storageSlots.length\n }\n\n const addresses = accessList.length\n return addresses * accessListAddressCost + slots * accessListStorageKeyCost\n }\n}\n",null,null,null,null,null,null,null,"import getPrototypeOf from \"./getPrototypeOf.js\";\nexport default function _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n\n return object;\n}","import superPropBase from \"./superPropBase.js\";\nexport default function _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n _get = Reflect.get;\n } else {\n _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n\n return desc.value;\n };\n }\n\n return _get.apply(this, arguments);\n}",null,"\"use strict\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n\nexport enum UnicodeNormalizationForm {\n current = \"\",\n NFC = \"NFC\",\n NFD = \"NFD\",\n NFKC = \"NFKC\",\n NFKD = \"NFKD\"\n};\n\nexport enum Utf8ErrorReason {\n // A continuation byte was present where there was nothing to continue\n // - offset = the index the codepoint began in\n UNEXPECTED_CONTINUE = \"unexpected continuation byte\",\n\n // An invalid (non-continuation) byte to start a UTF-8 codepoint was found\n // - offset = the index the codepoint began in\n BAD_PREFIX = \"bad codepoint prefix\",\n\n // The string is too short to process the expected codepoint\n // - offset = the index the codepoint began in\n OVERRUN = \"string overrun\",\n\n // A missing continuation byte was expected but not found\n // - offset = the index the continuation byte was expected at\n MISSING_CONTINUE = \"missing continuation byte\",\n\n // The computed code point is outside the range for UTF-8\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; outside the UTF-8 range\n OUT_OF_RANGE = \"out of UTF-8 range\",\n\n // UTF-8 strings may not contain UTF-16 surrogate pairs\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; inside the UTF-16 surrogate range\n UTF16_SURROGATE = \"UTF-16 surrogate\",\n\n // The string is an overlong representation\n // - offset = start of this codepoint\n // - badCodepoint = the computed codepoint; already bounds checked\n OVERLONG = \"overlong representation\",\n};\n\n\nexport type Utf8ErrorFunc = (reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number) => number;\n\nfunction errorFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n return logger.throwArgumentError(`invalid codepoint at offset ${ offset }; ${ reason }`, \"bytes\", bytes);\n}\n\nfunction ignoreFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // If there is an invalid prefix (including stray continuation), skip any additional continuation bytes\n if (reason === Utf8ErrorReason.BAD_PREFIX || reason === Utf8ErrorReason.UNEXPECTED_CONTINUE) {\n let i = 0;\n for (let o = offset + 1; o < bytes.length; o++) {\n if (bytes[o] >> 6 !== 0x02) { break; }\n i++;\n }\n return i;\n }\n\n // This byte runs us past the end of the string, so just jump to the end\n // (but the first byte was read already read and therefore skipped)\n if (reason === Utf8ErrorReason.OVERRUN) {\n return bytes.length - offset - 1;\n }\n\n // Nothing to skip\n return 0;\n}\n\nfunction replaceFunc(reason: Utf8ErrorReason, offset: number, bytes: ArrayLike, output: Array, badCodepoint?: number): number {\n\n // Overlong representations are otherwise \"valid\" code points; just non-deistingtished\n if (reason === Utf8ErrorReason.OVERLONG) {\n output.push(badCodepoint);\n return 0;\n }\n\n // Put the replacement character into the output\n output.push(0xfffd);\n\n // Otherwise, process as if ignoring errors\n return ignoreFunc(reason, offset, bytes, output, badCodepoint);\n}\n\n// Common error handing strategies\nexport const Utf8ErrorFuncs: { [ name: string ]: Utf8ErrorFunc } = Object.freeze({\n error: errorFunc,\n ignore: ignoreFunc,\n replace: replaceFunc\n});\n\n// http://stackoverflow.com/questions/13356493/decode-utf-8-with-javascript#13691499\nfunction getUtf8CodePoints(bytes: BytesLike, onError?: Utf8ErrorFunc): Array {\n if (onError == null) { onError = Utf8ErrorFuncs.error; }\n\n bytes = arrayify(bytes);\n\n const result: Array = [];\n let i = 0;\n\n // Invalid bytes are ignored\n while(i < bytes.length) {\n\n const c = bytes[i++];\n\n // 0xxx xxxx\n if (c >> 7 === 0) {\n result.push(c);\n continue;\n }\n\n // Multibyte; how many bytes left for this character?\n let extraLength = null;\n let overlongMask = null;\n\n // 110x xxxx 10xx xxxx\n if ((c & 0xe0) === 0xc0) {\n extraLength = 1;\n overlongMask = 0x7f;\n\n // 1110 xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf0) === 0xe0) {\n extraLength = 2;\n overlongMask = 0x7ff;\n\n // 1111 0xxx 10xx xxxx 10xx xxxx 10xx xxxx\n } else if ((c & 0xf8) === 0xf0) {\n extraLength = 3;\n overlongMask = 0xffff;\n\n } else {\n if ((c & 0xc0) === 0x80) {\n i += onError(Utf8ErrorReason.UNEXPECTED_CONTINUE, i - 1, bytes, result);\n } else {\n i += onError(Utf8ErrorReason.BAD_PREFIX, i - 1, bytes, result);\n }\n continue;\n }\n\n // Do we have enough bytes in our data?\n if (i - 1 + extraLength >= bytes.length) {\n i += onError(Utf8ErrorReason.OVERRUN, i - 1, bytes, result);\n continue;\n }\n\n // Remove the length prefix from the char\n let res = c & ((1 << (8 - extraLength - 1)) - 1);\n\n for (let j = 0; j < extraLength; j++) {\n let nextChar = bytes[i];\n\n // Invalid continuation byte\n if ((nextChar & 0xc0) != 0x80) {\n i += onError(Utf8ErrorReason.MISSING_CONTINUE, i, bytes, result);\n res = null;\n break;\n };\n\n res = (res << 6) | (nextChar & 0x3f);\n i++;\n }\n\n // See above loop for invalid continuation byte\n if (res === null) { continue; }\n\n // Maximum code point\n if (res > 0x10ffff) {\n i += onError(Utf8ErrorReason.OUT_OF_RANGE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Reserved for UTF-16 surrogate halves\n if (res >= 0xd800 && res <= 0xdfff) {\n i += onError(Utf8ErrorReason.UTF16_SURROGATE, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n // Check for overlong sequences (more bytes than needed)\n if (res <= overlongMask) {\n i += onError(Utf8ErrorReason.OVERLONG, i - 1 - extraLength, bytes, result, res);\n continue;\n }\n\n result.push(res);\n }\n\n return result;\n}\n\n// http://stackoverflow.com/questions/18729405/how-to-convert-utf8-string-to-byte-array\nexport function toUtf8Bytes(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Uint8Array {\n\n if (form != UnicodeNormalizationForm.current) {\n logger.checkNormalize();\n str = str.normalize(form);\n }\n\n let result = [];\n for (let i = 0; i < str.length; i++) {\n const c = str.charCodeAt(i);\n\n if (c < 0x80) {\n result.push(c);\n\n } else if (c < 0x800) {\n result.push((c >> 6) | 0xc0);\n result.push((c & 0x3f) | 0x80);\n\n } else if ((c & 0xfc00) == 0xd800) {\n i++;\n const c2 = str.charCodeAt(i);\n\n if (i >= str.length || (c2 & 0xfc00) !== 0xdc00) {\n throw new Error(\"invalid utf-8 string\");\n }\n\n // Surrogate Pair\n const pair = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n result.push((pair >> 18) | 0xf0);\n result.push(((pair >> 12) & 0x3f) | 0x80);\n result.push(((pair >> 6) & 0x3f) | 0x80);\n result.push((pair & 0x3f) | 0x80);\n\n } else {\n result.push((c >> 12) | 0xe0);\n result.push(((c >> 6) & 0x3f) | 0x80);\n result.push((c & 0x3f) | 0x80);\n }\n }\n\n return arrayify(result);\n};\n\nfunction escapeChar(value: number) {\n const hex = (\"0000\" + value.toString(16));\n return \"\\\\u\" + hex.substring(hex.length - 4);\n}\n\nexport function _toEscapedUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return '\"' + getUtf8CodePoints(bytes, onError).map((codePoint) => {\n if (codePoint < 256) {\n switch (codePoint) {\n case 8: return \"\\\\b\";\n case 9: return \"\\\\t\";\n case 10: return \"\\\\n\"\n case 13: return \"\\\\r\";\n case 34: return \"\\\\\\\"\";\n case 92: return \"\\\\\\\\\";\n }\n\n if (codePoint >= 32 && codePoint < 127) {\n return String.fromCharCode(codePoint);\n }\n }\n\n if (codePoint <= 0xffff) {\n return escapeChar(codePoint);\n }\n\n codePoint -= 0x10000;\n return escapeChar(((codePoint >> 10) & 0x3ff) + 0xd800) + escapeChar((codePoint & 0x3ff) + 0xdc00);\n }).join(\"\") + '\"';\n}\n\nexport function _toUtf8String(codePoints: Array): string {\n return codePoints.map((codePoint) => {\n if (codePoint <= 0xffff) {\n return String.fromCharCode(codePoint);\n }\n codePoint -= 0x10000;\n return String.fromCharCode(\n (((codePoint >> 10) & 0x3ff) + 0xd800),\n ((codePoint & 0x3ff) + 0xdc00)\n );\n }).join(\"\");\n}\n\nexport function toUtf8String(bytes: BytesLike, onError?: Utf8ErrorFunc): string {\n return _toUtf8String(getUtf8CodePoints(bytes, onError));\n}\n\nexport function toUtf8CodePoints(str: string, form: UnicodeNormalizationForm = UnicodeNormalizationForm.current): Array {\n return getUtf8CodePoints(toUtf8Bytes(str, form));\n}\n",null,null,null,"export const version = \"strings/5.6.0\";\n",null,null,null,null,"\"use strict\";\n\nimport { arrayify, BytesLike, concat, hexDataLength, hexDataSlice, isHexString, stripZeros } from \"@ethersproject/bytes\";\nimport { BigNumber, BigNumberish, _base16To36, _base36To16 } from \"@ethersproject/bignumber\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { encode } from \"@ethersproject/rlp\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction getChecksumAddress(address: string): string {\n if (!isHexString(address, 20)) {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n address = address.toLowerCase();\n\n const chars = address.substring(2).split(\"\");\n\n const expanded = new Uint8Array(40);\n for (let i = 0; i < 40; i++) {\n expanded[i] = chars[i].charCodeAt(0);\n }\n\n const hashed = arrayify(keccak256(expanded));\n\n for (let i = 0; i < 40; i += 2) {\n if ((hashed[i >> 1] >> 4) >= 8) {\n chars[i] = chars[i].toUpperCase();\n }\n if ((hashed[i >> 1] & 0x0f) >= 8) {\n chars[i + 1] = chars[i + 1].toUpperCase();\n }\n }\n\n return \"0x\" + chars.join(\"\");\n}\n\n// Shims for environments that are missing some required constants and functions\nconst MAX_SAFE_INTEGER: number = 0x1fffffffffffff;\n\nfunction log10(x: number): number {\n if (Math.log10) { return Math.log10(x); }\n return Math.log(x) / Math.LN10;\n}\n\n\n// See: https://en.wikipedia.org/wiki/International_Bank_Account_Number\n\n// Create lookup table\nconst ibanLookup: { [character: string]: string } = { };\nfor (let i = 0; i < 10; i++) { ibanLookup[String(i)] = String(i); }\nfor (let i = 0; i < 26; i++) { ibanLookup[String.fromCharCode(65 + i)] = String(10 + i); }\n\n// How many decimal digits can we process? (for 64-bit float, this is 15)\nconst safeDigits = Math.floor(log10(MAX_SAFE_INTEGER));\n\nfunction ibanChecksum(address: string): string {\n address = address.toUpperCase();\n address = address.substring(4) + address.substring(0, 2) + \"00\";\n\n let expanded = address.split(\"\").map((c) => { return ibanLookup[c]; }).join(\"\");\n\n // Javascript can handle integers safely up to 15 (decimal) digits\n while (expanded.length >= safeDigits){\n let block = expanded.substring(0, safeDigits);\n expanded = parseInt(block, 10) % 97 + expanded.substring(block.length);\n }\n\n let checksum = String(98 - (parseInt(expanded, 10) % 97));\n while (checksum.length < 2) { checksum = \"0\" + checksum; }\n\n return checksum;\n};\n\nexport function getAddress(address: string): string {\n let result = null;\n\n if (typeof(address) !== \"string\") {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\n\n // Missing the 0x prefix\n if (address.substring(0, 2) !== \"0x\") { address = \"0x\" + address; }\n\n result = getChecksumAddress(address);\n\n // It is a checksummed address with a bad checksum\n if (address.match(/([A-F].*[a-f])|([a-f].*[A-F])/) && result !== address) {\n logger.throwArgumentError(\"bad address checksum\", \"address\", address);\n }\n\n // Maybe ICAP? (we only support direct mode)\n } else if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\n\n // It is an ICAP address with a bad checksum\n if (address.substring(2, 4) !== ibanChecksum(address)) {\n logger.throwArgumentError(\"bad icap checksum\", \"address\", address);\n }\n\n result = _base36To16(address.substring(4));\n while (result.length < 40) { result = \"0\" + result; }\n result = getChecksumAddress(\"0x\" + result);\n\n } else {\n logger.throwArgumentError(\"invalid address\", \"address\", address);\n }\n\n return result;\n}\n\nexport function isAddress(address: string): boolean {\n try {\n getAddress(address);\n return true;\n } catch (error) { }\n return false;\n}\n\nexport function getIcapAddress(address: string): string {\n let base36 = _base16To36(getAddress(address).substring(2)).toUpperCase();\n while (base36.length < 30) { base36 = \"0\" + base36; }\n return \"XE\" + ibanChecksum(\"XE00\" + base36) + base36;\n}\n\n// http://ethereum.stackexchange.com/questions/760/how-is-the-address-of-an-ethereum-contract-computed\nexport function getContractAddress(transaction: { from: string, nonce: BigNumberish }) {\n let from: string = null;\n try {\n from = getAddress(transaction.from);\n } catch (error) {\n logger.throwArgumentError(\"missing from address\", \"transaction\", transaction);\n }\n\n const nonce = stripZeros(arrayify(BigNumber.from(transaction.nonce).toHexString()));\n\n return getAddress(hexDataSlice(keccak256(encode([ from, nonce ])), 12));\n}\n\nexport function getCreate2Address(from: string, salt: BytesLike, initCodeHash: BytesLike): string {\n if (hexDataLength(salt) !== 32) {\n logger.throwArgumentError(\"salt must be 32 bytes\", \"salt\", salt);\n }\n if (hexDataLength(initCodeHash) !== 32) {\n logger.throwArgumentError(\"initCodeHash must be 32 bytes\", \"initCodeHash\", initCodeHash);\n }\n return getAddress(hexDataSlice(keccak256(concat([ \"0xff\", getAddress(from), salt, initCodeHash ])), 12))\n}\n","export const version = \"address/5.6.0\";\n","\"use strict\";\n\n/**\n * BigNumber\n *\n * A wrapper around the BN.js object. We use the BN.js library\n * because it is used by elliptic, so it is required regardless.\n *\n */\n\nimport _BN from \"bn.js\";\nimport BN = _BN.BN;\n\nimport { Bytes, Hexable, hexlify, isBytes, isHexString } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nconst _constructorGuard = { };\n\nconst MAX_SAFE = 0x1fffffffffffff;\n\n\nexport type BigNumberish = BigNumber | Bytes | bigint | string | number;\n\nexport function isBigNumberish(value: any): value is BigNumberish {\n return (value != null) && (\n BigNumber.isBigNumber(value) ||\n (typeof(value) === \"number\" && (value % 1) === 0) ||\n (typeof(value) === \"string\" && !!value.match(/^-?[0-9]+$/)) ||\n isHexString(value) ||\n (typeof(value) === \"bigint\") ||\n isBytes(value)\n );\n}\n\n// Only warn about passing 10 into radix once\nlet _warnedToStringRadix = false;\n\nexport class BigNumber implements Hexable {\n readonly _hex: string;\n readonly _isBigNumber: boolean;\n\n constructor(constructorGuard: any, hex: string) {\n logger.checkNew(new.target, BigNumber);\n\n if (constructorGuard !== _constructorGuard) {\n logger.throwError(\"cannot call constructor directly; use BigNumber.from\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"new (BigNumber)\"\n });\n }\n\n this._hex = hex;\n this._isBigNumber = true;\n\n Object.freeze(this);\n }\n\n fromTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).fromTwos(value));\n }\n\n toTwos(value: number): BigNumber {\n return toBigNumber(toBN(this).toTwos(value));\n }\n\n abs(): BigNumber {\n if (this._hex[0] === \"-\") {\n return BigNumber.from(this._hex.substring(1));\n }\n return this;\n }\n\n add(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).add(toBN(other)));\n }\n\n sub(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).sub(toBN(other)));\n }\n\n div(other: BigNumberish): BigNumber {\n const o = BigNumber.from(other);\n if (o.isZero()) {\n throwFault(\"division-by-zero\", \"div\");\n }\n return toBigNumber(toBN(this).div(toBN(other)));\n }\n\n mul(other: BigNumberish): BigNumber {\n return toBigNumber(toBN(this).mul(toBN(other)));\n }\n\n mod(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"division-by-zero\", \"mod\");\n }\n return toBigNumber(toBN(this).umod(value));\n }\n\n pow(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (value.isNeg()) {\n throwFault(\"negative-power\", \"pow\");\n }\n return toBigNumber(toBN(this).pow(value));\n }\n\n and(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"and\");\n }\n return toBigNumber(toBN(this).and(value));\n }\n\n or(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"or\");\n }\n return toBigNumber(toBN(this).or(value));\n }\n\n xor(other: BigNumberish): BigNumber {\n const value = toBN(other);\n if (this.isNegative() || value.isNeg()) {\n throwFault(\"unbound-bitwise-result\", \"xor\");\n }\n return toBigNumber(toBN(this).xor(value));\n }\n\n mask(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"mask\");\n }\n return toBigNumber(toBN(this).maskn(value));\n }\n\n shl(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shl\");\n }\n return toBigNumber(toBN(this).shln(value));\n }\n\n shr(value: number): BigNumber {\n if (this.isNegative() || value < 0) {\n throwFault(\"negative-width\", \"shr\");\n }\n return toBigNumber(toBN(this).shrn(value));\n }\n\n eq(other: BigNumberish): boolean {\n return toBN(this).eq(toBN(other));\n }\n\n lt(other: BigNumberish): boolean {\n return toBN(this).lt(toBN(other));\n }\n\n lte(other: BigNumberish): boolean {\n return toBN(this).lte(toBN(other));\n }\n\n gt(other: BigNumberish): boolean {\n return toBN(this).gt(toBN(other));\n }\n\n gte(other: BigNumberish): boolean {\n return toBN(this).gte(toBN(other));\n }\n\n isNegative(): boolean {\n return (this._hex[0] === \"-\");\n }\n\n isZero(): boolean {\n return toBN(this).isZero();\n }\n\n toNumber(): number {\n try {\n return toBN(this).toNumber();\n } catch (error) {\n throwFault(\"overflow\", \"toNumber\", this.toString());\n }\n return null;\n }\n\n toBigInt(): bigint {\n try {\n return BigInt(this.toString());\n } catch (e) { }\n\n return logger.throwError(\"this platform does not support BigInt\", Logger.errors.UNSUPPORTED_OPERATION, {\n value: this.toString()\n });\n }\n\n toString(): string {\n // Lots of people expect this, which we do not support, so check (See: #889)\n if (arguments.length > 0) {\n if (arguments[0] === 10) {\n if (!_warnedToStringRadix) {\n _warnedToStringRadix = true;\n logger.warn(\"BigNumber.toString does not accept any parameters; base-10 is assumed\");\n }\n } else if (arguments[0] === 16) {\n logger.throwError(\"BigNumber.toString does not accept any parameters; use bigNumber.toHexString()\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n } else {\n logger.throwError(\"BigNumber.toString does not accept parameters\", Logger.errors.UNEXPECTED_ARGUMENT, { });\n }\n }\n return toBN(this).toString(10);\n }\n\n toHexString(): string {\n return this._hex;\n }\n\n toJSON(key?: string): any {\n return { type: \"BigNumber\", hex: this.toHexString() };\n }\n\n static from(value: any): BigNumber {\n if (value instanceof BigNumber) { return value; }\n\n if (typeof(value) === \"string\") {\n if (value.match(/^-?0x[0-9a-f]+$/i)) {\n return new BigNumber(_constructorGuard, toHex(value));\n }\n\n if (value.match(/^-?[0-9]+$/)) {\n return new BigNumber(_constructorGuard, toHex(new BN(value)));\n }\n\n return logger.throwArgumentError(\"invalid BigNumber string\", \"value\", value);\n }\n\n if (typeof(value) === \"number\") {\n if (value % 1) {\n throwFault(\"underflow\", \"BigNumber.from\", value);\n }\n\n if (value >= MAX_SAFE || value <= -MAX_SAFE) {\n throwFault(\"overflow\", \"BigNumber.from\", value);\n }\n\n return BigNumber.from(String(value));\n }\n\n const anyValue = value;\n\n if (typeof(anyValue) === \"bigint\") {\n return BigNumber.from(anyValue.toString());\n }\n\n if (isBytes(anyValue)) {\n return BigNumber.from(hexlify(anyValue));\n }\n\n if (anyValue) {\n\n // Hexable interface (takes priority)\n if (anyValue.toHexString) {\n const hex = anyValue.toHexString();\n if (typeof(hex) === \"string\") {\n return BigNumber.from(hex);\n }\n\n } else {\n // For now, handle legacy JSON-ified values (goes away in v6)\n let hex = anyValue._hex;\n\n // New-form JSON\n if (hex == null && anyValue.type === \"BigNumber\") {\n hex = anyValue.hex;\n }\n\n if (typeof(hex) === \"string\") {\n if (isHexString(hex) || (hex[0] === \"-\" && isHexString(hex.substring(1)))) {\n return BigNumber.from(hex);\n }\n }\n }\n }\n\n return logger.throwArgumentError(\"invalid BigNumber value\", \"value\", value);\n }\n\n static isBigNumber(value: any): value is BigNumber {\n return !!(value && value._isBigNumber);\n }\n}\n\n// Normalize the hex string\nfunction toHex(value: string | BN): string {\n\n // For BN, call on the hex string\n if (typeof(value) !== \"string\") {\n return toHex(value.toString(16));\n }\n\n // If negative, prepend the negative sign to the normalized positive value\n if (value[0] === \"-\") {\n // Strip off the negative sign\n value = value.substring(1);\n\n // Cannot have multiple negative signs (e.g. \"--0x04\")\n if (value[0] === \"-\") { logger.throwArgumentError(\"invalid hex\", \"value\", value); }\n\n // Call toHex on the positive component\n value = toHex(value);\n\n // Do not allow \"-0x00\"\n if (value === \"0x00\") { return value; }\n\n // Negate the value\n return \"-\" + value;\n }\n\n // Add a \"0x\" prefix if missing\n if (value.substring(0, 2) !== \"0x\") { value = \"0x\" + value; }\n\n // Normalize zero\n if (value === \"0x\") { return \"0x00\"; }\n\n // Make the string even length\n if (value.length % 2) { value = \"0x0\" + value.substring(2); }\n\n // Trim to smallest even-length string\n while (value.length > 4 && value.substring(0, 4) === \"0x00\") {\n value = \"0x\" + value.substring(4);\n }\n\n return value;\n}\n\nfunction toBigNumber(value: BN): BigNumber {\n return BigNumber.from(toHex(value));\n}\n\nfunction toBN(value: BigNumberish): BN {\n const hex = BigNumber.from(value).toHexString();\n if (hex[0] === \"-\") {\n return (new BN(\"-\" + hex.substring(3), 16));\n }\n return new BN(hex.substring(2), 16);\n}\n\nfunction throwFault(fault: string, operation: string, value?: any): never {\n const params: any = { fault: fault, operation: operation };\n if (value != null) { params.value = value; }\n\n return logger.throwError(fault, Logger.errors.NUMERIC_FAULT, params);\n}\n\n// value should have no prefix\nexport function _base36To16(value: string): string {\n return (new BN(value, 36)).toString(16);\n}\n\n// value should have no prefix\nexport function _base16To36(value: string): string {\n return (new BN(value, 16)).toString(36);\n}\n","export const version = \"bignumber/5.6.0\";\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type Bytes = ArrayLike;\n\nexport type BytesLike = Bytes | string;\n\nexport type DataOptions = {\n allowMissingPrefix?: boolean;\n hexPad?: \"left\" | \"right\" | null;\n};\n\nexport interface Hexable {\n toHexString(): string;\n}\n\n\n/*\nexport interface HexString {\n length: number;\n substring: (start: number, end?: number) => string;\n\n [index: number]: string;\n}\n*/\n\nexport type SignatureLike = {\n r: string;\n s?: string;\n _vs?: string,\n recoveryParam?: number;\n v?: number;\n} | BytesLike;\n\nexport interface Signature {\n r: string;\n\n s: string;\n _vs: string,\n\n recoveryParam: number;\n v: number;\n\n yParityAndS: string\n compact: string;\n}\n\n///////////////////////////////\n\n\nfunction isHexable(value: any): value is Hexable {\n return !!(value.toHexString);\n}\n\nfunction addSlice(array: Uint8Array): Uint8Array {\n if (array.slice) { return array; }\n\n array.slice = function() {\n const args = Array.prototype.slice.call(arguments);\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\n }\n\n return array;\n}\n\nexport function isBytesLike(value: any): value is BytesLike {\n return ((isHexString(value) && !(value.length % 2)) || isBytes(value));\n}\n\nfunction isInteger(value: number) {\n return (typeof(value) === \"number\" && value == value && (value % 1) === 0);\n}\n\nexport function isBytes(value: any): value is Bytes {\n if (value == null) { return false; }\n\n if (value.constructor === Uint8Array) { return true; }\n if (typeof(value) === \"string\") { return false; }\n if (!isInteger(value.length) || value.length < 0) { return false; }\n\n for (let i = 0; i < value.length; i++) {\n const v = value[i];\n if (!isInteger(v) || v < 0 || v >= 256) { return false; }\n }\n return true;\n}\n\n\nexport function arrayify(value: BytesLike | Hexable | number, options?: DataOptions): Uint8Array {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid arrayify value\");\n\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value = parseInt(String(value / 256));\n }\n if (result.length === 0) { result.push(0); }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { value = value.toHexString(); }\n\n if (isHexString(value)) {\n let hex = (value).substring(2);\n if (hex.length % 2) {\n if (options.hexPad === \"left\") {\n hex = \"0\" + hex;\n } else if (options.hexPad === \"right\") {\n hex += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n\n const result = [];\n for (let i = 0; i < hex.length; i += 2) {\n result.push(parseInt(hex.substring(i, i + 2), 16));\n }\n\n return addSlice(new Uint8Array(result));\n }\n\n if (isBytes(value)) {\n return addSlice(new Uint8Array(value));\n }\n\n return logger.throwArgumentError(\"invalid arrayify value\", \"value\", value);\n}\n\nexport function concat(items: ReadonlyArray): Uint8Array {\n const objects = items.map(item => arrayify(item));\n const length = objects.reduce((accum, item) => (accum + item.length), 0);\n\n const result = new Uint8Array(length);\n\n objects.reduce((offset, object) => {\n result.set(object, offset);\n return offset + object.length;\n }, 0);\n\n return addSlice(result);\n}\n\nexport function stripZeros(value: BytesLike): Uint8Array {\n let result: Uint8Array = arrayify(value);\n\n if (result.length === 0) { return result; }\n\n // Find the first non-zero entry\n let start = 0;\n while (start < result.length && result[start] === 0) { start++ }\n\n // If we started with zeros, strip them\n if (start) {\n result = result.slice(start);\n }\n\n return result;\n}\n\nexport function zeroPad(value: BytesLike, length: number): Uint8Array {\n value = arrayify(value);\n\n if (value.length > length) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[0]);\n }\n\n const result = new Uint8Array(length);\n result.set(value, length - value.length);\n return addSlice(result);\n}\n\n\nexport function isHexString(value: any, length?: number): boolean {\n if (typeof(value) !== \"string\" || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false\n }\n if (length && value.length !== 2 + 2 * length) { return false; }\n return true;\n}\n\nconst HexCharacters: string = \"0123456789abcdef\";\n\nexport function hexlify(value: BytesLike | Hexable | number | bigint, options?: DataOptions): string {\n if (!options) { options = { }; }\n\n if (typeof(value) === \"number\") {\n logger.checkSafeUint53(value, \"invalid hexlify value\");\n\n let hex = \"\";\n while (value) {\n hex = HexCharacters[value & 0xf] + hex;\n value = Math.floor(value / 16);\n }\n\n if (hex.length) {\n if (hex.length % 2) { hex = \"0\" + hex; }\n return \"0x\" + hex;\n }\n\n return \"0x00\";\n }\n\n if (typeof(value) === \"bigint\") {\n value = value.toString(16);\n if (value.length % 2) { return (\"0x0\" + value); }\n return \"0x\" + value;\n }\n\n if (options.allowMissingPrefix && typeof(value) === \"string\" && value.substring(0, 2) !== \"0x\") {\n value = \"0x\" + value;\n }\n\n if (isHexable(value)) { return value.toHexString(); }\n\n if (isHexString(value)) {\n if ((value).length % 2) {\n if (options.hexPad === \"left\") {\n value = \"0x0\" + (value).substring(2);\n } else if (options.hexPad === \"right\") {\n value += \"0\";\n } else {\n logger.throwArgumentError(\"hex data is odd-length\", \"value\", value);\n }\n }\n return (value).toLowerCase();\n }\n\n if (isBytes(value)) {\n let result = \"0x\";\n for (let i = 0; i < value.length; i++) {\n let v = value[i];\n result += HexCharacters[(v & 0xf0) >> 4] + HexCharacters[v & 0x0f];\n }\n return result;\n }\n\n return logger.throwArgumentError(\"invalid hexlify value\", \"value\", value);\n}\n\n/*\nfunction unoddify(value: BytesLike | Hexable | number): BytesLike | Hexable | number {\n if (typeof(value) === \"string\" && value.length % 2 && value.substring(0, 2) === \"0x\") {\n return \"0x0\" + value.substring(2);\n }\n return value;\n}\n*/\nexport function hexDataLength(data: BytesLike) {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n return null;\n }\n\n return (data.length - 2) / 2;\n}\n\nexport function hexDataSlice(data: BytesLike, offset: number, endOffset?: number): string {\n if (typeof(data) !== \"string\") {\n data = hexlify(data);\n } else if (!isHexString(data) || (data.length % 2)) {\n logger.throwArgumentError(\"invalid hexData\", \"value\", data );\n }\n\n offset = 2 + 2 * offset;\n\n if (endOffset != null) {\n return \"0x\" + data.substring(offset, 2 + 2 * endOffset);\n }\n\n return \"0x\" + data.substring(offset);\n}\n\nexport function hexConcat(items: ReadonlyArray): string {\n let result = \"0x\";\n items.forEach((item) => {\n result += hexlify(item).substring(2);\n });\n return result;\n}\n\nexport function hexValue(value: BytesLike | Hexable | number | bigint): string {\n const trimmed = hexStripZeros(hexlify(value, { hexPad: \"left\" }));\n if (trimmed === \"0x\") { return \"0x0\"; }\n return trimmed;\n}\n\nexport function hexStripZeros(value: BytesLike): string {\n if (typeof(value) !== \"string\") { value = hexlify(value); }\n\n if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n value = value.substring(2);\n let offset = 0;\n while (offset < value.length && value[offset] === \"0\") { offset++; }\n return \"0x\" + value.substring(offset);\n}\n\nexport function hexZeroPad(value: BytesLike, length: number): string {\n if (typeof(value) !== \"string\") {\n value = hexlify(value);\n } else if (!isHexString(value)) {\n logger.throwArgumentError(\"invalid hex string\", \"value\", value);\n }\n\n if (value.length > 2 * length + 2) {\n logger.throwArgumentError(\"value out of range\", \"value\", arguments[1]);\n }\n\n while (value.length < 2 * length + 2) {\n value = \"0x0\" + value.substring(2);\n }\n\n return value;\n}\n\nexport function splitSignature(signature: SignatureLike): Signature {\n\n const result = {\n r: \"0x\",\n s: \"0x\",\n _vs: \"0x\",\n recoveryParam: 0,\n v: 0,\n yParityAndS: \"0x\",\n compact: \"0x\"\n };\n\n if (isBytesLike(signature)) {\n let bytes: Uint8Array = arrayify(signature);\n\n // Get the r, s and v\n if (bytes.length === 64) {\n // EIP-2098; pull the v from the top bit of s and clear it\n result.v = 27 + (bytes[32] >> 7);\n bytes[32] &= 0x7f;\n\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n\n } else if (bytes.length === 65) {\n result.r = hexlify(bytes.slice(0, 32));\n result.s = hexlify(bytes.slice(32, 64));\n result.v = bytes[64];\n } else {\n\n logger.throwArgumentError(\"invalid signature string\", \"signature\", signature);\n }\n\n\n // Allow a recid to be used as the v\n if (result.v < 27) {\n if (result.v === 0 || result.v === 1) {\n result.v += 27;\n } else {\n logger.throwArgumentError(\"signature invalid v byte\", \"signature\", signature);\n }\n }\n\n // Compute recoveryParam from v\n result.recoveryParam = 1 - (result.v % 2);\n\n // Compute _vs from recoveryParam and s\n if (result.recoveryParam) { bytes[32] |= 0x80; }\n result._vs = hexlify(bytes.slice(32, 64))\n\n } else {\n result.r = signature.r;\n result.s = signature.s;\n result.v = signature.v;\n result.recoveryParam = signature.recoveryParam;\n result._vs = signature._vs;\n\n // If the _vs is available, use it to populate missing s, v and recoveryParam\n // and verify non-missing s, v and recoveryParam\n if (result._vs != null) {\n const vs = zeroPad(arrayify(result._vs), 32);\n result._vs = hexlify(vs);\n\n // Set or check the recid\n const recoveryParam = ((vs[0] >= 128) ? 1: 0);\n if (result.recoveryParam == null) {\n result.recoveryParam = recoveryParam;\n } else if (result.recoveryParam !== recoveryParam) {\n logger.throwArgumentError(\"signature recoveryParam mismatch _vs\", \"signature\", signature);\n }\n\n // Set or check the s\n vs[0] &= 0x7f;\n const s = hexlify(vs);\n if (result.s == null) {\n result.s = s;\n } else if (result.s !== s) {\n logger.throwArgumentError(\"signature v mismatch _vs\", \"signature\", signature);\n }\n }\n\n // Use recid and v to populate each other\n if (result.recoveryParam == null) {\n if (result.v == null) {\n logger.throwArgumentError(\"signature missing v and recoveryParam\", \"signature\", signature);\n } else if (result.v === 0 || result.v === 1) {\n result.recoveryParam = result.v;\n } else {\n result.recoveryParam = 1 - (result.v % 2);\n }\n } else {\n if (result.v == null) {\n result.v = 27 + result.recoveryParam;\n } else {\n const recId = (result.v === 0 || result.v === 1) ? result.v :(1 - (result.v % 2));\n if (result.recoveryParam !== recId) {\n logger.throwArgumentError(\"signature recoveryParam mismatch v\", \"signature\", signature);\n }\n }\n }\n\n if (result.r == null || !isHexString(result.r)) {\n logger.throwArgumentError(\"signature missing or invalid r\", \"signature\", signature);\n } else {\n result.r = hexZeroPad(result.r, 32);\n }\n\n if (result.s == null || !isHexString(result.s)) {\n logger.throwArgumentError(\"signature missing or invalid s\", \"signature\", signature);\n } else {\n result.s = hexZeroPad(result.s, 32);\n }\n\n const vs = arrayify(result.s);\n if (vs[0] >= 128) {\n logger.throwArgumentError(\"signature s out of range\", \"signature\", signature);\n }\n if (result.recoveryParam) { vs[0] |= 0x80; }\n const _vs = hexlify(vs);\n\n if (result._vs) {\n if (!isHexString(result._vs)) {\n logger.throwArgumentError(\"signature invalid _vs\", \"signature\", signature);\n }\n result._vs = hexZeroPad(result._vs, 32);\n }\n\n // Set or check the _vs\n if (result._vs == null) {\n result._vs = _vs;\n } else if (result._vs !== _vs) {\n logger.throwArgumentError(\"signature _vs mismatch v and s\", \"signature\", signature);\n }\n }\n\n result.yParityAndS = result._vs;\n result.compact = result.r + result.yParityAndS.substring(2);\n\n return result;\n}\n\nexport function joinSignature(signature: SignatureLike): string {\n signature = splitSignature(signature);\n\n return hexlify(concat([\n signature.r,\n signature.s,\n (signature.recoveryParam ? \"0x1c\": \"0x1b\")\n ]));\n}\n\n","export const version = \"bytes/5.6.1\";\n","import { BigNumber } from \"@ethersproject/bignumber\";\n\nconst NegativeOne: BigNumber = (/*#__PURE__*/BigNumber.from(-1));\nconst Zero: BigNumber = (/*#__PURE__*/BigNumber.from(0));\nconst One: BigNumber = (/*#__PURE__*/BigNumber.from(1));\nconst Two: BigNumber = (/*#__PURE__*/BigNumber.from(2));\nconst WeiPerEther: BigNumber = (/*#__PURE__*/BigNumber.from(\"1000000000000000000\"));\nconst MaxUint256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0xffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nconst MinInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"-0x8000000000000000000000000000000000000000000000000000000000000000\"));\nconst MaxInt256: BigNumber = (/*#__PURE__*/BigNumber.from(\"0x7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff\"));\n\nexport {\n NegativeOne,\n Zero,\n One,\n Two,\n WeiPerEther,\n MaxUint256,\n MinInt256,\n MaxInt256,\n};\n","\"use strict\";\n\nimport sha3 from \"js-sha3\";\n\nimport { arrayify, BytesLike } from \"@ethersproject/bytes\";\n\nexport function keccak256(data: BytesLike): string {\n return '0x' + sha3.keccak_256(arrayify(data));\n}\n","\"use strict\";\n\nlet _permanentCensorErrors = false;\nlet _censorErrors = false;\n\nconst LogLevels: { [ name: string ]: number } = { debug: 1, \"default\": 2, info: 2, warning: 3, error: 4, off: 5 };\nlet _logLevel = LogLevels[\"default\"];\n\nimport { version } from \"./_version\";\n\nlet _globalLogger: Logger = null;\n\nfunction _checkNormalize(): string {\n try {\n const missing: Array = [ ];\n\n // Make sure all forms of normalization are supported\n [\"NFD\", \"NFC\", \"NFKD\", \"NFKC\"].forEach((form) => {\n try {\n if (\"test\".normalize(form) !== \"test\") {\n throw new Error(\"bad normalize\");\n };\n } catch(error) {\n missing.push(form);\n }\n });\n\n if (missing.length) {\n throw new Error(\"missing \" + missing.join(\", \"));\n }\n\n if (String.fromCharCode(0xe9).normalize(\"NFD\") !== String.fromCharCode(0x65, 0x0301)) {\n throw new Error(\"broken implementation\")\n }\n } catch (error) {\n return error.message;\n }\n\n return null;\n}\n\nconst _normalizeError = _checkNormalize();\n\nexport enum LogLevel {\n DEBUG = \"DEBUG\",\n INFO = \"INFO\",\n WARNING = \"WARNING\",\n ERROR = \"ERROR\",\n OFF = \"OFF\"\n}\n\n\nexport enum ErrorCode {\n\n ///////////////////\n // Generic Errors\n\n // Unknown Error\n UNKNOWN_ERROR = \"UNKNOWN_ERROR\",\n\n // Not Implemented\n NOT_IMPLEMENTED = \"NOT_IMPLEMENTED\",\n\n // Unsupported Operation\n // - operation\n UNSUPPORTED_OPERATION = \"UNSUPPORTED_OPERATION\",\n\n // Network Error (i.e. Ethereum Network, such as an invalid chain ID)\n // - event (\"noNetwork\" is not re-thrown in provider.ready; otherwise thrown)\n NETWORK_ERROR = \"NETWORK_ERROR\",\n\n // Some sort of bad response from the server\n SERVER_ERROR = \"SERVER_ERROR\",\n\n // Timeout\n TIMEOUT = \"TIMEOUT\",\n\n ///////////////////\n // Operational Errors\n\n // Buffer Overrun\n BUFFER_OVERRUN = \"BUFFER_OVERRUN\",\n\n // Numeric Fault\n // - operation: the operation being executed\n // - fault: the reason this faulted\n NUMERIC_FAULT = \"NUMERIC_FAULT\",\n\n\n ///////////////////\n // Argument Errors\n\n // Missing new operator to an object\n // - name: The name of the class\n MISSING_NEW = \"MISSING_NEW\",\n\n // Invalid argument (e.g. value is incompatible with type) to a function:\n // - argument: The argument name that was invalid\n // - value: The value of the argument\n INVALID_ARGUMENT = \"INVALID_ARGUMENT\",\n\n // Missing argument to a function:\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n MISSING_ARGUMENT = \"MISSING_ARGUMENT\",\n\n // Too many arguments\n // - count: The number of arguments received\n // - expectedCount: The number of arguments expected\n UNEXPECTED_ARGUMENT = \"UNEXPECTED_ARGUMENT\",\n\n\n ///////////////////\n // Blockchain Errors\n\n // Call exception\n // - transaction: the transaction\n // - address?: the contract address\n // - args?: The arguments passed into the function\n // - method?: The Solidity method signature\n // - errorSignature?: The EIP848 error signature\n // - errorArgs?: The EIP848 error parameters\n // - reason: The reason (only for EIP848 \"Error(string)\")\n CALL_EXCEPTION = \"CALL_EXCEPTION\",\n\n // Insufficient funds (< value + gasLimit * gasPrice)\n // - transaction: the transaction attempted\n INSUFFICIENT_FUNDS = \"INSUFFICIENT_FUNDS\",\n\n // Nonce has already been used\n // - transaction: the transaction attempted\n NONCE_EXPIRED = \"NONCE_EXPIRED\",\n\n // The replacement fee for the transaction is too low\n // - transaction: the transaction attempted\n REPLACEMENT_UNDERPRICED = \"REPLACEMENT_UNDERPRICED\",\n\n // The gas limit could not be estimated\n // - transaction: the transaction passed to estimateGas\n UNPREDICTABLE_GAS_LIMIT = \"UNPREDICTABLE_GAS_LIMIT\",\n\n // The transaction was replaced by one with a higher gas price\n // - reason: \"cancelled\", \"replaced\" or \"repriced\"\n // - cancelled: true if reason == \"cancelled\" or reason == \"replaced\")\n // - hash: original transaction hash\n // - replacement: the full TransactionsResponse for the replacement\n // - receipt: the receipt of the replacement\n TRANSACTION_REPLACED = \"TRANSACTION_REPLACED\",\n};\n\nconst HEX = \"0123456789abcdef\";\n\nexport class Logger {\n readonly version: string;\n\n static errors = ErrorCode;\n\n static levels = LogLevel;\n\n constructor(version: string) {\n Object.defineProperty(this, \"version\", {\n enumerable: true,\n value: version,\n writable: false\n });\n }\n\n _log(logLevel: LogLevel, args: Array): void {\n const level = logLevel.toLowerCase();\n if (LogLevels[level] == null) {\n this.throwArgumentError(\"invalid log level name\", \"logLevel\", logLevel);\n }\n if (_logLevel > LogLevels[level]) { return; }\n console.log.apply(console, args);\n }\n\n debug(...args: Array): void {\n this._log(Logger.levels.DEBUG, args);\n }\n\n info(...args: Array): void {\n this._log(Logger.levels.INFO, args);\n }\n\n warn(...args: Array): void {\n this._log(Logger.levels.WARNING, args);\n }\n\n makeError(message: string, code?: ErrorCode, params?: any): Error {\n // Errors are being censored\n if (_censorErrors) {\n return this.makeError(\"censored error\", code, { });\n }\n\n if (!code) { code = Logger.errors.UNKNOWN_ERROR; }\n if (!params) { params = {}; }\n\n const messageDetails: Array = [];\n Object.keys(params).forEach((key) => {\n const value = params[key];\n try {\n if (value instanceof Uint8Array) {\n let hex = \"\";\n for (let i = 0; i < value.length; i++) {\n hex += HEX[value[i] >> 4];\n hex += HEX[value[i] & 0x0f];\n }\n messageDetails.push(key + \"=Uint8Array(0x\" + hex + \")\");\n } else {\n messageDetails.push(key + \"=\" + JSON.stringify(value));\n }\n } catch (error) {\n messageDetails.push(key + \"=\" + JSON.stringify(params[key].toString()));\n }\n });\n messageDetails.push(`code=${ code }`);\n messageDetails.push(`version=${ this.version }`);\n\n const reason = message;\n\n let url = \"\";\n\n switch (code) {\n case ErrorCode.NUMERIC_FAULT: {\n url = \"NUMERIC_FAULT\";\n const fault = message;\n\n switch (fault) {\n case \"overflow\": case \"underflow\": case \"division-by-zero\":\n url += \"-\" + fault;\n break;\n case \"negative-power\": case \"negative-width\":\n url += \"-unsupported\";\n break;\n case \"unbound-bitwise-result\":\n url += \"-unbound-result\";\n break;\n }\n break;\n }\n case ErrorCode.CALL_EXCEPTION:\n case ErrorCode.INSUFFICIENT_FUNDS:\n case ErrorCode.MISSING_NEW:\n case ErrorCode.NONCE_EXPIRED:\n case ErrorCode.REPLACEMENT_UNDERPRICED:\n case ErrorCode.TRANSACTION_REPLACED:\n case ErrorCode.UNPREDICTABLE_GAS_LIMIT:\n url = code;\n break;\n }\n\n if (url) {\n message += \" [ See: https:/\\/links.ethers.org/v5-errors-\" + url + \" ]\";\n }\n\n if (messageDetails.length) {\n message += \" (\" + messageDetails.join(\", \") + \")\";\n }\n\n // @TODO: Any??\n const error: any = new Error(message);\n error.reason = reason;\n error.code = code\n\n Object.keys(params).forEach(function(key) {\n error[key] = params[key];\n });\n\n return error;\n }\n\n throwError(message: string, code?: ErrorCode, params?: any): never {\n throw this.makeError(message, code, params);\n }\n\n throwArgumentError(message: string, name: string, value: any): never {\n return this.throwError(message, Logger.errors.INVALID_ARGUMENT, {\n argument: name,\n value: value\n });\n }\n\n assert(condition: any, message: string, code?: ErrorCode, params?: any): void {\n if (!!condition) { return; }\n this.throwError(message, code, params);\n }\n\n assertArgument(condition: any, message: string, name: string, value: any): void {\n if (!!condition) { return; }\n this.throwArgumentError(message, name, value);\n }\n\n checkNormalize(message?: string): void {\n if (message == null) { message = \"platform missing String.prototype.normalize\"; }\n if (_normalizeError) {\n this.throwError(\"platform missing String.prototype.normalize\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"String.prototype.normalize\", form: _normalizeError\n });\n }\n }\n\n checkSafeUint53(value: number, message?: string): void {\n if (typeof(value) !== \"number\") { return; }\n\n if (message == null) { message = \"value not safe\"; }\n\n if (value < 0 || value >= 0x1fffffffffffff) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"out-of-safe-range\",\n value: value\n });\n }\n\n if (value % 1) {\n this.throwError(message, Logger.errors.NUMERIC_FAULT, {\n operation: \"checkSafeInteger\",\n fault: \"non-integer\",\n value: value\n });\n }\n }\n\n checkArgumentCount(count: number, expectedCount: number, message?: string): void {\n if (message) {\n message = \": \" + message;\n } else {\n message = \"\";\n }\n\n if (count < expectedCount) {\n this.throwError(\"missing argument\" + message, Logger.errors.MISSING_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n\n if (count > expectedCount) {\n this.throwError(\"too many arguments\" + message, Logger.errors.UNEXPECTED_ARGUMENT, {\n count: count,\n expectedCount: expectedCount\n });\n }\n }\n\n checkNew(target: any, kind: any): void {\n if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n checkAbstract(target: any, kind: any): void {\n if (target === kind) {\n this.throwError(\n \"cannot instantiate abstract class \" + JSON.stringify(kind.name) + \" directly; use a sub-class\",\n Logger.errors.UNSUPPORTED_OPERATION,\n { name: target.name, operation: \"new\" }\n );\n } else if (target === Object || target == null) {\n this.throwError(\"missing new\", Logger.errors.MISSING_NEW, { name: kind.name });\n }\n }\n\n static globalLogger(): Logger {\n if (!_globalLogger) { _globalLogger = new Logger(version); }\n return _globalLogger;\n }\n\n static setCensorship(censorship: boolean, permanent?: boolean): void {\n if (!censorship && permanent) {\n this.globalLogger().throwError(\"cannot permanently disable censorship\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n if (_permanentCensorErrors) {\n if (!censorship) { return; }\n this.globalLogger().throwError(\"error censorship permanent\", Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"setCensorship\"\n });\n }\n\n _censorErrors = !!censorship;\n _permanentCensorErrors = !!permanent;\n }\n\n static setLogLevel(logLevel: LogLevel): void {\n const level = LogLevels[logLevel.toLowerCase()];\n if (level == null) {\n Logger.globalLogger().warn(\"invalid log level - \" + logLevel);\n return;\n }\n _logLevel = level;\n }\n\n static from(version: string): Logger {\n return new Logger(version);\n }\n}\n","export const version = \"logger/5.6.0\";\n","\"use strict\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nexport function defineReadOnly(object: T, name: K, value: T[K]): void {\n Object.defineProperty(object, name, {\n enumerable: true,\n value: value,\n writable: false,\n });\n}\n\n// Crawl up the constructor chain to find a static method\nexport function getStatic(ctor: any, key: string): T {\n for (let i = 0; i < 32; i++) {\n if (ctor[key]) { return ctor[key]; }\n if (!ctor.prototype || typeof(ctor.prototype) !== \"object\") { break; }\n ctor = Object.getPrototypeOf(ctor.prototype).constructor;\n }\n return null;\n}\n\nexport type Deferrable = {\n [ K in keyof T ]: T[K] | Promise;\n}\n\n\ntype Result = { key: string, value: any};\n\nexport async function resolveProperties(object: Readonly>): Promise {\n const promises: Array> = Object.keys(object).map((key) => {\n const value = object[>key];\n return Promise.resolve(value).then((v) => ({ key: key, value: v }));\n });\n\n const results = await Promise.all(promises);\n\n return results.reduce((accum, result) => {\n accum[(result.key)] = result.value;\n return accum;\n }, { });\n}\n\nexport function checkProperties(object: any, properties: { [ name: string ]: boolean }): void {\n if (!object || typeof(object) !== \"object\") {\n logger.throwArgumentError(\"invalid object\", \"object\", object);\n }\n\n Object.keys(object).forEach((key) => {\n if (!properties[key]) {\n logger.throwArgumentError(\"invalid object key - \" + key, \"transaction:\" + key, object);\n }\n });\n}\n\nexport function shallowCopy(object: T): T {\n const result: any = {};\n for (const key in object) { result[key] = object[key]; }\n return result;\n}\n\nconst opaque: { [key: string]: boolean } = { bigint: true, boolean: true, \"function\": true, number: true, string: true };\n\nfunction _isFrozen(object: any): boolean {\n\n // Opaque objects are not mutable, so safe to copy by assignment\n if (object === undefined || object === null || opaque[typeof(object)]) { return true; }\n\n if (Array.isArray(object) || typeof(object) === \"object\") {\n if (!Object.isFrozen(object)) { return false; }\n\n const keys = Object.keys(object);\n for (let i = 0; i < keys.length; i++) {\n let value: any = null;\n try {\n value = object[keys[i]];\n } catch (error) {\n // If accessing a value triggers an error, it is a getter\n // designed to do so (e.g. Result) and is therefore \"frozen\"\n continue;\n }\n\n if (!_isFrozen(value)) { return false; }\n }\n\n return true;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\n// Returns a new copy of object, such that no properties may be replaced.\n// New properties may be added only to objects.\nfunction _deepCopy(object: any): any {\n\n if (_isFrozen(object)) { return object; }\n\n // Arrays are mutable, so we need to create a copy\n if (Array.isArray(object)) {\n return Object.freeze(object.map((item) => deepCopy(item)));\n }\n\n if (typeof(object) === \"object\") {\n const result: { [ key: string ]: any } = {};\n for (const key in object) {\n const value = object[key];\n if (value === undefined) { continue; }\n defineReadOnly(result, key, deepCopy(value));\n }\n\n return result;\n }\n\n return logger.throwArgumentError(`Cannot deepCopy ${ typeof(object) }`, \"object\", object);\n}\n\nexport function deepCopy(object: T): T {\n return _deepCopy(object);\n}\n\nexport class Description {\n constructor(info: { [ K in keyof T ]: T[K] }) {\n for (const key in info) {\n (this)[key] = deepCopy(info[key]);\n }\n }\n}\n","export const version = \"properties/5.6.0\";\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","\"use strict\";\n\n//See: https://github.com/ethereum/wiki/wiki/RLP\n\nimport { arrayify, BytesLike, hexlify, isBytesLike } from \"@ethersproject/bytes\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nfunction arrayifyInteger(value: number): Array {\n const result = [];\n while (value) {\n result.unshift(value & 0xff);\n value >>= 8;\n }\n return result;\n}\n\nfunction unarrayifyInteger(data: Uint8Array, offset: number, length: number): number {\n let result = 0;\n for (let i = 0; i < length; i++) {\n result = (result * 256) + data[offset + i];\n }\n return result;\n}\n\nfunction _encode(object: Array | string): Array {\n if (Array.isArray(object)) {\n let payload: Array = [];\n object.forEach(function(child) {\n payload = payload.concat(_encode(child));\n });\n\n if (payload.length <= 55) {\n payload.unshift(0xc0 + payload.length)\n return payload;\n }\n\n const length = arrayifyInteger(payload.length);\n length.unshift(0xf7 + length.length);\n\n return length.concat(payload);\n\n }\n\n if (!isBytesLike(object)) {\n logger.throwArgumentError(\"RLP object must be BytesLike\", \"object\", object);\n }\n\n const data: Array = Array.prototype.slice.call(arrayify(object));\n\n if (data.length === 1 && data[0] <= 0x7f) {\n return data;\n\n } else if (data.length <= 55) {\n data.unshift(0x80 + data.length);\n return data;\n }\n\n const length = arrayifyInteger(data.length);\n length.unshift(0xb7 + length.length);\n\n return length.concat(data);\n}\n\nexport function encode(object: any): string {\n return hexlify(_encode(object));\n}\n\ntype Decoded = {\n result: any;\n consumed: number;\n};\n\nfunction _decodeChildren(data: Uint8Array, offset: number, childOffset: number, length: number): Decoded {\n const result = [];\n\n while (childOffset < offset + 1 + length) {\n const decoded = _decode(data, childOffset);\n\n result.push(decoded.result);\n\n childOffset += decoded.consumed;\n if (childOffset > offset + 1 + length) {\n logger.throwError(\"child data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n }\n\n return {consumed: (1 + length), result: result};\n}\n\n// returns { consumed: number, result: Object }\nfunction _decode(data: Uint8Array, offset: number): { consumed: number, result: any } {\n if (data.length === 0) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n // Array with extra length prefix\n if (data[offset] >= 0xf8) {\n const lengthLength = data[offset] - 0xf7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data short segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data long segment too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1 + lengthLength, lengthLength + length);\n\n } else if (data[offset] >= 0xc0) {\n const length = data[offset] - 0xc0;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n return _decodeChildren(data, offset, offset + 1, length);\n\n } else if (data[offset] >= 0xb8) {\n const lengthLength = data[offset] - 0xb7;\n if (offset + 1 + lengthLength > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const length = unarrayifyInteger(data, offset + 1, lengthLength);\n if (offset + 1 + lengthLength + length > data.length) {\n logger.throwError(\"data array too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1 + lengthLength, offset + 1 + lengthLength + length));\n return { consumed: (1 + lengthLength + length), result: result }\n\n } else if (data[offset] >= 0x80) {\n const length = data[offset] - 0x80;\n if (offset + 1 + length > data.length) {\n logger.throwError(\"data too short\", Logger.errors.BUFFER_OVERRUN, { });\n }\n\n const result = hexlify(data.slice(offset + 1, offset + 1 + length));\n return { consumed: (1 + length), result: result }\n }\n return { consumed: 1, result: hexlify(data[offset]) };\n}\n\nexport function decode(data: BytesLike): any {\n const bytes = arrayify(data);\n const decoded = _decode(bytes, 0);\n if (decoded.consumed !== bytes.length) {\n logger.throwArgumentError(\"invalid rlp data\", \"data\", data);\n }\n return decoded.result;\n}\n\n","export const version = \"rlp/5.6.0\";\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","import _ec from \"elliptic\";\nvar EC = _ec.ec;\nexport { EC };\n//# sourceMappingURL=elliptic.js.map","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","\"use strict\";\n\nimport { EC } from \"./elliptic\";\n\nimport { arrayify, BytesLike, hexlify, hexZeroPad, Signature, SignatureLike, splitSignature } from \"@ethersproject/bytes\";\nimport { defineReadOnly } from \"@ethersproject/properties\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\nlet _curve: EC = null\nfunction getCurve() {\n if (!_curve) {\n _curve = new EC(\"secp256k1\");\n }\n return _curve;\n}\n\nexport class SigningKey {\n\n readonly curve: string;\n\n readonly privateKey: string;\n readonly publicKey: string;\n readonly compressedPublicKey: string;\n\n //readonly address: string;\n\n readonly _isSigningKey: boolean;\n\n constructor(privateKey: BytesLike) {\n defineReadOnly(this, \"curve\", \"secp256k1\");\n\n defineReadOnly(this, \"privateKey\", hexlify(privateKey));\n\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n\n defineReadOnly(this, \"publicKey\", \"0x\" + keyPair.getPublic(false, \"hex\"));\n defineReadOnly(this, \"compressedPublicKey\", \"0x\" + keyPair.getPublic(true, \"hex\"));\n\n defineReadOnly(this, \"_isSigningKey\", true);\n }\n\n _addPoint(other: BytesLike): string {\n const p0 = getCurve().keyFromPublic(arrayify(this.publicKey));\n const p1 = getCurve().keyFromPublic(arrayify(other));\n return \"0x\" + p0.pub.add(p1.pub).encodeCompressed(\"hex\");\n }\n\n signDigest(digest: BytesLike): Signature {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const digestBytes = arrayify(digest);\n if (digestBytes.length !== 32) {\n logger.throwArgumentError(\"bad digest length\", \"digest\", digest);\n }\n const signature = keyPair.sign(digestBytes, { canonical: true });\n return splitSignature({\n recoveryParam: signature.recoveryParam,\n r: hexZeroPad(\"0x\" + signature.r.toString(16), 32),\n s: hexZeroPad(\"0x\" + signature.s.toString(16), 32),\n })\n }\n\n computeSharedSecret(otherKey: BytesLike): string {\n const keyPair = getCurve().keyFromPrivate(arrayify(this.privateKey));\n const otherKeyPair = getCurve().keyFromPublic(arrayify(computePublicKey(otherKey)));\n return hexZeroPad(\"0x\" + keyPair.derive(otherKeyPair.getPublic()).toString(16), 32);\n }\n\n static isSigningKey(value: any): value is SigningKey {\n return !!(value && value._isSigningKey);\n }\n}\n\nexport function recoverPublicKey(digest: BytesLike, signature: SignatureLike): string {\n const sig = splitSignature(signature);\n const rs = { r: arrayify(sig.r), s: arrayify(sig.s) };\n return \"0x\" + getCurve().recoverPubKey(arrayify(digest), rs, sig.recoveryParam).encode(\"hex\", false);\n}\n\nexport function computePublicKey(key: BytesLike, compressed?: boolean): string {\n const bytes = arrayify(key);\n\n if (bytes.length === 32) {\n const signingKey = new SigningKey(bytes);\n if (compressed) {\n return \"0x\" + getCurve().keyFromPrivate(bytes).getPublic(true, \"hex\");\n }\n return signingKey.publicKey;\n\n } else if (bytes.length === 33) {\n if (compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(false, \"hex\");\n\n } else if (bytes.length === 65) {\n if (!compressed) { return hexlify(bytes); }\n return \"0x\" + getCurve().keyFromPublic(bytes).getPublic(true, \"hex\");\n }\n\n return logger.throwArgumentError(\"invalid public or private key\", \"key\", \"[REDACTED]\");\n}\n\n","export const version = \"signing-key/5.6.0\";\n","export const version = \"transactions/5.6.0\";\n","\"use strict\";\n\nimport { getAddress } from \"@ethersproject/address\";\nimport { BigNumber, BigNumberish } from \"@ethersproject/bignumber\";\nimport { arrayify, BytesLike, DataOptions, hexConcat, hexDataLength, hexDataSlice, hexlify, hexZeroPad, isBytesLike, SignatureLike, splitSignature, stripZeros, } from \"@ethersproject/bytes\";\nimport { Zero } from \"@ethersproject/constants\";\nimport { keccak256 } from \"@ethersproject/keccak256\";\nimport { checkProperties } from \"@ethersproject/properties\";\nimport * as RLP from \"@ethersproject/rlp\";\nimport { computePublicKey, recoverPublicKey } from \"@ethersproject/signing-key\";\n\nimport { Logger } from \"@ethersproject/logger\";\nimport { version } from \"./_version\";\nconst logger = new Logger(version);\n\n///////////////////////////////\n// Exported Types\n\nexport type AccessList = Array<{ address: string, storageKeys: Array }>;\n\n// Input allows flexibility in describing an access list\nexport type AccessListish = AccessList |\n Array<[ string, Array ]> |\n Record>;\n\nexport enum TransactionTypes {\n legacy = 0,\n eip2930 = 1,\n eip1559 = 2,\n};\n\nexport type UnsignedTransaction = {\n to?: string;\n nonce?: number;\n\n gasLimit?: BigNumberish;\n gasPrice?: BigNumberish;\n\n data?: BytesLike;\n value?: BigNumberish;\n chainId?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessListish;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumberish;\n maxFeePerGas?: BigNumberish;\n}\n\nexport interface Transaction {\n hash?: string;\n\n to?: string;\n from?: string;\n nonce: number;\n\n gasLimit: BigNumber;\n gasPrice?: BigNumber;\n\n data: string;\n value: BigNumber;\n chainId: number;\n\n r?: string;\n s?: string;\n v?: number;\n\n // Typed-Transaction features\n type?: number | null;\n\n // EIP-2930; Type 1 & EIP-1559; Type 2\n accessList?: AccessList;\n\n // EIP-1559; Type 2\n maxPriorityFeePerGas?: BigNumber;\n maxFeePerGas?: BigNumber;\n}\n\n///////////////////////////////\n\nfunction handleAddress(value: string): string {\n if (value === \"0x\") { return null; }\n return getAddress(value);\n}\n\nfunction handleNumber(value: string): BigNumber {\n if (value === \"0x\") { return Zero; }\n return BigNumber.from(value);\n}\n\n// Legacy Transaction Fields\nconst transactionFields = [\n { name: \"nonce\", maxLength: 32, numeric: true },\n { name: \"gasPrice\", maxLength: 32, numeric: true },\n { name: \"gasLimit\", maxLength: 32, numeric: true },\n { name: \"to\", length: 20 },\n { name: \"value\", maxLength: 32, numeric: true },\n { name: \"data\" },\n];\n\nconst allowedTransactionKeys: { [ key: string ]: boolean } = {\n chainId: true, data: true, gasLimit: true, gasPrice:true, nonce: true, to: true, type: true, value: true\n}\n\nexport function computeAddress(key: BytesLike | string): string {\n const publicKey = computePublicKey(key);\n return getAddress(hexDataSlice(keccak256(hexDataSlice(publicKey, 1)), 12));\n}\n\nexport function recoverAddress(digest: BytesLike, signature: SignatureLike): string {\n return computeAddress(recoverPublicKey(arrayify(digest), signature));\n}\n\nfunction formatNumber(value: BigNumberish, name: string): Uint8Array {\n const result = stripZeros(BigNumber.from(value).toHexString());\n if (result.length > 32) {\n logger.throwArgumentError(\"invalid length for \" + name, (\"transaction:\" + name), value);\n }\n return result;\n}\n\nfunction accessSetify(addr: string, storageKeys: Array): { address: string,storageKeys: Array } {\n return {\n address: getAddress(addr),\n storageKeys: (storageKeys || []).map((storageKey, index) => {\n if (hexDataLength(storageKey) !== 32) {\n logger.throwArgumentError(\"invalid access list storageKey\", `accessList[${ addr }:${ index }]`, storageKey)\n }\n return storageKey.toLowerCase();\n })\n };\n}\n\nexport function accessListify(value: AccessListish): AccessList {\n if (Array.isArray(value)) {\n return (] | { address: string, storageKeys: Array}>>value).map((set, index) => {\n if (Array.isArray(set)) {\n if (set.length > 2) {\n logger.throwArgumentError(\"access list expected to be [ address, storageKeys[] ]\", `value[${ index }]`, set);\n }\n return accessSetify(set[0], set[1])\n }\n return accessSetify(set.address, set.storageKeys);\n });\n }\n\n const result: Array<{ address: string, storageKeys: Array }> = Object.keys(value).map((addr) => {\n const storageKeys: Record = value[addr].reduce((accum, storageKey) => {\n accum[storageKey] = true;\n return accum;\n }, >{ });\n return accessSetify(addr, Object.keys(storageKeys).sort())\n });\n result.sort((a, b) => (a.address.localeCompare(b.address)));\n return result;\n}\n\nfunction formatAccessList(value: AccessListish): Array<[ string, Array ]> {\n return accessListify(value).map((set) => [ set.address, set.storageKeys ]);\n}\n\nfunction _serializeEip1559(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // If there is an explicit gasPrice, make sure it matches the\n // EIP-1559 fees; otherwise they may not understand what they\n // think they are setting in terms of fee.\n if (transaction.gasPrice != null) {\n const gasPrice = BigNumber.from(transaction.gasPrice);\n const maxFeePerGas = BigNumber.from(transaction.maxFeePerGas || 0);\n if (!gasPrice.eq(maxFeePerGas)) {\n logger.throwArgumentError(\"mismatch EIP-1559 gasPrice != maxFeePerGas\", \"tx\", {\n gasPrice, maxFeePerGas\n });\n }\n }\n\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.maxPriorityFeePerGas || 0, \"maxPriorityFeePerGas\"),\n formatNumber(transaction.maxFeePerGas || 0, \"maxFeePerGas\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x02\", RLP.encode(fields)]);\n}\n\nfunction _serializeEip2930(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n const fields: any = [\n formatNumber(transaction.chainId || 0, \"chainId\"),\n formatNumber(transaction.nonce || 0, \"nonce\"),\n formatNumber(transaction.gasPrice || 0, \"gasPrice\"),\n formatNumber(transaction.gasLimit || 0, \"gasLimit\"),\n ((transaction.to != null) ? getAddress(transaction.to): \"0x\"),\n formatNumber(transaction.value || 0, \"value\"),\n (transaction.data || \"0x\"),\n (formatAccessList(transaction.accessList || []))\n ];\n\n if (signature) {\n const sig = splitSignature(signature);\n fields.push(formatNumber(sig.recoveryParam, \"recoveryParam\"));\n fields.push(stripZeros(sig.r));\n fields.push(stripZeros(sig.s));\n }\n\n return hexConcat([ \"0x01\", RLP.encode(fields)]);\n}\n\n// Legacy Transactions and EIP-155\nfunction _serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n checkProperties(transaction, allowedTransactionKeys);\n\n const raw: Array = [];\n\n transactionFields.forEach(function(fieldInfo) {\n let value = (transaction)[fieldInfo.name] || ([]);\n const options: DataOptions = { };\n if (fieldInfo.numeric) { options.hexPad = \"left\"; }\n value = arrayify(hexlify(value, options));\n\n // Fixed-width field\n if (fieldInfo.length && value.length !== fieldInfo.length && value.length > 0) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value);\n }\n\n // Variable-width (with a maximum)\n if (fieldInfo.maxLength) {\n value = stripZeros(value);\n if (value.length > fieldInfo.maxLength) {\n logger.throwArgumentError(\"invalid length for \" + fieldInfo.name, (\"transaction:\" + fieldInfo.name), value );\n }\n }\n\n raw.push(hexlify(value));\n });\n\n let chainId = 0;\n if (transaction.chainId != null) {\n // A chainId was provided; if non-zero we'll use EIP-155\n chainId = transaction.chainId;\n\n if (typeof(chainId) !== \"number\") {\n logger.throwArgumentError(\"invalid transaction.chainId\", \"transaction\", transaction);\n }\n\n } else if (signature && !isBytesLike(signature) && signature.v > 28) {\n // No chainId provided, but the signature is signing with EIP-155; derive chainId\n chainId = Math.floor((signature.v - 35) / 2);\n }\n\n // We have an EIP-155 transaction (chainId was specified and non-zero)\n if (chainId !== 0) {\n raw.push(hexlify(chainId)); // @TODO: hexValue?\n raw.push(\"0x\");\n raw.push(\"0x\");\n }\n\n // Requesting an unsigned transaction\n if (!signature) {\n return RLP.encode(raw);\n }\n\n // The splitSignature will ensure the transaction has a recoveryParam in the\n // case that the signTransaction function only adds a v.\n const sig = splitSignature(signature);\n\n // We pushed a chainId and null r, s on for hashing only; remove those\n let v = 27 + sig.recoveryParam\n if (chainId !== 0) {\n raw.pop();\n raw.pop();\n raw.pop();\n v += chainId * 2 + 8;\n\n // If an EIP-155 v (directly or indirectly; maybe _vs) was provided, check it!\n if (sig.v > 28 && sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n } else if (sig.v !== v) {\n logger.throwArgumentError(\"transaction.chainId/signature.v mismatch\", \"signature\", signature);\n }\n\n raw.push(hexlify(v));\n raw.push(stripZeros(arrayify(sig.r)));\n raw.push(stripZeros(arrayify(sig.s)));\n\n return RLP.encode(raw);\n}\n\nexport function serialize(transaction: UnsignedTransaction, signature?: SignatureLike): string {\n // Legacy and EIP-155 Transactions\n if (transaction.type == null || transaction.type === 0) {\n if (transaction.accessList != null) {\n logger.throwArgumentError(\"untyped transactions do not support accessList; include type: 1\", \"transaction\", transaction);\n }\n return _serialize(transaction, signature);\n }\n\n // Typed Transactions (EIP-2718)\n switch (transaction.type) {\n case 1:\n return _serializeEip2930(transaction, signature);\n case 2:\n return _serializeEip1559(transaction, signature);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ transaction.type }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"serializeTransaction\",\n transactionType: transaction.type\n });\n}\n\nfunction _parseEipSignature(tx: Transaction, fields: Array, serialize: (tx: UnsignedTransaction) => string): void {\n try {\n const recid = handleNumber(fields[0]).toNumber();\n if (recid !== 0 && recid !== 1) { throw new Error(\"bad recid\"); }\n tx.v = recid;\n } catch (error) {\n logger.throwArgumentError(\"invalid v for transaction type: 1\", \"v\", fields[0]);\n }\n\n tx.r = hexZeroPad(fields[1], 32);\n tx.s = hexZeroPad(fields[2], 32);\n\n try {\n const digest = keccak256(serialize(tx));\n tx.from = recoverAddress(digest, { r: tx.r, s: tx.s, recoveryParam: tx.v });\n } catch (error) {\n console.log(error);\n }\n}\n\nfunction _parseEip1559(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 9 && transaction.length !== 12) {\n logger.throwArgumentError(\"invalid component count for transaction type: 2\", \"payload\", hexlify(payload));\n }\n\n const maxPriorityFeePerGas = handleNumber(transaction[2]);\n const maxFeePerGas = handleNumber(transaction[3]);\n const tx: Transaction = {\n type: 2,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n maxPriorityFeePerGas: maxPriorityFeePerGas,\n maxFeePerGas: maxFeePerGas,\n gasPrice: null,\n gasLimit: handleNumber(transaction[4]),\n to: handleAddress(transaction[5]),\n value: handleNumber(transaction[6]),\n data: transaction[7],\n accessList: accessListify(transaction[8]),\n };\n\n // Unsigned EIP-1559 Transaction\n if (transaction.length === 9) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(9), _serializeEip1559);\n\n return tx;\n}\n\nfunction _parseEip2930(payload: Uint8Array): Transaction {\n const transaction = RLP.decode(payload.slice(1));\n\n if (transaction.length !== 8 && transaction.length !== 11) {\n logger.throwArgumentError(\"invalid component count for transaction type: 1\", \"payload\", hexlify(payload));\n }\n\n const tx: Transaction = {\n type: 1,\n chainId: handleNumber(transaction[0]).toNumber(),\n nonce: handleNumber(transaction[1]).toNumber(),\n gasPrice: handleNumber(transaction[2]),\n gasLimit: handleNumber(transaction[3]),\n to: handleAddress(transaction[4]),\n value: handleNumber(transaction[5]),\n data: transaction[6],\n accessList: accessListify(transaction[7])\n };\n\n // Unsigned EIP-2930 Transaction\n if (transaction.length === 8) { return tx; }\n\n tx.hash = keccak256(payload);\n\n _parseEipSignature(tx, transaction.slice(8), _serializeEip2930);\n\n return tx;\n}\n\n// Legacy Transactions and EIP-155\nfunction _parse(rawTransaction: Uint8Array): Transaction {\n const transaction = RLP.decode(rawTransaction);\n\n if (transaction.length !== 9 && transaction.length !== 6) {\n logger.throwArgumentError(\"invalid raw transaction\", \"rawTransaction\", rawTransaction);\n }\n\n const tx: Transaction = {\n nonce: handleNumber(transaction[0]).toNumber(),\n gasPrice: handleNumber(transaction[1]),\n gasLimit: handleNumber(transaction[2]),\n to: handleAddress(transaction[3]),\n value: handleNumber(transaction[4]),\n data: transaction[5],\n chainId: 0\n };\n\n // Legacy unsigned transaction\n if (transaction.length === 6) { return tx; }\n\n try {\n tx.v = BigNumber.from(transaction[6]).toNumber();\n\n } catch (error) {\n console.log(error);\n return tx;\n }\n\n tx.r = hexZeroPad(transaction[7], 32);\n tx.s = hexZeroPad(transaction[8], 32);\n\n if (BigNumber.from(tx.r).isZero() && BigNumber.from(tx.s).isZero()) {\n // EIP-155 unsigned transaction\n tx.chainId = tx.v;\n tx.v = 0;\n\n } else {\n // Signed Transaction\n\n tx.chainId = Math.floor((tx.v - 35) / 2);\n if (tx.chainId < 0) { tx.chainId = 0; }\n\n let recoveryParam = tx.v - 27;\n\n const raw = transaction.slice(0, 6);\n\n if (tx.chainId !== 0) {\n raw.push(hexlify(tx.chainId));\n raw.push(\"0x\");\n raw.push(\"0x\");\n recoveryParam -= tx.chainId * 2 + 8;\n }\n\n const digest = keccak256(RLP.encode(raw));\n try {\n tx.from = recoverAddress(digest, { r: hexlify(tx.r), s: hexlify(tx.s), recoveryParam: recoveryParam });\n } catch (error) {\n console.log(error);\n }\n\n tx.hash = keccak256(rawTransaction);\n }\n\n tx.type = null;\n\n return tx;\n}\n\n\nexport function parse(rawTransaction: BytesLike): Transaction {\n const payload = arrayify(rawTransaction);\n\n // Legacy and EIP-155 Transactions\n if (payload[0] > 0x7f) { return _parse(payload); }\n\n // Typed Transaction (EIP-2718)\n switch (payload[0]) {\n case 1:\n return _parseEip2930(payload);\n case 2:\n return _parseEip1559(payload);\n default:\n break;\n }\n\n return logger.throwError(`unsupported transaction type: ${ payload[0] }`, Logger.errors.UNSUPPORTED_OPERATION, {\n operation: \"parseTransaction\",\n transactionType: payload[0]\n });\n}\n\n",null,"var __spreadArrays = (this && this.__spreadArrays) || function () {\n for (var s = 0, i = 0, il = arguments.length; i < il; i++) s += arguments[i].length;\n for (var r = Array(s), k = 0, i = 0; i < il; i++)\n for (var a = arguments[i], j = 0, jl = a.length; j < jl; j++, k++)\n r[k] = a[j];\n return r;\n};\nvar BrowserInfo = /** @class */ (function () {\n function BrowserInfo(name, version, os) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.type = 'browser';\n }\n return BrowserInfo;\n}());\nexport { BrowserInfo };\nvar NodeInfo = /** @class */ (function () {\n function NodeInfo(version) {\n this.version = version;\n this.type = 'node';\n this.name = 'node';\n this.os = process.platform;\n }\n return NodeInfo;\n}());\nexport { NodeInfo };\nvar SearchBotDeviceInfo = /** @class */ (function () {\n function SearchBotDeviceInfo(name, version, os, bot) {\n this.name = name;\n this.version = version;\n this.os = os;\n this.bot = bot;\n this.type = 'bot-device';\n }\n return SearchBotDeviceInfo;\n}());\nexport { SearchBotDeviceInfo };\nvar BotInfo = /** @class */ (function () {\n function BotInfo() {\n this.type = 'bot';\n this.bot = true; // NOTE: deprecated test name instead\n this.name = 'bot';\n this.version = null;\n this.os = null;\n }\n return BotInfo;\n}());\nexport { BotInfo };\nvar ReactNativeInfo = /** @class */ (function () {\n function ReactNativeInfo() {\n this.type = 'react-native';\n this.name = 'react-native';\n this.version = null;\n this.os = null;\n }\n return ReactNativeInfo;\n}());\nexport { ReactNativeInfo };\n// tslint:disable-next-line:max-line-length\nvar SEARCHBOX_UA_REGEX = /alexa|bot|crawl(er|ing)|facebookexternalhit|feedburner|google web preview|nagios|postrank|pingdom|slurp|spider|yahoo!|yandex/;\nvar SEARCHBOT_OS_REGEX = /(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask\\ Jeeves\\/Teoma|ia_archiver)/;\nvar REQUIRED_VERSION_PARTS = 3;\nvar userAgentRules = [\n ['aol', /AOLShield\\/([0-9\\._]+)/],\n ['edge', /Edge\\/([0-9\\._]+)/],\n ['edge-ios', /EdgiOS\\/([0-9\\._]+)/],\n ['yandexbrowser', /YaBrowser\\/([0-9\\._]+)/],\n ['kakaotalk', /KAKAOTALK\\s([0-9\\.]+)/],\n ['samsung', /SamsungBrowser\\/([0-9\\.]+)/],\n ['silk', /\\bSilk\\/([0-9._-]+)\\b/],\n ['miui', /MiuiBrowser\\/([0-9\\.]+)$/],\n ['beaker', /BeakerBrowser\\/([0-9\\.]+)/],\n ['edge-chromium', /EdgA?\\/([0-9\\.]+)/],\n [\n 'chromium-webview',\n /(?!Chrom.*OPR)wv\\).*Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/,\n ],\n ['chrome', /(?!Chrom.*OPR)Chrom(?:e|ium)\\/([0-9\\.]+)(:?\\s|$)/],\n ['phantomjs', /PhantomJS\\/([0-9\\.]+)(:?\\s|$)/],\n ['crios', /CriOS\\/([0-9\\.]+)(:?\\s|$)/],\n ['firefox', /Firefox\\/([0-9\\.]+)(?:\\s|$)/],\n ['fxios', /FxiOS\\/([0-9\\.]+)/],\n ['opera-mini', /Opera Mini.*Version\\/([0-9\\.]+)/],\n ['opera', /Opera\\/([0-9\\.]+)(?:\\s|$)/],\n ['opera', /OPR\\/([0-9\\.]+)(:?\\s|$)/],\n ['ie', /Trident\\/7\\.0.*rv\\:([0-9\\.]+).*\\).*Gecko$/],\n ['ie', /MSIE\\s([0-9\\.]+);.*Trident\\/[4-7].0/],\n ['ie', /MSIE\\s(7\\.0)/],\n ['bb10', /BB10;\\sTouch.*Version\\/([0-9\\.]+)/],\n ['android', /Android\\s([0-9\\.]+)/],\n ['ios', /Version\\/([0-9\\._]+).*Mobile.*Safari.*/],\n ['safari', /Version\\/([0-9\\._]+).*Safari/],\n ['facebook', /FBAV\\/([0-9\\.]+)/],\n ['instagram', /Instagram\\s([0-9\\.]+)/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Mobile/],\n ['ios-webview', /AppleWebKit\\/([0-9\\.]+).*Gecko\\)$/],\n ['searchbot', SEARCHBOX_UA_REGEX],\n];\nvar operatingSystemRules = [\n ['iOS', /iP(hone|od|ad)/],\n ['Android OS', /Android/],\n ['BlackBerry OS', /BlackBerry|BB10/],\n ['Windows Mobile', /IEMobile/],\n ['Amazon OS', /Kindle/],\n ['Windows 3.11', /Win16/],\n ['Windows 95', /(Windows 95)|(Win95)|(Windows_95)/],\n ['Windows 98', /(Windows 98)|(Win98)/],\n ['Windows 2000', /(Windows NT 5.0)|(Windows 2000)/],\n ['Windows XP', /(Windows NT 5.1)|(Windows XP)/],\n ['Windows Server 2003', /(Windows NT 5.2)/],\n ['Windows Vista', /(Windows NT 6.0)/],\n ['Windows 7', /(Windows NT 6.1)/],\n ['Windows 8', /(Windows NT 6.2)/],\n ['Windows 8.1', /(Windows NT 6.3)/],\n ['Windows 10', /(Windows NT 10.0)/],\n ['Windows ME', /Windows ME/],\n ['Open BSD', /OpenBSD/],\n ['Sun OS', /SunOS/],\n ['Chrome OS', /CrOS/],\n ['Linux', /(Linux)|(X11)/],\n ['Mac OS', /(Mac_PowerPC)|(Macintosh)/],\n ['QNX', /QNX/],\n ['BeOS', /BeOS/],\n ['OS/2', /OS\\/2/],\n];\nexport function detect(userAgent) {\n if (!!userAgent) {\n return parseUserAgent(userAgent);\n }\n if (typeof document === 'undefined' &&\n typeof navigator !== 'undefined' &&\n navigator.product === 'ReactNative') {\n return new ReactNativeInfo();\n }\n if (typeof navigator !== 'undefined') {\n return parseUserAgent(navigator.userAgent);\n }\n return getNodeVersion();\n}\nfunction matchUserAgent(ua) {\n // opted for using reduce here rather than Array#first with a regex.test call\n // this is primarily because using the reduce we only perform the regex\n // execution once rather than once for the test and for the exec again below\n // probably something that needs to be benchmarked though\n return (ua !== '' &&\n userAgentRules.reduce(function (matched, _a) {\n var browser = _a[0], regex = _a[1];\n if (matched) {\n return matched;\n }\n var uaMatch = regex.exec(ua);\n return !!uaMatch && [browser, uaMatch];\n }, false));\n}\nexport function browserName(ua) {\n var data = matchUserAgent(ua);\n return data ? data[0] : null;\n}\nexport function parseUserAgent(ua) {\n var matchedRule = matchUserAgent(ua);\n if (!matchedRule) {\n return null;\n }\n var name = matchedRule[0], match = matchedRule[1];\n if (name === 'searchbot') {\n return new BotInfo();\n }\n var versionParts = match[1] && match[1].split(/[._]/).slice(0, 3);\n if (versionParts) {\n if (versionParts.length < REQUIRED_VERSION_PARTS) {\n versionParts = __spreadArrays(versionParts, createVersionParts(REQUIRED_VERSION_PARTS - versionParts.length));\n }\n }\n else {\n versionParts = [];\n }\n var version = versionParts.join('.');\n var os = detectOS(ua);\n var searchBotMatch = SEARCHBOT_OS_REGEX.exec(ua);\n if (searchBotMatch && searchBotMatch[1]) {\n return new SearchBotDeviceInfo(name, version, os, searchBotMatch[1]);\n }\n return new BrowserInfo(name, version, os);\n}\nexport function detectOS(ua) {\n for (var ii = 0, count = operatingSystemRules.length; ii < count; ii++) {\n var _a = operatingSystemRules[ii], os = _a[0], regex = _a[1];\n var match = regex.exec(ua);\n if (match) {\n return os;\n }\n }\n return null;\n}\nexport function getNodeVersion() {\n var isNode = typeof process !== 'undefined' && process.version;\n return isNode ? new NodeInfo(process.version.slice(1)) : null;\n}\nfunction createVersionParts(count) {\n var output = [];\n for (var ii = 0; ii < count; ii++) {\n output.push('0');\n }\n return output;\n}\n",null,null,null,null,null,null,null,null,"// A type of promise-like that resolves synchronously and supports only one observer\nexport const _Pact = /*#__PURE__*/(function() {\n\tfunction _Pact() {}\n\t_Pact.prototype.then = function(onFulfilled, onRejected) {\n\t\tconst result = new _Pact();\n\t\tconst state = this.s;\n\t\tif (state) {\n\t\t\tconst callback = state & 1 ? onFulfilled : onRejected;\n\t\t\tif (callback) {\n\t\t\t\ttry {\n\t\t\t\t\t_settle(result, 1, callback(this.v));\n\t\t\t\t} catch (e) {\n\t\t\t\t\t_settle(result, 2, e);\n\t\t\t\t}\n\t\t\t\treturn result;\n\t\t\t} else {\n\t\t\t\treturn this;\n\t\t\t}\n\t\t}\n\t\tthis.o = function(_this) {\n\t\t\ttry {\n\t\t\t\tconst value = _this.v;\n\t\t\t\tif (_this.s & 1) {\n\t\t\t\t\t_settle(result, 1, onFulfilled ? onFulfilled(value) : value);\n\t\t\t\t} else if (onRejected) {\n\t\t\t\t\t_settle(result, 1, onRejected(value));\n\t\t\t\t} else {\n\t\t\t\t\t_settle(result, 2, value);\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(result, 2, e);\n\t\t\t}\n\t\t};\n\t\treturn result;\n\t}\n\treturn _Pact;\n})();\n\n// Settles a pact synchronously\nexport function _settle(pact, state, value) {\n\tif (!pact.s) {\n\t\tif (value instanceof _Pact) {\n\t\t\tif (value.s) {\n\t\t\t\tif (state & 1) {\n\t\t\t\t\tstate = value.s;\n\t\t\t\t}\n\t\t\t\tvalue = value.v;\n\t\t\t} else {\n\t\t\t\tvalue.o = _settle.bind(null, pact, state);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\tif (value && value.then) {\n\t\t\tvalue.then(_settle.bind(null, pact, state), _settle.bind(null, pact, 2));\n\t\t\treturn;\n\t\t}\n\t\tpact.s = state;\n\t\tpact.v = value;\n\t\tconst observer = pact.o;\n\t\tif (observer) {\n\t\t\tobserver(pact);\n\t\t}\n\t}\n}\n\nexport function _isSettledPact(thenable) {\n\treturn thenable instanceof _Pact && thenable.s & 1;\n}\n\n// Converts argument to a function that always returns a Promise\nexport function _async(f) {\n\treturn function() {\n\t\tfor (var args = [], i = 0; i < arguments.length; i++) {\n\t\t\targs[i] = arguments[i];\n\t\t}\n\t\ttry {\n\t\t\treturn Promise.resolve(f.apply(this, args));\n\t\t} catch(e) {\n\t\t\treturn Promise.reject(e);\n\t\t}\n\t}\n}\n\n// Awaits on a value that may or may not be a Promise (equivalent to the await keyword in ES2015, with continuations passed explicitly)\nexport function _await(value, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(value) : value;\n\t}\n\tif (!value || !value.then) {\n\t\tvalue = Promise.resolve(value);\n\t}\n\treturn then ? value.then(then) : value;\n}\n\n// Awaits on a value that may or may not be a Promise, then ignores it\nexport function _awaitIgnored(value, direct) {\n\tif (!direct) {\n\t\treturn value && value.then ? value.then(_empty) : Promise.resolve();\n\t}\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continue(value, then) {\n\treturn value && value.then ? value.then(then) : then(value);\n}\n\n// Proceeds after a value has resolved, or proceeds immediately if the value is not thenable\nexport function _continueIgnored(value) {\n\tif (value && value.then) {\n\t\treturn value.then(_empty);\n\t}\n}\n\n// Asynchronously iterate through an object that has a length property, passing the index as the first argument to the callback (even as the length property changes)\nexport function _forTo(array, body, check) {\n\tvar i = -1, pact, reject;\n\tfunction _cycle(result) {\n\t\ttry {\n\t\t\twhile (++i < array.length && (!check || !check())) {\n\t\t\t\tresult = body(i);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (pact) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t} else {\n\t\t\t\tpact = result;\n\t\t\t}\n\t\t} catch (e) {\n\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t}\n\t}\n\t_cycle();\n\treturn pact;\n}\n\n// Asynchronously iterate through an object's properties (including properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forIn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tkeys.push(key);\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\n// Asynchronously iterate through an object's own properties (excluding properties inherited from the prototype)\n// Uses a snapshot of the object's properties\nexport function _forOwn(target, body, check) {\n\tvar keys = [];\n\tfor (var key in target) {\n\t\tif (Object.prototype.hasOwnProperty.call(target, key)) {\n\t\t\tkeys.push(key);\n\t\t}\n\t}\n\treturn _forTo(keys, function(i) { return body(keys[i]); }, check);\n}\n\nexport const _iteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.iterator || (Symbol.iterator = Symbol(\"Symbol.iterator\"))) : \"@@iterator\";\n\n// Asynchronously iterate through an object's values\n// Uses for...of if the runtime supports it, otherwise iterates until length on a copy\nexport function _forOf(target, body, check) {\n\tif (typeof target[_iteratorSymbol] === \"function\") {\n\t\tvar iterator = target[_iteratorSymbol](), step, pact, reject;\n\t\tfunction _cycle(result) {\n\t\t\ttry {\n\t\t\t\twhile (!(step = iterator.next()).done && (!check || !check())) {\n\t\t\t\t\tresult = body(step.value);\n\t\t\t\t\tif (result && result.then) {\n\t\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tresult.then(_cycle, reject || (reject = _settle.bind(null, pact = new _Pact(), 2)));\n\t\t\t\t\t\t\treturn;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tif (pact) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t} else {\n\t\t\t\t\tpact = result;\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\t_settle(pact || (pact = new _Pact()), 2, e);\n\t\t\t}\n\t\t}\n\t\t_cycle();\n\t\tif (iterator.return) {\n\t\t\tvar _fixup = function(value) {\n\t\t\t\ttry {\n\t\t\t\t\tif (!step.done) {\n\t\t\t\t\t\titerator.return();\n\t\t\t\t\t}\n\t\t\t\t} catch(e) {\n\t\t\t\t}\n\t\t\t\treturn value;\n\t\t\t}\n\t\t\tif (pact && pact.then) {\n\t\t\t\treturn pact.then(_fixup, function(e) {\n\t\t\t\t\tthrow _fixup(e);\n\t\t\t\t});\n\t\t\t}\n\t\t\t_fixup();\n\t\t}\n\t\treturn pact;\n\t}\n\t// No support for Symbol.iterator\n\tif (!(\"length\" in target)) {\n\t\tthrow new TypeError(\"Object is not iterable\");\n\t}\n\t// Handle live collections properly\n\tvar values = [];\n\tfor (var i = 0; i < target.length; i++) {\n\t\tvalues.push(target[i]);\n\t}\n\treturn _forTo(values, function(i) { return body(values[i]); }, check);\n}\n\nexport const _asyncIteratorSymbol = /*#__PURE__*/ typeof Symbol !== \"undefined\" ? (Symbol.asyncIterator || (Symbol.asyncIterator = Symbol(\"Symbol.asyncIterator\"))) : \"@@asyncIterator\";\n\n// Asynchronously iterate on a value using it's async iterator if present, or its synchronous iterator if missing\nexport function _forAwaitOf(target, body, check) {\n\tif (typeof target[_asyncIteratorSymbol] === \"function\") {\n\t\tvar pact = new _Pact();\n\t\tvar iterator = target[_asyncIteratorSymbol]();\n\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\treturn pact;\n\t\tfunction _resumeAfterBody(result) {\n\t\t\tif (check && check()) {\n\t\t\t\treturn _settle(pact, 1, iterator.return ? iterator.return().then(function() { return result; }) : result);\n\t\t\t}\n\t\t\titerator.next().then(_resumeAfterNext).then(void 0, _reject);\n\t\t}\n\t\tfunction _resumeAfterNext(step) {\n\t\t\tif (step.done) {\n\t\t\t\t_settle(pact, 1);\n\t\t\t} else {\n\t\t\t\tPromise.resolve(body(step.value)).then(_resumeAfterBody).then(void 0, _reject);\n\t\t\t}\n\t\t}\n\t\tfunction _reject(error) {\n\t\t\t_settle(pact, 2, iterator.return ? iterator.return().then(function() { return error; }) : error);\n\t\t}\n\t}\n\treturn Promise.resolve(_forOf(target, function(value) { return Promise.resolve(value).then(body); }, check));\n}\n\n// Asynchronously implement a generic for loop\nexport function _for(test, update, body) {\n\tvar stage;\n\tfor (;;) {\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t\tif (shouldContinue.then) {\n\t\t\tstage = 0;\n\t\t\tbreak;\n\t\t}\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.s;\n\t\t\t} else {\n\t\t\t\tstage = 1;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tif (update) {\n\t\t\tvar updateValue = update();\n\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\tstage = 2;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\tvar pact = new _Pact();\n\tvar reject = _settle.bind(null, pact, 2);\n\t(stage === 0 ? shouldContinue.then(_resumeAfterTest) : stage === 1 ? result.then(_resumeAfterBody) : updateValue.then(_resumeAfterUpdate)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tdo {\n\t\t\tif (update) {\n\t\t\t\tupdateValue = update();\n\t\t\t\tif (updateValue && updateValue.then && !_isSettledPact(updateValue)) {\n\t\t\t\t\tupdateValue.then(_resumeAfterUpdate).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\tshouldContinue = test();\n\t\t\tif (!shouldContinue || (_isSettledPact(shouldContinue) && !shouldContinue.v)) {\n\t\t\t\t_settle(pact, 1, result);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t}\n\t\t} while (!result || !result.then);\n\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterBody(result);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n\tfunction _resumeAfterUpdate() {\n\t\tif (shouldContinue = test()) {\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t} else {\n\t\t\t\t_resumeAfterTest(shouldContinue);\n\t\t\t}\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a do ... while loop\nexport function _do(body, test) {\n\tvar awaitBody;\n\tdo {\n\t\tvar result = body();\n\t\tif (result && result.then) {\n\t\t\tif (_isSettledPact(result)) {\n\t\t\t\tresult = result.v;\n\t\t\t} else {\n\t\t\t\tawaitBody = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t\tvar shouldContinue = test();\n\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\tshouldContinue = shouldContinue.v;\n\t\t}\n\t\tif (!shouldContinue) {\n\t\t\treturn result;\n\t\t}\n\t} while (!shouldContinue.then);\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : shouldContinue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterBody(value) {\n\t\tresult = value;\n\t\tfor (;;) {\n\t\t\tshouldContinue = test();\n\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t}\n\t\t\tif (!shouldContinue) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (shouldContinue.then) {\n\t\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\tresult = result.v;\n\t\t\t\t} else {\n\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterTest(shouldContinue) {\n\t\tif (shouldContinue) {\n\t\t\tdo {\n\t\t\t\tresult = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tif (_isSettledPact(result)) {\n\t\t\t\t\t\tresult = result.v;\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\t\t\treturn;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t\tshouldContinue = test();\n\t\t\t\tif (_isSettledPact(shouldContinue)) {\n\t\t\t\t\tshouldContinue = shouldContinue.v;\n\t\t\t\t}\n\t\t\t\tif (!shouldContinue) {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} while (!shouldContinue.then);\n\t\t\tshouldContinue.then(_resumeAfterTest).then(void 0, reject);\n\t\t} else {\n\t\t\t_settle(pact, 1, result);\n\t\t}\n\t}\n}\n\n// Asynchronously implement a switch statement\nexport function _switch(discriminant, cases) {\n\tvar dispatchIndex = -1;\n\tvar awaitBody;\n\touter: {\n\t\tfor (var i = 0; i < cases.length; i++) {\n\t\t\tvar test = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvar testValue = test();\n\t\t\t\tif (testValue && testValue.then) {\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tif (testValue === discriminant) {\n\t\t\t\t\tdispatchIndex = i;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Found the default case, set it as the pending dispatch case\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tif (dispatchIndex !== -1) {\n\t\t\tdo {\n\t\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\t\twhile (!body) {\n\t\t\t\t\tdispatchIndex++;\n\t\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t\t}\n\t\t\t\tvar result = body();\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tawaitBody = true;\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\t\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\t\tdispatchIndex++;\n\t\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t\treturn result;\n\t\t}\n\t}\n\tconst pact = new _Pact();\n\tconst reject = _settle.bind(null, pact, 2);\n\t(awaitBody ? result.then(_resumeAfterBody) : testValue.then(_resumeAfterTest)).then(void 0, reject);\n\treturn pact;\n\tfunction _resumeAfterTest(value) {\n\t\tfor (;;) {\n\t\t\tif (value === discriminant) {\n\t\t\t\tdispatchIndex = i;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tif (++i === cases.length) {\n\t\t\t\tif (dispatchIndex !== -1) {\n\t\t\t\t\tbreak;\n\t\t\t\t} else {\n\t\t\t\t\t_settle(pact, 1, result);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t}\n\t\t\ttest = cases[i][0];\n\t\t\tif (test) {\n\t\t\t\tvalue = test();\n\t\t\t\tif (value && value.then) {\n\t\t\t\t\tvalue.then(_resumeAfterTest).then(void 0, reject);\n\t\t\t\t\treturn;\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tdispatchIndex = i;\n\t\t\t}\n\t\t}\n\t\tdo {\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tvar result = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tdispatchIndex++;\n\t\t} while (fallthroughCheck && !fallthroughCheck());\n\t\t_settle(pact, 1, result);\n\t}\n\tfunction _resumeAfterBody(result) {\n\t\tfor (;;) {\n\t\t\tvar fallthroughCheck = cases[dispatchIndex][2];\n\t\t\tif (!fallthroughCheck || fallthroughCheck()) {\n\t\t\t\tbreak;\n\t\t\t}\n\t\t\tdispatchIndex++;\n\t\t\tvar body = cases[dispatchIndex][1];\n\t\t\twhile (!body) {\n\t\t\t\tdispatchIndex++;\n\t\t\t\tbody = cases[dispatchIndex][1];\n\t\t\t}\n\t\t\tresult = body();\n\t\t\tif (result && result.then) {\n\t\t\t\tresult.then(_resumeAfterBody).then(void 0, reject);\n\t\t\t\treturn;\n\t\t\t}\n\t\t}\n\t\t_settle(pact, 1, result);\n\t}\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _call(body, then, direct) {\n\tif (direct) {\n\t\treturn then ? then(body()) : body();\n\t}\n\ttry {\n\t\tvar result = Promise.resolve(body());\n\t\treturn then ? result.then(then) : result;\n\t} catch (e) {\n\t\treturn Promise.reject(e);\n\t}\n}\n\n// Asynchronously call a function and swallow the result\nexport function _callIgnored(body, direct) {\n\treturn _call(body, _empty, direct);\n}\n\n// Asynchronously call a function and pass the result to explicitly passed continuations\nexport function _invoke(body, then) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(then);\n\t}\n\treturn then(result);\n}\n\n// Asynchronously call a function and swallow the result\nexport function _invokeIgnored(body) {\n\tvar result = body();\n\tif (result && result.then) {\n\t\treturn result.then(_empty);\n\t}\n}\n\n// Asynchronously call a function and send errors to recovery continuation\nexport function _catch(body, recover) {\n\ttry {\n\t\tvar result = body();\n\t} catch(e) {\n\t\treturn recover(e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(void 0, recover);\n\t}\n\treturn result;\n}\n\n// Asynchronously await a promise and pass the result to a finally continuation\nexport function _finallyRethrows(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer(true, e);\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer.bind(null, false), finalizer.bind(null, true));\n\t}\n\treturn finalizer(false, result);\n}\n\n// Asynchronously await a promise and invoke a finally continuation that always overrides the result\nexport function _finally(body, finalizer) {\n\ttry {\n\t\tvar result = body();\n\t} catch (e) {\n\t\treturn finalizer();\n\t}\n\tif (result && result.then) {\n\t\treturn result.then(finalizer, finalizer);\n\t}\n\treturn finalizer();\n}\n\n// Rethrow or return a value from a finally continuation\nexport function _rethrow(thrown, value) {\n\tif (thrown)\n\t\tthrow value;\n\treturn value;\n}\n\n// Empty function to implement break and other control flow that ignores asynchronous results\nexport function _empty() {\n}\n\n// Sentinel value for early returns in generators \nexport const _earlyReturn = /*#__PURE__*/ {};\n\n// Asynchronously call a function and send errors to recovery continuation, skipping early returns\nexport function _catchInGenerator(body, recover) {\n\treturn _catch(body, function(e) {\n\t\tif (e === _earlyReturn) {\n\t\t\tthrow e;\n\t\t}\n\t\treturn recover(e);\n\t});\n}\n\n// Asynchronous generator class; accepts the entrypoint of the generator, to which it passes itself when the generator should start\nexport const _AsyncGenerator = /*#__PURE__*/(function() {\n\tfunction _AsyncGenerator(entry) {\n\t\tthis._entry = entry;\n\t\tthis._pact = null;\n\t\tthis._resolve = null;\n\t\tthis._return = null;\n\t\tthis._promise = null;\n\t}\n\n\tfunction _wrapReturnedValue(value) {\n\t\treturn { value: value, done: true };\n\t}\n\tfunction _wrapYieldedValue(value) {\n\t\treturn { value: value, done: false };\n\t}\n\n\t_AsyncGenerator.prototype._yield = function(value) {\n\t\t// Yield the value to the pending next call\n\t\tthis._resolve(value && value.then ? value.then(_wrapYieldedValue) : _wrapYieldedValue(value));\n\t\t// Return a pact for an upcoming next/return/throw call\n\t\treturn this._pact = new _Pact();\n\t};\n\t_AsyncGenerator.prototype.next = function(value) {\n\t\t// Advance the generator, starting it if it has yet to be started\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tconst _entry = _this._entry;\n\t\t\t\tif (_entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the next call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Start the generator\n\t\t\t\t_this._entry = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\tfunction returnValue(value) {\n\t\t\t\t\t_this._resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t_this._resolve = null;\n\t\t\t\t}\n\t\t\t\tvar result = _entry(_this);\n\t\t\t\tif (result && result.then) {\n\t\t\t\t\tresult.then(returnValue, function(error) {\n\t\t\t\t\t\tif (error === _earlyReturn) {\n\t\t\t\t\t\t\treturnValue(_this._return);\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\tconst pact = new _Pact();\n\t\t\t\t\t\t\t_this._resolve(pact);\n\t\t\t\t\t\t\t_this._pact = null;\n\t\t\t\t\t\t\t_this._resolve = null;\n\t\t\t\t\t\t\t_resolve(pact, 2, error);\n\t\t\t\t\t\t}\n\t\t\t\t\t});\n\t\t\t\t} else {\n\t\t\t\t\treturnValue(result);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\t// Generator is started and a yield expression is pending, settle it\n\t\t\t\t_this._pact = null;\n\t\t\t\t_this._resolve = resolve;\n\t\t\t\t_settle(_pact, 1, value);\n\t\t\t}\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.return = function(value) {\n\t\t// Early return from the generator if started, otherwise abandons the generator\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the return call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return the specified value\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn resolve(value && value.then ? value.then(_wrapReturnedValue) : _wrapReturnedValue(value));\n\t\t\t}\n\t\t\t// Settle the yield expression with a rejected \"early return\" value\n\t\t\t_this._return = value;\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, _earlyReturn);\n\t\t});\n\t};\n\t_AsyncGenerator.prototype.throw = function(error) {\n\t\t// Inject an exception into the pending yield expression\n\t\tconst _this = this;\n\t\treturn _this._promise = new Promise(function (resolve, reject) {\n\t\t\tconst _pact = _this._pact;\n\t\t\tif (_pact === null) {\n\t\t\t\tif (_this._entry === null) {\n\t\t\t\t\t// Generator is started, but not awaiting a yield expression\n\t\t\t\t\t// Abandon the throw call!\n\t\t\t\t\treturn resolve(_this._promise);\n\t\t\t\t}\n\t\t\t\t// Generator is not started, abandon it and return a rejected Promise containing the error\n\t\t\t\t_this._entry = null;\n\t\t\t\treturn reject(error);\n\t\t\t}\n\t\t\t// Settle the yield expression with the value as a rejection\n\t\t\t_this._resolve = resolve;\n\t\t\t_this._pact = null;\n\t\t\t_settle(_pact, 2, error);\n\t\t});\n\t};\n\n\t_AsyncGenerator.prototype[_asyncIteratorSymbol] = function() {\n\t\treturn this;\n\t};\n\t\n\treturn _AsyncGenerator;\n})();\n","export const WALLETCONNECT_LOGO_SVG_URL = `data:image/svg+xml,%3Csvg height='185' viewBox='0 0 300 185' width='300' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m61.4385429 36.2562612c48.9112241-47.8881663 128.2119871-47.8881663 177.1232091 0l5.886545 5.7634174c2.445561 2.3944081 2.445561 6.2765112 0 8.6709204l-20.136695 19.715503c-1.222781 1.1972051-3.2053 1.1972051-4.428081 0l-8.100584-7.9311479c-34.121692-33.4079817-89.443886-33.4079817-123.5655788 0l-8.6750562 8.4936051c-1.2227816 1.1972041-3.205301 1.1972041-4.4280806 0l-20.1366949-19.7155031c-2.4455612-2.3944092-2.4455612-6.2765122 0-8.6709204zm218.7677961 40.7737449 17.921697 17.546897c2.445549 2.3943969 2.445563 6.2764769.000031 8.6708899l-80.810171 79.121134c-2.445544 2.394426-6.410582 2.394453-8.85616.000062-.00001-.00001-.000022-.000022-.000032-.000032l-57.354143-56.154572c-.61139-.598602-1.60265-.598602-2.21404 0-.000004.000004-.000007.000008-.000011.000011l-57.3529212 56.154531c-2.4455368 2.394432-6.4105755 2.394472-8.8561612.000087-.0000143-.000014-.0000296-.000028-.0000449-.000044l-80.81241943-79.122185c-2.44556021-2.394408-2.44556021-6.2765115 0-8.6709197l17.92172963-17.5468673c2.4455602-2.3944082 6.4105989-2.3944082 8.8561602 0l57.3549775 56.155357c.6113908.598602 1.602649.598602 2.2140398 0 .0000092-.000009.0000174-.000017.0000265-.000024l57.3521031-56.155333c2.445505-2.3944633 6.410544-2.3945531 8.856161-.0002.000034.0000336.000068.0000673.000101.000101l57.354902 56.155432c.61139.598601 1.60265.598601 2.21404 0l57.353975-56.1543249c2.445561-2.3944092 6.410599-2.3944092 8.85616 0z' fill='%233b99fc'/%3E%3C/svg%3E`;","export const WALLETCONNECT_HEADER_TEXT = \"WalletConnect\";\n\nexport const ANIMATION_DURATION = 300;\nexport const DEFAULT_BUTTON_COLOR = \"rgb(64, 153, 255)\";\n\nexport const WALLETCONNECT_WRAPPER_ID = \"walletconnect-wrapper\";\nexport const WALLETCONNECT_STYLE_ID = \"walletconnect-style-sheet\";\nexport const WALLETCONNECT_MODAL_ID = \"walletconnect-qrcode-modal\";\nexport const WALLETCONNECT_CLOSE_BUTTON_ID = \"walletconnect-qrcode-close\";\nexport const WALLETCONNECT_CTA_TEXT_ID = \"walletconnect-qrcode-text\";\nexport const WALLETCONNECT_CONNECT_BUTTON_ID = \"walletconnect-connect-button\";\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\nimport { WALLETCONNECT_LOGO_SVG_URL } from \"../assets/logo\";\nimport { WALLETCONNECT_HEADER_TEXT, WALLETCONNECT_CLOSE_BUTTON_ID } from \"../constants\";\n\ninterface HeaderProps {\n onClose: any;\n}\n\nfunction Header(props: HeaderProps) {\n return (\n
\n \n

{WALLETCONNECT_HEADER_TEXT}

\n
\n
\n
\n
\n
\n
\n
\n );\n}\n\nexport default Header;\n","import * as React from \"react\";\n\nimport { WALLETCONNECT_CONNECT_BUTTON_ID } from \"../constants\";\n\ninterface ConnectButtonProps {\n name: string;\n color: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction ConnectButton(props: ConnectButtonProps) {\n return (\n \n {props.name}\n \n );\n}\n\nexport default ConnectButton;\n","import * as React from \"react\";\nimport { CARET_SVG_URL } from \"../assets/caret\";\n\ninterface WalletButtonProps {\n color: string;\n name: string;\n logo: string;\n href: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletButton(props: WalletButtonProps) {\n const { color, href, name, logo, onClick } = props;\n return (\n \n

{name}

\n
\n
\n \n \n \n );\n}\n\nexport default WalletButton;\n","export const CARET_SVG_URL = `data:image/svg+xml,%3Csvg fill='none' height='18' viewBox='0 0 8 18' width='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath clip-rule='evenodd' d='m.586301.213898c-.435947.33907-.5144813.967342-.175411 1.403292l4.87831 6.27212c.28087.36111.28087.86677 0 1.22788l-4.878311 6.27211c-.33907.436-.260536 1.0642.175412 1.4033.435949.3391 1.064219.2605 1.403289-.1754l4.87832-6.2721c.84259-1.08336.84259-2.60034 0-3.68367l-4.87832-6.27212c-.33907-.4359474-.96734-.514482-1.403289-.175412z' fill='%233c4252' fill-rule='evenodd'/%3E%3C/svg%3E`;","import * as React from \"react\";\n\ninterface WalletIconProps {\n color: string;\n logo: string;\n href: string;\n name: string;\n onClick: (event: React.MouseEvent) => void;\n}\n\nfunction WalletIcon(props: WalletIconProps) {\n const { color, href, name, logo, onClick } = props;\n const fontSize = window.innerWidth < 768 ? `${name.length > 8 ? 2.5 : 2.7}vw` : \"inherit\";\n return (\n \n \n
\n {name}\n
\n \n );\n}\n\nexport default WalletIcon;\n","import * as React from \"react\";\nimport { IMobileRegistryEntry, IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { isAndroid, formatIOSMobile, saveMobileLinkInfo } from \"@walletconnect/browser-utils\";\n\nimport { DEFAULT_BUTTON_COLOR, WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport ConnectButton from \"./ConnectButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletButton from \"./WalletButton\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport WalletIcon from \"./WalletIcon\";\nimport { TextMap } from \"../types\";\n\ninterface LinkDisplayProps {\n mobile: boolean;\n text: TextMap;\n uri: string;\n qrcodeModalOptions?: IQRCodeModalOptions;\n links: IMobileRegistryEntry[];\n errorMessage: string;\n}\n\nconst GRID_MIN_COUNT = 5;\nconst LINKS_PER_PAGE = 12;\n\nfunction LinkDisplay(props: LinkDisplayProps) {\n const android = isAndroid();\n const [input, setInput] = React.useState(\"\");\n const [filter, setFilter] = React.useState(\"\");\n const [page, setPage] = React.useState(1);\n const links = filter\n ? props.links.filter(link => link.name.toLowerCase().includes(filter.toLowerCase()))\n : props.links;\n const errorMessage = props.errorMessage;\n const grid = filter || links.length > GRID_MIN_COUNT;\n const pages = Math.ceil(links.length / LINKS_PER_PAGE);\n const range = [(page - 1) * LINKS_PER_PAGE + 1, page * LINKS_PER_PAGE];\n const pageLinks = links.length\n ? links.filter((_, index) => index + 1 >= range[0] && index + 1 <= range[1])\n : [];\n const hasPaging = !!(!android && pages > 1);\n let filterTimeout: any = undefined;\n function handleInput(e) {\n setInput(e.target.value);\n clearTimeout(filterTimeout);\n if (e.target.value) {\n filterTimeout = setTimeout(() => {\n setFilter(e.target.value);\n setPage(1);\n }, 1000);\n } else {\n setInput(\"\");\n setFilter(\"\");\n setPage(1);\n }\n }\n\n return (\n
\n

\n {android ? props.text.connect_mobile_wallet : props.text.choose_preferred_wallet}\n

\n {!android && (\n \n )}\n \n {!android ? (\n pageLinks.length ? (\n pageLinks.map((entry: IMobileRegistryEntry) => {\n const { color, name, shortName, logo } = entry;\n const href = formatIOSMobile(props.uri, entry);\n const handleClickIOS = React.useCallback(() => {\n saveMobileLinkInfo({\n name,\n href,\n });\n }, [pageLinks]);\n return !grid ? (\n \n ) : (\n \n );\n })\n ) : (\n <>\n

\n {errorMessage.length\n ? props.errorMessage\n : !!props.links.length && !links.length\n ? props.text.no_wallets_found\n : props.text.loading}\n

\n \n )\n ) : (\n {\n saveMobileLinkInfo({\n name: \"Unknown\",\n href: props.uri,\n });\n }, [])}\n />\n )}\n
\n {hasPaging && (\n
\n {Array(pages)\n .fill(0)\n .map((_, index) => {\n const pageNumber = index + 1;\n const selected = page === pageNumber;\n return (\n setPage(pageNumber)}\n >\n {pageNumber}\n \n );\n })}\n
\n )}\n \n );\n}\n\nexport default LinkDisplay;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n\ninterface NotificationProps {\n message: string;\n}\n\nfunction Notification(props: NotificationProps) {\n const show = !!props.message.trim();\n return (\n
\n {props.message}\n
\n );\n}\n\nexport default Notification;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\nimport QRCode from \"qrcode\";\nimport copy from \"copy-to-clipboard\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Notification from \"./Notification\";\n\nimport { WALLETCONNECT_CTA_TEXT_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\nasync function formatQRCodeImage(data: string) {\n let result = \"\";\n const dataString = await QRCode.toString(data, { margin: 0, type: \"svg\" });\n if (typeof dataString === \"string\") {\n result = dataString.replace(\" {\n (async () => {\n setSvg(await formatQRCodeImage(props.uri));\n })();\n }, []);\n\n const copyToClipboard = () => {\n const success = copy(props.uri);\n if (success) {\n setNotification(props.text.copied_to_clipboard);\n setInterval(() => setNotification(\"\"), 1200);\n } else {\n setNotification(\"Error\");\n setInterval(() => setNotification(\"\"), 1200);\n }\n };\n\n return (\n
\n

\n {props.text.scan_qrcode_with_wallet}\n

\n
\n \n \n
\n );\n}\n\nexport default QRCodeDisplay;\n","import * as React from \"react\";\nimport {\n IMobileRegistryEntry,\n IQRCodeModalOptions,\n IAppRegistry,\n IMobileLinkInfo,\n} from \"@walletconnect/types\";\nimport {\n isMobile,\n isAndroid,\n formatIOSMobile,\n saveMobileLinkInfo,\n getMobileLinkRegistry,\n getWalletRegistryUrl,\n formatMobileRegistry,\n} from \"@walletconnect/browser-utils\";\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Header from \"./Header\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport LinkDisplay from \"./LinkDisplay\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport QRCodeDisplay from \"./QRCodeDisplay\";\n\nimport { WALLETCONNECT_MODAL_ID } from \"../constants\";\nimport { TextMap } from \"../types\";\n\ninterface ModalProps {\n text: TextMap;\n uri: string;\n onClose: any;\n qrcodeModalOptions?: IQRCodeModalOptions;\n}\n\nfunction Modal(props: ModalProps) {\n const android = isAndroid();\n const mobile = isMobile();\n\n const whitelist = mobile\n ? props.qrcodeModalOptions && props.qrcodeModalOptions.mobileLinks\n ? props.qrcodeModalOptions.mobileLinks\n : undefined\n : props.qrcodeModalOptions && props.qrcodeModalOptions.desktopLinks\n ? props.qrcodeModalOptions.desktopLinks\n : undefined;\n const [loading, setLoading] = React.useState(false);\n const [fetched, setFetched] = React.useState(false);\n const [displayQRCode, setDisplayQRCode] = React.useState(!mobile);\n const displayProps = {\n mobile,\n text: props.text,\n uri: props.uri,\n qrcodeModalOptions: props.qrcodeModalOptions,\n };\n\n const [singleLinkHref, setSingleLinkHref] = React.useState(\"\");\n const [hasSingleLink, setHasSingleLink] = React.useState(false);\n const [links, setLinks] = React.useState([]);\n const [errorMessage, setErrorMessage] = React.useState(\"\");\n\n const getLinksIfNeeded = () => {\n if (fetched || loading || (whitelist && !whitelist.length) || links.length > 0) {\n return;\n }\n\n React.useEffect(() => {\n const initLinks = async () => {\n if (android) return;\n setLoading(true);\n try {\n const url =\n props.qrcodeModalOptions && props.qrcodeModalOptions.registryUrl\n ? props.qrcodeModalOptions.registryUrl\n : getWalletRegistryUrl();\n const registryResponse = await fetch(url)\n const registry = (await registryResponse.json()).listings as IAppRegistry;\n const platform = mobile ? \"mobile\" : \"desktop\";\n const _links = getMobileLinkRegistry(formatMobileRegistry(registry, platform), whitelist);\n setLoading(false);\n setFetched(true);\n setErrorMessage(!_links.length ? props.text.no_supported_wallets : \"\");\n setLinks(_links);\n const hasSingleLink = _links.length === 1;\n if (hasSingleLink) {\n setSingleLinkHref(formatIOSMobile(props.uri, _links[0]));\n setDisplayQRCode(true);\n }\n setHasSingleLink(hasSingleLink);\n } catch (e) {\n setLoading(false);\n setFetched(true);\n setErrorMessage(props.text.something_went_wrong);\n console.error(e); // eslint-disable-line no-console\n }\n };\n initLinks();\n });\n };\n\n getLinksIfNeeded();\n\n const rightSelected = mobile ? displayQRCode : !displayQRCode;\n return (\n
\n
\n
\n {hasSingleLink && displayQRCode ? (\n
\n saveMobileLinkInfo({ name: links[0].name, href: singleLinkHref })}\n href={singleLinkHref}\n rel=\"noopener noreferrer\"\n target=\"_blank\"\n >\n {props.text.connect_with + \" \" + (hasSingleLink ? links[0].name : \"\") + \" ›\"}\n \n
\n ) : android || loading || (!loading && links.length) ? (\n \n \n ) : null}\n\n
\n {displayQRCode || (!android && !loading && !links.length) ? (\n \n ) : (\n \n )}\n
\n
\n
\n );\n}\n\nexport default Modal;\n","import { TextMap } from \"../types\";\n\nconst de: TextMap = {\n choose_preferred_wallet: \"Wähle bevorzugte Wallet\",\n connect_mobile_wallet: \"Verbinde mit Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scanne den QR-code mit einer WalletConnect kompatiblen Wallet\",\n connect: \"Verbinden\",\n qrcode: \"QR-Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"In die Zwischenablage kopieren\",\n copied_to_clipboard: \"In die Zwischenablage kopiert!\",\n connect_with: \"Verbinden mit Hilfe von\",\n loading: \"Laden...\",\n something_went_wrong: \"Etwas ist schief gelaufen\",\n no_supported_wallets: \"Es gibt noch keine unterstützten Wallet\",\n no_wallets_found: \"keine Wallet gefunden\",\n};\n\nexport default de;\n","import { TextMap } from \"../types\";\n\nimport de from \"./de\";\nimport en from \"./en\";\nimport es from \"./es\";\nimport fr from \"./fr\";\nimport ko from \"./ko\";\nimport pt from \"./pt\";\nimport zh from \"./zh\";\nimport fa from \"./fa\";\n\nconst languages: { [lang: string]: TextMap } = { de, en, es, fr, ko, pt, zh, fa };\n\nexport default languages;\n","import { TextMap } from \"../types\";\n\nconst en: TextMap = {\n choose_preferred_wallet: \"Choose your preferred wallet\",\n connect_mobile_wallet: \"Connect to Mobile Wallet\",\n scan_qrcode_with_wallet: \"Scan QR code with a WalletConnect-compatible wallet\",\n connect: \"Connect\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copy to clipboard\",\n copied_to_clipboard: \"Copied to clipboard!\",\n connect_with: \"Connect with\",\n loading: \"Loading...\",\n something_went_wrong: \"Something went wrong\",\n no_supported_wallets: \"There are no supported wallets yet\",\n no_wallets_found: \"No wallets found\",\n};\n\nexport default en;\n","import { TextMap } from \"../types\";\n\nconst es: TextMap = {\n choose_preferred_wallet: \"Elige tu billetera preferida\",\n connect_mobile_wallet: \"Conectar a billetera móvil\",\n scan_qrcode_with_wallet: \"Escanea el código QR con una billetera compatible con WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvil\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Conectar mediante\",\n loading: \"Cargando...\",\n something_went_wrong: \"Algo salió mal\",\n no_supported_wallets: \"Todavía no hay billeteras compatibles\",\n no_wallets_found: \"No se encontraron billeteras\",\n};\n\nexport default es;\n","import { TextMap } from \"../types\";\n\nconst fr: TextMap = {\n choose_preferred_wallet: \"Choisissez votre portefeuille préféré\",\n connect_mobile_wallet: \"Se connecter au portefeuille mobile\",\n scan_qrcode_with_wallet: \"Scannez le QR code avec un portefeuille compatible WalletConnect\",\n connect: \"Se connecter\",\n qrcode: \"QR Code\",\n mobile: \"Mobile\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copier\",\n copied_to_clipboard: \"Copié!\",\n connect_with: \"Connectez-vous à l'aide de\",\n loading: \"Chargement...\",\n something_went_wrong: \"Quelque chose a mal tourné\",\n no_supported_wallets: \"Il n'y a pas encore de portefeuilles pris en charge\",\n no_wallets_found: \"Aucun portefeuille trouvé\",\n};\n\nexport default fr;\n","import { TextMap } from \"../types\";\n\nconst ko: TextMap = {\n choose_preferred_wallet: \"원하는 지갑을 선택하세요\",\n connect_mobile_wallet: \"모바일 지갑과 연결\",\n scan_qrcode_with_wallet: \"WalletConnect 지원 지갑에서 QR코드를 스캔하세요\",\n connect: \"연결\",\n qrcode: \"QR 코드\",\n mobile: \"모바일\",\n desktop: \"데스크탑\",\n copy_to_clipboard: \"클립보드에 복사\",\n copied_to_clipboard: \"클립보드에 복사되었습니다!\",\n connect_with: \"와 연결하다\",\n loading: \"로드 중...\",\n something_went_wrong: \"문제가 발생했습니다.\",\n no_supported_wallets: \"아직 지원되는 지갑이 없습니다\",\n no_wallets_found: \"지갑을 찾을 수 없습니다\",\n};\n\nexport default ko;\n","import { TextMap } from \"../types\";\n\nconst pt: TextMap = {\n choose_preferred_wallet: \"Escolha sua carteira preferida\",\n connect_mobile_wallet: \"Conectar-se à carteira móvel\",\n scan_qrcode_with_wallet: \"Ler o código QR com uma carteira compatível com WalletConnect\",\n connect: \"Conectar\",\n qrcode: \"Código QR\",\n mobile: \"Móvel\",\n desktop: \"Desktop\",\n copy_to_clipboard: \"Copiar\",\n copied_to_clipboard: \"Copiado!\",\n connect_with: \"Ligar por meio de\",\n loading: \"Carregamento...\",\n something_went_wrong: \"Algo correu mal\",\n no_supported_wallets: \"Ainda não há carteiras suportadas\",\n no_wallets_found: \"Nenhuma carteira encontrada\",\n};\n\nexport default pt;\n","import { TextMap } from \"../types\";\n\nconst zh: TextMap = {\n choose_preferred_wallet: \"选择你的钱包\",\n connect_mobile_wallet: \"连接至移动端钱包\",\n scan_qrcode_with_wallet: \"使用兼容 WalletConnect 的钱包扫描二维码\",\n connect: \"连接\",\n qrcode: \"二维码\",\n mobile: \"移动\",\n desktop: \"桌面\",\n copy_to_clipboard: \"复制到剪贴板\",\n copied_to_clipboard: \"复制到剪贴板成功!\",\n connect_with: \"通过以下方式连接\",\n loading: \"正在加载...\",\n something_went_wrong: \"出了问题\",\n no_supported_wallets: \"目前还没有支持的钱包\",\n no_wallets_found: \"没有找到钱包\",\n};\n\nexport default zh;\n","import { TextMap } from \"../types\";\n\nconst fa: TextMap = {\n choose_preferred_wallet: \"کیف پول مورد نظر خود را انتخاب کنید\",\n connect_mobile_wallet: \"به کیف پول موبایل وصل شوید\",\n scan_qrcode_with_wallet: \"کد QR را با یک کیف پول سازگار با WalletConnect اسکن کنید\",\n connect: \"اتصال\",\n qrcode: \"کد QR\",\n mobile: \"سیار\",\n desktop: \"دسکتاپ\",\n copy_to_clipboard: \"کپی به کلیپ بورد\",\n copied_to_clipboard: \"در کلیپ بورد کپی شد!\",\n connect_with: \"ارتباط با\",\n loading: \"...بارگذاری\",\n something_went_wrong: \"مشکلی پیش آمد\",\n no_supported_wallets: \"هنوز هیچ کیف پول پشتیبانی شده ای وجود ندارد\",\n no_wallets_found: \"هیچ کیف پولی پیدا نشد\",\n};\n\nexport default fa;\n","// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport * as React from \"react\";\n// @ts-ignore\nimport * as ReactDOM from \"react-dom\";\nimport { getDocumentOrThrow, getNavigatorOrThrow } from \"@walletconnect/browser-utils\";\n\nimport { WALLETCONNECT_STYLE_SHEET } from \"./assets/style\";\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nimport Modal from \"./components/Modal\";\nimport Languages from \"./languages\";\nimport {\n ANIMATION_DURATION,\n WALLETCONNECT_WRAPPER_ID,\n WALLETCONNECT_MODAL_ID,\n WALLETCONNECT_STYLE_ID,\n} from \"./constants\";\nimport { IQRCodeModalOptions } from \"@walletconnect/types\";\nimport { TextMap } from \"./types\";\n\nfunction injectStyleSheet() {\n const doc = getDocumentOrThrow();\n const prev = doc.getElementById(WALLETCONNECT_STYLE_ID);\n if (prev) {\n doc.head.removeChild(prev);\n }\n const style = doc.createElement(\"style\");\n style.setAttribute(\"id\", WALLETCONNECT_STYLE_ID);\n style.innerText = WALLETCONNECT_STYLE_SHEET;\n doc.head.appendChild(style);\n}\n\nfunction renderWrapper(): HTMLDivElement {\n const doc = getDocumentOrThrow();\n const wrapper = doc.createElement(\"div\");\n wrapper.setAttribute(\"id\", WALLETCONNECT_WRAPPER_ID);\n doc.body.appendChild(wrapper);\n return wrapper;\n}\n\nfunction triggerCloseAnimation(): void {\n const doc = getDocumentOrThrow();\n const modal = doc.getElementById(WALLETCONNECT_MODAL_ID);\n if (modal) {\n modal.className = modal.className.replace(\"fadeIn\", \"fadeOut\");\n setTimeout(() => {\n const wrapper = doc.getElementById(WALLETCONNECT_WRAPPER_ID);\n if (wrapper) {\n doc.body.removeChild(wrapper);\n }\n }, ANIMATION_DURATION);\n }\n}\n\nfunction getWrappedCallback(cb: any): any {\n return () => {\n triggerCloseAnimation();\n if (cb) {\n cb();\n }\n };\n}\n\nfunction getText(): TextMap {\n const lang = getNavigatorOrThrow().language.split(\"-\")[0] || \"en\";\n return Languages[lang] || Languages[\"en\"];\n}\n\nexport function open(uri: string, cb: any, qrcodeModalOptions?: IQRCodeModalOptions) {\n injectStyleSheet();\n const wrapper = renderWrapper();\n ReactDOM.render(\n ,\n wrapper,\n );\n}\n\nexport function close() {\n triggerCloseAnimation();\n}\n","export const WALLETCONNECT_STYLE_SHEET = `:root {\n --animation-duration: 300ms;\n}\n\n@keyframes fadeIn {\n from {\n opacity: 0;\n }\n to {\n opacity: 1;\n }\n}\n\n@keyframes fadeOut {\n from {\n opacity: 1;\n }\n to {\n opacity: 0;\n }\n}\n\n.animated {\n animation-duration: var(--animation-duration);\n animation-fill-mode: both;\n}\n\n.fadeIn {\n animation-name: fadeIn;\n}\n\n.fadeOut {\n animation-name: fadeOut;\n}\n\n#walletconnect-wrapper {\n -webkit-user-select: none;\n align-items: center;\n display: flex;\n height: 100%;\n justify-content: center;\n left: 0;\n pointer-events: none;\n position: fixed;\n top: 0;\n user-select: none;\n width: 100%;\n z-index: 99999999999999;\n}\n\n.walletconnect-modal__headerLogo {\n height: 21px;\n}\n\n.walletconnect-modal__header p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n align-items: flex-start;\n display: flex;\n flex: 1;\n margin-left: 5px;\n}\n\n.walletconnect-modal__close__wrapper {\n position: absolute;\n top: 0px;\n right: 0px;\n z-index: 10000;\n background: white;\n border-radius: 26px;\n padding: 6px;\n box-sizing: border-box;\n width: 26px;\n height: 26px;\n cursor: pointer;\n}\n\n.walletconnect-modal__close__icon {\n position: relative;\n top: 7px;\n right: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n transform: rotate(45deg);\n}\n\n.walletconnect-modal__close__line1 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n}\n\n.walletconnect-modal__close__line2 {\n position: absolute;\n width: 100%;\n border: 1px solid rgb(48, 52, 59);\n transform: rotate(90deg);\n}\n\n.walletconnect-qrcode__base {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n background: rgba(37, 41, 46, 0.95);\n height: 100%;\n left: 0;\n pointer-events: auto;\n position: fixed;\n top: 0;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n width: 100%;\n will-change: opacity;\n padding: 40px;\n box-sizing: border-box;\n}\n\n.walletconnect-qrcode__text {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 10px 0 20px 0;\n text-align: center;\n width: 100%;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-qrcode__text {\n font-size: 4vw;\n }\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-qrcode__text {\n font-size: 14px;\n }\n}\n\n.walletconnect-qrcode__image {\n width: calc(100% - 30px);\n box-sizing: border-box;\n cursor: none;\n margin: 0 auto;\n}\n\n.walletconnect-qrcode__notification {\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n font-size: 16px;\n padding: 16px 20px;\n border-radius: 16px;\n text-align: center;\n transition: all 0.1s ease-in-out;\n background: white;\n color: black;\n margin-bottom: -60px;\n opacity: 0;\n}\n\n.walletconnect-qrcode__notification.notification__show {\n opacity: 1;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__header {\n height: 130px;\n }\n .walletconnect-modal__base {\n overflow: auto;\n }\n}\n\n@media only screen and (min-device-width: 415px) and (max-width: 768px) {\n #content {\n max-width: 768px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 375px) and (max-width: 415px) {\n #content {\n max-width: 414px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (min-width: 320px) and (max-width: 375px) {\n #content {\n max-width: 375px;\n box-sizing: border-box;\n }\n}\n\n@media only screen and (max-width: 320px) {\n #content {\n max-width: 320px;\n box-sizing: border-box;\n }\n}\n\n.walletconnect-modal__base {\n -webkit-font-smoothing: antialiased;\n background: #ffffff;\n border-radius: 24px;\n box-shadow: 0 10px 50px 5px rgba(0, 0, 0, 0.4);\n font-family: ui-rounded, \"SF Pro Rounded\", \"SF Pro Text\", medium-content-sans-serif-font,\n -apple-system, BlinkMacSystemFont, ui-sans-serif, \"Segoe UI\", Roboto, Oxygen, Ubuntu, Cantarell,\n \"Open Sans\", \"Helvetica Neue\", sans-serif;\n margin-top: 41px;\n padding: 24px 24px 22px;\n pointer-events: auto;\n position: relative;\n text-align: center;\n transition: 0.4s cubic-bezier(0.19, 1, 0.22, 1);\n will-change: transform;\n overflow: visible;\n transform: translateY(-50%);\n top: 50%;\n max-width: 500px;\n margin: auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__base {\n padding: 24px 12px;\n }\n}\n\n.walletconnect-modal__base .hidden {\n transform: translateY(150%);\n transition: 0.125s cubic-bezier(0.4, 0, 1, 1);\n}\n\n.walletconnect-modal__header {\n align-items: center;\n display: flex;\n height: 26px;\n left: 0;\n justify-content: space-between;\n position: absolute;\n top: -42px;\n width: 100%;\n}\n\n.walletconnect-modal__base .wc-logo {\n align-items: center;\n display: flex;\n height: 26px;\n margin-top: 15px;\n padding-bottom: 15px;\n pointer-events: auto;\n}\n\n.walletconnect-modal__base .wc-logo div {\n background-color: #3399ff;\n height: 21px;\n margin-right: 5px;\n mask-image: url(\"images/wc-logo.svg\") center no-repeat;\n width: 32px;\n}\n\n.walletconnect-modal__base .wc-logo p {\n color: #ffffff;\n font-size: 20px;\n font-weight: 600;\n margin: 0;\n}\n\n.walletconnect-modal__base h2 {\n color: rgba(60, 66, 82, 0.6);\n font-size: 16px;\n font-weight: 600;\n letter-spacing: 0;\n line-height: 1.1875em;\n margin: 0 0 19px 0;\n text-align: center;\n width: 100%;\n}\n\n.walletconnect-modal__base__row {\n -webkit-tap-highlight-color: rgba(0, 0, 0, 0);\n align-items: center;\n border-radius: 20px;\n cursor: pointer;\n display: flex;\n height: 56px;\n justify-content: space-between;\n padding: 0 15px;\n position: relative;\n margin: 0px 0px 8px;\n text-align: left;\n transition: 0.15s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n will-change: transform;\n text-decoration: none;\n}\n\n.walletconnect-modal__base__row:hover {\n background: rgba(60, 66, 82, 0.06);\n}\n\n.walletconnect-modal__base__row:active {\n background: rgba(60, 66, 82, 0.06);\n transform: scale(0.975);\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n}\n\n.walletconnect-modal__base__row__h3 {\n color: #25292e;\n font-size: 20px;\n font-weight: 700;\n margin: 0;\n padding-bottom: 3px;\n}\n\n.walletconnect-modal__base__row__right {\n align-items: center;\n display: flex;\n justify-content: center;\n}\n\n.walletconnect-modal__base__row__right__app-icon {\n border-radius: 8px;\n height: 34px;\n margin: 0 11px 2px 0;\n width: 34px;\n background-size: 100%;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-modal__base__row__right__caret {\n height: 18px;\n opacity: 0.3;\n transition: 0.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n width: 8px;\n will-change: opacity;\n}\n\n.walletconnect-modal__base__row:hover .caret,\n.walletconnect-modal__base__row:active .caret {\n opacity: 0.6;\n}\n\n.walletconnect-modal__mobile__toggle {\n width: 80%;\n display: flex;\n margin: 0 auto;\n position: relative;\n overflow: hidden;\n border-radius: 8px;\n margin-bottom: 18px;\n background: #d4d5d9;\n}\n\n.walletconnect-modal__single_wallet {\n display: flex;\n justify-content: center;\n margin-top: 7px;\n margin-bottom: 18px;\n}\n\n.walletconnect-modal__single_wallet a {\n cursor: pointer;\n color: rgb(64, 153, 255);\n font-size: 21px;\n font-weight: 800;\n text-decoration: none !important;\n margin: 0 auto;\n}\n\n.walletconnect-modal__mobile__toggle_selector {\n width: calc(50% - 8px);\n background: white;\n position: absolute;\n border-radius: 5px;\n height: calc(100% - 8px);\n top: 4px;\n transition: all 0.2s ease-in-out;\n transform: translate3d(4px, 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle.right__selected .walletconnect-modal__mobile__toggle_selector {\n transform: translate3d(calc(100% + 12px), 0, 0);\n}\n\n.walletconnect-modal__mobile__toggle a {\n font-size: 12px;\n width: 50%;\n text-align: center;\n padding: 8px;\n margin: 0;\n font-weight: 600;\n z-index: 1;\n}\n\n.walletconnect-modal__footer {\n display: flex;\n justify-content: center;\n margin-top: 20px;\n}\n\n@media only screen and (max-width: 768px) {\n .walletconnect-modal__footer {\n margin-top: 5vw;\n }\n}\n\n.walletconnect-modal__footer a {\n cursor: pointer;\n color: #898d97;\n font-size: 15px;\n margin: 0 auto;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-modal__footer a {\n font-size: 14px;\n }\n}\n\n.walletconnect-connect__buttons__wrapper {\n max-height: 44vh;\n}\n\n.walletconnect-connect__buttons__wrapper__android {\n margin: 50% 0;\n}\n\n.walletconnect-connect__buttons__wrapper__wrap {\n display: grid;\n grid-template-columns: repeat(4, 1fr);\n margin: 10px 0;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__buttons__wrapper__wrap {\n margin-top: 40px;\n }\n}\n\n.walletconnect-connect__button {\n background-color: rgb(64, 153, 255);\n padding: 12px;\n border-radius: 8px;\n text-decoration: none;\n color: rgb(255, 255, 255);\n font-weight: 500;\n}\n\n.walletconnect-connect__button__icon_anchor {\n cursor: pointer;\n display: flex;\n justify-content: flex-start;\n align-items: center;\n margin: 8px;\n width: 42px;\n justify-self: center;\n flex-direction: column;\n text-decoration: none !important;\n}\n\n@media only screen and (max-width: 320px) {\n .walletconnect-connect__button__icon_anchor {\n margin: 4px;\n }\n}\n\n.walletconnect-connect__button__icon {\n border-radius: 10px;\n height: 42px;\n margin: 0;\n width: 42px;\n background-size: cover !important;\n box-shadow: 0 4px 12px 0 rgba(37, 41, 46, 0.25);\n}\n\n.walletconnect-connect__button__text {\n color: #424952;\n font-size: 2.7vw;\n text-decoration: none !important;\n padding: 0;\n margin-top: 1.8vw;\n font-weight: 600;\n}\n\n@media only screen and (min-width: 768px) {\n .walletconnect-connect__button__text {\n font-size: 16px;\n margin-top: 12px;\n }\n}\n\n.walletconnect-search__input {\n border: none;\n background: #d4d5d9;\n border-style: none;\n padding: 8px 16px;\n outline: none;\n font-style: normal;\n font-stretch: normal;\n font-size: 16px;\n font-style: normal;\n font-stretch: normal;\n line-height: normal;\n letter-spacing: normal;\n text-align: left;\n border-radius: 8px;\n width: calc(100% - 16px);\n margin: 0;\n margin-bottom: 8px;\n}\n`;","import { IQRCodeModalOptions } from \"@walletconnect/types\";\n\nimport * as nodeLib from \"./node\";\nimport * as browserLib from \"./browser\";\n\nconst isNode = () =>\n typeof process !== \"undefined\" &&\n typeof process.versions !== \"undefined\" &&\n typeof process.versions.node !== \"undefined\";\n\nfunction open(uri: string, cb: any, qrcodeModalOptions?: IQRCodeModalOptions) {\n // eslint-disable-next-line no-console\n console.log(uri);\n if (isNode()) {\n nodeLib.open(uri);\n } else {\n browserLib.open(uri, cb, qrcodeModalOptions);\n }\n}\n\nfunction close() {\n if (isNode()) {\n nodeLib.close();\n } else {\n browserLib.close();\n }\n}\n\nexport default { open, close };\n","import QRCode from \"qrcode\";\n\nexport function open(uri: string) {\n // eslint-disable-next-line no-console\n QRCode.toString(uri, { type: \"terminal\" }).then(console.log);\n}\n\nexport function close() {\n // empty\n}\n","'use strict';\n\nconst asn1 = exports;\n\nasn1.bignum = require('bn.js');\n\nasn1.define = require('./asn1/api').define;\nasn1.base = require('./asn1/base');\nasn1.constants = require('./asn1/constants');\nasn1.decoders = require('./asn1/decoders');\nasn1.encoders = require('./asn1/encoders');\n","'use strict';\n\nconst encoders = require('./encoders');\nconst decoders = require('./decoders');\nconst inherits = require('inherits');\n\nconst api = exports;\n\napi.define = function define(name, body) {\n return new Entity(name, body);\n};\n\nfunction Entity(name, body) {\n this.name = name;\n this.body = body;\n\n this.decoders = {};\n this.encoders = {};\n}\n\nEntity.prototype._createNamed = function createNamed(Base) {\n const name = this.name;\n\n function Generated(entity) {\n this._initNamed(entity, name);\n }\n inherits(Generated, Base);\n Generated.prototype._initNamed = function _initNamed(entity, name) {\n Base.call(this, entity, name);\n };\n\n return new Generated(this);\n};\n\nEntity.prototype._getDecoder = function _getDecoder(enc) {\n enc = enc || 'der';\n // Lazily create decoder\n if (!this.decoders.hasOwnProperty(enc))\n this.decoders[enc] = this._createNamed(decoders[enc]);\n return this.decoders[enc];\n};\n\nEntity.prototype.decode = function decode(data, enc, options) {\n return this._getDecoder(enc).decode(data, options);\n};\n\nEntity.prototype._getEncoder = function _getEncoder(enc) {\n enc = enc || 'der';\n // Lazily create encoder\n if (!this.encoders.hasOwnProperty(enc))\n this.encoders[enc] = this._createNamed(encoders[enc]);\n return this.encoders[enc];\n};\n\nEntity.prototype.encode = function encode(data, enc, /* internal */ reporter) {\n return this._getEncoder(enc).encode(data, reporter);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Reporter = require('../base/reporter').Reporter;\nconst Buffer = require('safer-buffer').Buffer;\n\nfunction DecoderBuffer(base, options) {\n Reporter.call(this, options);\n if (!Buffer.isBuffer(base)) {\n this.error('Input not Buffer');\n return;\n }\n\n this.base = base;\n this.offset = 0;\n this.length = base.length;\n}\ninherits(DecoderBuffer, Reporter);\nexports.DecoderBuffer = DecoderBuffer;\n\nDecoderBuffer.isDecoderBuffer = function isDecoderBuffer(data) {\n if (data instanceof DecoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n Buffer.isBuffer(data.base) &&\n data.constructor.name === 'DecoderBuffer' &&\n typeof data.offset === 'number' &&\n typeof data.length === 'number' &&\n typeof data.save === 'function' &&\n typeof data.restore === 'function' &&\n typeof data.isEmpty === 'function' &&\n typeof data.readUInt8 === 'function' &&\n typeof data.skip === 'function' &&\n typeof data.raw === 'function';\n\n return isCompatible;\n};\n\nDecoderBuffer.prototype.save = function save() {\n return { offset: this.offset, reporter: Reporter.prototype.save.call(this) };\n};\n\nDecoderBuffer.prototype.restore = function restore(save) {\n // Return skipped data\n const res = new DecoderBuffer(this.base);\n res.offset = save.offset;\n res.length = this.offset;\n\n this.offset = save.offset;\n Reporter.prototype.restore.call(this, save.reporter);\n\n return res;\n};\n\nDecoderBuffer.prototype.isEmpty = function isEmpty() {\n return this.offset === this.length;\n};\n\nDecoderBuffer.prototype.readUInt8 = function readUInt8(fail) {\n if (this.offset + 1 <= this.length)\n return this.base.readUInt8(this.offset++, true);\n else\n return this.error(fail || 'DecoderBuffer overrun');\n};\n\nDecoderBuffer.prototype.skip = function skip(bytes, fail) {\n if (!(this.offset + bytes <= this.length))\n return this.error(fail || 'DecoderBuffer overrun');\n\n const res = new DecoderBuffer(this.base);\n\n // Share reporter state\n res._reporterState = this._reporterState;\n\n res.offset = this.offset;\n res.length = this.offset + bytes;\n this.offset += bytes;\n return res;\n};\n\nDecoderBuffer.prototype.raw = function raw(save) {\n return this.base.slice(save ? save.offset : this.offset, this.length);\n};\n\nfunction EncoderBuffer(value, reporter) {\n if (Array.isArray(value)) {\n this.length = 0;\n this.value = value.map(function(item) {\n if (!EncoderBuffer.isEncoderBuffer(item))\n item = new EncoderBuffer(item, reporter);\n this.length += item.length;\n return item;\n }, this);\n } else if (typeof value === 'number') {\n if (!(0 <= value && value <= 0xff))\n return reporter.error('non-byte EncoderBuffer value');\n this.value = value;\n this.length = 1;\n } else if (typeof value === 'string') {\n this.value = value;\n this.length = Buffer.byteLength(value);\n } else if (Buffer.isBuffer(value)) {\n this.value = value;\n this.length = value.length;\n } else {\n return reporter.error('Unsupported type: ' + typeof value);\n }\n}\nexports.EncoderBuffer = EncoderBuffer;\n\nEncoderBuffer.isEncoderBuffer = function isEncoderBuffer(data) {\n if (data instanceof EncoderBuffer) {\n return true;\n }\n\n // Or accept compatible API\n const isCompatible = typeof data === 'object' &&\n data.constructor.name === 'EncoderBuffer' &&\n typeof data.length === 'number' &&\n typeof data.join === 'function';\n\n return isCompatible;\n};\n\nEncoderBuffer.prototype.join = function join(out, offset) {\n if (!out)\n out = Buffer.alloc(this.length);\n if (!offset)\n offset = 0;\n\n if (this.length === 0)\n return out;\n\n if (Array.isArray(this.value)) {\n this.value.forEach(function(item) {\n item.join(out, offset);\n offset += item.length;\n });\n } else {\n if (typeof this.value === 'number')\n out[offset] = this.value;\n else if (typeof this.value === 'string')\n out.write(this.value, offset);\n else if (Buffer.isBuffer(this.value))\n this.value.copy(out, offset);\n offset += this.length;\n }\n\n return out;\n};\n","'use strict';\n\nconst base = exports;\n\nbase.Reporter = require('./reporter').Reporter;\nbase.DecoderBuffer = require('./buffer').DecoderBuffer;\nbase.EncoderBuffer = require('./buffer').EncoderBuffer;\nbase.Node = require('./node');\n","'use strict';\n\nconst Reporter = require('../base/reporter').Reporter;\nconst EncoderBuffer = require('../base/buffer').EncoderBuffer;\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst assert = require('minimalistic-assert');\n\n// Supported tags\nconst tags = [\n 'seq', 'seqof', 'set', 'setof', 'objid', 'bool',\n 'gentime', 'utctime', 'null_', 'enum', 'int', 'objDesc',\n 'bitstr', 'bmpstr', 'charstr', 'genstr', 'graphstr', 'ia5str', 'iso646str',\n 'numstr', 'octstr', 'printstr', 't61str', 'unistr', 'utf8str', 'videostr'\n];\n\n// Public methods list\nconst methods = [\n 'key', 'obj', 'use', 'optional', 'explicit', 'implicit', 'def', 'choice',\n 'any', 'contains'\n].concat(tags);\n\n// Overrided methods list\nconst overrided = [\n '_peekTag', '_decodeTag', '_use',\n '_decodeStr', '_decodeObjid', '_decodeTime',\n '_decodeNull', '_decodeInt', '_decodeBool', '_decodeList',\n\n '_encodeComposite', '_encodeStr', '_encodeObjid', '_encodeTime',\n '_encodeNull', '_encodeInt', '_encodeBool'\n];\n\nfunction Node(enc, parent, name) {\n const state = {};\n this._baseState = state;\n\n state.name = name;\n state.enc = enc;\n\n state.parent = parent || null;\n state.children = null;\n\n // State\n state.tag = null;\n state.args = null;\n state.reverseArgs = null;\n state.choice = null;\n state.optional = false;\n state.any = false;\n state.obj = false;\n state.use = null;\n state.useDecoder = null;\n state.key = null;\n state['default'] = null;\n state.explicit = null;\n state.implicit = null;\n state.contains = null;\n\n // Should create new instance on each method\n if (!state.parent) {\n state.children = [];\n this._wrap();\n }\n}\nmodule.exports = Node;\n\nconst stateProps = [\n 'enc', 'parent', 'children', 'tag', 'args', 'reverseArgs', 'choice',\n 'optional', 'any', 'obj', 'use', 'alteredUse', 'key', 'default', 'explicit',\n 'implicit', 'contains'\n];\n\nNode.prototype.clone = function clone() {\n const state = this._baseState;\n const cstate = {};\n stateProps.forEach(function(prop) {\n cstate[prop] = state[prop];\n });\n const res = new this.constructor(cstate.parent);\n res._baseState = cstate;\n return res;\n};\n\nNode.prototype._wrap = function wrap() {\n const state = this._baseState;\n methods.forEach(function(method) {\n this[method] = function _wrappedMethod() {\n const clone = new this.constructor(this);\n state.children.push(clone);\n return clone[method].apply(clone, arguments);\n };\n }, this);\n};\n\nNode.prototype._init = function init(body) {\n const state = this._baseState;\n\n assert(state.parent === null);\n body.call(this);\n\n // Filter children\n state.children = state.children.filter(function(child) {\n return child._baseState.parent === this;\n }, this);\n assert.equal(state.children.length, 1, 'Root node can have only one child');\n};\n\nNode.prototype._useArgs = function useArgs(args) {\n const state = this._baseState;\n\n // Filter children and args\n const children = args.filter(function(arg) {\n return arg instanceof this.constructor;\n }, this);\n args = args.filter(function(arg) {\n return !(arg instanceof this.constructor);\n }, this);\n\n if (children.length !== 0) {\n assert(state.children === null);\n state.children = children;\n\n // Replace parent to maintain backward link\n children.forEach(function(child) {\n child._baseState.parent = this;\n }, this);\n }\n if (args.length !== 0) {\n assert(state.args === null);\n state.args = args;\n state.reverseArgs = args.map(function(arg) {\n if (typeof arg !== 'object' || arg.constructor !== Object)\n return arg;\n\n const res = {};\n Object.keys(arg).forEach(function(key) {\n if (key == (key | 0))\n key |= 0;\n const value = arg[key];\n res[value] = key;\n });\n return res;\n });\n }\n};\n\n//\n// Overrided methods\n//\n\noverrided.forEach(function(method) {\n Node.prototype[method] = function _overrided() {\n const state = this._baseState;\n throw new Error(method + ' not implemented for encoding: ' + state.enc);\n };\n});\n\n//\n// Public methods\n//\n\ntags.forEach(function(tag) {\n Node.prototype[tag] = function _tagMethod() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n assert(state.tag === null);\n state.tag = tag;\n\n this._useArgs(args);\n\n return this;\n };\n});\n\nNode.prototype.use = function use(item) {\n assert(item);\n const state = this._baseState;\n\n assert(state.use === null);\n state.use = item;\n\n return this;\n};\n\nNode.prototype.optional = function optional() {\n const state = this._baseState;\n\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.def = function def(val) {\n const state = this._baseState;\n\n assert(state['default'] === null);\n state['default'] = val;\n state.optional = true;\n\n return this;\n};\n\nNode.prototype.explicit = function explicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.explicit = num;\n\n return this;\n};\n\nNode.prototype.implicit = function implicit(num) {\n const state = this._baseState;\n\n assert(state.explicit === null && state.implicit === null);\n state.implicit = num;\n\n return this;\n};\n\nNode.prototype.obj = function obj() {\n const state = this._baseState;\n const args = Array.prototype.slice.call(arguments);\n\n state.obj = true;\n\n if (args.length !== 0)\n this._useArgs(args);\n\n return this;\n};\n\nNode.prototype.key = function key(newKey) {\n const state = this._baseState;\n\n assert(state.key === null);\n state.key = newKey;\n\n return this;\n};\n\nNode.prototype.any = function any() {\n const state = this._baseState;\n\n state.any = true;\n\n return this;\n};\n\nNode.prototype.choice = function choice(obj) {\n const state = this._baseState;\n\n assert(state.choice === null);\n state.choice = obj;\n this._useArgs(Object.keys(obj).map(function(key) {\n return obj[key];\n }));\n\n return this;\n};\n\nNode.prototype.contains = function contains(item) {\n const state = this._baseState;\n\n assert(state.use === null);\n state.contains = item;\n\n return this;\n};\n\n//\n// Decoding\n//\n\nNode.prototype._decode = function decode(input, options) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return input.wrapResult(state.children[0]._decode(input, options));\n\n let result = state['default'];\n let present = true;\n\n let prevKey = null;\n if (state.key !== null)\n prevKey = input.enterKey(state.key);\n\n // Check if tag is there\n if (state.optional) {\n let tag = null;\n if (state.explicit !== null)\n tag = state.explicit;\n else if (state.implicit !== null)\n tag = state.implicit;\n else if (state.tag !== null)\n tag = state.tag;\n\n if (tag === null && !state.any) {\n // Trial and Error\n const save = input.save();\n try {\n if (state.choice === null)\n this._decodeGeneric(state.tag, input, options);\n else\n this._decodeChoice(input, options);\n present = true;\n } catch (e) {\n present = false;\n }\n input.restore(save);\n } else {\n present = this._peekTag(input, tag, state.any);\n\n if (input.isError(present))\n return present;\n }\n }\n\n // Push object on stack\n let prevObj;\n if (state.obj && present)\n prevObj = input.enterObject();\n\n if (present) {\n // Unwrap explicit values\n if (state.explicit !== null) {\n const explicit = this._decodeTag(input, state.explicit);\n if (input.isError(explicit))\n return explicit;\n input = explicit;\n }\n\n const start = input.offset;\n\n // Unwrap implicit and normal values\n if (state.use === null && state.choice === null) {\n let save;\n if (state.any)\n save = input.save();\n const body = this._decodeTag(\n input,\n state.implicit !== null ? state.implicit : state.tag,\n state.any\n );\n if (input.isError(body))\n return body;\n\n if (state.any)\n result = input.raw(save);\n else\n input = body;\n }\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), start, input.length, 'tagged');\n\n if (options && options.track && state.tag !== null)\n options.track(input.path(), input.offset, input.length, 'content');\n\n // Select proper method for tag\n if (state.any) {\n // no-op\n } else if (state.choice === null) {\n result = this._decodeGeneric(state.tag, input, options);\n } else {\n result = this._decodeChoice(input, options);\n }\n\n if (input.isError(result))\n return result;\n\n // Decode children\n if (!state.any && state.choice === null && state.children !== null) {\n state.children.forEach(function decodeChildren(child) {\n // NOTE: We are ignoring errors here, to let parser continue with other\n // parts of encoded data\n child._decode(input, options);\n });\n }\n\n // Decode contained/encoded by schema, only in bit or octet strings\n if (state.contains && (state.tag === 'octstr' || state.tag === 'bitstr')) {\n const data = new DecoderBuffer(result);\n result = this._getUse(state.contains, input._reporterState.obj)\n ._decode(data, options);\n }\n }\n\n // Pop object\n if (state.obj && present)\n result = input.leaveObject(prevObj);\n\n // Set key\n if (state.key !== null && (result !== null || present === true))\n input.leaveKey(prevKey, state.key, result);\n else if (prevKey !== null)\n input.exitKey(prevKey);\n\n return result;\n};\n\nNode.prototype._decodeGeneric = function decodeGeneric(tag, input, options) {\n const state = this._baseState;\n\n if (tag === 'seq' || tag === 'set')\n return null;\n if (tag === 'seqof' || tag === 'setof')\n return this._decodeList(input, tag, state.args[0], options);\n else if (/str$/.test(tag))\n return this._decodeStr(input, tag, options);\n else if (tag === 'objid' && state.args)\n return this._decodeObjid(input, state.args[0], state.args[1], options);\n else if (tag === 'objid')\n return this._decodeObjid(input, null, null, options);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._decodeTime(input, tag, options);\n else if (tag === 'null_')\n return this._decodeNull(input, options);\n else if (tag === 'bool')\n return this._decodeBool(input, options);\n else if (tag === 'objDesc')\n return this._decodeStr(input, tag, options);\n else if (tag === 'int' || tag === 'enum')\n return this._decodeInt(input, state.args && state.args[0], options);\n\n if (state.use !== null) {\n return this._getUse(state.use, input._reporterState.obj)\n ._decode(input, options);\n } else {\n return input.error('unknown tag: ' + tag);\n }\n};\n\nNode.prototype._getUse = function _getUse(entity, obj) {\n\n const state = this._baseState;\n // Create altered use decoder if implicit is set\n state.useDecoder = this._use(entity, obj);\n assert(state.useDecoder._baseState.parent === null);\n state.useDecoder = state.useDecoder._baseState.children[0];\n if (state.implicit !== state.useDecoder._baseState.implicit) {\n state.useDecoder = state.useDecoder.clone();\n state.useDecoder._baseState.implicit = state.implicit;\n }\n return state.useDecoder;\n};\n\nNode.prototype._decodeChoice = function decodeChoice(input, options) {\n const state = this._baseState;\n let result = null;\n let match = false;\n\n Object.keys(state.choice).some(function(key) {\n const save = input.save();\n const node = state.choice[key];\n try {\n const value = node._decode(input, options);\n if (input.isError(value))\n return false;\n\n result = { type: key, value: value };\n match = true;\n } catch (e) {\n input.restore(save);\n return false;\n }\n return true;\n }, this);\n\n if (!match)\n return input.error('Choice not matched');\n\n return result;\n};\n\n//\n// Encoding\n//\n\nNode.prototype._createEncoderBuffer = function createEncoderBuffer(data) {\n return new EncoderBuffer(data, this.reporter);\n};\n\nNode.prototype._encode = function encode(data, reporter, parent) {\n const state = this._baseState;\n if (state['default'] !== null && state['default'] === data)\n return;\n\n const result = this._encodeValue(data, reporter, parent);\n if (result === undefined)\n return;\n\n if (this._skipDefault(result, reporter, parent))\n return;\n\n return result;\n};\n\nNode.prototype._encodeValue = function encode(data, reporter, parent) {\n const state = this._baseState;\n\n // Decode root node\n if (state.parent === null)\n return state.children[0]._encode(data, reporter || new Reporter());\n\n let result = null;\n\n // Set reporter to share it with a child class\n this.reporter = reporter;\n\n // Check if data is there\n if (state.optional && data === undefined) {\n if (state['default'] !== null)\n data = state['default'];\n else\n return;\n }\n\n // Encode children first\n let content = null;\n let primitive = false;\n if (state.any) {\n // Anything that was given is translated to buffer\n result = this._createEncoderBuffer(data);\n } else if (state.choice) {\n result = this._encodeChoice(data, reporter);\n } else if (state.contains) {\n content = this._getUse(state.contains, parent)._encode(data, reporter);\n primitive = true;\n } else if (state.children) {\n content = state.children.map(function(child) {\n if (child._baseState.tag === 'null_')\n return child._encode(null, reporter, data);\n\n if (child._baseState.key === null)\n return reporter.error('Child should have a key');\n const prevKey = reporter.enterKey(child._baseState.key);\n\n if (typeof data !== 'object')\n return reporter.error('Child expected, but input is not object');\n\n const res = child._encode(data[child._baseState.key], reporter, data);\n reporter.leaveKey(prevKey);\n\n return res;\n }, this).filter(function(child) {\n return child;\n });\n content = this._createEncoderBuffer(content);\n } else {\n if (state.tag === 'seqof' || state.tag === 'setof') {\n // TODO(indutny): this should be thrown on DSL level\n if (!(state.args && state.args.length === 1))\n return reporter.error('Too many args for : ' + state.tag);\n\n if (!Array.isArray(data))\n return reporter.error('seqof/setof, but data is not Array');\n\n const child = this.clone();\n child._baseState.implicit = null;\n content = this._createEncoderBuffer(data.map(function(item) {\n const state = this._baseState;\n\n return this._getUse(state.args[0], data)._encode(item, reporter);\n }, child));\n } else if (state.use !== null) {\n result = this._getUse(state.use, parent)._encode(data, reporter);\n } else {\n content = this._encodePrimitive(state.tag, data);\n primitive = true;\n }\n }\n\n // Encode data itself\n if (!state.any && state.choice === null) {\n const tag = state.implicit !== null ? state.implicit : state.tag;\n const cls = state.implicit === null ? 'universal' : 'context';\n\n if (tag === null) {\n if (state.use === null)\n reporter.error('Tag could be omitted only for .use()');\n } else {\n if (state.use === null)\n result = this._encodeComposite(tag, primitive, cls, content);\n }\n }\n\n // Wrap in explicit\n if (state.explicit !== null)\n result = this._encodeComposite(state.explicit, false, 'context', result);\n\n return result;\n};\n\nNode.prototype._encodeChoice = function encodeChoice(data, reporter) {\n const state = this._baseState;\n\n const node = state.choice[data.type];\n if (!node) {\n assert(\n false,\n data.type + ' not found in ' +\n JSON.stringify(Object.keys(state.choice)));\n }\n return node._encode(data.value, reporter);\n};\n\nNode.prototype._encodePrimitive = function encodePrimitive(tag, data) {\n const state = this._baseState;\n\n if (/str$/.test(tag))\n return this._encodeStr(data, tag);\n else if (tag === 'objid' && state.args)\n return this._encodeObjid(data, state.reverseArgs[0], state.args[1]);\n else if (tag === 'objid')\n return this._encodeObjid(data, null, null);\n else if (tag === 'gentime' || tag === 'utctime')\n return this._encodeTime(data, tag);\n else if (tag === 'null_')\n return this._encodeNull();\n else if (tag === 'int' || tag === 'enum')\n return this._encodeInt(data, state.args && state.reverseArgs[0]);\n else if (tag === 'bool')\n return this._encodeBool(data);\n else if (tag === 'objDesc')\n return this._encodeStr(data, tag);\n else\n throw new Error('Unsupported tag: ' + tag);\n};\n\nNode.prototype._isNumstr = function isNumstr(str) {\n return /^[0-9 ]*$/.test(str);\n};\n\nNode.prototype._isPrintstr = function isPrintstr(str) {\n return /^[A-Za-z0-9 '()+,-./:=?]*$/.test(str);\n};\n","'use strict';\n\nconst inherits = require('inherits');\n\nfunction Reporter(options) {\n this._reporterState = {\n obj: null,\n path: [],\n options: options || {},\n errors: []\n };\n}\nexports.Reporter = Reporter;\n\nReporter.prototype.isError = function isError(obj) {\n return obj instanceof ReporterError;\n};\n\nReporter.prototype.save = function save() {\n const state = this._reporterState;\n\n return { obj: state.obj, pathLen: state.path.length };\n};\n\nReporter.prototype.restore = function restore(data) {\n const state = this._reporterState;\n\n state.obj = data.obj;\n state.path = state.path.slice(0, data.pathLen);\n};\n\nReporter.prototype.enterKey = function enterKey(key) {\n return this._reporterState.path.push(key);\n};\n\nReporter.prototype.exitKey = function exitKey(index) {\n const state = this._reporterState;\n\n state.path = state.path.slice(0, index - 1);\n};\n\nReporter.prototype.leaveKey = function leaveKey(index, key, value) {\n const state = this._reporterState;\n\n this.exitKey(index);\n if (state.obj !== null)\n state.obj[key] = value;\n};\n\nReporter.prototype.path = function path() {\n return this._reporterState.path.join('/');\n};\n\nReporter.prototype.enterObject = function enterObject() {\n const state = this._reporterState;\n\n const prev = state.obj;\n state.obj = {};\n return prev;\n};\n\nReporter.prototype.leaveObject = function leaveObject(prev) {\n const state = this._reporterState;\n\n const now = state.obj;\n state.obj = prev;\n return now;\n};\n\nReporter.prototype.error = function error(msg) {\n let err;\n const state = this._reporterState;\n\n const inherited = msg instanceof ReporterError;\n if (inherited) {\n err = msg;\n } else {\n err = new ReporterError(state.path.map(function(elem) {\n return '[' + JSON.stringify(elem) + ']';\n }).join(''), msg.message || msg, msg.stack);\n }\n\n if (!state.options.partial)\n throw err;\n\n if (!inherited)\n state.errors.push(err);\n\n return err;\n};\n\nReporter.prototype.wrapResult = function wrapResult(result) {\n const state = this._reporterState;\n if (!state.options.partial)\n return result;\n\n return {\n result: this.isError(result) ? null : result,\n errors: state.errors\n };\n};\n\nfunction ReporterError(path, msg) {\n this.path = path;\n this.rethrow(msg);\n}\ninherits(ReporterError, Error);\n\nReporterError.prototype.rethrow = function rethrow(msg) {\n this.message = msg + ' at: ' + (this.path || '(shallow)');\n if (Error.captureStackTrace)\n Error.captureStackTrace(this, ReporterError);\n\n if (!this.stack) {\n try {\n // IE only adds stack when thrown\n throw new Error(this.message);\n } catch (e) {\n this.stack = e.stack;\n }\n }\n return this;\n};\n","'use strict';\n\n// Helper\nfunction reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n}\n\nexports.tagClass = {\n 0: 'universal',\n 1: 'application',\n 2: 'context',\n 3: 'private'\n};\nexports.tagClassByName = reverse(exports.tagClass);\n\nexports.tag = {\n 0x00: 'end',\n 0x01: 'bool',\n 0x02: 'int',\n 0x03: 'bitstr',\n 0x04: 'octstr',\n 0x05: 'null_',\n 0x06: 'objid',\n 0x07: 'objDesc',\n 0x08: 'external',\n 0x09: 'real',\n 0x0a: 'enum',\n 0x0b: 'embed',\n 0x0c: 'utf8str',\n 0x0d: 'relativeOid',\n 0x10: 'seq',\n 0x11: 'set',\n 0x12: 'numstr',\n 0x13: 'printstr',\n 0x14: 't61str',\n 0x15: 'videostr',\n 0x16: 'ia5str',\n 0x17: 'utctime',\n 0x18: 'gentime',\n 0x19: 'graphstr',\n 0x1a: 'iso646str',\n 0x1b: 'genstr',\n 0x1c: 'unistr',\n 0x1d: 'charstr',\n 0x1e: 'bmpstr'\n};\nexports.tagByName = reverse(exports.tag);\n","'use strict';\n\nconst constants = exports;\n\n// Helper\nconstants._reverse = function reverse(map) {\n const res = {};\n\n Object.keys(map).forEach(function(key) {\n // Convert key to integer if it is stringified\n if ((key | 0) == key)\n key = key | 0;\n\n const value = map[key];\n res[value] = key;\n });\n\n return res;\n};\n\nconstants.der = require('./der');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst bignum = require('bn.js');\nconst DecoderBuffer = require('../base/buffer').DecoderBuffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DERDecoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DERDecoder;\n\nDERDecoder.prototype.decode = function decode(data, options) {\n if (!DecoderBuffer.isDecoderBuffer(data)) {\n data = new DecoderBuffer(data, options);\n }\n\n return this.tree._decode(data, options);\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._peekTag = function peekTag(buffer, tag, any) {\n if (buffer.isEmpty())\n return false;\n\n const state = buffer.save();\n const decodedTag = derDecodeTag(buffer, 'Failed to peek tag: \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n buffer.restore(state);\n\n return decodedTag.tag === tag || decodedTag.tagStr === tag ||\n (decodedTag.tagStr + 'of') === tag || any;\n};\n\nDERNode.prototype._decodeTag = function decodeTag(buffer, tag, any) {\n const decodedTag = derDecodeTag(buffer,\n 'Failed to decode tag of \"' + tag + '\"');\n if (buffer.isError(decodedTag))\n return decodedTag;\n\n let len = derDecodeLen(buffer,\n decodedTag.primitive,\n 'Failed to get length of \"' + tag + '\"');\n\n // Failure\n if (buffer.isError(len))\n return len;\n\n if (!any &&\n decodedTag.tag !== tag &&\n decodedTag.tagStr !== tag &&\n decodedTag.tagStr + 'of' !== tag) {\n return buffer.error('Failed to match tag: \"' + tag + '\"');\n }\n\n if (decodedTag.primitive || len !== null)\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n\n // Indefinite length... find END tag\n const state = buffer.save();\n const res = this._skipUntilEnd(\n buffer,\n 'Failed to skip indefinite length body: \"' + this.tag + '\"');\n if (buffer.isError(res))\n return res;\n\n len = buffer.offset - state.offset;\n buffer.restore(state);\n return buffer.skip(len, 'Failed to match body of: \"' + tag + '\"');\n};\n\nDERNode.prototype._skipUntilEnd = function skipUntilEnd(buffer, fail) {\n for (;;) {\n const tag = derDecodeTag(buffer, fail);\n if (buffer.isError(tag))\n return tag;\n const len = derDecodeLen(buffer, tag.primitive, fail);\n if (buffer.isError(len))\n return len;\n\n let res;\n if (tag.primitive || len !== null)\n res = buffer.skip(len);\n else\n res = this._skipUntilEnd(buffer, fail);\n\n // Failure\n if (buffer.isError(res))\n return res;\n\n if (tag.tagStr === 'end')\n break;\n }\n};\n\nDERNode.prototype._decodeList = function decodeList(buffer, tag, decoder,\n options) {\n const result = [];\n while (!buffer.isEmpty()) {\n const possibleEnd = this._peekTag(buffer, 'end');\n if (buffer.isError(possibleEnd))\n return possibleEnd;\n\n const res = decoder.decode(buffer, 'der', options);\n if (buffer.isError(res) && possibleEnd)\n break;\n result.push(res);\n }\n return result;\n};\n\nDERNode.prototype._decodeStr = function decodeStr(buffer, tag) {\n if (tag === 'bitstr') {\n const unused = buffer.readUInt8();\n if (buffer.isError(unused))\n return unused;\n return { unused: unused, data: buffer.raw() };\n } else if (tag === 'bmpstr') {\n const raw = buffer.raw();\n if (raw.length % 2 === 1)\n return buffer.error('Decoding of string type: bmpstr length mismatch');\n\n let str = '';\n for (let i = 0; i < raw.length / 2; i++) {\n str += String.fromCharCode(raw.readUInt16BE(i * 2));\n }\n return str;\n } else if (tag === 'numstr') {\n const numstr = buffer.raw().toString('ascii');\n if (!this._isNumstr(numstr)) {\n return buffer.error('Decoding of string type: ' +\n 'numstr unsupported characters');\n }\n return numstr;\n } else if (tag === 'octstr') {\n return buffer.raw();\n } else if (tag === 'objDesc') {\n return buffer.raw();\n } else if (tag === 'printstr') {\n const printstr = buffer.raw().toString('ascii');\n if (!this._isPrintstr(printstr)) {\n return buffer.error('Decoding of string type: ' +\n 'printstr unsupported characters');\n }\n return printstr;\n } else if (/str$/.test(tag)) {\n return buffer.raw().toString();\n } else {\n return buffer.error('Decoding of string type: ' + tag + ' unsupported');\n }\n};\n\nDERNode.prototype._decodeObjid = function decodeObjid(buffer, values, relative) {\n let result;\n const identifiers = [];\n let ident = 0;\n let subident = 0;\n while (!buffer.isEmpty()) {\n subident = buffer.readUInt8();\n ident <<= 7;\n ident |= subident & 0x7f;\n if ((subident & 0x80) === 0) {\n identifiers.push(ident);\n ident = 0;\n }\n }\n if (subident & 0x80)\n identifiers.push(ident);\n\n const first = (identifiers[0] / 40) | 0;\n const second = identifiers[0] % 40;\n\n if (relative)\n result = identifiers;\n else\n result = [first, second].concat(identifiers.slice(1));\n\n if (values) {\n let tmp = values[result.join(' ')];\n if (tmp === undefined)\n tmp = values[result.join('.')];\n if (tmp !== undefined)\n result = tmp;\n }\n\n return result;\n};\n\nDERNode.prototype._decodeTime = function decodeTime(buffer, tag) {\n const str = buffer.raw().toString();\n\n let year;\n let mon;\n let day;\n let hour;\n let min;\n let sec;\n if (tag === 'gentime') {\n year = str.slice(0, 4) | 0;\n mon = str.slice(4, 6) | 0;\n day = str.slice(6, 8) | 0;\n hour = str.slice(8, 10) | 0;\n min = str.slice(10, 12) | 0;\n sec = str.slice(12, 14) | 0;\n } else if (tag === 'utctime') {\n year = str.slice(0, 2) | 0;\n mon = str.slice(2, 4) | 0;\n day = str.slice(4, 6) | 0;\n hour = str.slice(6, 8) | 0;\n min = str.slice(8, 10) | 0;\n sec = str.slice(10, 12) | 0;\n if (year < 70)\n year = 2000 + year;\n else\n year = 1900 + year;\n } else {\n return buffer.error('Decoding ' + tag + ' time is not supported yet');\n }\n\n return Date.UTC(year, mon - 1, day, hour, min, sec, 0);\n};\n\nDERNode.prototype._decodeNull = function decodeNull() {\n return null;\n};\n\nDERNode.prototype._decodeBool = function decodeBool(buffer) {\n const res = buffer.readUInt8();\n if (buffer.isError(res))\n return res;\n else\n return res !== 0;\n};\n\nDERNode.prototype._decodeInt = function decodeInt(buffer, values) {\n // Bigint, return as it is (assume big endian)\n const raw = buffer.raw();\n let res = new bignum(raw);\n\n if (values)\n res = values[res.toString(10)] || res;\n\n return res;\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getDecoder('der').tree;\n};\n\n// Utility methods\n\nfunction derDecodeTag(buf, fail) {\n let tag = buf.readUInt8(fail);\n if (buf.isError(tag))\n return tag;\n\n const cls = der.tagClass[tag >> 6];\n const primitive = (tag & 0x20) === 0;\n\n // Multi-octet tag - load\n if ((tag & 0x1f) === 0x1f) {\n let oct = tag;\n tag = 0;\n while ((oct & 0x80) === 0x80) {\n oct = buf.readUInt8(fail);\n if (buf.isError(oct))\n return oct;\n\n tag <<= 7;\n tag |= oct & 0x7f;\n }\n } else {\n tag &= 0x1f;\n }\n const tagStr = der.tag[tag];\n\n return {\n cls: cls,\n primitive: primitive,\n tag: tag,\n tagStr: tagStr\n };\n}\n\nfunction derDecodeLen(buf, primitive, fail) {\n let len = buf.readUInt8(fail);\n if (buf.isError(len))\n return len;\n\n // Indefinite form\n if (!primitive && len === 0x80)\n return null;\n\n // Definite form\n if ((len & 0x80) === 0) {\n // Short form\n return len;\n }\n\n // Long form\n const num = len & 0x7f;\n if (num > 4)\n return buf.error('length octect is too long');\n\n len = 0;\n for (let i = 0; i < num; i++) {\n len <<= 8;\n const j = buf.readUInt8(fail);\n if (buf.isError(j))\n return j;\n len |= j;\n }\n\n return len;\n}\n","'use strict';\n\nconst decoders = exports;\n\ndecoders.der = require('./der');\ndecoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\n\nconst DERDecoder = require('./der');\n\nfunction PEMDecoder(entity) {\n DERDecoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMDecoder, DERDecoder);\nmodule.exports = PEMDecoder;\n\nPEMDecoder.prototype.decode = function decode(data, options) {\n const lines = data.toString().split(/[\\r\\n]+/g);\n\n const label = options.label.toUpperCase();\n\n const re = /^-----(BEGIN|END) ([^-]+)-----$/;\n let start = -1;\n let end = -1;\n for (let i = 0; i < lines.length; i++) {\n const match = lines[i].match(re);\n if (match === null)\n continue;\n\n if (match[2] !== label)\n continue;\n\n if (start === -1) {\n if (match[1] !== 'BEGIN')\n break;\n start = i;\n } else {\n if (match[1] !== 'END')\n break;\n end = i;\n break;\n }\n }\n if (start === -1 || end === -1)\n throw new Error('PEM section not found for: ' + label);\n\n const base64 = lines.slice(start + 1, end).join('');\n // Remove excessive symbols\n base64.replace(/[^a-z0-9+/=]+/gi, '');\n\n const input = Buffer.from(base64, 'base64');\n return DERDecoder.prototype.decode.call(this, input, options);\n};\n","'use strict';\n\nconst inherits = require('inherits');\nconst Buffer = require('safer-buffer').Buffer;\nconst Node = require('../base/node');\n\n// Import DER constants\nconst der = require('../constants/der');\n\nfunction DEREncoder(entity) {\n this.enc = 'der';\n this.name = entity.name;\n this.entity = entity;\n\n // Construct base tree\n this.tree = new DERNode();\n this.tree._init(entity.body);\n}\nmodule.exports = DEREncoder;\n\nDEREncoder.prototype.encode = function encode(data, reporter) {\n return this.tree._encode(data, reporter).join();\n};\n\n// Tree methods\n\nfunction DERNode(parent) {\n Node.call(this, 'der', parent);\n}\ninherits(DERNode, Node);\n\nDERNode.prototype._encodeComposite = function encodeComposite(tag,\n primitive,\n cls,\n content) {\n const encodedTag = encodeTag(tag, primitive, cls, this.reporter);\n\n // Short form\n if (content.length < 0x80) {\n const header = Buffer.alloc(2);\n header[0] = encodedTag;\n header[1] = content.length;\n return this._createEncoderBuffer([ header, content ]);\n }\n\n // Long form\n // Count octets required to store length\n let lenOctets = 1;\n for (let i = content.length; i >= 0x100; i >>= 8)\n lenOctets++;\n\n const header = Buffer.alloc(1 + 1 + lenOctets);\n header[0] = encodedTag;\n header[1] = 0x80 | lenOctets;\n\n for (let i = 1 + lenOctets, j = content.length; j > 0; i--, j >>= 8)\n header[i] = j & 0xff;\n\n return this._createEncoderBuffer([ header, content ]);\n};\n\nDERNode.prototype._encodeStr = function encodeStr(str, tag) {\n if (tag === 'bitstr') {\n return this._createEncoderBuffer([ str.unused | 0, str.data ]);\n } else if (tag === 'bmpstr') {\n const buf = Buffer.alloc(str.length * 2);\n for (let i = 0; i < str.length; i++) {\n buf.writeUInt16BE(str.charCodeAt(i), i * 2);\n }\n return this._createEncoderBuffer(buf);\n } else if (tag === 'numstr') {\n if (!this._isNumstr(str)) {\n return this.reporter.error('Encoding of string type: numstr supports ' +\n 'only digits and space');\n }\n return this._createEncoderBuffer(str);\n } else if (tag === 'printstr') {\n if (!this._isPrintstr(str)) {\n return this.reporter.error('Encoding of string type: printstr supports ' +\n 'only latin upper and lower case letters, ' +\n 'digits, space, apostrophe, left and rigth ' +\n 'parenthesis, plus sign, comma, hyphen, ' +\n 'dot, slash, colon, equal sign, ' +\n 'question mark');\n }\n return this._createEncoderBuffer(str);\n } else if (/str$/.test(tag)) {\n return this._createEncoderBuffer(str);\n } else if (tag === 'objDesc') {\n return this._createEncoderBuffer(str);\n } else {\n return this.reporter.error('Encoding of string type: ' + tag +\n ' unsupported');\n }\n};\n\nDERNode.prototype._encodeObjid = function encodeObjid(id, values, relative) {\n if (typeof id === 'string') {\n if (!values)\n return this.reporter.error('string objid given, but no values map found');\n if (!values.hasOwnProperty(id))\n return this.reporter.error('objid not found in values map');\n id = values[id].split(/[\\s.]+/g);\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n } else if (Array.isArray(id)) {\n id = id.slice();\n for (let i = 0; i < id.length; i++)\n id[i] |= 0;\n }\n\n if (!Array.isArray(id)) {\n return this.reporter.error('objid() should be either array or string, ' +\n 'got: ' + JSON.stringify(id));\n }\n\n if (!relative) {\n if (id[1] >= 40)\n return this.reporter.error('Second objid identifier OOB');\n id.splice(0, 2, id[0] * 40 + id[1]);\n }\n\n // Count number of octets\n let size = 0;\n for (let i = 0; i < id.length; i++) {\n let ident = id[i];\n for (size++; ident >= 0x80; ident >>= 7)\n size++;\n }\n\n const objid = Buffer.alloc(size);\n let offset = objid.length - 1;\n for (let i = id.length - 1; i >= 0; i--) {\n let ident = id[i];\n objid[offset--] = ident & 0x7f;\n while ((ident >>= 7) > 0)\n objid[offset--] = 0x80 | (ident & 0x7f);\n }\n\n return this._createEncoderBuffer(objid);\n};\n\nfunction two(num) {\n if (num < 10)\n return '0' + num;\n else\n return num;\n}\n\nDERNode.prototype._encodeTime = function encodeTime(time, tag) {\n let str;\n const date = new Date(time);\n\n if (tag === 'gentime') {\n str = [\n two(date.getUTCFullYear()),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else if (tag === 'utctime') {\n str = [\n two(date.getUTCFullYear() % 100),\n two(date.getUTCMonth() + 1),\n two(date.getUTCDate()),\n two(date.getUTCHours()),\n two(date.getUTCMinutes()),\n two(date.getUTCSeconds()),\n 'Z'\n ].join('');\n } else {\n this.reporter.error('Encoding ' + tag + ' time is not supported yet');\n }\n\n return this._encodeStr(str, 'octstr');\n};\n\nDERNode.prototype._encodeNull = function encodeNull() {\n return this._createEncoderBuffer('');\n};\n\nDERNode.prototype._encodeInt = function encodeInt(num, values) {\n if (typeof num === 'string') {\n if (!values)\n return this.reporter.error('String int or enum given, but no values map');\n if (!values.hasOwnProperty(num)) {\n return this.reporter.error('Values map doesn\\'t contain: ' +\n JSON.stringify(num));\n }\n num = values[num];\n }\n\n // Bignum, assume big endian\n if (typeof num !== 'number' && !Buffer.isBuffer(num)) {\n const numArray = num.toArray();\n if (!num.sign && numArray[0] & 0x80) {\n numArray.unshift(0);\n }\n num = Buffer.from(numArray);\n }\n\n if (Buffer.isBuffer(num)) {\n let size = num.length;\n if (num.length === 0)\n size++;\n\n const out = Buffer.alloc(size);\n num.copy(out);\n if (num.length === 0)\n out[0] = 0;\n return this._createEncoderBuffer(out);\n }\n\n if (num < 0x80)\n return this._createEncoderBuffer(num);\n\n if (num < 0x100)\n return this._createEncoderBuffer([0, num]);\n\n let size = 1;\n for (let i = num; i >= 0x100; i >>= 8)\n size++;\n\n const out = new Array(size);\n for (let i = out.length - 1; i >= 0; i--) {\n out[i] = num & 0xff;\n num >>= 8;\n }\n if(out[0] & 0x80) {\n out.unshift(0);\n }\n\n return this._createEncoderBuffer(Buffer.from(out));\n};\n\nDERNode.prototype._encodeBool = function encodeBool(value) {\n return this._createEncoderBuffer(value ? 0xff : 0);\n};\n\nDERNode.prototype._use = function use(entity, obj) {\n if (typeof entity === 'function')\n entity = entity(obj);\n return entity._getEncoder('der').tree;\n};\n\nDERNode.prototype._skipDefault = function skipDefault(dataBuffer, reporter, parent) {\n const state = this._baseState;\n let i;\n if (state['default'] === null)\n return false;\n\n const data = dataBuffer.join();\n if (state.defaultBuffer === undefined)\n state.defaultBuffer = this._encodeValue(state['default'], reporter, parent).join();\n\n if (data.length !== state.defaultBuffer.length)\n return false;\n\n for (i=0; i < data.length; i++)\n if (data[i] !== state.defaultBuffer[i])\n return false;\n\n return true;\n};\n\n// Utility methods\n\nfunction encodeTag(tag, primitive, cls, reporter) {\n let res;\n\n if (tag === 'seqof')\n tag = 'seq';\n else if (tag === 'setof')\n tag = 'set';\n\n if (der.tagByName.hasOwnProperty(tag))\n res = der.tagByName[tag];\n else if (typeof tag === 'number' && (tag | 0) === tag)\n res = tag;\n else\n return reporter.error('Unknown tag: ' + tag);\n\n if (res >= 0x1f)\n return reporter.error('Multi-octet tag encoding unsupported');\n\n if (!primitive)\n res |= 0x20;\n\n res |= (der.tagClassByName[cls || 'universal'] << 6);\n\n return res;\n}\n","'use strict';\n\nconst encoders = exports;\n\nencoders.der = require('./der');\nencoders.pem = require('./pem');\n","'use strict';\n\nconst inherits = require('inherits');\n\nconst DEREncoder = require('./der');\n\nfunction PEMEncoder(entity) {\n DEREncoder.call(this, entity);\n this.enc = 'pem';\n}\ninherits(PEMEncoder, DEREncoder);\nmodule.exports = PEMEncoder;\n\nPEMEncoder.prototype.encode = function encode(data, options) {\n const buf = DEREncoder.prototype.encode.call(this, data);\n\n const p = buf.toString('base64');\n const out = [ '-----BEGIN ' + options.label + '-----' ];\n for (let i = 0; i < p.length; i += 64)\n out.push(p.slice(i, i + 64));\n out.push('-----END ' + options.label + '-----');\n return out.join('\\n');\n};\n","// Currently in sync with Node.js lib/assert.js\n// https://github.com/nodejs/node/commit/2a51ae424a513ec9a6aa3466baa0cc1d55dd4f3b\n// Originally from narwhal.js (http://narwhaljs.org)\n// Copyright (c) 2009 Thomas Robinson <280north.com>\n//\n// Permission is hereby granted, free of charge, to any person obtaining a copy\n// of this software and associated documentation files (the 'Software'), to\n// deal in the Software without restriction, including without limitation the\n// rights to use, copy, modify, merge, publish, distribute, sublicense, and/or\n// sell copies of the Software, and to permit persons to whom the Software is\n// furnished to do so, subject to the following conditions:\n//\n// The above copyright notice and this permission notice shall be included in\n// all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n// AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN\n// ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n'use strict';\n\nfunction _typeof(obj) { 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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar _require = require('./internal/errors'),\n _require$codes = _require.codes,\n ERR_AMBIGUOUS_ARGUMENT = _require$codes.ERR_AMBIGUOUS_ARGUMENT,\n ERR_INVALID_ARG_TYPE = _require$codes.ERR_INVALID_ARG_TYPE,\n ERR_INVALID_ARG_VALUE = _require$codes.ERR_INVALID_ARG_VALUE,\n ERR_INVALID_RETURN_VALUE = _require$codes.ERR_INVALID_RETURN_VALUE,\n ERR_MISSING_ARGS = _require$codes.ERR_MISSING_ARGS;\n\nvar AssertionError = require('./internal/assert/assertion_error');\n\nvar _require2 = require('util/'),\n inspect = _require2.inspect;\n\nvar _require$types = require('util/').types,\n isPromise = _require$types.isPromise,\n isRegExp = _require$types.isRegExp;\n\nvar objectAssign = Object.assign ? Object.assign : require('es6-object-assign').assign;\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar errorCache = new Map();\nvar isDeepEqual;\nvar isDeepStrictEqual;\nvar parseExpressionAt;\nvar findNodeAround;\nvar decoder;\n\nfunction lazyLoadComparison() {\n var comparison = require('./internal/util/comparisons');\n\n isDeepEqual = comparison.isDeepEqual;\n isDeepStrictEqual = comparison.isDeepStrictEqual;\n} // Escape control characters but not \\n and \\t to keep the line breaks and\n// indentation intact.\n// eslint-disable-next-line no-control-regex\n\n\nvar escapeSequencesRegExp = /[\\x00-\\x08\\x0b\\x0c\\x0e-\\x1f]/g;\nvar meta = [\"\\\\u0000\", \"\\\\u0001\", \"\\\\u0002\", \"\\\\u0003\", \"\\\\u0004\", \"\\\\u0005\", \"\\\\u0006\", \"\\\\u0007\", '\\\\b', '', '', \"\\\\u000b\", '\\\\f', '', \"\\\\u000e\", \"\\\\u000f\", \"\\\\u0010\", \"\\\\u0011\", \"\\\\u0012\", \"\\\\u0013\", \"\\\\u0014\", \"\\\\u0015\", \"\\\\u0016\", \"\\\\u0017\", \"\\\\u0018\", \"\\\\u0019\", \"\\\\u001a\", \"\\\\u001b\", \"\\\\u001c\", \"\\\\u001d\", \"\\\\u001e\", \"\\\\u001f\"];\n\nvar escapeFn = function escapeFn(str) {\n return meta[str.charCodeAt(0)];\n};\n\nvar warned = false; // The assert module provides functions that throw\n// AssertionError's when particular conditions are not met. The\n// assert module must conform to the following interface.\n\nvar assert = module.exports = ok;\nvar NO_EXCEPTION_SENTINEL = {}; // All of the following functions must throw an AssertionError\n// when a corresponding condition is not met, with a message that\n// may be undefined if not provided. All assertion methods provide\n// both the actual and expected values to the assertion error for\n// display purposes.\n\nfunction innerFail(obj) {\n if (obj.message instanceof Error) throw obj.message;\n throw new AssertionError(obj);\n}\n\nfunction fail(actual, expected, message, operator, stackStartFn) {\n var argsLen = arguments.length;\n var internalMessage;\n\n if (argsLen === 0) {\n internalMessage = 'Failed';\n } else if (argsLen === 1) {\n message = actual;\n actual = undefined;\n } else {\n if (warned === false) {\n warned = true;\n var warn = process.emitWarning ? process.emitWarning : console.warn.bind(console);\n warn('assert.fail() with more than one argument is deprecated. ' + 'Please use assert.strictEqual() instead or only pass a message.', 'DeprecationWarning', 'DEP0094');\n }\n\n if (argsLen === 2) operator = '!=';\n }\n\n if (message instanceof Error) throw message;\n var errArgs = {\n actual: actual,\n expected: expected,\n operator: operator === undefined ? 'fail' : operator,\n stackStartFn: stackStartFn || fail\n };\n\n if (message !== undefined) {\n errArgs.message = message;\n }\n\n var err = new AssertionError(errArgs);\n\n if (internalMessage) {\n err.message = internalMessage;\n err.generatedMessage = true;\n }\n\n throw err;\n}\n\nassert.fail = fail; // The AssertionError is defined in internal/error.\n\nassert.AssertionError = AssertionError;\n\nfunction innerOk(fn, argLen, value, message) {\n if (!value) {\n var generatedMessage = false;\n\n if (argLen === 0) {\n generatedMessage = true;\n message = 'No value argument passed to `assert.ok()`';\n } else if (message instanceof Error) {\n throw message;\n }\n\n var err = new AssertionError({\n actual: value,\n expected: true,\n message: message,\n operator: '==',\n stackStartFn: fn\n });\n err.generatedMessage = generatedMessage;\n throw err;\n }\n} // Pure assertion tests whether a value is truthy, as determined\n// by !!value.\n\n\nfunction ok() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n innerOk.apply(void 0, [ok, args.length].concat(args));\n}\n\nassert.ok = ok; // The equality assertion tests shallow, coercive equality with ==.\n\n/* eslint-disable no-restricted-properties */\n\nassert.equal = function equal(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual != expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '==',\n stackStartFn: equal\n });\n }\n}; // The non-equality assertion tests for whether two objects are not\n// equal with !=.\n\n\nassert.notEqual = function notEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n } // eslint-disable-next-line eqeqeq\n\n\n if (actual == expected) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: '!=',\n stackStartFn: notEqual\n });\n }\n}; // The equivalence assertion tests a deep equality relation.\n\n\nassert.deepEqual = function deepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepEqual',\n stackStartFn: deepEqual\n });\n }\n}; // The non-equivalence assertion tests for any deep inequality.\n\n\nassert.notDeepEqual = function notDeepEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepEqual',\n stackStartFn: notDeepEqual\n });\n }\n};\n/* eslint-enable */\n\n\nassert.deepStrictEqual = function deepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (!isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'deepStrictEqual',\n stackStartFn: deepStrictEqual\n });\n }\n};\n\nassert.notDeepStrictEqual = notDeepStrictEqual;\n\nfunction notDeepStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n\n if (isDeepStrictEqual(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notDeepStrictEqual',\n stackStartFn: notDeepStrictEqual\n });\n }\n}\n\nassert.strictEqual = function strictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (!objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'strictEqual',\n stackStartFn: strictEqual\n });\n }\n};\n\nassert.notStrictEqual = function notStrictEqual(actual, expected, message) {\n if (arguments.length < 2) {\n throw new ERR_MISSING_ARGS('actual', 'expected');\n }\n\n if (objectIs(actual, expected)) {\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: 'notStrictEqual',\n stackStartFn: notStrictEqual\n });\n }\n};\n\nvar Comparison = function Comparison(obj, keys, actual) {\n var _this = this;\n\n _classCallCheck(this, Comparison);\n\n keys.forEach(function (key) {\n if (key in obj) {\n if (actual !== undefined && typeof actual[key] === 'string' && isRegExp(obj[key]) && obj[key].test(actual[key])) {\n _this[key] = actual[key];\n } else {\n _this[key] = obj[key];\n }\n }\n });\n};\n\nfunction compareExceptionKey(actual, expected, key, message, keys, fn) {\n if (!(key in actual) || !isDeepStrictEqual(actual[key], expected[key])) {\n if (!message) {\n // Create placeholder objects to create a nice output.\n var a = new Comparison(actual, keys);\n var b = new Comparison(expected, keys, actual);\n var err = new AssertionError({\n actual: a,\n expected: b,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.actual = actual;\n err.expected = expected;\n err.operator = fn.name;\n throw err;\n }\n\n innerFail({\n actual: actual,\n expected: expected,\n message: message,\n operator: fn.name,\n stackStartFn: fn\n });\n }\n}\n\nfunction expectedException(actual, expected, msg, fn) {\n if (typeof expected !== 'function') {\n if (isRegExp(expected)) return expected.test(actual); // assert.doesNotThrow does not accept objects.\n\n if (arguments.length === 2) {\n throw new ERR_INVALID_ARG_TYPE('expected', ['Function', 'RegExp'], expected);\n } // Handle primitives properly.\n\n\n if (_typeof(actual) !== 'object' || actual === null) {\n var err = new AssertionError({\n actual: actual,\n expected: expected,\n message: msg,\n operator: 'deepStrictEqual',\n stackStartFn: fn\n });\n err.operator = fn.name;\n throw err;\n }\n\n var keys = Object.keys(expected); // Special handle errors to make sure the name and the message are compared\n // as well.\n\n if (expected instanceof Error) {\n keys.push('name', 'message');\n } else if (keys.length === 0) {\n throw new ERR_INVALID_ARG_VALUE('error', expected, 'may not be an empty object');\n }\n\n if (isDeepEqual === undefined) lazyLoadComparison();\n keys.forEach(function (key) {\n if (typeof actual[key] === 'string' && isRegExp(expected[key]) && expected[key].test(actual[key])) {\n return;\n }\n\n compareExceptionKey(actual, expected, key, msg, keys, fn);\n });\n return true;\n } // Guard instanceof against arrow functions as they don't have a prototype.\n\n\n if (expected.prototype !== undefined && actual instanceof expected) {\n return true;\n }\n\n if (Error.isPrototypeOf(expected)) {\n return false;\n }\n\n return expected.call({}, actual) === true;\n}\n\nfunction getActual(fn) {\n if (typeof fn !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('fn', 'Function', fn);\n }\n\n try {\n fn();\n } catch (e) {\n return e;\n }\n\n return NO_EXCEPTION_SENTINEL;\n}\n\nfunction checkIsPromise(obj) {\n // Accept native ES6 promises and promises that are implemented in a similar\n // way. Do not accept thenables that use a function as `obj` and that have no\n // `catch` handler.\n // TODO: thenables are checked up until they have the correct methods,\n // but according to documentation, the `then` method should receive\n // the `fulfill` and `reject` arguments as well or it may be never resolved.\n return isPromise(obj) || obj !== null && _typeof(obj) === 'object' && typeof obj.then === 'function' && typeof obj.catch === 'function';\n}\n\nfunction waitForActual(promiseFn) {\n return Promise.resolve().then(function () {\n var resultPromise;\n\n if (typeof promiseFn === 'function') {\n // Return a rejected promise if `promiseFn` throws synchronously.\n resultPromise = promiseFn(); // Fail in case no promise is returned.\n\n if (!checkIsPromise(resultPromise)) {\n throw new ERR_INVALID_RETURN_VALUE('instance of Promise', 'promiseFn', resultPromise);\n }\n } else if (checkIsPromise(promiseFn)) {\n resultPromise = promiseFn;\n } else {\n throw new ERR_INVALID_ARG_TYPE('promiseFn', ['Function', 'Promise'], promiseFn);\n }\n\n return Promise.resolve().then(function () {\n return resultPromise;\n }).then(function () {\n return NO_EXCEPTION_SENTINEL;\n }).catch(function (e) {\n return e;\n });\n });\n}\n\nfunction expectsError(stackStartFn, actual, error, message) {\n if (typeof error === 'string') {\n if (arguments.length === 4) {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (_typeof(actual) === 'object' && actual !== null) {\n if (actual.message === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error message \\\"\".concat(actual.message, \"\\\" is identical to the message.\"));\n }\n } else if (actual === error) {\n throw new ERR_AMBIGUOUS_ARGUMENT('error/message', \"The error \\\"\".concat(actual, \"\\\" is identical to the message.\"));\n }\n\n message = error;\n error = undefined;\n } else if (error != null && _typeof(error) !== 'object' && typeof error !== 'function') {\n throw new ERR_INVALID_ARG_TYPE('error', ['Object', 'Error', 'Function', 'RegExp'], error);\n }\n\n if (actual === NO_EXCEPTION_SENTINEL) {\n var details = '';\n\n if (error && error.name) {\n details += \" (\".concat(error.name, \")\");\n }\n\n details += message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'rejects' ? 'rejection' : 'exception';\n innerFail({\n actual: undefined,\n expected: error,\n operator: stackStartFn.name,\n message: \"Missing expected \".concat(fnType).concat(details),\n stackStartFn: stackStartFn\n });\n }\n\n if (error && !expectedException(actual, error, message, stackStartFn)) {\n throw actual;\n }\n}\n\nfunction expectsNoError(stackStartFn, actual, error, message) {\n if (actual === NO_EXCEPTION_SENTINEL) return;\n\n if (typeof error === 'string') {\n message = error;\n error = undefined;\n }\n\n if (!error || expectedException(actual, error)) {\n var details = message ? \": \".concat(message) : '.';\n var fnType = stackStartFn.name === 'doesNotReject' ? 'rejection' : 'exception';\n innerFail({\n actual: actual,\n expected: error,\n operator: stackStartFn.name,\n message: \"Got unwanted \".concat(fnType).concat(details, \"\\n\") + \"Actual message: \\\"\".concat(actual && actual.message, \"\\\"\"),\n stackStartFn: stackStartFn\n });\n }\n\n throw actual;\n}\n\nassert.throws = function throws(promiseFn) {\n for (var _len2 = arguments.length, args = new Array(_len2 > 1 ? _len2 - 1 : 0), _key2 = 1; _key2 < _len2; _key2++) {\n args[_key2 - 1] = arguments[_key2];\n }\n\n expectsError.apply(void 0, [throws, getActual(promiseFn)].concat(args));\n};\n\nassert.rejects = function rejects(promiseFn) {\n for (var _len3 = arguments.length, args = new Array(_len3 > 1 ? _len3 - 1 : 0), _key3 = 1; _key3 < _len3; _key3++) {\n args[_key3 - 1] = arguments[_key3];\n }\n\n return waitForActual(promiseFn).then(function (result) {\n return expectsError.apply(void 0, [rejects, result].concat(args));\n });\n};\n\nassert.doesNotThrow = function doesNotThrow(fn) {\n for (var _len4 = arguments.length, args = new Array(_len4 > 1 ? _len4 - 1 : 0), _key4 = 1; _key4 < _len4; _key4++) {\n args[_key4 - 1] = arguments[_key4];\n }\n\n expectsNoError.apply(void 0, [doesNotThrow, getActual(fn)].concat(args));\n};\n\nassert.doesNotReject = function doesNotReject(fn) {\n for (var _len5 = arguments.length, args = new Array(_len5 > 1 ? _len5 - 1 : 0), _key5 = 1; _key5 < _len5; _key5++) {\n args[_key5 - 1] = arguments[_key5];\n }\n\n return waitForActual(fn).then(function (result) {\n return expectsNoError.apply(void 0, [doesNotReject, result].concat(args));\n });\n};\n\nassert.ifError = function ifError(err) {\n if (err !== null && err !== undefined) {\n var message = 'ifError got unwanted exception: ';\n\n if (_typeof(err) === 'object' && typeof err.message === 'string') {\n if (err.message.length === 0 && err.constructor) {\n message += err.constructor.name;\n } else {\n message += err.message;\n }\n } else {\n message += inspect(err);\n }\n\n var newErr = new AssertionError({\n actual: err,\n expected: null,\n operator: 'ifError',\n message: message,\n stackStartFn: ifError\n }); // Make sure we actually have a stack trace!\n\n var origStack = err.stack;\n\n if (typeof origStack === 'string') {\n // This will remove any duplicated frames from the error frames taken\n // from within `ifError` and add the original error frames to the newly\n // created ones.\n var tmp2 = origStack.split('\\n');\n tmp2.shift(); // Filter all frames existing in err.stack.\n\n var tmp1 = newErr.stack.split('\\n');\n\n for (var i = 0; i < tmp2.length; i++) {\n // Find the first occurrence of the frame.\n var pos = tmp1.indexOf(tmp2[i]);\n\n if (pos !== -1) {\n // Only keep new frames.\n tmp1 = tmp1.slice(0, pos);\n break;\n }\n }\n\n newErr.stack = \"\".concat(tmp1.join('\\n'), \"\\n\").concat(tmp2.join('\\n'));\n }\n\n throw newErr;\n }\n}; // Expose a strict only variant of assert\n\n\nfunction strict() {\n for (var _len6 = arguments.length, args = new Array(_len6), _key6 = 0; _key6 < _len6; _key6++) {\n args[_key6] = arguments[_key6];\n }\n\n innerOk.apply(void 0, [strict, args.length].concat(args));\n}\n\nassert.strict = objectAssign(strict, assert, {\n equal: assert.strictEqual,\n deepEqual: assert.deepStrictEqual,\n notEqual: assert.notStrictEqual,\n notDeepEqual: assert.notDeepStrictEqual\n});\nassert.strict.strict = assert.strict;","// Currently in sync with Node.js lib/internal/assert/assertion_error.js\n// https://github.com/nodejs/node/commit/0817840f775032169ddd70c85ac059f18ffcc81c\n'use strict';\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; var ownKeys = Object.keys(source); if (typeof Object.getOwnPropertySymbols === 'function') { ownKeys = ownKeys.concat(Object.getOwnPropertySymbols(source).filter(function (sym) { return Object.getOwnPropertyDescriptor(source, sym).enumerable; })); } ownKeys.forEach(function (key) { _defineProperty(target, key, source[key]); }); } return target; }\n\nfunction _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return 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 _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } 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 _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 _wrapNativeSuper(Class) { var _cache = typeof Map === \"function\" ? new Map() : undefined; _wrapNativeSuper = function _wrapNativeSuper(Class) { if (Class === null || !_isNativeFunction(Class)) return Class; if (typeof Class !== \"function\") { throw new TypeError(\"Super expression must either be null or a function\"); } if (typeof _cache !== \"undefined\") { if (_cache.has(Class)) return _cache.get(Class); _cache.set(Class, Wrapper); } function Wrapper() { return _construct(Class, arguments, _getPrototypeOf(this).constructor); } Wrapper.prototype = Object.create(Class.prototype, { constructor: { value: Wrapper, enumerable: false, writable: true, configurable: true } }); return _setPrototypeOf(Wrapper, Class); }; return _wrapNativeSuper(Class); }\n\nfunction isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction _construct(Parent, args, Class) { if (isNativeReflectConstruct()) { _construct = Reflect.construct; } else { _construct = function _construct(Parent, args, Class) { var a = [null]; a.push.apply(a, args); var Constructor = Function.bind.apply(Parent, a); var instance = new Constructor(); if (Class) _setPrototypeOf(instance, Class.prototype); return instance; }; } return _construct.apply(null, arguments); }\n\nfunction _isNativeFunction(fn) { return Function.toString.call(fn).indexOf(\"[native code]\") !== -1; }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _typeof(obj) { 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\nvar _require = require('util/'),\n inspect = _require.inspect;\n\nvar _require2 = require('../errors'),\n ERR_INVALID_ARG_TYPE = _require2.codes.ERR_INVALID_ARG_TYPE; // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/repeat\n\n\nfunction repeat(str, count) {\n count = Math.floor(count);\n if (str.length == 0 || count == 0) return '';\n var maxCount = str.length * count;\n count = Math.floor(Math.log(count) / Math.log(2));\n\n while (count) {\n str += str;\n count--;\n }\n\n str += str.substring(0, maxCount - str.length);\n return str;\n}\n\nvar blue = '';\nvar green = '';\nvar red = '';\nvar white = '';\nvar kReadableOperator = {\n deepStrictEqual: 'Expected values to be strictly deep-equal:',\n strictEqual: 'Expected values to be strictly equal:',\n strictEqualObject: 'Expected \"actual\" to be reference-equal to \"expected\":',\n deepEqual: 'Expected values to be loosely deep-equal:',\n equal: 'Expected values to be loosely equal:',\n notDeepStrictEqual: 'Expected \"actual\" not to be strictly deep-equal to:',\n notStrictEqual: 'Expected \"actual\" to be strictly unequal to:',\n notStrictEqualObject: 'Expected \"actual\" not to be reference-equal to \"expected\":',\n notDeepEqual: 'Expected \"actual\" not to be loosely deep-equal to:',\n notEqual: 'Expected \"actual\" to be loosely unequal to:',\n notIdentical: 'Values identical but not reference-equal:'\n}; // Comparing short primitives should just show === / !== instead of using the\n// diff.\n\nvar kMaxShortLength = 10;\n\nfunction copyError(source) {\n var keys = Object.keys(source);\n var target = Object.create(Object.getPrototypeOf(source));\n keys.forEach(function (key) {\n target[key] = source[key];\n });\n Object.defineProperty(target, 'message', {\n value: source.message\n });\n return target;\n}\n\nfunction inspectValue(val) {\n // The util.inspect default values could be changed. This makes sure the\n // error messages contain the necessary information nevertheless.\n return inspect(val, {\n compact: false,\n customInspect: false,\n depth: 1000,\n maxArrayLength: Infinity,\n // Assert compares only enumerable properties (with a few exceptions).\n showHidden: false,\n // Having a long line as error is better than wrapping the line for\n // comparison for now.\n // TODO(BridgeAR): `breakLength` should be limited as soon as soon as we\n // have meta information about the inspected properties (i.e., know where\n // in what line the property starts and ends).\n breakLength: Infinity,\n // Assert does not detect proxies currently.\n showProxy: false,\n sorted: true,\n // Inspect getters as we also check them when comparing entries.\n getters: true\n });\n}\n\nfunction createErrDiff(actual, expected, operator) {\n var other = '';\n var res = '';\n var lastPos = 0;\n var end = '';\n var skipped = false;\n var actualInspected = inspectValue(actual);\n var actualLines = actualInspected.split('\\n');\n var expectedLines = inspectValue(expected).split('\\n');\n var i = 0;\n var indicator = ''; // In case both values are objects explicitly mark them as not reference equal\n // for the `strictEqual` operator.\n\n if (operator === 'strictEqual' && _typeof(actual) === 'object' && _typeof(expected) === 'object' && actual !== null && expected !== null) {\n operator = 'strictEqualObject';\n } // If \"actual\" and \"expected\" fit on a single line and they are not strictly\n // equal, check further special handling.\n\n\n if (actualLines.length === 1 && expectedLines.length === 1 && actualLines[0] !== expectedLines[0]) {\n var inputLength = actualLines[0].length + expectedLines[0].length; // If the character length of \"actual\" and \"expected\" together is less than\n // kMaxShortLength and if neither is an object and at least one of them is\n // not `zero`, use the strict equal comparison to visualize the output.\n\n if (inputLength <= kMaxShortLength) {\n if ((_typeof(actual) !== 'object' || actual === null) && (_typeof(expected) !== 'object' || expected === null) && (actual !== 0 || expected !== 0)) {\n // -0 === +0\n return \"\".concat(kReadableOperator[operator], \"\\n\\n\") + \"\".concat(actualLines[0], \" !== \").concat(expectedLines[0], \"\\n\");\n }\n } else if (operator !== 'strictEqualObject') {\n // If the stderr is a tty and the input length is lower than the current\n // columns per line, add a mismatch indicator below the output. If it is\n // not a tty, use a default value of 80 characters.\n var maxLength = process.stderr && process.stderr.isTTY ? process.stderr.columns : 80;\n\n if (inputLength < maxLength) {\n while (actualLines[0][i] === expectedLines[0][i]) {\n i++;\n } // Ignore the first characters.\n\n\n if (i > 2) {\n // Add position indicator for the first mismatch in case it is a\n // single line and the input length is less than the column length.\n indicator = \"\\n \".concat(repeat(' ', i), \"^\");\n i = 0;\n }\n }\n }\n } // Remove all ending lines that match (this optimizes the output for\n // readability by reducing the number of total changed lines).\n\n\n var a = actualLines[actualLines.length - 1];\n var b = expectedLines[expectedLines.length - 1];\n\n while (a === b) {\n if (i++ < 2) {\n end = \"\\n \".concat(a).concat(end);\n } else {\n other = a;\n }\n\n actualLines.pop();\n expectedLines.pop();\n if (actualLines.length === 0 || expectedLines.length === 0) break;\n a = actualLines[actualLines.length - 1];\n b = expectedLines[expectedLines.length - 1];\n }\n\n var maxLines = Math.max(actualLines.length, expectedLines.length); // Strict equal with identical objects that are not identical by reference.\n // E.g., assert.deepStrictEqual({ a: Symbol() }, { a: Symbol() })\n\n if (maxLines === 0) {\n // We have to get the result again. The lines were all removed before.\n var _actualLines = actualInspected.split('\\n'); // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (_actualLines.length > 30) {\n _actualLines[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (_actualLines.length > 27) {\n _actualLines.pop();\n }\n }\n\n return \"\".concat(kReadableOperator.notIdentical, \"\\n\\n\").concat(_actualLines.join('\\n'), \"\\n\");\n }\n\n if (i > 3) {\n end = \"\\n\".concat(blue, \"...\").concat(white).concat(end);\n skipped = true;\n }\n\n if (other !== '') {\n end = \"\\n \".concat(other).concat(end);\n other = '';\n }\n\n var printedLines = 0;\n var msg = kReadableOperator[operator] + \"\\n\".concat(green, \"+ actual\").concat(white, \" \").concat(red, \"- expected\").concat(white);\n var skippedMsg = \" \".concat(blue, \"...\").concat(white, \" Lines skipped\");\n\n for (i = 0; i < maxLines; i++) {\n // Only extra expected lines exist\n var cur = i - lastPos;\n\n if (actualLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(expectedLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(expectedLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the expected line to the cache.\n\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLines[i]);\n printedLines++; // Only extra actual lines exist\n } else if (expectedLines.length < i + 1) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLines[i]);\n printedLines++; // Lines diverge\n } else {\n var expectedLine = expectedLines[i];\n var actualLine = actualLines[i]; // If the lines diverge, specifically check for lines that only diverge by\n // a trailing comma. In that case it is actually identical and we should\n // mark it as such.\n\n var divergingLines = actualLine !== expectedLine && (!endsWith(actualLine, ',') || actualLine.slice(0, -1) !== expectedLine); // If the expected line has a trailing comma but is otherwise identical,\n // add a comma at the end of the actual line. Otherwise the output could\n // look weird as in:\n //\n // [\n // 1 // No comma at the end!\n // + 2\n // ]\n //\n\n if (divergingLines && endsWith(expectedLine, ',') && expectedLine.slice(0, -1) === actualLine) {\n divergingLines = false;\n actualLine += ',';\n }\n\n if (divergingLines) {\n // If the last diverging line is more than one line above and the\n // current line is at least line three, add some of the former lines and\n // also add dots to indicate skipped entries.\n if (cur > 1 && i > 2) {\n if (cur > 4) {\n res += \"\\n\".concat(blue, \"...\").concat(white);\n skipped = true;\n } else if (cur > 3) {\n res += \"\\n \".concat(actualLines[i - 2]);\n printedLines++;\n }\n\n res += \"\\n \".concat(actualLines[i - 1]);\n printedLines++;\n } // Mark the current line as the last diverging one.\n\n\n lastPos = i; // Add the actual line to the result and cache the expected diverging\n // line so consecutive diverging lines show up as +++--- and not +-+-+-.\n\n res += \"\\n\".concat(green, \"+\").concat(white, \" \").concat(actualLine);\n other += \"\\n\".concat(red, \"-\").concat(white, \" \").concat(expectedLine);\n printedLines += 2; // Lines are identical\n } else {\n // Add all cached information to the result before adding other things\n // and reset the cache.\n res += other;\n other = ''; // If the last diverging line is exactly one line above or if it is the\n // very first line, add the line to the result.\n\n if (cur === 1 || i === 0) {\n res += \"\\n \".concat(actualLine);\n printedLines++;\n }\n }\n } // Inspected object to big (Show ~20 rows max)\n\n\n if (printedLines > 20 && i < maxLines - 2) {\n return \"\".concat(msg).concat(skippedMsg, \"\\n\").concat(res, \"\\n\").concat(blue, \"...\").concat(white).concat(other, \"\\n\") + \"\".concat(blue, \"...\").concat(white);\n }\n }\n\n return \"\".concat(msg).concat(skipped ? skippedMsg : '', \"\\n\").concat(res).concat(other).concat(end).concat(indicator);\n}\n\nvar AssertionError =\n/*#__PURE__*/\nfunction (_Error) {\n _inherits(AssertionError, _Error);\n\n function AssertionError(options) {\n var _this;\n\n _classCallCheck(this, AssertionError);\n\n if (_typeof(options) !== 'object' || options === null) {\n throw new ERR_INVALID_ARG_TYPE('options', 'Object', options);\n }\n\n var message = options.message,\n operator = options.operator,\n stackStartFn = options.stackStartFn;\n var actual = options.actual,\n expected = options.expected;\n var limit = Error.stackTraceLimit;\n Error.stackTraceLimit = 0;\n\n if (message != null) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, String(message)));\n } else {\n if (process.stderr && process.stderr.isTTY) {\n // Reset on each call to make sure we handle dynamically set environment\n // variables correct.\n if (process.stderr && process.stderr.getColorDepth && process.stderr.getColorDepth() !== 1) {\n blue = \"\\x1B[34m\";\n green = \"\\x1B[32m\";\n white = \"\\x1B[39m\";\n red = \"\\x1B[31m\";\n } else {\n blue = '';\n green = '';\n white = '';\n red = '';\n }\n } // Prevent the error stack from being visible by duplicating the error\n // in a very close way to the original in case both sides are actually\n // instances of Error.\n\n\n if (_typeof(actual) === 'object' && actual !== null && _typeof(expected) === 'object' && expected !== null && 'stack' in actual && actual instanceof Error && 'stack' in expected && expected instanceof Error) {\n actual = copyError(actual);\n expected = copyError(expected);\n }\n\n if (operator === 'deepStrictEqual' || operator === 'strictEqual') {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, createErrDiff(actual, expected, operator)));\n } else if (operator === 'notDeepStrictEqual' || operator === 'notStrictEqual') {\n // In case the objects are equal but the operator requires unequal, show\n // the first object and say A equals B\n var base = kReadableOperator[operator];\n var res = inspectValue(actual).split('\\n'); // In case \"actual\" is an object, it should not be reference equal.\n\n if (operator === 'notStrictEqual' && _typeof(actual) === 'object' && actual !== null) {\n base = kReadableOperator.notStrictEqualObject;\n } // Only remove lines in case it makes sense to collapse those.\n // TODO: Accept env to always show the full error.\n\n\n if (res.length > 30) {\n res[26] = \"\".concat(blue, \"...\").concat(white);\n\n while (res.length > 27) {\n res.pop();\n }\n } // Only print a single input.\n\n\n if (res.length === 1) {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \" \").concat(res[0])));\n } else {\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(base, \"\\n\\n\").concat(res.join('\\n'), \"\\n\")));\n }\n } else {\n var _res = inspectValue(actual);\n\n var other = '';\n var knownOperators = kReadableOperator[operator];\n\n if (operator === 'notDeepEqual' || operator === 'notEqual') {\n _res = \"\".concat(kReadableOperator[operator], \"\\n\\n\").concat(_res);\n\n if (_res.length > 1024) {\n _res = \"\".concat(_res.slice(0, 1021), \"...\");\n }\n } else {\n other = \"\".concat(inspectValue(expected));\n\n if (_res.length > 512) {\n _res = \"\".concat(_res.slice(0, 509), \"...\");\n }\n\n if (other.length > 512) {\n other = \"\".concat(other.slice(0, 509), \"...\");\n }\n\n if (operator === 'deepEqual' || operator === 'equal') {\n _res = \"\".concat(knownOperators, \"\\n\\n\").concat(_res, \"\\n\\nshould equal\\n\\n\");\n } else {\n other = \" \".concat(operator, \" \").concat(other);\n }\n }\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(AssertionError).call(this, \"\".concat(_res).concat(other)));\n }\n }\n\n Error.stackTraceLimit = limit;\n _this.generatedMessage = !message;\n Object.defineProperty(_assertThisInitialized(_this), 'name', {\n value: 'AssertionError [ERR_ASSERTION]',\n enumerable: false,\n writable: true,\n configurable: true\n });\n _this.code = 'ERR_ASSERTION';\n _this.actual = actual;\n _this.expected = expected;\n _this.operator = operator;\n\n if (Error.captureStackTrace) {\n // eslint-disable-next-line no-restricted-syntax\n Error.captureStackTrace(_assertThisInitialized(_this), stackStartFn);\n } // Create error message including the error code in the name.\n\n\n _this.stack; // Reset the name.\n\n _this.name = 'AssertionError';\n return _possibleConstructorReturn(_this);\n }\n\n _createClass(AssertionError, [{\n key: \"toString\",\n value: function toString() {\n return \"\".concat(this.name, \" [\").concat(this.code, \"]: \").concat(this.message);\n }\n }, {\n key: inspect.custom,\n value: function value(recurseTimes, ctx) {\n // This limits the `actual` and `expected` property default inspection to\n // the minimum depth. Otherwise those values would be too verbose compared\n // to the actual error message which contains a combined view of these two\n // input values.\n return inspect(this, _objectSpread({}, ctx, {\n customInspect: false,\n depth: 0\n }));\n }\n }]);\n\n return AssertionError;\n}(_wrapNativeSuper(Error));\n\nmodule.exports = AssertionError;","// Currently in sync with Node.js lib/internal/errors.js\n// https://github.com/nodejs/node/commit/3b044962c48fe313905877a96b5d0894a5404f6f\n\n/* eslint node-core/documented-errors: \"error\" */\n\n/* eslint node-core/alphabetize-errors: \"error\" */\n\n/* eslint node-core/prefer-util-format-errors: \"error\" */\n'use strict'; // The whole point behind this internal module is to allow Node.js to no\n// longer be forced to treat every error message change as a semver-major\n// change. The NodeError classes here all expose a `code` property whose\n// value statically and permanently identifies the error. While the error\n// message may change, the code should not.\n\nfunction _typeof(obj) { 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\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } 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 _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\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\nvar codes = {}; // Lazy loaded\n\nvar assert;\nvar util;\n\nfunction createErrorType(code, message, Base) {\n if (!Base) {\n Base = Error;\n }\n\n function getMessage(arg1, arg2, arg3) {\n if (typeof message === 'string') {\n return message;\n } else {\n return message(arg1, arg2, arg3);\n }\n }\n\n var NodeError =\n /*#__PURE__*/\n function (_Base) {\n _inherits(NodeError, _Base);\n\n function NodeError(arg1, arg2, arg3) {\n var _this;\n\n _classCallCheck(this, NodeError);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(NodeError).call(this, getMessage(arg1, arg2, arg3)));\n _this.code = code;\n return _this;\n }\n\n return NodeError;\n }(Base);\n\n codes[code] = NodeError;\n} // https://github.com/nodejs/node/blob/v10.8.0/lib/internal/errors.js\n\n\nfunction oneOf(expected, thing) {\n if (Array.isArray(expected)) {\n var len = expected.length;\n expected = expected.map(function (i) {\n return String(i);\n });\n\n if (len > 2) {\n return \"one of \".concat(thing, \" \").concat(expected.slice(0, len - 1).join(', '), \", or \") + expected[len - 1];\n } else if (len === 2) {\n return \"one of \".concat(thing, \" \").concat(expected[0], \" or \").concat(expected[1]);\n } else {\n return \"of \".concat(thing, \" \").concat(expected[0]);\n }\n } else {\n return \"of \".concat(thing, \" \").concat(String(expected));\n }\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/startsWith\n\n\nfunction startsWith(str, search, pos) {\n return str.substr(!pos || pos < 0 ? 0 : +pos, search.length) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/endsWith\n\n\nfunction endsWith(str, search, this_len) {\n if (this_len === undefined || this_len > str.length) {\n this_len = str.length;\n }\n\n return str.substring(this_len - search.length, this_len) === search;\n} // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/includes\n\n\nfunction includes(str, search, start) {\n if (typeof start !== 'number') {\n start = 0;\n }\n\n if (start + search.length > str.length) {\n return false;\n } else {\n return str.indexOf(search, start) !== -1;\n }\n}\n\ncreateErrorType('ERR_AMBIGUOUS_ARGUMENT', 'The \"%s\" argument is ambiguous. %s', TypeError);\ncreateErrorType('ERR_INVALID_ARG_TYPE', function (name, expected, actual) {\n if (assert === undefined) assert = require('../assert');\n assert(typeof name === 'string', \"'name' must be a string\"); // determiner: 'must be' or 'must not be'\n\n var determiner;\n\n if (typeof expected === 'string' && startsWith(expected, 'not ')) {\n determiner = 'must not be';\n expected = expected.replace(/^not /, '');\n } else {\n determiner = 'must be';\n }\n\n var msg;\n\n if (endsWith(name, ' argument')) {\n // For cases like 'first argument'\n msg = \"The \".concat(name, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } else {\n var type = includes(name, '.') ? 'property' : 'argument';\n msg = \"The \\\"\".concat(name, \"\\\" \").concat(type, \" \").concat(determiner, \" \").concat(oneOf(expected, 'type'));\n } // TODO(BridgeAR): Improve the output by showing `null` and similar.\n\n\n msg += \". Received type \".concat(_typeof(actual));\n return msg;\n}, TypeError);\ncreateErrorType('ERR_INVALID_ARG_VALUE', function (name, value) {\n var reason = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'is invalid';\n if (util === undefined) util = require('util/');\n var inspected = util.inspect(value);\n\n if (inspected.length > 128) {\n inspected = \"\".concat(inspected.slice(0, 128), \"...\");\n }\n\n return \"The argument '\".concat(name, \"' \").concat(reason, \". Received \").concat(inspected);\n}, TypeError, RangeError);\ncreateErrorType('ERR_INVALID_RETURN_VALUE', function (input, name, value) {\n var type;\n\n if (value && value.constructor && value.constructor.name) {\n type = \"instance of \".concat(value.constructor.name);\n } else {\n type = \"type \".concat(_typeof(value));\n }\n\n return \"Expected \".concat(input, \" to be returned from the \\\"\").concat(name, \"\\\"\") + \" function but got \".concat(type, \".\");\n}, TypeError);\ncreateErrorType('ERR_MISSING_ARGS', function () {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n if (assert === undefined) assert = require('../assert');\n assert(args.length > 0, 'At least one arg needs to be specified');\n var msg = 'The ';\n var len = args.length;\n args = args.map(function (a) {\n return \"\\\"\".concat(a, \"\\\"\");\n });\n\n switch (len) {\n case 1:\n msg += \"\".concat(args[0], \" argument\");\n break;\n\n case 2:\n msg += \"\".concat(args[0], \" and \").concat(args[1], \" arguments\");\n break;\n\n default:\n msg += args.slice(0, len - 1).join(', ');\n msg += \", and \".concat(args[len - 1], \" arguments\");\n break;\n }\n\n return \"\".concat(msg, \" must be specified\");\n}, TypeError);\nmodule.exports.codes = codes;","// Currently in sync with Node.js lib/internal/util/comparisons.js\n// https://github.com/nodejs/node/commit/112cc7c27551254aa2b17098fb774867f05ed0d9\n'use strict';\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { throw new TypeError(\"Invalid attempt to destructure non-iterable instance\"); }\n\nfunction _iterableToArrayLimit(arr, i) { var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nfunction _typeof(obj) { 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\nvar regexFlagsSupported = /a/g.flags !== undefined;\n\nvar arrayFromSet = function arrayFromSet(set) {\n var array = [];\n set.forEach(function (value) {\n return array.push(value);\n });\n return array;\n};\n\nvar arrayFromMap = function arrayFromMap(map) {\n var array = [];\n map.forEach(function (value, key) {\n return array.push([key, value]);\n });\n return array;\n};\n\nvar objectIs = Object.is ? Object.is : require('object-is');\nvar objectGetOwnPropertySymbols = Object.getOwnPropertySymbols ? Object.getOwnPropertySymbols : function () {\n return [];\n};\nvar numberIsNaN = Number.isNaN ? Number.isNaN : require('is-nan');\n\nfunction uncurryThis(f) {\n return f.call.bind(f);\n}\n\nvar hasOwnProperty = uncurryThis(Object.prototype.hasOwnProperty);\nvar propertyIsEnumerable = uncurryThis(Object.prototype.propertyIsEnumerable);\nvar objectToString = uncurryThis(Object.prototype.toString);\n\nvar _require$types = require('util/').types,\n isAnyArrayBuffer = _require$types.isAnyArrayBuffer,\n isArrayBufferView = _require$types.isArrayBufferView,\n isDate = _require$types.isDate,\n isMap = _require$types.isMap,\n isRegExp = _require$types.isRegExp,\n isSet = _require$types.isSet,\n isNativeError = _require$types.isNativeError,\n isBoxedPrimitive = _require$types.isBoxedPrimitive,\n isNumberObject = _require$types.isNumberObject,\n isStringObject = _require$types.isStringObject,\n isBooleanObject = _require$types.isBooleanObject,\n isBigIntObject = _require$types.isBigIntObject,\n isSymbolObject = _require$types.isSymbolObject,\n isFloat32Array = _require$types.isFloat32Array,\n isFloat64Array = _require$types.isFloat64Array;\n\nfunction isNonIndex(key) {\n if (key.length === 0 || key.length > 10) return true;\n\n for (var i = 0; i < key.length; i++) {\n var code = key.charCodeAt(i);\n if (code < 48 || code > 57) return true;\n } // The maximum size for an array is 2 ** 32 -1.\n\n\n return key.length === 10 && key >= Math.pow(2, 32);\n}\n\nfunction getOwnNonIndexProperties(value) {\n return Object.keys(value).filter(isNonIndex).concat(objectGetOwnPropertySymbols(value).filter(Object.prototype.propertyIsEnumerable.bind(value)));\n} // Taken from https://github.com/feross/buffer/blob/680e9e5e488f22aac27599a57dc844a6315928dd/index.js\n// original notice:\n\n/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n\n\nfunction compare(a, b) {\n if (a === b) {\n return 0;\n }\n\n var x = a.length;\n var y = b.length;\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i];\n y = b[i];\n break;\n }\n }\n\n if (x < y) {\n return -1;\n }\n\n if (y < x) {\n return 1;\n }\n\n return 0;\n}\n\nvar ONLY_ENUMERABLE = undefined;\nvar kStrict = true;\nvar kLoose = false;\nvar kNoIterator = 0;\nvar kIsArray = 1;\nvar kIsSet = 2;\nvar kIsMap = 3; // Check if they have the same source and flags\n\nfunction areSimilarRegExps(a, b) {\n return regexFlagsSupported ? a.source === b.source && a.flags === b.flags : RegExp.prototype.toString.call(a) === RegExp.prototype.toString.call(b);\n}\n\nfunction areSimilarFloatArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n for (var offset = 0; offset < a.byteLength; offset++) {\n if (a[offset] !== b[offset]) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction areSimilarTypedArrays(a, b) {\n if (a.byteLength !== b.byteLength) {\n return false;\n }\n\n return compare(new Uint8Array(a.buffer, a.byteOffset, a.byteLength), new Uint8Array(b.buffer, b.byteOffset, b.byteLength)) === 0;\n}\n\nfunction areEqualArrayBuffers(buf1, buf2) {\n return buf1.byteLength === buf2.byteLength && compare(new Uint8Array(buf1), new Uint8Array(buf2)) === 0;\n}\n\nfunction isEqualBoxedPrimitive(val1, val2) {\n if (isNumberObject(val1)) {\n return isNumberObject(val2) && objectIs(Number.prototype.valueOf.call(val1), Number.prototype.valueOf.call(val2));\n }\n\n if (isStringObject(val1)) {\n return isStringObject(val2) && String.prototype.valueOf.call(val1) === String.prototype.valueOf.call(val2);\n }\n\n if (isBooleanObject(val1)) {\n return isBooleanObject(val2) && Boolean.prototype.valueOf.call(val1) === Boolean.prototype.valueOf.call(val2);\n }\n\n if (isBigIntObject(val1)) {\n return isBigIntObject(val2) && BigInt.prototype.valueOf.call(val1) === BigInt.prototype.valueOf.call(val2);\n }\n\n return isSymbolObject(val2) && Symbol.prototype.valueOf.call(val1) === Symbol.prototype.valueOf.call(val2);\n} // Notes: Type tags are historical [[Class]] properties that can be set by\n// FunctionTemplate::SetClassName() in C++ or Symbol.toStringTag in JS\n// and retrieved using Object.prototype.toString.call(obj) in JS\n// See https://tc39.github.io/ecma262/#sec-object.prototype.tostring\n// for a list of tags pre-defined in the spec.\n// There are some unspecified tags in the wild too (e.g. typed array tags).\n// Since tags can be altered, they only serve fast failures\n//\n// Typed arrays and buffers are checked by comparing the content in their\n// underlying ArrayBuffer. This optimization requires that it's\n// reasonable to interpret their underlying memory in the same way,\n// which is checked by comparing their type tags.\n// (e.g. a Uint8Array and a Uint16Array with the same memory content\n// could still be different because they will be interpreted differently).\n//\n// For strict comparison, objects should have\n// a) The same built-in type tags\n// b) The same prototypes.\n\n\nfunction innerDeepEqual(val1, val2, strict, memos) {\n // All identical values are equivalent, as determined by ===.\n if (val1 === val2) {\n if (val1 !== 0) return true;\n return strict ? objectIs(val1, val2) : true;\n } // Check more closely if val1 and val2 are equal.\n\n\n if (strict) {\n if (_typeof(val1) !== 'object') {\n return typeof val1 === 'number' && numberIsNaN(val1) && numberIsNaN(val2);\n }\n\n if (_typeof(val2) !== 'object' || val1 === null || val2 === null) {\n return false;\n }\n\n if (Object.getPrototypeOf(val1) !== Object.getPrototypeOf(val2)) {\n return false;\n }\n } else {\n if (val1 === null || _typeof(val1) !== 'object') {\n if (val2 === null || _typeof(val2) !== 'object') {\n // eslint-disable-next-line eqeqeq\n return val1 == val2;\n }\n\n return false;\n }\n\n if (val2 === null || _typeof(val2) !== 'object') {\n return false;\n }\n }\n\n var val1Tag = objectToString(val1);\n var val2Tag = objectToString(val2);\n\n if (val1Tag !== val2Tag) {\n return false;\n }\n\n if (Array.isArray(val1)) {\n // Check for sparse arrays and general fast path\n if (val1.length !== val2.length) {\n return false;\n }\n\n var keys1 = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n var keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (keys1.length !== keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsArray, keys1);\n } // [browserify] This triggers on certain types in IE (Map/Set) so we don't\n // wan't to early return out of the rest of the checks. However we can check\n // if the second value is one of these values and the first isn't.\n\n\n if (val1Tag === '[object Object]') {\n // return keyCheck(val1, val2, strict, memos, kNoIterator);\n if (!isMap(val1) && isMap(val2) || !isSet(val1) && isSet(val2)) {\n return false;\n }\n }\n\n if (isDate(val1)) {\n if (!isDate(val2) || Date.prototype.getTime.call(val1) !== Date.prototype.getTime.call(val2)) {\n return false;\n }\n } else if (isRegExp(val1)) {\n if (!isRegExp(val2) || !areSimilarRegExps(val1, val2)) {\n return false;\n }\n } else if (isNativeError(val1) || val1 instanceof Error) {\n // Do not compare the stack as it might differ even though the error itself\n // is otherwise identical.\n if (val1.message !== val2.message || val1.name !== val2.name) {\n return false;\n }\n } else if (isArrayBufferView(val1)) {\n if (!strict && (isFloat32Array(val1) || isFloat64Array(val1))) {\n if (!areSimilarFloatArrays(val1, val2)) {\n return false;\n }\n } else if (!areSimilarTypedArrays(val1, val2)) {\n return false;\n } // Buffer.compare returns true, so val1.length === val2.length. If they both\n // only contain numeric keys, we don't need to exam further than checking\n // the symbols.\n\n\n var _keys = getOwnNonIndexProperties(val1, ONLY_ENUMERABLE);\n\n var _keys2 = getOwnNonIndexProperties(val2, ONLY_ENUMERABLE);\n\n if (_keys.length !== _keys2.length) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator, _keys);\n } else if (isSet(val1)) {\n if (!isSet(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsSet);\n } else if (isMap(val1)) {\n if (!isMap(val2) || val1.size !== val2.size) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kIsMap);\n } else if (isAnyArrayBuffer(val1)) {\n if (!areEqualArrayBuffers(val1, val2)) {\n return false;\n }\n } else if (isBoxedPrimitive(val1) && !isEqualBoxedPrimitive(val1, val2)) {\n return false;\n }\n\n return keyCheck(val1, val2, strict, memos, kNoIterator);\n}\n\nfunction getEnumerables(val, keys) {\n return keys.filter(function (k) {\n return propertyIsEnumerable(val, k);\n });\n}\n\nfunction keyCheck(val1, val2, strict, memos, iterationType, aKeys) {\n // For all remaining Object pairs, including Array, objects and Maps,\n // equivalence is determined by having:\n // a) The same number of owned enumerable properties\n // b) The same set of keys/indexes (although not necessarily the same order)\n // c) Equivalent values for every corresponding key/index\n // d) For Sets and Maps, equal contents\n // Note: this accounts for both named and indexed properties on Arrays.\n if (arguments.length === 5) {\n aKeys = Object.keys(val1);\n var bKeys = Object.keys(val2); // The pair must have the same number of owned properties.\n\n if (aKeys.length !== bKeys.length) {\n return false;\n }\n } // Cheap key test\n\n\n var i = 0;\n\n for (; i < aKeys.length; i++) {\n if (!hasOwnProperty(val2, aKeys[i])) {\n return false;\n }\n }\n\n if (strict && arguments.length === 5) {\n var symbolKeysA = objectGetOwnPropertySymbols(val1);\n\n if (symbolKeysA.length !== 0) {\n var count = 0;\n\n for (i = 0; i < symbolKeysA.length; i++) {\n var key = symbolKeysA[i];\n\n if (propertyIsEnumerable(val1, key)) {\n if (!propertyIsEnumerable(val2, key)) {\n return false;\n }\n\n aKeys.push(key);\n count++;\n } else if (propertyIsEnumerable(val2, key)) {\n return false;\n }\n }\n\n var symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (symbolKeysA.length !== symbolKeysB.length && getEnumerables(val2, symbolKeysB).length !== count) {\n return false;\n }\n } else {\n var _symbolKeysB = objectGetOwnPropertySymbols(val2);\n\n if (_symbolKeysB.length !== 0 && getEnumerables(val2, _symbolKeysB).length !== 0) {\n return false;\n }\n }\n }\n\n if (aKeys.length === 0 && (iterationType === kNoIterator || iterationType === kIsArray && val1.length === 0 || val1.size === 0)) {\n return true;\n } // Use memos to handle cycles.\n\n\n if (memos === undefined) {\n memos = {\n val1: new Map(),\n val2: new Map(),\n position: 0\n };\n } else {\n // We prevent up to two map.has(x) calls by directly retrieving the value\n // and checking for undefined. The map can only contain numbers, so it is\n // safe to check for undefined only.\n var val2MemoA = memos.val1.get(val1);\n\n if (val2MemoA !== undefined) {\n var val2MemoB = memos.val2.get(val2);\n\n if (val2MemoB !== undefined) {\n return val2MemoA === val2MemoB;\n }\n }\n\n memos.position++;\n }\n\n memos.val1.set(val1, memos.position);\n memos.val2.set(val2, memos.position);\n var areEq = objEquiv(val1, val2, strict, aKeys, memos, iterationType);\n memos.val1.delete(val1);\n memos.val2.delete(val2);\n return areEq;\n}\n\nfunction setHasEqualElement(set, val1, strict, memo) {\n // Go looking.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var val2 = setValues[i];\n\n if (innerDeepEqual(val1, val2, strict, memo)) {\n // Remove the matching element to make sure we do not check that again.\n set.delete(val2);\n return true;\n }\n }\n\n return false;\n} // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Equality_comparisons_and_sameness#Loose_equality_using\n// Sadly it is not possible to detect corresponding values properly in case the\n// type is a string, number, bigint or boolean. The reason is that those values\n// can match lots of different string values (e.g., 1n == '+00001').\n\n\nfunction findLooseMatchingPrimitives(prim) {\n switch (_typeof(prim)) {\n case 'undefined':\n return null;\n\n case 'object':\n // Only pass in null as object!\n return undefined;\n\n case 'symbol':\n return false;\n\n case 'string':\n prim = +prim;\n // Loose equal entries exist only if the string is possible to convert to\n // a regular number and not NaN.\n // Fall through\n\n case 'number':\n if (numberIsNaN(prim)) {\n return false;\n }\n\n }\n\n return true;\n}\n\nfunction setMightHaveLoosePrim(a, b, prim) {\n var altValue = findLooseMatchingPrimitives(prim);\n if (altValue != null) return altValue;\n return b.has(altValue) && !a.has(altValue);\n}\n\nfunction mapMightHaveLoosePrim(a, b, prim, item, memo) {\n var altValue = findLooseMatchingPrimitives(prim);\n\n if (altValue != null) {\n return altValue;\n }\n\n var curB = b.get(altValue);\n\n if (curB === undefined && !b.has(altValue) || !innerDeepEqual(item, curB, false, memo)) {\n return false;\n }\n\n return !a.has(altValue) && innerDeepEqual(item, curB, false, memo);\n}\n\nfunction setEquiv(a, b, strict, memo) {\n // This is a lazily initiated Set of entries which have to be compared\n // pairwise.\n var set = null;\n var aValues = arrayFromSet(a);\n\n for (var i = 0; i < aValues.length; i++) {\n var val = aValues[i]; // Note: Checking for the objects first improves the performance for object\n // heavy sets but it is a minor slow down for primitives. As they are fast\n // to check this improves the worst case scenario instead.\n\n if (_typeof(val) === 'object' && val !== null) {\n if (set === null) {\n set = new Set();\n } // If the specified value doesn't exist in the second set its an not null\n // object (or non strict only: a not matching primitive) we'll need to go\n // hunting for something thats deep-(strict-)equal to it. To make this\n // O(n log n) complexity we have to copy these values in a new set first.\n\n\n set.add(val);\n } else if (!b.has(val)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null values.\n\n if (!setMightHaveLoosePrim(a, b, val)) {\n return false;\n }\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(val);\n }\n }\n\n if (set !== null) {\n var bValues = arrayFromSet(b);\n\n for (var _i = 0; _i < bValues.length; _i++) {\n var _val = bValues[_i]; // We have to check if a primitive value is already\n // matching and only if it's not, go hunting for it.\n\n if (_typeof(_val) === 'object' && _val !== null) {\n if (!setHasEqualElement(set, _val, strict, memo)) return false;\n } else if (!strict && !a.has(_val) && !setHasEqualElement(set, _val, strict, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction mapHasEqualEntry(set, map, key1, item1, strict, memo) {\n // To be able to handle cases like:\n // Map([[{}, 'a'], [{}, 'b']]) vs Map([[{}, 'b'], [{}, 'a']])\n // ... we need to consider *all* matching keys, not just the first we find.\n var setValues = arrayFromSet(set);\n\n for (var i = 0; i < setValues.length; i++) {\n var key2 = setValues[i];\n\n if (innerDeepEqual(key1, key2, strict, memo) && innerDeepEqual(item1, map.get(key2), strict, memo)) {\n set.delete(key2);\n return true;\n }\n }\n\n return false;\n}\n\nfunction mapEquiv(a, b, strict, memo) {\n var set = null;\n var aEntries = arrayFromMap(a);\n\n for (var i = 0; i < aEntries.length; i++) {\n var _aEntries$i = _slicedToArray(aEntries[i], 2),\n key = _aEntries$i[0],\n item1 = _aEntries$i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n } else {\n // By directly retrieving the value we prevent another b.has(key) check in\n // almost all possible cases.\n var item2 = b.get(key);\n\n if (item2 === undefined && !b.has(key) || !innerDeepEqual(item1, item2, strict, memo)) {\n if (strict) return false; // Fast path to detect missing string, symbol, undefined and null\n // keys.\n\n if (!mapMightHaveLoosePrim(a, b, key, item1, memo)) return false;\n\n if (set === null) {\n set = new Set();\n }\n\n set.add(key);\n }\n }\n }\n\n if (set !== null) {\n var bEntries = arrayFromMap(b);\n\n for (var _i2 = 0; _i2 < bEntries.length; _i2++) {\n var _bEntries$_i = _slicedToArray(bEntries[_i2], 2),\n key = _bEntries$_i[0],\n item = _bEntries$_i[1];\n\n if (_typeof(key) === 'object' && key !== null) {\n if (!mapHasEqualEntry(set, a, key, item, strict, memo)) return false;\n } else if (!strict && (!a.has(key) || !innerDeepEqual(a.get(key), item, false, memo)) && !mapHasEqualEntry(set, a, key, item, false, memo)) {\n return false;\n }\n }\n\n return set.size === 0;\n }\n\n return true;\n}\n\nfunction objEquiv(a, b, strict, keys, memos, iterationType) {\n // Sets and maps don't have their entries accessible via normal object\n // properties.\n var i = 0;\n\n if (iterationType === kIsSet) {\n if (!setEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsMap) {\n if (!mapEquiv(a, b, strict, memos)) {\n return false;\n }\n } else if (iterationType === kIsArray) {\n for (; i < a.length; i++) {\n if (hasOwnProperty(a, i)) {\n if (!hasOwnProperty(b, i) || !innerDeepEqual(a[i], b[i], strict, memos)) {\n return false;\n }\n } else if (hasOwnProperty(b, i)) {\n return false;\n } else {\n // Array is sparse.\n var keysA = Object.keys(a);\n\n for (; i < keysA.length; i++) {\n var key = keysA[i];\n\n if (!hasOwnProperty(b, key) || !innerDeepEqual(a[key], b[key], strict, memos)) {\n return false;\n }\n }\n\n if (keysA.length !== Object.keys(b).length) {\n return false;\n }\n\n return true;\n }\n }\n } // The pair must have equivalent values for every corresponding key.\n // Possibly expensive deep test:\n\n\n for (i = 0; i < keys.length; i++) {\n var _key = keys[i];\n\n if (!innerDeepEqual(a[_key], b[_key], strict, memos)) {\n return false;\n }\n }\n\n return true;\n}\n\nfunction isDeepEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kLoose);\n}\n\nfunction isDeepStrictEqual(val1, val2) {\n return innerDeepEqual(val1, val2, kStrict);\n}\n\nmodule.exports = {\n isDeepEqual: isDeepEqual,\n isDeepStrictEqual: isDeepStrictEqual\n};","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Semaphore_1 = require(\"./Semaphore\");\nvar Mutex = /** @class */ (function () {\n function Mutex() {\n this._semaphore = new Semaphore_1.default(1);\n }\n Mutex.prototype.acquire = function () {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _a, releaser;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this._semaphore.acquire()];\n case 1:\n _a = _b.sent(), releaser = _a[1];\n return [2 /*return*/, releaser];\n }\n });\n });\n };\n Mutex.prototype.runExclusive = function (callback) {\n return this._semaphore.runExclusive(function () { return callback(); });\n };\n Mutex.prototype.isLocked = function () {\n return this._semaphore.isLocked();\n };\n Mutex.prototype.release = function () {\n this._semaphore.release();\n };\n return Mutex;\n}());\nexports.default = Mutex;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nvar tslib_1 = require(\"tslib\");\nvar Semaphore = /** @class */ (function () {\n function Semaphore(_maxConcurrency) {\n this._maxConcurrency = _maxConcurrency;\n this._queue = [];\n if (_maxConcurrency <= 0) {\n throw new Error('semaphore must be initialized to a positive value');\n }\n this._value = _maxConcurrency;\n }\n Semaphore.prototype.acquire = function () {\n var _this = this;\n var locked = this.isLocked();\n var ticket = new Promise(function (r) { return _this._queue.push(r); });\n if (!locked)\n this._dispatch();\n return ticket;\n };\n Semaphore.prototype.runExclusive = function (callback) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var _a, value, release;\n return tslib_1.__generator(this, function (_b) {\n switch (_b.label) {\n case 0: return [4 /*yield*/, this.acquire()];\n case 1:\n _a = _b.sent(), value = _a[0], release = _a[1];\n _b.label = 2;\n case 2:\n _b.trys.push([2, , 4, 5]);\n return [4 /*yield*/, callback(value)];\n case 3: return [2 /*return*/, _b.sent()];\n case 4:\n release();\n return [7 /*endfinally*/];\n case 5: return [2 /*return*/];\n }\n });\n });\n };\n Semaphore.prototype.isLocked = function () {\n return this._value <= 0;\n };\n Semaphore.prototype.release = function () {\n if (this._maxConcurrency > 1) {\n throw new Error('this method is unavailabel on semaphores with concurrency > 1; use the scoped release returned by acquire instead');\n }\n if (this._currentReleaser) {\n var releaser = this._currentReleaser;\n this._currentReleaser = undefined;\n releaser();\n }\n };\n Semaphore.prototype._dispatch = function () {\n var _this = this;\n var nextConsumer = this._queue.shift();\n if (!nextConsumer)\n return;\n var released = false;\n this._currentReleaser = function () {\n if (released)\n return;\n released = true;\n _this._value++;\n _this._dispatch();\n };\n nextConsumer([this._value--, this._currentReleaser]);\n };\n return Semaphore;\n}());\nexports.default = Semaphore;\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withTimeout = exports.Semaphore = exports.Mutex = void 0;\nvar Mutex_1 = require(\"./Mutex\");\nObject.defineProperty(exports, \"Mutex\", { enumerable: true, get: function () { return Mutex_1.default; } });\nvar Semaphore_1 = require(\"./Semaphore\");\nObject.defineProperty(exports, \"Semaphore\", { enumerable: true, get: function () { return Semaphore_1.default; } });\nvar withTimeout_1 = require(\"./withTimeout\");\nObject.defineProperty(exports, \"withTimeout\", { enumerable: true, get: function () { return withTimeout_1.withTimeout; } });\n","\"use strict\";\nObject.defineProperty(exports, \"__esModule\", { value: true });\nexports.withTimeout = void 0;\nvar tslib_1 = require(\"tslib\");\n// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\nfunction withTimeout(sync, timeout, timeoutError) {\n var _this = this;\n if (timeoutError === void 0) { timeoutError = new Error('timeout'); }\n return {\n acquire: function () {\n return new Promise(function (resolve, reject) { return tslib_1.__awaiter(_this, void 0, void 0, function () {\n var isTimeout, ticket, release;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n isTimeout = false;\n setTimeout(function () {\n isTimeout = true;\n reject(timeoutError);\n }, timeout);\n return [4 /*yield*/, sync.acquire()];\n case 1:\n ticket = _a.sent();\n if (isTimeout) {\n release = Array.isArray(ticket) ? ticket[1] : ticket;\n release();\n }\n else {\n resolve(ticket);\n }\n return [2 /*return*/];\n }\n });\n }); });\n },\n runExclusive: function (callback) {\n return tslib_1.__awaiter(this, void 0, void 0, function () {\n var release, ticket;\n return tslib_1.__generator(this, function (_a) {\n switch (_a.label) {\n case 0:\n release = function () { return undefined; };\n _a.label = 1;\n case 1:\n _a.trys.push([1, , 7, 8]);\n return [4 /*yield*/, this.acquire()];\n case 2:\n ticket = _a.sent();\n if (!Array.isArray(ticket)) return [3 /*break*/, 4];\n release = ticket[1];\n return [4 /*yield*/, callback(ticket[0])];\n case 3: return [2 /*return*/, _a.sent()];\n case 4:\n release = ticket;\n return [4 /*yield*/, callback()];\n case 5: return [2 /*return*/, _a.sent()];\n case 6: return [3 /*break*/, 8];\n case 7:\n release();\n return [7 /*endfinally*/];\n case 8: return [2 /*return*/];\n }\n });\n });\n },\n release: function () {\n sync.release();\n },\n isLocked: function () { return sync.isLocked(); },\n };\n}\nexports.withTimeout = withTimeout;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = asyncify;\n\nvar _isObject = require('lodash/isObject');\n\nvar _isObject2 = _interopRequireDefault(_isObject);\n\nvar _initialParams = require('./internal/initialParams');\n\nvar _initialParams2 = _interopRequireDefault(_initialParams);\n\nvar _setImmediate = require('./internal/setImmediate');\n\nvar _setImmediate2 = _interopRequireDefault(_setImmediate);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Take a sync function and make it async, passing its return value to a\n * callback. This is useful for plugging sync functions into a waterfall,\n * series, or other async functions. Any arguments passed to the generated\n * function will be passed to the wrapped function (except for the final\n * callback argument). Errors thrown will be passed to the callback.\n *\n * If the function passed to `asyncify` returns a Promise, that promises's\n * resolved/rejected state will be used to call the callback, rather than simply\n * the synchronous return value.\n *\n * This also means you can asyncify ES2017 `async` functions.\n *\n * @name asyncify\n * @static\n * @memberOf module:Utils\n * @method\n * @alias wrapSync\n * @category Util\n * @param {Function} func - The synchronous function, or Promise-returning\n * function to convert to an {@link AsyncFunction}.\n * @returns {AsyncFunction} An asynchronous wrapper of the `func`. To be\n * invoked with `(args..., callback)`.\n * @example\n *\n * // passing a regular synchronous function\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(JSON.parse),\n * function (data, next) {\n * // data is the result of parsing the text.\n * // If there was a parsing error, it would have been caught.\n * }\n * ], callback);\n *\n * // passing a function returning a promise\n * async.waterfall([\n * async.apply(fs.readFile, filename, \"utf8\"),\n * async.asyncify(function (contents) {\n * return db.model.create(contents);\n * }),\n * function (model, next) {\n * // `model` is the instantiated model object.\n * // If there was an error, this function would be skipped.\n * }\n * ], callback);\n *\n * // es2017 example, though `asyncify` is not needed if your JS environment\n * // supports async functions out of the box\n * var q = async.queue(async.asyncify(async function(file) {\n * var intermediateStep = await processFile(file);\n * return await somePromise(intermediateStep)\n * }));\n *\n * q.push(files);\n */\nfunction asyncify(func) {\n return (0, _initialParams2.default)(function (args, callback) {\n var result;\n try {\n result = func.apply(this, args);\n } catch (e) {\n return callback(e);\n }\n // if result is Promise object\n if ((0, _isObject2.default)(result) && typeof result.then === 'function') {\n result.then(function (value) {\n invokeCallback(callback, null, value);\n }, function (err) {\n invokeCallback(callback, err.message ? err : new Error(err));\n });\n } else {\n callback(null, result);\n }\n });\n}\n\nfunction invokeCallback(callback, error, value) {\n try {\n callback(error, value);\n } catch (e) {\n (0, _setImmediate2.default)(rethrow, e);\n }\n}\n\nfunction rethrow(error) {\n throw error;\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = eachLimit;\n\nvar _eachOfLimit = require('./internal/eachOfLimit');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _withoutIndex = require('./internal/withoutIndex');\n\nvar _withoutIndex2 = _interopRequireDefault(_withoutIndex);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs a maximum of `limit` async operations at a time.\n *\n * @name eachLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfLimit`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachLimit(coll, limit, iteratee, callback) {\n (0, _eachOfLimit2.default)(limit)(coll, (0, _withoutIndex2.default)((0, _wrapAsync2.default)(iteratee)), callback);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (coll, iteratee, callback) {\n var eachOfImplementation = (0, _isArrayLike2.default)(coll) ? eachOfArrayLike : eachOfGeneric;\n eachOfImplementation(coll, (0, _wrapAsync2.default)(iteratee), callback);\n};\n\nvar _isArrayLike = require('lodash/isArrayLike');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _breakLoop = require('./internal/breakLoop');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nvar _eachOfLimit = require('./eachOfLimit');\n\nvar _eachOfLimit2 = _interopRequireDefault(_eachOfLimit);\n\nvar _doLimit = require('./internal/doLimit');\n\nvar _doLimit2 = _interopRequireDefault(_doLimit);\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _once = require('./internal/once');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _onlyOnce = require('./internal/onlyOnce');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// eachOf implementation optimized for array-likes\nfunction eachOfArrayLike(coll, iteratee, callback) {\n callback = (0, _once2.default)(callback || _noop2.default);\n var index = 0,\n completed = 0,\n length = coll.length;\n if (length === 0) {\n callback(null);\n }\n\n function iteratorCallback(err, value) {\n if (err) {\n callback(err);\n } else if (++completed === length || value === _breakLoop2.default) {\n callback(null);\n }\n }\n\n for (; index < length; index++) {\n iteratee(coll[index], index, (0, _onlyOnce2.default)(iteratorCallback));\n }\n}\n\n// a generic version of eachOf which can handle array, object, and iterator cases.\nvar eachOfGeneric = (0, _doLimit2.default)(_eachOfLimit2.default, Infinity);\n\n/**\n * Like [`each`]{@link module:Collections.each}, except that it passes the key (or index) as the second argument\n * to the iteratee.\n *\n * @name eachOf\n * @static\n * @memberOf module:Collections\n * @method\n * @alias forEachOf\n * @category Collection\n * @see [async.each]{@link module:Collections.each}\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - A function to apply to each\n * item in `coll`.\n * The `key` is the item's key, or index in the case of an array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n * @example\n *\n * var obj = {dev: \"/dev.json\", test: \"/test.json\", prod: \"/prod.json\"};\n * var configs = {};\n *\n * async.forEachOf(obj, function (value, key, callback) {\n * fs.readFile(__dirname + value, \"utf8\", function (err, data) {\n * if (err) return callback(err);\n * try {\n * configs[key] = JSON.parse(data);\n * } catch (e) {\n * return callback(e);\n * }\n * callback();\n * });\n * }, function (err) {\n * if (err) console.error(err.message);\n * // configs is now a map of JSON data\n * doSomethingWith(configs);\n * });\n */\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = eachOfLimit;\n\nvar _eachOfLimit2 = require('./internal/eachOfLimit');\n\nvar _eachOfLimit3 = _interopRequireDefault(_eachOfLimit2);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`eachOf`]{@link module:Collections.eachOf} but runs a maximum of `limit` async operations at a\n * time.\n *\n * @name eachOfLimit\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.eachOf]{@link module:Collections.eachOf}\n * @alias forEachOfLimit\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {number} limit - The maximum number of async operations at a time.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`. The `key` is the item's key, or index in the case of an\n * array.\n * Invoked with (item, key, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nfunction eachOfLimit(coll, limit, iteratee, callback) {\n (0, _eachOfLimit3.default)(limit)(coll, (0, _wrapAsync2.default)(iteratee), callback);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _eachLimit = require('./eachLimit');\n\nvar _eachLimit2 = _interopRequireDefault(_eachLimit);\n\nvar _doLimit = require('./internal/doLimit');\n\nvar _doLimit2 = _interopRequireDefault(_doLimit);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * The same as [`each`]{@link module:Collections.each} but runs only a single async operation at a time.\n *\n * @name eachSeries\n * @static\n * @memberOf module:Collections\n * @method\n * @see [async.each]{@link module:Collections.each}\n * @alias forEachSeries\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each\n * item in `coll`.\n * The array index is not passed to the iteratee.\n * If you need the index, use `eachOfSeries`.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all\n * `iteratee` functions have finished, or an error occurs. Invoked with (err).\n */\nexports.default = (0, _doLimit2.default)(_eachLimit2.default, 1);\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n// A temporary value used to identify if the loop should be broken.\n// See #1064, #1293\nexports.default = {};\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = doLimit;\nfunction doLimit(fn, limit) {\n return function (iterable, iteratee, callback) {\n return fn(iterable, limit, iteratee, callback);\n };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = doParallel;\n\nvar _eachOf = require('../eachOf');\n\nvar _eachOf2 = _interopRequireDefault(_eachOf);\n\nvar _wrapAsync = require('./wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction doParallel(fn) {\n return function (obj, iteratee, callback) {\n return fn(_eachOf2.default, obj, (0, _wrapAsync2.default)(iteratee), callback);\n };\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _eachOfLimit;\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _once = require('./once');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _iterator = require('./iterator');\n\nvar _iterator2 = _interopRequireDefault(_iterator);\n\nvar _onlyOnce = require('./onlyOnce');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _breakLoop = require('./breakLoop');\n\nvar _breakLoop2 = _interopRequireDefault(_breakLoop);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _eachOfLimit(limit) {\n return function (obj, iteratee, callback) {\n callback = (0, _once2.default)(callback || _noop2.default);\n if (limit <= 0 || !obj) {\n return callback(null);\n }\n var nextElem = (0, _iterator2.default)(obj);\n var done = false;\n var running = 0;\n var looping = false;\n\n function iterateeCallback(err, value) {\n running -= 1;\n if (err) {\n done = true;\n callback(err);\n } else if (value === _breakLoop2.default || done && running <= 0) {\n done = true;\n return callback(null);\n } else if (!looping) {\n replenish();\n }\n }\n\n function replenish() {\n looping = true;\n while (running < limit && !done) {\n var elem = nextElem();\n if (elem === null) {\n done = true;\n if (running <= 0) {\n callback(null);\n }\n return;\n }\n running += 1;\n iteratee(elem.value, elem.key, (0, _onlyOnce2.default)(iterateeCallback));\n }\n looping = false;\n }\n\n replenish();\n };\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (coll) {\n return iteratorSymbol && coll[iteratorSymbol] && coll[iteratorSymbol]();\n};\n\nvar iteratorSymbol = typeof Symbol === 'function' && Symbol.iterator;\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (fn) {\n return function () /*...args, callback*/{\n var args = (0, _slice2.default)(arguments);\n var callback = args.pop();\n fn.call(this, args, callback);\n };\n};\n\nvar _slice = require('./slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = iterator;\n\nvar _isArrayLike = require('lodash/isArrayLike');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _getIterator = require('./getIterator');\n\nvar _getIterator2 = _interopRequireDefault(_getIterator);\n\nvar _keys = require('lodash/keys');\n\nvar _keys2 = _interopRequireDefault(_keys);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction createArrayIterator(coll) {\n var i = -1;\n var len = coll.length;\n return function next() {\n return ++i < len ? { value: coll[i], key: i } : null;\n };\n}\n\nfunction createES2015Iterator(iterator) {\n var i = -1;\n return function next() {\n var item = iterator.next();\n if (item.done) return null;\n i++;\n return { value: item.value, key: i };\n };\n}\n\nfunction createObjectIterator(obj) {\n var okeys = (0, _keys2.default)(obj);\n var i = -1;\n var len = okeys.length;\n return function next() {\n var key = okeys[++i];\n if (key === '__proto__') {\n return next();\n }\n return i < len ? { value: obj[key], key: key } : null;\n };\n}\n\nfunction iterator(coll) {\n if ((0, _isArrayLike2.default)(coll)) {\n return createArrayIterator(coll);\n }\n\n var iterator = (0, _getIterator2.default)(coll);\n return iterator ? createES2015Iterator(iterator) : createObjectIterator(coll);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _asyncMap;\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _wrapAsync = require('./wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _asyncMap(eachfn, arr, iteratee, callback) {\n callback = callback || _noop2.default;\n arr = arr || [];\n var results = [];\n var counter = 0;\n var _iteratee = (0, _wrapAsync2.default)(iteratee);\n\n eachfn(arr, function (value, _, callback) {\n var index = counter++;\n _iteratee(value, function (err, v) {\n results[index] = v;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n}\nmodule.exports = exports['default'];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = once;\nfunction once(fn) {\n return function () {\n if (fn === null) return;\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = onlyOnce;\nfunction onlyOnce(fn) {\n return function () {\n if (fn === null) throw new Error(\"Callback was already called.\");\n var callFn = fn;\n fn = null;\n callFn.apply(this, arguments);\n };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _parallel;\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _isArrayLike = require('lodash/isArrayLike');\n\nvar _isArrayLike2 = _interopRequireDefault(_isArrayLike);\n\nvar _slice = require('./slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nvar _wrapAsync = require('./wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _parallel(eachfn, tasks, callback) {\n callback = callback || _noop2.default;\n var results = (0, _isArrayLike2.default)(tasks) ? [] : {};\n\n eachfn(tasks, function (task, key, callback) {\n (0, _wrapAsync2.default)(task)(function (err, result) {\n if (arguments.length > 2) {\n result = (0, _slice2.default)(arguments, 1);\n }\n results[key] = result;\n callback(err);\n });\n }, function (err) {\n callback(err, results);\n });\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.hasNextTick = exports.hasSetImmediate = undefined;\nexports.fallback = fallback;\nexports.wrap = wrap;\n\nvar _slice = require('./slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar hasSetImmediate = exports.hasSetImmediate = typeof setImmediate === 'function' && setImmediate;\nvar hasNextTick = exports.hasNextTick = typeof process === 'object' && typeof process.nextTick === 'function';\n\nfunction fallback(fn) {\n setTimeout(fn, 0);\n}\n\nfunction wrap(defer) {\n return function (fn /*, ...args*/) {\n var args = (0, _slice2.default)(arguments, 1);\n defer(function () {\n fn.apply(null, args);\n });\n };\n}\n\nvar _defer;\n\nif (hasSetImmediate) {\n _defer = setImmediate;\n} else if (hasNextTick) {\n _defer = process.nextTick;\n} else {\n _defer = fallback;\n}\n\nexports.default = wrap(_defer);","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = slice;\nfunction slice(arrayLike, start) {\n start = start | 0;\n var newLen = Math.max(arrayLike.length - start, 0);\n var newArr = Array(newLen);\n for (var idx = 0; idx < newLen; idx++) {\n newArr[idx] = arrayLike[start + idx];\n }\n return newArr;\n}\nmodule.exports = exports[\"default\"];","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = _withoutIndex;\nfunction _withoutIndex(iteratee) {\n return function (value, index, callback) {\n return iteratee(value, callback);\n };\n}\nmodule.exports = exports[\"default\"];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isAsync = undefined;\n\nvar _asyncify = require('../asyncify');\n\nvar _asyncify2 = _interopRequireDefault(_asyncify);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nvar supportsSymbol = typeof Symbol === 'function';\n\nfunction isAsync(fn) {\n return supportsSymbol && fn[Symbol.toStringTag] === 'AsyncFunction';\n}\n\nfunction wrapAsync(asyncFn) {\n return isAsync(asyncFn) ? (0, _asyncify2.default)(asyncFn) : asyncFn;\n}\n\nexports.default = wrapAsync;\nexports.isAsync = isAsync;","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nvar _doParallel = require('./internal/doParallel');\n\nvar _doParallel2 = _interopRequireDefault(_doParallel);\n\nvar _map = require('./internal/map');\n\nvar _map2 = _interopRequireDefault(_map);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Produces a new collection of values by mapping each value in `coll` through\n * the `iteratee` function. The `iteratee` is called with an item from `coll`\n * and a callback for when it has finished processing. Each of these callback\n * takes 2 arguments: an `error`, and the transformed item from `coll`. If\n * `iteratee` passes an error to its callback, the main `callback` (for the\n * `map` function) is immediately called with the error.\n *\n * Note, that since this function applies the `iteratee` to each item in\n * parallel, there is no guarantee that the `iteratee` functions will complete\n * in order. However, the results array will be in the same order as the\n * original `coll`.\n *\n * If `map` is passed an Object, the results will be an Array. The results\n * will roughly be in the order of the original Objects' keys (but this can\n * vary across JavaScript engines).\n *\n * @name map\n * @static\n * @memberOf module:Collections\n * @method\n * @category Collection\n * @param {Array|Iterable|Object} coll - A collection to iterate over.\n * @param {AsyncFunction} iteratee - An async function to apply to each item in\n * `coll`.\n * The iteratee should complete with the transformed item.\n * Invoked with (item, callback).\n * @param {Function} [callback] - A callback which is called when all `iteratee`\n * functions have finished, or an error occurs. Results is an Array of the\n * transformed items from the `coll`. Invoked with (err, results).\n * @example\n *\n * async.map(['file1','file2','file3'], fs.stat, function(err, results) {\n * // results is now an array of stats for each file\n * });\n */\nexports.default = (0, _doParallel2.default)(_map2.default);\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = parallelLimit;\n\nvar _eachOf = require('./eachOf');\n\nvar _eachOf2 = _interopRequireDefault(_eachOf);\n\nvar _parallel = require('./internal/parallel');\n\nvar _parallel2 = _interopRequireDefault(_parallel);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Run the `tasks` collection of functions in parallel, without waiting until\n * the previous function has completed. If any of the functions pass an error to\n * its callback, the main `callback` is immediately called with the value of the\n * error. Once the `tasks` have completed, the results are passed to the final\n * `callback` as an array.\n *\n * **Note:** `parallel` is about kicking-off I/O tasks in parallel, not about\n * parallel execution of code. If your tasks do not use any timers or perform\n * any I/O, they will actually be executed in series. Any synchronous setup\n * sections for each task will happen one after the other. JavaScript remains\n * single-threaded.\n *\n * **Hint:** Use [`reflect`]{@link module:Utils.reflect} to continue the\n * execution of other tasks when a task fails.\n *\n * It is also possible to use an object instead of an array. Each property will\n * be run as a function and the results will be passed to the final `callback`\n * as an object instead of an array. This can be a more readable way of handling\n * results from {@link async.parallel}.\n *\n * @name parallel\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array|Iterable|Object} tasks - A collection of\n * [async functions]{@link AsyncFunction} to run.\n * Each async function can complete with any number of optional `result` values.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed successfully. This function gets a results array\n * (or object) containing all the result arguments passed to the task callbacks.\n * Invoked with (err, results).\n *\n * @example\n * async.parallel([\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'one');\n * }, 200);\n * },\n * function(callback) {\n * setTimeout(function() {\n * callback(null, 'two');\n * }, 100);\n * }\n * ],\n * // optional callback\n * function(err, results) {\n * // the results array will equal ['one','two'] even though\n * // the second function had a shorter timeout.\n * });\n *\n * // an example using an object instead of an array\n * async.parallel({\n * one: function(callback) {\n * setTimeout(function() {\n * callback(null, 1);\n * }, 200);\n * },\n * two: function(callback) {\n * setTimeout(function() {\n * callback(null, 2);\n * }, 100);\n * }\n * }, function(err, results) {\n * // results is now equals to: {one: 1, two: 2}\n * });\n */\nfunction parallelLimit(tasks, callback) {\n (0, _parallel2.default)(_eachOf2.default, tasks, callback);\n}\nmodule.exports = exports['default'];","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\n\nexports.default = function (tasks, callback) {\n callback = (0, _once2.default)(callback || _noop2.default);\n if (!(0, _isArray2.default)(tasks)) return callback(new Error('First argument to waterfall must be an array of functions'));\n if (!tasks.length) return callback();\n var taskIndex = 0;\n\n function nextTask(args) {\n var task = (0, _wrapAsync2.default)(tasks[taskIndex++]);\n args.push((0, _onlyOnce2.default)(next));\n task.apply(null, args);\n }\n\n function next(err /*, ...args*/) {\n if (err || taskIndex === tasks.length) {\n return callback.apply(null, arguments);\n }\n nextTask((0, _slice2.default)(arguments, 1));\n }\n\n nextTask([]);\n};\n\nvar _isArray = require('lodash/isArray');\n\nvar _isArray2 = _interopRequireDefault(_isArray);\n\nvar _noop = require('lodash/noop');\n\nvar _noop2 = _interopRequireDefault(_noop);\n\nvar _once = require('./internal/once');\n\nvar _once2 = _interopRequireDefault(_once);\n\nvar _slice = require('./internal/slice');\n\nvar _slice2 = _interopRequireDefault(_slice);\n\nvar _onlyOnce = require('./internal/onlyOnce');\n\nvar _onlyOnce2 = _interopRequireDefault(_onlyOnce);\n\nvar _wrapAsync = require('./internal/wrapAsync');\n\nvar _wrapAsync2 = _interopRequireDefault(_wrapAsync);\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nmodule.exports = exports['default'];\n\n/**\n * Runs the `tasks` array of functions in series, each passing their results to\n * the next in the array. However, if any of the `tasks` pass an error to their\n * own callback, the next function is not executed, and the main `callback` is\n * immediately called with the error.\n *\n * @name waterfall\n * @static\n * @memberOf module:ControlFlow\n * @method\n * @category Control Flow\n * @param {Array} tasks - An array of [async functions]{@link AsyncFunction}\n * to run.\n * Each function should complete with any number of `result` values.\n * The `result` values will be passed as arguments, in order, to the next task.\n * @param {Function} [callback] - An optional callback to run once all the\n * functions have completed. This will be passed the results of the last task's\n * callback. Invoked with (err, [results]).\n * @returns undefined\n * @example\n *\n * async.waterfall([\n * function(callback) {\n * callback(null, 'one', 'two');\n * },\n * function(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * },\n * function(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n *\n * // Or, with named functions:\n * async.waterfall([\n * myFirstFunction,\n * mySecondFunction,\n * myLastFunction,\n * ], function (err, result) {\n * // result now equals 'done'\n * });\n * function myFirstFunction(callback) {\n * callback(null, 'one', 'two');\n * }\n * function mySecondFunction(arg1, arg2, callback) {\n * // arg1 now equals 'one' and arg2 now equals 'two'\n * callback(null, 'three');\n * }\n * function myLastFunction(arg1, callback) {\n * // arg1 now equals 'three'\n * callback(null, 'done');\n * }\n */","'use strict'\n// base-x encoding / decoding\n// Copyright (c) 2018 base-x contributors\n// Copyright (c) 2014-2018 The Bitcoin Core developers (base58.cpp)\n// Distributed under the MIT software license, see the accompanying\n// file LICENSE or http://www.opensource.org/licenses/mit-license.php.\n// @ts-ignore\nvar _Buffer = require('safe-buffer').Buffer\nfunction base (ALPHABET) {\n if (ALPHABET.length >= 255) { throw new TypeError('Alphabet too long') }\n var BASE_MAP = new Uint8Array(256)\n for (var j = 0; j < BASE_MAP.length; j++) {\n BASE_MAP[j] = 255\n }\n for (var i = 0; i < ALPHABET.length; i++) {\n var x = ALPHABET.charAt(i)\n var xc = x.charCodeAt(0)\n if (BASE_MAP[xc] !== 255) { throw new TypeError(x + ' is ambiguous') }\n BASE_MAP[xc] = i\n }\n var BASE = ALPHABET.length\n var LEADER = ALPHABET.charAt(0)\n var FACTOR = Math.log(BASE) / Math.log(256) // log(BASE) / log(256), rounded up\n var iFACTOR = Math.log(256) / Math.log(BASE) // log(256) / log(BASE), rounded up\n function encode (source) {\n if (Array.isArray(source) || source instanceof Uint8Array) { source = _Buffer.from(source) }\n if (!_Buffer.isBuffer(source)) { throw new TypeError('Expected Buffer') }\n if (source.length === 0) { return '' }\n // Skip & count leading zeroes.\n var zeroes = 0\n var length = 0\n var pbegin = 0\n var pend = source.length\n while (pbegin !== pend && source[pbegin] === 0) {\n pbegin++\n zeroes++\n }\n // Allocate enough space in big-endian base58 representation.\n var size = ((pend - pbegin) * iFACTOR + 1) >>> 0\n var b58 = new Uint8Array(size)\n // Process the bytes.\n while (pbegin !== pend) {\n var carry = source[pbegin]\n // Apply \"b58 = b58 * 256 + ch\".\n var i = 0\n for (var it1 = size - 1; (carry !== 0 || i < length) && (it1 !== -1); it1--, i++) {\n carry += (256 * b58[it1]) >>> 0\n b58[it1] = (carry % BASE) >>> 0\n carry = (carry / BASE) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n pbegin++\n }\n // Skip leading zeroes in base58 result.\n var it2 = size - length\n while (it2 !== size && b58[it2] === 0) {\n it2++\n }\n // Translate the result into a string.\n var str = LEADER.repeat(zeroes)\n for (; it2 < size; ++it2) { str += ALPHABET.charAt(b58[it2]) }\n return str\n }\n function decodeUnsafe (source) {\n if (typeof source !== 'string') { throw new TypeError('Expected String') }\n if (source.length === 0) { return _Buffer.alloc(0) }\n var psz = 0\n // Skip and count leading '1's.\n var zeroes = 0\n var length = 0\n while (source[psz] === LEADER) {\n zeroes++\n psz++\n }\n // Allocate enough space in big-endian base256 representation.\n var size = (((source.length - psz) * FACTOR) + 1) >>> 0 // log(58) / log(256), rounded up.\n var b256 = new Uint8Array(size)\n // Process the characters.\n while (source[psz]) {\n // Decode character\n var carry = BASE_MAP[source.charCodeAt(psz)]\n // Invalid character\n if (carry === 255) { return }\n var i = 0\n for (var it3 = size - 1; (carry !== 0 || i < length) && (it3 !== -1); it3--, i++) {\n carry += (BASE * b256[it3]) >>> 0\n b256[it3] = (carry % 256) >>> 0\n carry = (carry / 256) >>> 0\n }\n if (carry !== 0) { throw new Error('Non-zero carry') }\n length = i\n psz++\n }\n // Skip leading zeroes in b256.\n var it4 = size - length\n while (it4 !== size && b256[it4] === 0) {\n it4++\n }\n var vch = _Buffer.allocUnsafe(zeroes + (size - it4))\n vch.fill(0x00, 0, zeroes)\n var j = zeroes\n while (it4 !== size) {\n vch[j++] = b256[it4++]\n }\n return vch\n }\n function decode (string) {\n var buffer = decodeUnsafe(string)\n if (buffer) { return buffer }\n throw new Error('Non-base' + BASE + ' character')\n }\n return {\n encode: encode,\n decodeUnsafe: decodeUnsafe,\n decode: decode\n }\n}\nmodule.exports = base\n","'use strict'\n\nexports.byteLength = byteLength\nexports.toByteArray = toByteArray\nexports.fromByteArray = fromByteArray\n\nvar lookup = []\nvar revLookup = []\nvar Arr = typeof Uint8Array !== 'undefined' ? Uint8Array : Array\n\nvar code = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'\nfor (var i = 0, len = code.length; i < len; ++i) {\n lookup[i] = code[i]\n revLookup[code.charCodeAt(i)] = i\n}\n\n// Support decoding URL-safe base64 strings, as Node.js does.\n// See: https://en.wikipedia.org/wiki/Base64#URL_applications\nrevLookup['-'.charCodeAt(0)] = 62\nrevLookup['_'.charCodeAt(0)] = 63\n\nfunction getLens (b64) {\n var len = b64.length\n\n if (len % 4 > 0) {\n throw new Error('Invalid string. Length must be a multiple of 4')\n }\n\n // Trim off extra bytes after placeholder bytes are found\n // See: https://github.com/beatgammit/base64-js/issues/42\n var validLen = b64.indexOf('=')\n if (validLen === -1) validLen = len\n\n var placeHoldersLen = validLen === len\n ? 0\n : 4 - (validLen % 4)\n\n return [validLen, placeHoldersLen]\n}\n\n// base64 is 4/3 + up to two characters of the original data\nfunction byteLength (b64) {\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction _byteLength (b64, validLen, placeHoldersLen) {\n return ((validLen + placeHoldersLen) * 3 / 4) - placeHoldersLen\n}\n\nfunction toByteArray (b64) {\n var tmp\n var lens = getLens(b64)\n var validLen = lens[0]\n var placeHoldersLen = lens[1]\n\n var arr = new Arr(_byteLength(b64, validLen, placeHoldersLen))\n\n var curByte = 0\n\n // if there are placeholders, only get up to the last complete 4 chars\n var len = placeHoldersLen > 0\n ? validLen - 4\n : validLen\n\n var i\n for (i = 0; i < len; i += 4) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 18) |\n (revLookup[b64.charCodeAt(i + 1)] << 12) |\n (revLookup[b64.charCodeAt(i + 2)] << 6) |\n revLookup[b64.charCodeAt(i + 3)]\n arr[curByte++] = (tmp >> 16) & 0xFF\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 2) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 2) |\n (revLookup[b64.charCodeAt(i + 1)] >> 4)\n arr[curByte++] = tmp & 0xFF\n }\n\n if (placeHoldersLen === 1) {\n tmp =\n (revLookup[b64.charCodeAt(i)] << 10) |\n (revLookup[b64.charCodeAt(i + 1)] << 4) |\n (revLookup[b64.charCodeAt(i + 2)] >> 2)\n arr[curByte++] = (tmp >> 8) & 0xFF\n arr[curByte++] = tmp & 0xFF\n }\n\n return arr\n}\n\nfunction tripletToBase64 (num) {\n return lookup[num >> 18 & 0x3F] +\n lookup[num >> 12 & 0x3F] +\n lookup[num >> 6 & 0x3F] +\n lookup[num & 0x3F]\n}\n\nfunction encodeChunk (uint8, start, end) {\n var tmp\n var output = []\n for (var i = start; i < end; i += 3) {\n tmp =\n ((uint8[i] << 16) & 0xFF0000) +\n ((uint8[i + 1] << 8) & 0xFF00) +\n (uint8[i + 2] & 0xFF)\n output.push(tripletToBase64(tmp))\n }\n return output.join('')\n}\n\nfunction fromByteArray (uint8) {\n var tmp\n var len = uint8.length\n var extraBytes = len % 3 // if we have 1 byte left, pad 2 bytes\n var parts = []\n var maxChunkLength = 16383 // must be multiple of 3\n\n // go through the array every three bytes, we'll deal with trailing stuff later\n for (var i = 0, len2 = len - extraBytes; i < len2; i += maxChunkLength) {\n parts.push(encodeChunk(uint8, i, (i + maxChunkLength) > len2 ? len2 : (i + maxChunkLength)))\n }\n\n // pad the end with zeros, but make sure to not forget the extra bytes\n if (extraBytes === 1) {\n tmp = uint8[len - 1]\n parts.push(\n lookup[tmp >> 2] +\n lookup[(tmp << 4) & 0x3F] +\n '=='\n )\n } else if (extraBytes === 2) {\n tmp = (uint8[len - 2] << 8) + uint8[len - 1]\n parts.push(\n lookup[tmp >> 10] +\n lookup[(tmp >> 4) & 0x3F] +\n lookup[(tmp << 2) & 0x3F] +\n '='\n )\n }\n\n return parts.join('')\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buffer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var r;\n\nmodule.exports = function rand(len) {\n if (!r)\n r = new Rand(null);\n\n return r.generate(len);\n};\n\nfunction Rand(rand) {\n this.rand = rand;\n}\nmodule.exports.Rand = Rand;\n\nRand.prototype.generate = function generate(len) {\n return this._rand(len);\n};\n\n// Emulate crypto API using randy\nRand.prototype._rand = function _rand(n) {\n if (this.rand.getBytes)\n return this.rand.getBytes(n);\n\n var res = new Uint8Array(n);\n for (var i = 0; i < res.length; i++)\n res[i] = this.rand.getByte();\n return res;\n};\n\nif (typeof self === 'object') {\n if (self.crypto && self.crypto.getRandomValues) {\n // Modern browsers\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.crypto.getRandomValues(arr);\n return arr;\n };\n } else if (self.msCrypto && self.msCrypto.getRandomValues) {\n // IE\n Rand.prototype._rand = function _rand(n) {\n var arr = new Uint8Array(n);\n self.msCrypto.getRandomValues(arr);\n return arr;\n };\n\n // Safari's WebWorkers do not have `crypto`\n } else if (typeof window === 'object') {\n // Old junk\n Rand.prototype._rand = function() {\n throw new Error('Not implemented yet');\n };\n }\n} else {\n // Node.js or Web worker with no crypto support\n try {\n var crypto = require('crypto');\n if (typeof crypto.randomBytes !== 'function')\n throw new Error('Not supported');\n\n Rand.prototype._rand = function _rand(n) {\n return crypto.randomBytes(n);\n };\n } catch (e) {\n }\n}\n","// based on the aes implimentation in triple sec\n// https://github.com/keybase/triplesec\n// which is in turn based on the one from crypto-js\n// https://code.google.com/p/crypto-js/\n\nvar Buffer = require('safe-buffer').Buffer\n\nfunction asUInt32Array (buf) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n\n var len = (buf.length / 4) | 0\n var out = new Array(len)\n\n for (var i = 0; i < len; i++) {\n out[i] = buf.readUInt32BE(i * 4)\n }\n\n return out\n}\n\nfunction scrubVec (v) {\n for (var i = 0; i < v.length; v++) {\n v[i] = 0\n }\n}\n\nfunction cryptBlock (M, keySchedule, SUB_MIX, SBOX, nRounds) {\n var SUB_MIX0 = SUB_MIX[0]\n var SUB_MIX1 = SUB_MIX[1]\n var SUB_MIX2 = SUB_MIX[2]\n var SUB_MIX3 = SUB_MIX[3]\n\n var s0 = M[0] ^ keySchedule[0]\n var s1 = M[1] ^ keySchedule[1]\n var s2 = M[2] ^ keySchedule[2]\n var s3 = M[3] ^ keySchedule[3]\n var t0, t1, t2, t3\n var ksRow = 4\n\n for (var round = 1; round < nRounds; round++) {\n t0 = SUB_MIX0[s0 >>> 24] ^ SUB_MIX1[(s1 >>> 16) & 0xff] ^ SUB_MIX2[(s2 >>> 8) & 0xff] ^ SUB_MIX3[s3 & 0xff] ^ keySchedule[ksRow++]\n t1 = SUB_MIX0[s1 >>> 24] ^ SUB_MIX1[(s2 >>> 16) & 0xff] ^ SUB_MIX2[(s3 >>> 8) & 0xff] ^ SUB_MIX3[s0 & 0xff] ^ keySchedule[ksRow++]\n t2 = SUB_MIX0[s2 >>> 24] ^ SUB_MIX1[(s3 >>> 16) & 0xff] ^ SUB_MIX2[(s0 >>> 8) & 0xff] ^ SUB_MIX3[s1 & 0xff] ^ keySchedule[ksRow++]\n t3 = SUB_MIX0[s3 >>> 24] ^ SUB_MIX1[(s0 >>> 16) & 0xff] ^ SUB_MIX2[(s1 >>> 8) & 0xff] ^ SUB_MIX3[s2 & 0xff] ^ keySchedule[ksRow++]\n s0 = t0\n s1 = t1\n s2 = t2\n s3 = t3\n }\n\n t0 = ((SBOX[s0 >>> 24] << 24) | (SBOX[(s1 >>> 16) & 0xff] << 16) | (SBOX[(s2 >>> 8) & 0xff] << 8) | SBOX[s3 & 0xff]) ^ keySchedule[ksRow++]\n t1 = ((SBOX[s1 >>> 24] << 24) | (SBOX[(s2 >>> 16) & 0xff] << 16) | (SBOX[(s3 >>> 8) & 0xff] << 8) | SBOX[s0 & 0xff]) ^ keySchedule[ksRow++]\n t2 = ((SBOX[s2 >>> 24] << 24) | (SBOX[(s3 >>> 16) & 0xff] << 16) | (SBOX[(s0 >>> 8) & 0xff] << 8) | SBOX[s1 & 0xff]) ^ keySchedule[ksRow++]\n t3 = ((SBOX[s3 >>> 24] << 24) | (SBOX[(s0 >>> 16) & 0xff] << 16) | (SBOX[(s1 >>> 8) & 0xff] << 8) | SBOX[s2 & 0xff]) ^ keySchedule[ksRow++]\n t0 = t0 >>> 0\n t1 = t1 >>> 0\n t2 = t2 >>> 0\n t3 = t3 >>> 0\n\n return [t0, t1, t2, t3]\n}\n\n// AES constants\nvar RCON = [0x00, 0x01, 0x02, 0x04, 0x08, 0x10, 0x20, 0x40, 0x80, 0x1b, 0x36]\nvar G = (function () {\n // Compute double table\n var d = new Array(256)\n for (var j = 0; j < 256; j++) {\n if (j < 128) {\n d[j] = j << 1\n } else {\n d[j] = (j << 1) ^ 0x11b\n }\n }\n\n var SBOX = []\n var INV_SBOX = []\n var SUB_MIX = [[], [], [], []]\n var INV_SUB_MIX = [[], [], [], []]\n\n // Walk GF(2^8)\n var x = 0\n var xi = 0\n for (var i = 0; i < 256; ++i) {\n // Compute sbox\n var sx = xi ^ (xi << 1) ^ (xi << 2) ^ (xi << 3) ^ (xi << 4)\n sx = (sx >>> 8) ^ (sx & 0xff) ^ 0x63\n SBOX[x] = sx\n INV_SBOX[sx] = x\n\n // Compute multiplication\n var x2 = d[x]\n var x4 = d[x2]\n var x8 = d[x4]\n\n // Compute sub bytes, mix columns tables\n var t = (d[sx] * 0x101) ^ (sx * 0x1010100)\n SUB_MIX[0][x] = (t << 24) | (t >>> 8)\n SUB_MIX[1][x] = (t << 16) | (t >>> 16)\n SUB_MIX[2][x] = (t << 8) | (t >>> 24)\n SUB_MIX[3][x] = t\n\n // Compute inv sub bytes, inv mix columns tables\n t = (x8 * 0x1010101) ^ (x4 * 0x10001) ^ (x2 * 0x101) ^ (x * 0x1010100)\n INV_SUB_MIX[0][sx] = (t << 24) | (t >>> 8)\n INV_SUB_MIX[1][sx] = (t << 16) | (t >>> 16)\n INV_SUB_MIX[2][sx] = (t << 8) | (t >>> 24)\n INV_SUB_MIX[3][sx] = t\n\n if (x === 0) {\n x = xi = 1\n } else {\n x = x2 ^ d[d[d[x8 ^ x2]]]\n xi ^= d[d[xi]]\n }\n }\n\n return {\n SBOX: SBOX,\n INV_SBOX: INV_SBOX,\n SUB_MIX: SUB_MIX,\n INV_SUB_MIX: INV_SUB_MIX\n }\n})()\n\nfunction AES (key) {\n this._key = asUInt32Array(key)\n this._reset()\n}\n\nAES.blockSize = 4 * 4\nAES.keySize = 256 / 8\nAES.prototype.blockSize = AES.blockSize\nAES.prototype.keySize = AES.keySize\nAES.prototype._reset = function () {\n var keyWords = this._key\n var keySize = keyWords.length\n var nRounds = keySize + 6\n var ksRows = (nRounds + 1) * 4\n\n var keySchedule = []\n for (var k = 0; k < keySize; k++) {\n keySchedule[k] = keyWords[k]\n }\n\n for (k = keySize; k < ksRows; k++) {\n var t = keySchedule[k - 1]\n\n if (k % keySize === 0) {\n t = (t << 8) | (t >>> 24)\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n\n t ^= RCON[(k / keySize) | 0] << 24\n } else if (keySize > 6 && k % keySize === 4) {\n t =\n (G.SBOX[t >>> 24] << 24) |\n (G.SBOX[(t >>> 16) & 0xff] << 16) |\n (G.SBOX[(t >>> 8) & 0xff] << 8) |\n (G.SBOX[t & 0xff])\n }\n\n keySchedule[k] = keySchedule[k - keySize] ^ t\n }\n\n var invKeySchedule = []\n for (var ik = 0; ik < ksRows; ik++) {\n var ksR = ksRows - ik\n var tt = keySchedule[ksR - (ik % 4 ? 0 : 4)]\n\n if (ik < 4 || ksR <= 4) {\n invKeySchedule[ik] = tt\n } else {\n invKeySchedule[ik] =\n G.INV_SUB_MIX[0][G.SBOX[tt >>> 24]] ^\n G.INV_SUB_MIX[1][G.SBOX[(tt >>> 16) & 0xff]] ^\n G.INV_SUB_MIX[2][G.SBOX[(tt >>> 8) & 0xff]] ^\n G.INV_SUB_MIX[3][G.SBOX[tt & 0xff]]\n }\n }\n\n this._nRounds = nRounds\n this._keySchedule = keySchedule\n this._invKeySchedule = invKeySchedule\n}\n\nAES.prototype.encryptBlockRaw = function (M) {\n M = asUInt32Array(M)\n return cryptBlock(M, this._keySchedule, G.SUB_MIX, G.SBOX, this._nRounds)\n}\n\nAES.prototype.encryptBlock = function (M) {\n var out = this.encryptBlockRaw(M)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[1], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[3], 12)\n return buf\n}\n\nAES.prototype.decryptBlock = function (M) {\n M = asUInt32Array(M)\n\n // swap\n var m1 = M[1]\n M[1] = M[3]\n M[3] = m1\n\n var out = cryptBlock(M, this._invKeySchedule, G.INV_SUB_MIX, G.INV_SBOX, this._nRounds)\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0], 0)\n buf.writeUInt32BE(out[3], 4)\n buf.writeUInt32BE(out[2], 8)\n buf.writeUInt32BE(out[1], 12)\n return buf\n}\n\nAES.prototype.scrub = function () {\n scrubVec(this._keySchedule)\n scrubVec(this._invKeySchedule)\n scrubVec(this._key)\n}\n\nmodule.exports.AES = AES\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\nvar GHASH = require('./ghash')\nvar xor = require('buffer-xor')\nvar incr32 = require('./incr32')\n\nfunction xorTest (a, b) {\n var out = 0\n if (a.length !== b.length) out++\n\n var len = Math.min(a.length, b.length)\n for (var i = 0; i < len; ++i) {\n out += (a[i] ^ b[i])\n }\n\n return out\n}\n\nfunction calcIv (self, iv, ck) {\n if (iv.length === 12) {\n self._finID = Buffer.concat([iv, Buffer.from([0, 0, 0, 1])])\n return Buffer.concat([iv, Buffer.from([0, 0, 0, 2])])\n }\n var ghash = new GHASH(ck)\n var len = iv.length\n var toPad = len % 16\n ghash.update(iv)\n if (toPad) {\n toPad = 16 - toPad\n ghash.update(Buffer.alloc(toPad, 0))\n }\n ghash.update(Buffer.alloc(8, 0))\n var ivBits = len * 8\n var tail = Buffer.alloc(8)\n tail.writeUIntBE(ivBits, 0, 8)\n ghash.update(tail)\n self._finID = ghash.state\n var out = Buffer.from(self._finID)\n incr32(out)\n return out\n}\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n var h = Buffer.alloc(4, 0)\n\n this._cipher = new aes.AES(key)\n var ck = this._cipher.encryptBlock(h)\n this._ghash = new GHASH(ck)\n iv = calcIv(this, iv, ck)\n\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._alen = 0\n this._len = 0\n this._mode = mode\n\n this._authTag = null\n this._called = false\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n if (!this._called && this._alen) {\n var rump = 16 - (this._alen % 16)\n if (rump < 16) {\n rump = Buffer.alloc(rump, 0)\n this._ghash.update(rump)\n }\n }\n\n this._called = true\n var out = this._mode.encrypt(this, chunk)\n if (this._decrypt) {\n this._ghash.update(chunk)\n } else {\n this._ghash.update(out)\n }\n this._len += chunk.length\n return out\n}\n\nStreamCipher.prototype._final = function () {\n if (this._decrypt && !this._authTag) throw new Error('Unsupported state or unable to authenticate data')\n\n var tag = xor(this._ghash.final(this._alen * 8, this._len * 8), this._cipher.encryptBlock(this._finID))\n if (this._decrypt && xorTest(tag, this._authTag)) throw new Error('Unsupported state or unable to authenticate data')\n\n this._authTag = tag\n this._cipher.scrub()\n}\n\nStreamCipher.prototype.getAuthTag = function getAuthTag () {\n if (this._decrypt || !Buffer.isBuffer(this._authTag)) throw new Error('Attempting to get auth tag in unsupported state')\n\n return this._authTag\n}\n\nStreamCipher.prototype.setAuthTag = function setAuthTag (tag) {\n if (!this._decrypt) throw new Error('Attempting to set auth tag in unsupported state')\n\n this._authTag = tag\n}\n\nStreamCipher.prototype.setAAD = function setAAD (buf) {\n if (this._called) throw new Error('Attempting to set AAD in unsupported state')\n\n this._ghash.update(buf)\n this._alen += buf.length\n}\n\nmodule.exports = StreamCipher\n","var ciphers = require('./encrypter')\nvar deciphers = require('./decrypter')\nvar modes = require('./modes/list.json')\n\nfunction getCiphers () {\n return Object.keys(modes)\n}\n\nexports.createCipher = exports.Cipher = ciphers.createCipher\nexports.createCipheriv = exports.Cipheriv = ciphers.createCipheriv\nexports.createDecipher = exports.Decipher = deciphers.createDecipher\nexports.createDecipheriv = exports.Decipheriv = deciphers.createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar MODES = require('./modes')\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Decipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._last = void 0\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Decipher, Transform)\n\nDecipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n while ((chunk = this._cache.get(this._autopadding))) {\n thing = this._mode.decrypt(this, chunk)\n out.push(thing)\n }\n return Buffer.concat(out)\n}\n\nDecipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n return unpad(this._mode.decrypt(this, chunk))\n } else if (chunk) {\n throw new Error('data not multiple of block length')\n }\n}\n\nDecipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function (autoPadding) {\n var out\n if (autoPadding) {\n if (this.cache.length > 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n } else {\n if (this.cache.length >= 16) {\n out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n }\n\n return null\n}\n\nSplitter.prototype.flush = function () {\n if (this.cache.length) return this.cache\n}\n\nfunction unpad (last) {\n var padded = last[15]\n if (padded < 1 || padded > 16) {\n throw new Error('unable to decrypt data')\n }\n var i = -1\n while (++i < padded) {\n if (last[(i + (16 - padded))] !== padded) {\n throw new Error('unable to decrypt data')\n }\n }\n if (padded === 16) return\n\n return last.slice(0, 16 - padded)\n}\n\nfunction createDecipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv, true)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv, true)\n }\n\n return new Decipher(config.module, password, iv)\n}\n\nfunction createDecipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createDecipher = createDecipher\nexports.createDecipheriv = createDecipheriv\n","var MODES = require('./modes')\nvar AuthCipher = require('./authCipher')\nvar Buffer = require('safe-buffer').Buffer\nvar StreamCipher = require('./streamCipher')\nvar Transform = require('cipher-base')\nvar aes = require('./aes')\nvar ebtk = require('evp_bytestokey')\nvar inherits = require('inherits')\n\nfunction Cipher (mode, key, iv) {\n Transform.call(this)\n\n this._cache = new Splitter()\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._mode = mode\n this._autopadding = true\n}\n\ninherits(Cipher, Transform)\n\nCipher.prototype._update = function (data) {\n this._cache.add(data)\n var chunk\n var thing\n var out = []\n\n while ((chunk = this._cache.get())) {\n thing = this._mode.encrypt(this, chunk)\n out.push(thing)\n }\n\n return Buffer.concat(out)\n}\n\nvar PADDING = Buffer.alloc(16, 0x10)\n\nCipher.prototype._final = function () {\n var chunk = this._cache.flush()\n if (this._autopadding) {\n chunk = this._mode.encrypt(this, chunk)\n this._cipher.scrub()\n return chunk\n }\n\n if (!chunk.equals(PADDING)) {\n this._cipher.scrub()\n throw new Error('data not multiple of block length')\n }\n}\n\nCipher.prototype.setAutoPadding = function (setTo) {\n this._autopadding = !!setTo\n return this\n}\n\nfunction Splitter () {\n this.cache = Buffer.allocUnsafe(0)\n}\n\nSplitter.prototype.add = function (data) {\n this.cache = Buffer.concat([this.cache, data])\n}\n\nSplitter.prototype.get = function () {\n if (this.cache.length > 15) {\n var out = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n return out\n }\n return null\n}\n\nSplitter.prototype.flush = function () {\n var len = 16 - this.cache.length\n var padBuff = Buffer.allocUnsafe(len)\n\n var i = -1\n while (++i < len) {\n padBuff.writeUInt8(len, i)\n }\n\n return Buffer.concat([this.cache, padBuff])\n}\n\nfunction createCipheriv (suite, password, iv) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n if (typeof password === 'string') password = Buffer.from(password)\n if (password.length !== config.key / 8) throw new TypeError('invalid key length ' + password.length)\n\n if (typeof iv === 'string') iv = Buffer.from(iv)\n if (config.mode !== 'GCM' && iv.length !== config.iv) throw new TypeError('invalid iv length ' + iv.length)\n\n if (config.type === 'stream') {\n return new StreamCipher(config.module, password, iv)\n } else if (config.type === 'auth') {\n return new AuthCipher(config.module, password, iv)\n }\n\n return new Cipher(config.module, password, iv)\n}\n\nfunction createCipher (suite, password) {\n var config = MODES[suite.toLowerCase()]\n if (!config) throw new TypeError('invalid suite type')\n\n var keys = ebtk(password, false, config.key, config.iv)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nexports.createCipheriv = createCipheriv\nexports.createCipher = createCipher\n","var Buffer = require('safe-buffer').Buffer\nvar ZEROES = Buffer.alloc(16, 0)\n\nfunction toArray (buf) {\n return [\n buf.readUInt32BE(0),\n buf.readUInt32BE(4),\n buf.readUInt32BE(8),\n buf.readUInt32BE(12)\n ]\n}\n\nfunction fromArray (out) {\n var buf = Buffer.allocUnsafe(16)\n buf.writeUInt32BE(out[0] >>> 0, 0)\n buf.writeUInt32BE(out[1] >>> 0, 4)\n buf.writeUInt32BE(out[2] >>> 0, 8)\n buf.writeUInt32BE(out[3] >>> 0, 12)\n return buf\n}\n\nfunction GHASH (key) {\n this.h = key\n this.state = Buffer.alloc(16, 0)\n this.cache = Buffer.allocUnsafe(0)\n}\n\n// from http://bitwiseshiftleft.github.io/sjcl/doc/symbols/src/core_gcm.js.html\n// by Juho Vähä-Herttua\nGHASH.prototype.ghash = function (block) {\n var i = -1\n while (++i < block.length) {\n this.state[i] ^= block[i]\n }\n this._multiply()\n}\n\nGHASH.prototype._multiply = function () {\n var Vi = toArray(this.h)\n var Zi = [0, 0, 0, 0]\n var j, xi, lsbVi\n var i = -1\n while (++i < 128) {\n xi = (this.state[~~(i / 8)] & (1 << (7 - (i % 8)))) !== 0\n if (xi) {\n // Z_i+1 = Z_i ^ V_i\n Zi[0] ^= Vi[0]\n Zi[1] ^= Vi[1]\n Zi[2] ^= Vi[2]\n Zi[3] ^= Vi[3]\n }\n\n // Store the value of LSB(V_i)\n lsbVi = (Vi[3] & 1) !== 0\n\n // V_i+1 = V_i >> 1\n for (j = 3; j > 0; j--) {\n Vi[j] = (Vi[j] >>> 1) | ((Vi[j - 1] & 1) << 31)\n }\n Vi[0] = Vi[0] >>> 1\n\n // If LSB(V_i) is 1, V_i+1 = (V_i >> 1) ^ R\n if (lsbVi) {\n Vi[0] = Vi[0] ^ (0xe1 << 24)\n }\n }\n this.state = fromArray(Zi)\n}\n\nGHASH.prototype.update = function (buf) {\n this.cache = Buffer.concat([this.cache, buf])\n var chunk\n while (this.cache.length >= 16) {\n chunk = this.cache.slice(0, 16)\n this.cache = this.cache.slice(16)\n this.ghash(chunk)\n }\n}\n\nGHASH.prototype.final = function (abl, bl) {\n if (this.cache.length) {\n this.ghash(Buffer.concat([this.cache, ZEROES], 16))\n }\n\n this.ghash(fromArray([0, abl, 0, bl]))\n return this.state\n}\n\nmodule.exports = GHASH\n","function incr32 (iv) {\n var len = iv.length\n var item\n while (len--) {\n item = iv.readUInt8(len)\n if (item === 255) {\n iv.writeUInt8(0, len)\n } else {\n item++\n iv.writeUInt8(item, len)\n break\n }\n }\n}\nmodule.exports = incr32\n","var xor = require('buffer-xor')\n\nexports.encrypt = function (self, block) {\n var data = xor(block, self._prev)\n\n self._prev = self._cipher.encryptBlock(data)\n return self._prev\n}\n\nexports.decrypt = function (self, block) {\n var pad = self._prev\n\n self._prev = block\n var out = self._cipher.decryptBlock(block)\n\n return xor(out, pad)\n}\n","var Buffer = require('safe-buffer').Buffer\nvar xor = require('buffer-xor')\n\nfunction encryptStart (self, data, decrypt) {\n var len = data.length\n var out = xor(data, self._cache)\n self._cache = self._cache.slice(len)\n self._prev = Buffer.concat([self._prev, decrypt ? data : out])\n return out\n}\n\nexports.encrypt = function (self, data, decrypt) {\n var out = Buffer.allocUnsafe(0)\n var len\n\n while (data.length) {\n if (self._cache.length === 0) {\n self._cache = self._cipher.encryptBlock(self._prev)\n self._prev = Buffer.allocUnsafe(0)\n }\n\n if (self._cache.length <= data.length) {\n len = self._cache.length\n out = Buffer.concat([out, encryptStart(self, data.slice(0, len), decrypt)])\n data = data.slice(len)\n } else {\n out = Buffer.concat([out, encryptStart(self, data, decrypt)])\n break\n }\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad\n var i = -1\n var len = 8\n var out = 0\n var bit, value\n while (++i < len) {\n pad = self._cipher.encryptBlock(self._prev)\n bit = (byteParam & (1 << (7 - i))) ? 0x80 : 0\n value = pad[0] ^ bit\n out += ((value & 0x80) >> (i % 8))\n self._prev = shiftIn(self._prev, decrypt ? bit : value)\n }\n return out\n}\n\nfunction shiftIn (buffer, value) {\n var len = buffer.length\n var i = -1\n var out = Buffer.allocUnsafe(buffer.length)\n buffer = Buffer.concat([buffer, Buffer.from([value])])\n\n while (++i < len) {\n out[i] = buffer[i] << 1 | buffer[i + 1] >> (7)\n }\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var Buffer = require('safe-buffer').Buffer\n\nfunction encryptByte (self, byteParam, decrypt) {\n var pad = self._cipher.encryptBlock(self._prev)\n var out = pad[0] ^ byteParam\n\n self._prev = Buffer.concat([\n self._prev.slice(1),\n Buffer.from([decrypt ? byteParam : out])\n ])\n\n return out\n}\n\nexports.encrypt = function (self, chunk, decrypt) {\n var len = chunk.length\n var out = Buffer.allocUnsafe(len)\n var i = -1\n\n while (++i < len) {\n out[i] = encryptByte(self, chunk[i], decrypt)\n }\n\n return out\n}\n","var xor = require('buffer-xor')\nvar Buffer = require('safe-buffer').Buffer\nvar incr32 = require('../incr32')\n\nfunction getBlock (self) {\n var out = self._cipher.encryptBlockRaw(self._prev)\n incr32(self._prev)\n return out\n}\n\nvar blockSize = 16\nexports.encrypt = function (self, chunk) {\n var chunkNum = Math.ceil(chunk.length / blockSize)\n var start = self._cache.length\n self._cache = Buffer.concat([\n self._cache,\n Buffer.allocUnsafe(chunkNum * blockSize)\n ])\n for (var i = 0; i < chunkNum; i++) {\n var out = getBlock(self)\n var offset = start + i * blockSize\n self._cache.writeUInt32BE(out[0], offset + 0)\n self._cache.writeUInt32BE(out[1], offset + 4)\n self._cache.writeUInt32BE(out[2], offset + 8)\n self._cache.writeUInt32BE(out[3], offset + 12)\n }\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","exports.encrypt = function (self, block) {\n return self._cipher.encryptBlock(block)\n}\n\nexports.decrypt = function (self, block) {\n return self._cipher.decryptBlock(block)\n}\n","var modeModules = {\n ECB: require('./ecb'),\n CBC: require('./cbc'),\n CFB: require('./cfb'),\n CFB8: require('./cfb8'),\n CFB1: require('./cfb1'),\n OFB: require('./ofb'),\n CTR: require('./ctr'),\n GCM: require('./ctr')\n}\n\nvar modes = require('./list.json')\n\nfor (var key in modes) {\n modes[key].module = modeModules[modes[key].mode]\n}\n\nmodule.exports = modes\n","var xor = require('buffer-xor')\n\nfunction getBlock (self) {\n self._prev = self._cipher.encryptBlock(self._prev)\n return self._prev\n}\n\nexports.encrypt = function (self, chunk) {\n while (self._cache.length < chunk.length) {\n self._cache = Buffer.concat([self._cache, getBlock(self)])\n }\n\n var pad = self._cache.slice(0, chunk.length)\n self._cache = self._cache.slice(chunk.length)\n return xor(chunk, pad)\n}\n","var aes = require('./aes')\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('cipher-base')\nvar inherits = require('inherits')\n\nfunction StreamCipher (mode, key, iv, decrypt) {\n Transform.call(this)\n\n this._cipher = new aes.AES(key)\n this._prev = Buffer.from(iv)\n this._cache = Buffer.allocUnsafe(0)\n this._secCache = Buffer.allocUnsafe(0)\n this._decrypt = decrypt\n this._mode = mode\n}\n\ninherits(StreamCipher, Transform)\n\nStreamCipher.prototype._update = function (chunk) {\n return this._mode.encrypt(this, chunk, this._decrypt)\n}\n\nStreamCipher.prototype._final = function () {\n this._cipher.scrub()\n}\n\nmodule.exports = StreamCipher\n","var DES = require('browserify-des')\nvar aes = require('browserify-aes/browser')\nvar aesModes = require('browserify-aes/modes')\nvar desModes = require('browserify-des/modes')\nvar ebtk = require('evp_bytestokey')\n\nfunction createCipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createCipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createDecipher (suite, password) {\n suite = suite.toLowerCase()\n\n var keyLen, ivLen\n if (aesModes[suite]) {\n keyLen = aesModes[suite].key\n ivLen = aesModes[suite].iv\n } else if (desModes[suite]) {\n keyLen = desModes[suite].key * 8\n ivLen = desModes[suite].iv\n } else {\n throw new TypeError('invalid suite type')\n }\n\n var keys = ebtk(password, false, keyLen, ivLen)\n return createDecipheriv(suite, keys.key, keys.iv)\n}\n\nfunction createCipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createCipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction createDecipheriv (suite, key, iv) {\n suite = suite.toLowerCase()\n if (aesModes[suite]) return aes.createDecipheriv(suite, key, iv)\n if (desModes[suite]) return new DES({ key: key, iv: iv, mode: suite, decrypt: true })\n\n throw new TypeError('invalid suite type')\n}\n\nfunction getCiphers () {\n return Object.keys(desModes).concat(aes.getCiphers())\n}\n\nexports.createCipher = exports.Cipher = createCipher\nexports.createCipheriv = exports.Cipheriv = createCipheriv\nexports.createDecipher = exports.Decipher = createDecipher\nexports.createDecipheriv = exports.Decipheriv = createDecipheriv\nexports.listCiphers = exports.getCiphers = getCiphers\n","var CipherBase = require('cipher-base')\nvar des = require('des.js')\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar modes = {\n 'des-ede3-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede3': des.EDE,\n 'des-ede-cbc': des.CBC.instantiate(des.EDE),\n 'des-ede': des.EDE,\n 'des-cbc': des.CBC.instantiate(des.DES),\n 'des-ecb': des.DES\n}\nmodes.des = modes['des-cbc']\nmodes.des3 = modes['des-ede3-cbc']\nmodule.exports = DES\ninherits(DES, CipherBase)\nfunction DES (opts) {\n CipherBase.call(this)\n var modeName = opts.mode.toLowerCase()\n var mode = modes[modeName]\n var type\n if (opts.decrypt) {\n type = 'decrypt'\n } else {\n type = 'encrypt'\n }\n var key = opts.key\n if (!Buffer.isBuffer(key)) {\n key = Buffer.from(key)\n }\n if (modeName === 'des-ede' || modeName === 'des-ede-cbc') {\n key = Buffer.concat([key, key.slice(0, 8)])\n }\n var iv = opts.iv\n if (!Buffer.isBuffer(iv)) {\n iv = Buffer.from(iv)\n }\n this._des = mode.create({\n key: key,\n iv: iv,\n type: type\n })\n}\nDES.prototype._update = function (data) {\n return Buffer.from(this._des.update(data))\n}\nDES.prototype._final = function () {\n return Buffer.from(this._des.final())\n}\n","exports['des-ecb'] = {\n key: 8,\n iv: 0\n}\nexports['des-cbc'] = exports.des = {\n key: 8,\n iv: 8\n}\nexports['des-ede3-cbc'] = exports.des3 = {\n key: 24,\n iv: 8\n}\nexports['des-ede3'] = {\n key: 24,\n iv: 0\n}\nexports['des-ede-cbc'] = {\n key: 16,\n iv: 8\n}\nexports['des-ede'] = {\n key: 16,\n iv: 0\n}\n","var BN = require('bn.js')\nvar randomBytes = require('randombytes')\n\nfunction blind (priv) {\n var r = getr(priv)\n var blinder = r.toRed(BN.mont(priv.modulus)).redPow(new BN(priv.publicExponent)).fromRed()\n return { blinder: blinder, unblinder: r.invm(priv.modulus) }\n}\n\nfunction getr (priv) {\n var len = priv.modulus.byteLength()\n var r\n do {\n r = new BN(randomBytes(len))\n } while (r.cmp(priv.modulus) >= 0 || !r.umod(priv.prime1) || !r.umod(priv.prime2))\n return r\n}\n\nfunction crt (msg, priv) {\n var blinds = blind(priv)\n var len = priv.modulus.byteLength()\n var blinded = new BN(msg).mul(blinds.blinder).umod(priv.modulus)\n var c1 = blinded.toRed(BN.mont(priv.prime1))\n var c2 = blinded.toRed(BN.mont(priv.prime2))\n var qinv = priv.coefficient\n var p = priv.prime1\n var q = priv.prime2\n var m1 = c1.redPow(priv.exponent1).fromRed()\n var m2 = c2.redPow(priv.exponent2).fromRed()\n var h = m1.isub(m2).imul(qinv).umod(p).imul(q)\n return m2.iadd(h).imul(blinds.unblinder).umod(priv.modulus).toArrayLike(Buffer, 'be', len)\n}\ncrt.getr = getr\n\nmodule.exports = crt\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = require('./browser/algorithms.json')\n","var Buffer = require('safe-buffer').Buffer\nvar createHash = require('create-hash')\nvar stream = require('readable-stream')\nvar inherits = require('inherits')\nvar sign = require('./sign')\nvar verify = require('./verify')\n\nvar algorithms = require('./algorithms.json')\nObject.keys(algorithms).forEach(function (key) {\n algorithms[key].id = Buffer.from(algorithms[key].id, 'hex')\n algorithms[key.toLowerCase()] = algorithms[key]\n})\n\nfunction Sign (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hashType = data.hash\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Sign, stream.Writable)\n\nSign.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nSign.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nSign.prototype.sign = function signMethod (key, enc) {\n this.end()\n var hash = this._hash.digest()\n var sig = sign(hash, key, this._hashType, this._signType, this._tag)\n\n return enc ? sig.toString(enc) : sig\n}\n\nfunction Verify (algorithm) {\n stream.Writable.call(this)\n\n var data = algorithms[algorithm]\n if (!data) throw new Error('Unknown message digest')\n\n this._hash = createHash(data.hash)\n this._tag = data.id\n this._signType = data.sign\n}\ninherits(Verify, stream.Writable)\n\nVerify.prototype._write = function _write (data, _, done) {\n this._hash.update(data)\n done()\n}\n\nVerify.prototype.update = function update (data, enc) {\n if (typeof data === 'string') data = Buffer.from(data, enc)\n\n this._hash.update(data)\n return this\n}\n\nVerify.prototype.verify = function verifyMethod (key, sig, enc) {\n if (typeof sig === 'string') sig = Buffer.from(sig, enc)\n\n this.end()\n var hash = this._hash.digest()\n return verify(sig, hash, key, this._signType, this._tag)\n}\n\nfunction createSign (algorithm) {\n return new Sign(algorithm)\n}\n\nfunction createVerify (algorithm) {\n return new Verify(algorithm)\n}\n\nmodule.exports = {\n Sign: createSign,\n Verify: createVerify,\n createSign: createSign,\n createVerify: createVerify\n}\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar createHmac = require('create-hmac')\nvar crt = require('browserify-rsa')\nvar EC = require('elliptic').ec\nvar BN = require('bn.js')\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction sign (hash, key, hashType, signType, tag) {\n var priv = parseKeys(key)\n if (priv.curve) {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n return ecSign(hash, priv)\n } else if (priv.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong private key type')\n return dsaSign(hash, priv, hashType)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong private key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = priv.modulus.byteLength()\n var pad = [0, 1]\n while (hash.length + pad.length + 1 < len) pad.push(0xff)\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) pad.push(hash[i])\n\n var out = crt(pad, priv)\n return out\n}\n\nfunction ecSign (hash, priv) {\n var curveId = curves[priv.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + priv.curve.join('.'))\n\n var curve = new EC(curveId)\n var key = curve.keyFromPrivate(priv.privateKey)\n var out = key.sign(hash)\n\n return Buffer.from(out.toDER())\n}\n\nfunction dsaSign (hash, priv, algo) {\n var x = priv.params.priv_key\n var p = priv.params.p\n var q = priv.params.q\n var g = priv.params.g\n var r = new BN(0)\n var k\n var H = bits2int(hash, q).mod(q)\n var s = false\n var kv = getKey(x, q, hash, algo)\n while (s === false) {\n k = makeKey(q, kv, algo)\n r = makeR(g, k, p, q)\n s = k.invm(q).imul(H.add(x.mul(r))).mod(q)\n if (s.cmpn(0) === 0) {\n s = false\n r = new BN(0)\n }\n }\n return toDER(r, s)\n}\n\nfunction toDER (r, s) {\n r = r.toArray()\n s = s.toArray()\n\n // Pad values\n if (r[0] & 0x80) r = [0].concat(r)\n if (s[0] & 0x80) s = [0].concat(s)\n\n var total = r.length + s.length + 4\n var res = [0x30, total, 0x02, r.length]\n res = res.concat(r, [0x02, s.length], s)\n return Buffer.from(res)\n}\n\nfunction getKey (x, q, hash, algo) {\n x = Buffer.from(x.toArray())\n if (x.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - x.length)\n x = Buffer.concat([zeros, x])\n }\n var hlen = hash.length\n var hbits = bits2octets(hash, q)\n var v = Buffer.alloc(hlen)\n v.fill(1)\n var k = Buffer.alloc(hlen)\n k = createHmac(algo, k).update(v).update(Buffer.from([0])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n k = createHmac(algo, k).update(v).update(Buffer.from([1])).update(x).update(hbits).digest()\n v = createHmac(algo, k).update(v).digest()\n return { k: k, v: v }\n}\n\nfunction bits2int (obits, q) {\n var bits = new BN(obits)\n var shift = (obits.length << 3) - q.bitLength()\n if (shift > 0) bits.ishrn(shift)\n return bits\n}\n\nfunction bits2octets (bits, q) {\n bits = bits2int(bits, q)\n bits = bits.mod(q)\n var out = Buffer.from(bits.toArray())\n if (out.length < q.byteLength()) {\n var zeros = Buffer.alloc(q.byteLength() - out.length)\n out = Buffer.concat([zeros, out])\n }\n return out\n}\n\nfunction makeKey (q, kv, algo) {\n var t\n var k\n\n do {\n t = Buffer.alloc(0)\n\n while (t.length * 8 < q.bitLength()) {\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n t = Buffer.concat([t, kv.v])\n }\n\n k = bits2int(t, q)\n kv.k = createHmac(algo, kv.k).update(kv.v).update(Buffer.from([0])).digest()\n kv.v = createHmac(algo, kv.k).update(kv.v).digest()\n } while (k.cmp(q) !== -1)\n\n return k\n}\n\nfunction makeR (g, k, p, q) {\n return g.toRed(BN.mont(p)).redPow(k).fromRed().mod(q)\n}\n\nmodule.exports = sign\nmodule.exports.getKey = getKey\nmodule.exports.makeKey = makeKey\n","// much of this based on https://github.com/indutny/self-signed/blob/gh-pages/lib/rsa.js\nvar Buffer = require('safe-buffer').Buffer\nvar BN = require('bn.js')\nvar EC = require('elliptic').ec\nvar parseKeys = require('parse-asn1')\nvar curves = require('./curves.json')\n\nfunction verify (sig, hash, key, signType, tag) {\n var pub = parseKeys(key)\n if (pub.type === 'ec') {\n // rsa keys can be interpreted as ecdsa ones in openssl\n if (signType !== 'ecdsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n return ecVerify(sig, hash, pub)\n } else if (pub.type === 'dsa') {\n if (signType !== 'dsa') throw new Error('wrong public key type')\n return dsaVerify(sig, hash, pub)\n } else {\n if (signType !== 'rsa' && signType !== 'ecdsa/rsa') throw new Error('wrong public key type')\n }\n hash = Buffer.concat([tag, hash])\n var len = pub.modulus.byteLength()\n var pad = [1]\n var padNum = 0\n while (hash.length + pad.length + 2 < len) {\n pad.push(0xff)\n padNum++\n }\n pad.push(0x00)\n var i = -1\n while (++i < hash.length) {\n pad.push(hash[i])\n }\n pad = Buffer.from(pad)\n var red = BN.mont(pub.modulus)\n sig = new BN(sig).toRed(red)\n\n sig = sig.redPow(new BN(pub.publicExponent))\n sig = Buffer.from(sig.fromRed().toArray())\n var out = padNum < 8 ? 1 : 0\n len = Math.min(sig.length, pad.length)\n if (sig.length !== pad.length) out = 1\n\n i = -1\n while (++i < len) out |= sig[i] ^ pad[i]\n return out === 0\n}\n\nfunction ecVerify (sig, hash, pub) {\n var curveId = curves[pub.data.algorithm.curve.join('.')]\n if (!curveId) throw new Error('unknown curve ' + pub.data.algorithm.curve.join('.'))\n\n var curve = new EC(curveId)\n var pubkey = pub.data.subjectPrivateKey.data\n\n return curve.verify(hash, sig, pubkey)\n}\n\nfunction dsaVerify (sig, hash, pub) {\n var p = pub.data.p\n var q = pub.data.q\n var g = pub.data.g\n var y = pub.data.pub_key\n var unpacked = parseKeys.signature.decode(sig, 'der')\n var s = unpacked.s\n var r = unpacked.r\n checkValue(s, q)\n checkValue(r, q)\n var montp = BN.mont(p)\n var w = s.invm(q)\n var v = g.toRed(montp)\n .redPow(new BN(hash).mul(w).mod(q))\n .fromRed()\n .mul(y.toRed(montp).redPow(r.mul(w).mod(q)).fromRed())\n .mod(p)\n .mod(q)\n return v.cmp(r) === 0\n}\n\nfunction checkValue (b, q) {\n if (b.cmpn(0) <= 0) throw new Error('invalid sig')\n if (b.cmp(q) >= q) throw new Error('invalid sig')\n}\n\nmodule.exports = verify\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","module.exports = function xor (a, b) {\n var length = Math.min(a.length, b.length)\n var buffer = new Buffer(length)\n\n for (var i = 0; i < length; ++i) {\n buffer[i] = a[i] ^ b[i]\n }\n\n return buffer\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nconst base64 = require('base64-js')\nconst ieee754 = require('ieee754')\nconst customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nconst K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n const arr = new Uint8Array(1)\n const proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n const buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n const valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n const b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(value[Symbol.toPrimitive]('string'), encodingOrOffset, length)\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n const length = byteLength(string, encoding) | 0\n let buf = createBuffer(length)\n\n const actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n const length = array.length < 0 ? 0 : checked(array.length) | 0\n const buf = createBuffer(length)\n for (let i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n const copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n let buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n const len = checked(obj.length) | 0\n const buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n let x = a.length\n let y = b.length\n\n for (let i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n let i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n const buffer = Buffer.allocUnsafe(length)\n let pos = 0\n for (i = 0; i < list.length; ++i) {\n let buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n if (!Buffer.isBuffer(buf)) buf = Buffer.from(buf)\n buf.copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n const len = string.length\n const mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n let loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n const i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n const len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (let i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n const len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (let i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n const len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (let i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n const length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n let str = ''\n const max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n let x = thisEnd - thisStart\n let y = end - start\n const len = Math.min(x, y)\n\n const thisCopy = this.slice(thisStart, thisEnd)\n const targetCopy = target.slice(start, end)\n\n for (let i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n let indexSize = 1\n let arrLength = arr.length\n let valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n let i\n if (dir) {\n let foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n let found = true\n for (let j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n const remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n const strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n let i\n for (i = 0; i < length; ++i) {\n const parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n const remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n let loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n const res = []\n\n let i = start\n while (i < end) {\n const firstByte = buf[i]\n let codePoint = null\n let bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n let secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nconst MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n const len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n let res = ''\n let i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n let ret = ''\n end = Math.min(buf.length, end)\n\n for (let i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n const len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n let out = ''\n for (let i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n const bytes = buf.slice(start, end)\n let res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (let i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n const len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n const newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n let val = this[offset + --byteLength]\n let mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readBigUInt64LE = defineBigIntMethod(function readBigUInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const lo = first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24\n\n const hi = this[++offset] +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n last * 2 ** 24\n\n return BigInt(lo) + (BigInt(hi) << BigInt(32))\n})\n\nBuffer.prototype.readBigUInt64BE = defineBigIntMethod(function readBigUInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const hi = first * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n const lo = this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last\n\n return (BigInt(hi) << BigInt(32)) + BigInt(lo)\n})\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let val = this[offset]\n let mul = 1\n let i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n let i = byteLength\n let mul = 1\n let val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n const val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readBigInt64LE = defineBigIntMethod(function readBigInt64LE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = this[offset + 4] +\n this[offset + 5] * 2 ** 8 +\n this[offset + 6] * 2 ** 16 +\n (last << 24) // Overflow\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(first +\n this[++offset] * 2 ** 8 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 24)\n})\n\nBuffer.prototype.readBigInt64BE = defineBigIntMethod(function readBigInt64BE (offset) {\n offset = offset >>> 0\n validateNumber(offset, 'offset')\n const first = this[offset]\n const last = this[offset + 7]\n if (first === undefined || last === undefined) {\n boundsError(offset, this.length - 8)\n }\n\n const val = (first << 24) + // Overflow\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n this[++offset]\n\n return (BigInt(val) << BigInt(32)) +\n BigInt(this[++offset] * 2 ** 24 +\n this[++offset] * 2 ** 16 +\n this[++offset] * 2 ** 8 +\n last)\n})\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let mul = 1\n let i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n const maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n let i = byteLength - 1\n let mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction wrtBigUInt64LE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n lo = lo >> 8\n buf[offset++] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n hi = hi >> 8\n buf[offset++] = hi\n return offset\n}\n\nfunction wrtBigUInt64BE (buf, value, offset, min, max) {\n checkIntBI(value, min, max, buf, offset, 7)\n\n let lo = Number(value & BigInt(0xffffffff))\n buf[offset + 7] = lo\n lo = lo >> 8\n buf[offset + 6] = lo\n lo = lo >> 8\n buf[offset + 5] = lo\n lo = lo >> 8\n buf[offset + 4] = lo\n let hi = Number(value >> BigInt(32) & BigInt(0xffffffff))\n buf[offset + 3] = hi\n hi = hi >> 8\n buf[offset + 2] = hi\n hi = hi >> 8\n buf[offset + 1] = hi\n hi = hi >> 8\n buf[offset] = hi\n return offset + 8\n}\n\nBuffer.prototype.writeBigUInt64LE = defineBigIntMethod(function writeBigUInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeBigUInt64BE = defineBigIntMethod(function writeBigUInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, BigInt(0), BigInt('0xffffffffffffffff'))\n})\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = 0\n let mul = 1\n let sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n const limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n let i = byteLength - 1\n let mul = 1\n let sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeBigInt64LE = defineBigIntMethod(function writeBigInt64LE (value, offset = 0) {\n return wrtBigUInt64LE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nBuffer.prototype.writeBigInt64BE = defineBigIntMethod(function writeBigInt64BE (value, offset = 0) {\n return wrtBigUInt64BE(this, value, offset, -BigInt('0x8000000000000000'), BigInt('0x7fffffffffffffff'))\n})\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n const len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n const code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n let i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n const bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n const len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// CUSTOM ERRORS\n// =============\n\n// Simplified versions from Node, changed for Buffer-only usage\nconst errors = {}\nfunction E (sym, getMessage, Base) {\n errors[sym] = class NodeError extends Base {\n constructor () {\n super()\n\n Object.defineProperty(this, 'message', {\n value: getMessage.apply(this, arguments),\n writable: true,\n configurable: true\n })\n\n // Add the error code to the name to include it in the stack trace.\n this.name = `${this.name} [${sym}]`\n // Access the stack to generate the error message including the error code\n // from the name.\n this.stack // eslint-disable-line no-unused-expressions\n // Reset the name to the actual name.\n delete this.name\n }\n\n get code () {\n return sym\n }\n\n set code (value) {\n Object.defineProperty(this, 'code', {\n configurable: true,\n enumerable: true,\n value,\n writable: true\n })\n }\n\n toString () {\n return `${this.name} [${sym}]: ${this.message}`\n }\n }\n}\n\nE('ERR_BUFFER_OUT_OF_BOUNDS',\n function (name) {\n if (name) {\n return `${name} is outside of buffer bounds`\n }\n\n return 'Attempt to access memory outside buffer bounds'\n }, RangeError)\nE('ERR_INVALID_ARG_TYPE',\n function (name, actual) {\n return `The \"${name}\" argument must be of type number. Received type ${typeof actual}`\n }, TypeError)\nE('ERR_OUT_OF_RANGE',\n function (str, range, input) {\n let msg = `The value of \"${str}\" is out of range.`\n let received = input\n if (Number.isInteger(input) && Math.abs(input) > 2 ** 32) {\n received = addNumericalSeparator(String(input))\n } else if (typeof input === 'bigint') {\n received = String(input)\n if (input > BigInt(2) ** BigInt(32) || input < -(BigInt(2) ** BigInt(32))) {\n received = addNumericalSeparator(received)\n }\n received += 'n'\n }\n msg += ` It must be ${range}. Received ${received}`\n return msg\n }, RangeError)\n\nfunction addNumericalSeparator (val) {\n let res = ''\n let i = val.length\n const start = val[0] === '-' ? 1 : 0\n for (; i >= start + 4; i -= 3) {\n res = `_${val.slice(i - 3, i)}${res}`\n }\n return `${val.slice(0, i)}${res}`\n}\n\n// CHECK FUNCTIONS\n// ===============\n\nfunction checkBounds (buf, offset, byteLength) {\n validateNumber(offset, 'offset')\n if (buf[offset] === undefined || buf[offset + byteLength] === undefined) {\n boundsError(offset, buf.length - (byteLength + 1))\n }\n}\n\nfunction checkIntBI (value, min, max, buf, offset, byteLength) {\n if (value > max || value < min) {\n const n = typeof min === 'bigint' ? 'n' : ''\n let range\n if (byteLength > 3) {\n if (min === 0 || min === BigInt(0)) {\n range = `>= 0${n} and < 2${n} ** ${(byteLength + 1) * 8}${n}`\n } else {\n range = `>= -(2${n} ** ${(byteLength + 1) * 8 - 1}${n}) and < 2 ** ` +\n `${(byteLength + 1) * 8 - 1}${n}`\n }\n } else {\n range = `>= ${min}${n} and <= ${max}${n}`\n }\n throw new errors.ERR_OUT_OF_RANGE('value', range, value)\n }\n checkBounds(buf, offset, byteLength)\n}\n\nfunction validateNumber (value, name) {\n if (typeof value !== 'number') {\n throw new errors.ERR_INVALID_ARG_TYPE(name, 'number', value)\n }\n}\n\nfunction boundsError (value, length, type) {\n if (Math.floor(value) !== value) {\n validateNumber(value, type)\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset', 'an integer', value)\n }\n\n if (length < 0) {\n throw new errors.ERR_BUFFER_OUT_OF_BOUNDS()\n }\n\n throw new errors.ERR_OUT_OF_RANGE(type || 'offset',\n `>= ${type ? 1 : 0} and <= ${length}`,\n value)\n}\n\n// HELPER FUNCTIONS\n// ================\n\nconst INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n let codePoint\n const length = string.length\n let leadSurrogate = null\n const bytes = []\n\n for (let i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n let c, hi, lo\n const byteArray = []\n for (let i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n let i\n for (i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nconst hexSliceLookupTable = (function () {\n const alphabet = '0123456789abcdef'\n const table = new Array(256)\n for (let i = 0; i < 16; ++i) {\n const i16 = i * 16\n for (let j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n\n// Return not function with Error if BigInt not supported\nfunction defineBigIntMethod (fn) {\n return typeof BigInt === 'undefined' ? BufferBigIntNotDefined : fn\n}\n\nfunction BufferBigIntNotDefined () {\n throw new Error('BigInt not supported')\n}\n","module.exports = {\n \"100\": \"Continue\",\n \"101\": \"Switching Protocols\",\n \"102\": \"Processing\",\n \"200\": \"OK\",\n \"201\": \"Created\",\n \"202\": \"Accepted\",\n \"203\": \"Non-Authoritative Information\",\n \"204\": \"No Content\",\n \"205\": \"Reset Content\",\n \"206\": \"Partial Content\",\n \"207\": \"Multi-Status\",\n \"208\": \"Already Reported\",\n \"226\": \"IM Used\",\n \"300\": \"Multiple Choices\",\n \"301\": \"Moved Permanently\",\n \"302\": \"Found\",\n \"303\": \"See Other\",\n \"304\": \"Not Modified\",\n \"305\": \"Use Proxy\",\n \"307\": \"Temporary Redirect\",\n \"308\": \"Permanent Redirect\",\n \"400\": \"Bad Request\",\n \"401\": \"Unauthorized\",\n \"402\": \"Payment Required\",\n \"403\": \"Forbidden\",\n \"404\": \"Not Found\",\n \"405\": \"Method Not Allowed\",\n \"406\": \"Not Acceptable\",\n \"407\": \"Proxy Authentication Required\",\n \"408\": \"Request Timeout\",\n \"409\": \"Conflict\",\n \"410\": \"Gone\",\n \"411\": \"Length Required\",\n \"412\": \"Precondition Failed\",\n \"413\": \"Payload Too Large\",\n \"414\": \"URI Too Long\",\n \"415\": \"Unsupported Media Type\",\n \"416\": \"Range Not Satisfiable\",\n \"417\": \"Expectation Failed\",\n \"418\": \"I'm a teapot\",\n \"421\": \"Misdirected Request\",\n \"422\": \"Unprocessable Entity\",\n \"423\": \"Locked\",\n \"424\": \"Failed Dependency\",\n \"425\": \"Unordered Collection\",\n \"426\": \"Upgrade Required\",\n \"428\": \"Precondition Required\",\n \"429\": \"Too Many Requests\",\n \"431\": \"Request Header Fields Too Large\",\n \"451\": \"Unavailable For Legal Reasons\",\n \"500\": \"Internal Server Error\",\n \"501\": \"Not Implemented\",\n \"502\": \"Bad Gateway\",\n \"503\": \"Service Unavailable\",\n \"504\": \"Gateway Timeout\",\n \"505\": \"HTTP Version Not Supported\",\n \"506\": \"Variant Also Negotiates\",\n \"507\": \"Insufficient Storage\",\n \"508\": \"Loop Detected\",\n \"509\": \"Bandwidth Limit Exceeded\",\n \"510\": \"Not Extended\",\n \"511\": \"Network Authentication Required\"\n}\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar callBind = require('./');\n\nvar $indexOf = callBind(GetIntrinsic('String.prototype.indexOf'));\n\nmodule.exports = function callBoundIntrinsic(name, allowMissing) {\n\tvar intrinsic = GetIntrinsic(name, !!allowMissing);\n\tif (typeof intrinsic === 'function' && $indexOf(name, '.prototype.') > -1) {\n\t\treturn callBind(intrinsic);\n\t}\n\treturn intrinsic;\n};\n","'use strict';\n\nvar bind = require('function-bind');\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $apply = GetIntrinsic('%Function.prototype.apply%');\nvar $call = GetIntrinsic('%Function.prototype.call%');\nvar $reflectApply = GetIntrinsic('%Reflect.apply%', true) || bind.call($call, $apply);\n\nvar $gOPD = GetIntrinsic('%Object.getOwnPropertyDescriptor%', true);\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\nvar $max = GetIntrinsic('%Math.max%');\n\nif ($defineProperty) {\n\ttry {\n\t\t$defineProperty({}, 'a', { value: 1 });\n\t} catch (e) {\n\t\t// IE 8 has a broken defineProperty\n\t\t$defineProperty = null;\n\t}\n}\n\nmodule.exports = function callBind(originalFunction) {\n\tvar func = $reflectApply(bind, $call, arguments);\n\tif ($gOPD && $defineProperty) {\n\t\tvar desc = $gOPD(func, 'length');\n\t\tif (desc.configurable) {\n\t\t\t// original length, plus the receiver, minus any additional arguments (after the receiver)\n\t\t\t$defineProperty(\n\t\t\t\tfunc,\n\t\t\t\t'length',\n\t\t\t\t{ value: 1 + $max(0, originalFunction.length - (arguments.length - 1)) }\n\t\t\t);\n\t\t}\n\t}\n\treturn func;\n};\n\nvar applyBind = function applyBind() {\n\treturn $reflectApply(bind, $apply, arguments);\n};\n\nif ($defineProperty) {\n\t$defineProperty(module.exports, 'apply', { value: applyBind });\n} else {\n\tmodule.exports.apply = applyBind;\n}\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for codecConstant -> code\nconst constants = {}\n\nfor (const [name, code] of Object.entries(table)) {\n constants[name.toUpperCase().replace(/-/g, '_')] = code\n}\n\nmodule.exports = Object.freeze(constants)\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst varint = require('varint')\nconst intTable = require('./int-table')\nconst codecNameToCodeVarint = require('./varint-table')\nconst util = require('./util')\n\nexports = module.exports\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {string|number} multicodecStrOrCode\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.addPrefix = (multicodecStrOrCode, data) => {\n let prefix\n\n if (Buffer.isBuffer(multicodecStrOrCode)) {\n prefix = util.varintBufferEncode(multicodecStrOrCode)\n } else {\n if (codecNameToCodeVarint[multicodecStrOrCode]) {\n prefix = codecNameToCodeVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n return Buffer.concat([prefix, data])\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.rmPrefix = (data) => {\n varint.decode(data)\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {string}\n */\nexports.getCodec = (prefixedData) => {\n const code = varint.decode(prefixedData)\n const codecName = intTable.get(code)\n if (codecName === undefined) {\n throw new Error(`Code ${code} not found`)\n }\n return codecName\n}\n\n/**\n * Get the name of the codec.\n * @param {number} codec\n * @returns {string}\n */\nexports.getName = (codec) => {\n return intTable.get(codec)\n}\n\n/**\n * Get the code of the codec\n * @param {string} name\n * @returns {number}\n */\nexports.getNumber = (name) => {\n const code = codecNameToCodeVarint[name]\n if (code === undefined) {\n throw new Error('Codec `' + name + '` not found')\n }\n return util.varintBufferDecode(code)[0]\n}\n\n/**\n * Get the code of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {number}\n */\nexports.getCode = (prefixedData) => {\n return varint.decode(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n * @param {string} codecName\n * @returns {Buffer}\n */\nexports.getCodeVarint = (codecName) => {\n const code = codecNameToCodeVarint[codecName]\n if (code === undefined) {\n throw new Error('Codec `' + codecName + '` not found')\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n * @param {Number} code\n * @returns {Array.}\n */\nexports.getVarint = (code) => {\n return varint.encode(code)\n}\n\n// Make the constants top-level constants\nconst constants = require('./constants')\nObject.assign(exports, constants)\n\n// Human friendly names for printing, e.g. in error messages\nexports.print = require('./print')\n","'use strict'\nconst baseTable = require('./base-table.json')\n\n// map for hexString -> codecName\nconst nameTable = new Map()\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n nameTable.set(code, encodingName)\n}\n\nmodule.exports = Object.freeze(nameTable)\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for code -> print friendly name\nconst tableByCode = {}\n\nfor (const [name, code] of Object.entries(table)) {\n if (tableByCode[code] === undefined) tableByCode[code] = name\n}\n\nmodule.exports = Object.freeze(tableByCode)\n","'use strict'\nconst varint = require('varint')\nconst { Buffer } = require('buffer')\n\nmodule.exports = {\n numberToBuffer,\n bufferToNumber,\n varintBufferEncode,\n varintBufferDecode,\n varintEncode\n}\n\nfunction bufferToNumber (buf) {\n return parseInt(buf.toString('hex'), 16)\n}\n\nfunction numberToBuffer (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return Buffer.from(hexString, 'hex')\n}\n\nfunction varintBufferEncode (input) {\n return Buffer.from(varint.encode(bufferToNumber(input)))\n}\n\nfunction varintBufferDecode (input) {\n return numberToBuffer(varint.decode(input))\n}\n\nfunction varintEncode (num) {\n return Buffer.from(varint.encode(num))\n}\n","'use strict'\n\nconst baseTable = require('./base-table.json')\nconst varintEncode = require('./util').varintEncode\n\n// map for codecName -> codeVarintBuffer\nconst varintTable = {}\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n varintTable[encodingName] = varintEncode(code)\n}\n\nmodule.exports = Object.freeze(varintTable)\n","'use strict'\n\nconst mh = require('multihashes')\nconst { Buffer } = require('buffer')\nvar CIDUtil = {\n /**\n * Test if the given input is a valid CID object.\n * Returns an error message if it is not.\n * Returns undefined if it is a valid CID.\n *\n * @param {any} other\n * @returns {string}\n */\n checkCIDComponents: function (other) {\n if (other == null) {\n return 'null values are not valid CIDs'\n }\n\n if (!(other.version === 0 || other.version === 1)) {\n return 'Invalid version, must be a number equal to 1 or 0'\n }\n\n if (typeof other.codec !== 'string') {\n return 'codec must be string'\n }\n\n if (other.version === 0) {\n if (other.codec !== 'dag-pb') {\n return \"codec must be 'dag-pb' for CIDv0\"\n }\n if (other.multibaseName !== 'base58btc') {\n return \"multibaseName must be 'base58btc' for CIDv0\"\n }\n }\n\n if (!Buffer.isBuffer(other.multihash)) {\n return 'multihash must be a Buffer'\n }\n\n try {\n mh.validate(other.multihash)\n } catch (err) {\n let errorMsg = err.message\n if (!errorMsg) { // Just in case mh.validate() throws an error with empty error message\n errorMsg = 'Multihash validation failed'\n }\n return errorMsg\n }\n }\n}\n\nmodule.exports = CIDUtil\n","'use strict'\n\nconst { Buffer } = require('buffer')\nconst mh = require('multihashes')\nconst multibase = require('multibase')\nconst multicodec = require('multicodec')\nconst codecs = require('multicodec/src/base-table.json')\nconst CIDUtil = require('./cid-util')\nconst withIs = require('class-is')\n\n/**\n * @typedef {Object} SerializedCID\n * @param {string} codec\n * @param {number} version\n * @param {Buffer} multihash\n */\n\n/**\n * Test if the given input is a CID.\n * @function isCID\n * @memberof CID\n * @static\n * @param {any} other\n * @returns {bool}\n */\n\n/**\n * Class representing a CID ``\n * , as defined in [ipld/cid](https://github.com/multiformats/cid).\n * @class CID\n */\nclass CID {\n /**\n * Create a new CID.\n *\n * The algorithm for argument input is roughly:\n * ```\n * if (cid)\n * -> create a copy\n * else if (str)\n * if (1st char is on multibase table) -> CID String\n * else -> bs58 encoded multihash\n * else if (Buffer)\n * if (1st byte is 0 or 1) -> CID\n * else -> multihash\n * else if (Number)\n * -> construct CID by parts\n * ```\n *\n * @param {string|Buffer|CID} version\n * @param {string} [codec]\n * @param {Buffer} [multihash]\n * @param {string} [multibaseName]\n *\n * @example\n * new CID(, , , )\n * new CID()\n * new CID()\n * new CID()\n * new CID()\n * new CID()\n */\n constructor (version, codec, multihash, multibaseName) {\n if (_CID.isCID(version)) {\n // version is an exising CID instance\n const cid = version\n this.version = cid.version\n this.codec = cid.codec\n this.multihash = Buffer.from(cid.multihash)\n // Default guard for when a CID < 0.7 is passed with no multibaseName\n this.multibaseName = cid.multibaseName || (cid.version === 0 ? 'base58btc' : 'base32')\n return\n }\n\n if (typeof version === 'string') {\n // e.g. 'base32' or false\n const baseName = multibase.isEncoded(version)\n if (baseName) {\n // version is a CID String encoded with multibase, so v1\n const cid = multibase.decode(version)\n this.version = parseInt(cid.slice(0, 1).toString('hex'), 16)\n this.codec = multicodec.getCodec(cid.slice(1))\n this.multihash = multicodec.rmPrefix(cid.slice(1))\n this.multibaseName = baseName\n } else {\n // version is a base58btc string multihash, so v0\n this.version = 0\n this.codec = 'dag-pb'\n this.multihash = mh.fromB58String(version)\n this.multibaseName = 'base58btc'\n }\n CID.validateCID(this)\n Object.defineProperty(this, 'string', { value: version })\n return\n }\n\n if (Buffer.isBuffer(version)) {\n const firstByte = version.slice(0, 1)\n const v = parseInt(firstByte.toString('hex'), 16)\n if (v === 1) {\n // version is a CID buffer\n const cid = version\n this.version = v\n this.codec = multicodec.getCodec(cid.slice(1))\n this.multihash = multicodec.rmPrefix(cid.slice(1))\n this.multibaseName = 'base32'\n } else {\n // version is a raw multihash buffer, so v0\n this.version = 0\n this.codec = 'dag-pb'\n this.multihash = version\n this.multibaseName = 'base58btc'\n }\n CID.validateCID(this)\n return\n }\n\n // otherwise, assemble the CID from the parameters\n\n /**\n * @type {number}\n */\n this.version = version\n\n /**\n * @type {string}\n */\n this.codec = codec\n\n /**\n * @type {Buffer}\n */\n this.multihash = multihash\n\n /**\n * @type {string}\n */\n this.multibaseName = multibaseName || (version === 0 ? 'base58btc' : 'base32')\n\n CID.validateCID(this)\n }\n\n /**\n * The CID as a `Buffer`\n *\n * @return {Buffer}\n * @readonly\n *\n * @memberOf CID\n */\n get buffer () {\n let buffer = this._buffer\n\n if (!buffer) {\n if (this.version === 0) {\n buffer = this.multihash\n } else if (this.version === 1) {\n buffer = Buffer.concat([\n Buffer.from('01', 'hex'),\n multicodec.getCodeVarint(this.codec),\n this.multihash\n ])\n } else {\n throw new Error('unsupported version')\n }\n\n // Cache this buffer so it doesn't have to be recreated\n Object.defineProperty(this, '_buffer', { value: buffer })\n }\n\n return buffer\n }\n\n /**\n * Get the prefix of the CID.\n *\n * @returns {Buffer}\n * @readonly\n */\n get prefix () {\n return Buffer.concat([\n Buffer.from(`0${this.version}`, 'hex'),\n multicodec.getCodeVarint(this.codec),\n mh.prefix(this.multihash)\n ])\n }\n\n /**\n * Convert to a CID of version `0`.\n *\n * @returns {CID}\n */\n toV0 () {\n if (this.codec !== 'dag-pb') {\n throw new Error('Cannot convert a non dag-pb CID to CIDv0')\n }\n\n const { name, length } = mh.decode(this.multihash)\n\n if (name !== 'sha2-256') {\n throw new Error('Cannot convert non sha2-256 multihash CID to CIDv0')\n }\n\n if (length !== 32) {\n throw new Error('Cannot convert non 32 byte multihash CID to CIDv0')\n }\n\n return new _CID(0, this.codec, this.multihash)\n }\n\n /**\n * Convert to a CID of version `1`.\n *\n * @returns {CID}\n */\n toV1 () {\n return new _CID(1, this.codec, this.multihash)\n }\n\n /**\n * Encode the CID into a string.\n *\n * @param {string} [base=this.multibaseName] - Base encoding to use.\n * @returns {string}\n */\n toBaseEncodedString (base = this.multibaseName) {\n if (this.string && base === this.multibaseName) {\n return this.string\n }\n let str = null\n if (this.version === 0) {\n if (base !== 'base58btc') {\n throw new Error('not supported with CIDv0, to support different bases, please migrate the instance do CIDv1, you can do that through cid.toV1()')\n }\n str = mh.toB58String(this.multihash)\n } else if (this.version === 1) {\n str = multibase.encode(base, this.buffer).toString()\n } else {\n throw new Error('unsupported version')\n }\n if (base === this.multibaseName) {\n // cache the string value\n Object.defineProperty(this, 'string', { value: str })\n }\n return str\n }\n\n /**\n * CID(QmdfTbBqBPQ7VNxZEYEj14VmRuZBkqFbiwReogJgS1zR1n)\n *\n * @returns {String}\n */\n [Symbol.for('nodejs.util.inspect.custom')] () {\n return 'CID(' + this.toString() + ')'\n }\n\n toString (base) {\n return this.toBaseEncodedString(base)\n }\n\n /**\n * Serialize to a plain object.\n *\n * @returns {SerializedCID}\n */\n toJSON () {\n return {\n codec: this.codec,\n version: this.version,\n hash: this.multihash\n }\n }\n\n /**\n * Compare equality with another CID.\n *\n * @param {CID} other\n * @returns {bool}\n */\n equals (other) {\n return this.codec === other.codec &&\n this.version === other.version &&\n this.multihash.equals(other.multihash)\n }\n\n /**\n * Test if the given input is a valid CID object.\n * Throws if it is not.\n *\n * @param {any} other\n * @returns {void}\n */\n static validateCID (other) {\n const errorMsg = CIDUtil.checkCIDComponents(other)\n if (errorMsg) {\n throw new Error(errorMsg)\n }\n }\n}\n\nconst _CID = withIs(CID, {\n className: 'CID',\n symbolName: '@ipld/js-cid/CID'\n})\n\n_CID.codecs = codecs\n\nmodule.exports = _CID\n","var Buffer = require('safe-buffer').Buffer\nvar Transform = require('stream').Transform\nvar StringDecoder = require('string_decoder').StringDecoder\nvar inherits = require('inherits')\n\nfunction CipherBase (hashMode) {\n Transform.call(this)\n this.hashMode = typeof hashMode === 'string'\n if (this.hashMode) {\n this[hashMode] = this._finalOrDigest\n } else {\n this.final = this._finalOrDigest\n }\n if (this._final) {\n this.__final = this._final\n this._final = null\n }\n this._decoder = null\n this._encoding = null\n}\ninherits(CipherBase, Transform)\n\nCipherBase.prototype.update = function (data, inputEnc, outputEnc) {\n if (typeof data === 'string') {\n data = Buffer.from(data, inputEnc)\n }\n\n var outData = this._update(data)\n if (this.hashMode) return this\n\n if (outputEnc) {\n outData = this._toString(outData, outputEnc)\n }\n\n return outData\n}\n\nCipherBase.prototype.setAutoPadding = function () {}\nCipherBase.prototype.getAuthTag = function () {\n throw new Error('trying to get auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAuthTag = function () {\n throw new Error('trying to set auth tag in unsupported state')\n}\n\nCipherBase.prototype.setAAD = function () {\n throw new Error('trying to set aad in unsupported state')\n}\n\nCipherBase.prototype._transform = function (data, _, next) {\n var err\n try {\n if (this.hashMode) {\n this._update(data)\n } else {\n this.push(this._update(data))\n }\n } catch (e) {\n err = e\n } finally {\n next(err)\n }\n}\nCipherBase.prototype._flush = function (done) {\n var err\n try {\n this.push(this.__final())\n } catch (e) {\n err = e\n }\n\n done(err)\n}\nCipherBase.prototype._finalOrDigest = function (outputEnc) {\n var outData = this.__final() || Buffer.alloc(0)\n if (outputEnc) {\n outData = this._toString(outData, outputEnc, true)\n }\n return outData\n}\n\nCipherBase.prototype._toString = function (value, enc, fin) {\n if (!this._decoder) {\n this._decoder = new StringDecoder(enc)\n this._encoding = enc\n }\n\n if (this._encoding !== enc) throw new Error('can\\'t switch encodings')\n\n var out = this._decoder.write(value)\n if (fin) {\n out += this._decoder.end()\n }\n\n return out\n}\n\nmodule.exports = CipherBase\n","'use strict';\n\nfunction withIs(Class, { className, symbolName }) {\n const symbol = Symbol.for(symbolName);\n\n const ClassIsWrapper = {\n // The code below assigns the class wrapper to an object to trick\n // JavaScript engines to show the name of the extended class when\n // logging an instances.\n // We are assigning an anonymous class (class wrapper) to the object\n // with key `className` to keep the correct name.\n // If this is not supported it falls back to logging `ClassIsWrapper`.\n [className]: class extends Class {\n constructor(...args) {\n super(...args);\n Object.defineProperty(this, symbol, { value: true });\n }\n\n get [Symbol.toStringTag]() {\n return className;\n }\n },\n }[className];\n\n ClassIsWrapper[`is${className}`] = (obj) => !!(obj && obj[symbol]);\n\n return ClassIsWrapper;\n}\n\nfunction withIsProto(Class, { className, symbolName, withoutNew }) {\n const symbol = Symbol.for(symbolName);\n\n /* eslint-disable object-shorthand */\n const ClassIsWrapper = {\n [className]: function (...args) {\n if (withoutNew && !(this instanceof ClassIsWrapper)) {\n return new ClassIsWrapper(...args);\n }\n\n const _this = Class.call(this, ...args) || this;\n\n if (_this && !_this[symbol]) {\n Object.defineProperty(_this, symbol, { value: true });\n }\n\n return _this;\n },\n }[className];\n /* eslint-enable object-shorthand */\n\n ClassIsWrapper.prototype = Object.create(Class.prototype);\n ClassIsWrapper.prototype.constructor = ClassIsWrapper;\n\n Object.defineProperty(ClassIsWrapper.prototype, Symbol.toStringTag, {\n get() {\n return className;\n },\n });\n\n ClassIsWrapper[`is${className}`] = (obj) => !!(obj && obj[symbol]);\n\n return ClassIsWrapper;\n}\n\nmodule.exports = withIs;\nmodule.exports.proto = withIsProto;\n","/*\r\n\tISC License\r\n\r\n\tCopyright (c) 2019, Pierre-Louis Despaigne\r\n\r\n\tPermission to use, copy, modify, and/or distribute this software for any\r\n\tpurpose with or without fee is hereby granted, provided that the above\r\n\tcopyright notice and this permission notice appear in all copies.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r\n\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\nconst CID = require('cids');\r\n\r\n/**\r\n * Take any ipfsHash and convert it to a CID v1 encoded in base32.\r\n * @param {string} ipfsHash a regular ipfs hash either a cid v0 or v1 (v1 will remain unchanged)\r\n * @return {string} the resulting ipfs hash as a cid v1\r\n */\r\nconst cidV0ToV1Base32 = (ipfsHash) => {\r\n\tlet cid = new CID(ipfsHash);\r\n\tif (cid.version === 0) {\r\n\t\tcid = cid.toV1();\r\n\t}\r\n\treturn cid.toString('base32');\r\n}\r\n\r\nexports.cidV0ToV1Base32 = cidV0ToV1Base32;\r\n","/*\r\n\tISC License\r\n\r\n\tCopyright (c) 2019, Pierre-Louis Despaigne\r\n\r\n\tPermission to use, copy, modify, and/or distribute this software for any\r\n\tpurpose with or without fee is hereby granted, provided that the above\r\n\tcopyright notice and this permission notice appear in all copies.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r\n\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\nconst multiC = require('multicodec');\r\n\r\nconst { hexStringToBuffer, profiles } = require('./profiles');\r\nconst { cidV0ToV1Base32 } = require('./helpers');\r\n\r\nmodule.exports = {\r\n\r\n\t//export some helpers functions\r\n\thelpers: {\r\n\t\tcidV0ToV1Base32,\r\n\t},\r\n\r\n\t/**\r\n\t* Decode a Content Hash.\r\n\t* @param {string} hash an hex string containing a content hash\r\n\t* @return {string} the decoded content\r\n\t*/\r\n\tdecode: function (contentHash) {\r\n\t\tconst buffer = hexStringToBuffer(contentHash);\r\n\t\tconst codec = multiC.getCodec(buffer);\r\n\t\tconst value = multiC.rmPrefix(buffer);\r\n\t\tlet profile = profiles[codec];\r\n\t\tif (!profile) profile = profiles['default'];\r\n\t\treturn profile.decode(value);\r\n\t},\r\n\r\n\t/**\r\n\t* Encode an IPFS address into a content hash\r\n\t* @param {string} ipfsHash string containing an IPFS address\r\n\t* @return {string} the resulting content hash\r\n\t*/\r\n\tfromIpfs: function (ipfsHash) {\r\n\t\treturn this.encode('ipfs-ns', ipfsHash);\r\n\t},\r\n\r\n\t/**\r\n\t* Encode a Swarm address into a content hash\r\n\t* @param {string} swarmHash string containing a Swarm address\r\n\t* @return {string} the resulting content hash\r\n\t*/\r\n\tfromSwarm: function (swarmHash) {\r\n\t\treturn this.encode('swarm-ns', swarmHash);\r\n\t},\r\n\r\n\t/**\r\n\t* General purpose encoding function\r\n * @param {string} codec \r\n * @param {string} value \r\n */\r\n\tencode: function (codec, value) {\r\n\t\tlet profile = profiles[codec];\r\n\t\tif (!profile) profile = profiles['default'];\r\n\t\tconst encodedValue = profile.encode(value);\r\n\t\treturn multiC.addPrefix(codec, encodedValue).toString('hex');\r\n\t},\r\n\r\n\t/**\r\n\t* Extract the codec of a content hash\r\n\t* @param {string} hash hex string containing a content hash\r\n\t* @return {string} the extracted codec\r\n\t*/\r\n\tgetCodec: function (hash) {\r\n\t\tlet buffer = hexStringToBuffer(hash);\r\n\t\treturn multiC.getCodec(buffer);\r\n\t},\r\n}\r\n","/*\r\n\tISC License\r\n\r\n\tCopyright (c) 2019, Pierre-Louis Despaigne\r\n\r\n\tPermission to use, copy, modify, and/or distribute this software for any\r\n\tpurpose with or without fee is hereby granted, provided that the above\r\n\tcopyright notice and this permission notice appear in all copies.\r\n\r\n\tTHE SOFTWARE IS PROVIDED \"AS IS\" AND THE AUTHOR DISCLAIMS ALL WARRANTIES\r\n\tWITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF\r\n\tMERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR\r\n\tANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES\r\n\tWHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN\r\n\tACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF\r\n\tOR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.\r\n*/\r\n\r\nconst CID = require('cids');\r\nconst multiH = require('multihashes');\r\n\r\n/**\r\n * Convert an hexadecimal string to a Buffer, the string can start with or without '0x'\r\n * @param {string} hex an hexadecimal value\r\n * @return {Buffer} the resulting Buffer\r\n */\r\nconst hexStringToBuffer = (hex) => {\r\n\tlet prefix = hex.slice(0, 2);\r\n\tlet value = hex.slice(2);\r\n\tlet res = '';\r\n\tif (prefix === '0x') res = value;\r\n\telse res = hex;\r\n\treturn multiH.fromHexString(res);\r\n}\r\n\r\n/**\r\n* list of known encoding,\r\n* encoding should be a function that takes a `string` input,\r\n* and return a `Buffer` result\r\n*/\r\nconst encodes = {\r\n /**\r\n * @param {string} value\r\n * @return {Buffer}\r\n */\r\n swarm: (value) => {\r\n const multihash = multiH.encode(hexStringToBuffer(value), 'keccak-256');\r\n\t\treturn new CID(1, 'swarm-manifest', multihash).buffer;\r\n },\r\n /**\r\n * @param {string} value\r\n * @return {Buffer}\r\n */\r\n ipfs: (value) => {\r\n const multihash = multiH.fromB58String(value);\r\n return new CID(1, 'dag-pb', multihash).buffer;\r\n },\r\n /**\r\n * @param {string} value\r\n * @return {Buffer}\r\n */\r\n utf8: (value) => {\r\n return Buffer.from(value, 'utf8');\r\n },\r\n};\r\n\r\n/** \r\n* list of known decoding,\r\n* decoding should be a function that takes a `Buffer` input,\r\n* and return a `string` result\r\n*/\r\nconst decodes = {\r\n /**\r\n * @param {Buffer} value \r\n */\r\n hexMultiHash: (value) => {\r\n const cid = new CID(value);\r\n return multiH.decode(cid.multihash).digest.toString('hex');\r\n },\r\n /**\r\n * @param {Buffer} value \r\n */\r\n b58MultiHash: (value) => {\r\n const cid = new CID(value);\r\n return multiH.toB58String(cid.multihash);\r\n },\r\n /**\r\n * @param {Buffer} value \r\n */\r\n utf8: (value) => {\r\n return value.toString('utf8');\r\n },\r\n};\r\n\r\n/**\r\n* list of known encoding/decoding for a given codec,\r\n* `encode` should be chosen among the `encodes` functions\r\n* `decode` should be chosen among the `decodes` functions\r\n*/\r\nconst profiles = {\r\n 'swarm-ns': {\r\n encode: encodes.swarm,\r\n decode: decodes.hexMultiHash,\r\n },\r\n 'ipfs-ns': {\r\n encode: encodes.ipfs,\r\n decode: decodes.b58MultiHash,\r\n },\r\n 'ipns-ns': {\r\n encode: encodes.ipfs,\r\n decode: decodes.b58MultiHash,\r\n },\r\n 'default': {\r\n encode: encodes.utf8,\r\n decode: decodes.utf8,\r\n },\r\n};\r\n\r\nexports.hexStringToBuffer = hexStringToBuffer;\r\nexports.profiles = profiles;","/* jshint node: true */\n(function () {\n \"use strict\";\n\n function CookieAccessInfo(domain, path, secure, script) {\n if (this instanceof CookieAccessInfo) {\n this.domain = domain || undefined;\n this.path = path || \"/\";\n this.secure = !!secure;\n this.script = !!script;\n return this;\n }\n return new CookieAccessInfo(domain, path, secure, script);\n }\n CookieAccessInfo.All = Object.freeze(Object.create(null));\n exports.CookieAccessInfo = CookieAccessInfo;\n\n function Cookie(cookiestr, request_domain, request_path) {\n if (cookiestr instanceof Cookie) {\n return cookiestr;\n }\n if (this instanceof Cookie) {\n this.name = null;\n this.value = null;\n this.expiration_date = Infinity;\n this.path = String(request_path || \"/\");\n this.explicit_path = false;\n this.domain = request_domain || null;\n this.explicit_domain = false;\n this.secure = false; //how to define default?\n this.noscript = false; //httponly\n if (cookiestr) {\n this.parse(cookiestr, request_domain, request_path);\n }\n return this;\n }\n return new Cookie(cookiestr, request_domain, request_path);\n }\n exports.Cookie = Cookie;\n\n Cookie.prototype.toString = function toString() {\n var str = [this.name + \"=\" + this.value];\n if (this.expiration_date !== Infinity) {\n str.push(\"expires=\" + (new Date(this.expiration_date)).toGMTString());\n }\n if (this.domain) {\n str.push(\"domain=\" + this.domain);\n }\n if (this.path) {\n str.push(\"path=\" + this.path);\n }\n if (this.secure) {\n str.push(\"secure\");\n }\n if (this.noscript) {\n str.push(\"httponly\");\n }\n return str.join(\"; \");\n };\n\n Cookie.prototype.toValueString = function toValueString() {\n return this.name + \"=\" + this.value;\n };\n\n var cookie_str_splitter = /[:](?=\\s*[a-zA-Z0-9_\\-]+\\s*[=])/g;\n Cookie.prototype.parse = function parse(str, request_domain, request_path) {\n if (this instanceof Cookie) {\n var parts = str.split(\";\").filter(function (value) {\n return !!value;\n });\n var i;\n\n var pair = parts[0].match(/([^=]+)=([\\s\\S]*)/);\n if (!pair) {\n console.warn(\"Invalid cookie header encountered. Header: '\"+str+\"'\");\n return;\n }\n\n var key = pair[1];\n var value = pair[2];\n if ( typeof key !== 'string' || key.length === 0 || typeof value !== 'string' ) {\n console.warn(\"Unable to extract values from cookie header. Cookie: '\"+str+\"'\");\n return;\n }\n\n this.name = key;\n this.value = value;\n\n for (i = 1; i < parts.length; i += 1) {\n pair = parts[i].match(/([^=]+)(?:=([\\s\\S]*))?/);\n key = pair[1].trim().toLowerCase();\n value = pair[2];\n switch (key) {\n case \"httponly\":\n this.noscript = true;\n break;\n case \"expires\":\n this.expiration_date = value ?\n Number(Date.parse(value)) :\n Infinity;\n break;\n case \"path\":\n this.path = value ?\n value.trim() :\n \"\";\n this.explicit_path = true;\n break;\n case \"domain\":\n this.domain = value ?\n value.trim() :\n \"\";\n this.explicit_domain = !!this.domain;\n break;\n case \"secure\":\n this.secure = true;\n break;\n }\n }\n\n if (!this.explicit_path) {\n this.path = request_path || \"/\";\n }\n if (!this.explicit_domain) {\n this.domain = request_domain;\n }\n\n return this;\n }\n return new Cookie().parse(str, request_domain, request_path);\n };\n\n Cookie.prototype.matches = function matches(access_info) {\n if (access_info === CookieAccessInfo.All) {\n return true;\n }\n if (this.noscript && access_info.script ||\n this.secure && !access_info.secure ||\n !this.collidesWith(access_info)) {\n return false;\n }\n return true;\n };\n\n Cookie.prototype.collidesWith = function collidesWith(access_info) {\n if ((this.path && !access_info.path) || (this.domain && !access_info.domain)) {\n return false;\n }\n if (this.path && access_info.path.indexOf(this.path) !== 0) {\n return false;\n }\n if (this.explicit_path && access_info.path.indexOf( this.path ) !== 0) {\n return false;\n }\n var access_domain = access_info.domain && access_info.domain.replace(/^[\\.]/,'');\n var cookie_domain = this.domain && this.domain.replace(/^[\\.]/,'');\n if (cookie_domain === access_domain) {\n return true;\n }\n if (cookie_domain) {\n if (!this.explicit_domain) {\n return false; // we already checked if the domains were exactly the same\n }\n var wildcard = access_domain.indexOf(cookie_domain);\n if (wildcard === -1 || wildcard !== access_domain.length - cookie_domain.length) {\n return false;\n }\n return true;\n }\n return true;\n };\n\n function CookieJar() {\n var cookies, cookies_list, collidable_cookie;\n if (this instanceof CookieJar) {\n cookies = Object.create(null); //name: [Cookie]\n\n this.setCookie = function setCookie(cookie, request_domain, request_path) {\n var remove, i;\n cookie = new Cookie(cookie, request_domain, request_path);\n //Delete the cookie if the set is past the current time\n remove = cookie.expiration_date <= Date.now();\n if (cookies[cookie.name] !== undefined) {\n cookies_list = cookies[cookie.name];\n for (i = 0; i < cookies_list.length; i += 1) {\n collidable_cookie = cookies_list[i];\n if (collidable_cookie.collidesWith(cookie)) {\n if (remove) {\n cookies_list.splice(i, 1);\n if (cookies_list.length === 0) {\n delete cookies[cookie.name];\n }\n return false;\n }\n cookies_list[i] = cookie;\n return cookie;\n }\n }\n if (remove) {\n return false;\n }\n cookies_list.push(cookie);\n return cookie;\n }\n if (remove) {\n return false;\n }\n cookies[cookie.name] = [cookie];\n return cookies[cookie.name];\n };\n //returns a cookie\n this.getCookie = function getCookie(cookie_name, access_info) {\n var cookie, i;\n cookies_list = cookies[cookie_name];\n if (!cookies_list) {\n return;\n }\n for (i = 0; i < cookies_list.length; i += 1) {\n cookie = cookies_list[i];\n if (cookie.expiration_date <= Date.now()) {\n if (cookies_list.length === 0) {\n delete cookies[cookie.name];\n }\n continue;\n }\n\n if (cookie.matches(access_info)) {\n return cookie;\n }\n }\n };\n //returns a list of cookies\n this.getCookies = function getCookies(access_info) {\n var matches = [], cookie_name, cookie;\n for (cookie_name in cookies) {\n cookie = this.getCookie(cookie_name, access_info);\n if (cookie) {\n matches.push(cookie);\n }\n }\n matches.toString = function toString() {\n return matches.join(\":\");\n };\n matches.toValueString = function toValueString() {\n return matches.map(function (c) {\n return c.toValueString();\n }).join('; ');\n };\n return matches;\n };\n\n return this;\n }\n return new CookieJar();\n }\n exports.CookieJar = CookieJar;\n\n //returns list of cookies that were set correctly. Cookies that are expired and removed are not returned.\n CookieJar.prototype.setCookies = function setCookies(cookies, request_domain, request_path) {\n cookies = Array.isArray(cookies) ?\n cookies :\n cookies.split(cookie_str_splitter);\n var successful = [],\n i,\n cookie;\n cookies = cookies.map(function(item){\n return new Cookie(item, request_domain, request_path);\n });\n for (i = 0; i < cookies.length; i += 1) {\n cookie = cookies[i];\n if (this.setCookie(cookie, request_domain, request_path)) {\n successful.push(cookie);\n }\n }\n return successful;\n };\n}());\n","\"use strict\";\n\nvar deselectCurrent = require(\"toggle-selection\");\n\nvar clipboardToIE11Formatting = {\n \"text/plain\": \"Text\",\n \"text/html\": \"Url\",\n \"default\": \"Text\"\n}\n\nvar defaultMessage = \"Copy to clipboard: #{key}, Enter\";\n\nfunction format(message) {\n var copyKey = (/mac os x/i.test(navigator.userAgent) ? \"⌘\" : \"Ctrl\") + \"+C\";\n return message.replace(/#{\\s*key\\s*}/g, copyKey);\n}\n\nfunction copy(text, options) {\n var debug,\n message,\n reselectPrevious,\n range,\n selection,\n mark,\n success = false;\n if (!options) {\n options = {};\n }\n debug = options.debug || false;\n try {\n reselectPrevious = deselectCurrent();\n\n range = document.createRange();\n selection = document.getSelection();\n\n mark = document.createElement(\"span\");\n mark.textContent = text;\n // reset user styles for span element\n mark.style.all = \"unset\";\n // prevents scrolling to the end of the page\n mark.style.position = \"fixed\";\n mark.style.top = 0;\n mark.style.clip = \"rect(0, 0, 0, 0)\";\n // used to preserve spaces and line breaks\n mark.style.whiteSpace = \"pre\";\n // do not inherit user-select (it may be `none`)\n mark.style.webkitUserSelect = \"text\";\n mark.style.MozUserSelect = \"text\";\n mark.style.msUserSelect = \"text\";\n mark.style.userSelect = \"text\";\n mark.addEventListener(\"copy\", function(e) {\n e.stopPropagation();\n if (options.format) {\n e.preventDefault();\n if (typeof e.clipboardData === \"undefined\") { // IE 11\n debug && console.warn(\"unable to use e.clipboardData\");\n debug && console.warn(\"trying IE specific stuff\");\n window.clipboardData.clearData();\n var format = clipboardToIE11Formatting[options.format] || clipboardToIE11Formatting[\"default\"]\n window.clipboardData.setData(format, text);\n } else { // all other browsers\n e.clipboardData.clearData();\n e.clipboardData.setData(options.format, text);\n }\n }\n if (options.onCopy) {\n e.preventDefault();\n options.onCopy(e.clipboardData);\n }\n });\n\n document.body.appendChild(mark);\n\n range.selectNodeContents(mark);\n selection.addRange(range);\n\n var successful = document.execCommand(\"copy\");\n if (!successful) {\n throw new Error(\"copy command was unsuccessful\");\n }\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using execCommand: \", err);\n debug && console.warn(\"trying IE specific stuff\");\n try {\n window.clipboardData.setData(options.format || \"text\", text);\n options.onCopy && options.onCopy(window.clipboardData);\n success = true;\n } catch (err) {\n debug && console.error(\"unable to copy using clipboardData: \", err);\n debug && console.error(\"falling back to prompt\");\n message = format(\"message\" in options ? options.message : defaultMessage);\n window.prompt(message, text);\n }\n } finally {\n if (selection) {\n if (typeof selection.removeRange == \"function\") {\n selection.removeRange(range);\n } else {\n selection.removeAllRanges();\n }\n }\n\n if (mark) {\n document.body.removeChild(mark);\n }\n reselectPrevious();\n }\n\n return success;\n}\n\nmodule.exports = copy;\n","/*! crc32.js (C) 2014-present SheetJS -- http://sheetjs.com */\n/* vim: set ts=2: */\n/*exported CRC32 */\nvar CRC32;\n(function (factory) {\n\t/*jshint ignore:start */\n\t/*eslint-disable */\n\tif(typeof DO_NOT_EXPORT_CRC === 'undefined') {\n\t\tif('object' === typeof exports) {\n\t\t\tfactory(exports);\n\t\t} else if ('function' === typeof define && define.amd) {\n\t\t\tdefine(function () {\n\t\t\t\tvar module = {};\n\t\t\t\tfactory(module);\n\t\t\t\treturn module;\n\t\t\t});\n\t\t} else {\n\t\t\tfactory(CRC32 = {});\n\t\t}\n\t} else {\n\t\tfactory(CRC32 = {});\n\t}\n\t/*eslint-enable */\n\t/*jshint ignore:end */\n}(function(CRC32) {\nCRC32.version = '1.2.2';\n/*global Int32Array */\nfunction signed_crc_table() {\n\tvar c = 0, table = new Array(256);\n\n\tfor(var n =0; n != 256; ++n){\n\t\tc = n;\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\tc = ((c&1) ? (-306674912 ^ (c >>> 1)) : (c >>> 1));\n\t\ttable[n] = c;\n\t}\n\n\treturn typeof Int32Array !== 'undefined' ? new Int32Array(table) : table;\n}\n\nvar T0 = signed_crc_table();\nfunction slice_by_16_tables(T) {\n\tvar c = 0, v = 0, n = 0, table = typeof Int32Array !== 'undefined' ? new Int32Array(4096) : new Array(4096) ;\n\n\tfor(n = 0; n != 256; ++n) table[n] = T[n];\n\tfor(n = 0; n != 256; ++n) {\n\t\tv = T[n];\n\t\tfor(c = 256 + n; c < 4096; c += 256) v = table[c] = (v >>> 8) ^ T[v & 0xFF];\n\t}\n\tvar out = [];\n\tfor(n = 1; n != 16; ++n) out[n - 1] = typeof Int32Array !== 'undefined' ? table.subarray(n * 256, n * 256 + 256) : table.slice(n * 256, n * 256 + 256);\n\treturn out;\n}\nvar TT = slice_by_16_tables(T0);\nvar T1 = TT[0], T2 = TT[1], T3 = TT[2], T4 = TT[3], T5 = TT[4];\nvar T6 = TT[5], T7 = TT[6], T8 = TT[7], T9 = TT[8], Ta = TT[9];\nvar Tb = TT[10], Tc = TT[11], Td = TT[12], Te = TT[13], Tf = TT[14];\nfunction crc32_bstr(bstr, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = bstr.length; i < L;) C = (C>>>8) ^ T0[(C^bstr.charCodeAt(i++))&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_buf(B, seed) {\n\tvar C = seed ^ -1, L = B.length - 15, i = 0;\n\tfor(; i < L;) C =\n\t\tTf[B[i++] ^ (C & 255)] ^\n\t\tTe[B[i++] ^ ((C >> 8) & 255)] ^\n\t\tTd[B[i++] ^ ((C >> 16) & 255)] ^\n\t\tTc[B[i++] ^ (C >>> 24)] ^\n\t\tTb[B[i++]] ^ Ta[B[i++]] ^ T9[B[i++]] ^ T8[B[i++]] ^\n\t\tT7[B[i++]] ^ T6[B[i++]] ^ T5[B[i++]] ^ T4[B[i++]] ^\n\t\tT3[B[i++]] ^ T2[B[i++]] ^ T1[B[i++]] ^ T0[B[i++]];\n\tL += 15;\n\twhile(i < L) C = (C>>>8) ^ T0[(C^B[i++])&0xFF];\n\treturn ~C;\n}\n\nfunction crc32_str(str, seed) {\n\tvar C = seed ^ -1;\n\tfor(var i = 0, L = str.length, c = 0, d = 0; i < L;) {\n\t\tc = str.charCodeAt(i++);\n\t\tif(c < 0x80) {\n\t\t\tC = (C>>>8) ^ T0[(C^c)&0xFF];\n\t\t} else if(c < 0x800) {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (192|((c>>6)&31)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t} else if(c >= 0xD800 && c < 0xE000) {\n\t\t\tc = (c&1023)+64; d = str.charCodeAt(i++)&1023;\n\t\t\tC = (C>>>8) ^ T0[(C ^ (240|((c>>8)&7)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>2)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((d>>6)&15)|((c&3)<<4)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(d&63)))&0xFF];\n\t\t} else {\n\t\t\tC = (C>>>8) ^ T0[(C ^ (224|((c>>12)&15)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|((c>>6)&63)))&0xFF];\n\t\t\tC = (C>>>8) ^ T0[(C ^ (128|(c&63)))&0xFF];\n\t\t}\n\t}\n\treturn ~C;\n}\nCRC32.table = T0;\n// $FlowIgnore\nCRC32.bstr = crc32_bstr;\n// $FlowIgnore\nCRC32.buf = crc32_buf;\n// $FlowIgnore\nCRC32.str = crc32_str;\n}));\n","var elliptic = require('elliptic')\nvar BN = require('bn.js')\n\nmodule.exports = function createECDH (curve) {\n return new ECDH(curve)\n}\n\nvar aliases = {\n secp256k1: {\n name: 'secp256k1',\n byteLength: 32\n },\n secp224r1: {\n name: 'p224',\n byteLength: 28\n },\n prime256v1: {\n name: 'p256',\n byteLength: 32\n },\n prime192v1: {\n name: 'p192',\n byteLength: 24\n },\n ed25519: {\n name: 'ed25519',\n byteLength: 32\n },\n secp384r1: {\n name: 'p384',\n byteLength: 48\n },\n secp521r1: {\n name: 'p521',\n byteLength: 66\n }\n}\n\naliases.p224 = aliases.secp224r1\naliases.p256 = aliases.secp256r1 = aliases.prime256v1\naliases.p192 = aliases.secp192r1 = aliases.prime192v1\naliases.p384 = aliases.secp384r1\naliases.p521 = aliases.secp521r1\n\nfunction ECDH (curve) {\n this.curveType = aliases[curve]\n if (!this.curveType) {\n this.curveType = {\n name: curve\n }\n }\n this.curve = new elliptic.ec(this.curveType.name) // eslint-disable-line new-cap\n this.keys = void 0\n}\n\nECDH.prototype.generateKeys = function (enc, format) {\n this.keys = this.curve.genKeyPair()\n return this.getPublicKey(enc, format)\n}\n\nECDH.prototype.computeSecret = function (other, inenc, enc) {\n inenc = inenc || 'utf8'\n if (!Buffer.isBuffer(other)) {\n other = new Buffer(other, inenc)\n }\n var otherPub = this.curve.keyFromPublic(other).getPublic()\n var out = otherPub.mul(this.keys.getPrivate()).getX()\n return formatReturnValue(out, enc, this.curveType.byteLength)\n}\n\nECDH.prototype.getPublicKey = function (enc, format) {\n var key = this.keys.getPublic(format === 'compressed', true)\n if (format === 'hybrid') {\n if (key[key.length - 1] % 2) {\n key[0] = 7\n } else {\n key[0] = 6\n }\n }\n return formatReturnValue(key, enc)\n}\n\nECDH.prototype.getPrivateKey = function (enc) {\n return formatReturnValue(this.keys.getPrivate(), enc)\n}\n\nECDH.prototype.setPublicKey = function (pub, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc)\n }\n this.keys._importPublic(pub)\n return this\n}\n\nECDH.prototype.setPrivateKey = function (priv, enc) {\n enc = enc || 'utf8'\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc)\n }\n\n var _priv = new BN(priv)\n _priv = _priv.toString(16)\n this.keys = this.curve.genKeyPair()\n this.keys._importPrivate(_priv)\n return this\n}\n\nfunction formatReturnValue (bn, enc, len) {\n if (!Array.isArray(bn)) {\n bn = bn.toArray()\n }\n var buf = new Buffer(bn)\n if (len && buf.length < len) {\n var zeros = new Buffer(len - buf.length)\n zeros.fill(0)\n buf = Buffer.concat([zeros, buf])\n }\n if (!enc) {\n return buf\n } else {\n return buf.toString(enc)\n }\n}\n","'use strict'\nvar inherits = require('inherits')\nvar MD5 = require('md5.js')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Base = require('cipher-base')\n\nfunction Hash (hash) {\n Base.call(this, 'digest')\n\n this._hash = hash\n}\n\ninherits(Hash, Base)\n\nHash.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHash.prototype._final = function () {\n return this._hash.digest()\n}\n\nmodule.exports = function createHash (alg) {\n alg = alg.toLowerCase()\n if (alg === 'md5') return new MD5()\n if (alg === 'rmd160' || alg === 'ripemd160') return new RIPEMD160()\n\n return new Hash(sha(alg))\n}\n","var MD5 = require('md5.js')\n\nmodule.exports = function (buffer) {\n return new MD5().update(buffer).digest()\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Legacy = require('./legacy')\nvar Base = require('cipher-base')\nvar Buffer = require('safe-buffer').Buffer\nvar md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\n\nvar sha = require('sha.js')\n\nvar ZEROS = Buffer.alloc(128)\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n this._alg = alg\n this._key = key\n if (key.length > blocksize) {\n var hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n key = hash.update(key).digest()\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n this._hash = alg === 'rmd160' ? new RIPEMD160() : sha(alg)\n this._hash.update(ipad)\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.update(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._hash.digest()\n var hash = this._alg === 'rmd160' ? new RIPEMD160() : sha(this._alg)\n return hash.update(this._opad).update(h).digest()\n}\n\nmodule.exports = function createHmac (alg, key) {\n alg = alg.toLowerCase()\n if (alg === 'rmd160' || alg === 'ripemd160') {\n return new Hmac('rmd160', key)\n }\n if (alg === 'md5') {\n return new Legacy(md5, key)\n }\n return new Hmac(alg, key)\n}\n","'use strict'\nvar inherits = require('inherits')\nvar Buffer = require('safe-buffer').Buffer\n\nvar Base = require('cipher-base')\n\nvar ZEROS = Buffer.alloc(128)\nvar blocksize = 64\n\nfunction Hmac (alg, key) {\n Base.call(this, 'digest')\n if (typeof key === 'string') {\n key = Buffer.from(key)\n }\n\n this._alg = alg\n this._key = key\n\n if (key.length > blocksize) {\n key = alg(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = this._ipad = Buffer.allocUnsafe(blocksize)\n var opad = this._opad = Buffer.allocUnsafe(blocksize)\n\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n this._hash = [ipad]\n}\n\ninherits(Hmac, Base)\n\nHmac.prototype._update = function (data) {\n this._hash.push(data)\n}\n\nHmac.prototype._final = function () {\n var h = this._alg(Buffer.concat(this._hash))\n return this._alg(Buffer.concat([this._opad, h]))\n}\nmodule.exports = Hmac\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","'use strict'\n\nexports.randomBytes = exports.rng = exports.pseudoRandomBytes = exports.prng = require('randombytes')\nexports.createHash = exports.Hash = require('create-hash')\nexports.createHmac = exports.Hmac = require('create-hmac')\n\nvar algos = require('browserify-sign/algos')\nvar algoKeys = Object.keys(algos)\nvar hashes = ['sha1', 'sha224', 'sha256', 'sha384', 'sha512', 'md5', 'rmd160'].concat(algoKeys)\nexports.getHashes = function () {\n return hashes\n}\n\nvar p = require('pbkdf2')\nexports.pbkdf2 = p.pbkdf2\nexports.pbkdf2Sync = p.pbkdf2Sync\n\nvar aes = require('browserify-cipher')\n\nexports.Cipher = aes.Cipher\nexports.createCipher = aes.createCipher\nexports.Cipheriv = aes.Cipheriv\nexports.createCipheriv = aes.createCipheriv\nexports.Decipher = aes.Decipher\nexports.createDecipher = aes.createDecipher\nexports.Decipheriv = aes.Decipheriv\nexports.createDecipheriv = aes.createDecipheriv\nexports.getCiphers = aes.getCiphers\nexports.listCiphers = aes.listCiphers\n\nvar dh = require('diffie-hellman')\n\nexports.DiffieHellmanGroup = dh.DiffieHellmanGroup\nexports.createDiffieHellmanGroup = dh.createDiffieHellmanGroup\nexports.getDiffieHellman = dh.getDiffieHellman\nexports.createDiffieHellman = dh.createDiffieHellman\nexports.DiffieHellman = dh.DiffieHellman\n\nvar sign = require('browserify-sign')\n\nexports.createSign = sign.createSign\nexports.Sign = sign.Sign\nexports.createVerify = sign.createVerify\nexports.Verify = sign.Verify\n\nexports.createECDH = require('create-ecdh')\n\nvar publicEncrypt = require('public-encrypt')\n\nexports.publicEncrypt = publicEncrypt.publicEncrypt\nexports.privateEncrypt = publicEncrypt.privateEncrypt\nexports.publicDecrypt = publicEncrypt.publicDecrypt\nexports.privateDecrypt = publicEncrypt.privateDecrypt\n\n// the least I can do is make error messages for the rest of the node.js/crypto api.\n// ;[\n// 'createCredentials'\n// ].forEach(function (name) {\n// exports[name] = function () {\n// throw new Error([\n// 'sorry, ' + name + ' is not implemented yet',\n// 'we accept pull requests',\n// 'https://github.com/crypto-browserify/crypto-browserify'\n// ].join('\\n'))\n// }\n// })\n\nvar rf = require('randomfill')\n\nexports.randomFill = rf.randomFill\nexports.randomFillSync = rf.randomFillSync\n\nexports.createCredentials = function () {\n throw new Error([\n 'sorry, createCredentials is not implemented yet',\n 'we accept pull requests',\n 'https://github.com/crypto-browserify/crypto-browserify'\n ].join('\\n'))\n}\n\nexports.constants = {\n 'DH_CHECK_P_NOT_SAFE_PRIME': 2,\n 'DH_CHECK_P_NOT_PRIME': 1,\n 'DH_UNABLE_TO_CHECK_GENERATOR': 4,\n 'DH_NOT_SUITABLE_GENERATOR': 8,\n 'NPN_ENABLED': 1,\n 'ALPN_ENABLED': 1,\n 'RSA_PKCS1_PADDING': 1,\n 'RSA_SSLV23_PADDING': 2,\n 'RSA_NO_PADDING': 3,\n 'RSA_PKCS1_OAEP_PADDING': 4,\n 'RSA_X931_PADDING': 5,\n 'RSA_PKCS1_PSS_PADDING': 6,\n 'POINT_CONVERSION_COMPRESSED': 2,\n 'POINT_CONVERSION_UNCOMPRESSED': 4,\n 'POINT_CONVERSION_HYBRID': 6\n}\n","'use strict';\nvar token = '%[a-f0-9]{2}';\nvar singleMatcher = new RegExp(token, 'gi');\nvar multiMatcher = new RegExp('(' + token + ')+', 'gi');\n\nfunction decodeComponents(components, split) {\n\ttry {\n\t\t// Try to decode the entire string first\n\t\treturn decodeURIComponent(components.join(''));\n\t} catch (err) {\n\t\t// Do nothing\n\t}\n\n\tif (components.length === 1) {\n\t\treturn components;\n\t}\n\n\tsplit = split || 1;\n\n\t// Split the array in 2 parts\n\tvar left = components.slice(0, split);\n\tvar right = components.slice(split);\n\n\treturn Array.prototype.concat.call([], decodeComponents(left), decodeComponents(right));\n}\n\nfunction decode(input) {\n\ttry {\n\t\treturn decodeURIComponent(input);\n\t} catch (err) {\n\t\tvar tokens = input.match(singleMatcher);\n\n\t\tfor (var i = 1; i < tokens.length; i++) {\n\t\t\tinput = decodeComponents(tokens, i).join('');\n\n\t\t\ttokens = input.match(singleMatcher);\n\t\t}\n\n\t\treturn input;\n\t}\n}\n\nfunction customDecodeURIComponent(input) {\n\t// Keep track of all the replacements and prefill the map with the `BOM`\n\tvar replaceMap = {\n\t\t'%FE%FF': '\\uFFFD\\uFFFD',\n\t\t'%FF%FE': '\\uFFFD\\uFFFD'\n\t};\n\n\tvar match = multiMatcher.exec(input);\n\twhile (match) {\n\t\ttry {\n\t\t\t// Decode as big chunks as possible\n\t\t\treplaceMap[match[0]] = decodeURIComponent(match[0]);\n\t\t} catch (err) {\n\t\t\tvar result = decode(match[0]);\n\n\t\t\tif (result !== match[0]) {\n\t\t\t\treplaceMap[match[0]] = result;\n\t\t\t}\n\t\t}\n\n\t\tmatch = multiMatcher.exec(input);\n\t}\n\n\t// Add `%C2` at the end of the map to make sure it does not replace the combinator before everything else\n\treplaceMap['%C2'] = '\\uFFFD';\n\n\tvar entries = Object.keys(replaceMap);\n\n\tfor (var i = 0; i < entries.length; i++) {\n\t\t// Replace all decoded components\n\t\tvar key = entries[i];\n\t\tinput = input.replace(new RegExp(key, 'g'), replaceMap[key]);\n\t}\n\n\treturn input;\n}\n\nmodule.exports = function (encodedURI) {\n\tif (typeof encodedURI !== 'string') {\n\t\tthrow new TypeError('Expected `encodedURI` to be of type `string`, got `' + typeof encodedURI + '`');\n\t}\n\n\ttry {\n\t\tencodedURI = encodedURI.replace(/\\+/g, ' ');\n\n\t\t// Try the built in decoder first\n\t\treturn decodeURIComponent(encodedURI);\n\t} catch (err) {\n\t\t// Fallback to a more advanced decoder\n\t\treturn customDecodeURIComponent(encodedURI);\n\t}\n};\n","'use strict';\n\nvar keys = require('object-keys');\nvar hasSymbols = typeof Symbol === 'function' && typeof Symbol('foo') === 'symbol';\n\nvar toStr = Object.prototype.toString;\nvar concat = Array.prototype.concat;\nvar origDefineProperty = Object.defineProperty;\n\nvar isFunction = function (fn) {\n\treturn typeof fn === 'function' && toStr.call(fn) === '[object Function]';\n};\n\nvar hasPropertyDescriptors = require('has-property-descriptors')();\n\nvar supportsDescriptors = origDefineProperty && hasPropertyDescriptors;\n\nvar defineProperty = function (object, name, value, predicate) {\n\tif (name in object && (!isFunction(predicate) || !predicate())) {\n\t\treturn;\n\t}\n\tif (supportsDescriptors) {\n\t\torigDefineProperty(object, name, {\n\t\t\tconfigurable: true,\n\t\t\tenumerable: false,\n\t\t\tvalue: value,\n\t\t\twritable: true\n\t\t});\n\t} else {\n\t\tobject[name] = value; // eslint-disable-line no-param-reassign\n\t}\n};\n\nvar defineProperties = function (object, map) {\n\tvar predicates = arguments.length > 2 ? arguments[2] : {};\n\tvar props = keys(map);\n\tif (hasSymbols) {\n\t\tprops = concat.call(props, Object.getOwnPropertySymbols(map));\n\t}\n\tfor (var i = 0; i < props.length; i += 1) {\n\t\tdefineProperty(object, props[i], map[props[i]], predicates[props[i]]);\n\t}\n};\n\ndefineProperties.supportsDescriptors = !!supportsDescriptors;\n\nmodule.exports = defineProperties;\n","'use strict';\n\nexports.utils = require('./des/utils');\nexports.Cipher = require('./des/cipher');\nexports.DES = require('./des/des');\nexports.CBC = require('./des/cbc');\nexports.EDE = require('./des/ede');\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar proto = {};\n\nfunction CBCState(iv) {\n assert.equal(iv.length, 8, 'Invalid IV length');\n\n this.iv = new Array(8);\n for (var i = 0; i < this.iv.length; i++)\n this.iv[i] = iv[i];\n}\n\nfunction instantiate(Base) {\n function CBC(options) {\n Base.call(this, options);\n this._cbcInit();\n }\n inherits(CBC, Base);\n\n var keys = Object.keys(proto);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n CBC.prototype[key] = proto[key];\n }\n\n CBC.create = function create(options) {\n return new CBC(options);\n };\n\n return CBC;\n}\n\nexports.instantiate = instantiate;\n\nproto._cbcInit = function _cbcInit() {\n var state = new CBCState(this.options.iv);\n this._cbcState = state;\n};\n\nproto._update = function _update(inp, inOff, out, outOff) {\n var state = this._cbcState;\n var superProto = this.constructor.super_.prototype;\n\n var iv = state.iv;\n if (this.type === 'encrypt') {\n for (var i = 0; i < this.blockSize; i++)\n iv[i] ^= inp[inOff + i];\n\n superProto._update.call(this, iv, 0, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = out[outOff + i];\n } else {\n superProto._update.call(this, inp, inOff, out, outOff);\n\n for (var i = 0; i < this.blockSize; i++)\n out[outOff + i] ^= iv[i];\n\n for (var i = 0; i < this.blockSize; i++)\n iv[i] = inp[inOff + i];\n }\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\n\nfunction Cipher(options) {\n this.options = options;\n\n this.type = this.options.type;\n this.blockSize = 8;\n this._init();\n\n this.buffer = new Array(this.blockSize);\n this.bufferOff = 0;\n}\nmodule.exports = Cipher;\n\nCipher.prototype._init = function _init() {\n // Might be overrided\n};\n\nCipher.prototype.update = function update(data) {\n if (data.length === 0)\n return [];\n\n if (this.type === 'decrypt')\n return this._updateDecrypt(data);\n else\n return this._updateEncrypt(data);\n};\n\nCipher.prototype._buffer = function _buffer(data, off) {\n // Append data to buffer\n var min = Math.min(this.buffer.length - this.bufferOff, data.length - off);\n for (var i = 0; i < min; i++)\n this.buffer[this.bufferOff + i] = data[off + i];\n this.bufferOff += min;\n\n // Shift next\n return min;\n};\n\nCipher.prototype._flushBuffer = function _flushBuffer(out, off) {\n this._update(this.buffer, 0, out, off);\n this.bufferOff = 0;\n return this.blockSize;\n};\n\nCipher.prototype._updateEncrypt = function _updateEncrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = ((this.bufferOff + data.length) / this.blockSize) | 0;\n var out = new Array(count * this.blockSize);\n\n if (this.bufferOff !== 0) {\n inputOff += this._buffer(data, inputOff);\n\n if (this.bufferOff === this.buffer.length)\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Write blocks\n var max = data.length - ((data.length - inputOff) % this.blockSize);\n for (; inputOff < max; inputOff += this.blockSize) {\n this._update(data, inputOff, out, outputOff);\n outputOff += this.blockSize;\n }\n\n // Queue rest\n for (; inputOff < data.length; inputOff++, this.bufferOff++)\n this.buffer[this.bufferOff] = data[inputOff];\n\n return out;\n};\n\nCipher.prototype._updateDecrypt = function _updateDecrypt(data) {\n var inputOff = 0;\n var outputOff = 0;\n\n var count = Math.ceil((this.bufferOff + data.length) / this.blockSize) - 1;\n var out = new Array(count * this.blockSize);\n\n // TODO(indutny): optimize it, this is far from optimal\n for (; count > 0; count--) {\n inputOff += this._buffer(data, inputOff);\n outputOff += this._flushBuffer(out, outputOff);\n }\n\n // Buffer rest of the input\n inputOff += this._buffer(data, inputOff);\n\n return out;\n};\n\nCipher.prototype.final = function final(buffer) {\n var first;\n if (buffer)\n first = this.update(buffer);\n\n var last;\n if (this.type === 'encrypt')\n last = this._finalEncrypt();\n else\n last = this._finalDecrypt();\n\n if (first)\n return first.concat(last);\n else\n return last;\n};\n\nCipher.prototype._pad = function _pad(buffer, off) {\n if (off === 0)\n return false;\n\n while (off < buffer.length)\n buffer[off++] = 0;\n\n return true;\n};\n\nCipher.prototype._finalEncrypt = function _finalEncrypt() {\n if (!this._pad(this.buffer, this.bufferOff))\n return [];\n\n var out = new Array(this.blockSize);\n this._update(this.buffer, 0, out, 0);\n return out;\n};\n\nCipher.prototype._unpad = function _unpad(buffer) {\n return buffer;\n};\n\nCipher.prototype._finalDecrypt = function _finalDecrypt() {\n assert.equal(this.bufferOff, this.blockSize, 'Not enough data to decrypt');\n var out = new Array(this.blockSize);\n this._flushBuffer(out, 0);\n\n return this._unpad(out);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar utils = require('./utils');\nvar Cipher = require('./cipher');\n\nfunction DESState() {\n this.tmp = new Array(2);\n this.keys = null;\n}\n\nfunction DES(options) {\n Cipher.call(this, options);\n\n var state = new DESState();\n this._desState = state;\n\n this.deriveKeys(state, options.key);\n}\ninherits(DES, Cipher);\nmodule.exports = DES;\n\nDES.create = function create(options) {\n return new DES(options);\n};\n\nvar shiftTable = [\n 1, 1, 2, 2, 2, 2, 2, 2,\n 1, 2, 2, 2, 2, 2, 2, 1\n];\n\nDES.prototype.deriveKeys = function deriveKeys(state, key) {\n state.keys = new Array(16 * 2);\n\n assert.equal(key.length, this.blockSize, 'Invalid key length');\n\n var kL = utils.readUInt32BE(key, 0);\n var kR = utils.readUInt32BE(key, 4);\n\n utils.pc1(kL, kR, state.tmp, 0);\n kL = state.tmp[0];\n kR = state.tmp[1];\n for (var i = 0; i < state.keys.length; i += 2) {\n var shift = shiftTable[i >>> 1];\n kL = utils.r28shl(kL, shift);\n kR = utils.r28shl(kR, shift);\n utils.pc2(kL, kR, state.keys, i);\n }\n};\n\nDES.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._desState;\n\n var l = utils.readUInt32BE(inp, inOff);\n var r = utils.readUInt32BE(inp, inOff + 4);\n\n // Initial Permutation\n utils.ip(l, r, state.tmp, 0);\n l = state.tmp[0];\n r = state.tmp[1];\n\n if (this.type === 'encrypt')\n this._encrypt(state, l, r, state.tmp, 0);\n else\n this._decrypt(state, l, r, state.tmp, 0);\n\n l = state.tmp[0];\n r = state.tmp[1];\n\n utils.writeUInt32BE(out, l, outOff);\n utils.writeUInt32BE(out, r, outOff + 4);\n};\n\nDES.prototype._pad = function _pad(buffer, off) {\n var value = buffer.length - off;\n for (var i = off; i < buffer.length; i++)\n buffer[i] = value;\n\n return true;\n};\n\nDES.prototype._unpad = function _unpad(buffer) {\n var pad = buffer[buffer.length - 1];\n for (var i = buffer.length - pad; i < buffer.length; i++)\n assert.equal(buffer[i], pad);\n\n return buffer.slice(0, buffer.length - pad);\n};\n\nDES.prototype._encrypt = function _encrypt(state, lStart, rStart, out, off) {\n var l = lStart;\n var r = rStart;\n\n // Apply f() x16 times\n for (var i = 0; i < state.keys.length; i += 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(r, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = r;\n r = (l ^ f) >>> 0;\n l = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(r, l, out, off);\n};\n\nDES.prototype._decrypt = function _decrypt(state, lStart, rStart, out, off) {\n var l = rStart;\n var r = lStart;\n\n // Apply f() x16 times\n for (var i = state.keys.length - 2; i >= 0; i -= 2) {\n var keyL = state.keys[i];\n var keyR = state.keys[i + 1];\n\n // f(r, k)\n utils.expand(l, state.tmp, 0);\n\n keyL ^= state.tmp[0];\n keyR ^= state.tmp[1];\n var s = utils.substitute(keyL, keyR);\n var f = utils.permute(s);\n\n var t = l;\n l = (r ^ f) >>> 0;\n r = t;\n }\n\n // Reverse Initial Permutation\n utils.rip(l, r, out, off);\n};\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nvar Cipher = require('./cipher');\nvar DES = require('./des');\n\nfunction EDEState(type, key) {\n assert.equal(key.length, 24, 'Invalid key length');\n\n var k1 = key.slice(0, 8);\n var k2 = key.slice(8, 16);\n var k3 = key.slice(16, 24);\n\n if (type === 'encrypt') {\n this.ciphers = [\n DES.create({ type: 'encrypt', key: k1 }),\n DES.create({ type: 'decrypt', key: k2 }),\n DES.create({ type: 'encrypt', key: k3 })\n ];\n } else {\n this.ciphers = [\n DES.create({ type: 'decrypt', key: k3 }),\n DES.create({ type: 'encrypt', key: k2 }),\n DES.create({ type: 'decrypt', key: k1 })\n ];\n }\n}\n\nfunction EDE(options) {\n Cipher.call(this, options);\n\n var state = new EDEState(this.type, this.options.key);\n this._edeState = state;\n}\ninherits(EDE, Cipher);\n\nmodule.exports = EDE;\n\nEDE.create = function create(options) {\n return new EDE(options);\n};\n\nEDE.prototype._update = function _update(inp, inOff, out, outOff) {\n var state = this._edeState;\n\n state.ciphers[0]._update(inp, inOff, out, outOff);\n state.ciphers[1]._update(out, outOff, out, outOff);\n state.ciphers[2]._update(out, outOff, out, outOff);\n};\n\nEDE.prototype._pad = DES.prototype._pad;\nEDE.prototype._unpad = DES.prototype._unpad;\n","'use strict';\n\nexports.readUInt32BE = function readUInt32BE(bytes, off) {\n var res = (bytes[0 + off] << 24) |\n (bytes[1 + off] << 16) |\n (bytes[2 + off] << 8) |\n bytes[3 + off];\n return res >>> 0;\n};\n\nexports.writeUInt32BE = function writeUInt32BE(bytes, value, off) {\n bytes[0 + off] = value >>> 24;\n bytes[1 + off] = (value >>> 16) & 0xff;\n bytes[2 + off] = (value >>> 8) & 0xff;\n bytes[3 + off] = value & 0xff;\n};\n\nexports.ip = function ip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n\n for (var i = 6; i >= 0; i -= 2) {\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n }\n for (var j = 1; j <= 25; j += 8) {\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.rip = function rip(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n for (var i = 0; i < 4; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outL <<= 1;\n outL |= (inR >>> (j + i)) & 1;\n outL <<= 1;\n outL |= (inL >>> (j + i)) & 1;\n }\n }\n for (var i = 4; i < 8; i++) {\n for (var j = 24; j >= 0; j -= 8) {\n outR <<= 1;\n outR |= (inR >>> (j + i)) & 1;\n outR <<= 1;\n outR |= (inL >>> (j + i)) & 1;\n }\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.pc1 = function pc1(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n // 7, 15, 23, 31, 39, 47, 55, 63\n // 6, 14, 22, 30, 39, 47, 55, 63\n // 5, 13, 21, 29, 39, 47, 55, 63\n // 4, 12, 20, 28\n for (var i = 7; i >= 5; i--) {\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outL <<= 1;\n outL |= (inR >> (j + i)) & 1;\n }\n\n // 1, 9, 17, 25, 33, 41, 49, 57\n // 2, 10, 18, 26, 34, 42, 50, 58\n // 3, 11, 19, 27, 35, 43, 51, 59\n // 36, 44, 52, 60\n for (var i = 1; i <= 3; i++) {\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inR >> (j + i)) & 1;\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n }\n for (var j = 0; j <= 24; j += 8) {\n outR <<= 1;\n outR |= (inL >> (j + i)) & 1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.r28shl = function r28shl(num, shift) {\n return ((num << shift) & 0xfffffff) | (num >>> (28 - shift));\n};\n\nvar pc2table = [\n // inL => outL\n 14, 11, 17, 4, 27, 23, 25, 0,\n 13, 22, 7, 18, 5, 9, 16, 24,\n 2, 20, 12, 21, 1, 8, 15, 26,\n\n // inR => outR\n 15, 4, 25, 19, 9, 1, 26, 16,\n 5, 11, 23, 8, 12, 7, 17, 0,\n 22, 3, 10, 14, 6, 20, 27, 24\n];\n\nexports.pc2 = function pc2(inL, inR, out, off) {\n var outL = 0;\n var outR = 0;\n\n var len = pc2table.length >>> 1;\n for (var i = 0; i < len; i++) {\n outL <<= 1;\n outL |= (inL >>> pc2table[i]) & 0x1;\n }\n for (var i = len; i < pc2table.length; i++) {\n outR <<= 1;\n outR |= (inR >>> pc2table[i]) & 0x1;\n }\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nexports.expand = function expand(r, out, off) {\n var outL = 0;\n var outR = 0;\n\n outL = ((r & 1) << 5) | (r >>> 27);\n for (var i = 23; i >= 15; i -= 4) {\n outL <<= 6;\n outL |= (r >>> i) & 0x3f;\n }\n for (var i = 11; i >= 3; i -= 4) {\n outR |= (r >>> i) & 0x3f;\n outR <<= 6;\n }\n outR |= ((r & 0x1f) << 1) | (r >>> 31);\n\n out[off + 0] = outL >>> 0;\n out[off + 1] = outR >>> 0;\n};\n\nvar sTable = [\n 14, 0, 4, 15, 13, 7, 1, 4, 2, 14, 15, 2, 11, 13, 8, 1,\n 3, 10, 10, 6, 6, 12, 12, 11, 5, 9, 9, 5, 0, 3, 7, 8,\n 4, 15, 1, 12, 14, 8, 8, 2, 13, 4, 6, 9, 2, 1, 11, 7,\n 15, 5, 12, 11, 9, 3, 7, 14, 3, 10, 10, 0, 5, 6, 0, 13,\n\n 15, 3, 1, 13, 8, 4, 14, 7, 6, 15, 11, 2, 3, 8, 4, 14,\n 9, 12, 7, 0, 2, 1, 13, 10, 12, 6, 0, 9, 5, 11, 10, 5,\n 0, 13, 14, 8, 7, 10, 11, 1, 10, 3, 4, 15, 13, 4, 1, 2,\n 5, 11, 8, 6, 12, 7, 6, 12, 9, 0, 3, 5, 2, 14, 15, 9,\n\n 10, 13, 0, 7, 9, 0, 14, 9, 6, 3, 3, 4, 15, 6, 5, 10,\n 1, 2, 13, 8, 12, 5, 7, 14, 11, 12, 4, 11, 2, 15, 8, 1,\n 13, 1, 6, 10, 4, 13, 9, 0, 8, 6, 15, 9, 3, 8, 0, 7,\n 11, 4, 1, 15, 2, 14, 12, 3, 5, 11, 10, 5, 14, 2, 7, 12,\n\n 7, 13, 13, 8, 14, 11, 3, 5, 0, 6, 6, 15, 9, 0, 10, 3,\n 1, 4, 2, 7, 8, 2, 5, 12, 11, 1, 12, 10, 4, 14, 15, 9,\n 10, 3, 6, 15, 9, 0, 0, 6, 12, 10, 11, 1, 7, 13, 13, 8,\n 15, 9, 1, 4, 3, 5, 14, 11, 5, 12, 2, 7, 8, 2, 4, 14,\n\n 2, 14, 12, 11, 4, 2, 1, 12, 7, 4, 10, 7, 11, 13, 6, 1,\n 8, 5, 5, 0, 3, 15, 15, 10, 13, 3, 0, 9, 14, 8, 9, 6,\n 4, 11, 2, 8, 1, 12, 11, 7, 10, 1, 13, 14, 7, 2, 8, 13,\n 15, 6, 9, 15, 12, 0, 5, 9, 6, 10, 3, 4, 0, 5, 14, 3,\n\n 12, 10, 1, 15, 10, 4, 15, 2, 9, 7, 2, 12, 6, 9, 8, 5,\n 0, 6, 13, 1, 3, 13, 4, 14, 14, 0, 7, 11, 5, 3, 11, 8,\n 9, 4, 14, 3, 15, 2, 5, 12, 2, 9, 8, 5, 12, 15, 3, 10,\n 7, 11, 0, 14, 4, 1, 10, 7, 1, 6, 13, 0, 11, 8, 6, 13,\n\n 4, 13, 11, 0, 2, 11, 14, 7, 15, 4, 0, 9, 8, 1, 13, 10,\n 3, 14, 12, 3, 9, 5, 7, 12, 5, 2, 10, 15, 6, 8, 1, 6,\n 1, 6, 4, 11, 11, 13, 13, 8, 12, 1, 3, 4, 7, 10, 14, 7,\n 10, 9, 15, 5, 6, 0, 8, 15, 0, 14, 5, 2, 9, 3, 2, 12,\n\n 13, 1, 2, 15, 8, 13, 4, 8, 6, 10, 15, 3, 11, 7, 1, 4,\n 10, 12, 9, 5, 3, 6, 14, 11, 5, 0, 0, 14, 12, 9, 7, 2,\n 7, 2, 11, 1, 4, 14, 1, 7, 9, 4, 12, 10, 14, 8, 2, 13,\n 0, 15, 6, 12, 10, 9, 13, 0, 15, 3, 3, 5, 5, 6, 8, 11\n];\n\nexports.substitute = function substitute(inL, inR) {\n var out = 0;\n for (var i = 0; i < 4; i++) {\n var b = (inL >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n for (var i = 0; i < 4; i++) {\n var b = (inR >>> (18 - i * 6)) & 0x3f;\n var sb = sTable[4 * 0x40 + i * 0x40 + b];\n\n out <<= 4;\n out |= sb;\n }\n return out >>> 0;\n};\n\nvar permuteTable = [\n 16, 25, 12, 11, 3, 20, 4, 15, 31, 17, 9, 6, 27, 14, 1, 22,\n 30, 24, 8, 18, 0, 5, 29, 23, 13, 19, 2, 26, 10, 21, 28, 7\n];\n\nexports.permute = function permute(num) {\n var out = 0;\n for (var i = 0; i < permuteTable.length; i++) {\n out <<= 1;\n out |= (num >>> permuteTable[i]) & 0x1;\n }\n return out >>> 0;\n};\n\nexports.padSplit = function padSplit(num, size, group) {\n var str = num.toString(2);\n while (str.length < size)\n str = '0' + str;\n\n var out = [];\n for (var i = 0; i < size; i += group)\n out.push(str.slice(i, i + group));\n return out.join(' ');\n};\n","var generatePrime = require('./lib/generatePrime')\nvar primes = require('./lib/primes.json')\n\nvar DH = require('./lib/dh')\n\nfunction getDiffieHellman (mod) {\n var prime = new Buffer(primes[mod].prime, 'hex')\n var gen = new Buffer(primes[mod].gen, 'hex')\n\n return new DH(prime, gen)\n}\n\nvar ENCODINGS = {\n 'binary': true, 'hex': true, 'base64': true\n}\n\nfunction createDiffieHellman (prime, enc, generator, genc) {\n if (Buffer.isBuffer(enc) || ENCODINGS[enc] === undefined) {\n return createDiffieHellman(prime, 'binary', enc, generator)\n }\n\n enc = enc || 'binary'\n genc = genc || 'binary'\n generator = generator || new Buffer([2])\n\n if (!Buffer.isBuffer(generator)) {\n generator = new Buffer(generator, genc)\n }\n\n if (typeof prime === 'number') {\n return new DH(generatePrime(prime, generator), generator, true)\n }\n\n if (!Buffer.isBuffer(prime)) {\n prime = new Buffer(prime, enc)\n }\n\n return new DH(prime, generator, true)\n}\n\nexports.DiffieHellmanGroup = exports.createDiffieHellmanGroup = exports.getDiffieHellman = getDiffieHellman\nexports.createDiffieHellman = exports.DiffieHellman = createDiffieHellman\n","var BN = require('bn.js');\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar TWENTYFOUR = new BN(24);\nvar ELEVEN = new BN(11);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar primes = require('./generatePrime');\nvar randomBytes = require('randombytes');\nmodule.exports = DH;\n\nfunction setPublicKey(pub, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(pub)) {\n pub = new Buffer(pub, enc);\n }\n this._pub = new BN(pub);\n return this;\n}\n\nfunction setPrivateKey(priv, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(priv)) {\n priv = new Buffer(priv, enc);\n }\n this._priv = new BN(priv);\n return this;\n}\n\nvar primeCache = {};\nfunction checkPrime(prime, generator) {\n var gen = generator.toString('hex');\n var hex = [gen, prime.toString(16)].join('_');\n if (hex in primeCache) {\n return primeCache[hex];\n }\n var error = 0;\n\n if (prime.isEven() ||\n !primes.simpleSieve ||\n !primes.fermatTest(prime) ||\n !millerRabin.test(prime)) {\n //not a prime so +1\n error += 1;\n\n if (gen === '02' || gen === '05') {\n // we'd be able to check the generator\n // it would fail so +8\n error += 8;\n } else {\n //we wouldn't be able to test the generator\n // so +4\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n }\n if (!millerRabin.test(prime.shrn(1))) {\n //not a safe prime\n error += 2;\n }\n var rem;\n switch (gen) {\n case '02':\n if (prime.mod(TWENTYFOUR).cmp(ELEVEN)) {\n // unsuidable generator\n error += 8;\n }\n break;\n case '05':\n rem = prime.mod(TEN);\n if (rem.cmp(THREE) && rem.cmp(SEVEN)) {\n // prime mod 10 needs to equal 3 or 7\n error += 8;\n }\n break;\n default:\n error += 4;\n }\n primeCache[hex] = error;\n return error;\n}\n\nfunction DH(prime, generator, malleable) {\n this.setGenerator(generator);\n this.__prime = new BN(prime);\n this._prime = BN.mont(this.__prime);\n this._primeLen = prime.length;\n this._pub = undefined;\n this._priv = undefined;\n this._primeCode = undefined;\n if (malleable) {\n this.setPublicKey = setPublicKey;\n this.setPrivateKey = setPrivateKey;\n } else {\n this._primeCode = 8;\n }\n}\nObject.defineProperty(DH.prototype, 'verifyError', {\n enumerable: true,\n get: function () {\n if (typeof this._primeCode !== 'number') {\n this._primeCode = checkPrime(this.__prime, this.__gen);\n }\n return this._primeCode;\n }\n});\nDH.prototype.generateKeys = function () {\n if (!this._priv) {\n this._priv = new BN(randomBytes(this._primeLen));\n }\n this._pub = this._gen.toRed(this._prime).redPow(this._priv).fromRed();\n return this.getPublicKey();\n};\n\nDH.prototype.computeSecret = function (other) {\n other = new BN(other);\n other = other.toRed(this._prime);\n var secret = other.redPow(this._priv).fromRed();\n var out = new Buffer(secret.toArray());\n var prime = this.getPrime();\n if (out.length < prime.length) {\n var front = new Buffer(prime.length - out.length);\n front.fill(0);\n out = Buffer.concat([front, out]);\n }\n return out;\n};\n\nDH.prototype.getPublicKey = function getPublicKey(enc) {\n return formatReturnValue(this._pub, enc);\n};\n\nDH.prototype.getPrivateKey = function getPrivateKey(enc) {\n return formatReturnValue(this._priv, enc);\n};\n\nDH.prototype.getPrime = function (enc) {\n return formatReturnValue(this.__prime, enc);\n};\n\nDH.prototype.getGenerator = function (enc) {\n return formatReturnValue(this._gen, enc);\n};\n\nDH.prototype.setGenerator = function (gen, enc) {\n enc = enc || 'utf8';\n if (!Buffer.isBuffer(gen)) {\n gen = new Buffer(gen, enc);\n }\n this.__gen = gen;\n this._gen = new BN(gen);\n return this;\n};\n\nfunction formatReturnValue(bn, enc) {\n var buf = new Buffer(bn.toArray());\n if (!enc) {\n return buf;\n } else {\n return buf.toString(enc);\n }\n}\n","var randomBytes = require('randombytes');\nmodule.exports = findPrime;\nfindPrime.simpleSieve = simpleSieve;\nfindPrime.fermatTest = fermatTest;\nvar BN = require('bn.js');\nvar TWENTYFOUR = new BN(24);\nvar MillerRabin = require('miller-rabin');\nvar millerRabin = new MillerRabin();\nvar ONE = new BN(1);\nvar TWO = new BN(2);\nvar FIVE = new BN(5);\nvar SIXTEEN = new BN(16);\nvar EIGHT = new BN(8);\nvar TEN = new BN(10);\nvar THREE = new BN(3);\nvar SEVEN = new BN(7);\nvar ELEVEN = new BN(11);\nvar FOUR = new BN(4);\nvar TWELVE = new BN(12);\nvar primes = null;\n\nfunction _getPrimes() {\n if (primes !== null)\n return primes;\n\n var limit = 0x100000;\n var res = [];\n res[0] = 2;\n for (var i = 1, k = 3; k < limit; k += 2) {\n var sqrt = Math.ceil(Math.sqrt(k));\n for (var j = 0; j < i && res[j] <= sqrt; j++)\n if (k % res[j] === 0)\n break;\n\n if (i !== j && res[j] <= sqrt)\n continue;\n\n res[i++] = k;\n }\n primes = res;\n return res;\n}\n\nfunction simpleSieve(p) {\n var primes = _getPrimes();\n\n for (var i = 0; i < primes.length; i++)\n if (p.modn(primes[i]) === 0) {\n if (p.cmpn(primes[i]) === 0) {\n return true;\n } else {\n return false;\n }\n }\n\n return true;\n}\n\nfunction fermatTest(p) {\n var red = BN.mont(p);\n return TWO.toRed(red).redPow(p.subn(1)).fromRed().cmpn(1) === 0;\n}\n\nfunction findPrime(bits, gen) {\n if (bits < 16) {\n // this is what openssl does\n if (gen === 2 || gen === 5) {\n return new BN([0x8c, 0x7b]);\n } else {\n return new BN([0x8c, 0x27]);\n }\n }\n gen = new BN(gen);\n\n var num, n2;\n\n while (true) {\n num = new BN(randomBytes(Math.ceil(bits / 8)));\n while (num.bitLength() > bits) {\n num.ishrn(1);\n }\n if (num.isEven()) {\n num.iadd(ONE);\n }\n if (!num.testn(1)) {\n num.iadd(TWO);\n }\n if (!gen.cmp(TWO)) {\n while (num.mod(TWENTYFOUR).cmp(ELEVEN)) {\n num.iadd(FOUR);\n }\n } else if (!gen.cmp(FIVE)) {\n while (num.mod(TEN).cmp(THREE)) {\n num.iadd(FOUR);\n }\n }\n n2 = num.shrn(1);\n if (simpleSieve(n2) && simpleSieve(num) &&\n fermatTest(n2) && fermatTest(num) &&\n millerRabin.test(n2) && millerRabin.test(num)) {\n return num;\n }\n }\n\n}\n","'use strict';\n\n/******************************************************************************\n * Created 2008-08-19.\n *\n * Dijkstra path-finding functions. Adapted from the Dijkstar Python project.\n *\n * Copyright (C) 2008\n * Wyatt Baldwin \n * All rights reserved\n *\n * Licensed under the MIT license.\n *\n * http://www.opensource.org/licenses/mit-license.php\n *\n * THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\n * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\n * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\n * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\n * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\n * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\n * THE SOFTWARE.\n *****************************************************************************/\nvar dijkstra = {\n single_source_shortest_paths: function(graph, s, d) {\n // Predecessor map for each node that has been encountered.\n // node ID => predecessor node ID\n var predecessors = {};\n\n // Costs of shortest paths from s to all nodes encountered.\n // node ID => cost\n var costs = {};\n costs[s] = 0;\n\n // Costs of shortest paths from s to all nodes encountered; differs from\n // `costs` in that it provides easy access to the node that currently has\n // the known shortest path from s.\n // XXX: Do we actually need both `costs` and `open`?\n var open = dijkstra.PriorityQueue.make();\n open.push(s, 0);\n\n var closest,\n u, v,\n cost_of_s_to_u,\n adjacent_nodes,\n cost_of_e,\n cost_of_s_to_u_plus_cost_of_e,\n cost_of_s_to_v,\n first_visit;\n while (!open.empty()) {\n // In the nodes remaining in graph that have a known cost from s,\n // find the node, u, that currently has the shortest path from s.\n closest = open.pop();\n u = closest.value;\n cost_of_s_to_u = closest.cost;\n\n // Get nodes adjacent to u...\n adjacent_nodes = graph[u] || {};\n\n // ...and explore the edges that connect u to those nodes, updating\n // the cost of the shortest paths to any or all of those nodes as\n // necessary. v is the node across the current edge from u.\n for (v in adjacent_nodes) {\n if (adjacent_nodes.hasOwnProperty(v)) {\n // Get the cost of the edge running from u to v.\n cost_of_e = adjacent_nodes[v];\n\n // Cost of s to u plus the cost of u to v across e--this is *a*\n // cost from s to v that may or may not be less than the current\n // known cost to v.\n cost_of_s_to_u_plus_cost_of_e = cost_of_s_to_u + cost_of_e;\n\n // If we haven't visited v yet OR if the current known cost from s to\n // v is greater than the new cost we just found (cost of s to u plus\n // cost of u to v across e), update v's cost in the cost list and\n // update v's predecessor in the predecessor list (it's now u).\n cost_of_s_to_v = costs[v];\n first_visit = (typeof costs[v] === 'undefined');\n if (first_visit || cost_of_s_to_v > cost_of_s_to_u_plus_cost_of_e) {\n costs[v] = cost_of_s_to_u_plus_cost_of_e;\n open.push(v, cost_of_s_to_u_plus_cost_of_e);\n predecessors[v] = u;\n }\n }\n }\n }\n\n if (typeof d !== 'undefined' && typeof costs[d] === 'undefined') {\n var msg = ['Could not find a path from ', s, ' to ', d, '.'].join('');\n throw new Error(msg);\n }\n\n return predecessors;\n },\n\n extract_shortest_path_from_predecessor_list: function(predecessors, d) {\n var nodes = [];\n var u = d;\n var predecessor;\n while (u) {\n nodes.push(u);\n predecessor = predecessors[u];\n u = predecessors[u];\n }\n nodes.reverse();\n return nodes;\n },\n\n find_path: function(graph, s, d) {\n var predecessors = dijkstra.single_source_shortest_paths(graph, s, d);\n return dijkstra.extract_shortest_path_from_predecessor_list(\n predecessors, d);\n },\n\n /**\n * A very naive priority queue implementation.\n */\n PriorityQueue: {\n make: function (opts) {\n var T = dijkstra.PriorityQueue,\n t = {},\n key;\n opts = opts || {};\n for (key in T) {\n if (T.hasOwnProperty(key)) {\n t[key] = T[key];\n }\n }\n t.queue = [];\n t.sorter = opts.sorter || T.default_sorter;\n return t;\n },\n\n default_sorter: function (a, b) {\n return a.cost - b.cost;\n },\n\n /**\n * Add a new item to the queue and ensure the highest priority element\n * is at the front of the queue.\n */\n push: function (value, cost) {\n var item = {value: value, cost: cost};\n this.queue.push(item);\n this.queue.sort(this.sorter);\n },\n\n /**\n * Return the highest priority element in the queue.\n */\n pop: function () {\n return this.queue.shift();\n },\n\n empty: function () {\n return this.queue.length === 0;\n }\n }\n};\n\n\n// node.js module exports\nif (typeof module !== 'undefined') {\n module.exports = dijkstra;\n}\n","'use strict';\n\nvar elliptic = exports;\n\nelliptic.version = require('../package.json').version;\nelliptic.utils = require('./elliptic/utils');\nelliptic.rand = require('brorand');\nelliptic.curve = require('./elliptic/curve');\nelliptic.curves = require('./elliptic/curves');\n\n// Protocols\nelliptic.ec = require('./elliptic/ec');\nelliptic.eddsa = require('./elliptic/eddsa');\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar getNAF = utils.getNAF;\nvar getJSF = utils.getJSF;\nvar assert = utils.assert;\n\nfunction BaseCurve(type, conf) {\n this.type = type;\n this.p = new BN(conf.p, 16);\n\n // Use Montgomery, when there is no fast reduction for the prime\n this.red = conf.prime ? BN.red(conf.prime) : BN.mont(this.p);\n\n // Useful for many curves\n this.zero = new BN(0).toRed(this.red);\n this.one = new BN(1).toRed(this.red);\n this.two = new BN(2).toRed(this.red);\n\n // Curve configuration, optional\n this.n = conf.n && new BN(conf.n, 16);\n this.g = conf.g && this.pointFromJSON(conf.g, conf.gRed);\n\n // Temporary arrays\n this._wnafT1 = new Array(4);\n this._wnafT2 = new Array(4);\n this._wnafT3 = new Array(4);\n this._wnafT4 = new Array(4);\n\n this._bitLength = this.n ? this.n.bitLength() : 0;\n\n // Generalized Greg Maxwell's trick\n var adjustCount = this.n && this.p.div(this.n);\n if (!adjustCount || adjustCount.cmpn(100) > 0) {\n this.redN = null;\n } else {\n this._maxwellTrick = true;\n this.redN = this.n.toRed(this.red);\n }\n}\nmodule.exports = BaseCurve;\n\nBaseCurve.prototype.point = function point() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype.validate = function validate() {\n throw new Error('Not implemented');\n};\n\nBaseCurve.prototype._fixedNafMul = function _fixedNafMul(p, k) {\n assert(p.precomputed);\n var doubles = p._getDoubles();\n\n var naf = getNAF(k, 1, this._bitLength);\n var I = (1 << (doubles.step + 1)) - (doubles.step % 2 === 0 ? 2 : 1);\n I /= 3;\n\n // Translate into more windowed form\n var repr = [];\n var j;\n var nafW;\n for (j = 0; j < naf.length; j += doubles.step) {\n nafW = 0;\n for (var l = j + doubles.step - 1; l >= j; l--)\n nafW = (nafW << 1) + naf[l];\n repr.push(nafW);\n }\n\n var a = this.jpoint(null, null, null);\n var b = this.jpoint(null, null, null);\n for (var i = I; i > 0; i--) {\n for (j = 0; j < repr.length; j++) {\n nafW = repr[j];\n if (nafW === i)\n b = b.mixedAdd(doubles.points[j]);\n else if (nafW === -i)\n b = b.mixedAdd(doubles.points[j].neg());\n }\n a = a.add(b);\n }\n return a.toP();\n};\n\nBaseCurve.prototype._wnafMul = function _wnafMul(p, k) {\n var w = 4;\n\n // Precompute window\n var nafPoints = p._getNAFPoints(w);\n w = nafPoints.wnd;\n var wnd = nafPoints.points;\n\n // Get NAF form\n var naf = getNAF(k, w, this._bitLength);\n\n // Add `this`*(N+1) for every w-NAF index\n var acc = this.jpoint(null, null, null);\n for (var i = naf.length - 1; i >= 0; i--) {\n // Count zeroes\n for (var l = 0; i >= 0 && naf[i] === 0; i--)\n l++;\n if (i >= 0)\n l++;\n acc = acc.dblp(l);\n\n if (i < 0)\n break;\n var z = naf[i];\n assert(z !== 0);\n if (p.type === 'affine') {\n // J +- P\n if (z > 0)\n acc = acc.mixedAdd(wnd[(z - 1) >> 1]);\n else\n acc = acc.mixedAdd(wnd[(-z - 1) >> 1].neg());\n } else {\n // J +- J\n if (z > 0)\n acc = acc.add(wnd[(z - 1) >> 1]);\n else\n acc = acc.add(wnd[(-z - 1) >> 1].neg());\n }\n }\n return p.type === 'affine' ? acc.toP() : acc;\n};\n\nBaseCurve.prototype._wnafMulAdd = function _wnafMulAdd(defW,\n points,\n coeffs,\n len,\n jacobianResult) {\n var wndWidth = this._wnafT1;\n var wnd = this._wnafT2;\n var naf = this._wnafT3;\n\n // Fill all arrays\n var max = 0;\n var i;\n var j;\n var p;\n for (i = 0; i < len; i++) {\n p = points[i];\n var nafPoints = p._getNAFPoints(defW);\n wndWidth[i] = nafPoints.wnd;\n wnd[i] = nafPoints.points;\n }\n\n // Comb small window NAFs\n for (i = len - 1; i >= 1; i -= 2) {\n var a = i - 1;\n var b = i;\n if (wndWidth[a] !== 1 || wndWidth[b] !== 1) {\n naf[a] = getNAF(coeffs[a], wndWidth[a], this._bitLength);\n naf[b] = getNAF(coeffs[b], wndWidth[b], this._bitLength);\n max = Math.max(naf[a].length, max);\n max = Math.max(naf[b].length, max);\n continue;\n }\n\n var comb = [\n points[a], /* 1 */\n null, /* 3 */\n null, /* 5 */\n points[b], /* 7 */\n ];\n\n // Try to avoid Projective points, if possible\n if (points[a].y.cmp(points[b].y) === 0) {\n comb[1] = points[a].add(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n } else if (points[a].y.cmp(points[b].y.redNeg()) === 0) {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].add(points[b].neg());\n } else {\n comb[1] = points[a].toJ().mixedAdd(points[b]);\n comb[2] = points[a].toJ().mixedAdd(points[b].neg());\n }\n\n var index = [\n -3, /* -1 -1 */\n -1, /* -1 0 */\n -5, /* -1 1 */\n -7, /* 0 -1 */\n 0, /* 0 0 */\n 7, /* 0 1 */\n 5, /* 1 -1 */\n 1, /* 1 0 */\n 3, /* 1 1 */\n ];\n\n var jsf = getJSF(coeffs[a], coeffs[b]);\n max = Math.max(jsf[0].length, max);\n naf[a] = new Array(max);\n naf[b] = new Array(max);\n for (j = 0; j < max; j++) {\n var ja = jsf[0][j] | 0;\n var jb = jsf[1][j] | 0;\n\n naf[a][j] = index[(ja + 1) * 3 + (jb + 1)];\n naf[b][j] = 0;\n wnd[a] = comb;\n }\n }\n\n var acc = this.jpoint(null, null, null);\n var tmp = this._wnafT4;\n for (i = max; i >= 0; i--) {\n var k = 0;\n\n while (i >= 0) {\n var zero = true;\n for (j = 0; j < len; j++) {\n tmp[j] = naf[j][i] | 0;\n if (tmp[j] !== 0)\n zero = false;\n }\n if (!zero)\n break;\n k++;\n i--;\n }\n if (i >= 0)\n k++;\n acc = acc.dblp(k);\n if (i < 0)\n break;\n\n for (j = 0; j < len; j++) {\n var z = tmp[j];\n p;\n if (z === 0)\n continue;\n else if (z > 0)\n p = wnd[j][(z - 1) >> 1];\n else if (z < 0)\n p = wnd[j][(-z - 1) >> 1].neg();\n\n if (p.type === 'affine')\n acc = acc.mixedAdd(p);\n else\n acc = acc.add(p);\n }\n }\n // Zeroify references\n for (i = 0; i < len; i++)\n wnd[i] = null;\n\n if (jacobianResult)\n return acc;\n else\n return acc.toP();\n};\n\nfunction BasePoint(curve, type) {\n this.curve = curve;\n this.type = type;\n this.precomputed = null;\n}\nBaseCurve.BasePoint = BasePoint;\n\nBasePoint.prototype.eq = function eq(/*other*/) {\n throw new Error('Not implemented');\n};\n\nBasePoint.prototype.validate = function validate() {\n return this.curve.validate(this);\n};\n\nBaseCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n bytes = utils.toArray(bytes, enc);\n\n var len = this.p.byteLength();\n\n // uncompressed, hybrid-odd, hybrid-even\n if ((bytes[0] === 0x04 || bytes[0] === 0x06 || bytes[0] === 0x07) &&\n bytes.length - 1 === 2 * len) {\n if (bytes[0] === 0x06)\n assert(bytes[bytes.length - 1] % 2 === 0);\n else if (bytes[0] === 0x07)\n assert(bytes[bytes.length - 1] % 2 === 1);\n\n var res = this.point(bytes.slice(1, 1 + len),\n bytes.slice(1 + len, 1 + 2 * len));\n\n return res;\n } else if ((bytes[0] === 0x02 || bytes[0] === 0x03) &&\n bytes.length - 1 === len) {\n return this.pointFromX(bytes.slice(1, 1 + len), bytes[0] === 0x03);\n }\n throw new Error('Unknown point format');\n};\n\nBasePoint.prototype.encodeCompressed = function encodeCompressed(enc) {\n return this.encode(enc, true);\n};\n\nBasePoint.prototype._encode = function _encode(compact) {\n var len = this.curve.p.byteLength();\n var x = this.getX().toArray('be', len);\n\n if (compact)\n return [ this.getY().isEven() ? 0x02 : 0x03 ].concat(x);\n\n return [ 0x04 ].concat(x, this.getY().toArray('be', len));\n};\n\nBasePoint.prototype.encode = function encode(enc, compact) {\n return utils.encode(this._encode(compact), enc);\n};\n\nBasePoint.prototype.precompute = function precompute(power) {\n if (this.precomputed)\n return this;\n\n var precomputed = {\n doubles: null,\n naf: null,\n beta: null,\n };\n precomputed.naf = this._getNAFPoints(8);\n precomputed.doubles = this._getDoubles(4, power);\n precomputed.beta = this._getBeta();\n this.precomputed = precomputed;\n\n return this;\n};\n\nBasePoint.prototype._hasDoubles = function _hasDoubles(k) {\n if (!this.precomputed)\n return false;\n\n var doubles = this.precomputed.doubles;\n if (!doubles)\n return false;\n\n return doubles.points.length >= Math.ceil((k.bitLength() + 1) / doubles.step);\n};\n\nBasePoint.prototype._getDoubles = function _getDoubles(step, power) {\n if (this.precomputed && this.precomputed.doubles)\n return this.precomputed.doubles;\n\n var doubles = [ this ];\n var acc = this;\n for (var i = 0; i < power; i += step) {\n for (var j = 0; j < step; j++)\n acc = acc.dbl();\n doubles.push(acc);\n }\n return {\n step: step,\n points: doubles,\n };\n};\n\nBasePoint.prototype._getNAFPoints = function _getNAFPoints(wnd) {\n if (this.precomputed && this.precomputed.naf)\n return this.precomputed.naf;\n\n var res = [ this ];\n var max = (1 << wnd) - 1;\n var dbl = max === 1 ? null : this.dbl();\n for (var i = 1; i < max; i++)\n res[i] = res[i - 1].add(dbl);\n return {\n wnd: wnd,\n points: res,\n };\n};\n\nBasePoint.prototype._getBeta = function _getBeta() {\n return null;\n};\n\nBasePoint.prototype.dblp = function dblp(k) {\n var r = this;\n for (var i = 0; i < k; i++)\n r = r.dbl();\n return r;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction EdwardsCurve(conf) {\n // NOTE: Important as we are creating point in Base.call()\n this.twisted = (conf.a | 0) !== 1;\n this.mOneA = this.twisted && (conf.a | 0) === -1;\n this.extended = this.mOneA;\n\n Base.call(this, 'edwards', conf);\n\n this.a = new BN(conf.a, 16).umod(this.red.m);\n this.a = this.a.toRed(this.red);\n this.c = new BN(conf.c, 16).toRed(this.red);\n this.c2 = this.c.redSqr();\n this.d = new BN(conf.d, 16).toRed(this.red);\n this.dd = this.d.redAdd(this.d);\n\n assert(!this.twisted || this.c.fromRed().cmpn(1) === 0);\n this.oneC = (conf.c | 0) === 1;\n}\ninherits(EdwardsCurve, Base);\nmodule.exports = EdwardsCurve;\n\nEdwardsCurve.prototype._mulA = function _mulA(num) {\n if (this.mOneA)\n return num.redNeg();\n else\n return this.a.redMul(num);\n};\n\nEdwardsCurve.prototype._mulC = function _mulC(num) {\n if (this.oneC)\n return num;\n else\n return this.c.redMul(num);\n};\n\n// Just for compatibility with Short curve\nEdwardsCurve.prototype.jpoint = function jpoint(x, y, z, t) {\n return this.point(x, y, z, t);\n};\n\nEdwardsCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var x2 = x.redSqr();\n var rhs = this.c2.redSub(this.a.redMul(x2));\n var lhs = this.one.redSub(this.c2.redMul(this.d).redMul(x2));\n\n var y2 = rhs.redMul(lhs.redInvm());\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.pointFromY = function pointFromY(y, odd) {\n y = new BN(y, 16);\n if (!y.red)\n y = y.toRed(this.red);\n\n // x^2 = (y^2 - c^2) / (c^2 d y^2 - a)\n var y2 = y.redSqr();\n var lhs = y2.redSub(this.c2);\n var rhs = y2.redMul(this.d).redMul(this.c2).redSub(this.a);\n var x2 = lhs.redMul(rhs.redInvm());\n\n if (x2.cmp(this.zero) === 0) {\n if (odd)\n throw new Error('invalid point');\n else\n return this.point(this.zero, y);\n }\n\n var x = x2.redSqrt();\n if (x.redSqr().redSub(x2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n if (x.fromRed().isOdd() !== odd)\n x = x.redNeg();\n\n return this.point(x, y);\n};\n\nEdwardsCurve.prototype.validate = function validate(point) {\n if (point.isInfinity())\n return true;\n\n // Curve: A * X^2 + Y^2 = C^2 * (1 + D * X^2 * Y^2)\n point.normalize();\n\n var x2 = point.x.redSqr();\n var y2 = point.y.redSqr();\n var lhs = x2.redMul(this.a).redAdd(y2);\n var rhs = this.c2.redMul(this.one.redAdd(this.d.redMul(x2).redMul(y2)));\n\n return lhs.cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, y, z, t) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && y === null && z === null) {\n this.x = this.curve.zero;\n this.y = this.curve.one;\n this.z = this.curve.one;\n this.t = this.curve.zero;\n this.zOne = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = z ? new BN(z, 16) : this.curve.one;\n this.t = t && new BN(t, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n if (this.t && !this.t.red)\n this.t = this.t.toRed(this.curve.red);\n this.zOne = this.z === this.curve.one;\n\n // Use extended coordinates\n if (this.curve.extended && !this.t) {\n this.t = this.x.redMul(this.y);\n if (!this.zOne)\n this.t = this.t.redMul(this.z.redInvm());\n }\n }\n}\ninherits(Point, Base.BasePoint);\n\nEdwardsCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nEdwardsCurve.prototype.point = function point(x, y, z, t) {\n return new Point(this, x, y, z, t);\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1], obj[2]);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.x.cmpn(0) === 0 &&\n (this.y.cmp(this.z) === 0 ||\n (this.zOne && this.y.cmp(this.curve.c) === 0));\n};\n\nPoint.prototype._extDbl = function _extDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #doubling-dbl-2008-hwcd\n // 4M + 4S\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = 2 * Z1^2\n var c = this.z.redSqr();\n c = c.redIAdd(c);\n // D = a * A\n var d = this.curve._mulA(a);\n // E = (X1 + Y1)^2 - A - B\n var e = this.x.redAdd(this.y).redSqr().redISub(a).redISub(b);\n // G = D + B\n var g = d.redAdd(b);\n // F = G - C\n var f = g.redSub(c);\n // H = D - B\n var h = d.redSub(b);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projDbl = function _projDbl() {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #doubling-dbl-2008-bbjlp\n // #doubling-dbl-2007-bl\n // and others\n // Generally 3M + 4S or 2M + 4S\n\n // B = (X1 + Y1)^2\n var b = this.x.redAdd(this.y).redSqr();\n // C = X1^2\n var c = this.x.redSqr();\n // D = Y1^2\n var d = this.y.redSqr();\n\n var nx;\n var ny;\n var nz;\n var e;\n var h;\n var j;\n if (this.curve.twisted) {\n // E = a * C\n e = this.curve._mulA(c);\n // F = E + D\n var f = e.redAdd(d);\n if (this.zOne) {\n // X3 = (B - C - D) * (F - 2)\n nx = b.redSub(c).redSub(d).redMul(f.redSub(this.curve.two));\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F^2 - 2 * F\n nz = f.redSqr().redSub(f).redSub(f);\n } else {\n // H = Z1^2\n h = this.z.redSqr();\n // J = F - 2 * H\n j = f.redSub(h).redISub(h);\n // X3 = (B-C-D)*J\n nx = b.redSub(c).redISub(d).redMul(j);\n // Y3 = F * (E - D)\n ny = f.redMul(e.redSub(d));\n // Z3 = F * J\n nz = f.redMul(j);\n }\n } else {\n // E = C + D\n e = c.redAdd(d);\n // H = (c * Z1)^2\n h = this.curve._mulC(this.z).redSqr();\n // J = E - 2 * H\n j = e.redSub(h).redSub(h);\n // X3 = c * (B - E) * J\n nx = this.curve._mulC(b.redISub(e)).redMul(j);\n // Y3 = c * E * (C - D)\n ny = this.curve._mulC(e).redMul(c.redISub(d));\n // Z3 = E * J\n nz = e.redMul(j);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n // Double in extended coordinates\n if (this.curve.extended)\n return this._extDbl();\n else\n return this._projDbl();\n};\n\nPoint.prototype._extAdd = function _extAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-extended-1.html\n // #addition-add-2008-hwcd-3\n // 8M\n\n // A = (Y1 - X1) * (Y2 - X2)\n var a = this.y.redSub(this.x).redMul(p.y.redSub(p.x));\n // B = (Y1 + X1) * (Y2 + X2)\n var b = this.y.redAdd(this.x).redMul(p.y.redAdd(p.x));\n // C = T1 * k * T2\n var c = this.t.redMul(this.curve.dd).redMul(p.t);\n // D = Z1 * 2 * Z2\n var d = this.z.redMul(p.z.redAdd(p.z));\n // E = B - A\n var e = b.redSub(a);\n // F = D - C\n var f = d.redSub(c);\n // G = D + C\n var g = d.redAdd(c);\n // H = B + A\n var h = b.redAdd(a);\n // X3 = E * F\n var nx = e.redMul(f);\n // Y3 = G * H\n var ny = g.redMul(h);\n // T3 = E * H\n var nt = e.redMul(h);\n // Z3 = F * G\n var nz = f.redMul(g);\n return this.curve.point(nx, ny, nz, nt);\n};\n\nPoint.prototype._projAdd = function _projAdd(p) {\n // hyperelliptic.org/EFD/g1p/auto-twisted-projective.html\n // #addition-add-2008-bbjlp\n // #addition-add-2007-bl\n // 10M + 1S\n\n // A = Z1 * Z2\n var a = this.z.redMul(p.z);\n // B = A^2\n var b = a.redSqr();\n // C = X1 * X2\n var c = this.x.redMul(p.x);\n // D = Y1 * Y2\n var d = this.y.redMul(p.y);\n // E = d * C * D\n var e = this.curve.d.redMul(c).redMul(d);\n // F = B - E\n var f = b.redSub(e);\n // G = B + E\n var g = b.redAdd(e);\n // X3 = A * F * ((X1 + Y1) * (X2 + Y2) - C - D)\n var tmp = this.x.redAdd(this.y).redMul(p.x.redAdd(p.y)).redISub(c).redISub(d);\n var nx = a.redMul(f).redMul(tmp);\n var ny;\n var nz;\n if (this.curve.twisted) {\n // Y3 = A * G * (D - a * C)\n ny = a.redMul(g).redMul(d.redSub(this.curve._mulA(c)));\n // Z3 = F * G\n nz = f.redMul(g);\n } else {\n // Y3 = A * G * (D - C)\n ny = a.redMul(g).redMul(d.redSub(c));\n // Z3 = c * F * G\n nz = this.curve._mulC(f).redMul(g);\n }\n return this.curve.point(nx, ny, nz);\n};\n\nPoint.prototype.add = function add(p) {\n if (this.isInfinity())\n return p;\n if (p.isInfinity())\n return this;\n\n if (this.curve.extended)\n return this._extAdd(p);\n else\n return this._projAdd(p);\n};\n\nPoint.prototype.mul = function mul(k) {\n if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, false);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p, k2) {\n return this.curve._wnafMulAdd(1, [ this, p ], [ k1, k2 ], 2, true);\n};\n\nPoint.prototype.normalize = function normalize() {\n if (this.zOne)\n return this;\n\n // Normalize coordinates\n var zi = this.z.redInvm();\n this.x = this.x.redMul(zi);\n this.y = this.y.redMul(zi);\n if (this.t)\n this.t = this.t.redMul(zi);\n this.z = this.curve.one;\n this.zOne = true;\n return this;\n};\n\nPoint.prototype.neg = function neg() {\n return this.curve.point(this.x.redNeg(),\n this.y,\n this.z,\n this.t && this.t.redNeg());\n};\n\nPoint.prototype.getX = function getX() {\n this.normalize();\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n this.normalize();\n return this.y.fromRed();\n};\n\nPoint.prototype.eq = function eq(other) {\n return this === other ||\n this.getX().cmp(other.getX()) === 0 &&\n this.getY().cmp(other.getY()) === 0;\n};\n\nPoint.prototype.eqXToP = function eqXToP(x) {\n var rx = x.toRed(this.curve.red).redMul(this.z);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(this.z);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\n// Compatibility with BaseCurve\nPoint.prototype.toP = Point.prototype.normalize;\nPoint.prototype.mixedAdd = Point.prototype.add;\n","'use strict';\n\nvar curve = exports;\n\ncurve.base = require('./base');\ncurve.short = require('./short');\ncurve.mont = require('./mont');\ncurve.edwards = require('./edwards');\n","'use strict';\n\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar utils = require('../utils');\n\nfunction MontCurve(conf) {\n Base.call(this, 'mont', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.i4 = new BN(4).toRed(this.red).redInvm();\n this.two = new BN(2).toRed(this.red);\n this.a24 = this.i4.redMul(this.a.redAdd(this.two));\n}\ninherits(MontCurve, Base);\nmodule.exports = MontCurve;\n\nMontCurve.prototype.validate = function validate(point) {\n var x = point.normalize().x;\n var x2 = x.redSqr();\n var rhs = x2.redMul(x).redAdd(x2.redMul(this.a)).redAdd(x);\n var y = rhs.redSqrt();\n\n return y.redSqr().cmp(rhs) === 0;\n};\n\nfunction Point(curve, x, z) {\n Base.BasePoint.call(this, curve, 'projective');\n if (x === null && z === null) {\n this.x = this.curve.one;\n this.z = this.curve.zero;\n } else {\n this.x = new BN(x, 16);\n this.z = new BN(z, 16);\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n }\n}\ninherits(Point, Base.BasePoint);\n\nMontCurve.prototype.decodePoint = function decodePoint(bytes, enc) {\n return this.point(utils.toArray(bytes, enc), 1);\n};\n\nMontCurve.prototype.point = function point(x, z) {\n return new Point(this, x, z);\n};\n\nMontCurve.prototype.pointFromJSON = function pointFromJSON(obj) {\n return Point.fromJSON(this, obj);\n};\n\nPoint.prototype.precompute = function precompute() {\n // No-op\n};\n\nPoint.prototype._encode = function _encode() {\n return this.getX().toArray('be', this.curve.p.byteLength());\n};\n\nPoint.fromJSON = function fromJSON(curve, obj) {\n return new Point(curve, obj[0], obj[1] || curve.one);\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n\nPoint.prototype.dbl = function dbl() {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#doubling-dbl-1987-m-3\n // 2M + 2S + 4A\n\n // A = X1 + Z1\n var a = this.x.redAdd(this.z);\n // AA = A^2\n var aa = a.redSqr();\n // B = X1 - Z1\n var b = this.x.redSub(this.z);\n // BB = B^2\n var bb = b.redSqr();\n // C = AA - BB\n var c = aa.redSub(bb);\n // X3 = AA * BB\n var nx = aa.redMul(bb);\n // Z3 = C * (BB + A24 * C)\n var nz = c.redMul(bb.redAdd(this.curve.a24.redMul(c)));\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.add = function add() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.diffAdd = function diffAdd(p, diff) {\n // http://hyperelliptic.org/EFD/g1p/auto-montgom-xz.html#diffadd-dadd-1987-m-3\n // 4M + 2S + 6A\n\n // A = X2 + Z2\n var a = this.x.redAdd(this.z);\n // B = X2 - Z2\n var b = this.x.redSub(this.z);\n // C = X3 + Z3\n var c = p.x.redAdd(p.z);\n // D = X3 - Z3\n var d = p.x.redSub(p.z);\n // DA = D * A\n var da = d.redMul(a);\n // CB = C * B\n var cb = c.redMul(b);\n // X5 = Z1 * (DA + CB)^2\n var nx = diff.z.redMul(da.redAdd(cb).redSqr());\n // Z5 = X1 * (DA - CB)^2\n var nz = diff.x.redMul(da.redISub(cb).redSqr());\n return this.curve.point(nx, nz);\n};\n\nPoint.prototype.mul = function mul(k) {\n var t = k.clone();\n var a = this; // (N / 2) * Q + Q\n var b = this.curve.point(null, null); // (N / 2) * Q\n var c = this; // Q\n\n for (var bits = []; t.cmpn(0) !== 0; t.iushrn(1))\n bits.push(t.andln(1));\n\n for (var i = bits.length - 1; i >= 0; i--) {\n if (bits[i] === 0) {\n // N * Q + Q = ((N / 2) * Q + Q)) + (N / 2) * Q\n a = a.diffAdd(b, c);\n // N * Q = 2 * ((N / 2) * Q + Q))\n b = b.dbl();\n } else {\n // N * Q = ((N / 2) * Q + Q) + ((N / 2) * Q)\n b = a.diffAdd(b, c);\n // N * Q + Q = 2 * ((N / 2) * Q + Q)\n a = a.dbl();\n }\n }\n return b;\n};\n\nPoint.prototype.mulAdd = function mulAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.jumlAdd = function jumlAdd() {\n throw new Error('Not supported on Montgomery curve');\n};\n\nPoint.prototype.eq = function eq(other) {\n return this.getX().cmp(other.getX()) === 0;\n};\n\nPoint.prototype.normalize = function normalize() {\n this.x = this.x.redMul(this.z.redInvm());\n this.z = this.curve.one;\n return this;\n};\n\nPoint.prototype.getX = function getX() {\n // Normalize coordinates\n this.normalize();\n\n return this.x.fromRed();\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar BN = require('bn.js');\nvar inherits = require('inherits');\nvar Base = require('./base');\n\nvar assert = utils.assert;\n\nfunction ShortCurve(conf) {\n Base.call(this, 'short', conf);\n\n this.a = new BN(conf.a, 16).toRed(this.red);\n this.b = new BN(conf.b, 16).toRed(this.red);\n this.tinv = this.two.redInvm();\n\n this.zeroA = this.a.fromRed().cmpn(0) === 0;\n this.threeA = this.a.fromRed().sub(this.p).cmpn(-3) === 0;\n\n // If the curve is endomorphic, precalculate beta and lambda\n this.endo = this._getEndomorphism(conf);\n this._endoWnafT1 = new Array(4);\n this._endoWnafT2 = new Array(4);\n}\ninherits(ShortCurve, Base);\nmodule.exports = ShortCurve;\n\nShortCurve.prototype._getEndomorphism = function _getEndomorphism(conf) {\n // No efficient endomorphism\n if (!this.zeroA || !this.g || !this.n || this.p.modn(3) !== 1)\n return;\n\n // Compute beta and lambda, that lambda * P = (beta * Px; Py)\n var beta;\n var lambda;\n if (conf.beta) {\n beta = new BN(conf.beta, 16).toRed(this.red);\n } else {\n var betas = this._getEndoRoots(this.p);\n // Choose the smallest beta\n beta = betas[0].cmp(betas[1]) < 0 ? betas[0] : betas[1];\n beta = beta.toRed(this.red);\n }\n if (conf.lambda) {\n lambda = new BN(conf.lambda, 16);\n } else {\n // Choose the lambda that is matching selected beta\n var lambdas = this._getEndoRoots(this.n);\n if (this.g.mul(lambdas[0]).x.cmp(this.g.x.redMul(beta)) === 0) {\n lambda = lambdas[0];\n } else {\n lambda = lambdas[1];\n assert(this.g.mul(lambda).x.cmp(this.g.x.redMul(beta)) === 0);\n }\n }\n\n // Get basis vectors, used for balanced length-two representation\n var basis;\n if (conf.basis) {\n basis = conf.basis.map(function(vec) {\n return {\n a: new BN(vec.a, 16),\n b: new BN(vec.b, 16),\n };\n });\n } else {\n basis = this._getEndoBasis(lambda);\n }\n\n return {\n beta: beta,\n lambda: lambda,\n basis: basis,\n };\n};\n\nShortCurve.prototype._getEndoRoots = function _getEndoRoots(num) {\n // Find roots of for x^2 + x + 1 in F\n // Root = (-1 +- Sqrt(-3)) / 2\n //\n var red = num === this.p ? this.red : BN.mont(num);\n var tinv = new BN(2).toRed(red).redInvm();\n var ntinv = tinv.redNeg();\n\n var s = new BN(3).toRed(red).redNeg().redSqrt().redMul(tinv);\n\n var l1 = ntinv.redAdd(s).fromRed();\n var l2 = ntinv.redSub(s).fromRed();\n return [ l1, l2 ];\n};\n\nShortCurve.prototype._getEndoBasis = function _getEndoBasis(lambda) {\n // aprxSqrt >= sqrt(this.n)\n var aprxSqrt = this.n.ushrn(Math.floor(this.n.bitLength() / 2));\n\n // 3.74\n // Run EGCD, until r(L + 1) < aprxSqrt\n var u = lambda;\n var v = this.n.clone();\n var x1 = new BN(1);\n var y1 = new BN(0);\n var x2 = new BN(0);\n var y2 = new BN(1);\n\n // NOTE: all vectors are roots of: a + b * lambda = 0 (mod n)\n var a0;\n var b0;\n // First vector\n var a1;\n var b1;\n // Second vector\n var a2;\n var b2;\n\n var prevR;\n var i = 0;\n var r;\n var x;\n while (u.cmpn(0) !== 0) {\n var q = v.div(u);\n r = v.sub(q.mul(u));\n x = x2.sub(q.mul(x1));\n var y = y2.sub(q.mul(y1));\n\n if (!a1 && r.cmp(aprxSqrt) < 0) {\n a0 = prevR.neg();\n b0 = x1;\n a1 = r.neg();\n b1 = x;\n } else if (a1 && ++i === 2) {\n break;\n }\n prevR = r;\n\n v = u;\n u = r;\n x2 = x1;\n x1 = x;\n y2 = y1;\n y1 = y;\n }\n a2 = r.neg();\n b2 = x;\n\n var len1 = a1.sqr().add(b1.sqr());\n var len2 = a2.sqr().add(b2.sqr());\n if (len2.cmp(len1) >= 0) {\n a2 = a0;\n b2 = b0;\n }\n\n // Normalize signs\n if (a1.negative) {\n a1 = a1.neg();\n b1 = b1.neg();\n }\n if (a2.negative) {\n a2 = a2.neg();\n b2 = b2.neg();\n }\n\n return [\n { a: a1, b: b1 },\n { a: a2, b: b2 },\n ];\n};\n\nShortCurve.prototype._endoSplit = function _endoSplit(k) {\n var basis = this.endo.basis;\n var v1 = basis[0];\n var v2 = basis[1];\n\n var c1 = v2.b.mul(k).divRound(this.n);\n var c2 = v1.b.neg().mul(k).divRound(this.n);\n\n var p1 = c1.mul(v1.a);\n var p2 = c2.mul(v2.a);\n var q1 = c1.mul(v1.b);\n var q2 = c2.mul(v2.b);\n\n // Calculate answer\n var k1 = k.sub(p1).sub(p2);\n var k2 = q1.add(q2).neg();\n return { k1: k1, k2: k2 };\n};\n\nShortCurve.prototype.pointFromX = function pointFromX(x, odd) {\n x = new BN(x, 16);\n if (!x.red)\n x = x.toRed(this.red);\n\n var y2 = x.redSqr().redMul(x).redIAdd(x.redMul(this.a)).redIAdd(this.b);\n var y = y2.redSqrt();\n if (y.redSqr().redSub(y2).cmp(this.zero) !== 0)\n throw new Error('invalid point');\n\n // XXX Is there any way to tell if the number is odd without converting it\n // to non-red form?\n var isOdd = y.fromRed().isOdd();\n if (odd && !isOdd || !odd && isOdd)\n y = y.redNeg();\n\n return this.point(x, y);\n};\n\nShortCurve.prototype.validate = function validate(point) {\n if (point.inf)\n return true;\n\n var x = point.x;\n var y = point.y;\n\n var ax = this.a.redMul(x);\n var rhs = x.redSqr().redMul(x).redIAdd(ax).redIAdd(this.b);\n return y.redSqr().redISub(rhs).cmpn(0) === 0;\n};\n\nShortCurve.prototype._endoWnafMulAdd =\n function _endoWnafMulAdd(points, coeffs, jacobianResult) {\n var npoints = this._endoWnafT1;\n var ncoeffs = this._endoWnafT2;\n for (var i = 0; i < points.length; i++) {\n var split = this._endoSplit(coeffs[i]);\n var p = points[i];\n var beta = p._getBeta();\n\n if (split.k1.negative) {\n split.k1.ineg();\n p = p.neg(true);\n }\n if (split.k2.negative) {\n split.k2.ineg();\n beta = beta.neg(true);\n }\n\n npoints[i * 2] = p;\n npoints[i * 2 + 1] = beta;\n ncoeffs[i * 2] = split.k1;\n ncoeffs[i * 2 + 1] = split.k2;\n }\n var res = this._wnafMulAdd(1, npoints, ncoeffs, i * 2, jacobianResult);\n\n // Clean-up references to points and coefficients\n for (var j = 0; j < i * 2; j++) {\n npoints[j] = null;\n ncoeffs[j] = null;\n }\n return res;\n };\n\nfunction Point(curve, x, y, isRed) {\n Base.BasePoint.call(this, curve, 'affine');\n if (x === null && y === null) {\n this.x = null;\n this.y = null;\n this.inf = true;\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n // Force redgomery representation when loading from JSON\n if (isRed) {\n this.x.forceRed(this.curve.red);\n this.y.forceRed(this.curve.red);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n this.inf = false;\n }\n}\ninherits(Point, Base.BasePoint);\n\nShortCurve.prototype.point = function point(x, y, isRed) {\n return new Point(this, x, y, isRed);\n};\n\nShortCurve.prototype.pointFromJSON = function pointFromJSON(obj, red) {\n return Point.fromJSON(this, obj, red);\n};\n\nPoint.prototype._getBeta = function _getBeta() {\n if (!this.curve.endo)\n return;\n\n var pre = this.precomputed;\n if (pre && pre.beta)\n return pre.beta;\n\n var beta = this.curve.point(this.x.redMul(this.curve.endo.beta), this.y);\n if (pre) {\n var curve = this.curve;\n var endoMul = function(p) {\n return curve.point(p.x.redMul(curve.endo.beta), p.y);\n };\n pre.beta = beta;\n beta.precomputed = {\n beta: null,\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(endoMul),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(endoMul),\n },\n };\n }\n return beta;\n};\n\nPoint.prototype.toJSON = function toJSON() {\n if (!this.precomputed)\n return [ this.x, this.y ];\n\n return [ this.x, this.y, this.precomputed && {\n doubles: this.precomputed.doubles && {\n step: this.precomputed.doubles.step,\n points: this.precomputed.doubles.points.slice(1),\n },\n naf: this.precomputed.naf && {\n wnd: this.precomputed.naf.wnd,\n points: this.precomputed.naf.points.slice(1),\n },\n } ];\n};\n\nPoint.fromJSON = function fromJSON(curve, obj, red) {\n if (typeof obj === 'string')\n obj = JSON.parse(obj);\n var res = curve.point(obj[0], obj[1], red);\n if (!obj[2])\n return res;\n\n function obj2point(obj) {\n return curve.point(obj[0], obj[1], red);\n }\n\n var pre = obj[2];\n res.precomputed = {\n beta: null,\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: [ res ].concat(pre.doubles.points.map(obj2point)),\n },\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: [ res ].concat(pre.naf.points.map(obj2point)),\n },\n };\n return res;\n};\n\nPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nPoint.prototype.isInfinity = function isInfinity() {\n return this.inf;\n};\n\nPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.inf)\n return p;\n\n // P + O = P\n if (p.inf)\n return this;\n\n // P + P = 2P\n if (this.eq(p))\n return this.dbl();\n\n // P + (-P) = O\n if (this.neg().eq(p))\n return this.curve.point(null, null);\n\n // P + Q = O\n if (this.x.cmp(p.x) === 0)\n return this.curve.point(null, null);\n\n var c = this.y.redSub(p.y);\n if (c.cmpn(0) !== 0)\n c = c.redMul(this.x.redSub(p.x).redInvm());\n var nx = c.redSqr().redISub(this.x).redISub(p.x);\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.dbl = function dbl() {\n if (this.inf)\n return this;\n\n // 2P = O\n var ys1 = this.y.redAdd(this.y);\n if (ys1.cmpn(0) === 0)\n return this.curve.point(null, null);\n\n var a = this.curve.a;\n\n var x2 = this.x.redSqr();\n var dyinv = ys1.redInvm();\n var c = x2.redAdd(x2).redIAdd(x2).redIAdd(a).redMul(dyinv);\n\n var nx = c.redSqr().redISub(this.x.redAdd(this.x));\n var ny = c.redMul(this.x.redSub(nx)).redISub(this.y);\n return this.curve.point(nx, ny);\n};\n\nPoint.prototype.getX = function getX() {\n return this.x.fromRed();\n};\n\nPoint.prototype.getY = function getY() {\n return this.y.fromRed();\n};\n\nPoint.prototype.mul = function mul(k) {\n k = new BN(k, 16);\n if (this.isInfinity())\n return this;\n else if (this._hasDoubles(k))\n return this.curve._fixedNafMul(this, k);\n else if (this.curve.endo)\n return this.curve._endoWnafMulAdd([ this ], [ k ]);\n else\n return this.curve._wnafMul(this, k);\n};\n\nPoint.prototype.mulAdd = function mulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2);\n};\n\nPoint.prototype.jmulAdd = function jmulAdd(k1, p2, k2) {\n var points = [ this, p2 ];\n var coeffs = [ k1, k2 ];\n if (this.curve.endo)\n return this.curve._endoWnafMulAdd(points, coeffs, true);\n else\n return this.curve._wnafMulAdd(1, points, coeffs, 2, true);\n};\n\nPoint.prototype.eq = function eq(p) {\n return this === p ||\n this.inf === p.inf &&\n (this.inf || this.x.cmp(p.x) === 0 && this.y.cmp(p.y) === 0);\n};\n\nPoint.prototype.neg = function neg(_precompute) {\n if (this.inf)\n return this;\n\n var res = this.curve.point(this.x, this.y.redNeg());\n if (_precompute && this.precomputed) {\n var pre = this.precomputed;\n var negate = function(p) {\n return p.neg();\n };\n res.precomputed = {\n naf: pre.naf && {\n wnd: pre.naf.wnd,\n points: pre.naf.points.map(negate),\n },\n doubles: pre.doubles && {\n step: pre.doubles.step,\n points: pre.doubles.points.map(negate),\n },\n };\n }\n return res;\n};\n\nPoint.prototype.toJ = function toJ() {\n if (this.inf)\n return this.curve.jpoint(null, null, null);\n\n var res = this.curve.jpoint(this.x, this.y, this.curve.one);\n return res;\n};\n\nfunction JPoint(curve, x, y, z) {\n Base.BasePoint.call(this, curve, 'jacobian');\n if (x === null && y === null && z === null) {\n this.x = this.curve.one;\n this.y = this.curve.one;\n this.z = new BN(0);\n } else {\n this.x = new BN(x, 16);\n this.y = new BN(y, 16);\n this.z = new BN(z, 16);\n }\n if (!this.x.red)\n this.x = this.x.toRed(this.curve.red);\n if (!this.y.red)\n this.y = this.y.toRed(this.curve.red);\n if (!this.z.red)\n this.z = this.z.toRed(this.curve.red);\n\n this.zOne = this.z === this.curve.one;\n}\ninherits(JPoint, Base.BasePoint);\n\nShortCurve.prototype.jpoint = function jpoint(x, y, z) {\n return new JPoint(this, x, y, z);\n};\n\nJPoint.prototype.toP = function toP() {\n if (this.isInfinity())\n return this.curve.point(null, null);\n\n var zinv = this.z.redInvm();\n var zinv2 = zinv.redSqr();\n var ax = this.x.redMul(zinv2);\n var ay = this.y.redMul(zinv2).redMul(zinv);\n\n return this.curve.point(ax, ay);\n};\n\nJPoint.prototype.neg = function neg() {\n return this.curve.jpoint(this.x, this.y.redNeg(), this.z);\n};\n\nJPoint.prototype.add = function add(p) {\n // O + P = P\n if (this.isInfinity())\n return p;\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 12M + 4S + 7A\n var pz2 = p.z.redSqr();\n var z2 = this.z.redSqr();\n var u1 = this.x.redMul(pz2);\n var u2 = p.x.redMul(z2);\n var s1 = this.y.redMul(pz2.redMul(p.z));\n var s2 = p.y.redMul(z2.redMul(this.z));\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(p.z).redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mixedAdd = function mixedAdd(p) {\n // O + P = P\n if (this.isInfinity())\n return p.toJ();\n\n // P + O = P\n if (p.isInfinity())\n return this;\n\n // 8M + 3S + 7A\n var z2 = this.z.redSqr();\n var u1 = this.x;\n var u2 = p.x.redMul(z2);\n var s1 = this.y;\n var s2 = p.y.redMul(z2).redMul(this.z);\n\n var h = u1.redSub(u2);\n var r = s1.redSub(s2);\n if (h.cmpn(0) === 0) {\n if (r.cmpn(0) !== 0)\n return this.curve.jpoint(null, null, null);\n else\n return this.dbl();\n }\n\n var h2 = h.redSqr();\n var h3 = h2.redMul(h);\n var v = u1.redMul(h2);\n\n var nx = r.redSqr().redIAdd(h3).redISub(v).redISub(v);\n var ny = r.redMul(v.redISub(nx)).redISub(s1.redMul(h3));\n var nz = this.z.redMul(h);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.dblp = function dblp(pow) {\n if (pow === 0)\n return this;\n if (this.isInfinity())\n return this;\n if (!pow)\n return this.dbl();\n\n var i;\n if (this.curve.zeroA || this.curve.threeA) {\n var r = this;\n for (i = 0; i < pow; i++)\n r = r.dbl();\n return r;\n }\n\n // 1M + 2S + 1A + N * (4S + 5M + 8A)\n // N = 1 => 6M + 6S + 9A\n var a = this.curve.a;\n var tinv = this.curve.tinv;\n\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n // Reuse results\n var jyd = jy.redAdd(jy);\n for (i = 0; i < pow; i++) {\n var jx2 = jx.redSqr();\n var jyd2 = jyd.redSqr();\n var jyd4 = jyd2.redSqr();\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var t1 = jx.redMul(jyd2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n var dny = c.redMul(t2);\n dny = dny.redIAdd(dny).redISub(jyd4);\n var nz = jyd.redMul(jz);\n if (i + 1 < pow)\n jz4 = jz4.redMul(jyd4);\n\n jx = nx;\n jz = nz;\n jyd = dny;\n }\n\n return this.curve.jpoint(jx, jyd.redMul(tinv), jz);\n};\n\nJPoint.prototype.dbl = function dbl() {\n if (this.isInfinity())\n return this;\n\n if (this.curve.zeroA)\n return this._zeroDbl();\n else if (this.curve.threeA)\n return this._threeDbl();\n else\n return this._dbl();\n};\n\nJPoint.prototype._zeroDbl = function _zeroDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 14A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // T = M ^ 2 - 2*S\n var t = m.redSqr().redISub(s).redISub(s);\n\n // 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2*Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html\n // #doubling-dbl-2009-l\n // 2M + 5S + 13A\n\n // A = X1^2\n var a = this.x.redSqr();\n // B = Y1^2\n var b = this.y.redSqr();\n // C = B^2\n var c = b.redSqr();\n // D = 2 * ((X1 + B)^2 - A - C)\n var d = this.x.redAdd(b).redSqr().redISub(a).redISub(c);\n d = d.redIAdd(d);\n // E = 3 * A\n var e = a.redAdd(a).redIAdd(a);\n // F = E^2\n var f = e.redSqr();\n\n // 8 * C\n var c8 = c.redIAdd(c);\n c8 = c8.redIAdd(c8);\n c8 = c8.redIAdd(c8);\n\n // X3 = F - 2 * D\n nx = f.redISub(d).redISub(d);\n // Y3 = E * (D - X3) - 8 * C\n ny = e.redMul(d.redISub(nx)).redISub(c8);\n // Z3 = 2 * Y1 * Z1\n nz = this.y.redMul(this.z);\n nz = nz.redIAdd(nz);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._threeDbl = function _threeDbl() {\n var nx;\n var ny;\n var nz;\n // Z = 1\n if (this.zOne) {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html\n // #doubling-mdbl-2007-bl\n // 1M + 5S + 15A\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // S = 2 * ((X1 + YY)^2 - XX - YYYY)\n var s = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n s = s.redIAdd(s);\n // M = 3 * XX + a\n var m = xx.redAdd(xx).redIAdd(xx).redIAdd(this.curve.a);\n // T = M^2 - 2 * S\n var t = m.redSqr().redISub(s).redISub(s);\n // X3 = T\n nx = t;\n // Y3 = M * (S - T) - 8 * YYYY\n var yyyy8 = yyyy.redIAdd(yyyy);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n yyyy8 = yyyy8.redIAdd(yyyy8);\n ny = m.redMul(s.redISub(t)).redISub(yyyy8);\n // Z3 = 2 * Y1\n nz = this.y.redAdd(this.y);\n } else {\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-3.html#doubling-dbl-2001-b\n // 3M + 5S\n\n // delta = Z1^2\n var delta = this.z.redSqr();\n // gamma = Y1^2\n var gamma = this.y.redSqr();\n // beta = X1 * gamma\n var beta = this.x.redMul(gamma);\n // alpha = 3 * (X1 - delta) * (X1 + delta)\n var alpha = this.x.redSub(delta).redMul(this.x.redAdd(delta));\n alpha = alpha.redAdd(alpha).redIAdd(alpha);\n // X3 = alpha^2 - 8 * beta\n var beta4 = beta.redIAdd(beta);\n beta4 = beta4.redIAdd(beta4);\n var beta8 = beta4.redAdd(beta4);\n nx = alpha.redSqr().redISub(beta8);\n // Z3 = (Y1 + Z1)^2 - gamma - delta\n nz = this.y.redAdd(this.z).redSqr().redISub(gamma).redISub(delta);\n // Y3 = alpha * (4 * beta - X3) - 8 * gamma^2\n var ggamma8 = gamma.redSqr();\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ggamma8 = ggamma8.redIAdd(ggamma8);\n ny = alpha.redMul(beta4.redISub(nx)).redISub(ggamma8);\n }\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype._dbl = function _dbl() {\n var a = this.curve.a;\n\n // 4M + 6S + 10A\n var jx = this.x;\n var jy = this.y;\n var jz = this.z;\n var jz4 = jz.redSqr().redSqr();\n\n var jx2 = jx.redSqr();\n var jy2 = jy.redSqr();\n\n var c = jx2.redAdd(jx2).redIAdd(jx2).redIAdd(a.redMul(jz4));\n\n var jxd4 = jx.redAdd(jx);\n jxd4 = jxd4.redIAdd(jxd4);\n var t1 = jxd4.redMul(jy2);\n var nx = c.redSqr().redISub(t1.redAdd(t1));\n var t2 = t1.redISub(nx);\n\n var jyd8 = jy2.redSqr();\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n jyd8 = jyd8.redIAdd(jyd8);\n var ny = c.redMul(t2).redISub(jyd8);\n var nz = jy.redAdd(jy).redMul(jz);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.trpl = function trpl() {\n if (!this.curve.zeroA)\n return this.dbl().add(this);\n\n // hyperelliptic.org/EFD/g1p/auto-shortw-jacobian-0.html#tripling-tpl-2007-bl\n // 5M + 10S + ...\n\n // XX = X1^2\n var xx = this.x.redSqr();\n // YY = Y1^2\n var yy = this.y.redSqr();\n // ZZ = Z1^2\n var zz = this.z.redSqr();\n // YYYY = YY^2\n var yyyy = yy.redSqr();\n // M = 3 * XX + a * ZZ2; a = 0\n var m = xx.redAdd(xx).redIAdd(xx);\n // MM = M^2\n var mm = m.redSqr();\n // E = 6 * ((X1 + YY)^2 - XX - YYYY) - MM\n var e = this.x.redAdd(yy).redSqr().redISub(xx).redISub(yyyy);\n e = e.redIAdd(e);\n e = e.redAdd(e).redIAdd(e);\n e = e.redISub(mm);\n // EE = E^2\n var ee = e.redSqr();\n // T = 16*YYYY\n var t = yyyy.redIAdd(yyyy);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n t = t.redIAdd(t);\n // U = (M + E)^2 - MM - EE - T\n var u = m.redIAdd(e).redSqr().redISub(mm).redISub(ee).redISub(t);\n // X3 = 4 * (X1 * EE - 4 * YY * U)\n var yyu4 = yy.redMul(u);\n yyu4 = yyu4.redIAdd(yyu4);\n yyu4 = yyu4.redIAdd(yyu4);\n var nx = this.x.redMul(ee).redISub(yyu4);\n nx = nx.redIAdd(nx);\n nx = nx.redIAdd(nx);\n // Y3 = 8 * Y1 * (U * (T - U) - E * EE)\n var ny = this.y.redMul(u.redMul(t.redISub(u)).redISub(e.redMul(ee)));\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n ny = ny.redIAdd(ny);\n // Z3 = (Z1 + E)^2 - ZZ - EE\n var nz = this.z.redAdd(e).redSqr().redISub(zz).redISub(ee);\n\n return this.curve.jpoint(nx, ny, nz);\n};\n\nJPoint.prototype.mul = function mul(k, kbase) {\n k = new BN(k, kbase);\n\n return this.curve._wnafMul(this, k);\n};\n\nJPoint.prototype.eq = function eq(p) {\n if (p.type === 'affine')\n return this.eq(p.toJ());\n\n if (this === p)\n return true;\n\n // x1 * z2^2 == x2 * z1^2\n var z2 = this.z.redSqr();\n var pz2 = p.z.redSqr();\n if (this.x.redMul(pz2).redISub(p.x.redMul(z2)).cmpn(0) !== 0)\n return false;\n\n // y1 * z2^3 == y2 * z1^3\n var z3 = z2.redMul(this.z);\n var pz3 = pz2.redMul(p.z);\n return this.y.redMul(pz3).redISub(p.y.redMul(z3)).cmpn(0) === 0;\n};\n\nJPoint.prototype.eqXToP = function eqXToP(x) {\n var zs = this.z.redSqr();\n var rx = x.toRed(this.curve.red).redMul(zs);\n if (this.x.cmp(rx) === 0)\n return true;\n\n var xc = x.clone();\n var t = this.curve.redN.redMul(zs);\n for (;;) {\n xc.iadd(this.curve.n);\n if (xc.cmp(this.curve.p) >= 0)\n return false;\n\n rx.redIAdd(t);\n if (this.x.cmp(rx) === 0)\n return true;\n }\n};\n\nJPoint.prototype.inspect = function inspect() {\n if (this.isInfinity())\n return '';\n return '';\n};\n\nJPoint.prototype.isInfinity = function isInfinity() {\n // XXX This code assumes that zero is always zero in red\n return this.z.cmpn(0) === 0;\n};\n","'use strict';\n\nvar curves = exports;\n\nvar hash = require('hash.js');\nvar curve = require('./curve');\nvar utils = require('./utils');\n\nvar assert = utils.assert;\n\nfunction PresetCurve(options) {\n if (options.type === 'short')\n this.curve = new curve.short(options);\n else if (options.type === 'edwards')\n this.curve = new curve.edwards(options);\n else\n this.curve = new curve.mont(options);\n this.g = this.curve.g;\n this.n = this.curve.n;\n this.hash = options.hash;\n\n assert(this.g.validate(), 'Invalid curve');\n assert(this.g.mul(this.n).isInfinity(), 'Invalid curve, G*N != O');\n}\ncurves.PresetCurve = PresetCurve;\n\nfunction defineCurve(name, options) {\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n get: function() {\n var curve = new PresetCurve(options);\n Object.defineProperty(curves, name, {\n configurable: true,\n enumerable: true,\n value: curve,\n });\n return curve;\n },\n });\n}\n\ndefineCurve('p192', {\n type: 'short',\n prime: 'p192',\n p: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff fffffffc',\n b: '64210519 e59c80e7 0fa7e9ab 72243049 feb8deec c146b9b1',\n n: 'ffffffff ffffffff ffffffff 99def836 146bc9b1 b4d22831',\n hash: hash.sha256,\n gRed: false,\n g: [\n '188da80e b03090f6 7cbf20eb 43a18800 f4ff0afd 82ff1012',\n '07192b95 ffc8da78 631011ed 6b24cdd5 73f977a1 1e794811',\n ],\n});\n\ndefineCurve('p224', {\n type: 'short',\n prime: 'p224',\n p: 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001',\n a: 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff fffffffe',\n b: 'b4050a85 0c04b3ab f5413256 5044b0b7 d7bfd8ba 270b3943 2355ffb4',\n n: 'ffffffff ffffffff ffffffff ffff16a2 e0b8f03e 13dd2945 5c5c2a3d',\n hash: hash.sha256,\n gRed: false,\n g: [\n 'b70e0cbd 6bb4bf7f 321390b9 4a03c1d3 56c21122 343280d6 115c1d21',\n 'bd376388 b5f723fb 4c22dfe6 cd4375a0 5a074764 44d58199 85007e34',\n ],\n});\n\ndefineCurve('p256', {\n type: 'short',\n prime: null,\n p: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff ffffffff',\n a: 'ffffffff 00000001 00000000 00000000 00000000 ffffffff ffffffff fffffffc',\n b: '5ac635d8 aa3a93e7 b3ebbd55 769886bc 651d06b0 cc53b0f6 3bce3c3e 27d2604b',\n n: 'ffffffff 00000000 ffffffff ffffffff bce6faad a7179e84 f3b9cac2 fc632551',\n hash: hash.sha256,\n gRed: false,\n g: [\n '6b17d1f2 e12c4247 f8bce6e5 63a440f2 77037d81 2deb33a0 f4a13945 d898c296',\n '4fe342e2 fe1a7f9b 8ee7eb4a 7c0f9e16 2bce3357 6b315ece cbb64068 37bf51f5',\n ],\n});\n\ndefineCurve('p384', {\n type: 'short',\n prime: null,\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 ffffffff',\n a: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'fffffffe ffffffff 00000000 00000000 fffffffc',\n b: 'b3312fa7 e23ee7e4 988e056b e3f82d19 181d9c6e fe814112 0314088f ' +\n '5013875a c656398d 8a2ed19d 2a85c8ed d3ec2aef',\n n: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff c7634d81 ' +\n 'f4372ddf 581a0db2 48b0a77a ecec196a ccc52973',\n hash: hash.sha384,\n gRed: false,\n g: [\n 'aa87ca22 be8b0537 8eb1c71e f320ad74 6e1d3b62 8ba79b98 59f741e0 82542a38 ' +\n '5502f25d bf55296c 3a545e38 72760ab7',\n '3617de4a 96262c6f 5d9e98bf 9292dc29 f8f41dbd 289a147c e9da3113 b5f0b8c0 ' +\n '0a60b1ce 1d7e819d 7a431d7c 90ea0e5f',\n ],\n});\n\ndefineCurve('p521', {\n type: 'short',\n prime: null,\n p: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff',\n a: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff ffffffff ffffffff fffffffc',\n b: '00000051 953eb961 8e1c9a1f 929a21a0 b68540ee a2da725b ' +\n '99b315f3 b8b48991 8ef109e1 56193951 ec7e937b 1652c0bd ' +\n '3bb1bf07 3573df88 3d2c34f1 ef451fd4 6b503f00',\n n: '000001ff ffffffff ffffffff ffffffff ffffffff ffffffff ' +\n 'ffffffff ffffffff fffffffa 51868783 bf2f966b 7fcc0148 ' +\n 'f709a5d0 3bb5c9b8 899c47ae bb6fb71e 91386409',\n hash: hash.sha512,\n gRed: false,\n g: [\n '000000c6 858e06b7 0404e9cd 9e3ecb66 2395b442 9c648139 ' +\n '053fb521 f828af60 6b4d3dba a14b5e77 efe75928 fe1dc127 ' +\n 'a2ffa8de 3348b3c1 856a429b f97e7e31 c2e5bd66',\n '00000118 39296a78 9a3bc004 5c8a5fb4 2c7d1bd9 98f54449 ' +\n '579b4468 17afbd17 273e662c 97ee7299 5ef42640 c550b901 ' +\n '3fad0761 353c7086 a272c240 88be9476 9fd16650',\n ],\n});\n\ndefineCurve('curve25519', {\n type: 'mont',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '76d06',\n b: '1',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '9',\n ],\n});\n\ndefineCurve('ed25519', {\n type: 'edwards',\n prime: 'p25519',\n p: '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed',\n a: '-1',\n c: '1',\n // -121665 * (121666^(-1)) (mod P)\n d: '52036cee2b6ffe73 8cc740797779e898 00700a4d4141d8ab 75eb4dca135978a3',\n n: '1000000000000000 0000000000000000 14def9dea2f79cd6 5812631a5cf5d3ed',\n hash: hash.sha256,\n gRed: false,\n g: [\n '216936d3cd6e53fec0a4e231fdd6dc5c692cc7609525a7b2c9562d608f25d51a',\n\n // 4/5\n '6666666666666666666666666666666666666666666666666666666666666658',\n ],\n});\n\nvar pre;\ntry {\n pre = require('./precomputed/secp256k1');\n} catch (e) {\n pre = undefined;\n}\n\ndefineCurve('secp256k1', {\n type: 'short',\n prime: 'k256',\n p: 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f',\n a: '0',\n b: '7',\n n: 'ffffffff ffffffff ffffffff fffffffe baaedce6 af48a03b bfd25e8c d0364141',\n h: '1',\n hash: hash.sha256,\n\n // Precomputed endomorphism\n beta: '7ae96a2b657c07106e64479eac3434e99cf0497512f58995c1396c28719501ee',\n lambda: '5363ad4cc05c30e0a5261c028812645a122e22ea20816678df02967c1b23bd72',\n basis: [\n {\n a: '3086d221a7d46bcde86c90e49284eb15',\n b: '-e4437ed6010e88286f547fa90abfe4c3',\n },\n {\n a: '114ca50f7a8e2f3f657c1108d9d44cfd8',\n b: '3086d221a7d46bcde86c90e49284eb15',\n },\n ],\n\n gRed: false,\n g: [\n '79be667ef9dcbbac55a06295ce870b07029bfcdb2dce28d959f2815b16f81798',\n '483ada7726a3c4655da4fbfc0e1108a8fd17b448a68554199c47d08ffb10d4b8',\n pre,\n ],\n});\n","'use strict';\n\nvar BN = require('bn.js');\nvar HmacDRBG = require('hmac-drbg');\nvar utils = require('../utils');\nvar curves = require('../curves');\nvar rand = require('brorand');\nvar assert = utils.assert;\n\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EC(options) {\n if (!(this instanceof EC))\n return new EC(options);\n\n // Shortcut `elliptic.ec(curve-name)`\n if (typeof options === 'string') {\n assert(Object.prototype.hasOwnProperty.call(curves, options),\n 'Unknown curve ' + options);\n\n options = curves[options];\n }\n\n // Shortcut for `elliptic.ec(elliptic.curves.curveName)`\n if (options instanceof curves.PresetCurve)\n options = { curve: options };\n\n this.curve = options.curve.curve;\n this.n = this.curve.n;\n this.nh = this.n.ushrn(1);\n this.g = this.curve.g;\n\n // Point on curve\n this.g = options.curve.g;\n this.g.precompute(options.curve.n.bitLength() + 1);\n\n // Hash for function for DRBG\n this.hash = options.hash || options.curve.hash;\n}\nmodule.exports = EC;\n\nEC.prototype.keyPair = function keyPair(options) {\n return new KeyPair(this, options);\n};\n\nEC.prototype.keyFromPrivate = function keyFromPrivate(priv, enc) {\n return KeyPair.fromPrivate(this, priv, enc);\n};\n\nEC.prototype.keyFromPublic = function keyFromPublic(pub, enc) {\n return KeyPair.fromPublic(this, pub, enc);\n};\n\nEC.prototype.genKeyPair = function genKeyPair(options) {\n if (!options)\n options = {};\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n entropy: options.entropy || rand(this.hash.hmacStrength),\n entropyEnc: options.entropy && options.entropyEnc || 'utf8',\n nonce: this.n.toArray(),\n });\n\n var bytes = this.n.byteLength();\n var ns2 = this.n.sub(new BN(2));\n for (;;) {\n var priv = new BN(drbg.generate(bytes));\n if (priv.cmp(ns2) > 0)\n continue;\n\n priv.iaddn(1);\n return this.keyFromPrivate(priv);\n }\n};\n\nEC.prototype._truncateToN = function _truncateToN(msg, truncOnly) {\n var delta = msg.byteLength() * 8 - this.n.bitLength();\n if (delta > 0)\n msg = msg.ushrn(delta);\n if (!truncOnly && msg.cmp(this.n) >= 0)\n return msg.sub(this.n);\n else\n return msg;\n};\n\nEC.prototype.sign = function sign(msg, key, enc, options) {\n if (typeof enc === 'object') {\n options = enc;\n enc = null;\n }\n if (!options)\n options = {};\n\n key = this.keyFromPrivate(key, enc);\n msg = this._truncateToN(new BN(msg, 16));\n\n // Zero-extend key to provide enough entropy\n var bytes = this.n.byteLength();\n var bkey = key.getPrivate().toArray('be', bytes);\n\n // Zero-extend nonce to have the same byte size as N\n var nonce = msg.toArray('be', bytes);\n\n // Instantiate Hmac_DRBG\n var drbg = new HmacDRBG({\n hash: this.hash,\n entropy: bkey,\n nonce: nonce,\n pers: options.pers,\n persEnc: options.persEnc || 'utf8',\n });\n\n // Number of bytes to generate\n var ns1 = this.n.sub(new BN(1));\n\n for (var iter = 0; ; iter++) {\n var k = options.k ?\n options.k(iter) :\n new BN(drbg.generate(this.n.byteLength()));\n k = this._truncateToN(k, true);\n if (k.cmpn(1) <= 0 || k.cmp(ns1) >= 0)\n continue;\n\n var kp = this.g.mul(k);\n if (kp.isInfinity())\n continue;\n\n var kpX = kp.getX();\n var r = kpX.umod(this.n);\n if (r.cmpn(0) === 0)\n continue;\n\n var s = k.invm(this.n).mul(r.mul(key.getPrivate()).iadd(msg));\n s = s.umod(this.n);\n if (s.cmpn(0) === 0)\n continue;\n\n var recoveryParam = (kp.getY().isOdd() ? 1 : 0) |\n (kpX.cmp(r) !== 0 ? 2 : 0);\n\n // Use complement of `s`, if it is > `n / 2`\n if (options.canonical && s.cmp(this.nh) > 0) {\n s = this.n.sub(s);\n recoveryParam ^= 1;\n }\n\n return new Signature({ r: r, s: s, recoveryParam: recoveryParam });\n }\n};\n\nEC.prototype.verify = function verify(msg, signature, key, enc) {\n msg = this._truncateToN(new BN(msg, 16));\n key = this.keyFromPublic(key, enc);\n signature = new Signature(signature, 'hex');\n\n // Perform primitive values validation\n var r = signature.r;\n var s = signature.s;\n if (r.cmpn(1) < 0 || r.cmp(this.n) >= 0)\n return false;\n if (s.cmpn(1) < 0 || s.cmp(this.n) >= 0)\n return false;\n\n // Validate signature\n var sinv = s.invm(this.n);\n var u1 = sinv.mul(msg).umod(this.n);\n var u2 = sinv.mul(r).umod(this.n);\n var p;\n\n if (!this.curve._maxwellTrick) {\n p = this.g.mulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n return p.getX().umod(this.n).cmp(r) === 0;\n }\n\n // NOTE: Greg Maxwell's trick, inspired by:\n // https://git.io/vad3K\n\n p = this.g.jmulAdd(u1, key.getPublic(), u2);\n if (p.isInfinity())\n return false;\n\n // Compare `p.x` of Jacobian point with `r`,\n // this will do `p.x == r * p.z^2` instead of multiplying `p.x` by the\n // inverse of `p.z^2`\n return p.eqXToP(r);\n};\n\nEC.prototype.recoverPubKey = function(msg, signature, j, enc) {\n assert((3 & j) === j, 'The recovery param is more than two bits');\n signature = new Signature(signature, enc);\n\n var n = this.n;\n var e = new BN(msg);\n var r = signature.r;\n var s = signature.s;\n\n // A set LSB signifies that the y-coordinate is odd\n var isYOdd = j & 1;\n var isSecondKey = j >> 1;\n if (r.cmp(this.curve.p.umod(this.curve.n)) >= 0 && isSecondKey)\n throw new Error('Unable to find sencond key candinate');\n\n // 1.1. Let x = r + jn.\n if (isSecondKey)\n r = this.curve.pointFromX(r.add(this.curve.n), isYOdd);\n else\n r = this.curve.pointFromX(r, isYOdd);\n\n var rInv = signature.r.invm(n);\n var s1 = n.sub(e).mul(rInv).umod(n);\n var s2 = s.mul(rInv).umod(n);\n\n // 1.6.1 Compute Q = r^-1 (sR - eG)\n // Q = r^-1 (sR + -eG)\n return this.g.mulAdd(s1, r, s2);\n};\n\nEC.prototype.getKeyRecoveryParam = function(e, signature, Q, enc) {\n signature = new Signature(signature, enc);\n if (signature.recoveryParam !== null)\n return signature.recoveryParam;\n\n for (var i = 0; i < 4; i++) {\n var Qprime;\n try {\n Qprime = this.recoverPubKey(e, signature, i);\n } catch (e) {\n continue;\n }\n\n if (Qprime.eq(Q))\n return i;\n }\n throw new Error('Unable to find valid recovery factor');\n};\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction KeyPair(ec, options) {\n this.ec = ec;\n this.priv = null;\n this.pub = null;\n\n // KeyPair(ec, { priv: ..., pub: ... })\n if (options.priv)\n this._importPrivate(options.priv, options.privEnc);\n if (options.pub)\n this._importPublic(options.pub, options.pubEnc);\n}\nmodule.exports = KeyPair;\n\nKeyPair.fromPublic = function fromPublic(ec, pub, enc) {\n if (pub instanceof KeyPair)\n return pub;\n\n return new KeyPair(ec, {\n pub: pub,\n pubEnc: enc,\n });\n};\n\nKeyPair.fromPrivate = function fromPrivate(ec, priv, enc) {\n if (priv instanceof KeyPair)\n return priv;\n\n return new KeyPair(ec, {\n priv: priv,\n privEnc: enc,\n });\n};\n\nKeyPair.prototype.validate = function validate() {\n var pub = this.getPublic();\n\n if (pub.isInfinity())\n return { result: false, reason: 'Invalid public key' };\n if (!pub.validate())\n return { result: false, reason: 'Public key is not a point' };\n if (!pub.mul(this.ec.curve.n).isInfinity())\n return { result: false, reason: 'Public key * N != O' };\n\n return { result: true, reason: null };\n};\n\nKeyPair.prototype.getPublic = function getPublic(compact, enc) {\n // compact is optional argument\n if (typeof compact === 'string') {\n enc = compact;\n compact = null;\n }\n\n if (!this.pub)\n this.pub = this.ec.g.mul(this.priv);\n\n if (!enc)\n return this.pub;\n\n return this.pub.encode(enc, compact);\n};\n\nKeyPair.prototype.getPrivate = function getPrivate(enc) {\n if (enc === 'hex')\n return this.priv.toString(16, 2);\n else\n return this.priv;\n};\n\nKeyPair.prototype._importPrivate = function _importPrivate(key, enc) {\n this.priv = new BN(key, enc || 16);\n\n // Ensure that the priv won't be bigger than n, otherwise we may fail\n // in fixed multiplication method\n this.priv = this.priv.umod(this.ec.curve.n);\n};\n\nKeyPair.prototype._importPublic = function _importPublic(key, enc) {\n if (key.x || key.y) {\n // Montgomery points only have an `x` coordinate.\n // Weierstrass/Edwards points on the other hand have both `x` and\n // `y` coordinates.\n if (this.ec.curve.type === 'mont') {\n assert(key.x, 'Need x coordinate');\n } else if (this.ec.curve.type === 'short' ||\n this.ec.curve.type === 'edwards') {\n assert(key.x && key.y, 'Need both x and y coordinate');\n }\n this.pub = this.ec.curve.point(key.x, key.y);\n return;\n }\n this.pub = this.ec.curve.decodePoint(key, enc);\n};\n\n// ECDH\nKeyPair.prototype.derive = function derive(pub) {\n if(!pub.validate()) {\n assert(pub.validate(), 'public point not validated');\n }\n return pub.mul(this.priv).getX();\n};\n\n// ECDSA\nKeyPair.prototype.sign = function sign(msg, enc, options) {\n return this.ec.sign(msg, this, enc, options);\n};\n\nKeyPair.prototype.verify = function verify(msg, signature) {\n return this.ec.verify(msg, signature, this);\n};\n\nKeyPair.prototype.inspect = function inspect() {\n return '';\n};\n","'use strict';\n\nvar BN = require('bn.js');\n\nvar utils = require('../utils');\nvar assert = utils.assert;\n\nfunction Signature(options, enc) {\n if (options instanceof Signature)\n return options;\n\n if (this._importDER(options, enc))\n return;\n\n assert(options.r && options.s, 'Signature without r or s');\n this.r = new BN(options.r, 16);\n this.s = new BN(options.s, 16);\n if (options.recoveryParam === undefined)\n this.recoveryParam = null;\n else\n this.recoveryParam = options.recoveryParam;\n}\nmodule.exports = Signature;\n\nfunction Position() {\n this.place = 0;\n}\n\nfunction getLength(buf, p) {\n var initial = buf[p.place++];\n if (!(initial & 0x80)) {\n return initial;\n }\n var octetLen = initial & 0xf;\n\n // Indefinite length or overflow\n if (octetLen === 0 || octetLen > 4) {\n return false;\n }\n\n var val = 0;\n for (var i = 0, off = p.place; i < octetLen; i++, off++) {\n val <<= 8;\n val |= buf[off];\n val >>>= 0;\n }\n\n // Leading zeroes\n if (val <= 0x7f) {\n return false;\n }\n\n p.place = off;\n return val;\n}\n\nfunction rmPadding(buf) {\n var i = 0;\n var len = buf.length - 1;\n while (!buf[i] && !(buf[i + 1] & 0x80) && i < len) {\n i++;\n }\n if (i === 0) {\n return buf;\n }\n return buf.slice(i);\n}\n\nSignature.prototype._importDER = function _importDER(data, enc) {\n data = utils.toArray(data, enc);\n var p = new Position();\n if (data[p.place++] !== 0x30) {\n return false;\n }\n var len = getLength(data, p);\n if (len === false) {\n return false;\n }\n if ((len + p.place) !== data.length) {\n return false;\n }\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var rlen = getLength(data, p);\n if (rlen === false) {\n return false;\n }\n var r = data.slice(p.place, rlen + p.place);\n p.place += rlen;\n if (data[p.place++] !== 0x02) {\n return false;\n }\n var slen = getLength(data, p);\n if (slen === false) {\n return false;\n }\n if (data.length !== slen + p.place) {\n return false;\n }\n var s = data.slice(p.place, slen + p.place);\n if (r[0] === 0) {\n if (r[1] & 0x80) {\n r = r.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n if (s[0] === 0) {\n if (s[1] & 0x80) {\n s = s.slice(1);\n } else {\n // Leading zeroes\n return false;\n }\n }\n\n this.r = new BN(r);\n this.s = new BN(s);\n this.recoveryParam = null;\n\n return true;\n};\n\nfunction constructLength(arr, len) {\n if (len < 0x80) {\n arr.push(len);\n return;\n }\n var octets = 1 + (Math.log(len) / Math.LN2 >>> 3);\n arr.push(octets | 0x80);\n while (--octets) {\n arr.push((len >>> (octets << 3)) & 0xff);\n }\n arr.push(len);\n}\n\nSignature.prototype.toDER = function toDER(enc) {\n var r = this.r.toArray();\n var s = this.s.toArray();\n\n // Pad values\n if (r[0] & 0x80)\n r = [ 0 ].concat(r);\n // Pad values\n if (s[0] & 0x80)\n s = [ 0 ].concat(s);\n\n r = rmPadding(r);\n s = rmPadding(s);\n\n while (!s[0] && !(s[1] & 0x80)) {\n s = s.slice(1);\n }\n var arr = [ 0x02 ];\n constructLength(arr, r.length);\n arr = arr.concat(r);\n arr.push(0x02);\n constructLength(arr, s.length);\n var backHalf = arr.concat(s);\n var res = [ 0x30 ];\n constructLength(res, backHalf.length);\n res = res.concat(backHalf);\n return utils.encode(res, enc);\n};\n","'use strict';\n\nvar hash = require('hash.js');\nvar curves = require('../curves');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar KeyPair = require('./key');\nvar Signature = require('./signature');\n\nfunction EDDSA(curve) {\n assert(curve === 'ed25519', 'only tested with ed25519 so far');\n\n if (!(this instanceof EDDSA))\n return new EDDSA(curve);\n\n curve = curves[curve].curve;\n this.curve = curve;\n this.g = curve.g;\n this.g.precompute(curve.n.bitLength() + 1);\n\n this.pointClass = curve.point().constructor;\n this.encodingLength = Math.ceil(curve.n.bitLength() / 8);\n this.hash = hash.sha512;\n}\n\nmodule.exports = EDDSA;\n\n/**\n* @param {Array|String} message - message bytes\n* @param {Array|String|KeyPair} secret - secret bytes or a keypair\n* @returns {Signature} - signature\n*/\nEDDSA.prototype.sign = function sign(message, secret) {\n message = parseBytes(message);\n var key = this.keyFromSecret(secret);\n var r = this.hashInt(key.messagePrefix(), message);\n var R = this.g.mul(r);\n var Rencoded = this.encodePoint(R);\n var s_ = this.hashInt(Rencoded, key.pubBytes(), message)\n .mul(key.priv());\n var S = r.add(s_).umod(this.curve.n);\n return this.makeSignature({ R: R, S: S, Rencoded: Rencoded });\n};\n\n/**\n* @param {Array} message - message bytes\n* @param {Array|String|Signature} sig - sig bytes\n* @param {Array|String|Point|KeyPair} pub - public key\n* @returns {Boolean} - true if public key matches sig of message\n*/\nEDDSA.prototype.verify = function verify(message, sig, pub) {\n message = parseBytes(message);\n sig = this.makeSignature(sig);\n var key = this.keyFromPublic(pub);\n var h = this.hashInt(sig.Rencoded(), key.pubBytes(), message);\n var SG = this.g.mul(sig.S());\n var RplusAh = sig.R().add(key.pub().mul(h));\n return RplusAh.eq(SG);\n};\n\nEDDSA.prototype.hashInt = function hashInt() {\n var hash = this.hash();\n for (var i = 0; i < arguments.length; i++)\n hash.update(arguments[i]);\n return utils.intFromLE(hash.digest()).umod(this.curve.n);\n};\n\nEDDSA.prototype.keyFromPublic = function keyFromPublic(pub) {\n return KeyPair.fromPublic(this, pub);\n};\n\nEDDSA.prototype.keyFromSecret = function keyFromSecret(secret) {\n return KeyPair.fromSecret(this, secret);\n};\n\nEDDSA.prototype.makeSignature = function makeSignature(sig) {\n if (sig instanceof Signature)\n return sig;\n return new Signature(this, sig);\n};\n\n/**\n* * https://tools.ietf.org/html/draft-josefsson-eddsa-ed25519-03#section-5.2\n*\n* EDDSA defines methods for encoding and decoding points and integers. These are\n* helper convenience methods, that pass along to utility functions implied\n* parameters.\n*\n*/\nEDDSA.prototype.encodePoint = function encodePoint(point) {\n var enc = point.getY().toArray('le', this.encodingLength);\n enc[this.encodingLength - 1] |= point.getX().isOdd() ? 0x80 : 0;\n return enc;\n};\n\nEDDSA.prototype.decodePoint = function decodePoint(bytes) {\n bytes = utils.parseBytes(bytes);\n\n var lastIx = bytes.length - 1;\n var normed = bytes.slice(0, lastIx).concat(bytes[lastIx] & ~0x80);\n var xIsOdd = (bytes[lastIx] & 0x80) !== 0;\n\n var y = utils.intFromLE(normed);\n return this.curve.pointFromY(y, xIsOdd);\n};\n\nEDDSA.prototype.encodeInt = function encodeInt(num) {\n return num.toArray('le', this.encodingLength);\n};\n\nEDDSA.prototype.decodeInt = function decodeInt(bytes) {\n return utils.intFromLE(bytes);\n};\n\nEDDSA.prototype.isPoint = function isPoint(val) {\n return val instanceof this.pointClass;\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar parseBytes = utils.parseBytes;\nvar cachedProperty = utils.cachedProperty;\n\n/**\n* @param {EDDSA} eddsa - instance\n* @param {Object} params - public/private key parameters\n*\n* @param {Array} [params.secret] - secret seed bytes\n* @param {Point} [params.pub] - public key point (aka `A` in eddsa terms)\n* @param {Array} [params.pub] - public key point encoded as bytes\n*\n*/\nfunction KeyPair(eddsa, params) {\n this.eddsa = eddsa;\n this._secret = parseBytes(params.secret);\n if (eddsa.isPoint(params.pub))\n this._pub = params.pub;\n else\n this._pubBytes = parseBytes(params.pub);\n}\n\nKeyPair.fromPublic = function fromPublic(eddsa, pub) {\n if (pub instanceof KeyPair)\n return pub;\n return new KeyPair(eddsa, { pub: pub });\n};\n\nKeyPair.fromSecret = function fromSecret(eddsa, secret) {\n if (secret instanceof KeyPair)\n return secret;\n return new KeyPair(eddsa, { secret: secret });\n};\n\nKeyPair.prototype.secret = function secret() {\n return this._secret;\n};\n\ncachedProperty(KeyPair, 'pubBytes', function pubBytes() {\n return this.eddsa.encodePoint(this.pub());\n});\n\ncachedProperty(KeyPair, 'pub', function pub() {\n if (this._pubBytes)\n return this.eddsa.decodePoint(this._pubBytes);\n return this.eddsa.g.mul(this.priv());\n});\n\ncachedProperty(KeyPair, 'privBytes', function privBytes() {\n var eddsa = this.eddsa;\n var hash = this.hash();\n var lastIx = eddsa.encodingLength - 1;\n\n var a = hash.slice(0, eddsa.encodingLength);\n a[0] &= 248;\n a[lastIx] &= 127;\n a[lastIx] |= 64;\n\n return a;\n});\n\ncachedProperty(KeyPair, 'priv', function priv() {\n return this.eddsa.decodeInt(this.privBytes());\n});\n\ncachedProperty(KeyPair, 'hash', function hash() {\n return this.eddsa.hash().update(this.secret()).digest();\n});\n\ncachedProperty(KeyPair, 'messagePrefix', function messagePrefix() {\n return this.hash().slice(this.eddsa.encodingLength);\n});\n\nKeyPair.prototype.sign = function sign(message) {\n assert(this._secret, 'KeyPair can only verify');\n return this.eddsa.sign(message, this);\n};\n\nKeyPair.prototype.verify = function verify(message, sig) {\n return this.eddsa.verify(message, sig, this);\n};\n\nKeyPair.prototype.getSecret = function getSecret(enc) {\n assert(this._secret, 'KeyPair is public only');\n return utils.encode(this.secret(), enc);\n};\n\nKeyPair.prototype.getPublic = function getPublic(enc) {\n return utils.encode(this.pubBytes(), enc);\n};\n\nmodule.exports = KeyPair;\n","'use strict';\n\nvar BN = require('bn.js');\nvar utils = require('../utils');\nvar assert = utils.assert;\nvar cachedProperty = utils.cachedProperty;\nvar parseBytes = utils.parseBytes;\n\n/**\n* @param {EDDSA} eddsa - eddsa instance\n* @param {Array|Object} sig -\n* @param {Array|Point} [sig.R] - R point as Point or bytes\n* @param {Array|bn} [sig.S] - S scalar as bn or bytes\n* @param {Array} [sig.Rencoded] - R point encoded\n* @param {Array} [sig.Sencoded] - S scalar encoded\n*/\nfunction Signature(eddsa, sig) {\n this.eddsa = eddsa;\n\n if (typeof sig !== 'object')\n sig = parseBytes(sig);\n\n if (Array.isArray(sig)) {\n sig = {\n R: sig.slice(0, eddsa.encodingLength),\n S: sig.slice(eddsa.encodingLength),\n };\n }\n\n assert(sig.R && sig.S, 'Signature without R or S');\n\n if (eddsa.isPoint(sig.R))\n this._R = sig.R;\n if (sig.S instanceof BN)\n this._S = sig.S;\n\n this._Rencoded = Array.isArray(sig.R) ? sig.R : sig.Rencoded;\n this._Sencoded = Array.isArray(sig.S) ? sig.S : sig.Sencoded;\n}\n\ncachedProperty(Signature, 'S', function S() {\n return this.eddsa.decodeInt(this.Sencoded());\n});\n\ncachedProperty(Signature, 'R', function R() {\n return this.eddsa.decodePoint(this.Rencoded());\n});\n\ncachedProperty(Signature, 'Rencoded', function Rencoded() {\n return this.eddsa.encodePoint(this.R());\n});\n\ncachedProperty(Signature, 'Sencoded', function Sencoded() {\n return this.eddsa.encodeInt(this.S());\n});\n\nSignature.prototype.toBytes = function toBytes() {\n return this.Rencoded().concat(this.Sencoded());\n};\n\nSignature.prototype.toHex = function toHex() {\n return utils.encode(this.toBytes(), 'hex').toUpperCase();\n};\n\nmodule.exports = Signature;\n","module.exports = {\n doubles: {\n step: 4,\n points: [\n [\n 'e60fce93b59e9ec53011aabc21c23e97b2a31369b87a5ae9c44ee89e2a6dec0a',\n 'f7e3507399e595929db99f34f57937101296891e44d23f0be1f32cce69616821',\n ],\n [\n '8282263212c609d9ea2a6e3e172de238d8c39cabd5ac1ca10646e23fd5f51508',\n '11f8a8098557dfe45e8256e830b60ace62d613ac2f7b17bed31b6eaff6e26caf',\n ],\n [\n '175e159f728b865a72f99cc6c6fc846de0b93833fd2222ed73fce5b551e5b739',\n 'd3506e0d9e3c79eba4ef97a51ff71f5eacb5955add24345c6efa6ffee9fed695',\n ],\n [\n '363d90d447b00c9c99ceac05b6262ee053441c7e55552ffe526bad8f83ff4640',\n '4e273adfc732221953b445397f3363145b9a89008199ecb62003c7f3bee9de9',\n ],\n [\n '8b4b5f165df3c2be8c6244b5b745638843e4a781a15bcd1b69f79a55dffdf80c',\n '4aad0a6f68d308b4b3fbd7813ab0da04f9e336546162ee56b3eff0c65fd4fd36',\n ],\n [\n '723cbaa6e5db996d6bf771c00bd548c7b700dbffa6c0e77bcb6115925232fcda',\n '96e867b5595cc498a921137488824d6e2660a0653779494801dc069d9eb39f5f',\n ],\n [\n 'eebfa4d493bebf98ba5feec812c2d3b50947961237a919839a533eca0e7dd7fa',\n '5d9a8ca3970ef0f269ee7edaf178089d9ae4cdc3a711f712ddfd4fdae1de8999',\n ],\n [\n '100f44da696e71672791d0a09b7bde459f1215a29b3c03bfefd7835b39a48db0',\n 'cdd9e13192a00b772ec8f3300c090666b7ff4a18ff5195ac0fbd5cd62bc65a09',\n ],\n [\n 'e1031be262c7ed1b1dc9227a4a04c017a77f8d4464f3b3852c8acde6e534fd2d',\n '9d7061928940405e6bb6a4176597535af292dd419e1ced79a44f18f29456a00d',\n ],\n [\n 'feea6cae46d55b530ac2839f143bd7ec5cf8b266a41d6af52d5e688d9094696d',\n 'e57c6b6c97dce1bab06e4e12bf3ecd5c981c8957cc41442d3155debf18090088',\n ],\n [\n 'da67a91d91049cdcb367be4be6ffca3cfeed657d808583de33fa978bc1ec6cb1',\n '9bacaa35481642bc41f463f7ec9780e5dec7adc508f740a17e9ea8e27a68be1d',\n ],\n [\n '53904faa0b334cdda6e000935ef22151ec08d0f7bb11069f57545ccc1a37b7c0',\n '5bc087d0bc80106d88c9eccac20d3c1c13999981e14434699dcb096b022771c8',\n ],\n [\n '8e7bcd0bd35983a7719cca7764ca906779b53a043a9b8bcaeff959f43ad86047',\n '10b7770b2a3da4b3940310420ca9514579e88e2e47fd68b3ea10047e8460372a',\n ],\n [\n '385eed34c1cdff21e6d0818689b81bde71a7f4f18397e6690a841e1599c43862',\n '283bebc3e8ea23f56701de19e9ebf4576b304eec2086dc8cc0458fe5542e5453',\n ],\n [\n '6f9d9b803ecf191637c73a4413dfa180fddf84a5947fbc9c606ed86c3fac3a7',\n '7c80c68e603059ba69b8e2a30e45c4d47ea4dd2f5c281002d86890603a842160',\n ],\n [\n '3322d401243c4e2582a2147c104d6ecbf774d163db0f5e5313b7e0e742d0e6bd',\n '56e70797e9664ef5bfb019bc4ddaf9b72805f63ea2873af624f3a2e96c28b2a0',\n ],\n [\n '85672c7d2de0b7da2bd1770d89665868741b3f9af7643397721d74d28134ab83',\n '7c481b9b5b43b2eb6374049bfa62c2e5e77f17fcc5298f44c8e3094f790313a6',\n ],\n [\n '948bf809b1988a46b06c9f1919413b10f9226c60f668832ffd959af60c82a0a',\n '53a562856dcb6646dc6b74c5d1c3418c6d4dff08c97cd2bed4cb7f88d8c8e589',\n ],\n [\n '6260ce7f461801c34f067ce0f02873a8f1b0e44dfc69752accecd819f38fd8e8',\n 'bc2da82b6fa5b571a7f09049776a1ef7ecd292238051c198c1a84e95b2b4ae17',\n ],\n [\n 'e5037de0afc1d8d43d8348414bbf4103043ec8f575bfdc432953cc8d2037fa2d',\n '4571534baa94d3b5f9f98d09fb990bddbd5f5b03ec481f10e0e5dc841d755bda',\n ],\n [\n 'e06372b0f4a207adf5ea905e8f1771b4e7e8dbd1c6a6c5b725866a0ae4fce725',\n '7a908974bce18cfe12a27bb2ad5a488cd7484a7787104870b27034f94eee31dd',\n ],\n [\n '213c7a715cd5d45358d0bbf9dc0ce02204b10bdde2a3f58540ad6908d0559754',\n '4b6dad0b5ae462507013ad06245ba190bb4850f5f36a7eeddff2c27534b458f2',\n ],\n [\n '4e7c272a7af4b34e8dbb9352a5419a87e2838c70adc62cddf0cc3a3b08fbd53c',\n '17749c766c9d0b18e16fd09f6def681b530b9614bff7dd33e0b3941817dcaae6',\n ],\n [\n 'fea74e3dbe778b1b10f238ad61686aa5c76e3db2be43057632427e2840fb27b6',\n '6e0568db9b0b13297cf674deccb6af93126b596b973f7b77701d3db7f23cb96f',\n ],\n [\n '76e64113f677cf0e10a2570d599968d31544e179b760432952c02a4417bdde39',\n 'c90ddf8dee4e95cf577066d70681f0d35e2a33d2b56d2032b4b1752d1901ac01',\n ],\n [\n 'c738c56b03b2abe1e8281baa743f8f9a8f7cc643df26cbee3ab150242bcbb891',\n '893fb578951ad2537f718f2eacbfbbbb82314eef7880cfe917e735d9699a84c3',\n ],\n [\n 'd895626548b65b81e264c7637c972877d1d72e5f3a925014372e9f6588f6c14b',\n 'febfaa38f2bc7eae728ec60818c340eb03428d632bb067e179363ed75d7d991f',\n ],\n [\n 'b8da94032a957518eb0f6433571e8761ceffc73693e84edd49150a564f676e03',\n '2804dfa44805a1e4d7c99cc9762808b092cc584d95ff3b511488e4e74efdf6e7',\n ],\n [\n 'e80fea14441fb33a7d8adab9475d7fab2019effb5156a792f1a11778e3c0df5d',\n 'eed1de7f638e00771e89768ca3ca94472d155e80af322ea9fcb4291b6ac9ec78',\n ],\n [\n 'a301697bdfcd704313ba48e51d567543f2a182031efd6915ddc07bbcc4e16070',\n '7370f91cfb67e4f5081809fa25d40f9b1735dbf7c0a11a130c0d1a041e177ea1',\n ],\n [\n '90ad85b389d6b936463f9d0512678de208cc330b11307fffab7ac63e3fb04ed4',\n 'e507a3620a38261affdcbd9427222b839aefabe1582894d991d4d48cb6ef150',\n ],\n [\n '8f68b9d2f63b5f339239c1ad981f162ee88c5678723ea3351b7b444c9ec4c0da',\n '662a9f2dba063986de1d90c2b6be215dbbea2cfe95510bfdf23cbf79501fff82',\n ],\n [\n 'e4f3fb0176af85d65ff99ff9198c36091f48e86503681e3e6686fd5053231e11',\n '1e63633ad0ef4f1c1661a6d0ea02b7286cc7e74ec951d1c9822c38576feb73bc',\n ],\n [\n '8c00fa9b18ebf331eb961537a45a4266c7034f2f0d4e1d0716fb6eae20eae29e',\n 'efa47267fea521a1a9dc343a3736c974c2fadafa81e36c54e7d2a4c66702414b',\n ],\n [\n 'e7a26ce69dd4829f3e10cec0a9e98ed3143d084f308b92c0997fddfc60cb3e41',\n '2a758e300fa7984b471b006a1aafbb18d0a6b2c0420e83e20e8a9421cf2cfd51',\n ],\n [\n 'b6459e0ee3662ec8d23540c223bcbdc571cbcb967d79424f3cf29eb3de6b80ef',\n '67c876d06f3e06de1dadf16e5661db3c4b3ae6d48e35b2ff30bf0b61a71ba45',\n ],\n [\n 'd68a80c8280bb840793234aa118f06231d6f1fc67e73c5a5deda0f5b496943e8',\n 'db8ba9fff4b586d00c4b1f9177b0e28b5b0e7b8f7845295a294c84266b133120',\n ],\n [\n '324aed7df65c804252dc0270907a30b09612aeb973449cea4095980fc28d3d5d',\n '648a365774b61f2ff130c0c35aec1f4f19213b0c7e332843967224af96ab7c84',\n ],\n [\n '4df9c14919cde61f6d51dfdbe5fee5dceec4143ba8d1ca888e8bd373fd054c96',\n '35ec51092d8728050974c23a1d85d4b5d506cdc288490192ebac06cad10d5d',\n ],\n [\n '9c3919a84a474870faed8a9c1cc66021523489054d7f0308cbfc99c8ac1f98cd',\n 'ddb84f0f4a4ddd57584f044bf260e641905326f76c64c8e6be7e5e03d4fc599d',\n ],\n [\n '6057170b1dd12fdf8de05f281d8e06bb91e1493a8b91d4cc5a21382120a959e5',\n '9a1af0b26a6a4807add9a2daf71df262465152bc3ee24c65e899be932385a2a8',\n ],\n [\n 'a576df8e23a08411421439a4518da31880cef0fba7d4df12b1a6973eecb94266',\n '40a6bf20e76640b2c92b97afe58cd82c432e10a7f514d9f3ee8be11ae1b28ec8',\n ],\n [\n '7778a78c28dec3e30a05fe9629de8c38bb30d1f5cf9a3a208f763889be58ad71',\n '34626d9ab5a5b22ff7098e12f2ff580087b38411ff24ac563b513fc1fd9f43ac',\n ],\n [\n '928955ee637a84463729fd30e7afd2ed5f96274e5ad7e5cb09eda9c06d903ac',\n 'c25621003d3f42a827b78a13093a95eeac3d26efa8a8d83fc5180e935bcd091f',\n ],\n [\n '85d0fef3ec6db109399064f3a0e3b2855645b4a907ad354527aae75163d82751',\n '1f03648413a38c0be29d496e582cf5663e8751e96877331582c237a24eb1f962',\n ],\n [\n 'ff2b0dce97eece97c1c9b6041798b85dfdfb6d8882da20308f5404824526087e',\n '493d13fef524ba188af4c4dc54d07936c7b7ed6fb90e2ceb2c951e01f0c29907',\n ],\n [\n '827fbbe4b1e880ea9ed2b2e6301b212b57f1ee148cd6dd28780e5e2cf856e241',\n 'c60f9c923c727b0b71bef2c67d1d12687ff7a63186903166d605b68baec293ec',\n ],\n [\n 'eaa649f21f51bdbae7be4ae34ce6e5217a58fdce7f47f9aa7f3b58fa2120e2b3',\n 'be3279ed5bbbb03ac69a80f89879aa5a01a6b965f13f7e59d47a5305ba5ad93d',\n ],\n [\n 'e4a42d43c5cf169d9391df6decf42ee541b6d8f0c9a137401e23632dda34d24f',\n '4d9f92e716d1c73526fc99ccfb8ad34ce886eedfa8d8e4f13a7f7131deba9414',\n ],\n [\n '1ec80fef360cbdd954160fadab352b6b92b53576a88fea4947173b9d4300bf19',\n 'aeefe93756b5340d2f3a4958a7abbf5e0146e77f6295a07b671cdc1cc107cefd',\n ],\n [\n '146a778c04670c2f91b00af4680dfa8bce3490717d58ba889ddb5928366642be',\n 'b318e0ec3354028add669827f9d4b2870aaa971d2f7e5ed1d0b297483d83efd0',\n ],\n [\n 'fa50c0f61d22e5f07e3acebb1aa07b128d0012209a28b9776d76a8793180eef9',\n '6b84c6922397eba9b72cd2872281a68a5e683293a57a213b38cd8d7d3f4f2811',\n ],\n [\n 'da1d61d0ca721a11b1a5bf6b7d88e8421a288ab5d5bba5220e53d32b5f067ec2',\n '8157f55a7c99306c79c0766161c91e2966a73899d279b48a655fba0f1ad836f1',\n ],\n [\n 'a8e282ff0c9706907215ff98e8fd416615311de0446f1e062a73b0610d064e13',\n '7f97355b8db81c09abfb7f3c5b2515888b679a3e50dd6bd6cef7c73111f4cc0c',\n ],\n [\n '174a53b9c9a285872d39e56e6913cab15d59b1fa512508c022f382de8319497c',\n 'ccc9dc37abfc9c1657b4155f2c47f9e6646b3a1d8cb9854383da13ac079afa73',\n ],\n [\n '959396981943785c3d3e57edf5018cdbe039e730e4918b3d884fdff09475b7ba',\n '2e7e552888c331dd8ba0386a4b9cd6849c653f64c8709385e9b8abf87524f2fd',\n ],\n [\n 'd2a63a50ae401e56d645a1153b109a8fcca0a43d561fba2dbb51340c9d82b151',\n 'e82d86fb6443fcb7565aee58b2948220a70f750af484ca52d4142174dcf89405',\n ],\n [\n '64587e2335471eb890ee7896d7cfdc866bacbdbd3839317b3436f9b45617e073',\n 'd99fcdd5bf6902e2ae96dd6447c299a185b90a39133aeab358299e5e9faf6589',\n ],\n [\n '8481bde0e4e4d885b3a546d3e549de042f0aa6cea250e7fd358d6c86dd45e458',\n '38ee7b8cba5404dd84a25bf39cecb2ca900a79c42b262e556d64b1b59779057e',\n ],\n [\n '13464a57a78102aa62b6979ae817f4637ffcfed3c4b1ce30bcd6303f6caf666b',\n '69be159004614580ef7e433453ccb0ca48f300a81d0942e13f495a907f6ecc27',\n ],\n [\n 'bc4a9df5b713fe2e9aef430bcc1dc97a0cd9ccede2f28588cada3a0d2d83f366',\n 'd3a81ca6e785c06383937adf4b798caa6e8a9fbfa547b16d758d666581f33c1',\n ],\n [\n '8c28a97bf8298bc0d23d8c749452a32e694b65e30a9472a3954ab30fe5324caa',\n '40a30463a3305193378fedf31f7cc0eb7ae784f0451cb9459e71dc73cbef9482',\n ],\n [\n '8ea9666139527a8c1dd94ce4f071fd23c8b350c5a4bb33748c4ba111faccae0',\n '620efabbc8ee2782e24e7c0cfb95c5d735b783be9cf0f8e955af34a30e62b945',\n ],\n [\n 'dd3625faef5ba06074669716bbd3788d89bdde815959968092f76cc4eb9a9787',\n '7a188fa3520e30d461da2501045731ca941461982883395937f68d00c644a573',\n ],\n [\n 'f710d79d9eb962297e4f6232b40e8f7feb2bc63814614d692c12de752408221e',\n 'ea98e67232d3b3295d3b535532115ccac8612c721851617526ae47a9c77bfc82',\n ],\n ],\n },\n naf: {\n wnd: 7,\n points: [\n [\n 'f9308a019258c31049344f85f89d5229b531c845836f99b08601f113bce036f9',\n '388f7b0f632de8140fe337e62a37f3566500a99934c2231b6cb9fd7584b8e672',\n ],\n [\n '2f8bde4d1a07209355b4a7250a5c5128e88b84bddc619ab7cba8d569b240efe4',\n 'd8ac222636e5e3d6d4dba9dda6c9c426f788271bab0d6840dca87d3aa6ac62d6',\n ],\n [\n '5cbdf0646e5db4eaa398f365f2ea7a0e3d419b7e0330e39ce92bddedcac4f9bc',\n '6aebca40ba255960a3178d6d861a54dba813d0b813fde7b5a5082628087264da',\n ],\n [\n 'acd484e2f0c7f65309ad178a9f559abde09796974c57e714c35f110dfc27ccbe',\n 'cc338921b0a7d9fd64380971763b61e9add888a4375f8e0f05cc262ac64f9c37',\n ],\n [\n '774ae7f858a9411e5ef4246b70c65aac5649980be5c17891bbec17895da008cb',\n 'd984a032eb6b5e190243dd56d7b7b365372db1e2dff9d6a8301d74c9c953c61b',\n ],\n [\n 'f28773c2d975288bc7d1d205c3748651b075fbc6610e58cddeeddf8f19405aa8',\n 'ab0902e8d880a89758212eb65cdaf473a1a06da521fa91f29b5cb52db03ed81',\n ],\n [\n 'd7924d4f7d43ea965a465ae3095ff41131e5946f3c85f79e44adbcf8e27e080e',\n '581e2872a86c72a683842ec228cc6defea40af2bd896d3a5c504dc9ff6a26b58',\n ],\n [\n 'defdea4cdb677750a420fee807eacf21eb9898ae79b9768766e4faa04a2d4a34',\n '4211ab0694635168e997b0ead2a93daeced1f4a04a95c0f6cfb199f69e56eb77',\n ],\n [\n '2b4ea0a797a443d293ef5cff444f4979f06acfebd7e86d277475656138385b6c',\n '85e89bc037945d93b343083b5a1c86131a01f60c50269763b570c854e5c09b7a',\n ],\n [\n '352bbf4a4cdd12564f93fa332ce333301d9ad40271f8107181340aef25be59d5',\n '321eb4075348f534d59c18259dda3e1f4a1b3b2e71b1039c67bd3d8bcf81998c',\n ],\n [\n '2fa2104d6b38d11b0230010559879124e42ab8dfeff5ff29dc9cdadd4ecacc3f',\n '2de1068295dd865b64569335bd5dd80181d70ecfc882648423ba76b532b7d67',\n ],\n [\n '9248279b09b4d68dab21a9b066edda83263c3d84e09572e269ca0cd7f5453714',\n '73016f7bf234aade5d1aa71bdea2b1ff3fc0de2a887912ffe54a32ce97cb3402',\n ],\n [\n 'daed4f2be3a8bf278e70132fb0beb7522f570e144bf615c07e996d443dee8729',\n 'a69dce4a7d6c98e8d4a1aca87ef8d7003f83c230f3afa726ab40e52290be1c55',\n ],\n [\n 'c44d12c7065d812e8acf28d7cbb19f9011ecd9e9fdf281b0e6a3b5e87d22e7db',\n '2119a460ce326cdc76c45926c982fdac0e106e861edf61c5a039063f0e0e6482',\n ],\n [\n '6a245bf6dc698504c89a20cfded60853152b695336c28063b61c65cbd269e6b4',\n 'e022cf42c2bd4a708b3f5126f16a24ad8b33ba48d0423b6efd5e6348100d8a82',\n ],\n [\n '1697ffa6fd9de627c077e3d2fe541084ce13300b0bec1146f95ae57f0d0bd6a5',\n 'b9c398f186806f5d27561506e4557433a2cf15009e498ae7adee9d63d01b2396',\n ],\n [\n '605bdb019981718b986d0f07e834cb0d9deb8360ffb7f61df982345ef27a7479',\n '2972d2de4f8d20681a78d93ec96fe23c26bfae84fb14db43b01e1e9056b8c49',\n ],\n [\n '62d14dab4150bf497402fdc45a215e10dcb01c354959b10cfe31c7e9d87ff33d',\n '80fc06bd8cc5b01098088a1950eed0db01aa132967ab472235f5642483b25eaf',\n ],\n [\n '80c60ad0040f27dade5b4b06c408e56b2c50e9f56b9b8b425e555c2f86308b6f',\n '1c38303f1cc5c30f26e66bad7fe72f70a65eed4cbe7024eb1aa01f56430bd57a',\n ],\n [\n '7a9375ad6167ad54aa74c6348cc54d344cc5dc9487d847049d5eabb0fa03c8fb',\n 'd0e3fa9eca8726909559e0d79269046bdc59ea10c70ce2b02d499ec224dc7f7',\n ],\n [\n 'd528ecd9b696b54c907a9ed045447a79bb408ec39b68df504bb51f459bc3ffc9',\n 'eecf41253136e5f99966f21881fd656ebc4345405c520dbc063465b521409933',\n ],\n [\n '49370a4b5f43412ea25f514e8ecdad05266115e4a7ecb1387231808f8b45963',\n '758f3f41afd6ed428b3081b0512fd62a54c3f3afbb5b6764b653052a12949c9a',\n ],\n [\n '77f230936ee88cbbd73df930d64702ef881d811e0e1498e2f1c13eb1fc345d74',\n '958ef42a7886b6400a08266e9ba1b37896c95330d97077cbbe8eb3c7671c60d6',\n ],\n [\n 'f2dac991cc4ce4b9ea44887e5c7c0bce58c80074ab9d4dbaeb28531b7739f530',\n 'e0dedc9b3b2f8dad4da1f32dec2531df9eb5fbeb0598e4fd1a117dba703a3c37',\n ],\n [\n '463b3d9f662621fb1b4be8fbbe2520125a216cdfc9dae3debcba4850c690d45b',\n '5ed430d78c296c3543114306dd8622d7c622e27c970a1de31cb377b01af7307e',\n ],\n [\n 'f16f804244e46e2a09232d4aff3b59976b98fac14328a2d1a32496b49998f247',\n 'cedabd9b82203f7e13d206fcdf4e33d92a6c53c26e5cce26d6579962c4e31df6',\n ],\n [\n 'caf754272dc84563b0352b7a14311af55d245315ace27c65369e15f7151d41d1',\n 'cb474660ef35f5f2a41b643fa5e460575f4fa9b7962232a5c32f908318a04476',\n ],\n [\n '2600ca4b282cb986f85d0f1709979d8b44a09c07cb86d7c124497bc86f082120',\n '4119b88753c15bd6a693b03fcddbb45d5ac6be74ab5f0ef44b0be9475a7e4b40',\n ],\n [\n '7635ca72d7e8432c338ec53cd12220bc01c48685e24f7dc8c602a7746998e435',\n '91b649609489d613d1d5e590f78e6d74ecfc061d57048bad9e76f302c5b9c61',\n ],\n [\n '754e3239f325570cdbbf4a87deee8a66b7f2b33479d468fbc1a50743bf56cc18',\n '673fb86e5bda30fb3cd0ed304ea49a023ee33d0197a695d0c5d98093c536683',\n ],\n [\n 'e3e6bd1071a1e96aff57859c82d570f0330800661d1c952f9fe2694691d9b9e8',\n '59c9e0bba394e76f40c0aa58379a3cb6a5a2283993e90c4167002af4920e37f5',\n ],\n [\n '186b483d056a033826ae73d88f732985c4ccb1f32ba35f4b4cc47fdcf04aa6eb',\n '3b952d32c67cf77e2e17446e204180ab21fb8090895138b4a4a797f86e80888b',\n ],\n [\n 'df9d70a6b9876ce544c98561f4be4f725442e6d2b737d9c91a8321724ce0963f',\n '55eb2dafd84d6ccd5f862b785dc39d4ab157222720ef9da217b8c45cf2ba2417',\n ],\n [\n '5edd5cc23c51e87a497ca815d5dce0f8ab52554f849ed8995de64c5f34ce7143',\n 'efae9c8dbc14130661e8cec030c89ad0c13c66c0d17a2905cdc706ab7399a868',\n ],\n [\n '290798c2b6476830da12fe02287e9e777aa3fba1c355b17a722d362f84614fba',\n 'e38da76dcd440621988d00bcf79af25d5b29c094db2a23146d003afd41943e7a',\n ],\n [\n 'af3c423a95d9f5b3054754efa150ac39cd29552fe360257362dfdecef4053b45',\n 'f98a3fd831eb2b749a93b0e6f35cfb40c8cd5aa667a15581bc2feded498fd9c6',\n ],\n [\n '766dbb24d134e745cccaa28c99bf274906bb66b26dcf98df8d2fed50d884249a',\n '744b1152eacbe5e38dcc887980da38b897584a65fa06cedd2c924f97cbac5996',\n ],\n [\n '59dbf46f8c94759ba21277c33784f41645f7b44f6c596a58ce92e666191abe3e',\n 'c534ad44175fbc300f4ea6ce648309a042ce739a7919798cd85e216c4a307f6e',\n ],\n [\n 'f13ada95103c4537305e691e74e9a4a8dd647e711a95e73cb62dc6018cfd87b8',\n 'e13817b44ee14de663bf4bc808341f326949e21a6a75c2570778419bdaf5733d',\n ],\n [\n '7754b4fa0e8aced06d4167a2c59cca4cda1869c06ebadfb6488550015a88522c',\n '30e93e864e669d82224b967c3020b8fa8d1e4e350b6cbcc537a48b57841163a2',\n ],\n [\n '948dcadf5990e048aa3874d46abef9d701858f95de8041d2a6828c99e2262519',\n 'e491a42537f6e597d5d28a3224b1bc25df9154efbd2ef1d2cbba2cae5347d57e',\n ],\n [\n '7962414450c76c1689c7b48f8202ec37fb224cf5ac0bfa1570328a8a3d7c77ab',\n '100b610ec4ffb4760d5c1fc133ef6f6b12507a051f04ac5760afa5b29db83437',\n ],\n [\n '3514087834964b54b15b160644d915485a16977225b8847bb0dd085137ec47ca',\n 'ef0afbb2056205448e1652c48e8127fc6039e77c15c2378b7e7d15a0de293311',\n ],\n [\n 'd3cc30ad6b483e4bc79ce2c9dd8bc54993e947eb8df787b442943d3f7b527eaf',\n '8b378a22d827278d89c5e9be8f9508ae3c2ad46290358630afb34db04eede0a4',\n ],\n [\n '1624d84780732860ce1c78fcbfefe08b2b29823db913f6493975ba0ff4847610',\n '68651cf9b6da903e0914448c6cd9d4ca896878f5282be4c8cc06e2a404078575',\n ],\n [\n '733ce80da955a8a26902c95633e62a985192474b5af207da6df7b4fd5fc61cd4',\n 'f5435a2bd2badf7d485a4d8b8db9fcce3e1ef8e0201e4578c54673bc1dc5ea1d',\n ],\n [\n '15d9441254945064cf1a1c33bbd3b49f8966c5092171e699ef258dfab81c045c',\n 'd56eb30b69463e7234f5137b73b84177434800bacebfc685fc37bbe9efe4070d',\n ],\n [\n 'a1d0fcf2ec9de675b612136e5ce70d271c21417c9d2b8aaaac138599d0717940',\n 'edd77f50bcb5a3cab2e90737309667f2641462a54070f3d519212d39c197a629',\n ],\n [\n 'e22fbe15c0af8ccc5780c0735f84dbe9a790badee8245c06c7ca37331cb36980',\n 'a855babad5cd60c88b430a69f53a1a7a38289154964799be43d06d77d31da06',\n ],\n [\n '311091dd9860e8e20ee13473c1155f5f69635e394704eaa74009452246cfa9b3',\n '66db656f87d1f04fffd1f04788c06830871ec5a64feee685bd80f0b1286d8374',\n ],\n [\n '34c1fd04d301be89b31c0442d3e6ac24883928b45a9340781867d4232ec2dbdf',\n '9414685e97b1b5954bd46f730174136d57f1ceeb487443dc5321857ba73abee',\n ],\n [\n 'f219ea5d6b54701c1c14de5b557eb42a8d13f3abbcd08affcc2a5e6b049b8d63',\n '4cb95957e83d40b0f73af4544cccf6b1f4b08d3c07b27fb8d8c2962a400766d1',\n ],\n [\n 'd7b8740f74a8fbaab1f683db8f45de26543a5490bca627087236912469a0b448',\n 'fa77968128d9c92ee1010f337ad4717eff15db5ed3c049b3411e0315eaa4593b',\n ],\n [\n '32d31c222f8f6f0ef86f7c98d3a3335ead5bcd32abdd94289fe4d3091aa824bf',\n '5f3032f5892156e39ccd3d7915b9e1da2e6dac9e6f26e961118d14b8462e1661',\n ],\n [\n '7461f371914ab32671045a155d9831ea8793d77cd59592c4340f86cbc18347b5',\n '8ec0ba238b96bec0cbdddcae0aa442542eee1ff50c986ea6b39847b3cc092ff6',\n ],\n [\n 'ee079adb1df1860074356a25aa38206a6d716b2c3e67453d287698bad7b2b2d6',\n '8dc2412aafe3be5c4c5f37e0ecc5f9f6a446989af04c4e25ebaac479ec1c8c1e',\n ],\n [\n '16ec93e447ec83f0467b18302ee620f7e65de331874c9dc72bfd8616ba9da6b5',\n '5e4631150e62fb40d0e8c2a7ca5804a39d58186a50e497139626778e25b0674d',\n ],\n [\n 'eaa5f980c245f6f038978290afa70b6bd8855897f98b6aa485b96065d537bd99',\n 'f65f5d3e292c2e0819a528391c994624d784869d7e6ea67fb18041024edc07dc',\n ],\n [\n '78c9407544ac132692ee1910a02439958ae04877151342ea96c4b6b35a49f51',\n 'f3e0319169eb9b85d5404795539a5e68fa1fbd583c064d2462b675f194a3ddb4',\n ],\n [\n '494f4be219a1a77016dcd838431aea0001cdc8ae7a6fc688726578d9702857a5',\n '42242a969283a5f339ba7f075e36ba2af925ce30d767ed6e55f4b031880d562c',\n ],\n [\n 'a598a8030da6d86c6bc7f2f5144ea549d28211ea58faa70ebf4c1e665c1fe9b5',\n '204b5d6f84822c307e4b4a7140737aec23fc63b65b35f86a10026dbd2d864e6b',\n ],\n [\n 'c41916365abb2b5d09192f5f2dbeafec208f020f12570a184dbadc3e58595997',\n '4f14351d0087efa49d245b328984989d5caf9450f34bfc0ed16e96b58fa9913',\n ],\n [\n '841d6063a586fa475a724604da03bc5b92a2e0d2e0a36acfe4c73a5514742881',\n '73867f59c0659e81904f9a1c7543698e62562d6744c169ce7a36de01a8d6154',\n ],\n [\n '5e95bb399a6971d376026947f89bde2f282b33810928be4ded112ac4d70e20d5',\n '39f23f366809085beebfc71181313775a99c9aed7d8ba38b161384c746012865',\n ],\n [\n '36e4641a53948fd476c39f8a99fd974e5ec07564b5315d8bf99471bca0ef2f66',\n 'd2424b1b1abe4eb8164227b085c9aa9456ea13493fd563e06fd51cf5694c78fc',\n ],\n [\n '336581ea7bfbbb290c191a2f507a41cf5643842170e914faeab27c2c579f726',\n 'ead12168595fe1be99252129b6e56b3391f7ab1410cd1e0ef3dcdcabd2fda224',\n ],\n [\n '8ab89816dadfd6b6a1f2634fcf00ec8403781025ed6890c4849742706bd43ede',\n '6fdcef09f2f6d0a044e654aef624136f503d459c3e89845858a47a9129cdd24e',\n ],\n [\n '1e33f1a746c9c5778133344d9299fcaa20b0938e8acff2544bb40284b8c5fb94',\n '60660257dd11b3aa9c8ed618d24edff2306d320f1d03010e33a7d2057f3b3b6',\n ],\n [\n '85b7c1dcb3cec1b7ee7f30ded79dd20a0ed1f4cc18cbcfcfa410361fd8f08f31',\n '3d98a9cdd026dd43f39048f25a8847f4fcafad1895d7a633c6fed3c35e999511',\n ],\n [\n '29df9fbd8d9e46509275f4b125d6d45d7fbe9a3b878a7af872a2800661ac5f51',\n 'b4c4fe99c775a606e2d8862179139ffda61dc861c019e55cd2876eb2a27d84b',\n ],\n [\n 'a0b1cae06b0a847a3fea6e671aaf8adfdfe58ca2f768105c8082b2e449fce252',\n 'ae434102edde0958ec4b19d917a6a28e6b72da1834aff0e650f049503a296cf2',\n ],\n [\n '4e8ceafb9b3e9a136dc7ff67e840295b499dfb3b2133e4ba113f2e4c0e121e5',\n 'cf2174118c8b6d7a4b48f6d534ce5c79422c086a63460502b827ce62a326683c',\n ],\n [\n 'd24a44e047e19b6f5afb81c7ca2f69080a5076689a010919f42725c2b789a33b',\n '6fb8d5591b466f8fc63db50f1c0f1c69013f996887b8244d2cdec417afea8fa3',\n ],\n [\n 'ea01606a7a6c9cdd249fdfcfacb99584001edd28abbab77b5104e98e8e3b35d4',\n '322af4908c7312b0cfbfe369f7a7b3cdb7d4494bc2823700cfd652188a3ea98d',\n ],\n [\n 'af8addbf2b661c8a6c6328655eb96651252007d8c5ea31be4ad196de8ce2131f',\n '6749e67c029b85f52a034eafd096836b2520818680e26ac8f3dfbcdb71749700',\n ],\n [\n 'e3ae1974566ca06cc516d47e0fb165a674a3dabcfca15e722f0e3450f45889',\n '2aeabe7e4531510116217f07bf4d07300de97e4874f81f533420a72eeb0bd6a4',\n ],\n [\n '591ee355313d99721cf6993ffed1e3e301993ff3ed258802075ea8ced397e246',\n 'b0ea558a113c30bea60fc4775460c7901ff0b053d25ca2bdeee98f1a4be5d196',\n ],\n [\n '11396d55fda54c49f19aa97318d8da61fa8584e47b084945077cf03255b52984',\n '998c74a8cd45ac01289d5833a7beb4744ff536b01b257be4c5767bea93ea57a4',\n ],\n [\n '3c5d2a1ba39c5a1790000738c9e0c40b8dcdfd5468754b6405540157e017aa7a',\n 'b2284279995a34e2f9d4de7396fc18b80f9b8b9fdd270f6661f79ca4c81bd257',\n ],\n [\n 'cc8704b8a60a0defa3a99a7299f2e9c3fbc395afb04ac078425ef8a1793cc030',\n 'bdd46039feed17881d1e0862db347f8cf395b74fc4bcdc4e940b74e3ac1f1b13',\n ],\n [\n 'c533e4f7ea8555aacd9777ac5cad29b97dd4defccc53ee7ea204119b2889b197',\n '6f0a256bc5efdf429a2fb6242f1a43a2d9b925bb4a4b3a26bb8e0f45eb596096',\n ],\n [\n 'c14f8f2ccb27d6f109f6d08d03cc96a69ba8c34eec07bbcf566d48e33da6593',\n 'c359d6923bb398f7fd4473e16fe1c28475b740dd098075e6c0e8649113dc3a38',\n ],\n [\n 'a6cbc3046bc6a450bac24789fa17115a4c9739ed75f8f21ce441f72e0b90e6ef',\n '21ae7f4680e889bb130619e2c0f95a360ceb573c70603139862afd617fa9b9f',\n ],\n [\n '347d6d9a02c48927ebfb86c1359b1caf130a3c0267d11ce6344b39f99d43cc38',\n '60ea7f61a353524d1c987f6ecec92f086d565ab687870cb12689ff1e31c74448',\n ],\n [\n 'da6545d2181db8d983f7dcb375ef5866d47c67b1bf31c8cf855ef7437b72656a',\n '49b96715ab6878a79e78f07ce5680c5d6673051b4935bd897fea824b77dc208a',\n ],\n [\n 'c40747cc9d012cb1a13b8148309c6de7ec25d6945d657146b9d5994b8feb1111',\n '5ca560753be2a12fc6de6caf2cb489565db936156b9514e1bb5e83037e0fa2d4',\n ],\n [\n '4e42c8ec82c99798ccf3a610be870e78338c7f713348bd34c8203ef4037f3502',\n '7571d74ee5e0fb92a7a8b33a07783341a5492144cc54bcc40a94473693606437',\n ],\n [\n '3775ab7089bc6af823aba2e1af70b236d251cadb0c86743287522a1b3b0dedea',\n 'be52d107bcfa09d8bcb9736a828cfa7fac8db17bf7a76a2c42ad961409018cf7',\n ],\n [\n 'cee31cbf7e34ec379d94fb814d3d775ad954595d1314ba8846959e3e82f74e26',\n '8fd64a14c06b589c26b947ae2bcf6bfa0149ef0be14ed4d80f448a01c43b1c6d',\n ],\n [\n 'b4f9eaea09b6917619f6ea6a4eb5464efddb58fd45b1ebefcdc1a01d08b47986',\n '39e5c9925b5a54b07433a4f18c61726f8bb131c012ca542eb24a8ac07200682a',\n ],\n [\n 'd4263dfc3d2df923a0179a48966d30ce84e2515afc3dccc1b77907792ebcc60e',\n '62dfaf07a0f78feb30e30d6295853ce189e127760ad6cf7fae164e122a208d54',\n ],\n [\n '48457524820fa65a4f8d35eb6930857c0032acc0a4a2de422233eeda897612c4',\n '25a748ab367979d98733c38a1fa1c2e7dc6cc07db2d60a9ae7a76aaa49bd0f77',\n ],\n [\n 'dfeeef1881101f2cb11644f3a2afdfc2045e19919152923f367a1767c11cceda',\n 'ecfb7056cf1de042f9420bab396793c0c390bde74b4bbdff16a83ae09a9a7517',\n ],\n [\n '6d7ef6b17543f8373c573f44e1f389835d89bcbc6062ced36c82df83b8fae859',\n 'cd450ec335438986dfefa10c57fea9bcc521a0959b2d80bbf74b190dca712d10',\n ],\n [\n 'e75605d59102a5a2684500d3b991f2e3f3c88b93225547035af25af66e04541f',\n 'f5c54754a8f71ee540b9b48728473e314f729ac5308b06938360990e2bfad125',\n ],\n [\n 'eb98660f4c4dfaa06a2be453d5020bc99a0c2e60abe388457dd43fefb1ed620c',\n '6cb9a8876d9cb8520609af3add26cd20a0a7cd8a9411131ce85f44100099223e',\n ],\n [\n '13e87b027d8514d35939f2e6892b19922154596941888336dc3563e3b8dba942',\n 'fef5a3c68059a6dec5d624114bf1e91aac2b9da568d6abeb2570d55646b8adf1',\n ],\n [\n 'ee163026e9fd6fe017c38f06a5be6fc125424b371ce2708e7bf4491691e5764a',\n '1acb250f255dd61c43d94ccc670d0f58f49ae3fa15b96623e5430da0ad6c62b2',\n ],\n [\n 'b268f5ef9ad51e4d78de3a750c2dc89b1e626d43505867999932e5db33af3d80',\n '5f310d4b3c99b9ebb19f77d41c1dee018cf0d34fd4191614003e945a1216e423',\n ],\n [\n 'ff07f3118a9df035e9fad85eb6c7bfe42b02f01ca99ceea3bf7ffdba93c4750d',\n '438136d603e858a3a5c440c38eccbaddc1d2942114e2eddd4740d098ced1f0d8',\n ],\n [\n '8d8b9855c7c052a34146fd20ffb658bea4b9f69e0d825ebec16e8c3ce2b526a1',\n 'cdb559eedc2d79f926baf44fb84ea4d44bcf50fee51d7ceb30e2e7f463036758',\n ],\n [\n '52db0b5384dfbf05bfa9d472d7ae26dfe4b851ceca91b1eba54263180da32b63',\n 'c3b997d050ee5d423ebaf66a6db9f57b3180c902875679de924b69d84a7b375',\n ],\n [\n 'e62f9490d3d51da6395efd24e80919cc7d0f29c3f3fa48c6fff543becbd43352',\n '6d89ad7ba4876b0b22c2ca280c682862f342c8591f1daf5170e07bfd9ccafa7d',\n ],\n [\n '7f30ea2476b399b4957509c88f77d0191afa2ff5cb7b14fd6d8e7d65aaab1193',\n 'ca5ef7d4b231c94c3b15389a5f6311e9daff7bb67b103e9880ef4bff637acaec',\n ],\n [\n '5098ff1e1d9f14fb46a210fada6c903fef0fb7b4a1dd1d9ac60a0361800b7a00',\n '9731141d81fc8f8084d37c6e7542006b3ee1b40d60dfe5362a5b132fd17ddc0',\n ],\n [\n '32b78c7de9ee512a72895be6b9cbefa6e2f3c4ccce445c96b9f2c81e2778ad58',\n 'ee1849f513df71e32efc3896ee28260c73bb80547ae2275ba497237794c8753c',\n ],\n [\n 'e2cb74fddc8e9fbcd076eef2a7c72b0ce37d50f08269dfc074b581550547a4f7',\n 'd3aa2ed71c9dd2247a62df062736eb0baddea9e36122d2be8641abcb005cc4a4',\n ],\n [\n '8438447566d4d7bedadc299496ab357426009a35f235cb141be0d99cd10ae3a8',\n 'c4e1020916980a4da5d01ac5e6ad330734ef0d7906631c4f2390426b2edd791f',\n ],\n [\n '4162d488b89402039b584c6fc6c308870587d9c46f660b878ab65c82c711d67e',\n '67163e903236289f776f22c25fb8a3afc1732f2b84b4e95dbda47ae5a0852649',\n ],\n [\n '3fad3fa84caf0f34f0f89bfd2dcf54fc175d767aec3e50684f3ba4a4bf5f683d',\n 'cd1bc7cb6cc407bb2f0ca647c718a730cf71872e7d0d2a53fa20efcdfe61826',\n ],\n [\n '674f2600a3007a00568c1a7ce05d0816c1fb84bf1370798f1c69532faeb1a86b',\n '299d21f9413f33b3edf43b257004580b70db57da0b182259e09eecc69e0d38a5',\n ],\n [\n 'd32f4da54ade74abb81b815ad1fb3b263d82d6c692714bcff87d29bd5ee9f08f',\n 'f9429e738b8e53b968e99016c059707782e14f4535359d582fc416910b3eea87',\n ],\n [\n '30e4e670435385556e593657135845d36fbb6931f72b08cb1ed954f1e3ce3ff6',\n '462f9bce619898638499350113bbc9b10a878d35da70740dc695a559eb88db7b',\n ],\n [\n 'be2062003c51cc3004682904330e4dee7f3dcd10b01e580bf1971b04d4cad297',\n '62188bc49d61e5428573d48a74e1c655b1c61090905682a0d5558ed72dccb9bc',\n ],\n [\n '93144423ace3451ed29e0fb9ac2af211cb6e84a601df5993c419859fff5df04a',\n '7c10dfb164c3425f5c71a3f9d7992038f1065224f72bb9d1d902a6d13037b47c',\n ],\n [\n 'b015f8044f5fcbdcf21ca26d6c34fb8197829205c7b7d2a7cb66418c157b112c',\n 'ab8c1e086d04e813744a655b2df8d5f83b3cdc6faa3088c1d3aea1454e3a1d5f',\n ],\n [\n 'd5e9e1da649d97d89e4868117a465a3a4f8a18de57a140d36b3f2af341a21b52',\n '4cb04437f391ed73111a13cc1d4dd0db1693465c2240480d8955e8592f27447a',\n ],\n [\n 'd3ae41047dd7ca065dbf8ed77b992439983005cd72e16d6f996a5316d36966bb',\n 'bd1aeb21ad22ebb22a10f0303417c6d964f8cdd7df0aca614b10dc14d125ac46',\n ],\n [\n '463e2763d885f958fc66cdd22800f0a487197d0a82e377b49f80af87c897b065',\n 'bfefacdb0e5d0fd7df3a311a94de062b26b80c61fbc97508b79992671ef7ca7f',\n ],\n [\n '7985fdfd127c0567c6f53ec1bb63ec3158e597c40bfe747c83cddfc910641917',\n '603c12daf3d9862ef2b25fe1de289aed24ed291e0ec6708703a5bd567f32ed03',\n ],\n [\n '74a1ad6b5f76e39db2dd249410eac7f99e74c59cb83d2d0ed5ff1543da7703e9',\n 'cc6157ef18c9c63cd6193d83631bbea0093e0968942e8c33d5737fd790e0db08',\n ],\n [\n '30682a50703375f602d416664ba19b7fc9bab42c72747463a71d0896b22f6da3',\n '553e04f6b018b4fa6c8f39e7f311d3176290d0e0f19ca73f17714d9977a22ff8',\n ],\n [\n '9e2158f0d7c0d5f26c3791efefa79597654e7a2b2464f52b1ee6c1347769ef57',\n '712fcdd1b9053f09003a3481fa7762e9ffd7c8ef35a38509e2fbf2629008373',\n ],\n [\n '176e26989a43c9cfeba4029c202538c28172e566e3c4fce7322857f3be327d66',\n 'ed8cc9d04b29eb877d270b4878dc43c19aefd31f4eee09ee7b47834c1fa4b1c3',\n ],\n [\n '75d46efea3771e6e68abb89a13ad747ecf1892393dfc4f1b7004788c50374da8',\n '9852390a99507679fd0b86fd2b39a868d7efc22151346e1a3ca4726586a6bed8',\n ],\n [\n '809a20c67d64900ffb698c4c825f6d5f2310fb0451c869345b7319f645605721',\n '9e994980d9917e22b76b061927fa04143d096ccc54963e6a5ebfa5f3f8e286c1',\n ],\n [\n '1b38903a43f7f114ed4500b4eac7083fdefece1cf29c63528d563446f972c180',\n '4036edc931a60ae889353f77fd53de4a2708b26b6f5da72ad3394119daf408f9',\n ],\n ],\n },\n};\n","'use strict';\n\nvar utils = exports;\nvar BN = require('bn.js');\nvar minAssert = require('minimalistic-assert');\nvar minUtils = require('minimalistic-crypto-utils');\n\nutils.assert = minAssert;\nutils.toArray = minUtils.toArray;\nutils.zero2 = minUtils.zero2;\nutils.toHex = minUtils.toHex;\nutils.encode = minUtils.encode;\n\n// Represent num in a w-NAF form\nfunction getNAF(num, w, bits) {\n var naf = new Array(Math.max(num.bitLength(), bits) + 1);\n naf.fill(0);\n\n var ws = 1 << (w + 1);\n var k = num.clone();\n\n for (var i = 0; i < naf.length; i++) {\n var z;\n var mod = k.andln(ws - 1);\n if (k.isOdd()) {\n if (mod > (ws >> 1) - 1)\n z = (ws >> 1) - mod;\n else\n z = mod;\n k.isubn(z);\n } else {\n z = 0;\n }\n\n naf[i] = z;\n k.iushrn(1);\n }\n\n return naf;\n}\nutils.getNAF = getNAF;\n\n// Represent k1, k2 in a Joint Sparse Form\nfunction getJSF(k1, k2) {\n var jsf = [\n [],\n [],\n ];\n\n k1 = k1.clone();\n k2 = k2.clone();\n var d1 = 0;\n var d2 = 0;\n var m8;\n while (k1.cmpn(-d1) > 0 || k2.cmpn(-d2) > 0) {\n // First phase\n var m14 = (k1.andln(3) + d1) & 3;\n var m24 = (k2.andln(3) + d2) & 3;\n if (m14 === 3)\n m14 = -1;\n if (m24 === 3)\n m24 = -1;\n var u1;\n if ((m14 & 1) === 0) {\n u1 = 0;\n } else {\n m8 = (k1.andln(7) + d1) & 7;\n if ((m8 === 3 || m8 === 5) && m24 === 2)\n u1 = -m14;\n else\n u1 = m14;\n }\n jsf[0].push(u1);\n\n var u2;\n if ((m24 & 1) === 0) {\n u2 = 0;\n } else {\n m8 = (k2.andln(7) + d2) & 7;\n if ((m8 === 3 || m8 === 5) && m14 === 2)\n u2 = -m24;\n else\n u2 = m24;\n }\n jsf[1].push(u2);\n\n // Second phase\n if (2 * d1 === u1 + 1)\n d1 = 1 - d1;\n if (2 * d2 === u2 + 1)\n d2 = 1 - d2;\n k1.iushrn(1);\n k2.iushrn(1);\n }\n\n return jsf;\n}\nutils.getJSF = getJSF;\n\nfunction cachedProperty(obj, name, computer) {\n var key = '_' + name;\n obj.prototype[name] = function cachedProperty() {\n return this[key] !== undefined ? this[key] :\n this[key] = computer.call(this);\n };\n}\nutils.cachedProperty = cachedProperty;\n\nfunction parseBytes(bytes) {\n return typeof bytes === 'string' ? utils.toArray(bytes, 'hex') :\n bytes;\n}\nutils.parseBytes = parseBytes;\n\nfunction intFromLE(bytes) {\n return new BN(bytes, 'hex', 'le');\n}\nutils.intFromLE = intFromLE;\n\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // 'A' - 'F'\n if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n // '0' - '9'\n } else {\n return (c - 48) & 0xf;\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this.strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is BN v4 instance\n r.strip();\n } else {\n // r is BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var naiveFallback = function () {\n\tif (typeof self === \"object\" && self) return self;\n\tif (typeof window === \"object\" && window) return window;\n\tthrow new Error(\"Unable to resolve global `this`\");\n};\n\nmodule.exports = (function () {\n\tif (this) return this;\n\n\t// Unexpected strict mode (may happen if e.g. bundled into ESM module)\n\n\t// Fallback to standard globalThis if available\n\tif (typeof globalThis === \"object\" && globalThis) return globalThis;\n\n\t// Thanks @mathiasbynens -> https://mathiasbynens.be/notes/globalthis\n\t// In all ES5+ engines global object inherits from Object.prototype\n\t// (if you approached one that doesn't please report)\n\ttry {\n\t\tObject.defineProperty(Object.prototype, \"__global__\", {\n\t\t\tget: function () { return this; },\n\t\t\tconfigurable: true\n\t\t});\n\t} catch (error) {\n\t\t// Unfortunate case of updates to Object.prototype being restricted\n\t\t// via preventExtensions, seal or freeze\n\t\treturn naiveFallback();\n\t}\n\ttry {\n\t\t// Safari case (window.__global__ works, but __global__ does not)\n\t\tif (!__global__) return naiveFallback();\n\t\treturn __global__;\n\t} finally {\n\t\tdelete Object.prototype.__global__;\n\t}\n})();\n","/**\n * Code refactored from Mozilla Developer Network:\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/assign\n */\n\n'use strict';\n\nfunction assign(target, firstSource) {\n if (target === undefined || target === null) {\n throw new TypeError('Cannot convert first argument to object');\n }\n\n var to = Object(target);\n for (var i = 1; i < arguments.length; i++) {\n var nextSource = arguments[i];\n if (nextSource === undefined || nextSource === null) {\n continue;\n }\n\n var keysArray = Object.keys(Object(nextSource));\n for (var nextIndex = 0, len = keysArray.length; nextIndex < len; nextIndex++) {\n var nextKey = keysArray[nextIndex];\n var desc = Object.getOwnPropertyDescriptor(nextSource, nextKey);\n if (desc !== undefined && desc.enumerable) {\n to[nextKey] = nextSource[nextKey];\n }\n }\n }\n return to;\n}\n\nfunction polyfill() {\n if (!Object.assign) {\n Object.defineProperty(Object, 'assign', {\n enumerable: false,\n configurable: true,\n writable: true,\n value: assign\n });\n }\n}\n\nmodule.exports = {\n assign: assign,\n polyfill: polyfill\n};\n","const EthQuery = require('eth-query')\nconst pify = require('pify')\nconst SafeEventEmitter = require('safe-event-emitter')\n\nconst sec = 1000\n\nconst calculateSum = (accumulator, currentValue) => accumulator + currentValue\nconst blockTrackerEvents = ['sync', 'latest']\n\nclass BaseBlockTracker extends SafeEventEmitter {\n\n //\n // public\n //\n\n constructor (opts = {}) {\n super()\n // config\n this._blockResetDuration = opts.blockResetDuration || 20 * sec\n // state\n this._blockResetTimeout\n this._currentBlock = null\n this._isRunning = false\n // bind functions for internal use\n this._onNewListener = this._onNewListener.bind(this)\n this._onRemoveListener = this._onRemoveListener.bind(this)\n this._resetCurrentBlock = this._resetCurrentBlock.bind(this)\n // listen for handler changes\n this._setupInternalEvents()\n }\n\n isRunning () {\n return this._isRunning\n }\n\n getCurrentBlock () {\n return this._currentBlock\n }\n\n async getLatestBlock () {\n // return if available\n if (this._currentBlock) return this._currentBlock\n // wait for a new latest block\n const latestBlock = await new Promise(resolve => this.once('latest', resolve))\n // return newly set current block\n return latestBlock\n }\n\n // dont allow module consumer to remove our internal event listeners\n removeAllListeners (eventName) {\n // perform default behavior, preserve fn arity\n if (eventName) {\n super.removeAllListeners(eventName)\n } else {\n super.removeAllListeners()\n }\n // re-add internal events\n this._setupInternalEvents()\n // trigger stop check just in case\n this._onRemoveListener()\n }\n\n //\n // to be implemented in subclass\n //\n\n _start () {\n // default behavior is noop\n }\n\n _end () {\n // default behavior is noop\n }\n\n //\n // private\n //\n\n _setupInternalEvents () {\n // first remove listeners for idempotence\n this.removeListener('newListener', this._onNewListener)\n this.removeListener('removeListener', this._onRemoveListener)\n // then add them\n this.on('newListener', this._onNewListener)\n this.on('removeListener', this._onRemoveListener)\n }\n\n _onNewListener (eventName, handler) {\n // `newListener` is called *before* the listener is added\n if (!blockTrackerEvents.includes(eventName)) return\n this._maybeStart()\n }\n\n _onRemoveListener (eventName, handler) {\n // `removeListener` is called *after* the listener is removed\n if (this._getBlockTrackerEventCount() > 0) return\n this._maybeEnd()\n }\n\n _maybeStart () {\n if (this._isRunning) return\n this._isRunning = true\n // cancel setting latest block to stale\n this._cancelBlockResetTimeout()\n this._start()\n }\n\n _maybeEnd () {\n if (!this._isRunning) return\n this._isRunning = false\n this._setupBlockResetTimeout()\n this._end()\n }\n\n _getBlockTrackerEventCount () {\n return blockTrackerEvents\n .map(eventName => this.listenerCount(eventName))\n .reduce(calculateSum)\n }\n\n _newPotentialLatest (newBlock) {\n const currentBlock = this._currentBlock\n // only update if blok number is higher\n if (currentBlock && (hexToInt(newBlock) <= hexToInt(currentBlock))) return\n this._setCurrentBlock(newBlock)\n }\n\n _setCurrentBlock (newBlock) {\n const oldBlock = this._currentBlock\n this._currentBlock = newBlock\n this.emit('latest', newBlock)\n this.emit('sync', { oldBlock, newBlock })\n }\n\n _setupBlockResetTimeout () {\n // clear any existing timeout\n this._cancelBlockResetTimeout()\n // clear latest block when stale\n this._blockResetTimeout = setTimeout(this._resetCurrentBlock, this._blockResetDuration)\n // nodejs - dont hold process open\n if (this._blockResetTimeout.unref) {\n this._blockResetTimeout.unref()\n }\n }\n\n _cancelBlockResetTimeout () {\n clearTimeout(this._blockResetTimeout)\n }\n\n _resetCurrentBlock () {\n this._currentBlock = null\n }\n\n}\n\nmodule.exports = BaseBlockTracker\n\nfunction hexToInt(hexInt) {\n return Number.parseInt(hexInt, 16)\n}\n","const pify = require('pify')\nconst BaseBlockTracker = require('./base')\n\nconst sec = 1000\n\nclass PollingBlockTracker extends BaseBlockTracker {\n\n constructor (opts = {}) {\n // parse + validate args\n if (!opts.provider) throw new Error('PollingBlockTracker - no provider specified.')\n const pollingInterval = opts.pollingInterval || 20 * sec\n const retryTimeout = opts.retryTimeout || pollingInterval / 10\n const keepEventLoopActive = opts.keepEventLoopActive !== undefined ? opts.keepEventLoopActive : true\n const setSkipCacheFlag = opts.setSkipCacheFlag || false\n // BaseBlockTracker constructor\n super(Object.assign({\n blockResetDuration: pollingInterval,\n }, opts))\n // config\n this._provider = opts.provider\n this._pollingInterval = pollingInterval\n this._retryTimeout = retryTimeout\n this._keepEventLoopActive = keepEventLoopActive\n this._setSkipCacheFlag = setSkipCacheFlag\n }\n\n //\n // public\n //\n\n // trigger block polling\n async checkForLatestBlock () {\n await this._updateLatestBlock()\n return await this.getLatestBlock()\n }\n\n //\n // private\n //\n\n _start () {\n this._performSync().catch(err => this.emit('error', err))\n }\n\n async _performSync () {\n while (this._isRunning) {\n try {\n await this._updateLatestBlock()\n await timeout(this._pollingInterval, !this._keepEventLoopActive)\n } catch (err) {\n const newErr = new Error(`PollingBlockTracker - encountered an error while attempting to update latest block:\\n${err.stack}`)\n try {\n this.emit('error', newErr)\n } catch (emitErr) {\n console.error(newErr)\n }\n await timeout(this._retryTimeout, !this._keepEventLoopActive)\n }\n }\n }\n\n async _updateLatestBlock () {\n // fetch + set latest block\n const latestBlock = await this._fetchLatestBlock()\n this._newPotentialLatest(latestBlock)\n }\n\n async _fetchLatestBlock () {\n const req = { jsonrpc: \"2.0\", id: 1, method: 'eth_blockNumber', params: [] }\n if (this._setSkipCacheFlag) req.skipCache = true\n const res = await pify((cb) => this._provider.sendAsync(req, cb))()\n if (res.error) throw new Error(`PollingBlockTracker - encountered error fetching block:\\n${res.error}`)\n return res.result\n }\n\n}\n\nmodule.exports = PollingBlockTracker\n\nfunction timeout (duration, unref) {\n return new Promise(resolve => {\n const timoutRef = setTimeout(resolve, duration)\n // don't keep process open\n if (timoutRef.unref && unref) {\n timoutRef.unref()\n }\n })\n}\n","var sha3 = require('js-sha3').keccak_256\nvar uts46 = require('idna-uts46-hx')\n\nfunction namehash (inputName) {\n // Reject empty names:\n var node = ''\n for (var i = 0; i < 32; i++) {\n node += '00'\n }\n\n name = normalize(inputName)\n\n if (name) {\n var labels = name.split('.')\n\n for(var i = labels.length - 1; i >= 0; i--) {\n var labelSha = sha3(labels[i])\n node = sha3(new Buffer(node + labelSha, 'hex'))\n }\n }\n\n return '0x' + node\n}\n\nfunction normalize(name) {\n return name ? uts46.toUnicode(name, {useStd3ASCII: true, transitional: false}) : name\n}\n\nexports.hash = namehash\nexports.normalize = normalize\n","/**\r\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\r\n *\r\n * @version 0.5.7\r\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\r\n * @copyright Chen, Yi-Cyuan 2015-2016\r\n * @license MIT\r\n */\r\n/*jslint bitwise: true */\r\n(function () {\r\n 'use strict';\r\n\r\n var root = typeof window === 'object' ? window : {};\r\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\r\n if (NODE_JS) {\r\n root = global;\r\n }\r\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\r\n var HEX_CHARS = '0123456789abcdef'.split('');\r\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\r\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\r\n var PADDING = [6, 1536, 393216, 100663296];\r\n var SHIFT = [0, 8, 16, 24];\r\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\r\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\r\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\r\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\r\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\r\n var BITS = [224, 256, 384, 512];\r\n var SHAKE_BITS = [128, 256];\r\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array'];\r\n\r\n var createOutputMethod = function (bits, padding, outputType) {\r\n return function (message) {\r\n return new Keccak(bits, padding, bits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createShakeOutputMethod = function (bits, padding, outputType) {\r\n return function (message, outputBits) {\r\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\r\n };\r\n };\r\n\r\n var createMethod = function (bits, padding) {\r\n var method = createOutputMethod(bits, padding, 'hex');\r\n method.create = function () {\r\n return new Keccak(bits, padding, bits);\r\n };\r\n method.update = function (message) {\r\n return method.create().update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var createShakeMethod = function (bits, padding) {\r\n var method = createShakeOutputMethod(bits, padding, 'hex');\r\n method.create = function (outputBits) {\r\n return new Keccak(bits, padding, outputBits);\r\n };\r\n method.update = function (message, outputBits) {\r\n return method.create(outputBits).update(message);\r\n };\r\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\r\n var type = OUTPUT_TYPES[i];\r\n method[type] = createShakeOutputMethod(bits, padding, type);\r\n }\r\n return method;\r\n };\r\n\r\n var algorithms = [\r\n {name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod},\r\n {name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod}\r\n ];\r\n\r\n var methods = {}, methodNames = [];\r\n\r\n for (var i = 0; i < algorithms.length; ++i) {\r\n var algorithm = algorithms[i];\r\n var bits = algorithm.bits;\r\n for (var j = 0; j < bits.length; ++j) {\r\n var methodName = algorithm.name +'_' + bits[j];\r\n methodNames.push(methodName);\r\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\r\n }\r\n }\r\n\r\n function Keccak(bits, padding, outputBits) {\r\n this.blocks = [];\r\n this.s = [];\r\n this.padding = padding;\r\n this.outputBits = outputBits;\r\n this.reset = true;\r\n this.block = 0;\r\n this.start = 0;\r\n this.blockCount = (1600 - (bits << 1)) >> 5;\r\n this.byteCount = this.blockCount << 2;\r\n this.outputBlocks = outputBits >> 5;\r\n this.extraBytes = (outputBits & 31) >> 3;\r\n\r\n for (var i = 0; i < 50; ++i) {\r\n this.s[i] = 0;\r\n }\r\n }\r\n\r\n Keccak.prototype.update = function (message) {\r\n var notString = typeof message !== 'string';\r\n if (notString && message.constructor === ArrayBuffer) {\r\n message = new Uint8Array(message);\r\n }\r\n var length = message.length, blocks = this.blocks, byteCount = this.byteCount,\r\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\r\n\r\n while (index < length) {\r\n if (this.reset) {\r\n this.reset = false;\r\n blocks[0] = this.block;\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n if (notString) {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\r\n }\r\n } else {\r\n for (i = this.start; index < length && i < byteCount; ++index) {\r\n code = message.charCodeAt(index);\r\n if (code < 0x80) {\r\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\r\n } else if (code < 0x800) {\r\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else if (code < 0xd800 || code >= 0xe000) {\r\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n } else {\r\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\r\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\r\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\r\n }\r\n }\r\n }\r\n this.lastByteIndex = i;\r\n if (i >= byteCount) {\r\n this.start = i - byteCount;\r\n this.block = blocks[blockCount];\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n this.reset = true;\r\n } else {\r\n this.start = i;\r\n }\r\n }\r\n return this;\r\n };\r\n\r\n Keccak.prototype.finalize = function () {\r\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\r\n blocks[i >> 2] |= this.padding[i & 3];\r\n if (this.lastByteIndex === this.byteCount) {\r\n blocks[0] = blocks[blockCount];\r\n for (i = 1; i < blockCount + 1; ++i) {\r\n blocks[i] = 0;\r\n }\r\n }\r\n blocks[blockCount - 1] |= 0x80000000;\r\n for (i = 0; i < blockCount; ++i) {\r\n s[i] ^= blocks[i];\r\n }\r\n f(s);\r\n };\r\n\r\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var hex = '', block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n block = s[i];\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\r\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\r\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\r\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n i = 0;\r\n }\r\n }\r\n if (extraBytes) {\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\r\n }\r\n if (extraBytes > 1) {\r\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\r\n }\r\n if (extraBytes > 2) {\r\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\r\n }\r\n }\r\n return hex;\r\n };\r\n\r\n Keccak.prototype.arrayBuffer = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var bytes = this.outputBits >> 3;\r\n var buffer;\r\n if (extraBytes) {\r\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\r\n } else {\r\n buffer = new ArrayBuffer(bytes);\r\n }\r\n var array = new Uint32Array(buffer);\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n array[j] = s[i];\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n array[i] = s[i];\r\n buffer = buffer.slice(0, bytes);\r\n }\r\n return buffer;\r\n };\r\n\r\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\r\n\r\n Keccak.prototype.digest = Keccak.prototype.array = function () {\r\n this.finalize();\r\n\r\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\r\n extraBytes = this.extraBytes, i = 0, j = 0;\r\n var array = [], offset, block;\r\n while (j < outputBlocks) {\r\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\r\n offset = j << 2;\r\n block = s[i];\r\n array[offset] = block & 0xFF;\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n array[offset + 3] = (block >> 24) & 0xFF;\r\n }\r\n if (j % blockCount === 0) {\r\n f(s);\r\n }\r\n }\r\n if (extraBytes) {\r\n offset = j << 2;\r\n block = s[i];\r\n if (extraBytes > 0) {\r\n array[offset] = block & 0xFF;\r\n }\r\n if (extraBytes > 1) {\r\n array[offset + 1] = (block >> 8) & 0xFF;\r\n }\r\n if (extraBytes > 2) {\r\n array[offset + 2] = (block >> 16) & 0xFF;\r\n }\r\n }\r\n return array;\r\n };\r\n\r\n var f = function (s) {\r\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\r\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\r\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\r\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\r\n for (n = 0; n < 48; n += 2) {\r\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\r\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\r\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\r\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\r\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\r\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\r\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\r\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\r\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\r\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\r\n\r\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\r\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\r\n s[0] ^= h;\r\n s[1] ^= l;\r\n s[10] ^= h;\r\n s[11] ^= l;\r\n s[20] ^= h;\r\n s[21] ^= l;\r\n s[30] ^= h;\r\n s[31] ^= l;\r\n s[40] ^= h;\r\n s[41] ^= l;\r\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\r\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\r\n s[2] ^= h;\r\n s[3] ^= l;\r\n s[12] ^= h;\r\n s[13] ^= l;\r\n s[22] ^= h;\r\n s[23] ^= l;\r\n s[32] ^= h;\r\n s[33] ^= l;\r\n s[42] ^= h;\r\n s[43] ^= l;\r\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\r\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\r\n s[4] ^= h;\r\n s[5] ^= l;\r\n s[14] ^= h;\r\n s[15] ^= l;\r\n s[24] ^= h;\r\n s[25] ^= l;\r\n s[34] ^= h;\r\n s[35] ^= l;\r\n s[44] ^= h;\r\n s[45] ^= l;\r\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\r\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\r\n s[6] ^= h;\r\n s[7] ^= l;\r\n s[16] ^= h;\r\n s[17] ^= l;\r\n s[26] ^= h;\r\n s[27] ^= l;\r\n s[36] ^= h;\r\n s[37] ^= l;\r\n s[46] ^= h;\r\n s[47] ^= l;\r\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\r\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\r\n s[8] ^= h;\r\n s[9] ^= l;\r\n s[18] ^= h;\r\n s[19] ^= l;\r\n s[28] ^= h;\r\n s[29] ^= l;\r\n s[38] ^= h;\r\n s[39] ^= l;\r\n s[48] ^= h;\r\n s[49] ^= l;\r\n\r\n b0 = s[0];\r\n b1 = s[1];\r\n b32 = (s[11] << 4) | (s[10] >>> 28);\r\n b33 = (s[10] << 4) | (s[11] >>> 28);\r\n b14 = (s[20] << 3) | (s[21] >>> 29);\r\n b15 = (s[21] << 3) | (s[20] >>> 29);\r\n b46 = (s[31] << 9) | (s[30] >>> 23);\r\n b47 = (s[30] << 9) | (s[31] >>> 23);\r\n b28 = (s[40] << 18) | (s[41] >>> 14);\r\n b29 = (s[41] << 18) | (s[40] >>> 14);\r\n b20 = (s[2] << 1) | (s[3] >>> 31);\r\n b21 = (s[3] << 1) | (s[2] >>> 31);\r\n b2 = (s[13] << 12) | (s[12] >>> 20);\r\n b3 = (s[12] << 12) | (s[13] >>> 20);\r\n b34 = (s[22] << 10) | (s[23] >>> 22);\r\n b35 = (s[23] << 10) | (s[22] >>> 22);\r\n b16 = (s[33] << 13) | (s[32] >>> 19);\r\n b17 = (s[32] << 13) | (s[33] >>> 19);\r\n b48 = (s[42] << 2) | (s[43] >>> 30);\r\n b49 = (s[43] << 2) | (s[42] >>> 30);\r\n b40 = (s[5] << 30) | (s[4] >>> 2);\r\n b41 = (s[4] << 30) | (s[5] >>> 2);\r\n b22 = (s[14] << 6) | (s[15] >>> 26);\r\n b23 = (s[15] << 6) | (s[14] >>> 26);\r\n b4 = (s[25] << 11) | (s[24] >>> 21);\r\n b5 = (s[24] << 11) | (s[25] >>> 21);\r\n b36 = (s[34] << 15) | (s[35] >>> 17);\r\n b37 = (s[35] << 15) | (s[34] >>> 17);\r\n b18 = (s[45] << 29) | (s[44] >>> 3);\r\n b19 = (s[44] << 29) | (s[45] >>> 3);\r\n b10 = (s[6] << 28) | (s[7] >>> 4);\r\n b11 = (s[7] << 28) | (s[6] >>> 4);\r\n b42 = (s[17] << 23) | (s[16] >>> 9);\r\n b43 = (s[16] << 23) | (s[17] >>> 9);\r\n b24 = (s[26] << 25) | (s[27] >>> 7);\r\n b25 = (s[27] << 25) | (s[26] >>> 7);\r\n b6 = (s[36] << 21) | (s[37] >>> 11);\r\n b7 = (s[37] << 21) | (s[36] >>> 11);\r\n b38 = (s[47] << 24) | (s[46] >>> 8);\r\n b39 = (s[46] << 24) | (s[47] >>> 8);\r\n b30 = (s[8] << 27) | (s[9] >>> 5);\r\n b31 = (s[9] << 27) | (s[8] >>> 5);\r\n b12 = (s[18] << 20) | (s[19] >>> 12);\r\n b13 = (s[19] << 20) | (s[18] >>> 12);\r\n b44 = (s[29] << 7) | (s[28] >>> 25);\r\n b45 = (s[28] << 7) | (s[29] >>> 25);\r\n b26 = (s[38] << 8) | (s[39] >>> 24);\r\n b27 = (s[39] << 8) | (s[38] >>> 24);\r\n b8 = (s[48] << 14) | (s[49] >>> 18);\r\n b9 = (s[49] << 14) | (s[48] >>> 18);\r\n\r\n s[0] = b0 ^ (~b2 & b4);\r\n s[1] = b1 ^ (~b3 & b5);\r\n s[10] = b10 ^ (~b12 & b14);\r\n s[11] = b11 ^ (~b13 & b15);\r\n s[20] = b20 ^ (~b22 & b24);\r\n s[21] = b21 ^ (~b23 & b25);\r\n s[30] = b30 ^ (~b32 & b34);\r\n s[31] = b31 ^ (~b33 & b35);\r\n s[40] = b40 ^ (~b42 & b44);\r\n s[41] = b41 ^ (~b43 & b45);\r\n s[2] = b2 ^ (~b4 & b6);\r\n s[3] = b3 ^ (~b5 & b7);\r\n s[12] = b12 ^ (~b14 & b16);\r\n s[13] = b13 ^ (~b15 & b17);\r\n s[22] = b22 ^ (~b24 & b26);\r\n s[23] = b23 ^ (~b25 & b27);\r\n s[32] = b32 ^ (~b34 & b36);\r\n s[33] = b33 ^ (~b35 & b37);\r\n s[42] = b42 ^ (~b44 & b46);\r\n s[43] = b43 ^ (~b45 & b47);\r\n s[4] = b4 ^ (~b6 & b8);\r\n s[5] = b5 ^ (~b7 & b9);\r\n s[14] = b14 ^ (~b16 & b18);\r\n s[15] = b15 ^ (~b17 & b19);\r\n s[24] = b24 ^ (~b26 & b28);\r\n s[25] = b25 ^ (~b27 & b29);\r\n s[34] = b34 ^ (~b36 & b38);\r\n s[35] = b35 ^ (~b37 & b39);\r\n s[44] = b44 ^ (~b46 & b48);\r\n s[45] = b45 ^ (~b47 & b49);\r\n s[6] = b6 ^ (~b8 & b0);\r\n s[7] = b7 ^ (~b9 & b1);\r\n s[16] = b16 ^ (~b18 & b10);\r\n s[17] = b17 ^ (~b19 & b11);\r\n s[26] = b26 ^ (~b28 & b20);\r\n s[27] = b27 ^ (~b29 & b21);\r\n s[36] = b36 ^ (~b38 & b30);\r\n s[37] = b37 ^ (~b39 & b31);\r\n s[46] = b46 ^ (~b48 & b40);\r\n s[47] = b47 ^ (~b49 & b41);\r\n s[8] = b8 ^ (~b0 & b2);\r\n s[9] = b9 ^ (~b1 & b3);\r\n s[18] = b18 ^ (~b10 & b12);\r\n s[19] = b19 ^ (~b11 & b13);\r\n s[28] = b28 ^ (~b20 & b22);\r\n s[29] = b29 ^ (~b21 & b23);\r\n s[38] = b38 ^ (~b30 & b32);\r\n s[39] = b39 ^ (~b31 & b33);\r\n s[48] = b48 ^ (~b40 & b42);\r\n s[49] = b49 ^ (~b41 & b43);\r\n\r\n s[0] ^= RC[n];\r\n s[1] ^= RC[n + 1];\r\n }\r\n };\r\n\r\n if (COMMON_JS) {\r\n module.exports = methods;\r\n } else {\r\n for (var i = 0; i < methodNames.length; ++i) {\r\n root[methodNames[i]] = methods[methodNames[i]];\r\n }\r\n }\r\n})();\r\n","const BaseFilter = require('./base-filter')\n\n// tracks all results ever recorded\nclass BaseFilterWithHistory extends BaseFilter {\n\n constructor () {\n super()\n this.allResults = []\n }\n\n async update () {\n throw new Error('BaseFilterWithHistory - no update method specified')\n }\n\n addResults (newResults) {\n this.allResults = this.allResults.concat(newResults)\n super.addResults(newResults)\n }\n\n addInitialResults (newResults) {\n this.allResults = this.allResults.concat(newResults)\n super.addInitialResults(newResults)\n }\n\n getAllResults () {\n return this.allResults\n }\n\n}\n\nmodule.exports = BaseFilterWithHistory","const SafeEventEmitter = require('@metamask/safe-event-emitter').default\n\nclass BaseFilter extends SafeEventEmitter {\n\n constructor () {\n super()\n this.updates = []\n }\n\n async initialize () {}\n\n async update () {\n throw new Error('BaseFilter - no update method specified')\n }\n\n addResults (newResults) {\n this.updates = this.updates.concat(newResults)\n newResults.forEach(result => this.emit('update', result))\n }\n\n addInitialResults (newResults) {}\n\n getChangesAndClear () {\n const updates = this.updates\n this.updates = []\n return updates\n }\n \n}\n\nmodule.exports = BaseFilter\n","const BaseFilter = require('./base-filter')\nconst getBlocksForRange = require('./getBlocksForRange')\nconst { incrementHexInt } = require('./hexUtils')\n\nclass BlockFilter extends BaseFilter {\n\n constructor ({ provider, params }) {\n super()\n this.type = 'block'\n this.provider = provider\n }\n\n async update ({ oldBlock, newBlock }) {\n const toBlock = newBlock\n const fromBlock = incrementHexInt(oldBlock)\n const blockBodies = await getBlocksForRange({ provider: this.provider, fromBlock, toBlock })\n const blockHashes = blockBodies.map((block) => block.hash)\n this.addResults(blockHashes)\n }\n\n}\n\nmodule.exports = BlockFilter\n","module.exports = getBlocksForRange\n\nasync function getBlocksForRange({ provider, fromBlock, toBlock }) {\n if (!fromBlock) fromBlock = toBlock\n\n const fromBlockNumber = hexToInt(fromBlock)\n const toBlockNumber = hexToInt(toBlock)\n const blockCountToQuery = toBlockNumber - fromBlockNumber + 1\n // load all blocks from old to new (inclusive)\n const missingBlockNumbers = Array(blockCountToQuery).fill()\n .map((_,index) => fromBlockNumber + index)\n .map(intToHex)\n const blockBodies = await Promise.all(\n missingBlockNumbers.map(blockNum => query(provider, 'eth_getBlockByNumber', [blockNum, false]))\n )\n return blockBodies\n}\n\nfunction hexToInt(hexString) {\n if (hexString === undefined || hexString === null) return hexString\n return Number.parseInt(hexString, 16)\n}\n\nfunction incrementHexInt(hexString){\n if (hexString === undefined || hexString === null) return hexString\n const value = hexToInt(hexString)\n return intToHex(value + 1)\n}\n\nfunction intToHex(int) {\n if (int === undefined || int === null) return int\n const hexString = int.toString(16)\n return '0x' + hexString\n}\n\nfunction query(provider, method, params) {\n return new Promise((resolve, reject) => {\n provider.sendAsync({ id: 1, jsonrpc: '2.0', method, params }, (err, res) => {\n if (err) return reject(err)\n resolve(res.result)\n })\n })\n}\n","\nmodule.exports = {\n minBlockRef,\n maxBlockRef,\n sortBlockRefs,\n bnToHex,\n blockRefIsNumber,\n hexToInt,\n incrementHexInt,\n intToHex,\n unsafeRandomBytes,\n}\n\nfunction minBlockRef(...refs) {\n const sortedRefs = sortBlockRefs(refs)\n return sortedRefs[0]\n}\n\nfunction maxBlockRef(...refs) {\n const sortedRefs = sortBlockRefs(refs)\n return sortedRefs[sortedRefs.length-1]\n}\n\nfunction sortBlockRefs(refs) {\n return refs.sort((refA, refB) => {\n if (refA === 'latest' || refB === 'earliest') return 1\n if (refB === 'latest' || refA === 'earliest') return -1\n return hexToInt(refA) - hexToInt(refB)\n })\n}\n\nfunction bnToHex(bn) {\n return '0x' + bn.toString(16)\n}\n\nfunction blockRefIsNumber(blockRef){\n return blockRef && !['earliest', 'latest', 'pending'].includes(blockRef)\n}\n\nfunction hexToInt(hexString) {\n if (hexString === undefined || hexString === null) return hexString\n return Number.parseInt(hexString, 16)\n}\n\nfunction incrementHexInt(hexString){\n if (hexString === undefined || hexString === null) return hexString\n const value = hexToInt(hexString)\n return intToHex(value + 1)\n}\n\nfunction intToHex(int) {\n if (int === undefined || int === null) return int\n let hexString = int.toString(16)\n const needsLeftPad = hexString.length % 2\n if (needsLeftPad) hexString = '0' + hexString\n return '0x' + hexString\n}\n\nfunction unsafeRandomBytes(byteCount) {\n let result = '0x'\n for (let i = 0; i < byteCount; i++) {\n result += unsafeRandomNibble()\n result += unsafeRandomNibble()\n }\n return result\n}\n\nfunction unsafeRandomNibble() {\n return Math.floor(Math.random() * 16).toString(16)\n}\n","const Mutex = require('async-mutex').Mutex\nconst { createAsyncMiddleware } = require('json-rpc-engine')\nconst createJsonRpcMiddleware = require('eth-json-rpc-middleware/scaffold')\nconst LogFilter = require('./log-filter.js')\nconst BlockFilter = require('./block-filter.js')\nconst TxFilter = require('./tx-filter.js')\nconst { intToHex, hexToInt } = require('./hexUtils')\n\nmodule.exports = createEthFilterMiddleware\n\nfunction createEthFilterMiddleware({ blockTracker, provider }) {\n\n // create filter collection\n let filterIndex = 0\n let filters = {}\n // create update mutex\n const mutex = new Mutex()\n const waitForFree = mutexMiddlewareWrapper({ mutex })\n\n const middleware = createJsonRpcMiddleware({\n // install filters\n eth_newFilter: waitForFree(toFilterCreationMiddleware(newLogFilter)),\n eth_newBlockFilter: waitForFree(toFilterCreationMiddleware(newBlockFilter)),\n eth_newPendingTransactionFilter: waitForFree(toFilterCreationMiddleware(newPendingTransactionFilter)),\n // uninstall filters\n eth_uninstallFilter: waitForFree(toAsyncRpcMiddleware(uninstallFilterHandler)),\n // checking filter changes\n eth_getFilterChanges: waitForFree(toAsyncRpcMiddleware(getFilterChanges)),\n eth_getFilterLogs: waitForFree(toAsyncRpcMiddleware(getFilterLogs)),\n })\n\n // setup filter updating and destroy handler\n const filterUpdater = async ({ oldBlock, newBlock }) => {\n if (filters.length === 0) return\n // lock update reads\n const releaseLock = await mutex.acquire()\n try {\n // process all filters in parallel\n await Promise.all(objValues(filters).map(async (filter) => {\n try {\n await filter.update({ oldBlock, newBlock })\n } catch (err) {\n // handle each error individually so filter update errors don't affect other filters\n console.error(err)\n }\n }))\n } catch (err) {\n // log error so we don't skip the releaseLock\n console.error(err)\n }\n // unlock update reads\n releaseLock()\n }\n\n // expose filter methods directly\n middleware.newLogFilter = newLogFilter\n middleware.newBlockFilter = newBlockFilter\n middleware.newPendingTransactionFilter = newPendingTransactionFilter\n middleware.uninstallFilter = uninstallFilterHandler\n middleware.getFilterChanges = getFilterChanges\n middleware.getFilterLogs = getFilterLogs\n\n // expose destroy method for cleanup\n middleware.destroy = () => {\n uninstallAllFilters()\n }\n\n return middleware\n\n //\n // new filters\n //\n\n async function newLogFilter(params) {\n const filter = new LogFilter({ provider, params })\n const filterIndex = await installFilter(filter)\n return filter\n }\n\n async function newBlockFilter() {\n const filter = new BlockFilter({ provider })\n const filterIndex = await installFilter(filter)\n return filter\n }\n\n async function newPendingTransactionFilter() {\n const filter = new TxFilter({ provider })\n const filterIndex = await installFilter(filter)\n return filter\n }\n\n //\n // get filter changes\n //\n\n async function getFilterChanges(filterIndexHex) {\n const filterIndex = hexToInt(filterIndexHex)\n const filter = filters[filterIndex]\n if (!filter) {\n throw new Error(`No filter for index \"${filterIndex}\"`)\n }\n const results = filter.getChangesAndClear()\n return results\n }\n\n async function getFilterLogs(filterIndexHex) {\n const filterIndex = hexToInt(filterIndexHex)\n const filter = filters[filterIndex]\n if (!filter) {\n throw new Error(`No filter for index \"${filterIndex}\"`)\n }\n // only return results for log filters\n if (filter.type === 'log') {\n results = filter.getAllResults()\n } else {\n results = []\n }\n return results\n }\n\n\n //\n // remove filters\n //\n\n\n async function uninstallFilterHandler(filterIndexHex) {\n // check filter exists\n const filterIndex = hexToInt(filterIndexHex)\n const filter = filters[filterIndex]\n const result = Boolean(filter)\n // uninstall filter\n if (result) {\n await uninstallFilter(filterIndex)\n }\n return result\n }\n\n //\n // utils\n //\n\n async function installFilter(filter) {\n const prevFilterCount = objValues(filters).length\n // install filter\n const currentBlock = await blockTracker.getLatestBlock()\n await filter.initialize({ currentBlock })\n filterIndex++\n filters[filterIndex] = filter\n filter.id = filterIndex\n filter.idHex = intToHex(filterIndex)\n // update block tracker subs\n const newFilterCount = objValues(filters).length\n updateBlockTrackerSubs({ prevFilterCount, newFilterCount })\n return filterIndex\n }\n\n async function uninstallFilter(filterIndex) {\n const prevFilterCount = objValues(filters).length\n delete filters[filterIndex]\n // update block tracker subs\n const newFilterCount = objValues(filters).length\n updateBlockTrackerSubs({ prevFilterCount, newFilterCount })\n }\n\n async function uninstallAllFilters() {\n const prevFilterCount = objValues(filters).length\n filters = {}\n // update block tracker subs\n updateBlockTrackerSubs({ prevFilterCount, newFilterCount: 0 })\n }\n\n function updateBlockTrackerSubs({ prevFilterCount, newFilterCount }) {\n // subscribe\n if (prevFilterCount === 0 && newFilterCount > 0) {\n blockTracker.on('sync', filterUpdater)\n return\n }\n // unsubscribe\n if (prevFilterCount > 0 && newFilterCount === 0) {\n blockTracker.removeListener('sync', filterUpdater)\n return\n }\n }\n\n}\n\n// helper for turning filter constructors into rpc middleware\nfunction toFilterCreationMiddleware(createFilterFn) {\n return toAsyncRpcMiddleware(async (...args) => {\n const filter = await createFilterFn(...args)\n const result = intToHex(filter.id)\n return result\n })\n}\n\n// helper for pulling out req.params and setting res.result\nfunction toAsyncRpcMiddleware(asyncFn) {\n return createAsyncMiddleware(async (req, res) => {\n const result = await asyncFn.apply(null, req.params)\n res.result = result\n })\n}\n\nfunction mutexMiddlewareWrapper({ mutex }) {\n return (middleware) => {\n return async (req, res, next, end) => {\n // wait for mutex available\n // we can release immediately because\n // we just need to make sure updates aren't active\n const releaseLock = await mutex.acquire()\n releaseLock()\n middleware(req, res, next, end)\n }\n }\n}\n\nfunction objValues(obj, fn){\n const values = []\n for (let key in obj) {\n values.push(obj[key])\n }\n return values\n}\n","const EthQuery = require('eth-query')\nconst pify = require('pify')\nconst BaseFilterWithHistory = require('./base-filter-history')\nconst { bnToHex, hexToInt, incrementHexInt, minBlockRef, blockRefIsNumber } = require('./hexUtils')\n\nclass LogFilter extends BaseFilterWithHistory {\n\n constructor ({ provider, params }) {\n super()\n this.type = 'log'\n this.ethQuery = new EthQuery(provider)\n this.params = Object.assign({\n fromBlock: 'latest',\n toBlock: 'latest',\n address: undefined,\n topics: [],\n }, params)\n // normalize address parameter\n if (this.params.address) {\n // ensure array\n if (!Array.isArray(this.params.address)) {\n this.params.address = [this.params.address]\n }\n // ensure lowercase\n this.params.address = this.params.address.map(address => address.toLowerCase())\n }\n }\n\n async initialize({ currentBlock }) {\n // resolve params.fromBlock\n let fromBlock = this.params.fromBlock\n if (['latest', 'pending'].includes(fromBlock)) fromBlock = currentBlock\n if ('earliest' === fromBlock) fromBlock = '0x0'\n this.params.fromBlock = fromBlock\n // set toBlock for initial lookup\n const toBlock = minBlockRef(this.params.toBlock, currentBlock)\n const params = Object.assign({}, this.params, { toBlock })\n // fetch logs and add to results\n const newLogs = await this._fetchLogs(params)\n this.addInitialResults(newLogs)\n }\n\n async update ({ oldBlock, newBlock }) {\n // configure params for this update\n const toBlock = newBlock\n let fromBlock\n // oldBlock is empty on first sync\n if (oldBlock) {\n fromBlock = incrementHexInt(oldBlock)\n } else {\n fromBlock = newBlock\n }\n // fetch logs\n const params = Object.assign({}, this.params, { fromBlock, toBlock })\n const newLogs = await this._fetchLogs(params)\n const matchingLogs = newLogs.filter(log => this.matchLog(log))\n\n // add to results\n this.addResults(matchingLogs)\n }\n\n async _fetchLogs (params) {\n const newLogs = await pify(cb => this.ethQuery.getLogs(params, cb))()\n // add to results\n return newLogs\n }\n\n matchLog(log) {\n // check if block number in bounds:\n if (hexToInt(this.params.fromBlock) >= hexToInt(log.blockNumber)) return false\n if (blockRefIsNumber(this.params.toBlock) && hexToInt(this.params.toBlock) <= hexToInt(log.blockNumber)) return false\n\n // address is correct:\n const normalizedLogAddress = log.address && log.address.toLowerCase()\n if (this.params.address && normalizedLogAddress && !this.params.address.includes(normalizedLogAddress)) return false\n\n // topics match:\n // topics are position-dependant\n // topics can be nested to represent `or` [[a || b], c]\n // topics can be null, representing a wild card for that position\n const topicsMatch = this.params.topics.every((topicPattern, index) => {\n // pattern is longer than actual topics\n let logTopic = log.topics[index]\n if (!logTopic) return false\n logTopic = logTopic.toLowerCase()\n // normalize subTopics\n let subtopicsToMatch = Array.isArray(topicPattern) ? topicPattern : [topicPattern]\n // check for wild card\n const subtopicsIncludeWildcard = subtopicsToMatch.includes(null)\n if (subtopicsIncludeWildcard) return true\n subtopicsToMatch = subtopicsToMatch.map(topic => topic.toLowerCase())\n // check each possible matching topic\n const topicDoesMatch = subtopicsToMatch.includes(logTopic)\n return topicDoesMatch\n })\n\n return topicsMatch\n }\n\n}\n\nmodule.exports = LogFilter\n","'use strict';\n\nconst processFn = (fn, options, proxy, unwrapped) => function (...arguments_) {\n\tconst P = options.promiseModule;\n\n\treturn new P((resolve, reject) => {\n\t\tif (options.multiArgs) {\n\t\t\targuments_.push((...result) => {\n\t\t\t\tif (options.errorFirst) {\n\t\t\t\t\tif (result[0]) {\n\t\t\t\t\t\treject(result);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresult.shift();\n\t\t\t\t\t\tresolve(result);\n\t\t\t\t\t}\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else if (options.errorFirst) {\n\t\t\targuments_.push((error, result) => {\n\t\t\t\tif (error) {\n\t\t\t\t\treject(error);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\targuments_.push(resolve);\n\t\t}\n\n\t\tconst self = this === proxy ? unwrapped : this;\n\t\tReflect.apply(fn, self, arguments_);\n\t});\n};\n\nconst filterCache = new WeakMap();\n\nmodule.exports = (input, options) => {\n\toptions = {\n\t\texclude: [/.+(?:Sync|Stream)$/],\n\t\terrorFirst: true,\n\t\tpromiseModule: Promise,\n\t\t...options\n\t};\n\n\tconst objectType = typeof input;\n\tif (!(input !== null && (objectType === 'object' || objectType === 'function'))) {\n\t\tthrow new TypeError(`Expected \\`input\\` to be a \\`Function\\` or \\`Object\\`, got \\`${input === null ? 'null' : objectType}\\``);\n\t}\n\n\tconst filter = (target, key) => {\n\t\tlet cached = filterCache.get(target);\n\n\t\tif (!cached) {\n\t\t\tcached = {};\n\t\t\tfilterCache.set(target, cached);\n\t\t}\n\n\t\tif (key in cached) {\n\t\t\treturn cached[key];\n\t\t}\n\n\t\tconst match = pattern => (typeof pattern === 'string' || typeof key === 'symbol') ? key === pattern : pattern.test(key);\n\t\tconst desc = Reflect.getOwnPropertyDescriptor(target, key);\n\t\tconst writableOrConfigurableOwn = (desc === undefined || desc.writable || desc.configurable);\n\t\tconst included = options.include ? options.include.some(match) : !options.exclude.some(match);\n\t\tconst shouldFilter = included && writableOrConfigurableOwn;\n\t\tcached[key] = shouldFilter;\n\t\treturn shouldFilter;\n\t};\n\n\tconst cache = new WeakMap();\n\n\tconst proxy = new Proxy(input, {\n\t\tapply(target, thisArg, args) {\n\t\t\tconst cached = cache.get(target);\n\n\t\t\tif (cached) {\n\t\t\t\treturn Reflect.apply(cached, thisArg, args);\n\t\t\t}\n\n\t\t\tconst pified = options.excludeMain ? target : processFn(target, options, proxy, target);\n\t\t\tcache.set(target, pified);\n\t\t\treturn Reflect.apply(pified, thisArg, args);\n\t\t},\n\n\t\tget(target, key) {\n\t\t\tconst property = target[key];\n\n\t\t\t// eslint-disable-next-line no-use-extend-native/no-use-extend-native\n\t\t\tif (!filter(target, key) || property === Function.prototype[key]) {\n\t\t\t\treturn property;\n\t\t\t}\n\n\t\t\tconst cached = cache.get(property);\n\n\t\t\tif (cached) {\n\t\t\t\treturn cached;\n\t\t\t}\n\n\t\t\tif (typeof property === 'function') {\n\t\t\t\tconst pified = processFn(property, options, proxy, target);\n\t\t\t\tcache.set(property, pified);\n\t\t\t\treturn pified;\n\t\t\t}\n\n\t\t\treturn property;\n\t\t}\n\t});\n\n\treturn proxy;\n};\n","const SafeEventEmitter = require('@metamask/safe-event-emitter').default\nconst createScaffoldMiddleware = require('eth-json-rpc-middleware/scaffold')\nconst { createAsyncMiddleware } = require('json-rpc-engine')\nconst createFilterMiddleware = require('./index.js')\nconst { unsafeRandomBytes, incrementHexInt } = require('./hexUtils.js')\nconst getBlocksForRange = require('./getBlocksForRange.js')\n\nmodule.exports = createSubscriptionMiddleware\n\n\nfunction createSubscriptionMiddleware({ blockTracker, provider }) {\n // state and utilities for handling subscriptions\n const subscriptions = {}\n const filterManager = createFilterMiddleware({ blockTracker, provider })\n\n // internal flag\n let isDestroyed = false\n\n // create subscriptionManager api object\n const events = new SafeEventEmitter()\n const middleware = createScaffoldMiddleware({\n eth_subscribe: createAsyncMiddleware(subscribe),\n eth_unsubscribe: createAsyncMiddleware(unsubscribe),\n })\n middleware.destroy = destroy\n return { events, middleware }\n\n async function subscribe(req, res) {\n\n if (isDestroyed) throw new Error(\n 'SubscriptionManager - attempting to use after destroying'\n )\n\n const subscriptionType = req.params[0]\n // subId is 16 byte hex string\n const subId = unsafeRandomBytes(16)\n\n // create sub\n let sub\n switch (subscriptionType) {\n case 'newHeads':\n sub = createSubNewHeads({ subId })\n break\n case 'logs':\n const filterParams = req.params[1]\n const filter = await filterManager.newLogFilter(filterParams)\n sub = createSubFromFilter({ subId, filter })\n break\n default:\n throw new Error(`SubscriptionManager - unsupported subscription type \"${subscriptionType}\"`)\n\n }\n subscriptions[subId] = sub\n\n res.result = subId\n return\n\n function createSubNewHeads({ subId }) {\n const sub = {\n type: subscriptionType,\n destroy: async () => {\n blockTracker.removeListener('sync', sub.update)\n },\n update: async ({ oldBlock, newBlock }) => {\n // for newHeads\n const toBlock = newBlock\n const fromBlock = incrementHexInt(oldBlock)\n const rawBlocks = await getBlocksForRange({ provider, fromBlock, toBlock })\n const results = rawBlocks.map(normalizeBlock)\n results.forEach((value) => {\n _emitSubscriptionResult(subId, value)\n })\n }\n }\n // check for subscription updates on new block\n blockTracker.on('sync', sub.update)\n return sub\n }\n\n function createSubFromFilter({ subId, filter }){\n filter.on('update', result => _emitSubscriptionResult(subId, result))\n const sub = {\n type: subscriptionType,\n destroy: async () => {\n return await filterManager.uninstallFilter(filter.idHex)\n },\n }\n return sub\n }\n }\n\n async function unsubscribe(req, res) {\n\n if (isDestroyed) throw new Error(\n 'SubscriptionManager - attempting to use after destroying'\n )\n\n const id = req.params[0]\n const subscription = subscriptions[id]\n // if missing, return \"false\" to indicate it was not removed\n if (!subscription) {\n res.result = false\n return\n }\n // cleanup subscription\n delete subscriptions[id]\n await subscription.destroy()\n res.result = true\n }\n\n function _emitSubscriptionResult(filterIdHex, value) {\n events.emit('notification', {\n jsonrpc: '2.0',\n method: 'eth_subscription',\n params: {\n subscription: filterIdHex,\n result: value,\n },\n })\n }\n\n function destroy () {\n events.removeAllListeners()\n for (const id in subscriptions) {\n subscriptions[id].destroy()\n delete subscriptions[id]\n }\n isDestroyed = true\n }\n}\n\nfunction normalizeBlock(block) {\n return {\n hash: block.hash,\n parentHash: block.parentHash,\n sha3Uncles: block.sha3Uncles,\n miner: block.miner,\n stateRoot: block.stateRoot,\n transactionsRoot: block.transactionsRoot,\n receiptsRoot: block.receiptsRoot,\n logsBloom: block.logsBloom,\n difficulty: block.difficulty,\n number: block.number,\n gasLimit: block.gasLimit,\n gasUsed: block.gasUsed,\n nonce: block.nonce,\n mixHash: block.mixHash,\n timestamp: block.timestamp,\n extraData: block.extraData,\n }\n}\n","const BaseFilter = require('./base-filter')\nconst getBlocksForRange = require('./getBlocksForRange')\nconst { incrementHexInt } = require('./hexUtils')\n\nclass TxFilter extends BaseFilter {\n\n constructor ({ provider }) {\n super()\n this.type = 'tx'\n this.provider = provider\n }\n\n async update ({ oldBlock }) {\n const toBlock = oldBlock\n const fromBlock = incrementHexInt(oldBlock)\n const blocks = await getBlocksForRange({ provider: this.provider, fromBlock, toBlock })\n const blockTxHashes = []\n for (const block of blocks) {\n blockTxHashes.push(...block.transactions)\n }\n // add to results\n this.addResults(blockTxHashes)\n }\n\n}\n\nmodule.exports = TxFilter\n","const cacheUtils = require('./cache-utils.js')\nconst createAsyncMiddleware = require('json-rpc-engine/src/createAsyncMiddleware')\n// `` comes from https://github.com/ethereum/go-ethereum/issues/16925\nconst emptyValues = [undefined, null, '\\u003cnil\\u003e']\n\nmodule.exports = createBlockCacheMiddleware\n\n\nfunction createBlockCacheMiddleware(opts = {}) {\n // validate options\n const { blockTracker } = opts\n if (!blockTracker) throw new Error('createBlockCacheMiddleware - No BlockTracker specified')\n\n // create caching strategies\n const blockCache = new BlockCacheStrategy()\n const strategies = {\n perma: blockCache,\n block: blockCache,\n fork: blockCache,\n }\n\n return createAsyncMiddleware(async (req, res, next) => {\n // allow cach to be skipped if so specified\n if (req.skipCache) {\n return next()\n }\n // check type and matching strategy\n const type = cacheUtils.cacheTypeForPayload(req)\n const strategy = strategies[type]\n // If there's no strategy in place, pass it down the chain.\n if (!strategy) {\n return next()\n }\n // If the strategy can't cache this request, ignore it.\n if (!strategy.canCacheRequest(req)) {\n return next()\n }\n\n // get block reference (number or keyword)\n let blockTag = cacheUtils.blockTagForPayload(req)\n if (!blockTag) blockTag = 'latest'\n\n // get exact block number\n let requestedBlockNumber\n if (blockTag === 'earliest') {\n // this just exists for symmetry with \"latest\"\n requestedBlockNumber = '0x00'\n } else if (blockTag === 'latest') {\n // fetch latest block number\n const latestBlockNumber = await blockTracker.getLatestBlock()\n // clear all cache before latest block\n blockCache.clearBefore(latestBlockNumber)\n requestedBlockNumber = latestBlockNumber\n } else {\n // We have a hex number\n requestedBlockNumber = blockTag\n }\n\n // end on a hit, continue on a miss\n const cacheResult = await strategy.get(req, requestedBlockNumber)\n if (cacheResult === undefined) {\n // cache miss\n // wait for other middleware to handle request\n await next()\n // add result to cache\n await strategy.set(req, requestedBlockNumber, res.result)\n } else {\n // fill in result from cache\n res.result = cacheResult\n }\n })\n}\n\n\n//\n// Cache Strategies\n//\n\nclass BlockCacheStrategy {\n \n constructor () {\n this.cache = {}\n }\n\n getBlockCacheForPayload (payload, blockNumberHex) {\n const blockNumber = Number.parseInt(blockNumberHex, 16)\n let blockCache = this.cache[blockNumber]\n // create new cache if necesary\n if (!blockCache) {\n const newCache = {}\n this.cache[blockNumber] = newCache\n blockCache = newCache\n }\n return blockCache\n }\n\n async get (payload, requestedBlockNumber) {\n // lookup block cache\n const blockCache = this.getBlockCacheForPayload(payload, requestedBlockNumber)\n if (!blockCache) return\n // lookup payload in block cache\n const identifier = cacheUtils.cacheIdentifierForPayload(payload, true)\n const cached = blockCache[identifier]\n // may be undefined\n return cached\n }\n\n async set (payload, requestedBlockNumber, result) {\n // check if we can cached this result\n const canCache = this.canCacheResult(payload, result)\n if (!canCache) return\n // set the value in the cache\n const blockCache = this.getBlockCacheForPayload(payload, requestedBlockNumber)\n const identifier = cacheUtils.cacheIdentifierForPayload(payload, true)\n blockCache[identifier] = result\n }\n\n canCacheRequest (payload) {\n // check request method\n if (!cacheUtils.canCache(payload)) {\n return false\n }\n // check blockTag\n const blockTag = cacheUtils.blockTagForPayload(payload)\n if (blockTag === 'pending') {\n return false\n }\n // can be cached\n return true\n }\n\n canCacheResult (payload, result) {\n // never cache empty values (e.g. undefined)\n if (emptyValues.includes(result)) return\n // check if transactions have block reference before caching\n if (['eth_getTransactionByHash', 'eth_getTransactionReceipt'].includes(payload.method)) {\n if (!result || !result.blockHash || result.blockHash === '0x0000000000000000000000000000000000000000000000000000000000000000') {\n return false\n }\n }\n // otherwise true\n return true\n }\n\n // removes all block caches with block number lower than `oldBlockHex`\n clearBefore (oldBlockHex){\n const self = this\n const oldBlockNumber = Number.parseInt(oldBlockHex, 16)\n // clear old caches\n Object.keys(self.cache)\n .map(Number)\n .filter(num => num < oldBlockNumber)\n .forEach(num => delete self.cache[num])\n }\n\n}\n","const stringify = require('json-stable-stringify')\n\nmodule.exports = {\n cacheIdentifierForPayload: cacheIdentifierForPayload,\n canCache: canCache,\n blockTagForPayload: blockTagForPayload,\n paramsWithoutBlockTag: paramsWithoutBlockTag,\n blockTagParamIndex: blockTagParamIndex,\n cacheTypeForPayload: cacheTypeForPayload\n}\n\nfunction cacheIdentifierForPayload (payload, skipBlockRef) {\n const simpleParams = skipBlockRef ? paramsWithoutBlockTag(payload) : payload.params\n if (canCache(payload)) {\n return payload.method + ':' + stringify(simpleParams)\n } else {\n return null\n }\n}\n\nfunction canCache (payload) {\n return cacheTypeForPayload(payload) !== 'never'\n}\n\nfunction blockTagForPayload (payload) {\n let index = blockTagParamIndex(payload)\n\n // Block tag param not passed.\n if (index >= payload.params.length) {\n return null\n }\n\n return payload.params[index]\n}\n\nfunction paramsWithoutBlockTag (payload) {\n const index = blockTagParamIndex(payload)\n\n // Block tag param not passed.\n if (index >= payload.params.length) {\n return payload.params\n }\n\n // eth_getBlockByNumber has the block tag first, then the optional includeTx? param\n if (payload.method === 'eth_getBlockByNumber') {\n return payload.params.slice(1)\n }\n\n return payload.params.slice(0, index)\n}\n\nfunction blockTagParamIndex (payload) {\n switch (payload.method) {\n // blockTag is at index 2\n case 'eth_getStorageAt':\n return 2\n // blockTag is at index 1\n case 'eth_getBalance':\n case 'eth_getCode':\n case 'eth_getTransactionCount':\n case 'eth_call':\n return 1\n // blockTag is at index 0\n case 'eth_getBlockByNumber':\n return 0\n // there is no blockTag\n default:\n return undefined\n }\n}\n\nfunction cacheTypeForPayload (payload) {\n switch (payload.method) {\n // cache permanently\n case 'web3_clientVersion':\n case 'web3_sha3':\n case 'eth_protocolVersion':\n case 'eth_getBlockTransactionCountByHash':\n case 'eth_getUncleCountByBlockHash':\n case 'eth_getCode':\n case 'eth_getBlockByHash':\n case 'eth_getTransactionByHash':\n case 'eth_getTransactionByBlockHashAndIndex':\n case 'eth_getTransactionReceipt':\n case 'eth_getUncleByBlockHashAndIndex':\n case 'eth_getCompilers':\n case 'eth_compileLLL':\n case 'eth_compileSolidity':\n case 'eth_compileSerpent':\n case 'shh_version':\n case 'test_permaCache':\n return 'perma'\n\n // cache until fork\n case 'eth_getBlockByNumber':\n case 'eth_getBlockTransactionCountByNumber':\n case 'eth_getUncleCountByBlockNumber':\n case 'eth_getTransactionByBlockNumberAndIndex':\n case 'eth_getUncleByBlockNumberAndIndex':\n case 'test_forkCache':\n return 'fork'\n\n // cache for block\n case 'eth_gasPrice':\n case 'eth_blockNumber':\n case 'eth_getBalance':\n case 'eth_getStorageAt':\n case 'eth_getTransactionCount':\n case 'eth_call':\n case 'eth_estimateGas':\n case 'eth_getFilterLogs':\n case 'eth_getLogs':\n case 'test_blockCache':\n return 'block'\n\n // never cache\n case 'net_version':\n case 'net_peerCount':\n case 'net_listening':\n case 'eth_syncing':\n case 'eth_sign':\n case 'eth_coinbase':\n case 'eth_mining':\n case 'eth_hashrate':\n case 'eth_accounts':\n case 'eth_sendTransaction':\n case 'eth_sendRawTransaction':\n case 'eth_newFilter':\n case 'eth_newBlockFilter':\n case 'eth_newPendingTransactionFilter':\n case 'eth_uninstallFilter':\n case 'eth_getFilterChanges':\n case 'eth_getWork':\n case 'eth_submitWork':\n case 'eth_submitHashrate':\n case 'db_putString':\n case 'db_getString':\n case 'db_putHex':\n case 'db_getHex':\n case 'shh_post':\n case 'shh_newIdentity':\n case 'shh_hasIdentity':\n case 'shh_newGroup':\n case 'shh_addToGroup':\n case 'shh_newFilter':\n case 'shh_uninstallFilter':\n case 'shh_getFilterChanges':\n case 'shh_getMessages':\n case 'test_neverCache':\n return 'never'\n }\n}\n","/**\n * JsonRpcEngine only accepts callback-based middleware directly.\n * createAsyncMiddleware exists to enable consumers to pass in async middleware\n * functions.\n *\n * Async middleware have no \"end\" function. Instead, they \"end\" if they return\n * without calling \"next\". Rather than passing in explicit return handlers,\n * async middleware can simply await \"next\", and perform operations on the\n * response object when execution resumes.\n *\n * To accomplish this, createAsyncMiddleware passes the async middleware a\n * wrapped \"next\" function. That function calls the internal JsonRpcEngine\n * \"next\" function with a return handler that resolves a promise when called.\n *\n * The return handler will always be called. Its resolution of the promise\n * enables the control flow described above.\n */\n\nmodule.exports = function createAsyncMiddleware (asyncMiddleware) {\n return (req, res, next, end) => {\n\n // nextPromise is the key to the implementation\n // it is resolved by the return handler passed to the\n // \"next\" function\n let resolveNextPromise\n const nextPromise = new Promise((resolve) => {\n resolveNextPromise = resolve\n })\n\n let returnHandlerCallback, nextWasCalled\n\n const asyncNext = async () => {\n\n nextWasCalled = true\n\n next((callback) => { // eslint-disable-line callback-return\n returnHandlerCallback = callback\n resolveNextPromise()\n })\n await nextPromise\n }\n\n asyncMiddleware(req, res, asyncNext)\n .then(async () => {\n if (nextWasCalled) {\n await nextPromise // we must wait until the return handler is called\n returnHandlerCallback(null)\n } else {\n end(null)\n }\n })\n .catch((error) => {\n if (returnHandlerCallback) {\n returnHandlerCallback(error)\n } else {\n end(error)\n }\n })\n }\n}\n","module.exports = function createScaffoldMiddleware (handlers) {\n return (req, res, next, end) => {\n const handler = handlers[req.method]\n // if no handler, return\n if (handler === undefined) {\n return next()\n }\n // if handler is fn, call as middleware\n if (typeof handler === 'function') {\n return handler(req, res, next, end)\n }\n // if handler is some other value, use as result\n res.result = handler\n return end()\n }\n}\n","// for backwards compat\nmodule.exports = require('json-rpc-engine/src/createScaffoldMiddleware')\n","var generate = function generate(num, fn) {\n var a = [];\n for (var i = 0; i < num; ++i) {\n a.push(fn(i));\n }return a;\n};\n\nvar replicate = function replicate(num, val) {\n return generate(num, function () {\n return val;\n });\n};\n\nvar concat = function concat(a, b) {\n return a.concat(b);\n};\n\nvar flatten = function flatten(a) {\n var r = [];\n for (var j = 0, J = a.length; j < J; ++j) {\n for (var i = 0, I = a[j].length; i < I; ++i) {\n r.push(a[j][i]);\n }\n }return r;\n};\n\nvar chunksOf = function chunksOf(n, a) {\n var b = [];\n for (var i = 0, l = a.length; i < l; i += n) {\n b.push(a.slice(i, i + n));\n }return b;\n};\n\nmodule.exports = {\n generate: generate,\n replicate: replicate,\n concat: concat,\n flatten: flatten,\n chunksOf: chunksOf\n};","var A = require(\"./array.js\");\n\nvar at = function at(bytes, index) {\n return parseInt(bytes.slice(index * 2 + 2, index * 2 + 4), 16);\n};\n\nvar random = function random(bytes) {\n var rnd = void 0;\n if (typeof window !== \"undefined\" && window.crypto && window.crypto.getRandomValues) rnd = window.crypto.getRandomValues(new Uint8Array(bytes));else if (typeof require !== \"undefined\") rnd = require(\"c\" + \"rypto\").randomBytes(bytes);else throw \"Safe random numbers not available.\";\n var hex = \"0x\";\n for (var i = 0; i < bytes; ++i) {\n hex += (\"00\" + rnd[i].toString(16)).slice(-2);\n }return hex;\n};\n\nvar length = function length(a) {\n return (a.length - 2) / 2;\n};\n\nvar flatten = function flatten(a) {\n return \"0x\" + a.reduce(function (r, s) {\n return r + s.slice(2);\n }, \"\");\n};\n\nvar slice = function slice(i, j, bs) {\n return \"0x\" + bs.slice(i * 2 + 2, j * 2 + 2);\n};\n\nvar reverse = function reverse(hex) {\n var rev = \"0x\";\n for (var i = 0, l = length(hex); i < l; ++i) {\n rev += hex.slice((l - i) * 2, (l - i + 1) * 2);\n }\n return rev;\n};\n\nvar pad = function pad(l, hex) {\n return hex.length === l * 2 + 2 ? hex : pad(l, \"0x\" + \"0\" + hex.slice(2));\n};\n\nvar padRight = function padRight(l, hex) {\n return hex.length === l * 2 + 2 ? hex : padRight(l, hex + \"0\");\n};\n\nvar toArray = function toArray(hex) {\n var arr = [];\n for (var i = 2, l = hex.length; i < l; i += 2) {\n arr.push(parseInt(hex.slice(i, i + 2), 16));\n }return arr;\n};\n\nvar fromArray = function fromArray(arr) {\n var hex = \"0x\";\n for (var i = 0, l = arr.length; i < l; ++i) {\n var b = arr[i];\n hex += (b < 16 ? \"0\" : \"\") + b.toString(16);\n }\n return hex;\n};\n\nvar toUint8Array = function toUint8Array(hex) {\n return new Uint8Array(toArray(hex));\n};\n\nvar fromUint8Array = function fromUint8Array(arr) {\n return fromArray([].slice.call(arr, 0));\n};\n\nvar fromNumber = function fromNumber(num) {\n var hex = num.toString(16);\n return hex.length % 2 === 0 ? \"0x\" + hex : \"0x0\" + hex;\n};\n\nvar toNumber = function toNumber(hex) {\n return parseInt(hex.slice(2), 16);\n};\n\nvar concat = function concat(a, b) {\n return a.concat(b.slice(2));\n};\n\nvar fromNat = function fromNat(bn) {\n return bn === \"0x0\" ? \"0x\" : bn.length % 2 === 0 ? bn : \"0x0\" + bn.slice(2);\n};\n\nvar toNat = function toNat(bn) {\n return bn[2] === \"0\" ? \"0x\" + bn.slice(3) : bn;\n};\n\nvar fromAscii = function fromAscii(ascii) {\n var hex = \"0x\";\n for (var i = 0; i < ascii.length; ++i) {\n hex += (\"00\" + ascii.charCodeAt(i).toString(16)).slice(-2);\n }return hex;\n};\n\nvar toAscii = function toAscii(hex) {\n var ascii = \"\";\n for (var i = 2; i < hex.length; i += 2) {\n ascii += String.fromCharCode(parseInt(hex.slice(i, i + 2), 16));\n }return ascii;\n};\n\n// From https://gist.github.com/pascaldekloe/62546103a1576803dade9269ccf76330\nvar fromString = function fromString(s) {\n var makeByte = function makeByte(uint8) {\n var b = uint8.toString(16);\n return b.length < 2 ? \"0\" + b : b;\n };\n var bytes = \"0x\";\n for (var ci = 0; ci != s.length; ci++) {\n var c = s.charCodeAt(ci);\n if (c < 128) {\n bytes += makeByte(c);\n continue;\n }\n if (c < 2048) {\n bytes += makeByte(c >> 6 | 192);\n } else {\n if (c > 0xd7ff && c < 0xdc00) {\n if (++ci == s.length) return null;\n var c2 = s.charCodeAt(ci);\n if (c2 < 0xdc00 || c2 > 0xdfff) return null;\n c = 0x10000 + ((c & 0x03ff) << 10) + (c2 & 0x03ff);\n bytes += makeByte(c >> 18 | 240);\n bytes += makeByte(c >> 12 & 63 | 128);\n } else {\n // c <= 0xffff\n bytes += makeByte(c >> 12 | 224);\n }\n bytes += makeByte(c >> 6 & 63 | 128);\n }\n bytes += makeByte(c & 63 | 128);\n }\n return bytes;\n};\n\nvar toString = function toString(bytes) {\n var s = '';\n var i = 0;\n var l = length(bytes);\n while (i < l) {\n var c = at(bytes, i++);\n if (c > 127) {\n if (c > 191 && c < 224) {\n if (i >= l) return null;\n c = (c & 31) << 6 | at(bytes, i) & 63;\n } else if (c > 223 && c < 240) {\n if (i + 1 >= l) return null;\n c = (c & 15) << 12 | (at(bytes, i) & 63) << 6 | at(bytes, ++i) & 63;\n } else if (c > 239 && c < 248) {\n if (i + 2 >= l) return null;\n c = (c & 7) << 18 | (at(bytes, i) & 63) << 12 | (at(bytes, ++i) & 63) << 6 | at(bytes, ++i) & 63;\n } else return null;\n ++i;\n }\n if (c <= 0xffff) s += String.fromCharCode(c);else if (c <= 0x10ffff) {\n c -= 0x10000;\n s += String.fromCharCode(c >> 10 | 0xd800);\n s += String.fromCharCode(c & 0x3FF | 0xdc00);\n } else return null;\n }\n return s;\n};\n\nmodule.exports = {\n random: random,\n length: length,\n concat: concat,\n flatten: flatten,\n slice: slice,\n reverse: reverse,\n pad: pad,\n padRight: padRight,\n fromAscii: fromAscii,\n toAscii: toAscii,\n fromString: fromString,\n toString: toString,\n fromNumber: fromNumber,\n toNumber: toNumber,\n fromNat: fromNat,\n toNat: toNat,\n fromArray: fromArray,\n toArray: toArray,\n fromUint8Array: fromUint8Array,\n toUint8Array: toUint8Array\n};","// This was ported from https://github.com/emn178/js-sha3, with some minor\n// modifications and pruning. It is licensed under MIT:\n//\n// Copyright 2015-2016 Chen, Yi-Cyuan\n// \n// Permission is hereby granted, free of charge, to any person obtaining\n// a copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to\n// permit persons to whom the Software is furnished to do so, subject to\n// the following conditions:\n// \n// The above copyright notice and this permission notice shall be\n// included in all copies or substantial portions of the Software.\n// \n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND,\n// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND\n// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE\n// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION\n// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION\n// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.\n\nvar HEX_CHARS = '0123456789abcdef'.split('');\nvar KECCAK_PADDING = [1, 256, 65536, 16777216];\nvar SHIFT = [0, 8, 16, 24];\nvar RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n\nvar Keccak = function Keccak(bits) {\n return {\n blocks: [],\n reset: true,\n block: 0,\n start: 0,\n blockCount: 1600 - (bits << 1) >> 5,\n outputBlocks: bits >> 5,\n s: function (s) {\n return [].concat(s, s, s, s, s);\n }([0, 0, 0, 0, 0, 0, 0, 0, 0, 0])\n };\n};\n\nvar update = function update(state, message) {\n var length = message.length,\n blocks = state.blocks,\n byteCount = state.blockCount << 2,\n blockCount = state.blockCount,\n outputBlocks = state.outputBlocks,\n s = state.s,\n index = 0,\n i,\n code;\n\n // update\n while (index < length) {\n if (state.reset) {\n state.reset = false;\n blocks[0] = state.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (typeof message !== \"string\") {\n for (i = state.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = state.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | code >> 6) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | code >> 12) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + ((code & 0x3ff) << 10 | message.charCodeAt(++index) & 0x3ff);\n blocks[i >> 2] |= (0xf0 | code >> 18) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 12 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code >> 6 & 0x3f) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | code & 0x3f) << SHIFT[i++ & 3];\n }\n }\n }\n state.lastByteIndex = i;\n if (i >= byteCount) {\n state.start = i - byteCount;\n state.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n state.reset = true;\n } else {\n state.start = i;\n }\n }\n\n // finalize\n i = state.lastByteIndex;\n blocks[i >> 2] |= KECCAK_PADDING[i & 3];\n if (state.lastByteIndex === byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n\n // toString\n var hex = '',\n i = 0,\n j = 0,\n block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[block >> 4 & 0x0F] + HEX_CHARS[block & 0x0F] + HEX_CHARS[block >> 12 & 0x0F] + HEX_CHARS[block >> 8 & 0x0F] + HEX_CHARS[block >> 20 & 0x0F] + HEX_CHARS[block >> 16 & 0x0F] + HEX_CHARS[block >> 28 & 0x0F] + HEX_CHARS[block >> 24 & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n return \"0x\" + hex;\n};\n\nvar f = function f(s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9, b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17, b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33, b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ (c2 << 1 | c3 >>> 31);\n l = c9 ^ (c3 << 1 | c2 >>> 31);\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ (c4 << 1 | c5 >>> 31);\n l = c1 ^ (c5 << 1 | c4 >>> 31);\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ (c6 << 1 | c7 >>> 31);\n l = c3 ^ (c7 << 1 | c6 >>> 31);\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ (c8 << 1 | c9 >>> 31);\n l = c5 ^ (c9 << 1 | c8 >>> 31);\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ (c0 << 1 | c1 >>> 31);\n l = c7 ^ (c1 << 1 | c0 >>> 31);\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = s[11] << 4 | s[10] >>> 28;\n b33 = s[10] << 4 | s[11] >>> 28;\n b14 = s[20] << 3 | s[21] >>> 29;\n b15 = s[21] << 3 | s[20] >>> 29;\n b46 = s[31] << 9 | s[30] >>> 23;\n b47 = s[30] << 9 | s[31] >>> 23;\n b28 = s[40] << 18 | s[41] >>> 14;\n b29 = s[41] << 18 | s[40] >>> 14;\n b20 = s[2] << 1 | s[3] >>> 31;\n b21 = s[3] << 1 | s[2] >>> 31;\n b2 = s[13] << 12 | s[12] >>> 20;\n b3 = s[12] << 12 | s[13] >>> 20;\n b34 = s[22] << 10 | s[23] >>> 22;\n b35 = s[23] << 10 | s[22] >>> 22;\n b16 = s[33] << 13 | s[32] >>> 19;\n b17 = s[32] << 13 | s[33] >>> 19;\n b48 = s[42] << 2 | s[43] >>> 30;\n b49 = s[43] << 2 | s[42] >>> 30;\n b40 = s[5] << 30 | s[4] >>> 2;\n b41 = s[4] << 30 | s[5] >>> 2;\n b22 = s[14] << 6 | s[15] >>> 26;\n b23 = s[15] << 6 | s[14] >>> 26;\n b4 = s[25] << 11 | s[24] >>> 21;\n b5 = s[24] << 11 | s[25] >>> 21;\n b36 = s[34] << 15 | s[35] >>> 17;\n b37 = s[35] << 15 | s[34] >>> 17;\n b18 = s[45] << 29 | s[44] >>> 3;\n b19 = s[44] << 29 | s[45] >>> 3;\n b10 = s[6] << 28 | s[7] >>> 4;\n b11 = s[7] << 28 | s[6] >>> 4;\n b42 = s[17] << 23 | s[16] >>> 9;\n b43 = s[16] << 23 | s[17] >>> 9;\n b24 = s[26] << 25 | s[27] >>> 7;\n b25 = s[27] << 25 | s[26] >>> 7;\n b6 = s[36] << 21 | s[37] >>> 11;\n b7 = s[37] << 21 | s[36] >>> 11;\n b38 = s[47] << 24 | s[46] >>> 8;\n b39 = s[46] << 24 | s[47] >>> 8;\n b30 = s[8] << 27 | s[9] >>> 5;\n b31 = s[9] << 27 | s[8] >>> 5;\n b12 = s[18] << 20 | s[19] >>> 12;\n b13 = s[19] << 20 | s[18] >>> 12;\n b44 = s[29] << 7 | s[28] >>> 25;\n b45 = s[28] << 7 | s[29] >>> 25;\n b26 = s[38] << 8 | s[39] >>> 24;\n b27 = s[39] << 8 | s[38] >>> 24;\n b8 = s[48] << 14 | s[49] >>> 18;\n b9 = s[49] << 14 | s[48] >>> 18;\n\n s[0] = b0 ^ ~b2 & b4;\n s[1] = b1 ^ ~b3 & b5;\n s[10] = b10 ^ ~b12 & b14;\n s[11] = b11 ^ ~b13 & b15;\n s[20] = b20 ^ ~b22 & b24;\n s[21] = b21 ^ ~b23 & b25;\n s[30] = b30 ^ ~b32 & b34;\n s[31] = b31 ^ ~b33 & b35;\n s[40] = b40 ^ ~b42 & b44;\n s[41] = b41 ^ ~b43 & b45;\n s[2] = b2 ^ ~b4 & b6;\n s[3] = b3 ^ ~b5 & b7;\n s[12] = b12 ^ ~b14 & b16;\n s[13] = b13 ^ ~b15 & b17;\n s[22] = b22 ^ ~b24 & b26;\n s[23] = b23 ^ ~b25 & b27;\n s[32] = b32 ^ ~b34 & b36;\n s[33] = b33 ^ ~b35 & b37;\n s[42] = b42 ^ ~b44 & b46;\n s[43] = b43 ^ ~b45 & b47;\n s[4] = b4 ^ ~b6 & b8;\n s[5] = b5 ^ ~b7 & b9;\n s[14] = b14 ^ ~b16 & b18;\n s[15] = b15 ^ ~b17 & b19;\n s[24] = b24 ^ ~b26 & b28;\n s[25] = b25 ^ ~b27 & b29;\n s[34] = b34 ^ ~b36 & b38;\n s[35] = b35 ^ ~b37 & b39;\n s[44] = b44 ^ ~b46 & b48;\n s[45] = b45 ^ ~b47 & b49;\n s[6] = b6 ^ ~b8 & b0;\n s[7] = b7 ^ ~b9 & b1;\n s[16] = b16 ^ ~b18 & b10;\n s[17] = b17 ^ ~b19 & b11;\n s[26] = b26 ^ ~b28 & b20;\n s[27] = b27 ^ ~b29 & b21;\n s[36] = b36 ^ ~b38 & b30;\n s[37] = b37 ^ ~b39 & b31;\n s[46] = b46 ^ ~b48 & b40;\n s[47] = b47 ^ ~b49 & b41;\n s[8] = b8 ^ ~b0 & b2;\n s[9] = b9 ^ ~b1 & b3;\n s[18] = b18 ^ ~b10 & b12;\n s[19] = b19 ^ ~b11 & b13;\n s[28] = b28 ^ ~b20 & b22;\n s[29] = b29 ^ ~b21 & b23;\n s[38] = b38 ^ ~b30 & b32;\n s[39] = b39 ^ ~b31 & b33;\n s[48] = b48 ^ ~b40 & b42;\n s[49] = b49 ^ ~b41 & b43;\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n};\n\nvar keccak = function keccak(bits) {\n return function (str) {\n var msg;\n if (str.slice(0, 2) === \"0x\") {\n msg = [];\n for (var i = 2, l = str.length; i < l; i += 2) {\n msg.push(parseInt(str.slice(i, i + 2), 16));\n }\n } else {\n msg = str;\n }\n return update(Keccak(bits, bits), msg);\n };\n};\n\nmodule.exports = {\n keccak256: keccak(256),\n keccak512: keccak(512),\n keccak256s: keccak(256),\n keccak512s: keccak(512)\n};","const extend = require('xtend')\nconst createRandomId = require('json-rpc-random-id')()\n\nmodule.exports = EthQuery\n\n\nfunction EthQuery(provider){\n const self = this\n self.currentProvider = provider\n}\n\n//\n// base queries\n//\n\n// default block\nEthQuery.prototype.getBalance = generateFnWithDefaultBlockFor(2, 'eth_getBalance')\nEthQuery.prototype.getCode = generateFnWithDefaultBlockFor(2, 'eth_getCode')\nEthQuery.prototype.getTransactionCount = generateFnWithDefaultBlockFor(2, 'eth_getTransactionCount')\nEthQuery.prototype.getStorageAt = generateFnWithDefaultBlockFor(3, 'eth_getStorageAt')\nEthQuery.prototype.call = generateFnWithDefaultBlockFor(2, 'eth_call')\n// standard\nEthQuery.prototype.protocolVersion = generateFnFor('eth_protocolVersion')\nEthQuery.prototype.syncing = generateFnFor('eth_syncing')\nEthQuery.prototype.coinbase = generateFnFor('eth_coinbase')\nEthQuery.prototype.mining = generateFnFor('eth_mining')\nEthQuery.prototype.hashrate = generateFnFor('eth_hashrate')\nEthQuery.prototype.gasPrice = generateFnFor('eth_gasPrice')\nEthQuery.prototype.accounts = generateFnFor('eth_accounts')\nEthQuery.prototype.blockNumber = generateFnFor('eth_blockNumber')\nEthQuery.prototype.getBlockTransactionCountByHash = generateFnFor('eth_getBlockTransactionCountByHash')\nEthQuery.prototype.getBlockTransactionCountByNumber = generateFnFor('eth_getBlockTransactionCountByNumber')\nEthQuery.prototype.getUncleCountByBlockHash = generateFnFor('eth_getUncleCountByBlockHash')\nEthQuery.prototype.getUncleCountByBlockNumber = generateFnFor('eth_getUncleCountByBlockNumber')\nEthQuery.prototype.sign = generateFnFor('eth_sign')\nEthQuery.prototype.sendTransaction = generateFnFor('eth_sendTransaction')\nEthQuery.prototype.sendRawTransaction = generateFnFor('eth_sendRawTransaction')\nEthQuery.prototype.estimateGas = generateFnFor('eth_estimateGas')\nEthQuery.prototype.getBlockByHash = generateFnFor('eth_getBlockByHash')\nEthQuery.prototype.getBlockByNumber = generateFnFor('eth_getBlockByNumber')\nEthQuery.prototype.getTransactionByHash = generateFnFor('eth_getTransactionByHash')\nEthQuery.prototype.getTransactionByBlockHashAndIndex = generateFnFor('eth_getTransactionByBlockHashAndIndex')\nEthQuery.prototype.getTransactionByBlockNumberAndIndex = generateFnFor('eth_getTransactionByBlockNumberAndIndex')\nEthQuery.prototype.getTransactionReceipt = generateFnFor('eth_getTransactionReceipt')\nEthQuery.prototype.getUncleByBlockHashAndIndex = generateFnFor('eth_getUncleByBlockHashAndIndex')\nEthQuery.prototype.getUncleByBlockNumberAndIndex = generateFnFor('eth_getUncleByBlockNumberAndIndex')\nEthQuery.prototype.getCompilers = generateFnFor('eth_getCompilers')\nEthQuery.prototype.compileLLL = generateFnFor('eth_compileLLL')\nEthQuery.prototype.compileSolidity = generateFnFor('eth_compileSolidity')\nEthQuery.prototype.compileSerpent = generateFnFor('eth_compileSerpent')\nEthQuery.prototype.newFilter = generateFnFor('eth_newFilter')\nEthQuery.prototype.newBlockFilter = generateFnFor('eth_newBlockFilter')\nEthQuery.prototype.newPendingTransactionFilter = generateFnFor('eth_newPendingTransactionFilter')\nEthQuery.prototype.uninstallFilter = generateFnFor('eth_uninstallFilter')\nEthQuery.prototype.getFilterChanges = generateFnFor('eth_getFilterChanges')\nEthQuery.prototype.getFilterLogs = generateFnFor('eth_getFilterLogs')\nEthQuery.prototype.getLogs = generateFnFor('eth_getLogs')\nEthQuery.prototype.getWork = generateFnFor('eth_getWork')\nEthQuery.prototype.submitWork = generateFnFor('eth_submitWork')\nEthQuery.prototype.submitHashrate = generateFnFor('eth_submitHashrate')\n\n// network level\n\nEthQuery.prototype.sendAsync = function(opts, cb){\n const self = this\n self.currentProvider.sendAsync(createPayload(opts), function(err, response){\n if (!err && response.error) err = new Error('EthQuery - RPC Error - '+response.error.message)\n if (err) return cb(err)\n cb(null, response.result)\n })\n}\n\n// util\n\nfunction generateFnFor(methodName){\n return function(){\n const self = this\n var args = [].slice.call(arguments)\n var cb = args.pop()\n self.sendAsync({\n method: methodName,\n params: args,\n }, cb)\n }\n}\n\nfunction generateFnWithDefaultBlockFor(argCount, methodName){\n return function(){\n const self = this\n var args = [].slice.call(arguments)\n var cb = args.pop()\n // set optional default block param\n if (args.length < argCount) args.push('latest')\n self.sendAsync({\n method: methodName,\n params: args,\n }, cb)\n }\n}\n\nfunction createPayload(data){\n return extend({\n // defaults\n id: createRandomId(),\n jsonrpc: '2.0',\n params: [],\n // user-specified\n }, data)\n}\n","const ethUtil = require('ethereumjs-util')\nconst ethAbi = require('ethereumjs-abi')\n\nmodule.exports = {\n\n concatSig: function (v, r, s) {\n const rSig = ethUtil.fromSigned(r)\n const sSig = ethUtil.fromSigned(s)\n const vSig = ethUtil.bufferToInt(v)\n const rStr = padWithZeroes(ethUtil.toUnsigned(rSig).toString('hex'), 64)\n const sStr = padWithZeroes(ethUtil.toUnsigned(sSig).toString('hex'), 64)\n const vStr = ethUtil.stripHexPrefix(ethUtil.intToHex(vSig))\n return ethUtil.addHexPrefix(rStr.concat(sStr, vStr)).toString('hex')\n },\n\n normalize: function (input) {\n if (!input) return\n\n if (typeof input === 'number') {\n const buffer = ethUtil.toBuffer(input)\n input = ethUtil.bufferToHex(buffer)\n }\n\n if (typeof input !== 'string') {\n var msg = 'eth-sig-util.normalize() requires hex string or integer input.'\n msg += ' received ' + (typeof input) + ': ' + input\n throw new Error(msg)\n }\n\n return ethUtil.addHexPrefix(input.toLowerCase())\n },\n\n personalSign: function (privateKey, msgParams) {\n var message = ethUtil.toBuffer(msgParams.data)\n var msgHash = ethUtil.hashPersonalMessage(message)\n var sig = ethUtil.ecsign(msgHash, privateKey)\n var serialized = ethUtil.bufferToHex(this.concatSig(sig.v, sig.r, sig.s))\n return serialized\n },\n\n recoverPersonalSignature: function (msgParams) {\n const publicKey = getPublicKeyFor(msgParams)\n const sender = ethUtil.publicToAddress(publicKey)\n const senderHex = ethUtil.bufferToHex(sender)\n return senderHex\n },\n\n extractPublicKey: function (msgParams) {\n const publicKey = getPublicKeyFor(msgParams)\n return '0x' + publicKey.toString('hex')\n },\n\n typedSignatureHash: function (typedData) {\n const hashBuffer = typedSignatureHash(typedData)\n return ethUtil.bufferToHex(hashBuffer)\n },\n\n signTypedData: function (privateKey, msgParams) {\n const msgHash = typedSignatureHash(msgParams.data)\n const sig = ethUtil.ecsign(msgHash, privateKey)\n return ethUtil.bufferToHex(this.concatSig(sig.v, sig.r, sig.s))\n },\n\n recoverTypedSignature: function (msgParams) {\n const msgHash = typedSignatureHash(msgParams.data)\n const publicKey = recoverPublicKey(msgHash, msgParams.sig)\n const sender = ethUtil.publicToAddress(publicKey)\n return ethUtil.bufferToHex(sender)\n }\n\n}\n\n/**\n * @param typedData - Array of data along with types, as per EIP712.\n * @returns Buffer\n */\nfunction typedSignatureHash(typedData) {\n const error = new Error('Expect argument to be non-empty array')\n if (typeof typedData !== 'object' || !typedData.length) throw error\n\n const data = typedData.map(function (e) {\n return e.type === 'bytes' ? ethUtil.toBuffer(e.value) : e.value\n })\n const types = typedData.map(function (e) { return e.type })\n const schema = typedData.map(function (e) {\n if (!e.name) throw error\n return e.type + ' ' + e.name\n })\n\n return ethAbi.soliditySHA3(\n ['bytes32', 'bytes32'],\n [\n ethAbi.soliditySHA3(new Array(typedData.length).fill('string'), schema),\n ethAbi.soliditySHA3(types, data)\n ]\n )\n}\n\nfunction recoverPublicKey(hash, sig) {\n const signature = ethUtil.toBuffer(sig)\n const sigParams = ethUtil.fromRpcSig(signature)\n return ethUtil.ecrecover(hash, sigParams.v, sigParams.r, sigParams.s)\n}\n\nfunction getPublicKeyFor (msgParams) {\n const message = ethUtil.toBuffer(msgParams.data)\n const msgHash = ethUtil.hashPersonalMessage(message)\n return recoverPublicKey(msgHash, msgParams.sig)\n}\n\n\nfunction padWithZeroes (number, length) {\n var myString = '' + number\n while (myString.length < length) {\n myString = '0' + myString\n }\n return myString\n}\n","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = require('ethereum-cryptography/keccak'),\n keccak224 = _require.keccak224,\n keccak384 = _require.keccak384,\n k256 = _require.keccak256,\n keccak512 = _require.keccak512;\n\nvar secp256k1 = require('./secp256k1-adapter');\nvar assert = require('assert');\nvar rlp = require('rlp');\nvar BN = require('bn.js');\nvar createHash = require('create-hash');\nvar Buffer = require('safe-buffer').Buffer;\nObject.assign(exports, require('ethjs-util'));\n\n/**\n * the max integer that this VM can handle (a ```BN```)\n * @var {BN} MAX_INTEGER\n */\nexports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n\n/**\n * 2^256 (a ```BN```)\n * @var {BN} TWO_POW256\n */\nexports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16);\n\n/**\n * Keccak-256 hash of null (a ```String```)\n * @var {String} KECCAK256_NULL_S\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\nexports.SHA3_NULL_S = exports.KECCAK256_NULL_S;\n\n/**\n * Keccak-256 hash of null (a ```Buffer```)\n * @var {Buffer} KECCAK256_NULL\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\nexports.SHA3_NULL = exports.KECCAK256_NULL;\n\n/**\n * Keccak-256 of an RLP of an empty array (a ```String```)\n * @var {String} KECCAK256_RLP_ARRAY_S\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\nexports.SHA3_RLP_ARRAY_S = exports.KECCAK256_RLP_ARRAY_S;\n\n/**\n * Keccak-256 of an RLP of an empty array (a ```Buffer```)\n * @var {Buffer} KECCAK256_RLP_ARRAY\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\nexports.SHA3_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY;\n\n/**\n * Keccak-256 hash of the RLP of null (a ```String```)\n * @var {String} KECCAK256_RLP_S\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\nexports.SHA3_RLP_S = exports.KECCAK256_RLP_S;\n\n/**\n * Keccak-256 hash of the RLP of null (a ```Buffer```)\n * @var {Buffer} KECCAK256_RLP\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\nexports.SHA3_RLP = exports.KECCAK256_RLP;\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n * @var {Function}\n */\nexports.BN = BN;\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n * @var {Function}\n */\nexports.rlp = rlp;\n\n/**\n * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)\n * @var {Object}\n */\nexports.secp256k1 = secp256k1;\n\n/**\n * Returns a buffer filled with 0s\n * @method zeros\n * @param {Number} bytes the number of bytes the buffer should be\n * @return {Buffer}\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n\n/**\n * Returns a zero address\n * @method zeroAddress\n * @return {String}\n */\nexports.zeroAddress = function () {\n var addressLength = 20;\n var zeroAddress = exports.zeros(addressLength);\n return exports.bufferToHex(zeroAddress);\n};\n\n/**\n * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @method lsetLength\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @param {Boolean} [right=false] whether to start padding form the left or right\n * @return {Buffer|Array}\n */\nexports.setLengthLeft = exports.setLength = function (msg, length, right) {\n var buf = exports.zeros(length);\n msg = exports.toBuffer(msg);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n\n/**\n * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @return {Buffer|Array}\n */\nexports.setLengthRight = function (msg, length) {\n return exports.setLength(msg, length, true);\n};\n\n/**\n * Trims leading zeros from a `Buffer` or an `Array`\n * @param {Buffer|Array|String} a\n * @return {Buffer|Array|String}\n */\nexports.unpad = exports.stripZeros = function (a) {\n a = exports.stripHexPrefix(a);\n var first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.\n * @param {*} v the value\n */\nexports.toBuffer = function (v) {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = Buffer.from(v);\n } else if (typeof v === 'string') {\n if (exports.isHexString(v)) {\n v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex');\n } else {\n v = Buffer.from(v);\n }\n } else if (typeof v === 'number') {\n v = exports.intToBuffer(v);\n } else if (v === null || v === undefined) {\n v = Buffer.allocUnsafe(0);\n } else if (BN.isBN(v)) {\n v = v.toArrayLike(Buffer);\n } else if (v.toArray) {\n // converts a BN to a Buffer\n v = Buffer.from(v.toArray());\n } else {\n throw new Error('invalid type');\n }\n }\n return v;\n};\n\n/**\n * Converts a `Buffer` to a `Number`\n * @param {Buffer} buf\n * @return {Number}\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new BN(exports.toBuffer(buf)).toNumber();\n};\n\n/**\n * Converts a `Buffer` into a hex `String`\n * @param {Buffer} buf\n * @return {String}\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param {Buffer} num\n * @return {BN}\n */\nexports.fromSigned = function (num) {\n return new BN(num).fromTwos(256);\n};\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param {BN} num\n * @return {Buffer}\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n\n/**\n * Creates Keccak hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the Keccak width\n * @return {Buffer}\n */\nexports.keccak = function (a, bits) {\n a = exports.toBuffer(a);\n if (!bits) bits = 256;\n\n switch (bits) {\n case 224:\n {\n return keccak224(a);\n }\n case 256:\n {\n return k256(a);\n }\n case 384:\n {\n return keccak384(a);\n }\n case 512:\n {\n return keccak512(a);\n }\n default:\n {\n throw new Error('Invald algorithm: keccak' + bits);\n }\n }\n};\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256)\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n\n/**\n * Creates SHA-3 (Keccak) hash of the input [OBSOLETE]\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the SHA-3 width\n * @return {Buffer}\n */\nexports.sha3 = exports.keccak;\n\n/**\n * Creates SHA256 hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.sha256 = function (a) {\n a = exports.toBuffer(a);\n return createHash('sha256').update(a).digest();\n};\n\n/**\n * Creates RIPEMD160 hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Boolean} padded whether it should be padded to 256 bits or not\n * @return {Buffer}\n */\nexports.ripemd160 = function (a, padded) {\n a = exports.toBuffer(a);\n var hash = createHash('rmd160').update(a).digest();\n if (padded === true) {\n return exports.setLength(hash, 32);\n } else {\n return hash;\n }\n};\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n * @param {Buffer} privateKey\n * @return {Boolean}\n */\nexports.isValidPrivate = function (privateKey) {\n return secp256k1.privateKeyVerify(privateKey);\n};\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Boolean}\n */\nexports.isValidPublic = function (publicKey, sanitize) {\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return secp256k1.publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n\n if (!sanitize) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(publicKey);\n};\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Buffer}\n */\nexports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {\n pubKey = exports.toBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1);\n }\n assert(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return exports.keccak(pubKey).slice(-20);\n};\n\n/**\n * Returns the ethereum public key of a given private key\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nvar privateToPublic = exports.privateToPublic = function (privateKey) {\n privateKey = exports.toBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return secp256k1.publicKeyCreate(privateKey, false).slice(1);\n};\n\n/**\n * Converts a public key to the Ethereum format.\n * @param {Buffer} publicKey\n * @return {Buffer}\n */\nexports.importPublic = function (publicKey) {\n publicKey = exports.toBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1);\n }\n return publicKey;\n};\n\n/**\n * ECDSA sign\n * @param {Buffer} msgHash\n * @param {Buffer} privateKey\n * @return {Object}\n */\nexports.ecsign = function (msgHash, privateKey) {\n var sig = secp256k1.sign(msgHash, privateKey);\n\n var ret = {};\n ret.r = sig.signature.slice(0, 32);\n ret.s = sig.signature.slice(32, 64);\n ret.v = sig.recovery + 27;\n return ret;\n};\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n * @param message\n * @returns {Buffer} hash\n */\nexports.hashPersonalMessage = function (message) {\n var prefix = exports.toBuffer('\\x19Ethereum Signed Message:\\n' + message.length.toString());\n return exports.keccak(Buffer.concat([prefix, message]));\n};\n\n/**\n * ECDSA public key recovery from signature\n * @param {Buffer} msgHash\n * @param {Number} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {Buffer} publicKey\n */\nexports.ecrecover = function (msgHash, v, r, s) {\n var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64);\n var recovery = v - 27;\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Invalid signature v value');\n }\n var senderPubKey = secp256k1.recover(msgHash, signature, recovery);\n return secp256k1.publicKeyConvert(senderPubKey, false).slice(1);\n};\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method\n * @param {Number} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {String} sig\n */\nexports.toRpcSig = function (v, r, s) {\n // NOTE: with potential introduction of chainId this might need to be updated\n if (v !== 27 && v !== 28) {\n throw new Error('Invalid recovery id');\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053\n return exports.bufferToHex(Buffer.concat([exports.setLengthLeft(r, 32), exports.setLengthLeft(s, 32), exports.toBuffer(v - 27)]));\n};\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * @param {String} sig\n * @return {Object}\n */\nexports.fromRpcSig = function (sig) {\n sig = exports.toBuffer(sig);\n\n // NOTE: with potential introduction of chainId this might need to be updated\n if (sig.length !== 65) {\n throw new Error('Invalid signature length');\n }\n\n var v = sig[64];\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n\n return {\n v: v,\n r: sig.slice(0, 32),\n s: sig.slice(32, 64)\n };\n};\n\n/**\n * Returns the ethereum address of a given private key\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(privateToPublic(privateKey));\n};\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too\n * @param {String} address\n * @return {Boolean}\n */\nexports.isValidAddress = function (address) {\n return (/^0x[0-9a-fA-F]{40}$/.test(address)\n );\n};\n\n/**\n * Checks if a given address is a zero address\n * @method isZeroAddress\n * @param {String} address\n * @return {Boolean}\n */\nexports.isZeroAddress = function (address) {\n var zeroAddress = exports.zeroAddress();\n return zeroAddress === exports.addHexPrefix(address);\n};\n\n/**\n * Returns a checksummed address\n * @param {String} address\n * @return {String}\n */\nexports.toChecksumAddress = function (address) {\n address = exports.stripHexPrefix(address).toLowerCase();\n var hash = exports.keccak(address).toString('hex');\n var ret = '0x';\n\n for (var i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n } else {\n ret += address[i];\n }\n }\n\n return ret;\n};\n\n/**\n * Checks if the address is a valid checksummed address\n * @param {Buffer} address\n * @return {Boolean}\n */\nexports.isValidChecksumAddress = function (address) {\n return exports.isValidAddress(address) && exports.toChecksumAddress(address) === address;\n};\n\n/**\n * Generates an address of a newly created contract\n * @param {Buffer} from the address which is creating this new address\n * @param {Buffer} nonce the nonce of the from account\n * @return {Buffer}\n */\nexports.generateAddress = function (from, nonce) {\n from = exports.toBuffer(from);\n nonce = new BN(nonce);\n\n if (nonce.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n nonce = null;\n } else {\n nonce = Buffer.from(nonce.toArray());\n }\n\n // Only take the lower 160bits of the hash\n return exports.rlphash([from, nonce]).slice(-20);\n};\n\n/**\n * Returns true if the supplied address belongs to a precompiled account (Byzantium)\n * @param {Buffer|String} address\n * @return {Boolean}\n */\nexports.isPrecompiled = function (address) {\n var a = exports.unpad(address);\n return a.length === 1 && a[0] >= 1 && a[0] <= 8;\n};\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\"\n * @param {String} str\n * @return {String}\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return exports.isHexPrefixed(str) ? str : '0x' + str;\n};\n\n/**\n * Validate ECDSA signature\n * @method isValidSignature\n * @param {Buffer} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @param {Boolean} [homestead=true]\n * @return {Boolean}\n */\n\nexports.isValidSignature = function (v, r, s, homestead) {\n var SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n var SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n\n if (v !== 27 && v !== 28) {\n return false;\n }\n\n r = new BN(r);\n s = new BN(s);\n\n if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {\n return false;\n }\n\n if (homestead === false && new BN(s).cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n\n return true;\n};\n\n/**\n * Converts a `Buffer` or `Array` to JSON\n * @param {Buffer|Array} ba\n * @return {Array|String|null}\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return '0x' + ba.toString('hex');\n } else if (ba instanceof Array) {\n var array = [];\n for (var i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param {Object} self the `Object` to define properties on\n * @param {Array} fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param {*} data data to be validated against the definitions\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n\n // attach the `toJSON`\n self.toJSON = function (label) {\n if (label) {\n var obj = {};\n self._fields.forEach(function (field) {\n obj[field] = '0x' + self[field].toString('hex');\n });\n return obj;\n }\n return exports.baToJSON(this.raw);\n };\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n\n fields.forEach(function (field, i) {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = exports.toBuffer(v);\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n\n if (field.allowLess && field.length) {\n v = exports.stripZeros(v);\n assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes');\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length);\n }\n\n self.raw[i] = v;\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter\n });\n\n if (field.default) {\n self[field.name] = field.default;\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter\n });\n }\n });\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(exports.stripHexPrefix(data), 'hex');\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n\n // make sure all the items are buffers\n data.forEach(function (d, i) {\n self[self._fields[i]] = exports.toBuffer(d);\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n var keys = Object.keys(data);\n fields.forEach(function (field) {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias];\n });\n } else {\n throw new Error('invalid data');\n }\n }\n};","'use strict';\n\nvar secp256k1 = require('ethereum-cryptography/secp256k1');\n\nvar secp256k1v3 = require('./secp256k1-lib/index');\nvar der = require('./secp256k1-lib/der');\n\n/**\n * Verify an ECDSA privateKey\n * @method privateKeyVerify\n * @param {Buffer} privateKey\n * @return {boolean}\n */\nvar privateKeyVerify = function privateKeyVerify(privateKey) {\n // secp256k1 v4 version throws when privateKey length is not 32\n if (privateKey.length !== 32) {\n return false;\n }\n\n return secp256k1.privateKeyVerify(Uint8Array.from(privateKey));\n};\n\n/**\n * Export a privateKey in DER format\n * @method privateKeyExport\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {boolean}\n */\nvar privateKeyExport = function privateKeyExport(privateKey, compressed) {\n // privateKeyExport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n var publicKey = secp256k1v3.privateKeyExport(privateKey, compressed);\n\n return der.privateKeyExport(privateKey, publicKey, compressed);\n};\n\n/**\n * Import a privateKey in DER format\n * @method privateKeyImport\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\n\nvar privateKeyImport = function privateKeyImport(privateKey) {\n // privateKeyImport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n privateKey = der.privateKeyImport(privateKey);\n if (privateKey !== null && privateKey.length === 32 && privateKeyVerify(privateKey)) {\n return privateKey;\n }\n\n throw new Error(\"couldn't import from DER format\");\n};\n\n/**\n * Negate a privateKey by subtracting it from the order of the curve's base point\n * @method privateKeyNegate\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyNegate = function privateKeyNegate(privateKey) {\n return Buffer.from(secp256k1.privateKeyNegate(Uint8Array.from(privateKey)));\n};\n\n/**\n * Compute the inverse of a privateKey (modulo the order of the curve's base point).\n * @method privateKeyModInverse\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyModInverse = function privateKeyModInverse(privateKey) {\n if (privateKey.length !== 32) {\n throw new Error('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.privateKeyModInverse(Uint8Array.from(privateKey)));\n};\n\n/**\n * Tweak a privateKey by adding tweak to it.\n * @method privateKeyTweakAdd\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakAdd = function privateKeyTweakAdd(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakAdd(Uint8Array.from(privateKey), tweak));\n};\n\n/**\n * Tweak a privateKey by multiplying it by a tweak.\n * @method privateKeyTweakMul\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakMul = function privateKeyTweakMul(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakMul(Uint8Array.from(privateKey), Uint8Array.from(tweak)));\n};\n\n/**\n * Compute the public key for a privateKey.\n * @method publicKeyCreate\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCreate = function publicKeyCreate(privateKey, compressed) {\n return Buffer.from(secp256k1.publicKeyCreate(Uint8Array.from(privateKey), compressed));\n};\n\n/**\n * Convert a publicKey to compressed or uncompressed form.\n * @method publicKeyConvert\n * @param {Buffer} publicKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyConvert = function publicKeyConvert(publicKey, compressed) {\n return Buffer.from(secp256k1.publicKeyConvert(Uint8Array.from(publicKey), compressed));\n};\n\n/**\n * Verify an ECDSA publicKey.\n * @method publicKeyVerify\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar publicKeyVerify = function publicKeyVerify(publicKey) {\n // secp256k1 v4 version throws when publicKey length is not 33 or 65\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(Uint8Array.from(publicKey));\n};\n\n/**\n * Tweak a publicKey by adding tweak times the generator to it.\n * @method publicKeyTweakAdd\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakAdd = function publicKeyTweakAdd(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakAdd(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Tweak a publicKey by multiplying it by a tweak value\n * @method publicKeyTweakMul\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakMul = function publicKeyTweakMul(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakMul(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Add a given publicKeys together.\n * @method publicKeyCombine\n * @param {Array} publicKeys\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCombine = function publicKeyCombine(publicKeys, compressed) {\n var keys = [];\n publicKeys.forEach(function (publicKey) {\n keys.push(Uint8Array.from(publicKey));\n });\n\n return Buffer.from(secp256k1.publicKeyCombine(keys, compressed));\n};\n\n/**\n * Convert a signature to a normalized lower-S form.\n * @method signatureNormalize\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureNormalize = function signatureNormalize(signature) {\n return Buffer.from(secp256k1.signatureNormalize(Uint8Array.from(signature)));\n};\n\n/**\n * Serialize an ECDSA signature in DER format.\n * @method signatureExport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureExport = function signatureExport(signature) {\n return Buffer.from(secp256k1.signatureExport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImport = function signatureImport(signature) {\n return Buffer.from(secp256k1.signatureImport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (not follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImportLax\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImportLax = function signatureImportLax(signature) {\n // signatureImportLax method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure that signature is greater than 0\n if (signature.length === 0) {\n throw new RangeError('signature length is invalid');\n }\n\n var sigObj = der.signatureImportLax(signature);\n if (sigObj === null) {\n throw new Error(\"couldn't parse DER signature\");\n }\n\n return secp256k1v3.signatureImport(sigObj);\n};\n\n/**\n * Create an ECDSA signature. Always return low-S signature.\n * @method sign\n * @param {Buffer} message\n * @param {Buffer} privateKey\n * @param {Object} options\n * @return {Buffer}\n */\nvar sign = function sign(message, privateKey, options) {\n if (options === null) {\n throw new TypeError('options should be an Object');\n }\n\n var signOptions = void 0;\n\n if (options) {\n signOptions = {};\n\n if (options.data === null) {\n throw new TypeError('options.data should be a Buffer');\n }\n\n if (options.data) {\n // validate option.data length\n if (options.data.length !== 32) {\n throw new RangeError('options.data length is invalid');\n }\n\n signOptions.data = new Uint8Array(options.data);\n }\n\n if (options.noncefn === null) {\n throw new TypeError('options.noncefn should be a Function');\n }\n\n if (options.noncefn) {\n // convert option.noncefn function signature\n signOptions.noncefn = function (message, privateKey, algo, data, attempt) {\n var bufferAlgo = algo != null ? Buffer.from(algo) : null;\n var bufferData = data != null ? Buffer.from(data) : null;\n\n var buffer = Buffer.from('');\n\n if (options.noncefn) {\n buffer = options.noncefn(Buffer.from(message), Buffer.from(privateKey), bufferAlgo, bufferData, attempt);\n }\n\n return Uint8Array.from(buffer);\n };\n }\n }\n\n var sig = secp256k1.ecdsaSign(Uint8Array.from(message), Uint8Array.from(privateKey), signOptions);\n\n return {\n signature: Buffer.from(sig.signature),\n recovery: sig.recid\n };\n};\n\n/**\n * Verify an ECDSA signature.\n * @method verify\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar verify = function verify(message, signature, publicKey) {\n // note: secp256k1 v4 verify method has a different argument order\n return secp256k1.ecdsaVerify(Uint8Array.from(signature), Uint8Array.from(message), publicKey);\n};\n\n/**\n * Recover an ECDSA public key from a signature.\n * @method recover\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Number} recid\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar recover = function recover(message, signature, recid, compressed) {\n // note: secp256k1 v4 recover method has a different argument order\n return Buffer.from(secp256k1.ecdsaRecover(Uint8Array.from(signature), recid, Uint8Array.from(message), compressed));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and applied sha256 to compressed public key.\n * @method ecdh\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar ecdh = function ecdh(publicKey, privateKey) {\n // note: secp256k1 v3 doesn't allow optional parameter\n return Buffer.from(secp256k1.ecdh(Uint8Array.from(publicKey), Uint8Array.from(privateKey), {}));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and return public key as result\n * @method ecdhUnsafe\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar ecdhUnsafe = function ecdhUnsafe(publicKey, privateKey, compressed) {\n // ecdhUnsafe method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure valid publicKey length\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n throw new RangeError('public key length is invalid');\n }\n\n // ensure valid privateKey length\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.ecdhUnsafe(Uint8Array.from(publicKey), Uint8Array.from(privateKey), compressed));\n};\n\nmodule.exports = {\n privateKeyVerify: privateKeyVerify,\n privateKeyExport: privateKeyExport,\n privateKeyImport: privateKeyImport,\n privateKeyNegate: privateKeyNegate,\n privateKeyModInverse: privateKeyModInverse,\n privateKeyTweakAdd: privateKeyTweakAdd,\n privateKeyTweakMul: privateKeyTweakMul,\n\n publicKeyCreate: publicKeyCreate,\n publicKeyConvert: publicKeyConvert,\n publicKeyVerify: publicKeyVerify,\n publicKeyTweakAdd: publicKeyTweakAdd,\n publicKeyTweakMul: publicKeyTweakMul,\n publicKeyCombine: publicKeyCombine,\n\n signatureNormalize: signatureNormalize,\n signatureExport: signatureExport,\n signatureImport: signatureImport,\n signatureImportLax: signatureImportLax,\n\n sign: sign,\n verify: verify,\n recover: recover,\n\n ecdh: ecdh,\n ecdhUnsafe: ecdhUnsafe\n};","\"use strict\";\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar EC_PRIVKEY_EXPORT_DER_COMPRESSED = Buffer.from([\n// begin\n0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x21, 0x02, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nvar EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = Buffer.from([\n// begin\n0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x41, 0x04, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0e, 0x11, 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10, 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nexports.privateKeyExport = function (privateKey, publicKey, compressed) {\n var result = Buffer.from(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED);\n privateKey.copy(result, compressed ? 8 : 9);\n publicKey.copy(result, compressed ? 181 : 214);\n return result;\n};\n\nexports.privateKeyImport = function (privateKey) {\n var length = privateKey.length;\n\n // sequence header\n var index = 0;\n if (length < index + 1 || privateKey[index] !== 0x30) return null;\n index += 1;\n\n // sequence length constructor\n if (length < index + 1 || !(privateKey[index] & 0x80)) return null;\n\n var lenb = privateKey[index] & 0x7f;\n index += 1;\n if (lenb < 1 || lenb > 2) return null;\n if (length < index + lenb) return null;\n\n // sequence length\n var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0);\n index += lenb;\n if (length < index + len) return null;\n\n // sequence element 0: version number (=1)\n if (length < index + 3 || privateKey[index] !== 0x02 || privateKey[index + 1] !== 0x01 || privateKey[index + 2] !== 0x01) {\n return null;\n }\n index += 3;\n\n // sequence element 1: octet string, up to 32 bytes\n if (length < index + 2 || privateKey[index] !== 0x04 || privateKey[index + 1] > 0x20 || length < index + 2 + privateKey[index + 1]) {\n return null;\n }\n\n return privateKey.slice(index + 2, index + 2 + privateKey[index + 1]);\n};\n\nexports.signatureImportLax = function (signature) {\n var r = Buffer.alloc(32, 0);\n var s = Buffer.alloc(32, 0);\n\n var length = signature.length;\n var index = 0;\n\n // sequence tag byte\n if (signature[index++] !== 0x30) {\n return null;\n }\n\n // sequence length byte\n var lenbyte = signature[index++];\n if (lenbyte & 0x80) {\n index += lenbyte - 0x80;\n if (index > length) {\n return null;\n }\n }\n\n // sequence tag byte for r\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for r\n var rlen = signature[index++];\n if (rlen & 0x80) {\n lenbyte = rlen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n rlen = (rlen << 8) + signature[index];\n }\n }\n if (rlen > length - index) {\n return null;\n }\n var rindex = index;\n index += rlen;\n\n // sequence tag byte for s\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for s\n var slen = signature[index++];\n if (slen & 0x80) {\n lenbyte = slen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n slen = (slen << 8) + signature[index];\n }\n }\n if (slen > length - index) {\n return null;\n }\n var sindex = index;\n index += slen;\n\n // ignore leading zeros in r\n for (; rlen > 0 && signature[rindex] === 0x00; rlen -= 1, rindex += 1) {}\n // copy r value\n if (rlen > 32) {\n return null;\n }\n var rvalue = signature.slice(rindex, rindex + rlen);\n rvalue.copy(r, 32 - rvalue.length);\n\n // ignore leading zeros in s\n for (; slen > 0 && signature[sindex] === 0x00; slen -= 1, sindex += 1) {}\n // copy s value\n if (slen > 32) {\n return null;\n }\n var svalue = signature.slice(sindex, sindex + slen);\n svalue.copy(s, 32 - svalue.length);\n\n return { r: r, s: s };\n};","'use strict';\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\n\nvar ec = new EC('secp256k1');\nvar ecparams = ec.curve;\n\nexports.privateKeyExport = function (privateKey, compressed) {\n var d = new BN(privateKey);\n if (d.ucmp(ecparams.n) >= 0) {\n throw new Error('couldn\\'t export to DER format');\n }\n\n var point = ec.g.mul(d);\n return toPublicKey(point.getX(), point.getY(), compressed);\n};\n\nexports.privateKeyModInverse = function (privateKey) {\n var bn = new BN(privateKey);\n if (bn.ucmp(ecparams.n) >= 0 || bn.isZero()) {\n throw new Error('private key range is invalid');\n }\n\n return bn.invm(ecparams.n).toArrayLike(Buffer, 'be', 32);\n};\n\nexports.signatureImport = function (sigObj) {\n var r = new BN(sigObj.r);\n if (r.ucmp(ecparams.n) >= 0) {\n r = new BN(0);\n }\n\n var s = new BN(sigObj.s);\n if (s.ucmp(ecparams.n) >= 0) {\n s = new BN(0);\n }\n\n return Buffer.concat([r.toArrayLike(Buffer, 'be', 32), s.toArrayLike(Buffer, 'be', 32)]);\n};\n\nexports.ecdhUnsafe = function (publicKey, privateKey, compressed) {\n var point = ec.keyFromPublic(publicKey);\n\n var scalar = new BN(privateKey);\n if (scalar.ucmp(ecparams.n) >= 0 || scalar.isZero()) {\n throw new Error('scalar was invalid (zero or overflow)');\n }\n\n var shared = point.pub.mul(scalar);\n return toPublicKey(shared.getX(), shared.getY(), compressed);\n};\n\nvar toPublicKey = function toPublicKey(x, y, compressed) {\n var publicKey = void 0;\n\n if (compressed) {\n publicKey = Buffer.alloc(33);\n publicKey[0] = y.isOdd() ? 0x03 : 0x02;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n } else {\n publicKey = Buffer.alloc(65);\n publicKey[0] = 0x04;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n y.toArrayLike(Buffer, 'be', 32).copy(publicKey, 33);\n }\n\n return publicKey;\n};","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst utils_1 = require(\"./utils\");\r\n/**\r\n * Returns true if the bloom is a valid bloom\r\n * @param bloom The bloom\r\n */\r\nfunction isBloom(bloom) {\r\n if (typeof bloom !== 'string') {\r\n return false;\r\n }\r\n if (!/^(0x)?[0-9a-f]{512}$/i.test(bloom)) {\r\n return false;\r\n }\r\n if (/^(0x)?[0-9a-f]{512}$/.test(bloom) ||\r\n /^(0x)?[0-9A-F]{512}$/.test(bloom)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isBloom = isBloom;\r\n/**\r\n * Returns true if the value is part of the given bloom\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param value The value\r\n */\r\nfunction isInBloom(bloom, value) {\r\n if (typeof value === 'object' && value.constructor === Uint8Array) {\r\n value = utils_1.bytesToHex(value);\r\n }\r\n const hash = utils_1.keccak256(value).replace('0x', '');\r\n for (let i = 0; i < 12; i += 4) {\r\n // calculate bit position in bloom filter that must be active\r\n const bitpos = ((parseInt(hash.substr(i, 2), 16) << 8) +\r\n parseInt(hash.substr(i + 2, 2), 16)) &\r\n 2047;\r\n // test if bitpos in bloom is active\r\n const code = codePointToInt(bloom.charCodeAt(bloom.length - 1 - Math.floor(bitpos / 4)));\r\n const offset = 1 << bitpos % 4;\r\n if ((code & offset) !== offset) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\nexports.isInBloom = isInBloom;\r\n/**\r\n * Code points to int\r\n * @param codePoint The code point\r\n */\r\nfunction codePointToInt(codePoint) {\r\n if (codePoint >= 48 && codePoint <= 57) {\r\n /* ['0'..'9'] -> [0..9] */\r\n return codePoint - 48;\r\n }\r\n if (codePoint >= 65 && codePoint <= 70) {\r\n /* ['A'..'F'] -> [10..15] */\r\n return codePoint - 55;\r\n }\r\n if (codePoint >= 97 && codePoint <= 102) {\r\n /* ['a'..'f'] -> [10..15] */\r\n return codePoint - 87;\r\n }\r\n throw new Error('invalid bloom');\r\n}\r\n/**\r\n * Returns true if the ethereum users address is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param address the address to test\r\n */\r\nfunction isUserEthereumAddressInBloom(bloom, ethereumAddress) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isAddress(ethereumAddress)) {\r\n throw new Error(`Invalid ethereum address given: \"${ethereumAddress}\"`);\r\n }\r\n // you have to pad the ethereum address to 32 bytes\r\n // else the bloom filter does not work\r\n // this is only if your matching the USERS\r\n // ethereum address. Contract address do not need this\r\n // hence why we have 2 methods\r\n // (0x is not in the 2nd parameter of padleft so 64 chars is fine)\r\n const address = utils_1.padLeft(ethereumAddress, 64);\r\n return isInBloom(bloom, address);\r\n}\r\nexports.isUserEthereumAddressInBloom = isUserEthereumAddressInBloom;\r\n/**\r\n * Returns true if the contract address is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param contractAddress the contract address to test\r\n */\r\nfunction isContractAddressInBloom(bloom, contractAddress) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isAddress(contractAddress)) {\r\n throw new Error(`Invalid contract address given: \"${contractAddress}\"`);\r\n }\r\n return isInBloom(bloom, contractAddress);\r\n}\r\nexports.isContractAddressInBloom = isContractAddressInBloom;\r\n/**\r\n * Returns true if the topic is part of the given bloom.\r\n * note: false positives are possible.\r\n * @param bloom encoded bloom\r\n * @param topic the topic encoded hex\r\n */\r\nfunction isTopicInBloom(bloom, topic) {\r\n if (!isBloom(bloom)) {\r\n throw new Error('Invalid bloom given');\r\n }\r\n if (!isTopic(topic)) {\r\n throw new Error('Invalid topic');\r\n }\r\n return isInBloom(bloom, topic);\r\n}\r\nexports.isTopicInBloom = isTopicInBloom;\r\n/**\r\n * Checks if its a valid topic\r\n * @param topic encoded hex topic\r\n */\r\nfunction isTopic(topic) {\r\n if (typeof topic !== 'string') {\r\n return false;\r\n }\r\n if (!/^(0x)?[0-9a-f]{64}$/i.test(topic)) {\r\n return false;\r\n }\r\n else if (/^(0x)?[0-9a-f]{64}$/.test(topic) ||\r\n /^(0x)?[0-9A-F]{64}$/.test(topic)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isTopic = isTopic;\r\n/**\r\n * Is valid address\r\n * @param address The address\r\n */\r\nfunction isAddress(address) {\r\n if (typeof address !== 'string') {\r\n return false;\r\n }\r\n if (address.match(/^(0x)?[0-9a-fA-F]{40}$/)) {\r\n return true;\r\n }\r\n if (address.match(/^XE[0-9]{2}[0-9A-Za-z]{30,31}$/)) {\r\n return true;\r\n }\r\n return false;\r\n}\r\nexports.isAddress = isAddress;\r\n","\"use strict\";\r\nObject.defineProperty(exports, \"__esModule\", { value: true });\r\nconst sha3 = require(\"js-sha3\");\r\n/**\r\n * Keccak256 hash\r\n * @param data The data\r\n */\r\nfunction keccak256(data) {\r\n return '0x' + sha3.keccak_256(toByteArray(data));\r\n}\r\nexports.keccak256 = keccak256;\r\n/**\r\n * Adding padding to string on the left\r\n * @param value The value\r\n * @param chars The chars\r\n */\r\nexports.padLeft = (value, chars) => {\r\n const hasPrefix = /^0x/i.test(value) || typeof value === 'number';\r\n value = value.toString().replace(/^0x/i, '');\r\n const padding = chars - value.length + 1 >= 0 ? chars - value.length + 1 : 0;\r\n return (hasPrefix ? '0x' : '') + new Array(padding).join('0') + value;\r\n};\r\n/**\r\n * Convert bytes to hex\r\n * @param bytes The bytes\r\n */\r\nfunction bytesToHex(bytes) {\r\n const hex = [];\r\n for (let i = 0; i < bytes.length; i++) {\r\n hex.push((bytes[i] >>> 4).toString(16));\r\n hex.push((bytes[i] & 0xf).toString(16));\r\n }\r\n return `0x${hex.join('').replace(/^0+/, '')}`;\r\n}\r\nexports.bytesToHex = bytesToHex;\r\n/**\r\n * To byte array\r\n * @param value The value\r\n */\r\nfunction toByteArray(value) {\r\n if (value == null) {\r\n throw new Error('cannot convert null value to array');\r\n }\r\n if (typeof value === 'string') {\r\n const match = value.match(/^(0x)?[0-9a-fA-F]*$/);\r\n if (!match) {\r\n throw new Error('invalid hexidecimal string');\r\n }\r\n if (match[1] !== '0x') {\r\n throw new Error('hex string must have 0x prefix');\r\n }\r\n value = value.substring(2);\r\n if (value.length % 2) {\r\n value = '0' + value;\r\n }\r\n const result = [];\r\n for (let i = 0; i < value.length; i += 2) {\r\n result.push(parseInt(value.substr(i, 2), 16));\r\n }\r\n return addSlice(new Uint8Array(result));\r\n }\r\n if (isByteArray(value)) {\r\n return addSlice(new Uint8Array(value));\r\n }\r\n throw new Error('invalid arrayify value');\r\n}\r\nexports.toByteArray = toByteArray;\r\n/**\r\n * Is byte array\r\n * @param value The value\r\n */\r\nfunction isByteArray(value) {\r\n if (!value ||\r\n // tslint:disable-next-line: radix\r\n parseInt(String(value.length)) != value.length ||\r\n typeof value === 'string') {\r\n return false;\r\n }\r\n for (let i = 0; i < value.length; i++) {\r\n const v = value[i];\r\n // tslint:disable-next-line: radix\r\n if (v < 0 || v >= 256 || parseInt(String(v)) != v) {\r\n return false;\r\n }\r\n }\r\n return true;\r\n}\r\n/**\r\n * Add slice to array\r\n * @param array The array\r\n */\r\nfunction addSlice(array) {\r\n if (array.slice !== undefined) {\r\n return array;\r\n }\r\n array.slice = () => {\r\n const args = Array.prototype.slice.call(arguments);\r\n return addSlice(new Uint8Array(Array.prototype.slice.apply(array, args)));\r\n };\r\n return array;\r\n}\r\n","import { Hash } from \"crypto\";\n\nexport function createHashFunction(\n hashConstructor: () => Hash\n): (msg: Buffer) => Buffer {\n return msg => {\n const hash = hashConstructor();\n hash.update(msg);\n return Buffer.from(hash.digest());\n };\n}\n","import { createHashFunction } from \"./hash-utils\";\n\nconst createKeccakHash = require(\"keccak\");\n\nexport const keccak224 = createHashFunction(() =>\n createKeccakHash(\"keccak224\")\n);\n\nexport const keccak256 = createHashFunction(() =>\n createKeccakHash(\"keccak256\")\n);\n\nexport const keccak384 = createHashFunction(() =>\n createKeccakHash(\"keccak384\")\n);\n\nexport const keccak512 = createHashFunction(() =>\n createKeccakHash(\"keccak512\")\n);\n","const randombytes = require(\"randombytes\");\n\nexport function getRandomBytes(bytes: number): Promise {\n return new Promise((resolve, reject) => {\n randombytes(bytes, function(err: any, resp: Buffer) {\n if (err) {\n reject(err);\n return;\n }\n\n resolve(resp);\n });\n });\n}\n\nexport function getRandomBytesSync(bytes: number): Buffer {\n return randombytes(bytes);\n}\n","import { privateKeyVerify } from \"secp256k1\";\nimport { getRandomBytes, getRandomBytesSync } from \"./random\";\n\nconst SECP256K1_PRIVATE_KEY_SIZE = 32;\n\nexport async function createPrivateKey(): Promise {\n while (true) {\n const pk = await getRandomBytes(SECP256K1_PRIVATE_KEY_SIZE);\n if (privateKeyVerify(pk)) {\n return pk;\n }\n }\n}\n\nexport function createPrivateKeySync(): Uint8Array {\n while (true) {\n const pk = getRandomBytesSync(SECP256K1_PRIVATE_KEY_SIZE);\n if (privateKeyVerify(pk)) {\n return pk;\n }\n }\n}\n\nexport * from \"secp256k1\";\n","module.exports = require('./lib/index.js')\n","/* eslint-disable no-useless-escape */\nconst utils = require('ethereumjs-util')\nconst BN = require('bn.js')\n\nvar ABI = function () {\n}\n\n// Convert from short to canonical names\n// FIXME: optimise or make this nicer?\nfunction elementaryName (name) {\n if (name.startsWith('int[')) {\n return 'int256' + name.slice(3)\n } else if (name === 'int') {\n return 'int256'\n } else if (name.startsWith('uint[')) {\n return 'uint256' + name.slice(4)\n } else if (name === 'uint') {\n return 'uint256'\n } else if (name.startsWith('fixed[')) {\n return 'fixed128x128' + name.slice(5)\n } else if (name === 'fixed') {\n return 'fixed128x128'\n } else if (name.startsWith('ufixed[')) {\n return 'ufixed128x128' + name.slice(6)\n } else if (name === 'ufixed') {\n return 'ufixed128x128'\n }\n return name\n}\n\nABI.eventID = function (name, types) {\n // FIXME: use node.js util.format?\n var sig = name + '(' + types.map(elementaryName).join(',') + ')'\n return utils.keccak256(Buffer.from(sig))\n}\n\nABI.methodID = function (name, types) {\n return ABI.eventID(name, types).slice(0, 4)\n}\n\n// Parse N from type\nfunction parseTypeN (type) {\n return parseInt(/^\\D+(\\d+)$/.exec(type)[1], 10)\n}\n\n// Parse N,M from typex\nfunction parseTypeNxM (type) {\n var tmp = /^\\D+(\\d+)x(\\d+)$/.exec(type)\n return [ parseInt(tmp[1], 10), parseInt(tmp[2], 10) ]\n}\n\n// Parse N in type[] where \"type\" can itself be an array type.\nfunction parseTypeArray (type) {\n var tmp = type.match(/(.*)\\[(.*?)\\]$/)\n if (tmp) {\n return tmp[2] === '' ? 'dynamic' : parseInt(tmp[2], 10)\n }\n return null\n}\n\nfunction parseNumber (arg) {\n var type = typeof arg\n if (type === 'string') {\n if (utils.isHexPrefixed(arg)) {\n return new BN(utils.stripHexPrefix(arg), 16)\n } else {\n return new BN(arg, 10)\n }\n } else if (type === 'number') {\n return new BN(arg)\n } else if (arg.toArray) {\n // assume this is a BN for the moment, replace with BN.isBN soon\n return arg\n } else {\n throw new Error('Argument is not a number')\n }\n}\n\n// someMethod(bytes,uint)\n// someMethod(bytes,uint):(boolean)\nfunction parseSignature (sig) {\n var tmp = /^(\\w+)\\((.*)\\)$/.exec(sig)\n\n if (tmp.length !== 3) {\n throw new Error('Invalid method signature')\n }\n\n var args = /^(.+)\\):\\((.+)$/.exec(tmp[2])\n\n if (args !== null && args.length === 3) {\n return {\n method: tmp[1],\n args: args[1].split(','),\n retargs: args[2].split(',')\n }\n } else {\n var params = tmp[2].split(',')\n if (params.length === 1 && params[0] === '') {\n // Special-case (possibly naive) fixup for functions that take no arguments.\n // TODO: special cases are always bad, but this makes the function return\n // match what the calling functions expect\n params = []\n }\n return {\n method: tmp[1],\n args: params\n }\n }\n}\n\n// Encodes a single item (can be dynamic array)\n// @returns: Buffer\nfunction encodeSingle (type, arg) {\n var size, num, ret, i\n\n if (type === 'address') {\n return encodeSingle('uint160', parseNumber(arg))\n } else if (type === 'bool') {\n return encodeSingle('uint8', arg ? 1 : 0)\n } else if (type === 'string') {\n return encodeSingle('bytes', Buffer.from(arg, 'utf8'))\n } else if (isArray(type)) {\n // this part handles fixed-length ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n if (typeof arg.length === 'undefined') {\n throw new Error('Not an array?')\n }\n size = parseTypeArray(type)\n if (size !== 'dynamic' && size !== 0 && arg.length > size) {\n throw new Error('Elements exceed array size: ' + size)\n }\n ret = []\n type = type.slice(0, type.lastIndexOf('['))\n if (typeof arg === 'string') {\n arg = JSON.parse(arg)\n }\n for (i in arg) {\n ret.push(encodeSingle(type, arg[i]))\n }\n if (size === 'dynamic') {\n var length = encodeSingle('uint256', arg.length)\n ret.unshift(length)\n }\n return Buffer.concat(ret)\n } else if (type === 'bytes') {\n arg = Buffer.from(arg)\n\n ret = Buffer.concat([ encodeSingle('uint256', arg.length), arg ])\n\n if ((arg.length % 32) !== 0) {\n ret = Buffer.concat([ ret, utils.zeros(32 - (arg.length % 32)) ])\n }\n\n return ret\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n return utils.setLengthRight(arg, 32)\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n if (num < 0) {\n throw new Error('Supplied uint is negative')\n }\n\n return num.toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(arg)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n return num.toTwos(256).toArrayLike(Buffer, 'be', 32)\n } else if (type.startsWith('ufixed')) {\n size = parseTypeNxM(type)\n\n num = parseNumber(arg)\n\n if (num < 0) {\n throw new Error('Supplied ufixed is negative')\n }\n\n return encodeSingle('uint256', num.mul(new BN(2).pow(new BN(size[1]))))\n } else if (type.startsWith('fixed')) {\n size = parseTypeNxM(type)\n\n return encodeSingle('int256', parseNumber(arg).mul(new BN(2).pow(new BN(size[1]))))\n }\n\n throw new Error('Unsupported or invalid type: ' + type)\n}\n\n// Decodes a single item (can be dynamic array)\n// @returns: array\n// FIXME: this method will need a lot of attention at checking limits and validation\nfunction decodeSingle (parsedType, data, offset) {\n if (typeof parsedType === 'string') {\n parsedType = parseType(parsedType)\n }\n var size, num, ret, i\n\n if (parsedType.name === 'address') {\n return decodeSingle(parsedType.rawType, data, offset).toArrayLike(Buffer, 'be', 20).toString('hex')\n } else if (parsedType.name === 'bool') {\n return decodeSingle(parsedType.rawType, data, offset).toString() === new BN(1).toString()\n } else if (parsedType.name === 'string') {\n var bytes = decodeSingle(parsedType.rawType, data, offset)\n return Buffer.from(bytes, 'utf8').toString()\n } else if (parsedType.isArray) {\n // this part handles fixed-length arrays ([2]) and variable length ([]) arrays\n // NOTE: we catch here all calls to arrays, that simplifies the rest\n ret = []\n size = parsedType.size\n\n if (parsedType.size === 'dynamic') {\n offset = decodeSingle('uint256', data, offset).toNumber()\n size = decodeSingle('uint256', data, offset).toNumber()\n offset = offset + 32\n }\n for (i = 0; i < size; i++) {\n var decoded = decodeSingle(parsedType.subArray, data, offset)\n ret.push(decoded)\n offset += parsedType.subArray.memoryUsage\n }\n return ret\n } else if (parsedType.name === 'bytes') {\n offset = decodeSingle('uint256', data, offset).toNumber()\n size = decodeSingle('uint256', data, offset).toNumber()\n return data.slice(offset + 32, offset + 32 + size)\n } else if (parsedType.name.startsWith('bytes')) {\n return data.slice(offset, offset + parsedType.size)\n } else if (parsedType.name.startsWith('uint')) {\n num = new BN(data.slice(offset, offset + 32), 16, 'be')\n if (num.bitLength() > parsedType.size) {\n throw new Error('Decoded int exceeds width: ' + parsedType.size + ' vs ' + num.bitLength())\n }\n return num\n } else if (parsedType.name.startsWith('int')) {\n num = new BN(data.slice(offset, offset + 32), 16, 'be').fromTwos(256)\n if (num.bitLength() > parsedType.size) {\n throw new Error('Decoded uint exceeds width: ' + parsedType.size + ' vs ' + num.bitLength())\n }\n\n return num\n } else if (parsedType.name.startsWith('ufixed')) {\n size = new BN(2).pow(new BN(parsedType.size[1]))\n num = decodeSingle('uint256', data, offset)\n if (!num.mod(size).isZero()) {\n throw new Error('Decimals not supported yet')\n }\n return num.div(size)\n } else if (parsedType.name.startsWith('fixed')) {\n size = new BN(2).pow(new BN(parsedType.size[1]))\n num = decodeSingle('int256', data, offset)\n if (!num.mod(size).isZero()) {\n throw new Error('Decimals not supported yet')\n }\n return num.div(size)\n }\n throw new Error('Unsupported or invalid type: ' + parsedType.name)\n}\n\n// Parse the given type\n// @returns: {} containing the type itself, memory usage and (including size and subArray if applicable)\nfunction parseType (type) {\n var size\n var ret\n if (isArray(type)) {\n size = parseTypeArray(type)\n var subArray = type.slice(0, type.lastIndexOf('['))\n subArray = parseType(subArray)\n ret = {\n isArray: true,\n name: type,\n size: size,\n memoryUsage: size === 'dynamic' ? 32 : subArray.memoryUsage * size,\n subArray: subArray\n }\n return ret\n } else {\n var rawType\n switch (type) {\n case 'address':\n rawType = 'uint160'\n break\n case 'bool':\n rawType = 'uint8'\n break\n case 'string':\n rawType = 'bytes'\n break\n }\n ret = {\n rawType: rawType,\n name: type,\n memoryUsage: 32\n }\n\n if ((type.startsWith('bytes') && type !== 'bytes') || type.startsWith('uint') || type.startsWith('int')) {\n ret.size = parseTypeN(type)\n } else if (type.startsWith('ufixed') || type.startsWith('fixed')) {\n ret.size = parseTypeNxM(type)\n }\n\n if (type.startsWith('bytes') && type !== 'bytes' && (ret.size < 1 || ret.size > 32)) {\n throw new Error('Invalid bytes width: ' + ret.size)\n }\n if ((type.startsWith('uint') || type.startsWith('int')) && (ret.size % 8 || ret.size < 8 || ret.size > 256)) {\n throw new Error('Invalid int/uint width: ' + ret.size)\n }\n return ret\n }\n}\n\n// Is a type dynamic?\nfunction isDynamic (type) {\n // FIXME: handle all types? I don't think anything is missing now\n return (type === 'string') || (type === 'bytes') || (parseTypeArray(type) === 'dynamic')\n}\n\n// Is a type an array?\nfunction isArray (type) {\n return type.lastIndexOf(']') === type.length - 1\n}\n\n// Encode a method/event with arguments\n// @types an array of string type names\n// @args an array of the appropriate values\nABI.rawEncode = function (types, values) {\n var output = []\n var data = []\n\n var headLength = 0\n\n types.forEach(function (type) {\n if (isArray(type)) {\n var size = parseTypeArray(type)\n\n if (size !== 'dynamic') {\n headLength += 32 * size\n } else {\n headLength += 32\n }\n } else {\n headLength += 32\n }\n })\n\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var value = values[i]\n var cur = encodeSingle(type, value)\n\n // Use the head/tail method for storing dynamic data\n if (isDynamic(type)) {\n output.push(encodeSingle('uint256', headLength))\n data.push(cur)\n headLength += cur.length\n } else {\n output.push(cur)\n }\n }\n\n return Buffer.concat(output.concat(data))\n}\n\nABI.rawDecode = function (types, data) {\n var ret = []\n data = Buffer.from(data)\n var offset = 0\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var parsed = parseType(type, data, offset)\n var decoded = decodeSingle(parsed, data, offset)\n offset += parsed.memoryUsage\n ret.push(decoded)\n }\n return ret\n}\n\nABI.simpleEncode = function (method) {\n var args = Array.prototype.slice.call(arguments).slice(1)\n var sig = parseSignature(method)\n\n // FIXME: validate/convert arguments\n if (args.length !== sig.args.length) {\n throw new Error('Argument count mismatch')\n }\n\n return Buffer.concat([ ABI.methodID(sig.method, sig.args), ABI.rawEncode(sig.args, args) ])\n}\n\nABI.simpleDecode = function (method, data) {\n var sig = parseSignature(method)\n\n // FIXME: validate/convert arguments\n if (!sig.retargs) {\n throw new Error('No return values in method')\n }\n\n return ABI.rawDecode(sig.retargs, data)\n}\n\nfunction stringify (type, value) {\n if (type.startsWith('address') || type.startsWith('bytes')) {\n return '0x' + value.toString('hex')\n } else {\n return value.toString()\n }\n}\n\nABI.stringify = function (types, values) {\n var ret = []\n\n for (var i in types) {\n var type = types[i]\n var value = values[i]\n\n // if it is an array type, concat the items\n if (/^[^\\[]+\\[.*\\]$/.test(type)) {\n value = value.map(function (item) {\n return stringify(type, item)\n }).join(', ')\n } else {\n value = stringify(type, value)\n }\n\n ret.push(value)\n }\n\n return ret\n}\n\nABI.solidityHexValue = function (type, value, bitsize) {\n // pass in bitsize = null if use default bitsize\n var size, num\n if (isArray(type)) {\n var subType = type.replace(/\\[.*?\\]/, '')\n if (!isArray(subType)) {\n var arraySize = parseTypeArray(type)\n if (arraySize !== 'dynamic' && arraySize !== 0 && value.length > arraySize) {\n throw new Error('Elements exceed array size: ' + arraySize)\n }\n }\n var arrayValues = value.map(function (v) {\n return ABI.solidityHexValue(subType, v, 256)\n })\n return Buffer.concat(arrayValues)\n } else if (type === 'bytes') {\n return value\n } else if (type === 'string') {\n return Buffer.from(value, 'utf8')\n } else if (type === 'bool') {\n bitsize = bitsize || 8\n var padding = Array((bitsize) / 4).join('0')\n return Buffer.from(value ? padding + '1' : padding + '0', 'hex')\n } else if (type === 'address') {\n var bytesize = 20\n if (bitsize) {\n bytesize = bitsize / 8\n }\n return utils.setLengthLeft(value, bytesize)\n } else if (type.startsWith('bytes')) {\n size = parseTypeN(type)\n if (size < 1 || size > 32) {\n throw new Error('Invalid bytes width: ' + size)\n }\n\n return utils.setLengthRight(value, size)\n } else if (type.startsWith('uint')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid uint width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied uint exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n bitsize = bitsize || size\n return num.toArrayLike(Buffer, 'be', bitsize / 8)\n } else if (type.startsWith('int')) {\n size = parseTypeN(type)\n if ((size % 8) || (size < 8) || (size > 256)) {\n throw new Error('Invalid int width: ' + size)\n }\n\n num = parseNumber(value)\n if (num.bitLength() > size) {\n throw new Error('Supplied int exceeds width: ' + size + ' vs ' + num.bitLength())\n }\n\n bitsize = bitsize || size\n return num.toTwos(size).toArrayLike(Buffer, 'be', bitsize / 8)\n } else {\n // FIXME: support all other types\n throw new Error('Unsupported or invalid type: ' + type)\n }\n}\n\nABI.solidityPack = function (types, values) {\n if (types.length !== values.length) {\n throw new Error('Number of types are not matching the values')\n }\n\n var ret = []\n\n for (var i = 0; i < types.length; i++) {\n var type = elementaryName(types[i])\n var value = values[i]\n ret.push(ABI.solidityHexValue(type, value, null))\n }\n\n return Buffer.concat(ret)\n}\n\nABI.soliditySHA3 = function (types, values) {\n return utils.keccak256(ABI.solidityPack(types, values))\n}\n\nABI.soliditySHA256 = function (types, values) {\n return utils.sha256(ABI.solidityPack(types, values))\n}\n\nABI.solidityRIPEMD160 = function (types, values) {\n return utils.ripemd160(ABI.solidityPack(types, values), true)\n}\n\n// Serpent's users are familiar with this encoding\n// - s: string\n// - b: bytes\n// - b: bytes\n// - i: int256\n// - a: int256[]\n\nfunction isNumeric (c) {\n // FIXME: is this correct? Seems to work\n return (c >= '0') && (c <= '9')\n}\n\n// For a \"documentation\" refer to https://github.com/ethereum/serpent/blob/develop/preprocess.cpp\nABI.fromSerpent = function (sig) {\n var ret = []\n for (var i = 0; i < sig.length; i++) {\n var type = sig[i]\n if (type === 's') {\n ret.push('bytes')\n } else if (type === 'b') {\n var tmp = 'bytes'\n var j = i + 1\n while ((j < sig.length) && isNumeric(sig[j])) {\n tmp += sig[j] - '0'\n j++\n }\n i = j - 1\n ret.push(tmp)\n } else if (type === 'i') {\n ret.push('int256')\n } else if (type === 'a') {\n ret.push('int256[]')\n } else {\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n return ret\n}\n\nABI.toSerpent = function (types) {\n var ret = []\n for (var i = 0; i < types.length; i++) {\n var type = types[i]\n if (type === 'bytes') {\n ret.push('s')\n } else if (type.startsWith('bytes')) {\n ret.push('b' + parseTypeN(type))\n } else if (type === 'int256') {\n ret.push('i')\n } else if (type === 'int256[]') {\n ret.push('a')\n } else {\n throw new Error('Unsupported or invalid type: ' + type)\n }\n }\n return ret.join('')\n}\n\nmodule.exports = ABI\n",null,null,null,null,null,null,null,null,null,null,"'use strict';\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nvar ethUtil = require('ethereumjs-util');\nvar fees = require('ethereum-common/params.json');\nvar BN = ethUtil.BN;\n\n// secp256k1n/2\nvar N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n\n/**\n * Creates a new transaction object.\n *\n * @example\n * var rawTx = {\n * nonce: '00',\n * gasPrice: '09184e72a000',\n * gasLimit: '2710',\n * to: '0000000000000000000000000000000000000000',\n * value: '00',\n * data: '7f7465737432000000000000000000000000000000000000000000000000000000600057',\n * v: '1c',\n * r: '5e1d3a76fbf824220eafc8c79ad578ad2b67d01b0c2425eb1f1347e8f50882ab',\n * s: '5bd428537f05f9830e93792f90ea6a3e2d1ee84952dd96edbae9f658f831ab13'\n * };\n * var tx = new Transaction(rawTx);\n *\n * @class\n * @param {Buffer | Array | Object} data a transaction can be initiailized with either a buffer containing the RLP serialized transaction or an array of buffers relating to each of the tx Properties, listed in order below in the exmple.\n *\n * Or lastly an Object containing the Properties of the transaction like in the Usage example.\n *\n * For Object and Arrays each of the elements can either be a Buffer, a hex-prefixed (0x) String , Number, or an object with a toBuffer method such as Bignum\n *\n * @property {Buffer} raw The raw rlp encoded transaction\n * @param {Buffer} data.nonce nonce number\n * @param {Buffer} data.gasLimit transaction gas limit\n * @param {Buffer} data.gasPrice transaction gas price\n * @param {Buffer} data.to to the to address\n * @param {Buffer} data.value the amount of ether sent\n * @param {Buffer} data.data this will contain the data of the message or the init of a contract\n * @param {Buffer} data.v EC signature parameter\n * @param {Buffer} data.r EC signature parameter\n * @param {Buffer} data.s EC recovery ID\n * @param {Number} data.chainId EIP 155 chainId - mainnet: 1, ropsten: 3\n * */\n\nvar Transaction = function () {\n function Transaction(data) {\n _classCallCheck(this, Transaction);\n\n data = data || {};\n // Define Properties\n var fields = [{\n name: 'nonce',\n length: 32,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 'gasPrice',\n length: 32,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 'gasLimit',\n alias: 'gas',\n length: 32,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 'to',\n allowZero: true,\n length: 20,\n default: new Buffer([])\n }, {\n name: 'value',\n length: 32,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 'data',\n alias: 'input',\n allowZero: true,\n default: new Buffer([])\n }, {\n name: 'v',\n allowZero: true,\n default: new Buffer([0x1c])\n }, {\n name: 'r',\n length: 32,\n allowZero: true,\n allowLess: true,\n default: new Buffer([])\n }, {\n name: 's',\n length: 32,\n allowZero: true,\n allowLess: true,\n default: new Buffer([])\n }];\n\n /**\n * Returns the rlp encoding of the transaction\n * @method serialize\n * @return {Buffer}\n * @memberof Transaction\n * @name serialize\n */\n // attached serialize\n ethUtil.defineProperties(this, fields, data);\n\n /**\n * @property {Buffer} from (read only) sender address of this transaction, mathematically derived from other parameters.\n * @name from\n * @memberof Transaction\n */\n Object.defineProperty(this, 'from', {\n enumerable: true,\n configurable: true,\n get: this.getSenderAddress.bind(this)\n });\n\n // calculate chainId from signature\n var sigV = ethUtil.bufferToInt(this.v);\n var chainId = Math.floor((sigV - 35) / 2);\n if (chainId < 0) chainId = 0;\n\n // set chainId\n this._chainId = chainId || data.chainId || 0;\n this._homestead = true;\n }\n\n /**\n * If the tx's `to` is to the creation address\n * @return {Boolean}\n */\n\n\n Transaction.prototype.toCreationAddress = function toCreationAddress() {\n return this.to.toString('hex') === '';\n };\n\n /**\n * Computes a sha3-256 hash of the serialized tx\n * @param {Boolean} [includeSignature=true] whether or not to inculde the signature\n * @return {Buffer}\n */\n\n\n Transaction.prototype.hash = function hash(includeSignature) {\n if (includeSignature === undefined) includeSignature = true;\n\n // EIP155 spec:\n // when computing the hash of a transaction for purposes of signing or recovering,\n // instead of hashing only the first six elements (ie. nonce, gasprice, startgas, to, value, data),\n // hash nine elements, with v replaced by CHAIN_ID, r = 0 and s = 0\n\n var items = void 0;\n if (includeSignature) {\n items = this.raw;\n } else {\n if (this._chainId > 0) {\n var raw = this.raw.slice();\n this.v = this._chainId;\n this.r = 0;\n this.s = 0;\n items = this.raw;\n this.raw = raw;\n } else {\n items = this.raw.slice(0, 6);\n }\n }\n\n // create hash\n return ethUtil.rlphash(items);\n };\n\n /**\n * returns the public key of the sender\n * @return {Buffer}\n */\n\n\n Transaction.prototype.getChainId = function getChainId() {\n return this._chainId;\n };\n\n /**\n * returns the sender's address\n * @return {Buffer}\n */\n\n\n Transaction.prototype.getSenderAddress = function getSenderAddress() {\n if (this._from) {\n return this._from;\n }\n var pubkey = this.getSenderPublicKey();\n this._from = ethUtil.publicToAddress(pubkey);\n return this._from;\n };\n\n /**\n * returns the public key of the sender\n * @return {Buffer}\n */\n\n\n Transaction.prototype.getSenderPublicKey = function getSenderPublicKey() {\n if (!this._senderPubKey || !this._senderPubKey.length) {\n if (!this.verifySignature()) throw new Error('Invalid Signature');\n }\n return this._senderPubKey;\n };\n\n /**\n * Determines if the signature is valid\n * @return {Boolean}\n */\n\n\n Transaction.prototype.verifySignature = function verifySignature() {\n var msgHash = this.hash(false);\n // All transaction signatures whose s-value is greater than secp256k1n/2 are considered invalid.\n if (this._homestead && new BN(this.s).cmp(N_DIV_2) === 1) {\n return false;\n }\n\n try {\n var v = ethUtil.bufferToInt(this.v);\n if (this._chainId > 0) {\n v -= this._chainId * 2 + 8;\n }\n this._senderPubKey = ethUtil.ecrecover(msgHash, v, this.r, this.s);\n } catch (e) {\n return false;\n }\n\n return !!this._senderPubKey;\n };\n\n /**\n * sign a transaction with a given a private key\n * @param {Buffer} privateKey\n */\n\n\n Transaction.prototype.sign = function sign(privateKey) {\n var msgHash = this.hash(false);\n var sig = ethUtil.ecsign(msgHash, privateKey);\n if (this._chainId > 0) {\n sig.v += this._chainId * 2 + 8;\n }\n Object.assign(this, sig);\n };\n\n /**\n * The amount of gas paid for the data in this tx\n * @return {BN}\n */\n\n\n Transaction.prototype.getDataFee = function getDataFee() {\n var data = this.raw[5];\n var cost = new BN(0);\n for (var i = 0; i < data.length; i++) {\n data[i] === 0 ? cost.iaddn(fees.txDataZeroGas.v) : cost.iaddn(fees.txDataNonZeroGas.v);\n }\n return cost;\n };\n\n /**\n * the minimum amount of gas the tx must have (DataFee + TxFee + Creation Fee)\n * @return {BN}\n */\n\n\n Transaction.prototype.getBaseFee = function getBaseFee() {\n var fee = this.getDataFee().iaddn(fees.txGas.v);\n if (this._homestead && this.toCreationAddress()) {\n fee.iaddn(fees.txCreation.v);\n }\n return fee;\n };\n\n /**\n * the up front amount that an account must have for this transaction to be valid\n * @return {BN}\n */\n\n\n Transaction.prototype.getUpfrontCost = function getUpfrontCost() {\n return new BN(this.gasLimit).imul(new BN(this.gasPrice)).iadd(new BN(this.value));\n };\n\n /**\n * validates the signature and checks to see if it has enough gas\n * @param {Boolean} [stringError=false] whether to return a string with a dscription of why the validation failed or return a Bloolean\n * @return {Boolean|String}\n */\n\n\n Transaction.prototype.validate = function validate(stringError) {\n var errors = [];\n if (!this.verifySignature()) {\n errors.push('Invalid Signature');\n }\n\n if (this.getBaseFee().cmp(new BN(this.gasLimit)) > 0) {\n errors.push(['gas limit is too low. Need at least ' + this.getBaseFee()]);\n }\n\n if (stringError === undefined || stringError === false) {\n return errors.length === 0;\n } else {\n return errors.join(' ');\n }\n };\n\n return Transaction;\n}();\n\nmodule.exports = Transaction;","'use strict';\n\nvar _typeof = typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; };\n\nvar _require = require('ethereum-cryptography/keccak'),\n keccak224 = _require.keccak224,\n keccak384 = _require.keccak384,\n k256 = _require.keccak256,\n keccak512 = _require.keccak512;\n\nvar secp256k1 = require('./secp256k1-adapter');\nvar assert = require('assert');\nvar rlp = require('rlp');\nvar BN = require('bn.js');\nvar createHash = require('create-hash');\nvar Buffer = require('safe-buffer').Buffer;\nObject.assign(exports, require('ethjs-util'));\n\n/**\n * the max integer that this VM can handle (a ```BN```)\n * @var {BN} MAX_INTEGER\n */\nexports.MAX_INTEGER = new BN('ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff', 16);\n\n/**\n * 2^256 (a ```BN```)\n * @var {BN} TWO_POW256\n */\nexports.TWO_POW256 = new BN('10000000000000000000000000000000000000000000000000000000000000000', 16);\n\n/**\n * Keccak-256 hash of null (a ```String```)\n * @var {String} KECCAK256_NULL_S\n */\nexports.KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470';\nexports.SHA3_NULL_S = exports.KECCAK256_NULL_S;\n\n/**\n * Keccak-256 hash of null (a ```Buffer```)\n * @var {Buffer} KECCAK256_NULL\n */\nexports.KECCAK256_NULL = Buffer.from(exports.KECCAK256_NULL_S, 'hex');\nexports.SHA3_NULL = exports.KECCAK256_NULL;\n\n/**\n * Keccak-256 of an RLP of an empty array (a ```String```)\n * @var {String} KECCAK256_RLP_ARRAY_S\n */\nexports.KECCAK256_RLP_ARRAY_S = '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347';\nexports.SHA3_RLP_ARRAY_S = exports.KECCAK256_RLP_ARRAY_S;\n\n/**\n * Keccak-256 of an RLP of an empty array (a ```Buffer```)\n * @var {Buffer} KECCAK256_RLP_ARRAY\n */\nexports.KECCAK256_RLP_ARRAY = Buffer.from(exports.KECCAK256_RLP_ARRAY_S, 'hex');\nexports.SHA3_RLP_ARRAY = exports.KECCAK256_RLP_ARRAY;\n\n/**\n * Keccak-256 hash of the RLP of null (a ```String```)\n * @var {String} KECCAK256_RLP_S\n */\nexports.KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421';\nexports.SHA3_RLP_S = exports.KECCAK256_RLP_S;\n\n/**\n * Keccak-256 hash of the RLP of null (a ```Buffer```)\n * @var {Buffer} KECCAK256_RLP\n */\nexports.KECCAK256_RLP = Buffer.from(exports.KECCAK256_RLP_S, 'hex');\nexports.SHA3_RLP = exports.KECCAK256_RLP;\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n * @var {Function}\n */\nexports.BN = BN;\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n * @var {Function}\n */\nexports.rlp = rlp;\n\n/**\n * [`secp256k1`](https://github.com/cryptocoinjs/secp256k1-node/)\n * @var {Object}\n */\nexports.secp256k1 = secp256k1;\n\n/**\n * Returns a buffer filled with 0s\n * @method zeros\n * @param {Number} bytes the number of bytes the buffer should be\n * @return {Buffer}\n */\nexports.zeros = function (bytes) {\n return Buffer.allocUnsafe(bytes).fill(0);\n};\n\n/**\n * Returns a zero address\n * @method zeroAddress\n * @return {String}\n */\nexports.zeroAddress = function () {\n var addressLength = 20;\n var zeroAddress = exports.zeros(addressLength);\n return exports.bufferToHex(zeroAddress);\n};\n\n/**\n * Left Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @method lsetLength\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @param {Boolean} [right=false] whether to start padding form the left or right\n * @return {Buffer|Array}\n */\nexports.setLengthLeft = exports.setLength = function (msg, length, right) {\n var buf = exports.zeros(length);\n msg = exports.toBuffer(msg);\n if (right) {\n if (msg.length < length) {\n msg.copy(buf);\n return buf;\n }\n return msg.slice(0, length);\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length);\n return buf;\n }\n return msg.slice(-length);\n }\n};\n\n/**\n * Right Pads an `Array` or `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param {Buffer|Array} msg the value to pad\n * @param {Number} length the number of bytes the output should be\n * @return {Buffer|Array}\n */\nexports.setLengthRight = function (msg, length) {\n return exports.setLength(msg, length, true);\n};\n\n/**\n * Trims leading zeros from a `Buffer` or an `Array`\n * @param {Buffer|Array|String} a\n * @return {Buffer|Array|String}\n */\nexports.unpad = exports.stripZeros = function (a) {\n a = exports.stripHexPrefix(a);\n var first = a[0];\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1);\n first = a[0];\n }\n return a;\n};\n/**\n * Attempts to turn a value into a `Buffer`. As input it supports `Buffer`, `String`, `Number`, null/undefined, `BN` and other objects with a `toArray()` method.\n * @param {*} v the value\n */\nexports.toBuffer = function (v) {\n if (!Buffer.isBuffer(v)) {\n if (Array.isArray(v)) {\n v = Buffer.from(v);\n } else if (typeof v === 'string') {\n if (exports.isHexString(v)) {\n v = Buffer.from(exports.padToEven(exports.stripHexPrefix(v)), 'hex');\n } else {\n v = Buffer.from(v);\n }\n } else if (typeof v === 'number') {\n v = exports.intToBuffer(v);\n } else if (v === null || v === undefined) {\n v = Buffer.allocUnsafe(0);\n } else if (BN.isBN(v)) {\n v = v.toArrayLike(Buffer);\n } else if (v.toArray) {\n // converts a BN to a Buffer\n v = Buffer.from(v.toArray());\n } else {\n throw new Error('invalid type');\n }\n }\n return v;\n};\n\n/**\n * Converts a `Buffer` to a `Number`\n * @param {Buffer} buf\n * @return {Number}\n * @throws If the input number exceeds 53 bits.\n */\nexports.bufferToInt = function (buf) {\n return new BN(exports.toBuffer(buf)).toNumber();\n};\n\n/**\n * Converts a `Buffer` into a hex `String`\n * @param {Buffer} buf\n * @return {String}\n */\nexports.bufferToHex = function (buf) {\n buf = exports.toBuffer(buf);\n return '0x' + buf.toString('hex');\n};\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param {Buffer} num\n * @return {BN}\n */\nexports.fromSigned = function (num) {\n return new BN(num).fromTwos(256);\n};\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param {BN} num\n * @return {Buffer}\n */\nexports.toUnsigned = function (num) {\n return Buffer.from(num.toTwos(256).toArray());\n};\n\n/**\n * Creates Keccak hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the Keccak width\n * @return {Buffer}\n */\nexports.keccak = function (a, bits) {\n a = exports.toBuffer(a);\n if (!bits) bits = 256;\n\n switch (bits) {\n case 224:\n {\n return keccak224(a);\n }\n case 256:\n {\n return k256(a);\n }\n case 384:\n {\n return keccak384(a);\n }\n case 512:\n {\n return keccak512(a);\n }\n default:\n {\n throw new Error('Invald algorithm: keccak' + bits);\n }\n }\n};\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256)\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.keccak256 = function (a) {\n return exports.keccak(a);\n};\n\n/**\n * Creates SHA-3 (Keccak) hash of the input [OBSOLETE]\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Number} [bits=256] the SHA-3 width\n * @return {Buffer}\n */\nexports.sha3 = exports.keccak;\n\n/**\n * Creates SHA256 hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.sha256 = function (a) {\n a = exports.toBuffer(a);\n return createHash('sha256').update(a).digest();\n};\n\n/**\n * Creates RIPEMD160 hash of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @param {Boolean} padded whether it should be padded to 256 bits or not\n * @return {Buffer}\n */\nexports.ripemd160 = function (a, padded) {\n a = exports.toBuffer(a);\n var hash = createHash('rmd160').update(a).digest();\n if (padded === true) {\n return exports.setLength(hash, 32);\n } else {\n return hash;\n }\n};\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input\n * @param {Buffer|Array|String|Number} a the input data\n * @return {Buffer}\n */\nexports.rlphash = function (a) {\n return exports.keccak(rlp.encode(a));\n};\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n * @param {Buffer} privateKey\n * @return {Boolean}\n */\nexports.isValidPrivate = function (privateKey) {\n return secp256k1.privateKeyVerify(privateKey);\n};\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param {Buffer} publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Boolean}\n */\nexports.isValidPublic = function (publicKey, sanitize) {\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return secp256k1.publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]));\n }\n\n if (!sanitize) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(publicKey);\n};\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param {Buffer} pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param {Boolean} [sanitize=false] Accept public keys in other formats\n * @return {Buffer}\n */\nexports.pubToAddress = exports.publicToAddress = function (pubKey, sanitize) {\n pubKey = exports.toBuffer(pubKey);\n if (sanitize && pubKey.length !== 64) {\n pubKey = secp256k1.publicKeyConvert(pubKey, false).slice(1);\n }\n assert(pubKey.length === 64);\n // Only take the lower 160bits of the hash\n return exports.keccak(pubKey).slice(-20);\n};\n\n/**\n * Returns the ethereum public key of a given private key\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nvar privateToPublic = exports.privateToPublic = function (privateKey) {\n privateKey = exports.toBuffer(privateKey);\n // skip the type flag and use the X, Y points\n return secp256k1.publicKeyCreate(privateKey, false).slice(1);\n};\n\n/**\n * Converts a public key to the Ethereum format.\n * @param {Buffer} publicKey\n * @return {Buffer}\n */\nexports.importPublic = function (publicKey) {\n publicKey = exports.toBuffer(publicKey);\n if (publicKey.length !== 64) {\n publicKey = secp256k1.publicKeyConvert(publicKey, false).slice(1);\n }\n return publicKey;\n};\n\n/**\n * ECDSA sign\n * @param {Buffer} msgHash\n * @param {Buffer} privateKey\n * @return {Object}\n */\nexports.ecsign = function (msgHash, privateKey) {\n var sig = secp256k1.sign(msgHash, privateKey);\n\n var ret = {};\n ret.r = sig.signature.slice(0, 32);\n ret.s = sig.signature.slice(32, 64);\n ret.v = sig.recovery + 27;\n return ret;\n};\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n * @param message\n * @returns {Buffer} hash\n */\nexports.hashPersonalMessage = function (message) {\n var prefix = exports.toBuffer('\\x19Ethereum Signed Message:\\n' + message.length.toString());\n return exports.keccak(Buffer.concat([prefix, message]));\n};\n\n/**\n * ECDSA public key recovery from signature\n * @param {Buffer} msgHash\n * @param {Number} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {Buffer} publicKey\n */\nexports.ecrecover = function (msgHash, v, r, s) {\n var signature = Buffer.concat([exports.setLength(r, 32), exports.setLength(s, 32)], 64);\n var recovery = v - 27;\n if (recovery !== 0 && recovery !== 1) {\n throw new Error('Invalid signature v value');\n }\n var senderPubKey = secp256k1.recover(msgHash, signature, recovery);\n return secp256k1.publicKeyConvert(senderPubKey, false).slice(1);\n};\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method\n * @param {Number} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @return {String} sig\n */\nexports.toRpcSig = function (v, r, s) {\n // NOTE: with potential introduction of chainId this might need to be updated\n if (v !== 27 && v !== 28) {\n throw new Error('Invalid recovery id');\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n // FIXME: this might change in the future - https://github.com/ethereum/go-ethereum/issues/2053\n return exports.bufferToHex(Buffer.concat([exports.setLengthLeft(r, 32), exports.setLengthLeft(s, 32), exports.toBuffer(v - 27)]));\n};\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n * @param {String} sig\n * @return {Object}\n */\nexports.fromRpcSig = function (sig) {\n sig = exports.toBuffer(sig);\n\n // NOTE: with potential introduction of chainId this might need to be updated\n if (sig.length !== 65) {\n throw new Error('Invalid signature length');\n }\n\n var v = sig[64];\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27;\n }\n\n return {\n v: v,\n r: sig.slice(0, 32),\n s: sig.slice(32, 64)\n };\n};\n\n/**\n * Returns the ethereum address of a given private key\n * @param {Buffer} privateKey A private key must be 256 bits wide\n * @return {Buffer}\n */\nexports.privateToAddress = function (privateKey) {\n return exports.publicToAddress(privateToPublic(privateKey));\n};\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too\n * @param {String} address\n * @return {Boolean}\n */\nexports.isValidAddress = function (address) {\n return (/^0x[0-9a-fA-F]{40}$/.test(address)\n );\n};\n\n/**\n * Checks if a given address is a zero address\n * @method isZeroAddress\n * @param {String} address\n * @return {Boolean}\n */\nexports.isZeroAddress = function (address) {\n var zeroAddress = exports.zeroAddress();\n return zeroAddress === exports.addHexPrefix(address);\n};\n\n/**\n * Returns a checksummed address\n * @param {String} address\n * @return {String}\n */\nexports.toChecksumAddress = function (address) {\n address = exports.stripHexPrefix(address).toLowerCase();\n var hash = exports.keccak(address).toString('hex');\n var ret = '0x';\n\n for (var i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase();\n } else {\n ret += address[i];\n }\n }\n\n return ret;\n};\n\n/**\n * Checks if the address is a valid checksummed address\n * @param {Buffer} address\n * @return {Boolean}\n */\nexports.isValidChecksumAddress = function (address) {\n return exports.isValidAddress(address) && exports.toChecksumAddress(address) === address;\n};\n\n/**\n * Generates an address of a newly created contract\n * @param {Buffer} from the address which is creating this new address\n * @param {Buffer} nonce the nonce of the from account\n * @return {Buffer}\n */\nexports.generateAddress = function (from, nonce) {\n from = exports.toBuffer(from);\n nonce = new BN(nonce);\n\n if (nonce.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n nonce = null;\n } else {\n nonce = Buffer.from(nonce.toArray());\n }\n\n // Only take the lower 160bits of the hash\n return exports.rlphash([from, nonce]).slice(-20);\n};\n\n/**\n * Returns true if the supplied address belongs to a precompiled account (Byzantium)\n * @param {Buffer|String} address\n * @return {Boolean}\n */\nexports.isPrecompiled = function (address) {\n var a = exports.unpad(address);\n return a.length === 1 && a[0] >= 1 && a[0] <= 8;\n};\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\"\n * @param {String} str\n * @return {String}\n */\nexports.addHexPrefix = function (str) {\n if (typeof str !== 'string') {\n return str;\n }\n\n return exports.isHexPrefixed(str) ? str : '0x' + str;\n};\n\n/**\n * Validate ECDSA signature\n * @method isValidSignature\n * @param {Buffer} v\n * @param {Buffer} r\n * @param {Buffer} s\n * @param {Boolean} [homestead=true]\n * @return {Boolean}\n */\n\nexports.isValidSignature = function (v, r, s, homestead) {\n var SECP256K1_N_DIV_2 = new BN('7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0', 16);\n var SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16);\n\n if (r.length !== 32 || s.length !== 32) {\n return false;\n }\n\n if (v !== 27 && v !== 28) {\n return false;\n }\n\n r = new BN(r);\n s = new BN(s);\n\n if (r.isZero() || r.gt(SECP256K1_N) || s.isZero() || s.gt(SECP256K1_N)) {\n return false;\n }\n\n if (homestead === false && new BN(s).cmp(SECP256K1_N_DIV_2) === 1) {\n return false;\n }\n\n return true;\n};\n\n/**\n * Converts a `Buffer` or `Array` to JSON\n * @param {Buffer|Array} ba\n * @return {Array|String|null}\n */\nexports.baToJSON = function (ba) {\n if (Buffer.isBuffer(ba)) {\n return '0x' + ba.toString('hex');\n } else if (ba instanceof Array) {\n var array = [];\n for (var i = 0; i < ba.length; i++) {\n array.push(exports.baToJSON(ba[i]));\n }\n return array;\n }\n};\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param {Object} self the `Object` to define properties on\n * @param {Array} fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param {*} data data to be validated against the definitions\n */\nexports.defineProperties = function (self, fields, data) {\n self.raw = [];\n self._fields = [];\n\n // attach the `toJSON`\n self.toJSON = function (label) {\n if (label) {\n var obj = {};\n self._fields.forEach(function (field) {\n obj[field] = '0x' + self[field].toString('hex');\n });\n return obj;\n }\n return exports.baToJSON(this.raw);\n };\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw);\n };\n\n fields.forEach(function (field, i) {\n self._fields.push(field.name);\n function getter() {\n return self.raw[i];\n }\n function setter(v) {\n v = exports.toBuffer(v);\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0);\n }\n\n if (field.allowLess && field.length) {\n v = exports.stripZeros(v);\n assert(field.length >= v.length, 'The field ' + field.name + ' must not have more ' + field.length + ' bytes');\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(field.length === v.length, 'The field ' + field.name + ' must have byte length of ' + field.length);\n }\n\n self.raw[i] = v;\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter\n });\n\n if (field.default) {\n self[field.name] = field.default;\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter\n });\n }\n });\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(exports.stripHexPrefix(data), 'hex');\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data);\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data');\n }\n\n // make sure all the items are buffers\n data.forEach(function (d, i) {\n self[self._fields[i]] = exports.toBuffer(d);\n });\n } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === 'object') {\n var keys = Object.keys(data);\n fields.forEach(function (field) {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name];\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias];\n });\n } else {\n throw new Error('invalid data');\n }\n }\n};","'use strict';\n\nvar secp256k1 = require('ethereum-cryptography/secp256k1');\n\nvar secp256k1v3 = require('./secp256k1-lib/index');\nvar der = require('./secp256k1-lib/der');\n\n/**\n * Verify an ECDSA privateKey\n * @method privateKeyVerify\n * @param {Buffer} privateKey\n * @return {boolean}\n */\nvar privateKeyVerify = function privateKeyVerify(privateKey) {\n // secp256k1 v4 version throws when privateKey length is not 32\n if (privateKey.length !== 32) {\n return false;\n }\n\n return secp256k1.privateKeyVerify(Uint8Array.from(privateKey));\n};\n\n/**\n * Export a privateKey in DER format\n * @method privateKeyExport\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {boolean}\n */\nvar privateKeyExport = function privateKeyExport(privateKey, compressed) {\n // privateKeyExport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n var publicKey = secp256k1v3.privateKeyExport(privateKey, compressed);\n\n return der.privateKeyExport(privateKey, publicKey, compressed);\n};\n\n/**\n * Import a privateKey in DER format\n * @method privateKeyImport\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\n\nvar privateKeyImport = function privateKeyImport(privateKey) {\n // privateKeyImport method is not part of secp256k1 v4 package\n // this implementation is based on v3\n privateKey = der.privateKeyImport(privateKey);\n if (privateKey !== null && privateKey.length === 32 && privateKeyVerify(privateKey)) {\n return privateKey;\n }\n\n throw new Error(\"couldn't import from DER format\");\n};\n\n/**\n * Negate a privateKey by subtracting it from the order of the curve's base point\n * @method privateKeyNegate\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyNegate = function privateKeyNegate(privateKey) {\n return Buffer.from(secp256k1.privateKeyNegate(Uint8Array.from(privateKey)));\n};\n\n/**\n * Compute the inverse of a privateKey (modulo the order of the curve's base point).\n * @method privateKeyModInverse\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar privateKeyModInverse = function privateKeyModInverse(privateKey) {\n if (privateKey.length !== 32) {\n throw new Error('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.privateKeyModInverse(Uint8Array.from(privateKey)));\n};\n\n/**\n * Tweak a privateKey by adding tweak to it.\n * @method privateKeyTweakAdd\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakAdd = function privateKeyTweakAdd(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakAdd(Uint8Array.from(privateKey), tweak));\n};\n\n/**\n * Tweak a privateKey by multiplying it by a tweak.\n * @method privateKeyTweakMul\n * @param {Buffer} privateKey\n * @param {Buffer} tweak\n * @return {Buffer}\n */\nvar privateKeyTweakMul = function privateKeyTweakMul(privateKey, tweak) {\n return Buffer.from(secp256k1.privateKeyTweakMul(Uint8Array.from(privateKey), Uint8Array.from(tweak)));\n};\n\n/**\n * Compute the public key for a privateKey.\n * @method publicKeyCreate\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCreate = function publicKeyCreate(privateKey, compressed) {\n return Buffer.from(secp256k1.publicKeyCreate(Uint8Array.from(privateKey), compressed));\n};\n\n/**\n * Convert a publicKey to compressed or uncompressed form.\n * @method publicKeyConvert\n * @param {Buffer} publicKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyConvert = function publicKeyConvert(publicKey, compressed) {\n return Buffer.from(secp256k1.publicKeyConvert(Uint8Array.from(publicKey), compressed));\n};\n\n/**\n * Verify an ECDSA publicKey.\n * @method publicKeyVerify\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar publicKeyVerify = function publicKeyVerify(publicKey) {\n // secp256k1 v4 version throws when publicKey length is not 33 or 65\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n return false;\n }\n\n return secp256k1.publicKeyVerify(Uint8Array.from(publicKey));\n};\n\n/**\n * Tweak a publicKey by adding tweak times the generator to it.\n * @method publicKeyTweakAdd\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakAdd = function publicKeyTweakAdd(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakAdd(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Tweak a publicKey by multiplying it by a tweak value\n * @method publicKeyTweakMul\n * @param {Buffer} publicKey\n * @param {Buffer} tweak\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyTweakMul = function publicKeyTweakMul(publicKey, tweak, compressed) {\n return Buffer.from(secp256k1.publicKeyTweakMul(Uint8Array.from(publicKey), Uint8Array.from(tweak), compressed));\n};\n\n/**\n * Add a given publicKeys together.\n * @method publicKeyCombine\n * @param {Array} publicKeys\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar publicKeyCombine = function publicKeyCombine(publicKeys, compressed) {\n var keys = [];\n publicKeys.forEach(function (publicKey) {\n keys.push(Uint8Array.from(publicKey));\n });\n\n return Buffer.from(secp256k1.publicKeyCombine(keys, compressed));\n};\n\n/**\n * Convert a signature to a normalized lower-S form.\n * @method signatureNormalize\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureNormalize = function signatureNormalize(signature) {\n return Buffer.from(secp256k1.signatureNormalize(Uint8Array.from(signature)));\n};\n\n/**\n * Serialize an ECDSA signature in DER format.\n * @method signatureExport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureExport = function signatureExport(signature) {\n return Buffer.from(secp256k1.signatureExport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImport\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImport = function signatureImport(signature) {\n return Buffer.from(secp256k1.signatureImport(Uint8Array.from(signature)));\n};\n\n/**\n * Parse a DER ECDSA signature (not follow by [BIP66](https://github.com/bitcoin/bips/blob/master/bip-0066.mediawiki)).\n * @method signatureImportLax\n * @param {Buffer} signature\n * @return {Buffer}\n */\nvar signatureImportLax = function signatureImportLax(signature) {\n // signatureImportLax method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure that signature is greater than 0\n if (signature.length === 0) {\n throw new RangeError('signature length is invalid');\n }\n\n var sigObj = der.signatureImportLax(signature);\n if (sigObj === null) {\n throw new Error(\"couldn't parse DER signature\");\n }\n\n return secp256k1v3.signatureImport(sigObj);\n};\n\n/**\n * Create an ECDSA signature. Always return low-S signature.\n * @method sign\n * @param {Buffer} message\n * @param {Buffer} privateKey\n * @param {Object} options\n * @return {Buffer}\n */\nvar sign = function sign(message, privateKey, options) {\n if (options === null) {\n throw new TypeError('options should be an Object');\n }\n\n var signOptions = void 0;\n\n if (options) {\n signOptions = {};\n\n if (options.data === null) {\n throw new TypeError('options.data should be a Buffer');\n }\n\n if (options.data) {\n // validate option.data length\n if (options.data.length !== 32) {\n throw new RangeError('options.data length is invalid');\n }\n\n signOptions.data = new Uint8Array(options.data);\n }\n\n if (options.noncefn === null) {\n throw new TypeError('options.noncefn should be a Function');\n }\n\n if (options.noncefn) {\n // convert option.noncefn function signature\n signOptions.noncefn = function (message, privateKey, algo, data, attempt) {\n var bufferAlgo = algo != null ? Buffer.from(algo) : null;\n var bufferData = data != null ? Buffer.from(data) : null;\n\n var buffer = Buffer.from('');\n\n if (options.noncefn) {\n buffer = options.noncefn(Buffer.from(message), Buffer.from(privateKey), bufferAlgo, bufferData, attempt);\n }\n\n return Uint8Array.from(buffer);\n };\n }\n }\n\n var sig = secp256k1.ecdsaSign(Uint8Array.from(message), Uint8Array.from(privateKey), signOptions);\n\n return {\n signature: Buffer.from(sig.signature),\n recovery: sig.recid\n };\n};\n\n/**\n * Verify an ECDSA signature.\n * @method verify\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Buffer} publicKey\n * @return {boolean}\n */\nvar verify = function verify(message, signature, publicKey) {\n // note: secp256k1 v4 verify method has a different argument order\n return secp256k1.ecdsaVerify(Uint8Array.from(signature), Uint8Array.from(message), publicKey);\n};\n\n/**\n * Recover an ECDSA public key from a signature.\n * @method recover\n * @param {Buffer} message\n * @param {Buffer} signature\n * @param {Number} recid\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar recover = function recover(message, signature, recid, compressed) {\n // note: secp256k1 v4 recover method has a different argument order\n return Buffer.from(secp256k1.ecdsaRecover(Uint8Array.from(signature), recid, Uint8Array.from(message), compressed));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and applied sha256 to compressed public key.\n * @method ecdh\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @return {Buffer}\n */\nvar ecdh = function ecdh(publicKey, privateKey) {\n // note: secp256k1 v3 doesn't allow optional parameter\n return Buffer.from(secp256k1.ecdh(Uint8Array.from(publicKey), Uint8Array.from(privateKey), {}));\n};\n\n/**\n * Compute an EC Diffie-Hellman secret and return public key as result\n * @method ecdhUnsafe\n * @param {Buffer} publicKey\n * @param {Buffer} privateKey\n * @param {boolean} compressed\n * @return {Buffer}\n */\nvar ecdhUnsafe = function ecdhUnsafe(publicKey, privateKey, compressed) {\n // ecdhUnsafe method is not part of secp256k1 v4 package\n // this implementation is based on v3\n // ensure valid publicKey length\n if (publicKey.length !== 33 && publicKey.length !== 65) {\n throw new RangeError('public key length is invalid');\n }\n\n // ensure valid privateKey length\n if (privateKey.length !== 32) {\n throw new RangeError('private key length is invalid');\n }\n\n return Buffer.from(secp256k1v3.ecdhUnsafe(Uint8Array.from(publicKey), Uint8Array.from(privateKey), compressed));\n};\n\nmodule.exports = {\n privateKeyVerify: privateKeyVerify,\n privateKeyExport: privateKeyExport,\n privateKeyImport: privateKeyImport,\n privateKeyNegate: privateKeyNegate,\n privateKeyModInverse: privateKeyModInverse,\n privateKeyTweakAdd: privateKeyTweakAdd,\n privateKeyTweakMul: privateKeyTweakMul,\n\n publicKeyCreate: publicKeyCreate,\n publicKeyConvert: publicKeyConvert,\n publicKeyVerify: publicKeyVerify,\n publicKeyTweakAdd: publicKeyTweakAdd,\n publicKeyTweakMul: publicKeyTweakMul,\n publicKeyCombine: publicKeyCombine,\n\n signatureNormalize: signatureNormalize,\n signatureExport: signatureExport,\n signatureImport: signatureImport,\n signatureImportLax: signatureImportLax,\n\n sign: sign,\n verify: verify,\n recover: recover,\n\n ecdh: ecdh,\n ecdhUnsafe: ecdhUnsafe\n};","\"use strict\";\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar EC_PRIVKEY_EXPORT_DER_COMPRESSED = Buffer.from([\n// begin\n0x30, 0x81, 0xd3, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0x85, 0x30, 0x81, 0x82, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x21, 0x02, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x24, 0x03, 0x22, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nvar EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED = Buffer.from([\n// begin\n0x30, 0x82, 0x01, 0x13, 0x02, 0x01, 0x01, 0x04, 0x20,\n// private key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,\n// middle\n0xa0, 0x81, 0xa5, 0x30, 0x81, 0xa2, 0x02, 0x01, 0x01, 0x30, 0x2c, 0x06, 0x07, 0x2a, 0x86, 0x48, 0xce, 0x3d, 0x01, 0x01, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xff, 0xff, 0xfc, 0x2f, 0x30, 0x06, 0x04, 0x01, 0x00, 0x04, 0x01, 0x07, 0x04, 0x41, 0x04, 0x79, 0xbe, 0x66, 0x7e, 0xf9, 0xdc, 0xbb, 0xac, 0x55, 0xa0, 0x62, 0x95, 0xce, 0x87, 0x0b, 0x07, 0x02, 0x9b, 0xfc, 0xdb, 0x2d, 0xce, 0x28, 0xd9, 0x59, 0xf2, 0x81, 0x5b, 0x16, 0xf8, 0x17, 0x98, 0x48, 0x3a, 0xda, 0x77, 0x26, 0xa3, 0xc4, 0x65, 0x5d, 0xa4, 0xfb, 0xfc, 0x0e, 0x11, 0x08, 0xa8, 0xfd, 0x17, 0xb4, 0x48, 0xa6, 0x85, 0x54, 0x19, 0x9c, 0x47, 0xd0, 0x8f, 0xfb, 0x10, 0xd4, 0xb8, 0x02, 0x21, 0x00, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xff, 0xfe, 0xba, 0xae, 0xdc, 0xe6, 0xaf, 0x48, 0xa0, 0x3b, 0xbf, 0xd2, 0x5e, 0x8c, 0xd0, 0x36, 0x41, 0x41, 0x02, 0x01, 0x01, 0xa1, 0x44, 0x03, 0x42, 0x00,\n// public key\n0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00]);\n\nexports.privateKeyExport = function (privateKey, publicKey, compressed) {\n var result = Buffer.from(compressed ? EC_PRIVKEY_EXPORT_DER_COMPRESSED : EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED);\n privateKey.copy(result, compressed ? 8 : 9);\n publicKey.copy(result, compressed ? 181 : 214);\n return result;\n};\n\nexports.privateKeyImport = function (privateKey) {\n var length = privateKey.length;\n\n // sequence header\n var index = 0;\n if (length < index + 1 || privateKey[index] !== 0x30) return null;\n index += 1;\n\n // sequence length constructor\n if (length < index + 1 || !(privateKey[index] & 0x80)) return null;\n\n var lenb = privateKey[index] & 0x7f;\n index += 1;\n if (lenb < 1 || lenb > 2) return null;\n if (length < index + lenb) return null;\n\n // sequence length\n var len = privateKey[index + lenb - 1] | (lenb > 1 ? privateKey[index + lenb - 2] << 8 : 0);\n index += lenb;\n if (length < index + len) return null;\n\n // sequence element 0: version number (=1)\n if (length < index + 3 || privateKey[index] !== 0x02 || privateKey[index + 1] !== 0x01 || privateKey[index + 2] !== 0x01) {\n return null;\n }\n index += 3;\n\n // sequence element 1: octet string, up to 32 bytes\n if (length < index + 2 || privateKey[index] !== 0x04 || privateKey[index + 1] > 0x20 || length < index + 2 + privateKey[index + 1]) {\n return null;\n }\n\n return privateKey.slice(index + 2, index + 2 + privateKey[index + 1]);\n};\n\nexports.signatureImportLax = function (signature) {\n var r = Buffer.alloc(32, 0);\n var s = Buffer.alloc(32, 0);\n\n var length = signature.length;\n var index = 0;\n\n // sequence tag byte\n if (signature[index++] !== 0x30) {\n return null;\n }\n\n // sequence length byte\n var lenbyte = signature[index++];\n if (lenbyte & 0x80) {\n index += lenbyte - 0x80;\n if (index > length) {\n return null;\n }\n }\n\n // sequence tag byte for r\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for r\n var rlen = signature[index++];\n if (rlen & 0x80) {\n lenbyte = rlen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (rlen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n rlen = (rlen << 8) + signature[index];\n }\n }\n if (rlen > length - index) {\n return null;\n }\n var rindex = index;\n index += rlen;\n\n // sequence tag byte for s\n if (signature[index++] !== 0x02) {\n return null;\n }\n\n // length for s\n var slen = signature[index++];\n if (slen & 0x80) {\n lenbyte = slen - 0x80;\n if (index + lenbyte > length) {\n return null;\n }\n for (; lenbyte > 0 && signature[index] === 0x00; index += 1, lenbyte -= 1) {}\n for (slen = 0; lenbyte > 0; index += 1, lenbyte -= 1) {\n slen = (slen << 8) + signature[index];\n }\n }\n if (slen > length - index) {\n return null;\n }\n var sindex = index;\n index += slen;\n\n // ignore leading zeros in r\n for (; rlen > 0 && signature[rindex] === 0x00; rlen -= 1, rindex += 1) {}\n // copy r value\n if (rlen > 32) {\n return null;\n }\n var rvalue = signature.slice(rindex, rindex + rlen);\n rvalue.copy(r, 32 - rvalue.length);\n\n // ignore leading zeros in s\n for (; slen > 0 && signature[sindex] === 0x00; slen -= 1, sindex += 1) {}\n // copy s value\n if (slen > 32) {\n return null;\n }\n var svalue = signature.slice(sindex, sindex + slen);\n svalue.copy(s, 32 - svalue.length);\n\n return { r: r, s: s };\n};","'use strict';\n\n// This file is imported from secp256k1 v3\n// https://github.com/cryptocoinjs/secp256k1-node/blob/master/LICENSE\n\nvar BN = require('bn.js');\nvar EC = require('elliptic').ec;\n\nvar ec = new EC('secp256k1');\nvar ecparams = ec.curve;\n\nexports.privateKeyExport = function (privateKey, compressed) {\n var d = new BN(privateKey);\n if (d.ucmp(ecparams.n) >= 0) {\n throw new Error('couldn\\'t export to DER format');\n }\n\n var point = ec.g.mul(d);\n return toPublicKey(point.getX(), point.getY(), compressed);\n};\n\nexports.privateKeyModInverse = function (privateKey) {\n var bn = new BN(privateKey);\n if (bn.ucmp(ecparams.n) >= 0 || bn.isZero()) {\n throw new Error('private key range is invalid');\n }\n\n return bn.invm(ecparams.n).toArrayLike(Buffer, 'be', 32);\n};\n\nexports.signatureImport = function (sigObj) {\n var r = new BN(sigObj.r);\n if (r.ucmp(ecparams.n) >= 0) {\n r = new BN(0);\n }\n\n var s = new BN(sigObj.s);\n if (s.ucmp(ecparams.n) >= 0) {\n s = new BN(0);\n }\n\n return Buffer.concat([r.toArrayLike(Buffer, 'be', 32), s.toArrayLike(Buffer, 'be', 32)]);\n};\n\nexports.ecdhUnsafe = function (publicKey, privateKey, compressed) {\n var point = ec.keyFromPublic(publicKey);\n\n var scalar = new BN(privateKey);\n if (scalar.ucmp(ecparams.n) >= 0 || scalar.isZero()) {\n throw new Error('scalar was invalid (zero or overflow)');\n }\n\n var shared = point.pub.mul(scalar);\n return toPublicKey(shared.getX(), shared.getY(), compressed);\n};\n\nvar toPublicKey = function toPublicKey(x, y, compressed) {\n var publicKey = void 0;\n\n if (compressed) {\n publicKey = Buffer.alloc(33);\n publicKey[0] = y.isOdd() ? 0x03 : 0x02;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n } else {\n publicKey = Buffer.alloc(65);\n publicKey[0] = 0x04;\n x.toArrayLike(Buffer, 'be', 32).copy(publicKey, 1);\n y.toArrayLike(Buffer, 'be', 32).copy(publicKey, 33);\n }\n\n return publicKey;\n};","import assert from 'assert'\nimport { BN, rlp } from './externals'\nimport {\n privateKeyVerify,\n publicKeyCreate,\n publicKeyVerify,\n publicKeyConvert,\n} from 'ethereum-cryptography/secp256k1'\nimport { stripHexPrefix } from './internal'\nimport { KECCAK256_RLP, KECCAK256_NULL } from './constants'\nimport { zeros, bufferToHex, toBuffer } from './bytes'\nimport { keccak, keccak256, keccakFromString, rlphash } from './hash'\nimport { assertIsString, assertIsHexString, assertIsBuffer } from './helpers'\nimport { BNLike, BufferLike, bnToUnpaddedBuffer, toType, TypeOutput } from './types'\n\nexport interface AccountData {\n nonce?: BNLike\n balance?: BNLike\n stateRoot?: BufferLike\n codeHash?: BufferLike\n}\n\nexport class Account {\n nonce: BN\n balance: BN\n stateRoot: Buffer\n codeHash: Buffer\n\n static fromAccountData(accountData: AccountData) {\n const { nonce, balance, stateRoot, codeHash } = accountData\n\n return new Account(\n nonce ? new BN(toBuffer(nonce)) : undefined,\n balance ? new BN(toBuffer(balance)) : undefined,\n stateRoot ? toBuffer(stateRoot) : undefined,\n codeHash ? toBuffer(codeHash) : undefined\n )\n }\n\n public static fromRlpSerializedAccount(serialized: Buffer) {\n const values = rlp.decode(serialized)\n\n if (!Array.isArray(values)) {\n throw new Error('Invalid serialized account input. Must be array')\n }\n\n return this.fromValuesArray(values)\n }\n\n public static fromValuesArray(values: Buffer[]) {\n const [nonce, balance, stateRoot, codeHash] = values\n\n return new Account(new BN(nonce), new BN(balance), stateRoot, codeHash)\n }\n\n /**\n * This constructor assigns and validates the values.\n * Use the static factory methods to assist in creating an Account from varying data types.\n */\n constructor(\n nonce = new BN(0),\n balance = new BN(0),\n stateRoot = KECCAK256_RLP,\n codeHash = KECCAK256_NULL\n ) {\n this.nonce = nonce\n this.balance = balance\n this.stateRoot = stateRoot\n this.codeHash = codeHash\n\n this._validate()\n }\n\n private _validate() {\n if (this.nonce.lt(new BN(0))) {\n throw new Error('nonce must be greater than zero')\n }\n if (this.balance.lt(new BN(0))) {\n throw new Error('balance must be greater than zero')\n }\n if (this.stateRoot.length !== 32) {\n throw new Error('stateRoot must have a length of 32')\n }\n if (this.codeHash.length !== 32) {\n throw new Error('codeHash must have a length of 32')\n }\n }\n\n /**\n * Returns a Buffer Array of the raw Buffers for the account, in order.\n */\n raw(): Buffer[] {\n return [\n bnToUnpaddedBuffer(this.nonce),\n bnToUnpaddedBuffer(this.balance),\n this.stateRoot,\n this.codeHash,\n ]\n }\n\n /**\n * Returns the RLP serialization of the account as a `Buffer`.\n */\n serialize(): Buffer {\n return rlp.encode(this.raw())\n }\n\n /**\n * Returns a `Boolean` determining if the account is a contract.\n */\n isContract(): boolean {\n return !this.codeHash.equals(KECCAK256_NULL)\n }\n\n /**\n * Returns a `Boolean` determining if the account is empty complying to the definition of\n * account emptiness in [EIP-161](https://eips.ethereum.org/EIPS/eip-161):\n * \"An account is considered empty when it has no code and zero nonce and zero balance.\"\n */\n isEmpty(): boolean {\n return this.balance.isZero() && this.nonce.isZero() && this.codeHash.equals(KECCAK256_NULL)\n }\n}\n\n/**\n * Checks if the address is a valid. Accepts checksummed addresses too.\n */\nexport const isValidAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n return /^0x[0-9a-fA-F]{40}$/.test(hexAddress)\n}\n\n/**\n * Returns a checksummed address.\n *\n * If an eip1191ChainId is provided, the chainId will be included in the checksum calculation. This\n * has the effect of checksummed addresses for one chain having invalid checksums for others.\n * For more details see [EIP-1191](https://eips.ethereum.org/EIPS/eip-1191).\n *\n * WARNING: Checksums with and without the chainId will differ and the EIP-1191 checksum is not\n * backwards compatible to the original widely adopted checksum format standard introduced in\n * [EIP-55](https://eips.ethereum.org/EIPS/eip-55), so this will break in existing applications.\n * Usage of this EIP is therefore discouraged unless you have a very targeted use case.\n */\nexport const toChecksumAddress = function (hexAddress: string, eip1191ChainId?: BNLike): string {\n assertIsHexString(hexAddress)\n const address = stripHexPrefix(hexAddress).toLowerCase()\n\n let prefix = ''\n if (eip1191ChainId) {\n const chainId = toType(eip1191ChainId, TypeOutput.BN)\n prefix = chainId.toString() + '0x'\n }\n\n const hash = keccakFromString(prefix + address).toString('hex')\n let ret = '0x'\n\n for (let i = 0; i < address.length; i++) {\n if (parseInt(hash[i], 16) >= 8) {\n ret += address[i].toUpperCase()\n } else {\n ret += address[i]\n }\n }\n\n return ret\n}\n\n/**\n * Checks if the address is a valid checksummed address.\n *\n * See toChecksumAddress' documentation for details about the eip1191ChainId parameter.\n */\nexport const isValidChecksumAddress = function (\n hexAddress: string,\n eip1191ChainId?: BNLike\n): boolean {\n return isValidAddress(hexAddress) && toChecksumAddress(hexAddress, eip1191ChainId) === hexAddress\n}\n\n/**\n * Generates an address of a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\nexport const generateAddress = function (from: Buffer, nonce: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(nonce)\n const nonceBN = new BN(nonce)\n\n if (nonceBN.isZero()) {\n // in RLP we want to encode null in the case of zero nonce\n // read the RLP documentation for an answer if you dare\n return rlphash([from, null]).slice(-20)\n }\n\n // Only take the lower 160bits of the hash\n return rlphash([from, Buffer.from(nonceBN.toArray())]).slice(-20)\n}\n\n/**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\nexport const generateAddress2 = function (from: Buffer, salt: Buffer, initCode: Buffer): Buffer {\n assertIsBuffer(from)\n assertIsBuffer(salt)\n assertIsBuffer(initCode)\n\n assert(from.length === 20)\n assert(salt.length === 32)\n\n const address = keccak256(\n Buffer.concat([Buffer.from('ff', 'hex'), from, salt, keccak256(initCode)])\n )\n\n return address.slice(-20)\n}\n\n/**\n * Checks if the private key satisfies the rules of the curve secp256k1.\n */\nexport const isValidPrivate = function (privateKey: Buffer): boolean {\n return privateKeyVerify(privateKey)\n}\n\n/**\n * Checks if the public key satisfies the rules of the curve secp256k1\n * and the requirements of Ethereum.\n * @param publicKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const isValidPublic = function (publicKey: Buffer, sanitize: boolean = false): boolean {\n assertIsBuffer(publicKey)\n if (publicKey.length === 64) {\n // Convert to SEC1 for secp256k1\n return publicKeyVerify(Buffer.concat([Buffer.from([4]), publicKey]))\n }\n\n if (!sanitize) {\n return false\n }\n\n return publicKeyVerify(publicKey)\n}\n\n/**\n * Returns the ethereum address of a given public key.\n * Accepts \"Ethereum public keys\" and SEC1 encoded keys.\n * @param pubKey The two points of an uncompressed key, unless sanitize is enabled\n * @param sanitize Accept public keys in other formats\n */\nexport const pubToAddress = function (pubKey: Buffer, sanitize: boolean = false): Buffer {\n assertIsBuffer(pubKey)\n if (sanitize && pubKey.length !== 64) {\n pubKey = Buffer.from(publicKeyConvert(pubKey, false).slice(1))\n }\n assert(pubKey.length === 64)\n // Only take the lower 160bits of the hash\n return keccak(pubKey).slice(-20)\n}\nexport const publicToAddress = pubToAddress\n\n/**\n * Returns the ethereum public key of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToPublic = function (privateKey: Buffer): Buffer {\n assertIsBuffer(privateKey)\n // skip the type flag and use the X, Y points\n return Buffer.from(publicKeyCreate(privateKey, false)).slice(1)\n}\n\n/**\n * Returns the ethereum address of a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\nexport const privateToAddress = function (privateKey: Buffer): Buffer {\n return publicToAddress(privateToPublic(privateKey))\n}\n\n/**\n * Converts a public key to the Ethereum format.\n */\nexport const importPublic = function (publicKey: Buffer): Buffer {\n assertIsBuffer(publicKey)\n if (publicKey.length !== 64) {\n publicKey = Buffer.from(publicKeyConvert(publicKey, false).slice(1))\n }\n return publicKey\n}\n\n/**\n * Returns the zero address.\n */\nexport const zeroAddress = function (): string {\n const addressLength = 20\n const addr = zeros(addressLength)\n return bufferToHex(addr)\n}\n\n/**\n * Checks if a given address is the zero address.\n */\nexport const isZeroAddress = function (hexAddress: string): boolean {\n try {\n assertIsString(hexAddress)\n } catch (e: any) {\n return false\n }\n\n const zeroAddr = zeroAddress()\n return zeroAddr === hexAddress\n}\n","import assert from 'assert'\nimport { BN } from './externals'\nimport { toBuffer, zeros } from './bytes'\nimport {\n isValidAddress,\n pubToAddress,\n privateToAddress,\n generateAddress,\n generateAddress2,\n} from './account'\n\nexport class Address {\n public readonly buf: Buffer\n\n constructor(buf: Buffer) {\n assert(buf.length === 20, 'Invalid address length')\n this.buf = buf\n }\n\n /**\n * Returns the zero address.\n */\n static zero(): Address {\n return new Address(zeros(20))\n }\n\n /**\n * Returns an Address object from a hex-encoded string.\n * @param str - Hex-encoded address\n */\n static fromString(str: string): Address {\n assert(isValidAddress(str), 'Invalid address')\n return new Address(toBuffer(str))\n }\n\n /**\n * Returns an address for a given public key.\n * @param pubKey The two points of an uncompressed key\n */\n static fromPublicKey(pubKey: Buffer): Address {\n assert(Buffer.isBuffer(pubKey), 'Public key should be Buffer')\n const buf = pubToAddress(pubKey)\n return new Address(buf)\n }\n\n /**\n * Returns an address for a given private key.\n * @param privateKey A private key must be 256 bits wide\n */\n static fromPrivateKey(privateKey: Buffer): Address {\n assert(Buffer.isBuffer(privateKey), 'Private key should be Buffer')\n const buf = privateToAddress(privateKey)\n return new Address(buf)\n }\n\n /**\n * Generates an address for a newly created contract.\n * @param from The address which is creating this new address\n * @param nonce The nonce of the from account\n */\n static generate(from: Address, nonce: BN): Address {\n assert(BN.isBN(nonce))\n return new Address(generateAddress(from.buf, nonce.toArrayLike(Buffer)))\n }\n\n /**\n * Generates an address for a contract created using CREATE2.\n * @param from The address which is creating this new address\n * @param salt A salt\n * @param initCode The init code of the contract being created\n */\n static generate2(from: Address, salt: Buffer, initCode: Buffer): Address {\n assert(Buffer.isBuffer(salt))\n assert(Buffer.isBuffer(initCode))\n return new Address(generateAddress2(from.buf, salt, initCode))\n }\n\n /**\n * Is address equal to another.\n */\n equals(address: Address): boolean {\n return this.buf.equals(address.buf)\n }\n\n /**\n * Is address zero.\n */\n isZero(): boolean {\n return this.equals(Address.zero())\n }\n\n /**\n * True if address is in the address range defined\n * by EIP-1352\n */\n isPrecompileOrSystemAddress(): boolean {\n const addressBN = new BN(this.buf)\n const rangeMin = new BN(0)\n const rangeMax = new BN('ffff', 'hex')\n\n return addressBN.gte(rangeMin) && addressBN.lte(rangeMax)\n }\n\n /**\n * Returns hex encoding of address.\n */\n toString(): string {\n return '0x' + this.buf.toString('hex')\n }\n\n /**\n * Returns Buffer representation of address.\n */\n toBuffer(): Buffer {\n return Buffer.from(this.buf)\n }\n}\n","import { BN } from './externals'\nimport { stripHexPrefix, padToEven, isHexString, isHexPrefixed } from './internal'\nimport {\n PrefixedHexString,\n TransformableToArray,\n TransformableToBuffer,\n NestedBufferArray,\n NestedUint8Array,\n} from './types'\nimport { assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nexport const intToHex = function (i: number) {\n if (!Number.isSafeInteger(i) || i < 0) {\n throw new Error(`Received an invalid integer type: ${i}`)\n }\n return `0x${i.toString(16)}`\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nexport const intToBuffer = function (i: number) {\n const hex = intToHex(i)\n return Buffer.from(padToEven(hex.slice(2)), 'hex')\n}\n\n/**\n * Returns a buffer filled with 0s.\n * @param bytes the number of bytes the buffer should be\n */\nexport const zeros = function (bytes: number): Buffer {\n return Buffer.allocUnsafe(bytes).fill(0)\n}\n\n/**\n * Pads a `Buffer` with zeros till it has `length` bytes.\n * Truncates the beginning or end of input if its length exceeds `length`.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @param right whether to start padding form the left or right\n * @return (Buffer)\n */\nconst setLength = function (msg: Buffer, length: number, right: boolean) {\n const buf = zeros(length)\n if (right) {\n if (msg.length < length) {\n msg.copy(buf)\n return buf\n }\n return msg.slice(0, length)\n } else {\n if (msg.length < length) {\n msg.copy(buf, length - msg.length)\n return buf\n }\n return msg.slice(-length)\n }\n}\n\n/**\n * Left Pads a `Buffer` with leading zeros till it has `length` bytes.\n * Or it truncates the beginning if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthLeft = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, false)\n}\n\n/**\n * Right Pads a `Buffer` with trailing zeros till it has `length` bytes.\n * it truncates the end if it exceeds.\n * @param msg the value to pad (Buffer)\n * @param length the number of bytes the output should be\n * @return (Buffer)\n */\nexport const setLengthRight = function (msg: Buffer, length: number) {\n assertIsBuffer(msg)\n return setLength(msg, length, true)\n}\n\n/**\n * Trims leading zeros from a `Buffer`, `String` or `Number[]`.\n * @param a (Buffer|Array|String)\n * @return (Buffer|Array|String)\n */\nconst stripZeros = function (a: any): Buffer | number[] | string {\n let first = a[0]\n while (a.length > 0 && first.toString() === '0') {\n a = a.slice(1)\n first = a[0]\n }\n return a\n}\n\n/**\n * Trims leading zeros from a `Buffer`.\n * @param a (Buffer)\n * @return (Buffer)\n */\nexport const unpadBuffer = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return stripZeros(a) as Buffer\n}\n\n/**\n * Trims leading zeros from an `Array` (of numbers).\n * @param a (number[])\n * @return (number[])\n */\nexport const unpadArray = function (a: number[]): number[] {\n assertIsArray(a)\n return stripZeros(a) as number[]\n}\n\n/**\n * Trims leading zeros from a hex-prefixed `String`.\n * @param a (String)\n * @return (String)\n */\nexport const unpadHexString = function (a: string): string {\n assertIsHexString(a)\n a = stripHexPrefix(a)\n return stripZeros(a) as string\n}\n\nexport type ToBufferInputTypes =\n | PrefixedHexString\n | number\n | BN\n | Buffer\n | Uint8Array\n | number[]\n | TransformableToArray\n | TransformableToBuffer\n | null\n | undefined\n\n/**\n * Attempts to turn a value into a `Buffer`.\n * Inputs supported: `Buffer`, `String` (hex-prefixed), `Number`, null/undefined, `BN` and other objects\n * with a `toArray()` or `toBuffer()` method.\n * @param v the value\n */\nexport const toBuffer = function (v: ToBufferInputTypes): Buffer {\n if (v === null || v === undefined) {\n return Buffer.allocUnsafe(0)\n }\n\n if (Buffer.isBuffer(v)) {\n return Buffer.from(v)\n }\n\n if (Array.isArray(v) || v instanceof Uint8Array) {\n return Buffer.from(v as Uint8Array)\n }\n\n if (typeof v === 'string') {\n if (!isHexString(v)) {\n throw new Error(\n `Cannot convert string to buffer. toBuffer only supports 0x-prefixed hex strings and this string was given: ${v}`\n )\n }\n return Buffer.from(padToEven(stripHexPrefix(v)), 'hex')\n }\n\n if (typeof v === 'number') {\n return intToBuffer(v)\n }\n\n if (BN.isBN(v)) {\n if (v.isNeg()) {\n throw new Error(`Cannot convert negative BN to buffer. Given: ${v}`)\n }\n return v.toArrayLike(Buffer)\n }\n\n if (v.toArray) {\n // converts a BN to a Buffer\n return Buffer.from(v.toArray())\n }\n\n if (v.toBuffer) {\n return Buffer.from(v.toBuffer())\n }\n\n throw new Error('invalid type')\n}\n\n/**\n * Converts a `Buffer` to a `Number`.\n * @param buf `Buffer` object to convert\n * @throws If the input number exceeds 53 bits.\n */\nexport const bufferToInt = function (buf: Buffer): number {\n return new BN(toBuffer(buf)).toNumber()\n}\n\n/**\n * Converts a `Buffer` into a `0x`-prefixed hex `String`.\n * @param buf `Buffer` object to convert\n */\nexport const bufferToHex = function (buf: Buffer): string {\n buf = toBuffer(buf)\n return '0x' + buf.toString('hex')\n}\n\n/**\n * Interprets a `Buffer` as a signed integer and returns a `BN`. Assumes 256-bit numbers.\n * @param num Signed integer value\n */\nexport const fromSigned = function (num: Buffer): BN {\n return new BN(num).fromTwos(256)\n}\n\n/**\n * Converts a `BN` to an unsigned integer and returns it as a `Buffer`. Assumes 256-bit numbers.\n * @param num\n */\nexport const toUnsigned = function (num: BN): Buffer {\n return Buffer.from(num.toTwos(256).toArray())\n}\n\n/**\n * Adds \"0x\" to a given `String` if it does not already start with \"0x\".\n */\nexport const addHexPrefix = function (str: string): string {\n if (typeof str !== 'string') {\n return str\n }\n\n return isHexPrefixed(str) ? str : '0x' + str\n}\n\n/**\n * Returns the utf8 string representation from a hex string.\n *\n * Examples:\n *\n * Input 1: '657468657265756d000000000000000000000000000000000000000000000000'\n * Input 2: '657468657265756d'\n * Input 3: '000000000000000000000000000000000000000000000000657468657265756d'\n *\n * Output (all 3 input variants): 'ethereum'\n *\n * Note that this method is not intended to be used with hex strings\n * representing quantities in both big endian or little endian notation.\n *\n * @param string Hex string, should be `0x` prefixed\n * @return Utf8 string\n */\nexport const toUtf8 = function (hex: string): string {\n const zerosRegexp = /^(00)+|(00)+$/g\n hex = stripHexPrefix(hex)\n if (hex.length % 2 !== 0) {\n throw new Error('Invalid non-even hex string input for toUtf8() provided')\n }\n const bufferVal = Buffer.from(hex.replace(zerosRegexp, ''), 'hex')\n\n return bufferVal.toString('utf8')\n}\n\n/**\n * Converts a `Buffer` or `Array` to JSON.\n * @param ba (Buffer|Array)\n * @return (Array|String|null)\n */\nexport const baToJSON = function (ba: any): any {\n if (Buffer.isBuffer(ba)) {\n return `0x${ba.toString('hex')}`\n } else if (ba instanceof Array) {\n const array = []\n for (let i = 0; i < ba.length; i++) {\n array.push(baToJSON(ba[i]))\n }\n return array\n }\n}\n\n/**\n * Checks provided Buffers for leading zeroes and throws if found.\n *\n * Examples:\n *\n * Valid values: 0x1, 0x, 0x01, 0x1234\n * Invalid values: 0x0, 0x00, 0x001, 0x0001\n *\n * Note: This method is useful for validating that RLP encoded integers comply with the rule that all\n * integer values encoded to RLP must be in the most compact form and contain no leading zero bytes\n * @param values An object containing string keys and Buffer values\n * @throws if any provided value is found to have leading zero bytes\n */\nexport const validateNoLeadingZeroes = function (values: { [key: string]: Buffer | undefined }) {\n for (const [k, v] of Object.entries(values)) {\n if (v !== undefined && v.length > 0 && v[0] === 0) {\n throw new Error(`${k} cannot have leading zeroes, received: ${v.toString('hex')}`)\n }\n }\n}\n\n/**\n * Converts a {@link Uint8Array} or {@link NestedUint8Array} to {@link Buffer} or {@link NestedBufferArray}\n */\nexport function arrToBufArr(arr: Uint8Array): Buffer\nexport function arrToBufArr(arr: NestedUint8Array): NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray\nexport function arrToBufArr(arr: Uint8Array | NestedUint8Array): Buffer | NestedBufferArray {\n if (!Array.isArray(arr)) {\n return Buffer.from(arr)\n }\n return arr.map((a) => arrToBufArr(a))\n}\n\n/**\n * Converts a {@link Buffer} or {@link NestedBufferArray} to {@link Uint8Array} or {@link NestedUint8Array}\n */\nexport function bufArrToArr(arr: Buffer): Uint8Array\nexport function bufArrToArr(arr: NestedBufferArray): NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array\nexport function bufArrToArr(arr: Buffer | NestedBufferArray): Uint8Array | NestedUint8Array {\n if (!Array.isArray(arr)) {\n return Uint8Array.from(arr ?? [])\n }\n return arr.map((a) => bufArrToArr(a))\n}\n","import { Buffer } from 'buffer'\nimport { BN } from './externals'\n\n/**\n * 2^64-1\n */\nexport const MAX_UINT64 = new BN('ffffffffffffffff', 16)\n\n/**\n * The max integer that the evm can handle (2^256-1)\n */\nexport const MAX_INTEGER = new BN(\n 'ffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff',\n 16\n)\n\n/**\n * 2^256\n */\nexport const TWO_POW256 = new BN(\n '10000000000000000000000000000000000000000000000000000000000000000',\n 16\n)\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL_S = 'c5d2460186f7233c927e7db2dcc703c0e500b653ca82273b7bfad8045d85a470'\n\n/**\n * Keccak-256 hash of null\n */\nexport const KECCAK256_NULL = Buffer.from(KECCAK256_NULL_S, 'hex')\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY_S =\n '1dcc4de8dec75d7aab85b567b6ccd41ad312451b948a7413f0a142fd40d49347'\n\n/**\n * Keccak-256 of an RLP of an empty array\n */\nexport const KECCAK256_RLP_ARRAY = Buffer.from(KECCAK256_RLP_ARRAY_S, 'hex')\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP_S = '56e81f171bcc55a6ff8345e692c0f86e5b48e01b996cadc001622fb5e363b421'\n\n/**\n * Keccak-256 hash of the RLP of null\n */\nexport const KECCAK256_RLP = Buffer.from(KECCAK256_RLP_S, 'hex')\n","/**\n * Re-exports commonly used modules:\n * * Exports [`BN`](https://github.com/indutny/bn.js), [`rlp`](https://github.com/ethereumjs/rlp).\n * @packageDocumentation\n */\n\nimport BN from 'bn.js'\nimport * as rlp from 'rlp'\n\n/**\n * [`BN`](https://github.com/indutny/bn.js)\n */\nexport { BN }\n\n/**\n * [`rlp`](https://github.com/ethereumjs/rlp)\n */\nexport { rlp }\n","import { keccak224, keccak384, keccak256 as k256, keccak512 } from 'ethereum-cryptography/keccak'\nconst createHash = require('create-hash')\nimport { rlp } from './externals'\nimport { toBuffer, setLengthLeft } from './bytes'\nimport { assertIsString, assertIsBuffer, assertIsArray, assertIsHexString } from './helpers'\n\n/**\n * Creates Keccak hash of a Buffer input\n * @param a The input data (Buffer)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccak = function (a: Buffer, bits: number = 256): Buffer {\n assertIsBuffer(a)\n switch (bits) {\n case 224: {\n return keccak224(a)\n }\n case 256: {\n return k256(a)\n }\n case 384: {\n return keccak384(a)\n }\n case 512: {\n return keccak512(a)\n }\n default: {\n throw new Error(`Invald algorithm: keccak${bits}`)\n }\n }\n}\n\n/**\n * Creates Keccak-256 hash of the input, alias for keccak(a, 256).\n * @param a The input data (Buffer)\n */\nexport const keccak256 = function (a: Buffer): Buffer {\n return keccak(a)\n}\n\n/**\n * Creates Keccak hash of a utf-8 string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromString = function (a: string, bits: number = 256) {\n assertIsString(a)\n const buf = Buffer.from(a, 'utf8')\n return keccak(buf, bits)\n}\n\n/**\n * Creates Keccak hash of an 0x-prefixed string input\n * @param a The input data (String)\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromHexString = function (a: string, bits: number = 256) {\n assertIsHexString(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates Keccak hash of a number array input\n * @param a The input data (number[])\n * @param bits (number = 256) The Keccak width\n */\nexport const keccakFromArray = function (a: number[], bits: number = 256) {\n assertIsArray(a)\n return keccak(toBuffer(a), bits)\n}\n\n/**\n * Creates SHA256 hash of an input.\n * @param a The input data (Buffer|Array|String)\n */\nconst _sha256 = function (a: any): Buffer {\n a = toBuffer(a)\n return createHash('sha256').update(a).digest()\n}\n\n/**\n * Creates SHA256 hash of a Buffer input.\n * @param a The input data (Buffer)\n */\nexport const sha256 = function (a: Buffer): Buffer {\n assertIsBuffer(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a string input.\n * @param a The input data (string)\n */\nexport const sha256FromString = function (a: string): Buffer {\n assertIsString(a)\n return _sha256(a)\n}\n\n/**\n * Creates SHA256 hash of a number[] input.\n * @param a The input data (number[])\n */\nexport const sha256FromArray = function (a: number[]): Buffer {\n assertIsArray(a)\n return _sha256(a)\n}\n\n/**\n * Creates RIPEMD160 hash of the input.\n * @param a The input data (Buffer|Array|String|Number)\n * @param padded Whether it should be padded to 256 bits or not\n */\nconst _ripemd160 = function (a: any, padded: boolean): Buffer {\n a = toBuffer(a)\n const hash = createHash('rmd160').update(a).digest()\n if (padded === true) {\n return setLengthLeft(hash, 32)\n } else {\n return hash\n }\n}\n\n/**\n * Creates RIPEMD160 hash of a Buffer input.\n * @param a The input data (Buffer)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160 = function (a: Buffer, padded: boolean): Buffer {\n assertIsBuffer(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a string input.\n * @param a The input data (String)\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromString = function (a: string, padded: boolean): Buffer {\n assertIsString(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates RIPEMD160 hash of a number[] input.\n * @param a The input data (number[])\n * @param padded Whether it should be padded to 256 bits or not\n */\nexport const ripemd160FromArray = function (a: number[], padded: boolean): Buffer {\n assertIsArray(a)\n return _ripemd160(a, padded)\n}\n\n/**\n * Creates SHA-3 hash of the RLP encoded version of the input.\n * @param a The input data\n */\nexport const rlphash = function (a: rlp.Input): Buffer {\n return keccak(rlp.encode(a))\n}\n","import { isHexString } from './internal'\n\n/**\n * Throws if a string is not hex prefixed\n * @param {string} input string to check hex prefix of\n */\nexport const assertIsHexString = function (input: string): void {\n if (!isHexString(input)) {\n const msg = `This method only supports 0x-prefixed hex strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a buffer\n * @param {Buffer} input value to check\n */\nexport const assertIsBuffer = function (input: Buffer): void {\n if (!Buffer.isBuffer(input)) {\n const msg = `This method only supports Buffer but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not an array\n * @param {number[]} input value to check\n */\nexport const assertIsArray = function (input: number[]): void {\n if (!Array.isArray(input)) {\n const msg = `This method only supports number arrays but input was: ${input}`\n throw new Error(msg)\n }\n}\n\n/**\n * Throws if input is not a string\n * @param {string} input value to check\n */\nexport const assertIsString = function (input: string): void {\n if (typeof input !== 'string') {\n const msg = `This method only supports strings but input was: ${input}`\n throw new Error(msg)\n }\n}\n","/**\n * Constants\n */\nexport * from './constants'\n\n/**\n * Account class and helper functions\n */\nexport * from './account'\n\n/**\n * Address type\n */\nexport * from './address'\n\n/**\n * Hash functions\n */\nexport * from './hash'\n\n/**\n * ECDSA signature\n */\nexport * from './signature'\n\n/**\n * Utilities for manipulating Buffers, byte arrays, etc.\n */\nexport * from './bytes'\n\n/**\n * Function for definining properties on an object\n */\nexport * from './object'\n\n/**\n * External exports (BN, rlp)\n */\nexport * from './externals'\n\n/**\n * Helpful TypeScript types\n */\nexport * from './types'\n\n/**\n * Export ethjs-util methods\n */\nexport {\n isHexPrefixed,\n stripHexPrefix,\n padToEven,\n getBinarySize,\n arrayContainsArray,\n toAscii,\n fromUtf8,\n fromAscii,\n getKeys,\n isHexString,\n} from './internal'\n","/*\nThe MIT License\n\nCopyright (c) 2016 Nick Dodson. nickdodson.com\n\nPermission is hereby granted, free of charge, to any person obtaining a copy\nof this software and associated documentation files (the \"Software\"), to deal\nin the Software without restriction, including without limitation the rights\nto use, copy, modify, merge, publish, distribute, sublicense, and/or sell\ncopies of the Software, and to permit persons to whom the Software is\nfurnished to do so, subject to the following conditions:\n\nThe above copyright notice and this permission notice shall be included in\nall copies or substantial portions of the Software.\n\nTHE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR\nIMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,\nFITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE\nAUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER\nLIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,\nOUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN\nTHE SOFTWARE\n */\n\n/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param str the string input value\n * @return a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nexport function isHexPrefixed(str: string): boolean {\n if (typeof str !== 'string') {\n throw new Error(`[isHexPrefixed] input must be type 'string', received type ${typeof str}`)\n }\n\n return str[0] === '0' && str[1] === 'x'\n}\n\n/**\n * Removes '0x' from a given `String` if present\n * @param str the string value\n * @returns the string without 0x prefix\n */\nexport const stripHexPrefix = (str: string): string => {\n if (typeof str !== 'string')\n throw new Error(`[stripHexPrefix] input must be type 'string', received ${typeof str}`)\n\n return isHexPrefixed(str) ? str.slice(2) : str\n}\n\n/**\n * Pads a `String` to have an even length\n * @param value\n * @return output\n */\nexport function padToEven(value: string): string {\n let a = value\n\n if (typeof a !== 'string') {\n throw new Error(`[padToEven] value must be type 'string', received ${typeof a}`)\n }\n\n if (a.length % 2) a = `0${a}`\n\n return a\n}\n\n/**\n * Get the binary size of a string\n * @param str\n * @returns the number of bytes contained within the string\n */\nexport function getBinarySize(str: string) {\n if (typeof str !== 'string') {\n throw new Error(`[getBinarySize] method requires input type 'string', recieved ${typeof str}`)\n }\n\n return Buffer.byteLength(str, 'utf8')\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param superset\n * @param subset\n *\n */\nexport function arrayContainsArray(\n superset: unknown[],\n subset: unknown[],\n some?: boolean\n): boolean {\n if (Array.isArray(superset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'superset' to be an array, got type '${typeof superset}'`\n )\n }\n if (Array.isArray(subset) !== true) {\n throw new Error(\n `[arrayContainsArray] method requires input 'subset' to be an array, got type '${typeof subset}'`\n )\n }\n\n return subset[some ? 'some' : 'every']((value) => superset.indexOf(value) >= 0)\n}\n\n/**\n * Should be called to get ascii from its hex representation\n *\n * @param string in hex\n * @returns ascii string representation of hex value\n */\nexport function toAscii(hex: string): string {\n let str = ''\n let i = 0\n const l = hex.length\n\n if (hex.substring(0, 2) === '0x') i = 2\n\n for (; i < l; i += 2) {\n const code = parseInt(hex.substr(i, 2), 16)\n str += String.fromCharCode(code)\n }\n\n return str\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromUtf8(stringValue: string) {\n const str = Buffer.from(stringValue, 'utf8')\n\n return `0x${padToEven(str.toString('hex')).replace(/^0+|0+$/g, '')}`\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @param string\n * @param optional padding\n * @returns hex representation of input string\n */\nexport function fromAscii(stringValue: string) {\n let hex = ''\n for (let i = 0; i < stringValue.length; i++) {\n const code = stringValue.charCodeAt(i)\n const n = code.toString(16)\n hex += n.length < 2 ? `0${n}` : n\n }\n\n return `0x${hex}`\n}\n\n/**\n * Returns the keys from an array of objects.\n * @example\n * ```js\n * getKeys([{a: '1', b: '2'}, {a: '3', b: '4'}], 'a') => ['1', '3']\n *````\n * @param params\n * @param key\n * @param allowEmpty\n * @returns output just a simple array of output keys\n */\nexport function getKeys(params: Record[], key: string, allowEmpty?: boolean) {\n if (!Array.isArray(params)) {\n throw new Error(`[getKeys] method expects input 'params' to be an array, got ${typeof params}`)\n }\n if (typeof key !== 'string') {\n throw new Error(\n `[getKeys] method expects input 'key' to be type 'string', got ${typeof params}`\n )\n }\n\n const result = []\n\n for (let i = 0; i < params.length; i++) {\n let value = params[i][key]\n if (allowEmpty && !value) {\n value = ''\n } else if (typeof value !== 'string') {\n throw new Error(`invalid abi - expected type 'string', received ${typeof value}`)\n }\n result.push(value)\n }\n\n return result\n}\n\n/**\n * Is the string a hex string.\n *\n * @param value\n * @param length\n * @returns output the string is a hex string\n */\nexport function isHexString(value: string, length?: number): boolean {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) return false\n\n if (length && value.length !== 2 + 2 * length) return false\n\n return true\n}\n","import assert from 'assert'\nimport { stripHexPrefix } from './internal'\nimport { rlp } from './externals'\nimport { toBuffer, baToJSON, unpadBuffer } from './bytes'\n\n/**\n * Defines properties on a `Object`. It make the assumption that underlying data is binary.\n * @param self the `Object` to define properties on\n * @param fields an array fields to define. Fields can contain:\n * * `name` - the name of the properties\n * * `length` - the number of bytes the field can have\n * * `allowLess` - if the field can be less than the length\n * * `allowEmpty`\n * @param data data to be validated against the definitions\n * @deprecated\n */\nexport const defineProperties = function (self: any, fields: any, data?: any) {\n self.raw = []\n self._fields = []\n\n // attach the `toJSON`\n self.toJSON = function (label: boolean = false) {\n if (label) {\n type Dict = { [key: string]: string }\n const obj: Dict = {}\n self._fields.forEach((field: string) => {\n obj[field] = `0x${self[field].toString('hex')}`\n })\n return obj\n }\n return baToJSON(self.raw)\n }\n\n self.serialize = function serialize() {\n return rlp.encode(self.raw)\n }\n\n fields.forEach((field: any, i: number) => {\n self._fields.push(field.name)\n function getter() {\n return self.raw[i]\n }\n function setter(v: any) {\n v = toBuffer(v)\n\n if (v.toString('hex') === '00' && !field.allowZero) {\n v = Buffer.allocUnsafe(0)\n }\n\n if (field.allowLess && field.length) {\n v = unpadBuffer(v)\n assert(\n field.length >= v.length,\n `The field ${field.name} must not have more ${field.length} bytes`\n )\n } else if (!(field.allowZero && v.length === 0) && field.length) {\n assert(\n field.length === v.length,\n `The field ${field.name} must have byte length of ${field.length}`\n )\n }\n\n self.raw[i] = v\n }\n\n Object.defineProperty(self, field.name, {\n enumerable: true,\n configurable: true,\n get: getter,\n set: setter,\n })\n\n if (field.default) {\n self[field.name] = field.default\n }\n\n // attach alias\n if (field.alias) {\n Object.defineProperty(self, field.alias, {\n enumerable: false,\n configurable: true,\n set: setter,\n get: getter,\n })\n }\n })\n\n // if the constuctor is passed data\n if (data) {\n if (typeof data === 'string') {\n data = Buffer.from(stripHexPrefix(data), 'hex')\n }\n\n if (Buffer.isBuffer(data)) {\n data = rlp.decode(data)\n }\n\n if (Array.isArray(data)) {\n if (data.length > self._fields.length) {\n throw new Error('wrong number of fields in data')\n }\n\n // make sure all the items are buffers\n data.forEach((d, i) => {\n self[self._fields[i]] = toBuffer(d)\n })\n } else if (typeof data === 'object') {\n const keys = Object.keys(data)\n fields.forEach((field: any) => {\n if (keys.indexOf(field.name) !== -1) self[field.name] = data[field.name]\n if (keys.indexOf(field.alias) !== -1) self[field.alias] = data[field.alias]\n })\n } else {\n throw new Error('invalid data')\n }\n }\n}\n","import { ecdsaSign, ecdsaRecover, publicKeyConvert } from 'ethereum-cryptography/secp256k1'\nimport { BN } from './externals'\nimport { toBuffer, setLengthLeft, bufferToHex, bufferToInt } from './bytes'\nimport { keccak } from './hash'\nimport { assertIsBuffer } from './helpers'\nimport { BNLike, toType, TypeOutput } from './types'\n\nexport interface ECDSASignature {\n v: number\n r: Buffer\n s: Buffer\n}\n\nexport interface ECDSASignatureBuffer {\n v: Buffer\n r: Buffer\n s: Buffer\n}\n\n/**\n * Returns the ECDSA signature of a message hash.\n */\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId?: number): ECDSASignature\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: BNLike): ECDSASignatureBuffer\nexport function ecsign(msgHash: Buffer, privateKey: Buffer, chainId: any): any {\n const { signature, recid: recovery } = ecdsaSign(msgHash, privateKey)\n\n const r = Buffer.from(signature.slice(0, 32))\n const s = Buffer.from(signature.slice(32, 64))\n\n if (!chainId || typeof chainId === 'number') {\n // return legacy type ECDSASignature (deprecated in favor of ECDSASignatureBuffer to handle large chainIds)\n if (chainId && !Number.isSafeInteger(chainId)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n const v = chainId ? recovery + (chainId * 2 + 35) : recovery + 27\n return { r, s, v }\n }\n\n const chainIdBN = toType(chainId as BNLike, TypeOutput.BN)\n const v = chainIdBN.muln(2).addn(35).addn(recovery).toArrayLike(Buffer)\n return { r, s, v }\n}\n\nfunction calculateSigRecovery(v: BNLike, chainId?: BNLike): BN {\n const vBN = toType(v, TypeOutput.BN)\n if (!chainId) {\n return vBN.subn(27)\n }\n const chainIdBN = toType(chainId, TypeOutput.BN)\n return vBN.sub(chainIdBN.muln(2).addn(35))\n}\n\nfunction isValidSigRecovery(recovery: number | BN): boolean {\n const rec = new BN(recovery)\n return rec.eqn(0) || rec.eqn(1)\n}\n\n/**\n * ECDSA public key recovery from signature.\n * @returns Recovered public key\n */\nexport const ecrecover = function (\n msgHash: Buffer,\n v: BNLike,\n r: Buffer,\n s: Buffer,\n chainId?: BNLike\n): Buffer {\n const signature = Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32)], 64)\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n const senderPubKey = ecdsaRecover(signature, recovery.toNumber(), msgHash)\n return Buffer.from(publicKeyConvert(senderPubKey, false).slice(1))\n}\n\n/**\n * Convert signature parameters into the format of `eth_sign` RPC method.\n * @returns Signature\n */\nexport const toRpcSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n // geth (and the RPC eth_sign method) uses the 65 byte format used by Bitcoin\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(s, 32), toBuffer(v)]))\n}\n\n/**\n * Convert signature parameters into the format of Compact Signature Representation (EIP-2098).\n * @returns Signature\n */\nexport const toCompactSig = function (v: BNLike, r: Buffer, s: Buffer, chainId?: BNLike): string {\n const recovery = calculateSigRecovery(v, chainId)\n if (!isValidSigRecovery(recovery)) {\n throw new Error('Invalid signature v value')\n }\n\n const vn = toType(v, TypeOutput.Number)\n let ss = s\n if ((vn > 28 && vn % 2 === 1) || vn === 1 || vn === 28) {\n ss = Buffer.from(s)\n ss[0] |= 0x80\n }\n\n return bufferToHex(Buffer.concat([setLengthLeft(r, 32), setLengthLeft(ss, 32)]))\n}\n\n/**\n * Convert signature format of the `eth_sign` RPC method to signature parameters\n * NOTE: all because of a bug in geth: https://github.com/ethereum/go-ethereum/issues/2053\n */\nexport const fromRpcSig = function (sig: string): ECDSASignature {\n const buf: Buffer = toBuffer(sig)\n\n let r: Buffer\n let s: Buffer\n let v: number\n if (buf.length >= 65) {\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(64))\n } else if (buf.length === 64) {\n // Compact Signature Representation (https://eips.ethereum.org/EIPS/eip-2098)\n r = buf.slice(0, 32)\n s = buf.slice(32, 64)\n v = bufferToInt(buf.slice(32, 33)) >> 7\n s[0] &= 0x7f\n } else {\n throw new Error('Invalid signature length')\n }\n\n // support both versions of `eth_sign` responses\n if (v < 27) {\n v += 27\n }\n\n return {\n v,\n r,\n s,\n }\n}\n\n/**\n * Validate a ECDSA signature.\n * @param homesteadOrLater Indicates whether this is being used on either the homestead hardfork or a later one\n */\nexport const isValidSignature = function (\n v: BNLike,\n r: Buffer,\n s: Buffer,\n homesteadOrLater: boolean = true,\n chainId?: BNLike\n): boolean {\n const SECP256K1_N_DIV_2 = new BN(\n '7fffffffffffffffffffffffffffffff5d576e7357a4501ddfe92f46681b20a0',\n 16\n )\n const SECP256K1_N = new BN('fffffffffffffffffffffffffffffffebaaedce6af48a03bbfd25e8cd0364141', 16)\n\n if (r.length !== 32 || s.length !== 32) {\n return false\n }\n\n if (!isValidSigRecovery(calculateSigRecovery(v, chainId))) {\n return false\n }\n\n const rBN = new BN(r)\n const sBN = new BN(s)\n\n if (rBN.isZero() || rBN.gt(SECP256K1_N) || sBN.isZero() || sBN.gt(SECP256K1_N)) {\n return false\n }\n\n if (homesteadOrLater && sBN.cmp(SECP256K1_N_DIV_2) === 1) {\n return false\n }\n\n return true\n}\n\n/**\n * Returns the keccak-256 hash of `message`, prefixed with the header used by the `eth_sign` RPC call.\n * The output of this function can be fed into `ecsign` to produce the same signature as the `eth_sign`\n * call for a given `message`, or fed to `ecrecover` along with a signature to recover the public key\n * used to produce the signature.\n */\nexport const hashPersonalMessage = function (message: Buffer): Buffer {\n assertIsBuffer(message)\n const prefix = Buffer.from(`\\u0019Ethereum Signed Message:\\n${message.length}`, 'utf-8')\n return keccak(Buffer.concat([prefix, message]))\n}\n","import { BN } from './externals'\nimport { isHexString } from './internal'\nimport { Address } from './address'\nimport { unpadBuffer, toBuffer, ToBufferInputTypes } from './bytes'\n\n/*\n * A type that represents a BNLike input that can be converted to a BN.\n */\nexport type BNLike = BN | PrefixedHexString | number | Buffer\n\n/*\n * A type that represents a BufferLike input that can be converted to a Buffer.\n */\nexport type BufferLike =\n | Buffer\n | Uint8Array\n | number[]\n | number\n | BN\n | TransformableToBuffer\n | PrefixedHexString\n\n/*\n * A type that represents a `0x`-prefixed hex string.\n */\nexport type PrefixedHexString = string\n\n/**\n * A type that represents an Address-like value.\n * To convert to address, use `new Address(toBuffer(value))`\n */\nexport type AddressLike = Address | Buffer | PrefixedHexString\n\n/*\n * A type that represents an object that has a `toArray()` method.\n */\nexport interface TransformableToArray {\n toArray(): Uint8Array\n toBuffer?(): Buffer\n}\n\n/*\n * A type that represents an object that has a `toBuffer()` method.\n */\nexport interface TransformableToBuffer {\n toBuffer(): Buffer\n toArray?(): Uint8Array\n}\n\nexport type NestedUint8Array = Array\nexport type NestedBufferArray = Array\n\n/**\n * Convert BN to 0x-prefixed hex string.\n */\nexport function bnToHex(value: BN): PrefixedHexString {\n return `0x${value.toString(16)}`\n}\n\n/**\n * Convert value from BN to an unpadded Buffer\n * (useful for RLP transport)\n * @param value value to convert\n */\nexport function bnToUnpaddedBuffer(value: BN): Buffer {\n // Using `bn.toArrayLike(Buffer)` instead of `bn.toBuffer()`\n // for compatibility with browserify and similar tools\n return unpadBuffer(value.toArrayLike(Buffer))\n}\n\n/**\n * Deprecated alias for {@link bnToUnpaddedBuffer}\n * @deprecated\n */\nexport function bnToRlp(value: BN): Buffer {\n return bnToUnpaddedBuffer(value)\n}\n\n/**\n * Type output options\n */\nexport enum TypeOutput {\n Number,\n BN,\n Buffer,\n PrefixedHexString,\n}\n\nexport type TypeOutputReturnType = {\n [TypeOutput.Number]: number\n [TypeOutput.BN]: BN\n [TypeOutput.Buffer]: Buffer\n [TypeOutput.PrefixedHexString]: PrefixedHexString\n}\n\n/**\n * Convert an input to a specified type.\n * Input of null/undefined returns null/undefined regardless of the output type.\n * @param input value to convert\n * @param outputType type to output\n */\nexport function toType(input: null, outputType: T): null\nexport function toType(input: undefined, outputType: T): undefined\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T]\nexport function toType(\n input: ToBufferInputTypes,\n outputType: T\n): TypeOutputReturnType[T] | undefined | null {\n if (input === null) {\n return null\n }\n if (input === undefined) {\n return undefined\n }\n\n if (typeof input === 'string' && !isHexString(input)) {\n throw new Error(`A string must be provided with a 0x-prefix, given: ${input}`)\n } else if (typeof input === 'number' && !Number.isSafeInteger(input)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative input type)'\n )\n }\n\n const output = toBuffer(input)\n\n if (outputType === TypeOutput.Buffer) {\n return output as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.BN) {\n return new BN(output) as TypeOutputReturnType[T]\n } else if (outputType === TypeOutput.Number) {\n const bn = new BN(output)\n const max = new BN(Number.MAX_SAFE_INTEGER.toString())\n if (bn.gt(max)) {\n throw new Error(\n 'The provided number is greater than MAX_SAFE_INTEGER (please use an alternative output type)'\n )\n }\n return bn.toNumber() as TypeOutputReturnType[T]\n } else {\n // outputType === TypeOutput.PrefixedHexString\n return `0x${output.toString('hex')}` as TypeOutputReturnType[T]\n }\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n if (typeof window !== 'undefined' && typeof window.Buffer !== 'undefined') {\n Buffer = window.Buffer;\n } else {\n Buffer = require('buffer').Buffer;\n }\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n this.negative = 1;\n }\n\n if (start < number.length) {\n if (base === 16) {\n this._parseHex(number, start, endian);\n } else {\n this._parseBase(number, base, start);\n if (endian === 'le') {\n this._initArray(this.toArray(), base, endian);\n }\n }\n }\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [number & 0x3ffffff];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [0];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this._strip();\n };\n\n function parseHex4Bits (string, index) {\n var c = string.charCodeAt(index);\n // '0' - '9'\n if (c >= 48 && c <= 57) {\n return c - 48;\n // 'A' - 'F'\n } else if (c >= 65 && c <= 70) {\n return c - 55;\n // 'a' - 'f'\n } else if (c >= 97 && c <= 102) {\n return c - 87;\n } else {\n assert(false, 'Invalid character in ' + string);\n }\n }\n\n function parseHexByte (string, lowerBound, index) {\n var r = parseHex4Bits(string, index);\n if (index - 1 >= lowerBound) {\n r |= parseHex4Bits(string, index - 1) << 4;\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start, endian) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n // 24-bits chunks\n var off = 0;\n var j = 0;\n\n var w;\n if (endian === 'be') {\n for (i = number.length - 1; i >= start; i -= 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n } else {\n var parseLength = number.length - start;\n for (i = parseLength % 2 === 0 ? start + 1 : start; i < number.length; i += 2) {\n w = parseHexByte(number, start, i) << off;\n this.words[j] |= w & 0x3ffffff;\n if (off >= 18) {\n off -= 18;\n j += 1;\n this.words[j] |= w >>> 26;\n } else {\n off += 8;\n }\n }\n }\n\n this._strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var b = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n b = c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n b = c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n b = c;\n }\n assert(c >= 0 && b < mul, 'Invalid character');\n r += b;\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [0];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n this._strip();\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n function move (dest, src) {\n dest.words = src.words;\n dest.length = src.length;\n dest.negative = src.negative;\n dest.red = src.red;\n }\n\n BN.prototype._move = function _move (dest) {\n move(dest, this);\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype._strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n // Check Symbol.for because not everywhere where Symbol defined\n // See https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Symbol#Browser_compatibility\n if (typeof Symbol !== 'undefined' && typeof Symbol.for === 'function') {\n try {\n BN.prototype[Symbol.for('nodejs.util.inspect.custom')] = inspect;\n } catch (e) {\n BN.prototype.inspect = inspect;\n }\n } else {\n BN.prototype.inspect = inspect;\n }\n\n function inspect () {\n return (this.red ? '';\n }\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modrn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16, 2);\n };\n\n if (Buffer) {\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n return this.toArrayLike(Buffer, endian, length);\n };\n }\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n var allocate = function allocate (ArrayType, size) {\n if (ArrayType.allocUnsafe) {\n return ArrayType.allocUnsafe(size);\n }\n return new ArrayType(size);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n this._strip();\n\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n var res = allocate(ArrayType, reqLength);\n var postfix = endian === 'le' ? 'LE' : 'BE';\n this['_toArrayLike' + postfix](res, byteLength);\n return res;\n };\n\n BN.prototype._toArrayLikeLE = function _toArrayLikeLE (res, byteLength) {\n var position = 0;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position++] = word & 0xff;\n if (position < res.length) {\n res[position++] = (word >> 8) & 0xff;\n }\n if (position < res.length) {\n res[position++] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position < res.length) {\n res[position++] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position < res.length) {\n res[position++] = carry;\n\n while (position < res.length) {\n res[position++] = 0;\n }\n }\n };\n\n BN.prototype._toArrayLikeBE = function _toArrayLikeBE (res, byteLength) {\n var position = res.length - 1;\n var carry = 0;\n\n for (var i = 0, shift = 0; i < this.length; i++) {\n var word = (this.words[i] << shift) | carry;\n\n res[position--] = word & 0xff;\n if (position >= 0) {\n res[position--] = (word >> 8) & 0xff;\n }\n if (position >= 0) {\n res[position--] = (word >> 16) & 0xff;\n }\n\n if (shift === 6) {\n if (position >= 0) {\n res[position--] = (word >> 24) & 0xff;\n }\n carry = 0;\n shift = 0;\n } else {\n carry = word >>> 24;\n shift += 2;\n }\n }\n\n if (position >= 0) {\n res[position--] = carry;\n\n while (position >= 0) {\n res[position--] = 0;\n }\n }\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] >>> wbit) & 0x01;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this._strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this._strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this._strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this._strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this._strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this._strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out._strip();\n }\n\n function jumboMulTo (self, num, out) {\n // Temporary disable, see https://github.com/indutny/bn.js/issues/211\n // var fftm = new FFTM();\n // return fftm.mulp(self, num, out);\n return bigMulTo(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out._strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this._strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this._strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) <= num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this._strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this._strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this._strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q._strip();\n }\n a._strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modrn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || (r2 === 1 && cmp === 0)) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modrn = function modrn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return isNegNum ? -acc : acc;\n };\n\n // WARNING: DEPRECATED\n BN.prototype.modn = function modn (num) {\n return this.modrn(num);\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n var isNegNum = num < 0;\n if (isNegNum) num = -num;\n\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n this._strip();\n return isNegNum ? this.ineg() : this;\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this._strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n if (r.strip !== undefined) {\n // r is a BN v4 instance\n r.strip();\n } else {\n // r is a BN v5 instance\n r._strip();\n }\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n\n move(a, a.umod(this.m)._forceRed(this));\n return a;\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1).toRed(this);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar BN = require('bn.js');\nvar numberToBN = require('number-to-bn');\n\nvar zero = new BN(0);\nvar negative1 = new BN(-1);\n\n// complete ethereum unit map\nvar unitMap = {\n 'noether': '0', // eslint-disable-line\n 'wei': '1', // eslint-disable-line\n 'kwei': '1000', // eslint-disable-line\n 'Kwei': '1000', // eslint-disable-line\n 'babbage': '1000', // eslint-disable-line\n 'femtoether': '1000', // eslint-disable-line\n 'mwei': '1000000', // eslint-disable-line\n 'Mwei': '1000000', // eslint-disable-line\n 'lovelace': '1000000', // eslint-disable-line\n 'picoether': '1000000', // eslint-disable-line\n 'gwei': '1000000000', // eslint-disable-line\n 'Gwei': '1000000000', // eslint-disable-line\n 'shannon': '1000000000', // eslint-disable-line\n 'nanoether': '1000000000', // eslint-disable-line\n 'nano': '1000000000', // eslint-disable-line\n 'szabo': '1000000000000', // eslint-disable-line\n 'microether': '1000000000000', // eslint-disable-line\n 'micro': '1000000000000', // eslint-disable-line\n 'finney': '1000000000000000', // eslint-disable-line\n 'milliether': '1000000000000000', // eslint-disable-line\n 'milli': '1000000000000000', // eslint-disable-line\n 'ether': '1000000000000000000', // eslint-disable-line\n 'kether': '1000000000000000000000', // eslint-disable-line\n 'grand': '1000000000000000000000', // eslint-disable-line\n 'mether': '1000000000000000000000000', // eslint-disable-line\n 'gether': '1000000000000000000000000000', // eslint-disable-line\n 'tether': '1000000000000000000000000000000' };\n\n/**\n * Returns value of unit in Wei\n *\n * @method getValueOfUnit\n * @param {String} unit the unit to convert to, default ether\n * @returns {BigNumber} value of the unit (in Wei)\n * @throws error if the unit is not correct:w\n */\nfunction getValueOfUnit(unitInput) {\n var unit = unitInput ? unitInput.toLowerCase() : 'ether';\n var unitValue = unitMap[unit]; // eslint-disable-line\n\n if (typeof unitValue !== 'string') {\n throw new Error('[ethjs-unit] the unit provided ' + unitInput + ' doesn\\'t exists, please use the one of the following units ' + JSON.stringify(unitMap, null, 2));\n }\n\n return new BN(unitValue, 10);\n}\n\nfunction numberToString(arg) {\n if (typeof arg === 'string') {\n if (!arg.match(/^-?[0-9.]+$/)) {\n throw new Error('while converting number to string, invalid number value \\'' + arg + '\\', should be a number matching (^-?[0-9.]+).');\n }\n return arg;\n } else if (typeof arg === 'number') {\n return String(arg);\n } else if (typeof arg === 'object' && arg.toString && (arg.toTwos || arg.dividedToIntegerBy)) {\n if (arg.toPrecision) {\n return String(arg.toPrecision());\n } else {\n // eslint-disable-line\n return arg.toString(10);\n }\n }\n throw new Error('while converting number to string, invalid number value \\'' + arg + '\\' type ' + typeof arg + '.');\n}\n\nfunction fromWei(weiInput, unit, optionsInput) {\n var wei = numberToBN(weiInput); // eslint-disable-line\n var negative = wei.lt(zero); // eslint-disable-line\n var base = getValueOfUnit(unit);\n var baseLength = unitMap[unit].length - 1 || 1;\n var options = optionsInput || {};\n\n if (negative) {\n wei = wei.mul(negative1);\n }\n\n var fraction = wei.mod(base).toString(10); // eslint-disable-line\n\n while (fraction.length < baseLength) {\n fraction = '0' + fraction;\n }\n\n if (!options.pad) {\n fraction = fraction.match(/^([0-9]*[1-9]|0)(0*)/)[1];\n }\n\n var whole = wei.div(base).toString(10); // eslint-disable-line\n\n if (options.commify) {\n whole = whole.replace(/\\B(?=(\\d{3})+(?!\\d))/g, ',');\n }\n\n var value = '' + whole + (fraction == '0' ? '' : '.' + fraction); // eslint-disable-line\n\n if (negative) {\n value = '-' + value;\n }\n\n return value;\n}\n\nfunction toWei(etherInput, unit) {\n var ether = numberToString(etherInput); // eslint-disable-line\n var base = getValueOfUnit(unit);\n var baseLength = unitMap[unit].length - 1 || 1;\n\n // Is it negative?\n var negative = ether.substring(0, 1) === '-'; // eslint-disable-line\n if (negative) {\n ether = ether.substring(1);\n }\n\n if (ether === '.') {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, invalid value');\n }\n\n // Split it into a whole and fractional part\n var comps = ether.split('.'); // eslint-disable-line\n if (comps.length > 2) {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, too many decimal points');\n }\n\n var whole = comps[0],\n fraction = comps[1]; // eslint-disable-line\n\n if (!whole) {\n whole = '0';\n }\n if (!fraction) {\n fraction = '0';\n }\n if (fraction.length > baseLength) {\n throw new Error('[ethjs-unit] while converting number ' + etherInput + ' to wei, too many decimal places');\n }\n\n while (fraction.length < baseLength) {\n fraction += '0';\n }\n\n whole = new BN(whole);\n fraction = new BN(fraction);\n var wei = whole.mul(base).add(fraction); // eslint-disable-line\n\n if (negative) {\n wei = wei.mul(negative1);\n }\n\n return new BN(wei.toString(10), 10);\n}\n\nmodule.exports = {\n unitMap: unitMap,\n numberToString: numberToString,\n getValueOfUnit: getValueOfUnit,\n fromWei: fromWei,\n toWei: toWei\n};","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buf' + 'fer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","'use strict';\n\nvar isHexPrefixed = require('is-hex-prefixed');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Pads a `String` to have an even length\n * @param {String} value\n * @return {String} output\n */\nfunction padToEven(value) {\n var a = value; // eslint-disable-line\n\n if (typeof a !== 'string') {\n throw new Error('[ethjs-util] while padding to even, value must be string, is currently ' + typeof a + ', while padToEven.');\n }\n\n if (a.length % 2) {\n a = '0' + a;\n }\n\n return a;\n}\n\n/**\n * Converts a `Number` into a hex `String`\n * @param {Number} i\n * @return {String}\n */\nfunction intToHex(i) {\n var hex = i.toString(16); // eslint-disable-line\n\n return '0x' + hex;\n}\n\n/**\n * Converts an `Number` to a `Buffer`\n * @param {Number} i\n * @return {Buffer}\n */\nfunction intToBuffer(i) {\n var hex = intToHex(i);\n\n return new Buffer(padToEven(hex.slice(2)), 'hex');\n}\n\n/**\n * Get the binary size of a string\n * @param {String} str\n * @return {Number}\n */\nfunction getBinarySize(str) {\n if (typeof str !== 'string') {\n throw new Error('[ethjs-util] while getting binary size, method getBinarySize requires input \\'str\\' to be type String, got \\'' + typeof str + '\\'.');\n }\n\n return Buffer.byteLength(str, 'utf8');\n}\n\n/**\n * Returns TRUE if the first specified array contains all elements\n * from the second one. FALSE otherwise.\n *\n * @param {array} superset\n * @param {array} subset\n *\n * @returns {boolean}\n */\nfunction arrayContainsArray(superset, subset, some) {\n if (Array.isArray(superset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'superset\\' to be an array got type \\'' + typeof superset + '\\'');\n }\n if (Array.isArray(subset) !== true) {\n throw new Error('[ethjs-util] method arrayContainsArray requires input \\'subset\\' to be an array got type \\'' + typeof subset + '\\'');\n }\n\n return subset[Boolean(some) && 'some' || 'every'](function (value) {\n return superset.indexOf(value) >= 0;\n });\n}\n\n/**\n * Should be called to get utf8 from it's hex representation\n *\n * @method toUtf8\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toUtf8(hex) {\n var bufferValue = new Buffer(padToEven(stripHexPrefix(hex).replace(/^0+|0+$/g, '')), 'hex');\n\n return bufferValue.toString('utf8');\n}\n\n/**\n * Should be called to get ascii from it's hex representation\n *\n * @method toAscii\n * @param {String} string in hex\n * @returns {String} ascii string representation of hex value\n */\nfunction toAscii(hex) {\n var str = ''; // eslint-disable-line\n var i = 0,\n l = hex.length; // eslint-disable-line\n\n if (hex.substring(0, 2) === '0x') {\n i = 2;\n }\n\n for (; i < l; i += 2) {\n var code = parseInt(hex.substr(i, 2), 16);\n str += String.fromCharCode(code);\n }\n\n return str;\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of utf8 string\n *\n * @method fromUtf8\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromUtf8(stringValue) {\n var str = new Buffer(stringValue, 'utf8');\n\n return '0x' + padToEven(str.toString('hex')).replace(/^0+|0+$/g, '');\n}\n\n/**\n * Should be called to get hex representation (prefixed by 0x) of ascii string\n *\n * @method fromAscii\n * @param {String} string\n * @param {Number} optional padding\n * @returns {String} hex representation of input string\n */\nfunction fromAscii(stringValue) {\n var hex = ''; // eslint-disable-line\n for (var i = 0; i < stringValue.length; i++) {\n // eslint-disable-line\n var code = stringValue.charCodeAt(i);\n var n = code.toString(16);\n hex += n.length < 2 ? '0' + n : n;\n }\n\n return '0x' + hex;\n}\n\n/**\n * getKeys([{a: 1, b: 2}, {a: 3, b: 4}], 'a') => [1, 3]\n *\n * @method getKeys get specific key from inner object array of objects\n * @param {String} params\n * @param {String} key\n * @param {Boolean} allowEmpty\n * @returns {Array} output just a simple array of output keys\n */\nfunction getKeys(params, key, allowEmpty) {\n if (!Array.isArray(params)) {\n throw new Error('[ethjs-util] method getKeys expecting type Array as \\'params\\' input, got \\'' + typeof params + '\\'');\n }\n if (typeof key !== 'string') {\n throw new Error('[ethjs-util] method getKeys expecting type String for input \\'key\\' got \\'' + typeof key + '\\'.');\n }\n\n var result = []; // eslint-disable-line\n\n for (var i = 0; i < params.length; i++) {\n // eslint-disable-line\n var value = params[i][key]; // eslint-disable-line\n if (allowEmpty && !value) {\n value = '';\n } else if (typeof value !== 'string') {\n throw new Error('invalid abi');\n }\n result.push(value);\n }\n\n return result;\n}\n\n/**\n * Is the string a hex string.\n *\n * @method check if string is hex string of specific length\n * @param {String} value\n * @param {Number} length\n * @returns {Boolean} output the string is a hex string\n */\nfunction isHexString(value, length) {\n if (typeof value !== 'string' || !value.match(/^0x[0-9A-Fa-f]*$/)) {\n return false;\n }\n\n if (length && value.length !== 2 + 2 * length) {\n return false;\n }\n\n return true;\n}\n\nmodule.exports = {\n arrayContainsArray: arrayContainsArray,\n intToBuffer: intToBuffer,\n getBinarySize: getBinarySize,\n isHexPrefixed: isHexPrefixed,\n stripHexPrefix: stripHexPrefix,\n padToEven: padToEven,\n intToHex: intToHex,\n fromAscii: fromAscii,\n fromUtf8: fromUtf8,\n toAscii: toAscii,\n toUtf8: toUtf8,\n getKeys: getKeys,\n isHexString: isHexString\n};","'use strict';\n\nvar has = Object.prototype.hasOwnProperty\n , prefix = '~';\n\n/**\n * Constructor to create a storage for our `EE` objects.\n * An `Events` instance is a plain object whose properties are event names.\n *\n * @constructor\n * @private\n */\nfunction Events() {}\n\n//\n// We try to not inherit from `Object.prototype`. In some engines creating an\n// instance in this way is faster than calling `Object.create(null)` directly.\n// If `Object.create(null)` is not supported we prefix the event names with a\n// character to make sure that the built-in object properties are not\n// overridden or used as an attack vector.\n//\nif (Object.create) {\n Events.prototype = Object.create(null);\n\n //\n // This hack is needed because the `__proto__` property is still inherited in\n // some old browsers like Android 4, iPhone 5.1, Opera 11 and Safari 5.\n //\n if (!new Events().__proto__) prefix = false;\n}\n\n/**\n * Representation of a single event listener.\n *\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} [once=false] Specify if the listener is a one-time listener.\n * @constructor\n * @private\n */\nfunction EE(fn, context, once) {\n this.fn = fn;\n this.context = context;\n this.once = once || false;\n}\n\n/**\n * Add a listener for a given event.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} context The context to invoke the listener with.\n * @param {Boolean} once Specify if the listener is a one-time listener.\n * @returns {EventEmitter}\n * @private\n */\nfunction addListener(emitter, event, fn, context, once) {\n if (typeof fn !== 'function') {\n throw new TypeError('The listener must be a function');\n }\n\n var listener = new EE(fn, context || emitter, once)\n , evt = prefix ? prefix + event : event;\n\n if (!emitter._events[evt]) emitter._events[evt] = listener, emitter._eventsCount++;\n else if (!emitter._events[evt].fn) emitter._events[evt].push(listener);\n else emitter._events[evt] = [emitter._events[evt], listener];\n\n return emitter;\n}\n\n/**\n * Clear event by name.\n *\n * @param {EventEmitter} emitter Reference to the `EventEmitter` instance.\n * @param {(String|Symbol)} evt The Event name.\n * @private\n */\nfunction clearEvent(emitter, evt) {\n if (--emitter._eventsCount === 0) emitter._events = new Events();\n else delete emitter._events[evt];\n}\n\n/**\n * Minimal `EventEmitter` interface that is molded against the Node.js\n * `EventEmitter` interface.\n *\n * @constructor\n * @public\n */\nfunction EventEmitter() {\n this._events = new Events();\n this._eventsCount = 0;\n}\n\n/**\n * Return an array listing the events for which the emitter has registered\n * listeners.\n *\n * @returns {Array}\n * @public\n */\nEventEmitter.prototype.eventNames = function eventNames() {\n var names = []\n , events\n , name;\n\n if (this._eventsCount === 0) return names;\n\n for (name in (events = this._events)) {\n if (has.call(events, name)) names.push(prefix ? name.slice(1) : name);\n }\n\n if (Object.getOwnPropertySymbols) {\n return names.concat(Object.getOwnPropertySymbols(events));\n }\n\n return names;\n};\n\n/**\n * Return the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Array} The registered listeners.\n * @public\n */\nEventEmitter.prototype.listeners = function listeners(event) {\n var evt = prefix ? prefix + event : event\n , handlers = this._events[evt];\n\n if (!handlers) return [];\n if (handlers.fn) return [handlers.fn];\n\n for (var i = 0, l = handlers.length, ee = new Array(l); i < l; i++) {\n ee[i] = handlers[i].fn;\n }\n\n return ee;\n};\n\n/**\n * Return the number of listeners listening to a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Number} The number of listeners.\n * @public\n */\nEventEmitter.prototype.listenerCount = function listenerCount(event) {\n var evt = prefix ? prefix + event : event\n , listeners = this._events[evt];\n\n if (!listeners) return 0;\n if (listeners.fn) return 1;\n return listeners.length;\n};\n\n/**\n * Calls each of the listeners registered for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @returns {Boolean} `true` if the event had listeners, else `false`.\n * @public\n */\nEventEmitter.prototype.emit = function emit(event, a1, a2, a3, a4, a5) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return false;\n\n var listeners = this._events[evt]\n , len = arguments.length\n , args\n , i;\n\n if (listeners.fn) {\n if (listeners.once) this.removeListener(event, listeners.fn, undefined, true);\n\n switch (len) {\n case 1: return listeners.fn.call(listeners.context), true;\n case 2: return listeners.fn.call(listeners.context, a1), true;\n case 3: return listeners.fn.call(listeners.context, a1, a2), true;\n case 4: return listeners.fn.call(listeners.context, a1, a2, a3), true;\n case 5: return listeners.fn.call(listeners.context, a1, a2, a3, a4), true;\n case 6: return listeners.fn.call(listeners.context, a1, a2, a3, a4, a5), true;\n }\n\n for (i = 1, args = new Array(len -1); i < len; i++) {\n args[i - 1] = arguments[i];\n }\n\n listeners.fn.apply(listeners.context, args);\n } else {\n var length = listeners.length\n , j;\n\n for (i = 0; i < length; i++) {\n if (listeners[i].once) this.removeListener(event, listeners[i].fn, undefined, true);\n\n switch (len) {\n case 1: listeners[i].fn.call(listeners[i].context); break;\n case 2: listeners[i].fn.call(listeners[i].context, a1); break;\n case 3: listeners[i].fn.call(listeners[i].context, a1, a2); break;\n case 4: listeners[i].fn.call(listeners[i].context, a1, a2, a3); break;\n default:\n if (!args) for (j = 1, args = new Array(len -1); j < len; j++) {\n args[j - 1] = arguments[j];\n }\n\n listeners[i].fn.apply(listeners[i].context, args);\n }\n }\n }\n\n return true;\n};\n\n/**\n * Add a listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.on = function on(event, fn, context) {\n return addListener(this, event, fn, context, false);\n};\n\n/**\n * Add a one-time listener for a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn The listener function.\n * @param {*} [context=this] The context to invoke the listener with.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.once = function once(event, fn, context) {\n return addListener(this, event, fn, context, true);\n};\n\n/**\n * Remove the listeners of a given event.\n *\n * @param {(String|Symbol)} event The event name.\n * @param {Function} fn Only remove the listeners that match this function.\n * @param {*} context Only remove the listeners that have this context.\n * @param {Boolean} once Only remove one-time listeners.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeListener = function removeListener(event, fn, context, once) {\n var evt = prefix ? prefix + event : event;\n\n if (!this._events[evt]) return this;\n if (!fn) {\n clearEvent(this, evt);\n return this;\n }\n\n var listeners = this._events[evt];\n\n if (listeners.fn) {\n if (\n listeners.fn === fn &&\n (!once || listeners.once) &&\n (!context || listeners.context === context)\n ) {\n clearEvent(this, evt);\n }\n } else {\n for (var i = 0, events = [], length = listeners.length; i < length; i++) {\n if (\n listeners[i].fn !== fn ||\n (once && !listeners[i].once) ||\n (context && listeners[i].context !== context)\n ) {\n events.push(listeners[i]);\n }\n }\n\n //\n // Reset the array, or remove it completely if we have no more listeners.\n //\n if (events.length) this._events[evt] = events.length === 1 ? events[0] : events;\n else clearEvent(this, evt);\n }\n\n return this;\n};\n\n/**\n * Remove all listeners, or those of the specified event.\n *\n * @param {(String|Symbol)} [event] The event name.\n * @returns {EventEmitter} `this`.\n * @public\n */\nEventEmitter.prototype.removeAllListeners = function removeAllListeners(event) {\n var evt;\n\n if (event) {\n evt = prefix ? prefix + event : event;\n if (this._events[evt]) clearEvent(this, evt);\n } else {\n this._events = new Events();\n this._eventsCount = 0;\n }\n\n return this;\n};\n\n//\n// Alias methods names because people roll like that.\n//\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\nEventEmitter.prototype.addListener = EventEmitter.prototype.on;\n\n//\n// Expose the prefix.\n//\nEventEmitter.prefixed = prefix;\n\n//\n// Allow `EventEmitter` to be imported as module namespace.\n//\nEventEmitter.EventEmitter = EventEmitter;\n\n//\n// Expose the module.\n//\nif ('undefined' !== typeof module) {\n module.exports = EventEmitter;\n}\n","// Copyright Joyent, Inc. and other Node contributors.\n//\n// Permission is hereby granted, free of charge, to any person obtaining a\n// copy of this software and associated documentation files (the\n// \"Software\"), to deal in the Software without restriction, including\n// without limitation the rights to use, copy, modify, merge, publish,\n// distribute, sublicense, and/or sell copies of the Software, and to permit\n// persons to whom the Software is furnished to do so, subject to the\n// following conditions:\n//\n// The above copyright notice and this permission notice shall be included\n// in all copies or substantial portions of the Software.\n//\n// THE SOFTWARE IS PROVIDED \"AS IS\", WITHOUT WARRANTY OF ANY KIND, EXPRESS\n// OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF\n// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN\n// NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,\n// DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR\n// OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE\n// USE OR OTHER DEALINGS IN THE SOFTWARE.\n\n'use strict';\n\nvar R = typeof Reflect === 'object' ? Reflect : null\nvar ReflectApply = R && typeof R.apply === 'function'\n ? R.apply\n : function ReflectApply(target, receiver, args) {\n return Function.prototype.apply.call(target, receiver, args);\n }\n\nvar ReflectOwnKeys\nif (R && typeof R.ownKeys === 'function') {\n ReflectOwnKeys = R.ownKeys\n} else if (Object.getOwnPropertySymbols) {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target)\n .concat(Object.getOwnPropertySymbols(target));\n };\n} else {\n ReflectOwnKeys = function ReflectOwnKeys(target) {\n return Object.getOwnPropertyNames(target);\n };\n}\n\nfunction ProcessEmitWarning(warning) {\n if (console && console.warn) console.warn(warning);\n}\n\nvar NumberIsNaN = Number.isNaN || function NumberIsNaN(value) {\n return value !== value;\n}\n\nfunction EventEmitter() {\n EventEmitter.init.call(this);\n}\nmodule.exports = EventEmitter;\nmodule.exports.once = once;\n\n// Backwards-compat with node 0.10.x\nEventEmitter.EventEmitter = EventEmitter;\n\nEventEmitter.prototype._events = undefined;\nEventEmitter.prototype._eventsCount = 0;\nEventEmitter.prototype._maxListeners = undefined;\n\n// By default EventEmitters will print a warning if more than 10 listeners are\n// added to it. This is a useful default which helps finding memory leaks.\nvar defaultMaxListeners = 10;\n\nfunction checkListener(listener) {\n if (typeof listener !== 'function') {\n throw new TypeError('The \"listener\" argument must be of type Function. Received type ' + typeof listener);\n }\n}\n\nObject.defineProperty(EventEmitter, 'defaultMaxListeners', {\n enumerable: true,\n get: function() {\n return defaultMaxListeners;\n },\n set: function(arg) {\n if (typeof arg !== 'number' || arg < 0 || NumberIsNaN(arg)) {\n throw new RangeError('The value of \"defaultMaxListeners\" is out of range. It must be a non-negative number. Received ' + arg + '.');\n }\n defaultMaxListeners = arg;\n }\n});\n\nEventEmitter.init = function() {\n\n if (this._events === undefined ||\n this._events === Object.getPrototypeOf(this)._events) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n }\n\n this._maxListeners = this._maxListeners || undefined;\n};\n\n// Obviously not all Emitters should be limited to 10. This function allows\n// that to be increased. Set to zero for unlimited.\nEventEmitter.prototype.setMaxListeners = function setMaxListeners(n) {\n if (typeof n !== 'number' || n < 0 || NumberIsNaN(n)) {\n throw new RangeError('The value of \"n\" is out of range. It must be a non-negative number. Received ' + n + '.');\n }\n this._maxListeners = n;\n return this;\n};\n\nfunction _getMaxListeners(that) {\n if (that._maxListeners === undefined)\n return EventEmitter.defaultMaxListeners;\n return that._maxListeners;\n}\n\nEventEmitter.prototype.getMaxListeners = function getMaxListeners() {\n return _getMaxListeners(this);\n};\n\nEventEmitter.prototype.emit = function emit(type) {\n var args = [];\n for (var i = 1; i < arguments.length; i++) args.push(arguments[i]);\n var doError = (type === 'error');\n\n var events = this._events;\n if (events !== undefined)\n doError = (doError && events.error === undefined);\n else if (!doError)\n return false;\n\n // If there is no 'error' event listener then throw.\n if (doError) {\n var er;\n if (args.length > 0)\n er = args[0];\n if (er instanceof Error) {\n // Note: The comments on the `throw` lines are intentional, they show\n // up in Node's output if this results in an unhandled exception.\n throw er; // Unhandled 'error' event\n }\n // At least give some kind of context to the user\n var err = new Error('Unhandled error.' + (er ? ' (' + er.message + ')' : ''));\n err.context = er;\n throw err; // Unhandled 'error' event\n }\n\n var handler = events[type];\n\n if (handler === undefined)\n return false;\n\n if (typeof handler === 'function') {\n ReflectApply(handler, this, args);\n } else {\n var len = handler.length;\n var listeners = arrayClone(handler, len);\n for (var i = 0; i < len; ++i)\n ReflectApply(listeners[i], this, args);\n }\n\n return true;\n};\n\nfunction _addListener(target, type, listener, prepend) {\n var m;\n var events;\n var existing;\n\n checkListener(listener);\n\n events = target._events;\n if (events === undefined) {\n events = target._events = Object.create(null);\n target._eventsCount = 0;\n } else {\n // To avoid recursion in the case that type === \"newListener\"! Before\n // adding it to the listeners, first emit \"newListener\".\n if (events.newListener !== undefined) {\n target.emit('newListener', type,\n listener.listener ? listener.listener : listener);\n\n // Re-assign `events` because a newListener handler could have caused the\n // this._events to be assigned to a new object\n events = target._events;\n }\n existing = events[type];\n }\n\n if (existing === undefined) {\n // Optimize the case of one listener. Don't need the extra array object.\n existing = events[type] = listener;\n ++target._eventsCount;\n } else {\n if (typeof existing === 'function') {\n // Adding the second element, need to change to array.\n existing = events[type] =\n prepend ? [listener, existing] : [existing, listener];\n // If we've already got an array, just append.\n } else if (prepend) {\n existing.unshift(listener);\n } else {\n existing.push(listener);\n }\n\n // Check for listener leak\n m = _getMaxListeners(target);\n if (m > 0 && existing.length > m && !existing.warned) {\n existing.warned = true;\n // No error code for this since it is a Warning\n // eslint-disable-next-line no-restricted-syntax\n var w = new Error('Possible EventEmitter memory leak detected. ' +\n existing.length + ' ' + String(type) + ' listeners ' +\n 'added. Use emitter.setMaxListeners() to ' +\n 'increase limit');\n w.name = 'MaxListenersExceededWarning';\n w.emitter = target;\n w.type = type;\n w.count = existing.length;\n ProcessEmitWarning(w);\n }\n }\n\n return target;\n}\n\nEventEmitter.prototype.addListener = function addListener(type, listener) {\n return _addListener(this, type, listener, false);\n};\n\nEventEmitter.prototype.on = EventEmitter.prototype.addListener;\n\nEventEmitter.prototype.prependListener =\n function prependListener(type, listener) {\n return _addListener(this, type, listener, true);\n };\n\nfunction onceWrapper() {\n if (!this.fired) {\n this.target.removeListener(this.type, this.wrapFn);\n this.fired = true;\n if (arguments.length === 0)\n return this.listener.call(this.target);\n return this.listener.apply(this.target, arguments);\n }\n}\n\nfunction _onceWrap(target, type, listener) {\n var state = { fired: false, wrapFn: undefined, target: target, type: type, listener: listener };\n var wrapped = onceWrapper.bind(state);\n wrapped.listener = listener;\n state.wrapFn = wrapped;\n return wrapped;\n}\n\nEventEmitter.prototype.once = function once(type, listener) {\n checkListener(listener);\n this.on(type, _onceWrap(this, type, listener));\n return this;\n};\n\nEventEmitter.prototype.prependOnceListener =\n function prependOnceListener(type, listener) {\n checkListener(listener);\n this.prependListener(type, _onceWrap(this, type, listener));\n return this;\n };\n\n// Emits a 'removeListener' event if and only if the listener was removed.\nEventEmitter.prototype.removeListener =\n function removeListener(type, listener) {\n var list, events, position, i, originalListener;\n\n checkListener(listener);\n\n events = this._events;\n if (events === undefined)\n return this;\n\n list = events[type];\n if (list === undefined)\n return this;\n\n if (list === listener || list.listener === listener) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else {\n delete events[type];\n if (events.removeListener)\n this.emit('removeListener', type, list.listener || listener);\n }\n } else if (typeof list !== 'function') {\n position = -1;\n\n for (i = list.length - 1; i >= 0; i--) {\n if (list[i] === listener || list[i].listener === listener) {\n originalListener = list[i].listener;\n position = i;\n break;\n }\n }\n\n if (position < 0)\n return this;\n\n if (position === 0)\n list.shift();\n else {\n spliceOne(list, position);\n }\n\n if (list.length === 1)\n events[type] = list[0];\n\n if (events.removeListener !== undefined)\n this.emit('removeListener', type, originalListener || listener);\n }\n\n return this;\n };\n\nEventEmitter.prototype.off = EventEmitter.prototype.removeListener;\n\nEventEmitter.prototype.removeAllListeners =\n function removeAllListeners(type) {\n var listeners, events, i;\n\n events = this._events;\n if (events === undefined)\n return this;\n\n // not listening for removeListener, no need to emit\n if (events.removeListener === undefined) {\n if (arguments.length === 0) {\n this._events = Object.create(null);\n this._eventsCount = 0;\n } else if (events[type] !== undefined) {\n if (--this._eventsCount === 0)\n this._events = Object.create(null);\n else\n delete events[type];\n }\n return this;\n }\n\n // emit removeListener for all listeners on all events\n if (arguments.length === 0) {\n var keys = Object.keys(events);\n var key;\n for (i = 0; i < keys.length; ++i) {\n key = keys[i];\n if (key === 'removeListener') continue;\n this.removeAllListeners(key);\n }\n this.removeAllListeners('removeListener');\n this._events = Object.create(null);\n this._eventsCount = 0;\n return this;\n }\n\n listeners = events[type];\n\n if (typeof listeners === 'function') {\n this.removeListener(type, listeners);\n } else if (listeners !== undefined) {\n // LIFO order\n for (i = listeners.length - 1; i >= 0; i--) {\n this.removeListener(type, listeners[i]);\n }\n }\n\n return this;\n };\n\nfunction _listeners(target, type, unwrap) {\n var events = target._events;\n\n if (events === undefined)\n return [];\n\n var evlistener = events[type];\n if (evlistener === undefined)\n return [];\n\n if (typeof evlistener === 'function')\n return unwrap ? [evlistener.listener || evlistener] : [evlistener];\n\n return unwrap ?\n unwrapListeners(evlistener) : arrayClone(evlistener, evlistener.length);\n}\n\nEventEmitter.prototype.listeners = function listeners(type) {\n return _listeners(this, type, true);\n};\n\nEventEmitter.prototype.rawListeners = function rawListeners(type) {\n return _listeners(this, type, false);\n};\n\nEventEmitter.listenerCount = function(emitter, type) {\n if (typeof emitter.listenerCount === 'function') {\n return emitter.listenerCount(type);\n } else {\n return listenerCount.call(emitter, type);\n }\n};\n\nEventEmitter.prototype.listenerCount = listenerCount;\nfunction listenerCount(type) {\n var events = this._events;\n\n if (events !== undefined) {\n var evlistener = events[type];\n\n if (typeof evlistener === 'function') {\n return 1;\n } else if (evlistener !== undefined) {\n return evlistener.length;\n }\n }\n\n return 0;\n}\n\nEventEmitter.prototype.eventNames = function eventNames() {\n return this._eventsCount > 0 ? ReflectOwnKeys(this._events) : [];\n};\n\nfunction arrayClone(arr, n) {\n var copy = new Array(n);\n for (var i = 0; i < n; ++i)\n copy[i] = arr[i];\n return copy;\n}\n\nfunction spliceOne(list, index) {\n for (; index + 1 < list.length; index++)\n list[index] = list[index + 1];\n list.pop();\n}\n\nfunction unwrapListeners(arr) {\n var ret = new Array(arr.length);\n for (var i = 0; i < ret.length; ++i) {\n ret[i] = arr[i].listener || arr[i];\n }\n return ret;\n}\n\nfunction once(emitter, name) {\n return new Promise(function (resolve, reject) {\n function errorListener(err) {\n emitter.removeListener(name, resolver);\n reject(err);\n }\n\n function resolver() {\n if (typeof emitter.removeListener === 'function') {\n emitter.removeListener('error', errorListener);\n }\n resolve([].slice.call(arguments));\n };\n\n eventTargetAgnosticAddListener(emitter, name, resolver, { once: true });\n if (name !== 'error') {\n addErrorHandlerIfEventEmitter(emitter, errorListener, { once: true });\n }\n });\n}\n\nfunction addErrorHandlerIfEventEmitter(emitter, handler, flags) {\n if (typeof emitter.on === 'function') {\n eventTargetAgnosticAddListener(emitter, 'error', handler, flags);\n }\n}\n\nfunction eventTargetAgnosticAddListener(emitter, name, listener, flags) {\n if (typeof emitter.on === 'function') {\n if (flags.once) {\n emitter.once(name, listener);\n } else {\n emitter.on(name, listener);\n }\n } else if (typeof emitter.addEventListener === 'function') {\n // EventTarget does not have `error` event semantics like Node\n // EventEmitters, we do not listen for `error` events here.\n emitter.addEventListener(name, function wrapListener(arg) {\n // IE does not have builtin `{ once: true }` support so we\n // have to do it manually.\n if (flags.once) {\n emitter.removeEventListener(name, wrapListener);\n }\n listener(arg);\n });\n } else {\n throw new TypeError('The \"emitter\" argument must be of type EventEmitter. Received type ' + typeof emitter);\n }\n}\n","var Buffer = require('safe-buffer').Buffer\nvar MD5 = require('md5.js')\n\n/* eslint-disable camelcase */\nfunction EVP_BytesToKey (password, salt, keyBits, ivLen) {\n if (!Buffer.isBuffer(password)) password = Buffer.from(password, 'binary')\n if (salt) {\n if (!Buffer.isBuffer(salt)) salt = Buffer.from(salt, 'binary')\n if (salt.length !== 8) throw new RangeError('salt should be Buffer with 8 byte length')\n }\n\n var keyLen = keyBits / 8\n var key = Buffer.alloc(keyLen)\n var iv = Buffer.alloc(ivLen || 0)\n var tmp = Buffer.alloc(0)\n\n while (keyLen > 0 || ivLen > 0) {\n var hash = new MD5()\n hash.update(tmp)\n hash.update(password)\n if (salt) hash.update(salt)\n tmp = hash.digest()\n\n var used = 0\n\n if (keyLen > 0) {\n var keyStart = key.length - keyLen\n used = Math.min(keyLen, tmp.length)\n tmp.copy(key, keyStart, 0, used)\n keyLen -= used\n }\n\n if (used < tmp.length && ivLen > 0) {\n var ivStart = iv.length - ivLen\n var length = Math.min(ivLen, tmp.length - used)\n tmp.copy(iv, ivStart, used, used + length)\n ivLen -= length\n }\n }\n\n tmp.fill(0)\n return { key: key, iv: iv }\n}\n\nmodule.exports = EVP_BytesToKey\n","module.exports = stringify\nstringify.default = stringify\nstringify.stable = deterministicStringify\nstringify.stableStringify = deterministicStringify\n\nvar LIMIT_REPLACE_NODE = '[...]'\nvar CIRCULAR_REPLACE_NODE = '[Circular]'\n\nvar arr = []\nvar replacerStack = []\n\nfunction defaultOptions () {\n return {\n depthLimit: Number.MAX_SAFE_INTEGER,\n edgesLimit: Number.MAX_SAFE_INTEGER\n }\n}\n\n// Regular stringify\nfunction stringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n decirc(obj, '', 0, [], undefined, 0, options)\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(obj, replacer, spacer)\n } else {\n res = JSON.stringify(obj, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction setReplace (replace, val, k, parent) {\n var propertyDescriptor = Object.getOwnPropertyDescriptor(parent, k)\n if (propertyDescriptor.get !== undefined) {\n if (propertyDescriptor.configurable) {\n Object.defineProperty(parent, k, { value: replace })\n arr.push([parent, k, val, propertyDescriptor])\n } else {\n replacerStack.push([val, k, replace])\n }\n } else {\n parent[k] = replace\n arr.push([parent, k, val])\n }\n}\n\nfunction decirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n decirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n var keys = Object.keys(val)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n decirc(val[key], key, i, stack, val, depth, options)\n }\n }\n stack.pop()\n }\n}\n\n// Stable-stringify\nfunction compareFunction (a, b) {\n if (a < b) {\n return -1\n }\n if (a > b) {\n return 1\n }\n return 0\n}\n\nfunction deterministicStringify (obj, replacer, spacer, options) {\n if (typeof options === 'undefined') {\n options = defaultOptions()\n }\n\n var tmp = deterministicDecirc(obj, '', 0, [], undefined, 0, options) || obj\n var res\n try {\n if (replacerStack.length === 0) {\n res = JSON.stringify(tmp, replacer, spacer)\n } else {\n res = JSON.stringify(tmp, replaceGetterValues(replacer), spacer)\n }\n } catch (_) {\n return JSON.stringify('[unable to serialize, circular reference is too complex to analyze]')\n } finally {\n // Ensure that we restore the object as it was.\n while (arr.length !== 0) {\n var part = arr.pop()\n if (part.length === 4) {\n Object.defineProperty(part[0], part[1], part[3])\n } else {\n part[0][part[1]] = part[2]\n }\n }\n }\n return res\n}\n\nfunction deterministicDecirc (val, k, edgeIndex, stack, parent, depth, options) {\n depth += 1\n var i\n if (typeof val === 'object' && val !== null) {\n for (i = 0; i < stack.length; i++) {\n if (stack[i] === val) {\n setReplace(CIRCULAR_REPLACE_NODE, val, k, parent)\n return\n }\n }\n try {\n if (typeof val.toJSON === 'function') {\n return\n }\n } catch (_) {\n return\n }\n\n if (\n typeof options.depthLimit !== 'undefined' &&\n depth > options.depthLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n if (\n typeof options.edgesLimit !== 'undefined' &&\n edgeIndex + 1 > options.edgesLimit\n ) {\n setReplace(LIMIT_REPLACE_NODE, val, k, parent)\n return\n }\n\n stack.push(val)\n // Optimize for Arrays. Big arrays could kill the performance otherwise!\n if (Array.isArray(val)) {\n for (i = 0; i < val.length; i++) {\n deterministicDecirc(val[i], i, i, stack, val, depth, options)\n }\n } else {\n // Create a temporary object in the required way\n var tmp = {}\n var keys = Object.keys(val).sort(compareFunction)\n for (i = 0; i < keys.length; i++) {\n var key = keys[i]\n deterministicDecirc(val[key], key, i, stack, val, depth, options)\n tmp[key] = val[key]\n }\n if (typeof parent !== 'undefined') {\n arr.push([parent, k, val])\n parent[k] = tmp\n } else {\n return tmp\n }\n }\n stack.pop()\n }\n}\n\n// wraps replacer function to handle values we couldn't replace\n// and mark them as replaced value\nfunction replaceGetterValues (replacer) {\n replacer =\n typeof replacer !== 'undefined'\n ? replacer\n : function (k, v) {\n return v\n }\n return function (key, val) {\n if (replacerStack.length > 0) {\n for (var i = 0; i < replacerStack.length; i++) {\n var part = replacerStack[i]\n if (part[1] === key && part[0] === val) {\n val = part[2]\n replacerStack.splice(i, 1)\n break\n }\n }\n }\n return replacer.call(this, key, val)\n }\n}\n","\nvar hasOwn = Object.prototype.hasOwnProperty;\nvar toString = Object.prototype.toString;\n\nmodule.exports = function forEach (obj, fn, ctx) {\n if (toString.call(fn) !== '[object Function]') {\n throw new TypeError('iterator must be a function');\n }\n var l = obj.length;\n if (l === +l) {\n for (var i = 0; i < l; i++) {\n fn.call(ctx, obj[i], i, obj);\n }\n } else {\n for (var k in obj) {\n if (hasOwn.call(obj, k)) {\n fn.call(ctx, obj[k], k, obj);\n }\n }\n }\n};\n\n","'use strict';\n\n/* eslint no-invalid-this: 1 */\n\nvar ERROR_MESSAGE = 'Function.prototype.bind called on incompatible ';\nvar slice = Array.prototype.slice;\nvar toStr = Object.prototype.toString;\nvar funcType = '[object Function]';\n\nmodule.exports = function bind(that) {\n var target = this;\n if (typeof target !== 'function' || toStr.call(target) !== funcType) {\n throw new TypeError(ERROR_MESSAGE + target);\n }\n var args = slice.call(arguments, 1);\n\n var bound;\n var binder = function () {\n if (this instanceof bound) {\n var result = target.apply(\n this,\n args.concat(slice.call(arguments))\n );\n if (Object(result) === result) {\n return result;\n }\n return this;\n } else {\n return target.apply(\n that,\n args.concat(slice.call(arguments))\n );\n }\n };\n\n var boundLength = Math.max(0, target.length - args.length);\n var boundArgs = [];\n for (var i = 0; i < boundLength; i++) {\n boundArgs.push('$' + i);\n }\n\n bound = Function('binder', 'return function (' + boundArgs.join(',') + '){ return binder.apply(this,arguments); }')(binder);\n\n if (target.prototype) {\n var Empty = function Empty() {};\n Empty.prototype = target.prototype;\n bound.prototype = new Empty();\n Empty.prototype = null;\n }\n\n return bound;\n};\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = Function.prototype.bind || implementation;\n","'use strict';\n\nvar undefined;\n\nvar $SyntaxError = SyntaxError;\nvar $Function = Function;\nvar $TypeError = TypeError;\n\n// eslint-disable-next-line consistent-return\nvar getEvalledConstructor = function (expressionSyntax) {\n\ttry {\n\t\treturn $Function('\"use strict\"; return (' + expressionSyntax + ').constructor;')();\n\t} catch (e) {}\n};\n\nvar $gOPD = Object.getOwnPropertyDescriptor;\nif ($gOPD) {\n\ttry {\n\t\t$gOPD({}, '');\n\t} catch (e) {\n\t\t$gOPD = null; // this is IE 8, which has a broken gOPD\n\t}\n}\n\nvar throwTypeError = function () {\n\tthrow new $TypeError();\n};\nvar ThrowTypeError = $gOPD\n\t? (function () {\n\t\ttry {\n\t\t\t// eslint-disable-next-line no-unused-expressions, no-caller, no-restricted-properties\n\t\t\targuments.callee; // IE 8 does not throw here\n\t\t\treturn throwTypeError;\n\t\t} catch (calleeThrows) {\n\t\t\ttry {\n\t\t\t\t// IE 8 throws on Object.getOwnPropertyDescriptor(arguments, '')\n\t\t\t\treturn $gOPD(arguments, 'callee').get;\n\t\t\t} catch (gOPDthrows) {\n\t\t\t\treturn throwTypeError;\n\t\t\t}\n\t\t}\n\t}())\n\t: throwTypeError;\n\nvar hasSymbols = require('has-symbols')();\n\nvar getProto = Object.getPrototypeOf || function (x) { return x.__proto__; }; // eslint-disable-line no-proto\n\nvar needsEval = {};\n\nvar TypedArray = typeof Uint8Array === 'undefined' ? undefined : getProto(Uint8Array);\n\nvar INTRINSICS = {\n\t'%AggregateError%': typeof AggregateError === 'undefined' ? undefined : AggregateError,\n\t'%Array%': Array,\n\t'%ArrayBuffer%': typeof ArrayBuffer === 'undefined' ? undefined : ArrayBuffer,\n\t'%ArrayIteratorPrototype%': hasSymbols ? getProto([][Symbol.iterator]()) : undefined,\n\t'%AsyncFromSyncIteratorPrototype%': undefined,\n\t'%AsyncFunction%': needsEval,\n\t'%AsyncGenerator%': needsEval,\n\t'%AsyncGeneratorFunction%': needsEval,\n\t'%AsyncIteratorPrototype%': needsEval,\n\t'%Atomics%': typeof Atomics === 'undefined' ? undefined : Atomics,\n\t'%BigInt%': typeof BigInt === 'undefined' ? undefined : BigInt,\n\t'%Boolean%': Boolean,\n\t'%DataView%': typeof DataView === 'undefined' ? undefined : DataView,\n\t'%Date%': Date,\n\t'%decodeURI%': decodeURI,\n\t'%decodeURIComponent%': decodeURIComponent,\n\t'%encodeURI%': encodeURI,\n\t'%encodeURIComponent%': encodeURIComponent,\n\t'%Error%': Error,\n\t'%eval%': eval, // eslint-disable-line no-eval\n\t'%EvalError%': EvalError,\n\t'%Float32Array%': typeof Float32Array === 'undefined' ? undefined : Float32Array,\n\t'%Float64Array%': typeof Float64Array === 'undefined' ? undefined : Float64Array,\n\t'%FinalizationRegistry%': typeof FinalizationRegistry === 'undefined' ? undefined : FinalizationRegistry,\n\t'%Function%': $Function,\n\t'%GeneratorFunction%': needsEval,\n\t'%Int8Array%': typeof Int8Array === 'undefined' ? undefined : Int8Array,\n\t'%Int16Array%': typeof Int16Array === 'undefined' ? undefined : Int16Array,\n\t'%Int32Array%': typeof Int32Array === 'undefined' ? undefined : Int32Array,\n\t'%isFinite%': isFinite,\n\t'%isNaN%': isNaN,\n\t'%IteratorPrototype%': hasSymbols ? getProto(getProto([][Symbol.iterator]())) : undefined,\n\t'%JSON%': typeof JSON === 'object' ? JSON : undefined,\n\t'%Map%': typeof Map === 'undefined' ? undefined : Map,\n\t'%MapIteratorPrototype%': typeof Map === 'undefined' || !hasSymbols ? undefined : getProto(new Map()[Symbol.iterator]()),\n\t'%Math%': Math,\n\t'%Number%': Number,\n\t'%Object%': Object,\n\t'%parseFloat%': parseFloat,\n\t'%parseInt%': parseInt,\n\t'%Promise%': typeof Promise === 'undefined' ? undefined : Promise,\n\t'%Proxy%': typeof Proxy === 'undefined' ? undefined : Proxy,\n\t'%RangeError%': RangeError,\n\t'%ReferenceError%': ReferenceError,\n\t'%Reflect%': typeof Reflect === 'undefined' ? undefined : Reflect,\n\t'%RegExp%': RegExp,\n\t'%Set%': typeof Set === 'undefined' ? undefined : Set,\n\t'%SetIteratorPrototype%': typeof Set === 'undefined' || !hasSymbols ? undefined : getProto(new Set()[Symbol.iterator]()),\n\t'%SharedArrayBuffer%': typeof SharedArrayBuffer === 'undefined' ? undefined : SharedArrayBuffer,\n\t'%String%': String,\n\t'%StringIteratorPrototype%': hasSymbols ? getProto(''[Symbol.iterator]()) : undefined,\n\t'%Symbol%': hasSymbols ? Symbol : undefined,\n\t'%SyntaxError%': $SyntaxError,\n\t'%ThrowTypeError%': ThrowTypeError,\n\t'%TypedArray%': TypedArray,\n\t'%TypeError%': $TypeError,\n\t'%Uint8Array%': typeof Uint8Array === 'undefined' ? undefined : Uint8Array,\n\t'%Uint8ClampedArray%': typeof Uint8ClampedArray === 'undefined' ? undefined : Uint8ClampedArray,\n\t'%Uint16Array%': typeof Uint16Array === 'undefined' ? undefined : Uint16Array,\n\t'%Uint32Array%': typeof Uint32Array === 'undefined' ? undefined : Uint32Array,\n\t'%URIError%': URIError,\n\t'%WeakMap%': typeof WeakMap === 'undefined' ? undefined : WeakMap,\n\t'%WeakRef%': typeof WeakRef === 'undefined' ? undefined : WeakRef,\n\t'%WeakSet%': typeof WeakSet === 'undefined' ? undefined : WeakSet\n};\n\nvar doEval = function doEval(name) {\n\tvar value;\n\tif (name === '%AsyncFunction%') {\n\t\tvalue = getEvalledConstructor('async function () {}');\n\t} else if (name === '%GeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('function* () {}');\n\t} else if (name === '%AsyncGeneratorFunction%') {\n\t\tvalue = getEvalledConstructor('async function* () {}');\n\t} else if (name === '%AsyncGenerator%') {\n\t\tvar fn = doEval('%AsyncGeneratorFunction%');\n\t\tif (fn) {\n\t\t\tvalue = fn.prototype;\n\t\t}\n\t} else if (name === '%AsyncIteratorPrototype%') {\n\t\tvar gen = doEval('%AsyncGenerator%');\n\t\tif (gen) {\n\t\t\tvalue = getProto(gen.prototype);\n\t\t}\n\t}\n\n\tINTRINSICS[name] = value;\n\n\treturn value;\n};\n\nvar LEGACY_ALIASES = {\n\t'%ArrayBufferPrototype%': ['ArrayBuffer', 'prototype'],\n\t'%ArrayPrototype%': ['Array', 'prototype'],\n\t'%ArrayProto_entries%': ['Array', 'prototype', 'entries'],\n\t'%ArrayProto_forEach%': ['Array', 'prototype', 'forEach'],\n\t'%ArrayProto_keys%': ['Array', 'prototype', 'keys'],\n\t'%ArrayProto_values%': ['Array', 'prototype', 'values'],\n\t'%AsyncFunctionPrototype%': ['AsyncFunction', 'prototype'],\n\t'%AsyncGenerator%': ['AsyncGeneratorFunction', 'prototype'],\n\t'%AsyncGeneratorPrototype%': ['AsyncGeneratorFunction', 'prototype', 'prototype'],\n\t'%BooleanPrototype%': ['Boolean', 'prototype'],\n\t'%DataViewPrototype%': ['DataView', 'prototype'],\n\t'%DatePrototype%': ['Date', 'prototype'],\n\t'%ErrorPrototype%': ['Error', 'prototype'],\n\t'%EvalErrorPrototype%': ['EvalError', 'prototype'],\n\t'%Float32ArrayPrototype%': ['Float32Array', 'prototype'],\n\t'%Float64ArrayPrototype%': ['Float64Array', 'prototype'],\n\t'%FunctionPrototype%': ['Function', 'prototype'],\n\t'%Generator%': ['GeneratorFunction', 'prototype'],\n\t'%GeneratorPrototype%': ['GeneratorFunction', 'prototype', 'prototype'],\n\t'%Int8ArrayPrototype%': ['Int8Array', 'prototype'],\n\t'%Int16ArrayPrototype%': ['Int16Array', 'prototype'],\n\t'%Int32ArrayPrototype%': ['Int32Array', 'prototype'],\n\t'%JSONParse%': ['JSON', 'parse'],\n\t'%JSONStringify%': ['JSON', 'stringify'],\n\t'%MapPrototype%': ['Map', 'prototype'],\n\t'%NumberPrototype%': ['Number', 'prototype'],\n\t'%ObjectPrototype%': ['Object', 'prototype'],\n\t'%ObjProto_toString%': ['Object', 'prototype', 'toString'],\n\t'%ObjProto_valueOf%': ['Object', 'prototype', 'valueOf'],\n\t'%PromisePrototype%': ['Promise', 'prototype'],\n\t'%PromiseProto_then%': ['Promise', 'prototype', 'then'],\n\t'%Promise_all%': ['Promise', 'all'],\n\t'%Promise_reject%': ['Promise', 'reject'],\n\t'%Promise_resolve%': ['Promise', 'resolve'],\n\t'%RangeErrorPrototype%': ['RangeError', 'prototype'],\n\t'%ReferenceErrorPrototype%': ['ReferenceError', 'prototype'],\n\t'%RegExpPrototype%': ['RegExp', 'prototype'],\n\t'%SetPrototype%': ['Set', 'prototype'],\n\t'%SharedArrayBufferPrototype%': ['SharedArrayBuffer', 'prototype'],\n\t'%StringPrototype%': ['String', 'prototype'],\n\t'%SymbolPrototype%': ['Symbol', 'prototype'],\n\t'%SyntaxErrorPrototype%': ['SyntaxError', 'prototype'],\n\t'%TypedArrayPrototype%': ['TypedArray', 'prototype'],\n\t'%TypeErrorPrototype%': ['TypeError', 'prototype'],\n\t'%Uint8ArrayPrototype%': ['Uint8Array', 'prototype'],\n\t'%Uint8ClampedArrayPrototype%': ['Uint8ClampedArray', 'prototype'],\n\t'%Uint16ArrayPrototype%': ['Uint16Array', 'prototype'],\n\t'%Uint32ArrayPrototype%': ['Uint32Array', 'prototype'],\n\t'%URIErrorPrototype%': ['URIError', 'prototype'],\n\t'%WeakMapPrototype%': ['WeakMap', 'prototype'],\n\t'%WeakSetPrototype%': ['WeakSet', 'prototype']\n};\n\nvar bind = require('function-bind');\nvar hasOwn = require('has');\nvar $concat = bind.call(Function.call, Array.prototype.concat);\nvar $spliceApply = bind.call(Function.apply, Array.prototype.splice);\nvar $replace = bind.call(Function.call, String.prototype.replace);\nvar $strSlice = bind.call(Function.call, String.prototype.slice);\n\n/* adapted from https://github.com/lodash/lodash/blob/4.17.15/dist/lodash.js#L6735-L6744 */\nvar rePropName = /[^%.[\\]]+|\\[(?:(-?\\d+(?:\\.\\d+)?)|([\"'])((?:(?!\\2)[^\\\\]|\\\\.)*?)\\2)\\]|(?=(?:\\.|\\[\\])(?:\\.|\\[\\]|%$))/g;\nvar reEscapeChar = /\\\\(\\\\)?/g; /** Used to match backslashes in property paths. */\nvar stringToPath = function stringToPath(string) {\n\tvar first = $strSlice(string, 0, 1);\n\tvar last = $strSlice(string, -1);\n\tif (first === '%' && last !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected closing `%`');\n\t} else if (last === '%' && first !== '%') {\n\t\tthrow new $SyntaxError('invalid intrinsic syntax, expected opening `%`');\n\t}\n\tvar result = [];\n\t$replace(string, rePropName, function (match, number, quote, subString) {\n\t\tresult[result.length] = quote ? $replace(subString, reEscapeChar, '$1') : number || match;\n\t});\n\treturn result;\n};\n/* end adaptation */\n\nvar getBaseIntrinsic = function getBaseIntrinsic(name, allowMissing) {\n\tvar intrinsicName = name;\n\tvar alias;\n\tif (hasOwn(LEGACY_ALIASES, intrinsicName)) {\n\t\talias = LEGACY_ALIASES[intrinsicName];\n\t\tintrinsicName = '%' + alias[0] + '%';\n\t}\n\n\tif (hasOwn(INTRINSICS, intrinsicName)) {\n\t\tvar value = INTRINSICS[intrinsicName];\n\t\tif (value === needsEval) {\n\t\t\tvalue = doEval(intrinsicName);\n\t\t}\n\t\tif (typeof value === 'undefined' && !allowMissing) {\n\t\t\tthrow new $TypeError('intrinsic ' + name + ' exists, but is not available. Please file an issue!');\n\t\t}\n\n\t\treturn {\n\t\t\talias: alias,\n\t\t\tname: intrinsicName,\n\t\t\tvalue: value\n\t\t};\n\t}\n\n\tthrow new $SyntaxError('intrinsic ' + name + ' does not exist!');\n};\n\nmodule.exports = function GetIntrinsic(name, allowMissing) {\n\tif (typeof name !== 'string' || name.length === 0) {\n\t\tthrow new $TypeError('intrinsic name must be a non-empty string');\n\t}\n\tif (arguments.length > 1 && typeof allowMissing !== 'boolean') {\n\t\tthrow new $TypeError('\"allowMissing\" argument must be a boolean');\n\t}\n\n\tvar parts = stringToPath(name);\n\tvar intrinsicBaseName = parts.length > 0 ? parts[0] : '';\n\n\tvar intrinsic = getBaseIntrinsic('%' + intrinsicBaseName + '%', allowMissing);\n\tvar intrinsicRealName = intrinsic.name;\n\tvar value = intrinsic.value;\n\tvar skipFurtherCaching = false;\n\n\tvar alias = intrinsic.alias;\n\tif (alias) {\n\t\tintrinsicBaseName = alias[0];\n\t\t$spliceApply(parts, $concat([0, 1], alias));\n\t}\n\n\tfor (var i = 1, isOwn = true; i < parts.length; i += 1) {\n\t\tvar part = parts[i];\n\t\tvar first = $strSlice(part, 0, 1);\n\t\tvar last = $strSlice(part, -1);\n\t\tif (\n\t\t\t(\n\t\t\t\t(first === '\"' || first === \"'\" || first === '`')\n\t\t\t\t|| (last === '\"' || last === \"'\" || last === '`')\n\t\t\t)\n\t\t\t&& first !== last\n\t\t) {\n\t\t\tthrow new $SyntaxError('property names with quotes must have matching quotes');\n\t\t}\n\t\tif (part === 'constructor' || !isOwn) {\n\t\t\tskipFurtherCaching = true;\n\t\t}\n\n\t\tintrinsicBaseName += '.' + part;\n\t\tintrinsicRealName = '%' + intrinsicBaseName + '%';\n\n\t\tif (hasOwn(INTRINSICS, intrinsicRealName)) {\n\t\t\tvalue = INTRINSICS[intrinsicRealName];\n\t\t} else if (value != null) {\n\t\t\tif (!(part in value)) {\n\t\t\t\tif (!allowMissing) {\n\t\t\t\t\tthrow new $TypeError('base intrinsic for ' + name + ' exists, but the property is not available.');\n\t\t\t\t}\n\t\t\t\treturn void undefined;\n\t\t\t}\n\t\t\tif ($gOPD && (i + 1) >= parts.length) {\n\t\t\t\tvar desc = $gOPD(value, part);\n\t\t\t\tisOwn = !!desc;\n\n\t\t\t\t// By convention, when a data property is converted to an accessor\n\t\t\t\t// property to emulate a data property that does not suffer from\n\t\t\t\t// the override mistake, that accessor's getter is marked with\n\t\t\t\t// an `originalValue` property. Here, when we detect this, we\n\t\t\t\t// uphold the illusion by pretending to see that original data\n\t\t\t\t// property, i.e., returning the value rather than the getter\n\t\t\t\t// itself.\n\t\t\t\tif (isOwn && 'get' in desc && !('originalValue' in desc.get)) {\n\t\t\t\t\tvalue = desc.get;\n\t\t\t\t} else {\n\t\t\t\t\tvalue = value[part];\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tisOwn = hasOwn(value, part);\n\t\t\t\tvalue = value[part];\n\t\t\t}\n\n\t\t\tif (isOwn && !skipFurtherCaching) {\n\t\t\t\tINTRINSICS[intrinsicRealName] = value;\n\t\t\t}\n\t\t}\n\t}\n\treturn value;\n};\n","var win;\n\nif (typeof window !== \"undefined\") {\n win = window;\n} else if (typeof global !== \"undefined\") {\n win = global;\n} else if (typeof self !== \"undefined\"){\n win = self;\n} else {\n win = {};\n}\n\nmodule.exports = win;\n","'use strict';\n\nvar GetIntrinsic = require('get-intrinsic');\n\nvar $defineProperty = GetIntrinsic('%Object.defineProperty%', true);\n\nvar hasPropertyDescriptors = function hasPropertyDescriptors() {\n\tif ($defineProperty) {\n\t\ttry {\n\t\t\t$defineProperty({}, 'a', { value: 1 });\n\t\t\treturn true;\n\t\t} catch (e) {\n\t\t\t// IE 8 has a broken defineProperty\n\t\t\treturn false;\n\t\t}\n\t}\n\treturn false;\n};\n\nhasPropertyDescriptors.hasArrayLengthDefineBug = function hasArrayLengthDefineBug() {\n\t// node v0.6 has a bug where array lengths can be Set but not Defined\n\tif (!hasPropertyDescriptors()) {\n\t\treturn null;\n\t}\n\ttry {\n\t\treturn $defineProperty([], 'length', { value: 1 }).length !== 1;\n\t} catch (e) {\n\t\t// In Firefox 4-22, defining length on an array throws an exception.\n\t\treturn true;\n\t}\n};\n\nmodule.exports = hasPropertyDescriptors;\n","'use strict';\n\nvar origSymbol = typeof Symbol !== 'undefined' && Symbol;\nvar hasSymbolSham = require('./shams');\n\nmodule.exports = function hasNativeSymbols() {\n\tif (typeof origSymbol !== 'function') { return false; }\n\tif (typeof Symbol !== 'function') { return false; }\n\tif (typeof origSymbol('foo') !== 'symbol') { return false; }\n\tif (typeof Symbol('bar') !== 'symbol') { return false; }\n\n\treturn hasSymbolSham();\n};\n","'use strict';\n\n/* eslint complexity: [2, 18], max-statements: [2, 33] */\nmodule.exports = function hasSymbols() {\n\tif (typeof Symbol !== 'function' || typeof Object.getOwnPropertySymbols !== 'function') { return false; }\n\tif (typeof Symbol.iterator === 'symbol') { return true; }\n\n\tvar obj = {};\n\tvar sym = Symbol('test');\n\tvar symObj = Object(sym);\n\tif (typeof sym === 'string') { return false; }\n\n\tif (Object.prototype.toString.call(sym) !== '[object Symbol]') { return false; }\n\tif (Object.prototype.toString.call(symObj) !== '[object Symbol]') { return false; }\n\n\t// temp disabled per https://github.com/ljharb/object.assign/issues/17\n\t// if (sym instanceof Symbol) { return false; }\n\t// temp disabled per https://github.com/WebReflection/get-own-property-symbols/issues/4\n\t// if (!(symObj instanceof Symbol)) { return false; }\n\n\t// if (typeof Symbol.prototype.toString !== 'function') { return false; }\n\t// if (String(sym) !== Symbol.prototype.toString.call(sym)) { return false; }\n\n\tvar symVal = 42;\n\tobj[sym] = symVal;\n\tfor (sym in obj) { return false; } // eslint-disable-line no-restricted-syntax, no-unreachable-loop\n\tif (typeof Object.keys === 'function' && Object.keys(obj).length !== 0) { return false; }\n\n\tif (typeof Object.getOwnPropertyNames === 'function' && Object.getOwnPropertyNames(obj).length !== 0) { return false; }\n\n\tvar syms = Object.getOwnPropertySymbols(obj);\n\tif (syms.length !== 1 || syms[0] !== sym) { return false; }\n\n\tif (!Object.prototype.propertyIsEnumerable.call(obj, sym)) { return false; }\n\n\tif (typeof Object.getOwnPropertyDescriptor === 'function') {\n\t\tvar descriptor = Object.getOwnPropertyDescriptor(obj, sym);\n\t\tif (descriptor.value !== symVal || descriptor.enumerable !== true) { return false; }\n\t}\n\n\treturn true;\n};\n","'use strict';\n\nvar hasSymbols = require('has-symbols/shams');\n\nmodule.exports = function hasToStringTagShams() {\n\treturn hasSymbols() && !!Symbol.toStringTag;\n};\n","'use strict';\n\nvar bind = require('function-bind');\n\nmodule.exports = bind.call(Function.call, Object.prototype.hasOwnProperty);\n","'use strict'\nvar Buffer = require('safe-buffer').Buffer\nvar Transform = require('readable-stream').Transform\nvar inherits = require('inherits')\n\nfunction throwIfNotStringOrBuffer (val, prefix) {\n if (!Buffer.isBuffer(val) && typeof val !== 'string') {\n throw new TypeError(prefix + ' must be a string or a buffer')\n }\n}\n\nfunction HashBase (blockSize) {\n Transform.call(this)\n\n this._block = Buffer.allocUnsafe(blockSize)\n this._blockSize = blockSize\n this._blockOffset = 0\n this._length = [0, 0, 0, 0]\n\n this._finalized = false\n}\n\ninherits(HashBase, Transform)\n\nHashBase.prototype._transform = function (chunk, encoding, callback) {\n var error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype._flush = function (callback) {\n var error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n}\n\nHashBase.prototype.update = function (data, encoding) {\n throwIfNotStringOrBuffer(data, 'Data')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n // consume data\n var block = this._block\n var offset = 0\n while (this._blockOffset + data.length - offset >= this._blockSize) {\n for (var i = this._blockOffset; i < this._blockSize;) block[i++] = data[offset++]\n this._update()\n this._blockOffset = 0\n }\n while (offset < data.length) block[this._blockOffset++] = data[offset++]\n\n // update length\n for (var j = 0, carry = data.length * 8; carry > 0; ++j) {\n this._length[j] += carry\n carry = (this._length[j] / 0x0100000000) | 0\n if (carry > 0) this._length[j] -= 0x0100000000 * carry\n }\n\n return this\n}\n\nHashBase.prototype._update = function () {\n throw new Error('_update is not implemented')\n}\n\nHashBase.prototype.digest = function (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n var digest = this._digest()\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n // reset state\n this._block.fill(0)\n this._blockOffset = 0\n for (var i = 0; i < 4; ++i) this._length[i] = 0\n\n return digest\n}\n\nHashBase.prototype._digest = function () {\n throw new Error('_digest is not implemented')\n}\n\nmodule.exports = HashBase\n","var hash = exports;\n\nhash.utils = require('./hash/utils');\nhash.common = require('./hash/common');\nhash.sha = require('./hash/sha');\nhash.ripemd = require('./hash/ripemd');\nhash.hmac = require('./hash/hmac');\n\n// Proxy hash functions to the main object\nhash.sha1 = hash.sha.sha1;\nhash.sha256 = hash.sha.sha256;\nhash.sha224 = hash.sha.sha224;\nhash.sha384 = hash.sha.sha384;\nhash.sha512 = hash.sha.sha512;\nhash.ripemd160 = hash.ripemd.ripemd160;\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction BlockHash() {\n this.pending = null;\n this.pendingTotal = 0;\n this.blockSize = this.constructor.blockSize;\n this.outSize = this.constructor.outSize;\n this.hmacStrength = this.constructor.hmacStrength;\n this.padLength = this.constructor.padLength / 8;\n this.endian = 'big';\n\n this._delta8 = this.blockSize / 8;\n this._delta32 = this.blockSize / 32;\n}\nexports.BlockHash = BlockHash;\n\nBlockHash.prototype.update = function update(msg, enc) {\n // Convert message to array, pad it, and join into 32bit blocks\n msg = utils.toArray(msg, enc);\n if (!this.pending)\n this.pending = msg;\n else\n this.pending = this.pending.concat(msg);\n this.pendingTotal += msg.length;\n\n // Enough data, try updating\n if (this.pending.length >= this._delta8) {\n msg = this.pending;\n\n // Process pending data in blocks\n var r = msg.length % this._delta8;\n this.pending = msg.slice(msg.length - r, msg.length);\n if (this.pending.length === 0)\n this.pending = null;\n\n msg = utils.join32(msg, 0, msg.length - r, this.endian);\n for (var i = 0; i < msg.length; i += this._delta32)\n this._update(msg, i, i + this._delta32);\n }\n\n return this;\n};\n\nBlockHash.prototype.digest = function digest(enc) {\n this.update(this._pad());\n assert(this.pending === null);\n\n return this._digest(enc);\n};\n\nBlockHash.prototype._pad = function pad() {\n var len = this.pendingTotal;\n var bytes = this._delta8;\n var k = bytes - ((len + this.padLength) % bytes);\n var res = new Array(k + this.padLength);\n res[0] = 0x80;\n for (var i = 1; i < k; i++)\n res[i] = 0;\n\n // Append length\n len <<= 3;\n if (this.endian === 'big') {\n for (var t = 8; t < this.padLength; t++)\n res[i++] = 0;\n\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = len & 0xff;\n } else {\n res[i++] = len & 0xff;\n res[i++] = (len >>> 8) & 0xff;\n res[i++] = (len >>> 16) & 0xff;\n res[i++] = (len >>> 24) & 0xff;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n res[i++] = 0;\n\n for (t = 8; t < this.padLength; t++)\n res[i++] = 0;\n }\n\n return res;\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar assert = require('minimalistic-assert');\n\nfunction Hmac(hash, key, enc) {\n if (!(this instanceof Hmac))\n return new Hmac(hash, key, enc);\n this.Hash = hash;\n this.blockSize = hash.blockSize / 8;\n this.outSize = hash.outSize / 8;\n this.inner = null;\n this.outer = null;\n\n this._init(utils.toArray(key, enc));\n}\nmodule.exports = Hmac;\n\nHmac.prototype._init = function init(key) {\n // Shorten key, if needed\n if (key.length > this.blockSize)\n key = new this.Hash().update(key).digest();\n assert(key.length <= this.blockSize);\n\n // Add padding to key\n for (var i = key.length; i < this.blockSize; i++)\n key.push(0);\n\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x36;\n this.inner = new this.Hash().update(key);\n\n // 0x36 ^ 0x5c = 0x6a\n for (i = 0; i < key.length; i++)\n key[i] ^= 0x6a;\n this.outer = new this.Hash().update(key);\n};\n\nHmac.prototype.update = function update(msg, enc) {\n this.inner.update(msg, enc);\n return this;\n};\n\nHmac.prototype.digest = function digest(enc) {\n this.outer.update(this.inner.digest());\n return this.outer.digest(enc);\n};\n","'use strict';\n\nvar utils = require('./utils');\nvar common = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_3 = utils.sum32_3;\nvar sum32_4 = utils.sum32_4;\nvar BlockHash = common.BlockHash;\n\nfunction RIPEMD160() {\n if (!(this instanceof RIPEMD160))\n return new RIPEMD160();\n\n BlockHash.call(this);\n\n this.h = [ 0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0 ];\n this.endian = 'little';\n}\nutils.inherits(RIPEMD160, BlockHash);\nexports.ripemd160 = RIPEMD160;\n\nRIPEMD160.blockSize = 512;\nRIPEMD160.outSize = 160;\nRIPEMD160.hmacStrength = 192;\nRIPEMD160.padLength = 64;\n\nRIPEMD160.prototype._update = function update(msg, start) {\n var A = this.h[0];\n var B = this.h[1];\n var C = this.h[2];\n var D = this.h[3];\n var E = this.h[4];\n var Ah = A;\n var Bh = B;\n var Ch = C;\n var Dh = D;\n var Eh = E;\n for (var j = 0; j < 80; j++) {\n var T = sum32(\n rotl32(\n sum32_4(A, f(j, B, C, D), msg[r[j] + start], K(j)),\n s[j]),\n E);\n A = E;\n E = D;\n D = rotl32(C, 10);\n C = B;\n B = T;\n T = sum32(\n rotl32(\n sum32_4(Ah, f(79 - j, Bh, Ch, Dh), msg[rh[j] + start], Kh(j)),\n sh[j]),\n Eh);\n Ah = Eh;\n Eh = Dh;\n Dh = rotl32(Ch, 10);\n Ch = Bh;\n Bh = T;\n }\n T = sum32_3(this.h[1], C, Dh);\n this.h[1] = sum32_3(this.h[2], D, Eh);\n this.h[2] = sum32_3(this.h[3], E, Ah);\n this.h[3] = sum32_3(this.h[4], A, Bh);\n this.h[4] = sum32_3(this.h[0], B, Ch);\n this.h[0] = T;\n};\n\nRIPEMD160.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'little');\n else\n return utils.split32(this.h, 'little');\n};\n\nfunction f(j, x, y, z) {\n if (j <= 15)\n return x ^ y ^ z;\n else if (j <= 31)\n return (x & y) | ((~x) & z);\n else if (j <= 47)\n return (x | (~y)) ^ z;\n else if (j <= 63)\n return (x & z) | (y & (~z));\n else\n return x ^ (y | (~z));\n}\n\nfunction K(j) {\n if (j <= 15)\n return 0x00000000;\n else if (j <= 31)\n return 0x5a827999;\n else if (j <= 47)\n return 0x6ed9eba1;\n else if (j <= 63)\n return 0x8f1bbcdc;\n else\n return 0xa953fd4e;\n}\n\nfunction Kh(j) {\n if (j <= 15)\n return 0x50a28be6;\n else if (j <= 31)\n return 0x5c4dd124;\n else if (j <= 47)\n return 0x6d703ef3;\n else if (j <= 63)\n return 0x7a6d76e9;\n else\n return 0x00000000;\n}\n\nvar r = [\n 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,\n 7, 4, 13, 1, 10, 6, 15, 3, 12, 0, 9, 5, 2, 14, 11, 8,\n 3, 10, 14, 4, 9, 15, 8, 1, 2, 7, 0, 6, 13, 11, 5, 12,\n 1, 9, 11, 10, 0, 8, 12, 4, 13, 3, 7, 15, 14, 5, 6, 2,\n 4, 0, 5, 9, 7, 12, 2, 10, 14, 1, 3, 8, 11, 6, 15, 13\n];\n\nvar rh = [\n 5, 14, 7, 0, 9, 2, 11, 4, 13, 6, 15, 8, 1, 10, 3, 12,\n 6, 11, 3, 7, 0, 13, 5, 10, 14, 15, 8, 12, 4, 9, 1, 2,\n 15, 5, 1, 3, 7, 14, 6, 9, 11, 8, 12, 2, 10, 0, 4, 13,\n 8, 6, 4, 1, 3, 11, 15, 0, 5, 12, 2, 13, 9, 7, 10, 14,\n 12, 15, 10, 4, 1, 5, 8, 7, 6, 2, 13, 14, 0, 3, 9, 11\n];\n\nvar s = [\n 11, 14, 15, 12, 5, 8, 7, 9, 11, 13, 14, 15, 6, 7, 9, 8,\n 7, 6, 8, 13, 11, 9, 7, 15, 7, 12, 15, 9, 11, 7, 13, 12,\n 11, 13, 6, 7, 14, 9, 13, 15, 14, 8, 13, 6, 5, 12, 7, 5,\n 11, 12, 14, 15, 14, 15, 9, 8, 9, 14, 5, 6, 8, 6, 5, 12,\n 9, 15, 5, 11, 6, 8, 13, 12, 5, 12, 13, 14, 11, 8, 5, 6\n];\n\nvar sh = [\n 8, 9, 9, 11, 13, 15, 15, 5, 7, 7, 8, 11, 14, 14, 12, 6,\n 9, 13, 15, 7, 12, 8, 9, 11, 7, 7, 12, 7, 6, 15, 13, 11,\n 9, 7, 15, 11, 8, 6, 6, 14, 12, 13, 5, 14, 13, 13, 7, 5,\n 15, 5, 8, 11, 14, 14, 6, 14, 6, 9, 12, 9, 12, 5, 15, 8,\n 8, 5, 12, 9, 12, 5, 14, 6, 8, 13, 6, 5, 15, 13, 11, 11\n];\n","'use strict';\n\nexports.sha1 = require('./sha/1');\nexports.sha224 = require('./sha/224');\nexports.sha256 = require('./sha/256');\nexports.sha384 = require('./sha/384');\nexports.sha512 = require('./sha/512');\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\n\nvar rotl32 = utils.rotl32;\nvar sum32 = utils.sum32;\nvar sum32_5 = utils.sum32_5;\nvar ft_1 = shaCommon.ft_1;\nvar BlockHash = common.BlockHash;\n\nvar sha1_K = [\n 0x5A827999, 0x6ED9EBA1,\n 0x8F1BBCDC, 0xCA62C1D6\n];\n\nfunction SHA1() {\n if (!(this instanceof SHA1))\n return new SHA1();\n\n BlockHash.call(this);\n this.h = [\n 0x67452301, 0xefcdab89, 0x98badcfe,\n 0x10325476, 0xc3d2e1f0 ];\n this.W = new Array(80);\n}\n\nutils.inherits(SHA1, BlockHash);\nmodule.exports = SHA1;\n\nSHA1.blockSize = 512;\nSHA1.outSize = 160;\nSHA1.hmacStrength = 80;\nSHA1.padLength = 64;\n\nSHA1.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n\n for(; i < W.length; i++)\n W[i] = rotl32(W[i - 3] ^ W[i - 8] ^ W[i - 14] ^ W[i - 16], 1);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n\n for (i = 0; i < W.length; i++) {\n var s = ~~(i / 20);\n var t = sum32_5(rotl32(a, 5), ft_1(s, b, c, d), e, W[i], sha1_K[s]);\n e = d;\n d = c;\n c = rotl32(b, 30);\n b = a;\n a = t;\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n};\n\nSHA1.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar SHA256 = require('./256');\n\nfunction SHA224() {\n if (!(this instanceof SHA224))\n return new SHA224();\n\n SHA256.call(this);\n this.h = [\n 0xc1059ed8, 0x367cd507, 0x3070dd17, 0xf70e5939,\n 0xffc00b31, 0x68581511, 0x64f98fa7, 0xbefa4fa4 ];\n}\nutils.inherits(SHA224, SHA256);\nmodule.exports = SHA224;\n\nSHA224.blockSize = 512;\nSHA224.outSize = 224;\nSHA224.hmacStrength = 192;\nSHA224.padLength = 64;\n\nSHA224.prototype._digest = function digest(enc) {\n // Just truncate output\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 7), 'big');\n else\n return utils.split32(this.h.slice(0, 7), 'big');\n};\n\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar shaCommon = require('./common');\nvar assert = require('minimalistic-assert');\n\nvar sum32 = utils.sum32;\nvar sum32_4 = utils.sum32_4;\nvar sum32_5 = utils.sum32_5;\nvar ch32 = shaCommon.ch32;\nvar maj32 = shaCommon.maj32;\nvar s0_256 = shaCommon.s0_256;\nvar s1_256 = shaCommon.s1_256;\nvar g0_256 = shaCommon.g0_256;\nvar g1_256 = shaCommon.g1_256;\n\nvar BlockHash = common.BlockHash;\n\nvar sha256_K = [\n 0x428a2f98, 0x71374491, 0xb5c0fbcf, 0xe9b5dba5,\n 0x3956c25b, 0x59f111f1, 0x923f82a4, 0xab1c5ed5,\n 0xd807aa98, 0x12835b01, 0x243185be, 0x550c7dc3,\n 0x72be5d74, 0x80deb1fe, 0x9bdc06a7, 0xc19bf174,\n 0xe49b69c1, 0xefbe4786, 0x0fc19dc6, 0x240ca1cc,\n 0x2de92c6f, 0x4a7484aa, 0x5cb0a9dc, 0x76f988da,\n 0x983e5152, 0xa831c66d, 0xb00327c8, 0xbf597fc7,\n 0xc6e00bf3, 0xd5a79147, 0x06ca6351, 0x14292967,\n 0x27b70a85, 0x2e1b2138, 0x4d2c6dfc, 0x53380d13,\n 0x650a7354, 0x766a0abb, 0x81c2c92e, 0x92722c85,\n 0xa2bfe8a1, 0xa81a664b, 0xc24b8b70, 0xc76c51a3,\n 0xd192e819, 0xd6990624, 0xf40e3585, 0x106aa070,\n 0x19a4c116, 0x1e376c08, 0x2748774c, 0x34b0bcb5,\n 0x391c0cb3, 0x4ed8aa4a, 0x5b9cca4f, 0x682e6ff3,\n 0x748f82ee, 0x78a5636f, 0x84c87814, 0x8cc70208,\n 0x90befffa, 0xa4506ceb, 0xbef9a3f7, 0xc67178f2\n];\n\nfunction SHA256() {\n if (!(this instanceof SHA256))\n return new SHA256();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xbb67ae85, 0x3c6ef372, 0xa54ff53a,\n 0x510e527f, 0x9b05688c, 0x1f83d9ab, 0x5be0cd19\n ];\n this.k = sha256_K;\n this.W = new Array(64);\n}\nutils.inherits(SHA256, BlockHash);\nmodule.exports = SHA256;\n\nSHA256.blockSize = 512;\nSHA256.outSize = 256;\nSHA256.hmacStrength = 192;\nSHA256.padLength = 64;\n\nSHA256.prototype._update = function _update(msg, start) {\n var W = this.W;\n\n for (var i = 0; i < 16; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i++)\n W[i] = sum32_4(g1_256(W[i - 2]), W[i - 7], g0_256(W[i - 15]), W[i - 16]);\n\n var a = this.h[0];\n var b = this.h[1];\n var c = this.h[2];\n var d = this.h[3];\n var e = this.h[4];\n var f = this.h[5];\n var g = this.h[6];\n var h = this.h[7];\n\n assert(this.k.length === W.length);\n for (i = 0; i < W.length; i++) {\n var T1 = sum32_5(h, s1_256(e), ch32(e, f, g), this.k[i], W[i]);\n var T2 = sum32(s0_256(a), maj32(a, b, c));\n h = g;\n g = f;\n f = e;\n e = sum32(d, T1);\n d = c;\n c = b;\n b = a;\n a = sum32(T1, T2);\n }\n\n this.h[0] = sum32(this.h[0], a);\n this.h[1] = sum32(this.h[1], b);\n this.h[2] = sum32(this.h[2], c);\n this.h[3] = sum32(this.h[3], d);\n this.h[4] = sum32(this.h[4], e);\n this.h[5] = sum32(this.h[5], f);\n this.h[6] = sum32(this.h[6], g);\n this.h[7] = sum32(this.h[7], h);\n};\n\nSHA256.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\n\nvar SHA512 = require('./512');\n\nfunction SHA384() {\n if (!(this instanceof SHA384))\n return new SHA384();\n\n SHA512.call(this);\n this.h = [\n 0xcbbb9d5d, 0xc1059ed8,\n 0x629a292a, 0x367cd507,\n 0x9159015a, 0x3070dd17,\n 0x152fecd8, 0xf70e5939,\n 0x67332667, 0xffc00b31,\n 0x8eb44a87, 0x68581511,\n 0xdb0c2e0d, 0x64f98fa7,\n 0x47b5481d, 0xbefa4fa4 ];\n}\nutils.inherits(SHA384, SHA512);\nmodule.exports = SHA384;\n\nSHA384.blockSize = 1024;\nSHA384.outSize = 384;\nSHA384.hmacStrength = 192;\nSHA384.padLength = 128;\n\nSHA384.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h.slice(0, 12), 'big');\n else\n return utils.split32(this.h.slice(0, 12), 'big');\n};\n","'use strict';\n\nvar utils = require('../utils');\nvar common = require('../common');\nvar assert = require('minimalistic-assert');\n\nvar rotr64_hi = utils.rotr64_hi;\nvar rotr64_lo = utils.rotr64_lo;\nvar shr64_hi = utils.shr64_hi;\nvar shr64_lo = utils.shr64_lo;\nvar sum64 = utils.sum64;\nvar sum64_hi = utils.sum64_hi;\nvar sum64_lo = utils.sum64_lo;\nvar sum64_4_hi = utils.sum64_4_hi;\nvar sum64_4_lo = utils.sum64_4_lo;\nvar sum64_5_hi = utils.sum64_5_hi;\nvar sum64_5_lo = utils.sum64_5_lo;\n\nvar BlockHash = common.BlockHash;\n\nvar sha512_K = [\n 0x428a2f98, 0xd728ae22, 0x71374491, 0x23ef65cd,\n 0xb5c0fbcf, 0xec4d3b2f, 0xe9b5dba5, 0x8189dbbc,\n 0x3956c25b, 0xf348b538, 0x59f111f1, 0xb605d019,\n 0x923f82a4, 0xaf194f9b, 0xab1c5ed5, 0xda6d8118,\n 0xd807aa98, 0xa3030242, 0x12835b01, 0x45706fbe,\n 0x243185be, 0x4ee4b28c, 0x550c7dc3, 0xd5ffb4e2,\n 0x72be5d74, 0xf27b896f, 0x80deb1fe, 0x3b1696b1,\n 0x9bdc06a7, 0x25c71235, 0xc19bf174, 0xcf692694,\n 0xe49b69c1, 0x9ef14ad2, 0xefbe4786, 0x384f25e3,\n 0x0fc19dc6, 0x8b8cd5b5, 0x240ca1cc, 0x77ac9c65,\n 0x2de92c6f, 0x592b0275, 0x4a7484aa, 0x6ea6e483,\n 0x5cb0a9dc, 0xbd41fbd4, 0x76f988da, 0x831153b5,\n 0x983e5152, 0xee66dfab, 0xa831c66d, 0x2db43210,\n 0xb00327c8, 0x98fb213f, 0xbf597fc7, 0xbeef0ee4,\n 0xc6e00bf3, 0x3da88fc2, 0xd5a79147, 0x930aa725,\n 0x06ca6351, 0xe003826f, 0x14292967, 0x0a0e6e70,\n 0x27b70a85, 0x46d22ffc, 0x2e1b2138, 0x5c26c926,\n 0x4d2c6dfc, 0x5ac42aed, 0x53380d13, 0x9d95b3df,\n 0x650a7354, 0x8baf63de, 0x766a0abb, 0x3c77b2a8,\n 0x81c2c92e, 0x47edaee6, 0x92722c85, 0x1482353b,\n 0xa2bfe8a1, 0x4cf10364, 0xa81a664b, 0xbc423001,\n 0xc24b8b70, 0xd0f89791, 0xc76c51a3, 0x0654be30,\n 0xd192e819, 0xd6ef5218, 0xd6990624, 0x5565a910,\n 0xf40e3585, 0x5771202a, 0x106aa070, 0x32bbd1b8,\n 0x19a4c116, 0xb8d2d0c8, 0x1e376c08, 0x5141ab53,\n 0x2748774c, 0xdf8eeb99, 0x34b0bcb5, 0xe19b48a8,\n 0x391c0cb3, 0xc5c95a63, 0x4ed8aa4a, 0xe3418acb,\n 0x5b9cca4f, 0x7763e373, 0x682e6ff3, 0xd6b2b8a3,\n 0x748f82ee, 0x5defb2fc, 0x78a5636f, 0x43172f60,\n 0x84c87814, 0xa1f0ab72, 0x8cc70208, 0x1a6439ec,\n 0x90befffa, 0x23631e28, 0xa4506ceb, 0xde82bde9,\n 0xbef9a3f7, 0xb2c67915, 0xc67178f2, 0xe372532b,\n 0xca273ece, 0xea26619c, 0xd186b8c7, 0x21c0c207,\n 0xeada7dd6, 0xcde0eb1e, 0xf57d4f7f, 0xee6ed178,\n 0x06f067aa, 0x72176fba, 0x0a637dc5, 0xa2c898a6,\n 0x113f9804, 0xbef90dae, 0x1b710b35, 0x131c471b,\n 0x28db77f5, 0x23047d84, 0x32caab7b, 0x40c72493,\n 0x3c9ebe0a, 0x15c9bebc, 0x431d67c4, 0x9c100d4c,\n 0x4cc5d4be, 0xcb3e42b6, 0x597f299c, 0xfc657e2a,\n 0x5fcb6fab, 0x3ad6faec, 0x6c44198c, 0x4a475817\n];\n\nfunction SHA512() {\n if (!(this instanceof SHA512))\n return new SHA512();\n\n BlockHash.call(this);\n this.h = [\n 0x6a09e667, 0xf3bcc908,\n 0xbb67ae85, 0x84caa73b,\n 0x3c6ef372, 0xfe94f82b,\n 0xa54ff53a, 0x5f1d36f1,\n 0x510e527f, 0xade682d1,\n 0x9b05688c, 0x2b3e6c1f,\n 0x1f83d9ab, 0xfb41bd6b,\n 0x5be0cd19, 0x137e2179 ];\n this.k = sha512_K;\n this.W = new Array(160);\n}\nutils.inherits(SHA512, BlockHash);\nmodule.exports = SHA512;\n\nSHA512.blockSize = 1024;\nSHA512.outSize = 512;\nSHA512.hmacStrength = 192;\nSHA512.padLength = 128;\n\nSHA512.prototype._prepareBlock = function _prepareBlock(msg, start) {\n var W = this.W;\n\n // 32 x 32bit words\n for (var i = 0; i < 32; i++)\n W[i] = msg[start + i];\n for (; i < W.length; i += 2) {\n var c0_hi = g1_512_hi(W[i - 4], W[i - 3]); // i - 2\n var c0_lo = g1_512_lo(W[i - 4], W[i - 3]);\n var c1_hi = W[i - 14]; // i - 7\n var c1_lo = W[i - 13];\n var c2_hi = g0_512_hi(W[i - 30], W[i - 29]); // i - 15\n var c2_lo = g0_512_lo(W[i - 30], W[i - 29]);\n var c3_hi = W[i - 32]; // i - 16\n var c3_lo = W[i - 31];\n\n W[i] = sum64_4_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n W[i + 1] = sum64_4_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo);\n }\n};\n\nSHA512.prototype._update = function _update(msg, start) {\n this._prepareBlock(msg, start);\n\n var W = this.W;\n\n var ah = this.h[0];\n var al = this.h[1];\n var bh = this.h[2];\n var bl = this.h[3];\n var ch = this.h[4];\n var cl = this.h[5];\n var dh = this.h[6];\n var dl = this.h[7];\n var eh = this.h[8];\n var el = this.h[9];\n var fh = this.h[10];\n var fl = this.h[11];\n var gh = this.h[12];\n var gl = this.h[13];\n var hh = this.h[14];\n var hl = this.h[15];\n\n assert(this.k.length === W.length);\n for (var i = 0; i < W.length; i += 2) {\n var c0_hi = hh;\n var c0_lo = hl;\n var c1_hi = s1_512_hi(eh, el);\n var c1_lo = s1_512_lo(eh, el);\n var c2_hi = ch64_hi(eh, el, fh, fl, gh, gl);\n var c2_lo = ch64_lo(eh, el, fh, fl, gh, gl);\n var c3_hi = this.k[i];\n var c3_lo = this.k[i + 1];\n var c4_hi = W[i];\n var c4_lo = W[i + 1];\n\n var T1_hi = sum64_5_hi(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n var T1_lo = sum64_5_lo(\n c0_hi, c0_lo,\n c1_hi, c1_lo,\n c2_hi, c2_lo,\n c3_hi, c3_lo,\n c4_hi, c4_lo);\n\n c0_hi = s0_512_hi(ah, al);\n c0_lo = s0_512_lo(ah, al);\n c1_hi = maj64_hi(ah, al, bh, bl, ch, cl);\n c1_lo = maj64_lo(ah, al, bh, bl, ch, cl);\n\n var T2_hi = sum64_hi(c0_hi, c0_lo, c1_hi, c1_lo);\n var T2_lo = sum64_lo(c0_hi, c0_lo, c1_hi, c1_lo);\n\n hh = gh;\n hl = gl;\n\n gh = fh;\n gl = fl;\n\n fh = eh;\n fl = el;\n\n eh = sum64_hi(dh, dl, T1_hi, T1_lo);\n el = sum64_lo(dl, dl, T1_hi, T1_lo);\n\n dh = ch;\n dl = cl;\n\n ch = bh;\n cl = bl;\n\n bh = ah;\n bl = al;\n\n ah = sum64_hi(T1_hi, T1_lo, T2_hi, T2_lo);\n al = sum64_lo(T1_hi, T1_lo, T2_hi, T2_lo);\n }\n\n sum64(this.h, 0, ah, al);\n sum64(this.h, 2, bh, bl);\n sum64(this.h, 4, ch, cl);\n sum64(this.h, 6, dh, dl);\n sum64(this.h, 8, eh, el);\n sum64(this.h, 10, fh, fl);\n sum64(this.h, 12, gh, gl);\n sum64(this.h, 14, hh, hl);\n};\n\nSHA512.prototype._digest = function digest(enc) {\n if (enc === 'hex')\n return utils.toHex32(this.h, 'big');\n else\n return utils.split32(this.h, 'big');\n};\n\nfunction ch64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ ((~xh) & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction ch64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ ((~xl) & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_hi(xh, xl, yh, yl, zh) {\n var r = (xh & yh) ^ (xh & zh) ^ (yh & zh);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction maj64_lo(xh, xl, yh, yl, zh, zl) {\n var r = (xl & yl) ^ (xl & zl) ^ (yl & zl);\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 28);\n var c1_hi = rotr64_hi(xl, xh, 2); // 34\n var c2_hi = rotr64_hi(xl, xh, 7); // 39\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 28);\n var c1_lo = rotr64_lo(xl, xh, 2); // 34\n var c2_lo = rotr64_lo(xl, xh, 7); // 39\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 14);\n var c1_hi = rotr64_hi(xh, xl, 18);\n var c2_hi = rotr64_hi(xl, xh, 9); // 41\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction s1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 14);\n var c1_lo = rotr64_lo(xh, xl, 18);\n var c2_lo = rotr64_lo(xl, xh, 9); // 41\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 1);\n var c1_hi = rotr64_hi(xh, xl, 8);\n var c2_hi = shr64_hi(xh, xl, 7);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g0_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 1);\n var c1_lo = rotr64_lo(xh, xl, 8);\n var c2_lo = shr64_lo(xh, xl, 7);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_hi(xh, xl) {\n var c0_hi = rotr64_hi(xh, xl, 19);\n var c1_hi = rotr64_hi(xl, xh, 29); // 61\n var c2_hi = shr64_hi(xh, xl, 6);\n\n var r = c0_hi ^ c1_hi ^ c2_hi;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n\nfunction g1_512_lo(xh, xl) {\n var c0_lo = rotr64_lo(xh, xl, 19);\n var c1_lo = rotr64_lo(xl, xh, 29); // 61\n var c2_lo = shr64_lo(xh, xl, 6);\n\n var r = c0_lo ^ c1_lo ^ c2_lo;\n if (r < 0)\n r += 0x100000000;\n return r;\n}\n","'use strict';\n\nvar utils = require('../utils');\nvar rotr32 = utils.rotr32;\n\nfunction ft_1(s, x, y, z) {\n if (s === 0)\n return ch32(x, y, z);\n if (s === 1 || s === 3)\n return p32(x, y, z);\n if (s === 2)\n return maj32(x, y, z);\n}\nexports.ft_1 = ft_1;\n\nfunction ch32(x, y, z) {\n return (x & y) ^ ((~x) & z);\n}\nexports.ch32 = ch32;\n\nfunction maj32(x, y, z) {\n return (x & y) ^ (x & z) ^ (y & z);\n}\nexports.maj32 = maj32;\n\nfunction p32(x, y, z) {\n return x ^ y ^ z;\n}\nexports.p32 = p32;\n\nfunction s0_256(x) {\n return rotr32(x, 2) ^ rotr32(x, 13) ^ rotr32(x, 22);\n}\nexports.s0_256 = s0_256;\n\nfunction s1_256(x) {\n return rotr32(x, 6) ^ rotr32(x, 11) ^ rotr32(x, 25);\n}\nexports.s1_256 = s1_256;\n\nfunction g0_256(x) {\n return rotr32(x, 7) ^ rotr32(x, 18) ^ (x >>> 3);\n}\nexports.g0_256 = g0_256;\n\nfunction g1_256(x) {\n return rotr32(x, 17) ^ rotr32(x, 19) ^ (x >>> 10);\n}\nexports.g1_256 = g1_256;\n","'use strict';\n\nvar assert = require('minimalistic-assert');\nvar inherits = require('inherits');\n\nexports.inherits = inherits;\n\nfunction isSurrogatePair(msg, i) {\n if ((msg.charCodeAt(i) & 0xFC00) !== 0xD800) {\n return false;\n }\n if (i < 0 || i + 1 >= msg.length) {\n return false;\n }\n return (msg.charCodeAt(i + 1) & 0xFC00) === 0xDC00;\n}\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg === 'string') {\n if (!enc) {\n // Inspired by stringToUtf8ByteArray() in closure-library by Google\n // https://github.com/google/closure-library/blob/8598d87242af59aac233270742c8984e2b2bdbe0/closure/goog/crypt/crypt.js#L117-L143\n // Apache License 2.0\n // https://github.com/google/closure-library/blob/master/LICENSE\n var p = 0;\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n if (c < 128) {\n res[p++] = c;\n } else if (c < 2048) {\n res[p++] = (c >> 6) | 192;\n res[p++] = (c & 63) | 128;\n } else if (isSurrogatePair(msg, i)) {\n c = 0x10000 + ((c & 0x03FF) << 10) + (msg.charCodeAt(++i) & 0x03FF);\n res[p++] = (c >> 18) | 240;\n res[p++] = ((c >> 12) & 63) | 128;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n } else {\n res[p++] = (c >> 12) | 224;\n res[p++] = ((c >> 6) & 63) | 128;\n res[p++] = (c & 63) | 128;\n }\n }\n } else if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n }\n } else {\n for (i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n }\n return res;\n}\nexports.toArray = toArray;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nexports.toHex = toHex;\n\nfunction htonl(w) {\n var res = (w >>> 24) |\n ((w >>> 8) & 0xff00) |\n ((w << 8) & 0xff0000) |\n ((w & 0xff) << 24);\n return res >>> 0;\n}\nexports.htonl = htonl;\n\nfunction toHex32(msg, endian) {\n var res = '';\n for (var i = 0; i < msg.length; i++) {\n var w = msg[i];\n if (endian === 'little')\n w = htonl(w);\n res += zero8(w.toString(16));\n }\n return res;\n}\nexports.toHex32 = toHex32;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nexports.zero2 = zero2;\n\nfunction zero8(word) {\n if (word.length === 7)\n return '0' + word;\n else if (word.length === 6)\n return '00' + word;\n else if (word.length === 5)\n return '000' + word;\n else if (word.length === 4)\n return '0000' + word;\n else if (word.length === 3)\n return '00000' + word;\n else if (word.length === 2)\n return '000000' + word;\n else if (word.length === 1)\n return '0000000' + word;\n else\n return word;\n}\nexports.zero8 = zero8;\n\nfunction join32(msg, start, end, endian) {\n var len = end - start;\n assert(len % 4 === 0);\n var res = new Array(len / 4);\n for (var i = 0, k = start; i < res.length; i++, k += 4) {\n var w;\n if (endian === 'big')\n w = (msg[k] << 24) | (msg[k + 1] << 16) | (msg[k + 2] << 8) | msg[k + 3];\n else\n w = (msg[k + 3] << 24) | (msg[k + 2] << 16) | (msg[k + 1] << 8) | msg[k];\n res[i] = w >>> 0;\n }\n return res;\n}\nexports.join32 = join32;\n\nfunction split32(msg, endian) {\n var res = new Array(msg.length * 4);\n for (var i = 0, k = 0; i < msg.length; i++, k += 4) {\n var m = msg[i];\n if (endian === 'big') {\n res[k] = m >>> 24;\n res[k + 1] = (m >>> 16) & 0xff;\n res[k + 2] = (m >>> 8) & 0xff;\n res[k + 3] = m & 0xff;\n } else {\n res[k + 3] = m >>> 24;\n res[k + 2] = (m >>> 16) & 0xff;\n res[k + 1] = (m >>> 8) & 0xff;\n res[k] = m & 0xff;\n }\n }\n return res;\n}\nexports.split32 = split32;\n\nfunction rotr32(w, b) {\n return (w >>> b) | (w << (32 - b));\n}\nexports.rotr32 = rotr32;\n\nfunction rotl32(w, b) {\n return (w << b) | (w >>> (32 - b));\n}\nexports.rotl32 = rotl32;\n\nfunction sum32(a, b) {\n return (a + b) >>> 0;\n}\nexports.sum32 = sum32;\n\nfunction sum32_3(a, b, c) {\n return (a + b + c) >>> 0;\n}\nexports.sum32_3 = sum32_3;\n\nfunction sum32_4(a, b, c, d) {\n return (a + b + c + d) >>> 0;\n}\nexports.sum32_4 = sum32_4;\n\nfunction sum32_5(a, b, c, d, e) {\n return (a + b + c + d + e) >>> 0;\n}\nexports.sum32_5 = sum32_5;\n\nfunction sum64(buf, pos, ah, al) {\n var bh = buf[pos];\n var bl = buf[pos + 1];\n\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n buf[pos] = hi >>> 0;\n buf[pos + 1] = lo;\n}\nexports.sum64 = sum64;\n\nfunction sum64_hi(ah, al, bh, bl) {\n var lo = (al + bl) >>> 0;\n var hi = (lo < al ? 1 : 0) + ah + bh;\n return hi >>> 0;\n}\nexports.sum64_hi = sum64_hi;\n\nfunction sum64_lo(ah, al, bh, bl) {\n var lo = al + bl;\n return lo >>> 0;\n}\nexports.sum64_lo = sum64_lo;\n\nfunction sum64_4_hi(ah, al, bh, bl, ch, cl, dh, dl) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n\n var hi = ah + bh + ch + dh + carry;\n return hi >>> 0;\n}\nexports.sum64_4_hi = sum64_4_hi;\n\nfunction sum64_4_lo(ah, al, bh, bl, ch, cl, dh, dl) {\n var lo = al + bl + cl + dl;\n return lo >>> 0;\n}\nexports.sum64_4_lo = sum64_4_lo;\n\nfunction sum64_5_hi(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var carry = 0;\n var lo = al;\n lo = (lo + bl) >>> 0;\n carry += lo < al ? 1 : 0;\n lo = (lo + cl) >>> 0;\n carry += lo < cl ? 1 : 0;\n lo = (lo + dl) >>> 0;\n carry += lo < dl ? 1 : 0;\n lo = (lo + el) >>> 0;\n carry += lo < el ? 1 : 0;\n\n var hi = ah + bh + ch + dh + eh + carry;\n return hi >>> 0;\n}\nexports.sum64_5_hi = sum64_5_hi;\n\nfunction sum64_5_lo(ah, al, bh, bl, ch, cl, dh, dl, eh, el) {\n var lo = al + bl + cl + dl + el;\n\n return lo >>> 0;\n}\nexports.sum64_5_lo = sum64_5_lo;\n\nfunction rotr64_hi(ah, al, num) {\n var r = (al << (32 - num)) | (ah >>> num);\n return r >>> 0;\n}\nexports.rotr64_hi = rotr64_hi;\n\nfunction rotr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.rotr64_lo = rotr64_lo;\n\nfunction shr64_hi(ah, al, num) {\n return ah >>> num;\n}\nexports.shr64_hi = shr64_hi;\n\nfunction shr64_lo(ah, al, num) {\n var r = (ah << (32 - num)) | (al >>> num);\n return r >>> 0;\n}\nexports.shr64_lo = shr64_lo;\n","'use strict';\n\nvar hash = require('hash.js');\nvar utils = require('minimalistic-crypto-utils');\nvar assert = require('minimalistic-assert');\n\nfunction HmacDRBG(options) {\n if (!(this instanceof HmacDRBG))\n return new HmacDRBG(options);\n this.hash = options.hash;\n this.predResist = !!options.predResist;\n\n this.outLen = this.hash.outSize;\n this.minEntropy = options.minEntropy || this.hash.hmacStrength;\n\n this._reseed = null;\n this.reseedInterval = null;\n this.K = null;\n this.V = null;\n\n var entropy = utils.toArray(options.entropy, options.entropyEnc || 'hex');\n var nonce = utils.toArray(options.nonce, options.nonceEnc || 'hex');\n var pers = utils.toArray(options.pers, options.persEnc || 'hex');\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n this._init(entropy, nonce, pers);\n}\nmodule.exports = HmacDRBG;\n\nHmacDRBG.prototype._init = function init(entropy, nonce, pers) {\n var seed = entropy.concat(nonce).concat(pers);\n\n this.K = new Array(this.outLen / 8);\n this.V = new Array(this.outLen / 8);\n for (var i = 0; i < this.V.length; i++) {\n this.K[i] = 0x00;\n this.V[i] = 0x01;\n }\n\n this._update(seed);\n this._reseed = 1;\n this.reseedInterval = 0x1000000000000; // 2^48\n};\n\nHmacDRBG.prototype._hmac = function hmac() {\n return new hash.hmac(this.hash, this.K);\n};\n\nHmacDRBG.prototype._update = function update(seed) {\n var kmac = this._hmac()\n .update(this.V)\n .update([ 0x00 ]);\n if (seed)\n kmac = kmac.update(seed);\n this.K = kmac.digest();\n this.V = this._hmac().update(this.V).digest();\n if (!seed)\n return;\n\n this.K = this._hmac()\n .update(this.V)\n .update([ 0x01 ])\n .update(seed)\n .digest();\n this.V = this._hmac().update(this.V).digest();\n};\n\nHmacDRBG.prototype.reseed = function reseed(entropy, entropyEnc, add, addEnc) {\n // Optional entropy enc\n if (typeof entropyEnc !== 'string') {\n addEnc = add;\n add = entropyEnc;\n entropyEnc = null;\n }\n\n entropy = utils.toArray(entropy, entropyEnc);\n add = utils.toArray(add, addEnc);\n\n assert(entropy.length >= (this.minEntropy / 8),\n 'Not enough entropy. Minimum is: ' + this.minEntropy + ' bits');\n\n this._update(entropy.concat(add || []));\n this._reseed = 1;\n};\n\nHmacDRBG.prototype.generate = function generate(len, enc, add, addEnc) {\n if (this._reseed > this.reseedInterval)\n throw new Error('Reseed is required');\n\n // Optional encoding\n if (typeof enc !== 'string') {\n addEnc = add;\n add = enc;\n enc = null;\n }\n\n // Optional additional data\n if (add) {\n add = utils.toArray(add, addEnc || 'hex');\n this._update(add);\n }\n\n var temp = [];\n while (temp.length < len) {\n this.V = this._hmac().update(this.V).digest();\n temp = temp.concat(this.V);\n }\n\n var res = temp.slice(0, len);\n this._update(add);\n this._reseed++;\n return utils.encode(res, enc);\n};\n","var http = require('http')\nvar url = require('url')\n\nvar https = module.exports\n\nfor (var key in http) {\n if (http.hasOwnProperty(key)) https[key] = http[key]\n}\n\nhttps.request = function (params, cb) {\n params = validateParams(params)\n return http.request.call(this, params, cb)\n}\n\nhttps.get = function (params, cb) {\n params = validateParams(params)\n return http.get.call(this, params, cb)\n}\n\nfunction validateParams (params) {\n if (typeof params === 'string') {\n params = url.parse(params)\n }\n if (!params.protocol) {\n params.protocol = 'https:'\n }\n if (params.protocol !== 'https:') {\n throw new Error('Protocol \"' + params.protocol + '\" not supported. Expected \"https:\"')\n }\n return params\n}\n","/* This file is generated from the Unicode IDNA table, using\n the build-unicode-tables.py script. Please edit that\n script instead of this file. */\n\n/* istanbul ignore next */\n(function (root, factory) {\n if (typeof define === 'function' && define.amd) {\n define([], function () { return factory(); });\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.uts46_map = factory();\n }\n}(this, function () {\nvar blocks = [\n new Uint32Array([2157250,2157314,2157378,2157442,2157506,2157570,2157634,0,2157698,2157762,2157826,2157890,2157954,0,2158018,0]),\n new Uint32Array([2179041,6291456,2179073,6291456,2179105,6291456,2179137,6291456,2179169,6291456,2179201,6291456,2179233,6291456,2179265,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([0,2113729,2197345,2197377,2113825,2197409,2197441,2113921,2197473,2114017,2197505,2197537,2197569,2197601,2197633,2197665]),\n new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,23068672,23068672,23068672,0,0,0,0,23068672]),\n new Uint32Array([14680064,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064]),\n new Uint32Array([2196001,2196033,2196065,2196097,2196129,2196161,2196193,2196225,2196257,2196289,2196321,2196353,2196385,2196417,2196449,2196481]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,6291456,0,0,0,0,0]),\n new Uint32Array([2097281,2105921,2097729,2106081,0,2097601,2162337,2106017,2133281,2097505,2105889,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([2177025,6291456,2177057,6291456,2177089,6291456,2177121,6291456,2177153,6291456,2177185,6291456,2177217,6291456,2177249,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,0,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456]),\n new Uint32Array([2134435,2134531,2134627,2134723,2134723,2134819,2134819,2134915,2134915,2135011,2105987,2135107,2135203,2135299,2131587,2135395]),\n new Uint32Array([0,0,0,0,0,0,0,6291456,2168673,2169249,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2147906,2147970,2148034,2148098,2148162,2148226,2148290,2148354,2147906,2147970,2148034,2148098,2148162,2148226,2148290,2148354]),\n new Uint32Array([2125219,2125315,2152834,2152898,2125411,2152962,2153026,2125506,2125507,2125603,2153090,2153154,2153218,2153282,2153346,2105348]),\n new Uint32Array([2203393,6291456,2203425,6291456,2203457,6291456,2203489,6291456,6291456,6291456,6291456,2203521,6291456,2181281,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,6291456,2145538,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,6291456]),\n new Uint32Array([2139426,2160834,2160898,2160962,2134242,2161026,2161090,2161154,2161218,2161282,2161346,2161410,2138658,2161474,2161538,2134722]),\n new Uint32Array([2119939,2124930,2125026,2106658,2125218,2128962,2129058,2129154,2129250,2129346,2129442,2108866,2108770,2150466,2150530,2150594]),\n new Uint32Array([2201601,6291456,2201633,6291456,2201665,6291456,2201697,6291456,2201729,6291456,2201761,6291456,2201793,6291456,2201825,6291456]),\n new Uint32Array([2193537,2193569,2193601,2193633,2193665,2193697,2193729,2193761,2193793,2193825,2193857,2193889,2193921,2193953,2193985,2194017]),\n new Uint32Array([6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2190561,6291456,2190593,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2190625,6291456,2190657,6291456,23068672]),\n new Uint32Array([2215905,2215937,2215969,2216001,2216033,2216065,2216097,2216129,2216161,2216193,2216225,2216257,2105441,2216289,2216321,2216353]),\n new Uint32Array([23068672,18884130,23068672,23068672,23068672,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2191233,2191265,2191297,2191329,2191361,2191393,2191425,2117377,2191457,2191489,2191521,2191553,2191585,2191617,2191649,2117953]),\n new Uint32Array([2132227,2132323,2132419,2132419,2132515,2132515,2132611,2132707,2132707,2132803,2132899,2132899,2132995,2132995,2133091,2133187]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,0,0]),\n new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,10609889,10610785,10609921,10610817,2222241]),\n new Uint32Array([6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0]),\n new Uint32Array([2219969,2157121,2157441,2157505,2157889,2157953,2220001,2158465,2158529,10575617,2156994,2157058,2129923,2130019,2157122,2157186]),\n new Uint32Array([6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2185249,6291456,2185281,6291456,2185313,6291456,2185345,6291456,2185377,6291456,2185409,6291456,2185441,6291456,2185473,6291456]),\n new Uint32Array([0,0,0,0,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,0,0,23068672,23068672,23068672,6291456,0]),\n new Uint32Array([2183361,6291456,2183393,6291456,2183425,6291456,2183457,6291456,2183489,6291456,2183521,6291456,2183553,6291456,2183585,6291456]),\n new Uint32Array([2192161,2192193,2192225,2192257,2192289,2192321,2192353,2192385,2192417,2192449,2192481,2192513,2192545,2192577,2192609,2192641]),\n new Uint32Array([2212001,2212033,2212065,2212097,2212129,2212161,2212193,2212225,2212257,2212289,2212321,2212353,2212385,2212417,2212449,2207265]),\n new Uint32Array([2249825,2249857,2249889,2249921,2249954,2250018,2250082,2250145,2250177,2250209,2250241,2250274,2250337,2250370,2250433,2250465]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2147905,2147969,2148033,2148097,2148161,2148225,2148289,2148353]),\n new Uint32Array([10485857,6291456,2197217,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,23068672,23068672]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2180353,2180385,2144033,2180417,2180449,2180481,2180513,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,10610209,10610465,10610241,10610753,10609857]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0,0]),\n new Uint32Array([2223842,2223906,2223970,2224034,2224098,2224162,2224226,2224290,2224354,2224418,2224482,2224546,2224610,2224674,2224738,2224802]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([23068672,23068672,23068672,18923650,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,18923714,23068672,23068672]),\n new Uint32Array([2126179,2125538,2126275,2126371,2126467,2125634,2126563,2105603,2105604,2125346,2126659,2126755,2126851,2098179,2098181,2098182]),\n new Uint32Array([2227426,2227490,2227554,2227618,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2192353,2240642,2240642,2240705,2240737,2240737,2240769,2240802,2240866,2240929,2240961,2240993,2241025,2241057,2241089,2241121]),\n new Uint32Array([6291456,2170881,2170913,2170945,6291456,2170977,6291456,2171009,2171041,6291456,6291456,6291456,2171073,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2132226,2132514,2163586,2132610,2160386,2133090,2133186,2160450,2160514,2160578,2133570,2106178,2160642,2133858,2160706,2160770]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10532162,10532226,10532290,10532354,10532418,10532482,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672]),\n new Uint32Array([2098209,2108353,2108193,2108481,2170241,2111713,2105473,2105569,2105601,2112289,2112481,2098305,2108321,0,0,0]),\n new Uint32Array([2209121,2209153,2209185,2209217,2209249,2209281,2209313,2209345,2209377,2209409,2209441,2209473,2207265,2209505,2209537,2209569]),\n new Uint32Array([2189025,6291456,2189057,6291456,2189089,6291456,2189121,6291456,2189153,6291456,2189185,6291456,2189217,6291456,2189249,6291456]),\n new Uint32Array([2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2165764,2140004]),\n new Uint32Array([2215105,6291456,2215137,6291456,6291456,2215169,2215201,6291456,6291456,6291456,2215233,2215265,2215297,2215329,2215361,2215393]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,23068672,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([10505091,10505187,10505283,10505379,10505475,10505571,10505667,10505763,10505859,10505955,10506051,10506147,10506243,10506339,10506435,10506531]),\n new Uint32Array([2229730,2229794,2229858,2229922,2229986,2230050,2230114,2230178,2230242,2230306,2230370,2230434,2230498,2230562,2230626,2230690]),\n new Uint32Array([2105505,2098241,2108353,2108417,2105825,0,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177]),\n new Uint32Array([6291456,6291456,6291456,6291456,10502115,10502178,10502211,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),\n new Uint32Array([2190305,6291456,2190337,6291456,2190369,6291456,2190401,6291456,2190433,6291456,2190465,6291456,2190497,6291456,2190529,6291456]),\n new Uint32Array([2173793,2173985,2174017,6291456,2173761,2173697,6291456,2174689,6291456,2174017,2174721,6291456,6291456,2174753,2174785,2174817]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2099521,2099105,2120705,2098369,2120801,2103361,2097985,2098433,2121377,2121473,2099169,2099873,2098401,2099393,2152609,2100033]),\n new Uint32Array([2132898,2163842,2163906,2133282,2132034,2131938,2137410,2132802,2132706,2164866,2133282,2160578,2165186,2165186,6291456,6291456]),\n new Uint32Array([10500003,10500099,10500195,10500291,10500387,10500483,10500579,10500675,10500771,10500867,10500963,10501059,10501155,10501251,10501347,10501443]),\n new Uint32Array([2163458,2130978,2131074,2131266,2131362,2163522,2160130,2132066,2131010,2131106,2106018,2131618,2131298,2132034,2131938,2137410]),\n new Uint32Array([2212961,2116993,2212993,2213025,2213057,2213089,2213121,2213153,2213185,2213217,2213249,2209633,2213281,2213313,2213345,2213377]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2113729,2113825,2113921,2114017,2114113,2114209,2114305,2114401,2114497,2114593,2114689,2114785,2114881,2114977,2115073,2115169]),\n new Uint32Array([2238177,2238209,2238241,2238273,2238305,2238337,2238337,2217537,2238369,2238401,2238433,2238465,2215649,2238497,2238529,2238561]),\n new Uint32Array([2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905]),\n new Uint32Array([6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,0]),\n new Uint32Array([6291456,0,6291456,2145026,0,6291456,2145090,0,6291456,6291456,0,0,23068672,0,23068672,23068672]),\n new Uint32Array([2099233,2122017,2200673,2098113,2121537,2103201,2200705,2104033,2121857,2121953,2122401,2099649,2099969,2123009,2100129,2100289]),\n new Uint32Array([6291456,23068672,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0]),\n new Uint32Array([2187681,2187713,2187745,2187777,2187809,2187841,2187873,2187905,2187937,2187969,2188001,2188033,2188065,2188097,2188129,2188161]),\n new Uint32Array([0,10554498,10554562,10554626,10554690,10554754,10554818,10554882,10554946,10555010,10555074,6291456,6291456,0,0,0]),\n new Uint32Array([2235170,2235234,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0]),\n new Uint32Array([2181153,6291456,2188897,6291456,6291456,2188929,6291456,6291456,6291456,6291456,6291456,6291456,2111905,2100865,2188961,2188993]),\n new Uint32Array([2100833,2100897,0,0,2101569,2101697,2101825,2101953,2102081,2102209,10575617,2187041,10502177,10489601,10489697,2112289]),\n new Uint32Array([6291456,2172833,6291456,2172865,2172897,2172929,2172961,6291456,2172993,6291456,2173025,6291456,2173057,6291456,2173089,6291456]),\n new Uint32Array([6291456,0,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,2190721]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,6291456,6291456]),\n new Uint32Array([2184993,6291456,2185025,6291456,2185057,6291456,2185089,6291456,2185121,6291456,2185153,6291456,2185185,6291456,2185217,6291456]),\n new Uint32Array([2115265,2115361,2115457,2115553,2115649,2115745,2115841,2115937,2116033,2116129,2116225,2116321,2150658,2150722,2200225,6291456]),\n new Uint32Array([2168321,6291456,2168353,6291456,2168385,6291456,2168417,6291456,2168449,6291456,2168481,6291456,2168513,6291456,2168545,6291456]),\n new Uint32Array([23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,0,6291456,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,2186625,0,0,6291456,6291456,2186657,2186689,2186721,2173505,0,10496067,10496163,10496259]),\n new Uint32Array([2178785,6291456,2178817,6291456,2178849,6291456,2178881,6291456,2178913,6291456,2178945,6291456,2178977,6291456,2179009,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0]),\n new Uint32Array([2097152,0,0,0,2097152,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,2197857,2197889,2197921,2197953,2197985,2198017,0,0,2198049,2198081,2198113,2198145,2198177,2198209]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2098209,2167297,2111137,6291456]),\n new Uint32Array([2171393,6291456,2171425,6291456,2171457,6291456,2171489,6291456,2171521,6291456,2171553,6291456,2171585,6291456,2171617,6291456]),\n new Uint32Array([2206753,2206785,2195457,2206817,2206849,2206881,2206913,2197153,2197153,2206945,2117857,2206977,2207009,2207041,2207073,2207105]),\n new Uint32Array([0,0,0,0,0,0,0,23068672,0,0,0,0,2144834,2144898,0,2144962]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672]),\n new Uint32Array([2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,0,2105505,2098241]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,2202049,6291456,2202081,6291456,2202113,6291456,2202145,6291456,2202177,6291456,2202209,6291456,2202241,6291456]),\n new Uint32Array([10501155,10501251,10501347,10501443,10501539,10501635,10501731,10501827,10501923,10502019,2141731,2105505,2098177,2155586,2166530,0]),\n new Uint32Array([2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441]),\n new Uint32Array([2146882,2146946,2147010,2147074,2147138,2147202,2147266,2147330,2146882,2146946,2147010,2147074,2147138,2147202,2147266,2147330]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([10502307,10502403,10502499,10502595,10502691,10502787,10502883,10502979,10503075,10503171,10503267,10503363,10503459,10503555,10503651,10503747]),\n new Uint32Array([2179937,2179969,2180001,2180033,2156545,2180065,2156577,2180097,2180129,2180161,2180193,2180225,2180257,2180289,2156737,2180321]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,0,0,0,6291456,0,0,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0]),\n new Uint32Array([2227682,2227746,2227810,2227874,2227938,2228002,2228066,2228130,2228194,2228258,2228322,2228386,2228450,2228514,2228578,2228642]),\n new Uint32Array([2105601,2169121,2108193,2170049,2181025,2181057,2112481,2108321,2108289,2181089,2170497,2100865,2181121,2173601,2173633,2173665]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2180641,6291456,6291456,6291456]),\n new Uint32Array([0,6291456,6291456,6291456,0,6291456,0,6291456,0,0,6291456,6291456,0,6291456,6291456,6291456]),\n new Uint32Array([2178273,6291456,2178305,6291456,2178337,6291456,2178369,6291456,2178401,6291456,2178433,6291456,2178465,6291456,2178497,6291456]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,14680064,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456]),\n new Uint32Array([2237377,2237409,2236225,2237441,2237473,2217441,2215521,2215553,2217473,2237505,2237537,2209697,2237569,2215585,2237601,2237633]),\n new Uint32Array([2221985,2165601,2165601,2165665,2165665,2222017,2222017,2165729,2165729,2158913,2158913,2158913,2158913,2097281,2097281,2105921]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2149634,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2176897,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,2176929,6291456,2176961,6291456,2176993,6291456]),\n new Uint32Array([2172641,6291456,2172673,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2172705,2172737,6291456,2172769,2172801,6291456]),\n new Uint32Array([2099173,2104196,2121667,2099395,2121763,2152258,2152322,2098946,2152386,2121859,2121955,2099333,2122051,2104324,2099493,2122147]),\n new Uint32Array([6291456,6291456,6291456,2145794,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,2145858,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,0,0,6291456,0]),\n new Uint32Array([0,2105921,2097729,0,2097377,0,0,2106017,0,2097505,2105889,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2239074,2239138,2239201,2239233,2239265,2239297,2239329,2239361,0,2239393,2239425,2239425,2239458,2239521,2239553,2209569]),\n new Uint32Array([14680064,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,6291456,23068672]),\n new Uint32Array([2108321,2108289,2113153,2098209,2180897,2180929,2180961,2111137,2098241,2108353,2170241,2170273,2180993,2105825,6291456,2105473]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2146114,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([2105921,2105921,2105921,2222049,2222049,2130977,2130977,2130977,2130977,2160065,2160065,2160065,2160065,2097729,2097729,2097729]),\n new Uint32Array([2218145,2214785,2207937,2218177,2218209,2192993,2210113,2212769,2218241,2218273,2216129,2218305,2216161,2218337,2218369,2218401]),\n new Uint32Array([0,0,0,2156546,2156610,2156674,2156738,2156802,0,0,0,0,0,2156866,23068672,2156930]),\n new Uint32Array([23068672,23068672,23068672,0,0,0,0,23068672,23068672,0,0,23068672,23068672,23068672,0,0]),\n new Uint32Array([2213409,2213441,2213473,2213505,2213537,2213569,2213601,2213633,2213665,2195681,2213697,2213729,2213761,2213793,2213825,2213857]),\n new Uint32Array([2100033,2099233,2122017,2200673,2098113,2121537,2103201,2200705,2104033,2121857,2121953,2122401,2099649,2099969,2123009,2100129]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2201857,6291456,2201889,6291456,2201921,6291456,2201953,6291456,2201985,6291456,2202017,6291456,2176193,2176257,23068672,23068672]),\n new Uint32Array([6291456,6291456,23068672,23068672,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2188193,2188225,2188257,2188289,2188321,2188353,2188385,2188417,2188449,2188481,2188513,2188545,2188577,2188609,2188641,0]),\n new Uint32Array([10554529,2221089,0,10502113,10562017,10537921,10538049,2221121,2221153,0,0,0,0,0,0,0]),\n new Uint32Array([2213889,2213921,2213953,2213985,2214017,2214049,2214081,2194177,2214113,2214145,2214177,2214209,2214241,2214273,2214305,2214337]),\n new Uint32Array([2166978,2167042,2099169,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2180545,6291456,6291456,6291456]),\n new Uint32Array([10518915,10519011,10519107,10519203,2162242,2162306,2159554,2162370,2159362,2159618,2105922,2162434,2159746,2162498,2159810,2159874]),\n new Uint32Array([2161730,2161794,2135586,2161858,2161922,2137186,2131810,2160290,2135170,2161986,2137954,2162050,2162114,2162178,10518723,10518819]),\n new Uint32Array([10506627,10506723,10506819,10506915,10507011,10507107,10507203,10507299,10507395,10507491,10507587,10507683,10507779,10507875,10507971,10508067]),\n new Uint32Array([6291456,23068672,23068672,23068672,0,23068672,23068672,0,0,0,0,0,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0]),\n new Uint32Array([2175873,2175905,2175937,2175969,2176001,2176033,2176065,2176097,2176129,2176161,2176193,2176225,2176257,2176289,2176321,2176353]),\n new Uint32Array([2140006,2140198,2140390,2140582,2140774,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,23068672,23068672,23068672]),\n new Uint32Array([2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241]),\n new Uint32Array([0,23068672,0,0,0,0,0,0,0,2145154,2145218,2145282,6291456,0,2145346,0]),\n new Uint32Array([0,0,0,0,10531458,10495395,2148545,2143201,2173473,2148865,2173505,0,2173537,0,2173569,2149121]),\n new Uint32Array([10537282,10495683,2148738,2148802,2148866,0,6291456,2148930,2186593,2173473,2148737,2148865,2148802,10495779,10495875,10495971]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2215425,2215457,2215489,2215521,2215553,2215585,2215617,2215649,2215681,2215713,2215745,2215777,2192033,2215809,2215841,2215873]),\n new Uint32Array([2242049,2242081,2242113,2242145,2242177,2242209,2242241,2242273,2215937,2242305,2242338,2242401,2242433,2242465,2242497,2216001]),\n new Uint32Array([10554529,2221089,0,0,10562017,10502113,10538049,10537921,2221185,10489601,10489697,10609889,10609921,2141729,2141793,10610273]),\n new Uint32Array([2141923,2142019,2142115,2142211,2142307,2142403,2142499,2142595,2142691,0,0,0,0,0,0,0]),\n new Uint32Array([0,2221185,2221217,10609857,10609857,10489601,10489697,10609889,10609921,2141729,2141793,2221345,2221377,2221409,2221441,2187105]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,18923970,23068672,23068672,23068672,0,6291456,6291456]),\n new Uint32Array([2183105,6291456,2183137,6291456,2183169,6291456,2183201,6291456,2183233,6291456,2183265,6291456,2183297,6291456,2183329,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([2134434,2134818,2097666,2097186,2097474,2097698,2105986,2131586,2132450,2131874,2131778,2135970,2135778,2161602,2136162,2161666]),\n new Uint32Array([2236865,2236897,2236930,2236993,2237025,2235681,2237058,2237121,2237153,2237185,2237217,2217281,2237250,2191233,2237313,2237345]),\n new Uint32Array([2190049,6291456,2190081,6291456,2190113,6291456,2190145,6291456,2190177,6291456,2190209,6291456,2190241,6291456,2190273,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2101922,2102050,2102178,2102306,10498755,10498851,10498947,10499043,10499139,10499235,10499331,10499427,10499523,10489604,10489732,10489860]),\n new Uint32Array([2166914,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2181601,2170561,2181633,2181665,2170753,2181697,2172897,2170881,2181729,2170913,2172929,2113441,2181761,2181793,2171009,2173761]),\n new Uint32Array([0,2105921,2097729,2106081,0,2097601,2162337,2106017,2133281,2097505,0,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([2248001,2248033,2248066,2248130,2248193,2248226,2248289,2248322,2248385,2248417,2216673,2248450,2248514,2248577,2248610,2248673]),\n new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([2169729,6291456,2169761,6291456,2169793,6291456,2169825,6291456,2169857,2169889,6291456,2169921,6291456,2143329,6291456,2098305]),\n new Uint32Array([2162178,2163202,2163266,2135170,2136226,2161986,2137954,2159426,2159490,2163330,2159554,2163394,2159682,2139522,2136450,2159746]),\n new Uint32Array([2173953,2173985,0,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2174209,2174241,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,4271169,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2174273]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,6291456,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,2190785,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2189793,6291456,2189825,6291456,2189857,6291456,2189889,6291456,2189921,6291456,2189953,6291456,2189985,6291456,2190017,6291456]),\n new Uint32Array([2105601,2112289,2108193,2112481,2112577,0,2098305,2108321,2108289,2100865,2113153,2108481,2113345,0,2098209,2111137]),\n new Uint32Array([2172129,6291456,2172161,6291456,2172193,6291456,2172225,6291456,2172257,6291456,2172289,6291456,2172321,6291456,2172353,6291456]),\n new Uint32Array([2214753,6291456,2214785,6291456,6291456,2214817,2214849,2214881,2214913,2214945,2214977,2215009,2215041,2215073,2194401,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([0,0,0,0,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([10610305,10610337,10575617,2221761,10610401,10610433,10502177,0,10610465,10610497,10610529,10610561,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,23068672,0,0,0,0,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2187105,2187137,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2199393,2199425,2199457,2199489,2199521,2199553,2199585,2199617,2199649,2199681,2199713,2199745,2199777,2199809,2199841,0]),\n new Uint32Array([2217249,2217281,2217313,2217345,2217377,2217409,2217441,2217473,2215617,2217505,2217537,2217569,2214753,2217601,2217633,2217665]),\n new Uint32Array([2170273,2170305,6291456,2170337,2170369,6291456,2170401,2170433,2170465,6291456,6291456,6291456,2170497,2170529,6291456,2170561]),\n new Uint32Array([2188673,6291456,2188705,2188737,2188769,6291456,6291456,2188801,6291456,2188833,6291456,2188865,6291456,2180929,2181505,2180897]),\n new Uint32Array([10489988,10490116,10490244,10490372,10490500,10490628,10490756,10490884,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2147393,2147457,2147521,2147585,2147649,2147713,2147777,2147841]),\n new Uint32Array([23068672,23068672,0,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2241153,2241185,2241217,2215809,2241250,2241313,2241345,2241377,2217921,2241377,2241409,2215873,2241441,2241473,2241505,2241537]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2220417,2220417,2220449,2220449,2220481,2220481,2220513,2220513,2220545,2220545,2220577,2220577,2220609,2220609,2220641,2220641]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,2144002,0,6291456,6291456,0,0,6291456,6291456,6291456]),\n new Uint32Array([2167105,2167137,2167169,2167201,2167233,2167265,2167297,2167329,2167361,2167393,2167425,2167457,2167489,2167521,2167553,2167585]),\n new Uint32Array([10575521,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),\n new Uint32Array([2234146,2234210,2234274,2234338,2234402,2234466,2234530,2234594,2234658,2234722,2234786,2234850,2234914,2234978,2235042,2235106]),\n new Uint32Array([0,0,0,0,0,0,0,2180577,0,0,0,0,0,2180609,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,0,0,6291456,6291456]),\n new Uint32Array([2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2242529,2242561,2242593,2242625,2242657,2242689,2242721,2242753,2207937,2218177,2242785,2242817,2242849,2242882,2242945,2242977]),\n new Uint32Array([2118049,2105345,2118241,2105441,2118433,2118529,2118625,2118721,2118817,2200257,2200289,2191809,2200321,2200353,2200385,2200417]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([2185505,6291456,2185537,6291456,2185569,6291456,2185601,6291456,2185633,6291456,2185665,6291456,2185697,6291456,2185729,6291456]),\n new Uint32Array([2231970,2232034,2232098,2232162,2232226,2232290,2232354,2232418,2232482,2232546,2232610,2232674,2232738,2232802,2232866,2232930]),\n new Uint32Array([2218625,2246402,2246466,2246530,2246594,2246657,2246689,2246689,2218657,2219681,2246721,2246753,2246785,2246818,2246881,2208481]),\n new Uint32Array([2197025,2197057,2197089,2197121,2197153,2197185,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2219137,2216961,2219169,2219201,2219233,2219265,2219297,2217025,2215041,2219329,2217057,2219361,2217089,2219393,2197153,2219426]),\n new Uint32Array([23068672,23068672,23068672,0,0,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713]),\n new Uint32Array([2243522,2243585,2243617,2243649,2243681,2210113,2243713,2243746,2243810,2243874,2243937,2243970,2244033,2244065,2244097,2244129]),\n new Uint32Array([2178017,6291456,2178049,6291456,2178081,6291456,2178113,6291456,2178145,6291456,2178177,6291456,2178209,6291456,2178241,6291456]),\n new Uint32Array([10553858,2165314,10518722,6291456,10518818,0,10518914,2130690,10519010,2130786,10519106,2130882,10519202,2165378,10554050,2165506]),\n new Uint32Array([0,0,2135491,2135587,2135683,2135779,2135875,2135971,2135971,2136067,2136163,2136259,2136355,2136355,2136451,2136547]),\n new Uint32Array([23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2220033,2220033,2220065,2220065,2220065,2220065,2220097,2220097,2220097,2220097,2220129,2220129,2220129,2220129,2220161,2220161]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2100897,2100898,2100899,2150018,2100865,2100866,2100867,2100868,2150082,2108481,2109858,2109859,2105569,2105505,2098241,2105601]),\n new Uint32Array([2097217,2097505,2097505,2097505,2097505,2165570,2165570,2165634,2165634,2165698,2165698,2097858,2097858,0,0,2097152]),\n new Uint32Array([23068672,6291456,23068672,23068672,23068672,6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,23068672,23068672]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([10503843,10503939,10504035,10504131,10504227,10504323,10504419,10504515,10504611,10504707,10504803,10504899,10504995,10491140,10491268,0]),\n new Uint32Array([2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2134145,2097153,2134241,2105953,2132705,2130977,2160065,2131297,2162049,2133089,2160577,2133857,2235297,2220769,2235329,2235361]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2222401,2222433,2222465,10531394,2222497,2222529,2222561,0,2222593,2222625,2222657,2222689,2222721,2222753,2222785,0]),\n new Uint32Array([2184481,6291456,2184513,6291456,2184545,6291456,2184577,6291456,2184609,6291456,2184641,6291456,2184673,6291456,2184705,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2105570,2156034,2126947,2156098,2153666,2127043,2127139,2156162,0,2127235,2156226,2156290,2156354,2156418,2127331,2127427]),\n new Uint32Array([2215905,2207041,2153185,2241569,2241601,2241633,2241665,2241697,2241730,2241793,2241825,2241857,2241889,2241921,2241954,2242017]),\n new Uint32Array([2203777,6291456,2203809,6291456,2203841,6291456,2203873,6291456,2203905,6291456,2173121,2180993,2181249,2203937,2181313,0]),\n new Uint32Array([2168577,6291456,2168609,6291456,2168641,6291456,2168673,6291456,2168705,6291456,2168737,6291456,2168769,6291456,2168801,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,23068672,23068672,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,0,0]),\n new Uint32Array([2210113,2195521,2210145,2210177,2210209,2210241,2210273,2210305,2210337,2210369,2210401,2210433,2210465,2210497,2210529,2210561]),\n new Uint32Array([6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([2228706,2228770,2228834,2228898,2228962,2229026,2229090,2229154,2229218,2229282,2229346,2229410,2229474,2229538,2229602,2229666]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,18874368,18874368,18874368,0,0]),\n new Uint32Array([2133089,2133281,2133281,2133281,2133281,2160577,2160577,2160577,2160577,2097441,2097441,2097441,2097441,2133857,2133857,2133857]),\n new Uint32Array([6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089]),\n new Uint32Array([2178529,6291456,2178561,6291456,2178593,6291456,2178625,6291456,2178657,6291456,2178689,6291456,2178721,6291456,2178753,6291456]),\n new Uint32Array([2221025,2221025,2221057,2221057,2159329,2159329,2159329,2159329,2097217,2097217,2158914,2158914,2158978,2158978,2159042,2159042]),\n new Uint32Array([2208161,2208193,2208225,2208257,2194433,2208289,2208321,2208353,2208385,2208417,2208449,2208481,2208513,2208545,2208577,2208609]),\n new Uint32Array([2169217,6291456,2169249,6291456,2169281,6291456,2169313,6291456,2169345,6291456,2169377,6291456,2169409,6291456,2169441,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([2133187,2133283,2133283,2133379,2133475,2133571,2133667,2133667,2133763,2133859,2133955,2134051,2134147,2134147,2134243,2134339]),\n new Uint32Array([2197697,2114113,2114209,2197729,2197761,2114305,2197793,2114401,2114497,2197825,2114593,2114689,2114785,2114881,2114977,0]),\n new Uint32Array([2193089,2193121,2193153,2193185,2117665,2117569,2193217,2193249,2193281,2193313,2193345,2193377,2193409,2193441,2193473,2193505]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2184225,6291456,2184257,6291456,2184289,6291456,2184321,6291456,2184353,6291456,2184385,6291456,2184417,6291456,2184449,6291456]),\n new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2100833,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2098657,2098049,2200737,2123489,2123681,2200769,2098625,2100321,2098145,2100449,2098017,2098753,2200801,2200833,2200865,0]),\n new Uint32Array([23068672,23068672,23068672,0,0,0,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0]),\n new Uint32Array([2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,0,2098241,2108353,2108417,2105825,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2181153,2105505,2181185,2167617,2180993]),\n new Uint32Array([2160002,2160066,2160130,2160194,2160258,2132066,2131010,2131106,2106018,2131618,2160322,2131298,2132034,2131938,2137410,2132226]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,6291456]),\n new Uint32Array([2183617,6291456,2183649,6291456,2183681,6291456,2183713,6291456,2183745,6291456,2183777,6291456,2183809,6291456,2183841,6291456]),\n new Uint32Array([0,6291456,6291456,0,6291456,0,0,6291456,6291456,0,6291456,0,0,6291456,0,0]),\n new Uint32Array([2250977,2251009,2251041,2251073,2195009,2251106,2251169,2251201,2251233,2251265,2251297,2251330,2251394,2251457,2251489,2251521]),\n new Uint32Array([2205729,2205761,2205793,2205825,2205857,2205889,2205921,2205953,2205985,2206017,2206049,2206081,2206113,2206145,2206177,2206209]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2143170,2168993,6291456,2169025,6291456,2169057,6291456,2169089,6291456,2143234,2169121,6291456,2169153,6291456,2169185,6291456]),\n new Uint32Array([23068672,23068672,2190689,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2248706,2248769,2248801,2248833,2248865,2248897,2248929,2248962,2249026,2249090,2249154,2240705,2249217,2249249,2249281,2249313]),\n new Uint32Array([10485857,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10495394,6291456,2098209,6291456,6291456,2097152,6291456,10531394]),\n new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([14680064,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2173985,2173953,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889]),\n new Uint32Array([6291456,2186977,6291456,6291456,6291456,6291456,6291456,10537858,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2209601,2209633,2209665,2209697,2209729,2209761,2209793,2209825,2209857,2209889,2209921,2209953,2209985,2210017,2210049,2210081]),\n new Uint32Array([10501539,10501635,10501731,10501827,10501923,10502019,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905]),\n new Uint32Array([2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2194561,2194593,2194625,2119777,2119873,2194657,2194689,2194721,2194753,2194785,2194817,2194849,2194881,2194913,2194945,2194977]),\n new Uint32Array([2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569]),\n new Uint32Array([2222818,2222882,2222946,2223010,2223074,2223138,2223202,2223266,2223330,2223394,2223458,2223522,2223586,2223650,2223714,2223778]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672]),\n new Uint32Array([0,2179553,2179585,2179617,2179649,2144001,2179681,2179713,2179745,2179777,2179809,2156705,2179841,2156833,2179873,2179905]),\n new Uint32Array([6291456,23068672,6291456,2145602,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,6291456,0,0]),\n new Uint32Array([2196513,2196545,2196577,2196609,2196641,2196673,2196705,2196737,2196769,2196801,2196833,2196865,2196897,2196929,2196961,2196993]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2177281,6291456,2177313,6291456,2177345,6291456,2177377,6291456,2177409,6291456,2177441,6291456,2177473,6291456,2177505,6291456]),\n new Uint32Array([2187137,2221473,2221505,2221537,2221569,6291456,6291456,10610209,10610241,10537986,10537986,10537986,10537986,10609857,10609857,10609857]),\n new Uint32Array([2243009,2243041,2216033,2243074,2243137,2243169,2243201,2219617,2243233,2243265,2243297,2243329,2243362,2243425,2243457,2243489]),\n new Uint32Array([10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,10485857,2097152,4194304,4194304,0,0]),\n new Uint32Array([2143042,6291456,2143106,2143106,2168833,6291456,2168865,6291456,6291456,2168897,6291456,2168929,6291456,2168961,6291456,2143170]),\n new Uint32Array([6291456,6291456,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2204193,2204225,2204257,2204289,2204321,2204353,2204385,2204417,2204449,2204481,2204513,2204545,2204577,2204609,2204641,2204673]),\n new Uint32Array([2202753,6291456,2202785,6291456,2202817,6291456,2202849,6291456,2202881,6291456,2202913,6291456,2202945,6291456,2202977,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321]),\n new Uint32Array([2147394,2147458,2147522,2147586,2147650,2147714,2147778,2147842,2147394,2147458,2147522,2147586,2147650,2147714,2147778,2147842]),\n new Uint32Array([2253313,2253346,2253409,2253441,2253473,2253505,2253537,2253569,2253601,2253634,2219393,2253697,2253729,2253761,2253793,2253825]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([2162562,2162626,2131362,2162690,2159938,2160002,2162754,2162818,2160130,2162882,2160194,2160258,2160834,2160898,2161026,2161090]),\n new Uint32Array([2175361,2175393,2175425,2175457,2175489,2175521,2175553,2175585,2175617,2175649,2175681,2175713,2175745,2175777,2175809,2175841]),\n new Uint32Array([2253858,2253921,2253954,2254018,2254082,2196737,2254145,2196865,2254177,2254209,2254241,2254273,2197025,2254306,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2202113,2204129,2188705,2204161]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953]),\n new Uint32Array([2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209]),\n new Uint32Array([2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,0,2108417,0,2111713,2100897,2111905]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0]),\n new Uint32Array([2175425,2175489,2175809,2175905,2175937,2175937,2176193,2176417,2180865,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,2143298,2143298,2143298,2143362,2143362,2143362,2143426,2143426,2143426,2171105,6291456,2171137]),\n new Uint32Array([2120162,2120258,2151618,2151682,2151746,2151810,2151874,2151938,2152002,2120035,2120131,2120227,2152066,2120323,2152130,2120419]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2195361,2142433,2236065,2236097,2236129,2236161,2118241,2117473,2236193,2236225,2236257,2236289,0,0,0,0]),\n new Uint32Array([2189281,6291456,2189313,6291456,2189345,6291456,2189377,6291456,2189409,6291456,2189441,6291456,2189473,6291456,2189505,6291456]),\n new Uint32Array([6291456,6291456,2145922,6291456,6291456,6291456,6291456,2145986,6291456,6291456,6291456,6291456,2146050,6291456,6291456,6291456]),\n new Uint32Array([2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,10502113,10562017,10610401,10502177,10610433,10538049]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,2186401,0,2186433,0,2186465,0,2186497]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,23068672,23068672,23068672]),\n new Uint32Array([0,0,2198241,2198273,2198305,2198337,2198369,2198401,0,0,2198433,2198465,2198497,0,0,0]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,6291456,0,23068672,23068672,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),\n new Uint32Array([0,2105921,2097729,0,2097377,0,0,2106017,2133281,2097505,2105889,0,2097697,2135777,2097633,2097441]),\n new Uint32Array([2197889,2197921,2197953,2197985,2198017,2198049,2198081,2198113,2198145,2198177,2198209,2198241,2198273,2198305,2198337,2198369]),\n new Uint32Array([2132514,2132610,2160386,2133090,2133186,2160450,2160514,2133282,2160578,2133570,2106178,2160642,2133858,2160706,2160770,2134146]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,23068672,6291456,23068672,23068672,6291456,23068672,0,0,0,0,0,0,0,0]),\n new Uint32Array([2184737,6291456,2184769,6291456,2184801,6291456,2184833,6291456,2184865,6291456,2184897,6291456,2184929,6291456,2184961,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,23068672,23068672,23068672,6291456,23068672,23068672,23068672,23068672,23068672,0,0]),\n new Uint32Array([6291456,6291456,6291456,2186753,6291456,6291456,6291456,6291456,2186785,2186817,2186849,2173569,2186881,10496355,10495395,10575521]),\n new Uint32Array([0,0,2097729,0,0,0,0,2106017,0,2097505,0,2097185,0,2135777,2097633,2097441]),\n new Uint32Array([2189537,6291456,2189569,6291456,2189601,6291456,2189633,6291456,2189665,6291456,2189697,6291456,2189729,6291456,2189761,6291456]),\n new Uint32Array([2202497,6291456,2202529,6291456,2202561,6291456,2202593,6291456,2202625,6291456,2202657,6291456,2202689,6291456,2202721,6291456]),\n new Uint32Array([2245217,2218369,2245249,2245282,2245345,2245377,2245410,2245474,2245537,2245569,2245601,2245633,2245665,2245665,2245697,2245729]),\n new Uint32Array([6291456,0,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,0,0,0,0,0,0,23068672,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,6291456,23068672,6291456,23068672,6291456,6291456,6291456,6291456,23068672,23068672]),\n new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2097281,2105921,2097729,2106081,2097377,2097601,2162337,2106017,2133281,2097505,0,2097185,2097697,2135777,2097633,2097441]),\n new Uint32Array([2176641,6291456,2176673,6291456,2176705,6291456,2176737,6291456,2176769,6291456,2176801,6291456,2176833,6291456,2176865,6291456]),\n new Uint32Array([2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953,2174369,2174369,0,0,2100833,2100737]),\n new Uint32Array([2116513,2190817,2190849,2190881,2190913,2190945,2116609,2190977,2191009,2191041,2191073,2117185,2191105,2191137,2191169,2191201]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456]),\n new Uint32Array([2167617,2167649,2167681,2167713,2167745,2167777,2167809,6291456,2167841,2167873,2167905,2167937,2167969,2168001,2168033,4240130]),\n new Uint32Array([2165122,2163970,2164034,2164098,2164162,2164226,2164290,2164354,2164418,2164482,2164546,2133122,2134562,2132162,2132834,2136866]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2186209,2186241,2186273,2186305,2186337,2186369,0,0]),\n new Uint32Array([2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([0,0,23068672,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456]),\n new Uint32Array([0,10537921,10610689,10610273,10610497,10610529,10610305,10610721,10489601,10489697,10610337,10575617,10554529,2221761,2197217,10496577]),\n new Uint32Array([2105473,2105569,2105601,2112289,0,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441]),\n new Uint32Array([2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481]),\n new Uint32Array([2125346,2153410,2153474,2127394,2153538,2153602,2153666,2153730,2105507,2105476,2153794,2153858,2153922,2153986,2154050,2105794]),\n new Uint32Array([2200449,2119681,2200481,2153313,2199873,2199905,2199937,2200513,2200545,2200577,2200609,2119105,2119201,2119297,2119393,2119489]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2175777,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2222273,2197217,2221473,2221505,2221089,2222305,2200865,2099681,2104481,2222337,2099905,2120737,2222369,2103713,2100225,2098785]),\n new Uint32Array([2201377,6291456,2201409,6291456,2201441,6291456,2201473,6291456,2201505,6291456,2201537,6291456,2201569,6291456,6291456,23068672]),\n new Uint32Array([2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793]),\n new Uint32Array([2200897,6291456,2200929,6291456,2200961,6291456,2200993,6291456,2201025,6291456,2180865,6291456,2201057,6291456,2201089,6291456]),\n new Uint32Array([0,0,0,0,0,23068672,23068672,0,6291456,6291456,6291456,0,0,0,0,0]),\n new Uint32Array([2161154,2161410,2138658,2161474,2161538,2097666,2097186,2097474,2162946,2132450,2163010,2163074,2136162,2163138,2161666,2161730]),\n new Uint32Array([2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953]),\n new Uint32Array([0,0,0,0,0,0,23068672,23068672,0,0,0,0,2145410,2145474,0,6291456]),\n new Uint32Array([2244161,2216065,2212769,2244193,2244225,2244257,2244290,2244353,2244385,2244417,2244449,2218273,2244481,2244514,2244577,2244609]),\n new Uint32Array([2125730,2125699,2125795,2125891,2125987,2154114,2154178,2154242,2154306,2154370,2154434,2154498,2126082,2126178,2126274,2126083]),\n new Uint32Array([2237665,2237697,2237697,2237697,2237730,2237793,2237825,2237857,2237890,2237953,2237985,2238017,2238049,2238081,2238113,2238145]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2150146,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,0,0,23068672,23068672,23068672,0,0]),\n new Uint32Array([2214369,2238593,2238625,2238657,2238689,2238721,2238753,2238785,2238817,2238850,2238913,2238945,2238977,2235457,2239009,2239041]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([2252066,2252130,2252193,2252225,2252257,2252290,2252353,2252385,2252417,2252449,2252481,2252513,2252545,2252578,2252641,2252673]),\n new Uint32Array([2197697,2114113,2114209,2197729,2197761,2114305,2197793,2114401,2114497,2197825,2114593,2114689,2114785,2114881,2114977,2197857]),\n new Uint32Array([2224866,2224930,2224994,2225058,2225122,2225186,2225250,2225314,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2219490,2219554,2219617,2219649,2219681,2219714,2219778,2219842,2219905,2219937,0,0,0,0,0,0]),\n new Uint32Array([6291456,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),\n new Uint32Array([2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289]),\n new Uint32Array([2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113,2173985,2173953,2148481,2173601,2173633,2173665]),\n new Uint32Array([2220161,2220161,2220193,2220193,2220193,2220193,2220225,2220225,2220225,2220225,2220257,2220257,2220257,2220257,2220289,2220289]),\n new Uint32Array([2192673,2192705,2192737,2192769,2192801,2192833,2192865,2118049,2192897,2117473,2117761,2192929,2192961,2192993,2193025,2193057]),\n new Uint32Array([2179297,6291456,2179329,6291456,2179361,6291456,2179393,6291456,2179425,6291456,2179457,6291456,2179489,6291456,2179521,6291456]),\n new Uint32Array([6291456,6291456,6291456,23068672,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2235745,2235777,2193633,2235809,2235841,2235873,2235905,2235937,2235969,2116513,2116705,2236001,2200513,2199905,2200545,2236033]),\n new Uint32Array([2113153,2108481,2113345,2113441,2232993,2233025,0,0,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761]),\n new Uint32Array([2170593,6291456,2170625,6291456,2170657,6291456,2170689,2170721,6291456,2170753,6291456,6291456,2170785,6291456,2170817,2170849]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2166786,2166850,0,0,0,0]),\n new Uint32Array([23068672,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,10575617,2187041,10502177,10489601,10489697,0]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2134562,2132162,2132834,2136866,2136482,2164610,2164674,2164738,2164802,2132802,2132706,2164866,2132898,2164930,2164994,2165058]),\n new Uint32Array([6291456,6291456,2098337,2101441,10531458,2153473,6291456,6291456,10531522,2100737,2108193,6291456,2106499,2106595,2106691,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2233122,2233186,2233250,2233314,2233378,2233442,2233506,2233570,2233634,2233698,2233762,2233826,2233890,2233954,2234018,2234082]),\n new Uint32Array([23068672,6291456,23068672,23068672,23068672,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2205217,2205249,2205281,2205313,2205345,2205377,2205409,2205441,2205473,2205505,2205537,2205569,2205601,2205633,2205665,2205697]),\n new Uint32Array([6291456,0,6291456,0,0,0,6291456,6291456,6291456,6291456,0,0,23068672,6291456,23068672,23068672]),\n new Uint32Array([2173601,2173761,2174081,2173569,2174241,2174113,2173953,6291456,2174305,6291456,2174337,6291456,2174369,6291456,2174401,6291456]),\n new Uint32Array([6291456,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([2152450,2152514,2099653,2104452,2099813,2122243,2099973,2152578,2122339,2122435,2122531,2122627,2122723,2104580,2122819,2152642]),\n new Uint32Array([2236385,2236417,2236449,2236482,2236545,2215425,2236577,2236609,2236641,2236673,2215457,2236705,2236737,2236770,2215489,2236833]),\n new Uint32Array([2163394,2159746,2163458,2131362,2163522,2160130,2163778,2132226,2163842,2132898,2163906,2161410,2138658,2097666,2136162,2163650]),\n new Uint32Array([2218721,2246913,2246946,2216385,2247010,2247074,2215009,2247137,2247169,2216481,2247201,2247233,2247266,2247330,2247330,0]),\n new Uint32Array([2129730,2129762,2129858,2129731,2129827,2156482,2156482,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,0,0,0,0,6291456,0,0]),\n new Uint32Array([2203969,2204001,2181377,2204033,2204065,6291456,2204097,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([2169473,6291456,2169505,6291456,2169537,6291456,2169569,6291456,2169601,6291456,2169633,6291456,2169665,6291456,2169697,6291456]),\n new Uint32Array([2141542,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2220801,2220801,2220801,2220801,2220833,2220833,2220865,2220865,2220865,2220865,2220897,2220897,2220897,2220897,2139873,2139873]),\n new Uint32Array([0,0,0,0,0,23068672,23068672,0,0,0,0,0,0,0,6291456,0]),\n new Uint32Array([2214849,2218433,2218465,2218497,2218529,2218561,2214881,2218593,2218625,2218657,2218689,2218721,2218753,2216545,2218785,2218817]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,0,0,0,6291456]),\n new Uint32Array([2136482,2164610,2164674,2164738,2164802,2132802,2132706,2164866,2132898,2164930,2164994,2165058,2165122,2132802,2132706,2164866]),\n new Uint32Array([2207649,2207681,2207713,2207745,2207777,2207809,2207841,2207873,2207905,2207937,2207969,2208001,2208033,2208065,2208097,2208129]),\n new Uint32Array([2123683,2105092,2152706,2123779,2105220,2152770,2100453,2098755,2123906,2124002,2124098,2124194,2124290,2124386,2124482,2124578]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,6291456,0,0,0,0,0,0,0,10485857]),\n new Uint32Array([6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([10508163,10508259,10508355,10508451,2200129,2200161,2192737,2200193,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2203553,6291456,2203585,6291456,6291456,6291456,2203617,6291456,2203649,6291456,2203681,6291456,2203713,6291456,2203745,6291456]),\n new Uint32Array([18884449,18884065,23068672,18884417,18884034,18921185,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,18874368]),\n new Uint32Array([2247393,2247426,2247489,2247521,2247553,2247586,2247649,2247681,2247713,2247745,2247777,2247810,2247873,2247905,2247937,2247969]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,23068672]),\n new Uint32Array([2134145,2097153,2134241,0,2132705,2130977,2160065,2131297,0,2133089,2160577,2133857,2235297,0,2235329,0]),\n new Uint32Array([2182593,6291456,2182625,6291456,2182657,6291456,2182689,6291456,2182721,6291456,2182753,6291456,2182785,6291456,2182817,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2102402,2102403,6291456,2110050]),\n new Uint32Array([2149890,2108323,2149954,6291456,2113441,6291456,2149057,6291456,2113441,6291456,2105473,2167265,2111137,2105505,6291456,2108353]),\n new Uint32Array([2219105,2219137,2195233,2251554,2251617,2251649,2251681,2251713,2251746,2251810,2251873,2251905,2251937,2251970,2252033,2219169]),\n new Uint32Array([2203009,6291456,2203041,6291456,2203073,6291456,2203105,6291456,2203137,6291456,2203169,6291456,2203201,6291456,2203233,6291456]),\n new Uint32Array([2128195,2128291,2128387,2128483,2128579,2128675,2128771,2128867,2128963,2129059,2129155,2129251,2129347,2129443,2129539,2129635]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2140964,2141156,2140966,2141158,2141350]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2225378,2225442,2225506,2225570,2225634,2225698,2225762,2225826,2225890,2225954,2226018,2226082,2226146,2226210,2226274,2226338]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137,2105505,2098241,2108353,2108417]),\n new Uint32Array([2108353,2108417,0,2105601,2108193,2157121,2157313,2157377,2157441,2100897,6291456,2108419,2173953,2173633,2173633,2173953]),\n new Uint32Array([2111713,2173121,2111905,2098177,2173153,2173185,2173217,2113153,2113345,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,2190753]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,2197249,6291456,2117377,2197281,2197313,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,0,0,0,0,0,0,23068672,0,0,0,0,0,6291456,6291456,6291456]),\n new Uint32Array([2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100833,2100737,2098337,2101441,2101569,2101697,2101825,2101953]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0]),\n new Uint32Array([0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,23068672,23068672,23068672]),\n new Uint32Array([2173281,6291456,2173313,6291456,2173345,6291456,2173377,6291456,0,0,10532546,6291456,6291456,6291456,10562017,2173441]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,0,0]),\n new Uint32Array([23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2159426,2159490,2159554,2159362,2159618,2159682,2139522,2136450,2159746,2159810,2159874,2130978,2131074,2131266,2131362,2159938]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2203233,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2203265,6291456,2203297,6291456,2203329,2203361,6291456]),\n new Uint32Array([6291456,6291456,2148418,2148482,2148546,0,6291456,2148610,2186529,2186561,2148417,2148545,2148482,10495778,2143969,10495778]),\n new Uint32Array([2134146,2139426,2160962,2134242,2161218,2161282,2161346,2161410,2138658,2134722,2134434,2134818,2097666,2097346,2097698,2105986]),\n new Uint32Array([2198881,2198913,2198945,2198977,2199009,2199041,2199073,2199105,2199137,2199169,2199201,2199233,2199265,2199297,2199329,2199361]),\n new Uint32Array([0,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([10610561,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193]),\n new Uint32Array([2183873,6291456,2183905,6291456,2183937,6291456,2183969,6291456,2184001,6291456,2184033,6291456,2184065,6291456,2184097,6291456]),\n new Uint32Array([2244642,2244706,2244769,2244801,2218305,2244833,2244865,2244897,2244929,2244961,2244993,2245026,2245089,2245122,2245185,0]),\n new Uint32Array([6291456,6291456,2116513,2116609,2116705,2116801,2199873,2199905,2199937,2199969,2190913,2200001,2200033,2200065,2200097,2191009]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2180673,2180705,2180737,2180769,2180801,2180833,0,0]),\n new Uint32Array([2098081,2099521,2099105,2120705,2098369,2120801,2103361,2097985,2098433,2121377,2121473,2099169,2099873,2098401,2099393,2152609]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2150402]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,2145666,2145730,6291456,6291456]),\n new Uint32Array([2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665]),\n new Uint32Array([2187073,6291456,6291456,6291456,6291456,2098241,2098241,2108353,2100897,2111905,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2102404,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,2100612,6291456,6291456,6291456,6291456,6291456,6291456,6291456,10485857]),\n new Uint32Array([2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889]),\n new Uint32Array([2217697,2217729,2217761,2217793,2217825,2217857,2217889,2217921,2217953,2215873,2217985,2215905,2218017,2218049,2218081,2218113]),\n new Uint32Array([2211233,2218849,2216673,2218881,2218913,2218945,2218977,2219009,2216833,2219041,2215137,2219073,2216865,2209505,2219105,2216897]),\n new Uint32Array([2240097,2240129,2240161,2240193,2240225,2240257,2240289,2240321,2240353,2240386,2240449,2240481,2240513,2240545,2207905,2240578]),\n new Uint32Array([6291456,6291456,2202273,6291456,2202305,6291456,2202337,6291456,2202369,6291456,2202401,6291456,2202433,6291456,2202465,6291456]),\n new Uint32Array([0,23068672,23068672,18923394,23068672,18923458,18923522,18884099,18923586,18884195,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2201121,6291456,2201153,6291456,2201185,6291456,2201217,6291456,2201249,6291456,2201281,6291456,2201313,6291456,2201345,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,6291456]),\n new Uint32Array([2211041,2211073,2211105,2211137,2211169,2211201,2211233,2211265,2211297,2211329,2211361,2211393,2211425,2211457,2211489,2211521]),\n new Uint32Array([2181825,6291456,2181857,6291456,2181889,6291456,2181921,6291456,2181953,6291456,2181985,6291456,2182017,6291456,2182049,6291456]),\n new Uint32Array([2162337,2097633,2097633,2097633,2097633,2132705,2132705,2132705,2132705,2097153,2097153,2097153,2097153,2133089,2133089,2133089]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,2148545,6291456,2173473,6291456,2148865,6291456,2173505,6291456,2173537,6291456,2173569,6291456,2149121,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,0,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2207137,2207169,2207201,2207233,2207265,2207297,2207329,2207361,2207393,2207425,2207457,2207489,2207521,2207553,2207585,2207617]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,6291456,0,23068672,23068672,0,0,0,0,0,0]),\n new Uint32Array([2198401,2198433,2198465,2198497,0,2198529,2198561,2198593,2198625,2198657,2198689,2198721,2198753,2198785,2198817,2198849]),\n new Uint32Array([2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0,0]),\n new Uint32Array([2216385,2118721,2216417,2216449,2216481,2216513,2216545,2211233,2216577,2216609,2216641,2216673,2216705,2216737,2216737,2216769]),\n new Uint32Array([2216801,2216833,2216865,2216897,2216929,2216961,2216993,2215169,2217025,2217057,2217089,2217121,2217154,2217217,0,0]),\n new Uint32Array([2210593,2191809,2210625,2210657,2210689,2210721,2210753,2210785,2210817,2210849,2191297,2210881,2210913,2210945,2210977,2211009]),\n new Uint32Array([0,0,2105825,0,0,2111905,2105473,0,0,2112289,2108193,2112481,2112577,0,2098305,2108321]),\n new Uint32Array([0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,2097153,2134241,0,2132705,0,0,2131297,0,2133089,0,2133857,0,2220769,0,2235361]),\n new Uint32Array([14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,6291456,6291456,14680064]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([2171873,6291456,2171905,6291456,2171937,6291456,2171969,6291456,2172001,6291456,2172033,6291456,2172065,6291456,2172097,6291456]),\n new Uint32Array([2220929,2220929,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2133857,2134145,2134145,2134145,2134145,2134241,2134241,2134241,2134241,2105889,2105889,2105889,2105889,2097185,2097185,2097185]),\n new Uint32Array([2173697,2173761,2173793,2174113,2173985,2173953,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,10499619,10499715,10499811,10499907]),\n new Uint32Array([0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,0,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,0,23068672,23068672,23068672,0,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,6291456,23068672,23068672]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,2144322,2144386,2144450,2144514,2144578,2144642,2144706,2144770]),\n new Uint32Array([23068672,23068672,23068672,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456]),\n new Uint32Array([2113153,2108481,2113345,2113441,2098209,2111137,0,2098241,2108353,2108417,2105825,0,0,2111905,2105473,2105569]),\n new Uint32Array([2236321,2236353,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2152194,2121283,2103684,2103812,2097986,2098533,2097990,2098693,2098595,2098853,2099013,2103940,2121379,2121475,2121571,2104068]),\n new Uint32Array([2206241,2206273,2206305,2206337,2206369,2206401,2206433,2206465,2206497,2206529,2206561,2206593,2206625,2206657,2206689,2206721]),\n new Uint32Array([6291456,6291456,6291456,6291456,16777216,16777216,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,23068672,23068672,10538818,10538882,6291456,6291456,2150338]),\n new Uint32Array([6291456,6291456,6291456,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2214369,2214401,2214433,2214465,2214497,2214529,2214561,2214593,2194977,2214625,2195073,2214657,2214689,2214721,6291456,6291456]),\n new Uint32Array([2097152,2097152,2097152,2097152,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2182081,6291456,2182113,6291456,2182145,6291456,2182177,6291456,2182209,6291456,2182241,6291456,2182273,6291456,2182305,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2146881,2146945,2147009,2147073,2147137,2147201,2147265,2147329]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,23068672,23068672]),\n new Uint32Array([0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2122915,2123011,2123107,2104708,2123203,2123299,2123395,2100133,2104836,2100290,2100293,2104962,2104964,2098052,2123491,2123587]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456]),\n new Uint32Array([6291456,2171169,6291456,2171201,6291456,2171233,6291456,2171265,6291456,2171297,6291456,2171329,6291456,6291456,2171361,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,2148994,2149058,2149122,0,6291456,2149186,2186945,2173537,2148993,2149121,2149058,10531458,10496066,0]),\n new Uint32Array([2195009,2195041,2195073,2195105,2195137,2195169,2195201,2195233,2195265,2195297,2195329,2195361,2195393,2195425,2195457,2195489]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,0,0,6291456,6291456]),\n new Uint32Array([2182849,6291456,2182881,6291456,2182913,6291456,2182945,6291456,2182977,6291456,2183009,6291456,2183041,6291456,2183073,6291456]),\n new Uint32Array([2211553,2210081,2211585,2211617,2211649,2211681,2211713,2211745,2211777,2211809,2209569,2211841,2211873,2211905,2211937,2211969]),\n new Uint32Array([2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2166594,2127298,2166658,2142978,2141827,2166722]),\n new Uint32Array([2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233057,2148481,2173601,2173633,2173665,2173697,2173729]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,0,0,2185761,2185793,2185825,2185857,2185889,2185921,0,0]),\n new Uint32Array([6291456,2148481,2173601,2173633,2173665,2173697,2173729,2148801,2173761,2143969,2173793,2173825,2153473,2173857,2173889,2173921]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,6291456]),\n new Uint32Array([0,0,0,2220961,2220961,2220961,2220961,2144193,2144193,2159201,2159201,2159265,2159265,2144194,2220993,2220993]),\n new Uint32Array([2192641,2235393,2235425,2152257,2116609,2235457,2235489,2200065,2235521,2235553,2235585,2212449,2235617,2235649,2235681,2235713]),\n new Uint32Array([2194049,2194081,2194113,2194145,2194177,2194209,2194241,2194273,2194305,2194337,2194369,2194401,2194433,2194465,2194497,2194529]),\n new Uint32Array([2196673,2208641,2208673,2208705,2208737,2208769,2208801,2208833,2208865,2208897,2208929,2208961,2208993,2209025,2209057,2209089]),\n new Uint32Array([2191681,2191713,2191745,2191777,2153281,2191809,2191841,2191873,2191905,2191937,2191969,2192001,2192033,2192065,2192097,2192129]),\n new Uint32Array([2230946,2231010,2231074,2231138,2231202,2231266,2231330,2231394,2231458,2231522,2231586,2231650,2231714,2231778,2231842,2231906]),\n new Uint32Array([14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064,14680064]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,2185953,2185985,2186017,2186049,2186081,2186113,2186145,2186177]),\n new Uint32Array([2139811,2139907,2097284,2105860,2105988,2106116,2106244,2097444,2097604,2097155,10485778,10486344,2106372,6291456,0,0]),\n new Uint32Array([2110051,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2172385,6291456,2172417,6291456,2172449,6291456,2172481,6291456,2172513,6291456,2172545,6291456,2172577,6291456,2172609,6291456]),\n new Uint32Array([0,0,23068672,23068672,6291456,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2249345,2249377,2249409,2249441,2249473,2249505,2249537,2249570,2210209,2249633,2249665,2249697,2249729,2249761,2249793,2216769]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,6291456,6291456,6291456,6291456]),\n new Uint32Array([2187169,2187201,2187233,2187265,2187297,2187329,2187361,2187393,2187425,2187457,2187489,2187521,2187553,2187585,2187617,2187649]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([0,0,0,6291456,6291456,0,0,0,6291456,6291456,6291456,0,0,0,6291456,6291456]),\n new Uint32Array([2182337,6291456,2182369,6291456,2182401,6291456,2182433,6291456,2182465,6291456,2182497,6291456,2182529,6291456,2182561,6291456]),\n new Uint32Array([2138179,2138275,2138371,2138467,2134243,2134435,2138563,2138659,2138755,2138851,2138947,2139043,2138947,2138755,2139139,2139235]),\n new Uint32Array([23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([0,0,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2250498,2250562,2250625,2250657,2208321,2250689,2250721,2250753,2250785,2250817,2250849,2218945,2250881,2250913,2250945,0]),\n new Uint32Array([2170369,2105569,2098305,2108481,2173249,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456]),\n new Uint32Array([2100897,2111905,2105473,2105569,2105601,0,2108193,0,0,0,2098305,2108321,2108289,2100865,2113153,2108481]),\n new Uint32Array([2100897,2100897,2105569,2105569,6291456,2112289,2149826,6291456,6291456,2112481,2112577,2098177,2098177,2098177,6291456,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,6291456,6291456,6291456]),\n new Uint32Array([6291456,2169953,2169985,6291456,2170017,6291456,2170049,2170081,6291456,2170113,2170145,2170177,6291456,6291456,2170209,2170241]),\n new Uint32Array([6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([0,0,0,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2220641,2220641,2220673,2220673,2220673,2220673,2220705,2220705,2220705,2220705,2220737,2220737,2220737,2220737,2220769,2220769]),\n new Uint32Array([2127650,2127746,2127842,2127938,2128034,2128130,2128226,2128322,2128418,2127523,2127619,2127715,2127811,2127907,2128003,2128099]),\n new Uint32Array([2143969,2173793,2173825,2153473,2173857,2173889,2173921,2173953,2173985,2173761,2174017,2174049,2174081,2174113,2174145,2174177]),\n new Uint32Array([0,0,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([2204705,2204737,2204769,2204801,2204833,2204865,2204897,2204929,2204961,2204993,2205025,2205057,2205089,2205121,2205153,2205185]),\n new Uint32Array([2176385,6291456,2176417,6291456,2176449,6291456,2176481,6291456,2176513,6291456,2176545,6291456,2176577,6291456,2176609,6291456]),\n new Uint32Array([2195521,2195553,2195585,2195617,2195649,2195681,2117857,2195713,2195745,2195777,2195809,2195841,2195873,2195905,2195937,2195969]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,6291456,6291456]),\n new Uint32Array([2173921,2173953,2173985,2174017,2174017,2174049,2174081,2174113,2174145,2174177,2149057,2233089,2173697,2173761,2173793,2174113]),\n new Uint32Array([2131586,2132450,2135970,2135778,2161602,2136162,2163650,2161794,2135586,2163714,2137186,2131810,2160290,2135170,2097506,2159554]),\n new Uint32Array([2134145,2097153,2134241,2105953,2132705,2130977,2160065,2131297,2162049,2133089,2160577,2133857,0,0,0,0]),\n new Uint32Array([2116513,2116609,2116705,2116801,2116897,2116993,2117089,2117185,2117281,2117377,2117473,2117569,2117665,2117761,2117857,2117953]),\n new Uint32Array([2100737,2098337,2101441,2101569,2101697,2101825,2101953,2102081,2102209,2100802,2101154,2101282,2101410,2101538,2101666,2101794]),\n new Uint32Array([2100289,2098657,2098049,2200737,2123489,2123681,2200769,2098625,2100321,2098145,2100449,2098017,2098753,2098977,2150241,2150305]),\n new Uint32Array([6291456,6291456,6291456,0,6291456,6291456,6291456,6291456,6291456,2109955,6291456,6291456,0,0,0,0]),\n new Uint32Array([18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368,18874368]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,6291456,0,6291456,0,0]),\n new Uint32Array([2130979,2131075,2131075,2131171,2131267,2131363,2131459,2131555,2131651,2131651,2131747,2131843,2131939,2132035,2132131,2132227]),\n new Uint32Array([0,2177793,6291456,2177825,6291456,2177857,6291456,2177889,6291456,2177921,6291456,2177953,6291456,2177985,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672]),\n new Uint32Array([6291456,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2113345,0,2098209,2111137,2105505,2098241,2108353,2108417,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289]),\n new Uint32Array([2136643,2136739,2136835,2136931,2137027,2137123,2137219,2137315,2137411,2137507,2137603,2137699,2137795,2137891,2137987,2138083]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0]),\n new Uint32Array([2174433,6291456,2174465,6291456,2174497,6291456,2174529,6291456,2174561,6291456,2174593,6291456,2174625,6291456,2174657,6291456]),\n new Uint32Array([0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441]),\n new Uint32Array([10496547,10496643,2105505,2149698,6291456,10496739,10496835,2170273,6291456,2149762,2105825,2111713,2111713,2111713,2111713,2168673]),\n new Uint32Array([6291456,2143490,2143490,2143490,2171649,6291456,2171681,2171713,2171745,6291456,2171777,6291456,2171809,6291456,2171841,6291456]),\n new Uint32Array([2159106,2159106,2159170,2159170,2159234,2159234,2159298,2159298,2159298,2159362,2159362,2159362,2106401,2106401,2106401,2106401]),\n new Uint32Array([2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865,2113153,2108481,2113345,2113441,2098209,2111137]),\n new Uint32Array([2108417,2181217,2181249,2181281,2170433,2170401,2181313,2181345,2181377,2181409,2181441,2181473,2181505,2181537,2170529,2181569]),\n new Uint32Array([2218433,2245761,2245793,2245825,2245857,2245890,2245953,2245986,2209665,2246050,2246113,2246146,2246210,2246274,2246337,2246369]),\n new Uint32Array([2230754,2230818,2230882,0,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([6291456,0,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,0,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2184129,6291456,2184161,6291456,2184193,6291456,6291456,6291456,6291456,6291456,2146818,2183361,6291456,6291456,2142978,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2135170,2097506,2130691,2130787,2130883,2163970,2164034,2164098,2164162,2164226,2164290,2164354,2164418,2164482,2164546,2133122]),\n new Uint32Array([2108515,2108611,2100740,2108707,2108803,2108899,2108995,2109091,2109187,2109283,2109379,2109475,2109571,2109667,2109763,2100738]),\n new Uint32Array([2102788,2102916,2103044,2120515,2103172,2120611,2120707,2098373,2103300,2120803,2120899,2120995,2103428,2103556,2121091,2121187]),\n new Uint32Array([2158082,2158146,0,2158210,2158274,0,2158338,2158402,2158466,2129922,2158530,2158594,2158658,2158722,2158786,2158850]),\n new Uint32Array([10499619,10499715,10499811,10499907,10500003,10500099,10500195,10500291,10500387,10500483,10500579,10500675,10500771,10500867,10500963,10501059]),\n new Uint32Array([2239585,2239618,2239681,2239713,0,2191969,2239745,2239777,2192033,2239809,2239841,2239874,2239937,2239970,2240033,2240065]),\n new Uint32Array([2252705,2252738,2252801,2252833,2252865,2252897,2252930,2252994,2253057,2253089,2253121,2253154,2253217,2253250,2219361,2219361]),\n new Uint32Array([2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,2108193,2112481,2112577,2098177,2098305,2108321,2108289,2100865]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,10538050,10538114,10538178,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([2226402,2226466,2226530,2226594,2226658,2226722,2226786,2226850,2226914,2226978,2227042,2227106,2227170,2227234,2227298,2227362]),\n new Uint32Array([23068672,6291456,6291456,6291456,6291456,2144066,2144130,2144194,2144258,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,23068672,23068672,23068672,6291456,23068672,23068672]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0]),\n new Uint32Array([2124674,2124770,2123875,2123971,2124067,2124163,2124259,2124355,2124451,2124547,2124643,2124739,2124835,2124931,2125027,2125123]),\n new Uint32Array([2168065,6291456,2168097,6291456,2168129,6291456,2168161,6291456,2168193,6291456,2168225,6291456,2168257,6291456,2168289,6291456]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0]),\n new Uint32Array([23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,2100610,2100611,6291456,2107842,2107843,6291456,6291456,6291456,6291456,10537922,6291456,10537986,6291456]),\n new Uint32Array([2174849,2174881,2174913,2174945,2174977,2175009,2175041,2175073,2175105,2175137,2175169,2175201,2175233,2175265,2175297,2175329]),\n new Uint32Array([2154562,2154626,2154690,2154754,2141858,2154818,2154882,2127298,2154946,2127298,2155010,2155074,2155138,2155202,2155266,2155202]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456,6291456,6291456,6291456,6291456,23068672,0]),\n new Uint32Array([2200641,2150786,2150850,2150914,2150978,2151042,2106562,2151106,2150562,2151170,2151234,2151298,2151362,2151426,2151490,2151554]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,23068672,0,0,0,0,0,0,0,0,6291456,6291456]),\n new Uint32Array([2220289,2220289,2220321,2220321,2220321,2220321,2220353,2220353,2220353,2220353,2220385,2220385,2220385,2220385,2220417,2220417]),\n new Uint32Array([2155330,2155394,0,2155458,2155522,2155586,2105732,0,2155650,2155714,2155778,2125314,2155842,2155906,2126274,2155970]),\n new Uint32Array([23068672,23068672,23068672,23068672,23068672,6291456,6291456,23068672,23068672,6291456,23068672,23068672,23068672,23068672,6291456,6291456]),\n new Uint32Array([6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,6291456,0,0,0,0,0,0]),\n new Uint32Array([2097729,2106017,2106017,2106017,2106017,2131297,2131297,2131297,2131297,2106081,2106081,2162049,2162049,2105953,2105953,2162337]),\n new Uint32Array([2097185,2097697,2097697,2097697,2097697,2135777,2135777,2135777,2135777,2097377,2097377,2097377,2097377,2097601,2097601,2097217]),\n new Uint32Array([0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,23068672]),\n new Uint32Array([2139331,2139427,2139523,2139043,2133571,2132611,2139619,2139715,0,0,0,0,0,0,0,0]),\n new Uint32Array([2174113,2174145,2100897,2098177,2108289,2100865,2173601,2173633,2173985,2174113,2174145,6291456,6291456,6291456,6291456,6291456]),\n new Uint32Array([6291456,6291456,23068672,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456,23068672,6291456,6291456,6291456,6291456]),\n new Uint32Array([23068672,23068672,18923778,23068672,23068672,23068672,23068672,18923842,23068672,23068672,23068672,23068672,18923906,23068672,23068672,23068672]),\n new Uint32Array([2134145,2097153,2134241,0,2132705,2130977,2160065,2131297,0,2133089,0,2133857,0,0,0,0]),\n new Uint32Array([6291456,6291456,6291456,6291456,0,0,0,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2177537,6291456,2177569,6291456,2177601,6291456,2177633,6291456,2177665,6291456,2177697,6291456,2177729,6291456,2177761,6291456]),\n new Uint32Array([2212481,2212513,2212545,2212577,2197121,2212609,2212641,2212673,2212705,2212737,2212769,2212801,2212833,2212865,2212897,2212929]),\n new Uint32Array([6291456,6291456,23068672,23068672,23068672,6291456,6291456,0,0,0,0,0,0,0,0,0]),\n new Uint32Array([2098241,2108353,2170209,2105825,2111713,2100897,2111905,2105473,2105569,2105601,2112289,6291456,2108193,2172417,2112481,2098177]),\n new Uint32Array([6291456,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,23068672,6291456,6291456]),\n];\nvar blockIdxes = new Uint16Array([616,616,565,147,161,411,330,2,131,131,328,454,241,408,86,86,696,113,285,350,325,301,473,214,639,232,447,64,369,598,124,672,567,223,621,154,107,86,86,86,86,86,86,505,86,68,634,86,218,218,218,218,486,218,218,513,188,608,216,86,217,463,668,85,700,360,184,86,86,86,647,402,153,10,346,718,662,260,145,298,117,1,443,342,138,54,563,86,240,572,218,70,387,86,118,460,641,602,86,86,306,218,86,692,86,86,86,86,86,162,707,86,458,26,86,218,638,86,86,86,86,86,65,449,86,86,306,183,86,58,391,667,86,157,131,131,131,131,86,433,131,406,31,218,247,86,86,693,218,581,351,86,438,295,69,462,45,126,173,650,14,295,69,97,168,187,641,78,523,390,69,108,287,664,173,219,83,295,69,108,431,426,173,694,412,115,628,52,257,398,641,118,501,121,69,579,151,423,173,620,464,121,69,382,151,476,173,27,53,121,86,594,578,226,173,86,632,130,86,96,228,268,641,622,563,86,86,21,148,650,131,131,321,43,144,343,381,531,131,131,178,20,86,399,156,375,164,541,30,60,715,198,92,118,131,131,86,86,306,407,86,280,457,196,488,358,131,131,244,86,86,143,86,86,86,86,86,667,563,86,86,86,86,86,86,86,86,86,86,86,86,86,336,363,86,86,336,86,86,380,678,67,86,86,86,678,86,86,86,512,86,307,86,708,86,86,86,86,86,528,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,563,307,86,86,86,86,86,104,450,337,86,720,86,32,450,397,86,86,86,587,218,558,708,708,293,708,86,86,86,86,86,694,205,86,8,86,86,86,86,549,86,667,697,697,679,86,458,460,86,86,650,86,708,543,86,86,86,245,86,86,86,140,218,127,708,708,458,197,131,131,131,131,500,86,86,483,251,86,306,510,515,86,722,86,86,86,65,201,86,86,483,580,470,86,86,86,368,131,131,131,694,114,110,555,86,86,123,721,163,142,713,418,86,317,675,209,218,218,218,371,545,592,629,490,603,199,46,320,525,680,310,279,388,111,42,252,593,607,235,617,410,377,50,548,135,356,17,520,189,116,392,600,349,332,482,699,690,535,119,106,451,71,152,667,131,218,218,265,671,637,492,504,533,683,269,269,658,86,86,86,86,86,86,86,86,86,491,619,86,86,6,86,86,86,86,86,86,86,86,86,86,86,229,86,86,86,86,86,86,86,86,86,86,86,86,667,86,86,171,131,118,131,656,206,234,571,89,334,670,246,311,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,534,86,86,86,86,86,86,82,86,86,86,86,86,430,86,86,86,86,86,86,86,86,86,599,86,324,86,470,69,640,264,131,626,101,174,86,86,667,233,105,73,374,394,221,204,84,28,326,86,86,471,86,86,86,109,573,86,171,200,200,200,200,218,218,86,86,86,86,460,131,131,131,86,506,86,86,86,86,86,220,404,34,614,47,442,305,25,612,338,601,648,7,344,255,131,131,51,86,312,507,563,86,86,86,86,588,86,86,86,86,86,530,511,86,458,3,435,384,556,522,230,527,86,118,86,86,717,86,137,273,79,181,484,23,93,112,655,249,417,703,370,87,98,313,684,585,155,465,596,481,695,18,416,428,61,701,706,282,643,495,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,307,86,86,86,171,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,650,131,422,542,420,263,24,172,86,86,86,86,86,566,86,86,132,540,395,353,494,519,19,485,284,472,131,131,131,16,714,86,211,708,86,86,86,694,698,86,86,483,704,708,218,272,86,86,120,86,159,478,86,307,247,86,86,663,597,459,627,667,86,86,277,455,39,302,86,250,86,86,86,271,99,452,306,281,329,400,200,86,86,362,549,352,646,461,323,586,86,86,4,708,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,717,86,518,86,86,650,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,125,554,480,300,613,72,333,288,561,544,604,48,719,91,169,176,590,224,76,191,29,559,560,231,537,166,477,538,256,437,131,131,469,167,40,0,685,266,441,705,239,642,475,568,640,610,299,673,517,318,385,22,202,180,179,359,424,215,90,66,521,653,467,682,453,409,479,88,131,661,35,303,15,262,666,630,712,131,131,618,659,175,218,195,347,193,227,261,150,165,709,546,294,569,710,270,413,376,524,55,242,38,419,529,170,657,3,304,122,379,278,131,651,86,67,576,458,458,131,131,86,86,86,86,86,86,86,118,309,86,86,547,86,86,86,86,667,650,664,131,131,86,86,56,131,131,131,131,131,131,131,131,86,307,86,86,86,664,238,650,86,86,717,86,118,86,86,315,86,59,86,86,574,549,131,131,340,57,436,86,86,86,86,86,86,458,708,499,691,62,86,650,86,86,694,86,86,86,319,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,86,549,694,131,131,131,131,131,131,131,131,131,77,86,86,139,86,502,86,86,86,667,595,131,131,131,86,12,86,13,86,609,131,131,131,131,86,86,86,625,86,669,86,86,182,129,86,5,694,104,86,86,86,86,131,131,86,86,386,171,86,86,86,345,86,324,86,589,86,213,36,131,131,131,131,131,86,86,86,86,104,131,131,131,141,290,80,677,86,86,86,267,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,667,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,515,86,86,33,136,669,86,711,515,86,86,550,640,86,104,708,515,86,159,372,717,86,86,444,515,86,86,663,37,86,563,460,86,390,624,702,131,131,131,131,389,59,708,86,86,341,208,708,635,295,69,108,431,508,100,190,131,131,131,131,131,131,131,131,86,86,86,649,516,660,131,131,86,86,86,218,631,708,131,131,131,131,131,131,131,131,131,131,86,86,341,575,238,514,131,131,86,86,86,218,291,708,307,131,86,86,306,367,708,131,131,131,86,378,697,86,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,615,253,86,86,86,292,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,104,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,69,86,341,553,549,86,307,86,86,645,275,455,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,708,131,131,131,131,131,131,86,86,86,86,86,86,667,460,86,86,86,86,86,86,86,86,86,86,86,86,717,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,667,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,104,86,667,459,131,131,131,131,131,131,86,458,225,86,86,86,516,549,11,390,405,86,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,460,44,218,197,711,515,131,131,131,131,664,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,307,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,308,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,118,307,104,286,591,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,549,86,86,681,86,86,75,185,314,582,86,358,496,474,86,104,131,86,86,86,86,146,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,171,86,640,131,131,131,131,131,131,131,131,246,503,689,339,674,81,258,415,439,128,562,366,414,246,503,689,583,222,557,316,636,665,186,355,95,670,246,503,689,339,674,557,258,415,439,186,355,95,670,246,503,689,446,644,536,652,331,532,335,440,274,421,297,570,74,425,364,425,606,552,403,509,134,365,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,218,218,218,498,218,218,577,627,551,497,572,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,553,354,236,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,296,455,131,131,456,243,103,86,41,459,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,9,276,158,716,393,564,383,489,401,654,210,654,131,131,131,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,650,86,86,86,86,86,86,717,667,563,563,563,86,549,102,686,133,246,605,86,448,86,86,207,307,131,131,131,641,86,177,611,445,373,194,584,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,308,307,171,86,86,86,86,86,86,86,717,86,86,86,86,86,460,131,131,650,86,86,86,694,708,86,86,694,86,458,131,131,131,131,131,131,667,694,289,650,667,131,131,86,640,131,131,664,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,171,131,131,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,460,86,86,86,86,86,86,86,86,86,86,86,86,86,458,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,86,640,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,466,203,149,429,94,432,160,687,539,63,237,283,192,248,348,259,427,526,396,676,254,468,487,212,327,623,49,633,322,493,434,688,357,361,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131,131]);\nvar mappingStr = \"صلى الله عليه وسلمجل جلالهキロメートルrad∕s2エスクードキログラムキロワットグラムトンクルゼイロサンチームパーセントピアストルファラッドブッシェルヘクタールマンションミリバールレントゲン′′′′1⁄10viii(10)(11)(12)(13)(14)(15)(16)(17)(18)(19)(20)∫∫∫∫(오전)(오후)アパートアルファアンペアイニングエーカーカラットカロリーキュリーギルダークローネサイクルシリングバーレルフィートポイントマイクロミクロンメガトンリットルルーブル株式会社kcalm∕s2c∕kgاكبرمحمدصلعمرسولریال1⁄41⁄23⁄4 ̈́ྲཱྀླཱྀ ̈͂ ̓̀ ̓́ ̓͂ ̔̀ ̔́ ̔͂ ̈̀‵‵‵a/ca/sc/oc/utelfax1⁄71⁄91⁄32⁄31⁄52⁄53⁄54⁄51⁄65⁄61⁄83⁄85⁄87⁄8xii0⁄3∮∮∮(1)(2)(3)(4)(5)(6)(7)(8)(9)(a)(b)(c)(d)(e)(f)(g)(h)(i)(j)(k)(l)(m)(n)(o)(p)(q)(r)(s)(t)(u)(v)(w)(x)(y)(z)::====(ᄀ)(ᄂ)(ᄃ)(ᄅ)(ᄆ)(ᄇ)(ᄉ)(ᄋ)(ᄌ)(ᄎ)(ᄏ)(ᄐ)(ᄑ)(ᄒ)(가)(나)(다)(라)(마)(바)(사)(아)(자)(차)(카)(타)(파)(하)(주)(一)(二)(三)(四)(五)(六)(七)(八)(九)(十)(月)(火)(水)(木)(金)(土)(日)(株)(有)(社)(名)(特)(財)(祝)(労)(代)(呼)(学)(監)(企)(資)(協)(祭)(休)(自)(至)pte10月11月12月ergltdアールインチウォンオンスオームカイリガロンガンマギニーケースコルナコーポセンチダースノットハイツパーツピクルフランペニヒヘルツペンスページベータボルトポンドホールホーンマイルマッハマルクヤードヤールユアンルピー10点11点12点13点14点15点16点17点18点19点20点21点22点23点24点hpabardm2dm3khzmhzghzthzmm2cm2km2mm3cm3km3kpampagpalogmilmolppmv∕ma∕m10日11日12日13日14日15日16日17日18日19日20日21日22日23日24日25日26日27日28日29日30日31日galffifflשּׁשּׂ ٌّ ٍّ َّ ُّ ِّ ّٰـَّـُّـِّتجمتحجتحمتخمتمجتمحتمخجمححميحمىسحجسجحسجىسمحسمجسممصححصممشحمشجيشمخشممضحىضخمطمحطممطميعجمعممعمىغممغميغمىفخمقمحقمملحملحيلحىلججلخملمحمحجمحيمجحمجممخممجخهمجهممنحمنحىنجمنجىنمينمىيممبخيتجيتجىتخيتخىتميتمىجميجحىجمىسخىصحيشحيضحيلجيلمييحييجييميمميقمينحيعميكمينجحمخيلجمكممجحيحجيمجيفميبحيسخينجيصلےقلے𝅘𝅥𝅮𝅘𝅥𝅯𝅘𝅥𝅰𝅘𝅥𝅱𝅘𝅥𝅲𝆹𝅥𝅮𝆺𝅥𝅮𝆹𝅥𝅯𝆺𝅥𝅯〔s〕ppv〔本〕〔三〕〔二〕〔安〕〔点〕〔打〕〔盗〕〔勝〕〔敗〕 ̄ ́ ̧ssi̇ijl·ʼndžljnjdz ̆ ̇ ̊ ̨ ̃ ̋ ιեւاٴوٴۇٴيٴक़ख़ग़ज़ड़ढ़फ़य़ড়ঢ়য়ਲ਼ਸ਼ਖ਼ਗ਼ਜ਼ਫ਼ଡ଼ଢ଼ําໍາຫນຫມགྷཌྷདྷབྷཛྷཀྵཱཱིུྲྀླྀྒྷྜྷྡྷྦྷྫྷྐྵaʾἀιἁιἂιἃιἄιἅιἆιἇιἠιἡιἢιἣιἤιἥιἦιἧιὠιὡιὢιὣιὤιὥιὦιὧιὰιαιάιᾶι ͂ὴιηιήιῆιὼιωιώιῶι ̳!! ̅???!!?rs°c°fnosmtmivix⫝̸ ゙ ゚よりコト333435참고주의363738394042444546474849503月4月5月6月7月8月9月hgevギガデシドルナノピコビルペソホンリラレムdaauovpciu平成昭和大正明治naμakakbmbgbpfnfμfμgmgμlmldlklfmnmμmpsnsμsmsnvμvkvpwnwμwmwkwkωmωbqcccddbgyhainkkktlnlxphprsrsvwbstմնմեմիվնմխיִײַשׁשׂאַאָאּבּגּדּהּוּזּטּיּךּכּלּמּנּסּףּפּצּקּרּתּוֹבֿכֿפֿאלئائەئوئۇئۆئۈئېئىئجئحئمئيبجبمبىبيتىتيثجثمثىثيخحضجضمطحظمغجفجفحفىفيقحقىقيكاكجكحكخكلكىكينخنىنيهجهىهييىذٰرٰىٰئرئزئنبزبنترتزتنثرثزثنمانرنزننيريزئخئهبهتهصخنههٰثهسهشهطىطيعىعيغىغيسىسيشىشيصىصيضىضيشخشرسرصرضراً ًـًـّ ْـْلآلألإ𝅗𝅥0,1,2,3,4,5,6,7,8,9,wzhvsdwcmcmddjほかココàáâãäåæçèéêëìíîïðñòóôõöøùúûüýþāăąćĉċčďđēĕėęěĝğġģĥħĩīĭįĵķĺļľłńņňŋōŏőœŕŗřśŝşšţťŧũūŭůűųŵŷÿźżɓƃƅɔƈɖɗƌǝəɛƒɠɣɩɨƙɯɲɵơƣƥʀƨʃƭʈưʊʋƴƶʒƹƽǎǐǒǔǖǘǚǜǟǡǣǥǧǩǫǭǯǵƕƿǹǻǽǿȁȃȅȇȉȋȍȏȑȓȕȗșțȝȟƞȣȥȧȩȫȭȯȱȳⱥȼƚⱦɂƀʉʌɇɉɋɍɏɦɹɻʁʕͱͳʹͷ;ϳέίόύβγδεζθκλνξοπρστυφχψϊϋϗϙϛϝϟϡϣϥϧϩϫϭϯϸϻͻͼͽѐёђѓєѕіїјљњћќѝўџабвгдежзийклмнопрстуфхцчшщъыьэюяѡѣѥѧѩѫѭѯѱѳѵѷѹѻѽѿҁҋҍҏґғҕҗҙқҝҟҡңҥҧҩҫҭүұҳҵҷҹһҽҿӂӄӆӈӊӌӎӑӓӕӗәӛӝӟӡӣӥӧөӫӭӯӱӳӵӷӹӻӽӿԁԃԅԇԉԋԍԏԑԓԕԗԙԛԝԟԡԣԥԧԩԫԭԯաբգդզէըթժլծկհձղճյշոչպջռստրցփքօֆ་ⴧⴭნᏰᏱᏲᏳᏴᏵꙋɐɑᴂɜᴖᴗᴝᴥɒɕɟɡɥɪᵻʝɭᶅʟɱɰɳɴɸʂƫᴜʐʑḁḃḅḇḉḋḍḏḑḓḕḗḙḛḝḟḡḣḥḧḩḫḭḯḱḳḵḷḹḻḽḿṁṃṅṇṉṋṍṏṑṓṕṗṙṛṝṟṡṣṥṧṩṫṭṯṱṳṵṷṹṻṽṿẁẃẅẇẉẋẍẏẑẓẕạảấầẩẫậắằẳẵặẹẻẽếềểễệỉịọỏốồổỗộớờởỡợụủứừửữựỳỵỷỹỻỽỿἐἑἒἓἔἕἰἱἲἳἴἵἶἷὀὁὂὃὄὅὑὓὕὗᾰᾱὲΐῐῑὶΰῠῡὺῥ`ὸ‐+−∑〈〉ⰰⰱⰲⰳⰴⰵⰶⰷⰸⰹⰺⰻⰼⰽⰾⰿⱀⱁⱂⱃⱄⱅⱆⱇⱈⱉⱊⱋⱌⱍⱎⱏⱐⱑⱒⱓⱔⱕⱖⱗⱘⱙⱚⱛⱜⱝⱞⱡɫᵽɽⱨⱪⱬⱳⱶȿɀⲁⲃⲅⲇⲉⲋⲍⲏⲑⲓⲕⲗⲙⲛⲝⲟⲡⲣⲥⲧⲩⲫⲭⲯⲱⲳⲵⲷⲹⲻⲽⲿⳁⳃⳅⳇⳉⳋⳍⳏⳑⳓⳕⳗⳙⳛⳝⳟⳡⳣⳬⳮⳳⵡ母龟丨丶丿乙亅亠人儿入冂冖冫几凵刀力勹匕匚匸卜卩厂厶又口囗士夂夊夕女子宀寸小尢尸屮山巛工己巾干幺广廴廾弋弓彐彡彳心戈戶手支攴文斗斤方无曰欠止歹殳毋比毛氏气爪父爻爿片牙牛犬玄玉瓜瓦甘生用田疋疒癶白皮皿目矛矢石示禸禾穴立竹米糸缶网羊羽老而耒耳聿肉臣臼舌舛舟艮色艸虍虫血行衣襾見角言谷豆豕豸貝赤走足身車辛辰辵邑酉釆里長門阜隶隹雨靑非面革韋韭音頁風飛食首香馬骨高髟鬥鬯鬲鬼魚鳥鹵鹿麥麻黃黍黑黹黽鼎鼓鼠鼻齊齒龍龜龠.〒卄卅ᄁᆪᆬᆭᄄᆰᆱᆲᆳᆴᆵᄚᄈᄡᄊ짜ᅢᅣᅤᅥᅦᅧᅨᅩᅪᅫᅬᅭᅮᅯᅰᅱᅲᅳᅴᅵᄔᄕᇇᇈᇌᇎᇓᇗᇙᄜᇝᇟᄝᄞᄠᄢᄣᄧᄩᄫᄬᄭᄮᄯᄲᄶᅀᅇᅌᇱᇲᅗᅘᅙᆄᆅᆈᆑᆒᆔᆞᆡ上中下甲丙丁天地問幼箏우秘男適優印注項写左右医宗夜テヌモヨヰヱヲꙁꙃꙅꙇꙉꙍꙏꙑꙓꙕꙗꙙꙛꙝꙟꙡꙣꙥꙧꙩꙫꙭꚁꚃꚅꚇꚉꚋꚍꚏꚑꚓꚕꚗꚙꚛꜣꜥꜧꜩꜫꜭꜯꜳꜵꜷꜹꜻꜽꜿꝁꝃꝅꝇꝉꝋꝍꝏꝑꝓꝕꝗꝙꝛꝝꝟꝡꝣꝥꝧꝩꝫꝭꝯꝺꝼᵹꝿꞁꞃꞅꞇꞌꞑꞓꞗꞙꞛꞝꞟꞡꞣꞥꞧꞩɬʞʇꭓꞵꞷꬷꭒᎠᎡᎢᎣᎤᎥᎦᎧᎨᎩᎪᎫᎬᎭᎮᎯᎰᎱᎲᎳᎴᎵᎶᎷᎸᎹᎺᎻᎼᎽᎾᎿᏀᏁᏂᏃᏄᏅᏆᏇᏈᏉᏊᏋᏌᏍᏎᏏᏐᏑᏒᏓᏔᏕᏖᏗᏘᏙᏚᏛᏜᏝᏞᏟᏠᏡᏢᏣᏤᏥᏦᏧᏨᏩᏪᏫᏬᏭᏮᏯ豈更賈滑串句契喇奈懶癩羅蘿螺裸邏樂洛烙珞落酪駱亂卵欄爛蘭鸞嵐濫藍襤拉臘蠟廊朗浪狼郎來冷勞擄櫓爐盧蘆虜路露魯鷺碌祿綠菉錄論壟弄籠聾牢磊賂雷壘屢樓淚漏累縷陋勒肋凜凌稜綾菱陵讀拏諾丹寧怒率異北磻便復不泌數索參塞省葉說殺沈拾若掠略亮兩凉梁糧良諒量勵呂廬旅濾礪閭驪麗黎曆歷轢年憐戀撚漣煉璉秊練聯輦蓮連鍊列劣咽烈裂廉念捻殮簾獵令囹嶺怜玲瑩羚聆鈴零靈領例禮醴隸惡了僚寮尿料燎療蓼遼暈阮劉杻柳流溜琉留硫紐類戮陸倫崙淪輪律慄栗隆利吏履易李梨泥理痢罹裏裡離匿溺吝燐璘藺隣鱗麟林淋臨笠粒狀炙識什茶刺切度拓糖宅洞暴輻降廓兀嗀塚晴凞猪益礼神祥福靖精蘒諸逸都飯飼館鶴郞隷侮僧免勉勤卑喝嘆器塀墨層悔慨憎懲敏既暑梅海渚漢煮爫琢碑祉祈祐祖禍禎穀突節縉繁署者臭艹著褐視謁謹賓贈辶難響頻恵𤋮舘並况全侀充冀勇勺啕喙嗢墳奄奔婢嬨廒廙彩徭惘慎愈慠戴揄搜摒敖望杖滛滋瀞瞧爵犯瑱甆画瘝瘟盛直睊着磌窱类絛缾荒華蝹襁覆調請諭變輸遲醙鉶陼韛頋鬒𢡊𢡄𣏕㮝䀘䀹𥉉𥳐𧻓齃龎עםٱٻپڀٺٿٹڤڦڄڃچڇڍڌڎڈژڑکگڳڱںڻۀہھۓڭۋۅۉ、〖〗—–_{}【】《》「」『』[]#&*-<>\\\\$%@ءؤة\\\"'^|~⦅⦆・ゥャ¢£¬¦¥₩│←↑→↓■○𐐨𐐩𐐪𐐫𐐬𐐭𐐮𐐯𐐰𐐱𐐲𐐳𐐴𐐵𐐶𐐷𐐸𐐹𐐺𐐻𐐼𐐽𐐾𐐿𐑀𐑁𐑂𐑃𐑄𐑅𐑆𐑇𐑈𐑉𐑊𐑋𐑌𐑍𐑎𐑏𐓘𐓙𐓚𐓛𐓜𐓝𐓞𐓟𐓠𐓡𐓢𐓣𐓤𐓥𐓦𐓧𐓨𐓩𐓪𐓫𐓬𐓭𐓮𐓯𐓰𐓱𐓲𐓳𐓴𐓵𐓶𐓷𐓸𐓹𐓺𐓻𐳀𐳁𐳂𐳃𐳄𐳅𐳆𐳇𐳈𐳉𐳊𐳋𐳌𐳍𐳎𐳏𐳐𐳑𐳒𐳓𐳔𐳕𐳖𐳗𐳘𐳙𐳚𐳛𐳜𐳝𐳞𐳟𐳠𐳡𐳢𐳣𐳤𐳥𐳦𐳧𐳨𐳩𐳪𐳫𐳬𐳭𐳮𐳯𐳰𐳱𐳲𑣀𑣁𑣂𑣃𑣄𑣅𑣆𑣇𑣈𑣉𑣊𑣋𑣌𑣍𑣎𑣏𑣐𑣑𑣒𑣓𑣔𑣕𑣖𑣗𑣘𑣙𑣚𑣛𑣜𑣝𑣞𑣟ıȷ∇∂𞤢𞤣𞤤𞤥𞤦𞤧𞤨𞤩𞤪𞤫𞤬𞤭𞤮𞤯𞤰𞤱𞤲𞤳𞤴𞤵𞤶𞤷𞤸𞤹𞤺𞤻𞤼𞤽𞤾𞤿𞥀𞥁𞥂𞥃ٮڡٯ字双多解交映無前後再新初終販声吹演投捕遊指禁空合満申割営配得可丽丸乁𠄢你侻倂偺備像㒞𠘺兔兤具𠔜㒹內𠕋冗冤仌冬𩇟刃㓟刻剆剷㔕包匆卉博即卽卿𠨬灰及叟𠭣叫叱吆咞吸呈周咢哶唐啓啣善喫喳嗂圖圗噑噴壮城埴堍型堲報墬𡓤売壷夆夢奢𡚨𡛪姬娛娧姘婦㛮嬈嬾𡧈寃寘寳𡬘寿将㞁屠峀岍𡷤嵃𡷦嵮嵫嵼巡巢㠯巽帨帽幩㡢𢆃㡼庰庳庶𪎒𢌱舁弢㣇𣊸𦇚形彫㣣徚忍志忹悁㤺㤜𢛔惇慈慌慺憲憤憯懞戛扝抱拔捐𢬌挽拼捨掃揤𢯱搢揅掩㨮摩摾撝摷㩬敬𣀊旣書晉㬙㬈㫤冒冕最暜肭䏙朡杞杓𣏃㭉柺枅桒𣑭梎栟椔楂榣槪檨𣚣櫛㰘次𣢧歔㱎歲殟殻𣪍𡴋𣫺汎𣲼沿泍汧洖派浩浸涅𣴞洴港湮㴳滇𣻑淹潮𣽞𣾎濆瀹瀛㶖灊災灷炭𠔥煅𤉣熜爨牐𤘈犀犕𤜵𤠔獺王㺬玥㺸瑇瑜璅瓊㼛甤𤰶甾𤲒𢆟瘐𤾡𤾸𥁄㿼䀈𥃳𥃲𥄙𥄳眞真瞋䁆䂖𥐝硎䃣𥘦𥚚𥛅秫䄯穊穏𥥼𥪧䈂𥮫篆築䈧𥲀糒䊠糨糣紀𥾆絣䌁緇縂繅䌴𦈨𦉇䍙𦋙罺𦌾羕翺𦓚𦔣聠𦖨聰𣍟䏕育脃䐋脾媵𦞧𦞵𣎓𣎜舄辞䑫芑芋芝劳花芳芽苦𦬼茝荣莭茣莽菧荓菊菌菜𦰶𦵫𦳕䔫蓱蓳蔖𧏊蕤𦼬䕝䕡𦾱𧃒䕫虐虧虩蚩蚈蜎蛢蜨蝫螆蟡蠁䗹衠𧙧裗裞䘵裺㒻𧢮𧥦䚾䛇誠𧲨貫賁贛起𧼯𠠄跋趼跰𠣞軔𨗒𨗭邔郱鄑𨜮鄛鈸鋗鋘鉼鏹鐕𨯺開䦕閷𨵷䧦雃嶲霣𩅅𩈚䩮䩶韠𩐊䪲𩒖頩𩖶飢䬳餩馧駂駾䯎𩬰鱀鳽䳎䳭鵧𪃎䳸𪄅𪈎𪊑䵖黾鼅鼏鼖𪘀\";\n\nfunction mapChar(codePoint) {\n if (codePoint >= 0x30000) {\n // High planes are special cased.\n if (codePoint >= 0xE0100 && codePoint <= 0xE01EF)\n return 18874368;\n return 0;\n }\n return blocks[blockIdxes[codePoint >> 4]][codePoint & 15];\n}\n\nreturn {\n mapStr: mappingStr,\n mapChar: mapChar\n};\n}));\n","'use strict';\n\n/** Highest positive signed 32-bit float value */\nconst maxInt = 2147483647; // aka. 0x7FFFFFFF or 2^31-1\n\n/** Bootstring parameters */\nconst base = 36;\nconst tMin = 1;\nconst tMax = 26;\nconst skew = 38;\nconst damp = 700;\nconst initialBias = 72;\nconst initialN = 128; // 0x80\nconst delimiter = '-'; // '\\x2D'\n\n/** Regular expressions */\nconst regexPunycode = /^xn--/;\nconst regexNonASCII = /[^\\0-\\x7E]/; // non-ASCII chars\nconst regexSeparators = /[\\x2E\\u3002\\uFF0E\\uFF61]/g; // RFC 3490 separators\n\n/** Error messages */\nconst errors = {\n\t'overflow': 'Overflow: input needs wider integers to process',\n\t'not-basic': 'Illegal input >= 0x80 (not a basic code point)',\n\t'invalid-input': 'Invalid input'\n};\n\n/** Convenience shortcuts */\nconst baseMinusTMin = base - tMin;\nconst floor = Math.floor;\nconst stringFromCharCode = String.fromCharCode;\n\n/*--------------------------------------------------------------------------*/\n\n/**\n * A generic error utility function.\n * @private\n * @param {String} type The error type.\n * @returns {Error} Throws a `RangeError` with the applicable error message.\n */\nfunction error(type) {\n\tthrow new RangeError(errors[type]);\n}\n\n/**\n * A generic `Array#map` utility function.\n * @private\n * @param {Array} array The array to iterate over.\n * @param {Function} callback The function that gets called for every array\n * item.\n * @returns {Array} A new array of values returned by the callback function.\n */\nfunction map(array, fn) {\n\tconst result = [];\n\tlet length = array.length;\n\twhile (length--) {\n\t\tresult[length] = fn(array[length]);\n\t}\n\treturn result;\n}\n\n/**\n * A simple `Array#map`-like wrapper to work with domain name strings or email\n * addresses.\n * @private\n * @param {String} domain The domain name or email address.\n * @param {Function} callback The function that gets called for every\n * character.\n * @returns {Array} A new string of characters returned by the callback\n * function.\n */\nfunction mapDomain(string, fn) {\n\tconst parts = string.split('@');\n\tlet result = '';\n\tif (parts.length > 1) {\n\t\t// In email addresses, only the domain name should be punycoded. Leave\n\t\t// the local part (i.e. everything up to `@`) intact.\n\t\tresult = parts[0] + '@';\n\t\tstring = parts[1];\n\t}\n\t// Avoid `split(regex)` for IE8 compatibility. See #17.\n\tstring = string.replace(regexSeparators, '\\x2E');\n\tconst labels = string.split('.');\n\tconst encoded = map(labels, fn).join('.');\n\treturn result + encoded;\n}\n\n/**\n * Creates an array containing the numeric code points of each Unicode\n * character in the string. While JavaScript uses UCS-2 internally,\n * this function will convert a pair of surrogate halves (each of which\n * UCS-2 exposes as separate characters) into a single code point,\n * matching UTF-16.\n * @see `punycode.ucs2.encode`\n * @see \n * @memberOf punycode.ucs2\n * @name decode\n * @param {String} string The Unicode input string (UCS-2).\n * @returns {Array} The new array of code points.\n */\nfunction ucs2decode(string) {\n\tconst output = [];\n\tlet counter = 0;\n\tconst length = string.length;\n\twhile (counter < length) {\n\t\tconst value = string.charCodeAt(counter++);\n\t\tif (value >= 0xD800 && value <= 0xDBFF && counter < length) {\n\t\t\t// It's a high surrogate, and there is a next character.\n\t\t\tconst extra = string.charCodeAt(counter++);\n\t\t\tif ((extra & 0xFC00) == 0xDC00) { // Low surrogate.\n\t\t\t\toutput.push(((value & 0x3FF) << 10) + (extra & 0x3FF) + 0x10000);\n\t\t\t} else {\n\t\t\t\t// It's an unmatched surrogate; only append this code unit, in case the\n\t\t\t\t// next code unit is the high surrogate of a surrogate pair.\n\t\t\t\toutput.push(value);\n\t\t\t\tcounter--;\n\t\t\t}\n\t\t} else {\n\t\t\toutput.push(value);\n\t\t}\n\t}\n\treturn output;\n}\n\n/**\n * Creates a string based on an array of numeric code points.\n * @see `punycode.ucs2.decode`\n * @memberOf punycode.ucs2\n * @name encode\n * @param {Array} codePoints The array of numeric code points.\n * @returns {String} The new Unicode string (UCS-2).\n */\nconst ucs2encode = array => String.fromCodePoint(...array);\n\n/**\n * Converts a basic code point into a digit/integer.\n * @see `digitToBasic()`\n * @private\n * @param {Number} codePoint The basic numeric code point value.\n * @returns {Number} The numeric value of a basic code point (for use in\n * representing integers) in the range `0` to `base - 1`, or `base` if\n * the code point does not represent a value.\n */\nconst basicToDigit = function(codePoint) {\n\tif (codePoint - 0x30 < 0x0A) {\n\t\treturn codePoint - 0x16;\n\t}\n\tif (codePoint - 0x41 < 0x1A) {\n\t\treturn codePoint - 0x41;\n\t}\n\tif (codePoint - 0x61 < 0x1A) {\n\t\treturn codePoint - 0x61;\n\t}\n\treturn base;\n};\n\n/**\n * Converts a digit/integer into a basic code point.\n * @see `basicToDigit()`\n * @private\n * @param {Number} digit The numeric value of a basic code point.\n * @returns {Number} The basic code point whose value (when used for\n * representing integers) is `digit`, which needs to be in the range\n * `0` to `base - 1`. If `flag` is non-zero, the uppercase form is\n * used; else, the lowercase form is used. The behavior is undefined\n * if `flag` is non-zero and `digit` has no uppercase form.\n */\nconst digitToBasic = function(digit, flag) {\n\t// 0..25 map to ASCII a..z or A..Z\n\t// 26..35 map to ASCII 0..9\n\treturn digit + 22 + 75 * (digit < 26) - ((flag != 0) << 5);\n};\n\n/**\n * Bias adaptation function as per section 3.4 of RFC 3492.\n * https://tools.ietf.org/html/rfc3492#section-3.4\n * @private\n */\nconst adapt = function(delta, numPoints, firstTime) {\n\tlet k = 0;\n\tdelta = firstTime ? floor(delta / damp) : delta >> 1;\n\tdelta += floor(delta / numPoints);\n\tfor (/* no initialization */; delta > baseMinusTMin * tMax >> 1; k += base) {\n\t\tdelta = floor(delta / baseMinusTMin);\n\t}\n\treturn floor(k + (baseMinusTMin + 1) * delta / (delta + skew));\n};\n\n/**\n * Converts a Punycode string of ASCII-only symbols to a string of Unicode\n * symbols.\n * @memberOf punycode\n * @param {String} input The Punycode string of ASCII-only symbols.\n * @returns {String} The resulting string of Unicode symbols.\n */\nconst decode = function(input) {\n\t// Don't use UCS-2.\n\tconst output = [];\n\tconst inputLength = input.length;\n\tlet i = 0;\n\tlet n = initialN;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points: let `basic` be the number of input code\n\t// points before the last delimiter, or `0` if there is none, then copy\n\t// the first basic code points to the output.\n\n\tlet basic = input.lastIndexOf(delimiter);\n\tif (basic < 0) {\n\t\tbasic = 0;\n\t}\n\n\tfor (let j = 0; j < basic; ++j) {\n\t\t// if it's not a basic code point\n\t\tif (input.charCodeAt(j) >= 0x80) {\n\t\t\terror('not-basic');\n\t\t}\n\t\toutput.push(input.charCodeAt(j));\n\t}\n\n\t// Main decoding loop: start just after the last delimiter if any basic code\n\t// points were copied; start at the beginning otherwise.\n\n\tfor (let index = basic > 0 ? basic + 1 : 0; index < inputLength; /* no final expression */) {\n\n\t\t// `index` is the index of the next character to be consumed.\n\t\t// Decode a generalized variable-length integer into `delta`,\n\t\t// which gets added to `i`. The overflow checking is easier\n\t\t// if we increase `i` as we go, then subtract off its starting\n\t\t// value at the end to obtain `delta`.\n\t\tlet oldi = i;\n\t\tfor (let w = 1, k = base; /* no condition */; k += base) {\n\n\t\t\tif (index >= inputLength) {\n\t\t\t\terror('invalid-input');\n\t\t\t}\n\n\t\t\tconst digit = basicToDigit(input.charCodeAt(index++));\n\n\t\t\tif (digit >= base || digit > floor((maxInt - i) / w)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\ti += digit * w;\n\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\n\t\t\tif (digit < t) {\n\t\t\t\tbreak;\n\t\t\t}\n\n\t\t\tconst baseMinusT = base - t;\n\t\t\tif (w > floor(maxInt / baseMinusT)) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\n\t\t\tw *= baseMinusT;\n\n\t\t}\n\n\t\tconst out = output.length + 1;\n\t\tbias = adapt(i - oldi, out, oldi == 0);\n\n\t\t// `i` was supposed to wrap around from `out` to `0`,\n\t\t// incrementing `n` each time, so we'll fix that now:\n\t\tif (floor(i / out) > maxInt - n) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tn += floor(i / out);\n\t\ti %= out;\n\n\t\t// Insert `n` at position `i` of the output.\n\t\toutput.splice(i++, 0, n);\n\n\t}\n\n\treturn String.fromCodePoint(...output);\n};\n\n/**\n * Converts a string of Unicode symbols (e.g. a domain name label) to a\n * Punycode string of ASCII-only symbols.\n * @memberOf punycode\n * @param {String} input The string of Unicode symbols.\n * @returns {String} The resulting Punycode string of ASCII-only symbols.\n */\nconst encode = function(input) {\n\tconst output = [];\n\n\t// Convert the input in UCS-2 to an array of Unicode code points.\n\tinput = ucs2decode(input);\n\n\t// Cache the length.\n\tlet inputLength = input.length;\n\n\t// Initialize the state.\n\tlet n = initialN;\n\tlet delta = 0;\n\tlet bias = initialBias;\n\n\t// Handle the basic code points.\n\tfor (const currentValue of input) {\n\t\tif (currentValue < 0x80) {\n\t\t\toutput.push(stringFromCharCode(currentValue));\n\t\t}\n\t}\n\n\tlet basicLength = output.length;\n\tlet handledCPCount = basicLength;\n\n\t// `handledCPCount` is the number of code points that have been handled;\n\t// `basicLength` is the number of basic code points.\n\n\t// Finish the basic string with a delimiter unless it's empty.\n\tif (basicLength) {\n\t\toutput.push(delimiter);\n\t}\n\n\t// Main encoding loop:\n\twhile (handledCPCount < inputLength) {\n\n\t\t// All non-basic code points < n have been handled already. Find the next\n\t\t// larger one:\n\t\tlet m = maxInt;\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue >= n && currentValue < m) {\n\t\t\t\tm = currentValue;\n\t\t\t}\n\t\t}\n\n\t\t// Increase `delta` enough to advance the decoder's state to ,\n\t\t// but guard against overflow.\n\t\tconst handledCPCountPlusOne = handledCPCount + 1;\n\t\tif (m - n > floor((maxInt - delta) / handledCPCountPlusOne)) {\n\t\t\terror('overflow');\n\t\t}\n\n\t\tdelta += (m - n) * handledCPCountPlusOne;\n\t\tn = m;\n\n\t\tfor (const currentValue of input) {\n\t\t\tif (currentValue < n && ++delta > maxInt) {\n\t\t\t\terror('overflow');\n\t\t\t}\n\t\t\tif (currentValue == n) {\n\t\t\t\t// Represent delta as a generalized variable-length integer.\n\t\t\t\tlet q = delta;\n\t\t\t\tfor (let k = base; /* no condition */; k += base) {\n\t\t\t\t\tconst t = k <= bias ? tMin : (k >= bias + tMax ? tMax : k - bias);\n\t\t\t\t\tif (q < t) {\n\t\t\t\t\t\tbreak;\n\t\t\t\t\t}\n\t\t\t\t\tconst qMinusT = q - t;\n\t\t\t\t\tconst baseMinusT = base - t;\n\t\t\t\t\toutput.push(\n\t\t\t\t\t\tstringFromCharCode(digitToBasic(t + qMinusT % baseMinusT, 0))\n\t\t\t\t\t);\n\t\t\t\t\tq = floor(qMinusT / baseMinusT);\n\t\t\t\t}\n\n\t\t\t\toutput.push(stringFromCharCode(digitToBasic(q, 0)));\n\t\t\t\tbias = adapt(delta, handledCPCountPlusOne, handledCPCount == basicLength);\n\t\t\t\tdelta = 0;\n\t\t\t\t++handledCPCount;\n\t\t\t}\n\t\t}\n\n\t\t++delta;\n\t\t++n;\n\n\t}\n\treturn output.join('');\n};\n\n/**\n * Converts a Punycode string representing a domain name or an email address\n * to Unicode. Only the Punycoded parts of the input will be converted, i.e.\n * it doesn't matter if you call it on a string that has already been\n * converted to Unicode.\n * @memberOf punycode\n * @param {String} input The Punycoded domain name or email address to\n * convert to Unicode.\n * @returns {String} The Unicode representation of the given Punycode\n * string.\n */\nconst toUnicode = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexPunycode.test(string)\n\t\t\t? decode(string.slice(4).toLowerCase())\n\t\t\t: string;\n\t});\n};\n\n/**\n * Converts a Unicode string representing a domain name or an email address to\n * Punycode. Only the non-ASCII parts of the domain name will be converted,\n * i.e. it doesn't matter if you call it with a domain that's already in\n * ASCII.\n * @memberOf punycode\n * @param {String} input The domain name or email address to convert, as a\n * Unicode string.\n * @returns {String} The Punycode representation of the given domain name or\n * email address.\n */\nconst toASCII = function(input) {\n\treturn mapDomain(input, function(string) {\n\t\treturn regexNonASCII.test(string)\n\t\t\t? 'xn--' + encode(string)\n\t\t\t: string;\n\t});\n};\n\n/*--------------------------------------------------------------------------*/\n\n/** Define the public API */\nconst punycode = {\n\t/**\n\t * A string representing the current Punycode.js version number.\n\t * @memberOf punycode\n\t * @type String\n\t */\n\t'version': '2.1.0',\n\t/**\n\t * An object of methods to convert from JavaScript's internal character\n\t * representation (UCS-2) to Unicode code points, and back.\n\t * @see \n\t * @memberOf punycode\n\t * @type Object\n\t */\n\t'ucs2': {\n\t\t'decode': ucs2decode,\n\t\t'encode': ucs2encode\n\t},\n\t'decode': decode,\n\t'encode': encode,\n\t'toASCII': toASCII,\n\t'toUnicode': toUnicode\n};\n\nmodule.exports = punycode;\n","(function(root, factory) {\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define(['punycode', './idna-map'], function(punycode, idna_map) {\n return factory(punycode, idna_map);\n });\n }\n else if (typeof exports === 'object') {\n module.exports = factory(require('punycode'), require('./idna-map'));\n }\n else {\n root.uts46 = factory(root.punycode, root.idna_map);\n }\n}(this, function(punycode, idna_map) {\n\n function mapLabel(label, useStd3ASCII, transitional) {\n var mapped = [];\n var chars = punycode.ucs2.decode(label);\n for (var i = 0; i < chars.length; i++) {\n var cp = chars[i];\n var ch = punycode.ucs2.encode([chars[i]]);\n var composite = idna_map.mapChar(cp);\n var flags = (composite >> 23);\n var kind = (composite >> 21) & 3;\n var index = (composite >> 5) & 0xffff;\n var length = composite & 0x1f;\n var value = idna_map.mapStr.substr(index, length);\n if (kind === 0 || (useStd3ASCII && (flags & 1))) {\n throw new Error(\"Illegal char \" + ch);\n }\n else if (kind === 1) {\n mapped.push(value);\n }\n else if (kind === 2) {\n mapped.push(transitional ? value : ch);\n }\n /* istanbul ignore next */\n else if (kind === 3) {\n mapped.push(ch);\n }\n }\n\n var newLabel = mapped.join(\"\").normalize(\"NFC\");\n return newLabel;\n }\n\n function process(domain, transitional, useStd3ASCII) {\n /* istanbul ignore if */\n if (useStd3ASCII === undefined)\n useStd3ASCII = false;\n var mappedIDNA = mapLabel(domain, useStd3ASCII, transitional);\n\n // Step 3. Break\n var labels = mappedIDNA.split(\".\");\n\n // Step 4. Convert/Validate\n labels = labels.map(function(label) {\n if (label.startsWith(\"xn--\")) {\n label = punycode.decode(label.substring(4));\n validateLabel(label, useStd3ASCII, false);\n }\n else {\n validateLabel(label, useStd3ASCII, transitional);\n }\n return label;\n });\n\n return labels.join(\".\");\n }\n\n function validateLabel(label, useStd3ASCII, transitional) {\n // 2. The label must not contain a U+002D HYPHEN-MINUS character in both the\n // third position and fourth positions.\n if (label[2] === '-' && label[3] === '-')\n throw new Error(\"Failed to validate \" + label);\n\n // 3. The label must neither begin nor end with a U+002D HYPHEN-MINUS\n // character.\n if (label.startsWith('-') || label.endsWith('-'))\n throw new Error(\"Failed to validate \" + label);\n\n // 4. The label must not contain a U+002E ( . ) FULL STOP.\n // this should nerver happen as label is chunked internally by this character\n /* istanbul ignore if */\n if (label.includes('.'))\n throw new Error(\"Failed to validate \" + label);\n\n if (mapLabel(label, useStd3ASCII, transitional) !== label)\n throw new Error(\"Failed to validate \" + label);\n\n // 5. The label must not begin with a combining mark, that is:\n // General_Category=Mark.\n var ch = label.codePointAt(0);\n if (idna_map.mapChar(ch) & (0x2 << 23))\n throw new Error(\"Label contains illegal character: \" + ch);\n }\n\n function toAscii(domain, options) {\n if (options === undefined)\n options = {};\n var transitional = 'transitional' in options ? options.transitional : true;\n var useStd3ASCII = 'useStd3ASCII' in options ? options.useStd3ASCII : false;\n var verifyDnsLength = 'verifyDnsLength' in options ? options.verifyDnsLength : false;\n var labels = process(domain, transitional, useStd3ASCII).split('.');\n var asciiLabels = labels.map(punycode.toASCII);\n var asciiString = asciiLabels.join('.');\n var i;\n if (verifyDnsLength) {\n if (asciiString.length < 1 || asciiString.length > 253) {\n throw new Error(\"DNS name has wrong length: \" + asciiString);\n }\n for (i = 0; i < asciiLabels.length; i++) {//for .. of replacement\n var label = asciiLabels[i];\n if (label.length < 1 || label.length > 63)\n throw new Error(\"DNS label has wrong length: \" + label);\n }\n }\n return asciiString;\n }\n\n function toUnicode(domain, options) {\n if (options === undefined)\n options = {};\n var useStd3ASCII = 'useStd3ASCII' in options ? options.useStd3ASCII : false;\n return process(domain, false, useStd3ASCII);\n }\n\n return {\n toUnicode: toUnicode,\n toAscii: toAscii,\n };\n}));\n","/*! ieee754. BSD-3-Clause License. Feross Aboukhadijeh */\nexports.read = function (buffer, offset, isLE, mLen, nBytes) {\n var e, m\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var nBits = -7\n var i = isLE ? (nBytes - 1) : 0\n var d = isLE ? -1 : 1\n var s = buffer[offset + i]\n\n i += d\n\n e = s & ((1 << (-nBits)) - 1)\n s >>= (-nBits)\n nBits += eLen\n for (; nBits > 0; e = (e * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n m = e & ((1 << (-nBits)) - 1)\n e >>= (-nBits)\n nBits += mLen\n for (; nBits > 0; m = (m * 256) + buffer[offset + i], i += d, nBits -= 8) {}\n\n if (e === 0) {\n e = 1 - eBias\n } else if (e === eMax) {\n return m ? NaN : ((s ? -1 : 1) * Infinity)\n } else {\n m = m + Math.pow(2, mLen)\n e = e - eBias\n }\n return (s ? -1 : 1) * m * Math.pow(2, e - mLen)\n}\n\nexports.write = function (buffer, value, offset, isLE, mLen, nBytes) {\n var e, m, c\n var eLen = (nBytes * 8) - mLen - 1\n var eMax = (1 << eLen) - 1\n var eBias = eMax >> 1\n var rt = (mLen === 23 ? Math.pow(2, -24) - Math.pow(2, -77) : 0)\n var i = isLE ? 0 : (nBytes - 1)\n var d = isLE ? 1 : -1\n var s = value < 0 || (value === 0 && 1 / value < 0) ? 1 : 0\n\n value = Math.abs(value)\n\n if (isNaN(value) || value === Infinity) {\n m = isNaN(value) ? 1 : 0\n e = eMax\n } else {\n e = Math.floor(Math.log(value) / Math.LN2)\n if (value * (c = Math.pow(2, -e)) < 1) {\n e--\n c *= 2\n }\n if (e + eBias >= 1) {\n value += rt / c\n } else {\n value += rt * Math.pow(2, 1 - eBias)\n }\n if (value * c >= 2) {\n e++\n c /= 2\n }\n\n if (e + eBias >= eMax) {\n m = 0\n e = eMax\n } else if (e + eBias >= 1) {\n m = ((value * c) - 1) * Math.pow(2, mLen)\n e = e + eBias\n } else {\n m = value * Math.pow(2, eBias - 1) * Math.pow(2, mLen)\n e = 0\n }\n }\n\n for (; mLen >= 8; buffer[offset + i] = m & 0xff, i += d, m /= 256, mLen -= 8) {}\n\n e = (e << mLen) | m\n eLen += mLen\n for (; eLen > 0; buffer[offset + i] = e & 0xff, i += d, e /= 256, eLen -= 8) {}\n\n buffer[offset + i - d] |= s * 128\n}\n","if (typeof Object.create === 'function') {\n // implementation from standard node.js 'util' module\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n ctor.prototype = Object.create(superCtor.prototype, {\n constructor: {\n value: ctor,\n enumerable: false,\n writable: true,\n configurable: true\n }\n })\n }\n };\n} else {\n // old school shim for old browsers\n module.exports = function inherits(ctor, superCtor) {\n if (superCtor) {\n ctor.super_ = superCtor\n var TempCtor = function () {}\n TempCtor.prototype = superCtor.prototype\n ctor.prototype = new TempCtor()\n ctor.prototype.constructor = ctor\n }\n }\n}\n","'use strict';\n\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\n\nvar isStandardArguments = function isArguments(value) {\n\tif (hasToStringTag && value && typeof value === 'object' && Symbol.toStringTag in value) {\n\t\treturn false;\n\t}\n\treturn $toString(value) === '[object Arguments]';\n};\n\nvar isLegacyArguments = function isArguments(value) {\n\tif (isStandardArguments(value)) {\n\t\treturn true;\n\t}\n\treturn value !== null &&\n\t\ttypeof value === 'object' &&\n\t\ttypeof value.length === 'number' &&\n\t\tvalue.length >= 0 &&\n\t\t$toString(value) !== '[object Array]' &&\n\t\t$toString(value.callee) === '[object Function]';\n};\n\nvar supportsStandardArguments = (function () {\n\treturn isStandardArguments(arguments);\n}());\n\nisStandardArguments.isLegacyArguments = isLegacyArguments; // for tests\n\nmodule.exports = supportsStandardArguments ? isStandardArguments : isLegacyArguments;\n","module.exports = isFunction\n\nvar toString = Object.prototype.toString\n\nfunction isFunction (fn) {\n if (!fn) {\n return false\n }\n var string = toString.call(fn)\n return string === '[object Function]' ||\n (typeof fn === 'function' && string !== '[object RegExp]') ||\n (typeof window !== 'undefined' &&\n // IE8 and below\n (fn === window.setTimeout ||\n fn === window.alert ||\n fn === window.confirm ||\n fn === window.prompt))\n};\n","'use strict';\n\nvar toStr = Object.prototype.toString;\nvar fnToStr = Function.prototype.toString;\nvar isFnRegex = /^\\s*(?:function)?\\*/;\nvar hasToStringTag = require('has-tostringtag/shams')();\nvar getProto = Object.getPrototypeOf;\nvar getGeneratorFunc = function () { // eslint-disable-line consistent-return\n\tif (!hasToStringTag) {\n\t\treturn false;\n\t}\n\ttry {\n\t\treturn Function('return function*() {}')();\n\t} catch (e) {\n\t}\n};\nvar GeneratorFunction;\n\nmodule.exports = function isGeneratorFunction(fn) {\n\tif (typeof fn !== 'function') {\n\t\treturn false;\n\t}\n\tif (isFnRegex.test(fnToStr.call(fn))) {\n\t\treturn true;\n\t}\n\tif (!hasToStringTag) {\n\t\tvar str = toStr.call(fn);\n\t\treturn str === '[object GeneratorFunction]';\n\t}\n\tif (!getProto) {\n\t\treturn false;\n\t}\n\tif (typeof GeneratorFunction === 'undefined') {\n\t\tvar generatorFunc = getGeneratorFunc();\n\t\tGeneratorFunction = generatorFunc ? getProto(generatorFunc) : false;\n\t}\n\treturn getProto(fn) === GeneratorFunction;\n};\n","/**\n * Returns a `Boolean` on whether or not the a `String` starts with '0x'\n * @param {String} str the string input value\n * @return {Boolean} a boolean if it is or is not hex prefixed\n * @throws if the str input is not a string\n */\nmodule.exports = function isHexPrefixed(str) {\n if (typeof str !== 'string') {\n throw new Error(\"[is-hex-prefixed] value must be type 'string', is currently type \" + (typeof str) + \", while checking isHexPrefixed.\");\n }\n\n return str.slice(0, 2) === '0x';\n}\n","'use strict';\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function isNaN(value) {\n\treturn value !== value;\n};\n","'use strict';\n\nvar callBind = require('call-bind');\nvar define = require('define-properties');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Number);\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\tif (Number.isNaN && Number.isNaN(NaN) && !Number.isNaN('a')) {\n\t\treturn Number.isNaN;\n\t}\n\treturn implementation;\n};\n","'use strict';\n\nvar define = require('define-properties');\nvar getPolyfill = require('./polyfill');\n\n/* http://www.ecma-international.org/ecma-262/6.0/#sec-number.isnan */\n\nmodule.exports = function shimNumberIsNaN() {\n\tvar polyfill = getPolyfill();\n\tdefine(Number, { isNaN: polyfill }, {\n\t\tisNaN: function testIsNaN() {\n\t\t\treturn Number.isNaN !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar forEach = require('foreach');\nvar availableTypedArrays = require('available-typed-arrays');\nvar callBound = require('call-bind/callBound');\n\nvar $toString = callBound('Object.prototype.toString');\nvar hasToStringTag = require('has-tostringtag/shams')();\n\nvar g = typeof globalThis === 'undefined' ? global : globalThis;\nvar typedArrays = availableTypedArrays();\n\nvar $indexOf = callBound('Array.prototype.indexOf', true) || function indexOf(array, value) {\n\tfor (var i = 0; i < array.length; i += 1) {\n\t\tif (array[i] === value) {\n\t\t\treturn i;\n\t\t}\n\t}\n\treturn -1;\n};\nvar $slice = callBound('String.prototype.slice');\nvar toStrTags = {};\nvar gOPD = require('es-abstract/helpers/getOwnPropertyDescriptor');\nvar getPrototypeOf = Object.getPrototypeOf; // require('getprototypeof');\nif (hasToStringTag && gOPD && getPrototypeOf) {\n\tforEach(typedArrays, function (typedArray) {\n\t\tvar arr = new g[typedArray]();\n\t\tif (Symbol.toStringTag in arr) {\n\t\t\tvar proto = getPrototypeOf(arr);\n\t\t\tvar descriptor = gOPD(proto, Symbol.toStringTag);\n\t\t\tif (!descriptor) {\n\t\t\t\tvar superProto = getPrototypeOf(proto);\n\t\t\t\tdescriptor = gOPD(superProto, Symbol.toStringTag);\n\t\t\t}\n\t\t\ttoStrTags[typedArray] = descriptor.get;\n\t\t}\n\t});\n}\n\nvar tryTypedArrays = function tryAllTypedArrays(value) {\n\tvar anyTrue = false;\n\tforEach(toStrTags, function (getter, typedArray) {\n\t\tif (!anyTrue) {\n\t\t\ttry {\n\t\t\t\tanyTrue = getter.call(value) === typedArray;\n\t\t\t} catch (e) { /**/ }\n\t\t}\n\t});\n\treturn anyTrue;\n};\n\nmodule.exports = function isTypedArray(value) {\n\tif (!value || typeof value !== 'object') { return false; }\n\tif (!hasToStringTag || !(Symbol.toStringTag in value)) {\n\t\tvar tag = $slice($toString(value), 8, -1);\n\t\treturn $indexOf(typedArrays, tag) > -1;\n\t}\n\tif (!gOPD) { return false; }\n\treturn tryTypedArrays(value);\n};\n","module.exports = isTypedArray\nisTypedArray.strict = isStrictTypedArray\nisTypedArray.loose = isLooseTypedArray\n\nvar toString = Object.prototype.toString\nvar names = {\n '[object Int8Array]': true\n , '[object Int16Array]': true\n , '[object Int32Array]': true\n , '[object Uint8Array]': true\n , '[object Uint8ClampedArray]': true\n , '[object Uint16Array]': true\n , '[object Uint32Array]': true\n , '[object Float32Array]': true\n , '[object Float64Array]': true\n}\n\nfunction isTypedArray(arr) {\n return (\n isStrictTypedArray(arr)\n || isLooseTypedArray(arr)\n )\n}\n\nfunction isStrictTypedArray(arr) {\n return (\n arr instanceof Int8Array\n || arr instanceof Int16Array\n || arr instanceof Int32Array\n || arr instanceof Uint8Array\n || arr instanceof Uint8ClampedArray\n || arr instanceof Uint16Array\n || arr instanceof Uint32Array\n || arr instanceof Float32Array\n || arr instanceof Float64Array\n )\n}\n\nfunction isLooseTypedArray(arr) {\n return names[toString.call(arr)]\n}\n","var toString = {}.toString;\n\nmodule.exports = Array.isArray || function (arr) {\n return toString.call(arr) == '[object Array]';\n};\n","/**\n * [js-sha3]{@link https://github.com/emn178/js-sha3}\n *\n * @version 0.8.0\n * @author Chen, Yi-Cyuan [emn178@gmail.com]\n * @copyright Chen, Yi-Cyuan 2015-2018\n * @license MIT\n */\n/*jslint bitwise: true */\n(function () {\n 'use strict';\n\n var INPUT_ERROR = 'input is invalid type';\n var FINALIZE_ERROR = 'finalize already called';\n var WINDOW = typeof window === 'object';\n var root = WINDOW ? window : {};\n if (root.JS_SHA3_NO_WINDOW) {\n WINDOW = false;\n }\n var WEB_WORKER = !WINDOW && typeof self === 'object';\n var NODE_JS = !root.JS_SHA3_NO_NODE_JS && typeof process === 'object' && process.versions && process.versions.node;\n if (NODE_JS) {\n root = global;\n } else if (WEB_WORKER) {\n root = self;\n }\n var COMMON_JS = !root.JS_SHA3_NO_COMMON_JS && typeof module === 'object' && module.exports;\n var AMD = typeof define === 'function' && define.amd;\n var ARRAY_BUFFER = !root.JS_SHA3_NO_ARRAY_BUFFER && typeof ArrayBuffer !== 'undefined';\n var HEX_CHARS = '0123456789abcdef'.split('');\n var SHAKE_PADDING = [31, 7936, 2031616, 520093696];\n var CSHAKE_PADDING = [4, 1024, 262144, 67108864];\n var KECCAK_PADDING = [1, 256, 65536, 16777216];\n var PADDING = [6, 1536, 393216, 100663296];\n var SHIFT = [0, 8, 16, 24];\n var RC = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649,\n 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0,\n 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771,\n 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648,\n 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648];\n var BITS = [224, 256, 384, 512];\n var SHAKE_BITS = [128, 256];\n var OUTPUT_TYPES = ['hex', 'buffer', 'arrayBuffer', 'array', 'digest'];\n var CSHAKE_BYTEPAD = {\n '128': 168,\n '256': 136\n };\n\n if (root.JS_SHA3_NO_NODE_JS || !Array.isArray) {\n Array.isArray = function (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]';\n };\n }\n\n if (ARRAY_BUFFER && (root.JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW || !ArrayBuffer.isView)) {\n ArrayBuffer.isView = function (obj) {\n return typeof obj === 'object' && obj.buffer && obj.buffer.constructor === ArrayBuffer;\n };\n }\n\n var createOutputMethod = function (bits, padding, outputType) {\n return function (message) {\n return new Keccak(bits, padding, bits).update(message)[outputType]();\n };\n };\n\n var createShakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits) {\n return new Keccak(bits, padding, outputBits).update(message)[outputType]();\n };\n };\n\n var createCshakeOutputMethod = function (bits, padding, outputType) {\n return function (message, outputBits, n, s) {\n return methods['cshake' + bits].update(message, outputBits, n, s)[outputType]();\n };\n };\n\n var createKmacOutputMethod = function (bits, padding, outputType) {\n return function (key, message, outputBits, s) {\n return methods['kmac' + bits].update(key, message, outputBits, s)[outputType]();\n };\n };\n\n var createOutputMethods = function (method, createMethod, bits, padding) {\n for (var i = 0; i < OUTPUT_TYPES.length; ++i) {\n var type = OUTPUT_TYPES[i];\n method[type] = createMethod(bits, padding, type);\n }\n return method;\n };\n\n var createMethod = function (bits, padding) {\n var method = createOutputMethod(bits, padding, 'hex');\n method.create = function () {\n return new Keccak(bits, padding, bits);\n };\n method.update = function (message) {\n return method.create().update(message);\n };\n return createOutputMethods(method, createOutputMethod, bits, padding);\n };\n\n var createShakeMethod = function (bits, padding) {\n var method = createShakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits) {\n return new Keccak(bits, padding, outputBits);\n };\n method.update = function (message, outputBits) {\n return method.create(outputBits).update(message);\n };\n return createOutputMethods(method, createShakeOutputMethod, bits, padding);\n };\n\n var createCshakeMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createCshakeOutputMethod(bits, padding, 'hex');\n method.create = function (outputBits, n, s) {\n if (!n && !s) {\n return methods['shake' + bits].create(outputBits);\n } else {\n return new Keccak(bits, padding, outputBits).bytepad([n, s], w);\n }\n };\n method.update = function (message, outputBits, n, s) {\n return method.create(outputBits, n, s).update(message);\n };\n return createOutputMethods(method, createCshakeOutputMethod, bits, padding);\n };\n\n var createKmacMethod = function (bits, padding) {\n var w = CSHAKE_BYTEPAD[bits];\n var method = createKmacOutputMethod(bits, padding, 'hex');\n method.create = function (key, outputBits, s) {\n return new Kmac(bits, padding, outputBits).bytepad(['KMAC', s], w).bytepad([key], w);\n };\n method.update = function (key, message, outputBits, s) {\n return method.create(key, outputBits, s).update(message);\n };\n return createOutputMethods(method, createKmacOutputMethod, bits, padding);\n };\n\n var algorithms = [\n { name: 'keccak', padding: KECCAK_PADDING, bits: BITS, createMethod: createMethod },\n { name: 'sha3', padding: PADDING, bits: BITS, createMethod: createMethod },\n { name: 'shake', padding: SHAKE_PADDING, bits: SHAKE_BITS, createMethod: createShakeMethod },\n { name: 'cshake', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createCshakeMethod },\n { name: 'kmac', padding: CSHAKE_PADDING, bits: SHAKE_BITS, createMethod: createKmacMethod }\n ];\n\n var methods = {}, methodNames = [];\n\n for (var i = 0; i < algorithms.length; ++i) {\n var algorithm = algorithms[i];\n var bits = algorithm.bits;\n for (var j = 0; j < bits.length; ++j) {\n var methodName = algorithm.name + '_' + bits[j];\n methodNames.push(methodName);\n methods[methodName] = algorithm.createMethod(bits[j], algorithm.padding);\n if (algorithm.name !== 'sha3') {\n var newMethodName = algorithm.name + bits[j];\n methodNames.push(newMethodName);\n methods[newMethodName] = methods[methodName];\n }\n }\n }\n\n function Keccak(bits, padding, outputBits) {\n this.blocks = [];\n this.s = [];\n this.padding = padding;\n this.outputBits = outputBits;\n this.reset = true;\n this.finalized = false;\n this.block = 0;\n this.start = 0;\n this.blockCount = (1600 - (bits << 1)) >> 5;\n this.byteCount = this.blockCount << 2;\n this.outputBlocks = outputBits >> 5;\n this.extraBytes = (outputBits & 31) >> 3;\n\n for (var i = 0; i < 50; ++i) {\n this.s[i] = 0;\n }\n }\n\n Keccak.prototype.update = function (message) {\n if (this.finalized) {\n throw new Error(FINALIZE_ERROR);\n }\n var notString, type = typeof message;\n if (type !== 'string') {\n if (type === 'object') {\n if (message === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && message.constructor === ArrayBuffer) {\n message = new Uint8Array(message);\n } else if (!Array.isArray(message)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(message)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var blocks = this.blocks, byteCount = this.byteCount, length = message.length,\n blockCount = this.blockCount, index = 0, s = this.s, i, code;\n\n while (index < length) {\n if (this.reset) {\n this.reset = false;\n blocks[0] = this.block;\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n if (notString) {\n for (i = this.start; index < length && i < byteCount; ++index) {\n blocks[i >> 2] |= message[index] << SHIFT[i++ & 3];\n }\n } else {\n for (i = this.start; index < length && i < byteCount; ++index) {\n code = message.charCodeAt(index);\n if (code < 0x80) {\n blocks[i >> 2] |= code << SHIFT[i++ & 3];\n } else if (code < 0x800) {\n blocks[i >> 2] |= (0xc0 | (code >> 6)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else if (code < 0xd800 || code >= 0xe000) {\n blocks[i >> 2] |= (0xe0 | (code >> 12)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (message.charCodeAt(++index) & 0x3ff));\n blocks[i >> 2] |= (0xf0 | (code >> 18)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 12) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | ((code >> 6) & 0x3f)) << SHIFT[i++ & 3];\n blocks[i >> 2] |= (0x80 | (code & 0x3f)) << SHIFT[i++ & 3];\n }\n }\n }\n this.lastByteIndex = i;\n if (i >= byteCount) {\n this.start = i - byteCount;\n this.block = blocks[blockCount];\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n this.reset = true;\n } else {\n this.start = i;\n }\n }\n return this;\n };\n\n Keccak.prototype.encode = function (x, right) {\n var o = x & 255, n = 1;\n var bytes = [o];\n x = x >> 8;\n o = x & 255;\n while (o > 0) {\n bytes.unshift(o);\n x = x >> 8;\n o = x & 255;\n ++n;\n }\n if (right) {\n bytes.push(n);\n } else {\n bytes.unshift(n);\n }\n this.update(bytes);\n return bytes.length;\n };\n\n Keccak.prototype.encodeString = function (str) {\n var notString, type = typeof str;\n if (type !== 'string') {\n if (type === 'object') {\n if (str === null) {\n throw new Error(INPUT_ERROR);\n } else if (ARRAY_BUFFER && str.constructor === ArrayBuffer) {\n str = new Uint8Array(str);\n } else if (!Array.isArray(str)) {\n if (!ARRAY_BUFFER || !ArrayBuffer.isView(str)) {\n throw new Error(INPUT_ERROR);\n }\n }\n } else {\n throw new Error(INPUT_ERROR);\n }\n notString = true;\n }\n var bytes = 0, length = str.length;\n if (notString) {\n bytes = length;\n } else {\n for (var i = 0; i < str.length; ++i) {\n var code = str.charCodeAt(i);\n if (code < 0x80) {\n bytes += 1;\n } else if (code < 0x800) {\n bytes += 2;\n } else if (code < 0xd800 || code >= 0xe000) {\n bytes += 3;\n } else {\n code = 0x10000 + (((code & 0x3ff) << 10) | (str.charCodeAt(++i) & 0x3ff));\n bytes += 4;\n }\n }\n }\n bytes += this.encode(bytes * 8);\n this.update(str);\n return bytes;\n };\n\n Keccak.prototype.bytepad = function (strs, w) {\n var bytes = this.encode(w);\n for (var i = 0; i < strs.length; ++i) {\n bytes += this.encodeString(strs[i]);\n }\n var paddingBytes = w - bytes % w;\n var zeros = [];\n zeros.length = paddingBytes;\n this.update(zeros);\n return this;\n };\n\n Keccak.prototype.finalize = function () {\n if (this.finalized) {\n return;\n }\n this.finalized = true;\n var blocks = this.blocks, i = this.lastByteIndex, blockCount = this.blockCount, s = this.s;\n blocks[i >> 2] |= this.padding[i & 3];\n if (this.lastByteIndex === this.byteCount) {\n blocks[0] = blocks[blockCount];\n for (i = 1; i < blockCount + 1; ++i) {\n blocks[i] = 0;\n }\n }\n blocks[blockCount - 1] |= 0x80000000;\n for (i = 0; i < blockCount; ++i) {\n s[i] ^= blocks[i];\n }\n f(s);\n };\n\n Keccak.prototype.toString = Keccak.prototype.hex = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var hex = '', block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F] +\n HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F] +\n HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F] +\n HEX_CHARS[(block >> 28) & 0x0F] + HEX_CHARS[(block >> 24) & 0x0F];\n }\n if (j % blockCount === 0) {\n f(s);\n i = 0;\n }\n }\n if (extraBytes) {\n block = s[i];\n hex += HEX_CHARS[(block >> 4) & 0x0F] + HEX_CHARS[block & 0x0F];\n if (extraBytes > 1) {\n hex += HEX_CHARS[(block >> 12) & 0x0F] + HEX_CHARS[(block >> 8) & 0x0F];\n }\n if (extraBytes > 2) {\n hex += HEX_CHARS[(block >> 20) & 0x0F] + HEX_CHARS[(block >> 16) & 0x0F];\n }\n }\n return hex;\n };\n\n Keccak.prototype.arrayBuffer = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var bytes = this.outputBits >> 3;\n var buffer;\n if (extraBytes) {\n buffer = new ArrayBuffer((outputBlocks + 1) << 2);\n } else {\n buffer = new ArrayBuffer(bytes);\n }\n var array = new Uint32Array(buffer);\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n array[j] = s[i];\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n array[i] = s[i];\n buffer = buffer.slice(0, bytes);\n }\n return buffer;\n };\n\n Keccak.prototype.buffer = Keccak.prototype.arrayBuffer;\n\n Keccak.prototype.digest = Keccak.prototype.array = function () {\n this.finalize();\n\n var blockCount = this.blockCount, s = this.s, outputBlocks = this.outputBlocks,\n extraBytes = this.extraBytes, i = 0, j = 0;\n var array = [], offset, block;\n while (j < outputBlocks) {\n for (i = 0; i < blockCount && j < outputBlocks; ++i, ++j) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n array[offset + 1] = (block >> 8) & 0xFF;\n array[offset + 2] = (block >> 16) & 0xFF;\n array[offset + 3] = (block >> 24) & 0xFF;\n }\n if (j % blockCount === 0) {\n f(s);\n }\n }\n if (extraBytes) {\n offset = j << 2;\n block = s[i];\n array[offset] = block & 0xFF;\n if (extraBytes > 1) {\n array[offset + 1] = (block >> 8) & 0xFF;\n }\n if (extraBytes > 2) {\n array[offset + 2] = (block >> 16) & 0xFF;\n }\n }\n return array;\n };\n\n function Kmac(bits, padding, outputBits) {\n Keccak.call(this, bits, padding, outputBits);\n }\n\n Kmac.prototype = new Keccak();\n\n Kmac.prototype.finalize = function () {\n this.encode(this.outputBits, true);\n return Keccak.prototype.finalize.call(this);\n };\n\n var f = function (s) {\n var h, l, n, c0, c1, c2, c3, c4, c5, c6, c7, c8, c9,\n b0, b1, b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12, b13, b14, b15, b16, b17,\n b18, b19, b20, b21, b22, b23, b24, b25, b26, b27, b28, b29, b30, b31, b32, b33,\n b34, b35, b36, b37, b38, b39, b40, b41, b42, b43, b44, b45, b46, b47, b48, b49;\n for (n = 0; n < 48; n += 2) {\n c0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40];\n c1 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41];\n c2 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42];\n c3 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43];\n c4 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44];\n c5 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45];\n c6 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46];\n c7 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47];\n c8 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48];\n c9 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49];\n\n h = c8 ^ ((c2 << 1) | (c3 >>> 31));\n l = c9 ^ ((c3 << 1) | (c2 >>> 31));\n s[0] ^= h;\n s[1] ^= l;\n s[10] ^= h;\n s[11] ^= l;\n s[20] ^= h;\n s[21] ^= l;\n s[30] ^= h;\n s[31] ^= l;\n s[40] ^= h;\n s[41] ^= l;\n h = c0 ^ ((c4 << 1) | (c5 >>> 31));\n l = c1 ^ ((c5 << 1) | (c4 >>> 31));\n s[2] ^= h;\n s[3] ^= l;\n s[12] ^= h;\n s[13] ^= l;\n s[22] ^= h;\n s[23] ^= l;\n s[32] ^= h;\n s[33] ^= l;\n s[42] ^= h;\n s[43] ^= l;\n h = c2 ^ ((c6 << 1) | (c7 >>> 31));\n l = c3 ^ ((c7 << 1) | (c6 >>> 31));\n s[4] ^= h;\n s[5] ^= l;\n s[14] ^= h;\n s[15] ^= l;\n s[24] ^= h;\n s[25] ^= l;\n s[34] ^= h;\n s[35] ^= l;\n s[44] ^= h;\n s[45] ^= l;\n h = c4 ^ ((c8 << 1) | (c9 >>> 31));\n l = c5 ^ ((c9 << 1) | (c8 >>> 31));\n s[6] ^= h;\n s[7] ^= l;\n s[16] ^= h;\n s[17] ^= l;\n s[26] ^= h;\n s[27] ^= l;\n s[36] ^= h;\n s[37] ^= l;\n s[46] ^= h;\n s[47] ^= l;\n h = c6 ^ ((c0 << 1) | (c1 >>> 31));\n l = c7 ^ ((c1 << 1) | (c0 >>> 31));\n s[8] ^= h;\n s[9] ^= l;\n s[18] ^= h;\n s[19] ^= l;\n s[28] ^= h;\n s[29] ^= l;\n s[38] ^= h;\n s[39] ^= l;\n s[48] ^= h;\n s[49] ^= l;\n\n b0 = s[0];\n b1 = s[1];\n b32 = (s[11] << 4) | (s[10] >>> 28);\n b33 = (s[10] << 4) | (s[11] >>> 28);\n b14 = (s[20] << 3) | (s[21] >>> 29);\n b15 = (s[21] << 3) | (s[20] >>> 29);\n b46 = (s[31] << 9) | (s[30] >>> 23);\n b47 = (s[30] << 9) | (s[31] >>> 23);\n b28 = (s[40] << 18) | (s[41] >>> 14);\n b29 = (s[41] << 18) | (s[40] >>> 14);\n b20 = (s[2] << 1) | (s[3] >>> 31);\n b21 = (s[3] << 1) | (s[2] >>> 31);\n b2 = (s[13] << 12) | (s[12] >>> 20);\n b3 = (s[12] << 12) | (s[13] >>> 20);\n b34 = (s[22] << 10) | (s[23] >>> 22);\n b35 = (s[23] << 10) | (s[22] >>> 22);\n b16 = (s[33] << 13) | (s[32] >>> 19);\n b17 = (s[32] << 13) | (s[33] >>> 19);\n b48 = (s[42] << 2) | (s[43] >>> 30);\n b49 = (s[43] << 2) | (s[42] >>> 30);\n b40 = (s[5] << 30) | (s[4] >>> 2);\n b41 = (s[4] << 30) | (s[5] >>> 2);\n b22 = (s[14] << 6) | (s[15] >>> 26);\n b23 = (s[15] << 6) | (s[14] >>> 26);\n b4 = (s[25] << 11) | (s[24] >>> 21);\n b5 = (s[24] << 11) | (s[25] >>> 21);\n b36 = (s[34] << 15) | (s[35] >>> 17);\n b37 = (s[35] << 15) | (s[34] >>> 17);\n b18 = (s[45] << 29) | (s[44] >>> 3);\n b19 = (s[44] << 29) | (s[45] >>> 3);\n b10 = (s[6] << 28) | (s[7] >>> 4);\n b11 = (s[7] << 28) | (s[6] >>> 4);\n b42 = (s[17] << 23) | (s[16] >>> 9);\n b43 = (s[16] << 23) | (s[17] >>> 9);\n b24 = (s[26] << 25) | (s[27] >>> 7);\n b25 = (s[27] << 25) | (s[26] >>> 7);\n b6 = (s[36] << 21) | (s[37] >>> 11);\n b7 = (s[37] << 21) | (s[36] >>> 11);\n b38 = (s[47] << 24) | (s[46] >>> 8);\n b39 = (s[46] << 24) | (s[47] >>> 8);\n b30 = (s[8] << 27) | (s[9] >>> 5);\n b31 = (s[9] << 27) | (s[8] >>> 5);\n b12 = (s[18] << 20) | (s[19] >>> 12);\n b13 = (s[19] << 20) | (s[18] >>> 12);\n b44 = (s[29] << 7) | (s[28] >>> 25);\n b45 = (s[28] << 7) | (s[29] >>> 25);\n b26 = (s[38] << 8) | (s[39] >>> 24);\n b27 = (s[39] << 8) | (s[38] >>> 24);\n b8 = (s[48] << 14) | (s[49] >>> 18);\n b9 = (s[49] << 14) | (s[48] >>> 18);\n\n s[0] = b0 ^ (~b2 & b4);\n s[1] = b1 ^ (~b3 & b5);\n s[10] = b10 ^ (~b12 & b14);\n s[11] = b11 ^ (~b13 & b15);\n s[20] = b20 ^ (~b22 & b24);\n s[21] = b21 ^ (~b23 & b25);\n s[30] = b30 ^ (~b32 & b34);\n s[31] = b31 ^ (~b33 & b35);\n s[40] = b40 ^ (~b42 & b44);\n s[41] = b41 ^ (~b43 & b45);\n s[2] = b2 ^ (~b4 & b6);\n s[3] = b3 ^ (~b5 & b7);\n s[12] = b12 ^ (~b14 & b16);\n s[13] = b13 ^ (~b15 & b17);\n s[22] = b22 ^ (~b24 & b26);\n s[23] = b23 ^ (~b25 & b27);\n s[32] = b32 ^ (~b34 & b36);\n s[33] = b33 ^ (~b35 & b37);\n s[42] = b42 ^ (~b44 & b46);\n s[43] = b43 ^ (~b45 & b47);\n s[4] = b4 ^ (~b6 & b8);\n s[5] = b5 ^ (~b7 & b9);\n s[14] = b14 ^ (~b16 & b18);\n s[15] = b15 ^ (~b17 & b19);\n s[24] = b24 ^ (~b26 & b28);\n s[25] = b25 ^ (~b27 & b29);\n s[34] = b34 ^ (~b36 & b38);\n s[35] = b35 ^ (~b37 & b39);\n s[44] = b44 ^ (~b46 & b48);\n s[45] = b45 ^ (~b47 & b49);\n s[6] = b6 ^ (~b8 & b0);\n s[7] = b7 ^ (~b9 & b1);\n s[16] = b16 ^ (~b18 & b10);\n s[17] = b17 ^ (~b19 & b11);\n s[26] = b26 ^ (~b28 & b20);\n s[27] = b27 ^ (~b29 & b21);\n s[36] = b36 ^ (~b38 & b30);\n s[37] = b37 ^ (~b39 & b31);\n s[46] = b46 ^ (~b48 & b40);\n s[47] = b47 ^ (~b49 & b41);\n s[8] = b8 ^ (~b0 & b2);\n s[9] = b9 ^ (~b1 & b3);\n s[18] = b18 ^ (~b10 & b12);\n s[19] = b19 ^ (~b11 & b13);\n s[28] = b28 ^ (~b20 & b22);\n s[29] = b29 ^ (~b21 & b23);\n s[38] = b38 ^ (~b30 & b32);\n s[39] = b39 ^ (~b31 & b33);\n s[48] = b48 ^ (~b40 & b42);\n s[49] = b49 ^ (~b41 & b43);\n\n s[0] ^= RC[n];\n s[1] ^= RC[n + 1];\n }\n };\n\n if (COMMON_JS) {\n module.exports = methods;\n } else {\n for (i = 0; i < methodNames.length; ++i) {\n root[methodNames[i]] = methods[methodNames[i]];\n }\n if (AMD) {\n define(function () {\n return methods;\n });\n }\n }\n})();\n",null,null,null,null,null,null,null,null,null,null,"module.exports = IdIterator\n\nfunction IdIterator(opts){\n opts = opts || {}\n var max = opts.max || Number.MAX_SAFE_INTEGER\n var idCounter = typeof opts.start !== 'undefined' ? opts.start : Math.floor(Math.random() * max)\n\n return function createRandomId () {\n idCounter = idCounter % max\n return idCounter++\n }\n\n}","var json = typeof JSON !== 'undefined' ? JSON : require('jsonify');\n\nmodule.exports = function (obj, opts) {\n if (!opts) opts = {};\n if (typeof opts === 'function') opts = { cmp: opts };\n var space = opts.space || '';\n if (typeof space === 'number') space = Array(space+1).join(' ');\n var cycles = (typeof opts.cycles === 'boolean') ? opts.cycles : false;\n var replacer = opts.replacer || function(key, value) { return value; };\n\n var cmp = opts.cmp && (function (f) {\n return function (node) {\n return function (a, b) {\n var aobj = { key: a, value: node[a] };\n var bobj = { key: b, value: node[b] };\n return f(aobj, bobj);\n };\n };\n })(opts.cmp);\n\n var seen = [];\n return (function stringify (parent, key, node, level) {\n var indent = space ? ('\\n' + new Array(level + 1).join(space)) : '';\n var colonSeparator = space ? ': ' : ':';\n\n if (node && node.toJSON && typeof node.toJSON === 'function') {\n node = node.toJSON();\n }\n\n node = replacer.call(parent, key, node);\n\n if (node === undefined) {\n return;\n }\n if (typeof node !== 'object' || node === null) {\n return json.stringify(node);\n }\n if (isArray(node)) {\n var out = [];\n for (var i = 0; i < node.length; i++) {\n var item = stringify(node, i, node[i], level+1) || json.stringify(null);\n out.push(indent + space + item);\n }\n return '[' + out.join(',') + indent + ']';\n }\n else {\n if (seen.indexOf(node) !== -1) {\n if (cycles) return json.stringify('__cycle__');\n throw new TypeError('Converting circular structure to JSON');\n }\n else seen.push(node);\n\n var keys = objectKeys(node).sort(cmp && cmp(node));\n var out = [];\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n var value = stringify(node, key, node[key], level+1);\n\n if(!value) continue;\n\n var keyValue = json.stringify(key)\n + colonSeparator\n + value;\n ;\n out.push(indent + space + keyValue);\n }\n seen.splice(seen.indexOf(node), 1);\n return '{' + out.join(',') + indent + '}';\n }\n })({ '': obj }, '', obj, 0);\n};\n\nvar isArray = Array.isArray || function (x) {\n return {}.toString.call(x) === '[object Array]';\n};\n\nvar objectKeys = Object.keys || function (obj) {\n var has = Object.prototype.hasOwnProperty || function () { return true };\n var keys = [];\n for (var key in obj) {\n if (has.call(obj, key)) keys.push(key);\n }\n return keys;\n};\n","exports.parse = require('./lib/parse');\nexports.stringify = require('./lib/stringify');\n","var at, // The index of the current character\n ch, // The current character\n escapee = {\n '\"': '\"',\n '\\\\': '\\\\',\n '/': '/',\n b: '\\b',\n f: '\\f',\n n: '\\n',\n r: '\\r',\n t: '\\t'\n },\n text,\n\n error = function (m) {\n // Call error when something is wrong.\n throw {\n name: 'SyntaxError',\n message: m,\n at: at,\n text: text\n };\n },\n \n next = function (c) {\n // If a c parameter is provided, verify that it matches the current character.\n if (c && c !== ch) {\n error(\"Expected '\" + c + \"' instead of '\" + ch + \"'\");\n }\n \n // Get the next character. When there are no more characters,\n // return the empty string.\n \n ch = text.charAt(at);\n at += 1;\n return ch;\n },\n \n number = function () {\n // Parse a number value.\n var number,\n string = '';\n \n if (ch === '-') {\n string = '-';\n next('-');\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n if (ch === '.') {\n string += '.';\n while (next() && ch >= '0' && ch <= '9') {\n string += ch;\n }\n }\n if (ch === 'e' || ch === 'E') {\n string += ch;\n next();\n if (ch === '-' || ch === '+') {\n string += ch;\n next();\n }\n while (ch >= '0' && ch <= '9') {\n string += ch;\n next();\n }\n }\n number = +string;\n if (!isFinite(number)) {\n error(\"Bad number\");\n } else {\n return number;\n }\n },\n \n string = function () {\n // Parse a string value.\n var hex,\n i,\n string = '',\n uffff;\n \n // When parsing for string values, we must look for \" and \\ characters.\n if (ch === '\"') {\n while (next()) {\n if (ch === '\"') {\n next();\n return string;\n } else if (ch === '\\\\') {\n next();\n if (ch === 'u') {\n uffff = 0;\n for (i = 0; i < 4; i += 1) {\n hex = parseInt(next(), 16);\n if (!isFinite(hex)) {\n break;\n }\n uffff = uffff * 16 + hex;\n }\n string += String.fromCharCode(uffff);\n } else if (typeof escapee[ch] === 'string') {\n string += escapee[ch];\n } else {\n break;\n }\n } else {\n string += ch;\n }\n }\n }\n error(\"Bad string\");\n },\n\n white = function () {\n\n// Skip whitespace.\n\n while (ch && ch <= ' ') {\n next();\n }\n },\n\n word = function () {\n\n// true, false, or null.\n\n switch (ch) {\n case 't':\n next('t');\n next('r');\n next('u');\n next('e');\n return true;\n case 'f':\n next('f');\n next('a');\n next('l');\n next('s');\n next('e');\n return false;\n case 'n':\n next('n');\n next('u');\n next('l');\n next('l');\n return null;\n }\n error(\"Unexpected '\" + ch + \"'\");\n },\n\n value, // Place holder for the value function.\n\n array = function () {\n\n// Parse an array value.\n\n var array = [];\n\n if (ch === '[') {\n next('[');\n white();\n if (ch === ']') {\n next(']');\n return array; // empty array\n }\n while (ch) {\n array.push(value());\n white();\n if (ch === ']') {\n next(']');\n return array;\n }\n next(',');\n white();\n }\n }\n error(\"Bad array\");\n },\n\n object = function () {\n\n// Parse an object value.\n\n var key,\n object = {};\n\n if (ch === '{') {\n next('{');\n white();\n if (ch === '}') {\n next('}');\n return object; // empty object\n }\n while (ch) {\n key = string();\n white();\n next(':');\n if (Object.hasOwnProperty.call(object, key)) {\n error('Duplicate key \"' + key + '\"');\n }\n object[key] = value();\n white();\n if (ch === '}') {\n next('}');\n return object;\n }\n next(',');\n white();\n }\n }\n error(\"Bad object\");\n };\n\nvalue = function () {\n\n// Parse a JSON value. It could be an object, an array, a string, a number,\n// or a word.\n\n white();\n switch (ch) {\n case '{':\n return object();\n case '[':\n return array();\n case '\"':\n return string();\n case '-':\n return number();\n default:\n return ch >= '0' && ch <= '9' ? number() : word();\n }\n};\n\n// Return the json_parse function. It will have access to all of the above\n// functions and variables.\n\nmodule.exports = function (source, reviver) {\n var result;\n \n text = source;\n at = 0;\n ch = ' ';\n result = value();\n white();\n if (ch) {\n error(\"Syntax error\");\n }\n\n // If there is a reviver function, we recursively walk the new structure,\n // passing each name/value pair to the reviver function for possible\n // transformation, starting with a temporary root object that holds the result\n // in an empty key. If there is not a reviver function, we simply return the\n // result.\n\n return typeof reviver === 'function' ? (function walk(holder, key) {\n var k, v, value = holder[key];\n if (value && typeof value === 'object') {\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = walk(value, k);\n if (v !== undefined) {\n value[k] = v;\n } else {\n delete value[k];\n }\n }\n }\n }\n return reviver.call(holder, key, value);\n }({'': result}, '')) : result;\n};\n","var cx = /[\\u0000\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n escapable = /[\\\\\\\"\\x00-\\x1f\\x7f-\\x9f\\u00ad\\u0600-\\u0604\\u070f\\u17b4\\u17b5\\u200c-\\u200f\\u2028-\\u202f\\u2060-\\u206f\\ufeff\\ufff0-\\uffff]/g,\n gap,\n indent,\n meta = { // table of character substitutions\n '\\b': '\\\\b',\n '\\t': '\\\\t',\n '\\n': '\\\\n',\n '\\f': '\\\\f',\n '\\r': '\\\\r',\n '\"' : '\\\\\"',\n '\\\\': '\\\\\\\\'\n },\n rep;\n\nfunction quote(string) {\n // If the string contains no control characters, no quote characters, and no\n // backslash characters, then we can safely slap some quotes around it.\n // Otherwise we must also replace the offending characters with safe escape\n // sequences.\n \n escapable.lastIndex = 0;\n return escapable.test(string) ? '\"' + string.replace(escapable, function (a) {\n var c = meta[a];\n return typeof c === 'string' ? c :\n '\\\\u' + ('0000' + a.charCodeAt(0).toString(16)).slice(-4);\n }) + '\"' : '\"' + string + '\"';\n}\n\nfunction str(key, holder) {\n // Produce a string from holder[key].\n var i, // The loop counter.\n k, // The member key.\n v, // The member value.\n length,\n mind = gap,\n partial,\n value = holder[key];\n \n // If the value has a toJSON method, call it to obtain a replacement value.\n if (value && typeof value === 'object' &&\n typeof value.toJSON === 'function') {\n value = value.toJSON(key);\n }\n \n // If we were called with a replacer function, then call the replacer to\n // obtain a replacement value.\n if (typeof rep === 'function') {\n value = rep.call(holder, key, value);\n }\n \n // What happens next depends on the value's type.\n switch (typeof value) {\n case 'string':\n return quote(value);\n \n case 'number':\n // JSON numbers must be finite. Encode non-finite numbers as null.\n return isFinite(value) ? String(value) : 'null';\n \n case 'boolean':\n case 'null':\n // If the value is a boolean or null, convert it to a string. Note:\n // typeof null does not produce 'null'. The case is included here in\n // the remote chance that this gets fixed someday.\n return String(value);\n \n case 'object':\n if (!value) return 'null';\n gap += indent;\n partial = [];\n \n // Array.isArray\n if (Object.prototype.toString.apply(value) === '[object Array]') {\n length = value.length;\n for (i = 0; i < length; i += 1) {\n partial[i] = str(i, value) || 'null';\n }\n \n // Join all of the elements together, separated with commas, and\n // wrap them in brackets.\n v = partial.length === 0 ? '[]' : gap ?\n '[\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + ']' :\n '[' + partial.join(',') + ']';\n gap = mind;\n return v;\n }\n \n // If the replacer is an array, use it to select the members to be\n // stringified.\n if (rep && typeof rep === 'object') {\n length = rep.length;\n for (i = 0; i < length; i += 1) {\n k = rep[i];\n if (typeof k === 'string') {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n else {\n // Otherwise, iterate through all of the keys in the object.\n for (k in value) {\n if (Object.prototype.hasOwnProperty.call(value, k)) {\n v = str(k, value);\n if (v) {\n partial.push(quote(k) + (gap ? ': ' : ':') + v);\n }\n }\n }\n }\n \n // Join all of the member texts together, separated with commas,\n // and wrap them in braces.\n\n v = partial.length === 0 ? '{}' : gap ?\n '{\\n' + gap + partial.join(',\\n' + gap) + '\\n' + mind + '}' :\n '{' + partial.join(',') + '}';\n gap = mind;\n return v;\n }\n}\n\nmodule.exports = function (value, replacer, space) {\n var i;\n gap = '';\n indent = '';\n \n // If the space parameter is a number, make an indent string containing that\n // many spaces.\n if (typeof space === 'number') {\n for (i = 0; i < space; i += 1) {\n indent += ' ';\n }\n }\n // If the space parameter is a string, it will be used as the indent string.\n else if (typeof space === 'string') {\n indent = space;\n }\n\n // If there is a replacer, it must be a function or an array.\n // Otherwise, throw an error.\n rep = replacer;\n if (replacer && typeof replacer !== 'function'\n && (typeof replacer !== 'object' || typeof replacer.length !== 'number')) {\n throw new Error('JSON.stringify');\n }\n \n // Make a fake root object containing our value under the key of ''.\n // Return the result of stringifying the value.\n return str('', {'': value});\n};\n","module.exports = require('./lib/api')(require('./lib/keccak'))\n","const createKeccak = require('./keccak')\nconst createShake = require('./shake')\n\nmodule.exports = function (KeccakState) {\n const Keccak = createKeccak(KeccakState)\n const Shake = createShake(KeccakState)\n\n return function (algorithm, options) {\n const hash = typeof algorithm === 'string' ? algorithm.toLowerCase() : algorithm\n switch (hash) {\n case 'keccak224': return new Keccak(1152, 448, null, 224, options)\n case 'keccak256': return new Keccak(1088, 512, null, 256, options)\n case 'keccak384': return new Keccak(832, 768, null, 384, options)\n case 'keccak512': return new Keccak(576, 1024, null, 512, options)\n\n case 'sha3-224': return new Keccak(1152, 448, 0x06, 224, options)\n case 'sha3-256': return new Keccak(1088, 512, 0x06, 256, options)\n case 'sha3-384': return new Keccak(832, 768, 0x06, 384, options)\n case 'sha3-512': return new Keccak(576, 1024, 0x06, 512, options)\n\n case 'shake128': return new Shake(1344, 256, 0x1f, options)\n case 'shake256': return new Shake(1088, 512, 0x1f, options)\n\n default: throw new Error('Invald algorithm: ' + algorithm)\n }\n }\n}\n","const { Transform } = require('readable-stream')\n\nmodule.exports = (KeccakState) => class Keccak extends Transform {\n constructor (rate, capacity, delimitedSuffix, hashBitLength, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._hashBitLength = hashBitLength\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush (callback) {\n let error = null\n try {\n this.push(this.digest())\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Digest already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n digest (encoding) {\n if (this._finalized) throw new Error('Digest already called')\n this._finalized = true\n\n if (this._delimitedSuffix) this._state.absorbLastFewBits(this._delimitedSuffix)\n let digest = this._state.squeeze(this._hashBitLength / 8)\n if (encoding !== undefined) digest = digest.toString(encoding)\n\n this._resetState()\n\n return digest\n }\n\n // remove result from memory\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n // because sometimes we need hash right now and little later\n _clone () {\n const clone = new Keccak(this._rate, this._capacity, this._delimitedSuffix, this._hashBitLength, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const { Transform } = require('readable-stream')\n\nmodule.exports = (KeccakState) => class Shake extends Transform {\n constructor (rate, capacity, delimitedSuffix, options) {\n super(options)\n\n this._rate = rate\n this._capacity = capacity\n this._delimitedSuffix = delimitedSuffix\n this._options = options\n\n this._state = new KeccakState()\n this._state.initialize(rate, capacity)\n this._finalized = false\n }\n\n _transform (chunk, encoding, callback) {\n let error = null\n try {\n this.update(chunk, encoding)\n } catch (err) {\n error = err\n }\n\n callback(error)\n }\n\n _flush () {}\n\n _read (size) {\n this.push(this.squeeze(size))\n }\n\n update (data, encoding) {\n if (!Buffer.isBuffer(data) && typeof data !== 'string') throw new TypeError('Data must be a string or a buffer')\n if (this._finalized) throw new Error('Squeeze already called')\n if (!Buffer.isBuffer(data)) data = Buffer.from(data, encoding)\n\n this._state.absorb(data)\n\n return this\n }\n\n squeeze (dataByteLength, encoding) {\n if (!this._finalized) {\n this._finalized = true\n this._state.absorbLastFewBits(this._delimitedSuffix)\n }\n\n let data = this._state.squeeze(dataByteLength)\n if (encoding !== undefined) data = data.toString(encoding)\n\n return data\n }\n\n _resetState () {\n this._state.initialize(this._rate, this._capacity)\n return this\n }\n\n _clone () {\n const clone = new Shake(this._rate, this._capacity, this._delimitedSuffix, this._options)\n this._state.copy(clone._state)\n clone._finalized = this._finalized\n\n return clone\n }\n}\n","const P1600_ROUND_CONSTANTS = [1, 0, 32898, 0, 32906, 2147483648, 2147516416, 2147483648, 32907, 0, 2147483649, 0, 2147516545, 2147483648, 32777, 2147483648, 138, 0, 136, 0, 2147516425, 0, 2147483658, 0, 2147516555, 0, 139, 2147483648, 32905, 2147483648, 32771, 2147483648, 32770, 2147483648, 128, 2147483648, 32778, 0, 2147483658, 2147483648, 2147516545, 2147483648, 32896, 2147483648, 2147483649, 0, 2147516424, 2147483648]\n\nexports.p1600 = function (s) {\n for (let round = 0; round < 24; ++round) {\n // theta\n const lo0 = s[0] ^ s[10] ^ s[20] ^ s[30] ^ s[40]\n const hi0 = s[1] ^ s[11] ^ s[21] ^ s[31] ^ s[41]\n const lo1 = s[2] ^ s[12] ^ s[22] ^ s[32] ^ s[42]\n const hi1 = s[3] ^ s[13] ^ s[23] ^ s[33] ^ s[43]\n const lo2 = s[4] ^ s[14] ^ s[24] ^ s[34] ^ s[44]\n const hi2 = s[5] ^ s[15] ^ s[25] ^ s[35] ^ s[45]\n const lo3 = s[6] ^ s[16] ^ s[26] ^ s[36] ^ s[46]\n const hi3 = s[7] ^ s[17] ^ s[27] ^ s[37] ^ s[47]\n const lo4 = s[8] ^ s[18] ^ s[28] ^ s[38] ^ s[48]\n const hi4 = s[9] ^ s[19] ^ s[29] ^ s[39] ^ s[49]\n\n let lo = lo4 ^ (lo1 << 1 | hi1 >>> 31)\n let hi = hi4 ^ (hi1 << 1 | lo1 >>> 31)\n const t1slo0 = s[0] ^ lo\n const t1shi0 = s[1] ^ hi\n const t1slo5 = s[10] ^ lo\n const t1shi5 = s[11] ^ hi\n const t1slo10 = s[20] ^ lo\n const t1shi10 = s[21] ^ hi\n const t1slo15 = s[30] ^ lo\n const t1shi15 = s[31] ^ hi\n const t1slo20 = s[40] ^ lo\n const t1shi20 = s[41] ^ hi\n lo = lo0 ^ (lo2 << 1 | hi2 >>> 31)\n hi = hi0 ^ (hi2 << 1 | lo2 >>> 31)\n const t1slo1 = s[2] ^ lo\n const t1shi1 = s[3] ^ hi\n const t1slo6 = s[12] ^ lo\n const t1shi6 = s[13] ^ hi\n const t1slo11 = s[22] ^ lo\n const t1shi11 = s[23] ^ hi\n const t1slo16 = s[32] ^ lo\n const t1shi16 = s[33] ^ hi\n const t1slo21 = s[42] ^ lo\n const t1shi21 = s[43] ^ hi\n lo = lo1 ^ (lo3 << 1 | hi3 >>> 31)\n hi = hi1 ^ (hi3 << 1 | lo3 >>> 31)\n const t1slo2 = s[4] ^ lo\n const t1shi2 = s[5] ^ hi\n const t1slo7 = s[14] ^ lo\n const t1shi7 = s[15] ^ hi\n const t1slo12 = s[24] ^ lo\n const t1shi12 = s[25] ^ hi\n const t1slo17 = s[34] ^ lo\n const t1shi17 = s[35] ^ hi\n const t1slo22 = s[44] ^ lo\n const t1shi22 = s[45] ^ hi\n lo = lo2 ^ (lo4 << 1 | hi4 >>> 31)\n hi = hi2 ^ (hi4 << 1 | lo4 >>> 31)\n const t1slo3 = s[6] ^ lo\n const t1shi3 = s[7] ^ hi\n const t1slo8 = s[16] ^ lo\n const t1shi8 = s[17] ^ hi\n const t1slo13 = s[26] ^ lo\n const t1shi13 = s[27] ^ hi\n const t1slo18 = s[36] ^ lo\n const t1shi18 = s[37] ^ hi\n const t1slo23 = s[46] ^ lo\n const t1shi23 = s[47] ^ hi\n lo = lo3 ^ (lo0 << 1 | hi0 >>> 31)\n hi = hi3 ^ (hi0 << 1 | lo0 >>> 31)\n const t1slo4 = s[8] ^ lo\n const t1shi4 = s[9] ^ hi\n const t1slo9 = s[18] ^ lo\n const t1shi9 = s[19] ^ hi\n const t1slo14 = s[28] ^ lo\n const t1shi14 = s[29] ^ hi\n const t1slo19 = s[38] ^ lo\n const t1shi19 = s[39] ^ hi\n const t1slo24 = s[48] ^ lo\n const t1shi24 = s[49] ^ hi\n\n // rho & pi\n const t2slo0 = t1slo0\n const t2shi0 = t1shi0\n const t2slo16 = (t1shi5 << 4 | t1slo5 >>> 28)\n const t2shi16 = (t1slo5 << 4 | t1shi5 >>> 28)\n const t2slo7 = (t1slo10 << 3 | t1shi10 >>> 29)\n const t2shi7 = (t1shi10 << 3 | t1slo10 >>> 29)\n const t2slo23 = (t1shi15 << 9 | t1slo15 >>> 23)\n const t2shi23 = (t1slo15 << 9 | t1shi15 >>> 23)\n const t2slo14 = (t1slo20 << 18 | t1shi20 >>> 14)\n const t2shi14 = (t1shi20 << 18 | t1slo20 >>> 14)\n const t2slo10 = (t1slo1 << 1 | t1shi1 >>> 31)\n const t2shi10 = (t1shi1 << 1 | t1slo1 >>> 31)\n const t2slo1 = (t1shi6 << 12 | t1slo6 >>> 20)\n const t2shi1 = (t1slo6 << 12 | t1shi6 >>> 20)\n const t2slo17 = (t1slo11 << 10 | t1shi11 >>> 22)\n const t2shi17 = (t1shi11 << 10 | t1slo11 >>> 22)\n const t2slo8 = (t1shi16 << 13 | t1slo16 >>> 19)\n const t2shi8 = (t1slo16 << 13 | t1shi16 >>> 19)\n const t2slo24 = (t1slo21 << 2 | t1shi21 >>> 30)\n const t2shi24 = (t1shi21 << 2 | t1slo21 >>> 30)\n const t2slo20 = (t1shi2 << 30 | t1slo2 >>> 2)\n const t2shi20 = (t1slo2 << 30 | t1shi2 >>> 2)\n const t2slo11 = (t1slo7 << 6 | t1shi7 >>> 26)\n const t2shi11 = (t1shi7 << 6 | t1slo7 >>> 26)\n const t2slo2 = (t1shi12 << 11 | t1slo12 >>> 21)\n const t2shi2 = (t1slo12 << 11 | t1shi12 >>> 21)\n const t2slo18 = (t1slo17 << 15 | t1shi17 >>> 17)\n const t2shi18 = (t1shi17 << 15 | t1slo17 >>> 17)\n const t2slo9 = (t1shi22 << 29 | t1slo22 >>> 3)\n const t2shi9 = (t1slo22 << 29 | t1shi22 >>> 3)\n const t2slo5 = (t1slo3 << 28 | t1shi3 >>> 4)\n const t2shi5 = (t1shi3 << 28 | t1slo3 >>> 4)\n const t2slo21 = (t1shi8 << 23 | t1slo8 >>> 9)\n const t2shi21 = (t1slo8 << 23 | t1shi8 >>> 9)\n const t2slo12 = (t1slo13 << 25 | t1shi13 >>> 7)\n const t2shi12 = (t1shi13 << 25 | t1slo13 >>> 7)\n const t2slo3 = (t1slo18 << 21 | t1shi18 >>> 11)\n const t2shi3 = (t1shi18 << 21 | t1slo18 >>> 11)\n const t2slo19 = (t1shi23 << 24 | t1slo23 >>> 8)\n const t2shi19 = (t1slo23 << 24 | t1shi23 >>> 8)\n const t2slo15 = (t1slo4 << 27 | t1shi4 >>> 5)\n const t2shi15 = (t1shi4 << 27 | t1slo4 >>> 5)\n const t2slo6 = (t1slo9 << 20 | t1shi9 >>> 12)\n const t2shi6 = (t1shi9 << 20 | t1slo9 >>> 12)\n const t2slo22 = (t1shi14 << 7 | t1slo14 >>> 25)\n const t2shi22 = (t1slo14 << 7 | t1shi14 >>> 25)\n const t2slo13 = (t1slo19 << 8 | t1shi19 >>> 24)\n const t2shi13 = (t1shi19 << 8 | t1slo19 >>> 24)\n const t2slo4 = (t1slo24 << 14 | t1shi24 >>> 18)\n const t2shi4 = (t1shi24 << 14 | t1slo24 >>> 18)\n\n // chi\n s[0] = t2slo0 ^ (~t2slo1 & t2slo2)\n s[1] = t2shi0 ^ (~t2shi1 & t2shi2)\n s[10] = t2slo5 ^ (~t2slo6 & t2slo7)\n s[11] = t2shi5 ^ (~t2shi6 & t2shi7)\n s[20] = t2slo10 ^ (~t2slo11 & t2slo12)\n s[21] = t2shi10 ^ (~t2shi11 & t2shi12)\n s[30] = t2slo15 ^ (~t2slo16 & t2slo17)\n s[31] = t2shi15 ^ (~t2shi16 & t2shi17)\n s[40] = t2slo20 ^ (~t2slo21 & t2slo22)\n s[41] = t2shi20 ^ (~t2shi21 & t2shi22)\n s[2] = t2slo1 ^ (~t2slo2 & t2slo3)\n s[3] = t2shi1 ^ (~t2shi2 & t2shi3)\n s[12] = t2slo6 ^ (~t2slo7 & t2slo8)\n s[13] = t2shi6 ^ (~t2shi7 & t2shi8)\n s[22] = t2slo11 ^ (~t2slo12 & t2slo13)\n s[23] = t2shi11 ^ (~t2shi12 & t2shi13)\n s[32] = t2slo16 ^ (~t2slo17 & t2slo18)\n s[33] = t2shi16 ^ (~t2shi17 & t2shi18)\n s[42] = t2slo21 ^ (~t2slo22 & t2slo23)\n s[43] = t2shi21 ^ (~t2shi22 & t2shi23)\n s[4] = t2slo2 ^ (~t2slo3 & t2slo4)\n s[5] = t2shi2 ^ (~t2shi3 & t2shi4)\n s[14] = t2slo7 ^ (~t2slo8 & t2slo9)\n s[15] = t2shi7 ^ (~t2shi8 & t2shi9)\n s[24] = t2slo12 ^ (~t2slo13 & t2slo14)\n s[25] = t2shi12 ^ (~t2shi13 & t2shi14)\n s[34] = t2slo17 ^ (~t2slo18 & t2slo19)\n s[35] = t2shi17 ^ (~t2shi18 & t2shi19)\n s[44] = t2slo22 ^ (~t2slo23 & t2slo24)\n s[45] = t2shi22 ^ (~t2shi23 & t2shi24)\n s[6] = t2slo3 ^ (~t2slo4 & t2slo0)\n s[7] = t2shi3 ^ (~t2shi4 & t2shi0)\n s[16] = t2slo8 ^ (~t2slo9 & t2slo5)\n s[17] = t2shi8 ^ (~t2shi9 & t2shi5)\n s[26] = t2slo13 ^ (~t2slo14 & t2slo10)\n s[27] = t2shi13 ^ (~t2shi14 & t2shi10)\n s[36] = t2slo18 ^ (~t2slo19 & t2slo15)\n s[37] = t2shi18 ^ (~t2shi19 & t2shi15)\n s[46] = t2slo23 ^ (~t2slo24 & t2slo20)\n s[47] = t2shi23 ^ (~t2shi24 & t2shi20)\n s[8] = t2slo4 ^ (~t2slo0 & t2slo1)\n s[9] = t2shi4 ^ (~t2shi0 & t2shi1)\n s[18] = t2slo9 ^ (~t2slo5 & t2slo6)\n s[19] = t2shi9 ^ (~t2shi5 & t2shi6)\n s[28] = t2slo14 ^ (~t2slo10 & t2slo11)\n s[29] = t2shi14 ^ (~t2shi10 & t2shi11)\n s[38] = t2slo19 ^ (~t2slo15 & t2slo16)\n s[39] = t2shi19 ^ (~t2shi15 & t2shi16)\n s[48] = t2slo24 ^ (~t2slo20 & t2slo21)\n s[49] = t2shi24 ^ (~t2shi20 & t2shi21)\n\n // iota\n s[0] ^= P1600_ROUND_CONSTANTS[round * 2]\n s[1] ^= P1600_ROUND_CONSTANTS[round * 2 + 1]\n }\n}\n","const keccakState = require('./keccak-state-unroll')\n\nfunction Keccak () {\n // much faster than `new Array(50)`\n this.state = [\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0,\n 0, 0, 0, 0, 0\n ]\n\n this.blockSize = null\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.initialize = function (rate, capacity) {\n for (let i = 0; i < 50; ++i) this.state[i] = 0\n this.blockSize = rate / 8\n this.count = 0\n this.squeezing = false\n}\n\nKeccak.prototype.absorb = function (data) {\n for (let i = 0; i < data.length; ++i) {\n this.state[~~(this.count / 4)] ^= data[i] << (8 * (this.count % 4))\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n}\n\nKeccak.prototype.absorbLastFewBits = function (bits) {\n this.state[~~(this.count / 4)] ^= bits << (8 * (this.count % 4))\n if ((bits & 0x80) !== 0 && this.count === (this.blockSize - 1)) keccakState.p1600(this.state)\n this.state[~~((this.blockSize - 1) / 4)] ^= 0x80 << (8 * ((this.blockSize - 1) % 4))\n keccakState.p1600(this.state)\n this.count = 0\n this.squeezing = true\n}\n\nKeccak.prototype.squeeze = function (length) {\n if (!this.squeezing) this.absorbLastFewBits(0x01)\n\n const output = Buffer.alloc(length)\n for (let i = 0; i < length; ++i) {\n output[i] = (this.state[~~(this.count / 4)] >>> (8 * (this.count % 4))) & 0xff\n this.count += 1\n if (this.count === this.blockSize) {\n keccakState.p1600(this.state)\n this.count = 0\n }\n }\n\n return output\n}\n\nKeccak.prototype.copy = function (dest) {\n for (let i = 0; i < 50; ++i) dest.state[i] = this.state[i]\n dest.blockSize = this.blockSize\n dest.count = this.count\n dest.squeezing = this.squeezing\n}\n\nmodule.exports = Keccak\n","var root = require('./_root');\n\n/** Built-in value references. */\nvar Symbol = root.Symbol;\n\nmodule.exports = Symbol;\n","var baseTimes = require('./_baseTimes'),\n isArguments = require('./isArguments'),\n isArray = require('./isArray'),\n isBuffer = require('./isBuffer'),\n isIndex = require('./_isIndex'),\n isTypedArray = require('./isTypedArray');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Creates an array of the enumerable property names of the array-like `value`.\n *\n * @private\n * @param {*} value The value to query.\n * @param {boolean} inherited Specify returning inherited property names.\n * @returns {Array} Returns the array of property names.\n */\nfunction arrayLikeKeys(value, inherited) {\n var isArr = isArray(value),\n isArg = !isArr && isArguments(value),\n isBuff = !isArr && !isArg && isBuffer(value),\n isType = !isArr && !isArg && !isBuff && isTypedArray(value),\n skipIndexes = isArr || isArg || isBuff || isType,\n result = skipIndexes ? baseTimes(value.length, String) : [],\n length = result.length;\n\n for (var key in value) {\n if ((inherited || hasOwnProperty.call(value, key)) &&\n !(skipIndexes && (\n // Safari 9 has enumerable `arguments.length` in strict mode.\n key == 'length' ||\n // Node.js 0.10 has enumerable non-index properties on buffers.\n (isBuff && (key == 'offset' || key == 'parent')) ||\n // PhantomJS 2 has enumerable non-index properties on typed arrays.\n (isType && (key == 'buffer' || key == 'byteLength' || key == 'byteOffset')) ||\n // Skip index properties.\n isIndex(key, length)\n ))) {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = arrayLikeKeys;\n","var Symbol = require('./_Symbol'),\n getRawTag = require('./_getRawTag'),\n objectToString = require('./_objectToString');\n\n/** `Object#toString` result references. */\nvar nullTag = '[object Null]',\n undefinedTag = '[object Undefined]';\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * The base implementation of `getTag` without fallbacks for buggy environments.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the `toStringTag`.\n */\nfunction baseGetTag(value) {\n if (value == null) {\n return value === undefined ? undefinedTag : nullTag;\n }\n return (symToStringTag && symToStringTag in Object(value))\n ? getRawTag(value)\n : objectToString(value);\n}\n\nmodule.exports = baseGetTag;\n","var baseGetTag = require('./_baseGetTag'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]';\n\n/**\n * The base implementation of `_.isArguments`.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n */\nfunction baseIsArguments(value) {\n return isObjectLike(value) && baseGetTag(value) == argsTag;\n}\n\nmodule.exports = baseIsArguments;\n","var baseGetTag = require('./_baseGetTag'),\n isLength = require('./isLength'),\n isObjectLike = require('./isObjectLike');\n\n/** `Object#toString` result references. */\nvar argsTag = '[object Arguments]',\n arrayTag = '[object Array]',\n boolTag = '[object Boolean]',\n dateTag = '[object Date]',\n errorTag = '[object Error]',\n funcTag = '[object Function]',\n mapTag = '[object Map]',\n numberTag = '[object Number]',\n objectTag = '[object Object]',\n regexpTag = '[object RegExp]',\n setTag = '[object Set]',\n stringTag = '[object String]',\n weakMapTag = '[object WeakMap]';\n\nvar arrayBufferTag = '[object ArrayBuffer]',\n dataViewTag = '[object DataView]',\n float32Tag = '[object Float32Array]',\n float64Tag = '[object Float64Array]',\n int8Tag = '[object Int8Array]',\n int16Tag = '[object Int16Array]',\n int32Tag = '[object Int32Array]',\n uint8Tag = '[object Uint8Array]',\n uint8ClampedTag = '[object Uint8ClampedArray]',\n uint16Tag = '[object Uint16Array]',\n uint32Tag = '[object Uint32Array]';\n\n/** Used to identify `toStringTag` values of typed arrays. */\nvar typedArrayTags = {};\ntypedArrayTags[float32Tag] = typedArrayTags[float64Tag] =\ntypedArrayTags[int8Tag] = typedArrayTags[int16Tag] =\ntypedArrayTags[int32Tag] = typedArrayTags[uint8Tag] =\ntypedArrayTags[uint8ClampedTag] = typedArrayTags[uint16Tag] =\ntypedArrayTags[uint32Tag] = true;\ntypedArrayTags[argsTag] = typedArrayTags[arrayTag] =\ntypedArrayTags[arrayBufferTag] = typedArrayTags[boolTag] =\ntypedArrayTags[dataViewTag] = typedArrayTags[dateTag] =\ntypedArrayTags[errorTag] = typedArrayTags[funcTag] =\ntypedArrayTags[mapTag] = typedArrayTags[numberTag] =\ntypedArrayTags[objectTag] = typedArrayTags[regexpTag] =\ntypedArrayTags[setTag] = typedArrayTags[stringTag] =\ntypedArrayTags[weakMapTag] = false;\n\n/**\n * The base implementation of `_.isTypedArray` without Node.js optimizations.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n */\nfunction baseIsTypedArray(value) {\n return isObjectLike(value) &&\n isLength(value.length) && !!typedArrayTags[baseGetTag(value)];\n}\n\nmodule.exports = baseIsTypedArray;\n","var isPrototype = require('./_isPrototype'),\n nativeKeys = require('./_nativeKeys');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * The base implementation of `_.keys` which doesn't treat sparse arrays as dense.\n *\n * @private\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n */\nfunction baseKeys(object) {\n if (!isPrototype(object)) {\n return nativeKeys(object);\n }\n var result = [];\n for (var key in Object(object)) {\n if (hasOwnProperty.call(object, key) && key != 'constructor') {\n result.push(key);\n }\n }\n return result;\n}\n\nmodule.exports = baseKeys;\n","/**\n * The base implementation of `_.times` without support for iteratee shorthands\n * or max array length checks.\n *\n * @private\n * @param {number} n The number of times to invoke `iteratee`.\n * @param {Function} iteratee The function invoked per iteration.\n * @returns {Array} Returns the array of results.\n */\nfunction baseTimes(n, iteratee) {\n var index = -1,\n result = Array(n);\n\n while (++index < n) {\n result[index] = iteratee(index);\n }\n return result;\n}\n\nmodule.exports = baseTimes;\n","/**\n * The base implementation of `_.unary` without support for storing metadata.\n *\n * @private\n * @param {Function} func The function to cap arguments for.\n * @returns {Function} Returns the new capped function.\n */\nfunction baseUnary(func) {\n return function(value) {\n return func(value);\n };\n}\n\nmodule.exports = baseUnary;\n","/** Detect free variable `global` from Node.js. */\nvar freeGlobal = typeof global == 'object' && global && global.Object === Object && global;\n\nmodule.exports = freeGlobal;\n","var Symbol = require('./_Symbol');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/** Built-in value references. */\nvar symToStringTag = Symbol ? Symbol.toStringTag : undefined;\n\n/**\n * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.\n *\n * @private\n * @param {*} value The value to query.\n * @returns {string} Returns the raw `toStringTag`.\n */\nfunction getRawTag(value) {\n var isOwn = hasOwnProperty.call(value, symToStringTag),\n tag = value[symToStringTag];\n\n try {\n value[symToStringTag] = undefined;\n var unmasked = true;\n } catch (e) {}\n\n var result = nativeObjectToString.call(value);\n if (unmasked) {\n if (isOwn) {\n value[symToStringTag] = tag;\n } else {\n delete value[symToStringTag];\n }\n }\n return result;\n}\n\nmodule.exports = getRawTag;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/** Used to detect unsigned integer values. */\nvar reIsUint = /^(?:0|[1-9]\\d*)$/;\n\n/**\n * Checks if `value` is a valid array-like index.\n *\n * @private\n * @param {*} value The value to check.\n * @param {number} [length=MAX_SAFE_INTEGER] The upper bounds of a valid index.\n * @returns {boolean} Returns `true` if `value` is a valid index, else `false`.\n */\nfunction isIndex(value, length) {\n var type = typeof value;\n length = length == null ? MAX_SAFE_INTEGER : length;\n\n return !!length &&\n (type == 'number' ||\n (type != 'symbol' && reIsUint.test(value))) &&\n (value > -1 && value % 1 == 0 && value < length);\n}\n\nmodule.exports = isIndex;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Checks if `value` is likely a prototype object.\n *\n * @private\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a prototype, else `false`.\n */\nfunction isPrototype(value) {\n var Ctor = value && value.constructor,\n proto = (typeof Ctor == 'function' && Ctor.prototype) || objectProto;\n\n return value === proto;\n}\n\nmodule.exports = isPrototype;\n","var overArg = require('./_overArg');\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeKeys = overArg(Object.keys, Object);\n\nmodule.exports = nativeKeys;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Detect free variable `process` from Node.js. */\nvar freeProcess = moduleExports && freeGlobal.process;\n\n/** Used to access faster Node.js helpers. */\nvar nodeUtil = (function() {\n try {\n // Use `util.types` for Node.js 10+.\n var types = freeModule && freeModule.require && freeModule.require('util').types;\n\n if (types) {\n return types;\n }\n\n // Legacy `process.binding('util')` for Node.js < 10.\n return freeProcess && freeProcess.binding && freeProcess.binding('util');\n } catch (e) {}\n}());\n\nmodule.exports = nodeUtil;\n","/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/**\n * Used to resolve the\n * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)\n * of values.\n */\nvar nativeObjectToString = objectProto.toString;\n\n/**\n * Converts `value` to a string using `Object.prototype.toString`.\n *\n * @private\n * @param {*} value The value to convert.\n * @returns {string} Returns the converted string.\n */\nfunction objectToString(value) {\n return nativeObjectToString.call(value);\n}\n\nmodule.exports = objectToString;\n","/**\n * Creates a unary function that invokes `func` with its argument transformed.\n *\n * @private\n * @param {Function} func The function to wrap.\n * @param {Function} transform The argument transform.\n * @returns {Function} Returns the new function.\n */\nfunction overArg(func, transform) {\n return function(arg) {\n return func(transform(arg));\n };\n}\n\nmodule.exports = overArg;\n","var freeGlobal = require('./_freeGlobal');\n\n/** Detect free variable `self`. */\nvar freeSelf = typeof self == 'object' && self && self.Object === Object && self;\n\n/** Used as a reference to the global object. */\nvar root = freeGlobal || freeSelf || Function('return this')();\n\nmodule.exports = root;\n","var baseIsArguments = require('./_baseIsArguments'),\n isObjectLike = require('./isObjectLike');\n\n/** Used for built-in method references. */\nvar objectProto = Object.prototype;\n\n/** Used to check objects for own properties. */\nvar hasOwnProperty = objectProto.hasOwnProperty;\n\n/** Built-in value references. */\nvar propertyIsEnumerable = objectProto.propertyIsEnumerable;\n\n/**\n * Checks if `value` is likely an `arguments` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an `arguments` object,\n * else `false`.\n * @example\n *\n * _.isArguments(function() { return arguments; }());\n * // => true\n *\n * _.isArguments([1, 2, 3]);\n * // => false\n */\nvar isArguments = baseIsArguments(function() { return arguments; }()) ? baseIsArguments : function(value) {\n return isObjectLike(value) && hasOwnProperty.call(value, 'callee') &&\n !propertyIsEnumerable.call(value, 'callee');\n};\n\nmodule.exports = isArguments;\n","/**\n * Checks if `value` is classified as an `Array` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an array, else `false`.\n * @example\n *\n * _.isArray([1, 2, 3]);\n * // => true\n *\n * _.isArray(document.body.children);\n * // => false\n *\n * _.isArray('abc');\n * // => false\n *\n * _.isArray(_.noop);\n * // => false\n */\nvar isArray = Array.isArray;\n\nmodule.exports = isArray;\n","var isFunction = require('./isFunction'),\n isLength = require('./isLength');\n\n/**\n * Checks if `value` is array-like. A value is considered array-like if it's\n * not a function and has a `value.length` that's an integer greater than or\n * equal to `0` and less than or equal to `Number.MAX_SAFE_INTEGER`.\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is array-like, else `false`.\n * @example\n *\n * _.isArrayLike([1, 2, 3]);\n * // => true\n *\n * _.isArrayLike(document.body.children);\n * // => true\n *\n * _.isArrayLike('abc');\n * // => true\n *\n * _.isArrayLike(_.noop);\n * // => false\n */\nfunction isArrayLike(value) {\n return value != null && isLength(value.length) && !isFunction(value);\n}\n\nmodule.exports = isArrayLike;\n","var root = require('./_root'),\n stubFalse = require('./stubFalse');\n\n/** Detect free variable `exports`. */\nvar freeExports = typeof exports == 'object' && exports && !exports.nodeType && exports;\n\n/** Detect free variable `module`. */\nvar freeModule = freeExports && typeof module == 'object' && module && !module.nodeType && module;\n\n/** Detect the popular CommonJS extension `module.exports`. */\nvar moduleExports = freeModule && freeModule.exports === freeExports;\n\n/** Built-in value references. */\nvar Buffer = moduleExports ? root.Buffer : undefined;\n\n/* Built-in method references for those with the same name as other `lodash` methods. */\nvar nativeIsBuffer = Buffer ? Buffer.isBuffer : undefined;\n\n/**\n * Checks if `value` is a buffer.\n *\n * @static\n * @memberOf _\n * @since 4.3.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a buffer, else `false`.\n * @example\n *\n * _.isBuffer(new Buffer(2));\n * // => true\n *\n * _.isBuffer(new Uint8Array(2));\n * // => false\n */\nvar isBuffer = nativeIsBuffer || stubFalse;\n\nmodule.exports = isBuffer;\n","var baseGetTag = require('./_baseGetTag'),\n isObject = require('./isObject');\n\n/** `Object#toString` result references. */\nvar asyncTag = '[object AsyncFunction]',\n funcTag = '[object Function]',\n genTag = '[object GeneratorFunction]',\n proxyTag = '[object Proxy]';\n\n/**\n * Checks if `value` is classified as a `Function` object.\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a function, else `false`.\n * @example\n *\n * _.isFunction(_);\n * // => true\n *\n * _.isFunction(/abc/);\n * // => false\n */\nfunction isFunction(value) {\n if (!isObject(value)) {\n return false;\n }\n // The use of `Object#toString` avoids issues with the `typeof` operator\n // in Safari 9 which returns 'object' for typed arrays and other constructors.\n var tag = baseGetTag(value);\n return tag == funcTag || tag == genTag || tag == asyncTag || tag == proxyTag;\n}\n\nmodule.exports = isFunction;\n","/** Used as references for various `Number` constants. */\nvar MAX_SAFE_INTEGER = 9007199254740991;\n\n/**\n * Checks if `value` is a valid array-like length.\n *\n * **Note:** This method is loosely based on\n * [`ToLength`](http://ecma-international.org/ecma-262/7.0/#sec-tolength).\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a valid length, else `false`.\n * @example\n *\n * _.isLength(3);\n * // => true\n *\n * _.isLength(Number.MIN_VALUE);\n * // => false\n *\n * _.isLength(Infinity);\n * // => false\n *\n * _.isLength('3');\n * // => false\n */\nfunction isLength(value) {\n return typeof value == 'number' &&\n value > -1 && value % 1 == 0 && value <= MAX_SAFE_INTEGER;\n}\n\nmodule.exports = isLength;\n","/**\n * Checks if `value` is the\n * [language type](http://www.ecma-international.org/ecma-262/7.0/#sec-ecmascript-language-types)\n * of `Object`. (e.g. arrays, functions, objects, regexes, `new Number(0)`, and `new String('')`)\n *\n * @static\n * @memberOf _\n * @since 0.1.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is an object, else `false`.\n * @example\n *\n * _.isObject({});\n * // => true\n *\n * _.isObject([1, 2, 3]);\n * // => true\n *\n * _.isObject(_.noop);\n * // => true\n *\n * _.isObject(null);\n * // => false\n */\nfunction isObject(value) {\n var type = typeof value;\n return value != null && (type == 'object' || type == 'function');\n}\n\nmodule.exports = isObject;\n","/**\n * Checks if `value` is object-like. A value is object-like if it's not `null`\n * and has a `typeof` result of \"object\".\n *\n * @static\n * @memberOf _\n * @since 4.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is object-like, else `false`.\n * @example\n *\n * _.isObjectLike({});\n * // => true\n *\n * _.isObjectLike([1, 2, 3]);\n * // => true\n *\n * _.isObjectLike(_.noop);\n * // => false\n *\n * _.isObjectLike(null);\n * // => false\n */\nfunction isObjectLike(value) {\n return value != null && typeof value == 'object';\n}\n\nmodule.exports = isObjectLike;\n","var baseIsTypedArray = require('./_baseIsTypedArray'),\n baseUnary = require('./_baseUnary'),\n nodeUtil = require('./_nodeUtil');\n\n/* Node.js helper references. */\nvar nodeIsTypedArray = nodeUtil && nodeUtil.isTypedArray;\n\n/**\n * Checks if `value` is classified as a typed array.\n *\n * @static\n * @memberOf _\n * @since 3.0.0\n * @category Lang\n * @param {*} value The value to check.\n * @returns {boolean} Returns `true` if `value` is a typed array, else `false`.\n * @example\n *\n * _.isTypedArray(new Uint8Array);\n * // => true\n *\n * _.isTypedArray([]);\n * // => false\n */\nvar isTypedArray = nodeIsTypedArray ? baseUnary(nodeIsTypedArray) : baseIsTypedArray;\n\nmodule.exports = isTypedArray;\n","var arrayLikeKeys = require('./_arrayLikeKeys'),\n baseKeys = require('./_baseKeys'),\n isArrayLike = require('./isArrayLike');\n\n/**\n * Creates an array of the own enumerable property names of `object`.\n *\n * **Note:** Non-object values are coerced to objects. See the\n * [ES spec](http://ecma-international.org/ecma-262/7.0/#sec-object.keys)\n * for more details.\n *\n * @static\n * @since 0.1.0\n * @memberOf _\n * @category Object\n * @param {Object} object The object to query.\n * @returns {Array} Returns the array of property names.\n * @example\n *\n * function Foo() {\n * this.a = 1;\n * this.b = 2;\n * }\n *\n * Foo.prototype.c = 3;\n *\n * _.keys(new Foo);\n * // => ['a', 'b'] (iteration order is not guaranteed)\n *\n * _.keys('hi');\n * // => ['0', '1']\n */\nfunction keys(object) {\n return isArrayLike(object) ? arrayLikeKeys(object) : baseKeys(object);\n}\n\nmodule.exports = keys;\n","/**\n * This method returns `undefined`.\n *\n * @static\n * @memberOf _\n * @since 2.3.0\n * @category Util\n * @example\n *\n * _.times(2, _.noop);\n * // => [undefined, undefined]\n */\nfunction noop() {\n // No operation performed.\n}\n\nmodule.exports = noop;\n","/**\n * This method returns `false`.\n *\n * @static\n * @memberOf _\n * @since 4.13.0\n * @category Util\n * @returns {boolean} Returns `false`.\n * @example\n *\n * _.times(2, _.stubFalse);\n * // => [false, false]\n */\nfunction stubFalse() {\n return false;\n}\n\nmodule.exports = stubFalse;\n","'use strict'\nvar inherits = require('inherits')\nvar HashBase = require('hash-base')\nvar Buffer = require('safe-buffer').Buffer\n\nvar ARRAY16 = new Array(16)\n\nfunction MD5 () {\n HashBase.call(this, 64)\n\n // state\n this._a = 0x67452301\n this._b = 0xefcdab89\n this._c = 0x98badcfe\n this._d = 0x10325476\n}\n\ninherits(MD5, HashBase)\n\nMD5.prototype._update = function () {\n var M = ARRAY16\n for (var i = 0; i < 16; ++i) M[i] = this._block.readInt32LE(i * 4)\n\n var a = this._a\n var b = this._b\n var c = this._c\n var d = this._d\n\n a = fnF(a, b, c, d, M[0], 0xd76aa478, 7)\n d = fnF(d, a, b, c, M[1], 0xe8c7b756, 12)\n c = fnF(c, d, a, b, M[2], 0x242070db, 17)\n b = fnF(b, c, d, a, M[3], 0xc1bdceee, 22)\n a = fnF(a, b, c, d, M[4], 0xf57c0faf, 7)\n d = fnF(d, a, b, c, M[5], 0x4787c62a, 12)\n c = fnF(c, d, a, b, M[6], 0xa8304613, 17)\n b = fnF(b, c, d, a, M[7], 0xfd469501, 22)\n a = fnF(a, b, c, d, M[8], 0x698098d8, 7)\n d = fnF(d, a, b, c, M[9], 0x8b44f7af, 12)\n c = fnF(c, d, a, b, M[10], 0xffff5bb1, 17)\n b = fnF(b, c, d, a, M[11], 0x895cd7be, 22)\n a = fnF(a, b, c, d, M[12], 0x6b901122, 7)\n d = fnF(d, a, b, c, M[13], 0xfd987193, 12)\n c = fnF(c, d, a, b, M[14], 0xa679438e, 17)\n b = fnF(b, c, d, a, M[15], 0x49b40821, 22)\n\n a = fnG(a, b, c, d, M[1], 0xf61e2562, 5)\n d = fnG(d, a, b, c, M[6], 0xc040b340, 9)\n c = fnG(c, d, a, b, M[11], 0x265e5a51, 14)\n b = fnG(b, c, d, a, M[0], 0xe9b6c7aa, 20)\n a = fnG(a, b, c, d, M[5], 0xd62f105d, 5)\n d = fnG(d, a, b, c, M[10], 0x02441453, 9)\n c = fnG(c, d, a, b, M[15], 0xd8a1e681, 14)\n b = fnG(b, c, d, a, M[4], 0xe7d3fbc8, 20)\n a = fnG(a, b, c, d, M[9], 0x21e1cde6, 5)\n d = fnG(d, a, b, c, M[14], 0xc33707d6, 9)\n c = fnG(c, d, a, b, M[3], 0xf4d50d87, 14)\n b = fnG(b, c, d, a, M[8], 0x455a14ed, 20)\n a = fnG(a, b, c, d, M[13], 0xa9e3e905, 5)\n d = fnG(d, a, b, c, M[2], 0xfcefa3f8, 9)\n c = fnG(c, d, a, b, M[7], 0x676f02d9, 14)\n b = fnG(b, c, d, a, M[12], 0x8d2a4c8a, 20)\n\n a = fnH(a, b, c, d, M[5], 0xfffa3942, 4)\n d = fnH(d, a, b, c, M[8], 0x8771f681, 11)\n c = fnH(c, d, a, b, M[11], 0x6d9d6122, 16)\n b = fnH(b, c, d, a, M[14], 0xfde5380c, 23)\n a = fnH(a, b, c, d, M[1], 0xa4beea44, 4)\n d = fnH(d, a, b, c, M[4], 0x4bdecfa9, 11)\n c = fnH(c, d, a, b, M[7], 0xf6bb4b60, 16)\n b = fnH(b, c, d, a, M[10], 0xbebfbc70, 23)\n a = fnH(a, b, c, d, M[13], 0x289b7ec6, 4)\n d = fnH(d, a, b, c, M[0], 0xeaa127fa, 11)\n c = fnH(c, d, a, b, M[3], 0xd4ef3085, 16)\n b = fnH(b, c, d, a, M[6], 0x04881d05, 23)\n a = fnH(a, b, c, d, M[9], 0xd9d4d039, 4)\n d = fnH(d, a, b, c, M[12], 0xe6db99e5, 11)\n c = fnH(c, d, a, b, M[15], 0x1fa27cf8, 16)\n b = fnH(b, c, d, a, M[2], 0xc4ac5665, 23)\n\n a = fnI(a, b, c, d, M[0], 0xf4292244, 6)\n d = fnI(d, a, b, c, M[7], 0x432aff97, 10)\n c = fnI(c, d, a, b, M[14], 0xab9423a7, 15)\n b = fnI(b, c, d, a, M[5], 0xfc93a039, 21)\n a = fnI(a, b, c, d, M[12], 0x655b59c3, 6)\n d = fnI(d, a, b, c, M[3], 0x8f0ccc92, 10)\n c = fnI(c, d, a, b, M[10], 0xffeff47d, 15)\n b = fnI(b, c, d, a, M[1], 0x85845dd1, 21)\n a = fnI(a, b, c, d, M[8], 0x6fa87e4f, 6)\n d = fnI(d, a, b, c, M[15], 0xfe2ce6e0, 10)\n c = fnI(c, d, a, b, M[6], 0xa3014314, 15)\n b = fnI(b, c, d, a, M[13], 0x4e0811a1, 21)\n a = fnI(a, b, c, d, M[4], 0xf7537e82, 6)\n d = fnI(d, a, b, c, M[11], 0xbd3af235, 10)\n c = fnI(c, d, a, b, M[2], 0x2ad7d2bb, 15)\n b = fnI(b, c, d, a, M[9], 0xeb86d391, 21)\n\n this._a = (this._a + a) | 0\n this._b = (this._b + b) | 0\n this._c = (this._c + c) | 0\n this._d = (this._d + d) | 0\n}\n\nMD5.prototype._digest = function () {\n // create padding and handle blocks\n this._block[this._blockOffset++] = 0x80\n if (this._blockOffset > 56) {\n this._block.fill(0, this._blockOffset, 64)\n this._update()\n this._blockOffset = 0\n }\n\n this._block.fill(0, this._blockOffset, 56)\n this._block.writeUInt32LE(this._length[0], 56)\n this._block.writeUInt32LE(this._length[1], 60)\n this._update()\n\n // produce result\n var buffer = Buffer.allocUnsafe(16)\n buffer.writeInt32LE(this._a, 0)\n buffer.writeInt32LE(this._b, 4)\n buffer.writeInt32LE(this._c, 8)\n buffer.writeInt32LE(this._d, 12)\n return buffer\n}\n\nfunction rotl (x, n) {\n return (x << n) | (x >>> (32 - n))\n}\n\nfunction fnF (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & c) | ((~b) & d)) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnG (a, b, c, d, m, k, s) {\n return (rotl((a + ((b & d) | (c & (~d))) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnH (a, b, c, d, m, k, s) {\n return (rotl((a + (b ^ c ^ d) + m + k) | 0, s) + b) | 0\n}\n\nfunction fnI (a, b, c, d, m, k, s) {\n return (rotl((a + ((c ^ (b | (~d)))) + m + k) | 0, s) + b) | 0\n}\n\nmodule.exports = MD5\n","var bn = require('bn.js');\nvar brorand = require('brorand');\n\nfunction MillerRabin(rand) {\n this.rand = rand || new brorand.Rand();\n}\nmodule.exports = MillerRabin;\n\nMillerRabin.create = function create(rand) {\n return new MillerRabin(rand);\n};\n\nMillerRabin.prototype._randbelow = function _randbelow(n) {\n var len = n.bitLength();\n var min_bytes = Math.ceil(len / 8);\n\n // Generage random bytes until a number less than n is found.\n // This ensures that 0..n-1 have an equal probability of being selected.\n do\n var a = new bn(this.rand.generate(min_bytes));\n while (a.cmp(n) >= 0);\n\n return a;\n};\n\nMillerRabin.prototype._randrange = function _randrange(start, stop) {\n // Generate a random number greater than or equal to start and less than stop.\n var size = stop.sub(start);\n return start.add(this._randbelow(size));\n};\n\nMillerRabin.prototype.test = function test(n, k, cb) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n var prime = true;\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n if (cb)\n cb(a);\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return false;\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s)\n return false;\n }\n\n return prime;\n};\n\nMillerRabin.prototype.getDivisor = function getDivisor(n, k) {\n var len = n.bitLength();\n var red = bn.mont(n);\n var rone = new bn(1).toRed(red);\n\n if (!k)\n k = Math.max(1, (len / 48) | 0);\n\n // Find d and s, (n - 1) = (2 ^ s) * d;\n var n1 = n.subn(1);\n for (var s = 0; !n1.testn(s); s++) {}\n var d = n.shrn(s);\n\n var rn1 = n1.toRed(red);\n\n for (; k > 0; k--) {\n var a = this._randrange(new bn(2), n1);\n\n var g = n.gcd(a);\n if (g.cmpn(1) !== 0)\n return g;\n\n var x = a.toRed(red).redPow(d);\n if (x.cmp(rone) === 0 || x.cmp(rn1) === 0)\n continue;\n\n for (var i = 1; i < s; i++) {\n x = x.redSqr();\n\n if (x.cmp(rone) === 0)\n return x.fromRed().subn(1).gcd(n);\n if (x.cmp(rn1) === 0)\n break;\n }\n\n if (i === s) {\n x = x.redSqr();\n return x.fromRed().subn(1).gcd(n);\n }\n }\n\n return false;\n};\n","module.exports = assert;\n\nfunction assert(val, msg) {\n if (!val)\n throw new Error(msg || 'Assertion failed');\n}\n\nassert.equal = function assertEqual(l, r, msg) {\n if (l != r)\n throw new Error(msg || ('Assertion failed: ' + l + ' != ' + r));\n};\n","'use strict';\n\nvar utils = exports;\n\nfunction toArray(msg, enc) {\n if (Array.isArray(msg))\n return msg.slice();\n if (!msg)\n return [];\n var res = [];\n if (typeof msg !== 'string') {\n for (var i = 0; i < msg.length; i++)\n res[i] = msg[i] | 0;\n return res;\n }\n if (enc === 'hex') {\n msg = msg.replace(/[^a-z0-9]+/ig, '');\n if (msg.length % 2 !== 0)\n msg = '0' + msg;\n for (var i = 0; i < msg.length; i += 2)\n res.push(parseInt(msg[i] + msg[i + 1], 16));\n } else {\n for (var i = 0; i < msg.length; i++) {\n var c = msg.charCodeAt(i);\n var hi = c >> 8;\n var lo = c & 0xff;\n if (hi)\n res.push(hi, lo);\n else\n res.push(lo);\n }\n }\n return res;\n}\nutils.toArray = toArray;\n\nfunction zero2(word) {\n if (word.length === 1)\n return '0' + word;\n else\n return word;\n}\nutils.zero2 = zero2;\n\nfunction toHex(msg) {\n var res = '';\n for (var i = 0; i < msg.length; i++)\n res += zero2(msg[i].toString(16));\n return res;\n}\nutils.toHex = toHex;\n\nutils.encode = function encode(arr, enc) {\n if (enc === 'hex')\n return toHex(arr);\n else\n return arr;\n};\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict'\n\nclass Base {\n constructor (name, code, implementation, alphabet) {\n this.name = name\n this.code = code\n this.alphabet = alphabet\n if (implementation && alphabet) {\n this.engine = implementation(alphabet)\n }\n }\n\n encode (stringOrBuffer) {\n return this.engine.encode(stringOrBuffer)\n }\n\n decode (stringOrBuffer) {\n return this.engine.decode(stringOrBuffer)\n }\n\n isImplemented () {\n return this.engine\n }\n}\n\nmodule.exports = Base\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base16 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return Buffer.from(input).toString('hex')\n }\n return input.toString('hex')\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base16 character')\n }\n }\n return Buffer.from(input, 'hex')\n }\n }\n}\n","'use strict'\n\nfunction decode (input, alphabet) {\n input = input.replace(new RegExp('=', 'g'), '')\n const length = input.length\n\n let bits = 0\n let value = 0\n\n let index = 0\n const output = new Uint8Array((length * 5 / 8) | 0)\n\n for (let i = 0; i < length; i++) {\n value = (value << 5) | alphabet.indexOf(input[i])\n bits += 5\n\n if (bits >= 8) {\n output[index++] = (value >>> (bits - 8)) & 255\n bits -= 8\n }\n }\n\n return output.buffer\n}\n\nfunction encode (buffer, alphabet) {\n const length = buffer.byteLength\n const view = new Uint8Array(buffer)\n const padding = alphabet.indexOf('=') === alphabet.length - 1\n\n if (padding) {\n alphabet = alphabet.substring(0, alphabet.length - 1)\n }\n\n let bits = 0\n let value = 0\n let output = ''\n\n for (let i = 0; i < length; i++) {\n value = (value << 8) | view[i]\n bits += 8\n\n while (bits >= 5) {\n output += alphabet[(value >>> (bits - 5)) & 31]\n bits -= 5\n }\n }\n\n if (bits > 0) {\n output += alphabet[(value << (5 - bits)) & 31]\n }\n\n if (padding) {\n while ((output.length % 8) !== 0) {\n output += '='\n }\n }\n\n return output\n}\n\nmodule.exports = function base32 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return encode(Uint8Array.from(input), alphabet)\n }\n\n return encode(input, alphabet)\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base32 character')\n }\n }\n\n return decode(input, alphabet)\n }\n }\n}\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base64 (alphabet) {\n // The alphabet is only used to know:\n // 1. If padding is enabled (must contain '=')\n // 2. If the output must be url-safe (must contain '-' and '_')\n // 3. If the input of the output function is valid\n // The alphabets from RFC 4648 are always used.\n const padding = alphabet.indexOf('=') > -1\n const url = alphabet.indexOf('-') > -1 && alphabet.indexOf('_') > -1\n\n return {\n encode (input) {\n let output = ''\n\n if (typeof input === 'string') {\n output = Buffer.from(input).toString('base64')\n } else {\n output = input.toString('base64')\n }\n\n if (url) {\n output = output.replace(/\\+/g, '-').replace(/\\//g, '_')\n }\n\n const pad = output.indexOf('=')\n if (pad > 0 && !padding) {\n output = output.substring(0, pad)\n }\n\n return output\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base64 character')\n }\n }\n\n return Buffer.from(input, 'base64')\n }\n }\n}\n","'use strict'\n\nconst Base = require('./base.js')\nconst baseX = require('base-x')\nconst base16 = require('./base16')\nconst base32 = require('./base32')\nconst base64 = require('./base64')\n\n// name, code, implementation, alphabet\nconst constants = [\n ['base1', '1', '', '1'],\n ['base2', '0', baseX, '01'],\n ['base8', '7', baseX, '01234567'],\n ['base10', '9', baseX, '0123456789'],\n ['base16', 'f', base16, '0123456789abcdef'],\n ['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'],\n ['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='],\n ['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'],\n ['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='],\n ['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n ['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n ['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n ['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n ['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\nconst names = constants.reduce((prev, tupple) => {\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n return prev\n}, {})\n\nconst codes = constants.reduce((prev, tupple) => {\n prev[tupple[1]] = names[tupple[0]]\n return prev\n}, {})\n\nmodule.exports = {\n names: names,\n codes: codes\n}\n","/**\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\n * @module Multibase\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst constants = require('./constants')\n\nexports = module.exports = multibase\nexports.encode = encode\nexports.decode = decode\nexports.isEncoded = isEncoded\nexports.names = Object.freeze(Object.keys(constants.names))\nexports.codes = Object.freeze(Object.keys(constants.codes))\n\nconst errNotSupported = new Error('Unsupported encoding')\n\n/**\n * Create a new buffer with the multibase varint+code.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be prefixed with multibase.\n * @memberof Multibase\n * @returns {Buffer}\n */\nfunction multibase (nameOrCode, buf) {\n if (!buf) {\n throw new Error('requires an encoded buffer')\n }\n const base = getBase(nameOrCode)\n const codeBuf = Buffer.from(base.code)\n\n const name = base.name\n validEncode(name, buf)\n return Buffer.concat([codeBuf, buf])\n}\n\n/**\n * Encode data with the specified base and add the multibase prefix.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be encoded.\n * @returns {Buffer}\n * @memberof Multibase\n */\nfunction encode (nameOrCode, buf) {\n const base = getBase(nameOrCode)\n const name = base.name\n\n return multibase(name, Buffer.from(base.encode(buf)))\n}\n\n/**\n * Takes a buffer or string encoded with multibase header, decodes it and\n * returns the decoded buffer\n *\n * @param {Buffer|string} bufOrString\n * @returns {Buffer}\n * @memberof Multibase\n *\n */\nfunction decode (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n const code = bufOrString.substring(0, 1)\n bufOrString = bufOrString.substring(1, bufOrString.length)\n\n if (typeof bufOrString === 'string') {\n bufOrString = Buffer.from(bufOrString)\n }\n\n const base = getBase(code)\n return Buffer.from(base.decode(bufOrString.toString()))\n}\n\n/**\n * Is the given data multibase encoded?\n *\n * @param {Buffer|string} bufOrString\n * @returns {boolean}\n * @memberof Multibase\n */\nfunction isEncoded (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n // Ensure bufOrString is a string\n if (Object.prototype.toString.call(bufOrString) !== '[object String]') {\n return false\n }\n\n const code = bufOrString.substring(0, 1)\n try {\n const base = getBase(code)\n return base.name\n } catch (err) {\n return false\n }\n}\n\n/**\n * @param {string} name\n * @param {Buffer} buf\n * @private\n * @returns {undefined}\n */\nfunction validEncode (name, buf) {\n const base = getBase(name)\n base.decode(buf.toString())\n}\n\nfunction getBase (nameOrCode) {\n let base\n\n if (constants.names[nameOrCode]) {\n base = constants.names[nameOrCode]\n } else if (constants.codes[nameOrCode]) {\n base = constants.codes[nameOrCode]\n } else {\n throw errNotSupported\n }\n\n if (!base.isImplemented()) {\n throw new Error('Base ' + nameOrCode + ' is not implemented yet')\n }\n\n return base\n}\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for codecConstant -> code\nconst constants = {}\n\nfor (const [name, code] of Object.entries(table)) {\n constants[name.toUpperCase().replace(/-/g, '_')] = code\n}\n\nmodule.exports = Object.freeze(constants)\n","/**\n * Implementation of the multicodec specification.\n *\n * @module multicodec\n * @example\n * const multicodec = require('multicodec')\n *\n * const prefixedProtobuf = multicodec.addPrefix('protobuf', protobufBuffer)\n * // prefixedProtobuf 0x50...\n *\n */\n'use strict'\n\nconst varint = require('varint')\nconst intTable = require('./int-table')\nconst codecNameToCodeVarint = require('./varint-table')\nconst util = require('./util')\n\nexports = module.exports\n\n/**\n * Prefix a buffer with a multicodec-packed.\n *\n * @param {string|number} multicodecStrOrCode\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.addPrefix = (multicodecStrOrCode, data) => {\n let prefix\n\n if (Buffer.isBuffer(multicodecStrOrCode)) {\n prefix = util.varintBufferEncode(multicodecStrOrCode)\n } else {\n if (codecNameToCodeVarint[multicodecStrOrCode]) {\n prefix = codecNameToCodeVarint[multicodecStrOrCode]\n } else {\n throw new Error('multicodec not recognized')\n }\n }\n return Buffer.concat([prefix, data])\n}\n\n/**\n * Decapsulate the multicodec-packed prefix from the data.\n *\n * @param {Buffer} data\n * @returns {Buffer}\n */\nexports.rmPrefix = (data) => {\n varint.decode(data)\n return data.slice(varint.decode.bytes)\n}\n\n/**\n * Get the codec of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {string}\n */\nexports.getCodec = (prefixedData) => {\n const code = varint.decode(prefixedData)\n const codecName = intTable.get(code)\n if (codecName === undefined) {\n throw new Error(`Code ${code} not found`)\n }\n return codecName\n}\n\n/**\n * Get the name of the codec.\n * @param {number} codec\n * @returns {string}\n */\nexports.getName = (codec) => {\n return intTable.get(codec)\n}\n\n/**\n * Get the code of the codec\n * @param {string} name\n * @returns {number}\n */\nexports.getNumber = (name) => {\n const code = codecNameToCodeVarint[name]\n if (code === undefined) {\n throw new Error('Codec `' + name + '` not found')\n }\n return util.varintBufferDecode(code)[0]\n}\n\n/**\n * Get the code of the prefixed data.\n * @param {Buffer} prefixedData\n * @returns {number}\n */\nexports.getCode = (prefixedData) => {\n return varint.decode(prefixedData)\n}\n\n/**\n * Get the code as varint of a codec name.\n * @param {string} codecName\n * @returns {Buffer}\n */\nexports.getCodeVarint = (codecName) => {\n const code = codecNameToCodeVarint[codecName]\n if (code === undefined) {\n throw new Error('Codec `' + codecName + '` not found')\n }\n return code\n}\n\n/**\n * Get the varint of a code.\n * @param {Number} code\n * @returns {Array.}\n */\nexports.getVarint = (code) => {\n return varint.encode(code)\n}\n\n// Make the constants top-level constants\nconst constants = require('./constants')\nObject.assign(exports, constants)\n\n// Human friendly names for printing, e.g. in error messages\nexports.print = require('./print')\n","'use strict'\nconst baseTable = require('./base-table.json')\n\n// map for hexString -> codecName\nconst nameTable = new Map()\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n nameTable.set(code, encodingName)\n}\n\nmodule.exports = Object.freeze(nameTable)\n","'use strict'\n\nconst table = require('./base-table.json')\n\n// map for code -> print friendly name\nconst tableByCode = {}\n\nfor (const [name, code] of Object.entries(table)) {\n if (tableByCode[code] === undefined) tableByCode[code] = name\n}\n\nmodule.exports = Object.freeze(tableByCode)\n","'use strict'\nconst varint = require('varint')\n\nmodule.exports = {\n numberToBuffer,\n bufferToNumber,\n varintBufferEncode,\n varintBufferDecode,\n varintEncode\n}\n\nfunction bufferToNumber (buf) {\n return parseInt(buf.toString('hex'), 16)\n}\n\nfunction numberToBuffer (num) {\n let hexString = num.toString(16)\n if (hexString.length % 2 === 1) {\n hexString = '0' + hexString\n }\n return Buffer.from(hexString, 'hex')\n}\n\nfunction varintBufferEncode (input) {\n return Buffer.from(varint.encode(bufferToNumber(input)))\n}\n\nfunction varintBufferDecode (input) {\n return numberToBuffer(varint.decode(input))\n}\n\nfunction varintEncode (num) {\n return Buffer.from(varint.encode(num))\n}\n","'use strict'\n\nconst baseTable = require('./base-table.json')\nconst varintEncode = require('./util').varintEncode\n\n// map for codecName -> codeVarintBuffer\nconst varintTable = {}\n\nfor (const encodingName in baseTable) {\n const code = baseTable[encodingName]\n varintTable[encodingName] = varintEncode(code)\n}\n\nmodule.exports = Object.freeze(varintTable)\n","/*!\n * The buffer module from node.js, for the browser.\n *\n * @author Feross Aboukhadijeh \n * @license MIT\n */\n/* eslint-disable no-proto */\n\n'use strict'\n\nvar base64 = require('base64-js')\nvar ieee754 = require('ieee754')\nvar customInspectSymbol =\n (typeof Symbol === 'function' && typeof Symbol['for'] === 'function') // eslint-disable-line dot-notation\n ? Symbol['for']('nodejs.util.inspect.custom') // eslint-disable-line dot-notation\n : null\n\nexports.Buffer = Buffer\nexports.SlowBuffer = SlowBuffer\nexports.INSPECT_MAX_BYTES = 50\n\nvar K_MAX_LENGTH = 0x7fffffff\nexports.kMaxLength = K_MAX_LENGTH\n\n/**\n * If `Buffer.TYPED_ARRAY_SUPPORT`:\n * === true Use Uint8Array implementation (fastest)\n * === false Print warning and recommend using `buffer` v4.x which has an Object\n * implementation (most compatible, even IE6)\n *\n * Browsers that support typed arrays are IE 10+, Firefox 4+, Chrome 7+, Safari 5.1+,\n * Opera 11.6+, iOS 4.2+.\n *\n * We report that the browser does not support typed arrays if the are not subclassable\n * using __proto__. Firefox 4-29 lacks support for adding new properties to `Uint8Array`\n * (See: https://bugzilla.mozilla.org/show_bug.cgi?id=695438). IE 10 lacks support\n * for __proto__ and has a buggy typed array implementation.\n */\nBuffer.TYPED_ARRAY_SUPPORT = typedArraySupport()\n\nif (!Buffer.TYPED_ARRAY_SUPPORT && typeof console !== 'undefined' &&\n typeof console.error === 'function') {\n console.error(\n 'This browser lacks typed array (Uint8Array) support which is required by ' +\n '`buffer` v5.x. Use `buffer` v4.x if you require old browser support.'\n )\n}\n\nfunction typedArraySupport () {\n // Can typed array instances can be augmented?\n try {\n var arr = new Uint8Array(1)\n var proto = { foo: function () { return 42 } }\n Object.setPrototypeOf(proto, Uint8Array.prototype)\n Object.setPrototypeOf(arr, proto)\n return arr.foo() === 42\n } catch (e) {\n return false\n }\n}\n\nObject.defineProperty(Buffer.prototype, 'parent', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.buffer\n }\n})\n\nObject.defineProperty(Buffer.prototype, 'offset', {\n enumerable: true,\n get: function () {\n if (!Buffer.isBuffer(this)) return undefined\n return this.byteOffset\n }\n})\n\nfunction createBuffer (length) {\n if (length > K_MAX_LENGTH) {\n throw new RangeError('The value \"' + length + '\" is invalid for option \"size\"')\n }\n // Return an augmented `Uint8Array` instance\n var buf = new Uint8Array(length)\n Object.setPrototypeOf(buf, Buffer.prototype)\n return buf\n}\n\n/**\n * The Buffer constructor returns instances of `Uint8Array` that have their\n * prototype changed to `Buffer.prototype`. Furthermore, `Buffer` is a subclass of\n * `Uint8Array`, so the returned instances will have all the node `Buffer` methods\n * and the `Uint8Array` methods. Square bracket notation works as expected -- it\n * returns a single octet.\n *\n * The `Uint8Array` prototype remains unmodified.\n */\n\nfunction Buffer (arg, encodingOrOffset, length) {\n // Common case.\n if (typeof arg === 'number') {\n if (typeof encodingOrOffset === 'string') {\n throw new TypeError(\n 'The \"string\" argument must be of type string. Received type number'\n )\n }\n return allocUnsafe(arg)\n }\n return from(arg, encodingOrOffset, length)\n}\n\nBuffer.poolSize = 8192 // not used by this implementation\n\nfunction from (value, encodingOrOffset, length) {\n if (typeof value === 'string') {\n return fromString(value, encodingOrOffset)\n }\n\n if (ArrayBuffer.isView(value)) {\n return fromArrayView(value)\n }\n\n if (value == null) {\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n }\n\n if (isInstance(value, ArrayBuffer) ||\n (value && isInstance(value.buffer, ArrayBuffer))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof SharedArrayBuffer !== 'undefined' &&\n (isInstance(value, SharedArrayBuffer) ||\n (value && isInstance(value.buffer, SharedArrayBuffer)))) {\n return fromArrayBuffer(value, encodingOrOffset, length)\n }\n\n if (typeof value === 'number') {\n throw new TypeError(\n 'The \"value\" argument must not be of type number. Received type number'\n )\n }\n\n var valueOf = value.valueOf && value.valueOf()\n if (valueOf != null && valueOf !== value) {\n return Buffer.from(valueOf, encodingOrOffset, length)\n }\n\n var b = fromObject(value)\n if (b) return b\n\n if (typeof Symbol !== 'undefined' && Symbol.toPrimitive != null &&\n typeof value[Symbol.toPrimitive] === 'function') {\n return Buffer.from(\n value[Symbol.toPrimitive]('string'), encodingOrOffset, length\n )\n }\n\n throw new TypeError(\n 'The first argument must be one of type string, Buffer, ArrayBuffer, Array, ' +\n 'or Array-like Object. Received type ' + (typeof value)\n )\n}\n\n/**\n * Functionally equivalent to Buffer(arg, encoding) but throws a TypeError\n * if value is a number.\n * Buffer.from(str[, encoding])\n * Buffer.from(array)\n * Buffer.from(buffer)\n * Buffer.from(arrayBuffer[, byteOffset[, length]])\n **/\nBuffer.from = function (value, encodingOrOffset, length) {\n return from(value, encodingOrOffset, length)\n}\n\n// Note: Change prototype *after* Buffer.from is defined to workaround Chrome bug:\n// https://github.com/feross/buffer/pull/148\nObject.setPrototypeOf(Buffer.prototype, Uint8Array.prototype)\nObject.setPrototypeOf(Buffer, Uint8Array)\n\nfunction assertSize (size) {\n if (typeof size !== 'number') {\n throw new TypeError('\"size\" argument must be of type number')\n } else if (size < 0) {\n throw new RangeError('The value \"' + size + '\" is invalid for option \"size\"')\n }\n}\n\nfunction alloc (size, fill, encoding) {\n assertSize(size)\n if (size <= 0) {\n return createBuffer(size)\n }\n if (fill !== undefined) {\n // Only pay attention to encoding if it's a string. This\n // prevents accidentally sending in a number that would\n // be interpreted as a start offset.\n return typeof encoding === 'string'\n ? createBuffer(size).fill(fill, encoding)\n : createBuffer(size).fill(fill)\n }\n return createBuffer(size)\n}\n\n/**\n * Creates a new filled Buffer instance.\n * alloc(size[, fill[, encoding]])\n **/\nBuffer.alloc = function (size, fill, encoding) {\n return alloc(size, fill, encoding)\n}\n\nfunction allocUnsafe (size) {\n assertSize(size)\n return createBuffer(size < 0 ? 0 : checked(size) | 0)\n}\n\n/**\n * Equivalent to Buffer(num), by default creates a non-zero-filled Buffer instance.\n * */\nBuffer.allocUnsafe = function (size) {\n return allocUnsafe(size)\n}\n/**\n * Equivalent to SlowBuffer(num), by default creates a non-zero-filled Buffer instance.\n */\nBuffer.allocUnsafeSlow = function (size) {\n return allocUnsafe(size)\n}\n\nfunction fromString (string, encoding) {\n if (typeof encoding !== 'string' || encoding === '') {\n encoding = 'utf8'\n }\n\n if (!Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n\n var length = byteLength(string, encoding) | 0\n var buf = createBuffer(length)\n\n var actual = buf.write(string, encoding)\n\n if (actual !== length) {\n // Writing a hex string, for example, that contains invalid characters will\n // cause everything after the first invalid character to be ignored. (e.g.\n // 'abxxcd' will be treated as 'ab')\n buf = buf.slice(0, actual)\n }\n\n return buf\n}\n\nfunction fromArrayLike (array) {\n var length = array.length < 0 ? 0 : checked(array.length) | 0\n var buf = createBuffer(length)\n for (var i = 0; i < length; i += 1) {\n buf[i] = array[i] & 255\n }\n return buf\n}\n\nfunction fromArrayView (arrayView) {\n if (isInstance(arrayView, Uint8Array)) {\n var copy = new Uint8Array(arrayView)\n return fromArrayBuffer(copy.buffer, copy.byteOffset, copy.byteLength)\n }\n return fromArrayLike(arrayView)\n}\n\nfunction fromArrayBuffer (array, byteOffset, length) {\n if (byteOffset < 0 || array.byteLength < byteOffset) {\n throw new RangeError('\"offset\" is outside of buffer bounds')\n }\n\n if (array.byteLength < byteOffset + (length || 0)) {\n throw new RangeError('\"length\" is outside of buffer bounds')\n }\n\n var buf\n if (byteOffset === undefined && length === undefined) {\n buf = new Uint8Array(array)\n } else if (length === undefined) {\n buf = new Uint8Array(array, byteOffset)\n } else {\n buf = new Uint8Array(array, byteOffset, length)\n }\n\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(buf, Buffer.prototype)\n\n return buf\n}\n\nfunction fromObject (obj) {\n if (Buffer.isBuffer(obj)) {\n var len = checked(obj.length) | 0\n var buf = createBuffer(len)\n\n if (buf.length === 0) {\n return buf\n }\n\n obj.copy(buf, 0, 0, len)\n return buf\n }\n\n if (obj.length !== undefined) {\n if (typeof obj.length !== 'number' || numberIsNaN(obj.length)) {\n return createBuffer(0)\n }\n return fromArrayLike(obj)\n }\n\n if (obj.type === 'Buffer' && Array.isArray(obj.data)) {\n return fromArrayLike(obj.data)\n }\n}\n\nfunction checked (length) {\n // Note: cannot use `length < K_MAX_LENGTH` here because that fails when\n // length is NaN (which is otherwise coerced to zero.)\n if (length >= K_MAX_LENGTH) {\n throw new RangeError('Attempt to allocate Buffer larger than maximum ' +\n 'size: 0x' + K_MAX_LENGTH.toString(16) + ' bytes')\n }\n return length | 0\n}\n\nfunction SlowBuffer (length) {\n if (+length != length) { // eslint-disable-line eqeqeq\n length = 0\n }\n return Buffer.alloc(+length)\n}\n\nBuffer.isBuffer = function isBuffer (b) {\n return b != null && b._isBuffer === true &&\n b !== Buffer.prototype // so Buffer.isBuffer(Buffer.prototype) will be false\n}\n\nBuffer.compare = function compare (a, b) {\n if (isInstance(a, Uint8Array)) a = Buffer.from(a, a.offset, a.byteLength)\n if (isInstance(b, Uint8Array)) b = Buffer.from(b, b.offset, b.byteLength)\n if (!Buffer.isBuffer(a) || !Buffer.isBuffer(b)) {\n throw new TypeError(\n 'The \"buf1\", \"buf2\" arguments must be one of type Buffer or Uint8Array'\n )\n }\n\n if (a === b) return 0\n\n var x = a.length\n var y = b.length\n\n for (var i = 0, len = Math.min(x, y); i < len; ++i) {\n if (a[i] !== b[i]) {\n x = a[i]\n y = b[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\nBuffer.isEncoding = function isEncoding (encoding) {\n switch (String(encoding).toLowerCase()) {\n case 'hex':\n case 'utf8':\n case 'utf-8':\n case 'ascii':\n case 'latin1':\n case 'binary':\n case 'base64':\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return true\n default:\n return false\n }\n}\n\nBuffer.concat = function concat (list, length) {\n if (!Array.isArray(list)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n }\n\n if (list.length === 0) {\n return Buffer.alloc(0)\n }\n\n var i\n if (length === undefined) {\n length = 0\n for (i = 0; i < list.length; ++i) {\n length += list[i].length\n }\n }\n\n var buffer = Buffer.allocUnsafe(length)\n var pos = 0\n for (i = 0; i < list.length; ++i) {\n var buf = list[i]\n if (isInstance(buf, Uint8Array)) {\n if (pos + buf.length > buffer.length) {\n Buffer.from(buf).copy(buffer, pos)\n } else {\n Uint8Array.prototype.set.call(\n buffer,\n buf,\n pos\n )\n }\n } else if (!Buffer.isBuffer(buf)) {\n throw new TypeError('\"list\" argument must be an Array of Buffers')\n } else {\n buf.copy(buffer, pos)\n }\n pos += buf.length\n }\n return buffer\n}\n\nfunction byteLength (string, encoding) {\n if (Buffer.isBuffer(string)) {\n return string.length\n }\n if (ArrayBuffer.isView(string) || isInstance(string, ArrayBuffer)) {\n return string.byteLength\n }\n if (typeof string !== 'string') {\n throw new TypeError(\n 'The \"string\" argument must be one of type string, Buffer, or ArrayBuffer. ' +\n 'Received type ' + typeof string\n )\n }\n\n var len = string.length\n var mustMatch = (arguments.length > 2 && arguments[2] === true)\n if (!mustMatch && len === 0) return 0\n\n // Use a for loop to avoid recursion\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'ascii':\n case 'latin1':\n case 'binary':\n return len\n case 'utf8':\n case 'utf-8':\n return utf8ToBytes(string).length\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return len * 2\n case 'hex':\n return len >>> 1\n case 'base64':\n return base64ToBytes(string).length\n default:\n if (loweredCase) {\n return mustMatch ? -1 : utf8ToBytes(string).length // assume utf8\n }\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\nBuffer.byteLength = byteLength\n\nfunction slowToString (encoding, start, end) {\n var loweredCase = false\n\n // No need to verify that \"this.length <= MAX_UINT32\" since it's a read-only\n // property of a typed array.\n\n // This behaves neither like String nor Uint8Array in that we set start/end\n // to their upper/lower bounds if the value passed is out of range.\n // undefined is handled specially as per ECMA-262 6th Edition,\n // Section 13.3.3.7 Runtime Semantics: KeyedBindingInitialization.\n if (start === undefined || start < 0) {\n start = 0\n }\n // Return early if start > this.length. Done here to prevent potential uint32\n // coercion fail below.\n if (start > this.length) {\n return ''\n }\n\n if (end === undefined || end > this.length) {\n end = this.length\n }\n\n if (end <= 0) {\n return ''\n }\n\n // Force coercion to uint32. This will also coerce falsey/NaN values to 0.\n end >>>= 0\n start >>>= 0\n\n if (end <= start) {\n return ''\n }\n\n if (!encoding) encoding = 'utf8'\n\n while (true) {\n switch (encoding) {\n case 'hex':\n return hexSlice(this, start, end)\n\n case 'utf8':\n case 'utf-8':\n return utf8Slice(this, start, end)\n\n case 'ascii':\n return asciiSlice(this, start, end)\n\n case 'latin1':\n case 'binary':\n return latin1Slice(this, start, end)\n\n case 'base64':\n return base64Slice(this, start, end)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return utf16leSlice(this, start, end)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = (encoding + '').toLowerCase()\n loweredCase = true\n }\n }\n}\n\n// This property is used by `Buffer.isBuffer` (and the `is-buffer` npm package)\n// to detect a Buffer instance. It's not possible to use `instanceof Buffer`\n// reliably in a browserify context because there could be multiple different\n// copies of the 'buffer' package in use. This method works even for Buffer\n// instances that were created from another copy of the `buffer` package.\n// See: https://github.com/feross/buffer/issues/154\nBuffer.prototype._isBuffer = true\n\nfunction swap (b, n, m) {\n var i = b[n]\n b[n] = b[m]\n b[m] = i\n}\n\nBuffer.prototype.swap16 = function swap16 () {\n var len = this.length\n if (len % 2 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 16-bits')\n }\n for (var i = 0; i < len; i += 2) {\n swap(this, i, i + 1)\n }\n return this\n}\n\nBuffer.prototype.swap32 = function swap32 () {\n var len = this.length\n if (len % 4 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 32-bits')\n }\n for (var i = 0; i < len; i += 4) {\n swap(this, i, i + 3)\n swap(this, i + 1, i + 2)\n }\n return this\n}\n\nBuffer.prototype.swap64 = function swap64 () {\n var len = this.length\n if (len % 8 !== 0) {\n throw new RangeError('Buffer size must be a multiple of 64-bits')\n }\n for (var i = 0; i < len; i += 8) {\n swap(this, i, i + 7)\n swap(this, i + 1, i + 6)\n swap(this, i + 2, i + 5)\n swap(this, i + 3, i + 4)\n }\n return this\n}\n\nBuffer.prototype.toString = function toString () {\n var length = this.length\n if (length === 0) return ''\n if (arguments.length === 0) return utf8Slice(this, 0, length)\n return slowToString.apply(this, arguments)\n}\n\nBuffer.prototype.toLocaleString = Buffer.prototype.toString\n\nBuffer.prototype.equals = function equals (b) {\n if (!Buffer.isBuffer(b)) throw new TypeError('Argument must be a Buffer')\n if (this === b) return true\n return Buffer.compare(this, b) === 0\n}\n\nBuffer.prototype.inspect = function inspect () {\n var str = ''\n var max = exports.INSPECT_MAX_BYTES\n str = this.toString('hex', 0, max).replace(/(.{2})/g, '$1 ').trim()\n if (this.length > max) str += ' ... '\n return ''\n}\nif (customInspectSymbol) {\n Buffer.prototype[customInspectSymbol] = Buffer.prototype.inspect\n}\n\nBuffer.prototype.compare = function compare (target, start, end, thisStart, thisEnd) {\n if (isInstance(target, Uint8Array)) {\n target = Buffer.from(target, target.offset, target.byteLength)\n }\n if (!Buffer.isBuffer(target)) {\n throw new TypeError(\n 'The \"target\" argument must be one of type Buffer or Uint8Array. ' +\n 'Received type ' + (typeof target)\n )\n }\n\n if (start === undefined) {\n start = 0\n }\n if (end === undefined) {\n end = target ? target.length : 0\n }\n if (thisStart === undefined) {\n thisStart = 0\n }\n if (thisEnd === undefined) {\n thisEnd = this.length\n }\n\n if (start < 0 || end > target.length || thisStart < 0 || thisEnd > this.length) {\n throw new RangeError('out of range index')\n }\n\n if (thisStart >= thisEnd && start >= end) {\n return 0\n }\n if (thisStart >= thisEnd) {\n return -1\n }\n if (start >= end) {\n return 1\n }\n\n start >>>= 0\n end >>>= 0\n thisStart >>>= 0\n thisEnd >>>= 0\n\n if (this === target) return 0\n\n var x = thisEnd - thisStart\n var y = end - start\n var len = Math.min(x, y)\n\n var thisCopy = this.slice(thisStart, thisEnd)\n var targetCopy = target.slice(start, end)\n\n for (var i = 0; i < len; ++i) {\n if (thisCopy[i] !== targetCopy[i]) {\n x = thisCopy[i]\n y = targetCopy[i]\n break\n }\n }\n\n if (x < y) return -1\n if (y < x) return 1\n return 0\n}\n\n// Finds either the first index of `val` in `buffer` at offset >= `byteOffset`,\n// OR the last index of `val` in `buffer` at offset <= `byteOffset`.\n//\n// Arguments:\n// - buffer - a Buffer to search\n// - val - a string, Buffer, or number\n// - byteOffset - an index into `buffer`; will be clamped to an int32\n// - encoding - an optional encoding, relevant is val is a string\n// - dir - true for indexOf, false for lastIndexOf\nfunction bidirectionalIndexOf (buffer, val, byteOffset, encoding, dir) {\n // Empty buffer means no match\n if (buffer.length === 0) return -1\n\n // Normalize byteOffset\n if (typeof byteOffset === 'string') {\n encoding = byteOffset\n byteOffset = 0\n } else if (byteOffset > 0x7fffffff) {\n byteOffset = 0x7fffffff\n } else if (byteOffset < -0x80000000) {\n byteOffset = -0x80000000\n }\n byteOffset = +byteOffset // Coerce to Number.\n if (numberIsNaN(byteOffset)) {\n // byteOffset: it it's undefined, null, NaN, \"foo\", etc, search whole buffer\n byteOffset = dir ? 0 : (buffer.length - 1)\n }\n\n // Normalize byteOffset: negative offsets start from the end of the buffer\n if (byteOffset < 0) byteOffset = buffer.length + byteOffset\n if (byteOffset >= buffer.length) {\n if (dir) return -1\n else byteOffset = buffer.length - 1\n } else if (byteOffset < 0) {\n if (dir) byteOffset = 0\n else return -1\n }\n\n // Normalize val\n if (typeof val === 'string') {\n val = Buffer.from(val, encoding)\n }\n\n // Finally, search either indexOf (if dir is true) or lastIndexOf\n if (Buffer.isBuffer(val)) {\n // Special case: looking for empty string/buffer always fails\n if (val.length === 0) {\n return -1\n }\n return arrayIndexOf(buffer, val, byteOffset, encoding, dir)\n } else if (typeof val === 'number') {\n val = val & 0xFF // Search for a byte value [0-255]\n if (typeof Uint8Array.prototype.indexOf === 'function') {\n if (dir) {\n return Uint8Array.prototype.indexOf.call(buffer, val, byteOffset)\n } else {\n return Uint8Array.prototype.lastIndexOf.call(buffer, val, byteOffset)\n }\n }\n return arrayIndexOf(buffer, [val], byteOffset, encoding, dir)\n }\n\n throw new TypeError('val must be string, number or Buffer')\n}\n\nfunction arrayIndexOf (arr, val, byteOffset, encoding, dir) {\n var indexSize = 1\n var arrLength = arr.length\n var valLength = val.length\n\n if (encoding !== undefined) {\n encoding = String(encoding).toLowerCase()\n if (encoding === 'ucs2' || encoding === 'ucs-2' ||\n encoding === 'utf16le' || encoding === 'utf-16le') {\n if (arr.length < 2 || val.length < 2) {\n return -1\n }\n indexSize = 2\n arrLength /= 2\n valLength /= 2\n byteOffset /= 2\n }\n }\n\n function read (buf, i) {\n if (indexSize === 1) {\n return buf[i]\n } else {\n return buf.readUInt16BE(i * indexSize)\n }\n }\n\n var i\n if (dir) {\n var foundIndex = -1\n for (i = byteOffset; i < arrLength; i++) {\n if (read(arr, i) === read(val, foundIndex === -1 ? 0 : i - foundIndex)) {\n if (foundIndex === -1) foundIndex = i\n if (i - foundIndex + 1 === valLength) return foundIndex * indexSize\n } else {\n if (foundIndex !== -1) i -= i - foundIndex\n foundIndex = -1\n }\n }\n } else {\n if (byteOffset + valLength > arrLength) byteOffset = arrLength - valLength\n for (i = byteOffset; i >= 0; i--) {\n var found = true\n for (var j = 0; j < valLength; j++) {\n if (read(arr, i + j) !== read(val, j)) {\n found = false\n break\n }\n }\n if (found) return i\n }\n }\n\n return -1\n}\n\nBuffer.prototype.includes = function includes (val, byteOffset, encoding) {\n return this.indexOf(val, byteOffset, encoding) !== -1\n}\n\nBuffer.prototype.indexOf = function indexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, true)\n}\n\nBuffer.prototype.lastIndexOf = function lastIndexOf (val, byteOffset, encoding) {\n return bidirectionalIndexOf(this, val, byteOffset, encoding, false)\n}\n\nfunction hexWrite (buf, string, offset, length) {\n offset = Number(offset) || 0\n var remaining = buf.length - offset\n if (!length) {\n length = remaining\n } else {\n length = Number(length)\n if (length > remaining) {\n length = remaining\n }\n }\n\n var strLen = string.length\n\n if (length > strLen / 2) {\n length = strLen / 2\n }\n for (var i = 0; i < length; ++i) {\n var parsed = parseInt(string.substr(i * 2, 2), 16)\n if (numberIsNaN(parsed)) return i\n buf[offset + i] = parsed\n }\n return i\n}\n\nfunction utf8Write (buf, string, offset, length) {\n return blitBuffer(utf8ToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nfunction asciiWrite (buf, string, offset, length) {\n return blitBuffer(asciiToBytes(string), buf, offset, length)\n}\n\nfunction base64Write (buf, string, offset, length) {\n return blitBuffer(base64ToBytes(string), buf, offset, length)\n}\n\nfunction ucs2Write (buf, string, offset, length) {\n return blitBuffer(utf16leToBytes(string, buf.length - offset), buf, offset, length)\n}\n\nBuffer.prototype.write = function write (string, offset, length, encoding) {\n // Buffer#write(string)\n if (offset === undefined) {\n encoding = 'utf8'\n length = this.length\n offset = 0\n // Buffer#write(string, encoding)\n } else if (length === undefined && typeof offset === 'string') {\n encoding = offset\n length = this.length\n offset = 0\n // Buffer#write(string, offset[, length][, encoding])\n } else if (isFinite(offset)) {\n offset = offset >>> 0\n if (isFinite(length)) {\n length = length >>> 0\n if (encoding === undefined) encoding = 'utf8'\n } else {\n encoding = length\n length = undefined\n }\n } else {\n throw new Error(\n 'Buffer.write(string, encoding, offset[, length]) is no longer supported'\n )\n }\n\n var remaining = this.length - offset\n if (length === undefined || length > remaining) length = remaining\n\n if ((string.length > 0 && (length < 0 || offset < 0)) || offset > this.length) {\n throw new RangeError('Attempt to write outside buffer bounds')\n }\n\n if (!encoding) encoding = 'utf8'\n\n var loweredCase = false\n for (;;) {\n switch (encoding) {\n case 'hex':\n return hexWrite(this, string, offset, length)\n\n case 'utf8':\n case 'utf-8':\n return utf8Write(this, string, offset, length)\n\n case 'ascii':\n case 'latin1':\n case 'binary':\n return asciiWrite(this, string, offset, length)\n\n case 'base64':\n // Warning: maxLength not taken into account in base64Write\n return base64Write(this, string, offset, length)\n\n case 'ucs2':\n case 'ucs-2':\n case 'utf16le':\n case 'utf-16le':\n return ucs2Write(this, string, offset, length)\n\n default:\n if (loweredCase) throw new TypeError('Unknown encoding: ' + encoding)\n encoding = ('' + encoding).toLowerCase()\n loweredCase = true\n }\n }\n}\n\nBuffer.prototype.toJSON = function toJSON () {\n return {\n type: 'Buffer',\n data: Array.prototype.slice.call(this._arr || this, 0)\n }\n}\n\nfunction base64Slice (buf, start, end) {\n if (start === 0 && end === buf.length) {\n return base64.fromByteArray(buf)\n } else {\n return base64.fromByteArray(buf.slice(start, end))\n }\n}\n\nfunction utf8Slice (buf, start, end) {\n end = Math.min(buf.length, end)\n var res = []\n\n var i = start\n while (i < end) {\n var firstByte = buf[i]\n var codePoint = null\n var bytesPerSequence = (firstByte > 0xEF)\n ? 4\n : (firstByte > 0xDF)\n ? 3\n : (firstByte > 0xBF)\n ? 2\n : 1\n\n if (i + bytesPerSequence <= end) {\n var secondByte, thirdByte, fourthByte, tempCodePoint\n\n switch (bytesPerSequence) {\n case 1:\n if (firstByte < 0x80) {\n codePoint = firstByte\n }\n break\n case 2:\n secondByte = buf[i + 1]\n if ((secondByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0x1F) << 0x6 | (secondByte & 0x3F)\n if (tempCodePoint > 0x7F) {\n codePoint = tempCodePoint\n }\n }\n break\n case 3:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0xC | (secondByte & 0x3F) << 0x6 | (thirdByte & 0x3F)\n if (tempCodePoint > 0x7FF && (tempCodePoint < 0xD800 || tempCodePoint > 0xDFFF)) {\n codePoint = tempCodePoint\n }\n }\n break\n case 4:\n secondByte = buf[i + 1]\n thirdByte = buf[i + 2]\n fourthByte = buf[i + 3]\n if ((secondByte & 0xC0) === 0x80 && (thirdByte & 0xC0) === 0x80 && (fourthByte & 0xC0) === 0x80) {\n tempCodePoint = (firstByte & 0xF) << 0x12 | (secondByte & 0x3F) << 0xC | (thirdByte & 0x3F) << 0x6 | (fourthByte & 0x3F)\n if (tempCodePoint > 0xFFFF && tempCodePoint < 0x110000) {\n codePoint = tempCodePoint\n }\n }\n }\n }\n\n if (codePoint === null) {\n // we did not generate a valid codePoint so insert a\n // replacement char (U+FFFD) and advance only 1 byte\n codePoint = 0xFFFD\n bytesPerSequence = 1\n } else if (codePoint > 0xFFFF) {\n // encode to utf16 (surrogate pair dance)\n codePoint -= 0x10000\n res.push(codePoint >>> 10 & 0x3FF | 0xD800)\n codePoint = 0xDC00 | codePoint & 0x3FF\n }\n\n res.push(codePoint)\n i += bytesPerSequence\n }\n\n return decodeCodePointsArray(res)\n}\n\n// Based on http://stackoverflow.com/a/22747272/680742, the browser with\n// the lowest limit is Chrome, with 0x10000 args.\n// We go 1 magnitude less, for safety\nvar MAX_ARGUMENTS_LENGTH = 0x1000\n\nfunction decodeCodePointsArray (codePoints) {\n var len = codePoints.length\n if (len <= MAX_ARGUMENTS_LENGTH) {\n return String.fromCharCode.apply(String, codePoints) // avoid extra slice()\n }\n\n // Decode in chunks to avoid \"call stack size exceeded\".\n var res = ''\n var i = 0\n while (i < len) {\n res += String.fromCharCode.apply(\n String,\n codePoints.slice(i, i += MAX_ARGUMENTS_LENGTH)\n )\n }\n return res\n}\n\nfunction asciiSlice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i] & 0x7F)\n }\n return ret\n}\n\nfunction latin1Slice (buf, start, end) {\n var ret = ''\n end = Math.min(buf.length, end)\n\n for (var i = start; i < end; ++i) {\n ret += String.fromCharCode(buf[i])\n }\n return ret\n}\n\nfunction hexSlice (buf, start, end) {\n var len = buf.length\n\n if (!start || start < 0) start = 0\n if (!end || end < 0 || end > len) end = len\n\n var out = ''\n for (var i = start; i < end; ++i) {\n out += hexSliceLookupTable[buf[i]]\n }\n return out\n}\n\nfunction utf16leSlice (buf, start, end) {\n var bytes = buf.slice(start, end)\n var res = ''\n // If bytes.length is odd, the last 8 bits must be ignored (same as node.js)\n for (var i = 0; i < bytes.length - 1; i += 2) {\n res += String.fromCharCode(bytes[i] + (bytes[i + 1] * 256))\n }\n return res\n}\n\nBuffer.prototype.slice = function slice (start, end) {\n var len = this.length\n start = ~~start\n end = end === undefined ? len : ~~end\n\n if (start < 0) {\n start += len\n if (start < 0) start = 0\n } else if (start > len) {\n start = len\n }\n\n if (end < 0) {\n end += len\n if (end < 0) end = 0\n } else if (end > len) {\n end = len\n }\n\n if (end < start) end = start\n\n var newBuf = this.subarray(start, end)\n // Return an augmented `Uint8Array` instance\n Object.setPrototypeOf(newBuf, Buffer.prototype)\n\n return newBuf\n}\n\n/*\n * Need to make sure that buffer isn't trying to write out of bounds.\n */\nfunction checkOffset (offset, ext, length) {\n if ((offset % 1) !== 0 || offset < 0) throw new RangeError('offset is not uint')\n if (offset + ext > length) throw new RangeError('Trying to access beyond buffer length')\n}\n\nBuffer.prototype.readUintLE =\nBuffer.prototype.readUIntLE = function readUIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUintBE =\nBuffer.prototype.readUIntBE = function readUIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n checkOffset(offset, byteLength, this.length)\n }\n\n var val = this[offset + --byteLength]\n var mul = 1\n while (byteLength > 0 && (mul *= 0x100)) {\n val += this[offset + --byteLength] * mul\n }\n\n return val\n}\n\nBuffer.prototype.readUint8 =\nBuffer.prototype.readUInt8 = function readUInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n return this[offset]\n}\n\nBuffer.prototype.readUint16LE =\nBuffer.prototype.readUInt16LE = function readUInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return this[offset] | (this[offset + 1] << 8)\n}\n\nBuffer.prototype.readUint16BE =\nBuffer.prototype.readUInt16BE = function readUInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n return (this[offset] << 8) | this[offset + 1]\n}\n\nBuffer.prototype.readUint32LE =\nBuffer.prototype.readUInt32LE = function readUInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return ((this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16)) +\n (this[offset + 3] * 0x1000000)\n}\n\nBuffer.prototype.readUint32BE =\nBuffer.prototype.readUInt32BE = function readUInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] * 0x1000000) +\n ((this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n this[offset + 3])\n}\n\nBuffer.prototype.readIntLE = function readIntLE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var val = this[offset]\n var mul = 1\n var i = 0\n while (++i < byteLength && (mul *= 0x100)) {\n val += this[offset + i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readIntBE = function readIntBE (offset, byteLength, noAssert) {\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) checkOffset(offset, byteLength, this.length)\n\n var i = byteLength\n var mul = 1\n var val = this[offset + --i]\n while (i > 0 && (mul *= 0x100)) {\n val += this[offset + --i] * mul\n }\n mul *= 0x80\n\n if (val >= mul) val -= Math.pow(2, 8 * byteLength)\n\n return val\n}\n\nBuffer.prototype.readInt8 = function readInt8 (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 1, this.length)\n if (!(this[offset] & 0x80)) return (this[offset])\n return ((0xff - this[offset] + 1) * -1)\n}\n\nBuffer.prototype.readInt16LE = function readInt16LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset] | (this[offset + 1] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt16BE = function readInt16BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 2, this.length)\n var val = this[offset + 1] | (this[offset] << 8)\n return (val & 0x8000) ? val | 0xFFFF0000 : val\n}\n\nBuffer.prototype.readInt32LE = function readInt32LE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset]) |\n (this[offset + 1] << 8) |\n (this[offset + 2] << 16) |\n (this[offset + 3] << 24)\n}\n\nBuffer.prototype.readInt32BE = function readInt32BE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n\n return (this[offset] << 24) |\n (this[offset + 1] << 16) |\n (this[offset + 2] << 8) |\n (this[offset + 3])\n}\n\nBuffer.prototype.readFloatLE = function readFloatLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, true, 23, 4)\n}\n\nBuffer.prototype.readFloatBE = function readFloatBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 4, this.length)\n return ieee754.read(this, offset, false, 23, 4)\n}\n\nBuffer.prototype.readDoubleLE = function readDoubleLE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, true, 52, 8)\n}\n\nBuffer.prototype.readDoubleBE = function readDoubleBE (offset, noAssert) {\n offset = offset >>> 0\n if (!noAssert) checkOffset(offset, 8, this.length)\n return ieee754.read(this, offset, false, 52, 8)\n}\n\nfunction checkInt (buf, value, offset, ext, max, min) {\n if (!Buffer.isBuffer(buf)) throw new TypeError('\"buffer\" argument must be a Buffer instance')\n if (value > max || value < min) throw new RangeError('\"value\" argument is out of bounds')\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n}\n\nBuffer.prototype.writeUintLE =\nBuffer.prototype.writeUIntLE = function writeUIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var mul = 1\n var i = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUintBE =\nBuffer.prototype.writeUIntBE = function writeUIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n byteLength = byteLength >>> 0\n if (!noAssert) {\n var maxBytes = Math.pow(2, 8 * byteLength) - 1\n checkInt(this, value, offset, byteLength, maxBytes, 0)\n }\n\n var i = byteLength - 1\n var mul = 1\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n this[offset + i] = (value / mul) & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeUint8 =\nBuffer.prototype.writeUInt8 = function writeUInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0xff, 0)\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeUint16LE =\nBuffer.prototype.writeUInt16LE = function writeUInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeUint16BE =\nBuffer.prototype.writeUInt16BE = function writeUInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0xffff, 0)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeUint32LE =\nBuffer.prototype.writeUInt32LE = function writeUInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset + 3] = (value >>> 24)\n this[offset + 2] = (value >>> 16)\n this[offset + 1] = (value >>> 8)\n this[offset] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeUint32BE =\nBuffer.prototype.writeUInt32BE = function writeUInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0xffffffff, 0)\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nBuffer.prototype.writeIntLE = function writeIntLE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = 0\n var mul = 1\n var sub = 0\n this[offset] = value & 0xFF\n while (++i < byteLength && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i - 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeIntBE = function writeIntBE (value, offset, byteLength, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n var limit = Math.pow(2, (8 * byteLength) - 1)\n\n checkInt(this, value, offset, byteLength, limit - 1, -limit)\n }\n\n var i = byteLength - 1\n var mul = 1\n var sub = 0\n this[offset + i] = value & 0xFF\n while (--i >= 0 && (mul *= 0x100)) {\n if (value < 0 && sub === 0 && this[offset + i + 1] !== 0) {\n sub = 1\n }\n this[offset + i] = ((value / mul) >> 0) - sub & 0xFF\n }\n\n return offset + byteLength\n}\n\nBuffer.prototype.writeInt8 = function writeInt8 (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 1, 0x7f, -0x80)\n if (value < 0) value = 0xff + value + 1\n this[offset] = (value & 0xff)\n return offset + 1\n}\n\nBuffer.prototype.writeInt16LE = function writeInt16LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n return offset + 2\n}\n\nBuffer.prototype.writeInt16BE = function writeInt16BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 2, 0x7fff, -0x8000)\n this[offset] = (value >>> 8)\n this[offset + 1] = (value & 0xff)\n return offset + 2\n}\n\nBuffer.prototype.writeInt32LE = function writeInt32LE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n this[offset] = (value & 0xff)\n this[offset + 1] = (value >>> 8)\n this[offset + 2] = (value >>> 16)\n this[offset + 3] = (value >>> 24)\n return offset + 4\n}\n\nBuffer.prototype.writeInt32BE = function writeInt32BE (value, offset, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) checkInt(this, value, offset, 4, 0x7fffffff, -0x80000000)\n if (value < 0) value = 0xffffffff + value + 1\n this[offset] = (value >>> 24)\n this[offset + 1] = (value >>> 16)\n this[offset + 2] = (value >>> 8)\n this[offset + 3] = (value & 0xff)\n return offset + 4\n}\n\nfunction checkIEEE754 (buf, value, offset, ext, max, min) {\n if (offset + ext > buf.length) throw new RangeError('Index out of range')\n if (offset < 0) throw new RangeError('Index out of range')\n}\n\nfunction writeFloat (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 4, 3.4028234663852886e+38, -3.4028234663852886e+38)\n }\n ieee754.write(buf, value, offset, littleEndian, 23, 4)\n return offset + 4\n}\n\nBuffer.prototype.writeFloatLE = function writeFloatLE (value, offset, noAssert) {\n return writeFloat(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeFloatBE = function writeFloatBE (value, offset, noAssert) {\n return writeFloat(this, value, offset, false, noAssert)\n}\n\nfunction writeDouble (buf, value, offset, littleEndian, noAssert) {\n value = +value\n offset = offset >>> 0\n if (!noAssert) {\n checkIEEE754(buf, value, offset, 8, 1.7976931348623157E+308, -1.7976931348623157E+308)\n }\n ieee754.write(buf, value, offset, littleEndian, 52, 8)\n return offset + 8\n}\n\nBuffer.prototype.writeDoubleLE = function writeDoubleLE (value, offset, noAssert) {\n return writeDouble(this, value, offset, true, noAssert)\n}\n\nBuffer.prototype.writeDoubleBE = function writeDoubleBE (value, offset, noAssert) {\n return writeDouble(this, value, offset, false, noAssert)\n}\n\n// copy(targetBuffer, targetStart=0, sourceStart=0, sourceEnd=buffer.length)\nBuffer.prototype.copy = function copy (target, targetStart, start, end) {\n if (!Buffer.isBuffer(target)) throw new TypeError('argument should be a Buffer')\n if (!start) start = 0\n if (!end && end !== 0) end = this.length\n if (targetStart >= target.length) targetStart = target.length\n if (!targetStart) targetStart = 0\n if (end > 0 && end < start) end = start\n\n // Copy 0 bytes; we're done\n if (end === start) return 0\n if (target.length === 0 || this.length === 0) return 0\n\n // Fatal error conditions\n if (targetStart < 0) {\n throw new RangeError('targetStart out of bounds')\n }\n if (start < 0 || start >= this.length) throw new RangeError('Index out of range')\n if (end < 0) throw new RangeError('sourceEnd out of bounds')\n\n // Are we oob?\n if (end > this.length) end = this.length\n if (target.length - targetStart < end - start) {\n end = target.length - targetStart + start\n }\n\n var len = end - start\n\n if (this === target && typeof Uint8Array.prototype.copyWithin === 'function') {\n // Use built-in when available, missing from IE11\n this.copyWithin(targetStart, start, end)\n } else {\n Uint8Array.prototype.set.call(\n target,\n this.subarray(start, end),\n targetStart\n )\n }\n\n return len\n}\n\n// Usage:\n// buffer.fill(number[, offset[, end]])\n// buffer.fill(buffer[, offset[, end]])\n// buffer.fill(string[, offset[, end]][, encoding])\nBuffer.prototype.fill = function fill (val, start, end, encoding) {\n // Handle string cases:\n if (typeof val === 'string') {\n if (typeof start === 'string') {\n encoding = start\n start = 0\n end = this.length\n } else if (typeof end === 'string') {\n encoding = end\n end = this.length\n }\n if (encoding !== undefined && typeof encoding !== 'string') {\n throw new TypeError('encoding must be a string')\n }\n if (typeof encoding === 'string' && !Buffer.isEncoding(encoding)) {\n throw new TypeError('Unknown encoding: ' + encoding)\n }\n if (val.length === 1) {\n var code = val.charCodeAt(0)\n if ((encoding === 'utf8' && code < 128) ||\n encoding === 'latin1') {\n // Fast path: If `val` fits into a single byte, use that numeric value.\n val = code\n }\n }\n } else if (typeof val === 'number') {\n val = val & 255\n } else if (typeof val === 'boolean') {\n val = Number(val)\n }\n\n // Invalid ranges are not set to a default, so can range check early.\n if (start < 0 || this.length < start || this.length < end) {\n throw new RangeError('Out of range index')\n }\n\n if (end <= start) {\n return this\n }\n\n start = start >>> 0\n end = end === undefined ? this.length : end >>> 0\n\n if (!val) val = 0\n\n var i\n if (typeof val === 'number') {\n for (i = start; i < end; ++i) {\n this[i] = val\n }\n } else {\n var bytes = Buffer.isBuffer(val)\n ? val\n : Buffer.from(val, encoding)\n var len = bytes.length\n if (len === 0) {\n throw new TypeError('The value \"' + val +\n '\" is invalid for argument \"value\"')\n }\n for (i = 0; i < end - start; ++i) {\n this[i + start] = bytes[i % len]\n }\n }\n\n return this\n}\n\n// HELPER FUNCTIONS\n// ================\n\nvar INVALID_BASE64_RE = /[^+/0-9A-Za-z-_]/g\n\nfunction base64clean (str) {\n // Node takes equal signs as end of the Base64 encoding\n str = str.split('=')[0]\n // Node strips out invalid characters like \\n and \\t from the string, base64-js does not\n str = str.trim().replace(INVALID_BASE64_RE, '')\n // Node converts strings with length < 2 to ''\n if (str.length < 2) return ''\n // Node allows for non-padded base64 strings (missing trailing ===), base64-js does not\n while (str.length % 4 !== 0) {\n str = str + '='\n }\n return str\n}\n\nfunction utf8ToBytes (string, units) {\n units = units || Infinity\n var codePoint\n var length = string.length\n var leadSurrogate = null\n var bytes = []\n\n for (var i = 0; i < length; ++i) {\n codePoint = string.charCodeAt(i)\n\n // is surrogate component\n if (codePoint > 0xD7FF && codePoint < 0xE000) {\n // last char was a lead\n if (!leadSurrogate) {\n // no lead yet\n if (codePoint > 0xDBFF) {\n // unexpected trail\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n } else if (i + 1 === length) {\n // unpaired lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n continue\n }\n\n // valid lead\n leadSurrogate = codePoint\n\n continue\n }\n\n // 2 leads in a row\n if (codePoint < 0xDC00) {\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n leadSurrogate = codePoint\n continue\n }\n\n // valid surrogate pair\n codePoint = (leadSurrogate - 0xD800 << 10 | codePoint - 0xDC00) + 0x10000\n } else if (leadSurrogate) {\n // valid bmp char, but last char was a lead\n if ((units -= 3) > -1) bytes.push(0xEF, 0xBF, 0xBD)\n }\n\n leadSurrogate = null\n\n // encode utf8\n if (codePoint < 0x80) {\n if ((units -= 1) < 0) break\n bytes.push(codePoint)\n } else if (codePoint < 0x800) {\n if ((units -= 2) < 0) break\n bytes.push(\n codePoint >> 0x6 | 0xC0,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x10000) {\n if ((units -= 3) < 0) break\n bytes.push(\n codePoint >> 0xC | 0xE0,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else if (codePoint < 0x110000) {\n if ((units -= 4) < 0) break\n bytes.push(\n codePoint >> 0x12 | 0xF0,\n codePoint >> 0xC & 0x3F | 0x80,\n codePoint >> 0x6 & 0x3F | 0x80,\n codePoint & 0x3F | 0x80\n )\n } else {\n throw new Error('Invalid code point')\n }\n }\n\n return bytes\n}\n\nfunction asciiToBytes (str) {\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n // Node's code seems to be doing this and not & 0x7F..\n byteArray.push(str.charCodeAt(i) & 0xFF)\n }\n return byteArray\n}\n\nfunction utf16leToBytes (str, units) {\n var c, hi, lo\n var byteArray = []\n for (var i = 0; i < str.length; ++i) {\n if ((units -= 2) < 0) break\n\n c = str.charCodeAt(i)\n hi = c >> 8\n lo = c % 256\n byteArray.push(lo)\n byteArray.push(hi)\n }\n\n return byteArray\n}\n\nfunction base64ToBytes (str) {\n return base64.toByteArray(base64clean(str))\n}\n\nfunction blitBuffer (src, dst, offset, length) {\n for (var i = 0; i < length; ++i) {\n if ((i + offset >= dst.length) || (i >= src.length)) break\n dst[i + offset] = src[i]\n }\n return i\n}\n\n// ArrayBuffer or Uint8Array objects from other contexts (i.e. iframes) do not pass\n// the `instanceof` check but they should be treated as of that type.\n// See: https://github.com/feross/buffer/issues/166\nfunction isInstance (obj, type) {\n return obj instanceof type ||\n (obj != null && obj.constructor != null && obj.constructor.name != null &&\n obj.constructor.name === type.name)\n}\nfunction numberIsNaN (obj) {\n // For IE11 support\n return obj !== obj // eslint-disable-line no-self-compare\n}\n\n// Create lookup table for `toString('hex')`\n// See: https://github.com/feross/buffer/issues/219\nvar hexSliceLookupTable = (function () {\n var alphabet = '0123456789abcdef'\n var table = new Array(256)\n for (var i = 0; i < 16; ++i) {\n var i16 = i * 16\n for (var j = 0; j < 16; ++j) {\n table[i16 + j] = alphabet[i] + alphabet[j]\n }\n }\n return table\n})()\n","'use strict'\n\nclass Base {\n constructor (name, code, implementation, alphabet) {\n this.name = name\n this.code = code\n this.alphabet = alphabet\n if (implementation && alphabet) {\n this.engine = implementation(alphabet)\n }\n }\n\n encode (stringOrBuffer) {\n return this.engine.encode(stringOrBuffer)\n }\n\n decode (stringOrBuffer) {\n return this.engine.decode(stringOrBuffer)\n }\n\n isImplemented () {\n return this.engine\n }\n}\n\nmodule.exports = Base\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base16 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return Buffer.from(input).toString('hex')\n }\n return input.toString('hex')\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base16 character')\n }\n }\n return Buffer.from(input, 'hex')\n }\n }\n}\n","'use strict'\n\nfunction decode (input, alphabet) {\n input = input.replace(new RegExp('=', 'g'), '')\n const length = input.length\n\n let bits = 0\n let value = 0\n\n let index = 0\n const output = new Uint8Array((length * 5 / 8) | 0)\n\n for (let i = 0; i < length; i++) {\n value = (value << 5) | alphabet.indexOf(input[i])\n bits += 5\n\n if (bits >= 8) {\n output[index++] = (value >>> (bits - 8)) & 255\n bits -= 8\n }\n }\n\n return output.buffer\n}\n\nfunction encode (buffer, alphabet) {\n const length = buffer.byteLength\n const view = new Uint8Array(buffer)\n const padding = alphabet.indexOf('=') === alphabet.length - 1\n\n if (padding) {\n alphabet = alphabet.substring(0, alphabet.length - 1)\n }\n\n let bits = 0\n let value = 0\n let output = ''\n\n for (let i = 0; i < length; i++) {\n value = (value << 8) | view[i]\n bits += 8\n\n while (bits >= 5) {\n output += alphabet[(value >>> (bits - 5)) & 31]\n bits -= 5\n }\n }\n\n if (bits > 0) {\n output += alphabet[(value << (5 - bits)) & 31]\n }\n\n if (padding) {\n while ((output.length % 8) !== 0) {\n output += '='\n }\n }\n\n return output\n}\n\nmodule.exports = function base32 (alphabet) {\n return {\n encode (input) {\n if (typeof input === 'string') {\n return encode(Uint8Array.from(input), alphabet)\n }\n\n return encode(input, alphabet)\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base32 character')\n }\n }\n\n return decode(input, alphabet)\n }\n }\n}\n","'use strict'\nconst { Buffer } = require('buffer')\n\nmodule.exports = function base64 (alphabet) {\n // The alphabet is only used to know:\n // 1. If padding is enabled (must contain '=')\n // 2. If the output must be url-safe (must contain '-' and '_')\n // 3. If the input of the output function is valid\n // The alphabets from RFC 4648 are always used.\n const padding = alphabet.indexOf('=') > -1\n const url = alphabet.indexOf('-') > -1 && alphabet.indexOf('_') > -1\n\n return {\n encode (input) {\n let output = ''\n\n if (typeof input === 'string') {\n output = Buffer.from(input).toString('base64')\n } else {\n output = input.toString('base64')\n }\n\n if (url) {\n output = output.replace(/\\+/g, '-').replace(/\\//g, '_')\n }\n\n const pad = output.indexOf('=')\n if (pad > 0 && !padding) {\n output = output.substring(0, pad)\n }\n\n return output\n },\n decode (input) {\n for (const char of input) {\n if (alphabet.indexOf(char) < 0) {\n throw new Error('invalid base64 character')\n }\n }\n\n return Buffer.from(input, 'base64')\n }\n }\n}\n","'use strict'\n\nconst Base = require('./base.js')\nconst baseX = require('base-x')\nconst base16 = require('./base16')\nconst base32 = require('./base32')\nconst base64 = require('./base64')\n\n// name, code, implementation, alphabet\nconst constants = [\n ['base1', '1', '', '1'],\n ['base2', '0', baseX, '01'],\n ['base8', '7', baseX, '01234567'],\n ['base10', '9', baseX, '0123456789'],\n ['base16', 'f', base16, '0123456789abcdef'],\n ['base32', 'b', base32, 'abcdefghijklmnopqrstuvwxyz234567'],\n ['base32pad', 'c', base32, 'abcdefghijklmnopqrstuvwxyz234567='],\n ['base32hex', 'v', base32, '0123456789abcdefghijklmnopqrstuv'],\n ['base32hexpad', 't', base32, '0123456789abcdefghijklmnopqrstuv='],\n ['base32z', 'h', base32, 'ybndrfg8ejkmcpqxot1uwisza345h769'],\n ['base58flickr', 'Z', baseX, '123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ'],\n ['base58btc', 'z', baseX, '123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz'],\n ['base64', 'm', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/'],\n ['base64pad', 'M', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='],\n ['base64url', 'u', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_'],\n ['base64urlpad', 'U', base64, 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_=']\n]\n\nconst names = constants.reduce((prev, tupple) => {\n prev[tupple[0]] = new Base(tupple[0], tupple[1], tupple[2], tupple[3])\n return prev\n}, {})\n\nconst codes = constants.reduce((prev, tupple) => {\n prev[tupple[1]] = names[tupple[0]]\n return prev\n}, {})\n\nmodule.exports = {\n names: names,\n codes: codes\n}\n","/**\n * Implementation of the [multibase](https://github.com/multiformats/multibase) specification.\n * @module Multibase\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst constants = require('./constants')\n\nexports = module.exports = multibase\nexports.encode = encode\nexports.decode = decode\nexports.isEncoded = isEncoded\nexports.names = Object.freeze(Object.keys(constants.names))\nexports.codes = Object.freeze(Object.keys(constants.codes))\n\n/**\n * Create a new buffer with the multibase varint+code.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be prefixed with multibase.\n * @memberof Multibase\n * @returns {Buffer}\n */\nfunction multibase (nameOrCode, buf) {\n if (!buf) {\n throw new Error('requires an encoded buffer')\n }\n const base = getBase(nameOrCode)\n const codeBuf = Buffer.from(base.code)\n\n const name = base.name\n validEncode(name, buf)\n return Buffer.concat([codeBuf, buf])\n}\n\n/**\n * Encode data with the specified base and add the multibase prefix.\n *\n * @param {string|number} nameOrCode - The multibase name or code number.\n * @param {Buffer} buf - The data to be encoded.\n * @returns {Buffer}\n * @memberof Multibase\n */\nfunction encode (nameOrCode, buf) {\n const base = getBase(nameOrCode)\n const name = base.name\n\n return multibase(name, Buffer.from(base.encode(buf)))\n}\n\n/**\n * Takes a buffer or string encoded with multibase header, decodes it and\n * returns the decoded buffer\n *\n * @param {Buffer|string} bufOrString\n * @returns {Buffer}\n * @memberof Multibase\n *\n */\nfunction decode (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n const code = bufOrString.substring(0, 1)\n bufOrString = bufOrString.substring(1, bufOrString.length)\n\n if (typeof bufOrString === 'string') {\n bufOrString = Buffer.from(bufOrString)\n }\n\n const base = getBase(code)\n return Buffer.from(base.decode(bufOrString.toString()))\n}\n\n/**\n * Is the given data multibase encoded?\n *\n * @param {Buffer|string} bufOrString\n * @returns {boolean}\n * @memberof Multibase\n */\nfunction isEncoded (bufOrString) {\n if (Buffer.isBuffer(bufOrString)) {\n bufOrString = bufOrString.toString()\n }\n\n // Ensure bufOrString is a string\n if (Object.prototype.toString.call(bufOrString) !== '[object String]') {\n return false\n }\n\n const code = bufOrString.substring(0, 1)\n try {\n const base = getBase(code)\n return base.name\n } catch (err) {\n return false\n }\n}\n\n/**\n * @param {string} name\n * @param {Buffer} buf\n * @private\n * @returns {undefined}\n */\nfunction validEncode (name, buf) {\n const base = getBase(name)\n base.decode(buf.toString())\n}\n\nfunction getBase (nameOrCode) {\n let base\n\n if (constants.names[nameOrCode]) {\n base = constants.names[nameOrCode]\n } else if (constants.codes[nameOrCode]) {\n base = constants.codes[nameOrCode]\n } else {\n throw new Error('Unsupported encoding')\n }\n\n if (!base.isImplemented()) {\n throw new Error('Base ' + nameOrCode + ' is not implemented yet')\n }\n\n return base\n}\n","/* eslint quote-props: off */\n/* eslint key-spacing: off */\n'use strict'\n\nexports.names = Object.freeze({\n 'identity': 0x0,\n 'sha1': 0x11,\n 'sha2-256': 0x12,\n 'sha2-512': 0x13,\n 'dbl-sha2-256': 0x56,\n 'sha3-224': 0x17,\n 'sha3-256': 0x16,\n 'sha3-384': 0x15,\n 'sha3-512': 0x14,\n 'shake-128': 0x18,\n 'shake-256': 0x19,\n 'keccak-224': 0x1A,\n 'keccak-256': 0x1B,\n 'keccak-384': 0x1C,\n 'keccak-512': 0x1D,\n 'murmur3-128': 0x22,\n 'murmur3-32': 0x23,\n 'md4': 0xd4,\n 'md5': 0xd5,\n 'blake2b-8': 0xb201,\n 'blake2b-16': 0xb202,\n 'blake2b-24': 0xb203,\n 'blake2b-32': 0xb204,\n 'blake2b-40': 0xb205,\n 'blake2b-48': 0xb206,\n 'blake2b-56': 0xb207,\n 'blake2b-64': 0xb208,\n 'blake2b-72': 0xb209,\n 'blake2b-80': 0xb20a,\n 'blake2b-88': 0xb20b,\n 'blake2b-96': 0xb20c,\n 'blake2b-104': 0xb20d,\n 'blake2b-112': 0xb20e,\n 'blake2b-120': 0xb20f,\n 'blake2b-128': 0xb210,\n 'blake2b-136': 0xb211,\n 'blake2b-144': 0xb212,\n 'blake2b-152': 0xb213,\n 'blake2b-160': 0xb214,\n 'blake2b-168': 0xb215,\n 'blake2b-176': 0xb216,\n 'blake2b-184': 0xb217,\n 'blake2b-192': 0xb218,\n 'blake2b-200': 0xb219,\n 'blake2b-208': 0xb21a,\n 'blake2b-216': 0xb21b,\n 'blake2b-224': 0xb21c,\n 'blake2b-232': 0xb21d,\n 'blake2b-240': 0xb21e,\n 'blake2b-248': 0xb21f,\n 'blake2b-256': 0xb220,\n 'blake2b-264': 0xb221,\n 'blake2b-272': 0xb222,\n 'blake2b-280': 0xb223,\n 'blake2b-288': 0xb224,\n 'blake2b-296': 0xb225,\n 'blake2b-304': 0xb226,\n 'blake2b-312': 0xb227,\n 'blake2b-320': 0xb228,\n 'blake2b-328': 0xb229,\n 'blake2b-336': 0xb22a,\n 'blake2b-344': 0xb22b,\n 'blake2b-352': 0xb22c,\n 'blake2b-360': 0xb22d,\n 'blake2b-368': 0xb22e,\n 'blake2b-376': 0xb22f,\n 'blake2b-384': 0xb230,\n 'blake2b-392': 0xb231,\n 'blake2b-400': 0xb232,\n 'blake2b-408': 0xb233,\n 'blake2b-416': 0xb234,\n 'blake2b-424': 0xb235,\n 'blake2b-432': 0xb236,\n 'blake2b-440': 0xb237,\n 'blake2b-448': 0xb238,\n 'blake2b-456': 0xb239,\n 'blake2b-464': 0xb23a,\n 'blake2b-472': 0xb23b,\n 'blake2b-480': 0xb23c,\n 'blake2b-488': 0xb23d,\n 'blake2b-496': 0xb23e,\n 'blake2b-504': 0xb23f,\n 'blake2b-512': 0xb240,\n 'blake2s-8': 0xb241,\n 'blake2s-16': 0xb242,\n 'blake2s-24': 0xb243,\n 'blake2s-32': 0xb244,\n 'blake2s-40': 0xb245,\n 'blake2s-48': 0xb246,\n 'blake2s-56': 0xb247,\n 'blake2s-64': 0xb248,\n 'blake2s-72': 0xb249,\n 'blake2s-80': 0xb24a,\n 'blake2s-88': 0xb24b,\n 'blake2s-96': 0xb24c,\n 'blake2s-104': 0xb24d,\n 'blake2s-112': 0xb24e,\n 'blake2s-120': 0xb24f,\n 'blake2s-128': 0xb250,\n 'blake2s-136': 0xb251,\n 'blake2s-144': 0xb252,\n 'blake2s-152': 0xb253,\n 'blake2s-160': 0xb254,\n 'blake2s-168': 0xb255,\n 'blake2s-176': 0xb256,\n 'blake2s-184': 0xb257,\n 'blake2s-192': 0xb258,\n 'blake2s-200': 0xb259,\n 'blake2s-208': 0xb25a,\n 'blake2s-216': 0xb25b,\n 'blake2s-224': 0xb25c,\n 'blake2s-232': 0xb25d,\n 'blake2s-240': 0xb25e,\n 'blake2s-248': 0xb25f,\n 'blake2s-256': 0xb260,\n 'Skein256-8': 0xb301,\n 'Skein256-16': 0xb302,\n 'Skein256-24': 0xb303,\n 'Skein256-32': 0xb304,\n 'Skein256-40': 0xb305,\n 'Skein256-48': 0xb306,\n 'Skein256-56': 0xb307,\n 'Skein256-64': 0xb308,\n 'Skein256-72': 0xb309,\n 'Skein256-80': 0xb30a,\n 'Skein256-88': 0xb30b,\n 'Skein256-96': 0xb30c,\n 'Skein256-104': 0xb30d,\n 'Skein256-112': 0xb30e,\n 'Skein256-120': 0xb30f,\n 'Skein256-128': 0xb310,\n 'Skein256-136': 0xb311,\n 'Skein256-144': 0xb312,\n 'Skein256-152': 0xb313,\n 'Skein256-160': 0xb314,\n 'Skein256-168': 0xb315,\n 'Skein256-176': 0xb316,\n 'Skein256-184': 0xb317,\n 'Skein256-192': 0xb318,\n 'Skein256-200': 0xb319,\n 'Skein256-208': 0xb31a,\n 'Skein256-216': 0xb31b,\n 'Skein256-224': 0xb31c,\n 'Skein256-232': 0xb31d,\n 'Skein256-240': 0xb31e,\n 'Skein256-248': 0xb31f,\n 'Skein256-256': 0xb320,\n 'Skein512-8': 0xb321,\n 'Skein512-16': 0xb322,\n 'Skein512-24': 0xb323,\n 'Skein512-32': 0xb324,\n 'Skein512-40': 0xb325,\n 'Skein512-48': 0xb326,\n 'Skein512-56': 0xb327,\n 'Skein512-64': 0xb328,\n 'Skein512-72': 0xb329,\n 'Skein512-80': 0xb32a,\n 'Skein512-88': 0xb32b,\n 'Skein512-96': 0xb32c,\n 'Skein512-104': 0xb32d,\n 'Skein512-112': 0xb32e,\n 'Skein512-120': 0xb32f,\n 'Skein512-128': 0xb330,\n 'Skein512-136': 0xb331,\n 'Skein512-144': 0xb332,\n 'Skein512-152': 0xb333,\n 'Skein512-160': 0xb334,\n 'Skein512-168': 0xb335,\n 'Skein512-176': 0xb336,\n 'Skein512-184': 0xb337,\n 'Skein512-192': 0xb338,\n 'Skein512-200': 0xb339,\n 'Skein512-208': 0xb33a,\n 'Skein512-216': 0xb33b,\n 'Skein512-224': 0xb33c,\n 'Skein512-232': 0xb33d,\n 'Skein512-240': 0xb33e,\n 'Skein512-248': 0xb33f,\n 'Skein512-256': 0xb340,\n 'Skein512-264': 0xb341,\n 'Skein512-272': 0xb342,\n 'Skein512-280': 0xb343,\n 'Skein512-288': 0xb344,\n 'Skein512-296': 0xb345,\n 'Skein512-304': 0xb346,\n 'Skein512-312': 0xb347,\n 'Skein512-320': 0xb348,\n 'Skein512-328': 0xb349,\n 'Skein512-336': 0xb34a,\n 'Skein512-344': 0xb34b,\n 'Skein512-352': 0xb34c,\n 'Skein512-360': 0xb34d,\n 'Skein512-368': 0xb34e,\n 'Skein512-376': 0xb34f,\n 'Skein512-384': 0xb350,\n 'Skein512-392': 0xb351,\n 'Skein512-400': 0xb352,\n 'Skein512-408': 0xb353,\n 'Skein512-416': 0xb354,\n 'Skein512-424': 0xb355,\n 'Skein512-432': 0xb356,\n 'Skein512-440': 0xb357,\n 'Skein512-448': 0xb358,\n 'Skein512-456': 0xb359,\n 'Skein512-464': 0xb35a,\n 'Skein512-472': 0xb35b,\n 'Skein512-480': 0xb35c,\n 'Skein512-488': 0xb35d,\n 'Skein512-496': 0xb35e,\n 'Skein512-504': 0xb35f,\n 'Skein512-512': 0xb360,\n 'Skein1024-8': 0xb361,\n 'Skein1024-16': 0xb362,\n 'Skein1024-24': 0xb363,\n 'Skein1024-32': 0xb364,\n 'Skein1024-40': 0xb365,\n 'Skein1024-48': 0xb366,\n 'Skein1024-56': 0xb367,\n 'Skein1024-64': 0xb368,\n 'Skein1024-72': 0xb369,\n 'Skein1024-80': 0xb36a,\n 'Skein1024-88': 0xb36b,\n 'Skein1024-96': 0xb36c,\n 'Skein1024-104': 0xb36d,\n 'Skein1024-112': 0xb36e,\n 'Skein1024-120': 0xb36f,\n 'Skein1024-128': 0xb370,\n 'Skein1024-136': 0xb371,\n 'Skein1024-144': 0xb372,\n 'Skein1024-152': 0xb373,\n 'Skein1024-160': 0xb374,\n 'Skein1024-168': 0xb375,\n 'Skein1024-176': 0xb376,\n 'Skein1024-184': 0xb377,\n 'Skein1024-192': 0xb378,\n 'Skein1024-200': 0xb379,\n 'Skein1024-208': 0xb37a,\n 'Skein1024-216': 0xb37b,\n 'Skein1024-224': 0xb37c,\n 'Skein1024-232': 0xb37d,\n 'Skein1024-240': 0xb37e,\n 'Skein1024-248': 0xb37f,\n 'Skein1024-256': 0xb380,\n 'Skein1024-264': 0xb381,\n 'Skein1024-272': 0xb382,\n 'Skein1024-280': 0xb383,\n 'Skein1024-288': 0xb384,\n 'Skein1024-296': 0xb385,\n 'Skein1024-304': 0xb386,\n 'Skein1024-312': 0xb387,\n 'Skein1024-320': 0xb388,\n 'Skein1024-328': 0xb389,\n 'Skein1024-336': 0xb38a,\n 'Skein1024-344': 0xb38b,\n 'Skein1024-352': 0xb38c,\n 'Skein1024-360': 0xb38d,\n 'Skein1024-368': 0xb38e,\n 'Skein1024-376': 0xb38f,\n 'Skein1024-384': 0xb390,\n 'Skein1024-392': 0xb391,\n 'Skein1024-400': 0xb392,\n 'Skein1024-408': 0xb393,\n 'Skein1024-416': 0xb394,\n 'Skein1024-424': 0xb395,\n 'Skein1024-432': 0xb396,\n 'Skein1024-440': 0xb397,\n 'Skein1024-448': 0xb398,\n 'Skein1024-456': 0xb399,\n 'Skein1024-464': 0xb39a,\n 'Skein1024-472': 0xb39b,\n 'Skein1024-480': 0xb39c,\n 'Skein1024-488': 0xb39d,\n 'Skein1024-496': 0xb39e,\n 'Skein1024-504': 0xb39f,\n 'Skein1024-512': 0xb3a0,\n 'Skein1024-520': 0xb3a1,\n 'Skein1024-528': 0xb3a2,\n 'Skein1024-536': 0xb3a3,\n 'Skein1024-544': 0xb3a4,\n 'Skein1024-552': 0xb3a5,\n 'Skein1024-560': 0xb3a6,\n 'Skein1024-568': 0xb3a7,\n 'Skein1024-576': 0xb3a8,\n 'Skein1024-584': 0xb3a9,\n 'Skein1024-592': 0xb3aa,\n 'Skein1024-600': 0xb3ab,\n 'Skein1024-608': 0xb3ac,\n 'Skein1024-616': 0xb3ad,\n 'Skein1024-624': 0xb3ae,\n 'Skein1024-632': 0xb3af,\n 'Skein1024-640': 0xb3b0,\n 'Skein1024-648': 0xb3b1,\n 'Skein1024-656': 0xb3b2,\n 'Skein1024-664': 0xb3b3,\n 'Skein1024-672': 0xb3b4,\n 'Skein1024-680': 0xb3b5,\n 'Skein1024-688': 0xb3b6,\n 'Skein1024-696': 0xb3b7,\n 'Skein1024-704': 0xb3b8,\n 'Skein1024-712': 0xb3b9,\n 'Skein1024-720': 0xb3ba,\n 'Skein1024-728': 0xb3bb,\n 'Skein1024-736': 0xb3bc,\n 'Skein1024-744': 0xb3bd,\n 'Skein1024-752': 0xb3be,\n 'Skein1024-760': 0xb3bf,\n 'Skein1024-768': 0xb3c0,\n 'Skein1024-776': 0xb3c1,\n 'Skein1024-784': 0xb3c2,\n 'Skein1024-792': 0xb3c3,\n 'Skein1024-800': 0xb3c4,\n 'Skein1024-808': 0xb3c5,\n 'Skein1024-816': 0xb3c6,\n 'Skein1024-824': 0xb3c7,\n 'Skein1024-832': 0xb3c8,\n 'Skein1024-840': 0xb3c9,\n 'Skein1024-848': 0xb3ca,\n 'Skein1024-856': 0xb3cb,\n 'Skein1024-864': 0xb3cc,\n 'Skein1024-872': 0xb3cd,\n 'Skein1024-880': 0xb3ce,\n 'Skein1024-888': 0xb3cf,\n 'Skein1024-896': 0xb3d0,\n 'Skein1024-904': 0xb3d1,\n 'Skein1024-912': 0xb3d2,\n 'Skein1024-920': 0xb3d3,\n 'Skein1024-928': 0xb3d4,\n 'Skein1024-936': 0xb3d5,\n 'Skein1024-944': 0xb3d6,\n 'Skein1024-952': 0xb3d7,\n 'Skein1024-960': 0xb3d8,\n 'Skein1024-968': 0xb3d9,\n 'Skein1024-976': 0xb3da,\n 'Skein1024-984': 0xb3db,\n 'Skein1024-992': 0xb3dc,\n 'Skein1024-1000': 0xb3dd,\n 'Skein1024-1008': 0xb3de,\n 'Skein1024-1016': 0xb3df,\n 'Skein1024-1024': 0xb3e0\n})\n\nexports.codes = Object.freeze({\n 0x0: 'identity',\n\n // sha family\n 0x11: 'sha1',\n 0x12: 'sha2-256',\n 0x13: 'sha2-512',\n 0x56: 'dbl-sha2-256',\n 0x17: 'sha3-224',\n 0x16: 'sha3-256',\n 0x15: 'sha3-384',\n 0x14: 'sha3-512',\n 0x18: 'shake-128',\n 0x19: 'shake-256',\n 0x1A: 'keccak-224',\n 0x1B: 'keccak-256',\n 0x1C: 'keccak-384',\n 0x1D: 'keccak-512',\n\n 0x22: 'murmur3-128',\n 0x23: 'murmur3-32',\n\n 0xd4: 'md4',\n 0xd5: 'md5',\n\n // blake2\n 0xb201: 'blake2b-8',\n 0xb202: 'blake2b-16',\n 0xb203: 'blake2b-24',\n 0xb204: 'blake2b-32',\n 0xb205: 'blake2b-40',\n 0xb206: 'blake2b-48',\n 0xb207: 'blake2b-56',\n 0xb208: 'blake2b-64',\n 0xb209: 'blake2b-72',\n 0xb20a: 'blake2b-80',\n 0xb20b: 'blake2b-88',\n 0xb20c: 'blake2b-96',\n 0xb20d: 'blake2b-104',\n 0xb20e: 'blake2b-112',\n 0xb20f: 'blake2b-120',\n 0xb210: 'blake2b-128',\n 0xb211: 'blake2b-136',\n 0xb212: 'blake2b-144',\n 0xb213: 'blake2b-152',\n 0xb214: 'blake2b-160',\n 0xb215: 'blake2b-168',\n 0xb216: 'blake2b-176',\n 0xb217: 'blake2b-184',\n 0xb218: 'blake2b-192',\n 0xb219: 'blake2b-200',\n 0xb21a: 'blake2b-208',\n 0xb21b: 'blake2b-216',\n 0xb21c: 'blake2b-224',\n 0xb21d: 'blake2b-232',\n 0xb21e: 'blake2b-240',\n 0xb21f: 'blake2b-248',\n 0xb220: 'blake2b-256',\n 0xb221: 'blake2b-264',\n 0xb222: 'blake2b-272',\n 0xb223: 'blake2b-280',\n 0xb224: 'blake2b-288',\n 0xb225: 'blake2b-296',\n 0xb226: 'blake2b-304',\n 0xb227: 'blake2b-312',\n 0xb228: 'blake2b-320',\n 0xb229: 'blake2b-328',\n 0xb22a: 'blake2b-336',\n 0xb22b: 'blake2b-344',\n 0xb22c: 'blake2b-352',\n 0xb22d: 'blake2b-360',\n 0xb22e: 'blake2b-368',\n 0xb22f: 'blake2b-376',\n 0xb230: 'blake2b-384',\n 0xb231: 'blake2b-392',\n 0xb232: 'blake2b-400',\n 0xb233: 'blake2b-408',\n 0xb234: 'blake2b-416',\n 0xb235: 'blake2b-424',\n 0xb236: 'blake2b-432',\n 0xb237: 'blake2b-440',\n 0xb238: 'blake2b-448',\n 0xb239: 'blake2b-456',\n 0xb23a: 'blake2b-464',\n 0xb23b: 'blake2b-472',\n 0xb23c: 'blake2b-480',\n 0xb23d: 'blake2b-488',\n 0xb23e: 'blake2b-496',\n 0xb23f: 'blake2b-504',\n 0xb240: 'blake2b-512',\n 0xb241: 'blake2s-8',\n 0xb242: 'blake2s-16',\n 0xb243: 'blake2s-24',\n 0xb244: 'blake2s-32',\n 0xb245: 'blake2s-40',\n 0xb246: 'blake2s-48',\n 0xb247: 'blake2s-56',\n 0xb248: 'blake2s-64',\n 0xb249: 'blake2s-72',\n 0xb24a: 'blake2s-80',\n 0xb24b: 'blake2s-88',\n 0xb24c: 'blake2s-96',\n 0xb24d: 'blake2s-104',\n 0xb24e: 'blake2s-112',\n 0xb24f: 'blake2s-120',\n 0xb250: 'blake2s-128',\n 0xb251: 'blake2s-136',\n 0xb252: 'blake2s-144',\n 0xb253: 'blake2s-152',\n 0xb254: 'blake2s-160',\n 0xb255: 'blake2s-168',\n 0xb256: 'blake2s-176',\n 0xb257: 'blake2s-184',\n 0xb258: 'blake2s-192',\n 0xb259: 'blake2s-200',\n 0xb25a: 'blake2s-208',\n 0xb25b: 'blake2s-216',\n 0xb25c: 'blake2s-224',\n 0xb25d: 'blake2s-232',\n 0xb25e: 'blake2s-240',\n 0xb25f: 'blake2s-248',\n 0xb260: 'blake2s-256',\n\n // skein\n 0xb301: 'Skein256-8',\n 0xb302: 'Skein256-16',\n 0xb303: 'Skein256-24',\n 0xb304: 'Skein256-32',\n 0xb305: 'Skein256-40',\n 0xb306: 'Skein256-48',\n 0xb307: 'Skein256-56',\n 0xb308: 'Skein256-64',\n 0xb309: 'Skein256-72',\n 0xb30a: 'Skein256-80',\n 0xb30b: 'Skein256-88',\n 0xb30c: 'Skein256-96',\n 0xb30d: 'Skein256-104',\n 0xb30e: 'Skein256-112',\n 0xb30f: 'Skein256-120',\n 0xb310: 'Skein256-128',\n 0xb311: 'Skein256-136',\n 0xb312: 'Skein256-144',\n 0xb313: 'Skein256-152',\n 0xb314: 'Skein256-160',\n 0xb315: 'Skein256-168',\n 0xb316: 'Skein256-176',\n 0xb317: 'Skein256-184',\n 0xb318: 'Skein256-192',\n 0xb319: 'Skein256-200',\n 0xb31a: 'Skein256-208',\n 0xb31b: 'Skein256-216',\n 0xb31c: 'Skein256-224',\n 0xb31d: 'Skein256-232',\n 0xb31e: 'Skein256-240',\n 0xb31f: 'Skein256-248',\n 0xb320: 'Skein256-256',\n 0xb321: 'Skein512-8',\n 0xb322: 'Skein512-16',\n 0xb323: 'Skein512-24',\n 0xb324: 'Skein512-32',\n 0xb325: 'Skein512-40',\n 0xb326: 'Skein512-48',\n 0xb327: 'Skein512-56',\n 0xb328: 'Skein512-64',\n 0xb329: 'Skein512-72',\n 0xb32a: 'Skein512-80',\n 0xb32b: 'Skein512-88',\n 0xb32c: 'Skein512-96',\n 0xb32d: 'Skein512-104',\n 0xb32e: 'Skein512-112',\n 0xb32f: 'Skein512-120',\n 0xb330: 'Skein512-128',\n 0xb331: 'Skein512-136',\n 0xb332: 'Skein512-144',\n 0xb333: 'Skein512-152',\n 0xb334: 'Skein512-160',\n 0xb335: 'Skein512-168',\n 0xb336: 'Skein512-176',\n 0xb337: 'Skein512-184',\n 0xb338: 'Skein512-192',\n 0xb339: 'Skein512-200',\n 0xb33a: 'Skein512-208',\n 0xb33b: 'Skein512-216',\n 0xb33c: 'Skein512-224',\n 0xb33d: 'Skein512-232',\n 0xb33e: 'Skein512-240',\n 0xb33f: 'Skein512-248',\n 0xb340: 'Skein512-256',\n 0xb341: 'Skein512-264',\n 0xb342: 'Skein512-272',\n 0xb343: 'Skein512-280',\n 0xb344: 'Skein512-288',\n 0xb345: 'Skein512-296',\n 0xb346: 'Skein512-304',\n 0xb347: 'Skein512-312',\n 0xb348: 'Skein512-320',\n 0xb349: 'Skein512-328',\n 0xb34a: 'Skein512-336',\n 0xb34b: 'Skein512-344',\n 0xb34c: 'Skein512-352',\n 0xb34d: 'Skein512-360',\n 0xb34e: 'Skein512-368',\n 0xb34f: 'Skein512-376',\n 0xb350: 'Skein512-384',\n 0xb351: 'Skein512-392',\n 0xb352: 'Skein512-400',\n 0xb353: 'Skein512-408',\n 0xb354: 'Skein512-416',\n 0xb355: 'Skein512-424',\n 0xb356: 'Skein512-432',\n 0xb357: 'Skein512-440',\n 0xb358: 'Skein512-448',\n 0xb359: 'Skein512-456',\n 0xb35a: 'Skein512-464',\n 0xb35b: 'Skein512-472',\n 0xb35c: 'Skein512-480',\n 0xb35d: 'Skein512-488',\n 0xb35e: 'Skein512-496',\n 0xb35f: 'Skein512-504',\n 0xb360: 'Skein512-512',\n 0xb361: 'Skein1024-8',\n 0xb362: 'Skein1024-16',\n 0xb363: 'Skein1024-24',\n 0xb364: 'Skein1024-32',\n 0xb365: 'Skein1024-40',\n 0xb366: 'Skein1024-48',\n 0xb367: 'Skein1024-56',\n 0xb368: 'Skein1024-64',\n 0xb369: 'Skein1024-72',\n 0xb36a: 'Skein1024-80',\n 0xb36b: 'Skein1024-88',\n 0xb36c: 'Skein1024-96',\n 0xb36d: 'Skein1024-104',\n 0xb36e: 'Skein1024-112',\n 0xb36f: 'Skein1024-120',\n 0xb370: 'Skein1024-128',\n 0xb371: 'Skein1024-136',\n 0xb372: 'Skein1024-144',\n 0xb373: 'Skein1024-152',\n 0xb374: 'Skein1024-160',\n 0xb375: 'Skein1024-168',\n 0xb376: 'Skein1024-176',\n 0xb377: 'Skein1024-184',\n 0xb378: 'Skein1024-192',\n 0xb379: 'Skein1024-200',\n 0xb37a: 'Skein1024-208',\n 0xb37b: 'Skein1024-216',\n 0xb37c: 'Skein1024-224',\n 0xb37d: 'Skein1024-232',\n 0xb37e: 'Skein1024-240',\n 0xb37f: 'Skein1024-248',\n 0xb380: 'Skein1024-256',\n 0xb381: 'Skein1024-264',\n 0xb382: 'Skein1024-272',\n 0xb383: 'Skein1024-280',\n 0xb384: 'Skein1024-288',\n 0xb385: 'Skein1024-296',\n 0xb386: 'Skein1024-304',\n 0xb387: 'Skein1024-312',\n 0xb388: 'Skein1024-320',\n 0xb389: 'Skein1024-328',\n 0xb38a: 'Skein1024-336',\n 0xb38b: 'Skein1024-344',\n 0xb38c: 'Skein1024-352',\n 0xb38d: 'Skein1024-360',\n 0xb38e: 'Skein1024-368',\n 0xb38f: 'Skein1024-376',\n 0xb390: 'Skein1024-384',\n 0xb391: 'Skein1024-392',\n 0xb392: 'Skein1024-400',\n 0xb393: 'Skein1024-408',\n 0xb394: 'Skein1024-416',\n 0xb395: 'Skein1024-424',\n 0xb396: 'Skein1024-432',\n 0xb397: 'Skein1024-440',\n 0xb398: 'Skein1024-448',\n 0xb399: 'Skein1024-456',\n 0xb39a: 'Skein1024-464',\n 0xb39b: 'Skein1024-472',\n 0xb39c: 'Skein1024-480',\n 0xb39d: 'Skein1024-488',\n 0xb39e: 'Skein1024-496',\n 0xb39f: 'Skein1024-504',\n 0xb3a0: 'Skein1024-512',\n 0xb3a1: 'Skein1024-520',\n 0xb3a2: 'Skein1024-528',\n 0xb3a3: 'Skein1024-536',\n 0xb3a4: 'Skein1024-544',\n 0xb3a5: 'Skein1024-552',\n 0xb3a6: 'Skein1024-560',\n 0xb3a7: 'Skein1024-568',\n 0xb3a8: 'Skein1024-576',\n 0xb3a9: 'Skein1024-584',\n 0xb3aa: 'Skein1024-592',\n 0xb3ab: 'Skein1024-600',\n 0xb3ac: 'Skein1024-608',\n 0xb3ad: 'Skein1024-616',\n 0xb3ae: 'Skein1024-624',\n 0xb3af: 'Skein1024-632',\n 0xb3b0: 'Skein1024-640',\n 0xb3b1: 'Skein1024-648',\n 0xb3b2: 'Skein1024-656',\n 0xb3b3: 'Skein1024-664',\n 0xb3b4: 'Skein1024-672',\n 0xb3b5: 'Skein1024-680',\n 0xb3b6: 'Skein1024-688',\n 0xb3b7: 'Skein1024-696',\n 0xb3b8: 'Skein1024-704',\n 0xb3b9: 'Skein1024-712',\n 0xb3ba: 'Skein1024-720',\n 0xb3bb: 'Skein1024-728',\n 0xb3bc: 'Skein1024-736',\n 0xb3bd: 'Skein1024-744',\n 0xb3be: 'Skein1024-752',\n 0xb3bf: 'Skein1024-760',\n 0xb3c0: 'Skein1024-768',\n 0xb3c1: 'Skein1024-776',\n 0xb3c2: 'Skein1024-784',\n 0xb3c3: 'Skein1024-792',\n 0xb3c4: 'Skein1024-800',\n 0xb3c5: 'Skein1024-808',\n 0xb3c6: 'Skein1024-816',\n 0xb3c7: 'Skein1024-824',\n 0xb3c8: 'Skein1024-832',\n 0xb3c9: 'Skein1024-840',\n 0xb3ca: 'Skein1024-848',\n 0xb3cb: 'Skein1024-856',\n 0xb3cc: 'Skein1024-864',\n 0xb3cd: 'Skein1024-872',\n 0xb3ce: 'Skein1024-880',\n 0xb3cf: 'Skein1024-888',\n 0xb3d0: 'Skein1024-896',\n 0xb3d1: 'Skein1024-904',\n 0xb3d2: 'Skein1024-912',\n 0xb3d3: 'Skein1024-920',\n 0xb3d4: 'Skein1024-928',\n 0xb3d5: 'Skein1024-936',\n 0xb3d6: 'Skein1024-944',\n 0xb3d7: 'Skein1024-952',\n 0xb3d8: 'Skein1024-960',\n 0xb3d9: 'Skein1024-968',\n 0xb3da: 'Skein1024-976',\n 0xb3db: 'Skein1024-984',\n 0xb3dc: 'Skein1024-992',\n 0xb3dd: 'Skein1024-1000',\n 0xb3de: 'Skein1024-1008',\n 0xb3df: 'Skein1024-1016',\n 0xb3e0: 'Skein1024-1024'\n})\n\nexports.defaultLengths = Object.freeze({\n 0x11: 20,\n 0x12: 32,\n 0x13: 64,\n 0x56: 32,\n 0x17: 28,\n 0x16: 32,\n 0x15: 48,\n 0x14: 64,\n 0x18: 32,\n 0x19: 64,\n 0x1A: 28,\n 0x1B: 32,\n 0x1C: 48,\n 0x1D: 64,\n 0x22: 32,\n\n 0xb201: 0x01,\n 0xb202: 0x02,\n 0xb203: 0x03,\n 0xb204: 0x04,\n 0xb205: 0x05,\n 0xb206: 0x06,\n 0xb207: 0x07,\n 0xb208: 0x08,\n 0xb209: 0x09,\n 0xb20a: 0x0a,\n 0xb20b: 0x0b,\n 0xb20c: 0x0c,\n 0xb20d: 0x0d,\n 0xb20e: 0x0e,\n 0xb20f: 0x0f,\n 0xb210: 0x10,\n 0xb211: 0x11,\n 0xb212: 0x12,\n 0xb213: 0x13,\n 0xb214: 0x14,\n 0xb215: 0x15,\n 0xb216: 0x16,\n 0xb217: 0x17,\n 0xb218: 0x18,\n 0xb219: 0x19,\n 0xb21a: 0x1a,\n 0xb21b: 0x1b,\n 0xb21c: 0x1c,\n 0xb21d: 0x1d,\n 0xb21e: 0x1e,\n 0xb21f: 0x1f,\n 0xb220: 0x20,\n 0xb221: 0x21,\n 0xb222: 0x22,\n 0xb223: 0x23,\n 0xb224: 0x24,\n 0xb225: 0x25,\n 0xb226: 0x26,\n 0xb227: 0x27,\n 0xb228: 0x28,\n 0xb229: 0x29,\n 0xb22a: 0x2a,\n 0xb22b: 0x2b,\n 0xb22c: 0x2c,\n 0xb22d: 0x2d,\n 0xb22e: 0x2e,\n 0xb22f: 0x2f,\n 0xb230: 0x30,\n 0xb231: 0x31,\n 0xb232: 0x32,\n 0xb233: 0x33,\n 0xb234: 0x34,\n 0xb235: 0x35,\n 0xb236: 0x36,\n 0xb237: 0x37,\n 0xb238: 0x38,\n 0xb239: 0x39,\n 0xb23a: 0x3a,\n 0xb23b: 0x3b,\n 0xb23c: 0x3c,\n 0xb23d: 0x3d,\n 0xb23e: 0x3e,\n 0xb23f: 0x3f,\n 0xb240: 0x40,\n 0xb241: 0x01,\n 0xb242: 0x02,\n 0xb243: 0x03,\n 0xb244: 0x04,\n 0xb245: 0x05,\n 0xb246: 0x06,\n 0xb247: 0x07,\n 0xb248: 0x08,\n 0xb249: 0x09,\n 0xb24a: 0x0a,\n 0xb24b: 0x0b,\n 0xb24c: 0x0c,\n 0xb24d: 0x0d,\n 0xb24e: 0x0e,\n 0xb24f: 0x0f,\n 0xb250: 0x10,\n 0xb251: 0x11,\n 0xb252: 0x12,\n 0xb253: 0x13,\n 0xb254: 0x14,\n 0xb255: 0x15,\n 0xb256: 0x16,\n 0xb257: 0x17,\n 0xb258: 0x18,\n 0xb259: 0x19,\n 0xb25a: 0x1a,\n 0xb25b: 0x1b,\n 0xb25c: 0x1c,\n 0xb25d: 0x1d,\n 0xb25e: 0x1e,\n 0xb25f: 0x1f,\n 0xb260: 0x20,\n 0xb301: 0x01,\n 0xb302: 0x02,\n 0xb303: 0x03,\n 0xb304: 0x04,\n 0xb305: 0x05,\n 0xb306: 0x06,\n 0xb307: 0x07,\n 0xb308: 0x08,\n 0xb309: 0x09,\n 0xb30a: 0x0a,\n 0xb30b: 0x0b,\n 0xb30c: 0x0c,\n 0xb30d: 0x0d,\n 0xb30e: 0x0e,\n 0xb30f: 0x0f,\n 0xb310: 0x10,\n 0xb311: 0x11,\n 0xb312: 0x12,\n 0xb313: 0x13,\n 0xb314: 0x14,\n 0xb315: 0x15,\n 0xb316: 0x16,\n 0xb317: 0x17,\n 0xb318: 0x18,\n 0xb319: 0x19,\n 0xb31a: 0x1a,\n 0xb31b: 0x1b,\n 0xb31c: 0x1c,\n 0xb31d: 0x1d,\n 0xb31e: 0x1e,\n 0xb31f: 0x1f,\n 0xb320: 0x20,\n 0xb321: 0x01,\n 0xb322: 0x02,\n 0xb323: 0x03,\n 0xb324: 0x04,\n 0xb325: 0x05,\n 0xb326: 0x06,\n 0xb327: 0x07,\n 0xb328: 0x08,\n 0xb329: 0x09,\n 0xb32a: 0x0a,\n 0xb32b: 0x0b,\n 0xb32c: 0x0c,\n 0xb32d: 0x0d,\n 0xb32e: 0x0e,\n 0xb32f: 0x0f,\n 0xb330: 0x10,\n 0xb331: 0x11,\n 0xb332: 0x12,\n 0xb333: 0x13,\n 0xb334: 0x14,\n 0xb335: 0x15,\n 0xb336: 0x16,\n 0xb337: 0x17,\n 0xb338: 0x18,\n 0xb339: 0x19,\n 0xb33a: 0x1a,\n 0xb33b: 0x1b,\n 0xb33c: 0x1c,\n 0xb33d: 0x1d,\n 0xb33e: 0x1e,\n 0xb33f: 0x1f,\n 0xb340: 0x20,\n 0xb341: 0x21,\n 0xb342: 0x22,\n 0xb343: 0x23,\n 0xb344: 0x24,\n 0xb345: 0x25,\n 0xb346: 0x26,\n 0xb347: 0x27,\n 0xb348: 0x28,\n 0xb349: 0x29,\n 0xb34a: 0x2a,\n 0xb34b: 0x2b,\n 0xb34c: 0x2c,\n 0xb34d: 0x2d,\n 0xb34e: 0x2e,\n 0xb34f: 0x2f,\n 0xb350: 0x30,\n 0xb351: 0x31,\n 0xb352: 0x32,\n 0xb353: 0x33,\n 0xb354: 0x34,\n 0xb355: 0x35,\n 0xb356: 0x36,\n 0xb357: 0x37,\n 0xb358: 0x38,\n 0xb359: 0x39,\n 0xb35a: 0x3a,\n 0xb35b: 0x3b,\n 0xb35c: 0x3c,\n 0xb35d: 0x3d,\n 0xb35e: 0x3e,\n 0xb35f: 0x3f,\n 0xb360: 0x40,\n 0xb361: 0x01,\n 0xb362: 0x02,\n 0xb363: 0x03,\n 0xb364: 0x04,\n 0xb365: 0x05,\n 0xb366: 0x06,\n 0xb367: 0x07,\n 0xb368: 0x08,\n 0xb369: 0x09,\n 0xb36a: 0x0a,\n 0xb36b: 0x0b,\n 0xb36c: 0x0c,\n 0xb36d: 0x0d,\n 0xb36e: 0x0e,\n 0xb36f: 0x0f,\n 0xb370: 0x10,\n 0xb371: 0x11,\n 0xb372: 0x12,\n 0xb373: 0x13,\n 0xb374: 0x14,\n 0xb375: 0x15,\n 0xb376: 0x16,\n 0xb377: 0x17,\n 0xb378: 0x18,\n 0xb379: 0x19,\n 0xb37a: 0x1a,\n 0xb37b: 0x1b,\n 0xb37c: 0x1c,\n 0xb37d: 0x1d,\n 0xb37e: 0x1e,\n 0xb37f: 0x1f,\n 0xb380: 0x20,\n 0xb381: 0x21,\n 0xb382: 0x22,\n 0xb383: 0x23,\n 0xb384: 0x24,\n 0xb385: 0x25,\n 0xb386: 0x26,\n 0xb387: 0x27,\n 0xb388: 0x28,\n 0xb389: 0x29,\n 0xb38a: 0x2a,\n 0xb38b: 0x2b,\n 0xb38c: 0x2c,\n 0xb38d: 0x2d,\n 0xb38e: 0x2e,\n 0xb38f: 0x2f,\n 0xb390: 0x30,\n 0xb391: 0x31,\n 0xb392: 0x32,\n 0xb393: 0x33,\n 0xb394: 0x34,\n 0xb395: 0x35,\n 0xb396: 0x36,\n 0xb397: 0x37,\n 0xb398: 0x38,\n 0xb399: 0x39,\n 0xb39a: 0x3a,\n 0xb39b: 0x3b,\n 0xb39c: 0x3c,\n 0xb39d: 0x3d,\n 0xb39e: 0x3e,\n 0xb39f: 0x3f,\n 0xb3a0: 0x40,\n 0xb3a1: 0x41,\n 0xb3a2: 0x42,\n 0xb3a3: 0x43,\n 0xb3a4: 0x44,\n 0xb3a5: 0x45,\n 0xb3a6: 0x46,\n 0xb3a7: 0x47,\n 0xb3a8: 0x48,\n 0xb3a9: 0x49,\n 0xb3aa: 0x4a,\n 0xb3ab: 0x4b,\n 0xb3ac: 0x4c,\n 0xb3ad: 0x4d,\n 0xb3ae: 0x4e,\n 0xb3af: 0x4f,\n 0xb3b0: 0x50,\n 0xb3b1: 0x51,\n 0xb3b2: 0x52,\n 0xb3b3: 0x53,\n 0xb3b4: 0x54,\n 0xb3b5: 0x55,\n 0xb3b6: 0x56,\n 0xb3b7: 0x57,\n 0xb3b8: 0x58,\n 0xb3b9: 0x59,\n 0xb3ba: 0x5a,\n 0xb3bb: 0x5b,\n 0xb3bc: 0x5c,\n 0xb3bd: 0x5d,\n 0xb3be: 0x5e,\n 0xb3bf: 0x5f,\n 0xb3c0: 0x60,\n 0xb3c1: 0x61,\n 0xb3c2: 0x62,\n 0xb3c3: 0x63,\n 0xb3c4: 0x64,\n 0xb3c5: 0x65,\n 0xb3c6: 0x66,\n 0xb3c7: 0x67,\n 0xb3c8: 0x68,\n 0xb3c9: 0x69,\n 0xb3ca: 0x6a,\n 0xb3cb: 0x6b,\n 0xb3cc: 0x6c,\n 0xb3cd: 0x6d,\n 0xb3ce: 0x6e,\n 0xb3cf: 0x6f,\n 0xb3d0: 0x70,\n 0xb3d1: 0x71,\n 0xb3d2: 0x72,\n 0xb3d3: 0x73,\n 0xb3d4: 0x74,\n 0xb3d5: 0x75,\n 0xb3d6: 0x76,\n 0xb3d7: 0x77,\n 0xb3d8: 0x78,\n 0xb3d9: 0x79,\n 0xb3da: 0x7a,\n 0xb3db: 0x7b,\n 0xb3dc: 0x7c,\n 0xb3dd: 0x7d,\n 0xb3de: 0x7e,\n 0xb3df: 0x7f,\n 0xb3e0: 0x80\n})\n","/**\n * Multihash implementation in JavaScript.\n *\n * @module multihash\n */\n'use strict'\n\nconst { Buffer } = require('buffer')\nconst multibase = require('multibase')\nconst varint = require('varint')\nconst cs = require('./constants')\n\nexports.names = cs.names\nexports.codes = cs.codes\nexports.defaultLengths = cs.defaultLengths\n\n/**\n * Convert the given multihash to a hex encoded string.\n *\n * @param {Buffer} hash\n * @returns {string}\n */\nexports.toHexString = function toHexString (hash) {\n if (!Buffer.isBuffer(hash)) {\n throw new Error('must be passed a buffer')\n }\n\n return hash.toString('hex')\n}\n\n/**\n * Convert the given hex encoded string to a multihash.\n *\n * @param {string} hash\n * @returns {Buffer}\n */\nexports.fromHexString = function fromHexString (hash) {\n return Buffer.from(hash, 'hex')\n}\n\n/**\n * Convert the given multihash to a base58 encoded string.\n *\n * @param {Buffer} hash\n * @returns {string}\n */\nexports.toB58String = function toB58String (hash) {\n if (!Buffer.isBuffer(hash)) {\n throw new Error('must be passed a buffer')\n }\n\n return multibase.encode('base58btc', hash).toString().slice(1)\n}\n\n/**\n * Convert the given base58 encoded string to a multihash.\n *\n * @param {string|Buffer} hash\n * @returns {Buffer}\n */\nexports.fromB58String = function fromB58String (hash) {\n let encoded = hash\n if (Buffer.isBuffer(hash)) {\n encoded = hash.toString()\n }\n\n return multibase.decode('z' + encoded)\n}\n\n/**\n * Decode a hash from the given multihash.\n *\n * @param {Buffer} buf\n * @returns {{code: number, name: string, length: number, digest: Buffer}} result\n */\nexports.decode = function decode (buf) {\n if (!(Buffer.isBuffer(buf))) {\n throw new Error('multihash must be a Buffer')\n }\n\n if (buf.length < 2) {\n throw new Error('multihash too short. must be > 2 bytes.')\n }\n\n const code = varint.decode(buf)\n if (!exports.isValidCode(code)) {\n throw new Error(`multihash unknown function code: 0x${code.toString(16)}`)\n }\n buf = buf.slice(varint.decode.bytes)\n\n const len = varint.decode(buf)\n if (len < 0) {\n throw new Error(`multihash invalid length: ${len}`)\n }\n buf = buf.slice(varint.decode.bytes)\n\n if (buf.length !== len) {\n throw new Error(`multihash length inconsistent: 0x${buf.toString('hex')}`)\n }\n\n return {\n code: code,\n name: cs.codes[code],\n length: len,\n digest: buf\n }\n}\n\n/**\n * Encode a hash digest along with the specified function code.\n *\n * > **Note:** the length is derived from the length of the digest itself.\n *\n * @param {Buffer} digest\n * @param {string|number} code\n * @param {number} [length]\n * @returns {Buffer}\n */\nexports.encode = function encode (digest, code, length) {\n if (!digest || code === undefined) {\n throw new Error('multihash encode requires at least two args: digest, code')\n }\n\n // ensure it's a hashfunction code.\n const hashfn = exports.coerceCode(code)\n\n if (!(Buffer.isBuffer(digest))) {\n throw new Error('digest should be a Buffer')\n }\n\n if (length == null) {\n length = digest.length\n }\n\n if (length && digest.length !== length) {\n throw new Error('digest length should be equal to specified length.')\n }\n\n return Buffer.concat([\n Buffer.from(varint.encode(hashfn)),\n Buffer.from(varint.encode(length)),\n digest\n ])\n}\n\n/**\n * Converts a hash function name into the matching code.\n * If passed a number it will return the number if it's a valid code.\n * @param {string|number} name\n * @returns {number}\n */\nexports.coerceCode = function coerceCode (name) {\n let code = name\n\n if (typeof name === 'string') {\n if (cs.names[name] === undefined) {\n throw new Error(`Unrecognized hash function named: ${name}`)\n }\n code = cs.names[name]\n }\n\n if (typeof code !== 'number') {\n throw new Error(`Hash function code should be a number. Got: ${code}`)\n }\n\n if (cs.codes[code] === undefined && !exports.isAppCode(code)) {\n throw new Error(`Unrecognized function code: ${code}`)\n }\n\n return code\n}\n\n/**\n * Checks wether a code is part of the app range\n *\n * @param {number} code\n * @returns {boolean}\n */\nexports.isAppCode = function appCode (code) {\n return code > 0 && code < 0x10\n}\n\n/**\n * Checks whether a multihash code is valid.\n *\n * @param {number} code\n * @returns {boolean}\n */\nexports.isValidCode = function validCode (code) {\n if (exports.isAppCode(code)) {\n return true\n }\n\n if (cs.codes[code]) {\n return true\n }\n\n return false\n}\n\n/**\n * Check if the given buffer is a valid multihash. Throws an error if it is not valid.\n *\n * @param {Buffer} multihash\n * @returns {undefined}\n * @throws {Error}\n */\nfunction validate (multihash) {\n exports.decode(multihash) // throws if bad.\n}\nexports.validate = validate\n\n/**\n * Returns a prefix from a valid multihash. Throws an error if it is not valid.\n *\n * @param {Buffer} multihash\n * @returns {undefined}\n * @throws {Error}\n */\nexports.prefix = function prefix (multihash) {\n validate(multihash)\n\n return multihash.slice(0, 2)\n}\n","(function (module, exports) {\n 'use strict';\n\n // Utils\n function assert (val, msg) {\n if (!val) throw new Error(msg || 'Assertion failed');\n }\n\n // Could use `inherits` module, but don't want to move from single file\n // architecture yet.\n function inherits (ctor, superCtor) {\n ctor.super_ = superCtor;\n var TempCtor = function () {};\n TempCtor.prototype = superCtor.prototype;\n ctor.prototype = new TempCtor();\n ctor.prototype.constructor = ctor;\n }\n\n // BN\n\n function BN (number, base, endian) {\n if (BN.isBN(number)) {\n return number;\n }\n\n this.negative = 0;\n this.words = null;\n this.length = 0;\n\n // Reduction context\n this.red = null;\n\n if (number !== null) {\n if (base === 'le' || base === 'be') {\n endian = base;\n base = 10;\n }\n\n this._init(number || 0, base || 10, endian || 'be');\n }\n }\n if (typeof module === 'object') {\n module.exports = BN;\n } else {\n exports.BN = BN;\n }\n\n BN.BN = BN;\n BN.wordSize = 26;\n\n var Buffer;\n try {\n Buffer = require('buf' + 'fer').Buffer;\n } catch (e) {\n }\n\n BN.isBN = function isBN (num) {\n if (num instanceof BN) {\n return true;\n }\n\n return num !== null && typeof num === 'object' &&\n num.constructor.wordSize === BN.wordSize && Array.isArray(num.words);\n };\n\n BN.max = function max (left, right) {\n if (left.cmp(right) > 0) return left;\n return right;\n };\n\n BN.min = function min (left, right) {\n if (left.cmp(right) < 0) return left;\n return right;\n };\n\n BN.prototype._init = function init (number, base, endian) {\n if (typeof number === 'number') {\n return this._initNumber(number, base, endian);\n }\n\n if (typeof number === 'object') {\n return this._initArray(number, base, endian);\n }\n\n if (base === 'hex') {\n base = 16;\n }\n assert(base === (base | 0) && base >= 2 && base <= 36);\n\n number = number.toString().replace(/\\s+/g, '');\n var start = 0;\n if (number[0] === '-') {\n start++;\n }\n\n if (base === 16) {\n this._parseHex(number, start);\n } else {\n this._parseBase(number, base, start);\n }\n\n if (number[0] === '-') {\n this.negative = 1;\n }\n\n this.strip();\n\n if (endian !== 'le') return;\n\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initNumber = function _initNumber (number, base, endian) {\n if (number < 0) {\n this.negative = 1;\n number = -number;\n }\n if (number < 0x4000000) {\n this.words = [ number & 0x3ffffff ];\n this.length = 1;\n } else if (number < 0x10000000000000) {\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff\n ];\n this.length = 2;\n } else {\n assert(number < 0x20000000000000); // 2 ^ 53 (unsafe)\n this.words = [\n number & 0x3ffffff,\n (number / 0x4000000) & 0x3ffffff,\n 1\n ];\n this.length = 3;\n }\n\n if (endian !== 'le') return;\n\n // Reverse the bytes\n this._initArray(this.toArray(), base, endian);\n };\n\n BN.prototype._initArray = function _initArray (number, base, endian) {\n // Perhaps a Uint8Array\n assert(typeof number.length === 'number');\n if (number.length <= 0) {\n this.words = [ 0 ];\n this.length = 1;\n return this;\n }\n\n this.length = Math.ceil(number.length / 3);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n var off = 0;\n if (endian === 'be') {\n for (i = number.length - 1, j = 0; i >= 0; i -= 3) {\n w = number[i] | (number[i - 1] << 8) | (number[i - 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n } else if (endian === 'le') {\n for (i = 0, j = 0; i < number.length; i += 3) {\n w = number[i] | (number[i + 1] << 8) | (number[i + 2] << 16);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] = (w >>> (26 - off)) & 0x3ffffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n }\n return this.strip();\n };\n\n function parseHex (str, start, end) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r <<= 4;\n\n // 'a' - 'f'\n if (c >= 49 && c <= 54) {\n r |= c - 49 + 0xa;\n\n // 'A' - 'F'\n } else if (c >= 17 && c <= 22) {\n r |= c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r |= c & 0xf;\n }\n }\n return r;\n }\n\n BN.prototype._parseHex = function _parseHex (number, start) {\n // Create possibly bigger array to ensure that it fits the number\n this.length = Math.ceil((number.length - start) / 6);\n this.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n this.words[i] = 0;\n }\n\n var j, w;\n // Scan 24-bit chunks and add them to the number\n var off = 0;\n for (i = number.length - 6, j = 0; i >= start; i -= 6) {\n w = parseHex(number, i, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n // NOTE: `0x3fffff` is intentional here, 26bits max shift + 24bit hex limb\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n off += 24;\n if (off >= 26) {\n off -= 26;\n j++;\n }\n }\n if (i + 6 !== start) {\n w = parseHex(number, start, i + 6);\n this.words[j] |= (w << off) & 0x3ffffff;\n this.words[j + 1] |= w >>> (26 - off) & 0x3fffff;\n }\n this.strip();\n };\n\n function parseBase (str, start, end, mul) {\n var r = 0;\n var len = Math.min(str.length, end);\n for (var i = start; i < len; i++) {\n var c = str.charCodeAt(i) - 48;\n\n r *= mul;\n\n // 'a'\n if (c >= 49) {\n r += c - 49 + 0xa;\n\n // 'A'\n } else if (c >= 17) {\n r += c - 17 + 0xa;\n\n // '0' - '9'\n } else {\n r += c;\n }\n }\n return r;\n }\n\n BN.prototype._parseBase = function _parseBase (number, base, start) {\n // Initialize as zero\n this.words = [ 0 ];\n this.length = 1;\n\n // Find length of limb in base\n for (var limbLen = 0, limbPow = 1; limbPow <= 0x3ffffff; limbPow *= base) {\n limbLen++;\n }\n limbLen--;\n limbPow = (limbPow / base) | 0;\n\n var total = number.length - start;\n var mod = total % limbLen;\n var end = Math.min(total, total - mod) + start;\n\n var word = 0;\n for (var i = start; i < end; i += limbLen) {\n word = parseBase(number, i, i + limbLen, base);\n\n this.imuln(limbPow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n\n if (mod !== 0) {\n var pow = 1;\n word = parseBase(number, i, number.length, base);\n\n for (i = 0; i < mod; i++) {\n pow *= base;\n }\n\n this.imuln(pow);\n if (this.words[0] + word < 0x4000000) {\n this.words[0] += word;\n } else {\n this._iaddn(word);\n }\n }\n };\n\n BN.prototype.copy = function copy (dest) {\n dest.words = new Array(this.length);\n for (var i = 0; i < this.length; i++) {\n dest.words[i] = this.words[i];\n }\n dest.length = this.length;\n dest.negative = this.negative;\n dest.red = this.red;\n };\n\n BN.prototype.clone = function clone () {\n var r = new BN(null);\n this.copy(r);\n return r;\n };\n\n BN.prototype._expand = function _expand (size) {\n while (this.length < size) {\n this.words[this.length++] = 0;\n }\n return this;\n };\n\n // Remove leading `0` from `this`\n BN.prototype.strip = function strip () {\n while (this.length > 1 && this.words[this.length - 1] === 0) {\n this.length--;\n }\n return this._normSign();\n };\n\n BN.prototype._normSign = function _normSign () {\n // -0 = 0\n if (this.length === 1 && this.words[0] === 0) {\n this.negative = 0;\n }\n return this;\n };\n\n BN.prototype.inspect = function inspect () {\n return (this.red ? '';\n };\n\n /*\n\n var zeros = [];\n var groupSizes = [];\n var groupBases = [];\n\n var s = '';\n var i = -1;\n while (++i < BN.wordSize) {\n zeros[i] = s;\n s += '0';\n }\n groupSizes[0] = 0;\n groupSizes[1] = 0;\n groupBases[0] = 0;\n groupBases[1] = 0;\n var base = 2 - 1;\n while (++base < 36 + 1) {\n var groupSize = 0;\n var groupBase = 1;\n while (groupBase < (1 << BN.wordSize) / base) {\n groupBase *= base;\n groupSize += 1;\n }\n groupSizes[base] = groupSize;\n groupBases[base] = groupBase;\n }\n\n */\n\n var zeros = [\n '',\n '0',\n '00',\n '000',\n '0000',\n '00000',\n '000000',\n '0000000',\n '00000000',\n '000000000',\n '0000000000',\n '00000000000',\n '000000000000',\n '0000000000000',\n '00000000000000',\n '000000000000000',\n '0000000000000000',\n '00000000000000000',\n '000000000000000000',\n '0000000000000000000',\n '00000000000000000000',\n '000000000000000000000',\n '0000000000000000000000',\n '00000000000000000000000',\n '000000000000000000000000',\n '0000000000000000000000000'\n ];\n\n var groupSizes = [\n 0, 0,\n 25, 16, 12, 11, 10, 9, 8,\n 8, 7, 7, 7, 7, 6, 6,\n 6, 6, 6, 6, 6, 5, 5,\n 5, 5, 5, 5, 5, 5, 5,\n 5, 5, 5, 5, 5, 5, 5\n ];\n\n var groupBases = [\n 0, 0,\n 33554432, 43046721, 16777216, 48828125, 60466176, 40353607, 16777216,\n 43046721, 10000000, 19487171, 35831808, 62748517, 7529536, 11390625,\n 16777216, 24137569, 34012224, 47045881, 64000000, 4084101, 5153632,\n 6436343, 7962624, 9765625, 11881376, 14348907, 17210368, 20511149,\n 24300000, 28629151, 33554432, 39135393, 45435424, 52521875, 60466176\n ];\n\n BN.prototype.toString = function toString (base, padding) {\n base = base || 10;\n padding = padding | 0 || 1;\n\n var out;\n if (base === 16 || base === 'hex') {\n out = '';\n var off = 0;\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = this.words[i];\n var word = (((w << off) | carry) & 0xffffff).toString(16);\n carry = (w >>> (24 - off)) & 0xffffff;\n if (carry !== 0 || i !== this.length - 1) {\n out = zeros[6 - word.length] + word + out;\n } else {\n out = word + out;\n }\n off += 2;\n if (off >= 26) {\n off -= 26;\n i--;\n }\n }\n if (carry !== 0) {\n out = carry.toString(16) + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n if (base === (base | 0) && base >= 2 && base <= 36) {\n // var groupSize = Math.floor(BN.wordSize * Math.LN2 / Math.log(base));\n var groupSize = groupSizes[base];\n // var groupBase = Math.pow(base, groupSize);\n var groupBase = groupBases[base];\n out = '';\n var c = this.clone();\n c.negative = 0;\n while (!c.isZero()) {\n var r = c.modn(groupBase).toString(base);\n c = c.idivn(groupBase);\n\n if (!c.isZero()) {\n out = zeros[groupSize - r.length] + r + out;\n } else {\n out = r + out;\n }\n }\n if (this.isZero()) {\n out = '0' + out;\n }\n while (out.length % padding !== 0) {\n out = '0' + out;\n }\n if (this.negative !== 0) {\n out = '-' + out;\n }\n return out;\n }\n\n assert(false, 'Base should be between 2 and 36');\n };\n\n BN.prototype.toNumber = function toNumber () {\n var ret = this.words[0];\n if (this.length === 2) {\n ret += this.words[1] * 0x4000000;\n } else if (this.length === 3 && this.words[2] === 0x01) {\n // NOTE: at this stage it is known that the top bit is set\n ret += 0x10000000000000 + (this.words[1] * 0x4000000);\n } else if (this.length > 2) {\n assert(false, 'Number can only safely store up to 53 bits');\n }\n return (this.negative !== 0) ? -ret : ret;\n };\n\n BN.prototype.toJSON = function toJSON () {\n return this.toString(16);\n };\n\n BN.prototype.toBuffer = function toBuffer (endian, length) {\n assert(typeof Buffer !== 'undefined');\n return this.toArrayLike(Buffer, endian, length);\n };\n\n BN.prototype.toArray = function toArray (endian, length) {\n return this.toArrayLike(Array, endian, length);\n };\n\n BN.prototype.toArrayLike = function toArrayLike (ArrayType, endian, length) {\n var byteLength = this.byteLength();\n var reqLength = length || Math.max(1, byteLength);\n assert(byteLength <= reqLength, 'byte array longer than desired length');\n assert(reqLength > 0, 'Requested array length <= 0');\n\n this.strip();\n var littleEndian = endian === 'le';\n var res = new ArrayType(reqLength);\n\n var b, i;\n var q = this.clone();\n if (!littleEndian) {\n // Assume big-endian\n for (i = 0; i < reqLength - byteLength; i++) {\n res[i] = 0;\n }\n\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[reqLength - i - 1] = b;\n }\n } else {\n for (i = 0; !q.isZero(); i++) {\n b = q.andln(0xff);\n q.iushrn(8);\n\n res[i] = b;\n }\n\n for (; i < reqLength; i++) {\n res[i] = 0;\n }\n }\n\n return res;\n };\n\n if (Math.clz32) {\n BN.prototype._countBits = function _countBits (w) {\n return 32 - Math.clz32(w);\n };\n } else {\n BN.prototype._countBits = function _countBits (w) {\n var t = w;\n var r = 0;\n if (t >= 0x1000) {\n r += 13;\n t >>>= 13;\n }\n if (t >= 0x40) {\n r += 7;\n t >>>= 7;\n }\n if (t >= 0x8) {\n r += 4;\n t >>>= 4;\n }\n if (t >= 0x02) {\n r += 2;\n t >>>= 2;\n }\n return r + t;\n };\n }\n\n BN.prototype._zeroBits = function _zeroBits (w) {\n // Short-cut\n if (w === 0) return 26;\n\n var t = w;\n var r = 0;\n if ((t & 0x1fff) === 0) {\n r += 13;\n t >>>= 13;\n }\n if ((t & 0x7f) === 0) {\n r += 7;\n t >>>= 7;\n }\n if ((t & 0xf) === 0) {\n r += 4;\n t >>>= 4;\n }\n if ((t & 0x3) === 0) {\n r += 2;\n t >>>= 2;\n }\n if ((t & 0x1) === 0) {\n r++;\n }\n return r;\n };\n\n // Return number of used bits in a BN\n BN.prototype.bitLength = function bitLength () {\n var w = this.words[this.length - 1];\n var hi = this._countBits(w);\n return (this.length - 1) * 26 + hi;\n };\n\n function toBitArray (num) {\n var w = new Array(num.bitLength());\n\n for (var bit = 0; bit < w.length; bit++) {\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n w[bit] = (num.words[off] & (1 << wbit)) >>> wbit;\n }\n\n return w;\n }\n\n // Number of trailing zero bits\n BN.prototype.zeroBits = function zeroBits () {\n if (this.isZero()) return 0;\n\n var r = 0;\n for (var i = 0; i < this.length; i++) {\n var b = this._zeroBits(this.words[i]);\n r += b;\n if (b !== 26) break;\n }\n return r;\n };\n\n BN.prototype.byteLength = function byteLength () {\n return Math.ceil(this.bitLength() / 8);\n };\n\n BN.prototype.toTwos = function toTwos (width) {\n if (this.negative !== 0) {\n return this.abs().inotn(width).iaddn(1);\n }\n return this.clone();\n };\n\n BN.prototype.fromTwos = function fromTwos (width) {\n if (this.testn(width - 1)) {\n return this.notn(width).iaddn(1).ineg();\n }\n return this.clone();\n };\n\n BN.prototype.isNeg = function isNeg () {\n return this.negative !== 0;\n };\n\n // Return negative clone of `this`\n BN.prototype.neg = function neg () {\n return this.clone().ineg();\n };\n\n BN.prototype.ineg = function ineg () {\n if (!this.isZero()) {\n this.negative ^= 1;\n }\n\n return this;\n };\n\n // Or `num` with `this` in-place\n BN.prototype.iuor = function iuor (num) {\n while (this.length < num.length) {\n this.words[this.length++] = 0;\n }\n\n for (var i = 0; i < num.length; i++) {\n this.words[i] = this.words[i] | num.words[i];\n }\n\n return this.strip();\n };\n\n BN.prototype.ior = function ior (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuor(num);\n };\n\n // Or `num` with `this`\n BN.prototype.or = function or (num) {\n if (this.length > num.length) return this.clone().ior(num);\n return num.clone().ior(this);\n };\n\n BN.prototype.uor = function uor (num) {\n if (this.length > num.length) return this.clone().iuor(num);\n return num.clone().iuor(this);\n };\n\n // And `num` with `this` in-place\n BN.prototype.iuand = function iuand (num) {\n // b = min-length(num, this)\n var b;\n if (this.length > num.length) {\n b = num;\n } else {\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = this.words[i] & num.words[i];\n }\n\n this.length = b.length;\n\n return this.strip();\n };\n\n BN.prototype.iand = function iand (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuand(num);\n };\n\n // And `num` with `this`\n BN.prototype.and = function and (num) {\n if (this.length > num.length) return this.clone().iand(num);\n return num.clone().iand(this);\n };\n\n BN.prototype.uand = function uand (num) {\n if (this.length > num.length) return this.clone().iuand(num);\n return num.clone().iuand(this);\n };\n\n // Xor `num` with `this` in-place\n BN.prototype.iuxor = function iuxor (num) {\n // a.length > b.length\n var a;\n var b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n for (var i = 0; i < b.length; i++) {\n this.words[i] = a.words[i] ^ b.words[i];\n }\n\n if (this !== a) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = a.length;\n\n return this.strip();\n };\n\n BN.prototype.ixor = function ixor (num) {\n assert((this.negative | num.negative) === 0);\n return this.iuxor(num);\n };\n\n // Xor `num` with `this`\n BN.prototype.xor = function xor (num) {\n if (this.length > num.length) return this.clone().ixor(num);\n return num.clone().ixor(this);\n };\n\n BN.prototype.uxor = function uxor (num) {\n if (this.length > num.length) return this.clone().iuxor(num);\n return num.clone().iuxor(this);\n };\n\n // Not ``this`` with ``width`` bitwidth\n BN.prototype.inotn = function inotn (width) {\n assert(typeof width === 'number' && width >= 0);\n\n var bytesNeeded = Math.ceil(width / 26) | 0;\n var bitsLeft = width % 26;\n\n // Extend the buffer with leading zeroes\n this._expand(bytesNeeded);\n\n if (bitsLeft > 0) {\n bytesNeeded--;\n }\n\n // Handle complete words\n for (var i = 0; i < bytesNeeded; i++) {\n this.words[i] = ~this.words[i] & 0x3ffffff;\n }\n\n // Handle the residue\n if (bitsLeft > 0) {\n this.words[i] = ~this.words[i] & (0x3ffffff >> (26 - bitsLeft));\n }\n\n // And remove leading zeroes\n return this.strip();\n };\n\n BN.prototype.notn = function notn (width) {\n return this.clone().inotn(width);\n };\n\n // Set `bit` of `this`\n BN.prototype.setn = function setn (bit, val) {\n assert(typeof bit === 'number' && bit >= 0);\n\n var off = (bit / 26) | 0;\n var wbit = bit % 26;\n\n this._expand(off + 1);\n\n if (val) {\n this.words[off] = this.words[off] | (1 << wbit);\n } else {\n this.words[off] = this.words[off] & ~(1 << wbit);\n }\n\n return this.strip();\n };\n\n // Add `num` to `this` in-place\n BN.prototype.iadd = function iadd (num) {\n var r;\n\n // negative + positive\n if (this.negative !== 0 && num.negative === 0) {\n this.negative = 0;\n r = this.isub(num);\n this.negative ^= 1;\n return this._normSign();\n\n // positive + negative\n } else if (this.negative === 0 && num.negative !== 0) {\n num.negative = 0;\n r = this.isub(num);\n num.negative = 1;\n return r._normSign();\n }\n\n // a.length > b.length\n var a, b;\n if (this.length > num.length) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) + (b.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n this.words[i] = r & 0x3ffffff;\n carry = r >>> 26;\n }\n\n this.length = a.length;\n if (carry !== 0) {\n this.words[this.length] = carry;\n this.length++;\n // Copy the rest of the words\n } else if (a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n return this;\n };\n\n // Add `num` to `this`\n BN.prototype.add = function add (num) {\n var res;\n if (num.negative !== 0 && this.negative === 0) {\n num.negative = 0;\n res = this.sub(num);\n num.negative ^= 1;\n return res;\n } else if (num.negative === 0 && this.negative !== 0) {\n this.negative = 0;\n res = num.sub(this);\n this.negative = 1;\n return res;\n }\n\n if (this.length > num.length) return this.clone().iadd(num);\n\n return num.clone().iadd(this);\n };\n\n // Subtract `num` from `this` in-place\n BN.prototype.isub = function isub (num) {\n // this - (-num) = this + num\n if (num.negative !== 0) {\n num.negative = 0;\n var r = this.iadd(num);\n num.negative = 1;\n return r._normSign();\n\n // -this - num = -(this + num)\n } else if (this.negative !== 0) {\n this.negative = 0;\n this.iadd(num);\n this.negative = 1;\n return this._normSign();\n }\n\n // At this point both numbers are positive\n var cmp = this.cmp(num);\n\n // Optimization - zeroify\n if (cmp === 0) {\n this.negative = 0;\n this.length = 1;\n this.words[0] = 0;\n return this;\n }\n\n // a > b\n var a, b;\n if (cmp > 0) {\n a = this;\n b = num;\n } else {\n a = num;\n b = this;\n }\n\n var carry = 0;\n for (var i = 0; i < b.length; i++) {\n r = (a.words[i] | 0) - (b.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n for (; carry !== 0 && i < a.length; i++) {\n r = (a.words[i] | 0) + carry;\n carry = r >> 26;\n this.words[i] = r & 0x3ffffff;\n }\n\n // Copy rest of the words\n if (carry === 0 && i < a.length && a !== this) {\n for (; i < a.length; i++) {\n this.words[i] = a.words[i];\n }\n }\n\n this.length = Math.max(this.length, i);\n\n if (a !== this) {\n this.negative = 1;\n }\n\n return this.strip();\n };\n\n // Subtract `num` from `this`\n BN.prototype.sub = function sub (num) {\n return this.clone().isub(num);\n };\n\n function smallMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n var len = (self.length + num.length) | 0;\n out.length = len;\n len = (len - 1) | 0;\n\n // Peel one iteration (compiler can't do it, because of code complexity)\n var a = self.words[0] | 0;\n var b = num.words[0] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n var carry = (r / 0x4000000) | 0;\n out.words[0] = lo;\n\n for (var k = 1; k < len; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = carry >>> 26;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = (k - j) | 0;\n a = self.words[i] | 0;\n b = num.words[j] | 0;\n r = a * b + rword;\n ncarry += (r / 0x4000000) | 0;\n rword = r & 0x3ffffff;\n }\n out.words[k] = rword | 0;\n carry = ncarry | 0;\n }\n if (carry !== 0) {\n out.words[k] = carry | 0;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n // TODO(indutny): it may be reasonable to omit it for users who don't need\n // to work with 256-bit numbers, otherwise it gives 20% improvement for 256-bit\n // multiplication (like elliptic secp256k1).\n var comb10MulTo = function comb10MulTo (self, num, out) {\n var a = self.words;\n var b = num.words;\n var o = out.words;\n var c = 0;\n var lo;\n var mid;\n var hi;\n var a0 = a[0] | 0;\n var al0 = a0 & 0x1fff;\n var ah0 = a0 >>> 13;\n var a1 = a[1] | 0;\n var al1 = a1 & 0x1fff;\n var ah1 = a1 >>> 13;\n var a2 = a[2] | 0;\n var al2 = a2 & 0x1fff;\n var ah2 = a2 >>> 13;\n var a3 = a[3] | 0;\n var al3 = a3 & 0x1fff;\n var ah3 = a3 >>> 13;\n var a4 = a[4] | 0;\n var al4 = a4 & 0x1fff;\n var ah4 = a4 >>> 13;\n var a5 = a[5] | 0;\n var al5 = a5 & 0x1fff;\n var ah5 = a5 >>> 13;\n var a6 = a[6] | 0;\n var al6 = a6 & 0x1fff;\n var ah6 = a6 >>> 13;\n var a7 = a[7] | 0;\n var al7 = a7 & 0x1fff;\n var ah7 = a7 >>> 13;\n var a8 = a[8] | 0;\n var al8 = a8 & 0x1fff;\n var ah8 = a8 >>> 13;\n var a9 = a[9] | 0;\n var al9 = a9 & 0x1fff;\n var ah9 = a9 >>> 13;\n var b0 = b[0] | 0;\n var bl0 = b0 & 0x1fff;\n var bh0 = b0 >>> 13;\n var b1 = b[1] | 0;\n var bl1 = b1 & 0x1fff;\n var bh1 = b1 >>> 13;\n var b2 = b[2] | 0;\n var bl2 = b2 & 0x1fff;\n var bh2 = b2 >>> 13;\n var b3 = b[3] | 0;\n var bl3 = b3 & 0x1fff;\n var bh3 = b3 >>> 13;\n var b4 = b[4] | 0;\n var bl4 = b4 & 0x1fff;\n var bh4 = b4 >>> 13;\n var b5 = b[5] | 0;\n var bl5 = b5 & 0x1fff;\n var bh5 = b5 >>> 13;\n var b6 = b[6] | 0;\n var bl6 = b6 & 0x1fff;\n var bh6 = b6 >>> 13;\n var b7 = b[7] | 0;\n var bl7 = b7 & 0x1fff;\n var bh7 = b7 >>> 13;\n var b8 = b[8] | 0;\n var bl8 = b8 & 0x1fff;\n var bh8 = b8 >>> 13;\n var b9 = b[9] | 0;\n var bl9 = b9 & 0x1fff;\n var bh9 = b9 >>> 13;\n\n out.negative = self.negative ^ num.negative;\n out.length = 19;\n /* k = 0 */\n lo = Math.imul(al0, bl0);\n mid = Math.imul(al0, bh0);\n mid = (mid + Math.imul(ah0, bl0)) | 0;\n hi = Math.imul(ah0, bh0);\n var w0 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w0 >>> 26)) | 0;\n w0 &= 0x3ffffff;\n /* k = 1 */\n lo = Math.imul(al1, bl0);\n mid = Math.imul(al1, bh0);\n mid = (mid + Math.imul(ah1, bl0)) | 0;\n hi = Math.imul(ah1, bh0);\n lo = (lo + Math.imul(al0, bl1)) | 0;\n mid = (mid + Math.imul(al0, bh1)) | 0;\n mid = (mid + Math.imul(ah0, bl1)) | 0;\n hi = (hi + Math.imul(ah0, bh1)) | 0;\n var w1 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w1 >>> 26)) | 0;\n w1 &= 0x3ffffff;\n /* k = 2 */\n lo = Math.imul(al2, bl0);\n mid = Math.imul(al2, bh0);\n mid = (mid + Math.imul(ah2, bl0)) | 0;\n hi = Math.imul(ah2, bh0);\n lo = (lo + Math.imul(al1, bl1)) | 0;\n mid = (mid + Math.imul(al1, bh1)) | 0;\n mid = (mid + Math.imul(ah1, bl1)) | 0;\n hi = (hi + Math.imul(ah1, bh1)) | 0;\n lo = (lo + Math.imul(al0, bl2)) | 0;\n mid = (mid + Math.imul(al0, bh2)) | 0;\n mid = (mid + Math.imul(ah0, bl2)) | 0;\n hi = (hi + Math.imul(ah0, bh2)) | 0;\n var w2 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w2 >>> 26)) | 0;\n w2 &= 0x3ffffff;\n /* k = 3 */\n lo = Math.imul(al3, bl0);\n mid = Math.imul(al3, bh0);\n mid = (mid + Math.imul(ah3, bl0)) | 0;\n hi = Math.imul(ah3, bh0);\n lo = (lo + Math.imul(al2, bl1)) | 0;\n mid = (mid + Math.imul(al2, bh1)) | 0;\n mid = (mid + Math.imul(ah2, bl1)) | 0;\n hi = (hi + Math.imul(ah2, bh1)) | 0;\n lo = (lo + Math.imul(al1, bl2)) | 0;\n mid = (mid + Math.imul(al1, bh2)) | 0;\n mid = (mid + Math.imul(ah1, bl2)) | 0;\n hi = (hi + Math.imul(ah1, bh2)) | 0;\n lo = (lo + Math.imul(al0, bl3)) | 0;\n mid = (mid + Math.imul(al0, bh3)) | 0;\n mid = (mid + Math.imul(ah0, bl3)) | 0;\n hi = (hi + Math.imul(ah0, bh3)) | 0;\n var w3 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w3 >>> 26)) | 0;\n w3 &= 0x3ffffff;\n /* k = 4 */\n lo = Math.imul(al4, bl0);\n mid = Math.imul(al4, bh0);\n mid = (mid + Math.imul(ah4, bl0)) | 0;\n hi = Math.imul(ah4, bh0);\n lo = (lo + Math.imul(al3, bl1)) | 0;\n mid = (mid + Math.imul(al3, bh1)) | 0;\n mid = (mid + Math.imul(ah3, bl1)) | 0;\n hi = (hi + Math.imul(ah3, bh1)) | 0;\n lo = (lo + Math.imul(al2, bl2)) | 0;\n mid = (mid + Math.imul(al2, bh2)) | 0;\n mid = (mid + Math.imul(ah2, bl2)) | 0;\n hi = (hi + Math.imul(ah2, bh2)) | 0;\n lo = (lo + Math.imul(al1, bl3)) | 0;\n mid = (mid + Math.imul(al1, bh3)) | 0;\n mid = (mid + Math.imul(ah1, bl3)) | 0;\n hi = (hi + Math.imul(ah1, bh3)) | 0;\n lo = (lo + Math.imul(al0, bl4)) | 0;\n mid = (mid + Math.imul(al0, bh4)) | 0;\n mid = (mid + Math.imul(ah0, bl4)) | 0;\n hi = (hi + Math.imul(ah0, bh4)) | 0;\n var w4 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w4 >>> 26)) | 0;\n w4 &= 0x3ffffff;\n /* k = 5 */\n lo = Math.imul(al5, bl0);\n mid = Math.imul(al5, bh0);\n mid = (mid + Math.imul(ah5, bl0)) | 0;\n hi = Math.imul(ah5, bh0);\n lo = (lo + Math.imul(al4, bl1)) | 0;\n mid = (mid + Math.imul(al4, bh1)) | 0;\n mid = (mid + Math.imul(ah4, bl1)) | 0;\n hi = (hi + Math.imul(ah4, bh1)) | 0;\n lo = (lo + Math.imul(al3, bl2)) | 0;\n mid = (mid + Math.imul(al3, bh2)) | 0;\n mid = (mid + Math.imul(ah3, bl2)) | 0;\n hi = (hi + Math.imul(ah3, bh2)) | 0;\n lo = (lo + Math.imul(al2, bl3)) | 0;\n mid = (mid + Math.imul(al2, bh3)) | 0;\n mid = (mid + Math.imul(ah2, bl3)) | 0;\n hi = (hi + Math.imul(ah2, bh3)) | 0;\n lo = (lo + Math.imul(al1, bl4)) | 0;\n mid = (mid + Math.imul(al1, bh4)) | 0;\n mid = (mid + Math.imul(ah1, bl4)) | 0;\n hi = (hi + Math.imul(ah1, bh4)) | 0;\n lo = (lo + Math.imul(al0, bl5)) | 0;\n mid = (mid + Math.imul(al0, bh5)) | 0;\n mid = (mid + Math.imul(ah0, bl5)) | 0;\n hi = (hi + Math.imul(ah0, bh5)) | 0;\n var w5 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w5 >>> 26)) | 0;\n w5 &= 0x3ffffff;\n /* k = 6 */\n lo = Math.imul(al6, bl0);\n mid = Math.imul(al6, bh0);\n mid = (mid + Math.imul(ah6, bl0)) | 0;\n hi = Math.imul(ah6, bh0);\n lo = (lo + Math.imul(al5, bl1)) | 0;\n mid = (mid + Math.imul(al5, bh1)) | 0;\n mid = (mid + Math.imul(ah5, bl1)) | 0;\n hi = (hi + Math.imul(ah5, bh1)) | 0;\n lo = (lo + Math.imul(al4, bl2)) | 0;\n mid = (mid + Math.imul(al4, bh2)) | 0;\n mid = (mid + Math.imul(ah4, bl2)) | 0;\n hi = (hi + Math.imul(ah4, bh2)) | 0;\n lo = (lo + Math.imul(al3, bl3)) | 0;\n mid = (mid + Math.imul(al3, bh3)) | 0;\n mid = (mid + Math.imul(ah3, bl3)) | 0;\n hi = (hi + Math.imul(ah3, bh3)) | 0;\n lo = (lo + Math.imul(al2, bl4)) | 0;\n mid = (mid + Math.imul(al2, bh4)) | 0;\n mid = (mid + Math.imul(ah2, bl4)) | 0;\n hi = (hi + Math.imul(ah2, bh4)) | 0;\n lo = (lo + Math.imul(al1, bl5)) | 0;\n mid = (mid + Math.imul(al1, bh5)) | 0;\n mid = (mid + Math.imul(ah1, bl5)) | 0;\n hi = (hi + Math.imul(ah1, bh5)) | 0;\n lo = (lo + Math.imul(al0, bl6)) | 0;\n mid = (mid + Math.imul(al0, bh6)) | 0;\n mid = (mid + Math.imul(ah0, bl6)) | 0;\n hi = (hi + Math.imul(ah0, bh6)) | 0;\n var w6 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w6 >>> 26)) | 0;\n w6 &= 0x3ffffff;\n /* k = 7 */\n lo = Math.imul(al7, bl0);\n mid = Math.imul(al7, bh0);\n mid = (mid + Math.imul(ah7, bl0)) | 0;\n hi = Math.imul(ah7, bh0);\n lo = (lo + Math.imul(al6, bl1)) | 0;\n mid = (mid + Math.imul(al6, bh1)) | 0;\n mid = (mid + Math.imul(ah6, bl1)) | 0;\n hi = (hi + Math.imul(ah6, bh1)) | 0;\n lo = (lo + Math.imul(al5, bl2)) | 0;\n mid = (mid + Math.imul(al5, bh2)) | 0;\n mid = (mid + Math.imul(ah5, bl2)) | 0;\n hi = (hi + Math.imul(ah5, bh2)) | 0;\n lo = (lo + Math.imul(al4, bl3)) | 0;\n mid = (mid + Math.imul(al4, bh3)) | 0;\n mid = (mid + Math.imul(ah4, bl3)) | 0;\n hi = (hi + Math.imul(ah4, bh3)) | 0;\n lo = (lo + Math.imul(al3, bl4)) | 0;\n mid = (mid + Math.imul(al3, bh4)) | 0;\n mid = (mid + Math.imul(ah3, bl4)) | 0;\n hi = (hi + Math.imul(ah3, bh4)) | 0;\n lo = (lo + Math.imul(al2, bl5)) | 0;\n mid = (mid + Math.imul(al2, bh5)) | 0;\n mid = (mid + Math.imul(ah2, bl5)) | 0;\n hi = (hi + Math.imul(ah2, bh5)) | 0;\n lo = (lo + Math.imul(al1, bl6)) | 0;\n mid = (mid + Math.imul(al1, bh6)) | 0;\n mid = (mid + Math.imul(ah1, bl6)) | 0;\n hi = (hi + Math.imul(ah1, bh6)) | 0;\n lo = (lo + Math.imul(al0, bl7)) | 0;\n mid = (mid + Math.imul(al0, bh7)) | 0;\n mid = (mid + Math.imul(ah0, bl7)) | 0;\n hi = (hi + Math.imul(ah0, bh7)) | 0;\n var w7 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w7 >>> 26)) | 0;\n w7 &= 0x3ffffff;\n /* k = 8 */\n lo = Math.imul(al8, bl0);\n mid = Math.imul(al8, bh0);\n mid = (mid + Math.imul(ah8, bl0)) | 0;\n hi = Math.imul(ah8, bh0);\n lo = (lo + Math.imul(al7, bl1)) | 0;\n mid = (mid + Math.imul(al7, bh1)) | 0;\n mid = (mid + Math.imul(ah7, bl1)) | 0;\n hi = (hi + Math.imul(ah7, bh1)) | 0;\n lo = (lo + Math.imul(al6, bl2)) | 0;\n mid = (mid + Math.imul(al6, bh2)) | 0;\n mid = (mid + Math.imul(ah6, bl2)) | 0;\n hi = (hi + Math.imul(ah6, bh2)) | 0;\n lo = (lo + Math.imul(al5, bl3)) | 0;\n mid = (mid + Math.imul(al5, bh3)) | 0;\n mid = (mid + Math.imul(ah5, bl3)) | 0;\n hi = (hi + Math.imul(ah5, bh3)) | 0;\n lo = (lo + Math.imul(al4, bl4)) | 0;\n mid = (mid + Math.imul(al4, bh4)) | 0;\n mid = (mid + Math.imul(ah4, bl4)) | 0;\n hi = (hi + Math.imul(ah4, bh4)) | 0;\n lo = (lo + Math.imul(al3, bl5)) | 0;\n mid = (mid + Math.imul(al3, bh5)) | 0;\n mid = (mid + Math.imul(ah3, bl5)) | 0;\n hi = (hi + Math.imul(ah3, bh5)) | 0;\n lo = (lo + Math.imul(al2, bl6)) | 0;\n mid = (mid + Math.imul(al2, bh6)) | 0;\n mid = (mid + Math.imul(ah2, bl6)) | 0;\n hi = (hi + Math.imul(ah2, bh6)) | 0;\n lo = (lo + Math.imul(al1, bl7)) | 0;\n mid = (mid + Math.imul(al1, bh7)) | 0;\n mid = (mid + Math.imul(ah1, bl7)) | 0;\n hi = (hi + Math.imul(ah1, bh7)) | 0;\n lo = (lo + Math.imul(al0, bl8)) | 0;\n mid = (mid + Math.imul(al0, bh8)) | 0;\n mid = (mid + Math.imul(ah0, bl8)) | 0;\n hi = (hi + Math.imul(ah0, bh8)) | 0;\n var w8 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w8 >>> 26)) | 0;\n w8 &= 0x3ffffff;\n /* k = 9 */\n lo = Math.imul(al9, bl0);\n mid = Math.imul(al9, bh0);\n mid = (mid + Math.imul(ah9, bl0)) | 0;\n hi = Math.imul(ah9, bh0);\n lo = (lo + Math.imul(al8, bl1)) | 0;\n mid = (mid + Math.imul(al8, bh1)) | 0;\n mid = (mid + Math.imul(ah8, bl1)) | 0;\n hi = (hi + Math.imul(ah8, bh1)) | 0;\n lo = (lo + Math.imul(al7, bl2)) | 0;\n mid = (mid + Math.imul(al7, bh2)) | 0;\n mid = (mid + Math.imul(ah7, bl2)) | 0;\n hi = (hi + Math.imul(ah7, bh2)) | 0;\n lo = (lo + Math.imul(al6, bl3)) | 0;\n mid = (mid + Math.imul(al6, bh3)) | 0;\n mid = (mid + Math.imul(ah6, bl3)) | 0;\n hi = (hi + Math.imul(ah6, bh3)) | 0;\n lo = (lo + Math.imul(al5, bl4)) | 0;\n mid = (mid + Math.imul(al5, bh4)) | 0;\n mid = (mid + Math.imul(ah5, bl4)) | 0;\n hi = (hi + Math.imul(ah5, bh4)) | 0;\n lo = (lo + Math.imul(al4, bl5)) | 0;\n mid = (mid + Math.imul(al4, bh5)) | 0;\n mid = (mid + Math.imul(ah4, bl5)) | 0;\n hi = (hi + Math.imul(ah4, bh5)) | 0;\n lo = (lo + Math.imul(al3, bl6)) | 0;\n mid = (mid + Math.imul(al3, bh6)) | 0;\n mid = (mid + Math.imul(ah3, bl6)) | 0;\n hi = (hi + Math.imul(ah3, bh6)) | 0;\n lo = (lo + Math.imul(al2, bl7)) | 0;\n mid = (mid + Math.imul(al2, bh7)) | 0;\n mid = (mid + Math.imul(ah2, bl7)) | 0;\n hi = (hi + Math.imul(ah2, bh7)) | 0;\n lo = (lo + Math.imul(al1, bl8)) | 0;\n mid = (mid + Math.imul(al1, bh8)) | 0;\n mid = (mid + Math.imul(ah1, bl8)) | 0;\n hi = (hi + Math.imul(ah1, bh8)) | 0;\n lo = (lo + Math.imul(al0, bl9)) | 0;\n mid = (mid + Math.imul(al0, bh9)) | 0;\n mid = (mid + Math.imul(ah0, bl9)) | 0;\n hi = (hi + Math.imul(ah0, bh9)) | 0;\n var w9 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w9 >>> 26)) | 0;\n w9 &= 0x3ffffff;\n /* k = 10 */\n lo = Math.imul(al9, bl1);\n mid = Math.imul(al9, bh1);\n mid = (mid + Math.imul(ah9, bl1)) | 0;\n hi = Math.imul(ah9, bh1);\n lo = (lo + Math.imul(al8, bl2)) | 0;\n mid = (mid + Math.imul(al8, bh2)) | 0;\n mid = (mid + Math.imul(ah8, bl2)) | 0;\n hi = (hi + Math.imul(ah8, bh2)) | 0;\n lo = (lo + Math.imul(al7, bl3)) | 0;\n mid = (mid + Math.imul(al7, bh3)) | 0;\n mid = (mid + Math.imul(ah7, bl3)) | 0;\n hi = (hi + Math.imul(ah7, bh3)) | 0;\n lo = (lo + Math.imul(al6, bl4)) | 0;\n mid = (mid + Math.imul(al6, bh4)) | 0;\n mid = (mid + Math.imul(ah6, bl4)) | 0;\n hi = (hi + Math.imul(ah6, bh4)) | 0;\n lo = (lo + Math.imul(al5, bl5)) | 0;\n mid = (mid + Math.imul(al5, bh5)) | 0;\n mid = (mid + Math.imul(ah5, bl5)) | 0;\n hi = (hi + Math.imul(ah5, bh5)) | 0;\n lo = (lo + Math.imul(al4, bl6)) | 0;\n mid = (mid + Math.imul(al4, bh6)) | 0;\n mid = (mid + Math.imul(ah4, bl6)) | 0;\n hi = (hi + Math.imul(ah4, bh6)) | 0;\n lo = (lo + Math.imul(al3, bl7)) | 0;\n mid = (mid + Math.imul(al3, bh7)) | 0;\n mid = (mid + Math.imul(ah3, bl7)) | 0;\n hi = (hi + Math.imul(ah3, bh7)) | 0;\n lo = (lo + Math.imul(al2, bl8)) | 0;\n mid = (mid + Math.imul(al2, bh8)) | 0;\n mid = (mid + Math.imul(ah2, bl8)) | 0;\n hi = (hi + Math.imul(ah2, bh8)) | 0;\n lo = (lo + Math.imul(al1, bl9)) | 0;\n mid = (mid + Math.imul(al1, bh9)) | 0;\n mid = (mid + Math.imul(ah1, bl9)) | 0;\n hi = (hi + Math.imul(ah1, bh9)) | 0;\n var w10 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w10 >>> 26)) | 0;\n w10 &= 0x3ffffff;\n /* k = 11 */\n lo = Math.imul(al9, bl2);\n mid = Math.imul(al9, bh2);\n mid = (mid + Math.imul(ah9, bl2)) | 0;\n hi = Math.imul(ah9, bh2);\n lo = (lo + Math.imul(al8, bl3)) | 0;\n mid = (mid + Math.imul(al8, bh3)) | 0;\n mid = (mid + Math.imul(ah8, bl3)) | 0;\n hi = (hi + Math.imul(ah8, bh3)) | 0;\n lo = (lo + Math.imul(al7, bl4)) | 0;\n mid = (mid + Math.imul(al7, bh4)) | 0;\n mid = (mid + Math.imul(ah7, bl4)) | 0;\n hi = (hi + Math.imul(ah7, bh4)) | 0;\n lo = (lo + Math.imul(al6, bl5)) | 0;\n mid = (mid + Math.imul(al6, bh5)) | 0;\n mid = (mid + Math.imul(ah6, bl5)) | 0;\n hi = (hi + Math.imul(ah6, bh5)) | 0;\n lo = (lo + Math.imul(al5, bl6)) | 0;\n mid = (mid + Math.imul(al5, bh6)) | 0;\n mid = (mid + Math.imul(ah5, bl6)) | 0;\n hi = (hi + Math.imul(ah5, bh6)) | 0;\n lo = (lo + Math.imul(al4, bl7)) | 0;\n mid = (mid + Math.imul(al4, bh7)) | 0;\n mid = (mid + Math.imul(ah4, bl7)) | 0;\n hi = (hi + Math.imul(ah4, bh7)) | 0;\n lo = (lo + Math.imul(al3, bl8)) | 0;\n mid = (mid + Math.imul(al3, bh8)) | 0;\n mid = (mid + Math.imul(ah3, bl8)) | 0;\n hi = (hi + Math.imul(ah3, bh8)) | 0;\n lo = (lo + Math.imul(al2, bl9)) | 0;\n mid = (mid + Math.imul(al2, bh9)) | 0;\n mid = (mid + Math.imul(ah2, bl9)) | 0;\n hi = (hi + Math.imul(ah2, bh9)) | 0;\n var w11 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w11 >>> 26)) | 0;\n w11 &= 0x3ffffff;\n /* k = 12 */\n lo = Math.imul(al9, bl3);\n mid = Math.imul(al9, bh3);\n mid = (mid + Math.imul(ah9, bl3)) | 0;\n hi = Math.imul(ah9, bh3);\n lo = (lo + Math.imul(al8, bl4)) | 0;\n mid = (mid + Math.imul(al8, bh4)) | 0;\n mid = (mid + Math.imul(ah8, bl4)) | 0;\n hi = (hi + Math.imul(ah8, bh4)) | 0;\n lo = (lo + Math.imul(al7, bl5)) | 0;\n mid = (mid + Math.imul(al7, bh5)) | 0;\n mid = (mid + Math.imul(ah7, bl5)) | 0;\n hi = (hi + Math.imul(ah7, bh5)) | 0;\n lo = (lo + Math.imul(al6, bl6)) | 0;\n mid = (mid + Math.imul(al6, bh6)) | 0;\n mid = (mid + Math.imul(ah6, bl6)) | 0;\n hi = (hi + Math.imul(ah6, bh6)) | 0;\n lo = (lo + Math.imul(al5, bl7)) | 0;\n mid = (mid + Math.imul(al5, bh7)) | 0;\n mid = (mid + Math.imul(ah5, bl7)) | 0;\n hi = (hi + Math.imul(ah5, bh7)) | 0;\n lo = (lo + Math.imul(al4, bl8)) | 0;\n mid = (mid + Math.imul(al4, bh8)) | 0;\n mid = (mid + Math.imul(ah4, bl8)) | 0;\n hi = (hi + Math.imul(ah4, bh8)) | 0;\n lo = (lo + Math.imul(al3, bl9)) | 0;\n mid = (mid + Math.imul(al3, bh9)) | 0;\n mid = (mid + Math.imul(ah3, bl9)) | 0;\n hi = (hi + Math.imul(ah3, bh9)) | 0;\n var w12 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w12 >>> 26)) | 0;\n w12 &= 0x3ffffff;\n /* k = 13 */\n lo = Math.imul(al9, bl4);\n mid = Math.imul(al9, bh4);\n mid = (mid + Math.imul(ah9, bl4)) | 0;\n hi = Math.imul(ah9, bh4);\n lo = (lo + Math.imul(al8, bl5)) | 0;\n mid = (mid + Math.imul(al8, bh5)) | 0;\n mid = (mid + Math.imul(ah8, bl5)) | 0;\n hi = (hi + Math.imul(ah8, bh5)) | 0;\n lo = (lo + Math.imul(al7, bl6)) | 0;\n mid = (mid + Math.imul(al7, bh6)) | 0;\n mid = (mid + Math.imul(ah7, bl6)) | 0;\n hi = (hi + Math.imul(ah7, bh6)) | 0;\n lo = (lo + Math.imul(al6, bl7)) | 0;\n mid = (mid + Math.imul(al6, bh7)) | 0;\n mid = (mid + Math.imul(ah6, bl7)) | 0;\n hi = (hi + Math.imul(ah6, bh7)) | 0;\n lo = (lo + Math.imul(al5, bl8)) | 0;\n mid = (mid + Math.imul(al5, bh8)) | 0;\n mid = (mid + Math.imul(ah5, bl8)) | 0;\n hi = (hi + Math.imul(ah5, bh8)) | 0;\n lo = (lo + Math.imul(al4, bl9)) | 0;\n mid = (mid + Math.imul(al4, bh9)) | 0;\n mid = (mid + Math.imul(ah4, bl9)) | 0;\n hi = (hi + Math.imul(ah4, bh9)) | 0;\n var w13 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w13 >>> 26)) | 0;\n w13 &= 0x3ffffff;\n /* k = 14 */\n lo = Math.imul(al9, bl5);\n mid = Math.imul(al9, bh5);\n mid = (mid + Math.imul(ah9, bl5)) | 0;\n hi = Math.imul(ah9, bh5);\n lo = (lo + Math.imul(al8, bl6)) | 0;\n mid = (mid + Math.imul(al8, bh6)) | 0;\n mid = (mid + Math.imul(ah8, bl6)) | 0;\n hi = (hi + Math.imul(ah8, bh6)) | 0;\n lo = (lo + Math.imul(al7, bl7)) | 0;\n mid = (mid + Math.imul(al7, bh7)) | 0;\n mid = (mid + Math.imul(ah7, bl7)) | 0;\n hi = (hi + Math.imul(ah7, bh7)) | 0;\n lo = (lo + Math.imul(al6, bl8)) | 0;\n mid = (mid + Math.imul(al6, bh8)) | 0;\n mid = (mid + Math.imul(ah6, bl8)) | 0;\n hi = (hi + Math.imul(ah6, bh8)) | 0;\n lo = (lo + Math.imul(al5, bl9)) | 0;\n mid = (mid + Math.imul(al5, bh9)) | 0;\n mid = (mid + Math.imul(ah5, bl9)) | 0;\n hi = (hi + Math.imul(ah5, bh9)) | 0;\n var w14 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w14 >>> 26)) | 0;\n w14 &= 0x3ffffff;\n /* k = 15 */\n lo = Math.imul(al9, bl6);\n mid = Math.imul(al9, bh6);\n mid = (mid + Math.imul(ah9, bl6)) | 0;\n hi = Math.imul(ah9, bh6);\n lo = (lo + Math.imul(al8, bl7)) | 0;\n mid = (mid + Math.imul(al8, bh7)) | 0;\n mid = (mid + Math.imul(ah8, bl7)) | 0;\n hi = (hi + Math.imul(ah8, bh7)) | 0;\n lo = (lo + Math.imul(al7, bl8)) | 0;\n mid = (mid + Math.imul(al7, bh8)) | 0;\n mid = (mid + Math.imul(ah7, bl8)) | 0;\n hi = (hi + Math.imul(ah7, bh8)) | 0;\n lo = (lo + Math.imul(al6, bl9)) | 0;\n mid = (mid + Math.imul(al6, bh9)) | 0;\n mid = (mid + Math.imul(ah6, bl9)) | 0;\n hi = (hi + Math.imul(ah6, bh9)) | 0;\n var w15 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w15 >>> 26)) | 0;\n w15 &= 0x3ffffff;\n /* k = 16 */\n lo = Math.imul(al9, bl7);\n mid = Math.imul(al9, bh7);\n mid = (mid + Math.imul(ah9, bl7)) | 0;\n hi = Math.imul(ah9, bh7);\n lo = (lo + Math.imul(al8, bl8)) | 0;\n mid = (mid + Math.imul(al8, bh8)) | 0;\n mid = (mid + Math.imul(ah8, bl8)) | 0;\n hi = (hi + Math.imul(ah8, bh8)) | 0;\n lo = (lo + Math.imul(al7, bl9)) | 0;\n mid = (mid + Math.imul(al7, bh9)) | 0;\n mid = (mid + Math.imul(ah7, bl9)) | 0;\n hi = (hi + Math.imul(ah7, bh9)) | 0;\n var w16 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w16 >>> 26)) | 0;\n w16 &= 0x3ffffff;\n /* k = 17 */\n lo = Math.imul(al9, bl8);\n mid = Math.imul(al9, bh8);\n mid = (mid + Math.imul(ah9, bl8)) | 0;\n hi = Math.imul(ah9, bh8);\n lo = (lo + Math.imul(al8, bl9)) | 0;\n mid = (mid + Math.imul(al8, bh9)) | 0;\n mid = (mid + Math.imul(ah8, bl9)) | 0;\n hi = (hi + Math.imul(ah8, bh9)) | 0;\n var w17 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w17 >>> 26)) | 0;\n w17 &= 0x3ffffff;\n /* k = 18 */\n lo = Math.imul(al9, bl9);\n mid = Math.imul(al9, bh9);\n mid = (mid + Math.imul(ah9, bl9)) | 0;\n hi = Math.imul(ah9, bh9);\n var w18 = (((c + lo) | 0) + ((mid & 0x1fff) << 13)) | 0;\n c = (((hi + (mid >>> 13)) | 0) + (w18 >>> 26)) | 0;\n w18 &= 0x3ffffff;\n o[0] = w0;\n o[1] = w1;\n o[2] = w2;\n o[3] = w3;\n o[4] = w4;\n o[5] = w5;\n o[6] = w6;\n o[7] = w7;\n o[8] = w8;\n o[9] = w9;\n o[10] = w10;\n o[11] = w11;\n o[12] = w12;\n o[13] = w13;\n o[14] = w14;\n o[15] = w15;\n o[16] = w16;\n o[17] = w17;\n o[18] = w18;\n if (c !== 0) {\n o[19] = c;\n out.length++;\n }\n return out;\n };\n\n // Polyfill comb\n if (!Math.imul) {\n comb10MulTo = smallMulTo;\n }\n\n function bigMulTo (self, num, out) {\n out.negative = num.negative ^ self.negative;\n out.length = self.length + num.length;\n\n var carry = 0;\n var hncarry = 0;\n for (var k = 0; k < out.length - 1; k++) {\n // Sum all words with the same `i + j = k` and accumulate `ncarry`,\n // note that ncarry could be >= 0x3ffffff\n var ncarry = hncarry;\n hncarry = 0;\n var rword = carry & 0x3ffffff;\n var maxJ = Math.min(k, num.length - 1);\n for (var j = Math.max(0, k - self.length + 1); j <= maxJ; j++) {\n var i = k - j;\n var a = self.words[i] | 0;\n var b = num.words[j] | 0;\n var r = a * b;\n\n var lo = r & 0x3ffffff;\n ncarry = (ncarry + ((r / 0x4000000) | 0)) | 0;\n lo = (lo + rword) | 0;\n rword = lo & 0x3ffffff;\n ncarry = (ncarry + (lo >>> 26)) | 0;\n\n hncarry += ncarry >>> 26;\n ncarry &= 0x3ffffff;\n }\n out.words[k] = rword;\n carry = ncarry;\n ncarry = hncarry;\n }\n if (carry !== 0) {\n out.words[k] = carry;\n } else {\n out.length--;\n }\n\n return out.strip();\n }\n\n function jumboMulTo (self, num, out) {\n var fftm = new FFTM();\n return fftm.mulp(self, num, out);\n }\n\n BN.prototype.mulTo = function mulTo (num, out) {\n var res;\n var len = this.length + num.length;\n if (this.length === 10 && num.length === 10) {\n res = comb10MulTo(this, num, out);\n } else if (len < 63) {\n res = smallMulTo(this, num, out);\n } else if (len < 1024) {\n res = bigMulTo(this, num, out);\n } else {\n res = jumboMulTo(this, num, out);\n }\n\n return res;\n };\n\n // Cooley-Tukey algorithm for FFT\n // slightly revisited to rely on looping instead of recursion\n\n function FFTM (x, y) {\n this.x = x;\n this.y = y;\n }\n\n FFTM.prototype.makeRBT = function makeRBT (N) {\n var t = new Array(N);\n var l = BN.prototype._countBits(N) - 1;\n for (var i = 0; i < N; i++) {\n t[i] = this.revBin(i, l, N);\n }\n\n return t;\n };\n\n // Returns binary-reversed representation of `x`\n FFTM.prototype.revBin = function revBin (x, l, N) {\n if (x === 0 || x === N - 1) return x;\n\n var rb = 0;\n for (var i = 0; i < l; i++) {\n rb |= (x & 1) << (l - i - 1);\n x >>= 1;\n }\n\n return rb;\n };\n\n // Performs \"tweedling\" phase, therefore 'emulating'\n // behaviour of the recursive algorithm\n FFTM.prototype.permute = function permute (rbt, rws, iws, rtws, itws, N) {\n for (var i = 0; i < N; i++) {\n rtws[i] = rws[rbt[i]];\n itws[i] = iws[rbt[i]];\n }\n };\n\n FFTM.prototype.transform = function transform (rws, iws, rtws, itws, N, rbt) {\n this.permute(rbt, rws, iws, rtws, itws, N);\n\n for (var s = 1; s < N; s <<= 1) {\n var l = s << 1;\n\n var rtwdf = Math.cos(2 * Math.PI / l);\n var itwdf = Math.sin(2 * Math.PI / l);\n\n for (var p = 0; p < N; p += l) {\n var rtwdf_ = rtwdf;\n var itwdf_ = itwdf;\n\n for (var j = 0; j < s; j++) {\n var re = rtws[p + j];\n var ie = itws[p + j];\n\n var ro = rtws[p + j + s];\n var io = itws[p + j + s];\n\n var rx = rtwdf_ * ro - itwdf_ * io;\n\n io = rtwdf_ * io + itwdf_ * ro;\n ro = rx;\n\n rtws[p + j] = re + ro;\n itws[p + j] = ie + io;\n\n rtws[p + j + s] = re - ro;\n itws[p + j + s] = ie - io;\n\n /* jshint maxdepth : false */\n if (j !== l) {\n rx = rtwdf * rtwdf_ - itwdf * itwdf_;\n\n itwdf_ = rtwdf * itwdf_ + itwdf * rtwdf_;\n rtwdf_ = rx;\n }\n }\n }\n }\n };\n\n FFTM.prototype.guessLen13b = function guessLen13b (n, m) {\n var N = Math.max(m, n) | 1;\n var odd = N & 1;\n var i = 0;\n for (N = N / 2 | 0; N; N = N >>> 1) {\n i++;\n }\n\n return 1 << i + 1 + odd;\n };\n\n FFTM.prototype.conjugate = function conjugate (rws, iws, N) {\n if (N <= 1) return;\n\n for (var i = 0; i < N / 2; i++) {\n var t = rws[i];\n\n rws[i] = rws[N - i - 1];\n rws[N - i - 1] = t;\n\n t = iws[i];\n\n iws[i] = -iws[N - i - 1];\n iws[N - i - 1] = -t;\n }\n };\n\n FFTM.prototype.normalize13b = function normalize13b (ws, N) {\n var carry = 0;\n for (var i = 0; i < N / 2; i++) {\n var w = Math.round(ws[2 * i + 1] / N) * 0x2000 +\n Math.round(ws[2 * i] / N) +\n carry;\n\n ws[i] = w & 0x3ffffff;\n\n if (w < 0x4000000) {\n carry = 0;\n } else {\n carry = w / 0x4000000 | 0;\n }\n }\n\n return ws;\n };\n\n FFTM.prototype.convert13b = function convert13b (ws, len, rws, N) {\n var carry = 0;\n for (var i = 0; i < len; i++) {\n carry = carry + (ws[i] | 0);\n\n rws[2 * i] = carry & 0x1fff; carry = carry >>> 13;\n rws[2 * i + 1] = carry & 0x1fff; carry = carry >>> 13;\n }\n\n // Pad with zeroes\n for (i = 2 * len; i < N; ++i) {\n rws[i] = 0;\n }\n\n assert(carry === 0);\n assert((carry & ~0x1fff) === 0);\n };\n\n FFTM.prototype.stub = function stub (N) {\n var ph = new Array(N);\n for (var i = 0; i < N; i++) {\n ph[i] = 0;\n }\n\n return ph;\n };\n\n FFTM.prototype.mulp = function mulp (x, y, out) {\n var N = 2 * this.guessLen13b(x.length, y.length);\n\n var rbt = this.makeRBT(N);\n\n var _ = this.stub(N);\n\n var rws = new Array(N);\n var rwst = new Array(N);\n var iwst = new Array(N);\n\n var nrws = new Array(N);\n var nrwst = new Array(N);\n var niwst = new Array(N);\n\n var rmws = out.words;\n rmws.length = N;\n\n this.convert13b(x.words, x.length, rws, N);\n this.convert13b(y.words, y.length, nrws, N);\n\n this.transform(rws, _, rwst, iwst, N, rbt);\n this.transform(nrws, _, nrwst, niwst, N, rbt);\n\n for (var i = 0; i < N; i++) {\n var rx = rwst[i] * nrwst[i] - iwst[i] * niwst[i];\n iwst[i] = rwst[i] * niwst[i] + iwst[i] * nrwst[i];\n rwst[i] = rx;\n }\n\n this.conjugate(rwst, iwst, N);\n this.transform(rwst, iwst, rmws, _, N, rbt);\n this.conjugate(rmws, _, N);\n this.normalize13b(rmws, N);\n\n out.negative = x.negative ^ y.negative;\n out.length = x.length + y.length;\n return out.strip();\n };\n\n // Multiply `this` by `num`\n BN.prototype.mul = function mul (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return this.mulTo(num, out);\n };\n\n // Multiply employing FFT\n BN.prototype.mulf = function mulf (num) {\n var out = new BN(null);\n out.words = new Array(this.length + num.length);\n return jumboMulTo(this, num, out);\n };\n\n // In-place Multiplication\n BN.prototype.imul = function imul (num) {\n return this.clone().mulTo(num, this);\n };\n\n BN.prototype.imuln = function imuln (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n\n // Carry\n var carry = 0;\n for (var i = 0; i < this.length; i++) {\n var w = (this.words[i] | 0) * num;\n var lo = (w & 0x3ffffff) + (carry & 0x3ffffff);\n carry >>= 26;\n carry += (w / 0x4000000) | 0;\n // NOTE: lo is 27bit maximum\n carry += lo >>> 26;\n this.words[i] = lo & 0x3ffffff;\n }\n\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n\n return this;\n };\n\n BN.prototype.muln = function muln (num) {\n return this.clone().imuln(num);\n };\n\n // `this` * `this`\n BN.prototype.sqr = function sqr () {\n return this.mul(this);\n };\n\n // `this` * `this` in-place\n BN.prototype.isqr = function isqr () {\n return this.imul(this.clone());\n };\n\n // Math.pow(`this`, `num`)\n BN.prototype.pow = function pow (num) {\n var w = toBitArray(num);\n if (w.length === 0) return new BN(1);\n\n // Skip leading zeroes\n var res = this;\n for (var i = 0; i < w.length; i++, res = res.sqr()) {\n if (w[i] !== 0) break;\n }\n\n if (++i < w.length) {\n for (var q = res.sqr(); i < w.length; i++, q = q.sqr()) {\n if (w[i] === 0) continue;\n\n res = res.mul(q);\n }\n }\n\n return res;\n };\n\n // Shift-left in-place\n BN.prototype.iushln = function iushln (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n var carryMask = (0x3ffffff >>> (26 - r)) << (26 - r);\n var i;\n\n if (r !== 0) {\n var carry = 0;\n\n for (i = 0; i < this.length; i++) {\n var newCarry = this.words[i] & carryMask;\n var c = ((this.words[i] | 0) - newCarry) << r;\n this.words[i] = c | carry;\n carry = newCarry >>> (26 - r);\n }\n\n if (carry) {\n this.words[i] = carry;\n this.length++;\n }\n }\n\n if (s !== 0) {\n for (i = this.length - 1; i >= 0; i--) {\n this.words[i + s] = this.words[i];\n }\n\n for (i = 0; i < s; i++) {\n this.words[i] = 0;\n }\n\n this.length += s;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishln = function ishln (bits) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushln(bits);\n };\n\n // Shift-right in-place\n // NOTE: `hint` is a lowest bit before trailing zeroes\n // NOTE: if `extended` is present - it will be filled with destroyed bits\n BN.prototype.iushrn = function iushrn (bits, hint, extended) {\n assert(typeof bits === 'number' && bits >= 0);\n var h;\n if (hint) {\n h = (hint - (hint % 26)) / 26;\n } else {\n h = 0;\n }\n\n var r = bits % 26;\n var s = Math.min((bits - r) / 26, this.length);\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n var maskedWords = extended;\n\n h -= s;\n h = Math.max(0, h);\n\n // Extended mode, copy masked part\n if (maskedWords) {\n for (var i = 0; i < s; i++) {\n maskedWords.words[i] = this.words[i];\n }\n maskedWords.length = s;\n }\n\n if (s === 0) {\n // No-op, we should not move anything at all\n } else if (this.length > s) {\n this.length -= s;\n for (i = 0; i < this.length; i++) {\n this.words[i] = this.words[i + s];\n }\n } else {\n this.words[0] = 0;\n this.length = 1;\n }\n\n var carry = 0;\n for (i = this.length - 1; i >= 0 && (carry !== 0 || i >= h); i--) {\n var word = this.words[i] | 0;\n this.words[i] = (carry << (26 - r)) | (word >>> r);\n carry = word & mask;\n }\n\n // Push carried bits as a mask\n if (maskedWords && carry !== 0) {\n maskedWords.words[maskedWords.length++] = carry;\n }\n\n if (this.length === 0) {\n this.words[0] = 0;\n this.length = 1;\n }\n\n return this.strip();\n };\n\n BN.prototype.ishrn = function ishrn (bits, hint, extended) {\n // TODO(indutny): implement me\n assert(this.negative === 0);\n return this.iushrn(bits, hint, extended);\n };\n\n // Shift-left\n BN.prototype.shln = function shln (bits) {\n return this.clone().ishln(bits);\n };\n\n BN.prototype.ushln = function ushln (bits) {\n return this.clone().iushln(bits);\n };\n\n // Shift-right\n BN.prototype.shrn = function shrn (bits) {\n return this.clone().ishrn(bits);\n };\n\n BN.prototype.ushrn = function ushrn (bits) {\n return this.clone().iushrn(bits);\n };\n\n // Test if n bit is set\n BN.prototype.testn = function testn (bit) {\n assert(typeof bit === 'number' && bit >= 0);\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) return false;\n\n // Check bit and return\n var w = this.words[s];\n\n return !!(w & q);\n };\n\n // Return only lowers bits of number (in-place)\n BN.prototype.imaskn = function imaskn (bits) {\n assert(typeof bits === 'number' && bits >= 0);\n var r = bits % 26;\n var s = (bits - r) / 26;\n\n assert(this.negative === 0, 'imaskn works only with positive numbers');\n\n if (this.length <= s) {\n return this;\n }\n\n if (r !== 0) {\n s++;\n }\n this.length = Math.min(s, this.length);\n\n if (r !== 0) {\n var mask = 0x3ffffff ^ ((0x3ffffff >>> r) << r);\n this.words[this.length - 1] &= mask;\n }\n\n return this.strip();\n };\n\n // Return only lowers bits of number\n BN.prototype.maskn = function maskn (bits) {\n return this.clone().imaskn(bits);\n };\n\n // Add plain number `num` to `this`\n BN.prototype.iaddn = function iaddn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.isubn(-num);\n\n // Possible sign change\n if (this.negative !== 0) {\n if (this.length === 1 && (this.words[0] | 0) < num) {\n this.words[0] = num - (this.words[0] | 0);\n this.negative = 0;\n return this;\n }\n\n this.negative = 0;\n this.isubn(num);\n this.negative = 1;\n return this;\n }\n\n // Add without checks\n return this._iaddn(num);\n };\n\n BN.prototype._iaddn = function _iaddn (num) {\n this.words[0] += num;\n\n // Carry\n for (var i = 0; i < this.length && this.words[i] >= 0x4000000; i++) {\n this.words[i] -= 0x4000000;\n if (i === this.length - 1) {\n this.words[i + 1] = 1;\n } else {\n this.words[i + 1]++;\n }\n }\n this.length = Math.max(this.length, i + 1);\n\n return this;\n };\n\n // Subtract plain number `num` from `this`\n BN.prototype.isubn = function isubn (num) {\n assert(typeof num === 'number');\n assert(num < 0x4000000);\n if (num < 0) return this.iaddn(-num);\n\n if (this.negative !== 0) {\n this.negative = 0;\n this.iaddn(num);\n this.negative = 1;\n return this;\n }\n\n this.words[0] -= num;\n\n if (this.length === 1 && this.words[0] < 0) {\n this.words[0] = -this.words[0];\n this.negative = 1;\n } else {\n // Carry\n for (var i = 0; i < this.length && this.words[i] < 0; i++) {\n this.words[i] += 0x4000000;\n this.words[i + 1] -= 1;\n }\n }\n\n return this.strip();\n };\n\n BN.prototype.addn = function addn (num) {\n return this.clone().iaddn(num);\n };\n\n BN.prototype.subn = function subn (num) {\n return this.clone().isubn(num);\n };\n\n BN.prototype.iabs = function iabs () {\n this.negative = 0;\n\n return this;\n };\n\n BN.prototype.abs = function abs () {\n return this.clone().iabs();\n };\n\n BN.prototype._ishlnsubmul = function _ishlnsubmul (num, mul, shift) {\n var len = num.length + shift;\n var i;\n\n this._expand(len);\n\n var w;\n var carry = 0;\n for (i = 0; i < num.length; i++) {\n w = (this.words[i + shift] | 0) + carry;\n var right = (num.words[i] | 0) * mul;\n w -= right & 0x3ffffff;\n carry = (w >> 26) - ((right / 0x4000000) | 0);\n this.words[i + shift] = w & 0x3ffffff;\n }\n for (; i < this.length - shift; i++) {\n w = (this.words[i + shift] | 0) + carry;\n carry = w >> 26;\n this.words[i + shift] = w & 0x3ffffff;\n }\n\n if (carry === 0) return this.strip();\n\n // Subtraction overflow\n assert(carry === -1);\n carry = 0;\n for (i = 0; i < this.length; i++) {\n w = -(this.words[i] | 0) + carry;\n carry = w >> 26;\n this.words[i] = w & 0x3ffffff;\n }\n this.negative = 1;\n\n return this.strip();\n };\n\n BN.prototype._wordDiv = function _wordDiv (num, mode) {\n var shift = this.length - num.length;\n\n var a = this.clone();\n var b = num;\n\n // Normalize\n var bhi = b.words[b.length - 1] | 0;\n var bhiBits = this._countBits(bhi);\n shift = 26 - bhiBits;\n if (shift !== 0) {\n b = b.ushln(shift);\n a.iushln(shift);\n bhi = b.words[b.length - 1] | 0;\n }\n\n // Initialize quotient\n var m = a.length - b.length;\n var q;\n\n if (mode !== 'mod') {\n q = new BN(null);\n q.length = m + 1;\n q.words = new Array(q.length);\n for (var i = 0; i < q.length; i++) {\n q.words[i] = 0;\n }\n }\n\n var diff = a.clone()._ishlnsubmul(b, 1, m);\n if (diff.negative === 0) {\n a = diff;\n if (q) {\n q.words[m] = 1;\n }\n }\n\n for (var j = m - 1; j >= 0; j--) {\n var qj = (a.words[b.length + j] | 0) * 0x4000000 +\n (a.words[b.length + j - 1] | 0);\n\n // NOTE: (qj / bhi) is (0x3ffffff * 0x4000000 + 0x3ffffff) / 0x2000000 max\n // (0x7ffffff)\n qj = Math.min((qj / bhi) | 0, 0x3ffffff);\n\n a._ishlnsubmul(b, qj, j);\n while (a.negative !== 0) {\n qj--;\n a.negative = 0;\n a._ishlnsubmul(b, 1, j);\n if (!a.isZero()) {\n a.negative ^= 1;\n }\n }\n if (q) {\n q.words[j] = qj;\n }\n }\n if (q) {\n q.strip();\n }\n a.strip();\n\n // Denormalize\n if (mode !== 'div' && shift !== 0) {\n a.iushrn(shift);\n }\n\n return {\n div: q || null,\n mod: a\n };\n };\n\n // NOTE: 1) `mode` can be set to `mod` to request mod only,\n // to `div` to request div only, or be absent to\n // request both div & mod\n // 2) `positive` is true if unsigned mod is requested\n BN.prototype.divmod = function divmod (num, mode, positive) {\n assert(!num.isZero());\n\n if (this.isZero()) {\n return {\n div: new BN(0),\n mod: new BN(0)\n };\n }\n\n var div, mod, res;\n if (this.negative !== 0 && num.negative === 0) {\n res = this.neg().divmod(num, mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.iadd(num);\n }\n }\n\n return {\n div: div,\n mod: mod\n };\n }\n\n if (this.negative === 0 && num.negative !== 0) {\n res = this.divmod(num.neg(), mode);\n\n if (mode !== 'mod') {\n div = res.div.neg();\n }\n\n return {\n div: div,\n mod: res.mod\n };\n }\n\n if ((this.negative & num.negative) !== 0) {\n res = this.neg().divmod(num.neg(), mode);\n\n if (mode !== 'div') {\n mod = res.mod.neg();\n if (positive && mod.negative !== 0) {\n mod.isub(num);\n }\n }\n\n return {\n div: res.div,\n mod: mod\n };\n }\n\n // Both numbers are positive at this point\n\n // Strip both numbers to approximate shift value\n if (num.length > this.length || this.cmp(num) < 0) {\n return {\n div: new BN(0),\n mod: this\n };\n }\n\n // Very short reduction\n if (num.length === 1) {\n if (mode === 'div') {\n return {\n div: this.divn(num.words[0]),\n mod: null\n };\n }\n\n if (mode === 'mod') {\n return {\n div: null,\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return {\n div: this.divn(num.words[0]),\n mod: new BN(this.modn(num.words[0]))\n };\n }\n\n return this._wordDiv(num, mode);\n };\n\n // Find `this` / `num`\n BN.prototype.div = function div (num) {\n return this.divmod(num, 'div', false).div;\n };\n\n // Find `this` % `num`\n BN.prototype.mod = function mod (num) {\n return this.divmod(num, 'mod', false).mod;\n };\n\n BN.prototype.umod = function umod (num) {\n return this.divmod(num, 'mod', true).mod;\n };\n\n // Find Round(`this` / `num`)\n BN.prototype.divRound = function divRound (num) {\n var dm = this.divmod(num);\n\n // Fast case - exact division\n if (dm.mod.isZero()) return dm.div;\n\n var mod = dm.div.negative !== 0 ? dm.mod.isub(num) : dm.mod;\n\n var half = num.ushrn(1);\n var r2 = num.andln(1);\n var cmp = mod.cmp(half);\n\n // Round down\n if (cmp < 0 || r2 === 1 && cmp === 0) return dm.div;\n\n // Round up\n return dm.div.negative !== 0 ? dm.div.isubn(1) : dm.div.iaddn(1);\n };\n\n BN.prototype.modn = function modn (num) {\n assert(num <= 0x3ffffff);\n var p = (1 << 26) % num;\n\n var acc = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n acc = (p * acc + (this.words[i] | 0)) % num;\n }\n\n return acc;\n };\n\n // In-place division by number\n BN.prototype.idivn = function idivn (num) {\n assert(num <= 0x3ffffff);\n\n var carry = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var w = (this.words[i] | 0) + carry * 0x4000000;\n this.words[i] = (w / num) | 0;\n carry = w % num;\n }\n\n return this.strip();\n };\n\n BN.prototype.divn = function divn (num) {\n return this.clone().idivn(num);\n };\n\n BN.prototype.egcd = function egcd (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var x = this;\n var y = p.clone();\n\n if (x.negative !== 0) {\n x = x.umod(p);\n } else {\n x = x.clone();\n }\n\n // A * x + B * y = x\n var A = new BN(1);\n var B = new BN(0);\n\n // C * x + D * y = y\n var C = new BN(0);\n var D = new BN(1);\n\n var g = 0;\n\n while (x.isEven() && y.isEven()) {\n x.iushrn(1);\n y.iushrn(1);\n ++g;\n }\n\n var yp = y.clone();\n var xp = x.clone();\n\n while (!x.isZero()) {\n for (var i = 0, im = 1; (x.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n x.iushrn(i);\n while (i-- > 0) {\n if (A.isOdd() || B.isOdd()) {\n A.iadd(yp);\n B.isub(xp);\n }\n\n A.iushrn(1);\n B.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (y.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n y.iushrn(j);\n while (j-- > 0) {\n if (C.isOdd() || D.isOdd()) {\n C.iadd(yp);\n D.isub(xp);\n }\n\n C.iushrn(1);\n D.iushrn(1);\n }\n }\n\n if (x.cmp(y) >= 0) {\n x.isub(y);\n A.isub(C);\n B.isub(D);\n } else {\n y.isub(x);\n C.isub(A);\n D.isub(B);\n }\n }\n\n return {\n a: C,\n b: D,\n gcd: y.iushln(g)\n };\n };\n\n // This is reduced incarnation of the binary EEA\n // above, designated to invert members of the\n // _prime_ fields F(p) at a maximal speed\n BN.prototype._invmp = function _invmp (p) {\n assert(p.negative === 0);\n assert(!p.isZero());\n\n var a = this;\n var b = p.clone();\n\n if (a.negative !== 0) {\n a = a.umod(p);\n } else {\n a = a.clone();\n }\n\n var x1 = new BN(1);\n var x2 = new BN(0);\n\n var delta = b.clone();\n\n while (a.cmpn(1) > 0 && b.cmpn(1) > 0) {\n for (var i = 0, im = 1; (a.words[0] & im) === 0 && i < 26; ++i, im <<= 1);\n if (i > 0) {\n a.iushrn(i);\n while (i-- > 0) {\n if (x1.isOdd()) {\n x1.iadd(delta);\n }\n\n x1.iushrn(1);\n }\n }\n\n for (var j = 0, jm = 1; (b.words[0] & jm) === 0 && j < 26; ++j, jm <<= 1);\n if (j > 0) {\n b.iushrn(j);\n while (j-- > 0) {\n if (x2.isOdd()) {\n x2.iadd(delta);\n }\n\n x2.iushrn(1);\n }\n }\n\n if (a.cmp(b) >= 0) {\n a.isub(b);\n x1.isub(x2);\n } else {\n b.isub(a);\n x2.isub(x1);\n }\n }\n\n var res;\n if (a.cmpn(1) === 0) {\n res = x1;\n } else {\n res = x2;\n }\n\n if (res.cmpn(0) < 0) {\n res.iadd(p);\n }\n\n return res;\n };\n\n BN.prototype.gcd = function gcd (num) {\n if (this.isZero()) return num.abs();\n if (num.isZero()) return this.abs();\n\n var a = this.clone();\n var b = num.clone();\n a.negative = 0;\n b.negative = 0;\n\n // Remove common factor of two\n for (var shift = 0; a.isEven() && b.isEven(); shift++) {\n a.iushrn(1);\n b.iushrn(1);\n }\n\n do {\n while (a.isEven()) {\n a.iushrn(1);\n }\n while (b.isEven()) {\n b.iushrn(1);\n }\n\n var r = a.cmp(b);\n if (r < 0) {\n // Swap `a` and `b` to make `a` always bigger than `b`\n var t = a;\n a = b;\n b = t;\n } else if (r === 0 || b.cmpn(1) === 0) {\n break;\n }\n\n a.isub(b);\n } while (true);\n\n return b.iushln(shift);\n };\n\n // Invert number in the field F(num)\n BN.prototype.invm = function invm (num) {\n return this.egcd(num).a.umod(num);\n };\n\n BN.prototype.isEven = function isEven () {\n return (this.words[0] & 1) === 0;\n };\n\n BN.prototype.isOdd = function isOdd () {\n return (this.words[0] & 1) === 1;\n };\n\n // And first word and num\n BN.prototype.andln = function andln (num) {\n return this.words[0] & num;\n };\n\n // Increment at the bit position in-line\n BN.prototype.bincn = function bincn (bit) {\n assert(typeof bit === 'number');\n var r = bit % 26;\n var s = (bit - r) / 26;\n var q = 1 << r;\n\n // Fast case: bit is much higher than all existing words\n if (this.length <= s) {\n this._expand(s + 1);\n this.words[s] |= q;\n return this;\n }\n\n // Add bit and propagate, if needed\n var carry = q;\n for (var i = s; carry !== 0 && i < this.length; i++) {\n var w = this.words[i] | 0;\n w += carry;\n carry = w >>> 26;\n w &= 0x3ffffff;\n this.words[i] = w;\n }\n if (carry !== 0) {\n this.words[i] = carry;\n this.length++;\n }\n return this;\n };\n\n BN.prototype.isZero = function isZero () {\n return this.length === 1 && this.words[0] === 0;\n };\n\n BN.prototype.cmpn = function cmpn (num) {\n var negative = num < 0;\n\n if (this.negative !== 0 && !negative) return -1;\n if (this.negative === 0 && negative) return 1;\n\n this.strip();\n\n var res;\n if (this.length > 1) {\n res = 1;\n } else {\n if (negative) {\n num = -num;\n }\n\n assert(num <= 0x3ffffff, 'Number is too big');\n\n var w = this.words[0] | 0;\n res = w === num ? 0 : w < num ? -1 : 1;\n }\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Compare two numbers and return:\n // 1 - if `this` > `num`\n // 0 - if `this` == `num`\n // -1 - if `this` < `num`\n BN.prototype.cmp = function cmp (num) {\n if (this.negative !== 0 && num.negative === 0) return -1;\n if (this.negative === 0 && num.negative !== 0) return 1;\n\n var res = this.ucmp(num);\n if (this.negative !== 0) return -res | 0;\n return res;\n };\n\n // Unsigned comparison\n BN.prototype.ucmp = function ucmp (num) {\n // At this point both numbers have the same sign\n if (this.length > num.length) return 1;\n if (this.length < num.length) return -1;\n\n var res = 0;\n for (var i = this.length - 1; i >= 0; i--) {\n var a = this.words[i] | 0;\n var b = num.words[i] | 0;\n\n if (a === b) continue;\n if (a < b) {\n res = -1;\n } else if (a > b) {\n res = 1;\n }\n break;\n }\n return res;\n };\n\n BN.prototype.gtn = function gtn (num) {\n return this.cmpn(num) === 1;\n };\n\n BN.prototype.gt = function gt (num) {\n return this.cmp(num) === 1;\n };\n\n BN.prototype.gten = function gten (num) {\n return this.cmpn(num) >= 0;\n };\n\n BN.prototype.gte = function gte (num) {\n return this.cmp(num) >= 0;\n };\n\n BN.prototype.ltn = function ltn (num) {\n return this.cmpn(num) === -1;\n };\n\n BN.prototype.lt = function lt (num) {\n return this.cmp(num) === -1;\n };\n\n BN.prototype.lten = function lten (num) {\n return this.cmpn(num) <= 0;\n };\n\n BN.prototype.lte = function lte (num) {\n return this.cmp(num) <= 0;\n };\n\n BN.prototype.eqn = function eqn (num) {\n return this.cmpn(num) === 0;\n };\n\n BN.prototype.eq = function eq (num) {\n return this.cmp(num) === 0;\n };\n\n //\n // A reduce context, could be using montgomery or something better, depending\n // on the `m` itself.\n //\n BN.red = function red (num) {\n return new Red(num);\n };\n\n BN.prototype.toRed = function toRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n assert(this.negative === 0, 'red works only with positives');\n return ctx.convertTo(this)._forceRed(ctx);\n };\n\n BN.prototype.fromRed = function fromRed () {\n assert(this.red, 'fromRed works only with numbers in reduction context');\n return this.red.convertFrom(this);\n };\n\n BN.prototype._forceRed = function _forceRed (ctx) {\n this.red = ctx;\n return this;\n };\n\n BN.prototype.forceRed = function forceRed (ctx) {\n assert(!this.red, 'Already a number in reduction context');\n return this._forceRed(ctx);\n };\n\n BN.prototype.redAdd = function redAdd (num) {\n assert(this.red, 'redAdd works only with red numbers');\n return this.red.add(this, num);\n };\n\n BN.prototype.redIAdd = function redIAdd (num) {\n assert(this.red, 'redIAdd works only with red numbers');\n return this.red.iadd(this, num);\n };\n\n BN.prototype.redSub = function redSub (num) {\n assert(this.red, 'redSub works only with red numbers');\n return this.red.sub(this, num);\n };\n\n BN.prototype.redISub = function redISub (num) {\n assert(this.red, 'redISub works only with red numbers');\n return this.red.isub(this, num);\n };\n\n BN.prototype.redShl = function redShl (num) {\n assert(this.red, 'redShl works only with red numbers');\n return this.red.shl(this, num);\n };\n\n BN.prototype.redMul = function redMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.mul(this, num);\n };\n\n BN.prototype.redIMul = function redIMul (num) {\n assert(this.red, 'redMul works only with red numbers');\n this.red._verify2(this, num);\n return this.red.imul(this, num);\n };\n\n BN.prototype.redSqr = function redSqr () {\n assert(this.red, 'redSqr works only with red numbers');\n this.red._verify1(this);\n return this.red.sqr(this);\n };\n\n BN.prototype.redISqr = function redISqr () {\n assert(this.red, 'redISqr works only with red numbers');\n this.red._verify1(this);\n return this.red.isqr(this);\n };\n\n // Square root over p\n BN.prototype.redSqrt = function redSqrt () {\n assert(this.red, 'redSqrt works only with red numbers');\n this.red._verify1(this);\n return this.red.sqrt(this);\n };\n\n BN.prototype.redInvm = function redInvm () {\n assert(this.red, 'redInvm works only with red numbers');\n this.red._verify1(this);\n return this.red.invm(this);\n };\n\n // Return negative clone of `this` % `red modulo`\n BN.prototype.redNeg = function redNeg () {\n assert(this.red, 'redNeg works only with red numbers');\n this.red._verify1(this);\n return this.red.neg(this);\n };\n\n BN.prototype.redPow = function redPow (num) {\n assert(this.red && !num.red, 'redPow(normalNum)');\n this.red._verify1(this);\n return this.red.pow(this, num);\n };\n\n // Prime numbers with efficient reduction\n var primes = {\n k256: null,\n p224: null,\n p192: null,\n p25519: null\n };\n\n // Pseudo-Mersenne prime\n function MPrime (name, p) {\n // P = 2 ^ N - K\n this.name = name;\n this.p = new BN(p, 16);\n this.n = this.p.bitLength();\n this.k = new BN(1).iushln(this.n).isub(this.p);\n\n this.tmp = this._tmp();\n }\n\n MPrime.prototype._tmp = function _tmp () {\n var tmp = new BN(null);\n tmp.words = new Array(Math.ceil(this.n / 13));\n return tmp;\n };\n\n MPrime.prototype.ireduce = function ireduce (num) {\n // Assumes that `num` is less than `P^2`\n // num = HI * (2 ^ N - K) + HI * K + LO = HI * K + LO (mod P)\n var r = num;\n var rlen;\n\n do {\n this.split(r, this.tmp);\n r = this.imulK(r);\n r = r.iadd(this.tmp);\n rlen = r.bitLength();\n } while (rlen > this.n);\n\n var cmp = rlen < this.n ? -1 : r.ucmp(this.p);\n if (cmp === 0) {\n r.words[0] = 0;\n r.length = 1;\n } else if (cmp > 0) {\n r.isub(this.p);\n } else {\n r.strip();\n }\n\n return r;\n };\n\n MPrime.prototype.split = function split (input, out) {\n input.iushrn(this.n, 0, out);\n };\n\n MPrime.prototype.imulK = function imulK (num) {\n return num.imul(this.k);\n };\n\n function K256 () {\n MPrime.call(\n this,\n 'k256',\n 'ffffffff ffffffff ffffffff ffffffff ffffffff ffffffff fffffffe fffffc2f');\n }\n inherits(K256, MPrime);\n\n K256.prototype.split = function split (input, output) {\n // 256 = 9 * 26 + 22\n var mask = 0x3fffff;\n\n var outLen = Math.min(input.length, 9);\n for (var i = 0; i < outLen; i++) {\n output.words[i] = input.words[i];\n }\n output.length = outLen;\n\n if (input.length <= 9) {\n input.words[0] = 0;\n input.length = 1;\n return;\n }\n\n // Shift by 9 limbs\n var prev = input.words[9];\n output.words[output.length++] = prev & mask;\n\n for (i = 10; i < input.length; i++) {\n var next = input.words[i] | 0;\n input.words[i - 10] = ((next & mask) << 4) | (prev >>> 22);\n prev = next;\n }\n prev >>>= 22;\n input.words[i - 10] = prev;\n if (prev === 0 && input.length > 10) {\n input.length -= 10;\n } else {\n input.length -= 9;\n }\n };\n\n K256.prototype.imulK = function imulK (num) {\n // K = 0x1000003d1 = [ 0x40, 0x3d1 ]\n num.words[num.length] = 0;\n num.words[num.length + 1] = 0;\n num.length += 2;\n\n // bounded at: 0x40 * 0x3ffffff + 0x3d0 = 0x100000390\n var lo = 0;\n for (var i = 0; i < num.length; i++) {\n var w = num.words[i] | 0;\n lo += w * 0x3d1;\n num.words[i] = lo & 0x3ffffff;\n lo = w * 0x40 + ((lo / 0x4000000) | 0);\n }\n\n // Fast length reduction\n if (num.words[num.length - 1] === 0) {\n num.length--;\n if (num.words[num.length - 1] === 0) {\n num.length--;\n }\n }\n return num;\n };\n\n function P224 () {\n MPrime.call(\n this,\n 'p224',\n 'ffffffff ffffffff ffffffff ffffffff 00000000 00000000 00000001');\n }\n inherits(P224, MPrime);\n\n function P192 () {\n MPrime.call(\n this,\n 'p192',\n 'ffffffff ffffffff ffffffff fffffffe ffffffff ffffffff');\n }\n inherits(P192, MPrime);\n\n function P25519 () {\n // 2 ^ 255 - 19\n MPrime.call(\n this,\n '25519',\n '7fffffffffffffff ffffffffffffffff ffffffffffffffff ffffffffffffffed');\n }\n inherits(P25519, MPrime);\n\n P25519.prototype.imulK = function imulK (num) {\n // K = 0x13\n var carry = 0;\n for (var i = 0; i < num.length; i++) {\n var hi = (num.words[i] | 0) * 0x13 + carry;\n var lo = hi & 0x3ffffff;\n hi >>>= 26;\n\n num.words[i] = lo;\n carry = hi;\n }\n if (carry !== 0) {\n num.words[num.length++] = carry;\n }\n return num;\n };\n\n // Exported mostly for testing purposes, use plain name instead\n BN._prime = function prime (name) {\n // Cached version of prime\n if (primes[name]) return primes[name];\n\n var prime;\n if (name === 'k256') {\n prime = new K256();\n } else if (name === 'p224') {\n prime = new P224();\n } else if (name === 'p192') {\n prime = new P192();\n } else if (name === 'p25519') {\n prime = new P25519();\n } else {\n throw new Error('Unknown prime ' + name);\n }\n primes[name] = prime;\n\n return prime;\n };\n\n //\n // Base reduction engine\n //\n function Red (m) {\n if (typeof m === 'string') {\n var prime = BN._prime(m);\n this.m = prime.p;\n this.prime = prime;\n } else {\n assert(m.gtn(1), 'modulus must be greater than 1');\n this.m = m;\n this.prime = null;\n }\n }\n\n Red.prototype._verify1 = function _verify1 (a) {\n assert(a.negative === 0, 'red works only with positives');\n assert(a.red, 'red works only with red numbers');\n };\n\n Red.prototype._verify2 = function _verify2 (a, b) {\n assert((a.negative | b.negative) === 0, 'red works only with positives');\n assert(a.red && a.red === b.red,\n 'red works only with red numbers');\n };\n\n Red.prototype.imod = function imod (a) {\n if (this.prime) return this.prime.ireduce(a)._forceRed(this);\n return a.umod(this.m)._forceRed(this);\n };\n\n Red.prototype.neg = function neg (a) {\n if (a.isZero()) {\n return a.clone();\n }\n\n return this.m.sub(a)._forceRed(this);\n };\n\n Red.prototype.add = function add (a, b) {\n this._verify2(a, b);\n\n var res = a.add(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.iadd = function iadd (a, b) {\n this._verify2(a, b);\n\n var res = a.iadd(b);\n if (res.cmp(this.m) >= 0) {\n res.isub(this.m);\n }\n return res;\n };\n\n Red.prototype.sub = function sub (a, b) {\n this._verify2(a, b);\n\n var res = a.sub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res._forceRed(this);\n };\n\n Red.prototype.isub = function isub (a, b) {\n this._verify2(a, b);\n\n var res = a.isub(b);\n if (res.cmpn(0) < 0) {\n res.iadd(this.m);\n }\n return res;\n };\n\n Red.prototype.shl = function shl (a, num) {\n this._verify1(a);\n return this.imod(a.ushln(num));\n };\n\n Red.prototype.imul = function imul (a, b) {\n this._verify2(a, b);\n return this.imod(a.imul(b));\n };\n\n Red.prototype.mul = function mul (a, b) {\n this._verify2(a, b);\n return this.imod(a.mul(b));\n };\n\n Red.prototype.isqr = function isqr (a) {\n return this.imul(a, a.clone());\n };\n\n Red.prototype.sqr = function sqr (a) {\n return this.mul(a, a);\n };\n\n Red.prototype.sqrt = function sqrt (a) {\n if (a.isZero()) return a.clone();\n\n var mod3 = this.m.andln(3);\n assert(mod3 % 2 === 1);\n\n // Fast case\n if (mod3 === 3) {\n var pow = this.m.add(new BN(1)).iushrn(2);\n return this.pow(a, pow);\n }\n\n // Tonelli-Shanks algorithm (Totally unoptimized and slow)\n //\n // Find Q and S, that Q * 2 ^ S = (P - 1)\n var q = this.m.subn(1);\n var s = 0;\n while (!q.isZero() && q.andln(1) === 0) {\n s++;\n q.iushrn(1);\n }\n assert(!q.isZero());\n\n var one = new BN(1).toRed(this);\n var nOne = one.redNeg();\n\n // Find quadratic non-residue\n // NOTE: Max is such because of generalized Riemann hypothesis.\n var lpow = this.m.subn(1).iushrn(1);\n var z = this.m.bitLength();\n z = new BN(2 * z * z).toRed(this);\n\n while (this.pow(z, lpow).cmp(nOne) !== 0) {\n z.redIAdd(nOne);\n }\n\n var c = this.pow(z, q);\n var r = this.pow(a, q.addn(1).iushrn(1));\n var t = this.pow(a, q);\n var m = s;\n while (t.cmp(one) !== 0) {\n var tmp = t;\n for (var i = 0; tmp.cmp(one) !== 0; i++) {\n tmp = tmp.redSqr();\n }\n assert(i < m);\n var b = this.pow(c, new BN(1).iushln(m - i - 1));\n\n r = r.redMul(b);\n c = b.redSqr();\n t = t.redMul(c);\n m = i;\n }\n\n return r;\n };\n\n Red.prototype.invm = function invm (a) {\n var inv = a._invmp(this.m);\n if (inv.negative !== 0) {\n inv.negative = 0;\n return this.imod(inv).redNeg();\n } else {\n return this.imod(inv);\n }\n };\n\n Red.prototype.pow = function pow (a, num) {\n if (num.isZero()) return new BN(1);\n if (num.cmpn(1) === 0) return a.clone();\n\n var windowSize = 4;\n var wnd = new Array(1 << windowSize);\n wnd[0] = new BN(1).toRed(this);\n wnd[1] = a;\n for (var i = 2; i < wnd.length; i++) {\n wnd[i] = this.mul(wnd[i - 1], a);\n }\n\n var res = wnd[0];\n var current = 0;\n var currentLen = 0;\n var start = num.bitLength() % 26;\n if (start === 0) {\n start = 26;\n }\n\n for (i = num.length - 1; i >= 0; i--) {\n var word = num.words[i];\n for (var j = start - 1; j >= 0; j--) {\n var bit = (word >> j) & 1;\n if (res !== wnd[0]) {\n res = this.sqr(res);\n }\n\n if (bit === 0 && current === 0) {\n currentLen = 0;\n continue;\n }\n\n current <<= 1;\n current |= bit;\n currentLen++;\n if (currentLen !== windowSize && (i !== 0 || j !== 0)) continue;\n\n res = this.mul(res, wnd[current]);\n currentLen = 0;\n current = 0;\n }\n start = 26;\n }\n\n return res;\n };\n\n Red.prototype.convertTo = function convertTo (num) {\n var r = num.umod(this.m);\n\n return r === num ? r.clone() : r;\n };\n\n Red.prototype.convertFrom = function convertFrom (num) {\n var res = num.clone();\n res.red = null;\n return res;\n };\n\n //\n // Montgomery method engine\n //\n\n BN.mont = function mont (num) {\n return new Mont(num);\n };\n\n function Mont (m) {\n Red.call(this, m);\n\n this.shift = this.m.bitLength();\n if (this.shift % 26 !== 0) {\n this.shift += 26 - (this.shift % 26);\n }\n\n this.r = new BN(1).iushln(this.shift);\n this.r2 = this.imod(this.r.sqr());\n this.rinv = this.r._invmp(this.m);\n\n this.minv = this.rinv.mul(this.r).isubn(1).div(this.m);\n this.minv = this.minv.umod(this.r);\n this.minv = this.r.sub(this.minv);\n }\n inherits(Mont, Red);\n\n Mont.prototype.convertTo = function convertTo (num) {\n return this.imod(num.ushln(this.shift));\n };\n\n Mont.prototype.convertFrom = function convertFrom (num) {\n var r = this.imod(num.mul(this.rinv));\n r.red = null;\n return r;\n };\n\n Mont.prototype.imul = function imul (a, b) {\n if (a.isZero() || b.isZero()) {\n a.words[0] = 0;\n a.length = 1;\n return a;\n }\n\n var t = a.imul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.mul = function mul (a, b) {\n if (a.isZero() || b.isZero()) return new BN(0)._forceRed(this);\n\n var t = a.mul(b);\n var c = t.maskn(this.shift).mul(this.minv).imaskn(this.shift).mul(this.m);\n var u = t.isub(c).iushrn(this.shift);\n var res = u;\n if (u.cmp(this.m) >= 0) {\n res = u.isub(this.m);\n } else if (u.cmpn(0) < 0) {\n res = u.iadd(this.m);\n }\n\n return res._forceRed(this);\n };\n\n Mont.prototype.invm = function invm (a) {\n // (AR)^-1 * R^2 = (A^-1 * R^-1) * R^2 = A^-1 * R\n var res = this.imod(a._invmp(this.m).mul(this.r2));\n return res._forceRed(this);\n };\n})(typeof module === 'undefined' || module, this);\n","var BN = require('bn.js');\nvar stripHexPrefix = require('strip-hex-prefix');\n\n/**\n * Returns a BN object, converts a number value to a BN\n * @param {String|Number|Object} `arg` input a string number, hex string number, number, BigNumber or BN object\n * @return {Object} `output` BN object of the number\n * @throws if the argument is not an array, object that isn't a bignumber, not a string number or number\n */\nmodule.exports = function numberToBN(arg) {\n if (typeof arg === 'string' || typeof arg === 'number') {\n var multiplier = new BN(1); // eslint-disable-line\n var formattedString = String(arg).toLowerCase().trim();\n var isHexPrefixed = formattedString.substr(0, 2) === '0x' || formattedString.substr(0, 3) === '-0x';\n var stringArg = stripHexPrefix(formattedString); // eslint-disable-line\n if (stringArg.substr(0, 1) === '-') {\n stringArg = stripHexPrefix(stringArg.slice(1));\n multiplier = new BN(-1, 10);\n }\n stringArg = stringArg === '' ? '0' : stringArg;\n\n if ((!stringArg.match(/^-?[0-9]+$/) && stringArg.match(/^[0-9A-Fa-f]+$/))\n || stringArg.match(/^[a-fA-F]+$/)\n || (isHexPrefixed === true && stringArg.match(/^[0-9A-Fa-f]+$/))) {\n return new BN(stringArg, 16).mul(multiplier);\n }\n\n if ((stringArg.match(/^-?[0-9]+$/) || stringArg === '') && isHexPrefixed === false) {\n return new BN(stringArg, 10).mul(multiplier);\n }\n } else if (typeof arg === 'object' && arg.toString && (!arg.pop && !arg.push)) {\n if (arg.toString(10).match(/^-?[0-9]+$/) && (arg.mul || arg.dividedToIntegerBy)) {\n return new BN(arg.toString(10), 10);\n }\n }\n\n throw new Error('[number-to-bn] while converting number ' + JSON.stringify(arg) + ' to BN.js instance, error: invalid number value. Value must be an integer, hex string, BN or BigNumber instance. Note, decimals are not supported.');\n}\n","/*\nobject-assign\n(c) Sindre Sorhus\n@license MIT\n*/\n\n'use strict';\n/* eslint-disable no-unused-vars */\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar hasOwnProperty = Object.prototype.hasOwnProperty;\nvar propIsEnumerable = Object.prototype.propertyIsEnumerable;\n\nfunction toObject(val) {\n\tif (val === null || val === undefined) {\n\t\tthrow new TypeError('Object.assign cannot be called with null or undefined');\n\t}\n\n\treturn Object(val);\n}\n\nfunction shouldUseNative() {\n\ttry {\n\t\tif (!Object.assign) {\n\t\t\treturn false;\n\t\t}\n\n\t\t// Detect buggy property enumeration order in older V8 versions.\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=4118\n\t\tvar test1 = new String('abc'); // eslint-disable-line no-new-wrappers\n\t\ttest1[5] = 'de';\n\t\tif (Object.getOwnPropertyNames(test1)[0] === '5') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test2 = {};\n\t\tfor (var i = 0; i < 10; i++) {\n\t\t\ttest2['_' + String.fromCharCode(i)] = i;\n\t\t}\n\t\tvar order2 = Object.getOwnPropertyNames(test2).map(function (n) {\n\t\t\treturn test2[n];\n\t\t});\n\t\tif (order2.join('') !== '0123456789') {\n\t\t\treturn false;\n\t\t}\n\n\t\t// https://bugs.chromium.org/p/v8/issues/detail?id=3056\n\t\tvar test3 = {};\n\t\t'abcdefghijklmnopqrst'.split('').forEach(function (letter) {\n\t\t\ttest3[letter] = letter;\n\t\t});\n\t\tif (Object.keys(Object.assign({}, test3)).join('') !==\n\t\t\t\t'abcdefghijklmnopqrst') {\n\t\t\treturn false;\n\t\t}\n\n\t\treturn true;\n\t} catch (err) {\n\t\t// We don't expect any of the above to throw, but better to be safe.\n\t\treturn false;\n\t}\n}\n\nmodule.exports = shouldUseNative() ? Object.assign : function (target, source) {\n\tvar from;\n\tvar to = toObject(target);\n\tvar symbols;\n\n\tfor (var s = 1; s < arguments.length; s++) {\n\t\tfrom = Object(arguments[s]);\n\n\t\tfor (var key in from) {\n\t\t\tif (hasOwnProperty.call(from, key)) {\n\t\t\t\tto[key] = from[key];\n\t\t\t}\n\t\t}\n\n\t\tif (getOwnPropertySymbols) {\n\t\t\tsymbols = getOwnPropertySymbols(from);\n\t\t\tfor (var i = 0; i < symbols.length; i++) {\n\t\t\t\tif (propIsEnumerable.call(from, symbols[i])) {\n\t\t\t\t\tto[symbols[i]] = from[symbols[i]];\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\n\treturn to;\n};\n","'use strict';\n\nvar numberIsNaN = function (value) {\n\treturn value !== value;\n};\n\nmodule.exports = function is(a, b) {\n\tif (a === 0 && b === 0) {\n\t\treturn 1 / a === 1 / b;\n\t}\n\tif (a === b) {\n\t\treturn true;\n\t}\n\tif (numberIsNaN(a) && numberIsNaN(b)) {\n\t\treturn true;\n\t}\n\treturn false;\n};\n\n","'use strict';\n\nvar define = require('define-properties');\nvar callBind = require('call-bind');\n\nvar implementation = require('./implementation');\nvar getPolyfill = require('./polyfill');\nvar shim = require('./shim');\n\nvar polyfill = callBind(getPolyfill(), Object);\n\ndefine(polyfill, {\n\tgetPolyfill: getPolyfill,\n\timplementation: implementation,\n\tshim: shim\n});\n\nmodule.exports = polyfill;\n","'use strict';\n\nvar implementation = require('./implementation');\n\nmodule.exports = function getPolyfill() {\n\treturn typeof Object.is === 'function' ? Object.is : implementation;\n};\n","'use strict';\n\nvar getPolyfill = require('./polyfill');\nvar define = require('define-properties');\n\nmodule.exports = function shimObjectIs() {\n\tvar polyfill = getPolyfill();\n\tdefine(Object, { is: polyfill }, {\n\t\tis: function testObjectIs() {\n\t\t\treturn Object.is !== polyfill;\n\t\t}\n\t});\n\treturn polyfill;\n};\n","'use strict';\n\nvar keysShim;\nif (!Object.keys) {\n\t// modified from https://github.com/es-shims/es5-shim\n\tvar has = Object.prototype.hasOwnProperty;\n\tvar toStr = Object.prototype.toString;\n\tvar isArgs = require('./isArguments'); // eslint-disable-line global-require\n\tvar isEnumerable = Object.prototype.propertyIsEnumerable;\n\tvar hasDontEnumBug = !isEnumerable.call({ toString: null }, 'toString');\n\tvar hasProtoEnumBug = isEnumerable.call(function () {}, 'prototype');\n\tvar dontEnums = [\n\t\t'toString',\n\t\t'toLocaleString',\n\t\t'valueOf',\n\t\t'hasOwnProperty',\n\t\t'isPrototypeOf',\n\t\t'propertyIsEnumerable',\n\t\t'constructor'\n\t];\n\tvar equalsConstructorPrototype = function (o) {\n\t\tvar ctor = o.constructor;\n\t\treturn ctor && ctor.prototype === o;\n\t};\n\tvar excludedKeys = {\n\t\t$applicationCache: true,\n\t\t$console: true,\n\t\t$external: true,\n\t\t$frame: true,\n\t\t$frameElement: true,\n\t\t$frames: true,\n\t\t$innerHeight: true,\n\t\t$innerWidth: true,\n\t\t$onmozfullscreenchange: true,\n\t\t$onmozfullscreenerror: true,\n\t\t$outerHeight: true,\n\t\t$outerWidth: true,\n\t\t$pageXOffset: true,\n\t\t$pageYOffset: true,\n\t\t$parent: true,\n\t\t$scrollLeft: true,\n\t\t$scrollTop: true,\n\t\t$scrollX: true,\n\t\t$scrollY: true,\n\t\t$self: true,\n\t\t$webkitIndexedDB: true,\n\t\t$webkitStorageInfo: true,\n\t\t$window: true\n\t};\n\tvar hasAutomationEqualityBug = (function () {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined') { return false; }\n\t\tfor (var k in window) {\n\t\t\ttry {\n\t\t\t\tif (!excludedKeys['$' + k] && has.call(window, k) && window[k] !== null && typeof window[k] === 'object') {\n\t\t\t\t\ttry {\n\t\t\t\t\t\tequalsConstructorPrototype(window[k]);\n\t\t\t\t\t} catch (e) {\n\t\t\t\t\t\treturn true;\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t} catch (e) {\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t}());\n\tvar equalsConstructorPrototypeIfNotBuggy = function (o) {\n\t\t/* global window */\n\t\tif (typeof window === 'undefined' || !hasAutomationEqualityBug) {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t}\n\t\ttry {\n\t\t\treturn equalsConstructorPrototype(o);\n\t\t} catch (e) {\n\t\t\treturn false;\n\t\t}\n\t};\n\n\tkeysShim = function keys(object) {\n\t\tvar isObject = object !== null && typeof object === 'object';\n\t\tvar isFunction = toStr.call(object) === '[object Function]';\n\t\tvar isArguments = isArgs(object);\n\t\tvar isString = isObject && toStr.call(object) === '[object String]';\n\t\tvar theKeys = [];\n\n\t\tif (!isObject && !isFunction && !isArguments) {\n\t\t\tthrow new TypeError('Object.keys called on a non-object');\n\t\t}\n\n\t\tvar skipProto = hasProtoEnumBug && isFunction;\n\t\tif (isString && object.length > 0 && !has.call(object, 0)) {\n\t\t\tfor (var i = 0; i < object.length; ++i) {\n\t\t\t\ttheKeys.push(String(i));\n\t\t\t}\n\t\t}\n\n\t\tif (isArguments && object.length > 0) {\n\t\t\tfor (var j = 0; j < object.length; ++j) {\n\t\t\t\ttheKeys.push(String(j));\n\t\t\t}\n\t\t} else {\n\t\t\tfor (var name in object) {\n\t\t\t\tif (!(skipProto && name === 'prototype') && has.call(object, name)) {\n\t\t\t\t\ttheKeys.push(String(name));\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tif (hasDontEnumBug) {\n\t\t\tvar skipConstructor = equalsConstructorPrototypeIfNotBuggy(object);\n\n\t\t\tfor (var k = 0; k < dontEnums.length; ++k) {\n\t\t\t\tif (!(skipConstructor && dontEnums[k] === 'constructor') && has.call(object, dontEnums[k])) {\n\t\t\t\t\ttheKeys.push(dontEnums[k]);\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t\treturn theKeys;\n\t};\n}\nmodule.exports = keysShim;\n","'use strict';\n\nvar slice = Array.prototype.slice;\nvar isArgs = require('./isArguments');\n\nvar origKeys = Object.keys;\nvar keysShim = origKeys ? function keys(o) { return origKeys(o); } : require('./implementation');\n\nvar originalKeys = Object.keys;\n\nkeysShim.shim = function shimObjectKeys() {\n\tif (Object.keys) {\n\t\tvar keysWorksWithArguments = (function () {\n\t\t\t// Safari 5.0 bug\n\t\t\tvar args = Object.keys(arguments);\n\t\t\treturn args && args.length === arguments.length;\n\t\t}(1, 2));\n\t\tif (!keysWorksWithArguments) {\n\t\t\tObject.keys = function keys(object) { // eslint-disable-line func-name-matching\n\t\t\t\tif (isArgs(object)) {\n\t\t\t\t\treturn originalKeys(slice.call(object));\n\t\t\t\t}\n\t\t\t\treturn originalKeys(object);\n\t\t\t};\n\t\t}\n\t} else {\n\t\tObject.keys = keysShim;\n\t}\n\treturn Object.keys || keysShim;\n};\n\nmodule.exports = keysShim;\n","'use strict';\n\nvar toStr = Object.prototype.toString;\n\nmodule.exports = function isArguments(value) {\n\tvar str = toStr.call(value);\n\tvar isArgs = str === '[object Arguments]';\n\tif (!isArgs) {\n\t\tisArgs = str !== '[object Array]' &&\n\t\t\tvalue !== null &&\n\t\t\ttypeof value === 'object' &&\n\t\t\ttypeof value.length === 'number' &&\n\t\t\tvalue.length >= 0 &&\n\t\t\ttoStr.call(value.callee) === '[object Function]';\n\t}\n\treturn isArgs;\n};\n","/*!\n * v2.1.4-104-gc868b3a\n * \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(\"oboe\", [], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"oboe\"] = factory();\n\telse\n\t\troot[\"oboe\"] = factory();\n})(typeof self !== 'undefined' ? self : this, function() {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, {\n/******/ \t\t\t\tconfigurable: false,\n/******/ \t\t\t\tenumerable: true,\n/******/ \t\t\t\tget: getter\n/******/ \t\t\t});\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 7);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return partialComplete; });\n/* unused harmony export compose */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return compose2; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return attr; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return lazyUnion; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return apply; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return varArgs; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return flip; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return lazyIntersection; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return noop; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return always; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return functor; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n\n\n/**\n * Partially complete a function.\n *\n * var add3 = partialComplete( function add(a,b){return a+b}, 3 );\n *\n * add3(4) // gives 7\n *\n * function wrap(left, right, cen){return left + \" \" + cen + \" \" + right;}\n *\n * var pirateGreeting = partialComplete( wrap , \"I'm\", \", a mighty pirate!\" );\n *\n * pirateGreeting(\"Guybrush Threepwood\");\n * // gives \"I'm Guybrush Threepwood, a mighty pirate!\"\n */\nvar partialComplete = varArgs(function (fn, args) {\n // this isn't the shortest way to write this but it does\n // avoid creating a new array each time to pass to fn.apply,\n // otherwise could just call boundArgs.concat(callArgs)\n\n var numBoundArgs = args.length\n\n return varArgs(function (callArgs) {\n for (var i = 0; i < callArgs.length; i++) {\n args[numBoundArgs + i] = callArgs[i]\n }\n\n args.length = numBoundArgs + callArgs.length\n\n return fn.apply(this, args)\n })\n})\n\n/**\n* Compose zero or more functions:\n*\n* compose(f1, f2, f3)(x) = f1(f2(f3(x))))\n*\n* The last (inner-most) function may take more than one parameter:\n*\n* compose(f1, f2, f3)(x,y) = f1(f2(f3(x,y))))\n*/\nvar compose = varArgs(function (fns) {\n var fnsList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"c\" /* arrayAsList */])(fns)\n\n function next (params, curFn) {\n return [apply(params, curFn)]\n }\n\n return varArgs(function (startParams) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"f\" /* foldR */])(next, startParams, fnsList)[0]\n })\n})\n\n/**\n* A more optimised version of compose that takes exactly two functions\n* @param f1\n* @param f2\n*/\nfunction compose2 (f1, f2) {\n return function () {\n return f1.call(this, f2.apply(this, arguments))\n }\n}\n\n/**\n* Generic form for a function to get a property from an object\n*\n* var o = {\n* foo:'bar'\n* }\n*\n* var getFoo = attr('foo')\n*\n* fetFoo(o) // returns 'bar'\n*\n* @param {String} key the property name\n*/\nfunction attr (key) {\n return function (o) { return o[key] }\n}\n\n/**\n* Call a list of functions with the same args until one returns a\n* truthy result. Similar to the || operator.\n*\n* So:\n* lazyUnion([f1,f2,f3 ... fn])( p1, p2 ... pn )\n*\n* Is equivalent to:\n* apply([p1, p2 ... pn], f1) ||\n* apply([p1, p2 ... pn], f2) ||\n* apply([p1, p2 ... pn], f3) ... apply(fn, [p1, p2 ... pn])\n*\n* @returns the first return value that is given that is truthy.\n*/\nvar lazyUnion = varArgs(function (fns) {\n return varArgs(function (params) {\n var maybeValue\n\n for (var i = 0; i < attr('length')(fns); i++) {\n maybeValue = apply(params, fns[i])\n\n if (maybeValue) {\n return maybeValue\n }\n }\n })\n})\n\n/**\n* This file declares various pieces of functional programming.\n*\n* This isn't a general purpose functional library, to keep things small it\n* has just the parts useful for Oboe.js.\n*/\n\n/**\n* Call a single function with the given arguments array.\n* Basically, a functional-style version of the OO-style Function#apply for\n* when we don't care about the context ('this') of the call.\n*\n* The order of arguments allows partial completion of the arguments array\n*/\nfunction apply (args, fn) {\n return fn.apply(undefined, args)\n}\n\n/**\n* Define variable argument functions but cut out all that tedious messing about\n* with the arguments object. Delivers the variable-length part of the arguments\n* list as an array.\n*\n* Eg:\n*\n* var myFunction = varArgs(\n* function( fixedArgument, otherFixedArgument, variableNumberOfArguments ){\n* console.log( variableNumberOfArguments );\n* }\n* )\n*\n* myFunction('a', 'b', 1, 2, 3); // logs [1,2,3]\n*\n* var myOtherFunction = varArgs(function( variableNumberOfArguments ){\n* console.log( variableNumberOfArguments );\n* })\n*\n* myFunction(1, 2, 3); // logs [1,2,3]\n*\n*/\nfunction varArgs (fn) {\n var numberOfFixedArguments = fn.length - 1\n var slice = Array.prototype.slice\n\n if (numberOfFixedArguments === 0) {\n // an optimised case for when there are no fixed args:\n\n return function () {\n return fn.call(this, slice.call(arguments))\n }\n } else if (numberOfFixedArguments === 1) {\n // an optimised case for when there are is one fixed args:\n\n return function () {\n return fn.call(this, arguments[0], slice.call(arguments, 1))\n }\n }\n\n // general case\n\n // we know how many arguments fn will always take. Create a\n // fixed-size array to hold that many, to be re-used on\n // every call to the returned function\n var argsHolder = Array(fn.length)\n\n return function () {\n for (var i = 0; i < numberOfFixedArguments; i++) {\n argsHolder[i] = arguments[i]\n }\n\n argsHolder[numberOfFixedArguments] =\n slice.call(arguments, numberOfFixedArguments)\n\n return fn.apply(this, argsHolder)\n }\n}\n\n/**\n* Swap the order of parameters to a binary function\n*\n* A bit like this flip: http://zvon.org/other/haskell/Outputprelude/flip_f.html\n*/\nfunction flip (fn) {\n return function (a, b) {\n return fn(b, a)\n }\n}\n\n/**\n* Create a function which is the intersection of two other functions.\n*\n* Like the && operator, if the first is truthy, the second is never called,\n* otherwise the return value from the second is returned.\n*/\nfunction lazyIntersection (fn1, fn2) {\n return function (param) {\n return fn1(param) && fn2(param)\n }\n}\n\n/**\n* A function which does nothing\n*/\nfunction noop () { }\n\n/**\n* A function which is always happy\n*/\nfunction always () { return true }\n\n/**\n* Create a function which always returns the same\n* value\n*\n* var return3 = functor(3);\n*\n* return3() // gives 3\n* return3() // still gives 3\n* return3() // will always give 3\n*/\nfunction functor (val) {\n return function () {\n return val\n }\n}\n\n\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return cons; });\n/* unused harmony export emptyList */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return head; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return tail; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return arrayAsList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return list; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return listAsArray; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return map; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return foldR; });\n/* unused harmony export foldR1 */\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return without; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return all; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return applyEach; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return reverseList; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return first; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n\n\n/**\n * Like cons in Lisp\n */\nfunction cons (x, xs) {\n /* Internally lists are linked 2-element Javascript arrays.\n\n Ideally the return here would be Object.freeze([x,xs])\n so that bugs related to mutation are found fast.\n However, cons is right on the critical path for\n performance and this slows oboe-mark down by\n ~25%. Under theoretical future JS engines that freeze more\n efficiently (possibly even use immutability to\n run faster) this should be considered for\n restoration.\n */\n\n return [x, xs]\n}\n\n/**\n * The empty list\n */\nvar emptyList = null\n\n/**\n * Get the head of a list.\n *\n * Ie, head(cons(a,b)) = a\n */\nvar head = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])(0)\n\n/**\n * Get the tail of a list.\n *\n * Ie, tail(cons(a,b)) = b\n */\nvar tail = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])(1)\n\n/**\n * Converts an array to a list\n *\n * asList([a,b,c])\n *\n * is equivalent to:\n *\n * cons(a, cons(b, cons(c, emptyList)))\n **/\nfunction arrayAsList (inputArray) {\n return reverseList(\n inputArray.reduce(\n Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"e\" /* flip */])(cons),\n emptyList\n )\n )\n}\n\n/**\n * A varargs version of arrayAsList. Works a bit like list\n * in LISP.\n *\n * list(a,b,c)\n *\n * is equivalent to:\n *\n * cons(a, cons(b, cons(c, emptyList)))\n */\nvar list = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"k\" /* varArgs */])(arrayAsList)\n\n/**\n * Convert a list back to a js native array\n */\nfunction listAsArray (list) {\n return foldR(function (arraySoFar, listItem) {\n arraySoFar.unshift(listItem)\n return arraySoFar\n }, [], list)\n}\n\n/**\n * Map a function over a list\n */\nfunction map (fn, list) {\n return list\n ? cons(fn(head(list)), map(fn, tail(list)))\n : emptyList\n}\n\n/**\n * foldR implementation. Reduce a list down to a single value.\n *\n * @pram {Function} fn (rightEval, curVal) -> result\n */\nfunction foldR (fn, startValue, list) {\n return list\n ? fn(foldR(fn, startValue, tail(list)), head(list))\n : startValue\n}\n\n/**\n * foldR implementation. Reduce a list down to a single value.\n *\n * @pram {Function} fn (rightEval, curVal) -> result\n */\nfunction foldR1 (fn, list) {\n return tail(list)\n ? fn(foldR1(fn, tail(list)), head(list))\n : head(list)\n}\n\n/**\n * Return a list like the one given but with the first instance equal\n * to item removed\n */\nfunction without (list, test, removedFn) {\n return withoutInner(list, removedFn || __WEBPACK_IMPORTED_MODULE_0__functional__[\"i\" /* noop */])\n\n function withoutInner (subList, removedFn) {\n return subList\n ? (test(head(subList))\n ? (removedFn(head(subList)), tail(subList))\n : cons(head(subList), withoutInner(tail(subList), removedFn))\n )\n : emptyList\n }\n}\n\n/**\n * Returns true if the given function holds for every item in\n * the list, false otherwise\n */\nfunction all (fn, list) {\n return !list ||\n (fn(head(list)) && all(fn, tail(list)))\n}\n\n/**\n * Call every function in a list of functions with the same arguments\n *\n * This doesn't make any sense if we're doing pure functional because\n * it doesn't return anything. Hence, this is only really useful if the\n * functions being called have side-effects.\n */\nfunction applyEach (fnList, args) {\n if (fnList) {\n head(fnList).apply(null, args)\n\n applyEach(tail(fnList), args)\n }\n}\n\n/**\n * Reverse the order of a list\n */\nfunction reverseList (list) {\n // js re-implementation of 3rd solution from:\n // http://www.haskell.org/haskellwiki/99_questions/Solutions/5\n function reverseInner (list, reversedAlready) {\n if (!list) {\n return reversedAlready\n }\n\n return reverseInner(tail(list), cons(head(list), reversedAlready))\n }\n\n return reverseInner(list, emptyList)\n}\n\nfunction first (test, list) {\n return list &&\n (test(head(list))\n ? head(list)\n : first(test, tail(list)))\n}\n\n\n\n\n/***/ }),\n/* 2 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return isOfType; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return len; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return isString; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return defined; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return hasAllProperties; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n\n\n\n/**\n * This file defines some loosely associated syntactic sugar for\n * Javascript programming\n */\n\n/**\n * Returns true if the given candidate is of type T\n */\nfunction isOfType (T, maybeSomething) {\n return maybeSomething && maybeSomething.constructor === T\n}\n\nvar len = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"c\" /* attr */])('length')\nvar isString = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(isOfType, String)\n\n/**\n * I don't like saying this:\n *\n * foo !=== undefined\n *\n * because of the double-negative. I find this:\n *\n * defined(foo)\n *\n * easier to read.\n */\nfunction defined (value) {\n return value !== undefined\n}\n\n/**\n * Returns true if object o has a key named like every property in\n * the properties array. Will give false if any are missing, or if o\n * is not an object.\n */\nfunction hasAllProperties (fieldList, o) {\n return (o instanceof Object) &&\n Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"a\" /* all */])(function (field) {\n return (field in o)\n }, fieldList)\n}\n\n\n\n\n/***/ }),\n/* 3 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"f\", function() { return NODE_OPENED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"d\", function() { return NODE_CLOSED; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"g\", function() { return NODE_SWAP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"e\", function() { return NODE_DROP; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return FAIL_EVENT; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"h\", function() { return ROOT_NODE_FOUND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"i\", function() { return ROOT_PATH_FOUND; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return HTTP_START; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"m\", function() { return STREAM_DATA; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"n\", function() { return STREAM_END; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ABORTING; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"j\", function() { return SAX_KEY; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"l\", function() { return SAX_VALUE_OPEN; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"k\", function() { return SAX_VALUE_CLOSE; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"o\", function() { return errorReport; });\n/**\n * This file declares some constants to use as names for event types.\n */\n\n// the events which are never exported are kept as\n// the smallest possible representation, in numbers:\nvar _S = 1\n\n// fired whenever a new node starts in the JSON stream:\nvar NODE_OPENED = _S++\n\n// fired whenever a node closes in the JSON stream:\nvar NODE_CLOSED = _S++\n\n// called if a .node callback returns a value -\nvar NODE_SWAP = _S++\nvar NODE_DROP = _S++\n\nvar FAIL_EVENT = 'fail'\n\nvar ROOT_NODE_FOUND = _S++\nvar ROOT_PATH_FOUND = _S++\n\nvar HTTP_START = 'start'\nvar STREAM_DATA = 'data'\nvar STREAM_END = 'end'\nvar ABORTING = _S++\n\n// SAX events butchered from Clarinet\nvar SAX_KEY = _S++\nvar SAX_VALUE_OPEN = _S++\nvar SAX_VALUE_CLOSE = _S++\n\nfunction errorReport (statusCode, body, error) {\n try {\n var jsonBody = JSON.parse(body)\n } catch (e) { }\n\n return {\n statusCode: statusCode,\n body: body,\n jsonBody: jsonBody,\n thrown: error\n }\n}\n\n\n\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return namedNode; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return keyOf; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"c\", function() { return nodeOf; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n\n\n/**\n * Get a new key->node mapping\n *\n * @param {String|Number} key\n * @param {Object|Array|String|Number|null} node a value found in the json\n */\nfunction namedNode (key, node) {\n return {key: key, node: node}\n}\n\n/** get the key of a namedNode */\nvar keyOf = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])('key')\n\n/** get the node from a namedNode */\nvar nodeOf = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])('node')\n\n\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return oboe; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__defaults__ = __webpack_require__(8);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__wire__ = __webpack_require__(9);\n\n\n\n\n\n\n// export public API\nfunction oboe (arg1) {\n // We use duck-typing to detect if the parameter given is a stream, with the\n // below list of parameters.\n // Unpipe and unshift would normally be present on a stream but this breaks\n // compatibility with Request streams.\n // See https://github.com/jimhigson/oboe.js/issues/65\n\n var nodeStreamMethodNames = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"h\" /* list */])('resume', 'pause', 'pipe')\n var isStream = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(\n __WEBPACK_IMPORTED_MODULE_2__util__[\"b\" /* hasAllProperties */],\n nodeStreamMethodNames\n )\n\n if (arg1) {\n if (isStream(arg1) || Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"d\" /* isString */])(arg1)) {\n // simple version for GETs. Signature is:\n // oboe( url )\n // or, under node:\n // oboe( readableStream )\n return Object(__WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* applyDefaults */])(\n __WEBPACK_IMPORTED_MODULE_4__wire__[\"a\" /* wire */],\n arg1 // url\n )\n } else {\n // method signature is:\n // oboe({method:m, url:u, body:b, headers:{...}})\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__defaults__[\"a\" /* applyDefaults */])(\n __WEBPACK_IMPORTED_MODULE_4__wire__[\"a\" /* wire */],\n arg1.url,\n arg1.method,\n arg1.body,\n arg1.headers,\n arg1.withCredentials,\n arg1.cached\n )\n }\n } else {\n // wire up a no-AJAX, no-stream Oboe. Will have to have content\n // fed in externally and using .emit.\n return Object(__WEBPACK_IMPORTED_MODULE_4__wire__[\"a\" /* wire */])()\n }\n}\n\n/* oboe.drop is a special value. If a node callback returns this value the\n parsed node is deleted from the JSON\n */\noboe.drop = function () {\n return oboe.drop\n}\n\n\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return incrementalContentBuilder; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ROOT_PATH; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ascent__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__lists__ = __webpack_require__(1);\n\n\n\n\n\n/**\n * This file provides various listeners which can be used to build up\n * a changing ascent based on the callbacks provided by Clarinet. It listens\n * to the low-level events from Clarinet and emits higher-level ones.\n *\n * The building up is stateless so to track a JSON file\n * ascentManager.js is required to store the ascent state\n * between calls.\n */\n\n/**\n * A special value to use in the path list to represent the path 'to' a root\n * object (which doesn't really have any path). This prevents the need for\n * special-casing detection of the root object and allows it to be treated\n * like any other object. We might think of this as being similar to the\n * 'unnamed root' domain \".\", eg if I go to\n * http://en.wikipedia.org./wiki/En/Main_page the dot after 'org' deliminates\n * the unnamed root of the DNS.\n *\n * This is kept as an object to take advantage that in Javascript's OO objects\n * are guaranteed to be distinct, therefore no other object can possibly clash\n * with this one. Strings, numbers etc provide no such guarantee.\n **/\nvar ROOT_PATH = {}\n\n/**\n * Create a new set of handlers for clarinet's events, bound to the emit\n * function given.\n */\nfunction incrementalContentBuilder (oboeBus) {\n var emitNodeOpened = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"f\" /* NODE_OPENED */]).emit\n var emitNodeClosed = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"d\" /* NODE_CLOSED */]).emit\n var emitRootOpened = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"i\" /* ROOT_PATH_FOUND */]).emit\n var emitRootClosed = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"h\" /* ROOT_NODE_FOUND */]).emit\n\n function arrayIndicesAreKeys (possiblyInconsistentAscent, newDeepestNode) {\n /* for values in arrays we aren't pre-warned of the coming paths\n (Clarinet gives no call to onkey like it does for values in objects)\n so if we are in an array we need to create this path ourselves. The\n key will be len(parentNode) because array keys are always sequential\n numbers. */\n\n var parentNode = Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(possiblyInconsistentAscent))\n\n return Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"c\" /* isOfType */])(Array, parentNode)\n ? keyFound(possiblyInconsistentAscent,\n Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"e\" /* len */])(parentNode),\n newDeepestNode\n )\n // nothing needed, return unchanged\n : possiblyInconsistentAscent\n }\n\n function nodeOpened (ascent, newDeepestNode) {\n if (!ascent) {\n // we discovered the root node,\n emitRootOpened(newDeepestNode)\n\n return keyFound(ascent, ROOT_PATH, newDeepestNode)\n }\n\n // we discovered a non-root node\n\n var arrayConsistentAscent = arrayIndicesAreKeys(ascent, newDeepestNode)\n var ancestorBranches = Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"l\" /* tail */])(arrayConsistentAscent)\n var previouslyUnmappedName = Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"a\" /* keyOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(arrayConsistentAscent))\n\n appendBuiltContent(\n ancestorBranches,\n previouslyUnmappedName,\n newDeepestNode\n )\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"d\" /* cons */])(\n Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"b\" /* namedNode */])(previouslyUnmappedName, newDeepestNode),\n ancestorBranches\n )\n }\n\n /**\n * Add a new value to the object we are building up to represent the\n * parsed JSON\n */\n function appendBuiltContent (ancestorBranches, key, node) {\n Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(ancestorBranches))[key] = node\n }\n\n /**\n * For when we find a new key in the json.\n *\n * @param {String|Number|Object} newDeepestName the key. If we are in an\n * array will be a number, otherwise a string. May take the special\n * value ROOT_PATH if the root node has just been found\n *\n * @param {String|Number|Object|Array|Null|undefined} [maybeNewDeepestNode]\n * usually this won't be known so can be undefined. Can't use null\n * to represent unknown because null is a valid value in JSON\n **/\n function keyFound (ascent, newDeepestName, maybeNewDeepestNode) {\n if (ascent) { // if not root\n // If we have the key but (unless adding to an array) no known value\n // yet. Put that key in the output but against no defined value:\n appendBuiltContent(ascent, newDeepestName, maybeNewDeepestNode)\n }\n\n var ascentWithNewPath = Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"d\" /* cons */])(\n Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"b\" /* namedNode */])(newDeepestName,\n maybeNewDeepestNode),\n ascent\n )\n\n emitNodeOpened(ascentWithNewPath)\n\n return ascentWithNewPath\n }\n\n /**\n * For when the current node ends.\n */\n function nodeClosed (ascent) {\n emitNodeClosed(ascent)\n\n return Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"l\" /* tail */])(ascent) ||\n // If there are no nodes left in the ascent the root node\n // just closed. Emit a special event for this:\n emitRootClosed(Object(__WEBPACK_IMPORTED_MODULE_1__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_3__lists__[\"g\" /* head */])(ascent)))\n }\n\n var contentBuilderHandlers = {}\n contentBuilderHandlers[__WEBPACK_IMPORTED_MODULE_0__events__[\"l\" /* SAX_VALUE_OPEN */]] = nodeOpened\n contentBuilderHandlers[__WEBPACK_IMPORTED_MODULE_0__events__[\"k\" /* SAX_VALUE_CLOSE */]] = nodeClosed\n contentBuilderHandlers[__WEBPACK_IMPORTED_MODULE_0__events__[\"j\" /* SAX_KEY */]] = keyFound\n return contentBuilderHandlers\n}\n\n\n\n\n/***/ }),\n/* 7 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\nObject.defineProperty(__webpack_exports__, \"__esModule\", { value: true });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__publicApi__ = __webpack_require__(5);\n\n\n/* harmony default export */ __webpack_exports__[\"default\"] = (__WEBPACK_IMPORTED_MODULE_0__publicApi__[\"a\" /* oboe */]);\n\n\n/***/ }),\n/* 8 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return applyDefaults; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__util__ = __webpack_require__(2);\n\n\nfunction applyDefaults (passthrough, url, httpMethodName, body, headers, withCredentials, cached) {\n headers = headers\n // Shallow-clone the headers array. This allows it to be\n // modified without side effects to the caller. We don't\n // want to change objects that the user passes in.\n ? JSON.parse(JSON.stringify(headers))\n : {}\n\n if (body) {\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__util__[\"d\" /* isString */])(body)) {\n // If the body is not a string, stringify it. This allows objects to\n // be given which will be sent as JSON.\n body = JSON.stringify(body)\n\n // Default Content-Type to JSON unless given otherwise.\n headers['Content-Type'] = headers['Content-Type'] || 'application/json'\n }\n headers['Content-Length'] = headers['Content-Length'] || body.length\n } else {\n body = null\n }\n\n // support cache busting like jQuery.ajax({cache:false})\n function modifiedUrl (baseUrl, cached) {\n if (cached === false) {\n if (baseUrl.indexOf('?') === -1) {\n baseUrl += '?'\n } else {\n baseUrl += '&'\n }\n\n baseUrl += '_=' + new Date().getTime()\n }\n return baseUrl\n }\n\n return passthrough(httpMethodName || 'GET', modifiedUrl(url, cached), body, headers, withCredentials || false)\n}\n\n\n\n\n/***/ }),\n/* 9 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return wire; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__pubSub__ = __webpack_require__(10);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__ascentManager__ = __webpack_require__(12);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__incrementalContentBuilder__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__patternAdapter__ = __webpack_require__(13);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__jsonPath__ = __webpack_require__(14);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__instanceApi__ = __webpack_require__(16);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_6__libs_clarinet__ = __webpack_require__(17);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__ = __webpack_require__(18);\n\n\n\n\n\n\n\n\n\n\n/**\n * This file sits just behind the API which is used to attain a new\n * Oboe instance. It creates the new components that are required\n * and introduces them to each other.\n */\n\nfunction wire (httpMethodName, contentSource, body, headers, withCredentials) {\n var oboeBus = Object(__WEBPACK_IMPORTED_MODULE_0__pubSub__[\"a\" /* pubSub */])()\n\n // Wire the input stream in if we are given a content source.\n // This will usually be the case. If not, the instance created\n // will have to be passed content from an external source.\n\n if (contentSource) {\n Object(__WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__[\"b\" /* streamingHttp */])(oboeBus,\n Object(__WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__[\"a\" /* httpTransport */])(),\n httpMethodName,\n contentSource,\n body,\n headers,\n withCredentials\n )\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_6__libs_clarinet__[\"a\" /* clarinet */])(oboeBus)\n\n Object(__WEBPACK_IMPORTED_MODULE_1__ascentManager__[\"a\" /* ascentManager */])(oboeBus, Object(__WEBPACK_IMPORTED_MODULE_2__incrementalContentBuilder__[\"b\" /* incrementalContentBuilder */])(oboeBus))\n\n Object(__WEBPACK_IMPORTED_MODULE_3__patternAdapter__[\"a\" /* patternAdapter */])(oboeBus, __WEBPACK_IMPORTED_MODULE_4__jsonPath__[\"a\" /* jsonPathCompiler */])\n\n return Object(__WEBPACK_IMPORTED_MODULE_5__instanceApi__[\"a\" /* instanceApi */])(oboeBus, contentSource)\n}\n\n\n\n\n/***/ }),\n/* 10 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return pubSub; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__singleEventPubSub__ = __webpack_require__(11);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n\n\n\n/**\n * pubSub is a curried interface for listening to and emitting\n * events.\n *\n * If we get a bus:\n *\n * var bus = pubSub();\n *\n * We can listen to event 'foo' like:\n *\n * bus('foo').on(myCallback)\n *\n * And emit event foo like:\n *\n * bus('foo').emit()\n *\n * or, with a parameter:\n *\n * bus('foo').emit('bar')\n *\n * All functions can be cached and don't need to be\n * bound. Ie:\n *\n * var fooEmitter = bus('foo').emit\n * fooEmitter('bar'); // emit an event\n * fooEmitter('baz'); // emit another\n *\n * There's also an uncurried[1] shortcut for .emit and .on:\n *\n * bus.on('foo', callback)\n * bus.emit('foo', 'bar')\n *\n * [1]: http://zvon.org/other/haskell/Outputprelude/uncurry_f.html\n */\nfunction pubSub () {\n var singles = {}\n var newListener = newSingle('newListener')\n var removeListener = newSingle('removeListener')\n\n function newSingle (eventName) {\n singles[eventName] = Object(__WEBPACK_IMPORTED_MODULE_0__singleEventPubSub__[\"a\" /* singleEventPubSub */])(\n eventName,\n newListener,\n removeListener\n )\n return singles[eventName]\n }\n\n /** pubSub instances are functions */\n function pubSubInstance (eventName) {\n return singles[eventName] || newSingle(eventName)\n }\n\n // add convenience EventEmitter-style uncurried form of 'emit' and 'on'\n ['emit', 'on', 'un'].forEach(function (methodName) {\n pubSubInstance[methodName] = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"k\" /* varArgs */])(function (eventName, parameters) {\n Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"b\" /* apply */])(parameters, pubSubInstance(eventName)[methodName])\n })\n })\n\n return pubSubInstance\n}\n\n\n\n\n/***/ }),\n/* 11 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return singleEventPubSub; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__functional__ = __webpack_require__(0);\n\n\n\n\n/**\n * A pub/sub which is responsible for a single event type. A\n * multi-event type event bus is created by pubSub by collecting\n * several of these.\n *\n * @param {String} eventType\n * the name of the events managed by this singleEventPubSub\n * @param {singleEventPubSub} [newListener]\n * place to notify of new listeners\n * @param {singleEventPubSub} [removeListener]\n * place to notify of when listeners are removed\n */\nfunction singleEventPubSub (eventType, newListener, removeListener) {\n /** we are optimised for emitting events over firing them.\n * As well as the tuple list which stores event ids and\n * listeners there is a list with just the listeners which\n * can be iterated more quickly when we are emitting\n */\n var listenerTupleList,\n listenerList\n\n function hasId (id) {\n return function (tuple) {\n return tuple.id === id\n }\n }\n\n return {\n\n /**\n * @param {Function} listener\n * @param {*} listenerId\n * an id that this listener can later by removed by.\n * Can be of any type, to be compared to other ids using ==\n */\n on: function (listener, listenerId) {\n var tuple = {\n listener: listener,\n id: listenerId || listener // when no id is given use the\n // listener function as the id\n }\n\n if (newListener) {\n newListener.emit(eventType, listener, tuple.id)\n }\n\n listenerTupleList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"d\" /* cons */])(tuple, listenerTupleList)\n listenerList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"d\" /* cons */])(listener, listenerList)\n\n return this // chaining\n },\n\n emit: function () {\n Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"b\" /* applyEach */])(listenerList, arguments)\n },\n\n un: function (listenerId) {\n var removed\n\n listenerTupleList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"m\" /* without */])(\n listenerTupleList,\n hasId(listenerId),\n function (tuple) {\n removed = tuple\n }\n )\n\n if (removed) {\n listenerList = Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"m\" /* without */])(listenerList, function (listener) {\n return listener === removed.listener\n })\n\n if (removeListener) {\n removeListener.emit(eventType, removed.listener, removed.id)\n }\n }\n },\n\n listeners: function () {\n // differs from Node EventEmitter: returns list, not array\n return listenerList\n },\n\n hasListener: function (listenerId) {\n var test = listenerId ? hasId(listenerId) : __WEBPACK_IMPORTED_MODULE_2__functional__[\"a\" /* always */]\n\n return Object(__WEBPACK_IMPORTED_MODULE_1__util__[\"a\" /* defined */])(Object(__WEBPACK_IMPORTED_MODULE_0__lists__[\"e\" /* first */])(test, listenerTupleList))\n }\n }\n}\n\n\n\n\n/***/ }),\n/* 12 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return ascentManager; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__ascent__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__lists__ = __webpack_require__(1);\n\n\n\n/**\n * A bridge used to assign stateless functions to listen to clarinet.\n *\n * As well as the parameter from clarinet, each callback will also be passed\n * the result of the last callback.\n *\n * This may also be used to clear all listeners by assigning zero handlers:\n *\n * ascentManager( clarinet, {} )\n */\nfunction ascentManager (oboeBus, handlers) {\n 'use strict'\n\n var listenerId = {}\n var ascent\n\n function stateAfter (handler) {\n return function (param) {\n ascent = handler(ascent, param)\n }\n }\n\n for (var eventName in handlers) {\n oboeBus(eventName).on(stateAfter(handlers[eventName]), listenerId)\n }\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"g\" /* NODE_SWAP */]).on(function (newNode) {\n var oldHead = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ascent)\n var key = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"a\" /* keyOf */])(oldHead)\n var ancestors = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"l\" /* tail */])(ascent)\n var parentNode\n\n if (ancestors) {\n parentNode = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ancestors))\n parentNode[key] = newNode\n }\n })\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"e\" /* NODE_DROP */]).on(function () {\n var oldHead = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ascent)\n var key = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"a\" /* keyOf */])(oldHead)\n var ancestors = Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"l\" /* tail */])(ascent)\n var parentNode\n\n if (ancestors) {\n parentNode = Object(__WEBPACK_IMPORTED_MODULE_0__ascent__[\"c\" /* nodeOf */])(Object(__WEBPACK_IMPORTED_MODULE_2__lists__[\"g\" /* head */])(ancestors))\n\n delete parentNode[key]\n }\n })\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* ABORTING */]).on(function () {\n for (var eventName in handlers) {\n oboeBus(eventName).un(listenerId)\n }\n })\n}\n\n\n\n\n/***/ }),\n/* 13 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return patternAdapter; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ascent__ = __webpack_require__(4);\n\n\n\n\n/**\n * The pattern adaptor listens for newListener and removeListener\n * events. When patterns are added or removed it compiles the JSONPath\n * and wires them up.\n *\n * When nodes and paths are found it emits the fully-qualified match\n * events with parameters ready to ship to the outside world\n */\n\nfunction patternAdapter (oboeBus, jsonPathCompiler) {\n var predicateEventMap = {\n node: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"d\" /* NODE_CLOSED */]),\n path: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"f\" /* NODE_OPENED */])\n }\n\n function emitMatchingNode (emitMatch, node, ascent) {\n /*\n We're now calling to the outside world where Lisp-style\n lists will not be familiar. Convert to standard arrays.\n\n Also, reverse the order because it is more common to\n list paths \"root to leaf\" than \"leaf to root\" */\n var descent = Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"k\" /* reverseList */])(ascent)\n\n emitMatch(\n node,\n\n // To make a path, strip off the last item which is the special\n // ROOT_PATH token for the 'path' to the root node\n Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"i\" /* listAsArray */])(Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"l\" /* tail */])(Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"j\" /* map */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"a\" /* keyOf */], descent))), // path\n Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"i\" /* listAsArray */])(Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"j\" /* map */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"c\" /* nodeOf */], descent)) // ancestors\n )\n }\n\n /*\n * Set up the catching of events such as NODE_CLOSED and NODE_OPENED and, if\n * matching the specified pattern, propagate to pattern-match events such as\n * oboeBus('node:!')\n *\n *\n *\n * @param {Function} predicateEvent\n * either oboeBus(NODE_CLOSED) or oboeBus(NODE_OPENED).\n * @param {Function} compiledJsonPath\n */\n function addUnderlyingListener (fullEventName, predicateEvent, compiledJsonPath) {\n var emitMatch = oboeBus(fullEventName).emit\n\n predicateEvent.on(function (ascent) {\n var maybeMatchingMapping = compiledJsonPath(ascent)\n\n /* Possible values for maybeMatchingMapping are now:\n\n false:\n we did not match\n\n an object/array/string/number/null:\n we matched and have the node that matched.\n Because nulls are valid json values this can be null.\n\n undefined:\n we matched but don't have the matching node yet.\n ie, we know there is an upcoming node that matches but we\n can't say anything else about it.\n */\n if (maybeMatchingMapping !== false) {\n emitMatchingNode(\n emitMatch,\n Object(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"c\" /* nodeOf */])(maybeMatchingMapping),\n ascent\n )\n }\n }, fullEventName)\n\n oboeBus('removeListener').on(function (removedEventName) {\n // if the fully qualified match event listener is later removed, clean up\n // by removing the underlying listener if it was the last using that pattern:\n\n if (removedEventName === fullEventName) {\n if (!oboeBus(removedEventName).listeners()) {\n predicateEvent.un(fullEventName)\n }\n }\n })\n }\n\n oboeBus('newListener').on(function (fullEventName) {\n var match = /(node|path):(.*)/.exec(fullEventName)\n\n if (match) {\n var predicateEvent = predicateEventMap[match[1]]\n\n if (!predicateEvent.hasListener(fullEventName)) {\n addUnderlyingListener(\n fullEventName,\n predicateEvent,\n jsonPathCompiler(match[2])\n )\n }\n }\n })\n}\n\n\n\n\n/***/ }),\n/* 14 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return jsonPathCompiler; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__lists__ = __webpack_require__(1);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__ascent__ = __webpack_require__(4);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__ = __webpack_require__(6);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_5__jsonPathSyntax__ = __webpack_require__(15);\n\n\n\n\n\n\n\n/**\n * The jsonPath evaluator compiler used for Oboe.js.\n *\n * One function is exposed. This function takes a String JSONPath spec and\n * returns a function to test candidate ascents for matches.\n *\n * String jsonPath -> (List ascent) -> Boolean|Object\n *\n * This file is coded in a pure functional style. That is, no function has\n * side effects, every function evaluates to the same value for the same\n * arguments and no variables are reassigned.\n */\n// the call to jsonPathSyntax injects the token syntaxes that are needed\n// inside the compiler\nvar jsonPathCompiler = Object(__WEBPACK_IMPORTED_MODULE_5__jsonPathSyntax__[\"a\" /* jsonPathSyntax */])(function (pathNodeSyntax,\n doubleDotSyntax,\n dotSyntax,\n bangSyntax,\n emptySyntax) {\n var CAPTURING_INDEX = 1\n var NAME_INDEX = 2\n var FIELD_LIST_INDEX = 3\n\n var headKey = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"a\" /* keyOf */], __WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])\n var headNode = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(__WEBPACK_IMPORTED_MODULE_2__ascent__[\"c\" /* nodeOf */], __WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])\n\n /**\n * Create an evaluator function for a named path node, expressed in the\n * JSONPath like:\n * foo\n * [\"bar\"]\n * [2]\n */\n function nameClause (previousExpr, detection) {\n var name = detection[NAME_INDEX]\n\n var matchesName = (!name || name === '*')\n ? __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]\n : function (ascent) { return String(headKey(ascent)) === name }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(matchesName, previousExpr)\n }\n\n /**\n * Create an evaluator function for a a duck-typed node, expressed like:\n *\n * {spin, taste, colour}\n * .particle{spin, taste, colour}\n * *{spin, taste, colour}\n */\n function duckTypeClause (previousExpr, detection) {\n var fieldListStr = detection[FIELD_LIST_INDEX]\n\n if (!fieldListStr) { return previousExpr } // don't wrap at all, return given expr as-is\n\n var hasAllrequiredFields = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"j\" /* partialComplete */])(\n __WEBPACK_IMPORTED_MODULE_3__util__[\"b\" /* hasAllProperties */],\n Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"c\" /* arrayAsList */])(fieldListStr.split(/\\W+/))\n )\n\n var isMatch = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(\n hasAllrequiredFields,\n headNode\n )\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(isMatch, previousExpr)\n }\n\n /**\n * Expression for $, returns the evaluator function\n */\n function capture (previousExpr, detection) {\n // extract meaning from the detection\n var capturing = !!detection[CAPTURING_INDEX]\n\n if (!capturing) { return previousExpr } // don't wrap at all, return given expr as-is\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(previousExpr, __WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])\n }\n\n /**\n * Create an evaluator function that moves onto the next item on the\n * lists. This function is the place where the logic to move up a\n * level in the ascent exists.\n *\n * Eg, for JSONPath \".foo\" we need skip1(nameClause(always, [,'foo']))\n */\n function skip1 (previousExpr) {\n if (previousExpr === __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]) {\n /* If there is no previous expression this consume command\n is at the start of the jsonPath.\n Since JSONPath specifies what we'd like to find but not\n necessarily everything leading down to it, when running\n out of JSONPath to check against we default to true */\n return __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]\n }\n\n /** return true if the ascent we have contains only the JSON root,\n * false otherwise\n */\n function notAtRoot (ascent) {\n return headKey(ascent) !== __WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__[\"a\" /* ROOT_PATH */]\n }\n\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"g\" /* lazyIntersection */])(\n /* If we're already at the root but there are more\n expressions to satisfy, can't consume any more. No match.\n\n This check is why none of the other exprs have to be able\n to handle empty lists; skip1 is the only evaluator that\n moves onto the next token and it refuses to do so once it\n reaches the last item in the list. */\n notAtRoot,\n\n /* We are not at the root of the ascent yet.\n Move to the next level of the ascent by handing only\n the tail to the previous expression */\n Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"d\" /* compose2 */])(previousExpr, __WEBPACK_IMPORTED_MODULE_1__lists__[\"l\" /* tail */])\n )\n }\n\n /**\n * Create an evaluator function for the .. (double dot) token. Consumes\n * zero or more levels of the ascent, the fewest that are required to find\n * a match when given to previousExpr.\n */\n function skipMany (previousExpr) {\n if (previousExpr === __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]) {\n /* If there is no previous expression this consume command\n is at the start of the jsonPath.\n Since JSONPath specifies what we'd like to find but not\n necessarily everything leading down to it, when running\n out of JSONPath to check against we default to true */\n return __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */]\n }\n\n // In JSONPath .. is equivalent to !.. so if .. reaches the root\n // the match has succeeded. Ie, we might write ..foo or !..foo\n // and both should match identically.\n var terminalCaseWhenArrivingAtRoot = rootExpr()\n var terminalCaseWhenPreviousExpressionIsSatisfied = previousExpr\n var recursiveCase = skip1(function (ascent) {\n return cases(ascent)\n })\n\n var cases = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"h\" /* lazyUnion */])(\n terminalCaseWhenArrivingAtRoot\n , terminalCaseWhenPreviousExpressionIsSatisfied\n , recursiveCase\n )\n\n return cases\n }\n\n /**\n * Generate an evaluator for ! - matches only the root element of the json\n * and ignores any previous expressions since nothing may precede !.\n */\n function rootExpr () {\n return function (ascent) {\n return headKey(ascent) === __WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__[\"a\" /* ROOT_PATH */]\n }\n }\n\n /**\n * Generate a statement wrapper to sit around the outermost\n * clause evaluator.\n *\n * Handles the case where the capturing is implicit because the JSONPath\n * did not contain a '$' by returning the last node.\n */\n function statementExpr (lastClause) {\n return function (ascent) {\n // kick off the evaluation by passing through to the last clause\n var exprMatch = lastClause(ascent)\n\n return exprMatch === true ? Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"g\" /* head */])(ascent) : exprMatch\n }\n }\n\n /**\n * For when a token has been found in the JSONPath input.\n * Compiles the parser for that token and returns in combination with the\n * parser already generated.\n *\n * @param {Function} exprs a list of the clause evaluator generators for\n * the token that was found\n * @param {Function} parserGeneratedSoFar the parser already found\n * @param {Array} detection the match given by the regex engine when\n * the feature was found\n */\n function expressionsReader (exprs, parserGeneratedSoFar, detection) {\n // if exprs is zero-length foldR will pass back the\n // parserGeneratedSoFar as-is so we don't need to treat\n // this as a special case\n\n return Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"f\" /* foldR */])(\n function (parserGeneratedSoFar, expr) {\n return expr(parserGeneratedSoFar, detection)\n },\n parserGeneratedSoFar,\n exprs\n )\n }\n\n /**\n * If jsonPath matches the given detector function, creates a function which\n * evaluates against every clause in the clauseEvaluatorGenerators. The\n * created function is propagated to the onSuccess function, along with\n * the remaining unparsed JSONPath substring.\n *\n * The intended use is to create a clauseMatcher by filling in\n * the first two arguments, thus providing a function that knows\n * some syntax to match and what kind of generator to create if it\n * finds it. The parameter list once completed is:\n *\n * (jsonPath, parserGeneratedSoFar, onSuccess)\n *\n * onSuccess may be compileJsonPathToFunction, to recursively continue\n * parsing after finding a match or returnFoundParser to stop here.\n */\n function generateClauseReaderIfTokenFound (\n\n tokenDetector, clauseEvaluatorGenerators,\n\n jsonPath, parserGeneratedSoFar, onSuccess) {\n var detected = tokenDetector(jsonPath)\n\n if (detected) {\n var compiledParser = expressionsReader(\n clauseEvaluatorGenerators,\n parserGeneratedSoFar,\n detected\n )\n\n var remainingUnparsedJsonPath = jsonPath.substr(Object(__WEBPACK_IMPORTED_MODULE_3__util__[\"e\" /* len */])(detected[0]))\n\n return onSuccess(remainingUnparsedJsonPath, compiledParser)\n }\n }\n\n /**\n * Partially completes generateClauseReaderIfTokenFound above.\n */\n function clauseMatcher (tokenDetector, exprs) {\n return Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"j\" /* partialComplete */])(\n generateClauseReaderIfTokenFound,\n tokenDetector,\n exprs\n )\n }\n\n /**\n * clauseForJsonPath is a function which attempts to match against\n * several clause matchers in order until one matches. If non match the\n * jsonPath expression is invalid and an error is thrown.\n *\n * The parameter list is the same as a single clauseMatcher:\n *\n * (jsonPath, parserGeneratedSoFar, onSuccess)\n */\n var clauseForJsonPath = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"h\" /* lazyUnion */])(\n\n clauseMatcher(pathNodeSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(capture,\n duckTypeClause,\n nameClause,\n skip1))\n\n , clauseMatcher(doubleDotSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(skipMany))\n\n // dot is a separator only (like whitespace in other languages) but\n // rather than make it a special case, use an empty list of\n // expressions when this token is found\n , clauseMatcher(dotSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])())\n\n , clauseMatcher(bangSyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(capture,\n rootExpr))\n\n , clauseMatcher(emptySyntax, Object(__WEBPACK_IMPORTED_MODULE_1__lists__[\"h\" /* list */])(statementExpr))\n\n , function (jsonPath) {\n throw Error('\"' + jsonPath + '\" could not be tokenised')\n }\n )\n\n /**\n * One of two possible values for the onSuccess argument of\n * generateClauseReaderIfTokenFound.\n *\n * When this function is used, generateClauseReaderIfTokenFound simply\n * returns the compiledParser that it made, regardless of if there is\n * any remaining jsonPath to be compiled.\n */\n function returnFoundParser (_remainingJsonPath, compiledParser) {\n return compiledParser\n }\n\n /**\n * Recursively compile a JSONPath expression.\n *\n * This function serves as one of two possible values for the onSuccess\n * argument of generateClauseReaderIfTokenFound, meaning continue to\n * recursively compile. Otherwise, returnFoundParser is given and\n * compilation terminates.\n */\n function compileJsonPathToFunction (uncompiledJsonPath,\n parserGeneratedSoFar) {\n /**\n * On finding a match, if there is remaining text to be compiled\n * we want to either continue parsing using a recursive call to\n * compileJsonPathToFunction. Otherwise, we want to stop and return\n * the parser that we have found so far.\n */\n var onFind = uncompiledJsonPath\n ? compileJsonPathToFunction\n : returnFoundParser\n\n return clauseForJsonPath(\n uncompiledJsonPath,\n parserGeneratedSoFar,\n onFind\n )\n }\n\n /**\n * This is the function that we expose to the rest of the library.\n */\n return function (jsonPath) {\n try {\n // Kick off the recursive parsing of the jsonPath\n return compileJsonPathToFunction(jsonPath, __WEBPACK_IMPORTED_MODULE_0__functional__[\"a\" /* always */])\n } catch (e) {\n throw Error('Could not compile \"' + jsonPath +\n '\" because ' + e.message\n )\n }\n }\n})\n\n\n\n\n/***/ }),\n/* 15 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return jsonPathSyntax; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__functional__ = __webpack_require__(0);\n\n\nvar jsonPathSyntax = (function () {\n /**\n * Export a regular expression as a simple function by exposing just\n * the Regex#exec. This allows regex tests to be used under the same\n * interface as differently implemented tests, or for a user of the\n * tests to not concern themselves with their implementation as regular\n * expressions.\n *\n * This could also be expressed point-free as:\n * Function.prototype.bind.bind(RegExp.prototype.exec),\n *\n * But that's far too confusing! (and not even smaller once minified\n * and gzipped)\n */\n var regexDescriptor = function regexDescriptor (regex) {\n return regex.exec.bind(regex)\n }\n\n /**\n * Join several regular expressions and express as a function.\n * This allows the token patterns to reuse component regular expressions\n * instead of being expressed in full using huge and confusing regular\n * expressions.\n */\n var jsonPathClause = Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"k\" /* varArgs */])(function (componentRegexes) {\n // The regular expressions all start with ^ because we\n // only want to find matches at the start of the\n // JSONPath fragment we are inspecting\n componentRegexes.unshift(/^/)\n\n return regexDescriptor(\n RegExp(\n componentRegexes.map(Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"c\" /* attr */])('source')).join('')\n )\n )\n })\n\n var possiblyCapturing = /(\\$?)/\n var namedNode = /([\\w-_]+|\\*)/\n var namePlaceholder = /()/\n var nodeInArrayNotation = /\\[\"([^\"]+)\"\\]/\n var numberedNodeInArrayNotation = /\\[(\\d+|\\*)\\]/\n var fieldList = /{([\\w ]*?)}/\n var optionalFieldList = /(?:{([\\w ]*?)})?/\n\n // foo or *\n var jsonPathNamedNodeInObjectNotation = jsonPathClause(\n possiblyCapturing,\n namedNode,\n optionalFieldList\n )\n\n // [\"foo\"]\n var jsonPathNamedNodeInArrayNotation = jsonPathClause(\n possiblyCapturing,\n nodeInArrayNotation,\n optionalFieldList\n )\n\n // [2] or [*]\n var jsonPathNumberedNodeInArrayNotation = jsonPathClause(\n possiblyCapturing,\n numberedNodeInArrayNotation,\n optionalFieldList\n )\n\n // {a b c}\n var jsonPathPureDuckTyping = jsonPathClause(\n possiblyCapturing,\n namePlaceholder,\n fieldList\n )\n\n // ..\n var jsonPathDoubleDot = jsonPathClause(/\\.\\./)\n\n // .\n var jsonPathDot = jsonPathClause(/\\./)\n\n // !\n var jsonPathBang = jsonPathClause(\n possiblyCapturing,\n /!/\n )\n\n // nada!\n var emptyString = jsonPathClause(/$/)\n\n /* We export only a single function. When called, this function injects\n into another function the descriptors from above.\n */\n return function (fn) {\n return fn(\n Object(__WEBPACK_IMPORTED_MODULE_0__functional__[\"h\" /* lazyUnion */])(\n jsonPathNamedNodeInObjectNotation\n , jsonPathNamedNodeInArrayNotation\n , jsonPathNumberedNodeInArrayNotation\n , jsonPathPureDuckTyping\n )\n , jsonPathDoubleDot\n , jsonPathDot\n , jsonPathBang\n , emptyString\n )\n }\n}())\n\n\n\n\n/***/ }),\n/* 16 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return instanceApi; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__functional__ = __webpack_require__(0);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__publicApi__ = __webpack_require__(5);\n\n\n\n\n\n/**\n * The instance API is the thing that is returned when oboe() is called.\n * it allows:\n *\n * - listeners for various events to be added and removed\n * - the http response header/headers to be read\n */\nfunction instanceApi (oboeBus, contentSource) {\n var oboeApi\n var fullyQualifiedNamePattern = /^(node|path):./\n var rootNodeFinishedEvent = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"h\" /* ROOT_NODE_FOUND */])\n var emitNodeDrop = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"e\" /* NODE_DROP */]).emit\n var emitNodeSwap = oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"g\" /* NODE_SWAP */]).emit\n\n /**\n * Add any kind of listener that the instance api exposes\n */\n var addListener = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"k\" /* varArgs */])(function (eventId, parameters) {\n if (oboeApi[eventId]) {\n // for events added as .on(event, callback), if there is a\n // .event() equivalent with special behaviour , pass through\n // to that:\n Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"b\" /* apply */])(parameters, oboeApi[eventId])\n } else {\n // we have a standard Node.js EventEmitter 2-argument call.\n // The first parameter is the listener.\n var event = oboeBus(eventId)\n var listener = parameters[0]\n\n if (fullyQualifiedNamePattern.test(eventId)) {\n // allow fully-qualified node/path listeners\n // to be added\n addForgettableCallback(event, wrapCallbackToSwapNodeIfSomethingReturned(listener))\n } else {\n // the event has no special handling, pass through\n // directly onto the event bus:\n event.on(listener)\n }\n }\n\n return oboeApi // chaining\n })\n\n /**\n * Remove any kind of listener that the instance api exposes\n */\n var removeListener = function (eventId, p2, p3) {\n if (eventId === 'done') {\n rootNodeFinishedEvent.un(p2)\n } else if (eventId === 'node' || eventId === 'path') {\n // allow removal of node and path\n oboeBus.un(eventId + ':' + p2, p3)\n } else {\n // we have a standard Node.js EventEmitter 2-argument call.\n // The second parameter is the listener. This may be a call\n // to remove a fully-qualified node/path listener but requires\n // no special handling\n var listener = p2\n\n oboeBus(eventId).un(listener)\n }\n\n return oboeApi // chaining\n }\n\n /**\n * Add a callback, wrapped in a try/catch so as to not break the\n * execution of Oboe if an exception is thrown (fail events are\n * fired instead)\n *\n * The callback is used as the listener id so that it can later be\n * removed using .un(callback)\n */\n function addProtectedCallback (eventName, callback) {\n oboeBus(eventName).on(protectedCallback(callback), callback)\n return oboeApi // chaining\n }\n\n /**\n * Add a callback where, if .forget() is called during the callback's\n * execution, the callback will be de-registered\n */\n function addForgettableCallback (event, callback, listenerId) {\n // listenerId is optional and if not given, the original\n // callback will be used\n listenerId = listenerId || callback\n\n var safeCallback = protectedCallback(callback)\n\n event.on(function () {\n var discard = false\n\n oboeApi.forget = function () {\n discard = true\n }\n\n Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"b\" /* apply */])(arguments, safeCallback)\n\n delete oboeApi.forget\n\n if (discard) {\n event.un(listenerId)\n }\n }, listenerId)\n\n return oboeApi // chaining\n }\n\n /**\n * wrap a callback so that if it throws, Oboe.js doesn't crash but instead\n * throw the error in another event loop\n */\n function protectedCallback (callback) {\n return function () {\n try {\n return callback.apply(oboeApi, arguments)\n } catch (e) {\n setTimeout(function () {\n throw new Error(e.message)\n })\n }\n }\n }\n\n /**\n * Return the fully qualified event for when a pattern matches\n * either a node or a path\n *\n * @param type {String} either 'node' or 'path'\n */\n function fullyQualifiedPatternMatchEvent (type, pattern) {\n return oboeBus(type + ':' + pattern)\n }\n\n function wrapCallbackToSwapNodeIfSomethingReturned (callback) {\n return function () {\n var returnValueFromCallback = callback.apply(this, arguments)\n\n if (Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"a\" /* defined */])(returnValueFromCallback)) {\n if (returnValueFromCallback === __WEBPACK_IMPORTED_MODULE_3__publicApi__[\"a\" /* oboe */].drop) {\n emitNodeDrop()\n } else {\n emitNodeSwap(returnValueFromCallback)\n }\n }\n }\n }\n\n function addSingleNodeOrPathListener (eventId, pattern, callback) {\n var effectiveCallback\n\n if (eventId === 'node') {\n effectiveCallback = wrapCallbackToSwapNodeIfSomethingReturned(callback)\n } else {\n effectiveCallback = callback\n }\n\n addForgettableCallback(\n fullyQualifiedPatternMatchEvent(eventId, pattern),\n effectiveCallback,\n callback\n )\n }\n\n /**\n * Add several listeners at a time, from a map\n */\n function addMultipleNodeOrPathListeners (eventId, listenerMap) {\n for (var pattern in listenerMap) {\n addSingleNodeOrPathListener(eventId, pattern, listenerMap[pattern])\n }\n }\n\n /**\n * implementation behind .onPath() and .onNode()\n */\n function addNodeOrPathListenerApi (eventId, jsonPathOrListenerMap, callback) {\n if (Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"d\" /* isString */])(jsonPathOrListenerMap)) {\n addSingleNodeOrPathListener(eventId, jsonPathOrListenerMap, callback)\n } else {\n addMultipleNodeOrPathListeners(eventId, jsonPathOrListenerMap)\n }\n\n return oboeApi // chaining\n }\n\n // some interface methods are only filled in after we receive\n // values and are noops before that:\n oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"i\" /* ROOT_PATH_FOUND */]).on(function (rootNode) {\n oboeApi.root = Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"f\" /* functor */])(rootNode)\n })\n\n /**\n * When content starts make the headers readable through the\n * instance API\n */\n oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"c\" /* HTTP_START */]).on(function (_statusCode, headers) {\n oboeApi.header = function (name) {\n return name ? headers[name]\n : headers\n }\n })\n\n /**\n * Construct and return the public API of the Oboe instance to be\n * returned to the calling application\n */\n oboeApi = {\n on: addListener,\n addListener: addListener,\n removeListener: removeListener,\n emit: oboeBus.emit,\n\n node: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addNodeOrPathListenerApi, 'node'),\n path: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addNodeOrPathListenerApi, 'path'),\n\n done: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addForgettableCallback, rootNodeFinishedEvent),\n start: Object(__WEBPACK_IMPORTED_MODULE_1__functional__[\"j\" /* partialComplete */])(addProtectedCallback, __WEBPACK_IMPORTED_MODULE_0__events__[\"c\" /* HTTP_START */]),\n\n // fail doesn't use protectedCallback because\n // could lead to non-terminating loops\n fail: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"b\" /* FAIL_EVENT */]).on,\n\n // public api calling abort fires the ABORTING event\n abort: oboeBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"a\" /* ABORTING */]).emit,\n\n // initially return nothing for header and root\n header: __WEBPACK_IMPORTED_MODULE_1__functional__[\"i\" /* noop */],\n root: __WEBPACK_IMPORTED_MODULE_1__functional__[\"i\" /* noop */],\n\n source: contentSource\n }\n\n return oboeApi\n}\n\n\n\n\n/***/ }),\n/* 17 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return clarinet; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__events__ = __webpack_require__(3);\n\n\n/*\n This is a slightly hacked-up browser only version of clarinet\n\n * some features removed to help keep browser Oboe under\n the 5k micro-library limit\n * plug directly into event bus\n\n For the original go here:\n https://github.com/dscape/clarinet\n\n We receive the events:\n STREAM_DATA\n STREAM_END\n\n We emit the events:\n SAX_KEY\n SAX_VALUE_OPEN\n SAX_VALUE_CLOSE\n FAIL_EVENT\n */\n\nfunction clarinet (eventBus) {\n 'use strict'\n\n // shortcut some events on the bus\n var emitSaxKey = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"j\" /* SAX_KEY */]).emit\n var emitValueOpen = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"l\" /* SAX_VALUE_OPEN */]).emit\n var emitValueClose = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"k\" /* SAX_VALUE_CLOSE */]).emit\n var emitFail = eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"b\" /* FAIL_EVENT */]).emit\n\n var MAX_BUFFER_LENGTH = 64 * 1024\n var stringTokenPattern = /[\\\\\"\\n]/g\n var _n = 0\n\n // states\n var BEGIN = _n++\n var VALUE = _n++ // general stuff\n var OPEN_OBJECT = _n++ // {\n var CLOSE_OBJECT = _n++ // }\n var OPEN_ARRAY = _n++ // [\n var CLOSE_ARRAY = _n++ // ]\n var STRING = _n++ // \"\"\n var OPEN_KEY = _n++ // , \"a\"\n var CLOSE_KEY = _n++ // :\n var TRUE = _n++ // r\n var TRUE2 = _n++ // u\n var TRUE3 = _n++ // e\n var FALSE = _n++ // a\n var FALSE2 = _n++ // l\n var FALSE3 = _n++ // s\n var FALSE4 = _n++ // e\n var NULL = _n++ // u\n var NULL2 = _n++ // l\n var NULL3 = _n++ // l\n var NUMBER_DECIMAL_POINT = _n++ // .\n var NUMBER_DIGIT = _n // [0-9]\n\n // setup initial parser values\n var bufferCheckPosition = MAX_BUFFER_LENGTH\n var latestError\n var c\n var p\n var textNode\n var numberNode = ''\n var slashed = false\n var closed = false\n var state = BEGIN\n var stack = []\n var unicodeS = null\n var unicodeI = 0\n var depth = 0\n var position = 0\n var column = 0 // mostly for error reporting\n var line = 1\n\n function checkBufferLength () {\n var maxActual = 0\n\n if (textNode !== undefined && textNode.length > MAX_BUFFER_LENGTH) {\n emitError('Max buffer length exceeded: textNode')\n maxActual = Math.max(maxActual, textNode.length)\n }\n if (numberNode.length > MAX_BUFFER_LENGTH) {\n emitError('Max buffer length exceeded: numberNode')\n maxActual = Math.max(maxActual, numberNode.length)\n }\n\n bufferCheckPosition = (MAX_BUFFER_LENGTH - maxActual) +\n position\n }\n\n eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"m\" /* STREAM_DATA */]).on(handleData)\n\n /* At the end of the http content close the clarinet\n This will provide an error if the total content provided was not\n valid json, ie if not all arrays, objects and Strings closed properly */\n eventBus(__WEBPACK_IMPORTED_MODULE_0__events__[\"n\" /* STREAM_END */]).on(handleStreamEnd)\n\n function emitError (errorString) {\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n\n latestError = Error(errorString + '\\nLn: ' + line +\n '\\nCol: ' + column +\n '\\nChr: ' + c)\n\n emitFail(Object(__WEBPACK_IMPORTED_MODULE_0__events__[\"o\" /* errorReport */])(undefined, undefined, latestError))\n }\n\n function handleStreamEnd () {\n if (state === BEGIN) {\n // Handle the case where the stream closes without ever receiving\n // any input. This isn't an error - response bodies can be blank,\n // particularly for 204 http responses\n\n // Because of how Oboe is currently implemented, we parse a\n // completely empty stream as containing an empty object.\n // This is because Oboe's done event is only fired when the\n // root object of the JSON stream closes.\n\n // This should be decoupled and attached instead to the input stream\n // from the http (or whatever) resource ending.\n // If this decoupling could happen the SAX parser could simply emit\n // zero events on a completely empty input.\n emitValueOpen({})\n emitValueClose()\n\n closed = true\n return\n }\n\n if (state !== VALUE || depth !== 0) { emitError('Unexpected end') }\n\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n\n closed = true\n }\n\n function whitespace (c) {\n return c === '\\r' || c === '\\n' || c === ' ' || c === '\\t'\n }\n\n function handleData (chunk) {\n // this used to throw the error but inside Oboe we will have already\n // gotten the error when it was emitted. The important thing is to\n // not continue with the parse.\n if (latestError) { return }\n\n if (closed) {\n return emitError('Cannot write after close')\n }\n\n var i = 0\n c = chunk[0]\n\n while (c) {\n if (i > 0) {\n p = c\n }\n c = chunk[i++]\n if (!c) break\n\n position++\n if (c === '\\n') {\n line++\n column = 0\n } else column++\n switch (state) {\n case BEGIN:\n if (c === '{') state = OPEN_OBJECT\n else if (c === '[') state = OPEN_ARRAY\n else if (!whitespace(c)) { return emitError('Non-whitespace before {[.') }\n continue\n\n case OPEN_KEY:\n case OPEN_OBJECT:\n if (whitespace(c)) continue\n if (state === OPEN_KEY) stack.push(CLOSE_KEY)\n else {\n if (c === '}') {\n emitValueOpen({})\n emitValueClose()\n state = stack.pop() || VALUE\n continue\n } else stack.push(CLOSE_OBJECT)\n }\n if (c === '\"') { state = STRING } else { return emitError('Malformed object key should start with \" ') }\n continue\n\n case CLOSE_KEY:\n case CLOSE_OBJECT:\n if (whitespace(c)) continue\n\n if (c === ':') {\n if (state === CLOSE_OBJECT) {\n stack.push(CLOSE_OBJECT)\n\n if (textNode !== undefined) {\n // was previously (in upstream Clarinet) one event\n // - object open came with the text of the first\n emitValueOpen({})\n emitSaxKey(textNode)\n textNode = undefined\n }\n depth++\n } else {\n if (textNode !== undefined) {\n emitSaxKey(textNode)\n textNode = undefined\n }\n }\n state = VALUE\n } else if (c === '}') {\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n emitValueClose()\n depth--\n state = stack.pop() || VALUE\n } else if (c === ',') {\n if (state === CLOSE_OBJECT) { stack.push(CLOSE_OBJECT) }\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n state = OPEN_KEY\n } else { return emitError('Bad object') }\n continue\n\n case OPEN_ARRAY: // after an array there always a value\n case VALUE:\n if (whitespace(c)) continue\n if (state === OPEN_ARRAY) {\n emitValueOpen([])\n depth++\n state = VALUE\n if (c === ']') {\n emitValueClose()\n depth--\n state = stack.pop() || VALUE\n continue\n } else {\n stack.push(CLOSE_ARRAY)\n }\n }\n if (c === '\"') state = STRING\n else if (c === '{') state = OPEN_OBJECT\n else if (c === '[') state = OPEN_ARRAY\n else if (c === 't') state = TRUE\n else if (c === 'f') state = FALSE\n else if (c === 'n') state = NULL\n else if (c === '-') { // keep and continue\n numberNode += c\n } else if (c === '0') {\n numberNode += c\n state = NUMBER_DIGIT\n } else if ('123456789'.indexOf(c) !== -1) {\n numberNode += c\n state = NUMBER_DIGIT\n } else { return emitError('Bad value') }\n continue\n\n case CLOSE_ARRAY:\n if (c === ',') {\n stack.push(CLOSE_ARRAY)\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n state = VALUE\n } else if (c === ']') {\n if (textNode !== undefined) {\n emitValueOpen(textNode)\n emitValueClose()\n textNode = undefined\n }\n emitValueClose()\n depth--\n state = stack.pop() || VALUE\n } else if (whitespace(c)) { continue } else { return emitError('Bad array') }\n continue\n\n case STRING:\n if (textNode === undefined) {\n textNode = ''\n }\n\n // thanks thejh, this is an about 50% performance improvement.\n var starti = i - 1\n\n // eslint-disable-next-line no-labels\n STRING_BIGLOOP: while (true) {\n // zero means \"no unicode active\". 1-4 mean \"parse some more\". end after 4.\n while (unicodeI > 0) {\n unicodeS += c\n c = chunk.charAt(i++)\n if (unicodeI === 4) {\n // TODO this might be slow? well, probably not used too often anyway\n textNode += String.fromCharCode(parseInt(unicodeS, 16))\n unicodeI = 0\n starti = i - 1\n } else {\n unicodeI++\n }\n // we can just break here: no stuff we skipped that still has to be sliced out or so\n // eslint-disable-next-line no-labels\n if (!c) break STRING_BIGLOOP\n }\n if (c === '\"' && !slashed) {\n state = stack.pop() || VALUE\n textNode += chunk.substring(starti, i - 1)\n break\n }\n if (c === '\\\\' && !slashed) {\n slashed = true\n textNode += chunk.substring(starti, i - 1)\n c = chunk.charAt(i++)\n if (!c) break\n }\n if (slashed) {\n slashed = false\n if (c === 'n') { textNode += '\\n' } else if (c === 'r') { textNode += '\\r' } else if (c === 't') { textNode += '\\t' } else if (c === 'f') { textNode += '\\f' } else if (c === 'b') { textNode += '\\b' } else if (c === 'u') {\n // \\uxxxx. meh!\n unicodeI = 1\n unicodeS = ''\n } else {\n textNode += c\n }\n c = chunk.charAt(i++)\n starti = i - 1\n if (!c) break\n else continue\n }\n\n stringTokenPattern.lastIndex = i\n var reResult = stringTokenPattern.exec(chunk)\n if (!reResult) {\n i = chunk.length + 1\n textNode += chunk.substring(starti, i - 1)\n break\n }\n i = reResult.index + 1\n c = chunk.charAt(reResult.index)\n if (!c) {\n textNode += chunk.substring(starti, i - 1)\n break\n }\n }\n continue\n\n case TRUE:\n if (!c) continue // strange buffers\n if (c === 'r') state = TRUE2\n else { return emitError('Invalid true started with t' + c) }\n continue\n\n case TRUE2:\n if (!c) continue\n if (c === 'u') state = TRUE3\n else { return emitError('Invalid true started with tr' + c) }\n continue\n\n case TRUE3:\n if (!c) continue\n if (c === 'e') {\n emitValueOpen(true)\n emitValueClose()\n state = stack.pop() || VALUE\n } else { return emitError('Invalid true started with tru' + c) }\n continue\n\n case FALSE:\n if (!c) continue\n if (c === 'a') state = FALSE2\n else { return emitError('Invalid false started with f' + c) }\n continue\n\n case FALSE2:\n if (!c) continue\n if (c === 'l') state = FALSE3\n else { return emitError('Invalid false started with fa' + c) }\n continue\n\n case FALSE3:\n if (!c) continue\n if (c === 's') state = FALSE4\n else { return emitError('Invalid false started with fal' + c) }\n continue\n\n case FALSE4:\n if (!c) continue\n if (c === 'e') {\n emitValueOpen(false)\n emitValueClose()\n state = stack.pop() || VALUE\n } else { return emitError('Invalid false started with fals' + c) }\n continue\n\n case NULL:\n if (!c) continue\n if (c === 'u') state = NULL2\n else { return emitError('Invalid null started with n' + c) }\n continue\n\n case NULL2:\n if (!c) continue\n if (c === 'l') state = NULL3\n else { return emitError('Invalid null started with nu' + c) }\n continue\n\n case NULL3:\n if (!c) continue\n if (c === 'l') {\n emitValueOpen(null)\n emitValueClose()\n state = stack.pop() || VALUE\n } else { return emitError('Invalid null started with nul' + c) }\n continue\n\n case NUMBER_DECIMAL_POINT:\n if (c === '.') {\n numberNode += c\n state = NUMBER_DIGIT\n } else { return emitError('Leading zero not followed by .') }\n continue\n\n case NUMBER_DIGIT:\n if ('0123456789'.indexOf(c) !== -1) numberNode += c\n else if (c === '.') {\n if (numberNode.indexOf('.') !== -1) { return emitError('Invalid number has two dots') }\n numberNode += c\n } else if (c === 'e' || c === 'E') {\n if (numberNode.indexOf('e') !== -1 ||\n numberNode.indexOf('E') !== -1) { return emitError('Invalid number has two exponential') }\n numberNode += c\n } else if (c === '+' || c === '-') {\n if (!(p === 'e' || p === 'E')) { return emitError('Invalid symbol in number') }\n numberNode += c\n } else {\n if (numberNode) {\n emitValueOpen(parseFloat(numberNode))\n emitValueClose()\n numberNode = ''\n }\n i-- // go back one\n state = stack.pop() || VALUE\n }\n continue\n\n default:\n return emitError('Unknown state: ' + state)\n }\n }\n if (position >= bufferCheckPosition) { checkBufferLength() }\n }\n}\n\n\n\n\n/***/ }),\n/* 18 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return httpTransport; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return streamingHttp; });\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__ = __webpack_require__(19);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_1__events__ = __webpack_require__(3);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_2__util__ = __webpack_require__(2);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_3__parseResponseHeaders_browser__ = __webpack_require__(20);\n/* harmony import */ var __WEBPACK_IMPORTED_MODULE_4__functional__ = __webpack_require__(0);\n\n\n\n\n\n\nfunction httpTransport () {\n return new XMLHttpRequest()\n}\n\n/**\n * A wrapper around the browser XmlHttpRequest object that raises an\n * event whenever a new part of the response is available.\n *\n * In older browsers progressive reading is impossible so all the\n * content is given in a single call. For newer ones several events\n * should be raised, allowing progressive interpretation of the response.\n *\n * @param {Function} oboeBus an event bus local to this Oboe instance\n * @param {XMLHttpRequest} xhr the xhr to use as the transport. Under normal\n * operation, will have been created using httpTransport() above\n * but for tests a stub can be provided instead.\n * @param {String} method one of 'GET' 'POST' 'PUT' 'PATCH' 'DELETE'\n * @param {String} url the url to make a request to\n * @param {String|Null} data some content to be sent with the request.\n * Only valid if method is POST or PUT.\n * @param {Object} [headers] the http request headers to send\n * @param {boolean} withCredentials the XHR withCredentials property will be\n * set to this value\n */\nfunction streamingHttp (oboeBus, xhr, method, url, data, headers, withCredentials) {\n 'use strict'\n\n var emitStreamData = oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"m\" /* STREAM_DATA */]).emit\n var emitFail = oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"b\" /* FAIL_EVENT */]).emit\n var numberOfCharsAlreadyGivenToCallback = 0\n var stillToSendStartEvent = true\n\n // When an ABORTING message is put on the event bus abort\n // the ajax request\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"a\" /* ABORTING */]).on(function () {\n // if we keep the onreadystatechange while aborting the XHR gives\n // a callback like a successful call so first remove this listener\n // by assigning null:\n xhr.onreadystatechange = null\n\n xhr.abort()\n })\n\n /**\n * Handle input from the underlying xhr: either a state change,\n * the progress event or the request being complete.\n */\n function handleProgress () {\n if (String(xhr.status)[0] === '2') {\n var textSoFar = xhr.responseText\n var newText = (' ' + textSoFar.substr(numberOfCharsAlreadyGivenToCallback)).substr(1)\n\n /* Raise the event for new text.\n\n On older browsers, the new text is the whole response.\n On newer/better ones, the fragment part that we got since\n last progress. */\n\n if (newText) {\n emitStreamData(newText)\n }\n\n numberOfCharsAlreadyGivenToCallback = Object(__WEBPACK_IMPORTED_MODULE_2__util__[\"e\" /* len */])(textSoFar)\n }\n }\n\n if ('onprogress' in xhr) { // detect browser support for progressive delivery\n xhr.onprogress = handleProgress\n }\n\n function sendStartIfNotAlready (xhr) {\n // Internet Explorer is very unreliable as to when xhr.status etc can\n // be read so has to be protected with try/catch and tried again on\n // the next readyState if it fails\n try {\n stillToSendStartEvent && oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"c\" /* HTTP_START */]).emit(\n xhr.status,\n Object(__WEBPACK_IMPORTED_MODULE_3__parseResponseHeaders_browser__[\"a\" /* parseResponseHeaders */])(xhr.getAllResponseHeaders()))\n stillToSendStartEvent = false\n } catch (e) { /* do nothing, will try again on next readyState */ }\n }\n\n xhr.onreadystatechange = function () {\n switch (xhr.readyState) {\n case 2: // HEADERS_RECEIVED\n case 3: // LOADING\n return sendStartIfNotAlready(xhr)\n\n case 4: // DONE\n sendStartIfNotAlready(xhr) // if xhr.status hasn't been available yet, it must be NOW, huh IE?\n\n // is this a 2xx http code?\n var successful = String(xhr.status)[0] === '2'\n\n if (successful) {\n // In Chrome 29 (not 28) no onprogress is emitted when a response\n // is complete before the onload. We need to always do handleInput\n // in case we get the load but have not had a final progress event.\n // This looks like a bug and may change in future but let's take\n // the safest approach and assume we might not have received a\n // progress event for each part of the response\n handleProgress()\n\n oboeBus(__WEBPACK_IMPORTED_MODULE_1__events__[\"n\" /* STREAM_END */]).emit()\n } else {\n emitFail(Object(__WEBPACK_IMPORTED_MODULE_1__events__[\"o\" /* errorReport */])(\n xhr.status,\n xhr.responseText\n ))\n }\n }\n }\n\n try {\n xhr.open(method, url, true)\n\n for (var headerName in headers) {\n xhr.setRequestHeader(headerName, headers[headerName])\n }\n\n if (!Object(__WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__[\"a\" /* isCrossOrigin */])(window.location, Object(__WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__[\"b\" /* parseUrlOrigin */])(url))) {\n xhr.setRequestHeader('X-Requested-With', 'XMLHttpRequest')\n }\n\n xhr.withCredentials = withCredentials\n\n xhr.send(data)\n } catch (e) {\n // To keep a consistent interface with Node, we can't emit an event here.\n // Node's streaming http adaptor receives the error as an asynchronous\n // event rather than as an exception. If we emitted now, the Oboe user\n // has had no chance to add a .fail listener so there is no way\n // the event could be useful. For both these reasons defer the\n // firing to the next JS frame.\n window.setTimeout(\n Object(__WEBPACK_IMPORTED_MODULE_4__functional__[\"j\" /* partialComplete */])(emitFail, Object(__WEBPACK_IMPORTED_MODULE_1__events__[\"o\" /* errorReport */])(undefined, undefined, e))\n , 0\n )\n }\n}\n\n\n\n\n/***/ }),\n/* 19 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return isCrossOrigin; });\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"b\", function() { return parseUrlOrigin; });\n/**\n * Detect if a given URL is cross-origin in the scope of the\n * current page.\n *\n * Browser only (since cross-origin has no meaning in Node.js)\n *\n * @param {Object} pageLocation - as in window.location\n * @param {Object} ajaxHost - an object like window.location describing the\n * origin of the url that we want to ajax in\n */\nfunction isCrossOrigin (pageLocation, ajaxHost) {\n /*\n * NB: defaultPort only knows http and https.\n * Returns undefined otherwise.\n */\n function defaultPort (protocol) {\n return { 'http:': 80, 'https:': 443 }[protocol]\n }\n\n function portOf (location) {\n // pageLocation should always have a protocol. ajaxHost if no port or\n // protocol is specified, should use the port of the containing page\n\n return String(location.port || defaultPort(location.protocol || pageLocation.protocol))\n }\n\n // if ajaxHost doesn't give a domain, port is the same as pageLocation\n // it can't give a protocol but not a domain\n // it can't give a port but not a domain\n\n return !!((ajaxHost.protocol && (ajaxHost.protocol !== pageLocation.protocol)) ||\n (ajaxHost.host && (ajaxHost.host !== pageLocation.host)) ||\n (ajaxHost.host && (portOf(ajaxHost) !== portOf(pageLocation)))\n )\n}\n\n/* turn any url into an object like window.location */\nfunction parseUrlOrigin (url) {\n // url could be domain-relative\n // url could give a domain\n\n // cross origin means:\n // same domain\n // same port\n // some protocol\n // so, same everything up to the first (single) slash\n // if such is given\n //\n // can ignore everything after that\n\n var URL_HOST_PATTERN = /(\\w+:)?(?:\\/\\/)([\\w.-]+)?(?::(\\d+))?\\/?/\n\n // if no match, use an empty array so that\n // subexpressions 1,2,3 are all undefined\n // and will ultimately return all empty\n // strings as the parse result:\n var urlHostMatch = URL_HOST_PATTERN.exec(url) || []\n\n return {\n protocol: urlHostMatch[1] || '',\n host: urlHostMatch[2] || '',\n port: urlHostMatch[3] || ''\n }\n}\n\n\n\n\n/***/ }),\n/* 20 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"a\", function() { return parseResponseHeaders; });\n// based on gist https://gist.github.com/monsur/706839\n\n/**\n * XmlHttpRequest's getAllResponseHeaders() method returns a string of response\n * headers according to the format described here:\n * http://www.w3.org/TR/XMLHttpRequest/#the-getallresponseheaders-method\n * This method parses that string into a user-friendly key/value pair object.\n */\nfunction parseResponseHeaders (headerStr) {\n var headers = {}\n\n headerStr && headerStr.split('\\u000d\\u000a')\n .forEach(function (headerPair) {\n // Can't use split() here because it does the wrong thing\n // if the header value has the string \": \" in it.\n var index = headerPair.indexOf('\\u003a\\u0020')\n\n headers[headerPair.substring(0, index)] =\n headerPair.substring(index + 2)\n })\n\n return headers\n}\n\n\n\n\n/***/ })\n/******/ ])[\"default\"];\n});","exports.endianness = function () { return 'LE' };\n\nexports.hostname = function () {\n if (typeof location !== 'undefined') {\n return location.hostname\n }\n else return '';\n};\n\nexports.loadavg = function () { return [] };\n\nexports.uptime = function () { return 0 };\n\nexports.freemem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.totalmem = function () {\n return Number.MAX_VALUE;\n};\n\nexports.cpus = function () { return [] };\n\nexports.type = function () { return 'Browser' };\n\nexports.release = function () {\n if (typeof navigator !== 'undefined') {\n return navigator.appVersion;\n }\n return '';\n};\n\nexports.networkInterfaces\n= exports.getNetworkInterfaces\n= function () { return {} };\n\nexports.arch = function () { return 'javascript' };\n\nexports.platform = function () { return 'browser' };\n\nexports.tmpdir = exports.tmpDir = function () {\n return '/tmp';\n};\n\nexports.EOL = '\\n';\n\nexports.homedir = function () {\n\treturn '/'\n};\n","// from https://github.com/indutny/self-signed/blob/gh-pages/lib/asn1.js\n// Fedor, you are amazing.\n'use strict'\n\nvar asn1 = require('asn1.js')\n\nexports.certificate = require('./certificate')\n\nvar RSAPrivateKey = asn1.define('RSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('modulus').int(),\n this.key('publicExponent').int(),\n this.key('privateExponent').int(),\n this.key('prime1').int(),\n this.key('prime2').int(),\n this.key('exponent1').int(),\n this.key('exponent2').int(),\n this.key('coefficient').int()\n )\n})\nexports.RSAPrivateKey = RSAPrivateKey\n\nvar RSAPublicKey = asn1.define('RSAPublicKey', function () {\n this.seq().obj(\n this.key('modulus').int(),\n this.key('publicExponent').int()\n )\n})\nexports.RSAPublicKey = RSAPublicKey\n\nvar PublicKey = asn1.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\nexports.PublicKey = PublicKey\n\nvar AlgorithmIdentifier = asn1.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('none').null_().optional(),\n this.key('curve').objid().optional(),\n this.key('params').seq().obj(\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int()\n ).optional()\n )\n})\n\nvar PrivateKeyInfo = asn1.define('PrivateKeyInfo', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPrivateKey').octstr()\n )\n})\nexports.PrivateKey = PrivateKeyInfo\nvar EncryptedPrivateKeyInfo = asn1.define('EncryptedPrivateKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').seq().obj(\n this.key('id').objid(),\n this.key('decrypt').seq().obj(\n this.key('kde').seq().obj(\n this.key('id').objid(),\n this.key('kdeparams').seq().obj(\n this.key('salt').octstr(),\n this.key('iters').int()\n )\n ),\n this.key('cipher').seq().obj(\n this.key('algo').objid(),\n this.key('iv').octstr()\n )\n )\n ),\n this.key('subjectPrivateKey').octstr()\n )\n})\n\nexports.EncryptedPrivateKey = EncryptedPrivateKeyInfo\n\nvar DSAPrivateKey = asn1.define('DSAPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('p').int(),\n this.key('q').int(),\n this.key('g').int(),\n this.key('pub_key').int(),\n this.key('priv_key').int()\n )\n})\nexports.DSAPrivateKey = DSAPrivateKey\n\nexports.DSAparam = asn1.define('DSAparam', function () {\n this.int()\n})\n\nvar ECPrivateKey = asn1.define('ECPrivateKey', function () {\n this.seq().obj(\n this.key('version').int(),\n this.key('privateKey').octstr(),\n this.key('parameters').optional().explicit(0).use(ECParameters),\n this.key('publicKey').optional().explicit(1).bitstr()\n )\n})\nexports.ECPrivateKey = ECPrivateKey\n\nvar ECParameters = asn1.define('ECParameters', function () {\n this.choice({\n namedCurve: this.objid()\n })\n})\n\nexports.signature = asn1.define('signature', function () {\n this.seq().obj(\n this.key('r').int(),\n this.key('s').int()\n )\n})\n","// from https://github.com/Rantanen/node-dtls/blob/25a7dc861bda38cfeac93a723500eea4f0ac2e86/Certificate.js\n// thanks to @Rantanen\n\n'use strict'\n\nvar asn = require('asn1.js')\n\nvar Time = asn.define('Time', function () {\n this.choice({\n utcTime: this.utctime(),\n generalTime: this.gentime()\n })\n})\n\nvar AttributeTypeValue = asn.define('AttributeTypeValue', function () {\n this.seq().obj(\n this.key('type').objid(),\n this.key('value').any()\n )\n})\n\nvar AlgorithmIdentifier = asn.define('AlgorithmIdentifier', function () {\n this.seq().obj(\n this.key('algorithm').objid(),\n this.key('parameters').optional(),\n this.key('curve').objid().optional()\n )\n})\n\nvar SubjectPublicKeyInfo = asn.define('SubjectPublicKeyInfo', function () {\n this.seq().obj(\n this.key('algorithm').use(AlgorithmIdentifier),\n this.key('subjectPublicKey').bitstr()\n )\n})\n\nvar RelativeDistinguishedName = asn.define('RelativeDistinguishedName', function () {\n this.setof(AttributeTypeValue)\n})\n\nvar RDNSequence = asn.define('RDNSequence', function () {\n this.seqof(RelativeDistinguishedName)\n})\n\nvar Name = asn.define('Name', function () {\n this.choice({\n rdnSequence: this.use(RDNSequence)\n })\n})\n\nvar Validity = asn.define('Validity', function () {\n this.seq().obj(\n this.key('notBefore').use(Time),\n this.key('notAfter').use(Time)\n )\n})\n\nvar Extension = asn.define('Extension', function () {\n this.seq().obj(\n this.key('extnID').objid(),\n this.key('critical').bool().def(false),\n this.key('extnValue').octstr()\n )\n})\n\nvar TBSCertificate = asn.define('TBSCertificate', function () {\n this.seq().obj(\n this.key('version').explicit(0).int().optional(),\n this.key('serialNumber').int(),\n this.key('signature').use(AlgorithmIdentifier),\n this.key('issuer').use(Name),\n this.key('validity').use(Validity),\n this.key('subject').use(Name),\n this.key('subjectPublicKeyInfo').use(SubjectPublicKeyInfo),\n this.key('issuerUniqueID').implicit(1).bitstr().optional(),\n this.key('subjectUniqueID').implicit(2).bitstr().optional(),\n this.key('extensions').explicit(3).seqof(Extension).optional()\n )\n})\n\nvar X509Certificate = asn.define('X509Certificate', function () {\n this.seq().obj(\n this.key('tbsCertificate').use(TBSCertificate),\n this.key('signatureAlgorithm').use(AlgorithmIdentifier),\n this.key('signatureValue').bitstr()\n )\n})\n\nmodule.exports = X509Certificate\n","// adapted from https://github.com/apatil/pemstrip\nvar findProc = /Proc-Type: 4,ENCRYPTED[\\n\\r]+DEK-Info: AES-((?:128)|(?:192)|(?:256))-CBC,([0-9A-H]+)[\\n\\r]+([0-9A-z\\n\\r+/=]+)[\\n\\r]+/m\nvar startRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----/m\nvar fullRegex = /^-----BEGIN ((?:.*? KEY)|CERTIFICATE)-----([0-9A-z\\n\\r+/=]+)-----END \\1-----$/m\nvar evp = require('evp_bytestokey')\nvar ciphers = require('browserify-aes')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = function (okey, password) {\n var key = okey.toString()\n var match = key.match(findProc)\n var decrypted\n if (!match) {\n var match2 = key.match(fullRegex)\n decrypted = Buffer.from(match2[2].replace(/[\\r\\n]/g, ''), 'base64')\n } else {\n var suite = 'aes' + match[1]\n var iv = Buffer.from(match[2], 'hex')\n var cipherText = Buffer.from(match[3].replace(/[\\r\\n]/g, ''), 'base64')\n var cipherKey = evp(password, iv.slice(0, 8), parseInt(match[1], 10)).key\n var out = []\n var cipher = ciphers.createDecipheriv(suite, cipherKey, iv)\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n decrypted = Buffer.concat(out)\n }\n var tag = key.match(startRegex)[1]\n return {\n tag: tag,\n data: decrypted\n }\n}\n","var asn1 = require('./asn1')\nvar aesid = require('./aesid.json')\nvar fixProc = require('./fixProc')\nvar ciphers = require('browserify-aes')\nvar compat = require('pbkdf2')\nvar Buffer = require('safe-buffer').Buffer\nmodule.exports = parseKeys\n\nfunction parseKeys (buffer) {\n var password\n if (typeof buffer === 'object' && !Buffer.isBuffer(buffer)) {\n password = buffer.passphrase\n buffer = buffer.key\n }\n if (typeof buffer === 'string') {\n buffer = Buffer.from(buffer)\n }\n\n var stripped = fixProc(buffer, password)\n\n var type = stripped.tag\n var data = stripped.data\n var subtype, ndata\n switch (type) {\n case 'CERTIFICATE':\n ndata = asn1.certificate.decode(data, 'der').tbsCertificate.subjectPublicKeyInfo\n // falls through\n case 'PUBLIC KEY':\n if (!ndata) {\n ndata = asn1.PublicKey.decode(data, 'der')\n }\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPublicKey.decode(ndata.subjectPublicKey.data, 'der')\n case '1.2.840.10045.2.1':\n ndata.subjectPrivateKey = ndata.subjectPublicKey\n return {\n type: 'ec',\n data: ndata\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.pub_key = asn1.DSAparam.decode(ndata.subjectPublicKey.data, 'der')\n return {\n type: 'dsa',\n data: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'ENCRYPTED PRIVATE KEY':\n data = asn1.EncryptedPrivateKey.decode(data, 'der')\n data = decrypt(data, password)\n // falls through\n case 'PRIVATE KEY':\n ndata = asn1.PrivateKey.decode(data, 'der')\n subtype = ndata.algorithm.algorithm.join('.')\n switch (subtype) {\n case '1.2.840.113549.1.1.1':\n return asn1.RSAPrivateKey.decode(ndata.subjectPrivateKey, 'der')\n case '1.2.840.10045.2.1':\n return {\n curve: ndata.algorithm.curve,\n privateKey: asn1.ECPrivateKey.decode(ndata.subjectPrivateKey, 'der').privateKey\n }\n case '1.2.840.10040.4.1':\n ndata.algorithm.params.priv_key = asn1.DSAparam.decode(ndata.subjectPrivateKey, 'der')\n return {\n type: 'dsa',\n params: ndata.algorithm.params\n }\n default: throw new Error('unknown key id ' + subtype)\n }\n // throw new Error('unknown key type ' + type)\n case 'RSA PUBLIC KEY':\n return asn1.RSAPublicKey.decode(data, 'der')\n case 'RSA PRIVATE KEY':\n return asn1.RSAPrivateKey.decode(data, 'der')\n case 'DSA PRIVATE KEY':\n return {\n type: 'dsa',\n params: asn1.DSAPrivateKey.decode(data, 'der')\n }\n case 'EC PRIVATE KEY':\n data = asn1.ECPrivateKey.decode(data, 'der')\n return {\n curve: data.parameters.value,\n privateKey: data.privateKey\n }\n default: throw new Error('unknown key type ' + type)\n }\n}\nparseKeys.signature = asn1.signature\nfunction decrypt (data, password) {\n var salt = data.algorithm.decrypt.kde.kdeparams.salt\n var iters = parseInt(data.algorithm.decrypt.kde.kdeparams.iters.toString(), 10)\n var algo = aesid[data.algorithm.decrypt.cipher.algo.join('.')]\n var iv = data.algorithm.decrypt.cipher.iv\n var cipherText = data.subjectPrivateKey\n var keylen = parseInt(algo.split('-')[1], 10) / 8\n var key = compat.pbkdf2Sync(password, salt, iters, keylen, 'sha1')\n var cipher = ciphers.createDecipheriv(algo, key, iv)\n var out = []\n out.push(cipher.update(cipherText))\n out.push(cipher.final())\n return Buffer.concat(out)\n}\n","var trim = function(string) {\n return string.replace(/^\\s+|\\s+$/g, '');\n}\n , isArray = function(arg) {\n return Object.prototype.toString.call(arg) === '[object Array]';\n }\n\nmodule.exports = function (headers) {\n if (!headers)\n return {}\n\n var result = {}\n\n var headersArr = trim(headers).split('\\n')\n\n for (var i = 0; i < headersArr.length; i++) {\n var row = headersArr[i]\n var index = row.indexOf(':')\n , key = trim(row.slice(0, index)).toLowerCase()\n , value = trim(row.slice(index + 1))\n\n if (typeof(result[key]) === 'undefined') {\n result[key] = value\n } else if (isArray(result[key])) {\n result[key].push(value)\n } else {\n result[key] = [ result[key], value ]\n }\n }\n\n return result\n}\n","exports.pbkdf2 = require('./lib/async')\nexports.pbkdf2Sync = require('./lib/sync')\n","var Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar sync = require('./sync')\nvar toBuffer = require('./to-buffer')\n\nvar ZERO_BUF\nvar subtle = global.crypto && global.crypto.subtle\nvar toBrowser = {\n sha: 'SHA-1',\n 'sha-1': 'SHA-1',\n sha1: 'SHA-1',\n sha256: 'SHA-256',\n 'sha-256': 'SHA-256',\n sha384: 'SHA-384',\n 'sha-384': 'SHA-384',\n 'sha-512': 'SHA-512',\n sha512: 'SHA-512'\n}\nvar checks = []\nfunction checkNative (algo) {\n if (global.process && !global.process.browser) {\n return Promise.resolve(false)\n }\n if (!subtle || !subtle.importKey || !subtle.deriveBits) {\n return Promise.resolve(false)\n }\n if (checks[algo] !== undefined) {\n return checks[algo]\n }\n ZERO_BUF = ZERO_BUF || Buffer.alloc(8)\n var prom = browserPbkdf2(ZERO_BUF, ZERO_BUF, 10, 128, algo)\n .then(function () {\n return true\n }).catch(function () {\n return false\n })\n checks[algo] = prom\n return prom\n}\nvar nextTick\nfunction getNextTick () {\n if (nextTick) {\n return nextTick\n }\n if (global.process && global.process.nextTick) {\n nextTick = global.process.nextTick\n } else if (global.queueMicrotask) {\n nextTick = global.queueMicrotask\n } else if (global.setImmediate) {\n nextTick = global.setImmediate\n } else {\n nextTick = global.setTimeout\n }\n return nextTick\n}\nfunction browserPbkdf2 (password, salt, iterations, length, algo) {\n return subtle.importKey(\n 'raw', password, { name: 'PBKDF2' }, false, ['deriveBits']\n ).then(function (key) {\n return subtle.deriveBits({\n name: 'PBKDF2',\n salt: salt,\n iterations: iterations,\n hash: {\n name: algo\n }\n }, key, length << 3)\n }).then(function (res) {\n return Buffer.from(res)\n })\n}\n\nfunction resolvePromise (promise, callback) {\n promise.then(function (out) {\n getNextTick()(function () {\n callback(null, out)\n })\n }, function (e) {\n getNextTick()(function () {\n callback(e)\n })\n })\n}\nmodule.exports = function (password, salt, iterations, keylen, digest, callback) {\n if (typeof digest === 'function') {\n callback = digest\n digest = undefined\n }\n\n digest = digest || 'sha1'\n var algo = toBrowser[digest.toLowerCase()]\n\n if (!algo || typeof global.Promise !== 'function') {\n getNextTick()(function () {\n var out\n try {\n out = sync(password, salt, iterations, keylen, digest)\n } catch (e) {\n return callback(e)\n }\n callback(null, out)\n })\n return\n }\n\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n if (typeof callback !== 'function') throw new Error('No callback provided to pbkdf2')\n\n resolvePromise(checkNative(algo).then(function (resp) {\n if (resp) return browserPbkdf2(password, salt, iterations, keylen, algo)\n\n return sync(password, salt, iterations, keylen, digest)\n }), callback)\n}\n","var defaultEncoding\n/* istanbul ignore next */\nif (global.process && global.process.browser) {\n defaultEncoding = 'utf-8'\n} else if (global.process && global.process.version) {\n var pVersionMajor = parseInt(process.version.split('.')[0].slice(1), 10)\n\n defaultEncoding = pVersionMajor >= 6 ? 'utf-8' : 'binary'\n} else {\n defaultEncoding = 'utf-8'\n}\nmodule.exports = defaultEncoding\n","var MAX_ALLOC = Math.pow(2, 30) - 1 // default in iojs\n\nmodule.exports = function (iterations, keylen) {\n if (typeof iterations !== 'number') {\n throw new TypeError('Iterations not a number')\n }\n\n if (iterations < 0) {\n throw new TypeError('Bad iterations')\n }\n\n if (typeof keylen !== 'number') {\n throw new TypeError('Key length not a number')\n }\n\n if (keylen < 0 || keylen > MAX_ALLOC || keylen !== keylen) { /* eslint no-self-compare: 0 */\n throw new TypeError('Bad key length')\n }\n}\n","var md5 = require('create-hash/md5')\nvar RIPEMD160 = require('ripemd160')\nvar sha = require('sha.js')\nvar Buffer = require('safe-buffer').Buffer\n\nvar checkParameters = require('./precondition')\nvar defaultEncoding = require('./default-encoding')\nvar toBuffer = require('./to-buffer')\n\nvar ZEROS = Buffer.alloc(128)\nvar sizes = {\n md5: 16,\n sha1: 20,\n sha224: 28,\n sha256: 32,\n sha384: 48,\n sha512: 64,\n rmd160: 20,\n ripemd160: 20\n}\n\nfunction Hmac (alg, key, saltLen) {\n var hash = getDigest(alg)\n var blocksize = (alg === 'sha512' || alg === 'sha384') ? 128 : 64\n\n if (key.length > blocksize) {\n key = hash(key)\n } else if (key.length < blocksize) {\n key = Buffer.concat([key, ZEROS], blocksize)\n }\n\n var ipad = Buffer.allocUnsafe(blocksize + sizes[alg])\n var opad = Buffer.allocUnsafe(blocksize + sizes[alg])\n for (var i = 0; i < blocksize; i++) {\n ipad[i] = key[i] ^ 0x36\n opad[i] = key[i] ^ 0x5C\n }\n\n var ipad1 = Buffer.allocUnsafe(blocksize + saltLen + 4)\n ipad.copy(ipad1, 0, 0, blocksize)\n this.ipad1 = ipad1\n this.ipad2 = ipad\n this.opad = opad\n this.alg = alg\n this.blocksize = blocksize\n this.hash = hash\n this.size = sizes[alg]\n}\n\nHmac.prototype.run = function (data, ipad) {\n data.copy(ipad, this.blocksize)\n var h = this.hash(ipad)\n h.copy(this.opad, this.blocksize)\n return this.hash(this.opad)\n}\n\nfunction getDigest (alg) {\n function shaFunc (data) {\n return sha(alg).update(data).digest()\n }\n function rmd160Func (data) {\n return new RIPEMD160().update(data).digest()\n }\n\n if (alg === 'rmd160' || alg === 'ripemd160') return rmd160Func\n if (alg === 'md5') return md5\n return shaFunc\n}\n\nfunction pbkdf2 (password, salt, iterations, keylen, digest) {\n checkParameters(iterations, keylen)\n password = toBuffer(password, defaultEncoding, 'Password')\n salt = toBuffer(salt, defaultEncoding, 'Salt')\n\n digest = digest || 'sha1'\n\n var hmac = new Hmac(digest, password, salt.length)\n\n var DK = Buffer.allocUnsafe(keylen)\n var block1 = Buffer.allocUnsafe(salt.length + 4)\n salt.copy(block1, 0, 0, salt.length)\n\n var destPos = 0\n var hLen = sizes[digest]\n var l = Math.ceil(keylen / hLen)\n\n for (var i = 1; i <= l; i++) {\n block1.writeUInt32BE(i, salt.length)\n\n var T = hmac.run(block1, hmac.ipad1)\n var U = T\n\n for (var j = 1; j < iterations; j++) {\n U = hmac.run(U, hmac.ipad2)\n for (var k = 0; k < hLen; k++) T[k] ^= U[k]\n }\n\n T.copy(DK, destPos)\n destPos += hLen\n }\n\n return DK\n}\n\nmodule.exports = pbkdf2\n","var Buffer = require('safe-buffer').Buffer\n\nmodule.exports = function (thing, encoding, name) {\n if (Buffer.isBuffer(thing)) {\n return thing\n } else if (typeof thing === 'string') {\n return Buffer.from(thing, encoding)\n } else if (ArrayBuffer.isView(thing)) {\n return Buffer.from(thing.buffer)\n } else {\n throw new TypeError(name + ' must be a string, a Buffer, a typed array or a DataView')\n }\n}\n","'use strict';\n\nconst processFn = (fn, opts) => function () {\n\tconst P = opts.promiseModule;\n\tconst args = new Array(arguments.length);\n\n\tfor (let i = 0; i < arguments.length; i++) {\n\t\targs[i] = arguments[i];\n\t}\n\n\treturn new P((resolve, reject) => {\n\t\tif (opts.errorFirst) {\n\t\t\targs.push(function (err, result) {\n\t\t\t\tif (opts.multiArgs) {\n\t\t\t\t\tconst results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (let i = 1; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i - 1] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tif (err) {\n\t\t\t\t\t\tresults.unshift(err);\n\t\t\t\t\t\treject(results);\n\t\t\t\t\t} else {\n\t\t\t\t\t\tresolve(results);\n\t\t\t\t\t}\n\t\t\t\t} else if (err) {\n\t\t\t\t\treject(err);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t} else {\n\t\t\targs.push(function (result) {\n\t\t\t\tif (opts.multiArgs) {\n\t\t\t\t\tconst results = new Array(arguments.length - 1);\n\n\t\t\t\t\tfor (let i = 0; i < arguments.length; i++) {\n\t\t\t\t\t\tresults[i] = arguments[i];\n\t\t\t\t\t}\n\n\t\t\t\t\tresolve(results);\n\t\t\t\t} else {\n\t\t\t\t\tresolve(result);\n\t\t\t\t}\n\t\t\t});\n\t\t}\n\n\t\tfn.apply(this, args);\n\t});\n};\n\nmodule.exports = (obj, opts) => {\n\topts = Object.assign({\n\t\texclude: [/.+(Sync|Stream)$/],\n\t\terrorFirst: true,\n\t\tpromiseModule: Promise\n\t}, opts);\n\n\tconst filter = key => {\n\t\tconst match = pattern => typeof pattern === 'string' ? key === pattern : pattern.test(key);\n\t\treturn opts.include ? opts.include.some(match) : !opts.exclude.some(match);\n\t};\n\n\tlet ret;\n\tif (typeof obj === 'function') {\n\t\tret = function () {\n\t\t\tif (opts.excludeMain) {\n\t\t\t\treturn obj.apply(this, arguments);\n\t\t\t}\n\n\t\t\treturn processFn(obj, opts).apply(this, arguments);\n\t\t};\n\t} else {\n\t\tret = Object.create(Object.getPrototypeOf(obj));\n\t}\n\n\tfor (const key in obj) { // eslint-disable-line guard-for-in\n\t\tconst x = obj[key];\n\t\tret[key] = typeof x === 'function' && filter(key) ? processFn(x, opts) : x;\n\t}\n\n\treturn ret;\n};\n","export const EMPTY_OBJ = {};\nexport const EMPTY_ARR = [];\nexport const IS_NON_DIMENSIONAL = /acit|ex(?:s|g|n|p|$)|rph|grid|ows|mnc|ntw|ine[ch]|zoo|^ord/i;\n","import { _catchError } from './diff/catch-error';\n\n/**\n * The `option` object can potentially contain callback functions\n * that are called during various stages of our renderer. This is the\n * foundation on which all our addons like `preact/debug`, `preact/compat`,\n * and `preact/hooks` are based on. See the `Options` type in `internal.d.ts`\n * for a full list of available option hooks (most editors/IDEs allow you to\n * ctrl+click or cmd+click on mac the type definition below).\n * @type {import('./internal').Options}\n */\nconst options = {\n\t_catchError\n};\n\nexport default options;\n","import { assign } from './util';\nimport { diff, commitRoot } from './diff/index';\nimport options from './options';\nimport { Fragment } from './create-element';\n\n/**\n * Base Component class. Provides `setState()` and `forceUpdate()`, which\n * trigger rendering\n * @param {object} props The initial component props\n * @param {object} context The initial context from parent components'\n * getChildContext\n */\nexport function Component(props, context) {\n\tthis.props = props;\n\tthis.context = context;\n}\n\n/**\n * Update component state and schedule a re-render.\n * @param {object | ((s: object, p: object) => object)} update A hash of state\n * properties to update with new values or a function that given the current\n * state and props returns a new partial state\n * @param {() => void} [callback] A function to be called once component state is\n * updated\n */\nComponent.prototype.setState = function(update, callback) {\n\t// only clone state when copying to nextState the first time.\n\tlet s;\n\tif (this._nextState !== this.state) {\n\t\ts = this._nextState;\n\t} else {\n\t\ts = this._nextState = assign({}, this.state);\n\t}\n\n\tif (typeof update == 'function') {\n\t\tupdate = update(s, this.props);\n\t}\n\n\tif (update) {\n\t\tassign(s, update);\n\t}\n\n\t// Skip update if updater function returned null\n\tif (update == null) return;\n\n\tif (this._vnode) {\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Immediately perform a synchronous re-render of the component\n * @param {() => void} [callback] A function to be called after component is\n * re-rendered\n */\nComponent.prototype.forceUpdate = function(callback) {\n\tif (this._vnode) {\n\t\t// Set render mode so that we can differentiate where the render request\n\t\t// is coming from. We need this because forceUpdate should never call\n\t\t// shouldComponentUpdate\n\t\tthis._force = true;\n\t\tif (callback) this._renderCallbacks.push(callback);\n\t\tenqueueRender(this);\n\t}\n};\n\n/**\n * Accepts `props` and `state`, and returns a new Virtual DOM tree to build.\n * Virtual DOM is generally constructed via [JSX](http://jasonformat.com/wtf-is-jsx).\n * @param {object} props Props (eg: JSX attributes) received from parent\n * element/component\n * @param {object} state The component's current state\n * @param {object} context Context object, as returned by the nearest\n * ancestor's `getChildContext()`\n * @returns {import('./index').ComponentChildren | void}\n */\nComponent.prototype.render = Fragment;\n\n/**\n * @param {import('./internal').VNode} vnode\n * @param {number | null} [childIndex]\n */\nexport function getDomSibling(vnode, childIndex) {\n\tif (childIndex == null) {\n\t\t// Use childIndex==null as a signal to resume the search from the vnode's sibling\n\t\treturn vnode._parent\n\t\t\t? getDomSibling(vnode._parent, vnode._parent._children.indexOf(vnode) + 1)\n\t\t\t: null;\n\t}\n\n\tlet sibling;\n\tfor (; childIndex < vnode._children.length; childIndex++) {\n\t\tsibling = vnode._children[childIndex];\n\n\t\tif (sibling != null && sibling._dom != null) {\n\t\t\t// Since updateParentDomPointers keeps _dom pointer correct,\n\t\t\t// we can rely on _dom to tell us if this subtree contains a\n\t\t\t// rendered DOM node, and what the first rendered DOM node is\n\t\t\treturn sibling._dom;\n\t\t}\n\t}\n\n\t// If we get here, we have not found a DOM node in this vnode's children.\n\t// We must resume from this vnode's sibling (in it's parent _children array)\n\t// Only climb up and search the parent if we aren't searching through a DOM\n\t// VNode (meaning we reached the DOM parent of the original vnode that began\n\t// the search)\n\treturn typeof vnode.type == 'function' ? getDomSibling(vnode) : null;\n}\n\n/**\n * Trigger in-place re-rendering of a component.\n * @param {import('./internal').Component} component The component to rerender\n */\nfunction renderComponent(component) {\n\tlet vnode = component._vnode,\n\t\toldDom = vnode._dom,\n\t\tparentDom = component._parentDom;\n\n\tif (parentDom) {\n\t\tlet commitQueue = [];\n\t\tconst oldVNode = assign({}, vnode);\n\t\toldVNode._original = oldVNode;\n\n\t\tlet newDom = diff(\n\t\t\tparentDom,\n\t\t\tvnode,\n\t\t\toldVNode,\n\t\t\tcomponent._globalContext,\n\t\t\tparentDom.ownerSVGElement !== undefined,\n\t\t\tnull,\n\t\t\tcommitQueue,\n\t\t\toldDom == null ? getDomSibling(vnode) : oldDom\n\t\t);\n\t\tcommitRoot(commitQueue, vnode);\n\n\t\tif (newDom != oldDom) {\n\t\t\tupdateParentDomPointers(vnode);\n\t\t}\n\t}\n}\n\n/**\n * @param {import('./internal').VNode} vnode\n */\nfunction updateParentDomPointers(vnode) {\n\tif ((vnode = vnode._parent) != null && vnode._component != null) {\n\t\tvnode._dom = vnode._component.base = null;\n\t\tfor (let i = 0; i < vnode._children.length; i++) {\n\t\t\tlet child = vnode._children[i];\n\t\t\tif (child != null && child._dom != null) {\n\t\t\t\tvnode._dom = vnode._component.base = child._dom;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn updateParentDomPointers(vnode);\n\t}\n}\n\n/**\n * The render queue\n * @type {Array}\n */\nlet rerenderQueue = [];\nlet rerenderCount = 0;\n\n/**\n * Asynchronously schedule a callback\n * @type {(cb: () => void) => void}\n */\n/* istanbul ignore next */\n// Note the following line isn't tree-shaken by rollup cuz of rollup/rollup#2566\nconst defer =\n\ttypeof Promise == 'function'\n\t\t? Promise.prototype.then.bind(Promise.resolve())\n\t\t: setTimeout;\n\n/*\n * The value of `Component.debounce` must asynchronously invoke the passed in callback. It is\n * important that contributors to Preact can consistently reason about what calls to `setState`, etc.\n * do, and when their effects will be applied. See the links below for some further reading on designing\n * asynchronous APIs.\n * * [Designing APIs for Asynchrony](https://blog.izs.me/2013/08/designing-apis-for-asynchrony)\n * * [Callbacks synchronous and asynchronous](https://blog.ometer.com/2011/07/24/callbacks-synchronous-and-asynchronous/)\n */\n\nlet prevDebounce;\n\n/**\n * Enqueue a rerender of a component\n * @param {import('./internal').Component} c The component to rerender\n */\nexport function enqueueRender(c) {\n\tif (\n\t\t(!c._dirty &&\n\t\t\t(c._dirty = true) &&\n\t\t\trerenderQueue.push(c) &&\n\t\t\t!rerenderCount++) ||\n\t\tprevDebounce !== options.debounceRendering\n\t) {\n\t\tprevDebounce = options.debounceRendering;\n\t\t(prevDebounce || defer)(process);\n\t}\n}\n\n/** Flush the render queue by rerendering all queued components */\nfunction process() {\n\tlet queue;\n\twhile ((rerenderCount = rerenderQueue.length)) {\n\t\tqueue = rerenderQueue.sort((a, b) => a._vnode._depth - b._vnode._depth);\n\t\trerenderQueue = [];\n\t\t// Don't update `renderCount` yet. Keep its value non-zero to prevent unnecessary\n\t\t// process() calls from getting scheduled while `queue` is still being consumed.\n\t\tqueue.some(c => {\n\t\t\tif (c._dirty) renderComponent(c);\n\t\t});\n\t}\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from './constants';\nimport { commitRoot, diff } from './diff/index';\nimport { createElement, Fragment } from './create-element';\nimport options from './options';\n\nconst IS_HYDRATE = EMPTY_OBJ;\n\n/**\n * Render a Preact virtual node into a DOM element\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * render into\n * @param {Element | Text} [replaceNode] Optional: Attempt to re-use an\n * existing DOM tree rooted at `replaceNode`\n */\nexport function render(vnode, parentDom, replaceNode) {\n\tif (options._root) options._root(vnode, parentDom);\n\n\t// We abuse the `replaceNode` parameter in `hydrate()` to signal if we\n\t// are in hydration mode or not by passing `IS_HYDRATE` instead of a\n\t// DOM element.\n\tlet isHydrating = replaceNode === IS_HYDRATE;\n\n\t// To be able to support calling `render()` multiple times on the same\n\t// DOM node, we need to obtain a reference to the previous tree. We do\n\t// this by assigning a new `_children` property to DOM nodes which points\n\t// to the last rendered tree. By default this property is not present, which\n\t// means that we are mounting a new tree for the first time.\n\tlet oldVNode = isHydrating\n\t\t? null\n\t\t: (replaceNode && replaceNode._children) || parentDom._children;\n\tvnode = createElement(Fragment, null, [vnode]);\n\n\t// List of effects that need to be called after diffing.\n\tlet commitQueue = [];\n\tdiff(\n\t\tparentDom,\n\t\t// Determine the new vnode tree and store it on the DOM element on\n\t\t// our custom `_children` property.\n\t\t((isHydrating ? parentDom : replaceNode || parentDom)._children = vnode),\n\t\toldVNode || EMPTY_OBJ,\n\t\tEMPTY_OBJ,\n\t\tparentDom.ownerSVGElement !== undefined,\n\t\treplaceNode && !isHydrating\n\t\t\t? [replaceNode]\n\t\t\t: oldVNode\n\t\t\t? null\n\t\t\t: EMPTY_ARR.slice.call(parentDom.childNodes),\n\t\tcommitQueue,\n\t\treplaceNode || EMPTY_OBJ,\n\t\tisHydrating\n\t);\n\n\t// Flush all queued effects\n\tcommitRoot(commitQueue, vnode);\n}\n\n/**\n * Update an existing DOM element with data from a Preact virtual node\n * @param {import('./index').ComponentChild} vnode The virtual node to render\n * @param {import('./internal').PreactElement} parentDom The DOM element to\n * update\n */\nexport function hydrate(vnode, parentDom) {\n\trender(vnode, parentDom, IS_HYDRATE);\n}\n","import { enqueueRender } from './component';\n\nexport let i = 0;\n\nexport function createContext(defaultValue) {\n\tconst ctx = {};\n\n\tconst context = {\n\t\t_id: '__cC' + i++,\n\t\t_defaultValue: defaultValue,\n\t\tConsumer(props, context) {\n\t\t\treturn props.children(context);\n\t\t},\n\t\tProvider(props) {\n\t\t\tif (!this.getChildContext) {\n\t\t\t\tconst subs = [];\n\t\t\t\tthis.getChildContext = () => {\n\t\t\t\t\tctx[context._id] = this;\n\t\t\t\t\treturn ctx;\n\t\t\t\t};\n\n\t\t\t\tthis.shouldComponentUpdate = _props => {\n\t\t\t\t\tif (this.props.value !== _props.value) {\n\t\t\t\t\t\tsubs.some(c => {\n\t\t\t\t\t\t\tc.context = _props.value;\n\t\t\t\t\t\t\tenqueueRender(c);\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t};\n\n\t\t\t\tthis.sub = c => {\n\t\t\t\t\tsubs.push(c);\n\t\t\t\t\tlet old = c.componentWillUnmount;\n\t\t\t\t\tc.componentWillUnmount = () => {\n\t\t\t\t\t\tsubs.splice(subs.indexOf(c), 1);\n\t\t\t\t\t\told && old.call(c);\n\t\t\t\t\t};\n\t\t\t\t};\n\t\t\t}\n\n\t\t\treturn props.children;\n\t\t}\n\t};\n\n\tcontext.Consumer.contextType = context;\n\n\t// Devtools needs access to the context object when it\n\t// encounters a Provider. This is necessary to support\n\t// setting `displayName` on the context object instead\n\t// of on the component itself. See:\n\t// https://reactjs.org/docs/context.html#contextdisplayname\n\tcontext.Provider._contextRef = context;\n\n\treturn context;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Remove a child node from its parent if attached. This is a workaround for\n * IE11 which doesn't support `Element.prototype.remove()`. Using this function\n * is smaller than including a dedicated polyfill.\n * @param {Node} node The node to remove\n */\nexport function removeNode(node) {\n\tlet parentNode = node.parentNode;\n\tif (parentNode) parentNode.removeChild(node);\n}\n","import options from './options';\n\n/**\n * Create an virtual node (used for JSX)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * constructor for this virtual node\n * @param {object | null | undefined} [props] The properties of the virtual node\n * @param {Array} [children] The children of the virtual node\n * @returns {import('./internal').VNode}\n */\nexport function createElement(type, props, children) {\n\tlet normalizedProps = {},\n\t\ti;\n\tfor (i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\tif (arguments.length > 3) {\n\t\tchildren = [children];\n\t\t// https://github.com/preactjs/preact/issues/1916\n\t\tfor (i = 3; i < arguments.length; i++) {\n\t\t\tchildren.push(arguments[i]);\n\t\t}\n\t}\n\tif (children != null) {\n\t\tnormalizedProps.children = children;\n\t}\n\n\t// If a Component VNode, check for and apply defaultProps\n\t// Note: type may be undefined in development, must never error here.\n\tif (typeof type == 'function' && type.defaultProps != null) {\n\t\tfor (i in type.defaultProps) {\n\t\t\tif (normalizedProps[i] === undefined) {\n\t\t\t\tnormalizedProps[i] = type.defaultProps[i];\n\t\t\t}\n\t\t}\n\t}\n\n\treturn createVNode(\n\t\ttype,\n\t\tnormalizedProps,\n\t\tprops && props.key,\n\t\tprops && props.ref,\n\t\tnull\n\t);\n}\n\n/**\n * Create a VNode (used internally by Preact)\n * @param {import('./internal').VNode[\"type\"]} type The node name or Component\n * Constructor for this virtual node\n * @param {object | string | number | null} props The properties of this virtual node.\n * If this virtual node represents a text node, this is the text of the node (string or number).\n * @param {string | number | null} key The key for this virtual node, used when\n * diffing it against its children\n * @param {import('./internal').VNode[\"ref\"]} ref The ref property that will\n * receive a reference to its created child\n * @returns {import('./internal').VNode}\n */\nexport function createVNode(type, props, key, ref, original) {\n\t// V8 seems to be better at detecting type shapes if the object is allocated from the same call site\n\t// Do not inline into createElement and coerceToVNode!\n\tconst vnode = {\n\t\ttype,\n\t\tprops,\n\t\tkey,\n\t\tref,\n\t\t_children: null,\n\t\t_parent: null,\n\t\t_depth: 0,\n\t\t_dom: null,\n\t\t// _nextDom must be initialized to undefined b/c it will eventually\n\t\t// be set to dom.nextSibling which can return `null` and it is important\n\t\t// to be able to distinguish between an uninitialized _nextDom and\n\t\t// a _nextDom that has been set to `null`\n\t\t_nextDom: undefined,\n\t\t_component: null,\n\t\tconstructor: undefined,\n\t\t_original: original\n\t};\n\n\tif (original == null) vnode._original = vnode;\n\tif (options.vnode) options.vnode(vnode);\n\n\treturn vnode;\n}\n\nexport function createRef() {\n\treturn {};\n}\n\nexport function Fragment(props) {\n\treturn props.children;\n}\n\n/**\n * Check if a the argument is a valid Preact VNode.\n * @param {*} vnode\n * @returns {vnode is import('./internal').VNode}\n */\nexport const isValidElement = vnode =>\n\tvnode != null && vnode.constructor === undefined;\n","import { diff, unmount, applyRef } from './index';\nimport { createVNode } from '../create-element';\nimport { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { removeNode } from '../util';\nimport { getDomSibling } from '../component';\n\n/**\n * Diff the children of a virtual node\n * @param {import('../internal').PreactElement} parentDom The DOM element whose\n * children are being diffed\n * @param {import('../internal').VNode} newParentVNode The new virtual\n * node whose children should be diff'ed against oldParentVNode\n * @param {import('../internal').VNode} oldParentVNode The old virtual\n * node whose children should be diff'ed against newParentVNode\n * @param {object} globalContext The current context object - modified by getChildContext\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Node | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} isHydrating Whether or not we are in hydration\n */\nexport function diffChildren(\n\tparentDom,\n\tnewParentVNode,\n\toldParentVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet i, j, oldVNode, newDom, sibDom, firstChildDom, refs;\n\n\t// This is a compression of oldParentVNode!=null && oldParentVNode != EMPTY_OBJ && oldParentVNode._children || EMPTY_ARR\n\t// as EMPTY_OBJ._children should be `undefined`.\n\tlet oldChildren = (oldParentVNode && oldParentVNode._children) || EMPTY_ARR;\n\n\tlet oldChildrenLength = oldChildren.length;\n\n\t// Only in very specific places should this logic be invoked (top level `render` and `diffElementNodes`).\n\t// I'm using `EMPTY_OBJ` to signal when `diffChildren` is invoked in these situations. I can't use `null`\n\t// for this purpose, because `null` is a valid value for `oldDom` which can mean to skip to this logic\n\t// (e.g. if mounting a new tree in which the old DOM should be ignored (usually for Fragments).\n\tif (oldDom == EMPTY_OBJ) {\n\t\tif (excessDomChildren != null) {\n\t\t\toldDom = excessDomChildren[0];\n\t\t} else if (oldChildrenLength) {\n\t\t\toldDom = getDomSibling(oldParentVNode, 0);\n\t\t} else {\n\t\t\toldDom = null;\n\t\t}\n\t}\n\n\ti = 0;\n\tnewParentVNode._children = toChildArray(\n\t\tnewParentVNode._children,\n\t\tchildVNode => {\n\t\t\tif (childVNode != null) {\n\t\t\t\tchildVNode._parent = newParentVNode;\n\t\t\t\tchildVNode._depth = newParentVNode._depth + 1;\n\n\t\t\t\t// Check if we find a corresponding element in oldChildren.\n\t\t\t\t// If found, delete the array item by setting to `undefined`.\n\t\t\t\t// We use `undefined`, as `null` is reserved for empty placeholders\n\t\t\t\t// (holes).\n\t\t\t\toldVNode = oldChildren[i];\n\n\t\t\t\tif (\n\t\t\t\t\toldVNode === null ||\n\t\t\t\t\t(oldVNode &&\n\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\tchildVNode.type === oldVNode.type)\n\t\t\t\t) {\n\t\t\t\t\toldChildren[i] = undefined;\n\t\t\t\t} else {\n\t\t\t\t\t// Either oldVNode === undefined or oldChildrenLength > 0,\n\t\t\t\t\t// so after this loop oldVNode == null or oldVNode is a valid value.\n\t\t\t\t\tfor (j = 0; j < oldChildrenLength; j++) {\n\t\t\t\t\t\toldVNode = oldChildren[j];\n\t\t\t\t\t\t// If childVNode is unkeyed, we only match similarly unkeyed nodes, otherwise we match by key.\n\t\t\t\t\t\t// We always match by type (in either case).\n\t\t\t\t\t\tif (\n\t\t\t\t\t\t\toldVNode &&\n\t\t\t\t\t\t\tchildVNode.key == oldVNode.key &&\n\t\t\t\t\t\t\tchildVNode.type === oldVNode.type\n\t\t\t\t\t\t) {\n\t\t\t\t\t\t\toldChildren[j] = undefined;\n\t\t\t\t\t\t\tbreak;\n\t\t\t\t\t\t}\n\t\t\t\t\t\toldVNode = null;\n\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\toldVNode = oldVNode || EMPTY_OBJ;\n\n\t\t\t\t// Morph the old element into the new one, but don't append it to the dom yet\n\t\t\t\tnewDom = diff(\n\t\t\t\t\tparentDom,\n\t\t\t\t\tchildVNode,\n\t\t\t\t\toldVNode,\n\t\t\t\t\tglobalContext,\n\t\t\t\t\tisSvg,\n\t\t\t\t\texcessDomChildren,\n\t\t\t\t\tcommitQueue,\n\t\t\t\t\toldDom,\n\t\t\t\t\tisHydrating\n\t\t\t\t);\n\n\t\t\t\tif ((j = childVNode.ref) && oldVNode.ref != j) {\n\t\t\t\t\tif (!refs) refs = [];\n\t\t\t\t\tif (oldVNode.ref) refs.push(oldVNode.ref, null, childVNode);\n\t\t\t\t\trefs.push(j, childVNode._component || newDom, childVNode);\n\t\t\t\t}\n\n\t\t\t\t// Only proceed if the vnode has not been unmounted by `diff()` above.\n\t\t\t\tif (newDom != null) {\n\t\t\t\t\tif (firstChildDom == null) {\n\t\t\t\t\t\tfirstChildDom = newDom;\n\t\t\t\t\t}\n\n\t\t\t\t\tlet nextDom;\n\t\t\t\t\tif (childVNode._nextDom !== undefined) {\n\t\t\t\t\t\t// Only Fragments or components that return Fragment like VNodes will\n\t\t\t\t\t\t// have a non-undefined _nextDom. Continue the diff from the sibling\n\t\t\t\t\t\t// of last DOM child of this child VNode\n\t\t\t\t\t\tnextDom = childVNode._nextDom;\n\n\t\t\t\t\t\t// Eagerly cleanup _nextDom. We don't need to persist the value because\n\t\t\t\t\t\t// it is only used by `diffChildren` to determine where to resume the diff after\n\t\t\t\t\t\t// diffing Components and Fragments. Once we store it the nextDOM local var, we\n\t\t\t\t\t\t// can clean up the property\n\t\t\t\t\t\tchildVNode._nextDom = undefined;\n\t\t\t\t\t} else if (\n\t\t\t\t\t\texcessDomChildren == oldVNode ||\n\t\t\t\t\t\tnewDom != oldDom ||\n\t\t\t\t\t\tnewDom.parentNode == null\n\t\t\t\t\t) {\n\t\t\t\t\t\t// NOTE: excessDomChildren==oldVNode above:\n\t\t\t\t\t\t// This is a compression of excessDomChildren==null && oldVNode==null!\n\t\t\t\t\t\t// The values only have the same type when `null`.\n\n\t\t\t\t\t\touter: if (oldDom == null || oldDom.parentNode !== parentDom) {\n\t\t\t\t\t\t\tparentDom.appendChild(newDom);\n\t\t\t\t\t\t\tnextDom = null;\n\t\t\t\t\t\t} else {\n\t\t\t\t\t\t\t// `j import('../internal').VNode} [callback]\n * A function to invoke for each child before it is added to the flattened list.\n * @param {Array} [flattened] An flat array of children to modify\n * @returns {import('../internal').VNode[]}\n */\nexport function toChildArray(children, callback, flattened) {\n\tif (flattened == null) flattened = [];\n\n\tif (children == null || typeof children == 'boolean') {\n\t\tif (callback) flattened.push(callback(null));\n\t} else if (Array.isArray(children)) {\n\t\tfor (let i = 0; i < children.length; i++) {\n\t\t\ttoChildArray(children[i], callback, flattened);\n\t\t}\n\t} else if (!callback) {\n\t\tflattened.push(children);\n\t} else if (typeof children == 'string' || typeof children == 'number') {\n\t\tflattened.push(callback(createVNode(null, children, null, null, children)));\n\t} else if (children._dom != null || children._component != null) {\n\t\tflattened.push(\n\t\t\tcallback(\n\t\t\t\tcreateVNode(\n\t\t\t\t\tchildren.type,\n\t\t\t\t\tchildren.props,\n\t\t\t\t\tchildren.key,\n\t\t\t\t\tnull,\n\t\t\t\t\tchildren._original\n\t\t\t\t)\n\t\t\t)\n\t\t);\n\t} else {\n\t\tflattened.push(callback(children));\n\t}\n\n\treturn flattened;\n}\n","import { IS_NON_DIMENSIONAL } from '../constants';\nimport options from '../options';\n\n/**\n * Diff the old and new properties of a VNode and apply changes to the DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to apply\n * changes to\n * @param {object} newProps The new props\n * @param {object} oldProps The old props\n * @param {boolean} isSvg Whether or not this node is an SVG node\n * @param {boolean} hydrate Whether or not we are in hydration mode\n */\nexport function diffProps(dom, newProps, oldProps, isSvg, hydrate) {\n\tlet i;\n\n\tfor (i in oldProps) {\n\t\tif (i !== 'children' && i !== 'key' && !(i in newProps)) {\n\t\t\tsetProperty(dom, i, null, oldProps[i], isSvg);\n\t\t}\n\t}\n\n\tfor (i in newProps) {\n\t\tif (\n\t\t\t(!hydrate || typeof newProps[i] == 'function') &&\n\t\t\ti !== 'children' &&\n\t\t\ti !== 'key' &&\n\t\t\ti !== 'value' &&\n\t\t\ti !== 'checked' &&\n\t\t\toldProps[i] !== newProps[i]\n\t\t) {\n\t\t\tsetProperty(dom, i, newProps[i], oldProps[i], isSvg);\n\t\t}\n\t}\n}\n\nfunction setStyle(style, key, value) {\n\tif (key[0] === '-') {\n\t\tstyle.setProperty(key, value);\n\t} else if (\n\t\ttypeof value == 'number' &&\n\t\tIS_NON_DIMENSIONAL.test(key) === false\n\t) {\n\t\tstyle[key] = value + 'px';\n\t} else if (value == null) {\n\t\tstyle[key] = '';\n\t} else {\n\t\tstyle[key] = value;\n\t}\n}\n\n/**\n * Set a property value on a DOM node\n * @param {import('../internal').PreactElement} dom The DOM node to modify\n * @param {string} name The name of the property to set\n * @param {*} value The value to set the property to\n * @param {*} oldValue The old value the property had\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node or not\n */\nexport function setProperty(dom, name, value, oldValue, isSvg) {\n\tlet s, useCapture, nameLower;\n\n\tif (isSvg) {\n\t\tif (name === 'className') {\n\t\t\tname = 'class';\n\t\t}\n\t} else if (name === 'class') {\n\t\tname = 'className';\n\t}\n\n\tif (name === 'style') {\n\t\ts = dom.style;\n\n\t\tif (typeof value == 'string') {\n\t\t\ts.cssText = value;\n\t\t} else {\n\t\t\tif (typeof oldValue == 'string') {\n\t\t\t\ts.cssText = '';\n\t\t\t\toldValue = null;\n\t\t\t}\n\n\t\t\tif (oldValue) {\n\t\t\t\tfor (let i in oldValue) {\n\t\t\t\t\tif (!(value && i in value)) {\n\t\t\t\t\t\tsetStyle(s, i, '');\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (value) {\n\t\t\t\tfor (let i in value) {\n\t\t\t\t\tif (!oldValue || value[i] !== oldValue[i]) {\n\t\t\t\t\t\tsetStyle(s, i, value[i]);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n\t// Benchmark for comparison: https://esbench.com/bench/574c954bdb965b9a00965ac6\n\telse if (name[0] === 'o' && name[1] === 'n') {\n\t\tuseCapture = name !== (name = name.replace(/Capture$/, ''));\n\t\tnameLower = name.toLowerCase();\n\t\tname = (nameLower in dom ? nameLower : name).slice(2);\n\n\t\tif (value) {\n\t\t\tif (!oldValue) dom.addEventListener(name, eventProxy, useCapture);\n\t\t\t(dom._listeners || (dom._listeners = {}))[name] = value;\n\t\t} else {\n\t\t\tdom.removeEventListener(name, eventProxy, useCapture);\n\t\t}\n\t} else if (\n\t\tname !== 'list' &&\n\t\tname !== 'tagName' &&\n\t\t// HTMLButtonElement.form and HTMLInputElement.form are read-only but can be set using\n\t\t// setAttribute\n\t\tname !== 'form' &&\n\t\tname !== 'type' &&\n\t\tname !== 'size' &&\n\t\t!isSvg &&\n\t\tname in dom\n\t) {\n\t\tdom[name] = value == null ? '' : value;\n\t} else if (typeof value != 'function' && name !== 'dangerouslySetInnerHTML') {\n\t\tif (name !== (name = name.replace(/^xlink:?/, ''))) {\n\t\t\tif (value == null || value === false) {\n\t\t\t\tdom.removeAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase()\n\t\t\t\t);\n\t\t\t} else {\n\t\t\t\tdom.setAttributeNS(\n\t\t\t\t\t'http://www.w3.org/1999/xlink',\n\t\t\t\t\tname.toLowerCase(),\n\t\t\t\t\tvalue\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (\n\t\t\tvalue == null ||\n\t\t\t(value === false &&\n\t\t\t\t// ARIA-attributes have a different notion of boolean values.\n\t\t\t\t// The value `false` is different from the attribute not\n\t\t\t\t// existing on the DOM, so we can't remove it. For non-boolean\n\t\t\t\t// ARIA-attributes we could treat false as a removal, but the\n\t\t\t\t// amount of exceptions would cost us too many bytes. On top of\n\t\t\t\t// that other VDOM frameworks also always stringify `false`.\n\t\t\t\t!/^ar/.test(name))\n\t\t) {\n\t\t\tdom.removeAttribute(name);\n\t\t} else {\n\t\t\tdom.setAttribute(name, value);\n\t\t}\n\t}\n}\n\n/**\n * Proxy an event to hooked event handlers\n * @param {Event} e The event object from the browser\n * @private\n */\nfunction eventProxy(e) {\n\tthis._listeners[e.type](options.event ? options.event(e) : e);\n}\n","import { EMPTY_OBJ, EMPTY_ARR } from '../constants';\nimport { Component } from '../component';\nimport { Fragment } from '../create-element';\nimport { diffChildren } from './children';\nimport { diffProps, setProperty } from './props';\nimport { assign, removeNode } from '../util';\nimport options from '../options';\n\n/**\n * Diff two virtual nodes and apply proper changes to the DOM\n * @param {import('../internal').PreactElement} parentDom The parent of the DOM element\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object. Modified by getChildContext\n * @param {boolean} isSvg Whether or not this element is an SVG node\n * @param {Array} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {Element | Text} oldDom The current attached DOM\n * element any new dom elements should be placed around. Likely `null` on first\n * render (except when hydrating). Can be a sibling DOM element when diffing\n * Fragments that have siblings. In most cases, it starts out as `oldChildren[0]._dom`.\n * @param {boolean} [isHydrating] Whether or not we are in hydration\n */\nexport function diff(\n\tparentDom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\toldDom,\n\tisHydrating\n) {\n\tlet tmp,\n\t\tnewType = newVNode.type;\n\n\t// When passing through createElement it assigns the object\n\t// constructor as undefined. This to prevent JSON-injection.\n\tif (newVNode.constructor !== undefined) return null;\n\n\tif ((tmp = options._diff)) tmp(newVNode);\n\n\ttry {\n\t\touter: if (typeof newType == 'function') {\n\t\t\tlet c, isNew, oldProps, oldState, snapshot, clearProcessingException;\n\t\t\tlet newProps = newVNode.props;\n\n\t\t\t// Necessary for createContext api. Setting this property will pass\n\t\t\t// the context value as `this.context` just for this component.\n\t\t\ttmp = newType.contextType;\n\t\t\tlet provider = tmp && globalContext[tmp._id];\n\t\t\tlet componentContext = tmp\n\t\t\t\t? provider\n\t\t\t\t\t? provider.props.value\n\t\t\t\t\t: tmp._defaultValue\n\t\t\t\t: globalContext;\n\n\t\t\t// Get component and set it to `c`\n\t\t\tif (oldVNode._component) {\n\t\t\t\tc = newVNode._component = oldVNode._component;\n\t\t\t\tclearProcessingException = c._processingException = c._pendingError;\n\t\t\t} else {\n\t\t\t\t// Instantiate the new component\n\t\t\t\tif ('prototype' in newType && newType.prototype.render) {\n\t\t\t\t\tnewVNode._component = c = new newType(newProps, componentContext); // eslint-disable-line new-cap\n\t\t\t\t} else {\n\t\t\t\t\tnewVNode._component = c = new Component(newProps, componentContext);\n\t\t\t\t\tc.constructor = newType;\n\t\t\t\t\tc.render = doRender;\n\t\t\t\t}\n\t\t\t\tif (provider) provider.sub(c);\n\n\t\t\t\tc.props = newProps;\n\t\t\t\tif (!c.state) c.state = {};\n\t\t\t\tc.context = componentContext;\n\t\t\t\tc._globalContext = globalContext;\n\t\t\t\tisNew = c._dirty = true;\n\t\t\t\tc._renderCallbacks = [];\n\t\t\t}\n\n\t\t\t// Invoke getDerivedStateFromProps\n\t\t\tif (c._nextState == null) {\n\t\t\t\tc._nextState = c.state;\n\t\t\t}\n\t\t\tif (newType.getDerivedStateFromProps != null) {\n\t\t\t\tif (c._nextState == c.state) {\n\t\t\t\t\tc._nextState = assign({}, c._nextState);\n\t\t\t\t}\n\n\t\t\t\tassign(\n\t\t\t\t\tc._nextState,\n\t\t\t\t\tnewType.getDerivedStateFromProps(newProps, c._nextState)\n\t\t\t\t);\n\t\t\t}\n\n\t\t\toldProps = c.props;\n\t\t\toldState = c.state;\n\n\t\t\t// Invoke pre-render lifecycle methods\n\t\t\tif (isNew) {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tc.componentWillMount != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillMount();\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidMount != null) {\n\t\t\t\t\tc._renderCallbacks.push(c.componentDidMount);\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\tif (\n\t\t\t\t\tnewType.getDerivedStateFromProps == null &&\n\t\t\t\t\tnewProps !== oldProps &&\n\t\t\t\t\tc.componentWillReceiveProps != null\n\t\t\t\t) {\n\t\t\t\t\tc.componentWillReceiveProps(newProps, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (\n\t\t\t\t\t(!c._force &&\n\t\t\t\t\t\tc.shouldComponentUpdate != null &&\n\t\t\t\t\t\tc.shouldComponentUpdate(\n\t\t\t\t\t\t\tnewProps,\n\t\t\t\t\t\t\tc._nextState,\n\t\t\t\t\t\t\tcomponentContext\n\t\t\t\t\t\t) === false) ||\n\t\t\t\t\t(newVNode._original === oldVNode._original && !c._processingException)\n\t\t\t\t) {\n\t\t\t\t\tc.props = newProps;\n\t\t\t\t\tc.state = c._nextState;\n\t\t\t\t\t// More info about this here: https://gist.github.com/JoviDeCroock/bec5f2ce93544d2e6070ef8e0036e4e8\n\t\t\t\t\tif (newVNode._original !== oldVNode._original) c._dirty = false;\n\t\t\t\t\tc._vnode = newVNode;\n\t\t\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t\t\t\tnewVNode._children = oldVNode._children;\n\t\t\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\t\t\tcommitQueue.push(c);\n\t\t\t\t\t}\n\n\t\t\t\t\tfor (tmp = 0; tmp < newVNode._children.length; tmp++) {\n\t\t\t\t\t\tif (newVNode._children[tmp]) {\n\t\t\t\t\t\t\tnewVNode._children[tmp]._parent = newVNode;\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\n\t\t\t\t\tbreak outer;\n\t\t\t\t}\n\n\t\t\t\tif (c.componentWillUpdate != null) {\n\t\t\t\t\tc.componentWillUpdate(newProps, c._nextState, componentContext);\n\t\t\t\t}\n\n\t\t\t\tif (c.componentDidUpdate != null) {\n\t\t\t\t\tc._renderCallbacks.push(() => {\n\t\t\t\t\t\tc.componentDidUpdate(oldProps, oldState, snapshot);\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tc.context = componentContext;\n\t\t\tc.props = newProps;\n\t\t\tc.state = c._nextState;\n\n\t\t\tif ((tmp = options._render)) tmp(newVNode);\n\n\t\t\tc._dirty = false;\n\t\t\tc._vnode = newVNode;\n\t\t\tc._parentDom = parentDom;\n\n\t\t\ttmp = c.render(c.props, c.state, c.context);\n\t\t\tlet isTopLevelFragment =\n\t\t\t\ttmp != null && tmp.type == Fragment && tmp.key == null;\n\t\t\tnewVNode._children = isTopLevelFragment\n\t\t\t\t? tmp.props.children\n\t\t\t\t: Array.isArray(tmp)\n\t\t\t\t? tmp\n\t\t\t\t: [tmp];\n\n\t\t\tif (c.getChildContext != null) {\n\t\t\t\tglobalContext = assign(assign({}, globalContext), c.getChildContext());\n\t\t\t}\n\n\t\t\tif (!isNew && c.getSnapshotBeforeUpdate != null) {\n\t\t\t\tsnapshot = c.getSnapshotBeforeUpdate(oldProps, oldState);\n\t\t\t}\n\n\t\t\tdiffChildren(\n\t\t\t\tparentDom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\toldDom,\n\t\t\t\tisHydrating\n\t\t\t);\n\n\t\t\tc.base = newVNode._dom;\n\n\t\t\tif (c._renderCallbacks.length) {\n\t\t\t\tcommitQueue.push(c);\n\t\t\t}\n\n\t\t\tif (clearProcessingException) {\n\t\t\t\tc._pendingError = c._processingException = null;\n\t\t\t}\n\n\t\t\tc._force = false;\n\t\t} else if (\n\t\t\texcessDomChildren == null &&\n\t\t\tnewVNode._original === oldVNode._original\n\t\t) {\n\t\t\tnewVNode._children = oldVNode._children;\n\t\t\tnewVNode._dom = oldVNode._dom;\n\t\t} else {\n\t\t\tnewVNode._dom = diffElementNodes(\n\t\t\t\toldVNode._dom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tisSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\tif ((tmp = options.diffed)) tmp(newVNode);\n\t} catch (e) {\n\t\tnewVNode._original = null;\n\t\toptions._catchError(e, newVNode, oldVNode);\n\t}\n\n\treturn newVNode._dom;\n}\n\n/**\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {import('../internal').VNode} root\n */\nexport function commitRoot(commitQueue, root) {\n\tif (options._commit) options._commit(root, commitQueue);\n\n\tcommitQueue.some(c => {\n\t\ttry {\n\t\t\tcommitQueue = c._renderCallbacks;\n\t\t\tc._renderCallbacks = [];\n\t\t\tcommitQueue.some(cb => {\n\t\t\t\tcb.call(c);\n\t\t\t});\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t});\n}\n\n/**\n * Diff two virtual nodes representing DOM element\n * @param {import('../internal').PreactElement} dom The DOM element representing\n * the virtual nodes being diffed\n * @param {import('../internal').VNode} newVNode The new virtual node\n * @param {import('../internal').VNode} oldVNode The old virtual node\n * @param {object} globalContext The current context object\n * @param {boolean} isSvg Whether or not this DOM node is an SVG node\n * @param {*} excessDomChildren\n * @param {Array} commitQueue List of components\n * which have callbacks to invoke in commitRoot\n * @param {boolean} isHydrating Whether or not we are in hydration\n * @returns {import('../internal').PreactElement}\n */\nfunction diffElementNodes(\n\tdom,\n\tnewVNode,\n\toldVNode,\n\tglobalContext,\n\tisSvg,\n\texcessDomChildren,\n\tcommitQueue,\n\tisHydrating\n) {\n\tlet i;\n\tlet oldProps = oldVNode.props;\n\tlet newProps = newVNode.props;\n\n\t// Tracks entering and exiting SVG namespace when descending through the tree.\n\tisSvg = newVNode.type === 'svg' || isSvg;\n\n\tif (excessDomChildren != null) {\n\t\tfor (i = 0; i < excessDomChildren.length; i++) {\n\t\t\tconst child = excessDomChildren[i];\n\n\t\t\t// if newVNode matches an element in excessDomChildren or the `dom`\n\t\t\t// argument matches an element in excessDomChildren, remove it from\n\t\t\t// excessDomChildren so it isn't later removed in diffChildren\n\t\t\tif (\n\t\t\t\tchild != null &&\n\t\t\t\t((newVNode.type === null\n\t\t\t\t\t? child.nodeType === 3\n\t\t\t\t\t: child.localName === newVNode.type) ||\n\t\t\t\t\tdom == child)\n\t\t\t) {\n\t\t\t\tdom = child;\n\t\t\t\texcessDomChildren[i] = null;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\t}\n\n\tif (dom == null) {\n\t\tif (newVNode.type === null) {\n\t\t\treturn document.createTextNode(newProps);\n\t\t}\n\n\t\tdom = isSvg\n\t\t\t? document.createElementNS('http://www.w3.org/2000/svg', newVNode.type)\n\t\t\t: document.createElement(\n\t\t\t\t\tnewVNode.type,\n\t\t\t\t\tnewProps.is && { is: newProps.is }\n\t\t\t );\n\t\t// we created a new parent, so none of the previously attached children can be reused:\n\t\texcessDomChildren = null;\n\t\t// we are creating a new node, so we can assume this is a new subtree (in case we are hydrating), this deopts the hydrate\n\t\tisHydrating = false;\n\t}\n\n\tif (newVNode.type === null) {\n\t\tif (oldProps !== newProps && dom.data != newProps) {\n\t\t\tdom.data = newProps;\n\t\t}\n\t} else {\n\t\tif (excessDomChildren != null) {\n\t\t\texcessDomChildren = EMPTY_ARR.slice.call(dom.childNodes);\n\t\t}\n\n\t\toldProps = oldVNode.props || EMPTY_OBJ;\n\n\t\tlet oldHtml = oldProps.dangerouslySetInnerHTML;\n\t\tlet newHtml = newProps.dangerouslySetInnerHTML;\n\n\t\t// During hydration, props are not diffed at all (including dangerouslySetInnerHTML)\n\t\t// @TODO we should warn in debug mode when props don't match here.\n\t\tif (!isHydrating) {\n\t\t\tif (oldProps === EMPTY_OBJ) {\n\t\t\t\toldProps = {};\n\t\t\t\tfor (let i = 0; i < dom.attributes.length; i++) {\n\t\t\t\t\toldProps[dom.attributes[i].name] = dom.attributes[i].value;\n\t\t\t\t}\n\t\t\t}\n\n\t\t\tif (newHtml || oldHtml) {\n\t\t\t\t// Avoid re-applying the same '__html' if it did not changed between re-render\n\t\t\t\tif (!newHtml || !oldHtml || newHtml.__html != oldHtml.__html) {\n\t\t\t\t\tdom.innerHTML = (newHtml && newHtml.__html) || '';\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tdiffProps(dom, newProps, oldProps, isSvg, isHydrating);\n\n\t\t// If the new vnode didn't have dangerouslySetInnerHTML, diff its children\n\t\tif (newHtml) {\n\t\t\tnewVNode._children = [];\n\t\t} else {\n\t\t\tnewVNode._children = newVNode.props.children;\n\t\t\tdiffChildren(\n\t\t\t\tdom,\n\t\t\t\tnewVNode,\n\t\t\t\toldVNode,\n\t\t\t\tglobalContext,\n\t\t\t\tnewVNode.type === 'foreignObject' ? false : isSvg,\n\t\t\t\texcessDomChildren,\n\t\t\t\tcommitQueue,\n\t\t\t\tEMPTY_OBJ,\n\t\t\t\tisHydrating\n\t\t\t);\n\t\t}\n\n\t\t// (as above, don't diff props during hydration)\n\t\tif (!isHydrating) {\n\t\t\tif (\n\t\t\t\t'value' in newProps &&\n\t\t\t\t(i = newProps.value) !== undefined &&\n\t\t\t\ti !== dom.value\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'value', i, oldProps.value, false);\n\t\t\t}\n\t\t\tif (\n\t\t\t\t'checked' in newProps &&\n\t\t\t\t(i = newProps.checked) !== undefined &&\n\t\t\t\ti !== dom.checked\n\t\t\t) {\n\t\t\t\tsetProperty(dom, 'checked', i, oldProps.checked, false);\n\t\t\t}\n\t\t}\n\t}\n\n\treturn dom;\n}\n\n/**\n * Invoke or update a ref, depending on whether it is a function or object ref.\n * @param {object|function} ref\n * @param {any} value\n * @param {import('../internal').VNode} vnode\n */\nexport function applyRef(ref, value, vnode) {\n\ttry {\n\t\tif (typeof ref == 'function') ref(value);\n\t\telse ref.current = value;\n\t} catch (e) {\n\t\toptions._catchError(e, vnode);\n\t}\n}\n\n/**\n * Unmount a virtual node from the tree and apply DOM changes\n * @param {import('../internal').VNode} vnode The virtual node to unmount\n * @param {import('../internal').VNode} parentVNode The parent of the VNode that\n * initiated the unmount\n * @param {boolean} [skipRemove] Flag that indicates that a parent node of the\n * current element is already detached from the DOM.\n */\nexport function unmount(vnode, parentVNode, skipRemove) {\n\tlet r;\n\tif (options.unmount) options.unmount(vnode);\n\n\tif ((r = vnode.ref)) {\n\t\tif (!r.current || r.current === vnode._dom) applyRef(r, null, parentVNode);\n\t}\n\n\tlet dom;\n\tif (!skipRemove && typeof vnode.type != 'function') {\n\t\tskipRemove = (dom = vnode._dom) != null;\n\t}\n\n\t// Must be set to `undefined` to properly clean up `_nextDom`\n\t// for which `null` is a valid value. See comment in `create-element.js`\n\tvnode._dom = vnode._nextDom = undefined;\n\n\tif ((r = vnode._component) != null) {\n\t\tif (r.componentWillUnmount) {\n\t\t\ttry {\n\t\t\t\tr.componentWillUnmount();\n\t\t\t} catch (e) {\n\t\t\t\toptions._catchError(e, parentVNode);\n\t\t\t}\n\t\t}\n\n\t\tr.base = r._parentDom = null;\n\t}\n\n\tif ((r = vnode._children)) {\n\t\tfor (let i = 0; i < r.length; i++) {\n\t\t\tif (r[i]) unmount(r[i], parentVNode, skipRemove);\n\t\t}\n\t}\n\n\tif (dom != null) removeNode(dom);\n}\n\n/** The `.render()` method for a PFC backing instance. */\nfunction doRender(props, state, context) {\n\treturn this.constructor(props, context);\n}\n","import { assign } from './util';\nimport { EMPTY_ARR } from './constants';\nimport { createVNode } from './create-element';\n\n/**\n * Clones the given VNode, optionally adding attributes/props and replacing its children.\n * @param {import('./internal').VNode} vnode The virtual DOM element to clone\n * @param {object} props Attributes/props to add when cloning\n * @param {Array} rest Any additional arguments will be used as replacement children.\n * @returns {import('./internal').VNode}\n */\nexport function cloneElement(vnode, props) {\n\tprops = assign(assign({}, vnode.props), props);\n\tif (arguments.length > 2) props.children = EMPTY_ARR.slice.call(arguments, 2);\n\tlet normalizedProps = {};\n\tfor (const i in props) {\n\t\tif (i !== 'key' && i !== 'ref') normalizedProps[i] = props[i];\n\t}\n\n\treturn createVNode(\n\t\tvnode.type,\n\t\tnormalizedProps,\n\t\tprops.key || vnode.key,\n\t\tprops.ref || vnode.ref,\n\t\tnull\n\t);\n}\n","import { enqueueRender } from '../component';\n\n/**\n * Find the closest error boundary to a thrown error and call it\n * @param {object} error The thrown value\n * @param {import('../internal').VNode} vnode The vnode that threw\n * the error that was caught (except for unmounting when this parameter\n * is the highest parent that was being unmounted)\n */\nexport function _catchError(error, vnode) {\n\t/** @type {import('../internal').Component} */\n\tlet component, hasCaught;\n\n\tfor (; (vnode = vnode._parent); ) {\n\t\tif ((component = vnode._component) && !component._processingException) {\n\t\t\ttry {\n\t\t\t\tif (\n\t\t\t\t\tcomponent.constructor &&\n\t\t\t\t\tcomponent.constructor.getDerivedStateFromError != null\n\t\t\t\t) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.setState(\n\t\t\t\t\t\tcomponent.constructor.getDerivedStateFromError(error)\n\t\t\t\t\t);\n\t\t\t\t}\n\n\t\t\t\tif (component.componentDidCatch != null) {\n\t\t\t\t\thasCaught = true;\n\t\t\t\t\tcomponent.componentDidCatch(error);\n\t\t\t\t}\n\n\t\t\t\tif (hasCaught)\n\t\t\t\t\treturn enqueueRender((component._pendingError = component));\n\t\t\t} catch (e) {\n\t\t\t\terror = e;\n\t\t\t}\n\t\t}\n\t}\n\n\tthrow error;\n}\n","import { options } from 'preact';\n\n/** @type {number} */\nlet currentIndex;\n\n/** @type {import('./internal').Component} */\nlet currentComponent;\n\n/** @type {number} */\nlet currentHook = 0;\n\n/** @type {Array} */\nlet afterPaintEffects = [];\n\nlet oldBeforeRender = options._render;\nlet oldAfterDiff = options.diffed;\nlet oldCommit = options._commit;\nlet oldBeforeUnmount = options.unmount;\n\nconst RAF_TIMEOUT = 100;\nlet prevRaf;\n\noptions._render = vnode => {\n\tif (oldBeforeRender) oldBeforeRender(vnode);\n\n\tcurrentComponent = vnode._component;\n\tcurrentIndex = 0;\n\n\tif (currentComponent.__hooks) {\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\tcurrentComponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\tcurrentComponent.__hooks._pendingEffects = [];\n\t}\n};\n\noptions.diffed = vnode => {\n\tif (oldAfterDiff) oldAfterDiff(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\tif (hooks._pendingEffects.length) {\n\t\t\tafterPaint(afterPaintEffects.push(c));\n\t\t}\n\t}\n};\n\noptions._commit = (vnode, commitQueue) => {\n\tcommitQueue.some(component => {\n\t\ttry {\n\t\t\tcomponent._renderCallbacks.forEach(invokeCleanup);\n\t\t\tcomponent._renderCallbacks = component._renderCallbacks.filter(cb =>\n\t\t\t\tcb._value ? invokeEffect(cb) : true\n\t\t\t);\n\t\t} catch (e) {\n\t\t\tcommitQueue.some(c => {\n\t\t\t\tif (c._renderCallbacks) c._renderCallbacks = [];\n\t\t\t});\n\t\t\tcommitQueue = [];\n\t\t\toptions._catchError(e, component._vnode);\n\t\t}\n\t});\n\n\tif (oldCommit) oldCommit(vnode, commitQueue);\n};\n\noptions.unmount = vnode => {\n\tif (oldBeforeUnmount) oldBeforeUnmount(vnode);\n\n\tconst c = vnode._component;\n\tif (!c) return;\n\n\tconst hooks = c.__hooks;\n\tif (hooks) {\n\t\ttry {\n\t\t\thooks._list.forEach(hook => hook._cleanup && hook._cleanup());\n\t\t} catch (e) {\n\t\t\toptions._catchError(e, c._vnode);\n\t\t}\n\t}\n};\n\n/**\n * Get a hook's state from the currentComponent\n * @param {number} index The index of the hook to get\n * @param {number} type The index of the hook to get\n * @returns {import('./internal').HookState}\n */\nfunction getHookState(index, type) {\n\tif (options._hook) {\n\t\toptions._hook(currentComponent, index, currentHook || type);\n\t}\n\tcurrentHook = 0;\n\n\t// Largely inspired by:\n\t// * https://github.com/michael-klein/funcy.js/blob/f6be73468e6ec46b0ff5aa3cc4c9baf72a29025a/src/hooks/core_hooks.mjs\n\t// * https://github.com/michael-klein/funcy.js/blob/650beaa58c43c33a74820a3c98b3c7079cf2e333/src/renderer.mjs\n\t// Other implementations to look at:\n\t// * https://codesandbox.io/s/mnox05qp8\n\tconst hooks =\n\t\tcurrentComponent.__hooks ||\n\t\t(currentComponent.__hooks = {\n\t\t\t_list: [],\n\t\t\t_pendingEffects: []\n\t\t});\n\n\tif (index >= hooks._list.length) {\n\t\thooks._list.push({});\n\t}\n\treturn hooks._list[index];\n}\n\n/**\n * @param {import('./index').StateUpdater} initialState\n */\nexport function useState(initialState) {\n\tcurrentHook = 1;\n\treturn useReducer(invokeOrReturn, initialState);\n}\n\n/**\n * @param {import('./index').Reducer} reducer\n * @param {import('./index').StateUpdater} initialState\n * @param {(initialState: any) => void} [init]\n * @returns {[ any, (state: any) => void ]}\n */\nexport function useReducer(reducer, initialState, init) {\n\t/** @type {import('./internal').ReducerHookState} */\n\tconst hookState = getHookState(currentIndex++, 2);\n\tif (!hookState._component) {\n\t\thookState._component = currentComponent;\n\n\t\thookState._value = [\n\t\t\t!init ? invokeOrReturn(undefined, initialState) : init(initialState),\n\n\t\t\taction => {\n\t\t\t\tconst nextValue = reducer(hookState._value[0], action);\n\t\t\t\tif (hookState._value[0] !== nextValue) {\n\t\t\t\t\thookState._value[0] = nextValue;\n\t\t\t\t\thookState._component.setState({});\n\t\t\t\t}\n\t\t\t}\n\t\t];\n\t}\n\n\treturn hookState._value;\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 3);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent.__hooks._pendingEffects.push(state);\n\t}\n}\n\n/**\n * @param {import('./internal').Effect} callback\n * @param {any[]} args\n */\nexport function useLayoutEffect(callback, args) {\n\t/** @type {import('./internal').EffectHookState} */\n\tconst state = getHookState(currentIndex++, 4);\n\tif (!options._skipEffects && argsChanged(state._args, args)) {\n\t\tstate._value = callback;\n\t\tstate._args = args;\n\n\t\tcurrentComponent._renderCallbacks.push(state);\n\t}\n}\n\nexport function useRef(initialValue) {\n\tcurrentHook = 5;\n\treturn useMemo(() => ({ current: initialValue }), []);\n}\n\n/**\n * @param {object} ref\n * @param {() => object} createHandle\n * @param {any[]} args\n */\nexport function useImperativeHandle(ref, createHandle, args) {\n\tcurrentHook = 6;\n\tuseLayoutEffect(\n\t\t() => {\n\t\t\tif (typeof ref == 'function') ref(createHandle());\n\t\t\telse if (ref) ref.current = createHandle();\n\t\t},\n\t\targs == null ? args : args.concat(ref)\n\t);\n}\n\n/**\n * @param {() => any} factory\n * @param {any[]} args\n */\nexport function useMemo(factory, args) {\n\t/** @type {import('./internal').MemoHookState} */\n\tconst state = getHookState(currentIndex++, 7);\n\tif (argsChanged(state._args, args)) {\n\t\tstate._args = args;\n\t\tstate._factory = factory;\n\t\treturn (state._value = factory());\n\t}\n\n\treturn state._value;\n}\n\n/**\n * @param {() => void} callback\n * @param {any[]} args\n */\nexport function useCallback(callback, args) {\n\tcurrentHook = 8;\n\treturn useMemo(() => callback, args);\n}\n\n/**\n * @param {import('./internal').PreactContext} context\n */\nexport function useContext(context) {\n\tconst provider = currentComponent.context[context._id];\n\t// We could skip this call here, but than we'd not call\n\t// `options._hook`. We need to do that in order to make\n\t// the devtools aware of this hook.\n\tconst state = getHookState(currentIndex++, 9);\n\t// The devtools needs access to the context object to\n\t// be able to pull of the default value when no provider\n\t// is present in the tree.\n\tstate._context = context;\n\tif (!provider) return context._defaultValue;\n\t// This is probably not safe to convert to \"!\"\n\tif (state._value == null) {\n\t\tstate._value = true;\n\t\tprovider.sub(currentComponent);\n\t}\n\treturn provider.props.value;\n}\n\n/**\n * Display a custom label for a custom hook for the devtools panel\n * @type {(value: T, cb?: (value: T) => string | number) => void}\n */\nexport function useDebugValue(value, formatter) {\n\tif (options.useDebugValue) {\n\t\toptions.useDebugValue(formatter ? formatter(value) : value);\n\t}\n}\n\nexport function useErrorBoundary(cb) {\n\tconst state = getHookState(currentIndex++, 10);\n\tconst errState = useState();\n\tstate._value = cb;\n\tif (!currentComponent.componentDidCatch) {\n\t\tcurrentComponent.componentDidCatch = err => {\n\t\t\tif (state._value) state._value(err);\n\t\t\terrState[1](err);\n\t\t};\n\t}\n\treturn [\n\t\terrState[0],\n\t\t() => {\n\t\t\terrState[1](undefined);\n\t\t}\n\t];\n}\n\n/**\n * After paint effects consumer.\n */\nfunction flushAfterPaintEffects() {\n\tafterPaintEffects.some(component => {\n\t\tif (component._parentDom) {\n\t\t\ttry {\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeCleanup);\n\t\t\t\tcomponent.__hooks._pendingEffects.forEach(invokeEffect);\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t} catch (e) {\n\t\t\t\tcomponent.__hooks._pendingEffects = [];\n\t\t\t\toptions._catchError(e, component._vnode);\n\t\t\t\treturn true;\n\t\t\t}\n\t\t}\n\t});\n\tafterPaintEffects = [];\n}\n\n/**\n * Schedule a callback to be invoked after the browser has a chance to paint a new frame.\n * Do this by combining requestAnimationFrame (rAF) + setTimeout to invoke a callback after\n * the next browser frame.\n *\n * Also, schedule a timeout in parallel to the the rAF to ensure the callback is invoked\n * even if RAF doesn't fire (for example if the browser tab is not visible)\n *\n * @param {() => void} callback\n */\nfunction afterNextFrame(callback) {\n\tconst done = () => {\n\t\tclearTimeout(timeout);\n\t\tcancelAnimationFrame(raf);\n\t\tsetTimeout(callback);\n\t};\n\tconst timeout = setTimeout(done, RAF_TIMEOUT);\n\n\tlet raf;\n\tif (typeof window != 'undefined') {\n\t\traf = requestAnimationFrame(done);\n\t}\n}\n\n// Note: if someone used options.debounceRendering = requestAnimationFrame,\n// then effects will ALWAYS run on the NEXT frame instead of the current one, incurring a ~16ms delay.\n// Perhaps this is not such a big deal.\n/**\n * Schedule afterPaintEffects flush after the browser paints\n * @param {number} newQueueLength\n */\nfunction afterPaint(newQueueLength) {\n\tif (newQueueLength === 1 || prevRaf !== options.requestAnimationFrame) {\n\t\tprevRaf = options.requestAnimationFrame;\n\t\t(prevRaf || afterNextFrame)(flushAfterPaintEffects);\n\t}\n}\n\n/**\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeCleanup(hook) {\n\tif (hook._cleanup) hook._cleanup();\n}\n\n/**\n * Invoke a Hook's effect\n * @param {import('./internal').EffectHookState} hook\n */\nfunction invokeEffect(hook) {\n\tconst result = hook._value();\n\tif (typeof result == 'function') hook._cleanup = result;\n}\n\n/**\n * @param {any[]} oldArgs\n * @param {any[]} newArgs\n */\nfunction argsChanged(oldArgs, newArgs) {\n\treturn !oldArgs || newArgs.some((arg, index) => arg !== oldArgs[index]);\n}\n\nfunction invokeOrReturn(arg, f) {\n\treturn typeof f == 'function' ? f(arg) : f;\n}\n","/**\n * Assign properties from `props` to `obj`\n * @template O, P The obj and props types\n * @param {O} obj The object to copy properties to\n * @param {P} props The object to copy properties from\n * @returns {O & P}\n */\nexport function assign(obj, props) {\n\tfor (let i in props) obj[i] = props[i];\n\treturn /** @type {O & P} */ (obj);\n}\n\n/**\n * Check if two objects have a different shape\n * @param {object} a\n * @param {object} b\n * @returns {boolean}\n */\nexport function shallowDiffers(a, b) {\n\tfor (let i in a) if (i !== '__source' && !(i in b)) return true;\n\tfor (let i in b) if (i !== '__source' && a[i] !== b[i]) return true;\n\treturn false;\n}\n","import { Component } from 'preact';\nimport { shallowDiffers } from './util';\n\n/**\n * Component class with a predefined `shouldComponentUpdate` implementation\n */\nexport class PureComponent extends Component {\n\tconstructor(props) {\n\t\tsuper(props);\n\t\t// Some third-party libraries check if this property is present\n\t\tthis.isPureReactComponent = true;\n\t}\n\n\tshouldComponentUpdate(props, state) {\n\t\treturn (\n\t\t\tshallowDiffers(this.props, props) || shallowDiffers(this.state, state)\n\t\t);\n\t}\n}\n","import { createElement } from 'preact';\nimport { shallowDiffers, assign } from './util';\n\n/**\n * Memoize a component, so that it only updates when the props actually have\n * changed. This was previously known as `React.pure`.\n * @param {import('./internal').FunctionalComponent} c functional component\n * @param {(prev: object, next: object) => boolean} [comparer] Custom equality function\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function memo(c, comparer) {\n\tfunction shouldUpdate(nextProps) {\n\t\tlet ref = this.props.ref;\n\t\tlet updateRef = ref == nextProps.ref;\n\t\tif (!updateRef && ref) {\n\t\t\tref.call ? ref(null) : (ref.current = null);\n\t\t}\n\n\t\tif (!comparer) {\n\t\t\treturn shallowDiffers(this.props, nextProps);\n\t\t}\n\n\t\treturn !comparer(this.props, nextProps) || !updateRef;\n\t}\n\n\tfunction Memoed(props) {\n\t\tthis.shouldComponentUpdate = shouldUpdate;\n\t\treturn createElement(c, assign({}, props));\n\t}\n\tMemoed.prototype.isReactComponent = true;\n\tMemoed.displayName = 'Memo(' + (c.displayName || c.name) + ')';\n\tMemoed._forwarded = true;\n\treturn Memoed;\n}\n","import { options } from 'preact';\nimport { assign } from './util';\n\nlet oldDiffHook = options._diff;\noptions._diff = vnode => {\n\tif (vnode.type && vnode.type._forwarded && vnode.ref) {\n\t\tvnode.props.ref = vnode.ref;\n\t\tvnode.ref = null;\n\t}\n\tif (oldDiffHook) oldDiffHook(vnode);\n};\n\n/**\n * Pass ref down to a child. This is mainly used in libraries with HOCs that\n * wrap components. Using `forwardRef` there is an easy way to get a reference\n * of the wrapped component instead of one of the wrapper itself.\n * @param {import('./index').ForwardFn} fn\n * @returns {import('./internal').FunctionalComponent}\n */\nexport function forwardRef(fn) {\n\tfunction Forwarded(props) {\n\t\tlet clone = assign({}, props);\n\t\tdelete clone.ref;\n\t\treturn fn(clone, props.ref);\n\t}\n\tForwarded.prototype.isReactComponent = Forwarded._forwarded = true;\n\tForwarded.displayName = 'ForwardRef(' + (fn.displayName || fn.name) + ')';\n\treturn Forwarded;\n}\n","import { toChildArray } from 'preact';\n\nconst mapFn = (children, fn) => {\n\tif (!children) return null;\n\treturn toChildArray(children).reduce(\n\t\t(acc, value, index) => acc.concat(fn(value, index)),\n\t\t[]\n\t);\n};\n\n// This API is completely unnecessary for Preact, so it's basically passthrough.\nexport const Children = {\n\tmap: mapFn,\n\tforEach: mapFn,\n\tcount(children) {\n\t\treturn children ? toChildArray(children).length : 0;\n\t},\n\tonly(children) {\n\t\tchildren = toChildArray(children);\n\t\tif (children.length !== 1) {\n\t\t\tthrow new Error('Children.only() expects only one child.');\n\t\t}\n\t\treturn children[0];\n\t},\n\ttoArray: toChildArray\n};\n","import { Component, createElement, options } from 'preact';\nimport { assign } from './util';\n\nconst oldCatchError = options._catchError;\noptions._catchError = function(error, newVNode, oldVNode) {\n\tif (error.then) {\n\t\t/** @type {import('./internal').Component} */\n\t\tlet component;\n\t\tlet vnode = newVNode;\n\n\t\tfor (; (vnode = vnode._parent); ) {\n\t\t\tif ((component = vnode._component) && component._childDidSuspend) {\n\t\t\t\t// Don't call oldCatchError if we found a Suspense\n\t\t\t\treturn component._childDidSuspend(error, newVNode._component);\n\t\t\t}\n\t\t}\n\t}\n\toldCatchError(error, newVNode, oldVNode);\n};\n\nfunction detachedClone(vnode) {\n\tif (vnode) {\n\t\tvnode = assign({}, vnode);\n\t\tvnode._component = null;\n\t\tvnode._children = vnode._children && vnode._children.map(detachedClone);\n\t}\n\treturn vnode;\n}\n\n// having custom inheritance instead of a class here saves a lot of bytes\nexport function Suspense() {\n\t// we do not call super here to golf some bytes...\n\tthis._pendingSuspensionCount = 0;\n\tthis._suspenders = null;\n\tthis._detachOnNextRender = null;\n}\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspense.prototype = new Component();\n\n/**\n * @param {Promise} promise The thrown promise\n * @param {Component} suspendingComponent The suspending component\n */\nSuspense.prototype._childDidSuspend = function(promise, suspendingComponent) {\n\t/** @type {import('./internal').SuspenseComponent} */\n\tconst c = this;\n\n\tif (c._suspenders == null) {\n\t\tc._suspenders = [];\n\t}\n\tc._suspenders.push(suspendingComponent);\n\n\tconst resolve = suspended(c._vnode);\n\n\tlet resolved = false;\n\tconst onResolved = () => {\n\t\tif (resolved) return;\n\n\t\tresolved = true;\n\n\t\tif (resolve) {\n\t\t\tresolve(onSuspensionComplete);\n\t\t} else {\n\t\t\tonSuspensionComplete();\n\t\t}\n\t};\n\n\tsuspendingComponent._suspendedComponentWillUnmount =\n\t\tsuspendingComponent.componentWillUnmount;\n\tsuspendingComponent.componentWillUnmount = () => {\n\t\tonResolved();\n\n\t\tif (suspendingComponent._suspendedComponentWillUnmount) {\n\t\t\tsuspendingComponent._suspendedComponentWillUnmount();\n\t\t}\n\t};\n\n\tconst onSuspensionComplete = () => {\n\t\tif (!--c._pendingSuspensionCount) {\n\t\t\tc._vnode._children[0] = c.state._suspended;\n\t\t\tc.setState({ _suspended: (c._detachOnNextRender = null) });\n\n\t\t\tlet suspended;\n\t\t\twhile ((suspended = c._suspenders.pop())) {\n\t\t\t\tsuspended.forceUpdate();\n\t\t\t}\n\t\t}\n\t};\n\n\tif (!c._pendingSuspensionCount++) {\n\t\tc.setState({ _suspended: (c._detachOnNextRender = c._vnode._children[0]) });\n\t}\n\tpromise.then(onResolved, onResolved);\n};\n\nSuspense.prototype.render = function(props, state) {\n\tif (this._detachOnNextRender) {\n\t\tthis._vnode._children[0] = detachedClone(this._detachOnNextRender);\n\t\tthis._detachOnNextRender = null;\n\t}\n\n\treturn [\n\t\tcreateElement(Component, null, state._suspended ? null : props.children),\n\t\tstate._suspended && props.fallback\n\t];\n};\n\n/**\n * Checks and calls the parent component's _suspended method, passing in the\n * suspended vnode. This is a way for a parent (e.g. SuspenseList) to get notified\n * that one of its children/descendants suspended.\n *\n * The parent MAY return a callback. The callback will get called when the\n * suspension resolves, notifying the parent of the fact.\n * Moreover, the callback gets function `unsuspend` as a parameter. The resolved\n * child descendant will not actually get unsuspended until `unsuspend` gets called.\n * This is a way for the parent to delay unsuspending.\n *\n * If the parent does not return a callback then the resolved vnode\n * gets unsuspended immediately when it resolves.\n *\n * @param {import('../src/internal').VNode} vnode\n * @returns {((unsuspend: () => void) => void)?}\n */\nexport function suspended(vnode) {\n\tlet component = vnode._parent._component;\n\treturn component && component._suspended && component._suspended(vnode);\n}\n\nexport function lazy(loader) {\n\tlet prom;\n\tlet component;\n\tlet error;\n\n\tfunction Lazy(props) {\n\t\tif (!prom) {\n\t\t\tprom = loader();\n\t\t\tprom.then(\n\t\t\t\texports => {\n\t\t\t\t\tcomponent = exports.default || exports;\n\t\t\t\t},\n\t\t\t\te => {\n\t\t\t\t\terror = e;\n\t\t\t\t}\n\t\t\t);\n\t\t}\n\n\t\tif (error) {\n\t\t\tthrow error;\n\t\t}\n\n\t\tif (!component) {\n\t\t\tthrow prom;\n\t\t}\n\n\t\treturn createElement(component, props);\n\t}\n\n\tLazy.displayName = 'Lazy';\n\tLazy._forwarded = true;\n\treturn Lazy;\n}\n","import { Component, toChildArray } from 'preact';\nimport { suspended } from './suspense.js';\n\n// Indexes to linked list nodes (nodes are stored as arrays to save bytes).\nconst SUSPENDED_COUNT = 0;\nconst RESOLVED_COUNT = 1;\nconst NEXT_NODE = 2;\n\n// Having custom inheritance instead of a class here saves a lot of bytes.\nexport function SuspenseList() {\n\tthis._next = null;\n\tthis._map = null;\n}\n\n// Mark one of child's earlier suspensions as resolved.\n// Some pending callbacks may become callable due to this\n// (e.g. the last suspended descendant gets resolved when\n// revealOrder === 'together'). Process those callbacks as well.\nconst resolve = (list, child, node) => {\n\tif (++node[RESOLVED_COUNT] === node[SUSPENDED_COUNT]) {\n\t\t// The number a child (or any of its descendants) has been suspended\n\t\t// matches the number of times it's been resolved. Therefore we\n\t\t// mark the child as completely resolved by deleting it from ._map.\n\t\t// This is used to figure out when *all* children have been completely\n\t\t// resolved when revealOrder is 'together'.\n\t\tlist._map.delete(child);\n\t}\n\n\t// If revealOrder is falsy then we can do an early exit, as the\n\t// callbacks won't get queued in the node anyway.\n\t// If revealOrder is 'together' then also do an early exit\n\t// if all suspended descendants have not yet been resolved.\n\tif (\n\t\t!list.props.revealOrder ||\n\t\t(list.props.revealOrder[0] === 't' && list._map.size)\n\t) {\n\t\treturn;\n\t}\n\n\t// Walk the currently suspended children in order, calling their\n\t// stored callbacks on the way. Stop if we encounter a child that\n\t// has not been completely resolved yet.\n\tnode = list._next;\n\twhile (node) {\n\t\twhile (node.length > 3) {\n\t\t\tnode.pop()();\n\t\t}\n\t\tif (node[RESOLVED_COUNT] < node[SUSPENDED_COUNT]) {\n\t\t\tbreak;\n\t\t}\n\t\tlist._next = node = node[NEXT_NODE];\n\t}\n};\n\n// Things we do here to save some bytes but are not proper JS inheritance:\n// - call `new Component()` as the prototype\n// - do not set `Suspense.prototype.constructor` to `Suspense`\nSuspenseList.prototype = new Component();\n\nSuspenseList.prototype._suspended = function(child) {\n\tconst list = this;\n\tconst delegated = suspended(list._vnode);\n\n\tlet node = list._map.get(child);\n\tnode[SUSPENDED_COUNT]++;\n\n\treturn unsuspend => {\n\t\tconst wrappedUnsuspend = () => {\n\t\t\tif (!list.props.revealOrder) {\n\t\t\t\t// Special case the undefined (falsy) revealOrder, as there\n\t\t\t\t// is no need to coordinate a specific order or unsuspends.\n\t\t\t\tunsuspend();\n\t\t\t} else {\n\t\t\t\tnode.push(unsuspend);\n\t\t\t\tresolve(list, child, node);\n\t\t\t}\n\t\t};\n\t\tif (delegated) {\n\t\t\tdelegated(wrappedUnsuspend);\n\t\t} else {\n\t\t\twrappedUnsuspend();\n\t\t}\n\t};\n};\n\nSuspenseList.prototype.render = function(props) {\n\tthis._next = null;\n\tthis._map = new Map();\n\n\tconst children = toChildArray(props.children);\n\tif (props.revealOrder && props.revealOrder[0] === 'b') {\n\t\t// If order === 'backwards' (or, well, anything starting with a 'b')\n\t\t// then flip the child list around so that the last child will be\n\t\t// the first in the linked list.\n\t\tchildren.reverse();\n\t}\n\t// Build the linked list. Iterate through the children in reverse order\n\t// so that `_next` points to the first linked list node to be resolved.\n\tfor (let i = children.length; i--; ) {\n\t\t// Create a new linked list node as an array of form:\n\t\t// \t[suspended_count, resolved_count, next_node]\n\t\t// where suspended_count and resolved_count are numeric counters for\n\t\t// keeping track how many times a node has been suspended and resolved.\n\t\t//\n\t\t// Note that suspended_count starts from 1 instead of 0, so we can block\n\t\t// processing callbacks until componentDidMount has been called. In a sense\n\t\t// node is suspended at least until componentDidMount gets called!\n\t\t//\n\t\t// Pending callbacks are added to the end of the node:\n\t\t// \t[suspended_count, resolved_count, next_node, callback_0, callback_1, ...]\n\t\tthis._map.set(children[i], (this._next = [1, 0, this._next]));\n\t}\n\treturn props.children;\n};\n\nSuspenseList.prototype.componentDidUpdate = SuspenseList.prototype.componentDidMount = function() {\n\t// Iterate through all children after mounting for two reasons:\n\t// 1. As each node[SUSPENDED_COUNT] starts from 1, this iteration increases\n\t// each node[RELEASED_COUNT] by 1, therefore balancing the counters.\n\t// The nodes can now be completely consumed from the linked list.\n\t// 2. Handle nodes that might have gotten resolved between render and\n\t// componentDidMount.\n\tconst list = this;\n\tlist._map.forEach((node, child) => {\n\t\tresolve(list, child, node);\n\t});\n};\n","import { createElement, hydrate, render, _unmount } from 'preact';\n\nclass ContextProvider {\n\tgetChildContext() {\n\t\treturn this.props.context;\n\t}\n\trender(props) {\n\t\treturn props.children;\n\t}\n}\n\n/**\n * Portal component\n * @param {object | null | undefined} props\n */\nfunction Portal(props) {\n\tlet _this = this;\n\tlet container = props.container;\n\tlet wrap = createElement(\n\t\tContextProvider,\n\t\t{ context: _this.context },\n\t\tprops.vnode\n\t);\n\n\t// When we change container we should clear our old container and\n\t// indicate a new mount.\n\tif (_this._container && _this._container !== container) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t\t_this._hasMounted = false;\n\t}\n\n\t// When props.vnode is undefined/false/null we are dealing with some kind of\n\t// conditional vnode. This should not trigger a render.\n\tif (props.vnode) {\n\t\tif (!_this._hasMounted) {\n\t\t\t// Create a placeholder that we can use to insert into.\n\t\t\t_this._temp = document.createTextNode('');\n\t\t\t// Hydrate existing nodes to keep the dom intact, when rendering\n\t\t\t// wrap into the container.\n\t\t\thydrate('', container);\n\t\t\t// Append to the container (this matches React's behavior)\n\t\t\tcontainer.appendChild(_this._temp);\n\t\t\t// At this point we have mounted and should set our container.\n\t\t\t_this._hasMounted = true;\n\t\t\t_this._container = container;\n\t\t\t// Render our wrapping element into temp.\n\t\t\trender(wrap, container, _this._temp);\n\t\t\t_this._children = _this._temp._children;\n\t\t} else {\n\t\t\t// When we have mounted and the vnode is present it means the\n\t\t\t// props have changed or a parent is triggering a rerender.\n\t\t\t// This implies we only need to call render. But we need to keep\n\t\t\t// the old tree around, otherwise will treat the vnodes as new and\n\t\t\t// will wrongly call `componentDidMount` on them\n\t\t\tcontainer._children = _this._children;\n\t\t\trender(wrap, container);\n\t\t\t_this._children = container._children;\n\t\t}\n\t}\n\t// When we come from a conditional render, on a mounted\n\t// portal we should clear the DOM.\n\telse if (_this._hasMounted) {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t}\n\t// Set the wrapping element for future unmounting.\n\t_this._wrap = wrap;\n\n\t_this.componentWillUnmount = () => {\n\t\tif (_this._temp.parentNode) _this._container.removeChild(_this._temp);\n\t\t_unmount(_this._wrap);\n\t};\n\n\treturn null;\n}\n\n/**\n * Create a `Portal` to continue rendering the vnode tree at a different DOM node\n * @param {import('./internal').VNode} vnode The vnode to render\n * @param {import('./internal').PreactElement} container The DOM node to continue rendering in to.\n */\nexport function createPortal(vnode, container) {\n\treturn createElement(Portal, { vnode, container });\n}\n","import {\n\trender as preactRender,\n\thydrate as preactHydrate,\n\toptions,\n\ttoChildArray,\n\tComponent\n} from 'preact';\nimport { applyEventNormalization } from './events';\n\nconst CAMEL_PROPS = /^(?:accent|alignment|arabic|baseline|cap|clip(?!PathU)|color|fill|flood|font|glyph(?!R)|horiz|marker(?!H|W|U)|overline|paint|stop|strikethrough|stroke|text(?!L)|underline|unicode|units|v|vector|vert|word|writing|x(?!C))[A-Z]/;\n\n// Some libraries like `react-virtualized` explicitly check for this.\nComponent.prototype.isReactComponent = {};\n\nexport const REACT_ELEMENT_TYPE =\n\t(typeof Symbol != 'undefined' && Symbol.for && Symbol.for('react.element')) ||\n\t0xeac7;\n\n/**\n * Proxy render() since React returns a Component reference.\n * @param {import('./internal').VNode} vnode VNode tree to render\n * @param {import('./internal').PreactElement} parent DOM node to render vnode tree into\n * @param {() => void} [callback] Optional callback that will be called after rendering\n * @returns {import('./internal').Component | null} The root component reference or null\n */\nexport function render(vnode, parent, callback) {\n\t// React destroys any existing DOM nodes, see #1727\n\t// ...but only on the first render, see #1828\n\tif (parent._children == null) {\n\t\twhile (parent.firstChild) {\n\t\t\tparent.removeChild(parent.firstChild);\n\t\t}\n\t}\n\n\tpreactRender(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nexport function hydrate(vnode, parent, callback) {\n\tpreactHydrate(vnode, parent);\n\tif (typeof callback == 'function') callback();\n\n\treturn vnode ? vnode._component : null;\n}\n\nlet oldEventHook = options.event;\noptions.event = e => {\n\tif (oldEventHook) e = oldEventHook(e);\n\te.persist = () => {};\n\tlet stoppedPropagating = false,\n\t\tdefaultPrevented = false;\n\n\tconst origStopPropagation = e.stopPropagation;\n\te.stopPropagation = () => {\n\t\torigStopPropagation.call(e);\n\t\tstoppedPropagating = true;\n\t};\n\n\tconst origPreventDefault = e.preventDefault;\n\te.preventDefault = () => {\n\t\torigPreventDefault.call(e);\n\t\tdefaultPrevented = true;\n\t};\n\n\te.isPropagationStopped = () => stoppedPropagating;\n\te.isDefaultPrevented = () => defaultPrevented;\n\treturn (e.nativeEvent = e);\n};\n\n// Patch in `UNSAFE_*` lifecycle hooks\nfunction setSafeDescriptor(proto, key) {\n\tif (proto['UNSAFE_' + key] && !proto[key]) {\n\t\tObject.defineProperty(proto, key, {\n\t\t\tconfigurable: false,\n\t\t\tget() {\n\t\t\t\treturn this['UNSAFE_' + key];\n\t\t\t},\n\t\t\t// This `set` is only used if a user sets a lifecycle like cWU\n\t\t\t// after setting a lifecycle like UNSAFE_cWU. I doubt anyone\n\t\t\t// actually does this in practice so not testing it\n\t\t\t/* istanbul ignore next */\n\t\t\tset(v) {\n\t\t\t\tthis['UNSAFE_' + key] = v;\n\t\t\t}\n\t\t});\n\t}\n}\n\nlet classNameDescriptor = {\n\tconfigurable: true,\n\tget() {\n\t\treturn this.class;\n\t}\n};\n\nlet oldVNodeHook = options.vnode;\noptions.vnode = vnode => {\n\tvnode.$$typeof = REACT_ELEMENT_TYPE;\n\n\tlet type = vnode.type;\n\tlet props = vnode.props;\n\n\tif (type) {\n\t\t// Alias `class` prop to `className` if available\n\t\tif (props.class != props.className) {\n\t\t\tclassNameDescriptor.enumerable = 'className' in props;\n\t\t\tif (props.className != null) props.class = props.className;\n\t\t\tObject.defineProperty(props, 'className', classNameDescriptor);\n\t\t}\n\n\t\t// Apply DOM VNode compat\n\t\tif (typeof type != 'function') {\n\t\t\t// Apply defaultValue to value\n\t\t\tif (props.defaultValue && props.value !== undefined) {\n\t\t\t\tif (!props.value && props.value !== 0) {\n\t\t\t\t\tprops.value = props.defaultValue;\n\t\t\t\t}\n\t\t\t\tdelete props.defaultValue;\n\t\t\t}\n\n\t\t\t// Add support for array select values: \n \n : <>\n \n \n : <>\n \n : <>\n \n }\n \n \n\n {showTransactions == true ?
\n \n \n \n \n \n \n \n \n \n \n {props.transactions.sort((a, b) => a.timestamp > b.timestamp ? -1 : 1).map(x =>\n \n \n \n \n \n \n )}\n \n
DateDeposit Amount (USD)Vested Amount (EXO)Transaction
{getYearMonthDayString(x.timestamp)}${roundAndFormatNumber(x.amountAbsolute)}{roundAndFormatNumber(x.amountAbsolute / props.round.price)} EXO{abbreviateAddress(x.transactionHash, 4, 4)}  
\n\n
setShowTransactions(false)}>\n \n
\n
\n : null}\n \n );\n};\n\nexport default Round;","/**\n * NOTE: If you refactor this to split up the modules into separate files,\n * you'll need to update the rollup config for react-router-dom-v5-compat.\n */\nimport * as React from \"react\";\nimport type { BrowserHistory, HashHistory, History } from \"history\";\nimport { createBrowserHistory, createHashHistory } from \"history\";\nimport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n resolvePath,\n renderMatches,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n} from \"react-router\";\nimport type { To } from \"react-router\";\n\nfunction warning(cond: boolean, message: string): void {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging React Router!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// RE-EXPORTS\n////////////////////////////////////////////////////////////////////////////////\n\n// Note: Keep in sync with react-router exports!\nexport {\n MemoryRouter,\n Navigate,\n Outlet,\n Route,\n Router,\n Routes,\n createRoutesFromChildren,\n generatePath,\n matchRoutes,\n matchPath,\n createPath,\n parsePath,\n renderMatches,\n resolvePath,\n useHref,\n useInRouterContext,\n useLocation,\n useMatch,\n useNavigate,\n useNavigationType,\n useOutlet,\n useParams,\n useResolvedPath,\n useRoutes,\n useOutletContext,\n};\n\nexport { NavigationType } from \"react-router\";\nexport type {\n Hash,\n Location,\n Path,\n To,\n MemoryRouterProps,\n NavigateFunction,\n NavigateOptions,\n NavigateProps,\n Navigator,\n OutletProps,\n Params,\n PathMatch,\n RouteMatch,\n RouteObject,\n RouteProps,\n PathRouteProps,\n LayoutRouteProps,\n IndexRouteProps,\n RouterProps,\n Pathname,\n Search,\n RoutesProps,\n} from \"react-router\";\n\n///////////////////////////////////////////////////////////////////////////////\n// DANGER! PLEASE READ ME!\n// We provide these exports as an escape hatch in the event that you need any\n// routing data that we don't provide an explicit API for. With that said, we\n// want to cover your use case if we can, so if you feel the need to use these\n// we want to hear from you. Let us know what you're building and we'll do our\n// best to make sure we can support you!\n//\n// We consider these exports an implementation detail and do not guarantee\n// against any breaking changes, regardless of the semver release. Use with\n// extreme caution and only if you understand the consequences. Godspeed.\n///////////////////////////////////////////////////////////////////////////////\n\n/** @internal */\nexport {\n UNSAFE_NavigationContext,\n UNSAFE_LocationContext,\n UNSAFE_RouteContext,\n} from \"react-router\";\n\n////////////////////////////////////////////////////////////////////////////////\n// COMPONENTS\n////////////////////////////////////////////////////////////////////////////////\n\nexport interface BrowserRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Provides the cleanest URLs.\n */\nexport function BrowserRouter({\n basename,\n children,\n window,\n}: BrowserRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createBrowserHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HashRouterProps {\n basename?: string;\n children?: React.ReactNode;\n window?: Window;\n}\n\n/**\n * A `` for use in web browsers. Stores the location in the hash\n * portion of the URL so it is not sent to the server.\n */\nexport function HashRouter({ basename, children, window }: HashRouterProps) {\n let historyRef = React.useRef();\n if (historyRef.current == null) {\n historyRef.current = createHashHistory({ window });\n }\n\n let history = historyRef.current;\n let [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nexport interface HistoryRouterProps {\n basename?: string;\n children?: React.ReactNode;\n history: History;\n}\n\n/**\n * A `` that accepts a pre-instantiated history object. It's important\n * to note that using your own history object is highly discouraged and may add\n * two versions of the history library to your bundles unless you use the same\n * version of the history library that React Router uses internally.\n */\nfunction HistoryRouter({ basename, children, history }: HistoryRouterProps) {\n const [state, setState] = React.useState({\n action: history.action,\n location: history.location,\n });\n\n React.useLayoutEffect(() => history.listen(setState), [history]);\n\n return (\n \n );\n}\n\nif (__DEV__) {\n HistoryRouter.displayName = \"unstable_HistoryRouter\";\n}\n\nexport { HistoryRouter as unstable_HistoryRouter };\n\nfunction isModifiedEvent(event: React.MouseEvent) {\n return !!(event.metaKey || event.altKey || event.ctrlKey || event.shiftKey);\n}\n\nexport interface LinkProps\n extends Omit, \"href\"> {\n reloadDocument?: boolean;\n replace?: boolean;\n state?: any;\n to: To;\n}\n\n/**\n * The public API for rendering a history-aware .\n */\nexport const Link = React.forwardRef(\n function LinkWithRef(\n { onClick, reloadDocument, replace = false, state, target, to, ...rest },\n ref\n ) {\n let href = useHref(to);\n let internalOnClick = useLinkClickHandler(to, { replace, state, target });\n function handleClick(\n event: React.MouseEvent\n ) {\n if (onClick) onClick(event);\n if (!event.defaultPrevented && !reloadDocument) {\n internalOnClick(event);\n }\n }\n\n return (\n // eslint-disable-next-line jsx-a11y/anchor-has-content\n \n );\n }\n);\n\nif (__DEV__) {\n Link.displayName = \"Link\";\n}\n\nexport interface NavLinkProps\n extends Omit {\n children?:\n | React.ReactNode\n | ((props: { isActive: boolean }) => React.ReactNode);\n caseSensitive?: boolean;\n className?: string | ((props: { isActive: boolean }) => string | undefined);\n end?: boolean;\n style?:\n | React.CSSProperties\n | ((props: { isActive: boolean }) => React.CSSProperties);\n}\n\n/**\n * A wrapper that knows if it's \"active\" or not.\n */\nexport const NavLink = React.forwardRef(\n function NavLinkWithRef(\n {\n \"aria-current\": ariaCurrentProp = \"page\",\n caseSensitive = false,\n className: classNameProp = \"\",\n end = false,\n style: styleProp,\n to,\n children,\n ...rest\n },\n ref\n ) {\n let location = useLocation();\n let path = useResolvedPath(to);\n\n let locationPathname = location.pathname;\n let toPathname = path.pathname;\n if (!caseSensitive) {\n locationPathname = locationPathname.toLowerCase();\n toPathname = toPathname.toLowerCase();\n }\n\n let isActive =\n locationPathname === toPathname ||\n (!end &&\n locationPathname.startsWith(toPathname) &&\n locationPathname.charAt(toPathname.length) === \"/\");\n\n let ariaCurrent = isActive ? ariaCurrentProp : undefined;\n\n let className: string | undefined;\n if (typeof classNameProp === \"function\") {\n className = classNameProp({ isActive });\n } else {\n // If the className prop is not a function, we use a default `active`\n // class for s that are active. In v5 `active` was the default\n // value for `activeClassName`, but we are removing that API and can still\n // use the old default behavior for a cleaner upgrade path and keep the\n // simple styling rules working as they currently do.\n className = [classNameProp, isActive ? \"active\" : null]\n .filter(Boolean)\n .join(\" \");\n }\n\n let style =\n typeof styleProp === \"function\" ? styleProp({ isActive }) : styleProp;\n\n return (\n \n {typeof children === \"function\" ? children({ isActive }) : children}\n \n );\n }\n);\n\nif (__DEV__) {\n NavLink.displayName = \"NavLink\";\n}\n\n////////////////////////////////////////////////////////////////////////////////\n// HOOKS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Handles the click behavior for router `` components. This is useful if\n * you need to create custom `` components with the same click behavior we\n * use in our exported ``.\n */\nexport function useLinkClickHandler(\n to: To,\n {\n target,\n replace: replaceProp,\n state,\n }: {\n target?: React.HTMLAttributeAnchorTarget;\n replace?: boolean;\n state?: any;\n } = {}\n): (event: React.MouseEvent) => void {\n let navigate = useNavigate();\n let location = useLocation();\n let path = useResolvedPath(to);\n\n return React.useCallback(\n (event: React.MouseEvent) => {\n if (\n event.button === 0 && // Ignore everything but left clicks\n (!target || target === \"_self\") && // Let browser handle \"target=_blank\" etc.\n !isModifiedEvent(event) // Ignore clicks with modifier keys\n ) {\n event.preventDefault();\n\n // If the URL hasn't changed, a regular will do a replace instead of\n // a push, so do the same here.\n let replace =\n !!replaceProp || createPath(location) === createPath(path);\n\n navigate(to, { replace, state });\n }\n },\n [location, navigate, path, replaceProp, state, target, to]\n );\n}\n\n/**\n * A convenient wrapper for reading and writing search parameters via the\n * URLSearchParams interface.\n */\nexport function useSearchParams(defaultInit?: URLSearchParamsInit) {\n warning(\n typeof URLSearchParams !== \"undefined\",\n `You cannot use the \\`useSearchParams\\` hook in a browser that does not ` +\n `support the URLSearchParams API. If you need to support Internet ` +\n `Explorer 11, we recommend you load a polyfill such as ` +\n `https://github.com/ungap/url-search-params\\n\\n` +\n `If you're unsure how to load polyfills, we recommend you check out ` +\n `https://polyfill.io/v3/ which provides some recommendations about how ` +\n `to load polyfills only for users that need them, instead of for every ` +\n `user.`\n );\n\n let defaultSearchParamsRef = React.useRef(createSearchParams(defaultInit));\n\n let location = useLocation();\n let searchParams = React.useMemo(() => {\n let searchParams = createSearchParams(location.search);\n\n for (let key of defaultSearchParamsRef.current.keys()) {\n if (!searchParams.has(key)) {\n defaultSearchParamsRef.current.getAll(key).forEach((value) => {\n searchParams.append(key, value);\n });\n }\n }\n\n return searchParams;\n }, [location.search]);\n\n let navigate = useNavigate();\n let setSearchParams = React.useCallback(\n (\n nextInit: URLSearchParamsInit,\n navigateOptions?: { replace?: boolean; state?: any }\n ) => {\n navigate(\"?\" + createSearchParams(nextInit), navigateOptions);\n },\n [navigate]\n );\n\n return [searchParams, setSearchParams] as const;\n}\n\nexport type ParamKeyValuePair = [string, string];\n\nexport type URLSearchParamsInit =\n | string\n | ParamKeyValuePair[]\n | Record\n | URLSearchParams;\n\n/**\n * Creates a URLSearchParams object using the given initializer.\n *\n * This is identical to `new URLSearchParams(init)` except it also\n * supports arrays as values in the object form of the initializer\n * instead of just strings. This is convenient when you need multiple\n * values for a given key, but don't want to use an array initializer.\n *\n * For example, instead of:\n *\n * let searchParams = new URLSearchParams([\n * ['sort', 'name'],\n * ['sort', 'price']\n * ]);\n *\n * you can do:\n *\n * let searchParams = createSearchParams({\n * sort: ['name', 'price']\n * });\n */\nexport function createSearchParams(\n init: URLSearchParamsInit = \"\"\n): URLSearchParams {\n return new URLSearchParams(\n typeof init === \"string\" ||\n Array.isArray(init) ||\n init instanceof URLSearchParams\n ? init\n : Object.keys(init).reduce((memo, key) => {\n let value = init[key];\n return memo.concat(\n Array.isArray(value) ? value.map((v) => [key, v]) : [[key, value]]\n );\n }, [] as ParamKeyValuePair[])\n );\n}\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Web3Context } from '../Components/Web3Context/Web3Context';\nimport Round from '../Components/Round/Round';\nimport { ExoPresaleRound, ExoPresaleTransaction } from '../Common/Models';\nimport ImageExoLogo from '../Images/exo-grad-logo.png';\nimport ImageCryptonairzLogo from '../Images/cryptonairz-logo.png';\nimport { useSearchParams } from 'react-router-dom';\nimport { roundAndFormatNumber } from '../Common/HelperFunctions';\n\nfunction HomePage() {\n const { presaleTransactions, presaleRounds, contribute, connectWeb3, disconnectWeb3, web3Connected, walletAddress, setReferrerString, busdApprovalAmount, approveBusd, busdBalance } = useContext(Web3Context);\n const [searchParams, setSearchParams] = useSearchParams();\n\n function getTransactionForRound(round: number): ExoPresaleTransaction[] {\n var ret: ExoPresaleTransaction[] = [];\n ret = presaleTransactions.filter(x => x.round.toString() == round.toString());\n return ret;\n }\n\n useEffect(() => {\n var referrer = searchParams.get(\"ref\");\n // console.log(`REFERRER: ${referrer}`);\n\n if (referrer != null) {\n setReferrerString(referrer.toLowerCase());\n }\n }, [presaleRounds]);\n\n const whitelistedRounds = presaleRounds.filter(x => x.whitelisted && x.closed == false).sort((a, b) => Number(b.special) - Number(a.special));\n const closedRounds = presaleRounds.filter(x => ((x.special && x.whitelisted) || (x.special == false)) && x.closed == true /*&& presaleTransactions.filter(y => y.round == x.number).length > 0*/);\n\n return (\n <>\n
\n {/*

Contributions

*/}\n\n
\n \n
\n
PRESALE ROUNDS
\n
\n
Use this dashboard to check the status and contribute BUSD to the exo funding rounds.
\n\n {busdBalance > 0 ?
Your BUSD balance: ${roundAndFormatNumber(busdBalance, 2)} BUSD.
: null}\n\n
\n {\n whitelistedRounds.filter(x => x.name == \"CRYPTONAIRZ\").length > 0 ?
\n \n
\n
Welcome to our friends from Cryptonairz!
\n
As a valued partner of exo, Cryptonairz members are entitled to an exclusive funding round. Access to this round is through a custom whitelist provided by the Crytponairz team.
\n {/*
VESTING: {props.round.vesting}
*/}\n
\n
: null\n }\n\n {\n whitelistedRounds.length > 0 ? whitelistedRounds.map(r => (\n
\n
)) : null\n }\n\n {\n closedRounds.length > 0 ? closedRounds.map(r => (\n
\n
)) : null\n }\n\n {\n web3Connected == false ?
\n Connect your wallet to get started.\n
: null\n }\n\n {\n web3Connected == true && whitelistedRounds.length == 0 ?
: null}\n
\n
\n \n );\n}\n\nexport default HomePage;","import React, { useContext, useState } from 'react';\nimport { abbreviateAddress, round, roundAndFormatNumber } from '../Common/HelperFunctions';\nimport { Web3Context } from '../Components/Web3Context/Web3Context';\n\n\nfunction DebugPage() {\n const { web3Connected, providerName, walletAddress } = useContext(Web3Context);\n\n return (\n <>\n
\n

Debug

\n
\n

Browser

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
KeyValue
User Agent{navigator.userAgent}
Language{navigator.language}
Vendor{navigator.vendor}
Timezone{Intl.DateTimeFormat().resolvedOptions().timeZone}
\n\n

App

\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
KeyValue
window.ethereum{((window as any).ethereum != null).toString()}
Selected Provider{providerName}
Provider Connected{web3Connected.toString()}
Wallet Address{walletAddress}
\n
\n {/*
*/}\n {/*
*/}\n
\n \n );\n}\n\nexport default DebugPage;","import React, { useContext } from 'react';\nimport './App.css';\nimport Web3Context, { Web3Context as context } from './Components/Web3Context/Web3Context';\nimport { Navigate, Route, Routes } from 'react-router-dom';\n\nimport Layout from './Layout/Layout';\nimport HomePage from './Pages/HomePage';\nimport AdminPage from './Pages/AdminPage';\nimport DebugPage from './Pages/DebugPage';\n\nfunction App() {\n\n return (\n
\n \n \n \n } />\n } />\n\n {/* default home route */}\n {/* } /> */}\n\n {/* route catch-all */}\n } />\n\n {/* }> */}\n {/* parameterised routes */}\n {/* }>\n } >\n \n */}\n\n {/* conditional route */}\n {/* {useContext(context).isAdmin == true ? */}\n {/* } /> */}\n {/* : null} */}\n\n \n \n \n
\n );\n}\n\nexport default App;\n","import { ReportHandler } from 'web-vitals';\n\nconst reportWebVitals = (onPerfEntry?: ReportHandler) => {\n if (onPerfEntry && onPerfEntry instanceof Function) {\n import('web-vitals').then(({ getCLS, getFID, getFCP, getLCP, getTTFB }) => {\n getCLS(onPerfEntry);\n getFID(onPerfEntry);\n getFCP(onPerfEntry);\n getLCP(onPerfEntry);\n getTTFB(onPerfEntry);\n });\n }\n};\n\nexport default reportWebVitals;\n","import React from 'react';\nimport ReactDOM from 'react-dom';\nimport './index.css';\nimport App from './App';\nimport reportWebVitals from './reportWebVitals';\nimport { BrowserRouter } from \"react-router-dom\";\n\nReactDOM.render(\n \n \n \n \n \n ,\n document.getElementById('root')\n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\nreportWebVitals();\n"],"names":["module","exports","arr","len","length","i","arr2","Array","__esModule","isArray","arrayLikeToArray","self","ReferenceError","asyncGeneratorStep","gen","resolve","reject","_next","_throw","key","arg","info","value","error","done","Promise","then","fn","this","args","arguments","apply","err","undefined","instance","Constructor","TypeError","setPrototypeOf","isNativeReflectConstruct","_construct","Parent","Class","Reflect","construct","a","push","Function","bind","prototype","_defineProperties","target","props","descriptor","enumerable","configurable","writable","Object","defineProperty","protoProps","staticProps","unsupportedIterableToArray","o","allowArrayLike","it","Symbol","iterator","F","s","n","e","_e","f","normalCompletion","didErr","call","step","next","_e2","getPrototypeOf","possibleConstructorReturn","Derived","hasNativeReflectConstruct","result","Super","NewTarget","constructor","obj","superPropBase","_get","get","property","receiver","base","desc","getOwnPropertyDescriptor","_getPrototypeOf","__proto__","subClass","superClass","create","toString","indexOf","sham","Proxy","Boolean","valueOf","iter","from","_i","_s","_arr","_n","_d","ownKeys","object","enumerableOnly","keys","getOwnPropertySymbols","symbols","filter","sym","source","forEach","getOwnPropertyDescriptors","defineProperties","_typeof","assertThisInitialized","_setPrototypeOf","p","arrayWithHoles","iterableToArrayLimit","nonIterableRest","hasOwnProperty","arrayWithoutHoles","iterableToArray","nonIterableSpread","minLen","slice","name","test","isNativeFunction","_wrapNativeSuper","_cache","Map","has","set","Wrapper","_getInitializedChains","customChains","names","chains","mainnet","ropsten","rinkeby","kovan","goerli","sepolia","customChains_1_1","chain","name_1","chainId","require","CustomChain","Hardfork","Chain","ConsensusType","ConsensusAlgorithm","opts","_super","_this","_customChains","_b","_chainParams","setChain","DEFAULT_HARDFORK","defaultHardfork","_c","Istanbul","hardforks","hf","forkHash","_calcForkHash","_hardfork","supportedHardforks","_supportedHardforks","hardfork","setHardfork","eips","setEIPs","__extends","Common","chainParamsOrName","baseChain","_a","standardChainParams","_getChainParams","__assign","PolygonMainnet","custom","networkId","PolygonMumbai","ArbitrumRinkebyTestnet","xDaiChain","OptimisticKovan","Berlin","OptimisticEthereum","Error","customChainParams","initializedChains","ethereumjs_util_1","isBN","plainCustomChains","map","required_1_1","param","_isSupportedHardfork","existing","HARDFORK_CHANGES_1_1","emit","blockNumber","td","toType","BN","minTdHF","maxTdHF","previousHF","Chainstart","block","gte","msgAdd","concat","hardforkGteHardfork","msg","getHardforkByBlockNumber","onlySupported","hfs","hfs_1_1","chainName","eip","eips_1","minHF","this_1","gteHardfork","requiredEIPs","elem","includes","isActivatedEIP","eips_2_1","_eips","topic","paramByEIP","paramByHardfork","_chooseHardfork","HARDFORK_CHANGES_2_1","hfChanges","hfEIPs","hfEIPs_1_1","valueEIP","v","eipParams","activeHfs","activeHardforks","HARDFORK_CHANGES_3_1","hfBlock","hardforkBlockBN","hardforkIsActiveOnBlock","hardfork1","hardfork2","onlyActive","posHf1","posHf2","index","hardforks_2_1","hfs_2_1","Number","_getHardfork","eq","nextHardforkBlockBN","reduce","acc","gt","nextHardforkBlock","genesis","Buffer","hash","substr","hfBuffer","alloc","prevBlock","hfBlockBuffer","padStart","inputBuffer","forkhash","intToBuffer","data","resArray","chainArrayWithGenesis","chainIdBN","networkIdBN","HARDFORK_CHANGES_4_1","HARDFORK_CHANGES_5_1","HARDFORK_CHANGES_6_1","consensusAlgorithm","copy","assign","removeAllListeners","events_1","txData","cache","dataFee","activeCapabilities","DEFAULT_CHAIN","common_1","Mainnet","nonce","gasLimit","to","r","type","_type","toBuffer","toNumber","toB","vB","rB","sB","_validateCannotExceedMaxInteger","BaseTransaction","capability","stringError","errors","getBaseFee","isSigned","verifySignature","fee","getDataFee","addn","common","toCreationAddress","iaddn","txDataZero","txDataNonZero","cost","dataLength","Math","ceil","initCodeCost","imuln","iadd","buf","publicKey","getSenderPublicKey","unpadBuffer","publicToAddress","privateKey","_errorMsg","hackApplied","supports","types_1","EIP155ReplayProtection","msgHash","getMessageToSign","ecsign","tx","_processSignature","splice","isSupportedChainId","forCustomChain","values","bits","cannotEqual","entries","bufferToHex","postfix","TRANSACTION_TYPE_BUFFER","accessList","maxFeePerGas","maxPriorityFeePerGas","_getCommon","accessListData","util_1","getAccessListData","AccessListJSON","verifyAccessList","mul","lt","eqn","checkMaxInitCodeSize","freeze","FeeMarketEIP1559Transaction","serialized","equals","decode","fromValuesArray","fromSerializedTx","validateNoLeadingZeroes","getDataFeeEIP2930","isFrozen","baseFee","gasPrice","min","sub","add","bnToUnpaddedBuffer","raw","encode","hashMessage","message","keccak256","serialize","getMessageToVerifySignature","ecrecover","fromTxData","accessListJSON","getAccessListJSON","bnToHex","errorStr","_getSharedErrorPostfix","baseTransaction_1","AccessListEIP2930Transaction","yParity","default","__exportStar","_validateTxV","chainIdDoubled","muln","Transaction","_getMessageToSign","rlphash","vBN","numSub","subn","isEven","divn","onEIP155BlockOrLater","TransactionFactory","txOptions","txType","_1","EIP","isBuffer","fromSerializedData","transactionID","_common","isAccessListBuffer","input","firstItem","Capability","AccessLists","bufferAccessList","isAccessList","newAccessList","item","addressBuffer","address","storageItems","storageKeys","json","jsonItem","accessListItem","storageSlots","storageSlot","JSONItem","setLengthLeft","slot","accessListStorageKeyCost","accessListAddressCost","slots","version","logger","Logger","_constructorGuard","ModifiersBytes","calldata","memory","storage","ModifiersNest","checkModifier","throwArgumentError","populate","params","defineReadOnly","FormatTypes","sighash","minimal","full","paramTypeArray","RegExp","ParamType","constructorGuard","throwError","operation","match","arrayLength","parseInt","arrayChildren","fromObject","components","baseType","_isParamType","format","indexed","comp","JSON","parse","stringify","String","join","allowIndexed","fromString","isParamType","verifyType","node","originalParam","newNode","parent","state","allowType","replace","c","allowParams","child","allowName","allowArray","sibling","readArray","parseParamType","substring","Coder","localName","dynamic","Writer","wordSize","_data","_dataLength","_padding","Uint8Array","hexConcat","writer","_writeData","bytes","arrayify","paddingOffset","BigNumber","offset","_getValue","Reader","coerceFunc","allowLoose","_offset","hexlify","_coerceFunc","coerce","loose","alignedLength","_peekBytes","readBytes","AddressCoder","getAddress","_throwError","writeValue","reader","hexZeroPad","readValue","toHexString","AnonymousCoder","coder","pack","coders","arrayValues","unique","argument","staticWriter","dynamicWriter","updateFuncs","dynamicOffset","updateFunc","writeUpdatableValue","baseOffset","func","appendWriter","unpack","baseReader","subReader","offsetReader","code","uniqueNames","accum","ArrayCoder","count","checkArgumentCount","BooleanCoder","isZero","_superPropBase","UnicodeNormalizationForm","Utf8ErrorReason","DynamicBytesCoder","writeBytes","BytesCoder","FixedBytesCoder","size","NullCoder","NumberCoder","signed","maxUintValue","MaxUint256","bounds","mask","One","NegativeOne","Zero","toTwos","fromTwos","ignoreFunc","reason","output","badCodepoint","BAD_PREFIX","UNEXPECTED_CONTINUE","OVERRUN","Utf8ErrorFuncs","ignore","OVERLONG","getUtf8CodePoints","onError","extraLength","overlongMask","res","j","nextChar","MISSING_CONTINUE","OUT_OF_RANGE","UTF16_SURROGATE","toUtf8Bytes","str","form","current","checkNormalize","normalize","charCodeAt","c2","pair","toUtf8String","codePoint","fromCharCode","StringCoder","TupleCoder","types","paramTypeBytes","paramTypeNumber","AbiCoder","checkNew","_getCoder","component","_getWordSize","_getWriter","_getReader","getChecksumAddress","isHexString","chars","toLowerCase","split","expanded","hashed","toUpperCase","ibanLookup","x","safeDigits","floor","log10","log","LN10","ibanChecksum","checksum","_base36To16","_BN","MAX_SAFE","_warnedToStringRadix","hex","_hex","_isBigNumber","toBigNumber","toBN","other","throwFault","div","isNeg","umod","pow","isNegative","and","or","xor","maskn","shln","shrn","lte","BigInt","warn","toHex","anyValue","isBytes","fault","assert","val","inherits","ctor","superCtor","super_","TempCtor","number","endian","negative","words","red","_init","window","parseHex4Bits","string","parseHexByte","lowerBound","parseBase","start","end","num","max","left","right","cmp","_initNumber","_initArray","_parseHex","_parseBase","toArray","w","off","strip","limbLen","limbPow","total","mod","word","_iaddn","dest","clone","_expand","_normSign","inspect","zeros","groupSizes","groupBases","smallMulTo","out","b","lo","carry","k","ncarry","rword","maxJ","padding","groupSize","groupBase","modn","idivn","ret","toJSON","toArrayLike","ArrayType","byteLength","reqLength","littleEndian","q","andln","iushrn","clz32","_countBits","t","_zeroBits","bitLength","hi","zeroBits","width","abs","inotn","testn","notn","ineg","neg","iuor","ior","uor","iuand","iand","uand","iuxor","ixor","uxor","bytesNeeded","bitsLeft","setn","bit","wbit","isub","comb10MulTo","mid","a0","al0","ah0","a1","al1","ah1","a2","al2","ah2","a3","al3","ah3","a4","al4","ah4","a5","al5","ah5","a6","al6","ah6","a7","al7","ah7","a8","al8","ah8","a9","al9","ah9","b0","bl0","bh0","b1","bl1","bh1","b2","bl2","bh2","b3","bl3","bh3","b4","bl4","bh4","b5","bl5","bh5","b6","bl6","bh6","b7","bl7","bh7","b8","bl8","bh8","b9","bl9","bh9","w0","imul","w1","w2","w3","w4","w5","w6","w7","w8","w9","w10","w11","w12","w13","w14","w15","w16","w17","w18","jumboMulTo","FFTM","mulp","y","mulTo","hncarry","bigMulTo","makeRBT","N","l","revBin","rb","permute","rbt","rws","iws","rtws","itws","transform","rtwdf","cos","PI","itwdf","sin","rtwdf_","itwdf_","re","ie","ro","io","rx","guessLen13b","m","odd","conjugate","normalize13b","ws","round","convert13b","stub","ph","_","rwst","iwst","nrws","nrwst","niwst","rmws","mulf","sqr","isqr","toBitArray","iushln","carryMask","newCarry","ishln","hint","extended","h","maskedWords","ishrn","ushln","ushrn","imaskn","isubn","iabs","_ishlnsubmul","shift","_wordDiv","mode","bhi","diff","qj","divmod","positive","divRound","dm","half","r2","egcd","A","B","C","D","g","yp","xp","im","isOdd","jm","gcd","_invmp","x1","x2","delta","cmpn","invm","bincn","ucmp","gtn","gten","ltn","lten","Red","toRed","ctx","convertTo","_forceRed","fromRed","convertFrom","forceRed","redAdd","redIAdd","redSub","redISub","redShl","shl","redMul","_verify2","redIMul","redSqr","_verify1","redISqr","redSqrt","sqrt","redInvm","redNeg","redPow","primes","k256","p224","p192","p25519","MPrime","tmp","_tmp","K256","P224","P192","P25519","prime","_prime","Mont","imod","rinv","minv","ireduce","rlen","imulK","_strip","outLen","prev","mod3","one","nOne","lpow","z","inv","wnd","currentLen","mont","u","isHexable","addSlice","array","isBytesLike","isInteger","options","checkSafeUint53","unshift","allowMissingPrefix","hexPad","items","objects","stripZeros","HexCharacters","hexDataLength","hexDataSlice","endOffset","splitSignature","signature","_vs","recoveryParam","yParityAndS","compact","vs","zeroPad","recId","sha3","_permanentCensorErrors","_censorErrors","LogLevels","debug","warning","_logLevel","_globalLogger","LogLevel","ErrorCode","_normalizeError","missing","_checkNormalize","HEX","logLevel","level","console","_log","levels","DEBUG","INFO","WARNING","makeError","UNKNOWN_ERROR","messageDetails","url","NUMERIC_FAULT","CALL_EXCEPTION","INSUFFICIENT_FUNDS","MISSING_NEW","NONCE_EXPIRED","REPLACEMENT_UNDERPRICED","TRANSACTION_REPLACED","UNPREDICTABLE_GAS_LIMIT","INVALID_ARGUMENT","condition","UNSUPPORTED_OPERATION","expectedCount","MISSING_ARGUMENT","UNEXPECTED_ARGUMENT","kind","censorship","permanent","globalLogger","checkProperties","properties","arrayifyInteger","unarrayifyInteger","_encode","payload","_decodeChildren","childOffset","decoded","_decode","consumed","lengthLength","equal","utils","zero2","enc","minAssert","minUtils","getNAF","naf","fill","getJSF","k1","k2","jsf","m8","d1","d2","u1","u2","m14","m24","cachedProperty","computer","parseBytes","intFromLE","BaseCurve","conf","zero","two","pointFromJSON","gRed","_wnafT1","_wnafT2","_wnafT3","_wnafT4","_bitLength","adjustCount","redN","_maxwellTrick","BasePoint","curve","precomputed","point","validate","_fixedNafMul","doubles","_getDoubles","I","nafW","repr","jpoint","mixedAdd","points","toP","_wnafMul","nafPoints","_getNAFPoints","dblp","_wnafMulAdd","defW","coeffs","jacobianResult","wndWidth","comb","toJ","ja","jb","decodePoint","pointFromX","encodeCompressed","getX","getY","precompute","power","beta","_getBeta","_hasDoubles","dbl","ShortCurve","Base","tinv","zeroA","threeA","endo","_getEndomorphism","_endoWnafT1","_endoWnafT2","Point","isRed","inf","JPoint","zOne","lambda","betas","_getEndoRoots","lambdas","basis","vec","_getEndoBasis","ntinv","prevR","aprxSqrt","y1","y2","len1","_endoSplit","v1","v2","c1","p1","p2","q1","q2","ax","rhs","_endoWnafMulAdd","npoints","ncoeffs","fromJSON","pre","endoMul","obj2point","isInfinity","nx","ny","ys1","dyinv","mulAdd","jmulAdd","_precompute","negate","zinv","zinv2","ay","pz2","z2","s1","s2","h2","h3","nz","jx","jy","jz","jz4","jyd","jx2","jyd2","jyd4","t1","t2","dny","_zeroDbl","_threeDbl","_dbl","xx","yy","yyyy","yyyy8","d","c8","gamma","alpha","beta4","beta8","ggamma8","jy2","jxd4","jyd8","trpl","zz","mm","ee","yyu4","kbase","z3","pz3","eqXToP","zs","xc","require$$0","short","require$$1","edwards","curves","PresetCurve","defineCurve","HmacDRBG","predResist","outSize","minEntropy","hmacStrength","_reseed","reseedInterval","K","V","entropy","entropyEnc","nonceEnc","pers","persEnc","seed","_update","_hmac","kmac","update","digest","reseed","addEnc","generate","temp","KeyPair","ec","priv","pub","_importPrivate","privEnc","_importPublic","pubEnc","fromPublic","fromPrivate","getPublic","getPrivate","derive","sign","verify","Signature","_importDER","Position","place","getLength","initial","octetLen","rmPadding","constructLength","octets","LN2","slen","toDER","backHalf","rand","EC","nh","keyPair","keyFromPrivate","keyFromPublic","genKeyPair","drbg","ns2","_truncateToN","truncOnly","bkey","ns1","kp","kpX","canonical","sinv","recoverPubKey","isYOdd","isSecondKey","rInv","getKeyRecoveryParam","Q","Qprime","elliptic","require$$2","require$$3","eddsa","_curve","getCurve","SigningKey","p0","digestBytes","otherKey","otherKeyPair","computePublicKey","_isSigningKey","compressed","signingKey","TransactionTypes","handleAddress","handleNumber","transactionFields","maxLength","numeric","allowedTransactionKeys","computeAddress","recoverAddress","sig","rs","recoverPublicKey","formatNumber","accessSetify","addr","storageKey","accessListify","sort","localeCompare","formatAccessList","_serializeEip1559","transaction","fields","RLP","_serializeEip2930","fieldInfo","pop","_serialize","transactionType","_parseEipSignature","recid","rawTransaction","_parse","_parseEip2930","_parseEip1559","safeApply","handler","context","setTimeout","arrayClone","SafeEventEmitter","doError","events","_events","er","listeners","__spreadArrays","il","jl","BrowserInfo","os","NodeInfo","process","platform","SearchBotDeviceInfo","bot","BotInfo","ReactNativeInfo","SEARCHBOT_OS_REGEX","userAgentRules","operatingSystemRules","detect","userAgent","parseUserAgent","document","navigator","product","matchUserAgent","ua","matched","browser","regex","uaMatch","exec","matchedRule","versionParts","ii","createVersionParts","detectOS","searchBotMatch","detectEnv","env","isAndroid","isIOS","maxTouchPoints","isMobile","isNode","isBrowser","getNavigator","getFromWindow","windowGetters","getFromWindowOrThrow","getDocumentOrThrow","getDocument","getNavigatorOrThrow","getLocationOrThrow","getLocation","getCryptoOrThrow","getCrypto","getLocalStorageOrThrow","getLocalStorage","getClientMeta","windowMetadata","safeJsonParse","safeJsonStringify","setLocal","local","setItem","getLocal","getItem","removeLocal","removeItem","mobileLinkChoiceKey","formatIOSMobile","uri","entry","encodedUri","encodeURIComponent","universalLink","deepLink","endsWith","saveMobileLinkInfo","focusUri","href","getMobileRegistryEntry","registry","getMobileLinkRegistry","whitelist","links","API_URL","getWalletRegistryUrl","getDappRegistryUrl","formatMobileRegistryEntry","shortName","metadata","color","colors","primary","logo","image_url","sm","universal","native","formatMobileRegistry","getBrowerCrypto","crypto","global","msCrypto","getSubtleCrypto","browserCrypto","subtle","webkitSubtle","isReactNative","versions","asyncIterator","const","WALLETCONNECT_WRAPPER_ID","WALLETCONNECT_STYLE_ID","WALLETCONNECT_MODAL_ID","WALLETCONNECT_CTA_TEXT_ID","Header","React","className","src","onClick","onClose","id","ConnectButton","WALLETCONNECT_CONNECT_BUTTON_ID","rel","style","backgroundColor","WalletButton","background","backgroundSize","WalletIcon","fontSize","innerWidth","LinkDisplay","android","useState","setInput","setFilter","page","setPage","link","errorMessage","grid","pages","range","pageLinks","hasPaging","filterTimeout","text","connect_mobile_wallet","choose_preferred_wallet","placeholder","onChange","clearTimeout","connect","useCallback","handleClickIOS","no_wallets_found","loading","pageNumber","selected","margin","fontWeight","Notification","show","trim","QRCodeDisplay","notification","setNotification","svg","setSvg","formatQRCodeImage","QRCode","dataString","scan_qrcode_with_wallet","dangerouslySetInnerHTML","__html","copied_to_clipboard","setInterval","copy_to_clipboard","Modal","mobile","qrcodeModalOptions","mobileLinks","desktopLinks","setLoading","fetched","setFetched","displayQRCode","setDisplayQRCode","displayProps","singleLinkHref","setSingleLinkHref","hasSingleLink","setHasSingleLink","setLinks","setErrorMessage","getLinksIfNeeded","body","recover","registryUrl","fetch","registryResponse","_registryResponse$jso","listings","_links","no_supported_wallets","something_went_wrong","initLinks","rightSelected","connect_with","qrcode","desktop","languages","triggerCloseAnimation","doc","modal","getElementById","wrapper","removeChild","getWrappedCallback","cb","getText","lang","language","Languages","open","head","createElement","setAttribute","innerText","appendChild","injectStyleSheet","renderWrapper","ReactDOM","nodeLib","browserLib","loc","window_getters_1","getWindowMetadataOfAny","metaTags","getElementsByTagName","tag","attributes","getAttribute","attr","content","title","getName","description","origin","icons","absoluteHref","protocol","host","path","pathname","absoluteUrl","getIcons","asn1","bignum","define","constants","decoders","encoders","Entity","_createNamed","Generated","entity","_initNamed","_getDecoder","_getEncoder","reporter","Reporter","DecoderBuffer","EncoderBuffer","isEncoderBuffer","isDecoderBuffer","save","restore","isEmpty","readUInt8","skip","fail","_reporterState","write","Node","tags","methods","_baseState","children","reverseArgs","choice","optional","any","use","useDecoder","explicit","implicit","contains","_wrap","stateProps","cstate","prop","method","_useArgs","def","newKey","wrapResult","prevObj","present","prevKey","enterKey","_peekTag","isError","_decodeGeneric","_decodeChoice","enterObject","_decodeTag","track","_getUse","leaveObject","exitKey","leaveKey","_decodeList","_decodeStr","_decodeObjid","_decodeTime","_decodeNull","_decodeBool","_decodeInt","_use","some","_createEncoderBuffer","_encodeValue","_skipDefault","primitive","_encodeChoice","_encodePrimitive","cls","_encodeComposite","_encodeStr","_encodeObjid","_encodeTime","_encodeNull","_encodeInt","_encodeBool","_isNumstr","_isPrintstr","ReporterError","rethrow","pathLen","now","inherited","stack","partial","captureStackTrace","reverse","tagClass","tagClassByName","tagByName","_reverse","der","DERDecoder","tree","DERNode","derDecodeTag","oct","tagStr","derDecodeLen","buffer","decodedTag","_skipUntilEnd","decoder","possibleEnd","unused","readUInt16BE","numstr","printstr","relative","identifiers","ident","subident","first","second","year","mon","day","hour","sec","Date","UTC","pem","PEMDecoder","lines","label","base64","DEREncoder","encodedTag","encodeTag","header","lenOctets","writeUInt16BE","objid","time","date","getUTCFullYear","getUTCMonth","getUTCDate","getUTCHours","getUTCMinutes","getUTCSeconds","numArray","dataBuffer","defaultBuffer","PEMEncoder","isDeepEqual","isDeepStrictEqual","_require$codes","codes","ERR_AMBIGUOUS_ARGUMENT","ERR_INVALID_ARG_TYPE","ERR_INVALID_ARG_VALUE","ERR_INVALID_RETURN_VALUE","ERR_MISSING_ARGS","AssertionError","_require$types","isPromise","isRegExp","objectAssign","objectIs","is","lazyLoadComparison","comparison","warned","ok","NO_EXCEPTION_SENTINEL","innerFail","innerOk","argLen","generatedMessage","actual","expected","operator","stackStartFn","_len","_key","internalMessage","argsLen","emitWarning","errArgs","notEqual","deepEqual","notDeepEqual","deepStrictEqual","notDeepStrictEqual","strictEqual","notStrictEqual","Comparison","_classCallCheck","compareExceptionKey","expectedException","isPrototypeOf","getActual","checkIsPromise","catch","waitForActual","promiseFn","resultPromise","expectsError","details","fnType","expectsNoError","strict","_len6","_key6","throws","_len2","_key2","rejects","_len3","_key3","doesNotThrow","_len4","_key4","doesNotReject","_len5","_key5","ifError","newErr","origStack","tmp2","tmp1","pos","_defineProperty","_possibleConstructorReturn","_assertThisInitialized","search","this_len","blue","green","white","kReadableOperator","strictEqualObject","notStrictEqualObject","notIdentical","copyError","inspectValue","customInspect","depth","maxArrayLength","Infinity","showHidden","breakLength","showProxy","sorted","getters","createErrDiff","lastPos","skipped","actualInspected","actualLines","expectedLines","indicator","inputLength","stderr","isTTY","columns","maxCount","repeat","maxLines","_actualLines","printedLines","skippedMsg","cur","expectedLine","actualLine","divergingLines","_Error","limit","stackTraceLimit","getColorDepth","_res","knownOperators","_inherits","recurseTimes","_objectSpread","util","createErrorType","NodeError","_Base","arg1","arg2","arg3","getMessage","oneOf","thing","determiner","inspected","RangeError","_slicedToArray","_arrayWithHoles","_iterableToArrayLimit","_nonIterableRest","regexFlagsSupported","flags","arrayFromSet","arrayFromMap","objectGetOwnPropertySymbols","numberIsNaN","isNaN","uncurryThis","propertyIsEnumerable","objectToString","isAnyArrayBuffer","isArrayBufferView","isDate","isMap","isSet","isNativeError","isBoxedPrimitive","isNumberObject","isStringObject","isBooleanObject","isBigIntObject","isSymbolObject","isFloat32Array","isFloat64Array","isNonIndex","getOwnNonIndexProperties","compare","innerDeepEqual","val1","val2","memos","buf1","buf2","val1Tag","keys1","keys2","keyCheck","getTime","byteOffset","areSimilarTypedArrays","areSimilarFloatArrays","_keys","_keys2","isEqualBoxedPrimitive","getEnumerables","iterationType","aKeys","bKeys","symbolKeysA","symbolKeysB","_symbolKeysB","position","val2MemoA","val2MemoB","areEq","objEquiv","delete","setHasEqualElement","memo","setValues","findLooseMatchingPrimitives","prim","setMightHaveLoosePrim","altValue","mapMightHaveLoosePrim","curB","mapHasEqualEntry","key1","item1","key2","aValues","Set","bValues","_val","setEquiv","aEntries","_aEntries$i","item2","bEntries","_i2","_bEntries$_i","mapEquiv","keysA","tslib_1","Semaphore_1","Mutex","_semaphore","acquire","__awaiter","__generator","sent","runExclusive","callback","isLocked","release","Semaphore","_maxConcurrency","_queue","_value","locked","ticket","_dispatch","trys","_currentReleaser","releaser","nextConsumer","released","Mutex_1","withTimeout_1","withTimeout","sync","timeout","timeoutError","isTimeout","_initialParams2","_isObject2","invokeCallback","_interopRequireDefault","_setImmediate2","coll","iteratee","_eachOfLimit2","_withoutIndex2","_wrapAsync2","_isArrayLike2","eachOfArrayLike","eachOfGeneric","_breakLoop2","_doLimit2","_noop2","_once2","_onlyOnce2","completed","iteratorCallback","_eachOfLimit3","_eachLimit2","iterable","_eachOf2","nextElem","_iterator2","running","looping","iterateeCallback","replenish","iteratorSymbol","_slice2","_slice","createArrayIterator","_getIterator2","createES2015Iterator","okeys","createObjectIterator","eachfn","results","counter","_iteratee","callFn","tasks","task","hasNextTick","hasSetImmediate","fallback","wrap","_defer","setImmediate","nextTick","defer","arrayLike","newLen","newArr","idx","isAsync","_asyncify","_asyncify2","supportsSymbol","toStringTag","asyncFn","_doParallel2","_map2","_parallel2","_isArray2","taskIndex","nextTask","_Buffer","ALPHABET","BASE_MAP","charAt","BASE","LEADER","FACTOR","iFACTOR","decodeUnsafe","psz","zeroes","b256","it3","it4","vch","allocUnsafe","pbegin","pend","b58","it1","it2","b64","lens","getLens","validLen","placeHoldersLen","toByteArray","Arr","_byteLength","curByte","revLookup","fromByteArray","uint8","extraBytes","parts","maxChunkLength","len2","encodeChunk","lookup","parseHex","Rand","_rand","getBytes","getByte","getRandomValues","randomBytes","asUInt32Array","readUInt32BE","scrubVec","cryptBlock","M","keySchedule","SUB_MIX","SBOX","nRounds","t0","t3","SUB_MIX0","SUB_MIX1","SUB_MIX2","SUB_MIX3","s0","s3","ksRow","RCON","G","INV_SBOX","INV_SUB_MIX","xi","sx","x4","x8","AES","_reset","blockSize","keySize","keyWords","ksRows","invKeySchedule","ik","ksR","tt","_nRounds","_keySchedule","_invKeySchedule","encryptBlockRaw","encryptBlock","writeUInt32BE","decryptBlock","m1","scrub","aes","Transform","GHASH","incr32","StreamCipher","iv","decrypt","_cipher","ck","_ghash","_finID","ghash","toPad","ivBits","tail","writeUIntBE","calcIv","_prev","_secCache","_decrypt","_alen","_mode","_authTag","_called","chunk","rump","encrypt","_final","final","xorTest","getAuthTag","setAuthTag","setAAD","ciphers","deciphers","modes","createCipher","Cipher","createCipheriv","Cipheriv","createDecipher","Decipher","createDecipheriv","Decipheriv","listCiphers","getCiphers","AuthCipher","MODES","ebtk","Splitter","_last","_autopadding","suite","password","config","flush","last","padded","unpad","setAutoPadding","setTo","autoPadding","PADDING","padBuff","writeUInt8","ZEROES","fromArray","_multiply","lsbVi","Vi","Zi","abl","bl","pad","encryptStart","encryptByte","byteParam","shiftIn","getBlock","chunkNum","modeModules","ECB","CBC","CFB","CFB8","CFB1","OFB","CTR","GCM","DES","aesModes","desModes","keyLen","ivLen","CipherBase","des","instantiate","EDE","modeName","_des","des3","getr","modulus","prime1","prime2","crt","blinds","blinder","publicExponent","unblinder","blind","blinded","qinv","coefficient","exponent1","m2","exponent2","move","_move","for","modrn","allocate","_toArrayLikeLE","_toArrayLikeBE","isNegNum","createHash","stream","algorithms","Sign","algorithm","Writable","_hashType","_hash","_tag","_signType","Verify","createSign","createVerify","_write","createHmac","parseKeys","getKey","algo","hlen","hbits","bits2int","bits2octets","obits","makeKey","kv","makeR","hashType","signType","curveId","ecSign","priv_key","H","dsaSign","checkValue","pubkey","subjectPrivateKey","ecVerify","pub_key","unpacked","montp","dsaVerify","padNum","ieee754","customInspectSymbol","SlowBuffer","INSPECT_MAX_BYTES","K_MAX_LENGTH","createBuffer","encodingOrOffset","encoding","isEncoding","ArrayBuffer","isView","arrayView","isInstance","fromArrayBuffer","fromArrayLike","fromArrayView","SharedArrayBuffer","checked","toPrimitive","assertSize","mustMatch","loweredCase","utf8ToBytes","base64ToBytes","slowToString","hexSlice","utf8Slice","asciiSlice","latin1Slice","base64Slice","utf16leSlice","swap","bidirectionalIndexOf","dir","arrayIndexOf","lastIndexOf","indexSize","arrLength","valLength","read","foundIndex","found","hexWrite","remaining","strLen","parsed","utf8Write","blitBuffer","asciiWrite","byteArray","asciiToBytes","base64Write","ucs2Write","units","utf16leToBytes","firstByte","bytesPerSequence","secondByte","thirdByte","fourthByte","tempCodePoint","codePoints","MAX_ARGUMENTS_LENGTH","decodeCodePointsArray","kMaxLength","TYPED_ARRAY_SUPPORT","proto","foo","typedArraySupport","poolSize","allocUnsafeSlow","_isBuffer","list","swap16","swap32","swap64","toLocaleString","thisStart","thisEnd","thisCopy","targetCopy","isFinite","hexSliceLookupTable","checkOffset","ext","checkInt","wrtBigUInt64LE","checkIntBI","wrtBigUInt64BE","checkIEEE754","writeFloat","noAssert","writeDouble","newBuf","subarray","readUintLE","readUIntLE","readUintBE","readUIntBE","readUint8","readUint16LE","readUInt16LE","readUint16BE","readUint32LE","readUInt32LE","readUint32BE","readBigUInt64LE","defineBigIntMethod","validateNumber","boundsError","readBigUInt64BE","readIntLE","readIntBE","readInt8","readInt16LE","readInt16BE","readInt32LE","readInt32BE","readBigInt64LE","readBigInt64BE","readFloatLE","readFloatBE","readDoubleLE","readDoubleBE","writeUintLE","writeUIntLE","writeUintBE","writeUint8","writeUint16LE","writeUInt16LE","writeUint16BE","writeUint32LE","writeUInt32LE","writeUint32BE","writeBigUInt64LE","writeBigUInt64BE","writeIntLE","writeIntBE","writeInt8","writeInt16LE","writeInt16BE","writeInt32LE","writeInt32BE","writeBigInt64LE","writeBigInt64BE","writeFloatLE","writeFloatBE","writeDoubleLE","writeDoubleBE","targetStart","copyWithin","E","addNumericalSeparator","ERR_OUT_OF_RANGE","checkBounds","ERR_BUFFER_OUT_OF_BOUNDS","received","INVALID_BASE64_RE","leadSurrogate","base64clean","dst","alphabet","table","i16","BufferBigIntNotDefined","GetIntrinsic","callBind","$indexOf","allowMissing","intrinsic","$apply","$call","$reflectApply","$gOPD","$defineProperty","$max","originalFunction","applyBind","varint","intTable","codecNameToCodeVarint","addPrefix","multicodecStrOrCode","prefix","varintBufferEncode","rmPrefix","getCodec","prefixedData","codecName","codec","getNumber","varintBufferDecode","getCode","getCodeVarint","getVarint","print","baseTable","nameTable","encodingName","tableByCode","bufferToNumber","numberToBuffer","hexString","varintEncode","varintTable","mh","CIDUtil","checkCIDComponents","multibaseName","multihash","errorMsg","multibase","multicodec","codecs","withIs","CID","_CID","isCID","cid","baseName","isEncoded","fromB58String","validateCID","_buffer","toB58String","toBaseEncodedString","symbolName","StringDecoder","hashMode","_finalOrDigest","__final","_decoder","_encoding","inputEnc","outputEnc","outData","_toString","_transform","_flush","fin","symbol","ClassIsWrapper","withoutNew","cidV0ToV1Base32","ipfsHash","toV1","multiC","hexStringToBuffer","profiles","helpers","contentHash","profile","fromIpfs","fromSwarm","swarmHash","encodedValue","multiH","fromHexString","encodes","swarm","ipfs","utf8","decodes","hexMultiHash","b58MultiHash","CookieAccessInfo","domain","secure","script","Cookie","cookiestr","request_domain","request_path","expiration_date","explicit_path","explicit_domain","noscript","All","toGMTString","toValueString","cookie_str_splitter","CookieJar","cookies","cookies_list","setCookie","cookie","remove","collidesWith","getCookie","cookie_name","access_info","matches","getCookies","access_domain","cookie_domain","wildcard","setCookies","successful","deselectCurrent","clipboardToIE11Formatting","reselectPrevious","selection","mark","success","createRange","getSelection","textContent","all","top","clip","whiteSpace","webkitUserSelect","MozUserSelect","msUserSelect","userSelect","addEventListener","stopPropagation","preventDefault","clipboardData","clearData","setData","onCopy","selectNodeContents","addRange","execCommand","copyKey","prompt","removeRange","removeAllRanges","factory","CRC32","T0","Int32Array","signed_crc_table","TT","T","slice_by_16_tables","T1","T2","T3","T4","T5","T6","T7","T8","T9","Ta","Tb","Tc","Td","Te","Tf","bstr","L","DO_NOT_EXPORT_CRC","ECDH","aliases","secp256k1","secp224r1","prime256v1","prime192v1","ed25519","secp384r1","secp521r1","curveType","formatReturnValue","bn","p256","secp256r1","secp192r1","p384","p521","generateKeys","getPublicKey","computeSecret","inenc","getPrivateKey","setPublicKey","setPrivateKey","_priv","MD5","RIPEMD160","sha","Hash","alg","Legacy","md5","ZEROS","Hmac","blocksize","_alg","ipad","_ipad","opad","_opad","rng","pseudoRandomBytes","prng","algos","algoKeys","hashes","getHashes","pbkdf2","pbkdf2Sync","dh","DiffieHellmanGroup","createDiffieHellmanGroup","getDiffieHellman","createDiffieHellman","DiffieHellman","createECDH","publicEncrypt","privateEncrypt","publicDecrypt","privateDecrypt","rf","randomFill","randomFillSync","createCredentials","token","singleMatcher","multiMatcher","decodeComponents","decodeURIComponent","tokens","encodedURI","replaceMap","customDecodeURIComponent","hasSymbols","toStr","origDefineProperty","hasPropertyDescriptors","supportsDescriptors","predicate","predicates","CBCState","_cbcInit","_cbcState","inp","inOff","outOff","superProto","bufferOff","_updateDecrypt","_updateEncrypt","_flushBuffer","inputOff","outputOff","_finalEncrypt","_finalDecrypt","_pad","_unpad","DESState","_desState","deriveKeys","shiftTable","kL","kR","pc1","r28shl","pc2","ip","_encrypt","lStart","rStart","keyL","keyR","expand","substitute","rip","EDEState","k3","_edeState","inL","inR","outL","outR","pc2table","sTable","permuteTable","padSplit","group","generatePrime","DH","ENCODINGS","generator","genc","millerRabin","TWENTYFOUR","ELEVEN","TEN","THREE","SEVEN","_pub","primeCache","malleable","setGenerator","__prime","_primeLen","_primeCode","rem","simpleSieve","fermatTest","checkPrime","__gen","_gen","secret","getPrime","front","getGenerator","findPrime","ONE","TWO","FIVE","FOUR","_getPrimes","n2","dijkstra","single_source_shortest_paths","graph","predecessors","costs","closest","cost_of_s_to_u","adjacent_nodes","cost_of_s_to_u_plus_cost_of_e","cost_of_s_to_v","PriorityQueue","make","empty","extract_shortest_path_from_predecessor_list","nodes","find_path","queue","sorter","default_sorter","EdwardsCurve","twisted","mOneA","dd","oneC","_mulA","_mulC","lhs","pointFromY","_extDbl","nt","_projDbl","_extAdd","_projAdd","zi","MontCurve","i4","a24","aa","bb","diffAdd","da","jumlAdd","sha256","sha384","sha512","EDDSA","pointClass","encodingLength","keyFromSecret","hashInt","messagePrefix","R","Rencoded","encodePoint","s_","pubBytes","S","makeSignature","SG","fromSecret","lastIx","normed","xIsOdd","encodeInt","decodeInt","isPoint","_secret","_pubBytes","privBytes","getSecret","_R","_S","_Rencoded","_Sencoded","Sencoded","toBytes","naiveFallback","globalThis","__global__","firstSource","nextSource","keysArray","nextIndex","nextKey","polyfill","calculateSum","accumulator","currentValue","blockTrackerEvents","BaseBlockTracker","_blockResetDuration","blockResetDuration","_blockResetTimeout","_currentBlock","_isRunning","_onNewListener","_onRemoveListener","_resetCurrentBlock","_setupInternalEvents","once","latestBlock","eventName","removeListener","on","_maybeStart","_getBlockTrackerEventCount","_maybeEnd","_cancelBlockResetTimeout","_start","_setupBlockResetTimeout","_end","listenerCount","newBlock","currentBlock","hexToInt","_setCurrentBlock","oldBlock","unref","hexInt","pify","PollingBlockTracker","provider","pollingInterval","retryTimeout","keepEventLoopActive","setSkipCacheFlag","_provider","_pollingInterval","_retryTimeout","_keepEventLoopActive","_setSkipCacheFlag","_updateLatestBlock","getLatestBlock","_performSync","emitErr","_fetchLatestBlock","_newPotentialLatest","req","jsonrpc","skipCache","sendAsync","duration","timoutRef","uts46","toUnicode","useStd3ASCII","transitional","inputName","labels","labelSha","root","JS_SHA3_NO_NODE_JS","COMMON_JS","JS_SHA3_NO_COMMON_JS","HEX_CHARS","SHIFT","RC","BITS","OUTPUT_TYPES","createOutputMethod","outputType","Keccak","createShakeOutputMethod","outputBits","createMethod","methodNames","methodName","blocks","reset","blockCount","byteCount","outputBlocks","notString","lastByteIndex","finalize","arrayBuffer","Uint32Array","c0","c3","c4","c5","c6","c7","c9","b10","b11","b12","b13","b14","b15","b16","b17","b18","b19","b20","b21","b22","b23","b24","b25","b26","b27","b28","b29","b30","b31","b32","b33","b34","b35","b36","b37","b38","b39","b40","b41","b42","b43","b44","b45","b46","b47","b48","b49","BaseFilterWithHistory","allResults","newResults","BaseFilter","updates","getBlocksForRange","incrementHexInt","BlockFilter","toBlock","fromBlock","blockBodies","blockHashes","addResults","fromBlockNumber","toBlockNumber","missingBlockNumbers","intToHex","blockNum","query","int","sortBlockRefs","refs","refA","refB","unsafeRandomNibble","random","minBlockRef","sortedRefs","maxBlockRef","blockRefIsNumber","blockRef","unsafeRandomBytes","createAsyncMiddleware","createJsonRpcMiddleware","LogFilter","TxFilter","toFilterCreationMiddleware","createFilterFn","toAsyncRpcMiddleware","objValues","blockTracker","filterIndex","filters","mutex","waitForFree","middleware","releaseLock","mutexMiddlewareWrapper","eth_newFilter","newLogFilter","eth_newBlockFilter","newBlockFilter","eth_newPendingTransactionFilter","newPendingTransactionFilter","eth_uninstallFilter","uninstallFilterHandler","eth_getFilterChanges","getFilterChanges","eth_getFilterLogs","getFilterLogs","filterUpdater","uninstallFilter","destroy","uninstallAllFilters","installFilter","filterIndexHex","getChangesAndClear","getAllResults","prevFilterCount","initialize","idHex","newFilterCount","updateBlockTrackerSubs","EthQuery","ethQuery","topics","_fetchLogs","newLogs","addInitialResults","matchingLogs","matchLog","getLogs","normalizedLogAddress","every","topicPattern","logTopic","subtopicsToMatch","processFn","proxy","unwrapped","arguments_","P","promiseModule","multiArgs","errorFirst","filterCache","WeakMap","exclude","objectType","thisArg","cached","pified","excludeMain","pattern","writableOrConfigurableOwn","shouldFilter","include","createScaffoldMiddleware","createFilterMiddleware","normalizeBlock","parentHash","sha3Uncles","miner","stateRoot","transactionsRoot","receiptsRoot","logsBloom","difficulty","gasUsed","mixHash","timestamp","extraData","subscriptions","filterManager","isDestroyed","eth_subscribe","eth_unsubscribe","createSubNewHeads","createSubFromFilter","subId","_emitSubscriptionResult","subscriptionType","rawBlocks","filterParams","subscription","filterIdHex","blockTxHashes","transactions","cacheUtils","emptyValues","blockCache","BlockCacheStrategy","strategies","perma","fork","cacheTypeForPayload","strategy","canCacheRequest","blockTag","blockTagForPayload","requestedBlockNumber","latestBlockNumber","clearBefore","cacheResult","blockNumberHex","newCache","getBlockCacheForPayload","identifier","cacheIdentifierForPayload","canCacheResult","canCache","blockHash","oldBlockHex","oldBlockNumber","paramsWithoutBlockTag","blockTagParamIndex","skipBlockRef","simpleParams","asyncMiddleware","resolveNextPromise","returnHandlerCallback","nextWasCalled","nextPromise","asyncNext","handlers","replicate","flatten","J","chunksOf","at","rnd","bs","rev","padRight","fromAscii","ascii","toAscii","makeByte","ci","fromNumber","fromNat","toNat","fromUint8Array","toUint8Array","KECCAK_PADDING","keccak","keccak512","keccak256s","keccak512s","extend","createRandomId","currentProvider","generateFnFor","generateFnWithDefaultBlockFor","argCount","getBalance","getTransactionCount","getStorageAt","protocolVersion","syncing","coinbase","mining","hashrate","accounts","getBlockTransactionCountByHash","getBlockTransactionCountByNumber","getUncleCountByBlockHash","getUncleCountByBlockNumber","sendTransaction","sendRawTransaction","estimateGas","getBlockByHash","getBlockByNumber","getTransactionByHash","getTransactionByBlockHashAndIndex","getTransactionByBlockNumberAndIndex","getTransactionReceipt","getUncleByBlockHashAndIndex","getUncleByBlockNumberAndIndex","getCompilers","compileLLL","compileSolidity","compileSerpent","newFilter","getWork","submitWork","submitHashrate","response","ethUtil","ethAbi","typedSignatureHash","typedData","schema","soliditySHA3","sigParams","fromRpcSig","getPublicKeyFor","msgParams","hashPersonalMessage","padWithZeroes","myString","concatSig","rSig","fromSigned","sSig","vSig","bufferToInt","rStr","toUnsigned","sStr","vStr","stripHexPrefix","addHexPrefix","personalSign","recoverPersonalSignature","sender","extractPublicKey","hashBuffer","signTypedData","recoverTypedSignature","_require","keccak224","keccak384","rlp","MAX_INTEGER","TWO_POW256","KECCAK256_NULL_S","SHA3_NULL_S","KECCAK256_NULL","SHA3_NULL","KECCAK256_RLP_ARRAY_S","SHA3_RLP_ARRAY_S","KECCAK256_RLP_ARRAY","SHA3_RLP_ARRAY","KECCAK256_RLP_S","SHA3_RLP_S","KECCAK256_RLP","SHA3_RLP","zeroAddress","setLength","setLengthRight","padToEven","ripemd160","isValidPrivate","privateKeyVerify","isValidPublic","sanitize","publicKeyVerify","pubToAddress","pubKey","publicKeyConvert","privateToPublic","publicKeyCreate","importPublic","recovery","senderPubKey","toRpcSig","privateToAddress","isValidAddress","isZeroAddress","toChecksumAddress","isValidChecksumAddress","generateAddress","isPrecompiled","isHexPrefixed","isValidSignature","homestead","SECP256K1_N_DIV_2","SECP256K1_N","baToJSON","ba","_fields","field","getter","setter","allowZero","allowLess","alias","secp256k1v3","privateKeyExport","privateKeyImport","privateKeyNegate","privateKeyModInverse","privateKeyTweakAdd","tweak","privateKeyTweakMul","publicKeyTweakAdd","publicKeyTweakMul","publicKeyCombine","publicKeys","signatureNormalize","signatureExport","signatureImport","signatureImportLax","sigObj","signOptions","noncefn","attempt","bufferAlgo","bufferData","ecdsaSign","ecdsaVerify","ecdsaRecover","ecdh","ecdhUnsafe","EC_PRIVKEY_EXPORT_DER_COMPRESSED","EC_PRIVKEY_EXPORT_DER_UNCOMPRESSED","lenb","lenbyte","rindex","sindex","rvalue","svalue","ecparams","toPublicKey","scalar","shared","utils_1","isBloom","bloom","isInBloom","bytesToHex","bitpos","codePointToInt","isTopic","isAddress","isUserEthereumAddressInBloom","ethereumAddress","padLeft","isContractAddressInBloom","contractAddress","isTopicInBloom","isByteArray","keccak_256","hasPrefix","hashConstructor","createKeccakHash","hash_utils_1","randombytes","resp","random_1","pk","secp256k1_1","__export","ABI","elementaryName","startsWith","parseTypeN","parseTypeNxM","parseTypeArray","parseNumber","parseSignature","retargs","encodeSingle","decodeSingle","parsedType","parseType","rawType","subArray","memoryUsage","isDynamic","eventID","methodID","rawEncode","headLength","rawDecode","simpleEncode","simpleDecode","solidityHexValue","bitsize","subType","arraySize","bytesize","solidityPack","soliditySHA256","solidityRIPEMD160","fromSerpent","toSerpent","ethjsUtil","bytes_1","eip1191ChainId","hash_1","nonceBN","salt","initCode","fromBuf","saltBuf","initCodeBuf","obj_1","keys_1","calculateSigRecovery","isValidSigRecovery","homesteadOrLater","rBN","sBN","fees","N_DIV_2","getSenderAddress","sigV","_chainId","_homestead","includeSignature","getChainId","_from","_senderPubKey","txDataZeroGas","txDataNonZeroGas","txGas","txCreation","getUpfrontCost","balance","codeHash","externals_1","constants_1","_validate","Account","accountData","hexAddress","assertIsString","assertIsHexString","keccakFromString","assertIsBuffer","Address","generateAddress2","addressBN","rangeMin","rangeMax","isSafeInteger","assertIsArray","arrToBufArr","bufArrToArr","buffer_1","bn_js_1","_sha256","_ripemd160","getBinarySize","arrayContainsArray","fromUtf8","getKeys","superset","subset","stringValue","allowEmpty","rec","vn","ss","TypeOutput","MAX_SAFE_INTEGER","numberToBN","negative1","unitMap","getValueOfUnit","unitInput","unit","unitValue","numberToString","dividedToIntegerBy","toPrecision","fromWei","weiInput","optionsInput","wei","baseLength","fraction","whole","commify","toWei","etherInput","ether","comps","toUtf8","Events","EE","addListener","emitter","event","listener","evt","_eventsCount","clearEvent","EventEmitter","eventNames","prefixed","ReflectOwnKeys","ReflectApply","getOwnPropertyNames","NumberIsNaN","init","errorListener","resolver","eventTargetAgnosticAddListener","addErrorHandlerIfEventEmitter","_maxListeners","defaultMaxListeners","checkListener","_getMaxListeners","that","_addListener","prepend","newListener","onceWrapper","fired","wrapFn","_onceWrap","wrapped","_listeners","unwrap","evlistener","unwrapListeners","wrapListener","removeEventListener","setMaxListeners","getMaxListeners","prependListener","prependOnceListener","originalListener","spliceOne","rawListeners","keyBits","used","keyStart","ivStart","stable","deterministicStringify","stableStringify","LIMIT_REPLACE_NODE","CIRCULAR_REPLACE_NODE","replacerStack","defaultOptions","depthLimit","edgesLimit","replacer","spacer","decirc","replaceGetterValues","part","setReplace","propertyDescriptor","edgeIndex","compareFunction","deterministicDecirc","hasOwn","ERROR_MESSAGE","funcType","bound","binder","boundLength","boundArgs","Empty","implementation","$SyntaxError","SyntaxError","$Function","$TypeError","getEvalledConstructor","expressionSyntax","throwTypeError","ThrowTypeError","calleeThrows","gOPDthrows","getProto","needsEval","TypedArray","INTRINSICS","AggregateError","Atomics","DataView","decodeURI","encodeURI","eval","EvalError","Float32Array","Float64Array","FinalizationRegistry","Int8Array","Int16Array","parseFloat","Uint8ClampedArray","Uint16Array","URIError","WeakRef","WeakSet","doEval","LEGACY_ALIASES","$concat","$spliceApply","$replace","$strSlice","rePropName","reEscapeChar","stringToPath","quote","subString","getBaseIntrinsic","intrinsicName","intrinsicBaseName","intrinsicRealName","skipFurtherCaching","isOwn","win","hasArrayLengthDefineBug","origSymbol","hasSymbolSham","symObj","syms","HashBase","_block","_blockSize","_blockOffset","_length","_finalized","throwIfNotStringOrBuffer","_digest","ripemd","hmac","sha1","sha224","BlockHash","pending","pendingTotal","padLength","_delta8","_delta32","join32","inner","outer","rotl32","sum32","sum32_3","sum32_4","Kh","Ah","Bh","Ch","Dh","Eh","rh","sh","toHex32","split32","shaCommon","sum32_5","ft_1","sha1_K","SHA1","W","SHA256","SHA224","ch32","maj32","s0_256","s1_256","g0_256","g1_256","sha256_K","SHA512","SHA384","rotr64_hi","rotr64_lo","shr64_hi","shr64_lo","sum64","sum64_hi","sum64_lo","sum64_4_hi","sum64_4_lo","sum64_5_hi","sum64_5_lo","sha512_K","ch64_hi","xh","xl","yh","yl","zh","ch64_lo","zl","maj64_hi","maj64_lo","s0_512_hi","s0_512_lo","s1_512_hi","s1_512_lo","g0_512_hi","g0_512_lo","g1_512_hi","g1_512_lo","_prepareBlock","c0_hi","c0_lo","c1_hi","c1_lo","c2_hi","c2_lo","c3_hi","c3_lo","ah","al","bh","ch","cl","dl","eh","el","fh","fl","gh","gl","hh","hl","c4_hi","c4_lo","T1_hi","T1_lo","T2_hi","T2_lo","rotr32","p32","isSurrogatePair","htonl","zero8","http","https","validateParams","request","blockIdxes","mapChar","mapStr","maxInt","regexPunycode","regexNonASCII","regexSeparators","stringFromCharCode","mapDomain","encoded","ucs2decode","extra","digitToBasic","digit","flag","adapt","numPoints","firstTime","baseMinusTMin","bias","basic","oldi","baseMinusT","fromCodePoint","basicLength","handledCPCount","handledCPCountPlusOne","qMinusT","punycode","idna_map","mapLabel","mapped","ucs2","cp","composite","validateLabel","codePointAt","verifyDnsLength","asciiLabels","toASCII","asciiString","isLE","mLen","nBytes","eLen","eMax","eBias","nBits","NaN","rt","hasToStringTag","$toString","callBound","isStandardArguments","isLegacyArguments","callee","supportsStandardArguments","alert","confirm","GeneratorFunction","fnToStr","isFnRegex","generatorFunc","getGeneratorFunc","getPolyfill","shim","availableTypedArrays","typedArrays","$slice","toStrTags","gOPD","typedArray","anyTrue","tryTypedArrays","isTypedArray","isStrictTypedArray","isLooseTypedArray","INPUT_ERROR","WINDOW","JS_SHA3_NO_WINDOW","WEB_WORKER","AMD","ARRAY_BUFFER","JS_SHA3_NO_ARRAY_BUFFER","CSHAKE_PADDING","SHAKE_BITS","CSHAKE_BYTEPAD","JS_SHA3_NO_ARRAY_BUFFER_IS_VIEW","createCshakeOutputMethod","createKmacOutputMethod","createOutputMethods","bytepad","Kmac","newMethodName","finalized","encodeString","strs","paddingBytes","JsonRpcEngine","_middleware","_handleBatch","_handle","_promiseHandle","_runAllMiddleware","middlewareError","isComplete","returnHandlers","_runReturnHandlers","handlerCallback","reqs","responses","_err","callerReq","eth_rpc_errors_1","rpc","invalidRequest","_processRequest","_checkForCompletion","middlewareStack","_runMiddleware","returnHandler","internal","jsonify","safe_event_emitter_1","runReturnHandlersCallback","MAX","idCounter","originalId","newId","getUniqueId_1","engine","JsonRpcEngine_1","asMiddleware","EthereumRpcError","fast_safe_stringify_1","stringifyReplacer","EthereumProviderError","isValidEthProviderCode","invalidInput","resourceNotFound","resourceUnavailable","transactionRejected","methodNotSupported","limitExceeded","methodNotFound","invalidParams","userRejectedRequest","unauthorized","unsupportedMethod","disconnected","chainDisconnected","standard","getEthJsonRpcError","parseOpts","classes_1","getEthProviderError","error_constants_1","server","errors_1","FALLBACK_ERROR_CODE","FALLBACK_MESSAGE","FALLBACK_ERROR","getMessageFromCode","fallbackMessage","codeString","hasKey","isJsonRpcServerError","isValidCode","assignOriginalError","fallbackError","shouldIncludeStack","_error","originalError","space","cycles","aobj","bobj","seen","indent","colonSeparator","objectKeys","keyValue","escapee","uffff","reviver","walk","holder","gap","rep","escapable","meta","lastIndex","mind","createKeccak","createShake","KeccakState","Shake","rate","capacity","delimitedSuffix","hashBitLength","_rate","_capacity","_delimitedSuffix","_hashBitLength","_options","_state","absorb","absorbLastFewBits","squeeze","_resetState","dataByteLength","P1600_ROUND_CONSTANTS","p1600","lo0","hi0","lo1","hi1","lo2","hi2","lo3","hi3","lo4","hi4","t1slo0","t1shi0","t1slo5","t1shi5","t1slo10","t1shi10","t1slo15","t1shi15","t1slo20","t1shi20","t1slo1","t1shi1","t1slo6","t1shi6","t1slo11","t1shi11","t1slo16","t1shi16","t1slo21","t1shi21","t1slo2","t1shi2","t1slo7","t1shi7","t1slo12","t1shi12","t1slo17","t1shi17","t1slo22","t1shi22","t1slo3","t1shi3","t1slo8","t1shi8","t1slo13","t1shi13","t1slo18","t1shi18","t1slo23","t1shi23","t1slo4","t1shi4","t1slo9","t1shi9","t1slo14","t1shi14","t1slo19","t1shi19","t1slo24","t1shi24","t2slo0","t2shi0","t2slo16","t2shi16","t2slo7","t2shi7","t2slo23","t2shi23","t2slo14","t2shi14","t2slo10","t2shi10","t2slo1","t2shi1","t2slo17","t2shi17","t2slo8","t2shi8","t2slo24","t2shi24","t2slo20","t2shi20","t2slo11","t2shi11","t2slo2","t2shi2","t2slo18","t2shi18","t2slo9","t2shi9","t2slo5","t2shi5","t2slo21","t2shi21","t2slo12","t2shi12","t2slo3","t2shi3","t2slo19","t2shi19","t2slo15","t2shi15","t2slo6","t2shi6","t2slo22","t2shi22","t2slo13","t2shi13","t2slo4","t2shi4","keccakState","squeezing","baseTimes","isArguments","isIndex","isArr","isArg","isBuff","isType","skipIndexes","getRawTag","symToStringTag","baseGetTag","isObjectLike","isLength","typedArrayTags","isPrototype","nativeKeys","freeGlobal","objectProto","nativeObjectToString","unmasked","reIsUint","Ctor","overArg","freeExports","nodeType","freeModule","freeProcess","nodeUtil","binding","freeSelf","baseIsArguments","isFunction","stubFalse","isObject","baseIsTypedArray","baseUnary","nodeIsTypedArray","arrayLikeKeys","baseKeys","isArrayLike","ARRAY16","rotl","fnF","fnG","fnH","fnI","brorand","MillerRabin","_randbelow","min_bytes","_randrange","stop","rone","n1","rn1","getDivisor","stringOrBuffer","char","view","baseX","base16","base32","tupple","nameOrCode","getBase","bufOrString","errNotSupported","codeBuf","validEncode","isImplemented","defaultLengths","cs","hashfn","coerceCode","isAppCode","multiplier","formattedString","stringArg","propIsEnumerable","toObject","test1","test2","test3","letter","shouldUseNative","keysShim","isArgs","isEnumerable","hasDontEnumBug","hasProtoEnumBug","dontEnums","equalsConstructorPrototype","excludedKeys","$applicationCache","$console","$external","$frame","$frameElement","$frames","$innerHeight","$innerWidth","$onmozfullscreenchange","$onmozfullscreenerror","$outerHeight","$outerWidth","$pageXOffset","$pageYOffset","$parent","$scrollLeft","$scrollTop","$scrollX","$scrollY","$self","$webkitIndexedDB","$webkitStorageInfo","$window","hasAutomationEqualityBug","isString","theKeys","skipProto","skipConstructor","equalsConstructorPrototypeIfNotBuggy","origKeys","originalKeys","keysWorksWithArguments","modules","installedModules","__webpack_require__","moduleId","__webpack_exports__","partialComplete","compose2","lazyUnion","varArgs","flip","lazyIntersection","noop","always","functor","__WEBPACK_IMPORTED_MODULE_0__lists__","numBoundArgs","callArgs","f1","f2","fns","fnsList","curFn","startParams","maybeValue","numberOfFixedArguments","argsHolder","fn1","fn2","cons","arrayAsList","listAsArray","foldR","without","applyEach","reverseList","__WEBPACK_IMPORTED_MODULE_0__functional__","xs","emptyList","inputArray","arraySoFar","listItem","startValue","removedFn","withoutInner","subList","fnList","reverseInner","reversedAlready","isOfType","defined","hasAllProperties","__WEBPACK_IMPORTED_MODULE_1__functional__","maybeSomething","fieldList","NODE_OPENED","NODE_CLOSED","NODE_SWAP","NODE_DROP","FAIL_EVENT","ROOT_NODE_FOUND","ROOT_PATH_FOUND","HTTP_START","STREAM_DATA","STREAM_END","ABORTING","SAX_KEY","SAX_VALUE_OPEN","SAX_VALUE_CLOSE","errorReport","statusCode","jsonBody","thrown","namedNode","keyOf","nodeOf","oboe","__WEBPACK_IMPORTED_MODULE_2__util__","__WEBPACK_IMPORTED_MODULE_3__defaults__","__WEBPACK_IMPORTED_MODULE_4__wire__","nodeStreamMethodNames","isStream","headers","withCredentials","drop","incrementalContentBuilder","ROOT_PATH","__WEBPACK_IMPORTED_MODULE_0__events__","__WEBPACK_IMPORTED_MODULE_1__ascent__","__WEBPACK_IMPORTED_MODULE_3__lists__","oboeBus","emitNodeOpened","emitNodeClosed","emitRootOpened","emitRootClosed","appendBuiltContent","ancestorBranches","keyFound","ascent","newDeepestName","maybeNewDeepestNode","ascentWithNewPath","contentBuilderHandlers","newDeepestNode","arrayConsistentAscent","possiblyInconsistentAscent","parentNode","arrayIndicesAreKeys","previouslyUnmappedName","__WEBPACK_IMPORTED_MODULE_0__publicApi__","applyDefaults","__WEBPACK_IMPORTED_MODULE_0__util__","passthrough","httpMethodName","baseUrl","modifiedUrl","wire","__WEBPACK_IMPORTED_MODULE_0__pubSub__","__WEBPACK_IMPORTED_MODULE_1__ascentManager__","__WEBPACK_IMPORTED_MODULE_2__incrementalContentBuilder__","__WEBPACK_IMPORTED_MODULE_3__patternAdapter__","__WEBPACK_IMPORTED_MODULE_4__jsonPath__","__WEBPACK_IMPORTED_MODULE_5__instanceApi__","__WEBPACK_IMPORTED_MODULE_6__libs_clarinet__","__WEBPACK_IMPORTED_MODULE_7__streamingHttp_node__","contentSource","pubSub","__WEBPACK_IMPORTED_MODULE_0__singleEventPubSub__","singles","newSingle","pubSubInstance","parameters","singleEventPubSub","__WEBPACK_IMPORTED_MODULE_1__util__","__WEBPACK_IMPORTED_MODULE_2__functional__","eventType","listenerTupleList","listenerList","hasId","tuple","listenerId","un","removed","hasListener","ascentManager","__WEBPACK_IMPORTED_MODULE_0__ascent__","__WEBPACK_IMPORTED_MODULE_1__events__","__WEBPACK_IMPORTED_MODULE_2__lists__","stateAfter","oldHead","ancestors","patternAdapter","__WEBPACK_IMPORTED_MODULE_1__lists__","__WEBPACK_IMPORTED_MODULE_2__ascent__","jsonPathCompiler","predicateEventMap","addUnderlyingListener","fullEventName","predicateEvent","compiledJsonPath","emitMatch","maybeMatchingMapping","descent","emitMatchingNode","removedEventName","__WEBPACK_IMPORTED_MODULE_3__util__","__WEBPACK_IMPORTED_MODULE_4__incrementalContentBuilder__","__WEBPACK_IMPORTED_MODULE_5__jsonPathSyntax__","pathNodeSyntax","doubleDotSyntax","dotSyntax","bangSyntax","emptySyntax","headKey","headNode","capture","previousExpr","detection","skip1","rootExpr","generateClauseReaderIfTokenFound","tokenDetector","clauseEvaluatorGenerators","jsonPath","parserGeneratedSoFar","onSuccess","detected","compiledParser","exprs","expr","expressionsReader","clauseMatcher","clauseForJsonPath","fieldListStr","hasAllrequiredFields","isMatch","matchesName","terminalCaseWhenArrivingAtRoot","terminalCaseWhenPreviousExpressionIsSatisfied","recursiveCase","cases","lastClause","exprMatch","returnFoundParser","_remainingJsonPath","compileJsonPathToFunction","uncompiledJsonPath","jsonPathSyntax","jsonPathClause","componentRegexes","possiblyCapturing","optionalFieldList","jsonPathNamedNodeInObjectNotation","jsonPathNamedNodeInArrayNotation","jsonPathNumberedNodeInArrayNotation","jsonPathPureDuckTyping","jsonPathDoubleDot","jsonPathDot","jsonPathBang","emptyString","instanceApi","__WEBPACK_IMPORTED_MODULE_3__publicApi__","oboeApi","fullyQualifiedNamePattern","rootNodeFinishedEvent","emitNodeDrop","emitNodeSwap","eventId","addForgettableCallback","wrapCallbackToSwapNodeIfSomethingReturned","safeCallback","protectedCallback","discard","forget","returnValueFromCallback","addSingleNodeOrPathListener","effectiveCallback","fullyQualifiedPatternMatchEvent","addNodeOrPathListenerApi","jsonPathOrListenerMap","listenerMap","addMultipleNodeOrPathListeners","rootNode","_statusCode","p3","abort","clarinet","eventBus","latestError","textNode","emitSaxKey","emitValueOpen","emitValueClose","emitFail","MAX_BUFFER_LENGTH","stringTokenPattern","BEGIN","VALUE","OPEN_OBJECT","CLOSE_OBJECT","OPEN_ARRAY","CLOSE_ARRAY","STRING","OPEN_KEY","CLOSE_KEY","TRUE","TRUE2","TRUE3","FALSE","FALSE2","FALSE3","FALSE4","NULL","NULL2","NULL3","NUMBER_DECIMAL_POINT","bufferCheckPosition","numberNode","slashed","closed","unicodeS","unicodeI","column","line","emitError","errorString","whitespace","starti","STRING_BIGLOOP","reResult","maxActual","checkBufferLength","httpTransport","streamingHttp","__WEBPACK_IMPORTED_MODULE_0__detectCrossOrigin_browser__","__WEBPACK_IMPORTED_MODULE_3__parseResponseHeaders_browser__","__WEBPACK_IMPORTED_MODULE_4__functional__","XMLHttpRequest","xhr","emitStreamData","numberOfCharsAlreadyGivenToCallback","stillToSendStartEvent","handleProgress","status","textSoFar","responseText","newText","sendStartIfNotAlready","getAllResponseHeaders","onreadystatechange","onprogress","readyState","headerName","setRequestHeader","location","send","isCrossOrigin","pageLocation","ajaxHost","portOf","port","parseUrlOrigin","urlHostMatch","parseResponseHeaders","headerStr","headerPair","endianness","hostname","loadavg","uptime","freemem","MAX_VALUE","totalmem","cpus","appVersion","networkInterfaces","getNetworkInterfaces","arch","tmpdir","tmpDir","EOL","homedir","certificate","RSAPrivateKey","seq","RSAPublicKey","PublicKey","AlgorithmIdentifier","bitstr","null_","PrivateKeyInfo","octstr","PrivateKey","EncryptedPrivateKeyInfo","EncryptedPrivateKey","DSAPrivateKey","DSAparam","ECPrivateKey","ECParameters","namedCurve","asn","Time","utcTime","utctime","generalTime","gentime","AttributeTypeValue","SubjectPublicKeyInfo","RelativeDistinguishedName","setof","RDNSequence","seqof","Name","rdnSequence","Validity","Extension","bool","TBSCertificate","X509Certificate","findProc","startRegex","fullRegex","evp","okey","decrypted","cipherText","cipherKey","cipher","match2","aesid","fixProc","compat","passphrase","subtype","ndata","stripped","tbsCertificate","subjectPublicKeyInfo","subjectPublicKey","kde","kdeparams","iters","keylen","headersArr","row","ZERO_BUF","checkParameters","defaultEncoding","toBrowser","checks","getNextTick","queueMicrotask","browserPbkdf2","iterations","importKey","deriveBits","promise","resolvePromise","prom","checkNative","MAX_ALLOC","sizes","rmd160","saltLen","shaFunc","rmd160Func","getDigest","ipad1","ipad2","run","DK","block1","destPos","hLen","U","rerenderQueue","rerenderCount","prevDebounce","IS_HYDRATE","EMPTY_OBJ","EMPTY_ARR","IS_NON_DIMENSIONAL","removeNode","normalizedProps","defaultProps","createVNode","ref","original","vnode","_children","_parent","_depth","_dom","_nextDom","_component","_original","createRef","Fragment","Component","getDomSibling","childIndex","updateParentDomPointers","enqueueRender","_dirty","debounceRendering","_vnode","commitQueue","oldVNode","newDom","oldDom","parentDom","_parentDom","_globalContext","ownerSVGElement","commitRoot","diffChildren","newParentVNode","oldParentVNode","globalContext","isSvg","excessDomChildren","isHydrating","sibDom","firstChildDom","oldChildren","oldChildrenLength","toChildArray","childVNode","nextDom","nextSibling","insertBefore","unmount","applyRef","flattened","setStyle","setProperty","dom","oldValue","useCapture","nameLower","cssText","eventProxy","removeAttributeNS","setAttributeNS","removeAttribute","newVNode","isNew","oldProps","oldState","snapshot","clearProcessingException","newProps","componentContext","newType","_diff","contextType","_id","_defaultValue","_processingException","_pendingError","render","doRender","_renderCallbacks","_nextState","getDerivedStateFromProps","componentWillMount","componentDidMount","componentWillReceiveProps","_force","shouldComponentUpdate","componentWillUpdate","componentDidUpdate","_render","getChildContext","getSnapshotBeforeUpdate","diffElementNodes","diffed","_catchError","_commit","oldHtml","newHtml","createTextNode","createElementNS","childNodes","innerHTML","hydrate","diffProps","parentVNode","skipRemove","componentWillUnmount","replaceNode","_root","cloneElement","createContext","defaultValue","Consumer","Provider","subs","_props","old","_contextRef","hasCaught","getDerivedStateFromError","setState","componentDidCatch","forceUpdate","currentIndex","currentComponent","prevRaf","currentHook","afterPaintEffects","oldBeforeRender","oldAfterDiff","oldCommit","oldBeforeUnmount","getHookState","hooks","__hooks","_list","_pendingEffects","initialState","useReducer","invokeOrReturn","reducer","hookState","action","nextValue","useEffect","argsChanged","_args","useLayoutEffect","useRef","initialValue","useMemo","useImperativeHandle","createHandle","_factory","useContext","_context","useDebugValue","formatter","useErrorBoundary","errState","flushAfterPaintEffects","invokeCleanup","invokeEffect","hook","_cleanup","oldArgs","newArgs","shallowDiffers","raf","cancelAnimationFrame","requestAnimationFrame","PureComponent","isPureReactComponent","comparer","shouldUpdate","nextProps","updateRef","Memoed","isReactComponent","displayName","_forwarded","oldDiffHook","forwardRef","Forwarded","mapFn","Children","only","oldCatchError","detachedClone","Suspense","_pendingSuspensionCount","_suspenders","_detachOnNextRender","suspended","_suspended","lazy","loader","Lazy","SuspenseList","_map","_childDidSuspend","suspendingComponent","resolved","onResolved","onSuspensionComplete","_suspendedComponentWillUnmount","revealOrder","delegated","unsuspend","wrappedUnsuspend","ContextProvider","Portal","container","_container","_temp","_unmount","_hasMounted","createPortal","CAMEL_PROPS","REACT_ELEMENT_TYPE","firstChild","preactRender","preactHydrate","oldEventHook","setSafeDescriptor","persist","stoppedPropagating","defaultPrevented","origStopPropagation","origPreventDefault","isPropagationStopped","isDefaultPrevented","nativeEvent","classNameDescriptor","class","oldVNodeHook","$$typeof","shouldSanitize","attrs","multiple","ondoubleclick","ondblclick","onbeforeinput","onchange","normalized","oninput","_patchedLifecycles","createFactory","isValidElement","element","preactCloneElement","unmountComponentAtNode","findDOMNode","unstable_batchedUpdates","cachedSetTimeout","cachedClearTimeout","defaultSetTimout","defaultClearTimeout","runTimeout","fun","currentQueue","draining","queueIndex","cleanUpNextTick","drainQueue","marker","runClearTimeout","Item","argv","cwd","chdir","umask","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","propName","componentName","propFullName","getShim","isRequired","ReactPropTypes","bigint","arrayOf","elementType","instanceOf","objectOf","oneOfType","shape","exact","checkPropTypes","PropTypes","i2ops","mgf","withPublic","zBuffer","iHash","maskedSeed","maskedDb","db","dif","oaep","ps","pkcs1","paddedMsg","hLen2","dblen","nonZero","canPromise","CanvasRenderer","SvgRenderer","renderCanvas","renderFunc","canvas","argsNum","isLastArgCb","getContext","toCanvas","toDataURL","renderToDataURL","getSymbolSize","getRowColCoords","posCount","intervals","positions","getPositions","coords","posLength","Mode","ALPHA_NUM_CHARS","AlphanumericData","ALPHANUMERIC","getBitsLength","bitBuffer","put","BitBuffer","bufIndex","putBit","getLengthInBits","BufferUtil","BitMatrix","reservedBit","col","reserved","isReserved","ByteData","BYTE","ECLevel","EC_BLOCKS_TABLE","EC_CODEWORDS_TABLE","getBlocksCount","errorCorrectionLevel","getTotalCodewordsCount","isValid","Utils","G15_BCH","getBCHDigit","getEncodedBits","EXP_TABLE","LOG_TABLE","exp","KanjiData","KANJI","toSJIS","Patterns","PATTERN000","PATTERN001","PATTERN010","PATTERN011","PATTERN100","PATTERN101","PATTERN110","PATTERN111","PenaltyScores","getMaskAt","maskPattern","getPenaltyN1","sameCountCol","sameCountRow","lastCol","lastRow","getPenaltyN2","getPenaltyN3","bitsCol","bitsRow","getPenaltyN4","darkCount","modulesCount","applyMask","getBestMask","setupFormatFunc","numPatterns","bestPattern","lowerPenalty","penalty","VersionCheck","Regex","NUMERIC","ccBits","MIXED","getCharCountIndicator","getBestModeForData","dataStr","testNumeric","testAlphanumeric","testKanji","NumericData","remainingNum","GF","coeff","divident","divisor","generateECPolynomial","degree","poly","AlignmentPattern","FinderPattern","MaskPattern","ECCode","ReedSolomonEncoder","Version","FormatInfo","Segments","setupFormatInfo","matrix","createData","segments","dataTotalCodewordsBits","getSymbolTotalCodewords","remainingByte","totalCodewords","ecTotalCodewords","dataTotalCodewords","ecTotalBlocks","blocksInGroup1","totalCodewordsInGroup1","dataCodewordsInGroup1","dataCodewordsInGroup2","ecCount","dcData","ecData","maxDataSize","dataSize","createCodewords","createSymbol","estimatedVersion","rawSegments","rawSplit","getBestVersionForData","bestVersion","dataBits","moduleCount","setupFinderPattern","setupTimingPattern","setupAlignmentPattern","setupVersionInfo","inc","bitIndex","byteIndex","dark","setupData","toSJISFunc","setToSJISFunction","Polynomial","genPoly","paddedData","remainder","buff","kanji","byte","BYTE_KANJI","TEST_KANJI","TEST_NUMERIC","TEST_ALPHANUMERIC","getStringByteLength","unescape","getSegments","getSegmentsFromString","byteSegs","kanjiSegs","numSegs","alphaNumSegs","isKanjiModeEnabled","getSegmentBitsLength","buildSingleSegment","modesHint","bestMode","seg","segs","buildNodes","prevNodeIds","nodeGroup","currentNodeIds","lastCount","prevNodeId","buildGraph","optimizedSegs","curr","prevSeg","mergeSegments","toSJISFunction","CODEWORDS_COUNT","G18_BCH","getReservedBitsCount","getTotalBitsFromDataArray","totalBits","reservedBits","getCapacity","usableBits","ecl","currentVersion","getBestVersionForMixedData","getBestVersionForDataLength","qrData","canvasEl","getCanvasElement","getOptions","getImageWidth","image","createImageData","qrToImageData","clearRect","height","clearCanvas","putImageData","rendererOpts","quality","getColorAttrib","attrib","toFixed","svgCmd","cmd","qrcodesize","bg","light","moveBy","newRow","lineLength","qrToPath","viewBox","svgTag","hex2rgba","hexCode","hexValue","scale","getScale","qrSize","imgData","qr","symbolSize","scaledMargin","palette","posDst","pxColor","species","sliceLen","strictUriEncode","decodeComponent","splitOnFirst","validateArrayFormatSeparator","keysSorter","removeHash","hashStart","extract","queryStart","parseValue","parseNumbers","parseBooleans","arrayFormat","arrayFormatSeparator","newValue","parserForArrayFormat","skipNull","skipEmptyString","encoderForArrayFormat","objectCopy","parseUrl","parseFragmentIdentifier","fragmentIdentifier","stringifyUrl","queryFromUrl","parsedQueryFromUrl","queryString","getHash","qs","sep","regexp","maxKeys","kstr","vstr","stringifyPrimitive","ks","MAX_BYTES","MAX_UINT32","generated","oldBrowser","safeBuffer","kBufferMaxLength","kMaxUint32","assertOffset","actualFill","ourBuf","uint","ca","ea","fa","ha","ia","ka","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","propertyName","sanitizeURL","removeEmptyString","oa","pa","qa","ma","na","la","xlinkHref","ra","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","sa","ta","wa","xa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ma","Ka","La","Na","Oa","Pa","prepareStackTrace","Qa","Ra","_payload","Sa","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","controlled","$a","ab","ownerDocument","eb","fb","defaultSelected","disabled","gb","hb","ib","kb","lb","mb","nb","ob","namespaceURI","MSApp","execUnsafeLocalFunction","pb","lastChild","nodeValue","qb","animationIterationCount","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","sb","tb","ub","menuitem","area","br","embed","hr","img","keygen","wbr","vb","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Ob","Pb","Qb","Rb","Sb","Ub","Vb","Wb","Xb","Zb","alternate","return","$b","memoizedState","dehydrated","ac","cc","bc","dc","fc","gc","hc","ic","jc","kc","lc","mc","nc","oc","pc","qc","rc","blockedOn","domEventName","eventSystemFlags","targetContainers","sc","pointerId","tc","vc","wc","lanePriority","unstable_runWithPriority","priority","containerInfo","yc","zc","Ac","Bc","unstable_scheduleCallback","unstable_NormalPriority","Cc","Dc","Ec","animationend","animationiteration","animationstart","transitionend","Fc","Gc","Hc","animation","transition","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","unstable_now","Rc","Uc","pendingLanes","expiredLanes","suspendedLanes","pingedLanes","Vc","entangledLanes","entanglements","Wc","Xc","Yc","Zc","$c","eventTimes","bd","cd","unstable_UserBlockingPriority","ed","fd","gd","hd","uc","jd","kd","ld","md","nd","od","keyCode","charCode","pd","qd","rd","_reactName","_targetInst","currentTarget","returnValue","cancelBubble","isPersistent","wd","xd","yd","sd","eventPhase","bubbles","cancelable","timeStamp","isTrusted","ud","detail","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","button","buttons","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","Id","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","locale","which","Rd","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","fe","ge","he","le","datetime","email","month","tel","week","me","ne","oe","pe","qe","se","te","ue","ve","we","xe","ye","ze","Ae","detachEvent","Be","Ce","attachEvent","De","Ee","Fe","He","Ie","Je","Ke","Le","Me","compareDocumentPosition","Ne","HTMLIFrameElement","contentWindow","Oe","contentEditable","Pe","Qe","Re","Se","Ue","selectionStart","selectionEnd","anchorNode","defaultView","anchorOffset","focusNode","focusOffset","Ve","We","Xe","Ye","Ze","Yb","$e","af","bf","cf","df","passive","Nb","ef","ff","parentWindow","gf","je","ke","jf","kf","lf","mf","autoFocus","nf","of","pf","qf","sf","previousSibling","tf","vf","wf","xf","yf","zf","Af","Bf","Cf","Df","Ef","contextTypes","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Ff","childContextTypes","Gf","Hf","If","Jf","__reactInternalMemoizedMergedChildContext","Kf","Lf","Mf","Nf","Of","Pf","unstable_cancelCallback","Qf","unstable_shouldYield","Rf","unstable_requestPaint","Sf","unstable_getCurrentPriorityLevel","Uf","unstable_ImmediatePriority","Vf","Wf","Xf","unstable_LowPriority","Yf","unstable_IdlePriority","Zf","$f","ag","cg","dg","O","eg","fg","gg","hg","ig","jg","kg","ReactCurrentBatchConfig","lg","mg","ng","og","pg","qg","rg","_currentValue","sg","childLanes","tg","dependencies","firstContext","lanes","ug","vg","observedBits","responders","wg","xg","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","effects","yg","zg","eventTime","lane","Ag","Bg","Cg","Dg","Eg","Fg","Gg","Kg","isMounted","_reactInternals","enqueueSetState","Hg","Ig","Jg","enqueueReplaceState","enqueueForceUpdate","Lg","Mg","updater","Ng","UNSAFE_componentWillReceiveProps","Og","UNSAFE_componentWillMount","Pg","Qg","_owner","_stringRef","Rg","Sg","lastEffect","nextEffect","firstEffect","Tg","Ug","Vg","Wg","Xg","Yg","Zg","$g","documentElement","tagName","ih","memoizedProps","jh","kh","lh","oh","pendingProps","qh","th","uh","_workInProgressVersionPrimary","vh","ReactCurrentDispatcher","wh","Fh","Gh","Hh","baseQueue","Ih","Jh","lastRenderedReducer","eagerReducer","eagerState","lastRenderedState","dispatch","Lh","Mh","_getVersion","_source","mutableReadLanes","Nh","getSnapshot","subscribe","setSnapshot","Oh","Ph","Qh","Rh","deps","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","di","readContext","useDeferredValue","useTransition","useMutableSource","useOpaqueIdentifier","unstable_isNewReconciler","uf","ei","ReactCurrentOwner","fi","gi","ji","ki","li","mi","baseLanes","ni","oi","pi","UNSAFE_componentWillUpdate","qi","ri","pendingContext","Bi","Di","Ei","si","retryLane","ti","unstable_avoidThisFallback","ui","unstable_expectedLoadTime","vi","wi","yi","isBackwards","rendering","renderingStartTime","tailMode","Ai","Fi","Gi","wasMultiple","onclick","Hi","Ii","Ji","Ki","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","componentStack","Ui","Wi","Xi","__reactInternalSnapshotBeforeUpdate","Yi","$i","focus","aj","display","bj","onCommitFiberUnmount","cj","dj","ej","fj","gj","hj","_reactRootContainer","ij","jj","kj","lj","mj","nj","oj","pj","X","Y","rj","sj","tj","uj","vj","wj","Z","xj","yj","zj","Aj","Bj","Cj","Dj","Ej","Fj","Gj","Hj","Ij","Jj","Sc","Kj","Lj","Mj","callbackNode","expirationTimes","callbackPriority","Nj","Oj","Pj","Qj","Rj","Sj","Tj","finishedWork","finishedLanes","Uj","timeoutHandle","Wj","Xj","pingCache","Yj","Zj","va","ak","bk","dk","rangeCount","focusedElem","selectionRange","ek","setStart","setEnd","scrollLeft","scrollTop","onCommitFiberRoot","fk","gk","pendingChildren","jk","mutableSourceEagerHydrationData","kk","lk","mk","nk","qk","hydrationOptions","mutableSources","_internalRoot","rk","tk","hasAttribute","sk","uk","hk","_calculateChangedBits","unstable_observedBits","querySelectorAll","Vj","vk","wk","findFiberByHostInstance","bundleType","rendererPackageName","xk","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","__REACT_DEVTOOLS_GLOBAL_HOOK__","yk","isDisabled","supportsFiber","inject","flushSync","unstable_createPortal","unstable_renderSubtreeIntoContainer","checkDCE","__self","__source","jsx","jsxs","StrictMode","Profiler","escape","_status","_result","IsSomeRendererActing","_currentValue2","_threadCount","Duplex","Readable","allowHalfOpen","readable","onend","_writableState","ended","onEndNT","highWaterMark","getBuffer","_readableState","destroyed","PassThrough","ReadableState","EElistenerCount","Stream","OurUint8Array","debugUtil","debuglog","createReadableStreamAsyncIterator","BufferList","destroyImpl","getHighWaterMark","ERR_STREAM_PUSH_AFTER_EOF","ERR_METHOD_NOT_IMPLEMENTED","ERR_STREAM_UNSHIFT_AFTER_END_EVENT","errorOrDestroy","kProxyEvents","isDuplex","objectMode","readableObjectMode","pipes","pipesCount","flowing","endEmitted","reading","needReadable","emittedReadable","readableListening","resumeScheduled","paused","emitClose","autoDestroy","awaitDrain","readingMore","_read","_destroy","readableAddChunk","addToFront","skipChunkCheck","emitReadable","emitReadable_","onEofChunk","chunkInvalid","_uint8ArrayToBuffer","addChunk","maybeReadMore","_undestroy","undestroy","isPaused","setEncoding","clear","MAX_HWM","howMuchToRead","computeNewHighWaterMark","flow","maybeReadMore_","updateReadableListening","resume","nReadingNextTick","resume_","fromList","consume","endReadable","endReadableNT","wState","finished","nOrig","doRead","pipe","pipeOpts","endFn","stdout","unpipe","onunpipe","unpipeInfo","hasUnpiped","onclose","onfinish","ondrain","onerror","ondata","cleanedUp","needDrain","pipeOnDrain","pause","dests","ev","_fromList","ERR_MULTIPLE_CALLBACK","ERR_TRANSFORM_ALREADY_TRANSFORMING","ERR_TRANSFORM_WITH_LENGTH_0","afterTransform","ts","_transformState","transforming","writecb","writechunk","needTransform","writeencoding","prefinish","err2","CorkedRequest","finish","corkReq","pendingcb","corkedRequestsFree","onCorkedFinish","WritableState","internalUtil","deprecate","realHasInstance","ERR_STREAM_CANNOT_PIPE","ERR_STREAM_DESTROYED","ERR_STREAM_NULL_VALUES","ERR_STREAM_WRITE_AFTER_END","ERR_UNKNOWN_ENCODING","nop","writableObjectMode","finalCalled","ending","noDecode","decodeStrings","writing","corked","bufferProcessing","onwrite","writelen","onwriteStateUpdate","finishMaybe","errorEmitted","onwriteError","needFinish","bufferedRequest","clearBuffer","afterWrite","lastBufferedRequest","prefinished","bufferedRequestCount","writev","_writev","doWrite","onwriteDrain","allBuffers","isBuf","callFinal","need","rState","hasInstance","writeAfterEnd","validChunk","newChunk","decodeChunk","writeOrBuffer","cork","uncork","setDefaultEncoding","endWritable","_Object$setPrototypeO","kLastResolve","kLastReject","kError","kEnded","kLastPromise","kHandlePromise","kStream","createIterResult","readAndResolve","onReadable","AsyncIteratorPrototype","ReadableStreamAsyncIteratorPrototype","lastPromise","wrapForNext","_this2","_Object$create","hasStrings","_getString","_getBuffer","emitErrorAndCloseNT","emitErrorNT","emitCloseNT","readableDestroyed","writableDestroyed","ERR_STREAM_PREMATURE_CLOSE","eos","called","onlegacyfinish","writableEnded","readableEnded","onrequest","setHeader","isRequest","destroyer","popCallback","streams","destroys","ERR_INVALID_OPT_VALUE","duplexKey","hwm","highWaterMarkFrom","pipeline","runtime","Op","$Symbol","asyncIteratorSymbol","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","Context","_invoke","GenStateSuspendedStart","GenStateExecuting","GenStateCompleted","doneResult","delegate","delegateResult","maybeInvokeDelegate","ContinueSentinel","_sent","dispatchException","abrupt","record","tryCatch","GenStateSuspendedYield","makeInvokeMethod","GeneratorFunctionPrototype","IteratorPrototype","NativeIteratorPrototype","Gp","defineIteratorMethods","AsyncIterator","PromiseImpl","invoke","__await","previousPromise","callInvokeWithMethodAndArg","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","iteratorMethod","isGeneratorFunction","genFun","awrap","async","skipTempReset","rootRecord","rval","exception","handle","caught","hasCatch","hasFinally","finallyEntry","complete","delegateYield","regeneratorRuntime","accidentalStrictMode","zr","sl","sr","fn3","fn4","fn5","ar","cr","dr","tl","tr","safeParseInt","encodeLength","hexLength","llength","innerRemainder","totalLength","integer","inputBuf","copyProps","SafeBuffer","safer","Safer","kStringMaxLength","MAX_LENGTH","MAX_STRING_LENGTH","performance","MessageChannel","unstable_forceFrameRate","port2","port1","onmessage","postMessage","sortIndex","startTime","expirationTime","priorityLevel","unstable_Profiling","unstable_continueExecution","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","delay","unstable_wrapCallback","h0","h1","h4","h5","h6","h7","bytesLeft","bitLenHi","bitLenLo","numZeros","PBKDF2_HMAC_SHA256_OneIter","dkLen","innerLen","outerKey","incrementCounter","blockmix_salsa8","BY","_X","arraycopy","blockxor","salsa20_8","srcPos","checkBufferish","ensureInteger","_scrypt","i1","XY","totalOps","currentOp","lastPercent10","i0","incrementalSMix","steps","percent10","derivedKey","lib","scrypt","progressCallback","lastProgress","progress","syncScrypt","loadPublicKey","xbuf","loadCompressedPublicKey","ybuf","x3","loadUncompressedPublicKey","savePublicKey","contextRandomize","seckey","tweaked","publicKeyNegate","pubkeys","pairs","sigR","sigS","lenR","posR","lenS","posS","outputlen","_noncefn","msg32","sigr","sigs","cond","isUint8Array","numbers","isCompressed","toTypeString","getAssertedOutput","semaphore","firstHere","take","isFirst","leave","available","finalSize","_finalSize","assigned","lowBits","highBits","Algorithm","Sha","_w","rotl30","ft","Sha1","rotl5","Sha256","Sha224","_f","_g","_h","maj","sigma0","sigma1","gamma0","Sha384","_ah","_bh","_ch","_dh","_eh","_fh","_gh","_hh","_al","_bl","_cl","_dl","_el","_fl","_gl","_hl","writeInt64BE","Sha512","Gamma0","Gamma0l","Gamma1","Gamma1l","getCarry","gamma0l","gamma1","gamma1l","Wi7h","Wi7l","Wi16h","Wi16l","Wil","Wih","majh","majl","sigma0h","sigma0l","sigma1h","sigma1l","Kih","Kil","chh","chl","t1l","t1h","t2l","t2h","separator","separatorIndex","ClientRequest","statusCodes","defaultProtocol","IncomingMessage","Agent","defaultMaxSockets","globalAgent","STATUS_CODES","METHODS","getXHR","XDomainRequest","checkTypeSupport","responseType","ReadableStream","writableStream","WritableStream","abortController","AbortController","arraybuffer","msstream","mozchunkedarraybuffer","overrideMimeType","rStates","readyStates","preferBinary","_opts","_body","_headers","auth","useFetch","decideMode","_fetchTimer","_socketTimeout","_socketTimer","_onFinish","lowerName","unsafeHeaders","getHeader","removeHeader","_destroyed","headersObj","Blob","headersList","keyName","signal","controller","_fetchAbortController","requestTimeout","credentials","_fetchResponse","_resetTimers","_connect","_xhr","ontimeout","_response","LOADING","DONE","_onXHRProgress","statusValid","flushHeaders","setNoDelay","setSocketKeepAlive","UNSENT","OPENED","HEADERS_RECEIVED","resetTimers","rawHeaders","trailers","rawTrailers","statusMessage","statusText","_resumeFetch","close","pipeTo","getReader","_pos","responseURL","_charset","mimeType","charsetMatch","newData","MSStreamReader","onload","readAsArrayBuffer","_isStdio","didOnEnd","cleanup","nenc","retried","_normalizeEncoding","normalizeEncoding","utf16Text","utf16End","fillLast","utf8FillLast","base64Text","base64End","simpleWrite","simpleEnd","lastNeed","lastTotal","lastChar","utf8CheckByte","utf8CheckExtraBytes","utf8CheckIncomplete","unavailable","fs","readFile","files","download","safeDownloadArchived","directoryTree","child_process","spawn","mimetype","pick","defaultArchives","downloadUrl","picker","fileInput","fileLoader","directory","totalFiles","loadedFiles","file","FileReader","webkitRelativePath","_path","webkitdirectory","mozdirectory","msdirectory","odirectory","mouseEvent","createEvent","initEvent","dispatchEvent","Bytes","swarmHashBlock","lengthEncoded","maxSize","innerNodes","_ref","toMap","vals","rawUrl","swarmUrl","downloadData","downloadEntries","routes","downloadEntry","contentType","impureInsert","downloadRoutes","route","downloadDirectory","paths","hashs","datas","downloadDataToDisk","filePath","downloadDirectoryToDisk","dirPath","routingTable","downloads","uploadData","uploadToManifest","slashRoute","opt","uploadFile","uploadDirectory","uploadFileFromDisk","uploadRoute","uploadDataFromDisk","uploadDirectoryFromDisk","defaultPath","fullPaths","_upload","defaultFile","_download","isDirectory","isDir","downloadBinary","archives","system","archive","archiveUrl","archiveMD5","binaryMD5","startProcess","swarmSetup","hasString","account","dataDir","ensApi","swarmProcess","binPath","handleProcessOutput","stdin","stopProcess","kill","killTimeout","_isAvailable","uncurry","uint8Array","isAvailable","upload","useAPI","onData","onProgress","active","ranges","getRangeAt","blur","extendStatics","__","__rest","__decorate","decorators","decorate","__param","paramIndex","decorator","__metadata","metadataKey","metadataValue","_arguments","fulfilled","rejected","ops","verb","op","__createBinding","__values","__read","__spread","__spreadArray","__asyncGenerator","fulfill","settle","__asyncDelegator","__asyncValues","__makeTemplateObject","cooked","__setModuleDefault","__importStar","__importDefault","__classPrivateFieldGet","__classPrivateFieldSet","ucs2encode","Url","slashes","urlParse","resolveObject","protocolPattern","portPattern","simplePathPattern","unwise","autoEscape","nonHostChars","hostEndingChars","hostnamePartPattern","hostnamePartStart","unsafeProtocol","hostlessProtocol","slashedProtocol","querystring","parseQueryString","slashesDenoteHost","queryIndex","splitter","uSplit","rest","simplePath","lowerProto","atSign","hostEnd","hec","parseHost","ipv6Hostname","hostparts","newpart","validParts","notHost","esc","qm","tkeys","tkey","rkeys","rkey","relPath","isSourceAbs","isRelAbs","mustEndAbs","removeAllDots","srcPath","psychotic","isNullOrUndefined","authInHost","isNull","hasTrailingSlash","up","isAbsolute","checkScalarValue","createByte","encodeCodePoint","readContinuationByte","continuationByte","decodeSymbol","byte1","byteString","localStorage","trace","isArgumentsObject","whichTypedArray","BigIntSupported","SymbolSupported","ObjectToString","numberValue","booleanValue","bigIntValue","symbolValue","checkBoxedPrimitive","prototypeValueOf","isMapToString","isSetToString","isWeakMapToString","isWeakSetToString","isArrayBufferToString","isArrayBuffer","working","isDataViewToString","isDataView","isUint8ClampedArray","isUint16Array","isUint32Array","isInt8Array","isInt16Array","isInt32Array","isBigInt64Array","isBigUint64Array","isWeakMap","isWeakSet","SharedArrayBufferCopy","isSharedArrayBufferToString","isSharedArrayBuffer","isAsyncFunction","isMapIterator","isSetIterator","isGeneratorObject","isWebAssemblyCompiledModule","descriptors","formatRegExp","noDeprecation","throwDeprecation","traceDeprecation","debugs","debugEnvRegex","NODE_DEBUG","debugEnv","stylize","stylizeNoColor","isBoolean","_extend","isUndefined","stylizeWithColor","formatValue","styleType","styles","simple","isNumber","formatPrimitive","visibleKeys","arrayToHash","formatError","braces","toUTCString","formatProperty","formatArray","numLinesEst","reduceToSingleString","pid","isSymbol","isPrimitive","months","getHours","getMinutes","getSeconds","getDate","getMonth","kCustomPromisifiedSymbol","callbackifyOnRejected","newReason","promisify","promiseResolve","promiseReject","callbackify","callbackified","maybeCb","rej","oldOffset","INT","N1","N2","N3","N4","N5","N6","N7","N8","N9","Bzz","givenProvider","_requestManager","setProvider","ethereum","bzz","noProviderError","ErrorResponse","InvalidNumberOfParams","got","InvalidConnection","ConnectionError","InvalidProvider","InvalidResponse","ConnectionTimeout","ms","ConnectionNotOpenError","ConnectionCloseError","MaxAttemptsReachedOnReconnectingError","PendingRequestsOnReconnectingError","RevertInstructionError","TransactionRevertInstructionError","receipt","TransactionError","NoContractAddressFoundError","ContractCodeNotStoredError","TransactionRevertedWithoutReasonError","TransactionOutOfGasError","ResolverMethodMissingError","ContractMissingABIError","ContractOnceRequiresCallbackError","ContractEventDoesNotExistError","ContractReservedEventError","ContractMissingDeployDataError","ContractNoAddressDefinedError","ContractNoFromAddressDefinedError","Iban","outputBigNumberFormatter","inputBlockNumberFormatter","isPredefinedBlockNumber","isHexStrict","numberToHex","_txInputFormatter","inputAddressFormatter","isHex","gas","outputTransactionFormatter","hexToNumber","transactionIndex","outputLogFormatter","transactionHash","logIndex","shaId","iban","isDirect","toAddress","inputDefaultBlockNumberFormatter","defaultBlock","inputCallFormatter","defaultAccount","inputTransactionFormatter","inputPostFormatter","post","ttl","workToProve","inputLogFormatter","toTopic","inputSignFormatter","utf8ToHex","inputStorageKeysFormatter","outputProofFormatter","proof","hexToNumberString","outputTransactionReceiptFormatter","cumulativeGasUsed","logs","effectiveGasPrice","outputBlockFormatter","totalDifficulty","baseFeePerGas","outputPostFormatter","expiry","workProved","outputSyncingFormatter","startingBlock","highestBlock","knownStates","pulledStates","formatters","promiEvent","Subscriptions","EthersTransactionUtils","Method","inputFormatter","outputFormatter","transformPayload","extraFormatters","abiCoder","requestManager","transactionBlockTimeout","transactionConfirmationBlocks","transactionPollingTimeout","transactionPollingInterval","blockHeaderTimeout","defaultCommon","defaultChain","handleRevert","setRequestManager","createFunction","buildCall","attachToObject","getCall","extractCallback","validateArgs","formatInput","formatOutput","toPayload","_confirmTransaction","promiseResolved","canUnsubscribe","timeoutCount","confirmationCount","intervalId","blockHeaderTimeoutId","lastBlock","gasProvided","isContractDeployment","hasBytecode","_ethereumCalls","subscriptionName","_ethereumCall","mthd","checkConfirmation","existingReceipt","isPolling","blockHeader","unsubscribe","clearInterval","_fireError","eventEmitter","receiptFormatter","latestBlockHash","contractDeployFormatter","outOfGas","revertMessage","txReplayOptions","rawTransactionHex","parsedTx","getRevertReason","startWatching","blockHeaderArrived","startInterval","getWallet","wallet","_handleTxPricing","getGasPrice","isSendTx","isCall","sendTxCallback","reasonData","isRevertReasonString","decodeParameter","sendSignedTx","signedPayload","sendRequest","signTransaction","txPricing","PromiEvent","justPromise","Jsonrpc","Batch","requests","execute","sortResponses","_sortResponses","sendBatch","isValidResponse","web3","connection","BatchManager","RequestManager","net","providers","WebsocketProvider","HttpProvider","IpcProvider","connected","clearSubscriptions","deprecatedResult","resubscribe","_isCleanCloseEvent","_isIpcCloseError","jsonrpcPayload","jsonrpcResultCallback","_jsonrpcResultCallback","callbackRequest","toBatchPayload","addSubscription","removeSubscription","keepIsSyncing","wasClean","Manager","messageId","validateSingleMessage","messages","Subscription","rm","identity","_extractCallback","_validateArgs","_formatInput","_formatOutput","_toPayload","subscriptionMethod","err1","blockParams","resultItem","subscriptionHandler","pckg","ex","extension","extendedObject","packageInit","pkg","manager","BatchRequest","addProviders","EthersAbiCoder","ethersAbiCoder","Result","ABICoder","encodeFunctionSignature","functionName","_jsonInterfaceMethodToString","encodeEventSignature","encodeParameter","encodeParameters","mapTypes","formatParam","modifyParams","mappedTypes","isSimplifiedStructFormat","structName","mapStructNameAndType","mapStructToCoderFormat","struct","paramTypeBytesArray","paramTypeNumberArray","isBigNumber","leftPad","rightPad","encodeFunctionCall","jsonInterface","inputs","decodeParameters","outputs","decodeParametersWith","__length__","decodedValue","decodeLog","notIndexedInputs","indexedParams","topicCount","find","staticType","nonIndexedData","notIndexedParams","core","cryp","uuid","HardForks","ethereumjsUtil","isNot","isExist","Accounts","Wallet","_accounts","defaultKeyName","_addAccountFunctions","randomHex","privateKeyToAccount","ignoreLength","transactionOptions","hasTxSigningOptions","customChain","_validateTransactionForSigning","London","signedTx","validationErrors","validationError","messageHash","hasEip1559","_handleTxType","getNetworkId","txchainId","txnonce","txnetworkId","txgasInfo","recoverTransaction","rawTx","messageHex","messageBytes","hexToBytes","messageBuffer","preamble","preambleBuffer","ethMessage","vrs","decodeSignature","preFixed","encodeSignature","v3Keystore","nonStrict","kdfparams","kdf","dklen","prf","ciphertext","mac","decipher","cipherparams","v4","_findSafeIndex","pointer","_currentIndexes","numberOfAccounts","addressOrIndex","encryptedWallet","keystore","load","storageAvailable","Nat","toChecksum","addressHash","checksumAddress","publicHash","makeSigner","addToV","innerHex","middleHex","outerHex","bin","toEther","fromEther","eth","toUint256","dataTree","parseTree","parseList","parseLength","lim","byteToHex","bth","rnds8","rnds","_nodeId","_clockseq","bytesToUuid","_lastMSecs","_lastNSecs","clockseq","seedBytes","msecs","nsecs","dt","tmh","abi","Contract","lastArg","_getOrSetDefaultOptions","_address","_jsonInterface","funcName","constant","stateMutability","payable","_createTxObject","cascadeFunc","nextMethod","_on","allEvents","_ethAccounts","_getCallback","_checkListener","_encodeEventABI","anonymous","indexedTopics","_decodeEventABI","intf","indexedInputs","argTopics","returnValues","_encodeMethodABI","methodSignature","_method","paramsABI","_deployData","_decodeMethodReturn","deploy","deployData","_generateEventOptions","subOptions","getPastEvents","getPastLogs","txObject","_executeMethod","encodeABI","createAccessList","_processExecuteArguments","processedArgs","generateRequest","ethAccounts","newContract","Registry","ResolverMethodHandler","contenthash","ENS","registryAddress","_detectedAddress","_lastSyncCheck","supportsInterface","interfaceId","getResolver","setResolver","txConfig","setRecord","owner","setSubnodeRecord","setApprovalForAll","approved","isApprovedForAll","recordExists","setSubnodeOwner","getTTL","setTTL","getOwner","setOwner","resolverMethodHandler","setAddress","getPubkey","setPubkey","getContent","setContent","getContenthash","setContenthash","getMultihash","setMultihash","checkNetwork","headAge","getNetworkType","networkType","addresses","main","interfaceIds","setAddr","namehash","REGISTRY_ABI","RESOLVER_ABI","ens","contract","ensName","methodArguments","preparedArguments","prepareArguments","checkInterfaceSupport","handleCall","sendOptions","handleSend","confirmationNumber","supported","protocolType","iso13616Prepare","mod9710","_iban","isIndirect","base36","asBn","fromAddress","fromBban","bban","countryCode","institution","Net","Personal","getId","givenId","BaseContract","blockCall","transactionFromBlockCall","uncleCall","getBlockTransactionCountCall","uncleCountCall","Eth","personal","maxListenersWarningThreshold","removeSubscriptionById","_isSyncing","_isSyncingTimeout","EthBlockTracker","eachSeries","Stoplight","createPayload","Web3ProviderEngine","directProvider","_handleAsync","blockTrackerProvider","_blockTracker","_ready","_providers","toBufferBlock","jsonBlock","receiptRoot","go","_getBlockByNumberWithRetry","bufferBlock","_running","isRunning","addProvider","setEngine","removeProvider","await","retriesRemaining","attemptRequest","_getBlockByNumber","afterRequest","resultObj","after","handleRequest","ProviderSubprovider","createBlockCacheMiddleware","BlockCacheSubprovider","SubscriptionsSubprovider","Subprovider","FixtureProvider","staticResponses","staticResponse","waterfall","parallel","sigUtil","hexRegex","HookedWalletSubprovider","nonceLock","getAccounts","processTransaction","processMessage","processPersonalMessage","processTypedMessage","approveTransaction","autoApprove","approveMessage","approvePersonalMessage","approveDecryptMessage","approveEncryptionPublicKey","approveTypedMessage","mustProvideInConstructor","signMessage","signPersonalMessage","decryptMessage","encryptionPublicKey","signTypedMessage","publishTransaction","resemblesAddress","fixed","resemblesData","isValidHex","txParams","extraParams","_parityRequests","_parityRequestCount","validateTransaction","processSignTransaction","validateMessage","validatePersonalMessage","validateDecryptMessage","processDecryptMessage","validateEncryptionPublicKey","processEncryptionPublicKey","validateTypedMessage","parityPostTransaction","parityPostSign","requestId","parityCheckRequest","didApprove","checkApproval","finalizeAndSubmitTx","finalizeTx","reqId","emitPayload","txHash","senderHex","validateSender","senderIsValid","senderAddress","fillInTxExtras","cloneTxParams","taskResults","JsonRpcEngineMiddlewareSubprovider","constructorFn","_constructorFn","provEngNext","provEngEnd","NonceTrackerSubprovider","nonceCache","cachedResult","hexNonce","SubProvider","createSubscriptionManager","getRandomId","includeBlockRef","XHR2","agent","keepAlive","httpsAgent","httpAgent","_prepareRequest","agents","nodejsSet","disconnect","supportsSubscriptions","responseCallbacks","notificationCallbacks","addDefaultEvents","_parseResponse","_timeout","lastChunk","lastChunkTimeout","_addResponseCallback","reconnect","isRN","_btoa","URL","newURL","btoa","parseURL","Ws","_customTimeout","reconnectOptions","auto","maxAttempts","onTimeout","clientConfig","requestOptions","DATA","CLOSE","ERROR","CONNECT","RECONNECT","requestQueue","responseQueue","reconnectAttempts","reconnecting","parsedURL","username","authorization","OPEN","_addSocketListeners","_onMessage","_onConnect","_onClose","_removeSocketListeners","CONNECTING","Shh","ethjsUnit","soliditySha3","_flattenTypes","includeTuple","puts","suffix","arrayBracket","hexToAscii","asciiToHex","getUnitValue","optionalData","sha3Raw","soliditySha3Raw","encodePacked","checkAddressChecksum","toDecimal","fromDecimal","hexToUtf8","hexToString","stringToHex","toTwosComplement","compareBlockNumbers","bnA","bnB","_parseNumber","_solidityPack","_elementaryName","typesize","_parseTypeN","_processSolidityEncodePackedArgs","_parseTypeNArray","hexArgs","ethereumBloomFilters","returnType","_Hash","Web3","shh","_globalThis","NativeWebSocket","WebSocket","MozWebSocket","websocket_version","W3CWebSocket","protocols","foundName","setQuery","ensureHeader","mimeTypeJson","defaultResponse","lower","rawRequest","useJson","onabort","parseHeaders","xtend","initParams","createXHR","_createXHR","getBody","responseXML","firefoxBugTakenEffect","getXml","isJson","errorFunc","timeoutTimer","failureResponse","loadFunc","aborted","useXDR","cors","beforeSend","forEachArray","XMLHttpRequestEventTarget","handleEvent","XMLHttpRequestUpload","_contentType","loweredHeaders","xml_http_request_event_target_1","xml_http_request_upload_1","TRACE","TRACK","cookie2","dnt","expect","referer","trailer","upgrade","via","v8","_anonymous","anon","user","_restrictedMethods","SecurityError","xhrUrl","_parseUrl","_url","_sync","_loweredHeaders","_mimeOverride","_setReadyState","_request","_responseParts","_responseHeaders","_loadedBytes","_totalBytes","_lengthComputable","InvalidStateError","loweredName","_restrictedHeaders","_sendFile","_sendHttp","NetworkError","_setError","_dispatchProgress","nodejsHttpAgent","nodejsHttpsAgent","nodejsBaseUrl","progress_event_1","_setData","_finalizeHeaders","_sendHxxpRequest","cookieJar","hxxp","requestMethod","_onHttpTimeout","_onHttpResponse","_onHttpRequestError","_startUpload","Connection","Host","_userAgent","Referer","_onHttpResponseData","_onHttpResponseEnd","_onHttpResponseClose","responseUrl","_parseResponseHeaders","lengthString","ProgressEvent","lengthComputable","loaded","urlString","xhrUser","xhrPassword","_privateHeaders","_parseResponseEncoding","possibleNames","_createClass","_createSuper","__webpack_module_cache__","cachedModule","__webpack_modules__","amdO","definition","chunkId","promises","miniCssF","inProgress","dataWebpackPrefix","needAttach","scripts","charset","onScriptComplete","doneFns","nmd","installedChunks","installedChunkData","errorType","realSrc","webpackJsonpCallback","parentChunkLoadingFunction","chunkIds","moreModules","chunkLoadingGlobal","_arrayLikeToArray","_unsupportedIterableToArray","precision","inputNumber","roundAndFormatNumber","rounded","formatted","getYearMonthDayString","getFullYear","dateFromUtcEpoch","seconds","setUTCSeconds","abbreviateAddress","walletAddress","beforeLength","afterLength","_toConsumableArray","reservedEvents","signingMethods","infuraNetworks","ENC_HEX","ENC_UTF8","STRING_ZERO","bufferToArray","bufferToUtf8","arrayToBuffer","typedArrayToBuffer","arrayToHex","arrayToUtf8","hexToBuffer","removeHexPrefix","hexToArray","utf8ToBuffer","utf8ToArray","concatArrays","calcByteLength","byteSize","sanitizeBytes","padString","sanitizeHex","convertArrayBufferToBuffer","arrBuf","convertBufferToArrayBuffer","convertUtf8ToHex","noPrefix","convertNumberToHex","payloadId","removeHexLeadingZeros","jsonRpcUtils","getRpcUrl","rpcUrl","infuraUrl","infuraId","network","getInfuraRpcUrl","isJsonRpcResponseSuccess","isJsonRpcResponseError","isInternalEvent","isSilentPayload","parsePersonalSign","parseTransactionData","parseHexValues","isEmptyString","txDataRPC","prunable","appendToQueryString","newQueryParams","queryParams","queryStringUtils","formatQueryString","NetworkMonitor","_eventEmitters","trigger","eventEmitters","WS","SocketTransport","_protocol","_version","_netMonitor","_socket","_nextSocket","_subscriptions","netMonitor","_socketCreate","_socketClose","silent","_socketSend","splitUrl","pathEnd","getQueryString","getWebSocketUrl","_socketReceive","onopen","_socketOpen","_socketError","_queueSubscriptions","_pushQueue","socketMessage","_setToQueue","ERROR_SESSION_CONNECTED","ERROR_SESSION_DISCONNECTED","ERROR_INVALID_RESPONSE","ERROR_QRCODE_MODAL_USER_CLOSED","EventManager","isReservedEvent","SessionStorage","storageId","session","bridge","bridges","selectRandomBridgeUrl","Connector","_clientMeta","connectorOpts","clientMeta","_cryptoLib","cryptoLib","_sessionStorage","sessionStorage","_qrcodeModal","qrcodeModal","_qrcodeModalOptions","_signingMethods","extractHostname","extractRootDomain","shouldSelectRandomly","_getStorageSession","handshakeId","_subscribeToSessionResponse","_transport","transport","clientId","_subscribeToInternalEvents","_initTransport","_subscribeToSessionRequest","pushServerOpts","_registerPushServer","_bridge","_clientId","_peerId","_peerMeta","_handshakeTopic","_handshakeId","_formatUri","_parseUri","handshakeTopic","_networkId","_rpcUrl","_connected","peerId","peerMeta","_eventManager","instantRequest","_generateKey","_formatRequest","endInstantRequest","killSession","_sendCallRequest","createSession","_sendSessionRequest","sessionStatus","sessionParams","_sendResponse","_setStorageSession","sessionError","_formatResponse","_removeStorageSession","_manageStorageSession","_sendRequest","_handleSessionDisconnect","chainParams","_subscribeToResponse","formattedRequest","formattedResponse","callRequest","encryptionPayload","forcePushNotification","_subscribeToCallResponse","baseResponse","formatRpcError","transportClose","_handleSessionResponse","mobileLinkUrl","internalPayload","_handleIncomingMessages","pathStart","requiredParams","parseRequiredParams","parseQueryParams","parseWalletConnectUri","generateKey","getSession","setSession","removeSession","pushSubscription","peerName","Accept","AES_BROWSER_ALGO","HMAC_BROWSER_ALGO","HMAC_BROWSER","getAlgo","getOps","browserImportKey","cryptoKey","browserHmacSha256Sign","aesCbcEncrypt","browserAesEncrypt","aesCbcDecrypt","browserAesDecrypt","hmacSha256Sign","verifyHmac","hmacHex","unsigned","chmac","chmacHex","providedIv","ivArrayBuffer","ivHex","contentString","cipherTextHex","WalletConnect","XHR","HTTPConnection","responded","ProviderEngine","CacheSubprovider","FixtureSubprovider","FilterSubprovider","NonceSubprovider","WalletConnectProvider","QRCodeModal","getWalletConnector","subscribeWalletConnector","sendAsyncPromise","connectCallbacks","connector","disableSessionCreation","onDisconnect","handleOtherRequests","formatResponse","handleReadRequests","sendCustomRequest","isConnecting","onConnect","updateState","triggerConnect","updateRpcUrl","updateHttpConnection","HttpConnection","eth_hashrate","eth_mining","eth_syncing","net_listening","web3_clientVersion","configWallet","Web3Context","Web3Connection","currentChainId","connectWeb3","disconnectWeb3","web3Connected","providerName","isAdmin","busdBalance","bnbBalance","bnbUsdtPrice","busdApprovalAmount","approveBusd","presaleTransactions","presaleRounds","setReferrerString","referrer","contribute","amount","reference","smartContractAddressMap","factor","exoPresaleContractAbi","exoPresaleContractAddress","busdTokenAddress","busdTokenAbi","getChainAddresses","_contracts","setCurrentChainId","web3Connection","setWeb3Connection","setWeb3Connected","setWalletAddress","setProviderName","busdAllowance","setBusdAllowance","setBusdBalance","setIsAdmin","setPresaleTransactions","setPresaleRounds","setReferrer","getContract","enable","orginalError","nativeCurrency","decimals","rpcUrls","blockExplorerUrls","reload","fetchAllData","fetchAdmins","fetchPresaleDeposits","fetchPresaleRounds","fetchBusdApprovalAmount","fetchBusdBalance","allowance","rawAmount","adjustedAmount","balanceOf","approve","fullPrice","roundNames","roundPrices","roundVesting","roundSpecial","rounds","maximum","minimum","activeFrom","price","special","vesting","whitelisted","_roundContributionMaximums","_roundContributionMinimums","_roundActiveTimestamps","_roundContributionBalances","_roundWhitelistAddresses","walletProvider","NavigationContext","LocationContext","RouteContext","outlet","invariant","matchRoutes","locationArg","basename","stripBasename","parsePath","branches","flattenRoutes","score","siblings","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","parentsMeta","parentPath","relativePath","caseSensitive","joinPaths","computeScore","paramRe","isSplat","initialScore","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","paramNames","regexpSource","paramName","compilePath","matcher","captureGroups","splatValue","safelyDecodeURIComponent","resolveTo","toArg","routePathnames","locationPathname","toPathname","routePathnameIndex","toSegments","fromPathname","resolvePathname","normalizeSearch","normalizeHash","resolvePath","useInRouterContext","useLocation","useNavigate","routePathnamesJson","activeRef","navigate","_renderMatches","parentMatches","reduceRight","React.createElement","Navigate","Route","Router","basenameProp","locationProp","navigationType","NavigationType","static","staticProp","navigationContext","trailingPathname","Routes","routeMatch","parentParams","parentPathnameBase","locationFromContext","parsedLocationArg","_parsedLocationArg$pa","useRoutes","createRoutesFromChildren","faAngleDown","iconName","icon","faAngleUp","faUpRightFromSquare","_objectSpread2","_arrayWithoutHoles","_iterableToArray","_nonIterableSpread","_WINDOW","_DOCUMENT","_MUTATION_OBSERVER","_PERFORMANCE","measure","MutationObserver","_ref$userAgent","DOCUMENT","MUTATION_OBSERVER","PERFORMANCE","IS_DOM","IS_IE","DEFAULT_REPLACEMENT_CLASS","DATA_FA_I2SVG","DATA_FA_PSEUDO_ELEMENT","DATA_PREFIX","DATA_ICON","HTML_CLASS_I2SVG_BASE_CLASS","TAGNAMES_TO_SKIP_FOR_PSEUDOELEMENTS","PRODUCTION","PREFIX_TO_STYLE","STYLE_TO_PREFIX","PREFIX_TO_LONG_STYLE","LONG_STYLE_TO_PREFIX","ICON_SELECTION_SYNTAX_PATTERN","LAYERS_TEXT_CLASSNAME","FONT_FAMILY_PATTERN","FONT_WEIGHT_TO_PREFIX","oneToTen","oneToTwenty","ATTRIBUTES_WATCHED_FOR_MUTATION","DUOTONE_CLASSES","RESERVED_CLASSES","FontAwesomeConfig","querySelector","_ref2","getAttrConfig","_config","familyPrefix","styleDefault","replacementClass","autoReplaceSvg","autoAddCss","autoA11y","searchPseudoElements","observeMutations","mutateApproach","keepOriginalSource","measurePerformance","showMissingIcons","_onChangeCb","meaninglessTransform","rotate","flipX","flipY","nextUniqueId","classArray","classList","htmlEscape","joinStyles","styleName","transformIsMeaningful","css","dfp","drc","fp","dPatt","customPropPatt","rPatt","_cssInserted","ensureCss","headChildren","beforeChild","insertCss","InjectCSS","mixout","beforeDOMElementCreation","beforeI2svg","shims","namespace","functions","domready","toHtml","abstractNodes","_abstractNodes$attrib","_abstractNodes$childr","joinAttributes","iconFromMapping","mapping","doScroll","subject","thisContext","bindInternal4","unicode","normalizeIcons","defineIcons","_params$skipHooks","skipHooks","addPack","LONG_STYLE","_defaultUsablePrefix","_byUnicode","_byLigature","_byOldName","_byOldUnicode","_byAlias","PREFIXES","getIconName","build","hasRegular","autoFetchSvg","shimLookups","maybeNameMaybeUnicode","unicodes","getCanonicalPrefix","byUnicode","byAlias","byOldName","getDefaultUsablePrefix","styleOrPrefix","getCanonicalIcon","_params$skipLookups","skipLookups","givenPrefix","aliasIconName","Library","definitions","additions","_pullDefinitions","longPrefix","_normalized$key","_plugins","_hooks","defaultProviderKeys","chainHooks","hookFns","hookFn","callHooks","callProvided","findIconDefinition","iconLookup","library","i2svg","watch","autoReplaceSvgRoot","autoReplace","_icon","canonicalIcon","_prefix","api","noAuto","_params$autoReplaceSv","domVariants","abstractCreator","abstract","html","makeInlineSvgAbstract","_params$icons","maskId","titleId","_params$watchable","watchable","isUploadedIcon","attrClass","classes","role","uploadedIconWidthStyle","asSymbol","asIcon","makeLayersTextAbstract","_params$watchable2","_ref2$width","_ref2$height","_ref2$startCentered","startCentered","transformForCss","styleString","makeLayersCounterAbstract","styles$1","asFoundIcon","vectorData","missingIconResolutionMixin","findIcon","maybeNotifyMissing","noop$1","perf","noop$2","isWatched","convertSVG","abstractObj","_params$ceFn","ceFn","mutators","mutation","comment","createComment","outerHTML","nodeAsComment","replaceChild","nest","forSvg","splitClasses","toSvg","toNode","newInnerHTML","performOperationSync","perform","mutations","callbackFunction","frame","mutator","disableObservation","enableObservation","mo","observe","_options$treeCallback","treeCallback","_options$nodeCallback","nodeCallback","_options$pseudoElemen","pseudoElementsCallback","_options$observeMutat","observeMutationsRoot","defaultPrefix","mutationRecord","addedNodes","hasPrefixAndIcon","_getCanonicalIcon","childList","characterData","subtree","styleParser","classParser","existingPrefix","existingIconName","ligature","byLigature","attributesParser","extraAttributes","parseMeta","parser","_classParser","extraClasses","pluginMeta","extraStyles","styles$2","generateMutation","nodeMeta","onTree","htmlClassList","hclAdd","hclRemove","prefixes","prefixesDomQuery","candidates","resolvedMutations","onNode","iconDefinition","_params$transform","_params$symbol","_params$mask","_params$maskId","_params$title","_params$titleId","_params$classes","_params$attributes","_params$styles","ReplaceElements","maybeIconDefinition","mutationObserverCallbacks","provides","providers$$1","_params$node","_params$callback","generateSvgReplacementMutation","generateAbstractIcon","_ref3","nextChild","containerWidth","iconWidth","Layers","layer","assembler","LayersCounter","LayersText","generateLayersText","computedFontSize","getComputedStyle","boundingClientRect","getBoundingClientRect","CLEAN_CONTENT_PATTERN","SECONDARY_UNICODE_RANGE","replaceForPosition","pendingAttribute","alreadyProcessedPseudoElement","fontFamily","getPropertyValue","_content","_hexValueFromContent","cleaned","isPrependTen","isDoubled","isSecondary","hexValueFromContent","isV4","iconIdentifier","iconName4","oldUnicode","newUnicode","byOldUnicode","processable","operations","_unwatched","parseTransformString","transformString","PowerTransforms","parseNodeAttributes","generateAbstractTransformGrouping","innerTranslate","innerScale","innerRotate","ALL_SPACE","fillBlack","force","Masks","maskData","generateAbstractMask","explicitMaskId","mainWidth","mainPath","maskWidth","maskPath","trans","transformForSvg","maskRect","maskInnerGroupChildrenMixin","maskInnerGroup","maskOuterGroup","clipId","maskTag","maskUnits","maskContentUnits","defs","MissingIconIndicator","reduceMotion","matchMedia","missingIconAbstract","gChildren","FILL","ANIMATION_BASE","attributeType","repeatCount","dur","OPACITY_ANIMATE","dot","cx","cy","nextPlugins","mixoutsTo","plugin","registerPlugins","pseudoElements2svg","unwatch","bootstrap","symbolData","parse$1","_objectWithoutProperties","excluded","sourceKeys","_objectWithoutPropertiesLoose","sourceSymbolKeys","camelize","chr","_excluded$1","styleToObject","normalizeIconArgs","objectWithKey","_excluded","FontAwesomeIcon","forwardedRef","iconArgs","maskArgs","_classes","beat","fade","beatFade","bounce","shake","flash","spin","spinPulse","spinReverse","pulse","fixedWidth","inverse","border","rotation","pull","swapOpacity","renderedIcon","_console","extraProps","convertCurry","propTypes","convert","mixins","_extraProps$style","existingStyle","_createForOfIteratorHelper","enqueue","nextFrame","dispose","workQueue","Yo","Xo","Jo","Zo","yt","serverHandoffComplete","eo","rr","nr","ir","lr","defaultTag","features","visible","hidden","as","refName","oo","ur","fr","mr","pr","resolveItems","resolveActiveIndex","findIndex","resolveDisabled","resolveId","parentElement","HTMLFieldSetElement","HTMLLegendElement","previousElementSibling","Tr","gr","yr","Pt","xr","vr","Pr","Rr","HTMLButtonElement","accept","enabled","no","Er","acceptNode","createTreeWalker","NodeFilter","SHOW_ELEMENT","nextNode","currentNode","Ar","comboboxState","activeOptionIndex","optionsRef","optionsPropsRef","dataRef","vt","ao","Rt","Or","Cr","Ir","hold","displayValue","Sr","comboboxPropsRef","inputPropsRef","labelRef","Ge","inputRef","buttonRef","activeIndex","activeOption","selectOption","selectActiveOption","xt","Dr","onKeyDown","Fr","preventScroll","tabIndex","Hr","FILTER_REJECT","FILTER_SKIP","FILTER_ACCEPT","Input","Button","Label","Options","Option","textValue","scrollIntoView","onFocus","onPointerMove","onMouseMove","onPointerLeave","onMouseLeave","Et","DOCUMENT_POSITION_FOLLOWING","DOCUMENT_POSITION_PRECEDING","Nr","Wr","initialFocus","containers","uo","St","HTMLElement","Kr","po","inert","co","Vr","At","jr","Xr","$r","Po","yo","Jr","To","Yr","Zr","Group","Qr","vo","Ro","nn","ln","xo","rn","register","tn","ht","Eo","onUpdate","dn","pn","sn","yn","mn","It","Co","An","gn","Tn","So","descriptionId","leaf","fo","$","Ot","overflow","paddingRight","clientWidth","IntersectionObserver","dialogState","setTitleId","En","Overlay","Title","Description","Ln","disclosureState","linkedPanel","buttonId","panelId","Mt","Lt","Ft","Dt","wt","Ao","kt","Mn","Fn","hn","defaultOpen","On","kn","In","onKeyUp","Hn","Panel","$n","listboxState","orientation","searchQuery","Gt","Wn","Kn","Qn","qn","Nn","horizontal","jn","propsRef","_t","Oo","Yn","vertical","Vn","menuState","activeItemIndex","searchActiveItemIndex","itemsRef","Ht","Lo","Do","Io","click","Items","popoverState","panel","Ut","et","ot","Bt","Mo","Nt","Fo","Wt","registerPopover","isFocusWithinPopoverGroup","closeOthers","unregisterPopover","_o","Go","ko","jt","Ho","Kt","registerOption","firstOption","containsCheckedOption","change","addFlag","hasFlag","removeFlag","toggleFlag","wo","onBlur","$t","Qt","setSwitch","Uo","labelledby","describedby","onKeyPress","switch","Vt","ul","selectedIndex","activation","tabs","tab","panels","zt","ll","pl","st","qt","Yt","ut","Xt","No","transitionDuration","transitionDelay","El","Zt","defaultIndex","manual","nl","List","Panels","Ko","ct","$o","pt","jo","unregister","Al","Qo","zo","beforeEnter","afterEnter","beforeLeave","afterLeave","enter","enterFrom","enterTo","entered","leaveFrom","leaveTo","Vo","Jt","Cl","appear","Sl","Ol","bt","Tt","mt","vl","Rl","Bo","Wo","Child","Root","SvgWalletconnect","svgRef","stroke","fillRule","_style","_path2","_path3","_path4","_path5","_path6","_path7","_path8","_path9","_g2","_path10","ForwardRef","SvgMetamask","xmlns","xmlSpace","strokeLinecap","strokeLinejoin","_defs","SvgTrustwallet","clipPath","_circle","setOpen","cancelButtonRef","connectMetaMask","before","shortenWallet","isActive","ImageExoLogo","SvgLoadingAnimation","showTransactions","setShowTransactions","pendingAction","setPendingAction","timeString","setTimeString","timerEnabled","setTimerEnabled","busdApproveFunction","getColorForRound","diffInSeconds","days","hours","minutes","hasEnded","getTimeUntil","getTimeString","totalContribution","amountAbsolute","contributeFunction","finally","scope","transactionLogIndex","BrowserRouter","historyRef","createBrowserHistory","history","listen","createSearchParams","URLSearchParams","defaultInit","defaultSearchParamsRef","searchParams","getAll","append","nextInit","navigateOptions","useSearchParams","getTransactionForRound","whitelistedRounds","closedRounds","ImageCryptonairzLogo","vendor","Intl","DateTimeFormat","resolvedOptions","timeZone","onPerfEntry","getCLS","getFID","getFCP","getLCP","getTTFB","reportWebVitals"],"sourceRoot":""}